{"version":3,"sources":["webpack://Packs.[name]/./app/javascript/utils/helpers.js","webpack://Packs.[name]/./app/javascript/contexts/ReportingFilters/index.js","webpack://Packs.[name]/./app/javascript/components/FontAwesomeIcon/index.js","webpack://Packs.[name]/./app/javascript/contexts/ReportingFilters/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/AttributionTab/constants.js","webpack://Packs.[name]/./app/javascript/contexts/MetricDefinitions/constants.js","webpack://Packs.[name]/./app/javascript/utils/regex-url.js","webpack://Packs.[name]/./app/javascript/utils/constants.js","webpack://Packs.[name]/./app/javascript/utils/customPropTypes.js","webpack://Packs.[name]/./app/javascript/utils/request.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/constants.js","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/Modal/Link/index.js","webpack://Packs.[name]/./app/javascript/api/reporting/helpers.js","webpack://Packs.[name]/./app/javascript/contexts/CurrentUser/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/CallbacksTab/constants.js","webpack://Packs.[name]/./app/javascript/contexts/MetricDefinitions/helpers.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/CallbacksTab/EditCallbackModal/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/CallbacksTab/NewEventModal/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/ColumnEditorPane/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/Dropdown/index.js","webpack://Packs.[name]/./app/javascript/api/reporting/index.js","webpack://Packs.[name]/./app/javascript/api/reporting/constants.js","webpack://Packs.[name]/./app/javascript/components/KPITabs/wrapper.js","webpack://Packs.[name]/./app/javascript/contexts/OnboardingStatus/index.js","webpack://Packs.[name]/./app/javascript/components/pages/CampaignMergePage/StandaloneCampaignMergeTool/CampaignColumns/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/DateFilter/helpers.js","webpack://Packs.[name]/./app/javascript/utils/react-select.js","webpack://Packs.[name]/./app/javascript/components/DownloadCSVButtonClient/helpers.js","webpack://Packs.[name]/./app/javascript/contexts/MetricDefinitions/index.js","webpack://Packs.[name]/./app/javascript/components/AppAccessSelector/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/AttributionTab/styles.module.scss","webpack://Packs.[name]/./app/javascript/api/apps/constants.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/SkAdNetworkTab/constants.js","webpack://Packs.[name]/./app/javascript/contexts/GroupedSummaryTableSettings/helpers.js","webpack://Packs.[name]/./app/javascript/contexts/GroupedSummaryTableSettings/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/SkAdNetworkTab/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/Pane/ListItem/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/CallbacksTab/helpers.js","webpack://Packs.[name]/./app/javascript/components/KPITabs/helpers.js","webpack://Packs.[name]/./app/javascript/components/PlatformIcon/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/Label/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/AttributionTab/utils.js","webpack://Packs.[name]/./app/javascript/contexts/GroupedSummaryTableSettings/constants.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/Pane/index.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/ColumnEditorPane/helpers.js","webpack://Packs.[name]/./app/javascript/components/FormDropdown/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Campaigns/CampaignDetailsMergeInfo/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/ReportsSelector/index.js","webpack://Packs.[name]/./app/javascript/components/CardPanel/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/DateFilter/constants.js","webpack://Packs.[name]/./app/javascript/utils/charts.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/RevenueDeductions/AppStoreCommission/helpers.js","webpack://Packs.[name]/./app/javascript/components/Dropdown/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/CallbacksTab/CallbacksTable/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/Modal/Section/index.js","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/Modal/SectionContent/index.js","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/Modal/SectionHeader/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Campaigns/CampaignDetailsMergeTool/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingDataMetricValueDisplay/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingDataMetricValueDisplay/helpers.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/helpers.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/AdNetworks/CallbackGroupTemplates/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/CallbacksTab/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Organizations/UsageAndBilling/styles.module.scss","webpack://Packs.[name]/./app/javascript/utils/mock-reporting-api.js","webpack://Packs.[name]/./app/javascript/components/OnboardingActionOverlay/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/Pane/ListItem/SingleSelectIcon/index.js","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/Modal/Label/index.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/TableInstance/styles.module.scss","webpack://Packs.[name]/./app/javascript/utils/factories/apps/index.js","webpack://Packs.[name]/./app/javascript/components/FlexTable/index.js","webpack://Packs.[name]/./app/javascript/components/PageNotice/index.js","webpack://Packs.[name]/./app/javascript/components/FormLabelWithTooltip/index.js","webpack://Packs.[name]/./app/javascript/components/ChannelSelector/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/OnboardingPopup/constants.js","webpack://Packs.[name]/./app/javascript/api/apps/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/SkAdNetworkTab/helpers.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Campaigns/CampaignDetailsMergeTool/CampaignsList/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/AwaitingDataOverlay/index.js","webpack://Packs.[name]/./app/javascript/components/NoDataOverlay/index.js","webpack://Packs.[name]/./app/javascript/components/KPIDrilldown/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingDataImg/index.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/constants.js","webpack://Packs.[name]/./app/javascript/components/Paginator/constants.js","webpack://Packs.[name]/./app/javascript/components/CardPanel/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterPreviewTable/PaginatedTableInstance/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterPreviewTable/PaginatedTable/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/Button/index.js","webpack://Packs.[name]/./app/javascript/components/ClickOutsideAlerter.jsx","webpack://Packs.[name]/./app/javascript/components/PageHeader/index.js","webpack://Packs.[name]/./app/javascript/components/FormTextField/FormTextField.jsx","webpack://Packs.[name]/./app/javascript/utils/toastNotifications.js","webpack://Packs.[name]/./app/javascript/utils/mock.js","webpack://Packs.[name]/./app/javascript/components/pages/CampaignMergePage/helpers.js","webpack://Packs.[name]/./app/javascript/components/KPICard/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/SwaggerInfoLookup/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ChartFailed/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/Pane/ListItem/MultiSelectIcon/index.js","webpack://Packs.[name]/./app/javascript/hooks/usePrevious.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/EventCallbacks/ActionSelect/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/CallbacksTab/CallbacksTable/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterPreviewTable/PaginatedTable/constants.js","webpack://Packs.[name]/./app/javascript/components/CardHeader/index.js","webpack://Packs.[name]/./app/javascript/components/MetricTooltip/index.js","webpack://Packs.[name]/./app/javascript/components/FormDropdown/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/helpers.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/RevenueDeductions/AppStoreCommission/CommissionValue/EditCommissionValueInput/helpers.js","webpack://Packs.[name]/./app/javascript/components/SelectMenu/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/AsyncButton/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/AppSelector/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/KPICard/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ConversionValueHistogram/Chart/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/PercentageLabel/helpers.js","webpack://Packs.[name]/./app/javascript/components/PercentageLabel/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/ComponentLibrary/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/RevenueDeductions/AppStoreCommission/DateValue/EditDateValue/helpers.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterPreviewTable/PaginationControls/PageSizeSelector/helpers.js","webpack://Packs.[name]/./app/javascript/components/CardPanel/constants.js","webpack://Packs.[name]/./app/javascript/api/apps/helpers.js","webpack://Packs.[name]/./app/javascript/components/Icon/index.js","webpack://Packs.[name]/./app/javascript/components/Overlay/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingDataNameDisplay/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/Search/index.js","webpack://Packs.[name]/./app/javascript/utils/modal.js","webpack://Packs.[name]/./app/javascript/contexts/AppIntegrations/constants.js","webpack://Packs.[name]/./app/javascript/contexts/AppIntegrations/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingDataNameDisplay/helpers.js","webpack://Packs.[name]/./app/javascript/components/ConversionValueHistogram/HistogramActions/ComparisonSelector/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/SyncButton/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/RevenueDeductions/AppStoreCommission/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterPreviewTable/constants.js","webpack://Packs.[name]/./app/javascript/utils/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/AsyncButton/index.js","webpack://Packs.[name]/./app/javascript/components/SearchInputV2/index.js","webpack://Packs.[name]/./app/javascript/components/FormInput/index.js","webpack://Packs.[name]/./app/javascript/components/KPITabs/TabButtons/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/Table/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/KPIDrilldown/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/Monitoring/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/Monitoring/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/TabNavigation/helpers.js","webpack://Packs.[name]/./app/javascript/components/DownloadCSVButtonClient/constants.js","webpack://Packs.[name]/./app/javascript/validators/shared.js","webpack://Packs.[name]/./app/javascript/components/Overlay/Text/index.js","webpack://Packs.[name]/./app/javascript/components/Table/SkeletonRows/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingContent/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/Pane/Header/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/SelectAll/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/SelectedItems/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/Label/helpers.js","webpack://Packs.[name]/./app/javascript/components/FilterBar/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterPreviewTable/Header/index.js","webpack://Packs.[name]/./app/javascript/components/Checkbox/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/Alert/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ConversionValueHistogram/Chart/constants.js","webpack://Packs.[name]/./app/javascript/components/OnboardingPopup/Overlay/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/Organizations/Show/SdkKeys/SdkKeyRow/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/CallbacksTab/CredentialsCard/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/CallbacksTab/HealthTable/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/CallbacksTab/S2SCallbacksTable/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/AppAccessSelector/constants.js","webpack://Packs.[name]/./app/javascript/components/AsyncIconTextButton/index.js","webpack://Packs.[name]/./app/javascript/components/Toggle/index.js","webpack://Packs.[name]/./app/javascript/components/Label/Label.jsx","webpack://Packs.[name]/./app/javascript/components/SelectMenuItem/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ConversionValueHistogram/constants.js","webpack://Packs.[name]/./app/javascript/components/FontAwesomeIcon/constants.js","webpack://Packs.[name]/./app/javascript/components/SearchInput/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ConfirmationModalContent/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/MetricTooltip/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/Table/constants.js","webpack://Packs.[name]/./app/javascript/components/Table/DataRowExpander/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/KPITabs/VisibleDataSelector/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/Popover/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/Footer/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/FormInput/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/Label/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/AdNetworks/CallbackGroupTemplates/helpers.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/Monitoring/helpers.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/Organizations/Show/SdkKeys/SdkKeyRow/AppDetail/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/DebugAppUsers/NewDebugAppUserForm/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Campaigns/MoveCampaign/constants.js","webpack://Packs.[name]/./app/javascript/components/Badge/index.js","webpack://Packs.[name]/./app/javascript/components/Overlay/Subtext/index.js","webpack://Packs.[name]/./app/javascript/components/ConfirmationModalContent/index.js","webpack://Packs.[name]/./app/javascript/components/Table/Container/index.js","webpack://Packs.[name]/./app/javascript/components/Table/Data/index.js","webpack://Packs.[name]/./app/javascript/components/Table/FakeRows/index.js","webpack://Packs.[name]/./app/javascript/components/Table/Header/index.js","webpack://Packs.[name]/./app/javascript/components/Table/Row/index.js","webpack://Packs.[name]/./app/javascript/components/PopoutLink/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/ChannelsFilter/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Collapser/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/DateFilter/index.js","webpack://Packs.[name]/./app/javascript/components/FormError/FormError.jsx","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/constants.js","webpack://Packs.[name]/./app/javascript/contexts/FeatureFlags/index.js","webpack://Packs.[name]/./app/javascript/components/RadioButton/RadioButton.jsx","webpack://Packs.[name]/./app/javascript/components/ReportingDataDisplay/index.js","webpack://Packs.[name]/./app/javascript/components/PlatformIcon/constants.js","webpack://Packs.[name]/./app/javascript/components/Overlay/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/Chip/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/ReportingPage/Header/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/FormSelect/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/LoadingBar/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/OnboardingPopup/helpers.js","webpack://Packs.[name]/./app/javascript/components/Toggle/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/CampaignMergePage/StandaloneCampaignMergeTool/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/SkAdNetworkTab/CSVPreviewTable/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/BackLink/index.js","webpack://Packs.[name]/./app/javascript/components/Alert/index.js","webpack://Packs.[name]/./app/javascript/components/AlertList/index.js","webpack://Packs.[name]/./app/javascript/components/BoldLink/index.js","webpack://Packs.[name]/./app/javascript/components/ChannelSelector/index.js","webpack://Packs.[name]/./app/javascript/components/Footer/index.js","webpack://Packs.[name]/./app/javascript/components/LoadingBar/index.js","webpack://Packs.[name]/./app/javascript/components/ModalHeaderWithClose/index.js","webpack://Packs.[name]/./app/javascript/components/Table/DataRowExpander/index.js","webpack://Packs.[name]/./app/javascript/components/PaginatorItem/PaginatorItem.jsx","webpack://Packs.[name]/./app/javascript/components/ConversionValueHistogram/helpers.js","webpack://Packs.[name]/./app/javascript/components/KPITabs/Chart/skeleton.js","webpack://Packs.[name]/./app/javascript/components/KPITabs/Chart/constants.js","webpack://Packs.[name]/./app/javascript/components/KPITabs/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/Pane/ListItem/MultiSelectIcon/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/AppsFilter/PlatformFilters/PlatformFilter/index.js","webpack://Packs.[name]/./app/javascript/components/ToolbarButton/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/RevenueDeductions/AppStoreCommission/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/AttributionTab/AttributionTable/index.js","webpack://Packs.[name]/./app/javascript/components/Select/Select.jsx","webpack://Packs.[name]/./app/javascript/components/Badge/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/Button/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/Table/Row/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/SearchInputV2/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/DataExporterButton/helpers.js","webpack://Packs.[name]/./app/javascript/components/Switch/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/SourceToggle/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/RadioButton/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/Navigation/MyAccount/PtiMeter/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/Pane/ListItem/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/SelectedItems/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/AdAccounts/LastUpdatedBtn/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/ReportingPage/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterActions/SavedReportSelector/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ReportingSidebar/MetricsFilter/helpers.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/SourceToggle/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Organizations/UsageAndBilling/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterPreviewTable/helpers.js","webpack://Packs.[name]/./app/javascript/api/callbackGroupTemplates/constants.js","webpack://Packs.[name]/./app/javascript/components/AppSelector/index.js","webpack://Packs.[name]/./app/javascript/components/FragmentWrapper/index.js","webpack://Packs.[name]/./app/javascript/components/Chip/index.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/ColumnEditorPane/ArrowIcon/index.js","webpack://Packs.[name]/./app/javascript/components/Table/NoDataRow/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/KPICards/index.js","webpack://Packs.[name]/./app/javascript/components/TooltipPoint/index.js","webpack://Packs.[name]/./app/javascript/components/pages/ReportingPage/Header/index.js","webpack://Packs.[name]/./app/javascript/components/KPITabs/SummaryBlocks/SummaryBlock/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/SourceToggle/index.js","webpack://Packs.[name]/./app/javascript/components/LoadingOverlay/index.js","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/Modal/BackLink/index.js","webpack://Packs.[name]/./app/javascript/components/HeaderWithHelpText/index.js","webpack://Packs.[name]/./app/javascript/components/LineTabNavigation/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/ApplyBtn/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/AppsFilter/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/Pane/Title/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/Pane/QuickSelectorBtn/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/CountriesFilter/index.js","webpack://Packs.[name]/./app/javascript/components/ToggleButton/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/RevenueDeductions/AppStoreCommission/CommissionValue/ShowCommissionValue/index.js","webpack://Packs.[name]/./app/javascript/components/pages/SkAdNetworkPage/ReportingSidebar/AppsFilter/index.js","webpack://Packs.[name]/./app/javascript/components/Table/helpers.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/Header/index.js","webpack://Packs.[name]/./app/javascript/components/FormHelpPopover/FormHelpPopover.jsx","webpack://Packs.[name]/./app/javascript/components/Form/Form.jsx","webpack://Packs.[name]/./app/javascript/components/FormSubmitButton/FormSubmitButton.jsx","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/SelectedItems/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ReportingSidebar/ReportTypeFilter/ListItem/index.js","webpack://Packs.[name]/./app/javascript/components/SelectButton/styles.module.scss","webpack://Packs.[name]/./app/javascript/hooks/useRefSize.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/ColumnEditorPane/ItemList/helpers.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/KPICard/Chart/constants.js","webpack://Packs.[name]/./app/javascript/components/KPITabs/SummaryBlocks/SummaryBlock/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/FormChip/FormChip.jsx","webpack://Packs.[name]/./app/javascript/components/PercentageLabel/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/styles.module.scss","webpack://Packs.[name]/./app/javascript/hooks/useWindowDimensions.js","webpack://Packs.[name]/./app/javascript/hooks/useFlashMessagesHook.js","webpack://Packs.[name]/./app/javascript/components/pages/CampaignMergePage/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/CampaignMergePage/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/AdAccounts/LastUpdatedBtn/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/RevenueDeductions/AppStoreCommission/CommissionValue/EditCommissionValueSelector/helpers.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/RevenueDeductions/AppStoreCommission/DateValue/ShowDateValue/helpers.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/helpers.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/DataExporter/DateInput/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterPreviewTable/PaginatedTable/helpers.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterActions/SavedReportSelector/helpers.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ReportingSidebar/GranularityFilter/helpers.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/CallbackTemplates/CallbackGroupTemplatesDropdown/constants.js","webpack://Packs.[name]/./app/javascript/api/campaigns/index.js","webpack://Packs.[name]/./app/javascript/api/campaigns/constants.js","webpack://Packs.[name]/./app/javascript/components/PageHeader/Label/index.js","webpack://Packs.[name]/./app/javascript/components/Breadcrumb/index.js","webpack://Packs.[name]/./app/javascript/components/ButtonTabNavigation/index.js","webpack://Packs.[name]/./app/javascript/components/Table/index.js","webpack://Packs.[name]/./app/javascript/components/Header/index.js","webpack://Packs.[name]/./app/javascript/components/Switch/index.js","webpack://Packs.[name]/./app/javascript/components/CopyButton/index.js","webpack://Packs.[name]/./app/javascript/components/PageLayout/index.js","webpack://Packs.[name]/./app/javascript/components/PercentageLabel/index.js","webpack://Packs.[name]/./app/javascript/components/SyncButton/index.js","webpack://Packs.[name]/./app/javascript/components/SelectMenuItem/index.js","webpack://Packs.[name]/./app/javascript/components/PageContainer/PageContainer.jsx","webpack://Packs.[name]/./app/javascript/components/KPITabs/SummaryBlocks/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/AttributionTab/AttributionDetails/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/CallbacksTab/CallbacksTable/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/CallbacksTab/CredentialsCard/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/CallbacksTab/EditCallbackModal/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/CallbacksTab/HealthTable/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/CallbacksTab/NewEventModal/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/CallbacksTab/S2SCallbacksTable/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/SdkKeys/KeyRow/index.js","webpack://Packs.[name]/./app/javascript/components/CheckboxIcon/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/Label/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingDataMetricValueDisplay/constants.js","webpack://Packs.[name]/./app/javascript/components/ButtonTabNavigation/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/DataRowExternalLink/constants.js","webpack://Packs.[name]/./app/javascript/components/ConversionValueHistogram/HistogramActions/ChartTypeButtons/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/FormTextField/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/FormHelpPopover/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/FlexTable/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/HeaderWithHelpText/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/LineTabNavigation/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingDataDisplay/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/Pane/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/Pane/QuickSelectorBtn/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/Search/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/SelectedItems/SelectedItem/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/ChannelsFilter/ListItem/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/DateFilter/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/CallbacksTab/AemToggle/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterPreviewTable/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/SkAdNetworkPage/ReportingSidebar/AppsFilter/ListItem/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ReportingSidebar/GranularityFilter/TotalsRadio/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/FilterBar/helpers.js","webpack://Packs.[name]/./app/javascript/components/Button/constants.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/helpers.js","webpack://Packs.[name]/./app/javascript/components/pages/CampaignMergePage/StandaloneCampaignMergeTool/CampaignColumns/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ReportingSidebar/helpers.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ReportingSidebar/MetricsFilter/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/SkAdNetworkPage/ReportingSidebar/helpers.js","webpack://Packs.[name]/./app/javascript/utils/response.js","webpack://Packs.[name]/./app/javascript/components/AsyncActionButton/index.js","webpack://Packs.[name]/./app/javascript/components/ConversionValueHistogram/index.js","webpack://Packs.[name]/./app/javascript/components/ConversionValueHistogram/GroupingTitle/index.js","webpack://Packs.[name]/./app/javascript/components/ConversionValueHistogram/HistogramActions/index.js","webpack://Packs.[name]/./app/javascript/components/ConversionValueHistogram/HistogramActions/ComparisonSelector/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/CreativesPage/index.js","webpack://Packs.[name]/./app/javascript/components/OnboardingActionOverlay/MissingRequirementBtn/index.js","webpack://Packs.[name]/./app/javascript/components/OnboardingActionOverlay/MissingRequirementsMessage/index.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/ColumnEditorPane/index.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/ColumnEditorPane/ApplyMetricsButton/index.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/ColumnEditorPane/Filter/index.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/ColumnEditorPane/Header/index.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/ColumnEditorPane/ItemList/index.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/ColumnEditorPane/AvailableItem/index.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/ColumnEditorPane/CategorySelector/index.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/ColumnEditorPane/SelectedItem/index.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/ColumnEditorPane/DragIcon/index.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/GroupingTitle/index.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/Table/index.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/TableInstance/index.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/DataRowExternalLink/index.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/TableActions/index.js","webpack://Packs.[name]/./app/javascript/components/DownloadCSVButtonClient/index.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/TableActions/EditColumnsButton/index.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/TableActions/GlobalFilter/index.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/TableActions/TableViewModeButtons/index.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/TableActions/ToggleNameExtendedButton/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/KPICard/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/KPICard/Chart/index.js","webpack://Packs.[name]/./app/javascript/components/DataExporterButton/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/CustomPage/NoCustomEventsPage/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/CustomPage/CustomEventsSelector/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/CustomPage/KPITabs/Purchasers/index.js","webpack://Packs.[name]/./app/javascript/components/KPITabs/index.js","webpack://Packs.[name]/./app/javascript/components/KPITabs/Chart/index.js","webpack://Packs.[name]/./app/javascript/components/KPITabs/Chart/XDaySelector/index.js","webpack://Packs.[name]/./app/javascript/components/KPITabs/SummaryBlocks/index.js","webpack://Packs.[name]/./app/javascript/components/KPITabs/TabButtons/index.js","webpack://Packs.[name]/./app/javascript/components/KPITabs/VisibleDataSelector/index.js","webpack://Packs.[name]/./app/javascript/components/HelpText/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/CustomPage/KPITabs/PurchaseXDay/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/CustomPage/KPITabs/RetentionXDay/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/FraudPage/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/FraudPage/KPIDrilldown/Fraud/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/FraudPage/KPITabs/Fraud/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/OverviewPage/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/RetentionPage/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/RetentionPage/KPIDrilldown/Retention/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/RetentionPage/KPITabs/Retention/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/RevenuePage/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/RevenuePage/KPIDrilldown/Revenue/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/RevenuePage/KPITabs/TotalLTV/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/RevenuePage/KPITabs/TotalLTVPerUser/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/RevenuePage/KPITabs/TotalRevenue/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/RevenuePage/KPITabs/TotalRevenuePerDAU/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/RoiPage/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/RoiPage/KPIDrilldown/XDayROI/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/RoiPage/KPITabs/LifetimeROI/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/RoiPage/KPITabs/ROI/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/SpendPage/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/SpendPage/KPITabs/Cost/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/SpendPage/KPITabs/Spend/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/UsagePage/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/UsagePage/KPITabs/Usage/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/UsagePage/KPITabs/UsageXDay/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/ValuePage/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/ValuePage/KPIDrilldown/CostPerRetainedUser/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/ValuePage/KPIDrilldown/CostPer1000Sessions/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/ValuePage/KPITabs/LifetimeCost/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/ValuePage/KPITabs/CostPer1000Sessions/index.js","webpack://Packs.[name]/./app/javascript/components/ConversionValueHistogram/HistogramActions/ChartTypeButtons/index.js","webpack://Packs.[name]/./app/javascript/components/ConversionValueHistogram/HistogramActions/ValueRangeSelector/index.js","webpack://Packs.[name]/./app/javascript/components/ConversionValueHistogram/Chart/index.js","webpack://Packs.[name]/./app/javascript/components/CreateAppForm/AppDestinationUrlFormField/index.js","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/Modal/index.js","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/Modal/Admin/index.js","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/Modal/Analyze/index.js","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/Modal/Automate/index.js","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/Modal/Configure/index.js","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/Modal/Diagnose/index.js","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/Modal/Impersonate/index.js","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/Modal/MyAccount/index.js","webpack://Packs.[name]/./app/javascript/components/Navigation/MyAccount/PtiMeter/index.js","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/Modal/SignOutLink/index.js","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/Modal/Notifications/index.js","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/Modal/Support/index.js","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/Modal/SwitchOrgs/index.js","webpack://Packs.[name]/./app/javascript/components/KPICard/index.js","webpack://Packs.[name]/./app/javascript/components/OnboardingPopup/Overlay/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingDataDateDisplay/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/Label/VisibilityIcon/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/AppsFilter/ListItem/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/Pane/Subtitle/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/AppsFilter/PlatformFilters/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/SelectedItems/SelectedItem/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/ChannelsFilter/ListItem/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/ChannelsFilter/PaidFilter/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/CountriesFilter/ListItem/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/GranularityFilter/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/GranularityFilter/ListItem/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/GroupByFilter/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/GroupByFilter/ListItem/index.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/GroupByFilter/TargetingTags/index.js","webpack://Packs.[name]/./app/javascript/components/Toolbar/index.js","webpack://Packs.[name]/./app/javascript/components/pages/AdMonetizationPage/index.js","webpack://Packs.[name]/./app/javascript/components/pages/AdMonetizationPage/PublisherPage/index.js","webpack://Packs.[name]/./app/javascript/components/pages/AdMonetizationPage/PublisherPage/KPIDrilldown/AdRevenue/index.js","webpack://Packs.[name]/./app/javascript/components/pages/AdMonetizationPage/PublisherPage/KPITabs/AdRevenue/index.js","webpack://Packs.[name]/./app/javascript/components/pages/AdMonetizationPage/PublisherPage/KPITabs/EffectiveCost/index.js","webpack://Packs.[name]/./app/javascript/components/pages/CampaignMergePage/CampaignFilters/index.js","webpack://Packs.[name]/./app/javascript/components/pages/CampaignMergePage/StandaloneCampaignMergeTool/index.js","webpack://Packs.[name]/./app/javascript/components/pages/CampaignMergePage/StandaloneCampaignMergeTool/CampaignColumns/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/Organizations/Show/SdkKeys/SdkKeyRow/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/Organizations/Show/SdkKeys/SdkKeyRow/AppDetail/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/Organizations/Show/SdkKeys/SdkKeyRow/EnableSdkKeyButton/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/RevenueDeductions/AppStoreCommission/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/RevenueDeductions/AppStoreCommission/CancelButton/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/RevenueDeductions/AppStoreCommission/EditButton/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/RevenueDeductions/AppStoreCommission/SaveButton/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/RevenueDeductions/AppStoreCommission/CommissionValue/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/RevenueDeductions/AppStoreCommission/CommissionValue/EditCommissionValueSelector/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/RevenueDeductions/AppStoreCommission/CommissionValue/EditCommissionValueInput/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/RevenueDeductions/AppStoreCommission/DateValue/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/RevenueDeductions/AppStoreCommission/DateValue/EditDateValue/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/RevenueDeductions/AppStoreCommission/DateValue/ShowDateValue/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/TabNavigation/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/AttributionTab/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/AttributionTab/AdNetworkInstructions/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/AttributionTab/AppChannelInstructions/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/AttributionTab/AppInstructions/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/AttributionTab/TableHeader/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/AttributionTab/AttributionDetails/WindowEditEnabled/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/AttributionTab/AttributionDetails/WindowEditMode/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/AttributionTab/AttributionDetails/EditButton/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/AttributionTab/AttributionDetails/SelectFormTimeType/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/AttributionTab/AttributionDetails/SelectFormTimeValue/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/CallbacksTab/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/CallbacksTab/AemToggle/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/CallbacksTab/CallbacksTable/EventOptionsPopupOverlay/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/SkAdNetworkTab/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/SkAdNetworkStatus/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/SkAdNetworkTab/CSVPreviewTable/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/SdkKeys/KeyRow/TdKeyCell/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Campaigns/CampaignDetailsMergeTool/CampaignsList/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/DebugAppUsers/NewDebugAppUserForm/DeviceNameFormField/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/DebugAppUsers/NewDebugAppUserForm/AdvertisingIdFormField/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/DebugAppUsers/NewDebugAppUserForm/DeveloperDeviceIdFormField/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/DebugAppUsers/NewDebugAppUserForm/AppSelectDropDown/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/DebugAppUsers/NewDebugAppUserForm/DeviceTypeDropDown/index.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/index.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterPreviewTable/index.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterPreviewTable/PaginatedTable/index.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterPreviewTable/PaginatedTableInstance/index.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterPreviewTable/PaginationControls/index.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterPreviewTable/PaginationControls/PageSelector/index.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterPreviewTable/PaginationControls/PageSizeSelector/index.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterActions/index.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterActions/DeleteReportBtn/index.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterActions/DownloadCSVBtn/index.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterActions/SaveReportBtn/index.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterActions/SavedReportSelector/index.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ReportingSidebar/index.js","webpack://Packs.[name]/./app/javascript/components/pages/SkAdNetworkPage/ReportingSidebar/AppsFilter/ListItem/index.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ReportingSidebar/ClearFiltersBtn/index.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ReportingSidebar/FetchResultsBtn/index.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ReportingSidebar/GranularityFilter/index.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ReportingSidebar/GranularityFilter/ListItem/index.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ReportingSidebar/GranularityFilter/TotalsRadio/index.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ReportingSidebar/MetricsFilter/index.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ReportingSidebar/MetricsFilter/ListItem/index.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ReportingSidebar/MultiSelectGroupByFilter/index.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ReportingSidebar/MultiSelectGroupByFilter/ListItem/index.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ReportingSidebar/ReportTypeFilter/index.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ReportingSidebar/SingleSelectGroupByFilter/index.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ReportingSidebar/SingleSelectGroupByFilter/ListItem/index.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ReportingSidebar/SingleSelectGroupByFilter/TargetingTags/index.js","webpack://Packs.[name]/./app/javascript/components/pages/ReportingPage/index.js","webpack://Packs.[name]/./app/javascript/components/pages/SkAdNetworkPage/index.js","webpack://Packs.[name]/./app/javascript/components/pages/SkAdNetworkPage/KPICards/index.js","webpack://Packs.[name]/./app/javascript/components/pages/SkAdNetworkPage/ReportingSidebar/index.js","webpack://Packs.[name]/./app/javascript/components/pages/SkAdNetworkPage/ReportingSidebar/GroupByFilter/index.js","webpack://Packs.[name]/./app/javascript/components/pages/SkAdNetworkPage/ReportingSidebar/GroupByFilter/SwapButton/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/index.js","webpack://Packs.[name]/./app/javascript/components/pages/ReportingPage/Footer/index.js","webpack://Packs.[name]/./app/javascript/api/customEvents/index.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/CustomPage/index.js","webpack://Packs.[name]/./app/javascript/components/PageContainer/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/Paginator/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/AsyncIconTextButton/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/CardHeader/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/DataRowExternalLink/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/Header/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/TableActions/GlobalFilter/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/TooltipPoint/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/ReportsSelector/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ConversionValueHistogram/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/CopyButton/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/FormLabel/FormLabel.jsx","webpack://Packs.[name]/./app/javascript/components/Popover/Popover.jsx","webpack://Packs.[name]/./app/javascript/components/FormSelect/FormSelect.jsx","webpack://Packs.[name]/./app/javascript/components/LoadingOverlay/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/Form/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/FormRadioToggle/FormRadioToggle.jsx","webpack://Packs.[name]/./app/javascript/components/RadioToggle/RadioToggle.jsx","webpack://Packs.[name]/./app/javascript/components/FormChipGroup/FormChipGroup.jsx","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/Modal/Link/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/Modal/BackLink/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/Modal/MyAccount/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/Modal/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/OnboardingPopup/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingContent/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/Label/VisibilityIcon/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/AppsFilter/ListItem/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/Pane/Header/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Collapser/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ToolbarButton/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/RevenueDeductions/AppStoreCommission/CommissionValue/EditCommissionValueInput/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/RevenueDeductions/AppStoreCommission/DateValue/EditDateValue/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/AttributionTab/hooks/useUpdateAttributionSetting.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/AttributionTab/helpers.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/CallbacksTab/CallbacksTable/EventOptionsPopupOverlay/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/SkAdNetworkStatus/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Campaigns/MoveCampaign/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Integrations/AdAccountSwitch/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterPreviewTable/PaginationControls/PageSizeSelector/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/SkAdNetworkPage/ReportingSidebar/AppsFilter/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/ReportingPage/Footer/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/PaginatorInfo/constants.js","webpack://Packs.[name]/./app/javascript/components/Paginator/utils.js","webpack://Packs.[name]/./app/javascript/components/Tooltip/constants.js","webpack://Packs.[name]/./app/javascript/components/AppSelector/constants.js","webpack://Packs.[name]/./app/javascript/components/AsyncIconTextButton/constants.js","webpack://Packs.[name]/./app/javascript/components/ChannelSelector/constants.js","webpack://Packs.[name]/./app/javascript/hooks/useHighchartsReflowEffect.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/CustomPage/CustomEventsSelector/helpers.js","webpack://Packs.[name]/./app/javascript/components/KPITabs/constants.js","webpack://Packs.[name]/./app/javascript/components/ConversionValueHistogram/Chart/helpers.js","webpack://Packs.[name]/./app/javascript/api/dashboard/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/AdAccounts/LastUpdatedBtn/helpers.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/RevenueDeductions/AppStoreCommission/CommissionValue/EditCommissionValueInput/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/SkAdNetworkStatus/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Campaigns/CampaignDetailsMergeTool/CampaignsList/constants.js","webpack://Packs.[name]/./app/javascript/components/FilterBar/index.js","webpack://Packs.[name]/./app/javascript/components/AppAccessSelector/index.js","webpack://Packs.[name]/./app/javascript/components/BackLink/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/Checkbox/Checkbox.jsx","webpack://Packs.[name]/./app/javascript/components/SearchInput/SearchInput.jsx","webpack://Packs.[name]/./app/javascript/components/Select/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/PageHeader/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/PageHeader/Label/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/PageSectionHeader/PageSectionHeader.jsx","webpack://Packs.[name]/./app/javascript/components/PageSectionHeader/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/PageSubtext/PageSubtext.jsx","webpack://Packs.[name]/./app/javascript/components/PageSubtext/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/PaginatorInfo/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingDataMetricValueDisplay/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/AlertList/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/Overlay/Text/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/Overlay/Subtext/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/AwaitingDataOverlay/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/BoldLink/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ChartFailed/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/NoDataOverlay/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/OnboardingActionOverlay/MissingRequirementBtn/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/OnboardingActionOverlay/MissingRequirementsMessage/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/Table/Container/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/Table/Data/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/Table/FakeRows/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/Table/Header/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/Table/NoDataRow/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingDataImg/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingDataNameDisplay/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/DataExporterButton/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/CustomPage/CustomEventsSelector/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/KPITabs/Chart/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/HelpText/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/FormLabelWithTooltip/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/Header/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/FormError/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/FormLabel/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/FormSubmitButton/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/RadioToggle/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/FormRadioToggle/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/FormChipGroup/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/Modal/Section/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/Modal/SectionContent/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/Modal/SectionHeader/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/Modal/Label/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/Modal/SwitchOrgs/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ModalHeaderWithClose/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/PageNotice/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/PageSeparator/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/PopoutLink/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingDataDateDisplay/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/ApplyBtn/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/Pane/Subtitle/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/Pane/Title/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/AppsFilter/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/ChannelsFilter/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/CountriesFilter/ListItem/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/CountriesFilter/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/GroupByFilter/TargetingTags/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/Toolbar/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/AccountIssuePage/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/CampaignMergePage/CampaignFilters/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/CallbackTemplates/CallbackGroupTemplatesDropdown/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/SdkKeys/KeyRow/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterPreviewTable/PaginationControls/PageSelector/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterPreviewTable/PaginationControls/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterPreviewTable/Header/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterActions/DeleteReportBtn/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterActions/DownloadCSVBtn/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterActions/SaveReportBtn/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ReportingSidebar/ClearFiltersBtn/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ReportingSidebar/FetchResultsBtn/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ReportingSidebar/MetricsFilter/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ReportingSidebar/ReportTypeFilter/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ReportingSidebar/SingleSelectGroupByFilter/TargetingTags/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/SkAdNetworkPage/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/pages/SkAdNetworkPage/ReportingSidebar/GroupByFilter/SwapButton/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/ConversionValueHistogram/HistogramActions/ComparisonSelector/constants.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/Table/helpers.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/TableActions/TableViewModeButtons/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/KPICard/Chart/helpers.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/CustomPage/helpers.js","webpack://Packs.[name]/./app/javascript/components/KPITabs/Chart/helpers.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/CustomPage/KPITabs/Purchasers/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/CustomPage/KPITabs/PurchaseXDay/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/CustomPage/KPITabs/RetentionXDay/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/FraudPage/KPITabs/Fraud/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/RetentionPage/KPITabs/Retention/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/RevenuePage/KPITabs/TotalLTV/helpers.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/RevenuePage/KPITabs/TotalLTVPerUser/helpers.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/RevenuePage/KPITabs/TotalRevenue/helpers.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/RevenuePage/KPITabs/TotalRevenuePerDAU/helpers.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/RoiPage/KPITabs/LifetimeROI/helpers.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/RoiPage/KPITabs/ROI/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/SpendPage/KPITabs/Cost/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/SpendPage/KPITabs/Spend/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/UsagePage/KPITabs/Usage/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/UsagePage/KPITabs/UsageXDay/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/ValuePage/KPITabs/LifetimeCost/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/ValuePage/KPITabs/CostPer1000Sessions/constants.js","webpack://Packs.[name]/./app/javascript/components/ConversionValueHistogram/HistogramActions/ChartTypeButtons/constants.js","webpack://Packs.[name]/./app/javascript/components/Popover/constants.js","webpack://Packs.[name]/./app/javascript/components/LoadingBar/constants.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/AppsFilter/constants.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/ChannelsFilter/constants.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/CountriesFilter/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/AdMonetizationPage/PublisherPage/KPITabs/AdRevenue/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/AdMonetizationPage/PublisherPage/KPITabs/EffectiveCost/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/CampaignMergePage/StandaloneCampaignMergeTool/CampaignColumns/skeleton.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/Organizations/Show/SdkKeys/SdkKeyRow/AppDetail/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/Organizations/Show/SdkKeys/SdkKeyRow/helpers.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/CallbacksTab/HealthTable/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/SkAdNetworkTab/CSVPreviewTable/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/SkAdNetworkPage/KPICards/helpers.js","webpack://Packs.[name]/./app/javascript/components/pages/SkAdNetworkPage/KPICards/constants.js","webpack://Packs.[name]/./app/javascript/api/dashboard/constants.js","webpack://Packs.[name]/./app/javascript/api/callbackGroupTemplates/index.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/TableActions/DownloadCSVButton/index.js","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/index.js","webpack://Packs.[name]/./app/javascript/components/OnboardingPopup/index.js","webpack://Packs.[name]/./app/javascript/components/pages/AccountIssuePage/index.js","webpack://Packs.[name]/./app/javascript/components/pages/CampaignMergePage/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/AdAccounts/LastUpdatedBtn/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/CallbackTemplates/CallbackGroupTemplatesDropdown/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/ComponentLibrary/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/Monitoring/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/Organizations/Show/SdkKeys/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/SwaggerInfoLookup/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/EventCallbacks/ActionSelect/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/RevenueDeductions/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/SdkKeys/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Campaigns/CampaignDetailsMergeInfo/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Campaigns/CampaignDetailsMergeTool/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Campaigns/MoveCampaign/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/DataExporter/DateInput/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Integrations/AdAccountSwitch/index.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/styles.module.scss","webpack://Packs.[name]/./app/javascript/validators/requiredDeviceId.js","webpack://Packs.[name]/./app/javascript/api/debugAppUsers/index.js","webpack://Packs.[name]/./app/javascript/api/debugAppUsers/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/DebugAppUsers/NewDebugAppUserForm/index.js","webpack://Packs.[name]/./app/javascript/utils/factories/callbackGroupTemplates/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/AdNetworks/CallbackGroupTemplates/index.js","webpack://Packs.[name]/./app/javascript/utils/factories/eventCounts/index.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Organizations/UsageAndBilling/index.js","webpack://Packs.[name]/./app/javascript/components/CheckboxIcon/CheckboxIcon.jsx","webpack://Packs.[name]/./app/javascript/components/SelectMenu/SelectMenu.jsx","webpack://Packs.[name]/./app/javascript/components/SelectButton/SelectButton.jsx","webpack://Packs.[name]/./app/javascript/components/PaginatorInfo/PaginatorInfo.jsx","webpack://Packs.[name]/./app/javascript/components/PaginatorInfo/utils.js","webpack://Packs.[name]/./app/javascript/components/PaginatorNextItem/PaginatorNextItem.jsx","webpack://Packs.[name]/./app/javascript/components/PaginatorPreviousItem/PaginatorPreviousItem.jsx","webpack://Packs.[name]/./app/javascript/components/Alert/constants.js","webpack://Packs.[name]/./app/javascript/components/AsyncButton/constants.js","webpack://Packs.[name]/./app/javascript/components/MetricTooltip/constants.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/ColumnEditorPane/CategorySelector/constants.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/DataRowExternalLink/helpers.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/Header/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/KPICards/presentation.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/KPICards/helpers.js","webpack://Packs.[name]/./app/javascript/components/pages/ReportingPage/Header/helpers.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/ReportsSelector/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/CustomPage/presentation.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/CustomPage/CustomEventsSelector/constants.js","webpack://Packs.[name]/./app/javascript/components/KPITabs/presentation.js","webpack://Packs.[name]/./app/javascript/components/KPITabs/loading.js","webpack://Packs.[name]/./app/javascript/components/KPITabs/SummaryBlocks/skeleton.js","webpack://Packs.[name]/./app/javascript/components/KPITabs/TabButtons/skeleton.js","webpack://Packs.[name]/./app/javascript/components/KPIDrilldown/presentation.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/FraudPage/KPIDrilldown/Fraud/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/RetentionPage/KPIDrilldown/Retention/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/RevenuePage/KPIDrilldown/Revenue/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/RoiPage/KPIDrilldown/XDayROI/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/ValuePage/KPIDrilldown/CostPerRetainedUser/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/UserAcquisitionPage/ValuePage/KPIDrilldown/CostPer1000Sessions/constants.js","webpack://Packs.[name]/./app/javascript/components/CopyButton/constants.js","webpack://Packs.[name]/./app/javascript/components/CreateAppForm/AppBasicFormFields.jsx","webpack://Packs.[name]/./app/javascript/components/CreateAppForm/AppStoreUrlFormField.jsx","webpack://Packs.[name]/./app/javascript/components/FormHelpPopover/constants.js","webpack://Packs.[name]/./app/javascript/components/CreateAppForm/AttributionProviderSelect.jsx","webpack://Packs.[name]/./app/javascript/components/FormSelect/constants.js","webpack://Packs.[name]/./app/javascript/components/CreateAppForm/BaseForm.jsx","webpack://Packs.[name]/./app/javascript/components/CreateAppForm/HasAppStoreUrlRadioField.jsx","webpack://Packs.[name]/./app/javascript/components/CreateAppForm/PlatformSelect.jsx","webpack://Packs.[name]/./app/javascript/components/CreateAppForm/UsesTenjinSdkRadioField.jsx","webpack://Packs.[name]/./app/javascript/components/CreateAppForm/hooks/useAttributionProviderChangeEffect.js","webpack://Packs.[name]/./app/javascript/components/CreateAppForm/hooks/usePlatformChangeEffect.js","webpack://Packs.[name]/./app/javascript/components/CreateAppForm/hooks/useShowingAppStoreUrlInputChangeEffect.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/TableActions/DownloadCSVButton/constants.js","webpack://Packs.[name]/./app/javascript/components/HamburgerNav/presentation.js","webpack://Packs.[name]/./app/javascript/components/PageSeparator/PageSeparator.jsx","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/ChannelsFilter/PaidFilter/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/AdMonetizationPage/PublisherPage/KPIDrilldown/AdRevenue/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/AdNetworks/CallbackGroupTemplates/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/Organizations/Show/SdkKeys/SdkKeyRow/EnableSdkKeyButton/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/CallbacksTab/AemToggle/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/CallbacksTab/CredentialsCard/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/CallbacksTab/S2SCallbacksTable/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/SdkKeys/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/SdkKeys/KeyRow/TdKeyCell/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/SdkKeys/KeyRow/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Campaigns/CampaignDetailsMergeTool/CampaignsList/skeleton.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/DataExporter/DateInput/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/presentation.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterPreviewTable/PaginationControls/PageSizeSelector/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterPreviewTable/Header/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterActions/SavedReportSelector/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ReportingSidebar/MultiSelectGroupByFilter/constants.js","webpack://Packs.[name]/./app/javascript/components/pages/SkAdNetworkPage/presentation.js","webpack://Packs.[name]/./app/javascript/validators/app.js","webpack://Packs.[name]/./app/javascript/components/CreateAppForm/CreateAppForm.jsx","webpack://Packs.[name]/./app/javascript/contexts/Health/index.js","webpack://Packs.[name]/./app/javascript/hooks/useDidUpdateEffect.js","webpack://Packs.[name]/./app/javascript/components/Paginator/Paginator.jsx","webpack://Packs.[name]/./app/javascript/components/Tooltip/Tooltip.jsx","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/RevenueDeductions/styles.module.scss","webpack://Packs.[name]/./app/javascript/components/DataExporterButton/helpers.spec.js","webpack://Packs.[name]/./app/javascript/components/Footer/index.spec.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/ColumnEditorPane/ItemList/helpers.spec.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/ColumnEditorPane/helpers.spec.js","webpack://Packs.[name]/./app/javascript/components/GroupedSummaryTable/helpers.spec.js","webpack://Packs.[name]/./app/javascript/components/KPITabs/helpers.spec.js","webpack://Packs.[name]/./app/javascript/components/OnboardingPopup/helpers.spec.js","webpack://Packs.[name]/./app/javascript/components/PercentageLabel/helpers.spec.js","webpack://Packs.[name]/./app/javascript/components/ReportingDataMetricValueDisplay/helpers.spec.js","webpack://Packs.[name]/./app/javascript/components/ReportingDataMetricValueDisplay/index.spec.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/DateFilter/helpers.spec.js","webpack://Packs.[name]/./app/javascript/components/ReportingSidebar/Filter/helpers.spec.js","webpack://Packs.[name]/./app/javascript/components/pages/AdminPage.jsx","webpack://Packs.[name]/./app/javascript/components/pages/CampaignMergePage/helpers.spec.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/AdNetworks/CallbackGroupTemplates/helpers.spec.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Admin/Monitoring/helpers.spec.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/RevenueDeductions/AppStoreCommission/CommissionValue/EditCommissionValueInput/helpers.spec.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/RevenueDeductions/AppStoreCommission/CommissionValue/EditCommissionValueSelector/helpers.spec.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/RevenueDeductions/AppStoreCommission/DateValue/EditDateValue/helpers.spec.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/RevenueDeductions/AppStoreCommission/DateValue/ShowDateValue/helpers.spec.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/RevenueDeductions/AppStoreCommission/helpers.spec.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/AttributionTab/helpers.spec.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/AttributionTab/utils.spec.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/CallbacksTab/helpers.spec.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/SkAdNetworkTab/helpers.spec.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/TabNavigation/helpers.spec.js","webpack://Packs.[name]/./app/javascript/components/pages/Dashboard/Apps/Show/helpers.spec.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterActions/SavedReportSelector/helpers.spec.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterPreviewTable/PaginatedTable/helpers.spec.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ExporterPreviewTable/PaginationControls/PageSizeSelector/helpers.spec.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ReportingSidebar/GranularityFilter/helpers.spec.js","webpack://Packs.[name]/./app/javascript/components/pages/DataExporterPage/ReportingSidebar/MetricsFilter/helpers.spec.js","webpack://Packs.[name]/./app/javascript/components/pages/ReportingPage/entry.js","webpack://Packs.[name]/./app/javascript/components/pages/ReportingPage/helpers.js","webpack://Packs.[name]/./app/javascript/utils/factories/metrics/index.js","webpack://Packs.[name]/./app/javascript/components/DownloadCSVButtonClient/helpers.spec.js","webpack://Packs.[name]/./app/javascript/utils/platforms.js","webpack://Packs.[name]/./app/javascript/components/pages/NewAppPage.jsx","webpack://Packs.[name]/./app/assets/svgs/amazon.svg","webpack://Packs.[name]/./app/assets/svgs/android_other.svg","webpack://Packs.[name]/./app/assets/svgs/ios.svg","webpack://Packs.[name]/./app/assets/svgs/android.svg","webpack://Packs.[name]/./app/assets/svgs/windows.svg","webpack://Packs.[name]/./app/assets/svgs/unknown.svg","webpack://Packs.[name]/./app/javascript/components sync ^\\.\\/.*$","webpack://Packs.[name]/./app/javascript/components/Footer/__snapshots__/index.spec.js.snap","webpack://Packs.[name]/./app/javascript/components/ReportingDataMetricValueDisplay/__snapshots__/index.spec.js.snap","webpack://Packs.[name]/./app/javascript/packs/application.js"],"names":["convertPlatformToFontAwesomeIcon","platform","getPlatformIconClass","classNames","isEmpty","getPlatformDisplayName","platformDetails","PLATFORMS","name","omitEmptyValues","object","pickBy","extractInputProps","props","autoCompleteProp","autoComplete","autoFocusProp","autoFocus","disabledProp","disabled","maxLength","minLength","pattern","placeholder","readOnlyProp","readOnly","requiredProp","required","size","undefined","noop","isBlank","option","isNumber","isUndefined","isNull","isPresent","GROUP_BY_TO_DISPLAY_NAME","adNetworkApp","adNetworkAppCountry","adNetworkId","adPlacementId","appCountry","appId","campaignCountry","campaignId","conversionValue","country","fidelityType","siteId","skAdNetworkId","skCampaignId","skSourceAppId","getPluralizedGroupByDisplayName","groupBy","camelCase","pluralize","getPluralizedTotalGroupByDisplayName","getPluralizedUnavailableGroupByDisplayName","getGroupHeaderNameFromGroupBy","isArray","map","groupByOpt","has","match","TARGETING_TAG_GROUPING_BY_PATTERN","substr","TARGETING_TAG_GROUPING_BY_SUBSTR_INDEX","getGroupNameFromGroupBy","join","deepCamelKeys","input","preservedKeys","item","isObject","Object","keys","forEach","key","includes","deepSnakeKeys","snakeCase","camelCaseMetrics","metrics","metric","stripTrailingSlash","str","endsWith","slice","mapKeysToMetricDefinitions","metricKeys","state","metricDefinitions","mergeDataObjectsById","baseData","deltaData","output","clone","each","row","matchingRow","find","id","extend","push","processDataObjects","dataObjects","dataObject","attributes","toString","getMatchCondition","isMatchedByDate","date","isMatchedByApp","isMatchedByAdNetwork","GROUP_BY_CHANNEL_STR","isMatchedByCampaign","GROUP_BY_CAMPAIGN_STR","isMatchedByCountry","GROUP_BY_COUNTRY_STR","isMatchedByPlatform","GROUP_BY_PLATFORM_STR","isMatchedBySite","GROUP_BY_SITE_STR","site","isMatchedBySkCampaign","GROUP_BY_SK_CAMPAIGN_STR","isSkanCampaign","type","SK_AD_NETWORK_REPORT_TYPE_STR","isSkanCampaignMatchedByCampaignId","primaryMatchCondition","campaignName","NULL_MATCH_CONDITION","secondaryMatchId","chain","filter","grouping","reverse","value","secondaryMatchCondition","processAndMergeDataObjectsById","_getMatchCondition","_processDataObjects","processedBaseData","processedDeltaData","baseDataRows","rowsToJoin","rowToJoin","primaryMatch","remove","length","secondaryMatch","isUnavailable","toLowerCase","unescapeStr","replace","UNESCAPING_REGEX","unescaped","UNESCAPED_MAPPING","getBrowserTimeZone","Intl","DateTimeFormat","resolvedOptions","timeZone","stripTotalsFromGranularity","granularity","includesSomeItemCombination","allItems","combinations","hasMetOneCondition","combination","difference","InvalidPathError","path","Error","isValidPath","pathSegments","split","currentPath","i","replaceSubstringInUrlAndPushState","currentSubstring","newSubstring","window","history","pushState","location","href","parseCSV","csvData","lines","LINE_DELIMITER","headers","FIRST_LINE_INDEX","VALUE_DELIMITER","rows","SECOND_LINE_INDEX","line","commaSeperatedValues","reduce","mapping","header","index","trim","values","extractNumericValue","newValue","parseFloat","compareNumericString","rowA","rowB","columnId","desc","rowValueA","rowValueB","numA","numB","getSortingFunctionByValueType","valueType","CURRENCY_VALUE_TYPE","PERCENTAGE_VALUE_TYPE","NUMBER_VALUE_TYPE","WHOLE_NUMBER_VALUE_TYPE","removeEmptyItemsFromCollection","collection","keysToRemove","intersection","obj","isNil","omit","reorderKeysInCollection","keyOrder","reorderedObj","accumulator","getWidthByStringLength","inputString","widthMultiplier","getLocalDashboardStorage","JSON","parse","localStorage","getItem","setLocalDashboardStorage","updatedState","setItem","stringify","deleteLocalDashboardStorageKeys","subString","localDashboardStorage","omitBy","isPublisherPage","page","PUBLISHER_PAGE_STR","isSkAdNetworkPage","SK_AD_NETWORK_PAGE_STR","isCustomReportPage","CUSTOM_REPORT_STR","isCreativesReportPage","CREATIVES_REPORT_STR","isUserAcquisitionReport","reportType","USER_ACQUISITION_REPORT_TYPE_STR","isPublisherReport","PUBLISHER_REPORT_TYPE_STR","isSkAdNetworkReport","isDataExporterPage","pathname","DATA_EXPORTER_PATH","StateContext","createContext","DispatchContext","getReportPageFromPathname","pop","REPORTS_BY_VALUE","OVERVIEW_REPORT_STR","getReportPageFromReportType","getReportTypeFromLocation","search","URLSearchParams","get","getReportTypeFromPathname","getReportTypeFromQuery","query","getNameHeaderSettingsByReportPage","reportPage","isAllExpandable","isUsingGroupByForNameHeader","getChannelsWithUnavailableOption","channels","UNAVAILABLE_CHANNEL","getInitialState","apps","canGroupByTargetingTags","channelsByReportType","countries","granularities","granularitiesByReportType","groupBysByReportingContext","groupBysByReportType","includeUnlinkedApps","savedReportsByReportType","targetingTags","currentReportingContext","PUBLISHER_CONTEXT_STR","SK_AD_NETWORK_CONTEXT_STR","ADVERTISER_CONTEXT_STR","getReportingContextFromReportPage","channelsWithUnavailableOption","completeApps","UNLINKED_APPS","getAppsWithUnlinkedOption","dataExporterChannels","filteredGroupBysByReportType","gon","feature_flags","reject","CREATIVE_GROUP_BY_ID_STR","filteredGroupBysByReportingContext","dataExporterGranularities","dataExporterGroupBys","dataExporterQuery","dataExporterTableData","groupBys","isDeletingReport","isDeletingReportError","isFetchingDataExporterTableData","isFilterDirty","isSavingReport","isSavingReportError","isSidebarCollapsed","savedReportName","selectedApps","reducer","action","payload","ReportingFiltersProvider","children","useLocation","useReducer","dispatch","Provider","useReportingFiltersState","context","useContext","useReportingFiltersDispatch","queryParamListOrDefault","alternativeQueryParamList","defaultProp","queryParamList","getGranularityFromQuery","getEndDateFromQuery","currentUser","endDateFromUrlParams","isDemoOrg","DEMO_ORG_END_DATE_STR","format","getStartDateFromQuery","startDateFromUrlParams","DEMO_ORG_START_DATE_STR","subDays","getCohortStrategyFromQuery","getSkGroupByFromQuery","isDataExporter","DELIMITER_QUERY_PARAM_LIST","MIN_DATA_EXPORTER_MULTI_GROUP_BY_COUNT","MIN_MULTI_GROUP_BY_COUNT","firstBaseGroupByOption","BASE_SK_GROUP_BY_OPTS","secondBaseGroupByOption","getGroupByFromQuery","BASE_GROUP_BY_STR","isGroupingByTargetingTags","getUrlSearchParams","locationSearch","getFilteredAppIds","defaultApps","allApps","DEMO_APP_ID","getDefaultQueryParams","reportingFilters","allCountries","Date","allChannels","union","getAll","toNumber","endDate","startDate","cohortStrategy","getValidAppWithClaimedSkApp","appsIdsFromQuery","app","numSkApps","getSkQueryParams","validAppWithClaimedSkApp","getQueryParams","getEventNameFromQuery","buildQueryParams","adNetworkIds","appIds","buildSkQueryParams","eventName","buildDefaultQueryParams","getReportTypeByReportPage","getReportPageByReportType","getDefaultComparisonByGroupBy","ALL_GROUP_BY_ID_STR","getMetricColumnsByReportType","metricColumnsByReport","legacyUrlMetrics","getSavedReportFromLocation","savedReportId","savedReports","savedReport","processedSavedReport","ad_network_ids","Number","currentEndDate","currentStartDate","past_number_days","processSavedReportForDataExporter","getSavedReportPayloadFromFilters","pastNumberDays","differenceInCalendarDays","FontAwesomeIcon","animated","ariaLabel","classNameProp","className","flip","icon","isBordered","isFixedWidth","isInverse","list","onClick","pulled","rotate","style","VALID_ANIMATED_OPTIONS","VALID_FLIP_OPTIONS","VALID_LIST_OPTIONS","VALID_PULLED_OPTIONS","VALID_ROTATE_OPTIONS","VALID_SIZE_OPTIONS","VALID_TYPE_OPTIONS","aria-label","onKeyDown","role","tabIndex","defaultProps","SITE_ID_GROUP_BY_ID_STR","REPORT_TYPE_LABEL_MAPPING","iconUrl","logo","url","retinaThumb","thumb","bundleId","storeId","APP_INTEGRATION_PATH","TEXT_ATTRIBUTION_WINDOW","TEXT_APP_CHANNEL_ATTRIBUTION_WINDOW","TEXT_ATTRIBUTION_WINDOW_DESCRIPTION","TEXT_UPDATE_ERROR_MESSAGE","TEXT_CHANNEL_SELECTOR_TITLE","TEXT_CHANNEL_SELECTOR_MESSAGE","TEXT_CHANNEL_SELECTOR_MESSAGE_END","TEXT_APP_INSTRUCTIONS","TEXT_APP_CHANNEL_INSTRUCTIONS","TEXT_OVERRIDE_APP_SETTINGS_TOOLTIP","TEXT_CUSTOM_ATTRIBUTION_WINDOW_NOT_SUPPORTED","TEXT_APP","TEXT_CHANNELS","TEXT_CLICK_THROUGH_ATTRIBUTION","TEXT_VIEW_THROUGH_ATTRIBUTION","TEXT_AD_NETWORK_WINDOW","TEXT_WINDOW","TEXT_APP_WINDOW","TEXT_OVERRIDE_APP_SETTINGS","TEXT_DAYS","TEXT_HOURS","TEXT_EDIT_BUTTON","TEXT_DAYS_RANGE","TEXT_HOURS_RANGE","ERROR_MESSAGE_AUTO_CLOSE_DELAY","DEFAULT_WINDOW_TIME_VALUE","HOURS_TIME_RANGE","range","DAYS_TIME_RANGE","TYPE_DAYS","TYPE_HOURS","TYPE_DETERMINISTIC","TYPE_PROBABILISTIC","TYPE_CLICK","TYPE_IMPRESSION","WINDOW_TYPE_DETERMINISTIC_CLICK","WINDOW_TYPE_DETERMINISTIC_IMPRESSION","WINDOW_TYPE_PROBABILISTIC_CLICK","WINDOW_TYPE_PROBABILISTIC_IMPRESSION","ATTRIBUTION_WINDOW_LEVEL_KEY_APP","ATTRIBUTION_WINDOW_LEVEL_KEY_APP_CHANNEL","ATTRIBUTION_WINDOW_LEVEL_KEY_CHANNEL","ATTRIBUTION_TYPE_KEY_CLICK","ATTRIBUTION_TYPE_KEY_IMPRESSION","ATTRIBUTION_WINDOW_LEVEL","ATTRIBUTION_TYPE","DETERMINISTIC","PROBABILISTIC","ATTRIBUTION_TYPE_LABEL","ATTRIBUTION_LEVEL_WINDOW_LABEL","ATTRIBUTION_WINDOW_KEYS","APP_ATTRIBUTION_WINDOWS","label","tooltip","SECONDS_IN_DAY","SECONDS_IN_HOUR","DAYS_IN_WEEK","HOURS_IN_DAY","XDAYS_LIST","AVERAGE_CALCULATION_LABEL","TOTAL_CALCULATION_LABEL","AM_CHANNEL_REQUIREMENT","APP_REQUIREMENT","UA_CHANNEL_REQUIREMENT","SDK_REQUIREMENT","AMOUNT_Y_AXIS","DATASOURCE_CUSTOM","DATASOURCE_TENJIN","DATASOURCE_TENJIN_AD_NETWORK","TOOLTIP_MISSING_FORMULA","TOOLTIP_MISSING_DESC","METRIC_CATEGORY","order","category","toUpperCase","BASE_METRIC_DEFINITIONS","abbreviatedName","calculatedAsLabel","categories","AD_NETWORK","REVENUE","NON_COHORTED","components","dataExporter","isVisible","groupedSummaryTable","kpiCard","kpiTabChart","yAxis","dataSource","formula","link","title","displayName","keywords","onboardingRequirements","FRAUD","MEASURED","COMPOSITE","AD_ENGAGEMENT","buildAppleVariant","APPLE","buildAppleMetricKey","AD_NETWORK_SKAN","skAdNetworkReport","position","hasAppleVariant","buildXDayVariant","xDay","COST","RETENTION","COHORTED","chartType","reportId","buildXDayMetricKey","hasXDayVariant","hideForSkAdNetworkReport","AD_MEDIATION","NEW","CUSTOM_METRIC_DEFINITIONS","buildCustomVariant","customEventName","getOverrideableCustomEventAttributes","parentMetricDefinition","mergeParentMetricDefinitionWithXDayAttributes","CUSTOM_EVENT_OVERRIDES","_purchase","average","count","cpEvent","cpParticipant","cumCnt","cumCntPu","cumVal","cumValPu","participation","sum","users","REGEX_WEBURL","RegExp","TENJIN_ATTRIBUTION_PROVIDER_ID","amazon","deviceIdentifiers","advertisingId","description","android","appStore","urlFormat","urlRegex","androidOther","ios","developerDeviceId","CHANNELS","META","LOOKBACK_WINDOWS","0","1","2","3","7","14","30","NETWORK_ERROR","BASE_JSONAPI_POINTER","APP_CREATE_CONFLICT_MSG","APP_CREATE_FAIL_MSG","APP_CREATE_SUCCESS_MSG","NETWORK_ERROR_MSG","TRY_AGAIN_MSG","UNAUTHORIZED_ACCESS_MSG","LOGIN_PATH","APPS_POST_PATH","REPORTS","canSaveMetrics","ONE_SECOND","TIME_FORMAT","FIVE_ITEMS","FIRST_ITEM","XDAY_FOR_METRIC_IN_COHORT_PATTERN","METRIC_IN_COHORT_PATTERN","UA_METRICS_AVAILABLE_IN_SK_AD_NETWORK_REPORT","TOOLTIP_MOUSE_ENTER_DELAY","oneOfSelectableReports","PropTypes","oneOf","reportObject","shape","isRequired","string","saveMetrics","userAcquisitionReportObject","arrayOfReports","arrayOf","objectShapeWithUrl","logoWithUrl","appChannelRubyObject","ad_network_id","number","app_id","deterministic_click_attribution_window","deterministic_impression_attribution_window","organization_id","probabilistic_click_attribution_window","probabilistic_impression_attribution_window","objectOfAppChannels","objectOf","arrayOfAppChannels","appChannelObject","deterministicClickAttributionWindow","deterministicImpressionAttributionWindow","organizationId","probabilisticClickAttributionWindow","probabilisticImpressionAttributionWindow","arrayOfAppChannelObjects","channelRubyObject","active","custom","icon_url","oneOfType","short_id","visible","objectOfChannels","arrayOfChannels","channelObject","selfAttributing","shortId","arrayOfChannelObjects","oneOfChartTypes","countryObject","emoji_flag","arrayOfCountries","oneOfSelectableGranularities","oneOfSelectableDataExporterGranularities","oneOfAllAvailableGranularities","granularityObject","dataExporterGranularityObject","oneOfSelectableGroupBys","paginationObject","current_page","page_limit","total_count","total_pages","campaignObject","ad_network_icon_url","ad_network_name","remote_app_id","adPlacementObject","remote_publisher_app_id","arrayOfAdPlacements","appAssociatorObject","arrayOfAppAssociatorObjects","objectOfLookbackWindows","oneOfSelectableLookbackWindows","oneOfSelectablePlatforms","oneOfSelectableServerPlatforms","oneOfPlatformDisplayNames","arrayOfSelectablePlatforms","arrayOfSelectableServerPlatforms","associatableAppObject","objectOfFilterableApps","arrayOfAssociatableApps","attributionProviderObject","objectOfAttributionProviders","serverAttributionProviderObject","objectOfServerAttributionProviders","platformObject","instanceOf","searchable","bool","objectOfPlatforms","serverPlatformObject","objectOfServerPlatforms","oneOfEntities","oneOfExternalIDAttributes","tableHeaderObject","text","arrayOfTableHeaders","oneOfMetricValueTypes","formikInjectedPropTypes","dirty","errors","handleBlur","func","handleChange","handleReset","handleSubmit","isSubmitting","isValid","isValidating","resetForm","setErrors","setFieldError","setFieldTouched","setFieldValue","setStatus","setSubmitting","setTouched","setValues","status","any","submitCount","submitForm","touched","validateField","validateForm","formikInjectedPropTypesObject","highchartsSeriesObject","data","x","y","arrayOfHighchartsSeriesData","highchartsPointObject","color","series","options","arrayOfHighchartsPoints","metricDefinitionObject","oneOfXAxisTypes","oneOfApiEndpoints","kpiTabGroupedStatsMetricDefinitionObject","apiEndpoint","minY","minYRange","xAxisType","kpiTabSummaryMetricDefinitionObject","arrayOfSelectableCustomEvents","objectOfTabs","chartProps","metricDefinitionKey","objectOfSummaryBlocks","oneOfOnboardingRequirements","arrayOfOnboardingRequirements","arrayOfSelectableValueRanges","arrayOfSelectableComparisonOptions","onboardingStatusObject","hasConfiguredAmChannels","hasConfiguredApps","hasConfiguredSdk","hasConfiguredUaChannels","hasRecentlyReceivedFirstEvents","totalNumAmChannels","totalNumApps","totalNumSdkEnabledApps","totalNumUaChannels","arrayOfTableData","oneOfSkAppClaimStatuses","apiKeyRubyObject","authentication_token","created_at","is_new","arrayOfApiKeys","apiKeyObject","authenticationToken","createdAt","apiKeyAppRubyObject","arrayOfApiKeyApps","apiKeyAppObject","apiKeyDateObject","integrationDateRubyObject","sdk_most_recently_used_date","mapOfIntegrationDates","arrayOfSelectedItemIcons","appObject","bundle_id","num_sk_apps","arrayOfAppObjects","attribuionWindowObject","level","matchType","arrayOfAttributionWindowObjects","revenueDeductionRubyObject","deduction","propName","componentName","isNaN","end_date","start_date","revenueDeductionObject","userSettingsObject","email","api_credentials_expiring","api_credentials_failing","campaign_batch_csv_import_complete","campaign_batch_csv_import_failed","csv_import_failed","notifications","suspended_accounts","onboarding","popup","reporting","grouped_summary_table","view_mode","tracking","fullstory","platformSDKObject","linkText","linkUrl","arrayOfPlatformSDKOptions","roleObject","arrayOfRoleObjects","callbackGroupTemplates","allow_multiple","event_definition","required_macros","arrayOfCallbackGroupTemplates","breadcrumbPath","arrayOfBreadcrumbPaths","overlayOpaquenessTypes","attributionWindowTimeTypes","arrayOfAttributionWindowTimeTypes","axios","defaults","common","api","applyCaseMiddleware","create","ignoreHeaders","apiWithoutCaseTransformation","client","interceptors","request","use","config","csrfToken","document","querySelector","content","post","put","patch","httpVerbs","makeGetRequestWithoutCaseTransformation","makePostRequestWithoutCaseTransformation","makePutRequestWithoutCaseTransformation","TABS","APP_AND_SDK","ATTRIBUTION","CALLBACKS","SK_AD_NETWORK","LABEL_APP_AND_SDK","LABEL_ATTRIBUTION","LABEL_CALLBACKS","LABEL_SK_AD_NETWORK","PATH_INTEGRATIONS","PATH_ATTRIBUTION","PATH_CALLBACKS","PATH_SK_AD_NETWORK","PATH_DASHBOARD_APPS","PATH_DASHBOARD_INTEGRATIONS","PLATFORM_IOS","PATH_APP_ID","CALLBACKS_TAB_SUB_TABS_PATHS","SUB_TABS","S2S_CALLBACKS","PATH","HEALTH","INTEGRATIONS","BASE_PATH","Link","isClickable","isExternal","to","restProps","styles","ev","target","mergeSkanDataObjectsById","baseDataIds","deltaDataIds","matchingIds","baseDataOnly","deltaDataOnly","mergedDataObjects","baseDataObject","deltaDataObject","sortBy","transformAppleMetricsForQuery","lowerFirst","APPLE_METRIC_PREFIX","processAppleMetricsResponse","response","processedData","mapKeys","upperFirst","useLastGroupBy","last","isUsingClickhouse","urlFlag","userFlipper","getSkAdNetworkGroupedUrl","REPORTING_API","SK_AD_NETWORK_GROUPED_URL","getSkAdNetworkUrl","SK_AD_NETWORK_URL","getSkanAppleGroupedUrl","SKAN_APPLE_GROUPED_URL","getSkanAppleUrl","SKAN_APPLE_URL","getCohortUrl","COHORT_URL","getCohortLifetimeUrl","COHORT_LIFETIME_URL","getCustomCohortUrl","CUSTOM_COHORT_URL","getCustomUsageUrl","CUSTOM_USAGE_URL","getCustomMetricDefinitionsUrl","CUSTOM_METRIC_DEFINITIONS_URL","getGroupedStatsUrl","GROUPED_STATS_URL","getGroupedSummaryUrl","GROUPED_SUMMARY_URL","getStatsUrl","STATS_URL","getSummaryUrl","SUMMARY_URL","transformQueryParamsForV4Api","queryParams","isSummary","dateDimension","DATE_DIMENSION_GRANULARITY_MAPPING","dimensions","isUsingImpressionLevelRevenueData","isSourceIlrd","hasIlrdAccess","CurrentUserProvider","accessControl","recentOrgs","switchableOrgs","useCurrentUserState","PATH_INTEGRATION_ID","LABEL","CALLBACKS_TABLE_HEADERS","isHeadersRow","GROUP_TYPE_STANDARD","GROUP_TYPE_ADVANCED","NEW_EVENT_MODAL_HEADERS","tooltipContent","EDIT_CALLBACK_MODAL_HEADERS","S2S_CALLBACKS_TABLE_HEADERS","HEALTH_TABLE_HEADERS","CALLBACK_HEALTH_SUCCESS_THRESHOLD","NEW_EVENT_DRAFT_DEFAULTS","groupType","selectedCallbackGroupTemplate","ACTION_OPTIONS","HEADER_INDEX_OFFSET","USER_FILTER_OPTIONS","NEW_EVENT_EMPTY_ROW","actionOptions","callbackName","eventDefinition","userFilter","userFilterOptions","PRESERVED_KEYS_FOR_CASE_TRANSFORMATION","DEFAULT_ERROR_MESSAGE","CHANNEL_SETTINGS_ERROR","callbacks","credentials","health","s2sCallbacks","DEFAULT_ERROR_ALERT_PROPS","PRESERVED_CREDENTIAL_FACEBOOK_APP_ID","getBaseMetricDefinitionsMapping","baseMetricDefinitions","getXDayMetricDefinitionsMapping","xDaysList","metricDefinition","getUsersSummaryName","usersName","getMetricDefinitionsByGranularity","granularityDisplay","startCase","usersDisplayName","usersAbbreviatedName","charAt","hasCustomVariant","getBaseMetricDefinitionsByContext","contextStr","featureFlags","baseMetricDefinition","getAppleMetricDefinitionsMapping","getMetricDefinitionByKey","definitionWithOverrides","definition","hasTooltipTitle","hasLegacyTooltipOverride","updatedDefinition","buildCustomMetricDefinitionsFor","metricDefinitionsByGranularity","customMetricDefinitions","getMetricsByCategoryMapping","allCategoriesId","ALL","newCategoriesId","categoryId","newMetrics","mapValues","hasNewMetrics","sortMetricCategoryIds","a","b","itemA","itemB","localeCompare","buildMetricDefinitionsFor","buildPublisherMetricDefinitions","buildSkAdNetworkMetricDefinitions","buildAdvertiserMetricDefinitionsFor","module","exports","customStyles","container","cursor","width","control","backgroundColor","stylesObj","controlBgColor","borderRadius","controlBorderRadius","display","flexGrow","flexShrink","fontFamily","controlFontFamily","fontSize","controlFontSize","fontWeight","controlFontWeight","lineHeight","controlLineHeight","dropdownIndicator","PRIMARY_COLORS","base","indicatorSeparator","menu","whiteSpace","zIndex","menuZIndex","placeholderColor","fontStyle","placeholderFontWeight","singleValue","margin","valueContainer","flexWrap","padding","valueContainerPadding","labelledControlStyles","labelledControlHeight","paddingTop","labelledControlPaddingTop","labelledControlColor","Dropdown","customControl","customStylesProp","dropdownLabel","customComponents","isUsingLabel","Control","Option","platformIcon","theme","colors","primary","primary25","primary50","primary75","transformMetricsForQuery","transformedMetrics","isString","getCustomCohortQueryParamsFromMetrics","xdays","metricKey","metricMatch","getMetricKeyFromCohortedMetricKey","xday","xdayMatch","getXdayFromCohortedMetricKey","buildChildQueryIds","selectedRules","rules","pluralizedRules","rule","plural","pick","getSelectedRulesForChildQuery","pluralizedGroupBy","dimension","getPluralizedDimensions","isCampaignIdGroupBy","getRowIdForChildQuery","formatQueryParams","formattedMetrics","prepareApiResponse","isFlat","isLastQueryInSequence","childQueryIds","fetchReportingData","makeGetRequest","apiUrlOverride","apiVersion","params","requestUrl","fetchSummaryData","fetchGroupedStatsData","getChildQueryIds","rulesPluralized","fetchGroupedSummaryData","parentQueryIds","fetchGroupedAdRevenueData","AD_REVENUE_GROUPED_URL","fetchGroupedCustomData","partition","usageMetrics","nonUsageMetrics","cohortMetrics","usageQueryParams","summary","cohortQueryParams","hasUsageMetrics","hasCohortMetrics","usageResponse","cohortResponse","getSkAdNetworkData","isGroupedByDate","adNetworkMetrics","appleMetrics","hasAdNetworkMetrics","hasAppleMetrics","adNetworkMetricsResponse","transformedAppleMetrics","appleMetricsResponse","processedAppleMetricsResponse","mergedData","mergedResponse","fetchGroupedSkAdNetworkData","isCompatibleWithUAMetrics","rawQueryMetrics","rawSkAdNetworkMetrics","userAcquisitionMetrics","skAdNetworkQueryParams","userAcquisitionQueryParams","skAdNetworkResponse","userAcquisitionResponse","meta","fetchSkAdNetworkData","hasSkAdNetworkMetrics","hasUserAcquisitionMetrics","fetchConversionValueDataByGroupBy","selectedComparison","firstGroupBy","ids","fetchConversionValueDataById","allFetches","Promise","all","responses","fetchSummarySkAdNetworkData","fetchStatsData","fetchCohortData","fetchCohortLifetimeData","fetchCustomUsageTotalData","GRANULARITY_TO_CUMULATIVE_GROUP_BY","daily","monthly","weekly","fetchCustomUsageCumulativeData","fetchCustomCohortData","fetchCustomCohortTotalData","fetchAdRevenueData","AD_REVENUE_URL","fetchAdRevenueGranularData","AD_REVENUE_GRANULAR_URL","fetchAdRevenueSummaryData","AD_REVENUE_SUMMARY_URL","fetchGroupedCreativesData","getGroupedQueryFunctionByReportPage","getQueryFunctionForDataExporter","report","SAVE_METRICS_URL","result","saveTableViewMode","viewMode","DASHBOARD_REPORTS_UPDATE_TABLE_VIEW_MODE_URL","saveTableNameColumnMode","nameColumnMode","DASHBOARD_REPORTS_UPDATE_TABLE_NAME_COLUMN_MODE_URL","createSavedReport","DASHBOARD_SAVED_REPORTS_URL","updateSavedReport","deleteSavedReport","REPORTING_API_URL_MAPPING","4","overrideUrlsIfMockApiEnabled","KPITabsWrapper","summaryBlocks","tabs","metricDefinitionsState","useMetricDefinitionsState","prevReportPage","usePrevious","numSummaryBlocks","numTabs","groupedStatsMetricDefinitions","buildMetricDefinitionsForTabs","summaryMetricDefinitions","buildMetricDefinitionsForSummaryBlocks","OnboardingStatusStateContext","OnboardingStatusDispatchContext","statusToRequirementMapping","onboardingStatusReducer","OnboardingStatusProvider","useOnboardingStatusState","getMissingOnboardingRequirements","onboardingStatus","requirement","missingRequirementToSentence","getOnboardingRequirementsByStatus","requirementsByStatus","uniq","getGroupedSummaryTableOnboardingStatus","selectedMetricDefinitions","compact","unfulfilledMetrics","fulfilledMetrics","shouldShowOverlay","isMocking","metricDefinitionForOverlay","head","getConversionValueHistogramOnboardingStatus","APP_BUTTON_DETAILS","iconType","CHANNEL_BUTTON_DETAILS","SDK_BUTTON_DETAILS","getButtonDetailsFromRequirement","groupMetricDefinitonsByOnboardingStatus","mockableMetricDefinitions","queryableMetricDefinitions","requiresMockDataForMetric","addedSentence","getCompletedOnboardingRequirementsMessage","messagesList","shouldIncludeSDKMessage","shouldIncludeAppsMessage","arrayToSentence","getMinDate","formatDateForDisplay","DATE_DISPLAY_FORMAT","formatDateToStr","DATE_FORMAT","parseStrToDate","parseStrToTime","getTime","defineds","endOfLastMonth","endOfMonth","addMonths","endOfLastWeek","endOfWeek","addDays","endOfLastYear","endOfYear","addYears","endOfToday","endOfDay","endOfYesterday","startOfLastMonth","startOfMonth","startOfLastWeek","startOfWeek","startOfLastYear","startOfYear","startOfToday","startOfDay","startOfYesterday","getStaticRanges","createStaticRanges","inputRanges","getCurrentValue","isSameDay","Math","max","getStartDateFromDaysUpToTodayInput","getRestrictedDateRange","dateRange","differenceInDays","ONE_DAY_IN_MILLISECONDS","updatedRange","ONE_YEAR_IN_DAYS","ONE_YEAR_IN_MILLISECONDS","SUCCESS_COLORS","getNameHeaderAndValueByGroupBy","appInfo","groupById","isApp","isCombinationGroupBy","COMBINATION_GROUP_BYS","isMissingName","shouldShowUnavailable","shouldHideName","nameHeader","GROUP_BY_HEADER_MAPPING","nameValue","formatPercentageForCSV","percentage","formatDateForCSV","DATE_FORMAT_YYYY_MM_DD_LENGTH","substring","formatRow","getCombinationGroupByFromArray","arrayGroupBy","findKey","COMBINATION_GROUP_BY_TO_SINGLE_ID_MAPPING","mappedGroupBy","isEqual","buildDataExporterCSVData","csvSortOrder","processedCSVData","appMeta","hasDate","finalRowObject","FIELDS_TO_OMIT_FOR_CSV","sortCSVByDateFirst","nameHeaderSortingValue","keyFormattedRow","valueFormattedRow","buildSkAdNetworkCSVData","secondGroupBy","selectedSkAdLinkedApp","EMPTY_APP","appName","subRows","subRow","subRowNameHeader","subRowNameValue","finalSubRowObject","keyFormattedSubRow","valueFormattedSubRow","buildCSVData","getCSVHeaders","sortOrder","CSV_COLUMN_SORT_ORDER","availableKeys","flatten","pull","remainingKeys","getCSVFilename","derivedReportType","getReportPageAndTypeFromPayload","isShowingCustomMetrics","isPublisher","isSkan","shouldShowCustomMetrics","metricsByCategory","fetchAndBuildCustomMetricDefinitions","responseWithCategories","MetricDefinitionsProvider","initialState","useState","initializeCustomMetricDefinitions","setInitializeCustomMetricDefinitions","useEffect","Honeybadger","notify","fetchAndAssignCustomMetricDefinitions","useMetricDefinitionsDispatch","DASHBOARD_APPS_AD_NETWORK_SETTINGS_PATH","DASHBOARD_APPS_CALLBACK_GROUPS_PATH","DASHBOARD_APPS_CALLBACK_HEALTH_PATH","DASHBOARD_APPS_CHANNEL_SETTINGS_PATH","DASHBOARD_APPS_CREDENTIAL_SETTINGS_PATH","DASHBOARD_APPS_EVENT_CALLBACKS_PATH","DASHBOARD_APPS_INTEGRATIONS_PATH","DASHBOARD_APPS_S2S_CALLBACKS_PATH","DASHBOARD_APPS_URL","Filter","isDisabled","isOpen","pane","activeNewNav","ROUTES","component","OverviewPage","SpendPage","UsagePage","RetentionPage","ValuePage","RevenuePage","RoiPage","CustomPage","FraudPage","CreativesPage","route","keyBy","WINDOW_SCROLLTO_OPTIONS","behavior","top","CV_SAMPLE_CSV_URL","CV_SAMPLE_CSV_WITH_META_URL","CV_SAMPLE_CSV_FILE","KNOWLEDGE_BASE_CV_MAPPING_RECOMMENDATION_URL","KNOWLEDGE_BASE_UNDERSTANDING_CONVERSION_VALUES","KNOWLEDGE_BASE_UPLOAD_CV_SCHEMA","MMP_CONNECTION_URL_BASE","CV_SCHEMA_ONLINE","CV_SCHEMA_POSTBACK_SEQUENCE_INDEX_MAX","CV_SCHEMA_POSTBACK_SEQUENCE_INDEX_MIN","CV_SCHEMA_SKAN_VERSION_3","CV_SCHEMA_SKAN_VERSION_4","CV_SCHEMA_TYPE_COARSE_GRAINED","CV_SCHEMA_TYPE_FINE_GRAINED","CV_SCHEMA_PARTNER_EVENT_NAME_KEY","GOOGLE","TIKTOK","CV_SCHEMA_COARSE_VALUE_MAPPING","low","medium","high","ERROR_RESET_TIMEOUT_MS","SKELETON_ROW_COUNT","DATE_FORMAT_UPLOADED_AT","CSV_PREVIEW_COLUMN_ORDER","DEFAULT_EVENT_MAPPINGS","googleEventName","metaEventName","tiktokEventName","getRulesByReportPageAndGroupBy","DEFAULT_AM_GROUPED_SUMMARY_TABLE_DRILLDOWN_RULES","TARGETING_TAG_DRILLDOWN_RULES","CUSTOM_UA_GROUPED_SUMMARY_TABLE_DRILLDOWN_RULES","DEFAULT_UA_GROUPED_SUMMARY_TABLE_DRILLDOWN_RULES","isColumnEditorOpen","isAllExpanded","isAllExpanding","tableData","isFetchingTableData","GroupedSummaryTableSettingsProvider","metricColumnsByReportProp","DEFAULT_APPLE_SKAN_METRICS","useGroupedSummaryTableSettingsState","useGroupedSummaryTableSettingsDispatch","ListItem","isSelected","leftContent","rightContent","selectionIcon","tooltipText","listItem","listItemSelected","listItemDisabled","handleClick","overlay","placement","trigger","preventDefault","isValidElement","getCredentialsFromSettings","acc","getFieldSetFromSettings","getModalHeadersForRequiredMacros","defaultHeaders","callbackGroupTemplate","callback","selectedChannel","requiredMacros","isDefault","macro","macroChannel","macros","getRequiredMacrosMappingForDraft","isUsingDefault","getSortedCallbackGroupsForTable","callbackGroups","sort","getSortedS2SCallbacksForTable","getSortedCallbackHealthForTable","validateNewEventDraft","newEventDraft","fixedEventDefinition","every","optional","validateEditedCallbackDraft","editedCallbackDraft","selectedCallback","isDirty","buildVisibleSeries","groupedStatsDataByMetric","numMaxVisible","visibleSeries","n","mapDataForSelector","ENDPOINT_TO_QUERY_FN","adRevenue","adRevenueSummary","cohort","cohortLifetime","customCohort","customCohortTotal","customUsageCumulative","customUsageTotal","groupedStats","isV4CompatibleEndpoint","endpoint","V4_ENDPOINT_TO_REPORT_TYPE","isSummaryEndpoint","lowerCase","performQueriesFor","metricsByEndpoint","groupMetricDefinitionsByApiEndpoint","baseQueryParams","queries","useQueries","queryParamsForFetchingData","queryKey","enabled","queryFn","getQueryFunctionByEndpoint","isLoading","some","isFetching","isPulling","isError","isSuccess","useDataFromGroupedQueries","useMemo","responseDataList","transformResponseDataForChart","flattenSummaryDataFromQueries","queryResponses","flattenedSummaryDataFromQueries","useDataFromSummaryQueries","filterMetricDefinitionsByXAxisType","buildMockDataForGroupedStats","datetimeMetricKeys","xDayMetricKeys","groupedStatsDataList","generateAppLevelDataByDateForMetrics","generateAppLevelDataByXDayForMetrics","buildMockDataForSummary","generateSummaryLevelDataForMetrics","PlatformIcon","isValidSize","VALID_SIZES","iconClass","platformKey","PLATFORM_TO_ICON","src","unknown","Label","collapsedIcon","hasFilterChanges","isCollapsed","isTooltipDisabled","labelTitle","wrapper","collapsed","renderChangesBorderLeft","useCallback","borderClassName","changesBorder","changesBorderCollapsed","DEFAULT_ATTRIBUTION_SETTINGS","SANS_DEFAULT_ATTRIBUTION_SETTINGS","RESET_ATTRIBUTION_SETTINGS","buildAppConfig","engagementType","APP","buildAppChannelConfig","appChannel","channelId","APP_CHANNEL","buildAppChannelConfigWithAppSettings","channel","buildDefaultAppChannelConfig","getSupportedTimeTypes","isProbabilistic","isViewThrough","convertDaysToSeconds","days","convertDaysToHours","convertSecondsToHumanObject","seconds","supportedTimeTypes","intervalToDuration","end","start","hours","trimEnd","getTimeRange","convertTimeToSeconds","hoursToSeconds","getAppChannelSettingsByAppAndChannel","currentApp","currentChannel","currentAppChannel","currentAppChannelHasCustomSettings","currentAppChannelOverrideToggleOn","getAttributionSettings","handleError","error","displayErrorMessage","autoClose","closeButton","closeOnClick","hideProgressBar","onClose","reload","pauseOnFocusLoss","pauseOnHover","campaign_id","site_id","Pane","listClass","searchInput","subtitle","paneCollapsed","buildSelectableMetrics","buildSelectedMetrics","selectedMetricKeys","isMatchedBySearch","searchText","toLower","sortMetricsAlphabeticallyWithXDay","nameA","nameB","regex","hasNumberA","test","hasNumberB","strippedNameA","strippedNameB","alphabeticalComparison","matchA","matchB","parseInt","Infinity","getNextGroupBy","depth","GroupedSummaryTable","tableSettingsDispatch","useFeatureFlagsState","tableViewMode","tableNameColumnMode","setTableData","tableRowsLoadingById","setTableRowsLoadingById","tableDataCache","setTableDataCache","globalFilter","setGlobalFilter","setTableDataInSettings","fetchedTableData","setIsFetchingTableData","prevTableViewMode","prevTableNameColumnMode","handleClickRow","rowData","original","currentTableData","recursivelyUpdateTable","childData","currentTableRowsLoadingById","fetchChildData","fetchMockAppLevelDataByDateForMetrics","currentTableDataCache","fetchParentData","useQuery","DEFAULT_QUERY_OPTIONS","groupedSummaryData","refetch","isPullingData","hasNoDataToDisplay","isAwaitingDataToBeCalculated","isCompactViewMode","isNameExtended","shouldHaveNoHorizontalScroll","tableContainerClassName","tableContainer","tableContainerNoXScroll","compactView","tableContainerRef","useRef","tableContainerSize","useRefSize","layout","isFilterDisabled","onTableViewModeClick","isCompact","onToggleNameExtended","ref","hasNoData","onClickRow","tableContainerWidth","onReloadClick","ReportsSelector","useHistory","metricDefinitionsDispatch","groupedSummaryTableSettingsDispatch","defaultValue","isClearable","isSearchable","maxMenuHeight","MAX_MENU_HEIGHT","onChange","newReport","currentReport","existingGroupBy","splitPath","set","isInvalidCustomReportGroupBy","isInvalidCreativesReportGroupBy","getUrlForHistory","Overlay","containerClassName","overlayContent","overlayContainer","overlayContentContainer","CardPanel","actions","footer","overlayContainerClassName","overlayOpaqueness","panelBodyClassName","Wrapper","FragmentWrapper","cardPanel","panelHeader","panelTitle","panelActions","opaquenessFull","opaquenessHalf","opaquenessMild","opaquenessMore","panelBody","panelFooter","RANGE_COLORS","VOID_END_DATE","CHART_COLORS","CONVERSION_VALUE_HISTOGRAM_COLORS","CONVERSION_VALUE_HISTOGRAM_TOOLTIP_BACKGROUND_COLOR","buildContextObject","dataPoint","convertDatetimeToDateStr","datetime","getXAxisValue","dataPointObj","sortDesc","abs","total","axisData","responseObjGroupedById","dataGroupedById","metricAggregate","dataPointsAggregate","dataPointsListById","metricDataPoints","dataPointsList","hasAllZeroes","highchartsDataList","yValue","numeral","buildHighchartsDataByMetric","mergeDataForDrilldownTable","groupedStatsData","statsData","statsDataByDate","cloneDeep","itemByDate","dateKey","getDecimalByPercent","decimal","round","makeRequest","baseURL","record","isNewRecord","parseDeductionRecord","todayDateString","hasStarted","today","parseISO","isAfter","Section","section","SectionContent","sectionContent","SectionHeader","sectionHeader","ReportingDataMetricValueDisplay","iconClassName","isBlankValue","noValue","displaySettings","displaySettingsByValueType","prependWith","formatNumberForDisplay","postfixWith","numberProp","numberOfDigits","shouldDropTrailingZeroes","_isNaN","parts","toPrecision","clamp","MIN_NUMBER_OF_DIGITS","MAX_NUMBER_OF_DIGITS","toFixed","fnums","decimals","insertIntoRow","existingRows","subRowsToInsert","recurseIntoSubRows","updatedPath","insertIntoTable","customGlobalFilter","columns","filterValue","filterKeyForSubrows","recursivelyBuildFilterKeyForSubRows","filterKey","String","sortRows","numeric","OVERLAP_GROUP_BY_IDS","MOCK_REPORTING_API_URL","isMockReportingApiEnabled","reportingApiUrlMapping","urls","version","endpointName","OnboardingActionOverlay","isCardOverlay","missingOnboardingRequirements","missingOnboardingRequirement","SingleSelectIcon","selected","iconName","iosApp","androidApp","demoOrgApps","FlexTable","cellClassName","rowClassName","additionalContent","flexTable","rowId","cells","cellId","cell","flex","PageNotice","italics","emphasis","FormLabelWithTooltip","formLabelWithTooltip","mouseEnterDelay","ROLE_MARKETER","ROLE_DEVELOPER","ROLE_OPTIONS","PLATFORM_SDK_OPTIONS","DOCUMENTATION_LINKS","APPS","CHANNELS_OVERVIEW","KNOWLEDGE_BASE","SELF_ATTRIBUTING_NETWORKS","createApp","sanitizeValues","saveUpdatedApp","saveUpdatedAppChannel","fetchChannelSettings","getChannelSettingsUrl","saveCredentialSettings","getCredentialSettingsUrl","fetchCallbackHealth","getCallbackHealthUrl","fetchCvSchema","saveCvSchema","toggleSkanReadiness","updateCallbackGroup","callbackGroupId","getCallbackGroupsUrl","toggleCallbackGroup","createCallbackGroup","fetchS2SCallbacks","getS2SCallbacksUrl","toggleMetaAem","getAdNetworkSettingsUrl","getSkanVersionFromJson","jsonData","hasCoarseConversionValueType","conversionValueType","hasNonZeroPostbackSequenceIndex","postbackSequenceIndex","getEventMappingFromCondition","googleEventNameExists","metaEventNameExists","tiktokEventNameExists","eventMapping","getCvSchemaFromJson","cvSchema","cvSchemaWindows","online","skanVersion","formatConversionValue","rawConversionValue","numberValue","formatPostbackSequenceIndex","rawPostbackSequenceIndex","formatMinMaxRange","rawMinMaxRange","groupedData","groups","rawSchemaType","formatSchemaType","conditions","schemaType","cvSchemaConditions","condition","aggregationType","currency","maxRange","minRange","lockWindowHours","getJsonFromCvSchema","jsonOutput","cvSchemaWindow","initialObject","stringValue","parsedEntry","google","tiktok","AwaitingDataOverlay","message","mtm","NoDataOverlay","overlayText","KPIDrilldown","groupedApiEndpoint","metricDefinitionKeys","statsApiEndpoint","tableHeader","apiFetchFunctionMapping","adRevenueGranular","stats","queryableMetricDefinitionKeys","canQuery","isStatsDataError","isFetchingStatsData","isLoadingStatsData","isGroupedStatsDataError","isFetchingGroupedStatsData","drilldownData","mockableMetricDefinitionKeys","generateStatsDataByDateForMetrics","ReportingDataImg","alt","img","GLOBAL_FILTER_DEBOUNCE_MS","DEFAULT_NAME_HEADER_SORT_TYPE","DEFAULT_NAME_HEADER_TEXT","DEFAULT_COLUMN_SORT_TYPE","DEFAULT_COLUMN_OPTIONS","sortDescFirst","skip","TOTAL_NUM_DEFAULT_PAGES","MIN_NUM_PAGE_NEIGHBORS","MAX_NUM_PAGES_DISPLAYABLE","MORE_PAGES","NEXT_PAGE","PREVIOUS_PAGE","NUM_GROWTH_LEFT_PAGES","NUM_GROWTH_RIGHT_PAGES","RANGE_ADDITIVE","Button","errorText","button","danger","BUTTON_LEVELS","DANGER","success","SUCCESS","warning","WARNING","DEFAULT_ERROR_TEXT","ClickOutsideAlerter","setWrapperRef","bind","handleClickOutside","addEventListener","this","removeEventListener","node","wrapperRef","event","contains","onClickOutside","React","PureComponent","PageHeader","Children","FormTextField","containerClassNameProp","formik","helpComponent","restOfProps","isFocused","setIsFocused","handleFocus","containerWithFocusedInput","extractedInputProps","htmlFor","uniqueId","inputProps","onBlur","onFocus","FormError","connect","DEFAULT_OPTIONS","DEFAULT_ERROR_OPTIONS","assign","DEFAULT_SUCCESS_OPTIONS","msg","toast","displaySuccessMessage","displayInfoMessage","info","METRIC_KEY_TO_STAT_GENERATOR","random","allFraud","assists","blockedClicks","blockedDeviceEvents","clicks","conversionValueAvg","appleConversionValueAvg","conversionValueCount","appleConversionValueCount","conversionValueTotal","appleConversionValueTotal","cpKsessions_1d","cpKsessions_2d","cpKsessions_3d","cpKsessions_7d","cpKsessions_14d","cpKsessions_30d","cpKsessions_90d","cpUser","cpUser_1d","cpUser_2d","cpUser_3d","cpUser_7d","cpUser_14d","cpUser_30d","cpUser_90d","cpc","cpi","cpm","cpr","ctr","cvr","ecpc","ecpm","firstDownloadAssists","firstDownloadCount","appleFirstDownloadCount","firstDownloadCvAvg","appleFirstDownloadCvAvg","firstDownloadCvTotal","appleFirstDownloadCvTotal","fraudPurchases","fraudRevenue","iapArpu","iapRevenue","iapRoi","iapRpu","iapRpu_0d","impressions","installs","installsDifferencePct","lifetime","pubArpu","pubRev","pubrev_0d","pubrev_1d","pubrev_2d","pubrev_4d","pubrev_5d","pubrev_6d","pubrev_7d","pubrev_14d","pubrev_30d","pubrev_60d","pubrev_90d","pubrev_120d","pubRevenue","pubRoi","pubRpu","redownloadAssists","redownloadCount","appleRedownloadCount","redownloadCvAvg","appleRedownloadCvAvg","redownloadCvTotal","appleRedownloadCvTotal","retention","retention_0d","retention_1d","retention_2d","retention_3d","retention_7d","retention_14d","retention_30d","retention_90d","revenues","roas_0d","roas_1d","roas_2d","roas_3d","roas_7d","roas_14d","roas_30d","roas_90d","roi_0d","roi_1d","roi_2d","roi_3d","roi_7d","roi_14d","roi_30d","roi_90d","rpu_0d","rpu_1d","rpu_2d","rpu_3d","rpu_7d","rpu_14d","rpu_30d","rpu_90d","sessions","sessions_0d","sessionsLtpu","spend","skanSpend","tcpi","totalArpu","totalProfitMargin","totalRev","totalRevenue","totalRev_0d","totalRev_1d","totalRev_3d","totalRev_7d","totalRev_90d","totalRoas","totalRoi","totalRpu","trackedClicks","trackedCvr","trackedImpressions","trackedInstalls","clicksDifference","clicksDifferencePct","installsDifference","adMediationRpu","adMediationRevenue","adMediationArpu","avgDau","avgWau","avgMau","totalAdMediationRevenue","totalAdMediationRpu","totalAdMediationArpu","totalAdMediationRoi","totalAdMediationRoas","totalAdMediationProfitMargin","trackedReinstalls","generateRandomStatForMetric","statGeneratorFn","isFunction","generateRandomStatsForMetrics","getDateRange","daysToSub","daysAgo","flatMap","metricsToMock","fetchMockData","resolve","setTimeout","take","fetchMockConversionValueDataForApp","conversionValueCountDistribution","conversionValueData","processAllMergeableCampaigns","tracked","reportedCampaigns","reported","reportedInstalls","trackedCampaigns","getAppByUrl","urlSearch","getChannelByUrl","getLookbackWindowByUrl","lookbackWindows","lookbackWindow","ChartFailed","linkContainer","MultiSelectIcon","current","MIN_ROW_LENGTH_RENDER_COUNT","DEFAULT_FLEX","HEADER_EVENT","HEADER_NAME","HEADER_STATUS","HEADER_USER_FILTER","COLUMN_HEADER_FLEX_MAPPING","DEFAULT_CELL_WIDTH","NON_METRIC_CELL_WIDTH_MAPPING","adNetwork","INITIAL_STATE_SORT_BY","RESIZE_TIMEOUT_IN_MS","EMPTY_HEADER","DEFAULT_PAGE_SIZE","DEFAULT_PAGE_INDEX","CardHeader","isActive","cardHeader","activeCardHeader","showFormula","showLink","rel","MetricTooltip","TOOLTIP_DELAY_IN_S","overlayClassName","controlBackgroundColor","border","controlBorder","dropdownIndicatorColor","menuList","menuListScrollbarBackgroundColor","menuListScrollbarBorder","menuListScrollbarBorderRadius","height","menuListScrollbarDimensions","placeholderPadding","singleValueColor","singleValueFontWeight","singleValuePadding","CustomOption","FormDropdown","hasSelectedAllVisibleItems","selectedKeys","visibleItems","visibleKeys","getNumberAsPercentage","sanitizePercentage","numValue","getPercentageByValue","includesDecimalPoint","PERCENTAGE_MULTIPLIER","PERCENTAGE_PRECISION","getLevelByValueInThreshold","THRESHOLD_SUCCESS","LEVEL_SUCCESS","THRESHOLD_WARNING","LEVEL_WARNING","LEVEL_DANGER","validDates","startDateGiven","startDateValue","endDateValue","hasValidStartDate","isFinite","hasValidEndDate","validDateRange","calculateRowRange","pageIndex","pageSize","rowCount","startIndex","min","getAllRowsText","OVERLAY_OPAQUENESS","FULL","MORE","NONE","attributionProviderId","storeUrl","storeName","destinationUrl","tenjinSdk","getEventCallbacksUrl","getCustomCallbackCreationUrl","getCustomCallbackUrl","callbackId","Icon","cardOverlay","overlayInner","background","cardBackground","ReportingDataNameDisplay","forwardRef","fieldType","iconProp","nameProp","nameClassName","platformClassName","shouldTooltipName","tooltipPlacement","isGroupingByCountry","countryContent","getCountryContent","isGroupingByPlatform","platformContent","getPlatformContent","unavailableContent","getUnavailableContent","getPlatformIcon","flag","Search","onSearchTextChange","placeholderText","setSearchText","alwaysShowClearIcon","inputClassName","defaultModalStyles","modalBackgroundColor","modalBorderRadius","bottom","modalBottom","boxShadow","modalBoxShadow","left","modalLeft","marginRight","modalMarginRight","maxWidth","modalMaxWidth","modalPadding","right","modalRight","modalTop","transform","modalTransform","modalWidth","overlayBackgroundColor","AppIntegrationsContext","AppIntegrationsDispatchContext","isAppChannelCustomSettings","replaceItemInList","itemList","newItem","propTypes","reducers","UPDATE_CHANNEL_OVERRIDE_ON","appChannelOverrideOn","UPDATE_CURRENT_APP","updatedApp","appChannels","hasAppChannelCustomSettings","UPDATE_CURRENT_APP_CHANNEL","updatedAppChannel","UPDATE_CURRENT_CHANNEL","updatedChannel","appIntegrationReducer","handleAction","AppIntegrationsProvider","currentTab","useAppIntegrationState","useAppIntegrationDispatch","countryAlpha2","countryInfo","emojiFlag","FIELD_TYPE_TO_DISPLAY_NAME","convertFieldTypeToName","camelCasedFieldType","AsyncButton","errorContent","isErrorProp","isLoadingProp","isSuccessProp","loadingContent","onError","onSuccess","resetOnSuccess","successContent","setIsError","setIsLoading","setIsSuccess","RESET_DURATION_MS","isLoadingState","isSuccessState","asyncButton","isHoverable","SearchInput","clearIconClassNameProp","clearIconClassName","displaySearchIcon","inputClassNameProp","withSearchIcon","showClearIcon","clearIcon","inputWrapper","searchIcon","FormInput","classNameStatic","isStatic","messageContent","formInputStatic","TooltipWrapper","Tooltip","formInputContainer","formInput","DASHBOARD_ADMIN_AD_NETWORK_URL","DASHBOARD_ADMIN_ORGANIZATION_URL","DASHBOARD_ADMIN_USER_URL","DASHBOARD_ADMIN_AD_ACCOUNT_URL","REPORT_NEVER_UPDATED","REPORT_FAILED_TO_ADD","SORT_NAME_VALUE_MAPPING","adAccount","organization","user","getNavigationOptions","handleChangeAppRedirect","DEFAULT_EXPORT_GRANULARITY","REQUIRED_TEXT","INVALID_FORMAT_TEXT","OverlayText","SkeletonRows","numRows","skeletonClassName","ReportingContent","Header","aria-hidden","closeIcon","SelectAll","isAllSelected","itemIds","labelText","SelectedItemCountInfo","selectedItemCountInfo","selectedItemCountMessage","SelectedItems","itemTitle","maxDisplayCount","onClickSelectedItem","selectedItemsCount","selectedItemsInfo","isNoneSelected","isSomeSelected","isWithinDisplayLimit","isMaxDisplayLimit","showNoneSelected","items","icons","platformIconUrl","buildLabelTextFromMultiSelected","humanizedSelectedTypeStr","selectable","CHART_SKELETON_HEIGHT","PLOT_OPTIONS","column","animation","dataLabels","X_AXIS_OPTIONS","labels","allowOverlap","formatter","step","tickInterval","tickLength","Y_AXIS_OPTIONS","isInteger","Highcharts","numberFormat","TOOLTIP_OPTIONS","shadow","shared","useHTML","CHART_RENDERER_DELAY_MS","ERROR_TEXT","UNSAVED_CHANGES","PLATFORM_LABELS","MOUSE_LEAVE_DELAY","INPUT_REF_FOCUS_TIMEOUT","ACTION_SELECT_OPTION","ACTION_DESELECT_OPTION","ACTION_INPUT_CHANGE","ACTION_MENU_CLOSE","PLACEHOLDER_INPUT","AsyncIconTextButton","displayIcon","errorIcon","loadingIcon","loadingText","successIcon","successText","isSpinner","ICON_SPINNER","asyncIconTextButton","ANIMATION_SPIN","Toggle","isOn","isToggling","onToggle","canToggle","toggle","handle","formLabel","childrenCount","Fragment","renderFormLabel","renderPageLabel","CONVERSION_VALUE_QUERY_OVERRIDES","VALUE_RANGE_OPTIONS","minXValue","DEFAULT_VALUE_RANGE","VALUE_RANGE_MAPPING","Set","DEFAULT_NAME_CELL_WIDTH","EXTENDED_NAME_CELL_WIDTH","NAME_COLUMN_MODE_EXTENDED","formatCallbackGroupTemplate","getSortValueByName","getSortedRowsByProperty","baseRows","property","CARD_PANEL_TITLE","DROPDOWN_LABEL","DROPDOWN_PLACEHOLDER","MOVE_CAMPAIGN_BUTTON_TEXT","MODAL_CONFIRMATION_TEXT","MODAL_TEXT","MODAL_NOTICE","Badge","badge","OverlaySubtext","ConfirmationModalContent","cancelText","confirmText","prompt","onCancel","onConfirm","confirmationModal","cancelButton","confirmButton","TableContainer","table","TableData","dataType","isFirstColumn","isAlpha","isNumeric","FakeRows","skeleton","TableHeader","TableRow","isExpanded","isEvenIndex","isTopLevelRow","expanded","even","odd","PopoutLink","popoutLink","createFuseList","Fuse","FUSE_OPTIONS","ChannelsFilter","onCloseClick","onLabelClick","selectedChannels","selectedGroupBy","channelsByContext","searchableList","setSearchableList","visibleChannels","setVisibleChannels","useWindowDimensions","selectedChannelsInfo","handleListItemClick","clickedChannelId","isGroupingBySiteId","hasMultipleChannels","ListItemRow","MAX_DISPLAY_COUNT","newSearchText","channelsList","CHANNEL_LIST_HEIGHT_OFFSET","itemCount","itemSize","CHANNEL_LIST_ITEM_SIZE","Collapser","collapser","DateFilter","selectedEndDate","selectedStartDate","isVoidedEndDate","selectedRanges","setSelectedRanges","staticRanges","datePicker","direction","maxDate","minDate","months","moveRangeOnFirstSelection","changedEndDate","changedStartDate","rangeColors","ranges","showSelectionPreview","distance","minMatchCharLength","shouldSort","threshold","FeatureFlagsProvider","RadioButton","isChecked","labelClassName","onKeyUp","checked","fill","preserveAspectRatio","viewBox","radioOutline","cx","cy","r","strokeWidth","radioDot","ReportingDataDisplay","hideTooltip","hideValue","truncate","valueClassName","showValue","AmazonIcon","AndroidIcon","AndroidOtherIcon","IosIcon","windows","WindowsIcon","UnknownIcon","getDefaultOnboardingPopupStatus","userSettings","BackLink","Alert","DEFAULT_VISIBILITY","setIsVisible","alert","AlertList","alertContainerClassName","alerts","alertList","remainingProps","BoldLink","boldLink","customChannelSelectorStyles","controlColor","controlPaddingTop","dropdownIndicatorPaddingTop","indicatorsContainer","paddingRight","indicatorsContainerPaddingRight","placeholderFontFamily","placeholderFontStyle","ChannelSelector","selectedChannelId","sortedChannels","orderBy","channelSelector","getOptionLabel","optionLabel","getOptionValue","LABEL_CHANNEL_SELECTOR","PLACEHOLDER_CHANNEL_SELECTOR","filterOption","createFilter","FILTER_CONFIG","Footer","links","cc","getFullYear","LoadingBar","progressLevel","progressClassName","completeLevel","ONE_HUNDRED_PERCENT","loadingBar","completed","ONE_HUNDRED","ModalHeaderWithClose","onClickClose","modalHeaderWithClose","DataRowExpander","expandIconClassNameProp","expandIconClassName","isHidden","showDetailsMessage","expandIcon","loadingIconColor","css","loadingIconMarginRight","loadingIconMarginLeft","loadingIconSize","PaginatorItem","pageNumber","handleKeyDown","getValidValueRangeOptions","allFetchedConversionValueHistogramData","highestConversionValue","valueRange","getValidComparisonSelectorOptions","groupedSummaryTableData","comparisonOptions","getComparisonSelectorOptionLabel","getComparisonSelectorOptionLabelByName","ChartSkeleton","area","marker","radius","symbol","stacking","connectNulls","X_DAY_RANGES","PlatformFilter","ToolbarButton","toolbarButton","FLOAT_PRECISION","ESCAPE_KEYCODE","ERROR_MESSAGE","AttributionRow","attributionType","hideProbabilistic","windowType","AttributionTable","adNetworkName","mainContainer","typeLabel","levelLabel","Select","handleSave","toggleMenu","isMenuOpen","onMenuToggle","setState","onSave","allSelectLabel","alphabetize","menuHeader","menuItemRenderer","multiple","saveOnSelect","searchPlaceholder","selectMenuClassName","selectButtonClassName","selectButtonContainerClassName","selectButtonIconClassName","selectButtonLabel","selectButtonLabelClassName","selectButtonValue","selectButtonValueClassName","selectButtonValueRenderer","selectedItem","valueRenderer","renderSelectButton","renderMenu","Component","getQueryURLForDataExporterV1","encodedQuery","hasSearch","encodeURIComponent","UTC_TIME_ZONE","FIVE_SECONDS","NUM_YEARS_FOR_MIN_DATE","NUM_VISIBLE_MONTHS_IN_PICKER","APP_LIMITED_READONLY_ROLE","QUERY_REFRESH_INTERVAL","QUERY_RETRY_COUNT","getSelectableMetrics","isVisibleInExporter","isNotHidden","SOURCE_API","SOURCE_ILRD","URL_PARAM_SOURCE","LINK_UPGRADE_NOW","MAX_PTI_COUNT","PLAN_DETAILS","STRIPE_BILLING_URL","STRIPE_CHANGE_PLAN_URL","DASHBOARD_ADMIN_AD_NETWORKS_URL","DASHBOARD_ADMIN_CALLBACK_TEMPLATES_URL","DASHBOARD_ADMIN_CALLBACK_GROUP_TEMPLATES_PATH","customAppSelectorStyles","AppSelector","selectedAppId","selectedApp","appSelector","LABEL_APP_SELECTOR","PLACEHOLDER_APP_SELECTOR","Chip","btnClassNameProp","btnClassName","renderIcon","cloneElement","btn","btnSelected","ripples","ArrowIcon","innerListItemIcon","selectedInnerListItemIcon","NoDataRow","KPICards","getKPICardsMetricDefinitions","summaryDataResponse","isSummaryDataError","isFetchingSummaryData","isLoadingSummaryData","refetchSummaryData","groupedStatsDataResponse","isLoadingGroupedStatsData","refetchGroupedStatsData","isPullingSummaryData","isPullingGroupedStatsData","mockedMetricDefinitionKeys","mockedGroupedStatsDataByMetric","summaryDataByMetric","TooltipPoint","point","circle","ReportingPageHeader","isSticky","setIsSticky","handleScroll","headerDistanceFromScrollPosition","getBoundingClientRect","stickyConditionOffset","stickyTopOffset","wrapperClassName","sticky","childrenWrapperClassName","stickyWrapper","dataExporterBtnClassName","stickyBtn","canDisplayDataExporterButton","headerText","convertReportPageToHeader","SummaryBlock","SourceToggle","upgradeNowTooltipContent","adMediationTooltipContent","apiTooltipContent","sourceToggleContainer","sourceToggle","isPrimary","onSwitch","searchParams","newSource","newUrl","isAdMediationDisabled","LoadingOverlay","iconColor","override","HeaderWithHelpText","headerWithHelpText","helpText","LineTabNavigation","lineTabNavigation","ReportingSidebar","reportingFiltersDispatch","drilldownRulesDispatch","currentOpenPane","buildStateFromQueryParams","currentApps","currentChannels","currentCountries","currentGranularity","currentGroupBy","unappliedApps","unappliedChannels","unappliedCountries","unappliedEndDate","unappliedGranularity","unappliedGroupBy","unappliedStartDate","allCountryIds","getFilterChanges","canApplyChanges","hasAppsFilterChanges","hasChannelsFilterChanges","hasCountriesFilterChanges","hasDateFilterChanges","hasGranularityFilterChanges","hasGroupByFilterChanges","togglePaneFor","closeCurrentPane","sidebar","sidebarCollapsed","sidebarContent","newCountries","selectedCountries","selectedGranularity","canApply","urlSearchParams","urlParams","buildQueryParamsFromFilterChanges","auxiliaryUrlParams","fullUrlParams","updatedUrl","ApplyBtn","AppsFilter","visibleApps","setVisibleApps","selectedAppsInfo","clickedAppId","appsList","APP_LIST_HEIGHT_OFFSET","APP_LIST_ITEM_SIZE","Title","QuickSelectorBtn","CountriesFilter","visibleCountries","setVisibleCountries","selectedCountriesInfo","selectedCountry","clickedCountryId","countryId","selectedItems","countriesList","COUNTRY_LIST_HEIGHT_OFFSET","COUNTRY_LIST_ITEM_SIZE","ToggleButton","data-toggle","ShowCommissionValue","listItems","skAppClaimText","fixedList","getTopLevelRowsById","topLevelRowsById","isSorted","isSortedDesc","sortType","sortIconClassName","sortIcon","getSortIcon","FormHelpPopover","popoverProps","POPOVER_PROPS_LIST","popoverClassName","popoverTemplate","iconContainer","contentClassName","delay","html","onHidden","onHide","onInserted","onShow","onShown","sanitize","sanitizeFn","selector","template","viewport","FormWrapper","useFormikContext","form","formSubmitting","FormSubmitButton","ReportTypeListItem","setSize","handleResize","offsetHeight","offsetWidth","isNewMetric","MAX_VISIBLE_DATA_SERIES","FormChip","getFieldMeta","fieldValue","prevFieldValue","getWindowDimensions","innerWidth","innerHeight","windowDimensions","setWindowDimensions","useFlashMessagesHook","querySelectorAll","$flashMessage","classList","add","PREDEFINED_LOOKBACK_WINDOWS","isEqualFloat","formatDate","dateStr","toLocaleDateString","getAttributionTabUrl","actionId","basePath","getColumnsForSelectedMetrics","selectedMetrics","Cell","metricCell","selectedMetric","metricHeader","accessor","getNonMetricHeaderVisibility","_includesSomeItemCombination","columnKeys","nameColumnIsNotRedundant","showAdNetwork","showApp","showCountry","showName","showPlatform","nameCell","countryHeader","countryIcon","countryName","countryCell","adNetworkHeader","adNetworkIconUrl","adNetworkCell","appHeader","appIconUrl","platformHeader","platformCell","getDefaultHeaders","showDate","dateHeader","dateCell","getDefaultValue","selectedSavedReport","buildSavedReportUrl","getGranularitiesByTotalsOption","isUsingTotals","HIDDEN_INPUT_NAME","HIDDEN_INPUT_ID","ELEMENT_ID_EVENT_DEFINITION","ELEMENT_ID_PLATFORM","ELEMENT_ID_TEMPLATEABLE_ID","fetchAllMergeableCampaigns","mergeCampaigns","reportedCampaignId","trackedCampaignId","moveCampaign","destinationId","dashboardCampaignsMoveUrl","Breadcrumb","paths","ButtonTabNavigation","buttonTabNavigation","tabButton","Table","Switch","isSwitching","canSwitch","isSecondary","CopyButton","copiedText","textToCopy","onCopy","isCopied","setIsCopied","COPY_TO_CLIPBOARD_SUCCESS_MS","copyButton","PageLayout","PercentageLabel","percentageLabel","SyncButton","syncButton","SelectMenuItem","checkboxClassName","onCheck","onUncheck","isHovered","setIsHovered","handleMouseEnter","handleMouseLeave","renderContent","renderCheckbox","tooltipTitle","renderSelectableRow","selectableRowClassName","activeRow","hoveredRow","onMouseEnter","onMouseLeave","PageContainer","hasSidebar","containerStylesClassName","containerWithSidebar","draggable","AttributionDetails","useUpdateAttributionSettings","updateAppAttributionWindow","updateAppChannelAttributionWindow","isAppChannelSettings","attributionWindow","timeParsed","isEditing","setIsEditing","timeType","setTimeType","timeValue","setTimeValue","timeLabel","setTimeLabel","windowActive","setWindowActive","toggleEnabled","setToggleEnabled","saveTriggered","setSaveTriggered","handleClickEnableEdit","handleDisableEdit","handleTimeTypeChange","e","handleTimeValueChange","resetSettings","handleWindowSave","isProbablisticSettingsInactive","isAppChannelEditingDisabled","showToggleButton","showOverrideWarning","WindowEditDisabled","settingOff","AttributionWindowCell","onEditCancel","onEnableEdit","onTimeTypeChange","onTimeValueChange","onWindowSave","AttributionWindowCellOverrideNotification","overrideIcon","AttributionWindowCellOverrideMessage","overrideMessage","tableRow","columnItem","toggleOn","currentTarget","getAttribute","customUserFilterStyles","existingStyles","userFilterInputWidth","_","controlDisabledBackgroundColor","buildCallbacksTableRow","rowIndex","activatable","install","onChangeCallbackGroup","onClickEditCallback","onToggleCallbackGroup","userFilterEditable","headerIndex","CallbacksTable","eventOptions","isEventOptionsVisible","isMissingCallbackGroupTemplates","onClickAddEvent","setIsEventOptionsVisible","showAdvancedCallbacks","setShowAdvancedCallbacks","showTable","Array","from","skeletonWidth","skeletonHeight","onVisibleChange","prefixCls","onClickEventOption","destroyTooltipOnHide","align","offset","eventOptionsPopupOffsetX","eventOptionsPopupOffsetY","addEventsButton","buildFieldElements","associatedGroups","associated_groups","isEditingCredentials","setCredentials","errorMessage","CredentialsCard","callbackInstructions","fields","isSaving","onClickCancel","onClickEdit","onClickSave","showEditButton","showFooter","CredentialsCardFooter","cardPanelFooter","saveButton","CredentialsCardActions","dangerouslySetInnerHTML","__html","customFormDropdownStyles","caretColor","paddingLeft","singleValuePaddingLeft","menuRight","menuWidth","maxHeight","menuListMaxHeight","overflowX","placeholderHeight","overflow","formDropdownPadding","formDropdownValueContainerWidth","buildEditCallbackModalRow","eventEditable","eventDefinitions","onChangeEditedCallbackDraft","macroValues","filteredMacros","hasMoreThanThreeRowItems","cellItemClass","cellItem","threeItemRow","callbackModalInputClass","callbackModalInput","allowedValues","allowed_values","allowedValue","EditCallbackModal","clearError","instructions","isEditedCallbackSavable","onClickSaveEditedCallback","selectedCallbackName","errorList","setErrorList","errorCounter","setErrorCounter","handleClickClose","editedCallback","currentErrorList","currentErrorCounter","editCallbackModal","buildHealthTableRow","HealthTable","isOverlay","fixedOverlayContainer","fixedHeight","MIN_CALLBACK_HEALTH_ROWS","buildNewEventModalRow","userFilterDefault","eventDefinitionOptions","onChangeEventDraft","isAdvancedGroup","filteredRequiredMacros","eventModalInputClass","eventModalInput","isEventDefinitionUneditable","eventDefinitionValue","userFilterValue","NewEventModal","isNewEventSavable","onClickSaveNewEvent","selectedEventName","newEvent","newEventModal","buildS2SCallbacksTableRow","onClickEditCustomCallback","S2SCallbacksTable","onClickAddCustomCallback","addCustomCallbacksButton","KeyRow","apiKeyProp","apiKey","canRevoke","integrated","isOrgKey","lastSeenDate","onRemoveKeyRow","onShowRevokeModal","baseApiKeyURL","revokeApiKeyURL","isNew","setName","nameRef","handleEnableEdit","handleChangeName","api_key","revokeSdkKey","onKeyUpName","keyCode","API_KEY_NAME_MAX_LENGTH","onKeyPress","token","isOrgKeyParam","wholeNumber","UNLINKABLE_IDS","ENTITY_TYPES_TO_LINK_DETAILS","baseHref","LINKABLE_ENTITY_TYPES","filterButtonValue","appRenderer","renderer","channelRenderer","platformRenderer","renderPlatformsFilter","onPlatformsSave","platforms","selectedPlatforms","renderAppsFilter","onAppsSave","selectedAppIds","renderChannelsFilter","onChannelsSave","selectedChannelIds","renderLookbackWindowFilter","onLookbackWindowSave","selectedLookbackWindow","DEFAULT","hasFilterChangesFor","applied","unapplied","xor","hasUnappliedApps","hasUnappliedChannels","hasUnappliedCountries","append","CAMPAIGN_ROW_SKELETON_HEIGHT","currentMetrics","unappliedMetrics","hasMetricsFilterChanges","canUseSavedReport","selectedReport","snakeCasedKeys","METRIC_LIST_HEIGHT_OFFSET","METRIC_LIST_ITEM_SIZE","handleUnauthorizedResponse","handleConflictResponse","handleUnprocessableEntityResponse","pointer","source","pointerToField","handleNetworkErrorResponse","transformMetricColumnsFromServer","metricColumnsByReportObj","AsyncActionButton","hideOnSuccess","successLevel","levelClass","ConversionValueHistogram","validComparisonSelectorOptions","defaultComparison","setSelectedComparison","conversionValueHistogramData","setConversionValueHistogramData","setValueRange","isBarChart","setIsBarChart","fetchConversionValueHistogramData","validValueRangeOptions","flattenedConversionValueHistogramData","valueRangeOptions","onChangeValueRange","updatedValueRange","onChangeComparison","updatedComparison","chartContainer","allData","GroupingTitle","HistogramActions","customStylesObj","comparisonSelectorMarginRight","loadingIndicator","multiValue","ComparisonSelector","multiLabelColorMappingById","multiValueLabel","alignItems","multiValueRemove","shouldHideRemoveButton","MAX_SELECTION_COUNT","isMulti","isOptionDisabled","MIN_SELECTION_COUNT","MultiValueLabel","rest","multiValueLabelBlock","multiValueLabelText","creatives","MissingRequirementBtn","amplitudeInstance","logEvent","buttonHref","buttonText","MissingRequirementsMessage","missingRequirementsSentencesList","missingRequirementsMessage","ColumnEditorPane","selectableMetrics","hasSelectedMetricsChanged","setHasSelectedMetricsChanged","currentSelectableMetrics","setCurrentSelectableMetrics","currentSelectedMetrics","setCurrentSelectedMetrics","useDeepCompareEffect","updatedSelectableMetrics","currentSelectedMetricIds","selectedMetricsWithoutCustomMetrics","handleClickCancel","groupedSummaryTableMetrics","visibleGroupedSummaryTableMetrics","availableMetrics","differenceBy","inner","onChangeSearch","onClearSearch","onChangeSelectedSortOrder","updatedSelectedMetrics","originalOrder","onClickAvailable","onClickSelected","onClickApply","ApplyMetricsButton","innerSaveBtn","activeInnerSaveBtn","buttonClass","innerFilter","innerFilterHeader","innerFilterInput","innerFilterClear","innerHeader","ItemList","selectedCategory","setSelectedCategory","availableMetricsFilteredByCategory","innerList","innerListScrollableWrapper","innerListItems","setList","onClickCategory","AvailableItem","innerListItem","innerListItemContent","newItemLabel","CategorySelector","showCategories","setShowCategories","categorySelector","categorySelectorIsOpen","metricCategoriesExpander","currentShowCategories","metricCategoryTooltip","metricCategory","handleClickCategory","metricCategoryLabel","metricCategoryCount","SelectedItem","selectedInnerListItem","DragIcon","dragIcon","groupName","drilldownRules","tableRef","tableSize","tableWidth","tableInstance","useTable","autoResetExpanded","autoResetGlobalFilter","autoResetSortBy","disableMultiSort","getSubRows","useFlexLayout","useGlobalFilter","useSortBy","useExpanded","useSticky","toggleAllRowsExpanded","toggleAllExpanded","doneExpandingAll","TableInstance","getTableBodyProps","getTableProps","headerGroups","prepareRow","hasNoRowsOfData","shouldShowTableData","hasNoSearchDataToDisplay","stickyHeader","headerGroup","getHeaderGroupProps","isNameColumn","tableHeaderClassName","compactHeader","hideReactTableTooltips","sortByProps","getSortByToggleProps","invokeRowClick","toggleRowExpandedProps","getToggleRowExpandedProps","allInvokedRowClicks","getHeaderProps","render","body","skeletonRow","indexOf","getRowProps","tdClassName","depthOne","depthTwo","depthThree","depthFour","paddingForSortIcon","getCellProps","noSearchMatch","DataRowExternalLink","isLinkableFieldType","getLinkDetailsByTableRow","shouldRenderLinkPlaceholder","stopPropagation","TableActions","canShowCSVDownloadButton","DownloadCSVButtonClient","filename","EditColumnsButton","GlobalFilter","useAsyncDebounce","TableViewModeButtons","compressBtnClassName","DEFAULT_BTN_CLASS_NAME","expandBtnClassName","ToggleNameExtendedButton","KPICard","renderKPIData","kpiDataValue","valueSkeleton","valueIconClassName","kpiDataNoValue","kpiDataContainer","kpiDataLabel","isCardOnTheLeft","isCardOnTheRight","card","leftCard","rightCard","hasNoGroupedStatsData","hasFailedLoadingData","cardContent","KPICardChart","useHighchartsReflowEffect","useDeepCompareMemo","buildSeries","pointFormatter","renderToString","xAxis","getXAxisMinMax","lineWidth","minorGridLineWidth","minorTickLength","plotOptions","gridLineColor","headerFormat","xDateFormat","DataExporterButton","report_type","btnWrapper","NoCustomEventsPage","provided","CustomEventsSelector","customEvents","currentCustomEventName","onMenuScrollToBottom","onChangeSearchInput","activeCustomEventSearch","setActiveCustomEventSearch","handleInputChange","debounce","newInputValue","CUSTOM_EVENTS_SEARCH_DEBOUNCE_MS","searchStrProp","labelProp","toLocaleLowerCase","searchStr","group","formatGroupLabel","handleGroupLabelFormat","newCustomEvent","getUrlWithCustomEventName","onInputChange","Purchasers","SUMMARY_BLOCKS","KPITabs","mockableGroupedStatsMetricDefinitions","queryableGroupedStatsMetricDefinitions","mockableSummaryMetricDefinitions","queryableSummaryMetricDefinitions","groupedQueriesResult","summaryQueriesResult","refetchData","isSuccessGroupedStatsData","mockedGroupedStatsMetricDefinitionKeys","mockedSummaryMetricDefinitionKeys","KPITabsChart","activeMetricDefinition","visibleSeriesIds","yAxisLabel","isDisplayingXDayData","xDayRange","setXDayRange","buildXAxis","isXDay","plotBands","currentXDayRange","newXDayRange","XDaySelector","SummaryBlocks","TabButtons","isActiveTab","tabClassName","tab","activeBottomBorder","containerZIndex","multiValueBgColor","multiValueBorderColor","VisibleDataSelector","maxSelectable","isShowingSelector","setIsShowingSelector","selectedIds","formatOptionLabel","colorBlock","groupByName","Menu","optionSelectedLength","getValue","maxOption","toggleSelectorVisibilityBtn","backspaceRemovesValue","closeMenuOnSelect","HelpText","PurchaseXDay","RetentionXDay","fraud","Fraud","METRIC_DEFINITION_KEYS","overview","Retention","revenue","Revenue","TotalLTV","getSummaryBlocks","getTabs","TotalLTVPerUser","TotalRevenue","TotalRevenuePerDAU","roi","XDayROI","LifetimeROI","ROI","Cost","Spend","usage","Usage","UsageXDay","CostPerRetainedUser","CostPer1000Sessions","LifetimeCost","ChartTypeButtons","barChartBtnClassName","chartTypeButton","splineChartBtnClassName","chartTypeButtons","ValueRangeSelector","DelayedChartRenderer","isShown","setIsShown","ConversionValueHistogramChart","dataIndex","selectedComparisonObject","getMinXByValueRange","getTooltipOptionsByGroupBy","AppDestinationUrlFormField","Modal","isShowingSwitchOrgs","setIsShowingSwitchOrgs","isShowingImpersonate","setIsShowingImpersonate","modal","admin","Admin","isActingAsUser","Analyze","canViewUserAcquisition","canViewAdMonetization","canViewDataExporter","Automate","canViewDataVaultCredentials","canViewAccessTokens","Configure","canViewApps","canViewCampaigns","canViewChannels","Diagnose","canViewHealth","canViewCampaignBuckets","canViewSdkLiveData","canViewTestDevices","canViewStatusUpdates","canViewCampaignMerge","unlinkedCampaignsAndAdPlacementsCount","useHealthState","marginLeft","Impersonate","buildImpersonateLink","org","user_id","impersonatableOrgs","data-method","MyAccount","canViewGdprRequests","canViewManageOrganization","canViewManageUser","canViewMonthlyEvents","signedInAs","organizationName","ptiMeter","PtiMeter","allowanceInfo","ptiLoadingBar","ptiProgress","attributionsInfo","SignOutLink","Notifications","canViewAlertDefinitions","canViewNotifications","Support","canViewSupport","Intercom","SwitchOrgs","buildSwitchingOrgLink","activeOrg","isFirstCard","isMiddleCard","isLastCard","isTwoCardLayout","cardCount","dataNoValue","dataLabel","firstCard","middleCard","lastCard","hasNoSummaryData","RoleContentMarketer","onClickWithTracking","roleContent","RoleContentDeveloper","onChangePlatformSDK","platformSDKOptions","selectedPlatformSDK","onChangeSelectedRole","onClosePopup","roleOptions","selectedRole","setSelectedPlatformSDK","hideButton","roleContainer","roleTitle","updatedPlatformSDK","ReportingDataDateDisplay","VisibilityIcon","iconTurned","AppsListItem","Subtitle","isActivePlatformFilter","PlatformFilters","appIdsByPlatform","appIdsByPlatformObj","appPlatform","hasSelectedApps","iosFilterSelected","androidFilterSelected","androidOtherFilterSelected","amazonFilterSelected","hasIcons","ChannelsListItem","imgDisabled","channelName","PaidFilter","paidChannelIds","NON_PAID_CHANNEL_IDS","hasSelectedChannels","paidFilterSelected","CountriesListItem","GranularityFilter","gran","GranularityListItem","GroupByFilter","GroupByListItem","isDisabledSiteId","isDisabledCreative","TargetingTags","targetingTag","Toolbar","toolbar","AdMonetizationPage","PublisherPage","AdRevenue","EffectiveCost","CampaignFilters","selectedLookback","onChangeSelectedApp","onChangeSelectedChannel","onChangeSelectedLookback","campaignFilters","StandaloneCampaignMergeTool","closeModal","isMergeable","isModalOpen","isEmptyState","isMerging","onCancelMerge","onChangeSearchText","onClickMergeCampaigns","onClickReportedCampaign","onClickTrackedCampaign","onConfirmMerge","selectedReportedCampaign","selectedTrackedCampaign","standaloneCampaignMergeTool","titleSection","subHeading","inputContainer","onRequestClose","contentLabel","emptyStateMessage","emptyState","missingCampaignsMessage","CampaignColumns","isTrackedCampaignSelected","isReportedCampaignSelected","canClickMerge","showSelectionPrompt","isMissingTrackedCampaigns","isMissingReportedCampaigns","campaignsColumns","campaignType","promptIsSelected","campaignsList","campaignsRow","dataRow","mergeCampaignsButton","SdkKeyRow","handleDeleteRow","sdkKey","setIsDisabled","handleDeleteRowError","sdkKeyId","tdSdkKey","tdIcon","orgIcon","tdDate","getSdkKeyUpdatedAtDate","getLastSeenDateString","colSpan","AppDetail","appAdminUrl","DASHBOARD_ADMIN_APPS_URL","appUrl","appDetail","appDetailElement","EnableSdkKeyButton","enableUrl","API_KEY_BASE_URL","isUpdating","setIsUpdating","AppStoreCommission","allowedDeductionValues","defaultDeduction","revenueDeduction","deductionRecord","setDeductionRecord","initialDeductionValue","initialEndDate","initialStartDate","setDeduction","errorMsg","setErrorMsg","setStartDate","setEndDate","cancelEdit","handleClickSave","handleKeyUp","showWarning","revertWarningClassName","warningRow","showCurrentRevShare","subtitleRow","inputRow","commission","commissionCell","datesCell","dates","CancelButton","EditButton","SaveButton","CommissionValue","EditCommissionValueSelector","allowedDeduction","EditCommissionValueInput","defaultPercentValue","percentInputContainer","MIN_DEDUCTION_PERCENT","MAX_DEDUCTION_PERCENT","sanitizedValue","percentSymbol","DateValue","EditDateValue","initialInputType","endDateInputType","setEndDateInputType","minStartDate","maxStartDate","minEndDate","seperator","ShowDateValue","TabNavigation","appsProp","isAsync","setOptions","appIntegrationDispatch","AttributionTab","resetAppChannelAttributionWindow","setDefaultAppChannelAttributionWindow","handleToggleOverideAppSettings","channelsFilteredByAdSpend","getChannelsFilteredByAdSpend","supportCustomAttributionWindows","customAttributionWindows","AttributionPanel","CustomAttributionWindowNotSupportedMessage","AttributionPanelTitle","divider","AttributionWindowSupported","titleWithControl","AttributionWindowNotSupported","AdNetworkInstructions","AppChannelInstructions","AppInstructions","LabelDivider","heading","overrideIconHeader","WindowEditEnabled","WindowEditMode","timeTypeOptions","SelectFormTimeType","select","getTimeTypeLabel","SelectFormTimeValue","time","HelpTextHeader","EmptyStateOverlay","emptyStateOverlay","MissingIntegrationOverlay","MissingCredentialsOverlay","MissingCallbacksOverlay","CallbackHealthEmptyStateOverlay","S2SCallbacksEmptyStateOverlay","CallbacksTab","isAdmin","useParams","filteredChannels","callbackRequired","setSelectedChannel","setIsEditingCredentials","savingState","setSavingState","loadingState","setLoadingState","isNavigating","setIsNavigating","originalCredentials","setOriginalCredentials","fieldSet","setFieldSet","isNewEventModalOpen","setIsNewEventModalOpen","setNewEventDraft","isEditCallbackModalOpen","setIsEditCallbackModalOpen","setEditedCallbackDraft","setCallbackGroupTemplates","setCallbackGroups","callbackHealth","setCallbackHealth","setS2sCallbacks","adNetworkSettings","setAdNetworkSettings","adNetworkSettingsError","setAdNetworkSettingsError","setCallbackInstructions","isMissingIntegration","setIsMissingIntegration","closeNewEventModal","closeEditCallbackModal","setLoading","loadingKey","currentLoadingState","clearLoading","without","clearAllLoading","setSaving","savingKey","currentSavingState","clearSaving","errorKey","currentErrors","setError","rehydrateWithChannelSettings","addableCallbackGroupTemplates","fetchedAdNetworkSettings","fetchedcallbackInstructions","credentialSettings","toggleableCallbackGroups","updatedCredentials","fetchSelectedChannelSettings","formattedData","fetchSelectedCallbackHealth","fetchSelectedS2SCallbacks","updateCallbackGroupChannelFilter","callbackGroup","toggleActivatableCallbackGroup","handleChangeCallbackGroupUserFilter","handleToggleCallbackGroup","handleToggleMetaAem","metaAemToggle","fetchedAdNetworkSettingsError","integrationId","activeChannel","facebookAppIdValue","handleChangeChannel","handleClickEdit","handleClickRetry","handleClickAddEvent","userFilterDefaultSettings","handleChangeEventDraft","handleClickEditCallback","handleChangeEditableCallbackDraft","processedValue","handleClickSaveNewEvent","rowToSave","eventDefinitionId","callbackGroupTemplateId","handleClickSaveEditedCallback","handleClickAddCustomCallback","handleClickEditCustomCallback","handleClickSubTab","subTab","ErrorOverlay","isMissingCredentials","standard","advanced","isMissingCallbackGroups","isMissingCallbackHealthData","isMissingS2SCallbacks","isCallbackHealthGreen","isMissingChannel","showCallbackHealthEmptyState","showS2SCallbacksEmptyState","credentialsCardOverlayContent","credentialsCardOverlayOpaqueness","callbacksTableOverlayContent","callbacksTableOverlayOpaqueness","healthTableOverlayContent","healthTableOverlayOpaqueness","s2sCallbacksTableOverlayContent","s2sCallbacksTableOverlayOpaqueness","callbacksTableRows","newEventModalRows","newEventData","editedCallbackModalRows","editedCallbackData","fieldData","s2sCallbacksTableRows","s2sCallbackData","healthTableRows","subTabNavigationOptions","showAemToggle","isAemToggleDisabled","exact","modalOverflow","TooltipContent","META_AEM_LINK","AemToggle","aemToggle","StandardOptions","AdvancedOptions","EventOptions","eventOptionsPopupOptions","eventOptionsPopupAdvancedButton","SkAdNetworkTab","isSkAppClaimable","skAppClaimStatus","isUploading","setIsUploading","setCvSchema","schemaExists","setSchemaExists","isToggleDisabled","setToggleDisabled","isSkanFeaturesOn","setIsSkanFeaturesOn","fileInputRef","cvSampleCsvUrl","isVerified","handleUploadSuccess","updatedCvSchema","handleFileChange","selectedFile","files","reader","FileReader","onload","readerEvent","parsedCvSchema","readAsText","handleClickUpload","click","handleClickToggle","fetchedCvSchema","loadCvSchema","cvSchemaJson","showEmptyState","showUploadInstructions","showMmpUrl","showCvSchema","showAlert","showLoadingSkeleton","showUploadButton","showFilename","showCvSchemaJson","SkanConfigurationActions","skanConfigurationActions","skanFeaturesLabel","ConversionValueMappingFooter","accept","cardPanelFooterReuploadInstructions","cardPanelFooterTemplateLink","uploadButton","LoadingSkeleton","skeletonSmallWidth","skeletonFullWidth","errorOverlay","skanConfigurationPanel","isClaimable","mmpConnectionUrl","mmpConnectionUrlCopyButton","learnMoreContainer","conversionValueMapping","cvSchemaDescription","cvSchemaFilename","cvSchemaCreatedAt","uploadInstructions","uploadInstruction","download","downloadTemplateButton","learnTemplateInfo","learnTemplateLink","templateRestriction","SkAdNetworkStatus","actionUrl","DASHBOARD_APPS_CLAIM_SK_APP_PATH","appClaimStatus","setAppClaimStatus","COPY_BY_APP_CLAIM_STATUS_MAPPING","badgeText","badgeLevel","isUnverified","APP_CLAIM_STATUS_UNVERIFIED","isVerifiable","helpTextOverride","skAdNetworkStatus","APP_CLAIM_STATUS_PROCESSING_REQUEST","buildCSVPreviewRow","COLUMN_CHARACTER_LENGTH_MULTIPLIER","columnKey","columnIndex","CSVPreviewTable","csvPreviewTableContainer","csvPreviewTable","TdKeyCell","tooltipVisible","setTooltipVisible","previousTimeoutId","setPreviousTimeoutId","clearTimeout","COPIED_TEXT_DELAY","errorStateMessage","errorState","CampaignsList","onClickMergeCampaign","mergeButtonContainer","mergeButton","DeviceNameFormField","inputPopoverContent","AdvertisingIdFormField","platformProp","platformTitle","helpPopoverComponent","DeveloperDeviceIdFormField","AppSelectDropDown","DeviceTypeDropDown","formOptions","DataExporterPage","DATA_EXPORTER_SUBHEADING","DATA_EXPORTER_NOTICE","Presenter","ExporterPreviewTable","fetchExporterPreviewTableData","PaginatedTable","isUsingDates","useBlockLayout","usePagination","PaginatedTableInstance","canNextPage","canPreviousPage","gotoPage","nextPage","pageCount","pageOptions","previousPage","setPageSize","PaginationControls","paginationControls","PageSelector","formattedPageOptions","pageOption","noValueSymbol","pageSelector","updatedPageSize","PageSizeSelector","isShowingAllRows","allRowsText","someRowsText","rowCountDescription","rowsLabel","pageSizeSelector","PAGE_SIZE_OPTIONS","ExporterActions","allowSave","DeleteReportBtn","saveBtnClassName","canClickDelete","deleteText","confirm","refreshUrl","go","DownloadCSVBtn","hasCsvData","SaveReportBtn","canClickSave","saveIcon","saveText","clearIndicator","borderColor","controlBorderColor","controlHeight","minWidth","controlMinWidth","SavedReportSelector","savedReportOptions","savedReportUrl","formatCreateLabel","isChangingReportType","setIsChangingReportType","showUserAcquisitionFilters","showAdMonetizationFilters","showSkAdNetworkReportFilters","showSingleSelectGroupByFilter","showCountriesFilter","onChangeReportType","handleChangeReportType","handleChangeGranularity","onClickSelectedMetric","unappliedMetric","ClearFiltersBtn","FetchResultsBtn","setIsUsingTotals","activeGranularity","granularityRadios","TotalsRadio","totalsRadioHeader","totalsRadioButton","MetricsFilter","metricDefinitionValues","rawSelectedMetrics","selectedMetricsInfo","metricsMapping","selectedMetricsArray","visibleMetrics","setVisibleMetrics","metricsList","MetricsListItem","MultiSelectGroupByFilter","clickedGroupById","GROUP_BY_MULTISELECT_LABEL_SPLIT_COUNT","ReportTypeFilter","handleClickReportType","selectReportTypeText","SingleSelectGroupByFilter","queryClient","QueryClient","defaultOptions","refetchInterval","refetchOnWindowFocus","retry","ReportingPage","pathRoot","escapedQueryStr","unescapedQueryStr","prevUser","roles","setContext","userEmail","userId","userName","settings","SkAdNetworkPage","UserAcquisitionPage","summaryDataMapping","setSummaryDataMapping","fetchedSummaryData","buildSummaryDataMapping","summaryData","metricDefinitionId","getGroupByOptions","disabledOptionIdsList","dashboardGroupBys","baseGroupBy","setBaseGroupBy","secondaryGroupBy","setSecondaryGroupBy","baseGroupByOptions","secondaryGroupByOptions","newBaseGroupBy","currentSecondary","newSecondaryGroupBy","SwapButton","UserAcquisitonPage","scrollTo","ReportingFooter","footerCollapsed","fetchCustomEvents","pageParam","q","queryString","setCustomEvents","useInfiniteQuery","getNextPageParam","lastPage","hasMorePages","fetchNextPage","hasNextPage","isLoadingCustomEvents","eventNameFromQuery","setCurrentCustomEventName","pages","formattedCustomEventsForSelect","formatCustomEventsForSelect","fetchCustomEventsByName","eventDoesNotExist","fetchedCustomEvents","fetchMoreCustomEvents","FormLabel","Popover","popoverRef","createRef","clickNamespace","handleHide","$","popover","getPopoverOptions","attachEventHandlers","on","getClickEventNamespace","prevProps","$popoverEl","hasChanges","attr","getContent","tip","hasClass","detachEventHandlers","off","close","getTemplate","inState","EVENTS","eventHandler","only","FormSelect","selectButtonClassNameProp","selectButtonContainerClassNameProp","selectButtonIconClassNameProp","selectButtonLabelClassNameProp","selectButtonValueClassNameProp","toggleIcon","handleMenuToggle","SELECT_PROPS_LIST","FormRadioToggle","falseyOptionLabel","truthyOptionLabel","prevValue","handleToggle","toggleTo","RadioToggle","FormChipGroup","processError","setHoneybadgerContext","saveApp","saveAppChannel","appChannelSettings","adSpend","ALL_RESULTS_TEXT","NO_RESULTS_FOR_PAGE_TEXT","NO_RESULTS_TEXT","stop","_range","buildPageNumbersList","currentPage","totalPages","numOfVisibleLeftBlocks","numOfVisibleRightBlocks","offsetVariable","ceil","floor","numOfOffsetItems","DEFAULT_TEMPLATE","NAMESPACE","ignoreAccents","ignoreCase","matchFrom","dependencies","hasRendered","dispatchEvent","Event","pointPlacement","seriesDataMapping","null","seriesData","yAxisOptions","isOnRightSideOfChart","opposite","getYAxisOptions","tooltipHeader","tooltipHeaderKey","tooltipHeaderLabel","tooltipDivider","pointFormatterWithGroupBy","conversionsCount","seriesName","tooltipPoint","tooltipPointConversionCount","tooltipPointLabel","tooltipPointSeries","tooltipPointSeriesBlock","tooltipPointSeriesName","footerFormat","changeAdAccountLastStatsUpdateDate","toggleAdAccountActiveState","adAccountId","integrationSlug","hideOnboardingPopup","DASHBOARD_USERS_HIDE_ONBOARDING_POPUP_URL","getDateForDisplayInUtc","utcTime","zonedTimeToUtc","utcToZonedTime","getMaxDate","sub","years","APP_CLAIM_STATUS_VERIFIED","FilterBar","canFilterByApps","canFilterByChannels","canFilterByLookbackWindow","canFilterByPlatforms","controlFlexGrow","controlFlexShrink","indicatorSeparatorWidth","inputPaddingLeft","menuHeight","menuListHeight","optionContainer","checkbox","AppAccessSelector","organizationUserId","initialApps","setCurrentApps","setSelectedApps","setIsMenuOpen","searchValue","setSearchValue","inputRef","dropdownRef","focusOnInput","focus","handleClickValueContainer","isSelectDisabled","handleCloseMenu","organizationUser","handleMenuBlur","handleClickDropdownIndicator","prev","saveButtonContainer","DropdownIndicator","customDropdownIndicator","Input","innerRef","MultiValueContainer","ValueContainer","valueContainerText","mouseLeaveDelay","statusIcon","hideSelectedOptions","inputValue","menuIsOpen","newSelectedApps","onMenuOpen","openMenuOnClick","Checkbox","visibleCheckboxClassName","visibleCheckbox","checkedVisibleCheckbox","focusedVisibleCheckbox","hoveredVisibleCheckbox","innerCheckboxClassName","hiddenInput","handleClear","prevPropsValue","updateValueIfNeeded","stateValue","containerClass","primaryContainer","containerWithSearchIcon","inputClass","formControl","formControlSm","renderClearSearchIcon","PageSectionHeader","PageSubtext","calculateWidthForCell","totalWidth","hasNotDefinedTableWidth","hasNotDefinedContainerTableWidth","getWidthForTableCell","metricHeaderCompact","nameHeaderAllExpandable","nameHeaderExpander","isNotExpandable","mrml","nameDisplay","buildSeriesComponent","ChartComponent","AreaSeries","LineSeries","totalsData","leftSeries","rightSeries","concat","d","groupedOptions","eventNames","getDefaultCustomEventName","eventItems","method","totalSeries","getXAxisMax","allowDecimals","tickWidth","CampaignRowsSkeleton","updatedAt","conversionValueTotalSum","sumBy","nonNullConversions","hasConversionValue","isGroupedByConversionValue","fetchCallbackGroupTemplates","createCallbackGroupTemplate","allowMultiple","saveCallbackGroupTemplate","DownloadCSVButton","exportParams","encodedQueryString","HamburgerNav","OnboardingPopup","defaultOnboardingPopupStatus","setIsOpen","setSelectedRole","isIconFilledIn","handleClosePopup","showArrow","updatedRole","analytics_enabled","onboardingPopup","AccountIssuePage","accountIssuePage","CampaignMergePage","setTrackedCampaigns","setReportedCampaigns","setSelectedApp","setSelectedLookback","setSelectedTrackedCampaign","setSelectedReportedCampaign","allMergeableCampaigns","setAllMergableCampaigns","setIsMerging","setIsModalOpen","fetchCampaigns","mergeSelectedCampaigns","breadcrumb","updatedLookback","updatedSearchText","LastUpdatedBtn","alertClassSelector","textClassSelector","useDidUpdateEffect","onEffect","toISOString","$textSelector","getElementsByClassName","innerHTML","$alertSelector","showDateDisplay","showPreview","CallbackGroupTemplatesDropdown","selectedTemplate","setSelectedTemplate","selectedEventDefinition","setSelectedEventDefinition","selectedPlatform","setSelectedPlatform","selectedAdNetworkId","setSelectedAdNetworkId","handleSelectEventDefinition","handleSelectPlatform","handleSelectTemplateableId","eventDefinitionElement","getElementById","platformElement","templateableIdElement","fetchedCallbackGroupTemplates","fetchData","defaultTemplate","constructComponentTable","componentProps","snippet","console","log","italic","ComponentLibrary","initialSearch","componentTable","setComponentTable","setSearch","constructedComponentTable","loadComponentTable","componentLibrary","hasResults","ComponentPreview","componentEntry","tableColumnLeft","componentPreview","tableColumnRight","noResults","Monitoring","neverUpdatedReport","failedToAddReport","setReportType","setReport","isDefaultReport","baseReport","handleClickSortButton","sortValue","sortedRowsByProperty","ReportTypeHeader","VariableHeaders","sortButton","VariableRows","ad_account_id","ad_account_name","attempt_count","filters","filteredReports","organization_name","contact_user_email","contact_user_id","SdkKeys","disabledSdkKeysTotal","lastSeenDates","sdkKeyApps","sdkKeysProp","sdkKeys","disabledTotal","setDisabledTotal","setSdkKeys","hasDisabledKeys","sdkKeyAppMapping","SwaggerInfoLookup","reportingContextData","appFilter","setAppFilter","channelFilter","setChannelFilter","appCopied","setAppCopied","channelCopied","setChannelCopied","selectedContext","setSelectedContext","userAcquisition","user_acquistion","adMonetization","ad_monetization","thin","appSearch","copyStatus","appList","handleClickCopyAppId","appListItem","channelSearch","channelList","handleClickCopyChannelId","channelListItem","controlBgColorDisabled","ActionSelect","allowedActions","allowedAction","defaultAction","selectedOption","setSelectedOption","RevenueDeductions","revenueDeductionProp","Show","appProp","appChannelProp","appChannelsProp","channelProp","channelsProp","selectedTab","skAppClaimable","defaultState","appIntegrationStatus","isNotSkanApp","isSkanPage","skeletonAppSelectorHeight","skeletonAppSelectorWidth","skeletonTabNavigationHeight","skeletonTabNavigationWidth","skeletonCardPanelHeight","apiKeysProp","appApiKeys","lastSeenDatesProp","orgKeysProp","orgApiKeys","minAppKeyCount","maxAppKeyCount","setIsOrgKey","appKeys","setAppKeys","orgKeys","setOrgKeys","revokeConfirmed","setRevokeConfirmed","hasOrgKeys","generateApiKeyURL","revokeModalRef","revokeModalTextRef","hasTooManyKeys","canGenerate","handleRemoveKeyRow","keyId","generateKey","handleGenerateKey","updatedKeys","AppKeysTable","isIntegrated","OrgKeysNotice","OrgKeysTable","aria-labelledby","REVOKE_CONFIRMATION_TEXT","data-dismiss","revokeModal","disableKey","exampleMergeInfo","mergedAt","reportedCampaignName","trackedCampaignName","CampaignDetailsMergeInfo","mergeInfo","campaignDetailsMergeInfo","trackedCampaignInfo","reportedCampaignMerge","CampaignDetailsMergeTool","campaignToMerge","setCampaignToMerge","trackedCampaign","setTrackedCampaign","openModal","mergeSelectedCampaign","onMergeSuccess","campaignDetailsMergeTool","headings","lookback","dropdown","inputHeading","MoveCampaign","campaignProp","campaign","isMoving","setIsMoving","initialSelectedApp","moveCampaignToSelectedApp","appsDropdownContainer","moveCampaignButton","DateInput","endDateProp","endDateInputClassSelector","startDateProp","startDateInputClassSelector","AdAccountSwitch","initialIsChecked","setIsChecked","offColor","onColor","requiredDeviceIdValidation","Yup","when","is","then","createDebugAppUsers","NewDebugAppUserForm","appsProps","showIdTypeForm","setShowIdTypeForm","showAdvertisingIdInput","setShowAdvertisingIdInput","showDeveloperDeviceIdInput","setShowDeveloperDeviceIdInput","selectedDeviceIdType","setSelectedDeviceIdType","setPlatform","handleFormSubmit","handleSuccess","resetIdTypeFields","ariaHideApp","initialValues","onSubmit","validationSchema","Form","formfield","updatedIdType","exampleCallbackGroupTemplates","CallbackGroupTemplates","callbackGroupTemplatesProp","defaultEditedCallbackGroupTemplates","templateValues","defaultIsEditing","defaultIsSaving","DEFAULT_NEW_TEMPLATE_VALUES","newCallbackGroupTemplate","setNewCallbackGroupTemplate","editedCallbackGroupTemplates","setEditedCallbackGroupTemplates","setIsSaving","isCreating","setIsCreating","handleChangeNewCallbackGroupTemplate","param","handleChangeCallbackGroupUserFilterTemplate","editedCallbackGroupTemplatesState","onCreateCallbackGroupTemplate","onSaveCallbackGroupTemplate","callbackTemplate","onSaveSuccess","createButton","existingTemplates","idColumn","allowMultipleColumn","eventDefinitionColumn","platformColumn","requiredMacrosColumn","userFilterDefaultColumn","userFilterEditableColumn","actionsColumn","isEditingRow","isEmptyEventDefinition","callbackTemplatesRow","callbackTemplates","callbackTemplateRow","callbacksCount","idCell","isSavingState","templateToSave","isEditingState","handleClickSaveRow","notAllowMultiple","notUserFilterEditable","exampleEventCounts","UsageAndBilling","eventCounts","pricingTableId","publishableKey","subscriptionInfo","month","billableEvents","adMediationImpressionCount","paidTrackedInstalls","buildEventCountRows","ptiCount","formattedPercentage","cardInfo","isSubscribed","trackingBar","ptiCountText","subscriptionPanelBody","pricingTier","contractLink","planLink","planDetails","detail","planDetail","checkmark","billingPanelBody","billingDetails","cardExpiration","pricing-table-id","publishable-key","CheckboxIcon","visibleIcon","xmlns","SELECT_MENU_FUSE_OPTIONS","SelectMenu","addItem","afterAddItem","handleSearchStringChange","removeItem","selectAll","itemId","searchString","constructor","createSearchableList","updateUnappliedIfNeeded","skipAlphabetization","isSearching","fuseObj","sortItems","prevSelected","normalizedItemId","normalizeItemId","aId","bId","hasAllSelected","clearBtn","saveBtn","isSaveable","getMenuItemIds","menuItemStyles","renderMenuItem","nestedContainer","isSelectedItem","selectAllCheckboxLabel","searchInputContainer","selectMenuInnerClassName","menuInner","menuInnerMultiple","footerClassName","footerWithMultipleActions","renderHeader","renderSearchInput","renderSelectAllMenuItem","renderMenuItems","renderClearBtn","renderSaveBtn","SelectButton","displayValue","activeBtn","PaginatorInfo","pageLimit","pageNumbers","totalCount","determinePageSpan","PaginatorNextItem","PaginatorPreviousItem","details","adNetworkShortId","associatedReport","CustomPagePresentation","Presentation","activeMetricDefinitionKey","isMockingChart","Loading","SkeletonSummaryBlocks","summaryBlockNum","MockTabButtons","tabNum","hasDataToDisplay","shouldShowSkeletonLoading","tableHeaderContainer","AppBasicFormFields","AppStoreUrlFormField","appStoreName","appStoreUrlFormat","platformName","attributionProvider","AttributionProviderSelect","attributionProviders","BaseForm","platformId","showingAppStoreUrlInput","prevPlatformId","usePlatformChangeEffect","useAttributionProviderChangeEffect","prevShowingAppStoreUrlInput","useShowingAppStoreUrlInputChangeEffect","isShowingAppStoreUrlFormField","showDestinationUrlFormField","customDestinationUrl","showAttributionProviderOption","isShowingTenjinSdkRadioField","HasAppStoreUrlRadioField","PlatformSelect","platformKeys","mrs","UsesTenjinSdkRadioField","currentPlatform","prevPlatform","attribute","isShowing","prevIsShowing","isBtnFocused","setIsBtnFocused","PageSeparator","separator","requiredStringIfNoAppStoreValidation","schema","appStoreUrlValidation","matches","destinationUrlValidation","tenjinSdkValidation","buildAppValidationSchema","CreateAppForm","withFormik","self","mapPropsToValues","validateOnMount","BaseCreateAppForm","HealthProvider","didMountRef","Paginator","initialCurrentPageProp","listClassName","navClassName","onPageChange","setCurrentPage","setPageNumbers","renderPaginatorItem","renderPaginatorItems","pageNumbersExist","tooltipRef","getTooltipOptions","describe","it","expect","toBe","tree","toJSON","toMatchSnapshot","jest","mock","new","exampleDefinitions","toBeTruthy","toBeFalsy","sortedMetrics","toEqual","expectedEndDate","expectedRestrictedRange","AdminPage","handleSelectChange","selectOptions","bear","cat","dog","chipIsSelected","isDisplayingSelect","animal","car","renderPageHeaders","renderBackLink","renderChip","renderForm","renderPopover","toBeNull","someProp","row1","row2","row3","startingArray","toBeNil","sortedArray","big","good","newRecord","existingRecord","snakeCaseData","toHaveBeenCalledWith","other","expectedOutput","singleField","multiField","default","tiktokAppId","EXAMPLE_PARSED_CSV","EXAMPLE_CV_SCHEMA","EXAMPLE_CV_TO_JSON_FOR_TABLE","toThrow","originalLocation","fn","beforeEach","afterEach","restoreAllMocks","toHaveLength","toHaveBeenCalledTimes","adNetworkAppUrl","opts","__esModule","requireActual","mockReturnValueOnce","metricDefinitionsVisible","metricDefinitionsVisibleWithSkAdReport","metricDefinitionsNotVisible","Entry","updateReportingNavLinks","reportingContext","$uaNavLinks","setAttribute","$amNavLinks","validAmGroupBys","am","sampleMetricDefinitions","fakemetric","testmetric","toStrictEqual","platformsOrderPrecedence","mergePlatformsMetadata","platformIdsList","updatedPlatformsObject","aIndex","bIndex","NewAppPage","attributionProvidersProp","platformsProp","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","require","ReactDOM","ClipboardJS","highcharts","notifier","dateFns","dateFnsTz","ReactRailsUJS","componentRequireContext"],"mappings":"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","file":"js/application-e2fcfa0f64640b5cc623.chunk.js","sourcesContent":["import { camelCase } from 'camel-case'\nimport classNames from 'classnames'\nimport {\n chain,\n clone,\n difference,\n each,\n extend,\n find,\n has,\n intersection,\n isArray,\n isEmpty,\n isNil,\n isNull,\n isNumber,\n isObject,\n isUndefined,\n keys,\n map,\n omit,\n omitBy,\n pickBy,\n remove,\n toString,\n values\n} from 'lodash'\nimport pluralize from 'pluralize'\nimport { snakeCase } from 'snake-case'\n\nimport {\n GROUP_BY_CAMPAIGN_STR,\n GROUP_BY_CHANNEL_STR,\n GROUP_BY_COUNTRY_STR,\n GROUP_BY_PLATFORM_STR,\n GROUP_BY_SITE_STR,\n GROUP_BY_SK_CAMPAIGN_STR\n} from '../contexts/GroupedSummaryTableSettings/constants'\nimport {\n CURRENCY_VALUE_TYPE,\n NUMBER_VALUE_TYPE,\n PERCENTAGE_VALUE_TYPE,\n WHOLE_NUMBER_VALUE_TYPE\n} from '../contexts/MetricDefinitions/constants'\nimport { SK_AD_NETWORK_REPORT_TYPE_STR } from '../contexts/ReportingFilters/constants'\nimport {\n FIRST_LINE_INDEX,\n LINE_DELIMITER,\n NULL_MATCH_CONDITION,\n PLATFORMS,\n SECOND_LINE_INDEX,\n TARGETING_TAG_GROUPING_BY_PATTERN,\n TARGETING_TAG_GROUPING_BY_SUBSTR_INDEX,\n UNESCAPED_MAPPING,\n UNESCAPING_REGEX,\n VALUE_DELIMITER\n} from './constants'\n\nexport const convertPlatformToFontAwesomeIcon = platform => {\n switch (platform) {\n case 'android':\n return 'fa-google-play fab'\n case 'android_other':\n case 'androidOther':\n return 'fa-android fab'\n case 'ios':\n return 'fa-app-store-ios fab'\n case 'amazon':\n return 'fa-amazon fab'\n default:\n return `fa-${platform}`\n }\n}\n\nexport function getPlatformIconClass(platform) {\n return classNames({\n [convertPlatformToFontAwesomeIcon(platform)]: !isEmpty(platform),\n 'fa-question-circle far': isEmpty(platform)\n })\n}\n\nexport function getPlatformDisplayName(platform) {\n if (isEmpty(platform)) {\n return 'Unknown'\n }\n\n const platformDetails = PLATFORMS[platform]\n\n if (platformDetails) {\n return platformDetails.name\n }\n\n return 'Unknown'\n}\n\nexport const omitEmptyValues = object => pickBy(object)\n\n// https://www.w3schools.com/tags/tag_input.asp\nexport function extractInputProps(props) {\n const {\n autoComplete: autoCompleteProp,\n autoFocus: autoFocusProp,\n disabled: disabledProp,\n maxLength,\n minLength,\n name,\n pattern,\n placeholder,\n readOnly: readOnlyProp,\n required: requiredProp,\n size\n } = props\n\n const autoComplete = autoCompleteProp ? 'on' : 'off'\n const autoFocus = autoFocusProp ? 'autofocus' : undefined\n const disabled = disabledProp ? 'disabled' : undefined\n const readOnly = readOnlyProp ? 'readonly' : undefined\n const required = requiredProp ? 'required' : undefined\n\n return omitEmptyValues({\n autoComplete,\n autoFocus,\n disabled,\n maxLength,\n minLength,\n name,\n pattern,\n placeholder,\n readOnly,\n required,\n size\n })\n}\n\nexport const noop = () => {}\n\nexport const isBlank = option => {\n if (isNumber(option)) return false\n\n return isUndefined(option) || isNull(option) || isEmpty(option)\n}\n\nexport const isPresent = option => !isBlank(option)\n\nexport const GROUP_BY_TO_DISPLAY_NAME = {\n adNetworkApp: 'Channel + App',\n adNetworkAppCountry: 'App + Channel + Country',\n adNetworkId: 'Channel',\n adPlacementId: 'Ad Placement',\n appCountry: 'App + Country',\n appId: 'App',\n campaignCountry: 'Campaign + Country',\n campaignId: 'Campaign',\n conversionValue: 'Conversion Value',\n country: 'Countries',\n fidelityType: 'Fidelity Type',\n platform: 'Platform',\n siteId: 'Sites / Keywords',\n skAdNetworkId: 'SK Ad Network',\n skCampaignId: 'SK Campaign',\n skSourceAppId: 'SK Source App ID'\n}\n\nexport const getPluralizedGroupByDisplayName = groupBy => {\n /*\n Note: Data Exporter SkAdNetwork Report has a multi-select groupBy\n which generates large combination groupBy ids like:\n ad_network_id_conversion_value_fidelity_type_sk_ad_network_id\n adNetworkIDConversionValueFidelityTypeSkAdNetworkID\n\n These aren't supported in our display name conversion.\n */\n if (groupBy && GROUP_BY_TO_DISPLAY_NAME[camelCase(groupBy)]) {\n return pluralize(GROUP_BY_TO_DISPLAY_NAME[camelCase(groupBy)])\n }\n\n return 'Groupings'\n}\n\nexport const getPluralizedTotalGroupByDisplayName = groupBy =>\n `Total${groupBy && ` (All ${getPluralizedGroupByDisplayName(groupBy)})`}`\n\nexport const getPluralizedUnavailableGroupByDisplayName = groupBy =>\n `Unavailable${groupBy && ` ${getPluralizedGroupByDisplayName(groupBy)}`}`\n\nexport const getGroupHeaderNameFromGroupBy = groupBy => {\n if (isArray(groupBy)) {\n return groupBy.map(\n groupByOpt => GROUP_BY_TO_DISPLAY_NAME[camelCase(groupByOpt)]\n )[0]\n }\n\n if (has(GROUP_BY_TO_DISPLAY_NAME, camelCase(groupBy))) {\n return GROUP_BY_TO_DISPLAY_NAME[camelCase(groupBy)]\n }\n\n if (groupBy.match(TARGETING_TAG_GROUPING_BY_PATTERN)) {\n return groupBy.substr(TARGETING_TAG_GROUPING_BY_SUBSTR_INDEX)\n }\n\n return 'Name'\n}\n\nexport const getGroupNameFromGroupBy = groupBy => {\n if (isArray(groupBy)) {\n return groupBy\n .map(groupByOpt => GROUP_BY_TO_DISPLAY_NAME[camelCase(groupByOpt)])\n .join(' → ')\n }\n\n if (has(GROUP_BY_TO_DISPLAY_NAME, groupBy)) {\n return GROUP_BY_TO_DISPLAY_NAME[camelCase(groupBy)]\n }\n\n if (groupBy.match(TARGETING_TAG_GROUPING_BY_PATTERN)) {\n return groupBy.substr(TARGETING_TAG_GROUPING_BY_SUBSTR_INDEX)\n }\n\n return ''\n}\n\nexport const deepCamelKeys = (input, preservedKeys) => {\n if (isArray(input)) {\n return input.map(item => deepCamelKeys(item, preservedKeys))\n }\n\n if (isObject(input)) {\n const object = {}\n\n Object.keys(input).forEach(key => {\n if (preservedKeys && preservedKeys.includes(key)) {\n object[camelCase(key)] = input[key]\n } else {\n object[camelCase(key)] = deepCamelKeys(input[key], preservedKeys)\n }\n })\n\n return object\n }\n\n return input\n}\n\nexport const deepSnakeKeys = (input, preservedKeys) => {\n if (isArray(input)) {\n return input.map(item => deepSnakeKeys(item, preservedKeys))\n }\n\n if (isObject(input)) {\n const object = {}\n\n Object.keys(input).forEach(key => {\n if (preservedKeys && preservedKeys.includes(key)) {\n object[snakeCase(key)] = input[key]\n } else {\n object[snakeCase(key)] = deepSnakeKeys(input[key], preservedKeys)\n }\n })\n\n return object\n }\n\n return input\n}\n\nexport const camelCaseMetrics = metrics =>\n map(metrics, metric => camelCase(metric))\n\nexport const stripTrailingSlash = str =>\n str.endsWith('/') ? str.slice(0, -1) : str\n\nexport const mapKeysToMetricDefinitions = ({ keys: metricKeys, state }) =>\n metricKeys.map(key => state.metricDefinitions[key])\n\nexport const mergeDataObjectsById = ({ baseData, deltaData }) => {\n const output = clone(baseData)\n\n each(deltaData, row => {\n const matchingRow = find(output, { id: row.id })\n\n if (matchingRow) {\n extend(matchingRow, row)\n } else {\n output.push(row)\n }\n })\n\n return output\n}\n\nexport const processDataObjects = dataObjects => {\n const processedDataObjects = map(dataObjects, dataObject => {\n const { attributes, ...properties } = dataObject\n\n const output = {\n ...properties,\n ...attributes\n }\n\n const hasAdNetworkIdAsNumber =\n output.adNetworkId && isNumber(output.adNetworkId)\n\n if (hasAdNetworkIdAsNumber) {\n output.adNetworkId = toString(output.adNetworkId)\n }\n\n const hasIdAsNumber = output.id && isNumber(output.id)\n\n if (hasIdAsNumber) {\n output.id = toString(output.id)\n }\n\n return output\n })\n\n return processedDataObjects\n}\n\nexport const getMatchCondition = ({ row, groupBy }) => {\n const isMatchedByDate = groupBy.includes('date') && row.date\n const isMatchedByApp = row.appId\n const isMatchedByAdNetwork =\n groupBy.includes(GROUP_BY_CHANNEL_STR) && row.adNetworkId\n const isMatchedByCampaign =\n groupBy.includes(GROUP_BY_CAMPAIGN_STR) && row.campaignId\n const isMatchedByCountry =\n groupBy.includes(GROUP_BY_COUNTRY_STR) && row.country\n const isMatchedByPlatform =\n groupBy.includes(GROUP_BY_PLATFORM_STR) && row.platform\n const isMatchedBySite = groupBy.includes(GROUP_BY_SITE_STR) && row.site\n const isMatchedBySkCampaign =\n groupBy.includes(GROUP_BY_SK_CAMPAIGN_STR) && row.skCampaignId\n\n const isSkanCampaign = row.type === SK_AD_NETWORK_REPORT_TYPE_STR\n const isSkanCampaignMatchedByCampaignId = isSkanCampaign && row.campaignId\n\n const primaryMatchCondition = {\n ...(isMatchedByDate && { date: row.date }),\n ...(isMatchedByApp && { appId: row.appId }),\n ...(isMatchedByAdNetwork && { adNetworkId: row.adNetworkId }),\n ...(isMatchedByCountry && { country: row.country }),\n ...(isMatchedByPlatform && { platform: row.platform }),\n ...(isMatchedBySite && { siteId: row.siteId }),\n ...(isMatchedBySkCampaign && { skCampaignId: row.skCampaignId }),\n ...(!isSkanCampaign &&\n isMatchedByCampaign && { campaignId: row.campaignId }),\n ...(isSkanCampaignMatchedByCampaignId && { id: row.campaignId })\n }\n\n const isUnmatchable =\n groupBy.includes(GROUP_BY_CAMPAIGN_STR) &&\n row.campaignId === null &&\n row.campaignName === null &&\n row.name === null\n\n if (isUnmatchable) return NULL_MATCH_CONDITION\n\n const filterOutDate = grouping => grouping !== 'date'\n const camelCaseGroupBys = grouping => camelCase(grouping)\n const findFirstGroupByInRow = grouping => row[grouping]\n\n const secondaryMatchId =\n row[\n chain(groupBy)\n .filter(filterOutDate)\n .map(camelCaseGroupBys)\n .reverse()\n .find(findFirstGroupByInRow)\n .value() || 'id'\n ]\n\n const secondaryMatchCondition = {\n ...(secondaryMatchId && { id: `${secondaryMatchId}` }),\n ...(isMatchedByDate && { date: row.date })\n }\n\n return { primaryMatchCondition, secondaryMatchCondition }\n}\n\nexport const processAndMergeDataObjectsById = ({\n _getMatchCondition = getMatchCondition,\n _processDataObjects = processDataObjects,\n baseData,\n deltaData,\n groupBy\n}) => {\n const processedBaseData = _processDataObjects(baseData)\n const processedDeltaData = _processDataObjects(deltaData)\n\n const baseDataRows = [...processedBaseData]\n const rowsToJoin = map(processedDeltaData, row => ({\n ...row,\n ..._getMatchCondition({ groupBy, row })\n }))\n\n const output = []\n\n each(rowsToJoin, rowToJoin => {\n const { primaryMatchCondition, secondaryMatchCondition, ...row } = rowToJoin\n\n const primaryMatch = remove(baseDataRows, primaryMatchCondition)\n\n if (primaryMatch && primaryMatch.length > 0) {\n output.push({ ...primaryMatch[0], ...row })\n return\n }\n\n const secondaryMatch = remove(baseDataRows, secondaryMatchCondition)\n\n if (secondaryMatch && secondaryMatch.length > 0) {\n output.push({ ...secondaryMatch[0], ...row })\n return\n }\n\n output.push(row)\n })\n\n each(baseDataRows, row => {\n output.push(row)\n })\n\n return output\n}\n\nexport const isUnavailable = name => {\n if (isNumber(name)) return false\n\n return isBlank(name) || name.toLowerCase() === 'unavailable'\n}\n\nexport const unescapeStr = str =>\n str.replace(UNESCAPING_REGEX, unescaped => UNESCAPED_MAPPING[unescaped])\n\nexport const getBrowserTimeZone = () =>\n Intl.DateTimeFormat().resolvedOptions().timeZone\n\nexport const stripTotalsFromGranularity = granularity =>\n granularity.replace('totals-', '')\n\nexport const includesSomeItemCombination = ({ allItems, combinations }) => {\n let hasMetOneCondition = false\n\n // eslint-disable-next-line consistent-return\n each(combinations, combination => {\n const combinationIsPresent = difference(combination, allItems).length === 0\n\n if (combinationIsPresent) {\n hasMetOneCondition = true\n return false\n }\n })\n\n return hasMetOneCondition\n}\n\nexport class InvalidPathError extends Error {\n constructor(path) {\n super(`${path} is not a valid path`)\n this.name = 'InvalidPathError'\n }\n}\n\nexport const isValidPath = ({ object, path }) => {\n const pathSegments = path.split('.')\n let currentPath = ''\n\n for (let i = 0; i < pathSegments.length; i += 1) {\n const pathSegment = pathSegments[i]\n currentPath += pathSegment\n\n if (!has(object, currentPath)) {\n throw new InvalidPathError(`null.${currentPath}`)\n }\n\n currentPath += '.'\n }\n}\n\nexport const replaceSubstringInUrlAndPushState = ({\n currentSubstring,\n newSubstring\n}) => {\n window.history.pushState(\n {},\n '',\n window.location.href.replace(currentSubstring, newSubstring)\n )\n}\n\n/* eslint-disable no-param-reassign */\nexport const parseCSV = csvData => {\n const lines = csvData.split(LINE_DELIMITER)\n const headers = lines[FIRST_LINE_INDEX].split(VALUE_DELIMITER)\n\n const filterForNonEmptyRows = row => values(row).join('').trim().length > 0\n\n const rows = lines\n .slice(SECOND_LINE_INDEX)\n .map(line => {\n const commaSeperatedValues = line.split(VALUE_DELIMITER)\n\n const reduceLinesIntoMapping = (mapping, header, index) => {\n if (commaSeperatedValues[index] !== undefined) {\n mapping[header.trim()] = commaSeperatedValues[index].trim()\n } else {\n mapping[header.trim()] = ''\n }\n\n return mapping\n }\n\n const initialMapping = {}\n\n return headers.reduce(reduceLinesIntoMapping, initialMapping)\n })\n .filter(filterForNonEmptyRows)\n\n return deepCamelKeys(rows)\n}\n/* eslint-enable no-param-reassign */\n\nexport const extractNumericValue = value => {\n let newValue = value\n\n if (typeof newValue === 'string') {\n newValue = newValue.replace(/[^\\d.-]/g, '')\n }\n\n return parseFloat(newValue)\n}\n\nexport const compareNumericString = (rowA, rowB, columnId, desc) => {\n const rowValueA = rowA.values[columnId]\n const rowValueB = rowB.values[columnId]\n\n if (isUnavailable(rowValueA)) {\n return desc ? -1 : 1\n }\n\n if (isUnavailable(rowValueB)) {\n return desc ? 1 : -1\n }\n\n const numA = extractNumericValue(rowValueA)\n const numB = extractNumericValue(rowValueB)\n\n if (numA > numB) return 1\n if (numA < numB) return -1\n return 0\n}\n\nexport const getSortingFunctionByValueType = valueType => {\n switch (valueType) {\n case CURRENCY_VALUE_TYPE:\n return compareNumericString\n\n case PERCENTAGE_VALUE_TYPE:\n return compareNumericString\n\n case NUMBER_VALUE_TYPE:\n return compareNumericString\n\n case WHOLE_NUMBER_VALUE_TYPE:\n return compareNumericString\n\n default:\n return null\n }\n}\n\nexport const removeEmptyItemsFromCollection = collection => {\n const keysToRemove = intersection(\n ...collection.map(obj =>\n keys(pickBy(obj, value => isNil(value) || isEmpty(value)))\n )\n )\n\n return collection.map(obj => omit(obj, keysToRemove))\n}\n\nexport const reorderKeysInCollection = (collection, keyOrder) =>\n collection.map(obj => {\n const reorderedObj = keyOrder.reduce((accumulator, key) => {\n if (key in obj) {\n accumulator[key] = obj[key]\n }\n return accumulator\n }, {})\n\n Object.keys(obj).forEach(key => {\n if (!(key in reorderedObj)) {\n reorderedObj[key] = obj[key]\n }\n })\n\n return reorderedObj\n })\n\nexport const getWidthByStringLength = ({ inputString, widthMultiplier }) =>\n inputString.length * widthMultiplier\n\nexport const getLocalDashboardStorage = () =>\n JSON.parse(localStorage.getItem('tenjin-dashboard-state') || '{}')\n\nexport const setLocalDashboardStorage = (key, value) => {\n const localDashboardStorage = getLocalDashboardStorage()\n\n const updatedState = {\n ...localDashboardStorage,\n [key]: value\n }\n\n localStorage.setItem('tenjin-dashboard-state', JSON.stringify(updatedState))\n}\n\nexport const deleteLocalDashboardStorageKeys = subString => {\n const localDashboardStorage = getLocalDashboardStorage()\n\n const updatedState = omitBy(localDashboardStorage, item =>\n item.includes(subString)\n )\n\n localStorage.setItem('tenjin-dashboard-state', JSON.stringify(updatedState))\n}\n","import { differenceInCalendarDays, format, parse, subDays } from 'date-fns'\nimport {\n find,\n has,\n includes,\n isEmpty,\n isUndefined,\n map,\n pickBy,\n reject,\n toNumber,\n union\n} from 'lodash'\nimport { createContext, useContext, useReducer } from 'react'\nimport { useLocation } from 'react-router-dom'\nimport { snakeCase } from 'snake-case'\n\nimport { REPORTS_BY_VALUE } from '../../components/pages/UserAcquisitionPage/constants'\nimport {\n DEMO_APP_ID,\n DEMO_ORG_END_DATE_STR,\n DEMO_ORG_START_DATE_STR,\n TARGETING_TAG_GROUPING_BY_PATTERN\n} from '../../utils/constants'\nimport {\n camelCaseMetrics,\n deepCamelKeys,\n deepSnakeKeys,\n isPresent,\n stripTrailingSlash,\n unescapeStr\n} from '../../utils/helpers'\nimport {\n BASE_GROUP_BY_STR,\n BASE_SK_GROUP_BY_OPTS\n} from '../GroupedSummaryTableSettings/constants'\nimport {\n ADVERTISER_CONTEXT_STR,\n ALL_GROUP_BY_ID_STR,\n CREATIVE_GROUP_BY_ID_STR,\n CREATIVES_REPORT_STR,\n CUSTOM_REPORT_STR,\n DATA_EXPORTER_PATH,\n DELIMITER_QUERY_PARAM_LIST,\n MIN_DATA_EXPORTER_MULTI_GROUP_BY_COUNT,\n MIN_MULTI_GROUP_BY_COUNT,\n OVERVIEW_REPORT_STR,\n PUBLISHER_CONTEXT_STR,\n PUBLISHER_PAGE_STR,\n PUBLISHER_REPORT_TYPE_STR,\n SK_AD_NETWORK_CONTEXT_STR,\n SK_AD_NETWORK_PAGE_STR,\n SK_AD_NETWORK_REPORT_TYPE_STR,\n UNAVAILABLE_CHANNEL,\n UNLINKED_APPS,\n USER_ACQUISITION_REPORT_TYPE_STR\n} from './constants'\n\nexport const isPublisherPage = page => page === PUBLISHER_PAGE_STR\nexport const isSkAdNetworkPage = page => page === SK_AD_NETWORK_PAGE_STR\nexport const isCustomReportPage = page => page === CUSTOM_REPORT_STR\nexport const isCreativesReportPage = page => page === CREATIVES_REPORT_STR\n\nexport const isUserAcquisitionReport = reportType =>\n reportType === USER_ACQUISITION_REPORT_TYPE_STR\nexport const isPublisherReport = reportType =>\n reportType === PUBLISHER_REPORT_TYPE_STR\nexport const isSkAdNetworkReport = reportType =>\n reportType === SK_AD_NETWORK_REPORT_TYPE_STR\n\nexport const isDataExporterPage = location =>\n includes(location.pathname, DATA_EXPORTER_PATH)\n\nconst StateContext = createContext()\nconst DispatchContext = createContext()\n\nexport const getReportingContextFromReportPage = reportPage => {\n if (isPublisherPage(reportPage)) return PUBLISHER_CONTEXT_STR\n\n if (isSkAdNetworkPage(reportPage)) return SK_AD_NETWORK_CONTEXT_STR\n\n return ADVERTISER_CONTEXT_STR\n}\n\nexport const getReportPageFromPathname = pathname => {\n const page = stripTrailingSlash(pathname).split('/').pop()\n\n const isValidPage =\n isPublisherPage(page) ||\n isSkAdNetworkPage(page) ||\n has(REPORTS_BY_VALUE, page)\n\n return isValidPage ? page : OVERVIEW_REPORT_STR\n}\n\nexport const getReportPageFromReportType = reportType => {\n if (isPublisherReport(reportType)) {\n return PUBLISHER_PAGE_STR\n }\n\n if (isSkAdNetworkReport(reportType)) {\n return SK_AD_NETWORK_PAGE_STR\n }\n\n return OVERVIEW_REPORT_STR\n}\n\nexport const getReportTypeFromLocation = ({ search }) => {\n const query = new URLSearchParams(search)\n\n const reportType = query.get('report_type')\n\n const isValidReport =\n isUserAcquisitionReport(reportType) ||\n isPublisherReport(reportType) ||\n isSkAdNetworkReport(reportType)\n\n return isValidReport ? reportType : USER_ACQUISITION_REPORT_TYPE_STR\n}\n\nexport const getReportTypeFromPathname = pathname => {\n if (includes(pathname, '/dashboard/sk_ad_network')) {\n return SK_AD_NETWORK_REPORT_TYPE_STR\n }\n\n if (includes(pathname, '/dashboard/publisher')) {\n return PUBLISHER_REPORT_TYPE_STR\n }\n\n return USER_ACQUISITION_REPORT_TYPE_STR\n}\n\nexport const getReportTypeFromQuery = query => query.get('report_type') || null\n\nexport const getNameHeaderSettingsByReportPage = reportPage => ({\n isAllExpandable: isSkAdNetworkPage(reportPage),\n isUsingGroupByForNameHeader: isSkAdNetworkPage(reportPage)\n})\n\nexport const getChannelsWithUnavailableOption = channels => [\n ...channels,\n UNAVAILABLE_CHANNEL\n]\n\nexport const getAppsWithUnlinkedOption = apps => [...apps, UNLINKED_APPS]\n\nconst getInitialState = ({\n apps,\n canGroupByTargetingTags,\n channels,\n channelsByReportType,\n countries,\n granularities,\n granularitiesByReportType,\n groupBysByReportingContext,\n groupBysByReportType,\n includeUnlinkedApps,\n reportPage,\n reportType,\n savedReportsByReportType,\n targetingTags\n}) => {\n const currentReportingContext = getReportingContextFromReportPage(reportPage)\n\n const channelsWithUnavailableOption =\n getChannelsWithUnavailableOption(channels)\n\n const completeApps = includeUnlinkedApps\n ? getAppsWithUnlinkedOption(apps)\n : apps\n\n const dataExporterChannels = getChannelsWithUnavailableOption(\n channelsByReportType[reportType]\n )\n\n // TODO: [nafeu] remove this block on `creatives_report` flag cleanup\n const filteredGroupBysByReportType = {\n ...groupBysByReportType,\n [USER_ACQUISITION_REPORT_TYPE_STR]: window.gon.feature_flags.includes(\n 'creatives_report'\n )\n ? groupBysByReportType[USER_ACQUISITION_REPORT_TYPE_STR]\n : reject(groupBysByReportType[USER_ACQUISITION_REPORT_TYPE_STR], {\n id: CREATIVE_GROUP_BY_ID_STR\n })\n }\n\n // TODO: [nafeu] remove this block on `creatives_report` flag cleanup\n const filteredGroupBysByReportingContext = {\n ...groupBysByReportingContext,\n [ADVERTISER_CONTEXT_STR]: window.gon.feature_flags.includes(\n 'creatives_report'\n )\n ? groupBysByReportingContext[ADVERTISER_CONTEXT_STR]\n : reject(groupBysByReportingContext[ADVERTISER_CONTEXT_STR], {\n id: CREATIVE_GROUP_BY_ID_STR\n })\n }\n\n return {\n apps: completeApps,\n canGroupByTargetingTags,\n channels: channelsWithUnavailableOption,\n countries,\n dataExporterChannels,\n dataExporterGranularities: granularitiesByReportType[reportType],\n dataExporterGroupBys: filteredGroupBysByReportType[reportType],\n dataExporterQuery: {},\n dataExporterTableData: [],\n granularities,\n granularitiesByReportType,\n groupBys: filteredGroupBysByReportingContext[currentReportingContext],\n groupBysByReportType: filteredGroupBysByReportType,\n groupBysByReportingContext: filteredGroupBysByReportingContext,\n isDeletingReport: false,\n isDeletingReportError: null,\n isFetchingDataExporterTableData: false,\n isFilterDirty: false,\n isSavingReport: false,\n isSavingReportError: null,\n isSidebarCollapsed: false,\n savedReportName: '',\n savedReportsByReportType,\n selectedApps: [],\n targetingTags\n }\n}\n\nconst reducer = (state, action) => {\n const { type, payload } = action\n\n switch (type) {\n case 'TOGGLE_SIDEBAR': {\n return {\n ...state,\n isSidebarCollapsed: !state.isSidebarCollapsed\n }\n }\n\n case 'UPDATE_SELECTED_APPS': {\n const { selectedApps } = payload\n\n return {\n ...state,\n selectedApps\n }\n }\n\n case 'UPDATE_DATA_EXPORTER_QUERY': {\n const { dataExporterQuery } = payload\n\n return {\n ...state,\n dataExporterQuery\n }\n }\n\n case 'SET_DATA_EXPORTER_TABLE_DATA': {\n const { dataExporterTableData } = payload\n\n return {\n ...state,\n dataExporterTableData\n }\n }\n\n case 'SET_IS_FETCHING_DATA_EXPORTER_TABLE_DATA': {\n const { isFetchingDataExporterTableData } = payload\n\n return {\n ...state,\n isFetchingDataExporterTableData\n }\n }\n\n case 'SET_SAVED_REPORT_NAME': {\n const { name } = payload\n\n return {\n ...state,\n savedReportName: name\n }\n }\n\n case 'SET_IS_SAVING_REPORT': {\n const { isSavingReport } = payload\n\n return {\n ...state,\n isSavingReport,\n isSavingReportError: isSavingReport ? null : state.isSavingReportError\n }\n }\n\n case 'SET_IS_SAVING_REPORT_ERROR': {\n const { isSavingReportError } = payload\n\n return {\n ...state,\n isSavingReportError\n }\n }\n\n case 'SET_IS_DELETING_REPORT': {\n const { isDeletingReport } = payload\n\n return {\n ...state,\n isDeletingReport,\n isDeletingReportError: isDeletingReport\n ? null\n : state.isDeletingReportError\n }\n }\n\n case 'SET_IS_DELETING_REPORT_ERROR': {\n const { isDeletingReportError } = payload\n\n return {\n ...state,\n isDeletingReportError\n }\n }\n\n case 'SET_IS_FILTER_DIRTY': {\n const { isFilterDirty } = payload\n\n return {\n ...state,\n isFilterDirty\n }\n }\n\n default: {\n return state\n }\n }\n}\n\n/* eslint-disable react/prop-types */\nexport const ReportingFiltersProvider = ({\n apps,\n canGroupByTargetingTags = false,\n channels,\n channelsByReportType,\n children,\n countries,\n granularities,\n groupBysByReportingContext,\n groupBysByReportType,\n granularitiesByReportType,\n includeUnlinkedApps,\n savedReportsByReportType,\n targetingTags = []\n}) => {\n const location = useLocation()\n const reportPage = getReportPageFromPathname(location.pathname)\n const reportType = getReportTypeFromLocation(location)\n\n const [state, dispatch] = useReducer(\n reducer,\n getInitialState({\n apps,\n canGroupByTargetingTags,\n channels,\n channelsByReportType,\n countries,\n granularities,\n granularitiesByReportType,\n groupBysByReportType,\n groupBysByReportingContext,\n includeUnlinkedApps,\n reportPage,\n reportType,\n savedReportsByReportType,\n targetingTags\n })\n )\n\n return (\n \n \n {children}\n \n \n )\n}\n/* eslint-enable react/prop-types */\n\nexport const useReportingFiltersState = () => {\n const context = useContext(StateContext)\n\n if (isUndefined(context)) {\n throw new Error(\n 'useReportingFiltersState must be used within a ReportingFiltersProvider'\n )\n }\n\n return context\n}\n\nexport const useReportingFiltersDispatch = () => {\n const context = useContext(DispatchContext)\n\n if (isUndefined(context)) {\n throw new Error(\n 'useReportingFiltersDispatch must be used within a ReportingFiltersProvider'\n )\n }\n\n return context\n}\n\nexport const queryParamListOrDefault = ({\n alternativeQueryParamList,\n defaultProp,\n queryParamList\n}) => {\n if (isPresent(queryParamList)) {\n return queryParamList\n }\n\n if (isPresent(alternativeQueryParamList)) {\n return alternativeQueryParamList\n }\n\n return defaultProp || []\n}\n\nexport const getGranularityFromQuery = query =>\n query.get('granularity') || 'daily'\n\nexport const getEndDateFromQuery = ({ currentUser, date, query }) => {\n const endDateFromUrlParams = query.get('end_date')\n\n if (isPresent(endDateFromUrlParams)) {\n return endDateFromUrlParams\n }\n\n const { isDemoOrg } = currentUser\n\n if (isDemoOrg) {\n return DEMO_ORG_END_DATE_STR\n }\n\n return format(date, 'yyyy-MM-dd')\n}\n\nexport const getStartDateFromQuery = ({ currentUser, date, query }) => {\n const startDateFromUrlParams = query.get('start_date')\n\n if (isPresent(startDateFromUrlParams)) {\n return startDateFromUrlParams\n }\n\n const { isDemoOrg } = currentUser\n\n if (isDemoOrg) {\n return DEMO_ORG_START_DATE_STR\n }\n\n return format(subDays(date, 30), 'yyyy-MM-dd')\n}\n\nexport const getCohortStrategyFromQuery = ({ query }) =>\n query.get('cohort_strategy')\n\nexport const getSkGroupByFromQuery = ({ isDataExporter, query }) => {\n let groupBy = []\n\n if (isPresent(query.get('group_by'))) {\n groupBy = query.get('group_by').split(DELIMITER_QUERY_PARAM_LIST)\n }\n\n const isValidGroupBy =\n (isDataExporter &&\n groupBy.length >= MIN_DATA_EXPORTER_MULTI_GROUP_BY_COUNT) ||\n groupBy.length === MIN_MULTI_GROUP_BY_COUNT\n\n if (isValidGroupBy) {\n return groupBy\n }\n\n const firstBaseGroupByOption = BASE_SK_GROUP_BY_OPTS[0]\n const secondBaseGroupByOption = BASE_SK_GROUP_BY_OPTS[1]\n\n if (groupBy.length === 1) {\n if (groupBy.includes(firstBaseGroupByOption)) {\n groupBy.push(secondBaseGroupByOption)\n } else {\n groupBy.push(firstBaseGroupByOption)\n }\n\n return groupBy\n }\n\n return BASE_SK_GROUP_BY_OPTS\n}\n\nexport const getGroupByFromQuery = ({ query, reportPage }) => {\n if (isSkAdNetworkPage(reportPage)) return getSkGroupByFromQuery({ query })\n\n const groupBy = query.get('group_by')\n\n if (!isPresent(groupBy)) return BASE_GROUP_BY_STR\n\n const isInvalidGroupBy =\n groupBy === CREATIVE_GROUP_BY_ID_STR && reportPage !== CREATIVES_REPORT_STR\n\n if (isInvalidGroupBy) return BASE_GROUP_BY_STR\n\n return groupBy\n}\n\nexport const isGroupingByTargetingTags = groupBy =>\n groupBy.match(TARGETING_TAG_GROUPING_BY_PATTERN)\n\nexport const getUrlSearchParams = locationSearch =>\n new URLSearchParams(unescapeStr(locationSearch))\n\nexport const getFilteredAppIds = ({\n currentUser,\n defaultApps = [],\n queryParamList = [],\n location = { search: '' },\n allApps = []\n}) => {\n if (\n currentUser.isDemoOrg &&\n isEmpty(location?.search) &&\n (isEmpty(defaultApps) || defaultApps.length === allApps.length) &&\n allApps.includes(DEMO_APP_ID)\n ) {\n return [DEMO_APP_ID]\n }\n\n return queryParamListOrDefault({\n defaultProp: defaultApps,\n queryParamList\n })\n}\n\nexport const getDefaultQueryParams = ({\n currentUser,\n location,\n reportingFilters\n}) => {\n const {\n apps: allApps,\n countries: allCountries,\n channels,\n dataExporterChannels\n } = reportingFilters\n\n const reportPage = getReportPageFromPathname(location.pathname)\n const query = getUrlSearchParams(location.search)\n const date = new Date()\n\n const allChannels = isDataExporterPage(location)\n ? deepCamelKeys(dataExporterChannels)\n : channels\n\n const appIds = getFilteredAppIds({\n allApps: map(allApps, 'id'),\n currentUser,\n defaultApps: map(allApps, 'id'),\n location,\n queryParamList: union(query.getAll('app_ids[]'), query.getAll('apps[]'))\n })\n\n return {\n apps: appIds,\n channels: map(\n queryParamListOrDefault({\n defaultProp: map(allChannels, 'id'),\n queryParamList: union(\n query.getAll('ad_network_ids[]'),\n query.getAll('ad_networks[]')\n )\n }),\n toNumber\n ),\n countries: queryParamListOrDefault({\n defaultProp: map(allCountries, 'id'),\n queryParamList: query.getAll('countries[]')\n }),\n endDate: getEndDateFromQuery({ currentUser, date, query }),\n granularity: getGranularityFromQuery(query),\n groupBy: getGroupByFromQuery({ query, reportPage }),\n startDate: getStartDateFromQuery({ currentUser, date, query }),\n ...pickBy({ cohortStrategy: getCohortStrategyFromQuery({ query }) })\n }\n}\n\nconst getValidAppWithClaimedSkApp = ({ allApps, query }) => {\n let validAppWithClaimedSkApp\n\n const appsIdsFromQuery = union(\n query.getAll('app_ids[]'),\n query.getAll('apps[]')\n )\n\n if (appsIdsFromQuery && appsIdsFromQuery.length > 0) {\n validAppWithClaimedSkApp = allApps.find(app =>\n appsIdsFromQuery.includes(app.id)\n )\n } else {\n validAppWithClaimedSkApp = allApps.find(app => app.numSkApps > 0)\n }\n\n return validAppWithClaimedSkApp\n}\n\nexport const getSkQueryParams = ({\n currentUser,\n location,\n reportingFilters\n}) => {\n const { apps: allApps, channels, dataExporterChannels } = reportingFilters\n\n const isDataExporter = isDataExporterPage(location)\n\n const allChannels = isDataExporter\n ? deepCamelKeys(dataExporterChannels)\n : channels\n\n const query = getUrlSearchParams(location.search)\n const date = new Date()\n\n const validAppWithClaimedSkApp = getValidAppWithClaimedSkApp({\n allApps,\n query\n })\n\n return {\n apps: validAppWithClaimedSkApp ? [validAppWithClaimedSkApp.id] : [],\n channels: map(\n queryParamListOrDefault({\n defaultProp: map(allChannels, 'id'),\n queryParamList: union(\n query.getAll('ad_network_ids[]'),\n query.getAll('ad_networks[]')\n )\n }),\n toNumber\n ),\n endDate: getEndDateFromQuery({ currentUser, date, query }),\n granularity: getGranularityFromQuery(query),\n groupBy: getSkGroupByFromQuery({ isDataExporter, query }),\n startDate: getStartDateFromQuery({ currentUser, date, query })\n }\n}\n\nexport const getQueryParams = ({ currentUser, location, reportingFilters }) => {\n const reportPage = getReportPageFromPathname(location.pathname)\n\n const queryParamsFn = isSkAdNetworkPage(reportPage)\n ? getSkQueryParams\n : getDefaultQueryParams\n\n return queryParamsFn({ currentUser, location, reportingFilters })\n}\n\nexport const getEventNameFromQuery = query =>\n query.get('event_name') || '_purchase'\n\nconst buildDefaultQueryParams = ({\n currentUser,\n location = { search: '' }\n}) => {\n const reportPage = getReportPageFromPathname(location.pathname || '')\n const query = getUrlSearchParams(location.search)\n const date = new Date()\n\n const apps = getFilteredAppIds({\n currentUser,\n defaultApps: [],\n location,\n queryParamList: union(query.getAll('app_ids[]'), query.getAll('apps[]'))\n })\n\n const channels = queryParamListOrDefault({\n defaultProp: null,\n queryParamList: union(\n query.getAll('ad_network_ids[]'),\n query.getAll('ad_networks[]')\n )\n })\n\n const countries = queryParamListOrDefault({\n defaultProp: null,\n queryParamList: query.getAll('countries[]')\n })\n\n const eventName = isCustomReportPage(reportPage)\n ? getEventNameFromQuery(query)\n : null\n\n return pickBy({\n adNetworkIds: channels,\n appIds: apps,\n cohortStrategy: getCohortStrategyFromQuery({ query }),\n countries,\n endDate: getEndDateFromQuery({ currentUser, date, query }),\n eventName,\n granularity: getGranularityFromQuery(query),\n groupBy: getGroupByFromQuery({ query, reportPage }),\n startDate: getStartDateFromQuery({ currentUser, date, query })\n })\n}\n\nexport const buildSkQueryParams = ({\n currentUser,\n location,\n reportingFilters\n}) => {\n const { apps: allApps } = reportingFilters\n\n const query = getUrlSearchParams(location.search)\n const date = new Date()\n\n const channels = queryParamListOrDefault({\n defaultProp: null,\n queryParamList: union(\n query.getAll('ad_network_ids[]'),\n query.getAll('ad_networks[]')\n )\n })\n\n const validAppWithClaimedSkApp = getValidAppWithClaimedSkApp({\n allApps,\n query\n })\n\n return pickBy({\n adNetworkIds: channels,\n appIds: validAppWithClaimedSkApp ? [validAppWithClaimedSkApp.id] : null,\n endDate: getEndDateFromQuery({ currentUser, date, query }),\n granularity: 'daily',\n groupBy: getSkGroupByFromQuery({ query })[0],\n startDate: getStartDateFromQuery({ currentUser, date, query })\n })\n}\n\nexport const buildQueryParams = ({\n currentUser,\n location,\n reportingFilters\n}) => {\n const reportPage = getReportPageFromPathname(location.pathname)\n\n if (isSkAdNetworkPage(reportPage)) {\n return buildSkQueryParams({ currentUser, location, reportingFilters })\n }\n return buildDefaultQueryParams({ currentUser, location })\n}\n\nexport const getReportTypeByReportPage = reportPage => {\n if (isPublisherPage(reportPage)) {\n return PUBLISHER_REPORT_TYPE_STR\n }\n\n if (isSkAdNetworkPage(reportPage)) {\n return SK_AD_NETWORK_REPORT_TYPE_STR\n }\n\n return USER_ACQUISITION_REPORT_TYPE_STR\n}\n\nexport const getReportPageByReportType = reportType => {\n if (isPublisherReport(reportType)) {\n return PUBLISHER_PAGE_STR\n }\n\n if (isSkAdNetworkReport(reportType)) {\n return SK_AD_NETWORK_PAGE_STR\n }\n\n return OVERVIEW_REPORT_STR\n}\n\nexport const getDefaultComparisonByGroupBy = groupBy => {\n const firstGroupBy = groupBy[0]\n\n return {\n groupBy: firstGroupBy,\n id: ALL_GROUP_BY_ID_STR,\n name: ALL_GROUP_BY_ID_STR\n }\n}\n\nexport const getMetricColumnsByReportType = ({\n location,\n metricColumnsByReport,\n reportType\n}) => {\n if (!metricColumnsByReport) {\n return []\n }\n\n const query = getUrlSearchParams(location.search)\n const reportPage = getReportPageByReportType(reportType)\n\n const legacyUrlMetrics = query.get('metrics')\n ? query.get('metrics').split(DELIMITER_QUERY_PARAM_LIST)\n : []\n\n const metrics = queryParamListOrDefault({\n alternativeQueryParamList: camelCaseMetrics(legacyUrlMetrics),\n defaultProp: metricColumnsByReport[reportPage],\n queryParamList: camelCaseMetrics(query.getAll('metrics[]'))\n })\n\n return metrics\n}\n\nexport const processSavedReportForDataExporter = ({\n savedReport,\n reportingFilters\n}) => {\n const date = new Date()\n const dateFormat = 'yyyy-MM-dd'\n\n const processedSavedReport = deepCamelKeys({\n ...savedReport,\n ad_network_ids: map(savedReport.ad_network_ids, Number),\n currentEndDate: format(date, dateFormat),\n currentStartDate: format(\n subDays(date, savedReport.past_number_days),\n dateFormat\n ),\n metrics: camelCaseMetrics(savedReport.metrics)\n })\n\n if (isEmpty(processedSavedReport.adNetworkIds)) {\n processedSavedReport.adNetworkIds = map(reportingFilters.channels, 'id')\n }\n\n if (isEmpty(processedSavedReport.countries)) {\n processedSavedReport.countries = map(reportingFilters.countries, 'id')\n }\n\n if (isEmpty(processedSavedReport.appIds)) {\n processedSavedReport.appIds = map(reportingFilters.apps, 'id')\n }\n\n return processedSavedReport\n}\n\nexport const getSavedReportFromLocation = ({\n location,\n reportingFilters,\n reportType\n}) => {\n const query = new URLSearchParams(location.search)\n\n const savedReportId = query.get('saved_report_id')\n\n if (!savedReportId) {\n return null\n }\n\n const savedReports =\n reportingFilters.savedReportsByReportType[reportType] || []\n const savedReport = find(savedReports, { id: savedReportId })\n\n return savedReport\n ? processSavedReportForDataExporter({ reportingFilters, savedReport })\n : null\n}\n\nexport const getSavedReportPayloadFromFilters = ({\n reportingFilters,\n reportType\n}) => {\n const { dataExporterQuery, savedReportName } = reportingFilters\n\n const {\n appIds,\n adNetworkIds,\n countries,\n endDate,\n granularity,\n groupBy,\n metrics,\n startDate\n } = dataExporterQuery\n\n const pastNumberDays = differenceInCalendarDays(\n parse(endDate, 'yyyy-MM-dd', new Date()),\n parse(startDate, 'yyyy-MM-dd', new Date())\n )\n\n const payload = {\n adNetworkIds: adNetworkIds || [],\n appIds: appIds || [],\n countries: countries || [],\n granularity,\n groupBy,\n metrics: map(metrics, metric => snakeCase(metric)),\n name: savedReportName,\n pastNumberDays,\n reportType\n }\n\n return deepSnakeKeys(payload)\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport {\n VALID_ANIMATED_OPTIONS,\n VALID_FLIP_OPTIONS,\n VALID_LIST_OPTIONS,\n VALID_PULLED_OPTIONS,\n VALID_ROTATE_OPTIONS,\n VALID_SIZE_OPTIONS,\n VALID_TYPE_OPTIONS\n} from './constants'\n\nconst FontAwesomeIcon = ({\n animated,\n ariaLabel,\n className: classNameProp,\n flip,\n icon,\n isBordered,\n isFixedWidth,\n isInverse,\n list,\n onClick,\n pulled,\n rotate,\n size,\n style,\n type\n}) => {\n const className = classNames(classNameProp, `fa-${icon}`, {\n [`fa-${animated}`]: VALID_ANIMATED_OPTIONS.has(animated),\n [`fa-${flip}`]: VALID_FLIP_OPTIONS.has(flip),\n 'fa-border': isBordered,\n 'fa-fw': isFixedWidth,\n 'fa-inverse': isInverse,\n [`fa-${list}`]: VALID_LIST_OPTIONS.has(list),\n [`fa-${pulled}`]: VALID_PULLED_OPTIONS.has(pulled),\n [`fa-${rotate}`]: VALID_ROTATE_OPTIONS.has(rotate),\n [`fa-${size}`]: VALID_SIZE_OPTIONS.has(size),\n [type]: VALID_TYPE_OPTIONS.has(type)\n })\n\n return (\n false}\n role=\"link\"\n style={style}\n tabIndex={0}\n />\n )\n}\n\nFontAwesomeIcon.propTypes = {\n animated: PropTypes.oneOf([null, ...VALID_ANIMATED_OPTIONS]),\n ariaLabel: PropTypes.string,\n className: PropTypes.string,\n flip: PropTypes.oneOf([null, ...VALID_FLIP_OPTIONS]),\n icon: PropTypes.string.isRequired,\n isBordered: PropTypes.bool,\n isFixedWidth: PropTypes.bool,\n isInverse: PropTypes.bool,\n list: PropTypes.oneOf([null, ...VALID_LIST_OPTIONS]),\n onClick: PropTypes.func,\n pulled: PropTypes.oneOf([null, ...VALID_PULLED_OPTIONS]),\n rotate: PropTypes.oneOf([null, ...VALID_ROTATE_OPTIONS]),\n size: PropTypes.oneOf([null, ...VALID_SIZE_OPTIONS]),\n style: PropTypes.object, // eslint-disable-line react/forbid-prop-types\n type: PropTypes.oneOf([...VALID_TYPE_OPTIONS])\n}\n\nFontAwesomeIcon.defaultProps = {\n animated: null,\n ariaLabel: '',\n className: '',\n flip: null,\n isBordered: false,\n isFixedWidth: false,\n isInverse: false,\n list: null,\n onClick: () => {},\n pulled: null,\n rotate: null,\n size: null,\n style: {},\n type: 'fas'\n}\n\nexport default FontAwesomeIcon\n","export const PUBLISHER_PAGE_STR = 'publisher'\nexport const SK_AD_NETWORK_PAGE_STR = 'sk_ad_network'\n\nexport const CREATIVES_REPORT_STR = 'creatives'\nexport const CUSTOM_REPORT_STR = 'custom'\nexport const OVERVIEW_REPORT_STR = 'overview'\n\nexport const PUBLISHER_CONTEXT_STR = 'am'\nexport const SK_AD_NETWORK_CONTEXT_STR = 'sk'\nexport const ADVERTISER_CONTEXT_STR = 'ua'\n\nexport const USER_ACQUISITION_REPORT_TYPE_STR = 'user_acquisition'\nexport const PUBLISHER_REPORT_TYPE_STR = 'ad_revenue'\nexport const SK_AD_NETWORK_REPORT_TYPE_STR = 'sk_ad_network_report'\n\nexport const ALL_GROUP_BY_ID_STR = 'all'\nexport const CREATIVE_GROUP_BY_ID_STR = 'creative'\nexport const SITE_ID_GROUP_BY_ID_STR = 'site_id'\n\nexport const REPORT_TYPE_LABEL_MAPPING = {\n [PUBLISHER_REPORT_TYPE_STR]: 'Ad Monetization',\n [SK_AD_NETWORK_REPORT_TYPE_STR]: 'Sk Ad Network',\n [USER_ACQUISITION_REPORT_TYPE_STR]: 'User Acquisition'\n}\n\nexport const MIN_MULTI_GROUP_BY_COUNT = 2\nexport const MIN_DATA_EXPORTER_MULTI_GROUP_BY_COUNT = 1\n\nexport const DATA_EXPORTER_PATH = '/dashboard/data_exporter'\n\nexport const UNAVAILABLE_CHANNEL = {\n iconUrl: '',\n id: -1,\n logo: {\n icon: { url: null },\n retinaThumb: { url: null },\n thumb: { url: null },\n url: null\n },\n name: 'Unavailable Channel'\n}\n\nexport const UNLINKED_APPS = {\n bundleId: null,\n iconUrl: null,\n id: '00000000-0000-0000-0000-000000000000',\n name: 'Unlinked Apps',\n numSkApps: 0,\n platform: null,\n storeId: null\n}\n\nexport const DELIMITER_QUERY_PARAM_LIST = ','\n","import { range } from 'lodash'\n\nexport const APP_INTEGRATION_PATH = '/dashboard/integrations'\nexport const TEXT_ATTRIBUTION_WINDOW = 'App Attribution Windows'\nexport const TEXT_APP_CHANNEL_ATTRIBUTION_WINDOW =\n 'Ad Network Attribution Windows'\nexport const TEXT_ATTRIBUTION_WINDOW_DESCRIPTION = `We support device matching and probabilistic matching \n for click-based and impression-based attribution. \n These settings will apply to all attribution sources, including SANs.`\nexport const TEXT_UPDATE_ERROR_MESSAGE =\n 'Something went wrong with the last request. Please try again.'\nexport const TEXT_CHANNEL_SELECTOR_TITLE =\n 'Select an Ad Network and adjust or view additional Attribution Settings below.'\nexport const TEXT_CHANNEL_SELECTOR_MESSAGE =\n \"Can't find the Ad Network you're looking for? Make sure you've added it in the\"\nexport const TEXT_CHANNEL_SELECTOR_MESSAGE_END = 'tab first.'\nexport const TEXT_APP_INSTRUCTIONS =\n 'These are the default attribution settings for this app and will apply to all attribution sources, including SANs.'\nexport const TEXT_APP_CHANNEL_INSTRUCTIONS =\n 'To minimize data discrepancies between Tenjin and this self-attributing ad network, use the same attribution window settings across both services.'\nexport const TEXT_OVERRIDE_APP_SETTINGS_TOOLTIP =\n 'App x Ad Network Settings override settings for this App.'\n\nexport const TEXT_CUSTOM_ATTRIBUTION_WINDOW_NOT_SUPPORTED =\n 'does not currently support custom attribution windows.'\n\nexport const TEXT_APP = 'App'\nexport const TEXT_CHANNELS = 'Channels'\nexport const TEXT_CLICK_THROUGH_ATTRIBUTION = 'Click-Through Attribution'\nexport const TEXT_VIEW_THROUGH_ATTRIBUTION = 'View-Through Attribution'\nexport const TEXT_AD_NETWORK_WINDOW = 'Ad Network Window'\nexport const TEXT_WINDOW = 'Window'\nexport const TEXT_APP_WINDOW = 'App Window'\nexport const TEXT_OVERRIDE_APP_SETTINGS = 'Override App Settings'\nexport const TEXT_DAYS = 'Days'\nexport const TEXT_HOURS = 'Hours'\nexport const TEXT_EDIT_BUTTON = 'Edit Attribution Window'\nexport const TEXT_DAYS_RANGE = '1-30 days'\nexport const TEXT_HOURS_RANGE = '1-24 hours'\n\nexport const ERROR_MESSAGE_AUTO_CLOSE_DELAY = 3500\nexport const DEFAULT_WINDOW_TIME_VALUE = 0\nexport const HOURS_TIME_RANGE = range(0, 25)\nexport const DAYS_TIME_RANGE = range(0, 31)\n\nexport const TYPE_DAYS = 'days'\nexport const TYPE_HOURS = 'hours'\nexport const TYPE_DETERMINISTIC = 'deterministic'\nexport const TYPE_PROBABILISTIC = 'probabilistic'\nexport const TYPE_CLICK = 'click'\nexport const TYPE_IMPRESSION = 'impression'\n\nexport const WINDOW_TYPE_DETERMINISTIC_CLICK =\n 'deterministicClickAttributionWindow'\nexport const WINDOW_TYPE_DETERMINISTIC_IMPRESSION =\n 'deterministicImpressionAttributionWindow'\nexport const WINDOW_TYPE_PROBABILISTIC_CLICK =\n 'probabilisticClickAttributionWindow'\nexport const WINDOW_TYPE_PROBABILISTIC_IMPRESSION =\n 'probabilisticImpressionAttributionWindow'\n\nexport const ATTRIBUTION_WINDOW_LEVEL_KEY_APP = 'APP'\nexport const ATTRIBUTION_WINDOW_LEVEL_KEY_APP_CHANNEL = 'APP_CHANNEL'\nexport const ATTRIBUTION_WINDOW_LEVEL_KEY_CHANNEL = 'CHANNEL'\nexport const ATTRIBUTION_TYPE_KEY_CLICK = 'CLICK'\nexport const ATTRIBUTION_TYPE_KEY_IMPRESSION = 'IMPRESSION'\n\nexport const ATTRIBUTION_WINDOW_LEVEL = {\n [ATTRIBUTION_WINDOW_LEVEL_KEY_APP]: 'app',\n [ATTRIBUTION_WINDOW_LEVEL_KEY_APP_CHANNEL]: 'appChannel',\n [ATTRIBUTION_WINDOW_LEVEL_KEY_CHANNEL]: 'channel'\n}\n\nexport const ATTRIBUTION_TYPE = {\n [ATTRIBUTION_TYPE_KEY_CLICK]: {\n DETERMINISTIC: WINDOW_TYPE_DETERMINISTIC_CLICK,\n PROBABILISTIC: WINDOW_TYPE_PROBABILISTIC_CLICK\n },\n [ATTRIBUTION_TYPE_KEY_IMPRESSION]: {\n DETERMINISTIC: WINDOW_TYPE_DETERMINISTIC_IMPRESSION,\n PROBABILISTIC: WINDOW_TYPE_PROBABILISTIC_IMPRESSION\n }\n}\nexport const ATTRIBUTION_TYPE_LABEL = {\n [ATTRIBUTION_TYPE_KEY_CLICK]: TEXT_CLICK_THROUGH_ATTRIBUTION,\n [ATTRIBUTION_TYPE_KEY_IMPRESSION]: TEXT_VIEW_THROUGH_ATTRIBUTION\n}\n\nexport const ATTRIBUTION_LEVEL_WINDOW_LABEL = {\n [ATTRIBUTION_WINDOW_LEVEL_KEY_APP]: TEXT_APP_WINDOW,\n [ATTRIBUTION_WINDOW_LEVEL_KEY_APP_CHANNEL]: TEXT_APP_WINDOW\n}\n\nexport const ATTRIBUTION_WINDOW_KEYS = [\n WINDOW_TYPE_DETERMINISTIC_CLICK,\n WINDOW_TYPE_DETERMINISTIC_IMPRESSION,\n WINDOW_TYPE_PROBABILISTIC_CLICK,\n WINDOW_TYPE_PROBABILISTIC_IMPRESSION\n]\n\nexport const APP_ATTRIBUTION_WINDOWS = {\n [WINDOW_TYPE_DETERMINISTIC_CLICK]: {\n label: 'Device Matching',\n tooltip: 'Used when the ad engagement is a click and the device ID is known'\n },\n [WINDOW_TYPE_DETERMINISTIC_IMPRESSION]: {\n label: 'Device Matching',\n tooltip:\n 'Used when the ad engagement is an impression and the device ID is known'\n },\n [WINDOW_TYPE_PROBABILISTIC_CLICK]: {\n label: 'Probabilistic Matching',\n tooltip:\n 'Used when the ad engagement is a click and the device ID is not known'\n },\n [WINDOW_TYPE_PROBABILISTIC_IMPRESSION]: {\n label: 'Probabilistic Matching',\n tooltip:\n 'Used when the ad engagement is an impression and the device ID is not known'\n }\n}\n\nexport const SECONDS_IN_DAY = 86400\nexport const SECONDS_IN_HOUR = 3600\nexport const DAYS_IN_WEEK = 7\nexport const HOURS_IN_DAY = 24\n","import { snakeCase } from 'snake-case'\n\nimport {\n ADVERTISER_CONTEXT_STR,\n PUBLISHER_CONTEXT_STR,\n SK_AD_NETWORK_CONTEXT_STR\n} from '../ReportingFilters/constants'\nimport {\n buildAppleMetricKey,\n buildXDayMetricKey,\n getOverrideableCustomEventAttributes,\n mergeParentMetricDefinitionWithXDayAttributes\n} from './helpers'\n\nexport const XDAYS_LIST = [\n 0, 1, 2, 3, 4, 5, 6, 7, 14, 30, 60, 90, 120, 150, 180, 365\n]\n\n// calculatedAsLabel\nexport const AVERAGE_CALCULATION_LABEL = 'AVERAGE'\nexport const TOTAL_CALCULATION_LABEL = 'TOTAL'\n\n// onboardingRequirements\nexport const AM_CHANNEL_REQUIREMENT = 'am_channel'\nexport const APP_REQUIREMENT = 'app'\nexport const UA_CHANNEL_REQUIREMENT = 'ua_channel'\nexport const SDK_REQUIREMENT = 'sdk'\n\n// valueType\nexport const CURRENCY_VALUE_TYPE = 'currency'\nexport const NUMBER_VALUE_TYPE = 'number'\nexport const PERCENTAGE_VALUE_TYPE = 'percentage'\nexport const WHOLE_NUMBER_VALUE_TYPE = 'wholeNumber'\n\n// yAxis\nconst AD_REVENUE_Y_AXIS = 'Ad Revenue ($)'\nconst AD_ROI_PCT_Y_AXIS = 'Ad ROI (%)'\nconst AD_RPU_Y_AXIS = 'Ad RPU ($)'\nconst AD_MEDIATION_RPU_Y_AXIS = 'Ad Mediation RPU ($)'\nexport const AMOUNT_Y_AXIS = 'Amount ($)'\nconst AVERAGE_Y_AXIS = 'Avg'\nconst CLICKS_Y_AXIS = 'Clicks'\nconst CP_USER_Y_AXIS = 'Cost per User ($)'\nconst DIFF_PERCENT_Y_AXIS = 'Difference (%)'\nconst DIFFERENCE_Y_AXIS = 'Difference'\nconst EVENTS_Y_AXIS = 'Events'\nconst FRAUD_Y_AXIS = 'Fraud'\nconst IAP_REVENUE_Y_AXIS = 'IAP Revenue ($)'\nconst IAP_ROI_Y_AXIS = 'IAP ROI (%)'\nconst IAP_RPU_Y_AXIS = 'IAP RPU ($)'\nconst IMPRESSIONS_Y_AXIS = 'Impressions'\nconst INSTALLS_Y_AXIS = 'Installs'\nconst PERCENTAGE_Y_AXIS = 'Percentage (%)'\nconst PURCHASES_Y_AXIS = 'Purchases'\nconst REINSTALLS_Y_AXIS = 'Tracked Reinstalls'\nconst RETENTION_PCT_Y_AXIS = 'Retention (%)'\nconst SESSIONS_Y_AXIS = 'Sessions'\nconst TOTAL_AD_MEDIATION_PROFIT_MARGIN_Y_AXIS =\n 'Total Ad Mediation Profit Margin ($)'\nconst TOTAL_PROFIT_MARGIN_Y_AXIS = 'Total Profit Margin ($)'\nconst TOTAL_COUNT_Y_AXIS = 'Total Count'\nconst TOTAL_REVENUE_Y_AXIS = 'Total Revenue ($)'\nconst TOTAL_ROAS_Y_AXIS = 'Total ROAS (%)'\nconst TOTAL_ROI_Y_AXIS = 'Total ROI (%)'\nconst TOTAL_RPU_Y_AXIS = 'Total RPU ($)'\n\n// Tooltip Datasources\nexport const DATASOURCE_AD_NETWORK = 'Ad Network'\nexport const DATASOURCE_APPLE_SKAN = 'Apple / Skadnetwork'\nexport const DATASOURCE_CUSTOM = 'Custom'\nexport const DATASOURCE_TENJIN = 'Tenjin'\nexport const DATASOURCE_TENJIN_AD_NETWORK = 'Tenjin + Ad Network'\n\nexport const TOOLTIP_MISSING_FORMULA = ''\nexport const TOOLTIP_MISSING_DESC = ''\n\nexport const METRIC_CATEGORY_DEFINITIONS = [\n {\n id: 'adEngagement',\n label: 'Ad Engagement',\n tooltip: 'Metrics that assess user interaction with ads and campaigns'\n },\n {\n id: 'adEngagementAm',\n label: 'Ad Engagement (AM)',\n tooltip: 'Metrics that assess user interaction with ads shown on the app'\n },\n {\n id: 'adMediation',\n label: 'Ad Mediation',\n tooltip: 'Ad mediation metrics aggregated from the SDK'\n },\n {\n id: 'adNetwork',\n label: 'Ad Network',\n tooltip: 'Metrics reported directly from channels'\n },\n {\n id: 'adNetworkSkan',\n label: 'Ad Network (SKAN)',\n tooltip:\n 'Metrics aggregated using SKAN postbacks received from ad network or in some cases, using partner reporting APIs'\n },\n {\n id: 'all',\n label: 'All Metrics',\n order: 1,\n tooltip: 'A comprehensive list of metrics available across all reports'\n },\n {\n id: 'apple',\n label: 'Apple',\n tooltip: 'Metrics aggregated using the developer copy of SKAN postbacks'\n },\n {\n id: 'cohorted',\n label: 'Cohorted',\n tooltip:\n 'Metrics that analyze user groups (cohorts) based on shared characteristics, such as acquisition date, to track performance and behavior over time'\n },\n {\n id: 'composite',\n label: 'Composite',\n tooltip: 'Metrics derived using Tracked and Ad Network data sources'\n },\n {\n id: 'cost',\n label: 'Cost',\n tooltip: 'Metrics that measure how much is spent to acquire or engage users'\n },\n {\n id: 'fraud',\n label: 'Fraud',\n tooltip:\n 'Metrics that identify and measure suspicious or fraudulent activities'\n },\n {\n id: 'inAppMetrics',\n label: 'In-App Metrics',\n tooltip: 'Metrics that track in-app events'\n },\n {\n id: 'measured',\n label: 'Measured',\n tooltip: 'Metrics reported by Tenjin using events or ad engagements data'\n },\n {\n id: 'new',\n label: 'New Metrics',\n order: 2,\n tooltip: 'Recently introduced metrics now available for use'\n },\n {\n id: 'nonCohorted',\n label: 'Non-Cohorted',\n tooltip:\n 'Metrics that aggregate data across all users, providing an overall snapshot without splitting by groups or acquisition dates.'\n },\n {\n id: 'retention',\n label: 'Retention',\n tooltip:\n 'Metrics that evaluate how long users stay engaged after acquisition'\n },\n {\n id: 'revenue',\n label: 'Revenue',\n tooltip: 'Metrics that measure revenue generation from campaigns'\n },\n {\n id: 'tracked',\n label: 'Tracked',\n tooltip: 'Metrics reported by Tenjin using the SDK or S2S integration'\n }\n]\n\nexport const METRIC_CATEGORY = METRIC_CATEGORY_DEFINITIONS.reduce(\n (mapping, category) => ({\n ...mapping,\n [category.id]: category,\n [snakeCase(category.id).toUpperCase()]: category\n }),\n {}\n)\n\nexport const BASE_METRIC_DEFINITIONS = [\n {\n abbreviatedName: 'Reported Ad Revenue',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.AD_NETWORK,\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AD_REVENUE_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_AD_NETWORK,\n desc: 'Total Ad Revenue reported by Ad Network ($)',\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/docs/ad-monetization-ad-revenue',\n title: 'Reported Ad Revenue'\n }\n },\n context: [PUBLISHER_CONTEXT_STR],\n displayName: 'Reported Ad Revenue',\n key: 'adRevenue',\n keywords: '',\n onboardingRequirements: [AM_CHANNEL_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: 'Total Fraud Events',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.FRAUD,\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: FRAUD_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Sum of blocked clicks and fradulent purchases',\n formula: 'Blocked Clicks + Fraudulent Purchases',\n link: 'https://docs.tenjin.com/docs/en/fraud',\n title: 'Total Fraud Events'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Total Fraud Events',\n key: 'allFraud',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'Blocked Clicks',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.FRAUD,\n METRIC_CATEGORY.COMPOSITE,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: CLICKS_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: 'The number of clicks we blocked based on mean time to install (MTTI). We currently use 1 second for the MTTI threshold as default.',\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/docs/en/fraud',\n title: 'Blocked Clicks'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Blocked Clicks',\n key: 'blockedClicks',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'Blocked Device Events',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.FRAUD,\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: EVENTS_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Number of test device events',\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/docs/en/fraud',\n title: 'Blocked Device Events'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Blocked Device Events',\n key: 'blockedDeviceEvents',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'Reported Clicks',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.AD_NETWORK,\n METRIC_CATEGORY.AD_ENGAGEMENT,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: CLICKS_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_AD_NETWORK,\n desc: 'Number of times the ad was clicked reported by Ad Networks',\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/docs/clicks-tracked-reported',\n title: 'Reported Clicks'\n }\n },\n context: [ADVERTISER_CONTEXT_STR, PUBLISHER_CONTEXT_STR],\n displayName: 'Reported Clicks',\n key: 'clicks',\n keywords: '',\n onboardingRequirements: [UA_CHANNEL_REQUIREMENT],\n valueType: WHOLE_NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'Clicks Diff',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.COMPOSITE,\n METRIC_CATEGORY.AD_ENGAGEMENT,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: DIFF_PERCENT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: 'Total Clicks Difference',\n formula:\n 'Total Clicks reported by ad network - (Total Tracked Clicks by Tenjin WHEN Click is not Organic)',\n link: 'https://docs.tenjin.com/docs/clicks-tracked-reported',\n title: 'Clicks Difference'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Clicks Difference',\n key: 'clicksDifference',\n keywords: '',\n onboardingRequirements: [\n APP_REQUIREMENT,\n SDK_REQUIREMENT,\n UA_CHANNEL_REQUIREMENT\n ],\n valueType: NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'Clicks Difference Percent',\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.COMPOSITE,\n METRIC_CATEGORY.AD_ENGAGEMENT,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: DIFF_PERCENT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: 'Average Clicks Difference Percentage (%)',\n formula:\n '100 - 100 * Tracked Clicks by Tenjin / Reported Clicks by ad network',\n link: 'https://docs.tenjin.com/docs/clicks-tracked-reported',\n title: 'Average Clicks Difference Percentage (%)'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Clicks Difference Percent',\n key: 'clicksDifferencePct',\n keywords: '',\n onboardingRequirements: [\n APP_REQUIREMENT,\n SDK_REQUIREMENT,\n UA_CHANNEL_REQUIREMENT\n ],\n valueType: PERCENTAGE_VALUE_TYPE\n },\n {\n abbreviatedName: 'Ad Network SKAN Installs',\n buildAppleVariant: () => ({\n abbreviatedName: 'Apple SKAN Installs',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [METRIC_CATEGORY.APPLE, METRIC_CATEGORY.NON_COHORTED],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n tooltip: {\n dataSource: DATASOURCE_APPLE_SKAN,\n desc: 'Number of Conversion postbacks forwarded by Apple (includes redownloads and first downloads) \\n In iOS 15.0, Apple introduced postback copies for developers for all versions of SKAdNetork. Which means that Apple metrics contain postbacks coming from iOS 15.0 and above versions',\n formula: 'Apple SKAN Reinstalls + Apple SKAN First Installs',\n link: 'https://docs.tenjin.com/docs/skadnetwork-report',\n title: 'Apple SKAN Installs'\n }\n },\n context: [SK_AD_NETWORK_CONTEXT_STR],\n displayName: 'Apple SKAN Installs',\n key: buildAppleMetricKey({ metric: 'conversionValueCount' }),\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n }),\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [METRIC_CATEGORY.AD_NETWORK_SKAN, METRIC_CATEGORY.NON_COHORTED],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n skAdNetworkReport: {\n kpiCard: {\n isVisible: true,\n position: 1\n }\n },\n tooltip: {\n dataSource: DATASOURCE_AD_NETWORK,\n desc: 'Number of Conversion postbacks forwarded by Ad Networks (includes redownloads and first downloads)',\n formula: 'Ad Network SKAN Reinstalls + Ad Network SKAN First Installs',\n link: 'https://docs.tenjin.com/docs/skadnetwork-report',\n title: 'Ad Network SKAN Installs'\n }\n },\n context: [SK_AD_NETWORK_CONTEXT_STR],\n displayName: 'Ad Network SKAN Installs',\n hasAppleVariant: true,\n key: 'conversionValueCount',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'Avg CV of Ad Network SKAN Installs',\n buildAppleVariant: () => ({\n abbreviatedName: 'Avg CV of Apple SKAN Installs',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [METRIC_CATEGORY.APPLE, METRIC_CATEGORY.NON_COHORTED],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n tooltip: {\n dataSource: DATASOURCE_APPLE_SKAN,\n desc: 'Average of Conversion Values forwarded by Apple (includes redownloads and first downloads)',\n formula:\n 'Avg(CV) WHEN (Apple SKAN Reinstalls OR Apple SKAN First Installs)',\n link: 'https://docs.tenjin.com/docs/skadnetwork-report',\n title: 'Average Conversion Value of Apple SKAN Installs'\n }\n },\n context: [SK_AD_NETWORK_CONTEXT_STR],\n displayName: 'Average Conversion Value of Apple SKAN Installs',\n key: buildAppleMetricKey({ metric: 'conversionValueAvg' }),\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n }),\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [METRIC_CATEGORY.AD_NETWORK_SKAN, METRIC_CATEGORY.NON_COHORTED],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n skAdNetworkReport: {\n kpiCard: {\n isVisible: true,\n position: 2\n }\n },\n tooltip: {\n dataSource: DATASOURCE_AD_NETWORK,\n desc: 'Average of Conversion Values forwarded by Ad Networks (includes redownloads and first downloads)',\n formula:\n 'Avg(CV) WHEN (Ad Network SKAN Reinstalls OR Ad Network SKAN First Installs)',\n link: 'https://docs.tenjin.com/docs/skadnetwork-report',\n title: 'Average Conversion Value of Ad Network SKAN Installs'\n }\n },\n context: [SK_AD_NETWORK_CONTEXT_STR],\n displayName: 'Average Conversion Value of Ad Network SKAN Installs',\n hasAppleVariant: true,\n key: 'conversionValueAvg',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'CV Sum of Ad Network SKAN Installs',\n buildAppleVariant: () => ({\n abbreviatedName: 'CV Sum of Apple SKAN Installs',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [METRIC_CATEGORY.APPLE, METRIC_CATEGORY.NON_COHORTED],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n tooltip: {\n dataSource: DATASOURCE_APPLE_SKAN,\n desc: 'Sum of Conversion Values forwarded by Apple',\n formula:\n 'Sum(CV) WHEN (Apple SKAN Reinstalls OR Apple SKAN First Installs)',\n link: 'https://docs.tenjin.com/docs/skadnetwork-report',\n title: 'Sum of Conversion Values of Apple SKAN Installs'\n }\n },\n context: [SK_AD_NETWORK_CONTEXT_STR],\n displayName: 'Sum of Conversion Values of Apple SKAN Installs',\n key: buildAppleMetricKey({ metric: 'conversionValueTotal' }),\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n }),\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [METRIC_CATEGORY.AD_NETWORK_SKAN, METRIC_CATEGORY.NON_COHORTED],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: TOTAL_COUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_AD_NETWORK,\n desc: 'Sum of Conversion Values forwarded by Ad Networks (includes redownloads and first downloads)',\n formula:\n 'Sum(CV) WHEN (Ad Network SKAN Reinstalls OR Ad Network SKAN First Installs)',\n link: 'https://docs.tenjin.com/docs/skadnetwork-report',\n title: 'Sum of Conversion Values of Ad Network SKAN Installs'\n }\n },\n context: [SK_AD_NETWORK_CONTEXT_STR],\n displayName: 'Sum of Conversion Values of Ad Network SKAN Installs',\n hasAppleVariant: true,\n key: 'conversionValueTotal',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'Ad Network SKAN First Installs',\n buildAppleVariant: () => ({\n abbreviatedName: 'Apple SKAN First Installs',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [METRIC_CATEGORY.APPLE, METRIC_CATEGORY.NON_COHORTED],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n tooltip: {\n dataSource: DATASOURCE_APPLE_SKAN,\n desc: 'Number of Conversion postbacks received for first downloads forwarded by Apple',\n formula:\n 'Total postbacks WHEN (Apple SKAN Reinstalls=False and did_win=True or Null)',\n link: 'https://docs.tenjin.com/docs/skadnetwork-report',\n title: 'Apple SKAN First Installs'\n }\n },\n context: [SK_AD_NETWORK_CONTEXT_STR],\n displayName: 'Apple SKAN First Installs',\n key: buildAppleMetricKey({ metric: 'firstDownloadCount' }),\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n }),\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [METRIC_CATEGORY.AD_NETWORK_SKAN, METRIC_CATEGORY.NON_COHORTED],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: TOTAL_COUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_AD_NETWORK,\n desc: 'Number of Conversion postbacks received for first downloads forwarded by Ad Networks',\n formula:\n 'Total postbacks WHEN (Ad Network SKAN Reinstall=False and did_win=True or Null)',\n link: 'https://docs.tenjin.com/docs/skadnetwork-report',\n title: 'Ad Network SKAN First Installs'\n }\n },\n context: [SK_AD_NETWORK_CONTEXT_STR],\n displayName: 'Ad Network SKAN First Installs',\n hasAppleVariant: true,\n key: 'firstDownloadCount',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'Avg CV of Ad Network SKAN First Installs',\n buildAppleVariant: () => ({\n abbreviatedName: 'Avg CV of Apple SKAN First Installs',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [METRIC_CATEGORY.APPLE, METRIC_CATEGORY.NON_COHORTED],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n tooltip: {\n dataSource: DATASOURCE_APPLE_SKAN,\n desc: 'Average Conversion Value for first downloads forwarded by Apple',\n formula: 'Avg(CV) WHEN Apple SKAN First Installs',\n link: 'https://docs.tenjin.com/docs/skadnetwork-report',\n title: 'Average Conversion Value of Apple SKAN First Installs'\n }\n },\n context: [SK_AD_NETWORK_CONTEXT_STR],\n displayName: 'Average Conversion Value of Apple SKAN First Installs',\n key: buildAppleMetricKey({ metric: 'firstDownloadCvAvg' }),\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n }),\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [METRIC_CATEGORY.AD_NETWORK_SKAN, METRIC_CATEGORY.NON_COHORTED],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AVERAGE_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_AD_NETWORK,\n desc: 'Average Conversion Value for first downloads forwarded by Ad Networks',\n formula: 'Avg(CV) WHEN Ad Network SKAN First Installs',\n link: 'https://docs.tenjin.com/docs/skadnetwork-report',\n title: 'Average Conversion Value of Ad Network SKAN First Installs'\n }\n },\n context: [SK_AD_NETWORK_CONTEXT_STR],\n displayName: 'Average Conversion Value of Ad Network SKAN First Installs',\n hasAppleVariant: true,\n key: 'firstDownloadCvAvg',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'CV Sum of Ad Network SKAN First Installs',\n buildAppleVariant: () => ({\n abbreviatedName: 'CV Sum of Apple SKAN First Installs',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [METRIC_CATEGORY.APPLE, METRIC_CATEGORY.NON_COHORTED],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n tooltip: {\n dataSource: DATASOURCE_APPLE_SKAN,\n desc: 'Sum of Conversion Values for first downloads forwarded by Apple',\n formula: 'Sum(CV) WHEN Apple SKAN First Installs',\n link: 'https://docs.tenjin.com/docs/skadnetwork-report',\n title: 'Sum of Conversion Values of Apple SKAN First Installs'\n }\n },\n context: [SK_AD_NETWORK_CONTEXT_STR],\n displayName: 'Sum of Conversion Values of Apple SKAN First Installs',\n key: buildAppleMetricKey({ metric: 'firstDownloadCvTotal' }),\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n }),\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [METRIC_CATEGORY.AD_NETWORK_SKAN, METRIC_CATEGORY.NON_COHORTED],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: TOTAL_COUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_AD_NETWORK,\n desc: 'Sum of Conversion Values for first downloads forwarded by Ad Networks',\n formula: 'Sum(CV) WHEN Ad Network SKAN First Installs',\n link: 'https://docs.tenjin.com/docs/skadnetwork-report',\n title: 'Sum of Conversion Values of Ad Network SKAN First Installs'\n }\n },\n context: [SK_AD_NETWORK_CONTEXT_STR],\n displayName: 'Sum of Conversion Values of Ad Network SKAN First Installs',\n hasAppleVariant: true,\n key: 'firstDownloadCvTotal',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'Ad Network SKAN Reinstalls',\n buildAppleVariant: () => ({\n abbreviatedName: 'Apple SKAN Reinstalls',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [METRIC_CATEGORY.APPLE, METRIC_CATEGORY.NON_COHORTED],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n tooltip: {\n dataSource: DATASOURCE_APPLE_SKAN,\n desc: 'Number of Conversion postbacks received for redownloads forwarded by Apple',\n formula:\n 'Total postbacks WHEN (Apple SKAN Reinstalls=True and did_win=True or Null)',\n link: 'https://docs.tenjin.com/docs/skadnetwork-report',\n title: 'Apple SKAN Reinstalls'\n }\n },\n context: [SK_AD_NETWORK_CONTEXT_STR],\n displayName: 'Apple SKAN Reinstalls',\n key: buildAppleMetricKey({ metric: 'redownloadCount' }),\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n }),\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [METRIC_CATEGORY.AD_NETWORK_SKAN, METRIC_CATEGORY.NON_COHORTED],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: TOTAL_COUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_AD_NETWORK,\n desc: 'Number of Conversion postbacks received for redownloads forwarded by Ad Networks',\n formula:\n 'Total postbacks WHEN (Ad Network SKAN Reinstall=True and did_win=True or Null)',\n link: 'https://docs.tenjin.com/docs/skadnetwork-report',\n title: 'Ad Network SKAN Reinstalls'\n }\n },\n context: [SK_AD_NETWORK_CONTEXT_STR],\n displayName: 'Ad Network SKAN Reinstalls',\n hasAppleVariant: true,\n key: 'redownloadCount',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'Avg CV of Ad Network SKAN Reinstalls',\n buildAppleVariant: () => ({\n abbreviatedName: 'Avg CV of Apple SKAN Reinstalls',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [METRIC_CATEGORY.APPLE, METRIC_CATEGORY.NON_COHORTED],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n tooltip: {\n dataSource: DATASOURCE_APPLE_SKAN,\n desc: 'Average Conversion Value for redownloads forwarded by Apple',\n formula: 'Avg(CV) WHEN Apple SKAN Reinstalls',\n link: 'https://docs.tenjin.com/docs/skadnetwork-report',\n title: 'Average Conversion Value of Apple SKAN Reinstalls'\n }\n },\n context: [SK_AD_NETWORK_CONTEXT_STR],\n displayName: 'Average Conversion Value of Apple SKAN Reinstalls',\n key: buildAppleMetricKey({ metric: 'redownloadCvAvg' }),\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n }),\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [METRIC_CATEGORY.AD_NETWORK_SKAN, METRIC_CATEGORY.NON_COHORTED],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AVERAGE_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_AD_NETWORK,\n desc: 'Average Conversion Value for redownloads forwarded by Ad Networks',\n formula: 'Avg(CV) WHEN Ad Network SKAN Reinstalls',\n link: 'https://docs.tenjin.com/docs/skadnetwork-report',\n title: 'Average Conversion Value of Ad Network SKAN Reinstalls'\n }\n },\n context: [SK_AD_NETWORK_CONTEXT_STR],\n displayName: 'Average Conversion Value of Ad Network SKAN Reinstalls',\n hasAppleVariant: true,\n key: 'redownloadCvAvg',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'CV Sum of Ad Network SKAN Reinstalls',\n buildAppleVariant: () => ({\n abbreviatedName: 'CV Sum of Apple SKAN Reinstalls',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [METRIC_CATEGORY.APPLE, METRIC_CATEGORY.NON_COHORTED],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n tooltip: {\n dataSource: DATASOURCE_APPLE_SKAN,\n desc: 'Sum of Conversion Values for redownloads forwarded by Apple',\n formula: 'Sum(CV) WHEN Apple SKAN Reinstalls',\n link: 'https://docs.tenjin.com/docs/skadnetwork-report',\n title: 'Sum of Conversion Value of Apple SKAN Reinstalls'\n }\n },\n context: [SK_AD_NETWORK_CONTEXT_STR],\n displayName: 'Sum of Conversion Value of Apple SKAN Reinstalls',\n key: buildAppleMetricKey({ metric: 'redownloadCvTotal' }),\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n }),\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [METRIC_CATEGORY.AD_NETWORK_SKAN, METRIC_CATEGORY.NON_COHORTED],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: TOTAL_COUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_AD_NETWORK,\n desc: 'Sum of Conversion Values for redownloads forwarded by Ad Networks (includes redownloads and first downloads)',\n formula: 'Sum(CV) WHEN Ad Network SKAN Reinstalls',\n link: 'https://docs.tenjin.com/docs/skadnetwork-report',\n title: 'Sum of Conversion Value of Ad Network SKAN Reinstalls'\n }\n },\n context: [SK_AD_NETWORK_CONTEXT_STR],\n displayName: 'Sum of Conversion Value of Ad Network SKAN Reinstalls',\n hasAppleVariant: true,\n key: 'redownloadCvTotal',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'Ad Network SKAN Assists',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [METRIC_CATEGORY.AD_NETWORK_SKAN, METRIC_CATEGORY.NON_COHORTED],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: TOTAL_COUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_AD_NETWORK,\n desc: 'Ad network forwarded ad impressions that were shown to a user that ultimately downloaded the app, but were not awarded with an attribution. Introduced in SKAdNetwork 3.0, this corresponds to postbacks with did-win=false.',\n formula:\n 'Ad Network SKAN Reinstalls Assists + Ad Network SKAN First Installs Assists',\n link: 'https://docs.tenjin.com/docs/skadnetwork-report',\n title: 'Ad Network SKAN Assists'\n }\n },\n context: [SK_AD_NETWORK_CONTEXT_STR],\n displayName: 'Ad Network SKAN Assists',\n key: 'assists',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'Ad Network SKAN Reinstall Assists',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [METRIC_CATEGORY.AD_NETWORK_SKAN, METRIC_CATEGORY.NON_COHORTED],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: TOTAL_COUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_AD_NETWORK,\n desc: 'Number of Assist postbacks received for redownloads forwarded by Ad Networks',\n formula:\n 'Total Assists WHEN (Ad Network SKAN Reinstall=True and did_win=False)',\n link: 'https://docs.tenjin.com/docs/skadnetwork-report',\n title: 'Ad Network SKAN Reinstall Assists'\n }\n },\n context: [SK_AD_NETWORK_CONTEXT_STR],\n displayName: 'Ad Network SKAN Reinstall Assists',\n key: 'redownloadAssists',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'Ad Network SKAN First Install Assists',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [METRIC_CATEGORY.AD_NETWORK_SKAN, METRIC_CATEGORY.NON_COHORTED],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: TOTAL_COUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_AD_NETWORK,\n desc: 'Number of Assist postbacks received for first downloads forwarded by Ad Networks',\n formula:\n 'Total Assists WHEN (Ad Network SKAN Reinstall=False and did_win=False)',\n link: 'https://docs.tenjin.com/docs/skadnetwork-report',\n title: 'Ad Network SKAN First Install Assists'\n }\n },\n context: [SK_AD_NETWORK_CONTEXT_STR],\n displayName: 'Ad Network SKAN First Install Assists',\n key: 'firstDownloadAssists',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'Lifetime Cost / User',\n buildXDayVariant: xDay => ({\n abbreviatedName: `CP ${xDay}-Day User`,\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.COST,\n METRIC_CATEGORY.COMPOSITE,\n METRIC_CATEGORY.RETENTION,\n METRIC_CATEGORY.COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n chartType: 'line',\n isVisible: xDay === 7,\n position: 6,\n reportId: 'value'\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: 'Cost per users that come back N days after install (installs here are reported by the ad network)',\n formula: 'Spend * (Users on 0d / Reported Installs) / Users on Nd',\n link: 'https://docs.tenjin.com/docs/cost-per-n-day-retained-user',\n title: 'Cost per N-Day Retained User'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `Cost per ${xDay}-Day Retained User`,\n key: buildXDayMetricKey({ metric: 'cpUser', xDay }),\n keywords: '',\n onboardingRequirements: [\n APP_REQUIREMENT,\n UA_CHANNEL_REQUIREMENT,\n SDK_REQUIREMENT\n ],\n valueType: CURRENCY_VALUE_TYPE\n }),\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [],\n components: {\n dataExporter: {\n isVisible: false\n },\n groupedSummaryTable: {\n isVisible: false\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: CP_USER_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: 'Cohorted cost per N-Day Retained User',\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/docs/cost-per-n-day-retained-user',\n title: 'Lifetime Cost per Retained User'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Lifetime Cost per Retained User',\n hasXDayVariant: true,\n key: 'cpUser',\n keywords: '',\n onboardingRequirements: [\n APP_REQUIREMENT,\n UA_CHANNEL_REQUIREMENT,\n SDK_REQUIREMENT\n ],\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: 'CPC',\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.AD_NETWORK,\n METRIC_CATEGORY.COST,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_AD_NETWORK,\n desc: 'Average CPC Amount ($)',\n formula: 'Total Spend / Total Reported Clicks',\n link: 'https://docs.tenjin.com/docs/cost-per-click-cpc',\n title: 'Cost-Per-Click (CPC)'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Cost-Per-Click (CPC)',\n key: 'cpc',\n keywords: '',\n onboardingRequirements: [UA_CHANNEL_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: 'CPI',\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.AD_NETWORK,\n METRIC_CATEGORY.COST,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_AD_NETWORK,\n desc: 'Average CPI Amount ($)',\n formula: 'Total Spend / Total Reported Installs',\n link: 'https://docs.tenjin.com/docs/cost-per-install-cpi',\n title: 'Cost-Per-Install (CPI)'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Cost-Per-Install (CPI)',\n key: 'cpi',\n keywords: '',\n onboardingRequirements: [UA_CHANNEL_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: 'CPM',\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.AD_NETWORK,\n METRIC_CATEGORY.COST,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_AD_NETWORK,\n desc: 'Average CPM Amount ($)',\n formula: '1000 * Total Spend / Total Reported Impressions',\n link: 'https://docs.tenjin.com/docs/cost-per-1000-impressions-cpm',\n title: 'Cost-Per-1000-Impressions (CPM)'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Cost-Per-1000-Impressions (CPM)',\n key: 'cpm',\n keywords: '',\n onboardingRequirements: [UA_CHANNEL_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: 'CPR',\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.AD_NETWORK,\n METRIC_CATEGORY.AD_ENGAGEMENT,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: PERCENTAGE_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_AD_NETWORK,\n desc: 'Average CPR Percentage (%)',\n formula: '100 * Total Reported Installs / Total Reported Impressions',\n link: '',\n title: 'Completion Rate (CPR)'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Completion Rate (CPR)',\n key: 'cpr',\n keywords: '',\n onboardingRequirements: [UA_CHANNEL_REQUIREMENT],\n valueType: PERCENTAGE_VALUE_TYPE\n },\n {\n abbreviatedName: 'CTR',\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.AD_NETWORK,\n METRIC_CATEGORY.AD_ENGAGEMENT,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: PERCENTAGE_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_AD_NETWORK,\n desc: 'Average CTR Percentage (%)',\n formula: '100 * Total Reported Clicks / Total Reported Impressions',\n link: 'https://docs.tenjin.com/docs/click-through-rate-ctr',\n title: 'Click-Through-Rate (CTR)'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Click-Through-Rate (CTR)',\n key: 'ctr',\n keywords: '',\n onboardingRequirements: [UA_CHANNEL_REQUIREMENT],\n valueType: PERCENTAGE_VALUE_TYPE\n },\n {\n abbreviatedName: 'CVR',\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.AD_NETWORK,\n METRIC_CATEGORY.AD_ENGAGEMENT,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: PERCENTAGE_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_AD_NETWORK,\n desc: 'Average CVR Percentage (%)',\n formula: '100 * Total Reported Installs / Total Reported Clicks',\n link: 'https://docs.tenjin.com/docs/conversion-rate-cvr',\n title: 'Conversion Rate (CVR)'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Conversion Rate (CVR)',\n key: 'cvr',\n keywords: '',\n onboardingRequirements: [UA_CHANNEL_REQUIREMENT],\n valueType: PERCENTAGE_VALUE_TYPE\n },\n {\n abbreviatedName: 'eCPC',\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.AD_NETWORK,\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: 'eCPC'\n },\n tooltip: {\n dataSource: DATASOURCE_AD_NETWORK,\n desc: 'Ad Revenue per Click ($)',\n formula:\n 'Total Ad Revenue reported by Ad Network / Total Clicks reported by Ad Network',\n link: 'https://docs.tenjin.com/docs/effective-cost-per-click-ecpc',\n title: 'Effective Cost per Click (eCPC)'\n }\n },\n context: [PUBLISHER_CONTEXT_STR],\n displayName: 'Effective Cost per Click (eCPC)',\n key: 'ecpc',\n keywords: '',\n onboardingRequirements: [AM_CHANNEL_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: 'eCPM',\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.AD_NETWORK,\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: 'eCPM'\n },\n tooltip: {\n dataSource: DATASOURCE_AD_NETWORK,\n desc: 'Ad Revenue per 1000 Impressions ($)',\n formula:\n 'Total Ad Revenue reported by Ad Network / (Total Impressions / 1000)',\n link: 'https://docs.tenjin.com/docs/effective-cost-per-mille-ecpm',\n title: 'Effective Cost per Mille (eCPM)'\n }\n },\n context: [PUBLISHER_CONTEXT_STR],\n displayName: 'Effective Cost per Mille (eCPM)',\n key: 'ecpm',\n keywords: '',\n onboardingRequirements: [AM_CHANNEL_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: 'Fradulent Purchases',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.FRAUD,\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: PURCHASES_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Number of purchases marked as fradulent',\n formula: 'Total purchases WHEN (purchase > $10K USD) & (no receipt)',\n link: 'https://docs.tenjin.com/docs/en/fraud',\n title: 'Fraudulent Purchases'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Fraudulent Purchases',\n key: 'fraudPurchases',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'Blocked Fradulent Rev',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.FRAUD,\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Total Blocked Fraudulent Revenue Amount ($)',\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/docs/en/fraud',\n title: 'Blocked Fraudulent Revenue'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Blocked Fraudulent Revenue',\n key: 'fraudRevenue',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: 'In App Purchase LTV',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [METRIC_CATEGORY.REVENUE, METRIC_CATEGORY.MEASURED],\n components: {\n dataExporter: {\n isVisible: false\n },\n groupedSummaryTable: {\n isVisible: false\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: IAP_REVENUE_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'In App Purchase Amount for each cohort ($)',\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/docs/lifetime-value-ltv#what-is-in-app-purchase-ltv',\n title: 'In App Purchase LTV'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'In App Purchase LTV',\n key: 'iapRevenue',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: 'Lifetime IAP ROI',\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [METRIC_CATEGORY.REVENUE, METRIC_CATEGORY.MEASURED],\n components: {\n dataExporter: {\n isVisible: false\n },\n groupedSummaryTable: {\n isVisible: false\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: IAP_ROI_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Cohorted IAP ROI for the selected daterange (%)',\n formula: '(100 * Cohorted IAP Revenue / Spend) - 100',\n link: 'https://docs.tenjin.com/docs/return-on-investment-roi#what-is-lifetime-iap-roi',\n title: 'Lifetime IAP ROI'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Lifetime IAP ROI',\n key: 'iapRoi',\n keywords: '',\n onboardingRequirements: [\n APP_REQUIREMENT,\n SDK_REQUIREMENT,\n UA_CHANNEL_REQUIREMENT\n ],\n valueType: PERCENTAGE_VALUE_TYPE\n },\n {\n abbreviatedName: 'In App Purchase LTV / User',\n buildXDayVariant: xDay => ({\n abbreviatedName: `${xDay}-Day IAP LTV / User`,\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Average N-Day In App Purchase LTV per User ($)',\n formula: '100 * N-Day IAP Revenue / Number of users on 0-Day',\n link: 'https://docs.tenjin.com/docs/in-app-purchases-iap#what-is-iap-revenue-per-daily-active-users',\n title: 'N-Day IAP LTV / User'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `${xDay}-Day IAP LTV / User`,\n key: buildXDayMetricKey({ metric: 'iapRpu', xDay }),\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n }),\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [METRIC_CATEGORY.REVENUE, METRIC_CATEGORY.MEASURED],\n components: {\n dataExporter: {\n isVisible: false\n },\n groupedSummaryTable: {\n isVisible: false\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: IAP_RPU_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Average In App Purchase LTV per User ($)',\n formula: 'Cohorted IAP Revenue / Number of Users on 0-Day',\n link: 'https://docs.tenjin.com/docs/in-app-purchases-iap#what-is-iap-revenue-per-daily-active-users',\n title: 'In App Purchase LTV / User'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'In App Purchase LTV / User',\n hasXDayVariant: true,\n key: 'iapRpu',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: 'Impressions',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.AD_NETWORK,\n METRIC_CATEGORY.AD_ENGAGEMENT,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: IMPRESSIONS_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_AD_NETWORK,\n desc: 'Number of times your ad was displayed',\n formula: 'Total Impressions reported by Ad Network',\n link: 'https://docs.tenjin.com/docs/impression-level-revenue-data-ilrd',\n title: 'Reported Impressions'\n }\n },\n context: [ADVERTISER_CONTEXT_STR, PUBLISHER_CONTEXT_STR],\n displayName: 'Reported Impressions',\n key: 'impressions',\n keywords: '',\n onboardingRequirements: [UA_CHANNEL_REQUIREMENT],\n valueType: WHOLE_NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'Reported Installs',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.AD_NETWORK,\n METRIC_CATEGORY.AD_ENGAGEMENT,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n hideForSkAdNetworkReport: true,\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: INSTALLS_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_AD_NETWORK,\n desc: 'Number of Installs reported by Ad Networks',\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/docs/install',\n title: 'Reported Installs'\n }\n },\n context: [ADVERTISER_CONTEXT_STR, SK_AD_NETWORK_CONTEXT_STR],\n displayName: 'Reported Installs',\n key: 'installs',\n keywords: '',\n onboardingRequirements: [UA_CHANNEL_REQUIREMENT],\n valueType: WHOLE_NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'Installs Diff',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.COMPOSITE,\n METRIC_CATEGORY.AD_ENGAGEMENT,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: DIFFERENCE_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: 'Total Installs Difference',\n formula:\n 'Total Reported Installs - Total Tracked Installs by Tenjin WHEN (Install is not Organic)',\n link: 'https://docs.tenjin.com/docs/en/frequently-asked-questions?highlight=installs%20difference',\n title: 'Installs Difference'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Installs Difference',\n key: 'installsDifference',\n keywords: '',\n onboardingRequirements: [\n APP_REQUIREMENT,\n SDK_REQUIREMENT,\n UA_CHANNEL_REQUIREMENT\n ],\n valueType: NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'Installs Difference Percent',\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.COMPOSITE,\n METRIC_CATEGORY.AD_ENGAGEMENT,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: DIFF_PERCENT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: 'Average Installs Difference Percentage (%)',\n formula:\n '100 - 100 * Total Tracked Installs by Tenjin WHEN (Install is not Organic) / Total Installs Reported by Ad Network',\n link: 'https://docs.tenjin.com/docs/en/frequently-asked-questions?highlight=installs%20difference',\n title: 'Installs Difference Percent'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Installs Difference Percent',\n key: 'installsDifferencePct',\n keywords: '',\n onboardingRequirements: [\n APP_REQUIREMENT,\n SDK_REQUIREMENT,\n UA_CHANNEL_REQUIREMENT\n ],\n valueType: PERCENTAGE_VALUE_TYPE\n },\n {\n abbreviatedName: 'Lifetime Active Days / User',\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [METRIC_CATEGORY.NON_COHORTED],\n components: {\n dataExporter: {\n isVisible: false\n },\n groupedSummaryTable: {\n isVisible: false\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: DIFF_PERCENT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Average number of active days for a user',\n formula: 'Sum(DAU in all cohorts) / DAU on 0-Day',\n link: 'https://docs.tenjin.com/docs/lifetime-active-days-per-user',\n title: 'Lifetime Active Days Per User'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Lifetime Active Days Per User',\n key: 'lifetime',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'Ad\\u00a0Rev',\n buildXDayVariant: xDay => ({\n abbreviatedName: `${xDay}-Day Adrev LTV`,\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.COMPOSITE,\n METRIC_CATEGORY.COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: 'Cumulative Ad Revenue N days after install',\n formula: 'N-Day Estimated Ad Revenue',\n link: 'https://docs.tenjin.com/docs/ad-revenue-attribution',\n title: 'N-Day Ad Revenue LTV'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `${xDay}-Day Ad Revenue LTV`,\n key: buildXDayMetricKey({ metric: 'pubrev', xDay }),\n keywords: '',\n onboardingRequirements: [\n AM_CHANNEL_REQUIREMENT,\n APP_REQUIREMENT,\n SDK_REQUIREMENT\n ],\n valueType: CURRENCY_VALUE_TYPE\n }),\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [METRIC_CATEGORY.REVENUE, METRIC_CATEGORY.NON_COHORTED],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: 'Total Ad Revenue Amount estimated by Tenjin ($)',\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/docs/ad-revenue-attribution',\n title: 'Ad Revenue'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Ad Revenue',\n hasXDayVariant: true,\n key: 'pubRev',\n keywords: '',\n onboardingRequirements: [AM_CHANNEL_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: 'Ad Revenue LTV',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.COMPOSITE\n ],\n components: {\n dataExporter: {\n isVisible: false\n },\n groupedSummaryTable: {\n isVisible: false\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AD_REVENUE_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: 'Total Ad Revenue LTV Amount estimated by Tenjin ($)',\n formula: 'Allocated Logic',\n link: 'https://docs.tenjin.com/docs/ad-revenue-attribution',\n title: 'Ad Revenue LTV'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Ad Revenue LTV',\n key: 'pubRevenue',\n keywords: '',\n onboardingRequirements: [AM_CHANNEL_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: 'Lifetime Ad ROI',\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.COMPOSITE\n ],\n components: {\n dataExporter: {\n isVisible: false\n },\n groupedSummaryTable: {\n isVisible: false\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AD_ROI_PCT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: 'Average Ad ROI Percentage (%)',\n formula: '(100 * Cohorted Ad Revenue / Spend) - 100',\n link: 'https://docs.tenjin.com/docs/return-on-investment-roi#what-is-lifetime-ad-roi',\n title: 'Lifetime Ad ROI'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Lifetime Ad ROI',\n key: 'pubRoi',\n keywords: '',\n onboardingRequirements: [\n APP_REQUIREMENT,\n SDK_REQUIREMENT,\n UA_CHANNEL_REQUIREMENT\n ],\n valueType: PERCENTAGE_VALUE_TYPE\n },\n {\n abbreviatedName: 'Ad Revenue LTV / User',\n buildXDayVariant: xDay => ({\n abbreviatedName: `${xDay}-Day Adrev LTV / User`,\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.COMPOSITE,\n METRIC_CATEGORY.COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: 'Average N-Day Ad Revenue LTV estimated by Tenjin per User ($)',\n formula: '100 * N-Day Ad Revenue / Number of users on 0-Day',\n link: 'https://docs.tenjin.com/docs/ad-revenue-attribution',\n title: 'N-Day Ad Revenue LTV / User'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `${xDay}-Day Ad Revenue LTV / User`,\n key: buildXDayMetricKey({ metric: 'pubRpu', xDay }),\n keywords: '',\n onboardingRequirements: [\n AM_CHANNEL_REQUIREMENT,\n APP_REQUIREMENT,\n SDK_REQUIREMENT\n ],\n valueType: CURRENCY_VALUE_TYPE\n }),\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.COMPOSITE,\n METRIC_CATEGORY.COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: false\n },\n groupedSummaryTable: {\n isVisible: false\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AD_RPU_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: 'Total Ad Revenue estimated by Tenjin per User ($)',\n formula: 'Cohorted Estimated Ad Revenue / Number of users on 0-Day',\n link: 'https://docs.tenjin.com/docs/ad-revenue-attribution',\n title: 'Ad Revenue LTV / User'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Ad Revenue LTV / User',\n hasXDayVariant: true,\n key: 'pubRpu',\n keywords: '',\n onboardingRequirements: [AM_CHANNEL_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: 'Lifetime Ret',\n buildXDayVariant: xDay => ({\n abbreviatedName: `${xDay}-Day Ret %`,\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.RETENTION,\n METRIC_CATEGORY.COHORTED,\n METRIC_CATEGORY.MEASURED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n chartType: 'line',\n isVisible: [1, 7].includes(xDay),\n position: xDay === 1 ? 4 : 5,\n reportId: 'retention'\n },\n kpiTabChart: {\n yAxis: PERCENTAGE_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Percentage of users retained on N-day of installing the app. Retention here is relative to the time of install (%)',\n formula:\n '100.0 * (Number of users on N-Day / Number of users on 0-Day)',\n link: 'https://docs.tenjin.com/docs/retention-rate-rr',\n title: 'N-Day Retention Rate'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `${xDay}-Day Retention Rate`,\n key: buildXDayMetricKey({ metric: 'retention', xDay }),\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: PERCENTAGE_VALUE_TYPE\n }),\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.RETENTION,\n METRIC_CATEGORY.COHORTED,\n METRIC_CATEGORY.MEASURED\n ],\n components: {\n dataExporter: {\n isVisible: false\n },\n groupedSummaryTable: {\n isVisible: false\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: RETENTION_PCT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Cohorted N-Day Retention Rate',\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/docs/retention-rate-rr',\n title: 'Lifetime Retention'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Lifetime Retention',\n hasXDayVariant: true,\n key: 'retention',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: PERCENTAGE_VALUE_TYPE\n },\n {\n abbreviatedName: 'IAP\\u00a0Rev',\n buildXDayVariant: xDay => ({\n abbreviatedName: `${xDay}-Day IAP LTV`,\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.COHORTED,\n METRIC_CATEGORY.MEASURED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Cumulative IAP revenue N days after install',\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/docs/en/in-app-purchases-iap',\n title: 'N-Day IAP LTV'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `${xDay}-Day IAP LTV`,\n key: buildXDayMetricKey({ metric: 'revenues', xDay }),\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n }),\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Total In App Purchase Amount ($)',\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/docs/en/in-app-purchases-iap',\n title: 'IAP Revenue'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'IAP Revenue',\n hasXDayVariant: true,\n key: 'revenues',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: 'Sessions',\n buildXDayVariant: xDay => ({\n abbreviatedName: `${xDay}-Day Sess`,\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.COHORTED,\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.RETENTION\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: SESSIONS_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Number of times an app was opened post install on the day of install (N-Day)',\n formula: 'Total App Opens on N-Day',\n link: 'https://docs.tenjin.com/docs/session',\n title: 'N-Day Sessions'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `${xDay}-Day Sessions`,\n key: buildXDayMetricKey({ metric: 'sessions', xDay }),\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n }),\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [METRIC_CATEGORY.MEASURED, METRIC_CATEGORY.NON_COHORTED],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: SESSIONS_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Average app opens',\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/docs/session',\n title: 'Sessions'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Sessions',\n hasXDayVariant: true,\n key: 'sessions',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'Lifetime Sess / User',\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.RETENTION,\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: false\n },\n groupedSummaryTable: {\n isVisible: false\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: 'Lifetime Sessions Per User'\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Average Sessions per User',\n formula: 'Sum(Sessions in all cohorts) / DAU on 0-Day',\n link: 'https://docs.tenjin.com/docs/session',\n title: 'Lifetime Sessions Per User'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Lifetime Sessions Per User',\n key: 'sessionsLtpu',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'Spend',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.COST,\n METRIC_CATEGORY.NON_COHORTED,\n METRIC_CATEGORY.AD_NETWORK\n ],\n components: {\n dataExporter: {\n hideForSkAdNetworkReport: true,\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n chartType: 'area',\n isVisible: true,\n position: 0,\n reportId: 'spend'\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n skAdNetworkReport: {\n kpiCard: {\n isVisible: true,\n position: 0\n }\n },\n tooltip: {\n dataSource: DATASOURCE_AD_NETWORK,\n desc: 'Amount spent to acquire users ($)',\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/docs/glossary-spend',\n title: 'Spend'\n }\n },\n context: [ADVERTISER_CONTEXT_STR, SK_AD_NETWORK_CONTEXT_STR],\n displayName: 'Spend',\n key: 'spend',\n keywords: '',\n onboardingRequirements: [UA_CHANNEL_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: 'tCPI',\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.COST,\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Average tCPI Amount ($)',\n formula: 'Total Spend / Total Tracked Installs by Tenjin',\n link: 'https://docs.tenjin.com/docs/cost-per-tracked-install-tcpi',\n title: 'Cost-Per-Tracked Install (tCPI)'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Cost-Per-Tracked Install (tCPI)',\n key: 'tcpi',\n keywords: '',\n onboardingRequirements: [\n APP_REQUIREMENT,\n UA_CHANNEL_REQUIREMENT,\n SDK_REQUIREMENT\n ],\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: 'Total\\u00a0Rev',\n buildXDayVariant: xDay => ({\n abbreviatedName: `${xDay}-Day Total LTV`,\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.COHORTED,\n METRIC_CATEGORY.COMPOSITE\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: 'Cumulative total revenue (IAP + ad revenue) N days after the install',\n formula: 'N-Day Ad Revenue + N-Day IAP Revenue',\n link: 'https://docs.tenjin.com/docs/lifetime-value-ltv#what-is-total-ltv',\n title: 'N-Day Total LTV'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `${xDay}-Day Total LTV`,\n key: buildXDayMetricKey({ metric: 'totalRev', xDay }),\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n }),\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.COMPOSITE,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n chartType: 'area',\n isVisible: true,\n position: 1,\n reportId: 'revenue'\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: 'Total Revenue Amount (IAP + Ad) ($)',\n formula: 'IAP Revenue + Ad Revenue',\n link: 'https://docs.tenjin.com/docs/en/ad-monetization-ad-revenue',\n title: 'Total Revenue'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Total Revenue',\n hasXDayVariant: true,\n key: 'totalRev',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: 'Total LTV',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.COMPOSITE\n ],\n components: {\n dataExporter: {\n isVisible: false\n },\n groupedSummaryTable: {\n isVisible: false\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: TOTAL_REVENUE_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: 'Total LTV (IAP + Ad Revenue)',\n formula: 'IAP LTV + Ad Revenue LTV',\n link: 'https://docs.tenjin.com/docs/lifetime-value-ltv',\n title: 'Total LTV'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Total LTV',\n key: 'totalRevenue',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: 'Lifetime Total ROAS',\n buildXDayVariant: xDay => ({\n abbreviatedName: `${xDay}-Day ROAS`,\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.COHORTED,\n METRIC_CATEGORY.COMPOSITE\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: PERCENTAGE_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_AD_NETWORK,\n desc: 'Average N-Day ROAS Percentage (%) Amount of cumulative total revenue N days after install divided by spend',\n formula: '100.0 * N-Day Total Revenue / Spend',\n link: 'https://docs.tenjin.com/docs/return-on-ad-spend-roas',\n title: 'N-Day ROAS'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `${xDay}-Day ROAS`,\n key: buildXDayMetricKey({ metric: 'roas', xDay }),\n keywords: '',\n onboardingRequirements: [\n APP_REQUIREMENT,\n SDK_REQUIREMENT,\n UA_CHANNEL_REQUIREMENT\n ],\n valueType: PERCENTAGE_VALUE_TYPE\n }),\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.COMPOSITE\n ],\n components: {\n dataExporter: {\n isVisible: false\n },\n groupedSummaryTable: {\n isVisible: false\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: TOTAL_ROAS_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: 'Average Lifetime Total ROAS Percentage (%)',\n formula: '100 * Cohorted Total Revenue / Spend',\n link: 'https://docs.tenjin.com/docs/return-on-ad-spend-roas',\n title: 'Lifetime Total ROAS'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Lifetime Total ROAS',\n hasXDayVariant: true,\n key: 'totalRoas',\n keywords: '',\n onboardingRequirements: [\n APP_REQUIREMENT,\n SDK_REQUIREMENT,\n UA_CHANNEL_REQUIREMENT\n ],\n valueType: PERCENTAGE_VALUE_TYPE\n },\n {\n abbreviatedName: 'Lifetime Total ROI',\n buildXDayVariant: xDay => ({\n abbreviatedName: `${xDay}-Day ROI`,\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.COHORTED,\n METRIC_CATEGORY.COMPOSITE\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n chartType: 'line',\n isVisible: xDay === 90,\n position: 7,\n reportId: 'roi'\n },\n kpiTabChart: {\n yAxis: PERCENTAGE_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_AD_NETWORK,\n desc: 'Average N-Day ROI Percentage (%) Amount of cumulative total profit (total revenue N days after install - spend) divided by spend',\n formula: '(100.0 * N-Day Total Revenue / Spend) - 100',\n link: 'https://docs.tenjin.com/docs/return-on-investment-roi',\n title: 'N-Day ROI'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `${xDay}-Day ROI`,\n key: buildXDayMetricKey({ metric: 'roi', xDay }),\n keywords: '',\n onboardingRequirements: [\n APP_REQUIREMENT,\n SDK_REQUIREMENT,\n UA_CHANNEL_REQUIREMENT\n ],\n valueType: PERCENTAGE_VALUE_TYPE\n }),\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.COMPOSITE\n ],\n components: {\n dataExporter: {\n isVisible: false\n },\n groupedSummaryTable: {\n isVisible: false\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: TOTAL_ROI_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: 'Average Lifetime Total ROI Percentage (%)',\n formula: '(100 * Cohorted Total Revenue / Spend) - 100',\n link: 'https://docs.tenjin.com/docs/return-on-investment-roi',\n title: 'Lifetime Total ROI'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Lifetime Total ROI',\n hasXDayVariant: true,\n key: 'totalRoi',\n keywords: '',\n onboardingRequirements: [\n APP_REQUIREMENT,\n SDK_REQUIREMENT,\n UA_CHANNEL_REQUIREMENT\n ],\n valueType: PERCENTAGE_VALUE_TYPE\n },\n {\n abbreviatedName: 'Total LTV / User',\n buildXDayVariant: xDay => ({\n abbreviatedName: `${xDay}-Day Total LTV / User`,\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.COMPOSITE,\n METRIC_CATEGORY.COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: 'Cumulative total revenue (IAP + ad revenue) N days after install divided by Total Users on 0-Day',\n formula:\n '(N-Day IAP Revenue + N-Day Ad Revenue) / Number of Users on 0-Day',\n link: 'https://docs.tenjin.com/docs/lifetime-value-ltv',\n title: 'N-Day Total LTV / User'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `${xDay}-Day Total LTV / User`,\n key: buildXDayMetricKey({ metric: 'rpu', xDay }),\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n }),\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.COMPOSITE\n ],\n components: {\n dataExporter: {\n isVisible: false\n },\n groupedSummaryTable: {\n isVisible: false\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: TOTAL_RPU_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: 'Total Revenue (IAP + Ad) per User ($)',\n formula: '(IAP LTV + Ad Revenue LTV) / Number of users on 0-Day',\n link: 'https://docs.tenjin.com/docs/lifetime-value-ltv',\n title: 'Total LTV / User'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Total LTV / User',\n hasXDayVariant: true,\n key: 'totalRpu',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: 'Tracked Clicks',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.AD_ENGAGEMENT,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: CLICKS_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Number of times your ad was clicked tracked by Tenjin',\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/docs/clicks-tracked-reported',\n title: 'Tracked Clicks'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Tracked Clicks',\n key: 'trackedClicks',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'Tracked CVR',\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.AD_ENGAGEMENT,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: PERCENTAGE_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Average CVR Percentage (%)',\n formula: '100 * Total Tracked Installs / Total Tracked Clicks',\n link: 'https://docs.tenjin.com/docs/conversion-rate-cvr',\n title: 'Tracked Conversion Rate (CVR)'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Tracked Conversion Rate (CVR)',\n key: 'trackedCvr',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: PERCENTAGE_VALUE_TYPE\n },\n {\n abbreviatedName: 'Tracked Impressions',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.AD_ENGAGEMENT,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: IMPRESSIONS_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Number of impressions tracked by Tenjin',\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/docs/impression-level-revenue-data-ilrd#what-are-tracked-impressions',\n title: 'Tracked Impressions'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Tracked Impressions',\n key: 'trackedImpressions',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'Tracked Installs',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.AD_ENGAGEMENT,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n hideForSkAdNetworkReport: true,\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n chartType: 'area',\n isVisible: true,\n position: 3,\n reportId: 'usage'\n },\n kpiTabChart: {\n yAxis: INSTALLS_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Number of Installs tracked by Tenjin',\n formula: `Total users WHEN event_type='install' AND event='open'`,\n link: 'https://docs.tenjin.com/docs/tracked-installs',\n title: 'Tracked Installs'\n }\n },\n context: [ADVERTISER_CONTEXT_STR, SK_AD_NETWORK_CONTEXT_STR],\n displayName: 'Tracked Installs',\n key: 'trackedInstalls',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n },\n {\n buildXDayVariant: xDay => ({\n abbreviatedName: `CP K ${xDay}-Day Sessions`,\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.COHORTED,\n METRIC_CATEGORY.RETENTION,\n METRIC_CATEGORY.COST\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: 'Average Cost per 1000 N-Day Sessions Amount ($)',\n formula: '1000 * Total Spend / Total App Opens on Nd',\n link: 'https://docs.tenjin.com/docs/session#what-are-cost-per-1000-n-day-sessions',\n title: 'Cost per 1000 N-Day Sessions'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `Cost per 1000 ${xDay}-Day Sessions`,\n key: buildXDayMetricKey({ metric: 'cpKsessions', xDay }),\n keywords: '',\n onboardingRequirements: [\n APP_REQUIREMENT,\n SDK_REQUIREMENT,\n UA_CHANNEL_REQUIREMENT\n ],\n valueType: CURRENCY_VALUE_TYPE\n }),\n context: [ADVERTISER_CONTEXT_STR],\n hasXDayVariant: true\n },\n {\n abbreviatedName: 'Ad Mediation Revenue',\n buildXDayVariant: xDay => ({\n abbreviatedName: `${xDay}-Day Ad Mediation LTV`,\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.AD_MEDIATION,\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.COHORTED,\n METRIC_CATEGORY.MEASURED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Cumulative Ad Mediation revenue N days after install',\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/v1/docs/impression-level-revenue-data-ilrd',\n title: 'N-Day Ad Mediation LTV'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `${xDay}-Day Ad Mediation LTV`,\n key: buildXDayMetricKey({ metric: 'adMediationRevenue', xDay }),\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n }),\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.AD_MEDIATION,\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.NON_COHORTED,\n METRIC_CATEGORY.MEASURED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Total Ad Mediation Value ($)',\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/v1/docs/impression-level-revenue-data-ilrd',\n title: 'Ad Mediation Revenue'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Ad Mediation Revenue',\n hasXDayVariant: true,\n key: 'adMediationRevenue',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: 'Total Ad Mediation Profit Margin',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.AD_MEDIATION,\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.NON_COHORTED,\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.COMPOSITE,\n METRIC_CATEGORY.NEW\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: TOTAL_AD_MEDIATION_PROFIT_MARGIN_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Total Ad Mediation Profit Margin ($)',\n formula: 'Total Ad Mediation Revenue - Spend',\n link: 'https://docs.tenjin.com/v1/docs/impression-level-revenue-data-ilrd',\n title: 'Ad Mediation Profit Margin'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Total Ad Mediation Profit Margin',\n key: 'totalAdMediationProfitMargin',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: 'Total Profit Margin',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.NON_COHORTED,\n METRIC_CATEGORY.COMPOSITE,\n METRIC_CATEGORY.NEW\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: TOTAL_PROFIT_MARGIN_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: 'Total Profit Margin',\n formula: 'Total Revenue - Spend',\n link: 'https://docs.tenjin.com/docs/en/ad-monetization-ad-revenue',\n title: 'Total Revenue'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Total Profit Margin',\n key: 'totalProfitMargin',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: 'Ad Mediation LTV / User',\n buildXDayVariant: xDay => ({\n abbreviatedName: `${xDay}-Day Ad Mediation LTV / User`,\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.AD_MEDIATION,\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.COHORTED,\n METRIC_CATEGORY.MEASURED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Average N-Day Ad Mediation LTV per User ($)',\n formula:\n 'N-Day Ad Mediation Revenue in Dollars / Number of users on 0-Day',\n link: 'https://docs.tenjin.com/v1/docs/impression-level-revenue-data-ilrd',\n title: 'N-Day Ad Mediation Revenue / User'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `${xDay}-Day Ad Mediation LTV / User`,\n key: buildXDayMetricKey({ metric: 'adMediationRpu', xDay }),\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n }),\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.AD_MEDIATION,\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.NON_COHORTED,\n METRIC_CATEGORY.MEASURED\n ],\n components: {\n dataExporter: {\n isVisible: false\n },\n groupedSummaryTable: {\n isVisible: false\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AD_MEDIATION_RPU_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Average Ad Mediation LTV per User ($)',\n formula: 'Cohorted Ad Mediation Revenue / Number of Users on 0-Day',\n link: 'https://docs.tenjin.com/v1/docs/impression-level-revenue-data-ilrd',\n title: 'Ad Mediation LTV / User'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Ad Mediation LTV / User',\n hasXDayVariant: true,\n key: 'adMediationRpu',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: 'Average Daily Active Users',\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n chartType: 'area',\n isVisible: true,\n position: 2,\n reportId: 'usage'\n },\n kpiTabChart: {\n yAxis: 'Average Daily Active Users'\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Average of daily unique users in the time period.',\n formula: 'Count(advertising_id OR developer_device_id)',\n link: 'https://docs.tenjin.com/docs/daily-active-users-dau',\n title: 'Average Daily Active Users'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Average Daily Active Users',\n key: 'avgDau',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'Average Weekly Active Users',\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AVERAGE_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Average of weekly unique users in the time period.',\n formula: 'Count(advertising_id OR developer_device_id)',\n link: 'https://docs.tenjin.com/docs/daily-active-users-dau',\n title: 'Average Weekly Active Users'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Average Weekly Active Users',\n key: 'avgWau',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'Average Monthly Active Users',\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AVERAGE_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Average of monthly unique users in the time period.',\n formula: 'Count(advertising_id OR developer_device_id)',\n link: 'https://docs.tenjin.com/docs/daily-active-users-dau',\n title: 'Average Monthly Active Users'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Average Monthly Active Users',\n key: 'avgMau',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n },\n {\n abbreviatedName: 'Total Ad Mediation Revenue',\n buildXDayVariant: xDay => ({\n abbreviatedName: `${xDay}-Day Total Ad Mediation LTV`,\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.AD_MEDIATION,\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.COHORTED,\n METRIC_CATEGORY.MEASURED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Cumulative Total Ad Mediation revenue N days after install',\n formula: 'N-Day Ad Mediation LTV + N-Day IAP LTV',\n link: 'https://docs.tenjin.com/v1/docs/impression-level-revenue-data-ilrd',\n title: 'N-Day Total Ad Mediation LTV'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `${xDay}-Day Total Ad Mediation LTV`,\n key: buildXDayMetricKey({ metric: 'totalAdMediationRevenue', xDay }),\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n }),\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.AD_MEDIATION,\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.NON_COHORTED,\n METRIC_CATEGORY.MEASURED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Total Ad Mediation Revenue ($)',\n formula: 'Ad Mediation LTV + IAP LTV',\n link: 'https://docs.tenjin.com/v1/docs/impression-level-revenue-data-ilrd',\n title: 'Total Ad Mediation Revenue'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Total Ad Mediation Revenue',\n hasXDayVariant: true,\n key: 'totalAdMediationRevenue',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: 'Total Ad Mediation ROAS',\n buildXDayVariant: xDay => ({\n abbreviatedName: `${xDay}-Day Total Ad Mediation ROAS`,\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.AD_MEDIATION,\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.COHORTED,\n METRIC_CATEGORY.MEASURED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: PERCENTAGE_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Average N-Day ROAS Percentage (%) Amount of cumulative total Ad Mediation revenue N days after install divided by spend',\n formula: '100.0 * N-Day Total Ad Mediation LTV / Spend',\n link: 'https://docs.tenjin.com/v1/docs/impression-level-revenue-data-ilrd',\n title: 'N-Day Total Ad Mediation ROAS'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `${xDay}-Day Total Ad Mediation ROAS`,\n key: buildXDayMetricKey({ metric: 'totalAdMediationRoas', xDay }),\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: PERCENTAGE_VALUE_TYPE\n }),\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [],\n components: {\n dataExporter: {\n isVisible: false\n },\n groupedSummaryTable: {\n isVisible: false\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Total Ad Mediation ROAS (%)',\n formula: '100.0 * Total Ad Mediation Revenue / Spend',\n link: 'https://docs.tenjin.com/v1/docs/impression-level-revenue-data-ilrd',\n title: 'Total Ad Mediation ROAS'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Total Ad Mediation ROAS',\n hasXDayVariant: true,\n key: 'totalAdMediationRoas',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: PERCENTAGE_VALUE_TYPE\n },\n {\n abbreviatedName: 'Total Ad Mediation ROI',\n buildXDayVariant: xDay => ({\n abbreviatedName: `${xDay}-Day Total Ad Mediation ROI`,\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.AD_MEDIATION,\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.COHORTED,\n METRIC_CATEGORY.MEASURED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: PERCENTAGE_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Average N-Day ROI Percentage (%) Amount of cumulative total Ad Mediation + IAP Revenue (total revenue N days after install - spend) divided by spend',\n formula: '(100.0 * N-Day Total Ad Mediation LTV / Spend) - 100',\n link: 'https://docs.tenjin.com/v1/docs/impression-level-revenue-data-ilrd',\n title: 'N-Day Total Ad Mediation ROI'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `${xDay}-Day Total Ad Mediation ROI`,\n key: buildXDayMetricKey({ metric: 'totalAdMediationRoi', xDay }),\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: PERCENTAGE_VALUE_TYPE\n }),\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [],\n components: {\n dataExporter: {\n isVisible: false\n },\n groupedSummaryTable: {\n isVisible: false\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: PERCENTAGE_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Total Ad Mediation ROI (%)',\n formula: '(100.0 * N-Day Total Ad Mediation LTV / Spend) - 100',\n link: 'https://docs.tenjin.com/v1/docs/impression-level-revenue-data-ilrd',\n title: 'Total Ad Mediation ROI'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Total Ad Mediation ROI',\n hasXDayVariant: true,\n key: 'totalAdMediationRoi',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: PERCENTAGE_VALUE_TYPE\n },\n {\n abbreviatedName: 'Total Ad Mediation Revenue / User',\n buildXDayVariant: xDay => ({\n abbreviatedName: `${xDay}-Day Total Ad Mediation LTV / User`,\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.AD_MEDIATION,\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.COHORTED,\n METRIC_CATEGORY.MEASURED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: 'Cumulative total revenue (Ad Mediation + IAP) N days after install divided by Total Users on 0-Day',\n formula:\n '(N-Day Ad Mediation Revenue + N-Day IAP Revenue) / Number of Users on 0-Day',\n link: 'https://docs.tenjin.com/docs/lifetime-value-ltv',\n title: 'N-Day Total LTV / User'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `${xDay}-Day Total Ad Mediation LTV / User`,\n key: buildXDayMetricKey({ metric: 'totalAdMediationRpu', xDay }),\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n }),\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [],\n components: {\n dataExporter: {\n isVisible: false\n },\n groupedSummaryTable: {\n isVisible: false\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: TOTAL_RPU_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: 'Total Ad Mediation Revenue per User ($)',\n formula: '(Ad Mediation LTV + IAP LTV) / Number of users on 0-Day',\n link: 'https://docs.tenjin.com/docs/lifetime-value-ltv',\n title: 'Total Ad Mediation Revenue / User'\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: 'Total Ad Mediation LTV / User',\n hasXDayVariant: true,\n key: 'totalAdMediationRpu',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: 'Tracked Reinstalls',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [],\n components: {\n dataExporter: {\n hideForSkAdNetworkReport: true,\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: REINSTALLS_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Number of Reinstalls tracked by Tenjin',\n formula: `Total users WHEN event_type = 'reinstall'`,\n link: 'https://docs.tenjin.com/docs/tracked-reinstalls',\n title: 'Tracked Reinstalls'\n }\n },\n context: [ADVERTISER_CONTEXT_STR, SK_AD_NETWORK_CONTEXT_STR],\n displayName: 'Tracked Reinstalls',\n key: 'trackedReinstalls',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n }\n]\n\nexport const CUSTOM_METRIC_DEFINITIONS = [\n {\n buildCustomVariant: customEventName => ({\n abbreviatedName: 'Count',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: 'Count'\n },\n tooltip: {\n dataSource: DATASOURCE_CUSTOM,\n desc: TOOLTIP_MISSING_DESC,\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/docs/custom-events',\n title: `\"${customEventName}\" Count`\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `\"${customEventName}\" Count`,\n key: 'count',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE,\n ...getOverrideableCustomEventAttributes({ customEventName, key: 'count' })\n })\n },\n {\n buildCustomVariant: customEventName => ({\n abbreviatedName: 'Sum',\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: 'Sum'\n },\n tooltip: {\n dataSource: DATASOURCE_CUSTOM,\n desc: TOOLTIP_MISSING_DESC,\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/docs/custom-events',\n title: `\"${customEventName}\" Value Sum`\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `\"${customEventName}\" Value Sum`,\n key: 'sum',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE,\n ...getOverrideableCustomEventAttributes({ customEventName, key: 'sum' })\n })\n },\n {\n buildCustomVariant: customEventName => ({\n abbreviatedName: 'Average',\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: 'Average'\n },\n tooltip: {\n dataSource: DATASOURCE_CUSTOM,\n desc: TOOLTIP_MISSING_DESC,\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/docs/custom-events',\n title: `\"${customEventName}\" Value Average`\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `\"${customEventName}\" Value Average`,\n key: 'average',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE,\n ...getOverrideableCustomEventAttributes({\n customEventName,\n key: 'average'\n })\n })\n },\n {\n buildCustomVariant: customEventName => ({\n abbreviatedName: 'Cumul Count',\n buildXDayVariant: ({ parentMetricDefinition, xDay }) =>\n mergeParentMetricDefinitionWithXDayAttributes({\n parentMetricDefinition,\n xDay\n }),\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [],\n components: {\n dataExporter: {\n isVisible: false\n },\n groupedSummaryTable: {\n isVisible: false\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: 'Cumulative Count'\n },\n tooltip: {\n dataSource: DATASOURCE_CUSTOM,\n desc: TOOLTIP_MISSING_DESC,\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/docs/custom-events',\n title: `\"${customEventName}\" Cumulative Count`\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `\"${customEventName}\" Cumulative Count`,\n hasXDayVariant: true,\n key: 'cumCnt',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE,\n ...getOverrideableCustomEventAttributes({\n customEventName,\n key: 'cumCnt'\n })\n })\n },\n {\n buildCustomVariant: customEventName => ({\n abbreviatedName: 'Cumul Sum',\n buildXDayVariant: ({ parentMetricDefinition, xDay }) =>\n mergeParentMetricDefinitionWithXDayAttributes({\n parentMetricDefinition,\n xDay\n }),\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [],\n components: {\n dataExporter: {\n isVisible: false\n },\n groupedSummaryTable: {\n isVisible: false\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: 'Cumulative Value Sum'\n },\n tooltip: {\n dataSource: DATASOURCE_CUSTOM,\n desc: TOOLTIP_MISSING_DESC,\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/docs/custom-events',\n title: `\"${customEventName}\" Cumulative Value Sum`\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `\"${customEventName}\" Cumulative Value Sum`,\n hasXDayVariant: true,\n key: 'cumVal',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE,\n ...getOverrideableCustomEventAttributes({\n customEventName,\n key: 'cumVal'\n })\n })\n },\n {\n buildCustomVariant: customEventName => ({\n abbreviatedName: 'Participation',\n buildXDayVariant: ({ parentMetricDefinition, xDay }) =>\n mergeParentMetricDefinitionWithXDayAttributes({\n parentMetricDefinition,\n xDay\n }),\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [],\n components: {\n dataExporter: {\n isVisible: false\n },\n groupedSummaryTable: {\n isVisible: false\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: 'Participation (%)'\n },\n tooltip: {\n dataSource: DATASOURCE_CUSTOM,\n desc: TOOLTIP_MISSING_DESC,\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/docs/custom-events',\n title: `\"${customEventName}\" Participation`\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `\"${customEventName}\" Participation`,\n hasXDayVariant: true,\n key: 'participation',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: PERCENTAGE_VALUE_TYPE,\n ...getOverrideableCustomEventAttributes({\n customEventName,\n key: 'participation'\n })\n })\n },\n {\n buildCustomVariant: customEventName => ({\n abbreviatedName: 'Cost / Participation',\n buildXDayVariant: ({ parentMetricDefinition, xDay }) =>\n mergeParentMetricDefinitionWithXDayAttributes({\n parentMetricDefinition,\n xDay\n }),\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [],\n components: {\n dataExporter: {\n isVisible: false\n },\n groupedSummaryTable: {\n isVisible: false\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: 'Cost ($)'\n },\n tooltip: {\n dataSource: DATASOURCE_CUSTOM,\n desc: TOOLTIP_MISSING_DESC,\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/docs/custom-events',\n title: `Cost per \"${customEventName}\" Participation`\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `Cost per \"${customEventName}\" Participation`,\n hasXDayVariant: true,\n key: 'cpParticipant',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE,\n ...getOverrideableCustomEventAttributes({\n customEventName,\n key: 'cpParticipant'\n })\n })\n },\n {\n buildCustomVariant: customEventName => ({\n abbreviatedName: 'Cost / Event',\n buildXDayVariant: ({ parentMetricDefinition, xDay }) =>\n mergeParentMetricDefinitionWithXDayAttributes({\n parentMetricDefinition,\n xDay\n }),\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [],\n components: {\n dataExporter: {\n isVisible: false\n },\n groupedSummaryTable: {\n isVisible: false\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: 'Cost ($)'\n },\n tooltip: {\n dataSource: DATASOURCE_CUSTOM,\n desc: TOOLTIP_MISSING_DESC,\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/docs/custom-events',\n title: `Cost per \"${customEventName}\"`\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `Cost per \"${customEventName}\"`,\n hasXDayVariant: true,\n key: 'cpEvent',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE,\n ...getOverrideableCustomEventAttributes({\n customEventName,\n key: 'cpEvent'\n })\n })\n },\n {\n buildCustomVariant: customEventName => ({\n abbreviatedName: 'Count / User',\n buildXDayVariant: ({ parentMetricDefinition, xDay }) =>\n mergeParentMetricDefinitionWithXDayAttributes({\n parentMetricDefinition,\n xDay\n }),\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [],\n components: {\n dataExporter: {\n isVisible: false\n },\n groupedSummaryTable: {\n isVisible: false\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: 'Count / User'\n },\n tooltip: {\n dataSource: DATASOURCE_CUSTOM,\n desc: TOOLTIP_MISSING_DESC,\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/docs/custom-events',\n title: `Cumulative \"${customEventName}\" Count per Acquired User`\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `Cumulative \"${customEventName}\" Count per Acquired User`,\n hasXDayVariant: true,\n key: 'cumCntPu',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE,\n ...getOverrideableCustomEventAttributes({\n customEventName,\n key: 'cumCntPu'\n })\n })\n },\n {\n buildCustomVariant: customEventName => ({\n abbreviatedName: 'Value / User',\n buildXDayVariant: ({ parentMetricDefinition, xDay }) =>\n mergeParentMetricDefinitionWithXDayAttributes({\n parentMetricDefinition,\n xDay\n }),\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [],\n components: {\n dataExporter: {\n isVisible: false\n },\n groupedSummaryTable: {\n isVisible: false\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: 'Value / User'\n },\n tooltip: {\n dataSource: DATASOURCE_CUSTOM,\n desc: TOOLTIP_MISSING_DESC,\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/docs/custom-events',\n title: `Cumulative \"${customEventName}\" Value per Acquired User`\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `Cumulative \"${customEventName}\" Value per Acquired User`,\n hasXDayVariant: true,\n key: 'cumValPu',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE,\n ...getOverrideableCustomEventAttributes({\n customEventName,\n key: 'cumValPu'\n })\n })\n }\n]\n\nexport const CUSTOM_EVENT_OVERRIDES = {\n _purchase: {\n average: {\n displayName: 'Average Purchase Value per Transaction',\n valueType: CURRENCY_VALUE_TYPE\n },\n count: {\n abbreviatedName: 'Transactions',\n displayName: 'Purchase Transactions'\n },\n cpEvent: {\n abbreviatedName: 'Cost / Purchase',\n displayName: 'Cost Per Purchase Transaction'\n },\n cpParticipant: {\n abbreviatedName: 'Cost / Purchaser',\n displayName: 'Cost Per Returning Purchaser'\n },\n cumCnt: {\n abbreviatedName: 'Cumul Txns',\n displayName: 'Cumulative Purchase Transactions'\n },\n cumCntPu: {\n abbreviatedName: 'Txns per User',\n displayName: 'Cumulative Purchase Transactions per Acquired User'\n },\n cumVal: {\n abbreviatedName: 'Cumul Revenue',\n displayName: 'Cumulative Purchase Revenue',\n valueType: CURRENCY_VALUE_TYPE\n },\n cumValPu: {\n abbreviatedName: 'Revenue / User',\n displayName: 'Cumulative Purchase Revenue per Acquired User',\n valueType: CURRENCY_VALUE_TYPE\n },\n participation: {\n displayName: 'Purchaser Participation'\n },\n sum: {\n abbreviatedName: 'Revenue',\n displayName: 'Purchase Revenue',\n valueType: CURRENCY_VALUE_TYPE\n },\n users: {\n abbreviatedName: 'Purchasers',\n displayName: 'Unique Purchasers'\n }\n }\n}\n","// https://mathiasbynens.be/demo/url-regex\n// Based on https://gist.github.com/dperini/729294\n\nexport const REGEX_WEBURL = new RegExp(\n \"^\" +\n // protocol\n \"(?:(?:(?:https?):)?\\\\/\\\\/)\" +\n // host\n \"(?![-_])(?:[-\\\\w\\\\u00a1-\\\\uffff]{0,63}[^-_]\\\\.)+\" +\n // TLD\n \"(?:[a-z\\\\u00a1-\\\\uffff]{2,}\\\\.?)\" +\n // port number (optional)\n \"(?::\\\\d{2,5})?\" +\n // resource path (optional)\n \"(?:[/?#]\\\\S*)?\" +\n \"$\", \"u\"\n)\n","import { REGEX_WEBURL } from './regex-url'\n\nexport const TENJIN_ATTRIBUTION_PROVIDER_ID = '0'\n\nexport const PLATFORMS = {\n amazon: {\n deviceIdentifiers: {\n advertisingId: {\n description: 'The Amazon Advertising ID',\n label: 'Advertising ID'\n }\n },\n id: 'amazon',\n name: 'Amazon'\n },\n android: {\n appStore: {\n urlFormat: 'https://play.google.com/store/apps/details?id=',\n\n // https://support.google.com/admob/answer/3086746?hl=en\n // eslint-disable-next-line no-useless-escape\n urlRegex: /https:\\/\\/play\\.google\\.com\\/store\\/apps\\/details\\?id=[\\w\\.]+/u\n },\n deviceIdentifiers: {\n advertisingId: {\n description: 'The Google Advertising ID (GAID)',\n label: 'Google Advertising ID'\n }\n },\n id: 'android',\n name: 'Google Play'\n },\n androidOther: {\n appStore: {\n urlRegex: REGEX_WEBURL\n },\n deviceIdentifiers: {\n advertisingId: {\n description: 'The Android Advertising ID',\n label: 'Advertising ID'\n }\n },\n id: 'androidOther',\n name: 'Android Other'\n },\n ios: {\n appStore: {\n urlFormat:\n 'https://apps.apple.com//app//id',\n\n // https://support.google.com/admob/answer/3086746?hl=en\n // https://apps.apple.com//app/id\n // https://apps.apple.com//app//id\n urlRegex:\n /https:\\/\\/apps\\.apple\\.com(?:\\/[a-z]{2})?\\/app\\/([\\p{L}\\-0-9%]+\\/)?id\\w+/u\n },\n deviceIdentifiers: {\n advertisingId: {\n description: \"Apple's Advertiser for Advertiser (IDFA)\",\n label: 'IDFA',\n value: 'idfa'\n },\n developerDeviceId: {\n description: \"Apple's Advertiser for Vendor (IDFV)\",\n label: 'IDFV',\n value: 'idfv'\n }\n },\n id: 'ios',\n name: 'Apple'\n }\n}\n\nexport const CHANNELS = {\n META: {\n id: 3\n }\n}\n\nexport const LOOKBACK_WINDOWS = {\n 0: {\n id: '0',\n name: 'Today'\n },\n 1: {\n id: '1',\n name: 'Yesterday'\n },\n 2: {\n id: '2',\n name: '2 Days'\n },\n 3: {\n id: '3',\n name: '3 Days'\n },\n 7: {\n id: '7',\n name: '7 Days'\n },\n // eslint-disable-next-line sort-keys\n 14: {\n id: '14',\n name: '14 Days'\n },\n 30: {\n id: '30',\n name: '30 Days'\n }\n}\n\nexport const NETWORK_ERROR = 'Network Error'\n\nexport const BASE_JSONAPI_POINTER = '/data'\n\nexport const APP_CREATE_CONFLICT_MSG =\n 'Redirecting you to the existing app shortly.'\nexport const APP_CREATE_FAIL_MSG =\n 'Unable to create the app, check the errors in the form.'\nexport const APP_CREATE_SUCCESS_MSG =\n 'Successfully created! Redirecting you to your app shortly.'\nexport const NETWORK_ERROR_MSG =\n 'Connection failed. There may be a problem with your internet connection. Refresh your browser and try again.'\nexport const TRY_AGAIN_MSG = 'We ran into some issues. Try again.'\nexport const UNAUTHORIZED_ACCESS_MSG =\n 'Not authorized. Redirecting you to login to your account.'\n\nexport const LOGIN_PATH = '/login'\nexport const APPS_POST_PATH = '/dashboard/apps'\n\nexport const TARGETING_TAG_GROUPING_BY_PATTERN = /^__tag__:/\nexport const TARGETING_TAG_GROUPING_BY_SUBSTR_INDEX = 8\n\nexport const REPORTS = [\n {\n canSaveMetrics: true,\n id: 'overview',\n name: 'Overview',\n path: '/dashboard'\n },\n {\n canSaveMetrics: true,\n id: 'spend',\n name: 'Spend',\n path: '/dashboard/spend'\n },\n {\n canSaveMetrics: false,\n id: 'usage',\n name: 'Usage',\n path: '/dashboard/usage'\n },\n {\n canSaveMetrics: true,\n id: 'retention',\n name: 'Retention',\n path: '/dashboard/retention'\n },\n {\n canSaveMetrics: true,\n id: 'value',\n name: 'Value',\n path: '/dashboard/value'\n },\n {\n canSaveMetrics: true,\n id: 'revenue',\n name: 'Revenue',\n path: '/dashboard/revenue'\n },\n {\n canSaveMetrics: true,\n id: 'roi',\n name: 'ROI',\n path: '/dashboard/roi'\n },\n {\n canSaveMetrics: true,\n id: 'custom',\n name: 'In-App Events',\n path: '/dashboard/custom'\n },\n {\n canSaveMetrics: true,\n id: 'fraud',\n name: 'Fraud',\n path: '/dashboard/fraud'\n }\n]\n\nexport const ONE_SECOND = 1000\nexport const TIME_FORMAT = 'h:mm a on MMMM D'\nexport const FIVE_ITEMS = 5\nexport const FIRST_ITEM = 0\n\nexport const XDAY_FOR_METRIC_IN_COHORT_PATTERN = /_(\\d+)d$/\nexport const METRIC_IN_COHORT_PATTERN = /([a-zA-Z_]*)_\\d+d/\n\nexport const UNESCAPING_REGEX = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34);/g\n\n/* eslint-disable sort-keys */\nexport const UNESCAPED_MAPPING = {\n '&': '&',\n '&': '&',\n '<': '<',\n '<': '<',\n '>': '>',\n '>': '>',\n ''': \"'\",\n ''': \"'\",\n '"': '\"',\n '"': '\"'\n}\n/* eslint-enable sort-keys */\n\n/*\n Note: This is the only historical date range with viable\n reporting data in the demo account\n*/\nexport const DEMO_ORG_START_DATE_STR = '2024-11-01'\nexport const DEMO_ORG_END_DATE_STR = '2025-01-31'\nexport const DEMO_APP_ID = '9668185b-da2e-4638-b15f-e03431377ac5'\n\nexport const UA_METRICS_AVAILABLE_IN_SK_AD_NETWORK_REPORT = [\n 'spend',\n 'trackedInstalls',\n 'installs'\n]\n\nexport const TOOLTIP_MOUSE_ENTER_DELAY = 0.5\n\nexport const NULL_MATCH_CONDITION = {\n primaryMatchCondition: {\n id: null\n },\n secondaryMatchCondition: {\n id: null\n }\n}\n\nexport const FIRST_LINE_INDEX = 0\nexport const SECOND_LINE_INDEX = 1\nexport const LINE_DELIMITER = '\\n'\nexport const VALUE_DELIMITER = ','\n","import PropTypes from 'prop-types'\n\nimport {\n AM_CHANNEL_REQUIREMENT,\n APP_REQUIREMENT,\n AVERAGE_CALCULATION_LABEL,\n CURRENCY_VALUE_TYPE,\n NUMBER_VALUE_TYPE,\n PERCENTAGE_VALUE_TYPE,\n SDK_REQUIREMENT,\n TOTAL_CALCULATION_LABEL,\n UA_CHANNEL_REQUIREMENT,\n WHOLE_NUMBER_VALUE_TYPE\n} from '../contexts/MetricDefinitions/constants'\n\nexport const oneOfSelectableReports = PropTypes.oneOf([\n 'overview',\n 'spend',\n 'usage',\n 'retention',\n 'value',\n 'revenue',\n 'roi',\n 'custom',\n 'fraud',\n 'publisher'\n])\n\nexport const reportObject = PropTypes.shape({\n id: oneOfSelectableReports.isRequired,\n name: PropTypes.string.isRequired,\n path: PropTypes.string.isRequired,\n saveMetrics: PropTypes.boolean\n})\n\nexport const userAcquisitionReportObject = PropTypes.shape({\n label: PropTypes.oneOf([\n 'Overview',\n 'Spend',\n 'Usage',\n 'Retention',\n 'Value',\n 'Revenue',\n 'ROI',\n 'In-App Events',\n 'Fraud',\n 'Creatives'\n ]),\n path: PropTypes.oneOf([\n '/',\n '/spend',\n '/usage',\n '/retention',\n '/value',\n '/revenue',\n '/roi',\n '/custom',\n '/fraud',\n '/creatives'\n ]),\n value: PropTypes.oneOf([\n 'overview',\n 'spend',\n 'usage',\n 'retention',\n 'value',\n 'revenue',\n 'roi',\n 'custom',\n 'fraud',\n 'creatives'\n ])\n})\n\nexport const arrayOfReports = PropTypes.arrayOf(reportObject)\n\nconst objectShapeWithUrl = {\n url: PropTypes.string.isRequired\n}\n\nconst logoWithUrl = PropTypes.shape({\n ...objectShapeWithUrl,\n icon: PropTypes.shape(objectShapeWithUrl),\n retinaThumb: PropTypes.shape(objectShapeWithUrl),\n thumb: PropTypes.shape(objectShapeWithUrl)\n})\n\nexport const appChannelRubyObject = PropTypes.shape({\n ad_network_id: PropTypes.number,\n app_id: PropTypes.string,\n deterministic_click_attribution_window: PropTypes.number,\n deterministic_impression_attribution_window: PropTypes.number,\n organization_id: PropTypes.string,\n probabilistic_click_attribution_window: PropTypes.number,\n probabilistic_impression_attribution_window: PropTypes.number\n})\n\nexport const objectOfAppChannels = PropTypes.objectOf(appChannelRubyObject)\n\nexport const arrayOfAppChannels = PropTypes.arrayOf(appChannelRubyObject)\n\nexport const appChannelObject = PropTypes.shape({\n adNetworkId: PropTypes.number,\n appId: PropTypes.string,\n deterministicClickAttributionWindow: PropTypes.number,\n deterministicImpressionAttributionWindow: PropTypes.number,\n organizationId: PropTypes.string,\n probabilisticClickAttributionWindow: PropTypes.number,\n probabilisticImpressionAttributionWindow: PropTypes.number\n})\n\nexport const arrayOfAppChannelObjects = PropTypes.arrayOf(appChannelObject)\n\nexport const channelRubyObject = PropTypes.shape({\n active: PropTypes.boolean,\n custom: PropTypes.boolean,\n icon_url: PropTypes.oneOfType([PropTypes.string, () => null]),\n id: PropTypes.number.isRequired,\n logo: logoWithUrl,\n name: PropTypes.string.isRequired,\n short_id: PropTypes.string,\n visible: PropTypes.boolean\n})\n\nexport const objectOfChannels = PropTypes.objectOf(channelRubyObject)\n\nexport const arrayOfChannels = PropTypes.arrayOf(channelRubyObject)\n\nexport const channelObject = PropTypes.shape({\n active: PropTypes.boolean,\n custom: PropTypes.boolean,\n iconUrl: PropTypes.oneOfType([PropTypes.string, () => null]),\n id: PropTypes.number.isRequired,\n logo: logoWithUrl,\n name: PropTypes.string.isRequired,\n selfAttributing: PropTypes.boolean,\n shortId: PropTypes.string,\n visible: PropTypes.boolean\n})\n\nexport const arrayOfChannelObjects = PropTypes.arrayOf(channelObject)\n\nexport const oneOfChartTypes = PropTypes.oneOf([\n 'line',\n 'area',\n 'long',\n 'drill'\n])\n\nexport const countryObject = PropTypes.shape({\n emoji_flag: PropTypes.string,\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired\n})\n\nexport const arrayOfCountries = PropTypes.arrayOf(countryObject)\n\nexport const oneOfSelectableGranularities = PropTypes.oneOf([\n 'daily',\n 'weekly',\n 'monthly'\n])\nexport const oneOfSelectableDataExporterGranularities = PropTypes.oneOf([\n 'daily',\n 'weekly',\n 'monthly',\n 'totals-daily'\n])\nexport const oneOfAllAvailableGranularities = PropTypes.oneOf([\n 'daily',\n 'weekly',\n 'monthly',\n 'totals-daily',\n 'totals-weekly',\n 'totals-monthly'\n])\n\nexport const granularityObject = PropTypes.shape({\n id: oneOfSelectableGranularities.isRequired,\n name: PropTypes.oneOf(['Daily', 'Weekly', 'Monthly']).isRequired\n})\n\nexport const dataExporterGranularityObject = PropTypes.shape({\n id: oneOfSelectableDataExporterGranularities.isRequired,\n name: PropTypes.oneOf([\n 'Daily',\n 'Weekly',\n 'Monthly',\n 'Daily Totals',\n 'Weekly Totals',\n 'Monthly Totals'\n ]).isRequired\n})\n\nexport const oneOfSelectableGroupBys = PropTypes.oneOf([\n 'app_id',\n 'ad_network_id',\n 'campaign_id',\n 'platform',\n 'country',\n 'site_id',\n 'sk_campaign_id',\n 'tag_id'\n])\n\nexport const paginationObject = PropTypes.shape({\n current_page: PropTypes.number.isRequired,\n page_limit: PropTypes.number.isRequired,\n total_count: PropTypes.number.isRequired,\n total_pages: PropTypes.number.isRequired\n})\n\nexport const campaignObject = PropTypes.shape({\n ad_network_icon_url: PropTypes.string,\n ad_network_id: PropTypes.number.isRequired,\n ad_network_name: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n platform: PropTypes.oneOf([\n 'amazon',\n 'android',\n 'androidOther',\n 'ios',\n 'windows',\n null\n ]),\n remote_app_id: PropTypes.oneOfType([PropTypes.string, () => null])\n})\n\nexport const adPlacementObject = PropTypes.shape({\n ad_network_icon_url: PropTypes.string,\n ad_network_id: PropTypes.number.isRequired,\n ad_network_name: PropTypes.string.isRequired,\n app_id: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n platform: PropTypes.oneOf([\n 'amazon',\n 'android',\n 'androidOther',\n 'ios',\n 'windows',\n null\n ]),\n remote_publisher_app_id: PropTypes.oneOfType([PropTypes.string, () => null])\n})\n\nexport const arrayOfAdPlacements = PropTypes.arrayOf(adPlacementObject)\n\nexport const appAssociatorObject = PropTypes.oneOfType([\n adPlacementObject,\n campaignObject\n])\n\nexport const arrayOfAppAssociatorObjects =\n PropTypes.arrayOf(appAssociatorObject)\n\nexport const objectOfLookbackWindows = PropTypes.objectOf(\n PropTypes.shape({\n id: PropTypes.oneOf(['0', '1', '2', '3', '7', '14', '30']).isRequired,\n name: PropTypes.oneOf([\n 'Today',\n 'Yesterday',\n '2 Days',\n '3 Days',\n '7 Days',\n '14 Days',\n '30 Days'\n ]).isRequired\n })\n)\n\nexport const oneOfSelectableLookbackWindows = PropTypes.oneOf([\n '0',\n '1',\n '2',\n '3',\n '7',\n '14',\n '30'\n])\n\nexport const oneOfSelectablePlatforms = PropTypes.oneOf([\n 'amazon',\n 'android',\n 'androidOther',\n 'android_other',\n 'ios',\n 'windows',\n 'web'\n])\n\nexport const oneOfSelectableServerPlatforms = PropTypes.oneOf([\n 'amazon',\n 'android',\n 'android_other',\n 'ios',\n 'windows'\n])\n\nconst oneOfPlatformDisplayNames = PropTypes.oneOf([\n 'Amazon',\n 'Google Play',\n 'Android Other',\n 'Apple',\n 'Windows'\n])\n\nexport const arrayOfSelectablePlatforms = PropTypes.arrayOf(\n oneOfSelectablePlatforms\n)\n\nexport const arrayOfSelectableServerPlatforms = PropTypes.arrayOf(\n oneOfSelectableServerPlatforms\n)\n\nexport const associatableAppObject = PropTypes.shape({\n icon_url: PropTypes.oneOfType([PropTypes.string, () => null]),\n id: PropTypes.string,\n name: PropTypes.string,\n organization_id: PropTypes.string,\n platform: oneOfSelectablePlatforms\n})\n\nexport const objectOfFilterableApps = PropTypes.objectOf(associatableAppObject)\n\nexport const arrayOfAssociatableApps = PropTypes.arrayOf(associatableAppObject)\n\nexport const attributionProviderObject = PropTypes.shape({\n iconUrl: PropTypes.string,\n id: PropTypes.number,\n name: PropTypes.string\n})\n\nexport const objectOfAttributionProviders = PropTypes.objectOf(\n attributionProviderObject\n)\n\nexport const serverAttributionProviderObject = PropTypes.shape({\n icon_url: PropTypes.string,\n id: PropTypes.number,\n name: PropTypes.string\n})\n\nexport const objectOfServerAttributionProviders = PropTypes.objectOf(\n serverAttributionProviderObject\n)\n\nexport const platformObject = PropTypes.shape({\n appStore: PropTypes.shape({\n name: PropTypes.string,\n urlFormat: PropTypes.string,\n urlRegex: PropTypes.instanceOf(RegExp)\n }),\n id: oneOfSelectablePlatforms.isRequired,\n name: oneOfPlatformDisplayNames.isRequired,\n searchable: PropTypes.bool\n})\n\nexport const objectOfPlatforms = PropTypes.objectOf(platformObject)\n\nexport const serverPlatformObject = PropTypes.shape({\n appStore: PropTypes.shape({\n name: PropTypes.string.isRequired\n }),\n id: oneOfSelectableServerPlatforms.isRequired,\n name: oneOfPlatformDisplayNames.isRequired,\n searchable: PropTypes.bool.isRequired\n})\n\nexport const objectOfServerPlatforms = PropTypes.objectOf(serverPlatformObject)\n\nexport const oneOfEntities = PropTypes.oneOf(['campaigns', 'ad placements'])\n\nexport const oneOfExternalIDAttributes = PropTypes.oneOf([\n 'remote_app_id',\n 'remote_publisher_app_id'\n])\n\nexport const tableHeaderObject = PropTypes.shape({\n id: PropTypes.string,\n text: PropTypes.string,\n type: PropTypes.oneOf([\n 'currency',\n 'percentage',\n 'number',\n 'integer',\n 'string',\n 'wholeNumber'\n ])\n})\n\nexport const arrayOfTableHeaders = PropTypes.arrayOf(tableHeaderObject)\n\nexport const oneOfMetricValueTypes = PropTypes.oneOf([\n CURRENCY_VALUE_TYPE,\n NUMBER_VALUE_TYPE,\n PERCENTAGE_VALUE_TYPE,\n WHOLE_NUMBER_VALUE_TYPE\n])\n\n/**\n * Formik doesn't expose its injected props prop-types, so this file declares\n * them manually so we can re-use them easily.\n *\n * From https://formik.org/docs/api/formik#formik-render-methods-and-props\n */\nexport const formikInjectedPropTypes = {\n dirty: PropTypes.bool.isRequired,\n errors: PropTypes.object.isRequired,\n handleBlur: PropTypes.func.isRequired,\n handleChange: PropTypes.func.isRequired,\n handleReset: PropTypes.func.isRequired,\n handleSubmit: PropTypes.func.isRequired,\n isSubmitting: PropTypes.bool.isRequired,\n isValid: PropTypes.bool.isRequired,\n isValidating: PropTypes.bool.isRequired,\n resetForm: PropTypes.func.isRequired,\n setErrors: PropTypes.func.isRequired,\n setFieldError: PropTypes.func.isRequired,\n setFieldTouched: PropTypes.func.isRequired,\n setFieldValue: PropTypes.func.isRequired,\n setStatus: PropTypes.func.isRequired,\n setSubmitting: PropTypes.func.isRequired,\n setTouched: PropTypes.func.isRequired,\n setValues: PropTypes.func.isRequired,\n status: PropTypes.any,\n submitCount: PropTypes.number.isRequired,\n submitForm: PropTypes.func.isRequired,\n touched: PropTypes.object.isRequired,\n validateField: PropTypes.func.isRequired,\n validateForm: PropTypes.func.isRequired,\n values: PropTypes.object.isRequired\n}\n\nexport const formikInjectedPropTypesObject = PropTypes.shape(\n formikInjectedPropTypes\n)\n\n// The format in which Highcharts expects data to be shaped when creating a chart of data\nexport const highchartsSeriesObject = PropTypes.shape({\n data: PropTypes.arrayOf(\n PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number\n })\n ),\n id: PropTypes.string,\n name: PropTypes.string\n})\n\nexport const arrayOfHighchartsSeriesData = PropTypes.arrayOf(\n highchartsSeriesObject\n)\n\n// The format of data we build when Highcharts gives us the list of data points in a callback\n// function (e.g. tooltip formatter)\nexport const highchartsPointObject = PropTypes.shape({\n color: PropTypes.string.isRequired,\n series: PropTypes.shape({\n options: PropTypes.shape({\n iconUrl: PropTypes.string,\n id: PropTypes.string,\n name: PropTypes.string.isRequired,\n platform: oneOfSelectablePlatforms\n })\n }),\n y: PropTypes.number.isRequired\n})\n\nexport const arrayOfHighchartsPoints = PropTypes.arrayOf(highchartsPointObject)\n\nexport const metricDefinitionObject = PropTypes.shape({\n abbreviatedName: PropTypes.string.isRequired,\n calculatedAsLabel: PropTypes.oneOf([\n AVERAGE_CALCULATION_LABEL,\n TOTAL_CALCULATION_LABEL\n ]).isRequired,\n components: PropTypes.shape({\n groupedSummaryTable: PropTypes.shape({\n isVisible: PropTypes.bool.isRequired\n }),\n kpiCard: PropTypes.shape({\n isVisible: PropTypes.bool.isRequired\n }),\n kpiTabChart: PropTypes.shape({\n yAxis: PropTypes.string.isRequired\n }),\n tooltip: PropTypes.shape({\n dataSource: PropTypes.string.isRequired,\n desc: PropTypes.string.isRequired,\n formula: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired\n })\n }),\n displayName: PropTypes.string.isRequired,\n valueType: oneOfMetricValueTypes\n})\n\nconst oneOfXAxisTypes = PropTypes.oneOf(['datetime', 'xday'])\n\nconst oneOfApiEndpoints = PropTypes.oneOf([\n 'adRevenue',\n 'adRevenueSummary',\n 'cohort',\n 'cohortLifetime',\n 'customCohort',\n 'customCohortTotal',\n 'customUsageCumulative',\n 'customUsageTotal',\n 'groupedStats',\n 'summary'\n])\n\nexport const kpiTabGroupedStatsMetricDefinitionObject = PropTypes.shape({\n abbreviatedName: PropTypes.string.isRequired,\n calculatedAsLabel: PropTypes.oneOf([\n AVERAGE_CALCULATION_LABEL,\n TOTAL_CALCULATION_LABEL\n ]).isRequired,\n components: PropTypes.shape({\n groupedSummaryTable: PropTypes.shape({\n isVisible: PropTypes.bool.isRequired\n }),\n kpiCard: PropTypes.shape({\n isVisible: PropTypes.bool.isRequired\n }),\n kpiTabChart: PropTypes.shape({\n apiEndpoint: oneOfApiEndpoints.isRequired,\n chartType: oneOfChartTypes.isRequired,\n minY: PropTypes.number,\n minYRange: PropTypes.number,\n xAxisType: oneOfXAxisTypes.isRequired,\n yAxis: PropTypes.string.isRequired\n })\n }),\n displayName: PropTypes.string.isRequired,\n valueType: oneOfMetricValueTypes,\n xAxisType: oneOfXAxisTypes.isRequired\n})\n\nexport const kpiTabSummaryMetricDefinitionObject = PropTypes.shape({\n abbreviatedName: PropTypes.string.isRequired,\n calculatedAsLabel: PropTypes.oneOf([\n AVERAGE_CALCULATION_LABEL,\n TOTAL_CALCULATION_LABEL\n ]).isRequired,\n components: PropTypes.shape({\n groupedSummaryTable: PropTypes.shape({\n isVisible: PropTypes.bool.isRequired\n }),\n kpiCard: PropTypes.shape({\n isVisible: PropTypes.bool.isRequired\n }),\n kpiTabChart: PropTypes.shape({\n apiEndpoint: oneOfApiEndpoints.isRequired,\n yAxis: PropTypes.string.isRequired\n })\n }),\n displayName: PropTypes.string.isRequired,\n valueType: oneOfMetricValueTypes\n})\n\nexport const arrayOfSelectableCustomEvents = PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.shape({\n appId: PropTypes.string,\n iconUrl: PropTypes.string,\n name: PropTypes.string,\n platform: oneOfSelectablePlatforms\n }),\n options: PropTypes.arrayOf(\n PropTypes.shape({\n appId: PropTypes.string,\n label: PropTypes.string,\n value: PropTypes.string\n })\n )\n })\n)\n\nexport const objectOfTabs = PropTypes.objectOf(\n PropTypes.shape({\n chartProps: PropTypes.shape({\n chartType: oneOfChartTypes.isRequired,\n minY: PropTypes.number,\n minYRange: PropTypes.number,\n xAxisType: oneOfXAxisTypes\n }),\n metricDefinitionKey: PropTypes.string.isRequired\n })\n)\n\nexport const objectOfSummaryBlocks = PropTypes.objectOf(\n PropTypes.shape({\n apiEndpoint: oneOfApiEndpoints.isRequired,\n metricDefinitionKey: PropTypes.string.isRequired\n })\n)\n\nconst onboardingRequirements = [\n AM_CHANNEL_REQUIREMENT,\n APP_REQUIREMENT,\n UA_CHANNEL_REQUIREMENT,\n SDK_REQUIREMENT\n]\n\nexport const oneOfOnboardingRequirements = PropTypes.oneOf(\n onboardingRequirements\n)\nexport const arrayOfOnboardingRequirements = PropTypes.arrayOf(\n oneOfOnboardingRequirements\n)\n\nexport const arrayOfSelectableValueRanges = PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string\n })\n)\n\nexport const arrayOfSelectableComparisonOptions = PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string\n })\n)\n\nexport const onboardingStatusObject = PropTypes.shape({\n hasConfiguredAmChannels: PropTypes.bool.isRequired,\n hasConfiguredApps: PropTypes.bool.isRequired,\n hasConfiguredSdk: PropTypes.bool.isRequired,\n hasConfiguredUaChannels: PropTypes.bool.isRequired,\n hasRecentlyReceivedFirstEvents: PropTypes.bool.isRequired,\n totalNumAmChannels: PropTypes.number.isRequired,\n totalNumApps: PropTypes.number.isRequired,\n totalNumSdkEnabledApps: PropTypes.number.isRequired,\n totalNumUaChannels: PropTypes.number.isRequired\n})\n\nexport const arrayOfTableData = PropTypes.arrayOf(\n PropTypes.objectOf(PropTypes.object)\n)\n\nexport const oneOfSkAppClaimStatuses = PropTypes.oneOf([\n 'unverified',\n 'processing_request',\n 'verified'\n])\n\nexport const apiKeyRubyObject = PropTypes.shape({\n authentication_token: PropTypes.string.isRequired,\n created_at: PropTypes.string.isRequired,\n id: PropTypes.number.isRequired,\n is_new: PropTypes.bool,\n name: PropTypes.string.isRequired\n})\n\nexport const arrayOfApiKeys = PropTypes.arrayOf(apiKeyRubyObject)\n\nexport const apiKeyObject = PropTypes.shape({\n authenticationToken: PropTypes.string.isRequired,\n createdAt: PropTypes.string.isRequired,\n id: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired\n})\n\nexport const apiKeyAppRubyObject = PropTypes.shape({\n icon_url: PropTypes.string,\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired\n})\n\nexport const arrayOfApiKeyApps = PropTypes.arrayOf(apiKeyAppRubyObject)\n\nexport const apiKeyAppObject = PropTypes.shape({\n iconUrl: PropTypes.string,\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired\n})\n\nexport const apiKeyDateObject = PropTypes.shape({\n date: PropTypes.string\n})\n\nexport const integrationDateRubyObject = PropTypes.shape({\n sdk_most_recently_used_date: PropTypes.string\n})\n\nexport const mapOfIntegrationDates = PropTypes.objectOf(\n integrationDateRubyObject\n)\n\nexport const arrayOfSelectedItemIcons = PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string,\n url: PropTypes.string\n })\n)\n\nexport const appObject = PropTypes.shape({\n bundle_id: PropTypes.string,\n icon_url: PropTypes.string,\n id: PropTypes.string.isRequired,\n name: PropTypes.string,\n num_sk_apps: PropTypes.number,\n platform: oneOfSelectablePlatforms\n})\n\nexport const arrayOfAppObjects = PropTypes.arrayOf(appObject)\n\nexport const attribuionWindowObject = PropTypes.shape({\n level: PropTypes.oneOf(['app', 'appChannel']),\n matchType: PropTypes.oneOf(['deterministic', 'probabilistic']),\n type: PropTypes.string,\n value: PropTypes.number\n})\n\nexport const arrayOfAttributionWindowObjects = PropTypes.arrayOf(\n attribuionWindowObject\n)\n\nexport const revenueDeductionRubyObject = PropTypes.shape({\n // eslint-disable-next-line consistent-return\n deduction: (props, propName, componentName) => {\n // eslint-disable-next-line no-param-reassign\n props[propName] = Number(props[propName])\n if (Number.isNaN(props[propName])) {\n return new Error(\n `Invalid prop \\`${propName}\\` supplied to \\`${componentName}\\`. Validation failed.`\n )\n }\n },\n end_date: PropTypes.string,\n start_date: PropTypes.string.isRequired\n})\n\nexport const revenueDeductionObject = PropTypes.shape({\n deduction: PropTypes.number.isRequired,\n endDate: PropTypes.string,\n startDate: PropTypes.string.isRequired\n})\n\nexport const userSettingsObject = PropTypes.shape({\n email: PropTypes.shape({\n api_credentials_expiring: PropTypes.string.isRequired,\n api_credentials_failing: PropTypes.string.isRequired,\n campaign_batch_csv_import_complete: PropTypes.string.isRequired,\n campaign_batch_csv_import_failed: PropTypes.string.isRequired,\n csv_import_failed: PropTypes.string.isRequired,\n notifications: PropTypes.string.isRequired,\n suspended_accounts: PropTypes.string.isRequired\n }).isRequired,\n onboarding: PropTypes.shape({\n popup: PropTypes.string.isRequired\n }),\n reporting: PropTypes.shape({\n grouped_summary_table: PropTypes.shape({\n view_mode: PropTypes.string.isRequired\n }).isRequired\n }).isRequired,\n tracking: PropTypes.shape({\n fullstory: PropTypes.string.isRequired\n }).isRequired\n})\n\nexport const platformSDKObject = PropTypes.shape({\n label: PropTypes.string.isRequired,\n linkText: PropTypes.string.isRequired,\n linkUrl: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired\n})\n\nexport const arrayOfPlatformSDKOptions = PropTypes.arrayOf(platformSDKObject)\n\nexport const roleObject = PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired\n})\n\nexport const arrayOfRoleObjects = PropTypes.arrayOf(roleObject)\n\nexport const callbackGroupTemplates = PropTypes.shape({\n ad_network_id: PropTypes.number.isRequired,\n allow_multiple: PropTypes.bool,\n event_definition: PropTypes.number,\n id: PropTypes.string.isRequired,\n platform: oneOfSelectablePlatforms,\n required_macros: PropTypes.arrayOf(PropTypes.string)\n})\n\nexport const arrayOfCallbackGroupTemplates = PropTypes.arrayOf(\n callbackGroupTemplates\n)\n\nexport const breadcrumbPath = PropTypes.shape({\n label: PropTypes.string.isRequired,\n path: PropTypes.string\n})\n\nexport const arrayOfBreadcrumbPaths = PropTypes.arrayOf(breadcrumbPath)\n\nexport const overlayOpaquenessTypes = PropTypes.oneOf([\n 'none',\n 'mild',\n 'half',\n 'more',\n 'full'\n])\n\nexport const attributionWindowTimeTypes = PropTypes.oneOf(['hours', 'days'])\n\nexport const arrayOfAttributionWindowTimeTypes = PropTypes.arrayOf(\n attributionWindowTimeTypes\n)\n","import axios from 'axios'\nimport applyCaseMiddleware from 'axios-case-converter'\n\n// eslint-disable-next-line dot-notation\naxios.defaults.headers.common['Accept'] = 'application/json'\naxios.defaults.headers.common['Content-Type'] = 'application/json'\n\n/*\n Note: by default, we apply case transformation so that the front-end\n can work exclusively in camelCase and the rails back-end can\n work with snake_case, in cases where an exception must be made\n we use the `apiWithoutCaseTransformation` client instead\n*/\nconst api = applyCaseMiddleware(axios.create(), { ignoreHeaders: true })\nconst apiWithoutCaseTransformation = axios.create()\n\nconst apiClients = [api, apiWithoutCaseTransformation]\n\napiClients.forEach(client => {\n client.interceptors.request.use(\n config => {\n // eslint-disable-next-line varspacing/var-spacing\n const csrfToken = document.querySelector('[name=csrf-token]').content\n // eslint-disable-next-line no-param-reassign\n config.headers['X-CSRF-TOKEN'] = csrfToken\n\n return config\n }\n )\n})\n\nexport const {\n get,\n post,\n put,\n patch,\n ...httpVerbs\n} = api\n\nexport const {\n get: makeGetRequestWithoutCaseTransformation,\n post: makePostRequestWithoutCaseTransformation,\n put: makePutRequestWithoutCaseTransformation\n} = apiWithoutCaseTransformation\n","import { SUB_TABS } from './CallbacksTab/constants'\n\nexport const TABS = {\n APP_AND_SDK: 'app',\n ATTRIBUTION: 'attribution',\n CALLBACKS: 'callbacks',\n SK_AD_NETWORK: 'skadnetwork'\n}\n\nexport const LABEL_APP_AND_SDK = 'App & SDK'\nexport const LABEL_ATTRIBUTION = 'Attribution'\nexport const LABEL_CALLBACKS = 'Callbacks'\nexport const LABEL_SK_AD_NETWORK = 'SKAdNetwork'\n\nexport const PATH_INTEGRATIONS = '/integrations'\nexport const PATH_ATTRIBUTION = '/attribution'\nexport const PATH_CALLBACKS = '/callbacks'\nexport const PATH_SK_AD_NETWORK = '/skadnetwork'\n\nexport const PATH_DASHBOARD_APPS = '/dashboard/apps'\nexport const PATH_DASHBOARD_INTEGRATIONS = '/dashboard/integrations'\n\nexport const PLATFORM_IOS = 'ios'\n\nexport const PATH_APP_ID = '/:app_id'\n\nexport const CALLBACKS_TAB_SUB_TABS_PATHS = [\n '',\n SUB_TABS.S2S_CALLBACKS.PATH,\n SUB_TABS.HEALTH.PATH,\n SUB_TABS.INTEGRATIONS.BASE_PATH,\n SUB_TABS.INTEGRATIONS.PATH\n]\n","import { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport FontAwesomeIcon from '../../../FontAwesomeIcon'\n\nimport styles from './styles.module.scss'\n\nconst Link = ({\n children, className: classNameProp, isClickable, isExternal, onClick, to, ...restProps\n}) => {\n const handleClick = ev => {\n if (onClick) {\n onClick(ev)\n }\n\n return true\n }\n\n /* eslint-disable react/jsx-props-no-spreading */\n return (\n \n \n {children}\n\n {isClickable && }\n \n \n )\n /* eslint-enable react/jsx-props-no-spreading */\n}\n\nLink.propTypes = {\n children: PropTypes.node.isRequired,\n isClickable: PropTypes.bool,\n isExternal: PropTypes.bool,\n onClick: PropTypes.func,\n to: PropTypes.string.isRequired\n}\n\nLink.defaultProps = {\n isClickable: false,\n isExternal: false,\n onClick: null\n}\n\nexport default Link\n","import {\n each,\n filter,\n find,\n includes,\n intersection,\n isArray,\n isNil,\n last,\n lowerFirst,\n map,\n mapKeys,\n omit,\n sortBy,\n upperFirst\n} from 'lodash'\n\nimport {\n APPLE_METRIC_PREFIX,\n DATE_DIMENSION_GRANULARITY_MAPPING,\n REPORTING_API\n} from './constants'\n\nexport const mergeSkanDataObjectsById = ({ baseData, deltaData }) => {\n const baseDataIds = map(baseData, ({ id }) => id)\n const deltaDataIds = map(deltaData, ({ id }) => id)\n\n const matchingIds = intersection(baseDataIds, deltaDataIds)\n\n const baseDataOnly = filter(baseData, ({ id }) => !includes(matchingIds, id))\n const deltaDataOnly = filter(\n deltaData,\n ({ id }) => !includes(matchingIds, id)\n )\n\n const mergedDataObjects = []\n\n each(matchingIds, id => {\n const baseDataObject = find(baseData, { id }) || {}\n const deltaDataObject = find(deltaData, { id }) || {}\n\n mergedDataObjects.push({\n ...baseDataObject,\n ...deltaDataObject,\n attributes: {\n ...baseDataObject.attributes,\n ...deltaDataObject.attributes\n }\n })\n })\n\n const output = sortBy(\n [...baseDataOnly, ...deltaDataOnly, ...mergedDataObjects],\n ['id']\n )\n\n return output\n}\n\nexport const transformAppleMetricsForQuery = metrics =>\n map(metrics, metric => lowerFirst(metric.replace(APPLE_METRIC_PREFIX, '')))\n\nexport const processAppleMetricsResponse = ({ response, metrics }) => {\n const processedData = map(\n response.data.data,\n ({ attributes, ...properties }) => ({\n ...properties,\n attributes: mapKeys(attributes, (value, key) => {\n const isAppleMetric = includes(metrics, key)\n\n if (isAppleMetric) {\n return `${APPLE_METRIC_PREFIX}${upperFirst(key)}`\n }\n\n return key\n })\n })\n )\n\n const processedResponse = {\n ...response,\n data: {\n ...response.data,\n data: processedData\n }\n }\n\n return processedResponse\n}\n\nexport const useLastGroupBy = groupBy =>\n isArray(groupBy) ? last(groupBy) : groupBy\n\n/*\n TODO: Remove after clickhouse testing is complete\n\n Usage: add &flag=use_clickhouse to end of search\n */\nexport const isUsingClickhouse = () => {\n const urlFlag =\n new URLSearchParams(window.location.search).get('flag') === 'use_clickhouse'\n const userFlipper = window.gon.feature_flags.includes('user_clickhouse_ua')\n return urlFlag || userFlipper\n}\n\nexport const getSkAdNetworkGroupedUrl = () =>\n isUsingClickhouse()\n ? REPORTING_API[3].SK_AD_NETWORK_GROUPED_URL\n : REPORTING_API[2].SK_AD_NETWORK_GROUPED_URL\n\nexport const getSkAdNetworkUrl = () =>\n isUsingClickhouse()\n ? REPORTING_API[3].SK_AD_NETWORK_URL\n : REPORTING_API[2].SK_AD_NETWORK_URL\n\nexport const getSkanAppleGroupedUrl = () =>\n isUsingClickhouse()\n ? REPORTING_API[3].SKAN_APPLE_GROUPED_URL\n : REPORTING_API[2].SKAN_APPLE_GROUPED_URL\n\nexport const getSkanAppleUrl = () =>\n isUsingClickhouse()\n ? REPORTING_API[3].SKAN_APPLE_URL\n : REPORTING_API[2].SKAN_APPLE_URL\n\nexport const getCohortUrl = () =>\n isUsingClickhouse()\n ? REPORTING_API[3].COHORT_URL\n : REPORTING_API[2].COHORT_URL\n\nexport const getCohortLifetimeUrl = () =>\n isUsingClickhouse()\n ? REPORTING_API[3].COHORT_LIFETIME_URL\n : REPORTING_API[2].COHORT_LIFETIME_URL\n\nexport const getCustomCohortUrl = () =>\n isUsingClickhouse()\n ? REPORTING_API[3].CUSTOM_COHORT_URL\n : REPORTING_API[2].CUSTOM_COHORT_URL\n\nexport const getCustomUsageUrl = () =>\n isUsingClickhouse()\n ? REPORTING_API[3].CUSTOM_USAGE_URL\n : REPORTING_API[2].CUSTOM_USAGE_URL\n\nexport const getCustomMetricDefinitionsUrl = () =>\n REPORTING_API[3].CUSTOM_METRIC_DEFINITIONS_URL\n\nexport const getGroupedStatsUrl = () =>\n isUsingClickhouse()\n ? REPORTING_API[3].GROUPED_STATS_URL\n : REPORTING_API[1].GROUPED_STATS_URL\n\nexport const getGroupedSummaryUrl = () =>\n isUsingClickhouse()\n ? REPORTING_API[3].GROUPED_SUMMARY_URL\n : REPORTING_API[1].GROUPED_SUMMARY_URL\n\nexport const getStatsUrl = () =>\n isUsingClickhouse() ? REPORTING_API[3].STATS_URL : REPORTING_API[1].STATS_URL\n\nexport const getSummaryUrl = () =>\n isUsingClickhouse()\n ? REPORTING_API[3].SUMMARY_URL\n : REPORTING_API[1].SUMMARY_URL\n\nexport const transformQueryParamsForV4Api = ({ queryParams, isSummary }) => {\n if (isNil(queryParams))\n throw new Error(\n 'Cannot transform queryParams for v4 api, missing query params'\n )\n\n const dateDimension = isSummary\n ? []\n : [DATE_DIMENSION_GRANULARITY_MAPPING[queryParams.granularity]]\n\n const dimensions = [\n ...dateDimension,\n ...(isArray(queryParams.groupBy)\n ? queryParams.groupBy\n : queryParams.groupBy.split(','))\n ]\n\n return {\n ...omit(queryParams, 'groupBy'),\n dimensions\n }\n}\n\nexport const isUsingImpressionLevelRevenueData = () => {\n const isSourceIlrd =\n new URLSearchParams(window.location.search).get('source') === 'ilrd'\n const hasIlrdAccess = window.gon.feature_flags.includes('ilrd_enabled')\n return isSourceIlrd && hasIlrdAccess\n}\n","import {\n createContext,\n useContext,\n useReducer\n} from 'react'\nimport { isUndefined } from 'lodash'\n\nconst StateContext = createContext()\n\nconst reducer = state => state\n\n/* eslint-disable react/prop-types */\nexport const CurrentUserProvider = ({\n accessControl,\n children,\n currentUser,\n recentOrgs,\n switchableOrgs\n}) => {\n const [state] = useReducer(reducer, { accessControl, currentUser, recentOrgs, switchableOrgs })\n\n return (\n \n {children}\n \n )\n}\n/* eslint-enable react/prop-types */\n\nexport const useCurrentUserState = () => {\n const context = useContext(StateContext)\n\n if (isUndefined(context)) {\n throw new Error('useCurrentUserState must be used within a CurrentUserProvider')\n }\n\n return context\n}\n","export const PATH_INTEGRATION_ID = '/:integration_id?'\n\nexport const SUB_TABS = {\n HEALTH: {\n LABEL: 'Callback Health',\n PATH: 'callback_health'\n },\n INTEGRATIONS: {\n BASE_PATH: 'integrations',\n LABEL: 'Integrations',\n PATH: `integrations${PATH_INTEGRATION_ID}`\n },\n S2S_CALLBACKS: {\n LABEL: 'S2S Callbacks',\n PATH: 's2s_callbacks'\n }\n}\n\nexport const CALLBACKS_TABLE_HEADERS = {\n headers: ['Status', 'Name', 'Event', 'User Filter', ''],\n isHeadersRow: true\n}\n\nexport const GROUP_TYPE_STANDARD = 'standard'\nexport const GROUP_TYPE_ADVANCED = 'advanced'\n\nexport const NEW_EVENT_MODAL_HEADERS = {\n headers: [\n { label: 'Callback Name' },\n {\n label: 'Event Name',\n tooltipContent: 'What event should it correspond to?'\n },\n { label: 'User Filter' }\n ],\n isHeadersRow: true\n}\n\nexport const EDIT_CALLBACK_MODAL_HEADERS = {\n headers: [\n { label: 'Callback Name' },\n {\n label: 'Event Name',\n tooltipContent: 'What event should it correspond to?'\n },\n { label: 'User Filter' }\n ],\n isHeadersRow: true\n}\n\nexport const S2S_CALLBACKS_TABLE_HEADERS = {\n headers: ['Name', 'Event', ''],\n isHeadersRow: true\n}\n\nexport const HEALTH_TABLE_HEADERS = {\n headers: ['Name', 'Event', 'Health'],\n isHeadersRow: true\n}\n\nexport const CALLBACK_HEALTH_SUCCESS_THRESHOLD = 70\n\nexport const NEW_EVENT_DRAFT_DEFAULTS = {\n groupType: null,\n rows: [],\n selectedCallbackGroupTemplate: {}\n}\n\nexport const ACTION_OPTIONS = [\n { label: 'Ping Every Time', value: 'ping' },\n { label: 'Ping on Every Install', value: 'ping_on_first' }\n]\n\nexport const HEADER_INDEX_OFFSET = 1\n\nexport const USER_FILTER_OPTIONS = [\n { label: 'all users', value: 'all' },\n { label: 'this channel only', value: 'channel' },\n { label: 'this channel and organic', value: 'channelAndOrganic' }\n]\n\nexport const NEW_EVENT_EMPTY_ROW = {\n action: null,\n actionOptions: ACTION_OPTIONS,\n callbackName: '',\n eventDefinition: null,\n userFilter: null,\n userFilterOptions: USER_FILTER_OPTIONS\n}\n\nexport const PRESERVED_KEYS_FOR_CASE_TRANSFORMATION = [\n 'macros',\n 'credential_settings'\n]\n\nexport const DEFAULT_ERROR_MESSAGE = 'Something went wrong.'\n\nexport const CHANNEL_SETTINGS_ERROR = {\n callbacks: DEFAULT_ERROR_MESSAGE,\n credentials: DEFAULT_ERROR_MESSAGE,\n health: DEFAULT_ERROR_MESSAGE,\n s2sCallbacks: DEFAULT_ERROR_MESSAGE\n}\n\nexport const DEFAULT_ERROR_ALERT_PROPS = {\n icon: 'exclamation-triangle',\n level: 'danger'\n}\n\nexport const PRESERVED_CREDENTIAL_FACEBOOK_APP_ID = 'facebook_app_id'\n","import {\n each,\n filter,\n find,\n has,\n intersection,\n isEmpty,\n keys,\n mapValues,\n startCase,\n upperFirst\n} from 'lodash'\n\nimport { isUsingClickhouse } from '../../api/reporting/helpers'\nimport { isPresent } from '../../utils/helpers'\nimport {\n ADVERTISER_CONTEXT_STR,\n CUSTOM_REPORT_STR,\n PUBLISHER_CONTEXT_STR,\n PUBLISHER_PAGE_STR,\n SK_AD_NETWORK_CONTEXT_STR,\n SK_AD_NETWORK_PAGE_STR\n} from '../ReportingFilters/constants'\nimport {\n AM_CHANNEL_REQUIREMENT,\n AMOUNT_Y_AXIS,\n APP_REQUIREMENT,\n AVERAGE_CALCULATION_LABEL,\n BASE_METRIC_DEFINITIONS,\n CURRENCY_VALUE_TYPE,\n CUSTOM_EVENT_OVERRIDES,\n CUSTOM_METRIC_DEFINITIONS,\n DATASOURCE_CUSTOM,\n DATASOURCE_TENJIN,\n DATASOURCE_TENJIN_AD_NETWORK,\n METRIC_CATEGORY,\n NUMBER_VALUE_TYPE,\n SDK_REQUIREMENT,\n TOOLTIP_MISSING_DESC,\n TOOLTIP_MISSING_FORMULA,\n TOTAL_CALCULATION_LABEL,\n WHOLE_NUMBER_VALUE_TYPE,\n XDAYS_LIST\n} from './constants'\n\nexport const buildXDayMetricKey = ({ metric, xDay }) => `${metric}_${xDay}d`\nexport const buildAppleMetricKey = ({ metric }) => `apple${upperFirst(metric)}`\n\nexport const getBaseMetricDefinitionsMapping = baseMetricDefinitions => {\n const mapping = {}\n\n baseMetricDefinitions.forEach(({ key, ...values }) => {\n if (key) {\n mapping[key] = { key, ...values }\n }\n })\n\n return mapping\n}\n\nexport const getXDayMetricDefinitionsMapping = ({\n baseMetricDefinitions,\n xDaysList\n}) => {\n const mapping = {}\n\n const xDayMetricDefinitions = filter(baseMetricDefinitions, 'hasXDayVariant')\n\n xDayMetricDefinitions.forEach(metricDefinition => {\n xDaysList.forEach(xDay => {\n const { key, ...values } = metricDefinition.buildXDayVariant(xDay)\n\n mapping[key] = { key, ...values }\n })\n })\n\n return mapping\n}\n\nconst getCustomXDayMetricDefinitionsMapping = ({\n baseMetricDefinitions,\n xDaysList\n}) => {\n const mapping = {}\n\n const xDayMetricDefinitions = filter(baseMetricDefinitions, 'hasXDayVariant')\n\n xDayMetricDefinitions.forEach(metricDefinition => {\n xDaysList.forEach(xDay => {\n const { key, ...values } = metricDefinition.buildXDayVariant({\n parentMetricDefinition: metricDefinition,\n xDay\n })\n\n mapping[key] = { key, ...values }\n })\n })\n\n return mapping\n}\n\nexport const getAppleMetricDefinitionsMapping = baseMetricDefinitions => {\n const mapping = {}\n\n const appleMetricDefinitions = filter(\n baseMetricDefinitions,\n baseMetricDefinition =>\n baseMetricDefinition.hasAppleVariant &&\n has(baseMetricDefinition, 'buildAppleVariant')\n )\n\n appleMetricDefinitions.forEach(metricDefinition => {\n const { key, ...values } = metricDefinition.buildAppleVariant()\n\n mapping[key] = { key, ...values }\n })\n\n return mapping\n}\n\nexport const mergeParentMetricDefinitionWithXDayAttributes = ({\n parentMetricDefinition,\n xDay\n}) => ({\n ...parentMetricDefinition,\n abbreviatedName: `${xDay}-Day ${parentMetricDefinition.abbreviatedName}`,\n components: {\n ...parentMetricDefinition.components,\n dataExporter: {\n ...parentMetricDefinition.components.dataExporter,\n isVisible: true\n },\n groupedSummaryTable: {\n ...parentMetricDefinition.components.groupedSummaryTable,\n isVisible: true\n }\n },\n displayName: `${xDay}-Day ${parentMetricDefinition.displayName}`,\n key: buildXDayMetricKey({ metric: parentMetricDefinition.key, xDay }),\n keywords: ''\n})\n\nexport const getOverrideableCustomEventAttributes = ({\n customEventName,\n key\n}) => {\n if (has(CUSTOM_EVENT_OVERRIDES, [customEventName, key])) {\n return CUSTOM_EVENT_OVERRIDES[customEventName][key]\n }\n\n return {}\n}\n\nconst getUsersSummaryName = usersName =>\n isUsingClickhouse() ? 'Unique Users' : `Average ${usersName} (Deprecated)`\n\nconst getUsersCalculatedAsLabel = () =>\n isUsingClickhouse() ? '' : AVERAGE_CALCULATION_LABEL\n\nconst getMetricDefinitionsByGranularity = granularity => {\n const granularityDisplay = startCase(granularity)\n const usersDisplayName = `${granularityDisplay} Active Users`\n const usersAbbreviatedName = `${granularityDisplay.charAt(0)}AU`\n\n return [\n {\n abbreviatedName: `IAP ARP${usersAbbreviatedName}`,\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.COMPOSITE,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: `Average amount of IAP Revenue per ${usersAbbreviatedName} ($)`,\n formula: 'IAP Revenue / Number of users',\n link: 'https://docs.tenjin.com/docs/in-app-purchases-iap#what-is-iap-revenue-per-daily-active-users',\n title: `IAP Revenue Per ${usersDisplayName}`\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `IAP Revenue per ${usersDisplayName}`,\n key: 'iapArpu',\n keywords: '',\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: `Ad ARP${usersAbbreviatedName}`,\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.COMPOSITE,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: `Average amount of Ad Revenue per ${usersAbbreviatedName} ($)`,\n formula: 'Ad Revenue / Number of users',\n link: 'https://docs.tenjin.com/docs/average-revenue-per-daily-active-user-arpdau#what-is-ad-revenue-per-daily-active-users',\n title: `Ad Revenue Per ${usersDisplayName}`\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `Ad Revenue per ${usersDisplayName}`,\n key: 'pubArpu',\n keywords: '',\n onboardingRequirements: [AM_CHANNEL_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: `Total ARP${usersAbbreviatedName}`,\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.MEASURED,\n METRIC_CATEGORY.COMPOSITE,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: `Average amount of Total Revenue (IAP + Ad) per ${usersAbbreviatedName} ($)`,\n formula: '(IAP Revenue + Estimated Ad Revenue) / Number of users',\n link: 'https://docs.tenjin.com/docs/total-revenue#what-is-total-revenue-per-daily-active-usersom/docs/lifetime-active-days-per-user',\n title: `Total Revenue per ${usersDisplayName}`\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `Total Revenue per ${usersDisplayName}`,\n key: 'totalArpu',\n keywords: 'arpdau',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: `Ad Mediation ARP${usersAbbreviatedName}`,\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.AD_MEDIATION,\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: `Average amount of Ad Mediation Revenue per ${usersAbbreviatedName} ($)`,\n formula: 'Ad Mediation Revenue / Number of users',\n link: 'https://docs.tenjin.com/v1/docs/impression-level-revenue-data-ilrd',\n title: `Ad Mediation Revenue Per ${usersDisplayName}`\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `Ad Mediation Revenue per ${usersDisplayName}`,\n key: 'adMediationArpu',\n keywords: '',\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: `Total Ad Mediation ARP${usersAbbreviatedName}`,\n calculatedAsLabel: AVERAGE_CALCULATION_LABEL,\n categories: [\n METRIC_CATEGORY.AD_MEDIATION,\n METRIC_CATEGORY.REVENUE,\n METRIC_CATEGORY.NON_COHORTED\n ],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: AMOUNT_Y_AXIS\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN_AD_NETWORK,\n desc: `Average amount of Total Ad Mediation Revenue per ${usersAbbreviatedName} ($)`,\n formula: '(Ad Mediation Revenue + IAP Revenue) / Number of users',\n link: 'https://docs.tenjin.com/v1/docs/impression-level-revenue-data-ilrd',\n title: `Total Ad Mediation Revenue Per ${usersDisplayName}`\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `Total Ad Mediation Revenue per ${usersDisplayName}`,\n key: 'totalAdMediationArpu',\n keywords: '',\n valueType: CURRENCY_VALUE_TYPE\n },\n {\n abbreviatedName: getUsersSummaryName(usersAbbreviatedName),\n buildCustomVariant: customEventName => ({\n abbreviatedName: 'Users',\n buildXDayVariant: ({ parentMetricDefinition, xDay }) =>\n mergeParentMetricDefinitionWithXDayAttributes({\n parentMetricDefinition,\n xDay\n }),\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: 'Users'\n },\n tooltip: {\n dataSource: DATASOURCE_CUSTOM,\n desc: TOOLTIP_MISSING_DESC,\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/docs/daily-active-users-dau',\n title: `\"${customEventName}\" Users`\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `\"${customEventName}\" Users`,\n hasXDayVariant: true,\n key: 'users',\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE,\n ...getOverrideableCustomEventAttributes({\n customEventName,\n key: 'users'\n })\n }),\n buildXDayVariant: xDay => ({\n abbreviatedName: `${xDay}-Day Users`,\n calculatedAsLabel: TOTAL_CALCULATION_LABEL,\n categories: [],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: 'Users'\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Total number of users retained after N-Day of installing the app. Retention here is relative to the time of install',\n formula: TOOLTIP_MISSING_FORMULA,\n link: 'https://docs.tenjin.com/docs/daily-active-users-dau',\n title: `${xDay}-Day Retained Users`\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: `${xDay}-Day Retained Users`,\n key: buildXDayMetricKey({ metric: 'users', xDay }),\n keywords: '',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: NUMBER_VALUE_TYPE\n }),\n calculatedAsLabel: getUsersCalculatedAsLabel(),\n categories: [],\n components: {\n dataExporter: {\n isVisible: true\n },\n groupedSummaryTable: {\n isVisible: true\n },\n kpiCard: {\n isVisible: false\n },\n kpiTabChart: {\n yAxis: getUsersSummaryName(usersDisplayName)\n },\n tooltip: {\n dataSource: DATASOURCE_TENJIN,\n desc: 'Number of unique users per time period',\n formula: 'Count(advertising_id OR developer_device_id)',\n link: 'https://docs.tenjin.com/docs/daily-active-users-dau',\n title: getUsersSummaryName(usersDisplayName)\n }\n },\n context: [ADVERTISER_CONTEXT_STR],\n displayName: getUsersSummaryName(usersDisplayName),\n hasCustomVariant: true,\n hasXDayVariant: true,\n key: 'users',\n keywords: 'daily active users weekly monthly dau wau mau',\n onboardingRequirements: [APP_REQUIREMENT, SDK_REQUIREMENT],\n valueType: WHOLE_NUMBER_VALUE_TYPE\n }\n ]\n}\n\n/*\n TODO: [nafeu] Remove prop-drilled `featureFlags` object and\n use window.gon.feature_flags instead\n*/\nconst getBaseMetricDefinitionsByContext = ({\n contextStr,\n // eslint-disable-next-line no-unused-vars\n featureFlags = []\n}) => {\n const baseMetricDefinitions = BASE_METRIC_DEFINITIONS.filter(\n metricDefinition => metricDefinition.context?.includes(contextStr)\n )\n\n return {\n ...getBaseMetricDefinitionsMapping(baseMetricDefinitions),\n ...getAppleMetricDefinitionsMapping(baseMetricDefinitions),\n ...getXDayMetricDefinitionsMapping({\n baseMetricDefinitions,\n xDaysList: XDAYS_LIST\n })\n }\n}\n\nexport const getMetricDefinitionByKey = key =>\n find(BASE_METRIC_DEFINITIONS, { key })\n\nconst buildAdvertiserMetricDefinitionsFor = ({ featureFlags, granularity }) => {\n const metricDefinitionsByGranularity =\n getMetricDefinitionsByGranularity(granularity)\n\n return {\n ...getBaseMetricDefinitionsByContext({\n contextStr: ADVERTISER_CONTEXT_STR,\n featureFlags\n }),\n ...getBaseMetricDefinitionsMapping(metricDefinitionsByGranularity),\n ...getXDayMetricDefinitionsMapping({\n baseMetricDefinitions: metricDefinitionsByGranularity,\n xDaysList: XDAYS_LIST\n })\n }\n}\n\nconst definitionWithOverrides = ({ definition }) => {\n const hasTooltipTitle = has(definition, ['components', 'tooltip', 'title'])\n const hasLegacyTooltipOverride = has(definition, ['displayName'])\n\n const shouldOverrideDefinition = hasTooltipTitle && hasLegacyTooltipOverride\n\n if (shouldOverrideDefinition) {\n const updatedDefinition = { ...definition }\n\n updatedDefinition.components.tooltip.title = updatedDefinition.displayName\n\n return updatedDefinition\n }\n\n return definition\n}\n\nconst buildCustomMetricDefinitionsFor = ({ customEventName, granularity }) => {\n const metricDefinitionsByGranularity =\n getMetricDefinitionsByGranularity(granularity)\n\n const customMetricDefinitions = []\n\n metricDefinitionsByGranularity.forEach(metricDefinition => {\n if (metricDefinition.hasCustomVariant) {\n const definition = metricDefinition.buildCustomVariant(customEventName)\n customMetricDefinitions.push(definitionWithOverrides({ definition }))\n }\n })\n\n CUSTOM_METRIC_DEFINITIONS.forEach(metricDefinition => {\n const definition = metricDefinition.buildCustomVariant(customEventName)\n customMetricDefinitions.push(definitionWithOverrides({ definition }))\n })\n\n return {\n ...getBaseMetricDefinitionsMapping(customMetricDefinitions),\n ...getCustomXDayMetricDefinitionsMapping({\n baseMetricDefinitions: customMetricDefinitions,\n xDaysList: XDAYS_LIST\n })\n }\n}\n\nconst buildPublisherMetricDefinitions = ({ featureFlags }) =>\n getBaseMetricDefinitionsByContext({\n contextStr: PUBLISHER_CONTEXT_STR,\n featureFlags\n })\n\nconst buildSkAdNetworkMetricDefinitions = ({ featureFlags }) =>\n getBaseMetricDefinitionsByContext({\n contextStr: SK_AD_NETWORK_CONTEXT_STR,\n featureFlags\n })\n\nexport const getMetricsByCategoryMapping = metricDefinitions => {\n const { id: allCategoriesId } = METRIC_CATEGORY.ALL\n const { id: newCategoriesId } = METRIC_CATEGORY.NEW\n\n let mapping = {}\n\n each(metricDefinitions, ({ key, categories }) => {\n each(categories, ({ id: categoryId }) => {\n if (mapping[categoryId]) {\n mapping[categoryId] = [...mapping[categoryId], key]\n } else {\n mapping[categoryId] = [key]\n }\n })\n })\n\n const newMetrics = mapping[newCategoriesId]\n\n mapping = mapValues(mapping, (metrics, categoryId) => ({\n count: metrics.length,\n hasNewMetrics:\n !isEmpty(intersection(metrics, newMetrics)) &&\n categoryId !== newCategoriesId,\n metrics\n }))\n\n mapping[allCategoriesId] = {\n count: keys(metricDefinitions).length,\n hasNewMetrics: false\n }\n\n return mapping\n}\n\nexport const sortMetricCategoryIds = (a, b) => {\n const itemA = METRIC_CATEGORY[a]\n const itemB = METRIC_CATEGORY[b]\n\n if (itemA.order === undefined && itemB.order === undefined) {\n return itemA.id.localeCompare(itemB.id)\n }\n\n if (itemA.order === undefined) {\n return 1\n }\n\n if (itemB.order === undefined) {\n return -1\n }\n\n return itemA.order - itemB.order\n}\n\nconst buildMetricDefinitionsFor = ({\n customEventName,\n featureFlags,\n granularity,\n reportPage\n}) => {\n const isCustomReportPage = reportPage === CUSTOM_REPORT_STR\n\n if (isCustomReportPage) {\n if (isPresent(customEventName)) {\n return buildCustomMetricDefinitionsFor({ customEventName, granularity })\n }\n\n return {}\n }\n\n const isPublisherPage = reportPage === PUBLISHER_PAGE_STR\n\n if (isPublisherPage) {\n return buildPublisherMetricDefinitions({ featureFlags })\n }\n\n const isSkAdNetworkPage = reportPage === SK_AD_NETWORK_PAGE_STR\n\n if (isSkAdNetworkPage) {\n return buildSkAdNetworkMetricDefinitions({ featureFlags })\n }\n\n return buildAdvertiserMetricDefinitionsFor({ featureFlags, granularity })\n}\n\nexport default buildMetricDefinitionsFor\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"controlBackgroundColor\":\"#fff\",\"controlBgColor\":\"#dee9f4\",\"controlBorder\":\"1px solid #dee9f4\",\"controlBorderRadius\":\"4px\",\"controlDisabledBackgroundColor\":\"#eee\",\"controlFontFamily\":\"\\\"Montserrat\\\",\\\"Lato\\\",\\\"Helvetica Neue\\\",Helvetica,Sans-serif\",\"controlFontSize\":\"14px\",\"controlFontWeight\":\"600\",\"controlLineHeight\":\"40px\",\"dropdownIndicatorColor\":\"#265479\",\"formDropdownPadding\":\"0px\",\"formDropdownValueContainerWidth\":\"190px\",\"menuListMaxHeight\":\"180px\",\"menuListScrollbarBackgroundColor\":\"#babdbf\",\"menuListScrollbarBorder\":\"2px solid #fff\",\"menuListScrollbarBorderRadius\":\"8px\",\"menuListScrollbarDimensions\":\"11px\",\"menuRight\":\"0\",\"menuWidth\":\"250px\",\"menuZIndex\":\"8000\",\"placeholderColor\":\"#265479\",\"placeholderFontWeight\":\"300\",\"placeholderHeight\":\"40px\",\"placeholderPadding\":\"0 15px\",\"singleValueColor\":\"#265479\",\"singleValueFontWeight\":\"300\",\"singleValuePaddingLeft\":\"15px\",\"google-oauth-button\":\"styles-module__google-oauth-button___39Ks4\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___3U-wE\",\"btn-toggle\":\"styles-module__btn-toggle___3CLkn\",\"handle\":\"styles-module__handle___fPbF0\",\"active\":\"styles-module__active___1UGA-\",\"focus\":\"styles-module__focus___2oKPY\",\"card-panel\":\"styles-module__card-panel___2OOZU\",\"panel-heading\":\"styles-module__panel-heading___3fsjF\",\"panel-title\":\"styles-module__panel-title___8v4Qw\",\"panel-subtitle\":\"styles-module__panel-subtitle____IMOV\",\"panel-body\":\"styles-module__panel-body___1D1-0\",\"header\":\"styles-module__header___2S67d\",\"row\":\"styles-module__row___2k9By\",\"cell\":\"styles-module__cell___3HJD7\",\"cellItem\":\"styles-module__cellItem___1BV3m\",\"callbackModalInput\":\"styles-module__callbackModalInput___2ARvA\",\"threeItemRow\":\"styles-module__threeItemRow___24N1J\",\"addEventsButton\":\"styles-module__addEventsButton___1bAbO\",\"footer\":\"styles-module__footer___2Z5Wm\",\"saveButton\":\"styles-module__saveButton___2RMZ_\",\"cancelButton\":\"styles-module__cancelButton___K_QSA\",\"editCallbackModal\":\"styles-module__editCallbackModal___1HVv-\",\"flexTable\":\"styles-module__flexTable___79LgL\",\"instructions\":\"styles-module__instructions___3VeSM\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"controlBackgroundColor\":\"#fff\",\"controlBgColor\":\"#dee9f4\",\"controlBorder\":\"1px solid #dee9f4\",\"controlBorderRadius\":\"4px\",\"controlDisabledBackgroundColor\":\"#eee\",\"controlFontFamily\":\"\\\"Montserrat\\\",\\\"Lato\\\",\\\"Helvetica Neue\\\",Helvetica,Sans-serif\",\"controlFontSize\":\"14px\",\"controlFontWeight\":\"600\",\"controlLineHeight\":\"40px\",\"dropdownIndicatorColor\":\"#265479\",\"formDropdownPadding\":\"0px\",\"formDropdownValueContainerWidth\":\"190px\",\"menuListMaxHeight\":\"180px\",\"menuListScrollbarBackgroundColor\":\"#babdbf\",\"menuListScrollbarBorder\":\"2px solid #fff\",\"menuListScrollbarBorderRadius\":\"8px\",\"menuListScrollbarDimensions\":\"11px\",\"menuRight\":\"0\",\"menuWidth\":\"250px\",\"menuZIndex\":\"8000\",\"placeholderColor\":\"#265479\",\"placeholderFontWeight\":\"300\",\"placeholderHeight\":\"40px\",\"placeholderPadding\":\"0 15px\",\"singleValueColor\":\"#265479\",\"singleValueFontWeight\":\"300\",\"singleValuePaddingLeft\":\"15px\",\"google-oauth-button\":\"styles-module__google-oauth-button___lTXCY\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___3Z4aE\",\"btn-toggle\":\"styles-module__btn-toggle___3wnGO\",\"handle\":\"styles-module__handle___3Qlb1\",\"active\":\"styles-module__active___iUQAc\",\"focus\":\"styles-module__focus___18kbn\",\"card-panel\":\"styles-module__card-panel___Tb27_\",\"panel-heading\":\"styles-module__panel-heading___2gJCw\",\"panel-title\":\"styles-module__panel-title___1j1iM\",\"panel-subtitle\":\"styles-module__panel-subtitle___18cwO\",\"panel-body\":\"styles-module__panel-body___2w3wt\",\"header\":\"styles-module__header___2PlrZ\",\"row\":\"styles-module__row___23A0Z\",\"cell\":\"styles-module__cell___2IS4t\",\"cellItem\":\"styles-module__cellItem___BUSZT\",\"eventModalInput\":\"styles-module__eventModalInput___2HGN3\",\"threeItemRow\":\"styles-module__threeItemRow___2I-Dv\",\"addEventsButton\":\"styles-module__addEventsButton___3nicm\",\"footer\":\"styles-module__footer___1Ifxf\",\"saveButton\":\"styles-module__saveButton___3gIVr\",\"cancelButton\":\"styles-module__cancelButton___2mnkh\",\"newEventModal\":\"styles-module__newEventModal___1OVDg\",\"flexTable\":\"styles-module__flexTable___1ksra\",\"instructions\":\"styles-module__instructions___ZNRrM\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___2PMi-\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___QY4o8\",\"btn-toggle\":\"styles-module__btn-toggle___1S9va\",\"handle\":\"styles-module__handle___2JX75\",\"active\":\"styles-module__active___1lGzw\",\"focus\":\"styles-module__focus___2W_wG\",\"card-panel\":\"styles-module__card-panel___28HF3\",\"panel-heading\":\"styles-module__panel-heading___Xk6_X\",\"panel-title\":\"styles-module__panel-title___3zl4p\",\"panel-subtitle\":\"styles-module__panel-subtitle___SfyRU\",\"panel-body\":\"styles-module__panel-body___2Qrv6\",\"groupedSummaryTableMetrics\":\"styles-module__groupedSummaryTableMetrics___3Yz69\",\"visibleGroupedSummaryTableMetrics\":\"styles-module__visibleGroupedSummaryTableMetrics___25gZX\",\"inner\":\"styles-module__inner___1ICMx\",\"innerHeader\":\"styles-module__innerHeader___SnC9R\",\"fa-close\":\"styles-module__fa-close___2P-nU\",\"innerFilter\":\"styles-module__innerFilter___3XdjT\",\"innerFilterHeader\":\"styles-module__innerFilterHeader___3malD\",\"innerFilterClear\":\"styles-module__innerFilterClear___2TIAN\",\"innerList\":\"styles-module__innerList___2VzFX\",\"innerFilterInput\":\"styles-module__innerFilterInput___vXxjL\",\"innerListScrollableWrapper\":\"styles-module__innerListScrollableWrapper___ogykw\",\"innerListItems\":\"styles-module__innerListItems___2iQBJ\",\"innerListItem\":\"styles-module__innerListItem___3TYzX\",\"innerListItemIcon\":\"styles-module__innerListItemIcon___1WU-k\",\"fa-reorder\":\"styles-module__fa-reorder___3jwB7\",\"dragIcon\":\"styles-module__dragIcon___xsQpn\",\"selectedInnerListItem\":\"styles-module__selectedInnerListItem___w7178\",\"SelectedInnerListItemIcon\":\"styles-module__SelectedInnerListItemIcon___3OhxR\",\"selectedInnerListItemIcon\":\"styles-module__selectedInnerListItemIcon___duetU\",\"innerListItemContent\":\"styles-module__innerListItemContent___1oAGU\",\"innerSaveBtn\":\"styles-module__innerSaveBtn___3A_bN\",\"disabled\":\"styles-module__disabled___108IM\",\"activeInnerSaveBtn\":\"styles-module__activeInnerSaveBtn___2Bk1m\",\"categorySelectorIsOpen\":\"styles-module__categorySelectorIsOpen___iAOSQ\",\"metricCategory\":\"styles-module__metricCategory___1mKMf\",\"metricCategoriesExpander\":\"styles-module__metricCategoriesExpander___2stiC\",\"metricCategoryTooltip\":\"styles-module__metricCategoryTooltip___1WkkG\",\"metricCategoryCount\":\"styles-module__metricCategoryCount___2pk7f\",\"isSelected\":\"styles-module__isSelected___2y7ZG\",\"metricCategoryLabel\":\"styles-module__metricCategoryLabel___1oqbr\",\"newItemLabel\":\"styles-module__newItemLabel___2snvo\"};","import React, { Fragment } from 'react'\nimport Select, { components } from 'react-select'\nimport { omit, isNil } from 'lodash'\nimport classNames from 'classnames'\n\nimport { PRIMARY_COLORS } from '../../utils/react-select'\nimport { deepCamelKeys } from '../../utils/helpers'\nimport PlatformIcon from '../PlatformIcon'\nimport Icon from '../Icon'\n\nimport stylesObj from './styles.module.scss'\n\nexport const customStyles = {\n container: styles => ({ ...styles, cursor: 'pointer', width: '100%' }),\n control: () => ({\n backgroundColor: stylesObj.controlBgColor,\n borderRadius: stylesObj.controlBorderRadius,\n display: 'flex',\n flexGrow: 0,\n flexShrink: 1,\n fontFamily: stylesObj.controlFontFamily,\n fontSize: stylesObj.controlFontSize,\n fontWeight: stylesObj.controlFontWeight,\n lineHeight: stylesObj.controlLineHeight\n }),\n dropdownIndicator: styles => ({\n ...styles,\n ':hover': {\n ...styles[':hover'],\n color: PRIMARY_COLORS.base\n },\n color: PRIMARY_COLORS.base\n }),\n indicatorSeparator: styles => ({\n ...styles,\n display: 'none',\n width: 0\n }),\n menu: styles => ({\n ...styles,\n whiteSpace: 'nowrap',\n width: 'auto',\n zIndex: stylesObj.menuZIndex\n }),\n placeholder: styles => ({\n ...styles,\n color: stylesObj.placeholderColor,\n fontStyle: 'italic',\n fontWeight: stylesObj.placeholderFontWeight\n }),\n singleValue: styles => ({\n ...omit(styles, ['maxWidth', 'position', 'transform']),\n color: PRIMARY_COLORS.base,\n margin: 0\n }),\n valueContainer: styles => ({\n ...styles,\n flexWrap: 'nowrap',\n padding: stylesObj.valueContainerPadding\n })\n}\n\nexport const labelledControlStyles = {\n control: () => ({\n backgroundColor: stylesObj.controlBgColor,\n borderRadius: stylesObj.controlBorderRadius,\n display: 'flex',\n flexGrow: 0,\n flexShrink: 1,\n fontFamily: stylesObj.controlFontFamily,\n fontSize: stylesObj.controlFontSize,\n fontWeight: stylesObj.controlFontWeight,\n lineHeight: stylesObj.labelledControlHeight,\n paddingTop: stylesObj.labelledControlPaddingTop\n }),\n singleValue: styles => ({\n ...omit(styles, ['maxWidth', 'position', 'transform']),\n color: stylesObj.labelledControlColor,\n margin: 0\n })\n}\n\n/* eslint-disable react/prop-types, react/jsx-props-no-spreading */\nconst Dropdown = ({\n customControl,\n customStyles: customStylesProp,\n label: dropdownLabel,\n ...restProps\n}) => {\n let customComponents = {}\n\n const isUsingLabel = !isNil(dropdownLabel)\n\n if (isUsingLabel) {\n const CustomControl = props => (\n \n
{dropdownLabel}
\n {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n \n
\n )\n\n customComponents = {\n ...customComponents,\n Control: CustomControl\n }\n }\n\n const CustomOption = props => {\n const { data } = props\n\n const {\n iconUrl,\n label,\n name,\n platform,\n id\n } = deepCamelKeys(data)\n\n return (\n \n
\n {iconUrl && }\n {platform && }\n {name || label || id}\n
\n
\n )\n }\n\n customComponents = {\n ...customComponents,\n Option: CustomOption\n }\n\n if (customControl) {\n customComponents.Control = customControl\n }\n\n return (\n ({\n ...theme,\n colors: {\n ...theme.colors,\n primary: PRIMARY_COLORS.base,\n primary25: PRIMARY_COLORS['25'],\n primary50: PRIMARY_COLORS['50'],\n primary75: PRIMARY_COLORS['75']\n }\n })}\n components={customComponents}\n />\n )\n}\n/* eslint-enable react/prop-types, react/jsx-props-no-spreading */\n\nexport default Dropdown\n","import {\n includes,\n isEmpty,\n isNil,\n isString,\n map,\n partition,\n pick\n} from 'lodash'\nimport { plural } from 'pluralize'\nimport { snakeCase } from 'snake-case'\n\nimport { GROUP_BY_CAMPAIGN_STR } from '../../contexts/GroupedSummaryTableSettings/constants'\n// eslint-disable-next-line import/no-cycle\nimport {\n isCreativesReportPage,\n isCustomReportPage,\n isPublisherPage,\n isSkAdNetworkPage\n} from '../../contexts/ReportingFilters'\nimport {\n ALL_GROUP_BY_ID_STR,\n SK_AD_NETWORK_REPORT_TYPE_STR\n} from '../../contexts/ReportingFilters/constants'\nimport {\n METRIC_IN_COHORT_PATTERN,\n UA_METRICS_AVAILABLE_IN_SK_AD_NETWORK_REPORT,\n XDAY_FOR_METRIC_IN_COHORT_PATTERN\n} from '../../utils/constants'\nimport {\n deepSnakeKeys,\n isPresent,\n isValidPath,\n mergeDataObjectsById,\n processAndMergeDataObjectsById\n} from '../../utils/helpers'\nimport { get, httpVerbs, post, put } from '../../utils/request'\nimport {\n DASHBOARD_REPORTS_UPDATE_TABLE_NAME_COLUMN_MODE_URL,\n DASHBOARD_REPORTS_UPDATE_TABLE_VIEW_MODE_URL,\n DASHBOARD_SAVED_REPORTS_URL,\n REPORTING_API\n} from './constants'\nimport {\n getCohortLifetimeUrl,\n getCohortUrl,\n getCustomCohortUrl,\n getCustomUsageUrl,\n getGroupedStatsUrl,\n getGroupedSummaryUrl,\n getSkAdNetworkGroupedUrl,\n getSkAdNetworkUrl,\n getSkanAppleGroupedUrl,\n getSkanAppleUrl,\n getStatsUrl,\n getSummaryUrl,\n mergeSkanDataObjectsById,\n processAppleMetricsResponse,\n transformAppleMetricsForQuery,\n useLastGroupBy\n} from './helpers'\n\nconst transformMetricsForQuery = metrics => {\n if (isEmpty(metrics)) {\n return []\n }\n\n let transformedMetrics = [...metrics]\n\n if (isEmpty(transformedMetrics)) {\n throw new Error('must provide metrics when requesting reporting data')\n }\n\n if (isString(transformedMetrics)) {\n transformedMetrics = transformedMetrics.split(',')\n }\n\n return transformedMetrics.map(metric => snakeCase(metric)).join(',')\n}\n\nconst getMetricKeyFromCohortedMetricKey = metricKey => {\n const metricMatch = metricKey.match(METRIC_IN_COHORT_PATTERN)\n\n // if there is a match we get back an array of matches\n // participation_0d => [\"participation_0d\", \"participation\"]\n // we want the non-cohort version \"participation\"\n return metricMatch ? metricMatch[1] : metricKey\n}\n\nconst getXdayFromCohortedMetricKey = metricKey => {\n const xdayMatch = metricKey.match(XDAY_FOR_METRIC_IN_COHORT_PATTERN)\n\n // if there is a match we get back an array of matches\n // participation_0d => [\"_0d\", \"0\"]\n // we want the numeric value for xdays \"0\"\n return xdayMatch ? Number(xdayMatch[1]) : null\n}\n\nconst getCustomCohortQueryParamsFromMetrics = metricKeys => {\n const metrics = []\n const xdays = []\n\n metricKeys.forEach(metricKey => {\n const metric = getMetricKeyFromCohortedMetricKey(metricKey)\n\n if (isPresent(metric) && !metrics.includes(metric)) {\n metrics.push(metric)\n }\n\n const xday = getXdayFromCohortedMetricKey(metricKey)\n\n if (isPresent(xday) && !xdays.includes(xday)) {\n xdays.push(xday)\n }\n })\n\n return { metrics: transformMetricsForQuery(metrics), xdays }\n}\n\nexport const getRowIdForChildQuery = context => {\n const { row, rules } = context\n\n if (isNil(row)) throw new Error('missing row in child query context')\n if (isNil(rules)) throw new Error('missing rules in child query context')\n\n let { id } = row\n\n if (isNil(id) && isNil(row.attributes?.campaignId)) {\n throw new Error('missing id in row context')\n }\n\n const isSkAdNetworkReport = row.type === SK_AD_NETWORK_REPORT_TYPE_STR\n const isCampaignIdGroupBy = rules[0] === GROUP_BY_CAMPAIGN_STR\n\n if (isSkAdNetworkReport && isCampaignIdGroupBy) {\n id = row.attributes?.campaignId || row.campaignId\n }\n\n return id\n}\n\nexport const getSelectedRulesForChildQuery = context => {\n const { rules, queryParams } = context\n\n if (isNil(rules)) throw new Error('missing rules in child query context')\n\n const pluralizedRules = rules.map(rule => plural(rule))\n\n return pick(queryParams, pluralizedRules)\n}\n\nexport const getPluralizedDimensions = context => {\n isValidPath({ object: context, path: 'queryParams.dimensions' })\n\n const {\n queryParams: { dimensions }\n } = context\n\n return dimensions.map(dimension => plural(dimension))\n}\n\nexport const buildChildQueryIds = context => {\n const selectedRules = getSelectedRulesForChildQuery(context)\n const pluralizedGroupBy = getPluralizedDimensions(context)\n const id = getRowIdForChildQuery(context)\n\n return {\n ...selectedRules,\n [pluralizedGroupBy]: [id]\n }\n}\n\nexport const formatQueryParams = ({ metrics, ...query }) => {\n if (isEmpty(metrics)) {\n throw new Error('must provide metrics when requesting reporting data')\n }\n\n let formattedMetrics = metrics\n\n if (isString(metrics)) {\n formattedMetrics = metrics.split(',')\n }\n\n formattedMetrics = formattedMetrics.map(metric => snakeCase(metric)).join(',')\n\n return { metrics: formattedMetrics, ...query }\n}\n\nexport const prepareApiResponse = ({ context, response }) => {\n const { data: rows } = response.data\n\n const { isFlat, isLastQueryInSequence } = context\n\n if (isFlat) return rows\n\n return rows.map(row => ({\n ...row,\n childQueryIds: buildChildQueryIds({ ...context, row }),\n isLastQueryInSequence\n }))\n}\n\nexport const fetchReportingData = async ({\n context,\n makeGetRequest = get,\n apiUrlOverride\n}) => {\n const { apiVersion, reportType, queryParams } = context\n\n if (isNil(apiVersion))\n throw new Error('missing apiVersion in request context')\n if (isNil(reportType))\n throw new Error('missing reportType in request context')\n if (isNil(queryParams))\n throw new Error('missing query params in request context')\n\n const params = formatQueryParams(queryParams)\n\n const requestUrl = apiUrlOverride || REPORTING_API[apiVersion][reportType]\n\n const response = await makeGetRequest(requestUrl, { params })\n\n return prepareApiResponse({ context, response })\n}\n\nexport const fetchSummaryData = async ({ params }) => {\n const queryParams = { ...params }\n\n queryParams.metrics = transformMetricsForQuery(queryParams.metrics)\n\n const response = await get(getSummaryUrl(), { params: queryParams })\n\n return response.data.data[0]\n}\n\nexport const fetchGroupedStatsData = async ({ params }) => {\n const queryParams = { ...params }\n\n queryParams.metrics = transformMetricsForQuery(queryParams.metrics)\n\n const response = await get(getGroupedStatsUrl(), { params: queryParams })\n\n return response.data.data\n}\n\nconst getChildQueryIds = ({ queryParams, row, rules }) => {\n const rulesPluralized = rules.map(rule => plural(rule))\n\n let { id } = row\n\n const isSkAdNetworkReport = row.type === SK_AD_NETWORK_REPORT_TYPE_STR\n const isCampaignIdGroupBy = rules[0] === GROUP_BY_CAMPAIGN_STR\n\n if (isSkAdNetworkReport && isCampaignIdGroupBy) {\n id = row.attributes?.campaignId || row.campaignId\n }\n\n return {\n ...pick(queryParams, rulesPluralized),\n [plural(queryParams.groupBy)]: [id]\n }\n}\n\nexport const fetchGroupedSummaryData = async ({\n makeGetRequest = get,\n apiUrlOverride,\n isFlat,\n isLastQueryInSequence,\n params,\n parentQueryIds = {},\n rules\n}) => {\n const queryParams = { ...params }\n\n queryParams.metrics = transformMetricsForQuery(params.metrics)\n\n const response = await makeGetRequest(\n apiUrlOverride || getGroupedSummaryUrl(),\n { params: queryParams }\n )\n\n if (isFlat) {\n return response.data.data\n }\n\n return response.data.data.map(row => ({\n ...row,\n childQueryIds: {\n ...getChildQueryIds({\n queryParams,\n row,\n rules\n }),\n ...parentQueryIds\n },\n isLastQueryInSequence\n }))\n}\n\nexport const fetchGroupedAdRevenueData = async ({\n isFlat,\n isLastQueryInSequence,\n params,\n parentQueryIds = {},\n rules\n}) => {\n const queryParams = { ...params }\n\n queryParams.metrics = transformMetricsForQuery(params.metrics)\n\n const response = await get(REPORTING_API[3].AD_REVENUE_GROUPED_URL, {\n params: queryParams\n })\n\n if (isFlat) {\n return response.data.data\n }\n\n return response.data.data.map(row => ({\n ...row,\n childQueryIds: {\n ...getChildQueryIds({\n queryParams,\n row,\n rules\n }),\n ...parentQueryIds\n },\n isLastQueryInSequence\n }))\n}\n\nexport const fetchGroupedCustomData = async ({\n isFlat,\n isLastQueryInSequence,\n params,\n parentQueryIds = {},\n rules\n}) => {\n const queryParams = { ...params }\n\n const [usageMetrics, nonUsageMetrics] = partition(\n queryParams.metrics,\n metric => !metric.match(XDAY_FOR_METRIC_IN_COHORT_PATTERN)\n )\n\n const { metrics: cohortMetrics, xdays } =\n getCustomCohortQueryParamsFromMetrics(nonUsageMetrics)\n\n const usageQueryParams = {\n ...params,\n metrics: transformMetricsForQuery(usageMetrics),\n summary: 'grouped'\n }\n\n const cohortQueryParams = {\n ...params,\n metrics: cohortMetrics,\n summary: 'grouped',\n xdays\n }\n\n const hasUsageMetrics = usageMetrics.length > 0\n const hasCohortMetrics = cohortMetrics.length > 0\n\n let output\n let usageResponse\n let cohortResponse\n\n if (hasUsageMetrics) {\n usageResponse = await get(getCustomUsageUrl(), { params: usageQueryParams })\n }\n\n if (hasCohortMetrics) {\n cohortResponse = await get(getCustomCohortUrl(), {\n params: cohortQueryParams\n })\n }\n\n if (usageResponse && cohortResponse) {\n output = mergeDataObjectsById({\n baseData: cohortResponse.data.data,\n deltaData: usageResponse.data.data\n })\n } else {\n output = usageResponse?.data?.data || cohortResponse?.data?.data || []\n }\n\n if (isFlat) {\n return output\n }\n\n return output.map(row => ({\n childQueryIds: {\n ...getChildQueryIds({\n queryParams,\n row,\n rules\n }),\n ...parentQueryIds\n },\n isLastQueryInSequence,\n ...row\n }))\n}\n\nconst getSkAdNetworkData = async ({ params, isGroupedByDate }) => {\n let output\n\n const [adNetworkMetrics, appleMetrics] = partition(\n params.metrics,\n metric => !includes(metric, 'apple')\n )\n\n const hasAdNetworkMetrics = adNetworkMetrics.length > 0\n const hasAppleMetrics = appleMetrics.length > 0\n const hasAllReportTypeMetrics = hasAdNetworkMetrics && hasAppleMetrics\n\n if (hasAllReportTypeMetrics) {\n const adNetworkMetricsResponse = await get(\n isGroupedByDate ? getSkAdNetworkUrl() : getSkAdNetworkGroupedUrl(),\n {\n params: {\n ...params,\n metrics: transformMetricsForQuery(adNetworkMetrics)\n }\n }\n )\n\n const transformedAppleMetrics = transformAppleMetricsForQuery(appleMetrics)\n\n const appleMetricsResponse = await get(\n isGroupedByDate ? getSkanAppleUrl() : getSkanAppleGroupedUrl(),\n {\n params: {\n ...params,\n metrics: transformMetricsForQuery(transformedAppleMetrics)\n }\n }\n )\n\n const processedAppleMetricsResponse = processAppleMetricsResponse({\n metrics: transformedAppleMetrics,\n response: appleMetricsResponse\n })\n\n const mergedData = mergeSkanDataObjectsById({\n baseData: adNetworkMetricsResponse.data.data,\n deltaData: processedAppleMetricsResponse.data.data\n })\n\n const mergedResponse = {\n ...adNetworkMetricsResponse,\n data: {\n ...adNetworkMetricsResponse.data,\n data: mergedData\n }\n }\n\n output = mergedResponse\n } else if (hasAppleMetrics) {\n const transformedAppleMetrics = transformAppleMetricsForQuery(appleMetrics)\n\n const appleMetricsResponse = await get(\n isGroupedByDate ? getSkanAppleUrl() : getSkanAppleGroupedUrl(),\n {\n params: {\n ...params,\n metrics: transformMetricsForQuery(transformedAppleMetrics)\n }\n }\n )\n\n const processedAppleMetricsResponse = processAppleMetricsResponse({\n metrics: transformedAppleMetrics,\n response: appleMetricsResponse\n })\n\n output = processedAppleMetricsResponse\n } else if (hasAdNetworkMetrics) {\n const adNetworkMetricsResponse = await get(\n isGroupedByDate ? getSkAdNetworkUrl() : getSkAdNetworkGroupedUrl(),\n {\n params: {\n ...params,\n metrics: transformMetricsForQuery(adNetworkMetrics)\n }\n }\n )\n\n output = adNetworkMetricsResponse\n }\n\n return output\n}\n\nexport const fetchGroupedSkAdNetworkData = async ({\n isCompatibleWithUAMetrics,\n isFlat,\n isLastQueryInSequence,\n params,\n parentQueryIds = {},\n rules\n}) => {\n const queryParams = { ...params }\n const rawQueryMetrics = queryParams.metrics\n\n const [rawSkAdNetworkMetrics, userAcquisitionMetrics] = partition(\n queryParams.metrics,\n metric => !includes(UA_METRICS_AVAILABLE_IN_SK_AD_NETWORK_REPORT, metric)\n )\n\n const hasUserAcquisitionMetrics = userAcquisitionMetrics.length > 0\n\n if (hasUserAcquisitionMetrics) {\n const skAdNetworkQueryParams = {\n ...params,\n metrics: rawSkAdNetworkMetrics\n }\n\n const userAcquisitionQueryParams = {\n ...params,\n metrics: transformMetricsForQuery(userAcquisitionMetrics)\n }\n\n const skAdNetworkResponse = await getSkAdNetworkData({\n params: skAdNetworkQueryParams\n })\n\n let userAcquisitionResponse = { data: { data: [] } }\n\n if (isCompatibleWithUAMetrics) {\n userAcquisitionResponse = await get(getGroupedSummaryUrl(), {\n params: userAcquisitionQueryParams\n })\n }\n\n const mergedData = processAndMergeDataObjectsById({\n baseData: userAcquisitionResponse.data.data,\n deltaData: skAdNetworkResponse.data.data,\n groupBy: skAdNetworkResponse.data.meta.groupBy\n })\n\n if (isFlat) {\n return mergedData\n }\n\n return mergedData.map(row => ({\n childQueryIds: {\n ...getChildQueryIds({\n queryParams,\n row,\n rules\n }),\n ...parentQueryIds\n },\n isLastQueryInSequence,\n rawQueryMetrics,\n ...row\n }))\n }\n\n const skAdNetworkQueryParams = {\n ...params,\n metrics: rawSkAdNetworkMetrics\n }\n\n const skAdNetworkResponse = await getSkAdNetworkData({\n params: skAdNetworkQueryParams\n })\n\n if (isFlat) {\n return skAdNetworkResponse.data.data.map(row => ({\n ...row,\n ...row.attributes,\n rawQueryMetrics\n }))\n }\n\n return skAdNetworkResponse.data.data.map(row => ({\n ...row,\n ...row.attributes,\n childQueryIds: {\n ...getChildQueryIds({\n queryParams,\n row,\n rules\n }),\n ...parentQueryIds\n },\n isLastQueryInSequence,\n rawQueryMetrics\n }))\n}\n\nexport const fetchSkAdNetworkData = async ({ params }) => {\n let output\n\n const queryParams = { ...params }\n\n const [rawSkAdNetworkMetrics, userAcquisitionMetrics] = partition(\n queryParams.metrics,\n metric => !includes(UA_METRICS_AVAILABLE_IN_SK_AD_NETWORK_REPORT, metric)\n )\n\n const hasSkAdNetworkMetrics = rawSkAdNetworkMetrics.length > 0\n const hasUserAcquisitionMetrics = userAcquisitionMetrics.length > 0\n const hasAllReportTypeMetrics =\n hasUserAcquisitionMetrics && hasSkAdNetworkMetrics\n\n if (hasAllReportTypeMetrics) {\n const skAdNetworkQueryParams = {\n ...params,\n metrics: rawSkAdNetworkMetrics\n }\n\n const userAcquisitionQueryParams = {\n ...params,\n groupBy: useLastGroupBy(params.groupBy),\n metrics: transformMetricsForQuery(userAcquisitionMetrics)\n }\n\n const skAdNetworkResponse = await getSkAdNetworkData({\n isGroupedByDate: true,\n params: skAdNetworkQueryParams\n })\n\n // TODO: Update this to use v4 api when adding v4 skad coverage [TENJIN-15911]\n const userAcquisitionResponse = await get(getGroupedStatsUrl(), {\n params: userAcquisitionQueryParams\n })\n\n const mergedData = processAndMergeDataObjectsById({\n baseData: userAcquisitionResponse.data.data,\n deltaData: skAdNetworkResponse.data.data,\n groupBy: skAdNetworkResponse.data.meta.groupBy\n })\n\n output = mergedData\n // eslint-disable-next-line no-else-return\n } else if (hasSkAdNetworkMetrics) {\n const skAdNetworkQueryParams = {\n ...params,\n metrics: rawSkAdNetworkMetrics\n }\n\n const response = await getSkAdNetworkData({\n isGroupedByDate: true,\n params: skAdNetworkQueryParams\n })\n\n output = response.data.data.map(row => ({\n ...row,\n ...row.attributes\n }))\n } else if (hasUserAcquisitionMetrics) {\n const userAcquisitionQueryParams = {\n ...params,\n groupBy: useLastGroupBy(params.groupBy),\n metrics: transformMetricsForQuery(userAcquisitionMetrics)\n }\n\n const response = await get(getGroupedStatsUrl(), {\n params: userAcquisitionQueryParams\n })\n\n output = response.data.data.map(row => ({\n ...row,\n ...row.attributes\n }))\n }\n\n return output\n}\n\nexport const fetchConversionValueDataByGroupBy = async ({\n params,\n selectedComparison,\n groupBy\n}) => {\n const firstGroupBy = groupBy[0]\n const ids = map(selectedComparison, ({ id }) => id)\n\n const fetchConversionValueDataById = async id => {\n const queryParams = { ...params }\n const isNotAllGroupings = id !== ALL_GROUP_BY_ID_STR\n\n if (isNotAllGroupings) {\n queryParams[`${plural(firstGroupBy)}[]`] = id\n }\n\n queryParams.metrics = transformMetricsForQuery(params.metrics)\n\n const response = await get(getSkAdNetworkUrl(), { params: queryParams })\n\n return response.data.data.map(row => ({\n ...row,\n ...row.attributes\n }))\n }\n\n const allFetches = map(ids, id => fetchConversionValueDataById(id))\n const responses = await Promise.all(allFetches)\n\n return responses\n}\n\nexport const fetchSummarySkAdNetworkData = async ({\n isCompatibleWithUAMetrics,\n params\n}) => {\n let output\n\n const queryParams = { ...params }\n\n const [rawSkAdNetworkMetrics, userAcquisitionMetrics] = partition(\n queryParams.metrics,\n metric => !includes(UA_METRICS_AVAILABLE_IN_SK_AD_NETWORK_REPORT, metric)\n )\n\n const hasSkAdNetworkMetrics = rawSkAdNetworkMetrics.length > 0\n const hasUserAcquisitionMetrics = userAcquisitionMetrics.length > 0\n const hasAllReportTypeMetrics =\n hasUserAcquisitionMetrics && hasSkAdNetworkMetrics\n\n if (hasAllReportTypeMetrics) {\n const skAdNetworkQueryParams = {\n ...params,\n metrics: rawSkAdNetworkMetrics\n }\n\n const userAcquisitionQueryParams = {\n ...params,\n metrics: transformMetricsForQuery(userAcquisitionMetrics)\n }\n\n const skAdNetworkResponse = await getSkAdNetworkData({\n params: skAdNetworkQueryParams\n })\n\n let userAcquisitionResponse = { data: { data: [] } }\n\n if (isCompatibleWithUAMetrics) {\n userAcquisitionResponse = await get(getGroupedSummaryUrl(), {\n params: userAcquisitionQueryParams\n })\n }\n\n const mergedData = processAndMergeDataObjectsById({\n baseData: userAcquisitionResponse.data.data,\n deltaData: skAdNetworkResponse.data.data,\n groupBy: skAdNetworkResponse.data.meta.groupBy\n })\n\n output = mergedData.map(row => ({\n ...row,\n ...row.attributes\n }))\n // eslint-disable-next-line no-else-return\n } else if (hasSkAdNetworkMetrics) {\n const skAdNetworkQueryParams = {\n ...params,\n metrics: rawSkAdNetworkMetrics\n }\n\n const response = await getSkAdNetworkData({\n params: skAdNetworkQueryParams\n })\n\n output = response.data.data.map(row => ({\n ...row,\n ...row.attributes\n }))\n } else if (hasUserAcquisitionMetrics) {\n const userAcquisitionQueryParams = {\n ...params,\n metrics: transformMetricsForQuery(userAcquisitionMetrics)\n }\n\n const response = await get(getGroupedSummaryUrl(), {\n params: userAcquisitionQueryParams\n })\n\n output = response.data.data.map(row => ({\n ...row,\n ...row.attributes\n }))\n }\n\n return output\n}\n\nexport const fetchStatsData = async ({ params }) => {\n const queryParams = { ...params }\n\n queryParams.metrics = transformMetricsForQuery(queryParams.metrics)\n\n const response = await get(getStatsUrl(), { params: queryParams })\n\n return response.data.data\n}\n\nexport const fetchCohortData = async ({ params }) => {\n const queryParams = { ...params }\n\n queryParams.metrics = transformMetricsForQuery(queryParams.metrics)\n\n const response = await get(getCohortUrl(), { params: queryParams })\n\n return response.data.data\n}\n\nexport const fetchCohortLifetimeData = async ({ params }) => {\n const queryParams = { ...params }\n\n queryParams.metrics = transformMetricsForQuery(queryParams.metrics)\n\n const response = await get(getCohortLifetimeUrl(), { params: queryParams })\n\n return response.data.data[0]\n}\n\nexport const fetchCustomUsageTotalData = async ({ params }) => {\n const queryParams = { ...params }\n\n queryParams.metrics = transformMetricsForQuery(queryParams.metrics)\n\n delete queryParams.groupBy\n\n const response = await get(getCustomUsageUrl(), { params: queryParams })\n\n return response.data.data[0]\n}\n\nconst GRANULARITY_TO_CUMULATIVE_GROUP_BY = {\n daily: 'date',\n monthly: 'date_month',\n weekly: 'date_week'\n}\n\nexport const fetchCustomUsageCumulativeData = async ({ params }) => {\n const queryParams = { ...params }\n\n queryParams.metrics = transformMetricsForQuery(queryParams.metrics)\n\n queryParams.groupBy = [\n GRANULARITY_TO_CUMULATIVE_GROUP_BY[queryParams.granularity],\n queryParams.groupBy\n ]\n\n const response = await get(getCustomUsageUrl(), { params: queryParams })\n\n return response.data.data\n}\n\nexport const fetchCustomCohortData = async ({ params }) => {\n const queryParams = { ...params }\n\n const { metrics, xdays } = getCustomCohortQueryParamsFromMetrics(\n queryParams.metrics\n )\n\n queryParams.metrics = metrics\n queryParams.xdays = xdays\n\n const response = await get(getCustomCohortUrl(), { params: queryParams })\n\n return response.data.data\n}\n\nexport const fetchCustomCohortTotalData = async ({ params }) => {\n const queryParams = { ...params }\n\n queryParams.metrics = transformMetricsForQuery(queryParams.metrics)\n queryParams.summary = 'total'\n queryParams.xdays = [30]\n\n const response = await get(getCustomCohortUrl(), { params: queryParams })\n\n return response.data.data[0]\n}\n\nexport const fetchAdRevenueData = async ({ params }) => {\n const queryParams = { ...params }\n\n queryParams.metrics = transformMetricsForQuery(queryParams.metrics)\n\n const response = await get(REPORTING_API[3].AD_REVENUE_URL, {\n params: queryParams\n })\n\n return response.data.data\n}\n\nexport const fetchAdRevenueGranularData = async ({ params }) => {\n const queryParams = { ...params }\n\n queryParams.metrics = transformMetricsForQuery(queryParams.metrics)\n\n const response = await get(REPORTING_API[3].AD_REVENUE_GRANULAR_URL, {\n params: queryParams\n })\n\n return response.data.data\n}\n\nexport const fetchAdRevenueSummaryData = async ({ params }) => {\n const queryParams = { ...params }\n\n queryParams.metrics = transformMetricsForQuery(queryParams.metrics)\n\n const response = await get(REPORTING_API[3].AD_REVENUE_SUMMARY_URL, {\n params: queryParams\n })\n\n return response.data.data[0]\n}\n\n// TODO: [nafeu, ricky] implement with logic to fetch creatives data [TENJIN-23883]\nexport const fetchGroupedCreativesData = async () => {}\n\nexport const getGroupedQueryFunctionByReportPage = reportPage => {\n if (isCustomReportPage(reportPage)) {\n return fetchGroupedCustomData\n }\n\n if (isPublisherPage(reportPage)) {\n return fetchGroupedAdRevenueData\n }\n\n if (isSkAdNetworkPage(reportPage)) {\n return fetchGroupedSkAdNetworkData\n }\n\n if (isCreativesReportPage(reportPage)) {\n return fetchGroupedCreativesData\n }\n\n return fetchGroupedSummaryData\n}\n\nexport const getQueryFunctionForDataExporter = ({\n isGroupedByDate,\n reportPage\n}) => {\n if (isCustomReportPage(reportPage)) {\n return isGroupedByDate ? fetchGroupedCustomData : fetchGroupedStatsData\n }\n\n if (isPublisherPage(reportPage)) {\n return isGroupedByDate ? fetchGroupedAdRevenueData : fetchAdRevenueData\n }\n\n if (isSkAdNetworkPage(reportPage)) {\n return isGroupedByDate ? fetchGroupedSkAdNetworkData : fetchSkAdNetworkData\n }\n\n return isGroupedByDate ? fetchGroupedSummaryData : fetchGroupedStatsData\n}\n\nexport const saveMetrics = async ({ metrics, report }) => {\n const data = {\n metrics: transformMetricsForQuery(metrics),\n report\n }\n\n const result = await put(REPORTING_API[1].SAVE_METRICS_URL, data)\n\n return result\n}\n\nexport const saveTableViewMode = async viewMode =>\n // eslint-disable-next-line no-return-await\n await put(\n DASHBOARD_REPORTS_UPDATE_TABLE_VIEW_MODE_URL,\n deepSnakeKeys({ viewMode })\n )\n\nexport const saveTableNameColumnMode = async nameColumnMode =>\n // eslint-disable-next-line no-return-await\n await put(\n DASHBOARD_REPORTS_UPDATE_TABLE_NAME_COLUMN_MODE_URL,\n deepSnakeKeys({ nameColumnMode })\n )\n\nexport const createSavedReport = async data => {\n const result = await post(DASHBOARD_SAVED_REPORTS_URL, data)\n\n return result\n}\n\nexport const updateSavedReport = async ({ data, id }) => {\n const result = await put(`${DASHBOARD_SAVED_REPORTS_URL}/${id}`, data)\n\n return result\n}\n\nexport const deleteSavedReport = async id => {\n const result = await httpVerbs.delete(`${DASHBOARD_SAVED_REPORTS_URL}/${id}`)\n\n return result\n}\n","import {\n PUBLISHER_REPORT_TYPE_STR,\n USER_ACQUISITION_REPORT_TYPE_STR\n} from '../../contexts/ReportingFilters/constants'\nimport { overrideUrlsIfMockApiEnabled } from '../../utils/mock-reporting-api'\n\nexport const DASHBOARD_REPORTS_UPDATE_TABLE_VIEW_MODE_URL =\n '/dashboard/reports/update_table_view_mode'\nexport const DASHBOARD_REPORTS_UPDATE_TABLE_NAME_COLUMN_MODE_URL =\n '/dashboard/reports/update_table_name_column_mode'\nexport const DASHBOARD_SAVED_REPORTS_URL = '/dashboard/saved_reports'\n\nexport const APPLE_METRIC_PREFIX = 'apple'\n\nexport const DATE_DIMENSION_GRANULARITY_MAPPING = {\n daily: 'date',\n monthly: 'date_month',\n weekly: 'date_week'\n}\n\nexport const DEFAULT_API_RESPONSE_CONTEXT = {\n apiVersion: 4,\n isFlat: true,\n reportType: USER_ACQUISITION_REPORT_TYPE_STR\n}\n\n/* eslint-disable sort-keys */\nexport const REPORTING_API_URL_MAPPING = {\n 1: {\n GROUPED_STATS_URL: '/reporting/v1/grouped_stats',\n GROUPED_SUMMARY_URL: '/reporting/v1/grouped_summary',\n SAVE_METRICS_URL: '/reporting/v1/save_metrics',\n STATS_URL: '/reporting/v1/stats',\n SUMMARY_URL: '/reporting/v1/summary'\n },\n 2: {\n COHORT_LIFETIME_URL: '/reporting/v2/cohort_lifetime',\n COHORT_URL: '/reporting/v2/cohort',\n CUSTOM_COHORT_URL: '/reporting/v2/custom/cohort',\n CUSTOM_USAGE_URL: '/reporting/v2/custom/usage',\n SK_AD_NETWORK_GROUPED_URL: '/reporting/v2/sk_ad_network/grouped',\n SK_AD_NETWORK_URL: '/reporting/v2/sk_ad_network/data',\n SKAN_APPLE_GROUPED_URL: '/reporting/v2/skan_apple/grouped',\n SKAN_APPLE_URL: '/reporting/v2/skan_apple/data'\n },\n 3: {\n AD_REVENUE_GRANULAR_URL: '/reporting/v3/ad_revenue_granular',\n AD_REVENUE_GROUPED_URL: '/reporting/v3/ad_revenue_grouped',\n AD_REVENUE_SUMMARY_URL: '/reporting/v3/ad_revenue_summary',\n AD_REVENUE_URL: '/reporting/v3/ad_revenue',\n COHORT_LIFETIME_URL: '/reporting/v3/cohort_lifetime',\n COHORT_URL: '/reporting/v3/cohort',\n CUSTOM_COHORT_URL: '/reporting/v3/custom/cohort',\n CUSTOM_METRIC_DEFINITIONS_URL: '/reporting/v3/custom/metric_definitions',\n CUSTOM_USAGE_URL: '/reporting/v3/custom/usage',\n GROUPED_STATS_URL: '/reporting/v3/grouped_stats',\n GROUPED_SUMMARY_URL: '/reporting/v3/grouped_summary',\n SK_AD_NETWORK_GROUPED_URL: '/reporting/v3/sk_ad_network/grouped',\n SK_AD_NETWORK_URL: '/reporting/v3/sk_ad_network/data',\n SKAN_APPLE_GROUPED_URL: '/reporting/v3/skan_apple/grouped',\n SKAN_APPLE_URL: '/reporting/v3/skan_apple/data',\n STATS_URL: '/reporting/v3/stats',\n SUMMARY_URL: '/reporting/v3/summary'\n },\n 4: {\n [PUBLISHER_REPORT_TYPE_STR]: '/reporting/v4/ad_revenue',\n [USER_ACQUISITION_REPORT_TYPE_STR]: '/reporting/v4/user_acquisition'\n }\n}\n/* eslint-enable sort-keys */\n\nexport const REPORTING_API = {\n ...REPORTING_API_URL_MAPPING,\n ...overrideUrlsIfMockApiEnabled(REPORTING_API_URL_MAPPING)\n}\n","import { useLocation } from 'react-router-dom'\nimport { isEmpty } from 'lodash'\n\nimport KPITabs from './index'\nimport KPITabsLoading from './loading'\n\nimport { useMetricDefinitionsState } from '../../contexts/MetricDefinitions'\nimport { getReportPageFromPathname } from '../../contexts/ReportingFilters'\nimport { buildMetricDefinitionsForSummaryBlocks, buildMetricDefinitionsForTabs } from './helpers'\nimport { objectOfSummaryBlocks, objectOfTabs } from '../../utils/customPropTypes'\nimport usePrevious from '../../hooks/usePrevious'\n\nconst KPITabsWrapper = (\n {\n summaryBlocks,\n tabs\n }\n) => {\n const metricDefinitionsState = useMetricDefinitionsState()\n\n const { pathname } = useLocation()\n const reportPage = getReportPageFromPathname(pathname)\n const prevReportPage = usePrevious(reportPage)\n\n const isBuildingMetricDefinitions = isEmpty(metricDefinitionsState.metricDefinitions)\n || (prevReportPage && prevReportPage !== reportPage)\n\n if (isBuildingMetricDefinitions) {\n return (\n \n )\n }\n\n const groupedStatsMetricDefinitions = buildMetricDefinitionsForTabs({\n metricDefinitions: metricDefinitionsState.metricDefinitions,\n tabs\n })\n\n const summaryMetricDefinitions = buildMetricDefinitionsForSummaryBlocks({\n metricDefinitions: metricDefinitionsState.metricDefinitions,\n summaryBlocks\n })\n\n return (\n \n )\n}\n\nKPITabsWrapper.propTypes = {\n summaryBlocks: objectOfSummaryBlocks.isRequired,\n tabs: objectOfTabs.isRequired\n}\n\nexport default KPITabsWrapper\n","import { createContext, useContext, useReducer } from 'react'\nimport {\n head, isUndefined, partition, difference, compact, uniq\n} from 'lodash'\nimport pluralize from 'pluralize'\nimport arrayToSentence from 'array-to-sentence'\n\nimport {\n AM_CHANNEL_REQUIREMENT, APP_REQUIREMENT, SDK_REQUIREMENT, UA_CHANNEL_REQUIREMENT\n} from '../MetricDefinitions/constants'\n\nimport { getMetricDefinitionByKey } from '../MetricDefinitions/helpers'\n\nconst OnboardingStatusStateContext = createContext()\nconst OnboardingStatusDispatchContext = createContext()\n\nconst statusToRequirementMapping = {\n hasConfiguredAmChannels: AM_CHANNEL_REQUIREMENT,\n hasConfiguredApps: APP_REQUIREMENT,\n hasConfiguredSdk: SDK_REQUIREMENT,\n hasConfiguredUaChannels: UA_CHANNEL_REQUIREMENT\n}\n\nconst getInitialState = (\n {\n hasConfiguredAmChannels,\n hasConfiguredApps,\n hasConfiguredSdk,\n hasConfiguredUaChannels,\n hasRecentlyReceivedFirstEvents,\n totalNumAmChannels,\n totalNumApps,\n totalNumSdkEnabledApps,\n totalNumUaChannels\n }\n) => ({\n hasConfiguredAmChannels,\n hasConfiguredApps,\n hasConfiguredSdk,\n hasConfiguredUaChannels,\n hasRecentlyReceivedFirstEvents,\n totalNumAmChannels,\n totalNumApps,\n totalNumSdkEnabledApps,\n totalNumUaChannels\n})\n\nconst onboardingStatusReducer = (state, action) => {\n const { type } = action\n\n switch (type) {\n default: {\n return state\n }\n }\n}\n\nexport const OnboardingStatusProvider = ({ children, status }) => {\n const [state, dispatch] = useReducer(onboardingStatusReducer, getInitialState(status))\n\n return (\n \n \n {children}\n \n \n )\n}\n\nexport const useOnboardingStatusState = () => {\n const context = useContext(OnboardingStatusStateContext)\n\n if (isUndefined(context)) {\n throw new Error('useOnboardingStatusState must be used within a OnboardingStatusProvider')\n }\n\n return context\n}\n\nexport const useOnboardingStatusDispatch = () => {\n const context = useContext(OnboardingStatusDispatchContext)\n\n if (isUndefined(context)) {\n throw new Error('useOnboardingStatusDispatch must be used within a OnboardingStatusProvider')\n }\n\n return context\n}\n\nexport const getMissingOnboardingRequirements = ({ metricDefinition, onboardingStatus }) => (\n (metricDefinition.onboardingRequirements || []).filter(requirement => {\n switch (requirement) {\n case APP_REQUIREMENT:\n return !onboardingStatus.hasConfiguredApps\n\n case AM_CHANNEL_REQUIREMENT:\n return !onboardingStatus.hasConfiguredAmChannels\n\n case UA_CHANNEL_REQUIREMENT:\n return !onboardingStatus.hasConfiguredUaChannels\n\n case SDK_REQUIREMENT:\n return !onboardingStatus.hasConfiguredSdk\n\n default:\n throw new Error(`Unsupported onboardingRequirement: ${requirement}`)\n }\n })\n)\n\nexport const requiresMockDataForMetric = ({ metricDefinition, onboardingStatus }) => {\n const missingOnboardingRequirements = getMissingOnboardingRequirements({\n metricDefinition,\n onboardingStatus\n })\n\n return missingOnboardingRequirements.length > 0\n}\n\nexport const missingRequirementToSentence = requirement => {\n switch (requirement) {\n case APP_REQUIREMENT:\n return 'an App'\n\n case AM_CHANNEL_REQUIREMENT:\n return 'a Marketing Channel'\n\n case UA_CHANNEL_REQUIREMENT:\n return 'a Marketing Channel'\n\n case SDK_REQUIREMENT:\n return 'the Tenjin SDK'\n\n default:\n throw new Error(`Unsupported onboardingRequirement: ${requirement}`)\n }\n}\n\nconst getOnboardingRequirementsByStatus = onboardingStatus => {\n const requirementsByStatus = []\n\n const {\n hasConfiguredAmChannels,\n hasConfiguredApps,\n hasConfiguredSdk,\n hasConfiguredUaChannels\n } = onboardingStatus\n\n if (hasConfiguredAmChannels) {\n requirementsByStatus.push(statusToRequirementMapping.hasConfiguredAmChannels)\n }\n\n if (hasConfiguredApps) {\n requirementsByStatus.push(statusToRequirementMapping.hasConfiguredApps)\n }\n\n if (hasConfiguredSdk) {\n requirementsByStatus.push(statusToRequirementMapping.hasConfiguredSdk)\n }\n\n if (hasConfiguredUaChannels) {\n requirementsByStatus.push(statusToRequirementMapping.hasConfiguredUaChannels)\n }\n\n return uniq(requirementsByStatus)\n}\n\nexport const getGroupedSummaryTableOnboardingStatus = ({\n onboardingStatus,\n selectedMetricDefinitions\n}) => {\n const requirementsByStatus = getOnboardingRequirementsByStatus(onboardingStatus)\n\n const [unfulfilledMetrics, fulfilledMetrics] = partition(\n compact(selectedMetricDefinitions),\n ({ onboardingRequirements }) => {\n const hasUnfulfilledRequirements = difference(\n onboardingRequirements,\n requirementsByStatus\n ).length > 0\n\n return hasUnfulfilledRequirements\n }\n )\n\n const shouldShowOverlay = !fulfilledMetrics || fulfilledMetrics.length === 0\n\n return {\n isMocking: shouldShowOverlay,\n metricDefinitionForOverlay: shouldShowOverlay ? head(unfulfilledMetrics) : null\n }\n}\n\nexport const getConversionValueHistogramOnboardingStatus = ({ onboardingStatus }) => {\n const requirementsByStatus = getOnboardingRequirementsByStatus(onboardingStatus)\n\n const selectedMetricDefinitions = [\n getMetricDefinitionByKey('conversionValueTotal')\n ]\n\n const [unfulfilledMetrics, fulfilledMetrics] = partition(\n compact(selectedMetricDefinitions),\n ({ onboardingRequirements }) => {\n const hasUnfulfilledRequirements = difference(\n onboardingRequirements,\n requirementsByStatus\n ).length > 0\n\n return hasUnfulfilledRequirements\n }\n )\n\n const shouldShowOverlay = !fulfilledMetrics || fulfilledMetrics.length === 0\n\n return {\n isMocking: shouldShowOverlay,\n metricDefinitionForOverlay: shouldShowOverlay ? head(unfulfilledMetrics) : null\n }\n}\n\nconst APP_BUTTON_DETAILS = {\n href: '/dashboard/apps/new',\n icon: 'apps',\n iconType: 'fak',\n text: 'Go to Apps'\n}\n\nconst CHANNEL_BUTTON_DETAILS = {\n href: '/dashboard/integrations/new',\n icon: 'channels',\n iconType: 'fak',\n text: 'Go to Channels'\n}\n\nconst SDK_BUTTON_DETAILS = {\n href: '/dashboard/docs',\n icon: 'code',\n iconType: 'fas',\n text: 'Go to SDKs'\n}\n\nexport const getButtonDetailsFromRequirement = requirement => {\n switch (requirement) {\n case APP_REQUIREMENT:\n return APP_BUTTON_DETAILS\n\n case AM_CHANNEL_REQUIREMENT:\n return CHANNEL_BUTTON_DETAILS\n\n case UA_CHANNEL_REQUIREMENT:\n return CHANNEL_BUTTON_DETAILS\n\n case SDK_REQUIREMENT:\n return SDK_BUTTON_DETAILS\n\n default:\n throw new Error(`Unsupported onboardingRequirement: ${requirement}`)\n }\n}\n\nexport const groupMetricDefinitonsByOnboardingStatus = (\n {\n metricDefinitions, onboardingStatus\n }\n) => {\n const mockableMetricDefinitions = []\n const queryableMetricDefinitions = []\n\n metricDefinitions.forEach(metricDefinition => {\n if (requiresMockDataForMetric({ metricDefinition, onboardingStatus })) {\n mockableMetricDefinitions.push(metricDefinition)\n } else {\n queryableMetricDefinitions.push(metricDefinition)\n }\n })\n\n return {\n mockableMetricDefinitions,\n queryableMetricDefinitions\n }\n}\n\nconst addedSentence = count => `${pluralize('has', count)} been added`\n\nexport const getCompletedOnboardingRequirementsMessage = (\n {\n onboardingRequirements,\n onboardingStatus\n }\n) => {\n const messagesList = []\n\n const {\n hasConfiguredAmChannels,\n hasConfiguredApps,\n hasConfiguredSdk,\n hasConfiguredUaChannels,\n totalNumAmChannels,\n totalNumApps,\n totalNumSdkEnabledApps,\n totalNumUaChannels\n } = onboardingStatus\n\n const shouldIncludeSDKMessage = onboardingRequirements.includes(SDK_REQUIREMENT)\n && hasConfiguredSdk\n\n const shouldIncludeAppsMessage = onboardingRequirements.includes(APP_REQUIREMENT)\n && hasConfiguredApps\n\n if (shouldIncludeSDKMessage || shouldIncludeAppsMessage) {\n if (shouldIncludeSDKMessage && shouldIncludeAppsMessage) {\n messagesList.push(`Tenjin's SDK has been set up for ${pluralize('App', totalNumSdkEnabledApps, true)}`)\n } else if (shouldIncludeSDKMessage) {\n messagesList.push(\"Tenjin's SDK has been set up\")\n } else {\n messagesList.push(`${pluralize('App', totalNumApps, true)} ${addedSentence(totalNumApps)}`)\n }\n }\n\n const shouldIncludeUAMessage = onboardingRequirements.includes(UA_CHANNEL_REQUIREMENT)\n && hasConfiguredUaChannels\n\n if (shouldIncludeUAMessage) {\n messagesList.push(`${pluralize('Marketing Channel', totalNumUaChannels, true)} ${addedSentence(totalNumUaChannels)}`)\n }\n\n const shouldIncludeAMMessage = onboardingRequirements.includes(AM_CHANNEL_REQUIREMENT)\n && hasConfiguredAmChannels\n\n if (shouldIncludeAMMessage) {\n messagesList.push(`${pluralize('Publishing Channel', totalNumAmChannels, true)} ${addedSentence(totalNumAmChannels)}`)\n }\n\n return arrayToSentence(messagesList)\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___166a_\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1tKAe\",\"btn-toggle\":\"styles-module__btn-toggle___99mUh\",\"handle\":\"styles-module__handle___RSqZ7\",\"active\":\"styles-module__active___24BCW\",\"focus\":\"styles-module__focus___2dN54\",\"card-panel\":\"styles-module__card-panel___3SfKc\",\"panel-heading\":\"styles-module__panel-heading___2g2G0\",\"panel-title\":\"styles-module__panel-title___3RJF7\",\"panel-subtitle\":\"styles-module__panel-subtitle___3SgnW\",\"panel-body\":\"styles-module__panel-body___12uqC\",\"trackedCampaigns\":\"styles-module__trackedCampaigns___FtU6t\",\"reportedCampaigns\":\"styles-module__reportedCampaigns___2Ow1J\",\"campaignsColumns\":\"styles-module__campaignsColumns___3fdZ-\",\"campaignType\":\"styles-module__campaignType___n_D8O\",\"prompt\":\"styles-module__prompt___3Ilwl\",\"promptIsSelected\":\"styles-module__promptIsSelected___3J4ot\",\"campaignsList\":\"styles-module__campaignsList___2O3q2\",\"campaignsRow\":\"styles-module__campaignsRow___14uKM\",\"isSelected\":\"styles-module__isSelected___3bQmC\",\"header\":\"styles-module__header___RTek0\",\"trackedInstalls\":\"styles-module__trackedInstalls___2aRZv\",\"spend\":\"styles-module__spend___1Zoad\",\"reportedInstalls\":\"styles-module__reportedInstalls___1Iy7m\",\"name\":\"styles-module__name___3cXCB\",\"dataRow\":\"styles-module__dataRow___3EMSw\",\"mergeCampaignsButton\":\"styles-module__mergeCampaignsButton___Z69L3\",\"isDisabled\":\"styles-module__isDisabled___jF7PR\",\"isError\":\"styles-module__isError___38e0V\",\"emptyState\":\"styles-module__emptyState___2Qd2S\"};","// https://github.com/hypeserver/react-date-range/blob/4adce3f557e4f53c5a6f2e8774a0ae73e74d38e3/src/defaultRanges.js\nimport { createStaticRanges } from 'react-date-range'\n\nimport {\n addDays,\n addMonths,\n addYears,\n differenceInCalendarDays,\n endOfDay,\n endOfMonth,\n endOfWeek,\n endOfYear,\n format,\n isSameDay,\n parse,\n startOfDay,\n startOfMonth,\n startOfWeek,\n startOfYear\n} from 'date-fns'\n\nimport {\n DATE_DISPLAY_FORMAT,\n DATE_FORMAT,\n ONE_DAY_IN_MILLISECONDS,\n ONE_YEAR_IN_DAYS,\n ONE_YEAR_IN_MILLISECONDS\n} from './constants'\n\nexport const getMinDate = () => new Date(2015, 0, 1)\n\nexport const formatDateForDisplay = date => format(date, DATE_DISPLAY_FORMAT)\nexport const formatDateToStr = date => format(date, DATE_FORMAT)\nexport const parseStrToDate = str => parse(str, DATE_FORMAT, new Date())\nexport const parseStrToTime = str => parseStrToDate(str).getTime()\n\nconst defineds = {\n endOfLastMonth: endOfMonth(addMonths(new Date(), -1)),\n endOfLastWeek: endOfWeek(addDays(new Date(), -7)),\n endOfLastYear: endOfYear(addYears(new Date(), -1)),\n endOfMonth: endOfMonth(new Date()),\n endOfToday: endOfDay(new Date()),\n endOfWeek: endOfWeek(new Date()),\n endOfYesterday: endOfDay(addDays(new Date(), -1)),\n startOfLastMonth: startOfMonth(addMonths(new Date(), -1)),\n startOfLastWeek: startOfWeek(addDays(new Date(), -7)),\n startOfLastYear: startOfYear(addYears(new Date(), -1)),\n startOfMonth: startOfMonth(new Date()),\n startOfToday: startOfDay(new Date()),\n startOfWeek: startOfWeek(new Date()),\n startOfYear: startOfYear(new Date()),\n startOfYesterday: startOfDay(addDays(new Date(), -1))\n}\n\nexport const getStaticRanges = () => createStaticRanges([\n {\n label: 'Today',\n range: () => ({\n endDate: defineds.endOfToday,\n startDate: defineds.startOfToday\n })\n },\n {\n label: 'Yesterday',\n range: () => ({\n endDate: defineds.endOfYesterday,\n startDate: defineds.startOfYesterday\n })\n },\n\n {\n label: 'Last 7 Days',\n range: () => ({\n endDate: defineds.endOfToday,\n startDate: startOfDay(addDays(new Date(), -7))\n })\n },\n {\n label: 'Last Week',\n range: () => ({\n endDate: defineds.endOfLastWeek,\n startDate: defineds.startOfLastWeek\n })\n },\n {\n label: 'This Month',\n range: () => ({\n endDate: defineds.endOfToday,\n startDate: defineds.startOfMonth\n })\n },\n {\n label: 'Last Month',\n range: () => ({\n endDate: defineds.endOfLastMonth,\n startDate: defineds.startOfLastMonth\n })\n },\n {\n label: 'Last 30 Days',\n range: () => ({\n endDate: defineds.endOfToday,\n startDate: startOfDay(addDays(new Date(), -30))\n })\n },\n {\n label: 'Last 90 Days',\n range: () => ({\n endDate: defineds.endOfToday,\n startDate: startOfDay(addDays(new Date(), -90))\n })\n },\n {\n label: 'This Year',\n range: () => ({\n endDate: defineds.endOfToday,\n startDate: defineds.startOfYear\n })\n },\n {\n label: 'Last Year',\n range: () => ({\n endDate: defineds.endOfLastYear,\n startDate: defineds.startOfLastYear\n })\n }\n])\n\nconst getStartDateFromDaysUpToTodayInput = value => {\n const isZeroValue = value === 0\n\n if (isZeroValue) return null\n\n return addDays(defineds.startOfToday, (Math.max(Number(value), 1) - 1) * -1)\n}\n\nexport const inputRanges = [\n {\n getCurrentValue(range) {\n if (!isSameDay(range.endDate, defineds.endOfToday)) return 0\n\n return differenceInCalendarDays(defineds.endOfToday, range.startDate) + 1\n },\n label: 'days up to today',\n range(value) {\n const startDate = getStartDateFromDaysUpToTodayInput(value)\n\n const endDate = value === 0 ? null : defineds.endOfToday\n\n return {\n endDate,\n startDate\n }\n }\n }\n]\n\nexport const getRestrictedDateRange = dateRange => {\n const differenceInDays = (dateRange.endDate - dateRange.startDate) / ONE_DAY_IN_MILLISECONDS\n\n let updatedRange = { ...dateRange }\n\n if (differenceInDays > ONE_YEAR_IN_DAYS) {\n updatedRange = {\n ...dateRange,\n endDate: new Date(dateRange.startDate.getTime() + ONE_YEAR_IN_MILLISECONDS)\n }\n }\n\n return updatedRange\n}\n","export const PRIMARY_COLORS = {\n base: 'rgb(89, 139, 200)',\n '25': 'rgba(89, 139, 200, .25)',\n '50': 'rgba(89, 139, 200, .5)',\n '75': 'rgba(89, 139, 200, .75)',\n}\n\nexport const SUCCESS_COLORS = {\n base: 'rgb(5, 183, 172)',\n '25': 'rgba(5, 183, 172, .25)',\n '50': 'rgba(5, 183, 172, .5)',\n '75': 'rgba(5, 183, 172, .75)',\n}\n","import {\n omit,\n head,\n each,\n find,\n isEmpty,\n mapValues,\n keys,\n chain,\n sortBy,\n includes,\n pull,\n map,\n isArray,\n findKey,\n sort,\n isEqual\n} from 'lodash'\n\nimport { camelCase } from 'camel-case'\nimport { snakeCase } from 'snake-case'\n\nimport {\n deepSnakeKeys,\n getPluralizedUnavailableGroupByDisplayName\n} from '../../utils/helpers'\n\nimport {\n FIELDS_TO_OMIT_FOR_CSV,\n EMPTY_APP,\n GROUP_BY_HEADER_MAPPING,\n DATE_FORMAT_YYYY_MM_DD_LENGTH,\n CSV_COLUMN_SORT_ORDER,\n COMBINATION_GROUP_BYS,\n COMBINATION_GROUP_BY_TO_SINGLE_ID_MAPPING\n} from './constants'\n\nimport { isSkAdNetworkPage } from '../../contexts/ReportingFilters'\n\nimport { PERCENTAGE_VALUE_TYPE } from '../../contexts/MetricDefinitions/constants'\n\nexport const getNameHeaderAndValueByGroupBy = ({ appInfo, groupById, row }) => {\n const isApp = groupById === 'appId' && appInfo.name\n const isCombinationGroupBy = includes(COMBINATION_GROUP_BYS, groupById)\n const isMissingName = isEmpty(row.name)\n\n const shouldShowUnavailable = isMissingName\n const shouldHideName = isMissingName && isCombinationGroupBy\n\n const nameHeader = GROUP_BY_HEADER_MAPPING[groupById] || groupById || 'name'\n\n let nameValue\n\n if (isApp) {\n nameValue = appInfo.name\n } else if (shouldHideName) {\n nameValue = null\n } else if (shouldShowUnavailable) {\n nameValue = getPluralizedUnavailableGroupByDisplayName(groupById)\n } else {\n nameValue = row.name\n }\n\n return { nameHeader, nameValue }\n}\n\nexport const formatPercentageForCSV = percentage => percentage * 0.01\n\nexport const formatDateForCSV = date => {\n const hasMoreThanYearMonthDate = date.length > DATE_FORMAT_YYYY_MM_DD_LENGTH\n\n if (hasMoreThanYearMonthDate) return date.substring(0, DATE_FORMAT_YYYY_MM_DD_LENGTH)\n\n return date\n}\n\nexport const formatRow = ({ row, metricDefinitions }) => mapValues(\n row,\n (value, key) => {\n const metric = metricDefinitions && metricDefinitions[camelCase(key)]\n\n if (metric?.valueType === PERCENTAGE_VALUE_TYPE) {\n return formatPercentageForCSV(value)\n }\n\n const isDate = key === 'date'\n\n if (isDate) {\n return formatDateForCSV(value)\n }\n\n return value\n }\n)\n\nexport const getCombinationGroupByFromArray = arrayGroupBy => {\n const output = findKey(\n COMBINATION_GROUP_BY_TO_SINGLE_ID_MAPPING,\n mappedGroupBy => isEqual(mappedGroupBy, arrayGroupBy)\n )\n\n return output\n}\n\nexport const buildDataExporterCSVData = ({\n data: rows,\n apps,\n groupBy,\n metricDefinitions\n}) => {\n const processedCSVData = []\n\n const isGroupByArray = isArray(groupBy)\n const groupById = (isGroupByArray ? camelCase(head(groupBy)) : camelCase(groupBy)) || ''\n\n let csvSortOrder\n\n each(rows, row => {\n const appInfo = find(apps, { id: row.id }) || {}\n\n const appMeta = {\n bundleId: appInfo.bundleId,\n storeId: appInfo.storeId\n }\n\n const { nameHeader, nameValue } = getNameHeaderAndValueByGroupBy({\n appInfo,\n groupById,\n row\n })\n\n const hasDate = row.date\n\n const finalRowObject = {\n ...(hasDate && { date: row.date }),\n [nameHeader]: nameValue,\n ...appMeta,\n ...omit(row, FIELDS_TO_OMIT_FOR_CSV)\n }\n\n const sortCSVByDateFirst = hasDate\n const nameHeaderSortingValue = snakeCase(nameHeader)\n\n csvSortOrder = [\n ...(sortCSVByDateFirst ? ['date'] : []),\n nameHeaderSortingValue\n ]\n\n if (isEmpty(finalRowObject.storeId)) {\n delete finalRowObject.storeId\n }\n\n if (isEmpty(finalRowObject.bundleId)) {\n delete finalRowObject.bundleId\n }\n\n if (isEmpty(finalRowObject.name)) {\n delete finalRowObject.name\n }\n\n const keyFormattedRow = deepSnakeKeys(finalRowObject)\n const valueFormattedRow = formatRow({ metricDefinitions, row: keyFormattedRow })\n\n processedCSVData.push(valueFormattedRow)\n })\n\n return sortBy(processedCSVData, csvSortOrder)\n}\n\nexport const buildSkAdNetworkCSVData = ({\n data: rows,\n isDataExporter,\n groupBys,\n selectedApps,\n apps,\n metricDefinitions\n}) => {\n const processedCSVData = []\n\n const firstGroupBy = isDataExporter ? getCombinationGroupByFromArray(groupBys)\n : camelCase(groupBys[0])\n const secondGroupBy = camelCase(groupBys[1])\n\n let csvSortOrder\n\n const selectedSkAdLinkedApp = head(selectedApps) || EMPTY_APP\n\n each(rows, row => {\n const appInfo = find(apps, { id: selectedSkAdLinkedApp.id }) || {}\n\n const appMeta = {\n appName: appInfo.name,\n // eslint-disable-next-line sort-keys\n bundleId: appInfo.bundleId,\n storeId: appInfo.storeId\n }\n\n const { nameHeader, nameValue } = getNameHeaderAndValueByGroupBy({\n appInfo,\n groupById: firstGroupBy,\n row\n })\n\n const hasDate = row.date\n\n const finalRowObject = {\n ...(hasDate && { date: row.date }),\n [nameHeader]: nameValue,\n ...appMeta,\n ...omit(row, FIELDS_TO_OMIT_FOR_CSV)\n }\n\n const sortCSVByDateFirst = hasDate\n const nameHeaderSortingValue = snakeCase(nameHeader)\n\n csvSortOrder = [\n ...(sortCSVByDateFirst ? ['date'] : []),\n nameHeaderSortingValue\n ]\n\n if (isEmpty(finalRowObject.storeId)) {\n delete finalRowObject.storeId\n }\n\n if (isEmpty(finalRowObject.bundleId)) {\n delete finalRowObject.bundleId\n }\n\n if (isEmpty(finalRowObject.name)) {\n delete finalRowObject.name\n }\n\n const keyFormattedRow = deepSnakeKeys(finalRowObject)\n const valueFormattedRow = formatRow({ metricDefinitions, row: keyFormattedRow })\n\n processedCSVData.push(valueFormattedRow)\n\n if (row.subRows) {\n each(row.subRows, subRow => {\n const {\n nameHeader: subRowNameHeader,\n nameValue: subRowNameValue\n } = getNameHeaderAndValueByGroupBy({\n appInfo,\n groupById: secondGroupBy,\n row: subRow\n })\n\n const finalSubRowObject = {\n ...(hasDate && { date: subRow.date }),\n [subRowNameHeader]: subRowNameValue,\n ...appMeta,\n ...omit(subRow, FIELDS_TO_OMIT_FOR_CSV)\n }\n\n if (isEmpty(finalSubRowObject.storeId)) {\n delete finalSubRowObject.storeId\n }\n\n if (isEmpty(finalSubRowObject.bundleId)) {\n delete finalSubRowObject.bundleId\n }\n\n if (isEmpty(finalSubRowObject.name)) {\n delete finalSubRowObject.name\n }\n\n const keyFormattedSubRow = deepSnakeKeys(finalSubRowObject)\n const valueFormattedSubRow = formatRow({ metricDefinitions, row: keyFormattedSubRow })\n\n processedCSVData.push(valueFormattedSubRow)\n })\n }\n })\n\n return sortBy(processedCSVData, csvSortOrder)\n}\n\nexport const buildCSVData = ({\n apps,\n data,\n isDataExporter,\n groupBy,\n metricDefinitions,\n reportPage,\n selectedApps\n}) => {\n if (isSkAdNetworkPage(reportPage)) {\n return buildSkAdNetworkCSVData({\n apps,\n data,\n groupBys: groupBy,\n isDataExporter,\n metricDefinitions,\n selectedApps\n })\n }\n\n return buildDataExporterCSVData({\n apps,\n data,\n groupBy,\n metricDefinitions\n })\n}\n\nexport const getCSVHeaders = csvData => {\n const headers = []\n\n const sortOrder = map(CSV_COLUMN_SORT_ORDER, snakeCase)\n\n const availableKeys = chain(csvData)\n .map(item => keys(item))\n .flatten()\n .uniq()\n .value()\n\n each(sortOrder, key => {\n const hasKeyInCsvData = includes(availableKeys, key)\n\n if (hasKeyInCsvData) {\n headers.push({ key, label: key })\n pull(availableKeys, key)\n }\n })\n\n const remainingKeys = [...availableKeys]\n\n each(remainingKeys, key => {\n headers.push({ key, label: key })\n })\n\n return headers\n}\n\nexport const getCSVFilename = ({ groupBy, endDate, startDate }) => (\n `${startDate.replace(/-/g, '')}-${endDate.replace(/-/g, '')}-${groupBy}.csv`\n)\n","import { isUndefined, map } from 'lodash'\nimport PropTypes from 'prop-types'\nimport {\n createContext,\n useContext,\n useEffect,\n useReducer,\n useState\n} from 'react'\nimport { useLocation } from 'react-router-dom'\n\nimport { getCustomMetricDefinitionsUrl } from '../../api/reporting/helpers'\nimport { oneOfAllAvailableGranularities } from '../../utils/customPropTypes'\nimport { get } from '../../utils/request'\n// eslint-disable-next-line import/no-cycle\nimport {\n getReportPageFromPathname,\n getReportPageFromReportType,\n getReportTypeFromQuery,\n getUrlSearchParams,\n isCustomReportPage,\n isPublisherPage,\n isPublisherReport,\n isSkAdNetworkPage,\n isSkAdNetworkReport\n} from '../ReportingFilters'\nimport { METRIC_CATEGORY } from './constants'\nimport buildMetricDefinitionsFor, {\n getBaseMetricDefinitionsMapping,\n getMetricsByCategoryMapping\n} from './helpers'\n\nconst StateContext = createContext()\nconst DispatchContext = createContext()\n\nconst getInitialState = ({\n customEventName,\n featureFlags,\n granularity,\n reportPage,\n reportType\n}) => {\n const metricDefinitions = buildMetricDefinitionsFor({\n customEventName,\n featureFlags,\n granularity,\n reportPage: reportType\n ? getReportPageFromReportType(reportType)\n : reportPage\n })\n const metricsByCategory = getMetricsByCategoryMapping(metricDefinitions)\n\n return {\n customEventName,\n customMetricDefinitions: null,\n granularity,\n metricDefinitions,\n metricsByCategory\n }\n}\n\nconst shouldShowCustomMetrics = ({ reportPage, reportType }) => {\n const isPublisher =\n isPublisherPage(reportPage) || isPublisherReport(reportType)\n const isSkan =\n isSkAdNetworkPage(reportPage) || isSkAdNetworkReport(reportType)\n const isCustom = isCustomReportPage(reportPage)\n\n return !isCustom && !isPublisher && !isSkan\n}\n\nconst getReportPageAndTypeFromPayload = ({\n location,\n reportPage,\n reportType\n}) => {\n if (reportType) {\n return { reportPage: getReportPageFromReportType(reportType), reportType }\n }\n\n if (location) {\n const derivedReportType = getReportTypeFromQuery(\n getUrlSearchParams(location.search)\n )\n const derivedReportPage = derivedReportType\n ? getReportPageFromReportType(derivedReportType)\n : getReportPageFromPathname(location.pathname)\n return { reportPage: derivedReportPage, reportType: derivedReportType }\n }\n\n return { reportPage, reportType }\n}\n\nexport const reducer = (state, action) => {\n const { payload, type } = action\n const { customEventName, customMetricDefinitions, granularity } = {\n ...state,\n ...payload\n }\n const { reportPage, reportType } = getReportPageAndTypeFromPayload(payload)\n const isShowingCustomMetrics = shouldShowCustomMetrics({\n reportPage,\n reportType\n })\n const metricDefinitions = {\n ...buildMetricDefinitionsFor({\n customEventName,\n granularity,\n reportPage\n }),\n ...(isShowingCustomMetrics ? customMetricDefinitions : {})\n }\n const metricsByCategory = getMetricsByCategoryMapping(metricDefinitions)\n\n switch (type) {\n case 'INITIALIZE':\n return {\n ...state,\n customMetricDefinitions,\n metricDefinitions,\n metricsByCategory\n }\n\n case 'CHANGE_GRANULARITY':\n return {\n ...state,\n granularity,\n metricDefinitions,\n metricsByCategory\n }\n\n case 'CHANGE_REPORT_PAGE':\n case 'CHANGE_REPORT_TYPE':\n return {\n ...state,\n metricDefinitions,\n metricsByCategory\n }\n\n case 'SET_CUSTOM_EVENT_NAME':\n return {\n ...state,\n customEventName,\n metricDefinitions,\n metricsByCategory\n }\n\n default:\n return state\n }\n}\n\nconst fetchAndBuildCustomMetricDefinitions = async () => {\n const response = await get(getCustomMetricDefinitionsUrl())\n const responseWithCategories = map(response.data, metricDefinition => ({\n ...metricDefinition,\n categories: metricDefinition.categories.map(\n categoryId => METRIC_CATEGORY[categoryId]\n )\n }))\n\n return getBaseMetricDefinitionsMapping(responseWithCategories)\n}\n\nexport const MetricDefinitionsProvider = ({\n children,\n customEventName,\n granularity,\n featureFlags\n}) => {\n const location = useLocation()\n const query = getUrlSearchParams(location.search)\n const reportPage = getReportPageFromPathname(location.pathname)\n const reportType = getReportTypeFromQuery(query)\n\n const initialState = getInitialState({\n customEventName,\n featureFlags,\n granularity,\n reportPage,\n reportType\n })\n\n const [state, dispatch] = useReducer(reducer, initialState)\n\n const [\n initializeCustomMetricDefinitions,\n setInitializeCustomMetricDefinitions\n ] = useState(true)\n\n useEffect(() => {\n if (initializeCustomMetricDefinitions) {\n const fetchAndAssignCustomMetricDefinitions = async () => {\n try {\n const customMetricDefinitions =\n await fetchAndBuildCustomMetricDefinitions()\n\n dispatch({\n payload: { customMetricDefinitions, location },\n type: 'INITIALIZE'\n })\n\n setInitializeCustomMetricDefinitions(false)\n } catch (error) {\n window.Honeybadger.notify(error)\n }\n }\n\n fetchAndAssignCustomMetricDefinitions()\n }\n }, [initializeCustomMetricDefinitions, location])\n\n return (\n \n \n {children}\n \n \n )\n}\n\nMetricDefinitionsProvider.propTypes = {\n children: PropTypes.node.isRequired,\n customEventName: PropTypes.string.isRequired,\n featureFlags: PropTypes.arrayOf(PropTypes.string).isRequired,\n granularity: oneOfAllAvailableGranularities.isRequired\n}\n\nexport const useMetricDefinitionsState = () => {\n const context = useContext(StateContext)\n\n if (isUndefined(context)) {\n throw new Error(\n 'useMetricDefinitionsState must be used within a MetricDefinitionsProvider'\n )\n }\n\n return context\n}\n\nexport const useMetricDefinitionsDispatch = () => {\n const context = useContext(DispatchContext)\n\n if (isUndefined(context)) {\n throw new Error(\n 'useMetricDefinitionsDispatch must be used within a MetricDefinitionsProvider'\n )\n }\n\n return context\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"controlBackgroundColor\":\"#fff\",\"controlBgColor\":\"#dee9f4\",\"controlBorder\":\"1px solid #dee9f4\",\"controlBorderRadius\":\"4px\",\"controlFlexGrow\":\"0\",\"controlFlexShrink\":\"1\",\"controlFontFamily\":\"\\\"Montserrat\\\",\\\"Lato\\\",\\\"Helvetica Neue\\\",Helvetica,Sans-serif\",\"controlFontSize\":\"14px\",\"controlFontWeight\":\"600\",\"controlLineHeight\":\"40px\",\"dropdownIndicatorColor\":\"#265479\",\"indicatorSeparator-width\":\"0\",\"inputPaddingLeft\":\"5px\",\"menuHeight\":\"300px\",\"menuListHeight\":\"240px\",\"menuListScrollbarBackgroundColor\":\"#babdbf\",\"menuListScrollbarBorder\":\"2px solid #fff\",\"menuListScrollbarBorderRadius\":\"8px\",\"menuListScrollbarDimensions\":\"11px\",\"menuWidth\":\"300px\",\"google-oauth-button\":\"styles-module__google-oauth-button___2KRe2\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___21-1o\",\"btn-toggle\":\"styles-module__btn-toggle___2sLE8\",\"handle\":\"styles-module__handle___3D506\",\"active\":\"styles-module__active___E9qmK\",\"focus\":\"styles-module__focus___Bgjey\",\"card-panel\":\"styles-module__card-panel___29jlx\",\"panel-heading\":\"styles-module__panel-heading___2SkJW\",\"panel-title\":\"styles-module__panel-title___1SpJV\",\"panel-subtitle\":\"styles-module__panel-subtitle___AiZoY\",\"panel-body\":\"styles-module__panel-body___3VTwA\",\"container\":\"styles-module__container___102Qo\",\"input\":\"styles-module__input___3N3-I\",\"checkbox\":\"styles-module__checkbox___1FLjz\",\"icon\":\"styles-module__icon___1WQPi\",\"valueContainer\":\"styles-module__valueContainer___2arTu\",\"optionContainer\":\"styles-module__optionContainer___2t7nn\",\"option\":\"styles-module__option___1IMbo\",\"valueContainerText\":\"styles-module__valueContainerText___2yTjB\",\"statusIcon\":\"styles-module__statusIcon___37OGt\",\"warning\":\"styles-module__warning___3EQQa\",\"saveButtonContainer\":\"styles-module__saveButtonContainer___2tQ3c\",\"customDropdownIndicator\":\"styles-module__customDropdownIndicator___298Mn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___2_Aj-\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___2_Flt\",\"btn-toggle\":\"styles-module__btn-toggle___3KOmo\",\"handle\":\"styles-module__handle___2uuI6\",\"active\":\"styles-module__active___2UZtH\",\"focus\":\"styles-module__focus___3Xwv0\",\"card-panel\":\"styles-module__card-panel___10bE4\",\"panel-heading\":\"styles-module__panel-heading___3weuz\",\"panel-title\":\"styles-module__panel-title___2_i4B\",\"panel-subtitle\":\"styles-module__panel-subtitle___1RUPW\",\"panel-body\":\"styles-module__panel-body___3e07R\",\"mainContainer\":\"styles-module__mainContainer___2mxx2\",\"tableContainer\":\"styles-module__tableContainer___3D3AJ\",\"tableRow\":\"styles-module__tableRow___1oQl-\",\"heading\":\"styles-module__heading___33tP_\",\"divider\":\"styles-module__divider___vGfe8\",\"columnItem\":\"styles-module__columnItem___37byq\",\"overrideIconHeader\":\"styles-module__overrideIconHeader___1UsSv\",\"overrideIcon\":\"styles-module__overrideIcon___3XJwX\",\"overrideMessage\":\"styles-module__overrideMessage___1TyAi\",\"settingOff\":\"styles-module__settingOff___RaOvw\",\"label\":\"styles-module__label___1LPR4\",\"select\":\"styles-module__select___LMwtv\",\"warning\":\"styles-module__warning___1amm2\",\"titleWithControl\":\"styles-module__titleWithControl___2P5QK\",\"title\":\"styles-module__title___14uWj\",\"control\":\"styles-module__control___3hdMT\"};","export const DASHBOARD_APPS_AD_NETWORK_SETTINGS_PATH = '/ad_network_settings'\nexport const DASHBOARD_APPS_CALLBACK_GROUPS_PATH = '/callback_groups'\nexport const DASHBOARD_APPS_CALLBACK_HEALTH_PATH = '/callback_health'\nexport const DASHBOARD_APPS_CHANNEL_SETTINGS_PATH = '/channel_settings'\nexport const DASHBOARD_APPS_CREDENTIAL_SETTINGS_PATH = '/credential_settings'\nexport const DASHBOARD_APPS_EVENT_CALLBACKS_PATH = '/event_callbacks'\nexport const DASHBOARD_APPS_INTEGRATIONS_PATH = '/integrations'\nexport const DASHBOARD_APPS_S2S_CALLBACKS_PATH = '/s2s_callbacks'\nexport const DASHBOARD_APPS_URL = '/dashboard/apps'\n\nexport const PRESERVED_KEYS_FOR_CASE_TRANSFORMATION = ['macroValues']\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport styles from './styles.module.scss'\n\nconst Filter = (\n {\n className: classNameProp,\n isDisabled,\n isOpen,\n label,\n pane\n }\n) => {\n const className = classNames(classNameProp, styles.filter, {\n [styles.active]: !isDisabled && isOpen,\n [styles.activeNewNav]: !isDisabled && isOpen,\n [styles.disabled]: isDisabled\n })\n\n return (\n
\n {label}\n\n {isOpen && pane}\n
\n )\n}\n\nFilter.propTypes = {\n className: PropTypes.string,\n isDisabled: PropTypes.bool.isRequired,\n isOpen: PropTypes.bool.isRequired,\n label: PropTypes.oneOfType([PropTypes.element, PropTypes.string]).isRequired,\n pane: PropTypes.oneOfType([PropTypes.element, PropTypes.string]).isRequired\n}\n\nFilter.defaultProps = {\n className: null\n}\n\nexport default Filter\n","import { keyBy, pick } from 'lodash'\n\nimport CreativesPage from './CreativesPage'\nimport CustomPage from './CustomPage'\nimport FraudPage from './FraudPage'\nimport OverviewPage from './OverviewPage'\nimport RetentionPage from './RetentionPage'\nimport RevenuePage from './RevenuePage'\nimport RoiPage from './RoiPage'\nimport SpendPage from './SpendPage'\nimport UsagePage from './UsagePage'\nimport ValuePage from './ValuePage'\n\nexport const ROUTES = [\n {\n component: OverviewPage,\n label: 'Overview',\n path: '/',\n value: 'overview'\n },\n {\n component: SpendPage,\n label: 'Spend',\n path: '/spend',\n value: 'spend'\n },\n {\n component: UsagePage,\n label: 'Usage',\n path: '/usage',\n value: 'usage'\n },\n {\n component: RetentionPage,\n label: 'Retention',\n path: '/retention',\n value: 'retention'\n },\n {\n component: ValuePage,\n label: 'Value',\n path: '/value',\n value: 'value'\n },\n {\n component: RevenuePage,\n label: 'Revenue',\n path: '/revenue',\n value: 'revenue'\n },\n {\n component: RoiPage,\n label: 'ROI',\n path: '/roi',\n value: 'roi'\n },\n {\n component: CustomPage,\n label: 'In-App Events',\n path: '/custom',\n value: 'custom'\n },\n {\n component: FraudPage,\n label: 'Fraud',\n path: '/fraud',\n value: 'fraud'\n },\n ...(window.gon.feature_flags.includes('creatives_report')\n ? [\n {\n component: CreativesPage,\n label: 'Creatives',\n path: '/creatives',\n value: 'creatives'\n }\n ]\n : [])\n]\n\nexport const REPORTS = ROUTES.map(route =>\n pick(route, ['label', 'path', 'value'])\n)\n\nexport const REPORTS_BY_VALUE = keyBy(REPORTS, 'value')\n\nexport const WINDOW_SCROLLTO_OPTIONS = {\n behavior: 'smooth',\n top: 0\n}\n","export const CV_SAMPLE_CSV_URL = '/downloads/tenjin_cv_template.csv'\nexport const CV_SAMPLE_CSV_WITH_META_URL = '/downloads/tenjin_cv_meta_template.csv'\nexport const CV_SAMPLE_CSV_FILE = 'tenjin_cv_template.csv'\n\nexport const KNOWLEDGE_BASE_CV_MAPPING_RECOMMENDATION_URL = 'https://docs.tenjin.com/v1/docs/en/conversion-value-mapping-recommendations?highlight=conversion%20value%20mapping'\nexport const KNOWLEDGE_BASE_UNDERSTANDING_CONVERSION_VALUES = 'https://docs.tenjin.com/docs/understanding-conversion-values-cvs'\nexport const KNOWLEDGE_BASE_UPLOAD_CV_SCHEMA = 'https://docs.tenjin.com/docs/upload-conversion-value-schema'\n\nexport const MMP_CONNECTION_URL_BASE = 'https://api.tenjin.com/skan/v1/cv_schema'\n\nexport const CV_SCHEMA_ONLINE = true\nexport const CV_SCHEMA_POSTBACK_SEQUENCE_INDEX_MAX = 2\nexport const CV_SCHEMA_POSTBACK_SEQUENCE_INDEX_MIN = 0\nexport const CV_SCHEMA_SKAN_VERSION_3 = '3.0'\nexport const CV_SCHEMA_SKAN_VERSION_4 = '4.0'\nexport const CV_SCHEMA_TYPE_COARSE_GRAINED = 'coarse'\nexport const CV_SCHEMA_TYPE_FINE_GRAINED = 'fine'\n\nexport const CV_SCHEMA_PARTNER_EVENT_NAME_KEY = {\n GOOGLE: 'google',\n META: 'meta',\n TIKTOK: 'tiktok'\n}\n\n/* eslint-disable sort-keys, quote-props */\nexport const CV_SCHEMA_COARSE_VALUE_MAPPING = {\n low: 0,\n medium: 1,\n high: 2,\n 0: 'low',\n 1: 'medium',\n 2: 'high'\n}\n/* eslint-enable sort-keys, quote-props */\n\nexport const ERROR_RESET_TIMEOUT_MS = 2000\n\nexport const SKELETON_ROW_COUNT = 5\n\nexport const DATE_FORMAT_UPLOADED_AT = 'dd MMM yyyy'\n\nexport const CSV_PREVIEW_COLUMN_ORDER = [\n 'postbackSequenceIndex',\n 'conversionValueType',\n 'conversionValue',\n 'customEventName',\n 'googleEventName',\n 'metaEventName',\n 'tiktokEventName',\n 'minRange',\n 'maxRange',\n 'currency'\n]\n\nexport const DEFAULT_EVENT_MAPPINGS = {\n googleEventName: '',\n metaEventName: '',\n tiktokEventName: ''\n}\n","import {\n DEFAULT_AM_GROUPED_SUMMARY_TABLE_DRILLDOWN_RULES,\n CUSTOM_UA_GROUPED_SUMMARY_TABLE_DRILLDOWN_RULES,\n DEFAULT_UA_GROUPED_SUMMARY_TABLE_DRILLDOWN_RULES,\n TARGETING_TAG_DRILLDOWN_RULES\n} from './constants'\n\nimport {\n isCustomReportPage, isGroupingByTargetingTags, isPublisherPage, isSkAdNetworkPage\n} from '../ReportingFilters'\n\nexport const getRulesByReportPageAndGroupBy = ({ groupBy, reportPage }) => {\n if (isSkAdNetworkPage(reportPage)) return groupBy\n\n if (isPublisherPage(reportPage)) {\n return DEFAULT_AM_GROUPED_SUMMARY_TABLE_DRILLDOWN_RULES[groupBy]\n }\n\n if (isGroupingByTargetingTags(groupBy)) {\n return TARGETING_TAG_DRILLDOWN_RULES\n }\n\n if (isCustomReportPage(reportPage)) {\n return CUSTOM_UA_GROUPED_SUMMARY_TABLE_DRILLDOWN_RULES[groupBy]\n }\n\n return DEFAULT_UA_GROUPED_SUMMARY_TABLE_DRILLDOWN_RULES[groupBy]\n}\n","import { isUndefined, uniq } from 'lodash'\nimport { createContext, useContext, useReducer } from 'react'\nimport { useLocation } from 'react-router-dom'\n\nimport {\n getGroupByFromQuery,\n getReportPageFromPathname,\n getUrlSearchParams,\n isSkAdNetworkPage\n} from '../ReportingFilters'\nimport { SK_AD_NETWORK_PAGE_STR } from '../ReportingFilters/constants'\nimport { DEFAULT_APPLE_SKAN_METRICS } from './constants'\nimport { getRulesByReportPageAndGroupBy } from './helpers'\n\nconst StateContext = createContext()\nconst DispatchContext = createContext()\n\nconst getInitialState = ({\n groupBy,\n metricColumnsByReport,\n viewMode,\n nameColumnMode,\n reportPage\n}) => ({\n isAllExpanded: false,\n isAllExpanding: false,\n isColumnEditorOpen: false,\n isFetchingTableData: false,\n metricColumnsByReport,\n nameColumnMode,\n rules: getRulesByReportPageAndGroupBy({ groupBy, reportPage }),\n tableData: [],\n viewMode\n})\n\nconst reducer = (state, action) => {\n const { type, payload } = action\n\n switch (type) {\n case 'OPEN_COLUMN_EDITOR': {\n return {\n ...state,\n isColumnEditorOpen: true\n }\n }\n\n case 'CLOSE_COLUMN_EDITOR': {\n return {\n ...state,\n isColumnEditorOpen: false\n }\n }\n\n case 'UPDATE_RULES': {\n const { groupBy, reportPage } = payload\n\n return {\n ...state,\n rules: getRulesByReportPageAndGroupBy({ groupBy, reportPage })\n }\n }\n\n case 'CHANGE_VIEW_MODE': {\n const { viewMode } = payload\n\n return {\n ...state,\n viewMode\n }\n }\n\n case 'APPLY_METRICS': {\n const { metrics, reportPage } = payload\n\n return {\n ...state,\n isColumnEditorOpen: false,\n metricColumnsByReport: {\n ...state.metricColumnsByReport,\n [reportPage]: metrics\n }\n }\n }\n\n case 'TOGGLE_ALL_EXPANDED': {\n return {\n ...state,\n isAllExpanded: !state.isAllExpanded,\n isAllExpanding: true\n }\n }\n\n case 'DONE_EXPANDING_ALL': {\n return {\n ...state,\n isAllExpanding: false\n }\n }\n\n case 'COLLAPSE_ALL': {\n return {\n ...state,\n isAllExpanded: false,\n isAllExpanding: false\n }\n }\n\n case 'SET_TABLE_DATA': {\n const { tableData } = payload\n\n return {\n ...state,\n tableData\n }\n }\n\n case 'SET_IS_FETCHING_TABLE_DATA': {\n const { isFetchingTableData } = payload\n\n return {\n ...state,\n isFetchingTableData\n }\n }\n\n case 'TOGGLE_NAME_EXTENDED': {\n return {\n ...state,\n nameColumnMode:\n state.nameColumnMode === 'default' ? 'extended' : 'default'\n }\n }\n\n default: {\n return state\n }\n }\n}\n\n/* eslint-disable react/prop-types */\nexport const GroupedSummaryTableSettingsProvider = ({\n children,\n metricColumnsByReport: metricColumnsByReportProp,\n nameColumnMode = 'default',\n viewMode = 'default'\n}) => {\n const location = useLocation()\n const reportPage = getReportPageFromPathname(location.pathname)\n\n const groupBy = getGroupByFromQuery({\n query: getUrlSearchParams(location.search),\n reportPage\n })\n\n /*\n TODO: Refactor this override with internal api improvements [TENJIN-14615]\n */\n const metricColumnsByReport = metricColumnsByReportProp\n\n if (isSkAdNetworkPage(reportPage)) {\n metricColumnsByReport[SK_AD_NETWORK_PAGE_STR] = uniq([\n ...metricColumnsByReport[SK_AD_NETWORK_PAGE_STR],\n ...DEFAULT_APPLE_SKAN_METRICS\n ])\n }\n\n const [state, dispatch] = useReducer(\n reducer,\n getInitialState({\n groupBy,\n metricColumnsByReport,\n nameColumnMode,\n reportPage,\n viewMode\n })\n )\n\n return (\n \n \n {children}\n \n \n )\n}\n/* eslint-enable react/prop-types */\n\nexport const useGroupedSummaryTableSettingsState = () => {\n const context = useContext(StateContext)\n\n if (isUndefined(context)) {\n throw new Error(`useGroupedSummaryTableSettingsState must be used within a\n GroupedSummaryTableSettingsProvider`)\n }\n\n return context\n}\n\nexport const useGroupedSummaryTableSettingsDispatch = () => {\n const context = useContext(DispatchContext)\n\n if (isUndefined(context)) {\n throw new Error(`useGroupedSummaryTableSettingsDispatch must be used within a\n GroupedSummaryTableSettingsProvider`)\n }\n\n return context\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"skeletonHeight\":\"25px\",\"skeletonSmallWidth\":\"40%\",\"skeletonFullWidth\":\"100%\",\"google-oauth-button\":\"styles-module__google-oauth-button___284O5\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___aKvdL\",\"btn-toggle\":\"styles-module__btn-toggle___34NDn\",\"handle\":\"styles-module__handle___1CFzL\",\"active\":\"styles-module__active___2nLEP\",\"focus\":\"styles-module__focus___2O8hI\",\"card-panel\":\"styles-module__card-panel___1ppdH\",\"panel-heading\":\"styles-module__panel-heading___1fWuG\",\"panel-title\":\"styles-module__panel-title___13IZL\",\"panel-subtitle\":\"styles-module__panel-subtitle___19fGz\",\"panel-body\":\"styles-module__panel-body___3R91J\",\"skanConfigurationActions\":\"styles-module__skanConfigurationActions___1bQ_B\",\"skanConfigurationPanel\":\"styles-module__skanConfigurationPanel___2VL4x\",\"cell\":\"styles-module__cell___1YyXz\",\"mmpConnectionUrl\":\"styles-module__mmpConnectionUrl___3e-uZ\",\"mmpConnectionUrlCopyButton\":\"styles-module__mmpConnectionUrlCopyButton___2WaV-\",\"learnMoreContainer\":\"styles-module__learnMoreContainer___-pDmC\",\"cardPanelFooter\":\"styles-module__cardPanelFooter___1XVc_\",\"uploadButton\":\"styles-module__uploadButton___1Uma2\",\"uploadInstructions\":\"styles-module__uploadInstructions___1T3Ny\",\"uploadInstruction\":\"styles-module__uploadInstruction___OnMc_\",\"downloadTemplateButton\":\"styles-module__downloadTemplateButton___1W-hT\",\"learnTemplateInfo\":\"styles-module__learnTemplateInfo___RVg-n\",\"learnTemplateLink\":\"styles-module__learnTemplateLink___3zZMQ\",\"templateRestriction\":\"styles-module__templateRestriction___1g9fy\",\"conversionValueMapping\":\"styles-module__conversionValueMapping___CYrw8\",\"cvSchemaFilename\":\"styles-module__cvSchemaFilename___hPfDJ\",\"cvSchemaCreatedAt\":\"styles-module__cvSchemaCreatedAt___1grs9\",\"emptyStateOverlay\":\"styles-module__emptyStateOverlay___P0Eyi\",\"errorOverlay\":\"styles-module__errorOverlay___1g_Il\",\"skanFeaturesLabel\":\"styles-module__skanFeaturesLabel___2C3d6\",\"cardPanelFooterReuploadInstructions\":\"styles-module__cardPanelFooterReuploadInstructions___1BLXV\",\"cardPanelFooterTemplateLink\":\"styles-module__cardPanelFooterTemplateLink___2GbGE\"};","import { isValidElement } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport Tooltip from 'rc-tooltip'\n\nimport { isPresent, noop } from '../../../../../utils/helpers'\n\nimport styles from './styles.module.scss'\n\nconst ListItem = (\n {\n isDisabled,\n isSelected,\n leftContent,\n onClick,\n rightContent,\n selectionIcon,\n tooltipText\n }\n) => {\n const className = classNames(styles.listItem, {\n [styles.listItemSelected]: isSelected,\n [styles.listItemDisabled]: isDisabled\n })\n\n const handleKeyDown = ev => {\n if (!isDisabled && ev.key === 'Enter') {\n ev.preventDefault()\n onClick()\n }\n }\n\n const handleClick = isDisabled ? noop : onClick\n\n return (\n {tooltipText}}\n placement=\"top\"\n trigger={isPresent(tooltipText) ? ['hover'] : []}\n >\n \n
\n {selectionIcon}\n\n {leftContent}\n
\n\n {isValidElement(rightContent) && (\n
\n {rightContent}\n
\n )}\n \n \n )\n}\n\nListItem.propTypes = {\n isDisabled: PropTypes.bool,\n isSelected: PropTypes.bool.isRequired,\n leftContent: PropTypes.oneOfType([PropTypes.element, PropTypes.string]).isRequired,\n onClick: PropTypes.func.isRequired,\n rightContent: PropTypes.element,\n selectionIcon: PropTypes.element.isRequired,\n tooltipText: PropTypes.string\n}\n\nListItem.defaultProps = {\n isDisabled: false,\n rightContent: null,\n tooltipText: null\n}\n\nexport default ListItem\n","import { isEmpty } from 'lodash'\n\nimport { GROUP_TYPE_ADVANCED } from './constants'\nimport styles from './styles.module.scss'\n\nexport const getCredentialsFromSettings = data =>\n Object.keys(data).reduce((acc, key) => {\n acc[key] = data[key].value\n\n return acc\n }, {})\n\nexport const getFieldSetFromSettings = data =>\n Object.keys(data).map(key => ({\n id: key,\n ...data[key]\n }))\n\nexport const getModalHeadersForRequiredMacros = ({\n defaultHeaders,\n callbackGroupTemplate,\n groupType,\n callback,\n selectedChannel\n}) => ({\n ...defaultHeaders,\n headers: [\n ...defaultHeaders.headers,\n ...(callbackGroupTemplate?.requiredMacros || [])\n .filter(\n ({ default: isDefault }) =>\n (isDefault && groupType === GROUP_TYPE_ADVANCED) || !isDefault\n )\n .map(({ name }) => ({\n label: (\n
\n {name}\n \n ({selectedChannel.name})\n \n
\n )\n })),\n ...(callback?.macros || [])\n .filter(\n ({ default: isDefault, value }) =>\n (isDefault && value !== null) || !isDefault\n )\n .map(({ name }) => ({\n label: (\n
\n {name}\n \n ({selectedChannel.name})\n \n
\n )\n }))\n ]\n})\n\nexport const getRequiredMacrosMappingForDraft = ({\n callbackGroupTemplate: { requiredMacros },\n credentials\n}) =>\n requiredMacros.reduce((mapping, { name, default: isUsingDefault }) => {\n // eslint-disable-next-line no-param-reassign\n mapping[name] = (isUsingDefault && credentials[name]) || null\n\n return mapping\n }, {})\n\nexport const getSortedCallbackGroupsForTable = callbackGroups =>\n callbackGroups.sort((a, b) => {\n if (a.active !== b.active) {\n return b.active - a.active\n }\n\n return a.name.localeCompare(b.name)\n })\n\nexport const getSortedS2SCallbacksForTable = callbacks =>\n callbacks.sort((a, b) => a.name.localeCompare(b.name))\n\nexport const getSortedCallbackHealthForTable = callbacks =>\n callbacks.sort(\n (a, b) =>\n (b.health ?? -1) - (a.health ?? -1) ||\n a.callback.name.localeCompare(b.callback.name)\n )\n\nexport const validateNewEventDraft = newEventDraft =>\n newEventDraft.rows?.length > 0 &&\n newEventDraft.rows.filter(\n row =>\n !isEmpty(row.callbackName) &&\n (!isEmpty(row.eventDefinition) ||\n newEventDraft.selectedCallbackGroupTemplate?.fixedEventDefinition) &&\n (newEventDraft.selectedCallbackGroupTemplate?.requiredMacros || []).every(\n ({ name, optional }) => optional || !isEmpty(row[name])\n ) &&\n !isEmpty(row.userFilter)\n ).length > 0\n\nexport const validateEditedCallbackDraft = editedCallbackDraft =>\n editedCallbackDraft?.rows?.length > 0 &&\n editedCallbackDraft.rows.filter(\n row =>\n !isEmpty(row.callbackName) &&\n !isEmpty(row.eventDefinition) &&\n (editedCallbackDraft.selectedCallback?.macros || []).every(\n ({ name, optional, default: isDefault }) =>\n optional || !isEmpty(row[name]) || isDefault\n )\n ).length > 0 &&\n editedCallbackDraft.isDirty\n","import { useMemo } from 'react'\nimport { useQueries } from 'react-query'\nimport {\n filter, has, map, pick, some, includes, lowerCase, omit, each\n} from 'lodash'\n\nimport { isPresent } from '../../utils/helpers'\n\nimport {\n fetchAdRevenueData, fetchAdRevenueSummaryData, fetchCohortData, fetchCohortLifetimeData,\n fetchCustomCohortData, fetchCustomCohortTotalData, fetchCustomUsageCumulativeData,\n fetchCustomUsageTotalData, fetchGroupedStatsData, fetchSummaryData, fetchReportingData\n} from '../../api/reporting'\n\nimport { buildQueryParams } from '../../contexts/ReportingFilters'\nimport { transformResponseDataForChart } from '../../utils/charts'\n\nimport {\n generateAppLevelDataByDateForMetrics,\n generateAppLevelDataByXDayForMetrics,\n generateSummaryLevelDataForMetrics\n} from '../../utils/mock'\n\nimport {\n PUBLISHER_REPORT_TYPE_STR,\n USER_ACQUISITION_REPORT_TYPE_STR\n} from '../../contexts/ReportingFilters/constants'\n\nimport { transformQueryParamsForV4Api } from '../../api/reporting/helpers'\n\nconst getFirstNElementsOf = ({ list, n }) => (isPresent(list) ? list.slice(0, n) : [])\n\nexport const buildVisibleSeries = (\n {\n groupedStatsDataByMetric, metricDefinitions, numMaxVisible\n }\n) => {\n const visibleSeries = {}\n\n metricDefinitions.forEach(({ key: metricDefinitionKey }) => {\n visibleSeries[metricDefinitionKey] = getFirstNElementsOf({\n list: groupedStatsDataByMetric[metricDefinitionKey],\n n: numMaxVisible\n })\n })\n\n return visibleSeries\n}\n\nexport const mapDataForSelector = data => data.map(item => (\n pick(item, 'color', 'id', 'name', 'platform', 'iconUrl')\n))\n\nexport const buildMetricDefinitionsForTabs = ({ metricDefinitions, tabs }) => (\n Object.keys(tabs).map(metricDefinitionKey => (\n {\n ...metricDefinitions[metricDefinitionKey],\n components: {\n ...metricDefinitions[metricDefinitionKey].components,\n kpiTabChart: {\n ...metricDefinitions[metricDefinitionKey].components.kpiTabChart,\n ...tabs[metricDefinitionKey].chartProps\n }\n },\n xAxisType: tabs[metricDefinitionKey].chartProps.xAxisType\n }\n ))\n)\n\nexport const buildMetricDefinitionsForSummaryBlocks = ({ metricDefinitions, summaryBlocks }) => (\n Object.keys(summaryBlocks).map(metricDefinitionKey => (\n {\n ...metricDefinitions[metricDefinitionKey],\n components: {\n ...metricDefinitions[metricDefinitionKey].components,\n kpiTabChart: {\n ...metricDefinitions[metricDefinitionKey].components.kpiTabChart,\n apiEndpoint: summaryBlocks[metricDefinitionKey].apiEndpoint\n }\n }\n }\n ))\n)\n\nconst ENDPOINT_TO_QUERY_FN = {\n adRevenue: fetchAdRevenueData,\n adRevenueSummary: fetchAdRevenueSummaryData,\n cohort: fetchCohortData,\n cohortLifetime: fetchCohortLifetimeData,\n customCohort: fetchCustomCohortData,\n customCohortTotal: fetchCustomCohortTotalData,\n customUsageCumulative: fetchCustomUsageCumulativeData,\n customUsageTotal: fetchCustomUsageTotalData,\n groupedStats: fetchGroupedStatsData,\n summary: fetchSummaryData\n}\n\nexport const isV4CompatibleEndpoint = endpoint => includes([\n 'adRevenue',\n 'adRevenueSummary',\n 'groupedStats',\n 'summary'\n], endpoint)\n\nconst getQueryFunctionByEndpoint = endpoint => {\n if (has(ENDPOINT_TO_QUERY_FN, endpoint)) {\n return ENDPOINT_TO_QUERY_FN[endpoint]\n }\n\n throw new Error(`missing endpoint support for ${endpoint}`)\n}\n\nconst V4_ENDPOINT_TO_REPORT_TYPE = {\n adRevenue: PUBLISHER_REPORT_TYPE_STR,\n adRevenueSummary: PUBLISHER_REPORT_TYPE_STR,\n groupedStats: USER_ACQUISITION_REPORT_TYPE_STR,\n summary: USER_ACQUISITION_REPORT_TYPE_STR\n}\n\nexport const isSummaryEndpoint = endpoint => lowerCase(endpoint).includes('summary')\n\nconst groupMetricDefinitionsByApiEndpoint = metricDefinitions => {\n const metricsByEndpoint = {}\n\n metricDefinitions.forEach(metricDefinition => {\n const {\n components: { kpiTabChart: { apiEndpoint } },\n key: metricDefinitionKey\n } = metricDefinition\n\n metricsByEndpoint[apiEndpoint] = metricsByEndpoint[apiEndpoint] || []\n\n metricsByEndpoint[apiEndpoint].push(metricDefinitionKey)\n })\n\n return metricsByEndpoint\n}\n\nexport const performQueriesFor = (\n {\n currentUser, location, metricDefinitions, reportingFilters, featureFlags\n }\n) => {\n const metricsByEndpoint = groupMetricDefinitionsByApiEndpoint(metricDefinitions)\n\n const baseQueryParams = buildQueryParams({ currentUser, location, reportingFilters })\n\n const queries = useQueries(\n Object.keys(metricsByEndpoint).map(endpoint => {\n const metrics = metricsByEndpoint[endpoint]\n\n const queryParamsForFetchingData = {\n ...baseQueryParams,\n metrics\n }\n\n const queryKey = JSON.stringify(queryParamsForFetchingData)\n\n const canQuery = isPresent(metrics)\n\n return {\n enabled: canQuery,\n queryFn: () => {\n if (featureFlags.includes('reporting_v4') && isV4CompatibleEndpoint(endpoint)) {\n let queryParams = transformQueryParamsForV4Api({\n queryParams: queryParamsForFetchingData\n })\n\n if (isSummaryEndpoint(endpoint)) {\n queryParams = omit(queryParams, ['dimensions'])\n }\n\n return fetchReportingData({\n context: {\n apiVersion: 4,\n isFlat: true,\n isSummary: isSummaryEndpoint(endpoint),\n queryParams,\n reportType: V4_ENDPOINT_TO_REPORT_TYPE[endpoint]\n }\n })\n }\n\n return getQueryFunctionByEndpoint(endpoint)({\n params: queryParamsForFetchingData\n })\n },\n queryKey: ['kpiTabs', endpoint, queryKey]\n }\n })\n )\n\n const isLoading = some(queries, 'isLoading')\n const isFetching = some(queries, 'isFetching')\n const isPulling = isLoading || isFetching\n\n const isError = some(queries, 'isError')\n\n const isSuccess = !(isLoading || isError)\n\n return {\n isError,\n isFetching,\n isLoading,\n isPulling,\n isSuccess,\n metricDefinitions,\n queries\n }\n}\n\nexport const useDataFromGroupedQueries = ({ isSuccess, metricDefinitions, queries }) => (\n useMemo(() => {\n if (isSuccess) {\n const responseDataList = queries.reduce((accumulator, query) => (\n [...accumulator, ...query.data]\n ), [])\n\n return transformResponseDataForChart({\n metricDefinitions,\n responseDataList\n })\n }\n\n return transformResponseDataForChart({\n metricDefinitions,\n responseDataList: []\n })\n }, [isSuccess, metricDefinitions, queries])\n)\n\nexport const flattenSummaryDataFromQueries = queryResponses => {\n let flattenedSummaryDataFromQueries = {}\n\n each(queryResponses, ({ data }) => {\n flattenedSummaryDataFromQueries = {\n ...flattenedSummaryDataFromQueries,\n ...(data[0] || data || {})\n }\n })\n\n return flattenedSummaryDataFromQueries\n}\n\nexport const useDataFromSummaryQueries = ({ isSuccess, metricDefinitions, queries }) => (\n useMemo(() => {\n if (isSuccess) {\n return flattenSummaryDataFromQueries(queries)\n }\n\n return {}\n }, [isSuccess, metricDefinitions, queries])\n)\n\nconst filterMetricDefinitionsByXAxisType = ({ metricDefinitions, xAxisType }) => (\n filter(metricDefinitions, ['xAxisType', xAxisType])\n)\n\nexport const buildMockDataForGroupedStats = metricDefinitions => {\n const datetimeMetricKeys = map(\n filterMetricDefinitionsByXAxisType({\n metricDefinitions,\n xAxisType: 'datetime'\n }),\n 'key'\n )\n\n const xDayMetricKeys = map(\n filterMetricDefinitionsByXAxisType({\n metricDefinitions,\n xAxisType: 'xday'\n }),\n 'key'\n )\n\n const groupedStatsDataList = [\n ...generateAppLevelDataByDateForMetrics(datetimeMetricKeys),\n ...generateAppLevelDataByXDayForMetrics(xDayMetricKeys)\n ]\n\n return transformResponseDataForChart({\n metricDefinitions,\n responseDataList: groupedStatsDataList\n })\n}\n\nexport const buildMockDataForSummary = metricDefinitions => (\n generateSummaryLevelDataForMetrics(\n map(metricDefinitions, 'key')\n )\n)\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport { camelCase } from 'camel-case'\nimport { has } from 'lodash'\n\nimport { getPlatformIconClass } from '../../utils/helpers'\nimport { PLATFORM_TO_ICON, VALID_SIZES } from './constants'\n\nconst PlatformIcon = ({ className: classNameProp, platform, size }) => {\n const isValidSize = size && VALID_SIZES.includes(size)\n\n const iconClass = classNames('platformIcon', classNameProp, {\n [`platformIcon-${size}`]: isValidSize\n })\n\n if (platform) {\n const platformKey = camelCase(platform)\n\n if (has(PLATFORM_TO_ICON, platformKey)) {\n return \n }\n }\n\n return \n}\n\nPlatformIcon.propTypes = {\n className: PropTypes.string,\n platform: PropTypes.string,\n size: PropTypes.oneOf(VALID_SIZES)\n}\n\nPlatformIcon.defaultProps = {\n className: '',\n platform: '',\n size: null\n}\n\nexport default PlatformIcon\n","import { Fragment, useCallback } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport Tooltip from 'rc-tooltip'\n\nimport VisibilityIcon from './VisibilityIcon'\n\nimport { noop } from '../../../../utils/helpers'\n\nimport styles from './styles.module.scss'\n\nconst Label = (\n {\n children,\n collapsedIcon,\n hasFilterChanges,\n isCollapsed,\n isDisabled,\n isOpen,\n isTooltipDisabled,\n labelTitle,\n onClick,\n tooltipText\n }\n) => {\n const className = classNames(styles.wrapper, {\n [styles.collapsed]: isCollapsed\n })\n\n const renderChangesBorderLeft = useCallback(() => {\n const borderClassName = classNames(styles.changesBorder, {\n [styles.changesBorderCollapsed]: isCollapsed\n })\n\n return
\n }, [isCollapsed])\n\n const handleClick = isDisabled ? noop : onClick\n\n const handleKeyDown = ev => {\n if (ev.key === 'Enter') {\n ev.preventDefault()\n handleClick()\n }\n }\n\n return (\n {tooltipText || children}}\n placement=\"right\"\n trigger={isTooltipDisabled ? [] : ['hover']}\n >\n \n {hasFilterChanges && renderChangesBorderLeft()}\n\n {isCollapsed && collapsedIcon}\n\n {!isCollapsed && (\n \n
\n
\n {labelTitle}\n
\n\n
\n {children}\n
\n
\n\n \n
\n )}\n
\n \n )\n}\n\nLabel.propTypes = {\n children: PropTypes.node.isRequired,\n collapsedIcon: PropTypes.element.isRequired,\n hasFilterChanges: PropTypes.bool.isRequired,\n isCollapsed: PropTypes.bool.isRequired,\n isDisabled: PropTypes.bool.isRequired,\n isOpen: PropTypes.bool.isRequired,\n isTooltipDisabled: PropTypes.bool.isRequired,\n labelTitle: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired,\n tooltipText: PropTypes.string\n}\n\nLabel.defaultProps = {\n tooltipText: null\n}\n\nexport default Label\n","import { hoursToSeconds, intervalToDuration } from 'date-fns'\nimport { isNil, trimEnd } from 'lodash'\nimport pluralize from 'pluralize'\n\nimport { ONE_SECOND } from '../../../../../../utils/constants'\nimport { displayErrorMessage } from '../../../../../../utils/toastNotifications'\nimport {\n ATTRIBUTION_WINDOW_LEVEL,\n DAYS_IN_WEEK,\n DAYS_TIME_RANGE,\n ERROR_MESSAGE_AUTO_CLOSE_DELAY,\n HOURS_IN_DAY,\n HOURS_TIME_RANGE,\n SECONDS_IN_DAY,\n SECONDS_IN_HOUR,\n TEXT_UPDATE_ERROR_MESSAGE,\n TYPE_CLICK,\n TYPE_DAYS,\n TYPE_DETERMINISTIC,\n TYPE_HOURS,\n TYPE_IMPRESSION,\n TYPE_PROBABILISTIC,\n WINDOW_TYPE_DETERMINISTIC_CLICK,\n WINDOW_TYPE_DETERMINISTIC_IMPRESSION,\n WINDOW_TYPE_PROBABILISTIC_CLICK,\n WINDOW_TYPE_PROBABILISTIC_IMPRESSION\n} from './constants'\n\nexport const DEFAULT_ATTRIBUTION_SETTINGS = {\n [WINDOW_TYPE_DETERMINISTIC_CLICK]: DAYS_IN_WEEK * SECONDS_IN_DAY,\n [WINDOW_TYPE_DETERMINISTIC_IMPRESSION]: SECONDS_IN_HOUR,\n [WINDOW_TYPE_PROBABILISTIC_CLICK]: SECONDS_IN_HOUR,\n [WINDOW_TYPE_PROBABILISTIC_IMPRESSION]: SECONDS_IN_HOUR\n}\n\nexport const SANS_DEFAULT_ATTRIBUTION_SETTINGS = {\n [WINDOW_TYPE_DETERMINISTIC_CLICK]: DAYS_IN_WEEK * SECONDS_IN_DAY,\n [WINDOW_TYPE_DETERMINISTIC_IMPRESSION]: SECONDS_IN_HOUR,\n [WINDOW_TYPE_PROBABILISTIC_CLICK]: null,\n [WINDOW_TYPE_PROBABILISTIC_IMPRESSION]: null\n}\n\nexport const RESET_ATTRIBUTION_SETTINGS = {\n [WINDOW_TYPE_DETERMINISTIC_CLICK]: null,\n [WINDOW_TYPE_DETERMINISTIC_IMPRESSION]: null,\n [WINDOW_TYPE_PROBABILISTIC_CLICK]: null,\n [WINDOW_TYPE_PROBABILISTIC_IMPRESSION]: null\n}\n\nexport const buildAppConfig = app => {\n if (isNil(app)) throw new Error('app is missing in config construction')\n\n return {\n [WINDOW_TYPE_DETERMINISTIC_CLICK]: {\n engagementType: TYPE_CLICK,\n level: ATTRIBUTION_WINDOW_LEVEL.APP,\n matchType: TYPE_DETERMINISTIC,\n value: app.deterministicClickAttributionWindow\n },\n [WINDOW_TYPE_DETERMINISTIC_IMPRESSION]: {\n engagementType: TYPE_IMPRESSION,\n level: ATTRIBUTION_WINDOW_LEVEL.APP,\n matchType: TYPE_DETERMINISTIC,\n value: app.deterministicImpressionAttributionWindow\n },\n [WINDOW_TYPE_PROBABILISTIC_CLICK]: {\n engagementType: TYPE_CLICK,\n level: ATTRIBUTION_WINDOW_LEVEL.APP,\n matchType: TYPE_PROBABILISTIC,\n value: app.probabilisticClickAttributionWindow\n },\n [WINDOW_TYPE_PROBABILISTIC_IMPRESSION]: {\n engagementType: TYPE_IMPRESSION,\n level: ATTRIBUTION_WINDOW_LEVEL.APP,\n matchType: TYPE_PROBABILISTIC,\n value: app.probabilisticImpressionAttributionWindow\n }\n }\n}\n\nexport const buildAppChannelConfig = appChannel => {\n if (isNil(appChannel))\n throw new Error('app channel is missing in config construction')\n\n return {\n [WINDOW_TYPE_DETERMINISTIC_CLICK]: {\n appId: appChannel.appId,\n channelId: appChannel.adNetworkId,\n engagementType: TYPE_CLICK,\n level: ATTRIBUTION_WINDOW_LEVEL.APP_CHANNEL,\n matchType: TYPE_DETERMINISTIC,\n value: appChannel.deterministicClickAttributionWindow\n },\n [WINDOW_TYPE_DETERMINISTIC_IMPRESSION]: {\n appId: appChannel.appId,\n channelId: appChannel.adNetworkId,\n engagementType: TYPE_IMPRESSION,\n level: ATTRIBUTION_WINDOW_LEVEL.APP_CHANNEL,\n matchType: TYPE_DETERMINISTIC,\n value: appChannel.deterministicImpressionAttributionWindow\n },\n [WINDOW_TYPE_PROBABILISTIC_CLICK]: {\n appId: appChannel.appId,\n channelId: appChannel.adNetworkId,\n engagementType: TYPE_CLICK,\n level: ATTRIBUTION_WINDOW_LEVEL.APP_CHANNEL,\n matchType: TYPE_PROBABILISTIC,\n value: appChannel.probabilisticClickAttributionWindow\n },\n [WINDOW_TYPE_PROBABILISTIC_IMPRESSION]: {\n appId: appChannel.appId,\n channelId: appChannel.adNetworkId,\n engagementType: TYPE_IMPRESSION,\n level: ATTRIBUTION_WINDOW_LEVEL.APP_CHANNEL,\n matchType: TYPE_PROBABILISTIC,\n value: appChannel.probabilisticImpressionAttributionWindow\n }\n }\n}\n\nexport const buildAppChannelConfigWithAppSettings = ({ app, channel }) => {\n if (isNil(app)) throw new Error('app is missing in config construction')\n if (isNil(channel))\n throw new Error('channel is missing in config construction')\n\n return {\n [WINDOW_TYPE_DETERMINISTIC_CLICK]: {\n appId: app.id,\n channelId: channel.id,\n engagementType: TYPE_CLICK,\n level: ATTRIBUTION_WINDOW_LEVEL.APP_CHANNEL,\n matchType: TYPE_DETERMINISTIC,\n value: app.deterministicClickAttributionWindow\n },\n [WINDOW_TYPE_DETERMINISTIC_IMPRESSION]: {\n appId: app.id,\n channelId: channel.id,\n engagementType: TYPE_IMPRESSION,\n level: ATTRIBUTION_WINDOW_LEVEL.APP_CHANNEL,\n matchType: TYPE_DETERMINISTIC,\n value: app.deterministicImpressionAttributionWindow\n },\n [WINDOW_TYPE_PROBABILISTIC_CLICK]: {\n appId: app.id,\n channelId: channel.id,\n engagementType: TYPE_CLICK,\n level: ATTRIBUTION_WINDOW_LEVEL.APP_CHANNEL,\n matchType: TYPE_PROBABILISTIC,\n value: app.probabilisticClickAttributionWindow\n },\n [WINDOW_TYPE_PROBABILISTIC_IMPRESSION]: {\n appId: app.id,\n channelId: channel.id,\n engagementType: TYPE_IMPRESSION,\n level: ATTRIBUTION_WINDOW_LEVEL.APP_CHANNEL,\n matchType: TYPE_PROBABILISTIC,\n value: app.probabilisticImpressionAttributionWindow\n }\n }\n}\n\nexport const buildDefaultAppChannelConfig = ({ app, channel }) => {\n if (isNil(app)) throw new Error('app is missing in config construction')\n if (isNil(channel))\n throw new Error('channel is missing in config construction')\n\n return {\n [WINDOW_TYPE_DETERMINISTIC_CLICK]: {\n appId: app.id,\n channelId: channel.id,\n engagementType: TYPE_CLICK,\n level: ATTRIBUTION_WINDOW_LEVEL.APP_CHANNEL,\n matchType: TYPE_DETERMINISTIC,\n value: DEFAULT_ATTRIBUTION_SETTINGS[WINDOW_TYPE_DETERMINISTIC_CLICK]\n },\n [WINDOW_TYPE_DETERMINISTIC_IMPRESSION]: {\n appId: app.id,\n channelId: channel.id,\n engagementType: TYPE_IMPRESSION,\n level: ATTRIBUTION_WINDOW_LEVEL.APP_CHANNEL,\n matchType: TYPE_DETERMINISTIC,\n value: DEFAULT_ATTRIBUTION_SETTINGS[WINDOW_TYPE_DETERMINISTIC_IMPRESSION]\n },\n [WINDOW_TYPE_PROBABILISTIC_CLICK]: {\n appId: app.id,\n channelId: channel.id,\n engagementType: TYPE_CLICK,\n level: ATTRIBUTION_WINDOW_LEVEL.APP_CHANNEL,\n matchType: TYPE_PROBABILISTIC,\n value: DEFAULT_ATTRIBUTION_SETTINGS[WINDOW_TYPE_PROBABILISTIC_CLICK]\n },\n [WINDOW_TYPE_PROBABILISTIC_IMPRESSION]: {\n appId: app.id,\n channelId: channel.id,\n engagementType: TYPE_IMPRESSION,\n level: ATTRIBUTION_WINDOW_LEVEL.APP_CHANNEL,\n matchType: TYPE_PROBABILISTIC,\n value: DEFAULT_ATTRIBUTION_SETTINGS[WINDOW_TYPE_PROBABILISTIC_IMPRESSION]\n }\n }\n}\n\nexport const getSupportedTimeTypes = ({ engagementType, matchType }) => {\n const isProbabilistic = matchType === TYPE_PROBABILISTIC\n const isViewThrough = engagementType === TYPE_IMPRESSION\n\n return isProbabilistic || isViewThrough\n ? [TYPE_HOURS]\n : [TYPE_HOURS, TYPE_DAYS]\n}\n\nexport const convertDaysToSeconds = days => days * SECONDS_IN_DAY\nexport const convertDaysToHours = days => days * HOURS_IN_DAY\n\nexport const convertSecondsToHumanObject = ({\n seconds,\n supportedTimeTypes\n}) => {\n const { days, hours } = intervalToDuration({\n end: seconds * ONE_SECOND,\n start: 0\n })\n\n let type = TYPE_HOURS\n let value = 0\n\n if (days && supportedTimeTypes.includes(TYPE_DAYS)) {\n type = TYPE_DAYS\n value = days\n } else {\n value = hours + days * HOURS_IN_DAY\n }\n\n const label = pluralize(trimEnd(type, 's'), value, true)\n\n return { label, type, value }\n}\n\nexport const getTimeRange = type => {\n if (type === TYPE_HOURS) {\n return HOURS_TIME_RANGE\n }\n if (type === TYPE_DAYS) {\n return DAYS_TIME_RANGE\n }\n return []\n}\n\nexport const convertTimeToSeconds = ({ type, value }) => {\n if (value === 0) return 0\n if (type === TYPE_DAYS) return convertDaysToSeconds(value)\n if (type === TYPE_HOURS) return hoursToSeconds(value)\n return null\n}\n\nexport const getAppChannelSettingsByAppAndChannel = ({\n currentApp,\n currentChannel,\n currentAppChannel,\n currentAppChannelHasCustomSettings,\n currentAppChannelOverrideToggleOn\n}) => {\n if (currentAppChannel && currentAppChannelHasCustomSettings) {\n return buildAppChannelConfig(currentAppChannel)\n }\n if (\n !currentAppChannelHasCustomSettings &&\n !currentAppChannelOverrideToggleOn\n ) {\n return buildAppChannelConfigWithAppSettings({\n app: currentApp,\n channel: currentChannel\n })\n }\n return buildDefaultAppChannelConfig({\n app: currentApp,\n channel: currentChannel\n })\n}\n\nexport const getAttributionSettings = ({\n level,\n currentApp,\n currentChannel,\n currentAppChannel,\n currentAppChannelHasCustomSettings,\n currentAppChannelOverrideToggleOn\n}) => {\n const isAppChannelSettings = level === ATTRIBUTION_WINDOW_LEVEL.APP_CHANNEL\n let attributionWindowSettings\n if (isAppChannelSettings) {\n attributionWindowSettings = getAppChannelSettingsByAppAndChannel({\n currentApp,\n currentAppChannel,\n currentAppChannelHasCustomSettings,\n currentAppChannelOverrideToggleOn,\n currentChannel\n })\n } else {\n attributionWindowSettings = buildAppConfig(currentApp)\n }\n return attributionWindowSettings\n}\n\nexport const handleError = (error = TEXT_UPDATE_ERROR_MESSAGE) => {\n displayErrorMessage(error, {\n autoClose: ERROR_MESSAGE_AUTO_CLOSE_DELAY,\n closeButton: false,\n closeOnClick: true,\n hideProgressBar: true,\n onClose: () => {\n window.location.reload()\n },\n pauseOnFocusLoss: false,\n pauseOnHover: false\n })\n}\n","export const GROUP_BY_APP_STR = 'app_id'\nexport const BASE_GROUP_BY_STR = GROUP_BY_APP_STR\nexport const GROUP_BY_CHANNEL_STR = 'ad_network_id'\nexport const GROUP_BY_CAMPAIGN_STR = 'campaign_id'\nexport const GROUP_BY_COUNTRY_STR = 'country'\nexport const GROUP_BY_PLATFORM_STR = 'platform'\nexport const GROUP_BY_SITE_STR = 'site_id'\nexport const GROUP_BY_SK_CAMPAIGN_STR = 'sk_campaign_id'\nexport const GROUP_BY_TAG_STR = 'tag_id'\n\nexport const BASE_SK_GROUP_BY_OPTS = [GROUP_BY_CHANNEL_STR, GROUP_BY_CAMPAIGN_STR]\n\nexport const TARGETING_TAG_DRILLDOWN_RULES = [\n GROUP_BY_TAG_STR,\n GROUP_BY_CHANNEL_STR,\n GROUP_BY_APP_STR,\n GROUP_BY_CAMPAIGN_STR\n]\n\nexport const DEFAULT_UA_GROUPED_SUMMARY_TABLE_DRILLDOWN_RULES = {\n ad_network_id: [\n GROUP_BY_CHANNEL_STR,\n GROUP_BY_APP_STR,\n GROUP_BY_CAMPAIGN_STR,\n GROUP_BY_SITE_STR\n ],\n app_id: [\n GROUP_BY_APP_STR,\n GROUP_BY_CHANNEL_STR,\n GROUP_BY_CAMPAIGN_STR,\n GROUP_BY_SITE_STR\n ],\n campaign_id: [\n GROUP_BY_CAMPAIGN_STR,\n GROUP_BY_APP_STR,\n GROUP_BY_CHANNEL_STR,\n GROUP_BY_SITE_STR\n ],\n country: [\n GROUP_BY_COUNTRY_STR,\n GROUP_BY_CHANNEL_STR,\n GROUP_BY_APP_STR,\n GROUP_BY_CAMPAIGN_STR\n ],\n platform: [\n GROUP_BY_PLATFORM_STR,\n GROUP_BY_CHANNEL_STR,\n GROUP_BY_APP_STR,\n GROUP_BY_CAMPAIGN_STR\n ],\n site_id: [\n GROUP_BY_SITE_STR,\n GROUP_BY_CHANNEL_STR,\n GROUP_BY_APP_STR,\n GROUP_BY_CAMPAIGN_STR\n ]\n}\n\nexport const CUSTOM_UA_GROUPED_SUMMARY_TABLE_DRILLDOWN_RULES = {\n ad_network_id: [\n GROUP_BY_CHANNEL_STR,\n GROUP_BY_APP_STR,\n GROUP_BY_CAMPAIGN_STR\n ],\n app_id: [\n GROUP_BY_APP_STR,\n GROUP_BY_CHANNEL_STR,\n GROUP_BY_CAMPAIGN_STR\n ],\n campaign_id: [\n GROUP_BY_CAMPAIGN_STR,\n GROUP_BY_APP_STR,\n GROUP_BY_CHANNEL_STR\n ],\n country: [\n GROUP_BY_COUNTRY_STR,\n GROUP_BY_CHANNEL_STR,\n GROUP_BY_APP_STR,\n GROUP_BY_CAMPAIGN_STR\n ],\n platform: [\n GROUP_BY_PLATFORM_STR,\n GROUP_BY_CHANNEL_STR,\n GROUP_BY_APP_STR,\n GROUP_BY_CAMPAIGN_STR\n ]\n}\n\nexport const DEFAULT_AM_GROUPED_SUMMARY_TABLE_DRILLDOWN_RULES = {\n ad_network_id: [\n GROUP_BY_CHANNEL_STR,\n GROUP_BY_APP_STR,\n GROUP_BY_COUNTRY_STR\n ],\n app_id: [\n GROUP_BY_APP_STR,\n GROUP_BY_CHANNEL_STR,\n GROUP_BY_COUNTRY_STR\n ],\n country: [\n GROUP_BY_COUNTRY_STR,\n GROUP_BY_CHANNEL_STR,\n GROUP_BY_APP_STR\n ]\n}\n\n/*\n TODO: Refactor this override with internal api improvements [TENJIN-14615]\n*/\nexport const DEFAULT_APPLE_SKAN_METRICS = [\n 'appleConversionValueCount',\n 'appleConversionValueAvg'\n]\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport Header from './Header'\nimport Subtitle from './Subtitle'\nimport Title from './Title'\n\nimport styles from './styles.module.scss'\n\nconst Pane = (\n {\n children,\n isCollapsed,\n listClass,\n onClose,\n searchInput,\n subtitle,\n title\n }\n) => (\n
\n
\n {title}\n\n {subtitle && {subtitle}}\n
\n\n {searchInput}\n\n
\n {children}\n
\n
\n)\n\nPane.propTypes = {\n children: PropTypes.node.isRequired,\n isCollapsed: PropTypes.bool.isRequired,\n listClass: PropTypes.string,\n onClose: PropTypes.func.isRequired,\n searchInput: PropTypes.element,\n subtitle: PropTypes.oneOfType([PropTypes.element, PropTypes.string]),\n title: PropTypes.oneOfType([PropTypes.element, PropTypes.string]).isRequired\n}\n\nPane.defaultProps = {\n listClass: null,\n searchInput: null,\n subtitle: null\n}\n\nexport default Pane\n","import { chain } from 'lodash'\n\nexport const buildSelectableMetrics = metricDefinitions =>\n chain(metricDefinitions)\n .filter(metric => metric.components.groupedSummaryTable.isVisible)\n .map(metric => ({\n id: metric.key,\n name: metric.displayName\n }))\n .sortBy('name')\n .value()\n\nexport const buildSelectedMetrics = ({\n metricDefinitions,\n selectedMetricKeys\n}) =>\n selectedMetricKeys.map(metricKey => ({\n id: metricKey,\n name: metricDefinitions[metricKey].displayName\n }))\n\nexport const isMatchedBySearch = ({ metricDefinition, searchText }) => {\n if (searchText.length === 0) return false\n if (metricDefinition === null || metricDefinition === undefined) return false\n\n const searchableMeta = chain([\n metricDefinition.key,\n metricDefinition.displayName,\n metricDefinition.abbreviatedName,\n metricDefinition.keywords,\n metricDefinition.components?.tooltip?.title || ''\n ])\n .uniq()\n .join(' ')\n .trim()\n .toLower()\n .value()\n\n return searchableMeta.includes(searchText.toLowerCase())\n}\n\nexport const sortMetricsAlphabeticallyWithXDay = (a, b) => {\n const nameA = a.name\n const nameB = b.name\n\n const regex = /(\\d+)/\n\n const hasNumberA = regex.test(nameA)\n const hasNumberB = regex.test(nameB)\n\n if (!hasNumberA && !hasNumberB) {\n return nameA.localeCompare(nameB)\n }\n\n if (!hasNumberA) return -1\n if (!hasNumberB) return 1\n\n const strippedNameA = nameA.replace(regex, '').trim()\n const strippedNameB = nameB.replace(regex, '').trim()\n\n const alphabeticalComparison = strippedNameA.localeCompare(strippedNameB)\n\n if (alphabeticalComparison !== 0) {\n return alphabeticalComparison\n }\n\n const matchA = nameA.match(regex)\n const matchB = nameB.match(regex)\n\n const numA = matchA ? parseInt(matchA[1], 10) : Infinity\n const numB = matchB ? parseInt(matchB[1], 10) : Infinity\n\n return numA - numB\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"controlBackgroundColor\":\"#fff\",\"controlBgColor\":\"#dee9f4\",\"controlBorder\":\"1px solid #dee9f4\",\"controlBorderRadius\":\"4px\",\"controlFontFamily\":\"\\\"Montserrat\\\",\\\"Lato\\\",\\\"Helvetica Neue\\\",Helvetica,Sans-serif\",\"controlFontSize\":\"14px\",\"controlFontWeight\":\"600\",\"controlLineHeight\":\"40px\",\"dropdownIndicatorColor\":\"#265479\",\"menuListScrollbarBackgroundColor\":\"#babdbf\",\"menuListScrollbarBorder\":\"2px solid #fff\",\"menuListScrollbarBorderRadius\":\"8px\",\"menuListScrollbarDimensions\":\"11px\",\"menuZIndex\":\"8000\",\"placeholderColor\":\"#265479\",\"placeholderFontWeight\":\"300\",\"placeholderPadding\":\"0 15px\",\"singleValueColor\":\"#265479\",\"singleValueFontWeight\":\"300\",\"singleValuePadding\":\"0 15px\",\"valueContainerPadding\":\"15px\",\"google-oauth-button\":\"styles-module__google-oauth-button___13Eq7\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1cIK4\",\"btn-toggle\":\"styles-module__btn-toggle___1cvvn\",\"handle\":\"styles-module__handle___C0MFu\",\"active\":\"styles-module__active___2n-78\",\"focus\":\"styles-module__focus___2evfU\",\"card-panel\":\"styles-module__card-panel___PZNeC\",\"panel-heading\":\"styles-module__panel-heading___2iomH\",\"panel-title\":\"styles-module__panel-title___1lN5X\",\"panel-subtitle\":\"styles-module__panel-subtitle___Yit9k\",\"panel-body\":\"styles-module__panel-body___3a6iM\",\"option\":\"styles-module__option___3B5Xg\",\"icon\":\"styles-module__icon___3qR9N\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___2n2RQ\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___3O_QN\",\"btn-toggle\":\"styles-module__btn-toggle___1IRqM\",\"handle\":\"styles-module__handle___B-lC4\",\"active\":\"styles-module__active___BGSYN\",\"focus\":\"styles-module__focus___2Tc1m\",\"card-panel\":\"styles-module__card-panel___2PaYy\",\"panel-heading\":\"styles-module__panel-heading___1J-mo\",\"panel-title\":\"styles-module__panel-title___3HcaV\",\"panel-subtitle\":\"styles-module__panel-subtitle___1YntI\",\"panel-body\":\"styles-module__panel-body___3h1jY\",\"campaignDetailsMergeInfo\":\"styles-module__campaignDetailsMergeInfo___PrhDL\",\"panelHeader\":\"styles-module__panelHeader___98GxT\",\"heading\":\"styles-module__heading___sMKuo\",\"date\":\"styles-module__date___2iMpf\",\"campaignsColumns\":\"styles-module__campaignsColumns___1TSKT\",\"trackedCampaigns\":\"styles-module__trackedCampaigns___133ea\",\"reportedCampaigns\":\"styles-module__reportedCampaigns___1S7ay\",\"campaignType\":\"styles-module__campaignType___lTmYg\",\"campaignsRow\":\"styles-module__campaignsRow___1qUTg\",\"header\":\"styles-module__header___2jH29\",\"trackedInstalls\":\"styles-module__trackedInstalls___2LVMG\",\"spend\":\"styles-module__spend___MbAO0\",\"reportedInstalls\":\"styles-module__reportedInstalls___K-_8o\",\"name\":\"styles-module__name___BtOjB\",\"trackedCampaignInfo\":\"styles-module__trackedCampaignInfo___3iP15\"};","import classNames from 'classnames'\nimport { isArray, isEmpty, isNull, uniq } from 'lodash'\nimport PropTypes from 'prop-types'\nimport { useEffect, useRef, useState } from 'react'\nimport { useQuery } from 'react-query'\nimport { useLocation } from 'react-router-dom'\n\nimport {\n fetchReportingData,\n getGroupedQueryFunctionByReportPage,\n saveTableNameColumnMode,\n saveTableViewMode\n} from '../../api/reporting'\nimport { transformQueryParamsForV4Api } from '../../api/reporting/helpers'\nimport { useCurrentUserState } from '../../contexts/CurrentUser'\nimport { useFeatureFlagsState } from '../../contexts/FeatureFlags'\nimport {\n useGroupedSummaryTableSettingsDispatch,\n useGroupedSummaryTableSettingsState\n} from '../../contexts/GroupedSummaryTableSettings'\nimport { useMetricDefinitionsState } from '../../contexts/MetricDefinitions'\nimport {\n getGroupedSummaryTableOnboardingStatus,\n useOnboardingStatusState\n} from '../../contexts/OnboardingStatus'\nimport {\n buildQueryParams,\n getNameHeaderSettingsByReportPage,\n getReportPageFromPathname,\n getReportTypeByReportPage,\n useReportingFiltersState\n} from '../../contexts/ReportingFilters'\nimport usePrevious from '../../hooks/usePrevious'\nimport useRefSize from '../../hooks/useRefSize'\nimport { isPresent } from '../../utils/helpers'\nimport { fetchMockAppLevelDataByDateForMetrics } from '../../utils/mock'\nimport AwaitingDataOverlay from '../AwaitingDataOverlay'\nimport ChartFailed from '../ChartFailed'\nimport NoDataOverlay from '../NoDataOverlay'\nimport OnboardingActionOverlay from '../OnboardingActionOverlay'\nimport TableContainer from '../Table/Container'\nimport ColumnEditorPane from './ColumnEditorPane'\nimport { DEFAULT_QUERY_OPTIONS } from './constants'\nimport GroupingTitle from './GroupingTitle'\nimport { isCompatibleWithUAMetrics, recursivelyUpdateTable } from './helpers'\nimport styles from './styles.module.scss'\nimport Table from './Table'\nimport TableActions from './TableActions'\n\nconst getNextGroupBy = ({ depth, rules }) => rules[depth + 1]\n\nconst GroupedSummaryTable = ({ className }) => {\n const { metricDefinitions } = useMetricDefinitionsState()\n const location = useLocation()\n const onboardingStatus = useOnboardingStatusState()\n const tableSettingsDispatch = useGroupedSummaryTableSettingsDispatch()\n const reportingFilters = useReportingFiltersState()\n const { featureFlags } = useFeatureFlagsState()\n\n const reportPage = getReportPageFromPathname(location.pathname)\n\n const {\n metricColumnsByReport,\n rules,\n viewMode: tableViewMode,\n nameColumnMode: tableNameColumnMode\n } = useGroupedSummaryTableSettingsState()\n\n const [tableData, setTableData] = useState(null)\n const [tableRowsLoadingById, setTableRowsLoadingById] = useState({})\n const [tableDataCache, setTableDataCache] = useState({})\n const [globalFilter, setGlobalFilter] = useState('')\n\n const changeTableViewMode = isCompact => {\n tableSettingsDispatch({\n payload: { viewMode: isCompact ? 'compact' : 'default' },\n type: 'CHANGE_VIEW_MODE'\n })\n }\n\n const collapseAll = () => {\n tableSettingsDispatch({\n payload: {},\n type: 'COLLAPSE_ALL'\n })\n }\n\n const setTableDataInSettings = fetchedTableData => {\n tableSettingsDispatch({\n payload: { tableData: fetchedTableData },\n type: 'SET_TABLE_DATA'\n })\n }\n\n const setIsFetchingTableData = isFetchingTableData => {\n tableSettingsDispatch({\n payload: { isFetchingTableData },\n type: 'SET_IS_FETCHING_TABLE_DATA'\n })\n }\n\n const toggleNameExtended = () => {\n tableSettingsDispatch({\n payload: {},\n type: 'TOGGLE_NAME_EXTENDED'\n })\n }\n\n const prevTableViewMode = usePrevious(tableViewMode)\n const prevTableNameColumnMode = usePrevious(tableNameColumnMode)\n\n useEffect(() => {\n const hasTableViewModeChanges =\n prevTableViewMode && tableViewMode !== prevTableViewMode\n\n if (hasTableViewModeChanges) {\n saveTableViewMode(tableViewMode)\n }\n }, [prevTableViewMode, tableViewMode])\n\n useEffect(() => {\n const hasTableNameColumnModeChanges =\n prevTableNameColumnMode && tableNameColumnMode !== prevTableNameColumnMode\n\n if (hasTableNameColumnModeChanges) {\n saveTableNameColumnMode(tableNameColumnMode)\n }\n }, [prevTableNameColumnMode, tableNameColumnMode])\n\n const selectedMetricDefinitions = metricColumnsByReport[reportPage].map(\n metric => metricDefinitions[metric]\n )\n\n const { isMocking, metricDefinitionForOverlay } =\n getGroupedSummaryTableOnboardingStatus({\n onboardingStatus,\n selectedMetricDefinitions\n })\n\n const { currentUser } = useCurrentUserState()\n\n let queryParamsForFetchingData = {\n ...buildQueryParams({ currentUser, location, reportingFilters }),\n metrics: metricColumnsByReport[reportPage]\n }\n\n if (featureFlags.includes('reporting_v4')) {\n queryParamsForFetchingData = transformQueryParamsForV4Api({\n isSummary: true,\n queryParams: queryParamsForFetchingData\n })\n }\n\n const handleClickRow = async ({ depth, id, original: rowData }) => {\n if (rowData.isLastQueryInSequence) {\n return\n }\n\n if (tableDataCache[id]) {\n setTableData(currentTableData => {\n if (isPresent(currentTableData)) {\n return recursivelyUpdateTable({\n childData: tableDataCache[id],\n id,\n tableData: currentTableData\n })\n }\n\n return []\n })\n\n return\n }\n\n setTableRowsLoadingById(currentTableRowsLoadingById => ({\n ...currentTableRowsLoadingById,\n [id]: true\n }))\n\n let fetchChildData = isMocking\n ? fetchMockAppLevelDataByDateForMetrics\n : getGroupedQueryFunctionByReportPage(reportPage)\n\n if (featureFlags.includes('reporting_v4')) {\n fetchChildData = fetchReportingData\n }\n\n let queryParams = {\n ...queryParamsForFetchingData,\n ...rowData.childQueryIds,\n groupBy: getNextGroupBy({\n depth,\n rules\n })\n }\n\n if (featureFlags.includes('reporting_v4')) {\n queryParams = transformQueryParamsForV4Api({\n isSummary: true,\n queryParams\n })\n }\n\n const hasRawQueryMetrics = rowData.rawQueryMetrics\n\n if (hasRawQueryMetrics) {\n queryParams.metrics = uniq([\n ...queryParams.metrics,\n ...rowData.rawQueryMetrics\n ])\n }\n\n try {\n let childData\n\n if (featureFlags.includes('reporting_v4')) {\n const isLastQueryInSequence = rules.length === depth + 2\n\n childData = await fetchChildData({\n context: {\n apiVersion: 4,\n isCompatibleWithUAMetrics: isCompatibleWithUAMetrics(\n queryParams.dimensions\n ),\n isLastQueryInSequence,\n parentQueryIds: rowData.childQueryIds,\n queryParams,\n reportType: getReportTypeByReportPage(reportPage),\n rules\n }\n })\n } else {\n childData = await fetchChildData({\n isCompatibleWithUAMetrics: isCompatibleWithUAMetrics(\n queryParams.groupBy\n ),\n isLastQueryInSequence: rules.length === depth + 2,\n params: queryParams,\n parentQueryIds: rowData.childQueryIds,\n rules\n })\n }\n\n setTableRowsLoadingById(currentTableRowsLoadingById => ({\n ...currentTableRowsLoadingById,\n [id]: false\n }))\n\n setTableDataCache(currentTableDataCache => ({\n ...currentTableDataCache,\n [id]: childData\n }))\n\n setTableData(currentTableData => {\n if (isPresent(currentTableData)) {\n return recursivelyUpdateTable({\n childData,\n id,\n tableData: currentTableData\n })\n }\n\n return []\n })\n } catch (error) {\n setTableRowsLoadingById(currentTableRowsLoadingById => ({\n ...currentTableRowsLoadingById,\n [id]: false\n }))\n }\n }\n\n const queryKey = JSON.stringify(queryParamsForFetchingData)\n\n let fetchParentData = isMocking\n ? fetchMockAppLevelDataByDateForMetrics\n : getGroupedQueryFunctionByReportPage(reportPage)\n\n if (featureFlags.includes('reporting_v4')) {\n fetchParentData = fetchReportingData\n }\n\n const {\n data: groupedSummaryData,\n isError,\n isFetching,\n isLoading,\n refetch,\n error\n } = useQuery(\n ['GroupedSummaryTableData', queryKey, location.search],\n () => {\n if (featureFlags.includes('reporting_v4')) {\n return fetchParentData({\n context: {\n apiVersion: 4,\n isCompatibleWithUAMetrics: isCompatibleWithUAMetrics(\n queryParamsForFetchingData.dimensions\n ),\n queryParams: queryParamsForFetchingData,\n reportType: getReportTypeByReportPage(reportPage),\n rules\n }\n })\n }\n\n return fetchParentData({\n isCompatibleWithUAMetrics: isCompatibleWithUAMetrics(\n queryParamsForFetchingData.groupBy\n ),\n params: queryParamsForFetchingData,\n rules\n })\n },\n DEFAULT_QUERY_OPTIONS\n )\n\n const isPullingData = isLoading || isFetching || isNull(tableData)\n\n useEffect(() => {\n if (isLoading || isFetching) {\n setIsFetchingTableData(isLoading || isFetching)\n setTableDataCache({})\n return\n }\n\n if (isError) {\n window.Honeybadger.notify(error)\n setTableData([])\n setTableDataInSettings([])\n } else {\n setTableData(groupedSummaryData)\n setTableDataInSettings(groupedSummaryData)\n collapseAll()\n }\n\n setIsFetchingTableData(false)\n }, [groupedSummaryData, isError, isFetching, isLoading])\n\n const { hasRecentlyReceivedFirstEvents } = onboardingStatus\n\n const hasNoDataToDisplay =\n !isMocking &&\n !isError &&\n !isPullingData &&\n !hasRecentlyReceivedFirstEvents &&\n isArray(tableData) &&\n isEmpty(tableData)\n\n const isAwaitingDataToBeCalculated =\n !isMocking &&\n !isError &&\n !isPullingData &&\n hasRecentlyReceivedFirstEvents &&\n isEmpty(tableData)\n\n const isCompactViewMode = tableViewMode === 'compact'\n const isNameExtended = tableNameColumnMode === 'extended'\n\n const { isAllExpandable, isUsingGroupByForNameHeader } =\n getNameHeaderSettingsByReportPage(reportPage)\n\n const shouldHaveNoHorizontalScroll =\n hasNoDataToDisplay || isAwaitingDataToBeCalculated || isCompactViewMode\n\n const tableContainerClassName = classNames(styles.tableContainer, {\n [styles.tableContainerNoXScroll]: shouldHaveNoHorizontalScroll,\n [styles.compactView]: isCompactViewMode\n })\n\n const tableContainerRef = useRef(null)\n const tableContainerSize = useRefSize(tableContainerRef)\n\n return (\n
\n
\n
\n \n\n \n
\n\n \n \n\n {hasNoDataToDisplay && }\n\n {isAwaitingDataToBeCalculated && (\n \n )}\n \n
\n\n {isMocking && (\n \n )}\n\n {isError && }\n\n \n
\n )\n}\n\nGroupedSummaryTable.propTypes = {\n className: PropTypes.oneOfType([PropTypes.array, PropTypes.string])\n}\n\nGroupedSummaryTable.defaultProps = {\n className: ''\n}\n\nexport default GroupedSummaryTable\n","import { omit } from 'lodash'\nimport { useHistory, useLocation } from 'react-router-dom'\nimport Select from 'react-select'\n\nimport { useGroupedSummaryTableSettingsDispatch } from '../../../../contexts/GroupedSummaryTableSettings'\nimport { useMetricDefinitionsDispatch } from '../../../../contexts/MetricDefinitions'\nimport {\n getGroupByFromQuery,\n getUrlSearchParams\n} from '../../../../contexts/ReportingFilters'\nimport {\n CREATIVE_GROUP_BY_ID_STR,\n CREATIVES_REPORT_STR,\n CUSTOM_REPORT_STR,\n SITE_ID_GROUP_BY_ID_STR\n} from '../../../../contexts/ReportingFilters/constants'\nimport { userAcquisitionReportObject } from '../../../../utils/customPropTypes'\nimport {\n getLocalDashboardStorage,\n isPresent,\n stripTrailingSlash\n} from '../../../../utils/helpers'\nimport { SUCCESS_COLORS } from '../../../../utils/react-select'\nimport ReportingPageHeader from '../../ReportingPage/Header'\nimport { REPORTS } from '../constants'\nimport { MAX_MENU_HEIGHT } from './constants'\nimport stylesObj from './styles.module.scss'\n\nconst customStyles = {\n container: styles => ({ ...styles, cursor: 'pointer' }),\n control: () => ({\n display: 'flex',\n flexGrow: 0,\n flexShrink: 1,\n fontFamily: 'Montserrat',\n fontSize: 24,\n fontWeight: 600,\n lineHeight: stylesObj.controlLineHeight\n }),\n dropdownIndicator: styles => ({\n ...styles,\n ':hover': {\n ...styles[':hover'],\n color: SUCCESS_COLORS.base\n },\n color: SUCCESS_COLORS.base,\n padding: 0\n }),\n indicatorSeparator: styles => ({\n ...styles,\n display: 'none',\n width: 0\n }),\n menu: styles => ({\n ...styles,\n whiteSpace: 'nowrap',\n width: 'auto',\n zIndex: stylesObj.menuZIndex\n }),\n singleValue: styles => ({\n ...omit(styles, ['maxWidth', 'position', 'transform']),\n color: SUCCESS_COLORS.base,\n margin: 0\n }),\n valueContainer: styles => ({ ...styles, padding: 0 })\n}\n\nconst getUrlForHistory = ({ currentReport, location, newReport }) => {\n const existingGroupBy =\n currentReport.value === CREATIVES_REPORT_STR &&\n getLocalDashboardStorage()[`${newReport.value}:groupBy`]\n\n const splitPath = stripTrailingSlash(location.pathname).split('/')\n\n const currentlyNotOverviewReport = currentReport.path !== '/'\n if (currentlyNotOverviewReport) {\n splitPath.pop()\n }\n\n const action = newReport.path === '/' ? '' : newReport.path\n\n let url = `${splitPath.join('/')}${action}`\n\n if (isPresent(location.search)) {\n const search = getUrlSearchParams(location.search)\n\n if (\n currentReport.value === CUSTOM_REPORT_STR &&\n isPresent(search.get('event_name'))\n ) {\n search.delete('event_name')\n }\n\n if (existingGroupBy) {\n search.set('group_by', existingGroupBy)\n }\n\n const isInvalidCustomReportGroupBy =\n newReport.value === CUSTOM_REPORT_STR &&\n search.get('group_by') === SITE_ID_GROUP_BY_ID_STR\n const isInvalidCreativesReportGroupBy =\n newReport.value !== CREATIVES_REPORT_STR &&\n search.get('group_by') === CREATIVE_GROUP_BY_ID_STR\n const isInvalidGroupBy =\n isInvalidCustomReportGroupBy || isInvalidCreativesReportGroupBy\n\n if (isInvalidGroupBy) {\n search.delete('group_by')\n }\n\n url = `${url}?${search.toString()}`\n }\n\n return url\n}\n\nconst ReportsSelector = ({ report }) => {\n const history = useHistory()\n const location = useLocation()\n\n const metricDefinitionsDispatch = useMetricDefinitionsDispatch()\n const groupedSummaryTableSettingsDispatch =\n useGroupedSummaryTableSettingsDispatch()\n\n const handleChange = newReport => {\n if (newReport.value !== report.value) {\n history.push(\n getUrlForHistory({ currentReport: report, location, newReport })\n )\n\n const reportPage = newReport.value\n metricDefinitionsDispatch({\n payload: { reportPage },\n type: 'CHANGE_REPORT_PAGE'\n })\n\n const query = getUrlSearchParams(location.search)\n const groupBy = getGroupByFromQuery({ query, reportPage })\n\n groupedSummaryTableSettingsDispatch({\n payload: { groupBy, reportPage },\n type: 'UPDATE_RULES'\n })\n }\n }\n\n return (\n \n ({\n ...theme,\n colors: {\n ...theme.colors,\n primary: SUCCESS_COLORS.base,\n primary25: SUCCESS_COLORS['25'],\n primary50: SUCCESS_COLORS['50'],\n primary75: SUCCESS_COLORS['75']\n }\n })}\n />\n \n )\n}\n\nReportsSelector.propTypes = {\n report: userAcquisitionReportObject.isRequired\n}\n\nexport default ReportsSelector\n","import classNames from 'classnames'\nimport PropTypes from 'prop-types'\nimport { Fragment } from 'react'\n\nimport { overlayOpaquenessTypes } from '../../utils/customPropTypes'\nimport FragmentWrapper from '../FragmentWrapper'\nimport styles from './styles.module.scss'\n\nconst Overlay = ({\n className,\n containerClassName,\n children,\n overlayContent\n}) => (\n
\n {children}\n
\n {overlayContent && (\n
\n
{overlayContent}
\n
\n )}\n
\n)\n\nconst CardPanel = ({\n actions,\n children,\n className,\n footer,\n overlayContainerClassName,\n overlayContent,\n overlayOpaqueness,\n panelBodyClassName,\n title\n}) => {\n const Wrapper = overlayOpaqueness !== 'none' ? Overlay : FragmentWrapper\n\n return (\n
\n
\n
{title}
\n
{actions}
\n
\n
\n \n
\n {children}\n
\n \n {footer && (\n \n
\n
{footer}
\n
\n )}\n
\n )\n}\n\nOverlay.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n containerClassName: PropTypes.string,\n overlayContent: PropTypes.node\n}\n\nOverlay.defaultProps = {\n className: '',\n containerClassName: '',\n overlayContent: null\n}\n\nCardPanel.propTypes = {\n actions: PropTypes.node,\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n footer: PropTypes.node,\n overlayContainerClassName: PropTypes.string,\n overlayContent: PropTypes.node,\n overlayOpaqueness: overlayOpaquenessTypes,\n panelBodyClassName: PropTypes.string,\n title: PropTypes.string.isRequired\n}\n\nCardPanel.defaultProps = {\n actions: null,\n className: '',\n footer: null,\n overlayContainerClassName: '',\n overlayContent: null,\n overlayOpaqueness: 'none',\n panelBodyClassName: ''\n}\n\nexport default CardPanel\n","export const DATE_DISPLAY_FORMAT = 'PP'\nexport const DATE_FORMAT = 'yyyy-MM-dd'\nexport const RANGE_COLORS = ['#0271c3']\n\n// this is a hack for the react-date-range library in order to allow the 'days up to today' input\n// to be empty\n// https://github.com/hypeserver/react-date-range/issues/330\nexport const VOID_END_DATE = 'void'\n\nexport const ONE_YEAR_IN_MILLISECONDS = 365 * 24 * 60 * 60 * 1000\nexport const ONE_DAY_IN_MILLISECONDS = 1000 * 60 * 60 * 24\nexport const ONE_YEAR_IN_DAYS = 365\n","import {\n cloneDeep,\n groupBy,\n isEmpty,\n isString,\n keyBy,\n map,\n pickBy,\n sortBy\n} from 'lodash'\nimport numeral from 'numeral'\n\nimport { parseStrToTime } from '../components/ReportingSidebar/DateFilter/helpers'\nimport { isBlank, isPresent } from './helpers'\n\nexport const CHART_COLORS = [\n '#0271c3', // navy blue (primary)\n '#05b7ac', // cyan (success)\n '#ee7733', // orange\n '#ee99aa', // light red\n '#117733', // green\n '#997700', // dark yellow\n '#ee3377', // magenta\n '#882255', // wine\n '#ddcc77', // sand\n '#99ddff' // pale cyan\n]\n\nexport const CONVERSION_VALUE_HISTOGRAM_COLORS = [\n '#2D71BD', // mariner (1st column)\n '#A598B4' // amethyst-smoke (2nd column)\n]\n\nexport const CONVERSION_VALUE_HISTOGRAM_TOOLTIP_BACKGROUND_COLOR = '#28292b'\n\nconst buildContextObject = ({ id, dataPoint }) => {\n /* eslint-disable camelcase */\n const { name, platform, iconUrl } = dataPoint\n\n return {\n id,\n name: isPresent(name) ? name : 'Unavailable',\n ...pickBy({\n iconUrl,\n platform\n })\n }\n /* eslint-enable camelcase */\n}\n\n// the API can return dates in the format of when the granularity is\n// not daily\nconst convertDatetimeToDateStr = datetime => datetime.split(/\\s+/)[0]\n\nconst getXAxisValue = ({ dataPointObj, xAxisType }) => {\n if (xAxisType && xAxisType === 'xday') {\n return dataPointObj.xday\n }\n\n return parseStrToTime(convertDatetimeToDateStr(dataPointObj.date))\n}\n\nconst buildHighchartsDataByMetric = ({ dataPointsList, metricDefinition }) => {\n let hasAllZeroes = true\n\n const highchartsDataList = []\n\n dataPointsList.forEach(dataPointObj => {\n let yValue = dataPointObj[metricDefinition.key]\n\n if (isBlank(yValue)) return\n\n if (isString(yValue)) {\n yValue = numeral(yValue).value()\n }\n\n hasAllZeroes = hasAllZeroes && yValue === 0\n\n highchartsDataList.push({\n x: getXAxisValue({ dataPointObj, xAxisType: metricDefinition.xAxisType }),\n y: yValue\n })\n })\n\n return hasAllZeroes ? null : highchartsDataList\n}\n\nconst sortDesc = ({ data }) =>\n -Math.abs(data.reduce((total, axisData) => total + axisData.y, 0))\n\nexport const transformResponseDataForChart = ({\n metricDefinitions,\n responseDataList\n}) => {\n if (isEmpty(responseDataList)) {\n return {}\n }\n\n const responseObjGroupedById = groupBy(responseDataList, 'id')\n const dataGroupedById = Object.keys(responseObjGroupedById)\n\n /* eslint-disable no-param-reassign */\n return metricDefinitions.reduce((metricAggregate, metricDefinition) => {\n metricAggregate[metricDefinition.key] = dataGroupedById.reduce(\n (dataPointsAggregate, id) => {\n // each object in dataPointsListById has the information to build the context (e.g. app,\n // channel, etc.) for the series, which is why we only need to pass in the first element in\n // the list\n const dataPointsListById = responseObjGroupedById[id]\n const metricDataPoints = buildContextObject({\n dataPoint: dataPointsListById[0],\n id\n })\n\n metricDataPoints.data = buildHighchartsDataByMetric({\n dataPointsList: dataPointsListById,\n metricDefinition\n })\n\n if (isPresent(metricDataPoints.data)) {\n dataPointsAggregate.push(metricDataPoints)\n }\n\n return dataPointsAggregate\n },\n []\n )\n\n metricAggregate[metricDefinition.key] = sortBy(\n metricAggregate[metricDefinition.key],\n sortDesc\n )\n\n return metricAggregate\n }, {})\n /* eslint-enable no-param-reassign */\n}\n\nexport const mergeDataForDrilldownTable = ({ groupedStatsData, statsData }) => {\n if (isEmpty(statsData)) return []\n\n const statsDataByDate = keyBy(cloneDeep(statsData), 'date')\n\n if (isPresent(groupedStatsData)) {\n groupedStatsData.forEach(itemByDate => {\n const dateKey = convertDatetimeToDateStr(itemByDate.date)\n\n if (statsDataByDate[dateKey]) {\n statsDataByDate[dateKey].subRows =\n statsDataByDate[dateKey].subRows || []\n statsDataByDate[dateKey].subRows.push(itemByDate)\n }\n })\n }\n\n return Object.values(statsDataByDate).reverse()\n}\n\nconst filterFromTabsListByXAxisType = ({ tabsList, xAxisType }) =>\n tabsList.filter(tab => tab.chartProps.xAxisType === xAxisType)\n\nexport const getXDayMetricKeysFromTabsList = tabsList =>\n map(\n filterFromTabsListByXAxisType({ tabsList, xAxisType: 'xday' }),\n 'metricDefinitionKey'\n )\n\nexport const getDatetimeMetricKeysFromTabsList = tabsList =>\n map(\n filterFromTabsListByXAxisType({ tabsList, xAxisType: 'datetime' }),\n 'metricDefinitionKey'\n )\n","import { format, isAfter, parseISO } from 'date-fns'\nimport { isEmpty } from 'lodash'\nimport { post, put } from '../../../../../../utils/request'\nimport { deepSnakeKeys } from '../../../../../../utils/helpers'\nimport { DATE_FORMAT } from './constants'\n\nexport const getDecimalByPercent = decimal => `${Math.round(decimal * 100)}%`\n\n// eslint-disable-next-line import/prefer-default-export\nexport const makeRequest = async ({ baseURL, data, record }) => {\n const isNewRecord = isEmpty(record)\n const request = isNewRecord ? post : put\n const url = isNewRecord ? baseURL : `${baseURL}/${record.id}`\n\n return request(url, deepSnakeKeys(data))\n}\n\nexport const parseDeductionRecord = response => (\n {\n ...response.data,\n deduction: Number(response.data.deduction)\n }\n)\n\nexport const todayDateString = () => format(new Date(), DATE_FORMAT)\n\nexport const hasStarted = startDate => {\n const today = parseISO(todayDateString())\n const start = parseISO(startDate)\n return !isAfter(start, today)\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"controlBgColor\":\"#dee9f4\",\"controlBorderRadius\":\"6px\",\"controlLineHeight\":\"40px\",\"controlFontFamily\":\"\\\"Montserrat\\\",\\\"Lato\\\",\\\"Helvetica Neue\\\",Helvetica,Sans-serif\",\"controlFontSize\":\"14px\",\"controlFontWeight\":\"600\",\"labelledControlLineHeight\":\"30px\",\"labelledControlPaddingTop\":\"15px\",\"labelledControlColor\":\"#265479\",\"menuZIndex\":\"8000\",\"valueContainerPadding\":\"2px 15px\",\"placeholderFontWeight\":\"300\",\"placeholderColor\":\"#265479\",\"google-oauth-button\":\"styles-module__google-oauth-button___3A0gF\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___2fPdE\",\"btn-toggle\":\"styles-module__btn-toggle___2_jmO\",\"handle\":\"styles-module__handle___mrz5Y\",\"active\":\"styles-module__active___1iE1j\",\"focus\":\"styles-module__focus___1Gsp8\",\"card-panel\":\"styles-module__card-panel___GN3hj\",\"panel-heading\":\"styles-module__panel-heading___1Op51\",\"panel-title\":\"styles-module__panel-title___3k8ie\",\"panel-subtitle\":\"styles-module__panel-subtitle___Jh4n1\",\"panel-body\":\"styles-module__panel-body___2kKT-\",\"label\":\"styles-module__label___2bg2A\",\"option\":\"styles-module__option___1CbKo\",\"icon\":\"styles-module__icon___2rp0o\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"controlBackgroundColor\":\"#fff\",\"controlBgColor\":\"#dee9f4\",\"controlBorder\":\"1px solid #dee9f4\",\"controlBorderRadius\":\"4px\",\"controlDisabledBackgroundColor\":\"#eee\",\"controlFontFamily\":\"\\\"Montserrat\\\",\\\"Lato\\\",\\\"Helvetica Neue\\\",Helvetica,Sans-serif\",\"controlFontSize\":\"14px\",\"controlFontWeight\":\"600\",\"controlLineHeight\":\"40px\",\"dropdownIndicatorColor\":\"#265479\",\"eventOptionsPopupOffsetX\":\"132px\",\"eventOptionsPopupOffsetY\":\"10px\",\"menuZIndex\":\"8000\",\"placeholderColor\":\"#265479\",\"placeholderFontWeight\":\"300\",\"placeholderPadding\":\"0 15px\",\"singleValueColor\":\"#265479\",\"singleValueFontWeight\":\"300\",\"singleValuePadding\":\"0 15px\",\"skeletonHeight\":\"50px\",\"skeletonWidth\":\"100%\",\"userFilterInputWidth\":\"200px\",\"valueContainerPadding\":\"15px\",\"google-oauth-button\":\"styles-module__google-oauth-button___eTX8p\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1mXcE\",\"btn-toggle\":\"styles-module__btn-toggle___3v4IF\",\"handle\":\"styles-module__handle___Ie0BT\",\"active\":\"styles-module__active___3nwP6\",\"focus\":\"styles-module__focus___1Z9oF\",\"card-panel\":\"styles-module__card-panel___hwFdB\",\"panel-heading\":\"styles-module__panel-heading___2DVcG\",\"panel-title\":\"styles-module__panel-title___3h6wx\",\"panel-subtitle\":\"styles-module__panel-subtitle___glTeq\",\"panel-body\":\"styles-module__panel-body___2qKWU\",\"errorMessage\":\"styles-module__errorMessage___3gjUp\",\"header\":\"styles-module__header____riAD\",\"row\":\"styles-module__row___pdGLP\",\"cell\":\"styles-module__cell___25Ics\",\"status\":\"styles-module__status___2bGGe\",\"name\":\"styles-module__name___1DB3w\",\"event\":\"styles-module__event___3YJFV\",\"addEventsButton\":\"styles-module__addEventsButton___i9Vcl\"};","import PropTypes from 'prop-types'\n\nimport styles from './styles.module.scss'\n\nconst Section = ({ children }) => (\n
\n {children}\n
\n)\n\nSection.propTypes = {\n children: PropTypes.node.isRequired\n}\n\nexport default Section\n","import PropTypes from 'prop-types'\n\nimport styles from './styles.module.scss'\n\nconst SectionContent = ({ children }) => (\n
\n {children}\n
\n)\n\nSectionContent.propTypes = {\n children: PropTypes.node.isRequired\n}\n\nexport default SectionContent\n","import PropTypes from 'prop-types'\n\nimport styles from './styles.module.scss'\n\nconst SectionHeader = ({ children }) => (\n
\n {children}\n
\n)\n\nSectionHeader.propTypes = {\n children: PropTypes.node.isRequired\n}\n\nexport default SectionHeader\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___2Z4Yu\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___2rmfY\",\"btn-toggle\":\"styles-module__btn-toggle___1xEJk\",\"handle\":\"styles-module__handle___1nl5K\",\"active\":\"styles-module__active___-9zDS\",\"focus\":\"styles-module__focus___19Ct2\",\"card-panel\":\"styles-module__card-panel___1UUcK\",\"panel-heading\":\"styles-module__panel-heading___1SR8H\",\"panel-title\":\"styles-module__panel-title___1ZYnb\",\"panel-subtitle\":\"styles-module__panel-subtitle___2qhpZ\",\"panel-body\":\"styles-module__panel-body___1xi8_\",\"campaignDetailsMergeTool\":\"styles-module__campaignDetailsMergeTool___oHAQ7\",\"panelHeader\":\"styles-module__panelHeader___23qzn\",\"lookback\":\"styles-module__lookback___3c8qj\",\"dropdown\":\"styles-module__dropdown___TOy6l\",\"headings\":\"styles-module__headings___2UjOY\",\"heading\":\"styles-module__heading___3lSmt\",\"subHeading\":\"styles-module__subHeading___-Qjmh\",\"campaignsColumns\":\"styles-module__campaignsColumns___3gGBr\",\"trackedCampaigns\":\"styles-module__trackedCampaigns___tt3pE\",\"campaignType\":\"styles-module__campaignType___3zMsv\",\"prompt\":\"styles-module__prompt___-0rHv\",\"campaignsRow\":\"styles-module__campaignsRow___2fc92\",\"header\":\"styles-module__header___2lj0A\",\"trackedInstalls\":\"styles-module__trackedInstalls___lf0oC\",\"name\":\"styles-module__name___3GJaF\",\"inputContainer\":\"styles-module__inputContainer___QSs8H\",\"input\":\"styles-module__input___3aAlj\",\"trackedCampaignInfo\":\"styles-module__trackedCampaignInfo___3C7YB\"};","import React from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport FontAwesomeIcon from '../FontAwesomeIcon'\n\nimport { isPresent } from '../../utils/helpers'\nimport { oneOfMetricValueTypes } from '../../utils/customPropTypes'\nimport { formatNumberForDisplay, isBlankValue } from './helpers'\nimport { displaySettingsByValueType } from './constants'\n\nimport styles from './styles.module.scss'\n\nconst ReportingDataMetricValueDisplay = ({ className, iconClassName, value, valueType }) => {\n if (isBlankValue(value)) {\n return (\n \n \n \n )\n }\n\n const displaySettings = displaySettingsByValueType[valueType] || {}\n\n return (\n \n {isPresent(displaySettings.prependWith) && displaySettings.prependWith}\n {formatNumberForDisplay({ number: value, ...displaySettings })}\n {isPresent(displaySettings.postfixWith) && displaySettings.postfixWith}\n \n )\n}\n\nReportingDataMetricValueDisplay.propTypes = {\n className: PropTypes.string,\n iconClassName: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n valueType: oneOfMetricValueTypes\n}\n\nReportingDataMetricValueDisplay.defaultProps = {\n className: null,\n iconClassName: null,\n value: '',\n valueType: 'number'\n}\n\nexport default ReportingDataMetricValueDisplay\n","import {\n clamp, clone, isEmpty, isNaN as _isNaN, isNull, isNumber, isString, isUndefined\n} from 'lodash'\nimport numeral from 'numeral'\n\nimport {\n MIN_NUMBER_OF_DIGITS,\n MAX_NUMBER_OF_DIGITS\n} from './constants'\n\nexport const isBlankValue = value => (\n isNull(value)\n || isUndefined(value)\n || (isNumber(value) && value === 0)\n || (isString(value) && isEmpty(value))\n)\n\n// TODO: Discuss & Refactor\n/* istanbul ignore next */\nexport const formatNumberForDisplay = ({\n number: numberProp,\n numberOfDigits,\n shouldDropTrailingZeroes = false\n}) => {\n const dsep = '.'\n const tsep = ','\n\n if (_isNaN(numberProp) || isNull(numberProp) || isUndefined(numberProp)) {\n return ''\n }\n\n let number = clone(numberProp)\n\n if (isString(numberProp)) {\n number = numeral(number).value()\n }\n\n // nicely rounds numbers down to the millionth (micro 10^-6) since customers expect certain\n // currency fields to be fractional\n // 10.45423232 -> 10.45\n // 0.009345 -> 0.0093\n // 0.000375 -> 0.00038\n // 0.00000156 -> 0.0000016\n if (number < 0.01 && number > 0.000001) {\n number = number.toPrecision(\n clamp(numberOfDigits, MIN_NUMBER_OF_DIGITS, MAX_NUMBER_OF_DIGITS)\n )\n } else {\n // What is the ~~ operator?\n // https://stackoverflow.com/a/5971668\n number = number.toFixed(~~numberOfDigits) // eslint-disable-line no-bitwise\n }\n\n const parts = number.split('.')\n const fnums = parts[0]\n let decimals = parts[1] ? `${(dsep || '.')}${parts[1]}` : ''\n\n if (shouldDropTrailingZeroes) {\n decimals = decimals.replace(/\\.?0+$/, '')\n }\n\n return `${fnums.replace(/(\\d)(?=(?:\\d{3})+$)/g, `$1${tsep}`)}${decimals}`\n}\n","import { isUndefined, includes } from 'lodash'\n\nimport { isUnavailable } from '../../utils/helpers'\n\nimport { OVERLAP_GROUP_BY_IDS } from './constants'\n\nexport const insertIntoRow = ({ existingRows, id, subRowsToInsert }) => (\n existingRows.map((row, index) => {\n const isMatchedRowWithoutSubRows = index === Number(id) && !row.subRows\n\n if (isMatchedRowWithoutSubRows) {\n return {\n ...row,\n subRows: subRowsToInsert\n }\n }\n\n return row\n })\n)\n\nexport const recurseIntoSubRows = ({\n existingRows,\n id,\n path,\n subRowsToInsert\n}) => (\n existingRows.map((row, index) => {\n const isMatchedRowWithSubRows = index === Number(id) && row.subRows\n\n if (isMatchedRowWithSubRows) {\n const [, ...updatedPath] = path\n\n return {\n ...row,\n // eslint-disable-next-line no-use-before-define\n subRows: insertIntoTable({\n existingRows: row.subRows,\n path: updatedPath,\n subRowsToInsert\n })\n }\n }\n\n return row\n })\n)\n\nexport const insertIntoTable = ({ existingRows, path, subRowsToInsert }) => {\n const id = path[0]\n const hasNoSubRows = path.length === 1\n\n if (hasNoSubRows) {\n return insertIntoRow({\n existingRows,\n id,\n subRowsToInsert\n })\n }\n\n return recurseIntoSubRows({\n existingRows,\n id,\n path,\n subRowsToInsert\n })\n}\n\nexport const recursivelyUpdateTable = ({ childData, id, tableData }) => (\n insertIntoTable({\n existingRows: tableData,\n path: id.split('.'),\n subRowsToInsert: childData\n })\n)\n\nconst recursivelyBuildFilterKeyForSubRows = rows => {\n if (rows) {\n const filterKey = rows.map(\n row => `${row.original.name}${recursivelyBuildFilterKeyForSubRows(row.subRows)}`\n ).join('')\n\n return filterKey\n }\n\n return ''\n}\n\nexport const customGlobalFilter = (rows, columns, filterValue) => (\n rows.filter(row => {\n const filterKeyForSubrows = recursivelyBuildFilterKeyForSubRows(row.subRows)\n const filterKey = `${row.original.name}${filterKeyForSubrows}`\n\n if (isUndefined(filterKey)) {\n return true\n }\n\n const filterKeyIncludesFilterValue = String(filterKey)\n .toLowerCase()\n .includes(String(filterValue).toLowerCase())\n\n return filterKeyIncludesFilterValue\n })\n)\n\nexport const sortRows = (rowA, rowB, columnId, desc) => {\n if (isUnavailable(rowA.original.name)) {\n return desc ? -1 : 1\n }\n\n return rowA.original.name.localeCompare(\n rowB.original.name, 'en', { numeric: true }\n )\n}\n\nexport const isCompatibleWithUAMetrics = groupBy => includes(\n OVERLAP_GROUP_BY_IDS,\n groupBy\n)\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___2jvTr\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1Ygji\",\"btn-toggle\":\"styles-module__btn-toggle___nUV-d\",\"handle\":\"styles-module__handle___1Hy71\",\"active\":\"styles-module__active___Sctyl\",\"focus\":\"styles-module__focus___dfP84\",\"card-panel\":\"styles-module__card-panel___2zAk-\",\"panel-heading\":\"styles-module__panel-heading___2pVgT\",\"panel-title\":\"styles-module__panel-title___sc3xP\",\"panel-subtitle\":\"styles-module__panel-subtitle___IDSiP\",\"panel-body\":\"styles-module__panel-body___20Jm2\",\"container\":\"styles-module__container___dQVjf\",\"createButton\":\"styles-module__createButton___UPuG9\",\"existingTemplates\":\"styles-module__existingTemplates___3eyxl\",\"tableContainer\":\"styles-module__tableContainer___2qtqR\",\"idColumn\":\"styles-module__idColumn___14G5g\",\"allowMultipleColumn\":\"styles-module__allowMultipleColumn___1_mrw\",\"eventDefinitionColumn\":\"styles-module__eventDefinitionColumn___2g6BH\",\"requiredMacrosColumn\":\"styles-module__requiredMacrosColumn___2j8xR\",\"userFilterEditableColumn\":\"styles-module__userFilterEditableColumn___28J2D\",\"userFilterDefaultColumn\":\"styles-module__userFilterDefaultColumn___2SOLU\",\"platformColumn\":\"styles-module__platformColumn___3rgiT\",\"actionsColumn\":\"styles-module__actionsColumn___3q-AH\",\"notAllowMultiple\":\"styles-module__notAllowMultiple___4W0Xm\",\"notUserFilterEditable\":\"styles-module__notUserFilterEditable___22RMA\",\"callbackTemplates\":\"styles-module__callbackTemplates___27GLW\",\"idCell\":\"styles-module__idCell___6nL8k\",\"callbackTemplateRow\":\"styles-module__callbackTemplateRow___3UL8T\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modalMaxWidth\":\"900px\",\"overflow\":\"visible\",\"google-oauth-button\":\"styles-module__google-oauth-button___3QFVD\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___3U61H\",\"btn-toggle\":\"styles-module__btn-toggle___MAnQx\",\"handle\":\"styles-module__handle___1grmN\",\"active\":\"styles-module__active___3Xt2J\",\"focus\":\"styles-module__focus___XEO9y\",\"card-panel\":\"styles-module__card-panel___CZ7qF\",\"panel-heading\":\"styles-module__panel-heading___1DOC2\",\"panel-title\":\"styles-module__panel-title___2Tjwr\",\"panel-subtitle\":\"styles-module__panel-subtitle___ESenM\",\"panel-body\":\"styles-module__panel-body___2BG_B\",\"emptyStateOverlay\":\"styles-module__emptyStateOverlay___2-dxI\",\"healthBadge\":\"styles-module__healthBadge___1XG_s\",\"success\":\"styles-module__success___c_mUz\",\"danger\":\"styles-module__danger___39xr7\",\"macroChannel\":\"styles-module__macroChannel___1g0KX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___18MNa\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___Qwk4U\",\"btn-toggle\":\"styles-module__btn-toggle___1gGTN\",\"handle\":\"styles-module__handle___1m9iF\",\"active\":\"styles-module__active___3xaeg\",\"focus\":\"styles-module__focus___3OsLJ\",\"card-panel\":\"styles-module__card-panel___7CFcG\",\"panel-heading\":\"styles-module__panel-heading___3GdoO\",\"panel-title\":\"styles-module__panel-title___nU7Fp\",\"panel-subtitle\":\"styles-module__panel-subtitle___kwJD3\",\"panel-body\":\"styles-module__panel-body___1beao\",\"table\":\"styles-module__table___vWWaB\",\"row\":\"styles-module__row___3jUGN\",\"ptiCountText\":\"styles-module__ptiCountText___1-jYJ\",\"pricingTier\":\"styles-module__pricingTier___3kjYM\",\"billingDetails\":\"styles-module__billingDetails___3vVUM\",\"contractLink\":\"styles-module__contractLink___2acZS\",\"cardExpiration\":\"styles-module__cardExpiration___X0BEx\",\"planLink\":\"styles-module__planLink___2Eno4\",\"planDetail\":\"styles-module__planDetail___3vgWz\",\"checkmark\":\"styles-module__checkmark___3zfKj\",\"subscriptionPanelBody\":\"styles-module__subscriptionPanelBody___3jSI2\",\"billingPanelBody\":\"styles-module__billingPanelBody___g6XIv\"};","import { each } from 'lodash'\n\nexport const MOCK_REPORTING_API_URL = window?.gon?.MOCK_REPORTING_API_URL || null\n\nexport const isMockReportingApiEnabled = () => {\n const urlFlag = new URLSearchParams(window.location.search).get('flag')?.includes('mock_reporting_api')\n\n const featureFlags = window?.gon?.feature_flags || []\n\n const userFlipper = featureFlags.includes('mock_reporting_api')\n\n return urlFlag || userFlipper\n}\n\nexport const overrideUrlsIfMockApiEnabled = reportingApiUrlMapping => {\n if (!isMockReportingApiEnabled()) return {}\n\n const output = {}\n\n each(reportingApiUrlMapping, (urls, version) => {\n output[version] = { ...(output[version] || {}) }\n\n each(urls, (url, endpointName) => {\n output[version] = {\n ...output[version],\n [endpointName]: `${MOCK_REPORTING_API_URL}${url}`\n }\n })\n })\n\n return output\n}\n","import PropTypes from 'prop-types'\nimport MissingRequirementBtn from './MissingRequirementBtn'\nimport MissingRequirementsMessage from './MissingRequirementsMessage'\nimport Overlay from '../Overlay'\n\nimport {\n getMissingOnboardingRequirements, useOnboardingStatusState\n} from '../../contexts/OnboardingStatus'\nimport { metricDefinitionObject } from '../../utils/customPropTypes'\n\nconst OnboardingActionOverlay = ({ isCardOverlay, metricDefinition }) => {\n const onboardingStatus = useOnboardingStatusState()\n\n const missingOnboardingRequirements = getMissingOnboardingRequirements({\n metricDefinition,\n onboardingStatus\n })\n\n return (\n \n
\n \n\n \n
\n
\n )\n}\n\nOnboardingActionOverlay.propTypes = {\n isCardOverlay: PropTypes.bool,\n metricDefinition: metricDefinitionObject.isRequired\n}\n\nOnboardingActionOverlay.defaultProps = {\n isCardOverlay: false\n}\n\nexport default OnboardingActionOverlay\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport FontAwesomeIcon from '../../../../../FontAwesomeIcon'\n\nimport styles from '../MultiSelectIcon/styles.module.scss'\n\nconst SingleSelectIcon = ({ isSelected }) => {\n const className = classNames(styles.icon, {\n [styles.selected]: isSelected\n })\n\n const iconName = isSelected ? 'dot-circle' : 'circle'\n\n return (\n
\n \n
\n )\n}\n\nSingleSelectIcon.propTypes = {\n isSelected: PropTypes.bool.isRequired\n}\n\nexport default SingleSelectIcon\n","import classNames from 'classnames'\n\nimport styles from './styles.module.scss'\n\nconst Label = ({ children, className }) => (\n
\n {children}\n
\n)\n\nexport default Label\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___23Pk1\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___3TP1q\",\"btn-toggle\":\"styles-module__btn-toggle___2Fcu9\",\"handle\":\"styles-module__handle___2ya8A\",\"active\":\"styles-module__active___2FTQw\",\"focus\":\"styles-module__focus___1T3Oj\",\"card-panel\":\"styles-module__card-panel___vb7jH\",\"panel-heading\":\"styles-module__panel-heading___2Nr9X\",\"panel-title\":\"styles-module__panel-title___JOzkA\",\"panel-subtitle\":\"styles-module__panel-subtitle___1NjPF\",\"panel-body\":\"styles-module__panel-body____yW_t\",\"cell\":\"styles-module__cell___uM7C-\",\"table\":\"styles-module__table___3zUoq\",\"body\":\"styles-module__body___1dW_Q\",\"stickyHeader\":\"styles-module__stickyHeader___FvVlo\",\"nameCell\":\"styles-module__nameCell___1gDOJ\",\"depthOne\":\"styles-module__depthOne___1ma9y\",\"depthTwo\":\"styles-module__depthTwo___mlbZX\",\"depthThree\":\"styles-module__depthThree___3BnSx\",\"depthFour\":\"styles-module__depthFour___1oU18\",\"header\":\"styles-module__header___3jelB\",\"nameHeader\":\"styles-module__nameHeader___3oQHS\",\"paddingForSortIcon\":\"styles-module__paddingForSortIcon___kZ1Nz\",\"compactHeader\":\"styles-module__compactHeader___29kfZ\",\"skeletonRow\":\"styles-module__skeletonRow___2BWtY\",\"noSearchMatch\":\"styles-module__noSearchMatch___2o1WP\"};","export const iosApp = {\n bundleId: 'com.ios.app',\n iconUrl: 'https://via.placeholder.com/14',\n id: '__mock-1__',\n name: 'iOS App',\n platform: 'ios',\n storeId: 'com.ios.app'\n}\n\nexport const androidApp = {\n bundleId: 'com.android.app',\n iconUrl: 'https://via.placeholder.com/14',\n id: '__mock-2__',\n name: 'Android App',\n platform: 'android',\n storeId: 'com.android.app'\n}\n\nexport const demoOrgApps = [\n {\n \"id\": \"8c9e8ea9-73a4-4e14-b098-5e6ec419e75a\",\n \"name\": \"Android Other - io.tenjin.tenjindeviceinfo.other\",\n \"storeId\": null,\n \"platform\": \"android_other\",\n \"bundleId\": \"io.tenjin.tenjindeviceinfo.other\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"e5d65711-cbd5-407c-8bcd-7ae768c532e7\",\n \"name\": \"android-sdk-demo\",\n \"storeId\": \"com.tenjin.android.sdk.demo\",\n \"platform\": \"android\",\n \"bundleId\": \"com.tenjin.android.sdk.demo\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"6b200c12-0425-4045-a51b-9f8f6498c6b6\",\n \"name\": \"Angry Birds 2\",\n \"storeId\": \"880047117\",\n \"platform\": \"ios\",\n \"bundleId\": \"com.rovio.baba\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/6b200c12-0425-4045-a51b-9f8f6498c6b6/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"211e4a41-a3c1-4661-9318-fe92fcea1ef4\",\n \"name\": \"Cop Watch - Police Simulator\",\n \"storeId\": \"com.Craydevs.PoliceSquadSimulator\",\n \"platform\": \"android\",\n \"bundleId\": \"com.Craydevs.PoliceSquadSimulator\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/211e4a41-a3c1-4661-9318-fe92fcea1ef4/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"066985b6-cc4f-45b4-ab64-2d6b757d873d\",\n \"name\": \"Cordova Test App\",\n \"storeId\": null,\n \"platform\": \"android\",\n \"bundleId\": \"io.tenjin.cordova.demo\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"3d9f68fd-3810-4ac3-83f4-7ae2f32cd16c\",\n \"name\": \"Crush Master 3D\",\n \"storeId\": \"1629873767\",\n \"platform\": \"ios\",\n \"bundleId\": \"com.homa.CrushMaster3D\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/3d9f68fd-3810-4ac3-83f4-7ae2f32cd16c/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"16851013-ccc6-4047-a0c7-2b8918e3f325\",\n \"name\": \"Filtru Coffee\",\n \"storeId\": \"1150921819\",\n \"platform\": \"ios\",\n \"bundleId\": \"com.przemyslawbobak.filtru\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/16851013-ccc6-4047-a0c7-2b8918e3f325/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"1bb0335a-9412-4ba7-8f5c-742a5ce56ba5\",\n \"name\": \"Flow Free\",\n \"storeId\": \"com.bigduckgames.flow\",\n \"platform\": \"android\",\n \"bundleId\": \"com.bigduckgames.flow\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/1bb0335a-9412-4ba7-8f5c-742a5ce56ba5/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"f7758801-982f-4110-b23f-c3e62d72ac11\",\n \"name\": \"Fox Say What\",\n \"storeId\": null,\n \"platform\": \"amazon\",\n \"bundleId\": \"com.sleepyapps.foxsaywhat\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"f674ff52-ecfe-4302-8cb2-82a4d11c0fc9\",\n \"name\": \"GasBuddy: Find and Pay for Cheap Gas and Fuel\",\n \"storeId\": \"gbis.gbandroid\",\n \"platform\": \"android\",\n \"bundleId\": \"gbis.gbandroid\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/f674ff52-ecfe-4302-8cb2-82a4d11c0fc9/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"8d68818e-f31e-46ab-947a-d50db758fc8b\",\n \"name\": \"Hair Challenge\",\n \"storeId\": \"com.Upperpik.HairChallenge\",\n \"platform\": \"android\",\n \"bundleId\": \"com.Upperpik.HairChallenge\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/8d68818e-f31e-46ab-947a-d50db758fc8b/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"5a99954c-218a-4cb0-abce-b7c42b79920d\",\n \"name\": \"HyperBidTestUnityAndroid\",\n \"storeId\": null,\n \"platform\": \"android\",\n \"bundleId\": \"com.superapp.filemanager\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"0e385552-1851-4f0b-94c2-9bcf4866dacf\",\n \"name\": \"iOS SDK Demo App\",\n \"storeId\": null,\n \"platform\": \"ios\",\n \"bundleId\": \"com.tenjin.ios-demo\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"d9ab9e10-5a8e-4341-925c-e9dfd2c26b55\",\n \"name\": \"IQ Тест - тренировка мозга PRO\",\n \"storeId\": \"496093529\",\n \"platform\": \"ios\",\n \"bundleId\": \"ru.iapps.iq\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/d9ab9e10-5a8e-4341-925c-e9dfd2c26b55/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"1a813ce9-b88d-44ea-ad70-624dda3d73cf\",\n \"name\": \"lords mobile\",\n \"storeId\": null,\n \"platform\": \"android_other\",\n \"bundleId\": \"com.igg.android.lordsmobile\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"ee67103e-6729-4663-bf56-116b1f822cda\",\n \"name\": \"Minecube - Idle\",\n \"storeId\": \"com.YsoCorp.MinecubeIdle\",\n \"platform\": \"android\",\n \"bundleId\": \"com.YsoCorp.MinecubeIdle\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/ee67103e-6729-4663-bf56-116b1f822cda/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"c50834c1-4d76-4f41-8641-e7d48a52eb71\",\n \"name\": \"My Application\",\n \"storeId\": null,\n \"platform\": \"android\",\n \"bundleId\": \"com.example.myapplication\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"7d4383ca-cf39-4c80-b0b6-5cf1975e5d74\",\n \"name\": \"Pinterest Lite\",\n \"storeId\": \"com.pinterest.twa\",\n \"platform\": \"android\",\n \"bundleId\": \"com.pinterest.twa\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/7d4383ca-cf39-4c80-b0b6-5cf1975e5d74/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"9e2c161c-a72a-442b-a18b-69e3fa2061cc\",\n \"name\": \"Pixie Glow\",\n \"storeId\": \"1535748403\",\n \"platform\": \"ios\",\n \"bundleId\": \"com.beka.PixieGlow\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/9e2c161c-a72a-442b-a18b-69e3fa2061cc/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"a30397c4-2785-4456-af48-9e492cdf1f00\",\n \"name\": \"Super Touch The Dog\",\n \"storeId\": \"com.tenjin.touch_the_dog\",\n \"platform\": \"android\",\n \"bundleId\": \"com.tenjin.touch_the_dog\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/a30397c4-2785-4456-af48-9e492cdf1f00/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"9668185b-da2e-4638-b15f-e03431377ac5\",\n \"name\": \"Super Word Hunt\",\n \"storeId\": \"1478027094\",\n \"platform\": \"ios\",\n \"bundleId\": \"com.tenjin.wordsearch\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/9668185b-da2e-4638-b15f-e03431377ac5/icon.png\",\n \"numSkApps\": 1\n },\n {\n \"id\": \"0fda669b-b6f6-4832-91c1-ac16915d78c0\",\n \"name\": \"Tenjin Amazon App\",\n \"storeId\": null,\n \"platform\": \"amazon\",\n \"bundleId\": \"com.tenjin.amazon\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"3de0c40c-a585-430d-bb99-e188ee10d291\",\n \"name\": \"Tenjin Android Demo App\",\n \"storeId\": \"io.tenjin.tenjindeviceinfo\",\n \"platform\": \"android\",\n \"bundleId\": \"io.tenjin.tenjindeviceinfo\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"8237c7eb-c706-469f-93a0-c3519749d624\",\n \"name\": \"Tenjin Demo\",\n \"storeId\": \"983289128\",\n \"platform\": \"ios\",\n \"bundleId\": \"ie.tenjin.sampler\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/8237c7eb-c706-469f-93a0-c3519749d624/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"019e233d-1d07-4ece-b113-afe3045b5182\",\n \"name\": \"Tenjin iOS Demo App\",\n \"storeId\": null,\n \"platform\": \"ios\",\n \"bundleId\": \"com.tenjin.io\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"45de962e-5ab6-438e-b465-b36ca10f7f41\",\n \"name\": \"tenjin-ios-sdk-demo\",\n \"storeId\": null,\n \"platform\": \"ios\",\n \"bundleId\": \"com.tenjin.tenjin-ios-sdk-demo\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"a4eaf32c-5ff2-4362-8b06-ebe979892666\",\n \"name\": \"Tenjin iOS Swift Demo App\",\n \"storeId\": null,\n \"platform\": \"ios\",\n \"bundleId\": \"com.tenjin.ios-swift\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"7f8c66e4-49a5-4536-99fc-736fb7f296fa\",\n \"name\": \"Tenjin iOS Unity Test App\",\n \"storeId\": null,\n \"platform\": \"ios\",\n \"bundleId\": \"com.tenjin.TenjinUnitySDKExample\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"fb8608d0-1571-41ce-b670-e14c719b8881\",\n \"name\": \"Tenjin Subscriptions\",\n \"storeId\": null,\n \"platform\": \"android\",\n \"bundleId\": \"com.tenjin.subscriptions\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"933c9b61-e94b-4299-9369-3dde8fdf9698\",\n \"name\": \"Tenjin Subscriptions iOS\",\n \"storeId\": null,\n \"platform\": \"ios\",\n \"bundleId\": \"com.tenjin.ios.subscription\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"9a60615b-de57-452b-bf0f-d8d975cc0261\",\n \"name\": \"Tenjin Unity demo 2\",\n \"storeId\": null,\n \"platform\": \"android_other\",\n \"bundleId\": \"com.tenjin.test.unitydemo\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"60a145a4-be26-4153-9e6c-ba2536f329b2\",\n \"name\": \"Tenjin Unity Demo App\",\n \"storeId\": \"com.tenjin.unitytest\",\n \"platform\": \"android\",\n \"bundleId\": \"com.tenjin.unitytest\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"898a1b6d-bf1c-4e5b-8dbf-32fbf1da8da3\",\n \"name\": \"Tenjin Unity Test App\",\n \"storeId\": null,\n \"platform\": \"android\",\n \"bundleId\": \"com.tenjin.TenjinUnitySDKExample\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"be7cdfcd-87a2-4d49-84e3-ff989a511e2d\",\n \"name\": \"Tenjin Web App\",\n \"storeId\": null,\n \"platform\": \"web\",\n \"bundleId\": \"com.tenjin.web\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"6ebd3333-68f8-4919-875c-73fd6780d4f7\",\n \"name\": \"Test\",\n \"storeId\": \"io.tenjin.tenjindeviceinfo.other\",\n \"platform\": \"android\",\n \"bundleId\": \"io.tenjin.tenjindeviceinfo.other\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"0c0897ee-6f80-41b1-9691-369f55cb1cad\",\n \"name\": \"Test Android app\",\n \"storeId\": null,\n \"platform\": \"android\",\n \"bundleId\": \"test_bundle_id2\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"6f5e5554-e77a-49b9-8675-7fb80e3b9ec6\",\n \"name\": \"test app\",\n \"storeId\": null,\n \"platform\": \"ios\",\n \"bundleId\": \"sdfasd\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"b9152f54-7108-4543-8850-d89e7218dfae\",\n \"name\": \"Test app\",\n \"storeId\": \"com.stats.id\",\n \"platform\": \"android\",\n \"bundleId\": \"com.stats.id\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"541a4c7b-2241-4064-8ca1-759355ef9a2f\",\n \"name\": \"Unity Android Test App\",\n \"storeId\": null,\n \"platform\": \"android\",\n \"bundleId\": \"com.tenjin.unityandroid\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"7d75deaa-fc72-41b1-95d4-7cf32ef5518b\",\n \"name\": \"Unity demo\",\n \"storeId\": null,\n \"platform\": \"android_other\",\n \"bundleId\": \"com.tenjin.unitytest\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"850f9bd5-585e-4b9b-9bb8-e021fa65683c\",\n \"name\": \"Unity iOS Test App\",\n \"storeId\": null,\n \"platform\": \"ios\",\n \"bundleId\": \"com.tenjin.unitytest\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"c2388575-77bd-4619-8d10-4acc213259fd\",\n \"name\": \"Van Demo\",\n \"storeId\": null,\n \"platform\": \"android_other\",\n \"bundleId\": \"com.van.test\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"4c396f75-80a2-421f-be49-30a93380e2de\",\n \"name\": \"Van Demo Test\",\n \"storeId\": null,\n \"platform\": \"ios\",\n \"bundleId\": \"com.vanpham.ios\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"c325527a-a720-47f9-a50a-f7e65f667223\",\n \"name\": \"Van KA Sample App\",\n \"storeId\": null,\n \"platform\": \"android\",\n \"bundleId\": \"com.example.sampleapplication\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"8661feee-2e15-4f0d-a632-ed742dbca2dc\",\n \"name\": \"Van Swift iOS App\",\n \"storeId\": null,\n \"platform\": \"ios\",\n \"bundleId\": \"com.tenjin.tenjin-ios-sdk-swift\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"cc29a910-ccc4-4160-9abc-fa818901ebee\",\n \"name\": \"Van Test\",\n \"storeId\": null,\n \"platform\": \"android_other\",\n \"bundleId\": \"io.tenjin.tenjindeviceinfo.other.2\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"a54f504f-b84d-4856-9608-2943afe1bdb2\",\n \"name\": \"Van Test 10\",\n \"storeId\": null,\n \"platform\": \"ios\",\n \"bundleId\": \"com.tenjin.vanpham\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"8b1be1de-c84a-4c96-88cc-8ecd23c56d66\",\n \"name\": \"Van Test Android Other 3\",\n \"storeId\": null,\n \"platform\": \"android_other\",\n \"bundleId\": \"io.tenjin.tenjindeviceinfo.other3\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"6c39a724-68aa-40f3-a4cd-6ee1b4dbfc0f\",\n \"name\": \"Van Test Android Other 4\",\n \"storeId\": null,\n \"platform\": \"android_other\",\n \"bundleId\": \"io.tenjin.tenjindeviceinfo.other4\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"3a9a8977-6ca5-4382-8494-a94e6fae5478\",\n \"name\": \"web test\",\n \"storeId\": null,\n \"platform\": \"ios\",\n \"bundleId\": \"321432141\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"dbc52ff7-048b-4b0a-bb76-8999969f8cba\",\n \"name\": \"web test 2\",\n \"storeId\": \"https://tenjin.io\",\n \"platform\": \"web\",\n \"bundleId\": \"https://tenjin.io\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"edbf7ee6-9ec0-4024-a7be-43c044e9bd35\",\n \"name\": \"Web test 3\",\n \"storeId\": \"https://ad.toutiao.com/advertiser_package/dl/c04e8ef9_1634743929463820_1587726603220\",\n \"platform\": \"web\",\n \"bundleId\": \"com.test.test\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/default/icon.png\",\n \"numSkApps\": 0\n },\n {\n \"id\": \"ee270433-b7da-4e0f-9b03-8dd25d89da49\",\n \"name\": \"Word Search (OLD)\",\n \"storeId\": \"887212194\",\n \"platform\": \"ios\",\n \"bundleId\": \"com.tenjin.wordfinder\",\n \"iconUrl\": \"https://tenjin-production.s3.amazonaws.com/app_icon/ee270433-b7da-4e0f-9b03-8dd25d89da49/icon.png\",\n \"numSkApps\": 0\n }\n]\n","import classNames from 'classnames'\nimport { map } from 'lodash'\nimport PropTypes from 'prop-types'\n\nimport styles from './styles.module.scss'\n\nconst FlexTable = ({\n cellClassName,\n className,\n rowClassName,\n rows,\n additionalContent\n}) => (\n
\n {map(rows, ({ id: rowId, cells }) => (\n
\n {map(cells, ({ id: cellId, cell, flex, width, title }) => (\n \n {cell}\n
\n ))}\n
\n ))}\n {additionalContent}\n
\n)\n\nFlexTable.propTypes = {\n additionalContent: PropTypes.node,\n cellClassName: PropTypes.string,\n className: PropTypes.string,\n rowClassName: PropTypes.string,\n rows: PropTypes.shape({\n cells: PropTypes.shape({\n cell: PropTypes.node.isRequired,\n flex: PropTypes.number,\n id: PropTypes.string.isRequired\n }),\n id: PropTypes.string.isRequired\n }).isRequired\n}\n\nFlexTable.defaultProps = {\n additionalContent: null,\n cellClassName: '',\n className: '',\n rowClassName: ''\n}\n\nexport default FlexTable\n","import PropTypes from 'prop-types'\n\nimport FontAwesomeIcon from '../FontAwesomeIcon'\n\nimport styles from './styles.module.scss'\n\nconst PageNotice = ({\n className,\n icon,\n children,\n italics\n}) => (\n
\n {icon && }\n {italics ? ({children}) : children}\n
\n)\n\nPageNotice.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n icon: PropTypes.string,\n italics: PropTypes.bool\n}\n\nPageNotice.defaultProps = {\n className: '',\n icon: null,\n italics: false\n}\n\nexport default PageNotice\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport Tooltip from 'rc-tooltip'\n\nimport { TOOLTIP_MOUSE_ENTER_DELAY } from '../../utils/constants'\n\nimport FontAwesomeIcon from '../FontAwesomeIcon'\n\nimport { VALID_TYPE_OPTIONS } from '../FontAwesomeIcon/constants'\n\nimport styles from './styles.module.scss'\n\nconst FormLabelWithTooltip = ({\n children,\n className,\n icon,\n placement,\n tooltipContent,\n type\n}) => (\n
\n {children}\n {tooltipContent && (\n \n
\n \n
\n \n )}\n
\n)\n\nFormLabelWithTooltip.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n icon: PropTypes.string,\n placement: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n tooltipContent: PropTypes.node,\n type: PropTypes.oneOf(Array.from(VALID_TYPE_OPTIONS))\n}\n\nFormLabelWithTooltip.defaultProps = {\n className: '',\n icon: 'question-circle',\n placement: 'top',\n tooltipContent: null,\n type: 'fal'\n}\n\nexport default FormLabelWithTooltip\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"controlColor\":\"#265479\",\"controlFontSize\":\"16px\",\"controlFontWeight\":\"700\",\"controlPaddingTop\":\"20px\",\"dropdownIndicatorPaddingTop\":\"5px\",\"indicatorsContainerPaddingRight\":\"30px\",\"placeholderFontStyle\":\"italic\",\"placeholderFontWeight\":\"500\",\"placeholderFontFamily\":\"\\\"Montserrat\\\",\\\"Lato\\\",\\\"Helvetica Neue\\\",Helvetica,Sans-serif\",\"placeholderColor\":\"rgba(38,84,121,0.7)\",\"google-oauth-button\":\"styles-module__google-oauth-button___3kcjG\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___BREnb\",\"btn-toggle\":\"styles-module__btn-toggle___3DKpA\",\"handle\":\"styles-module__handle___35H44\",\"active\":\"styles-module__active___KsCzL\",\"focus\":\"styles-module__focus___1oMb5\",\"card-panel\":\"styles-module__card-panel___3lvJx\",\"panel-heading\":\"styles-module__panel-heading___3mT__\",\"panel-title\":\"styles-module__panel-title___1KMXE\",\"panel-subtitle\":\"styles-module__panel-subtitle___BnjXj\",\"panel-body\":\"styles-module__panel-body___3stg9\",\"label\":\"styles-module__label___2ViJ_\",\"optionLabel\":\"styles-module__optionLabel___dp8Cu\",\"channelSelector\":\"styles-module__channelSelector___hy6j0\"};","export const ROLE_MARKETER = 'marketer'\nexport const ROLE_DEVELOPER = 'developer'\n\nexport const ROLE_OPTIONS = [\n {\n label: 'Developer',\n value: ROLE_DEVELOPER\n },\n {\n label: 'Marketer',\n value: ROLE_MARKETER\n }\n]\n\nexport const PLATFORM_SDK_OPTIONS = [\n {\n label: 'iOS',\n linkText: 'Getting Started with the iOS SDK',\n linkUrl: 'https://docs.tenjin.com/docs/ios-sdk',\n value: 'ios'\n },\n {\n label: 'Android',\n linkText: 'Getting Started with the Android SDK',\n linkUrl: 'https://docs.tenjin.com/docs/android-sdk',\n value: 'android'\n },\n {\n label: 'Unity',\n linkText: 'Getting Started with the Unity SDK',\n linkUrl: 'https://docs.tenjin.com/docs/unity-sdk',\n value: 'unity'\n },\n {\n label: 'Cordova',\n linkText: 'Other plugins supported by Tenjin',\n linkUrl: 'https://docs.tenjin.com/docs/other-plugins',\n value: 'cordova'\n },\n {\n label: 'React Native',\n linkText: 'Other plugins supported by Tenjin',\n linkUrl: 'https://docs.tenjin.com/docs/other-plugins',\n value: 'reactnative'\n },\n {\n label: 'Ionic Capacitor',\n linkText: 'Other plugins supported by Tenjin',\n linkUrl: 'https://docs.tenjin.com/docs/other-plugins',\n value: 'ionic'\n },\n {\n label: 'Flutter',\n linkText: 'Other plugins supported by Tenjin',\n linkUrl: 'https://docs.tenjin.com/docs/other-plugins',\n value: 'flutter'\n }\n]\n\nexport const DOCUMENTATION_LINKS = {\n APPS: 'https://docs.tenjin.com/docs/apps',\n CHANNELS_OVERVIEW: 'https://docs.tenjin.com/docs/channels-overview',\n KNOWLEDGE_BASE: 'https://docs.tenjin.com/',\n SELF_ATTRIBUTING_NETWORKS: 'https://docs.tenjin.com/docs/self-attributing-networks'\n}\n","import { deepSnakeKeys } from '../../utils/helpers'\nimport {\n get,\n makeGetRequestWithoutCaseTransformation,\n makePostRequestWithoutCaseTransformation,\n makePutRequestWithoutCaseTransformation,\n post,\n put\n} from '../../utils/request'\nimport {\n DASHBOARD_APPS_URL,\n PRESERVED_KEYS_FOR_CASE_TRANSFORMATION\n} from './constants'\nimport {\n getAdNetworkSettingsUrl,\n getCallbackGroupsUrl,\n getCallbackHealthUrl,\n getChannelSettingsUrl,\n getCredentialSettingsUrl,\n getS2SCallbacksUrl,\n sanitizeValues\n} from './helpers'\n\nexport const createApp = async params =>\n post(DASHBOARD_APPS_URL, { app: sanitizeValues(params) })\n\nexport const saveUpdatedApp = async ({ appId, params }) =>\n put(`${DASHBOARD_APPS_URL}/${appId}`, deepSnakeKeys(params))\n\nexport const saveUpdatedAppChannel = async ({ appId, channelId, params }) =>\n put(\n `${DASHBOARD_APPS_URL}/${appId}/integrations/${channelId}`,\n deepSnakeKeys(params)\n )\n\nexport const fetchChannelSettings = async ({ appId, channelId }) =>\n makeGetRequestWithoutCaseTransformation(\n getChannelSettingsUrl({ appId, channelId })\n )\n\nexport const saveCredentialSettings = async ({ appId, channelId, params }) =>\n post(getCredentialSettingsUrl({ appId, channelId }), deepSnakeKeys(params))\n\nexport const fetchCallbackHealth = async appId =>\n get(getCallbackHealthUrl(appId))\n\nexport const fetchCvSchema = async appId =>\n get(`${DASHBOARD_APPS_URL}/${appId}/cv_schemas`)\n\nexport const saveCvSchema = async ({ appId, params }) =>\n post(`${DASHBOARD_APPS_URL}/${appId}/cv_schemas`, deepSnakeKeys(params))\n\nexport const toggleSkanReadiness = async ({ appId, params }) =>\n post(\n `${DASHBOARD_APPS_URL}/${appId}/cv_schemas/toggle_readiness`,\n deepSnakeKeys(params)\n )\n\nexport const updateCallbackGroup = async ({\n appId,\n channelId,\n callbackGroupId,\n params\n}) =>\n makePutRequestWithoutCaseTransformation(\n getCallbackGroupsUrl({\n appId,\n callbackGroupId,\n channelId\n }),\n deepSnakeKeys(params, PRESERVED_KEYS_FOR_CASE_TRANSFORMATION)\n )\n\nexport const toggleCallbackGroup = async ({\n appId,\n channelId,\n callbackGroupId,\n params\n}) =>\n put(\n getCallbackGroupsUrl({\n appId,\n callbackGroupId,\n channelId\n }),\n deepSnakeKeys(params)\n )\n\nexport const createCallbackGroup = async ({ appId, channelId, params }) =>\n makePostRequestWithoutCaseTransformation(\n getCallbackGroupsUrl({\n appId,\n channelId\n }),\n deepSnakeKeys(params, PRESERVED_KEYS_FOR_CASE_TRANSFORMATION)\n )\n\nexport const fetchS2SCallbacks = async appId => get(getS2SCallbacksUrl(appId))\n\nexport const toggleMetaAem = async ({ appId, channelId, params }) =>\n put(getAdNetworkSettingsUrl({ appId, channelId }), deepSnakeKeys(params))\n","import {\n each,\n find,\n includes,\n isEmpty,\n isNaN,\n keys,\n map\n} from 'lodash'\n\nimport {\n CV_SCHEMA_COARSE_VALUE_MAPPING,\n CV_SCHEMA_ONLINE,\n CV_SCHEMA_PARTNER_EVENT_NAME_KEY,\n CV_SCHEMA_POSTBACK_SEQUENCE_INDEX_MAX,\n CV_SCHEMA_POSTBACK_SEQUENCE_INDEX_MIN,\n CV_SCHEMA_SKAN_VERSION_3,\n CV_SCHEMA_SKAN_VERSION_4,\n CV_SCHEMA_TYPE_COARSE_GRAINED,\n CV_SCHEMA_TYPE_FINE_GRAINED,\n CSV_PREVIEW_COLUMN_ORDER,\n DEFAULT_EVENT_MAPPINGS\n} from './constants'\n\nimport { deepSnakeKeys, removeEmptyItemsFromCollection, reorderKeysInCollection } from '../../../../../../utils/helpers'\n\nexport const getSkanVersionFromJson = jsonData => {\n let output = CV_SCHEMA_SKAN_VERSION_3\n\n const hasCoarseConversionValueType = find(\n jsonData,\n { conversionValueType: 'coarse' }\n )\n\n const hasNonZeroPostbackSequenceIndex = find(\n jsonData,\n ({ postbackSequenceIndex }) => Number(postbackSequenceIndex) > 0\n )\n\n if (hasCoarseConversionValueType || hasNonZeroPostbackSequenceIndex) {\n output = CV_SCHEMA_SKAN_VERSION_4\n }\n\n return output\n}\n\nexport const getEventMappingFromCondition = ({ googleEventName, metaEventName, tiktokEventName }) => {\n const googleEventNameExists = !isEmpty(googleEventName)\n const metaEventNameExists = !isEmpty(metaEventName)\n const tiktokEventNameExists = !isEmpty(tiktokEventName)\n\n const eventMapping = {\n ...(googleEventNameExists ? {\n [CV_SCHEMA_PARTNER_EVENT_NAME_KEY.GOOGLE]: googleEventName\n } : {}),\n ...(metaEventNameExists ? {\n [CV_SCHEMA_PARTNER_EVENT_NAME_KEY.META]: metaEventName\n } : {}),\n ...(tiktokEventNameExists ? {\n [CV_SCHEMA_PARTNER_EVENT_NAME_KEY.TIKTOK]: tiktokEventName\n } : {})\n }\n\n return deepSnakeKeys(eventMapping)\n}\n\nexport const getCvSchemaFromJson = ({ jsonData, appId, description }) => {\n const output = {\n cvSchema: {\n appId,\n cvSchemaWindows: [],\n description,\n online: CV_SCHEMA_ONLINE,\n skanVersion: getSkanVersionFromJson(jsonData)\n }\n }\n\n const formatSchemaType = rawSchemaType => {\n if ([\n CV_SCHEMA_TYPE_COARSE_GRAINED,\n CV_SCHEMA_TYPE_FINE_GRAINED\n ].includes(rawSchemaType)) {\n return rawSchemaType\n }\n\n throw new Error('Unsupported schema type')\n }\n\n const formatConversionValue = rawConversionValue => {\n const numberValue = Number(rawConversionValue)\n\n if (!isNaN(numberValue)) {\n return numberValue\n }\n\n if (includes(keys(CV_SCHEMA_COARSE_VALUE_MAPPING), rawConversionValue)) {\n return CV_SCHEMA_COARSE_VALUE_MAPPING[rawConversionValue]\n }\n\n throw new Error('Unsupported raw conversion value')\n }\n\n const formatPostbackSequenceIndex = rawPostbackSequenceIndex => {\n const numberValue = Number(rawPostbackSequenceIndex)\n\n if (\n !isNaN(numberValue)\n && numberValue >= CV_SCHEMA_POSTBACK_SEQUENCE_INDEX_MIN\n && numberValue <= CV_SCHEMA_POSTBACK_SEQUENCE_INDEX_MAX\n ) {\n return numberValue\n }\n\n throw new Error('Unsupported postback sequence index')\n }\n\n const formatMinMaxRange = rawMinMaxRange => {\n const numberValue = Number(rawMinMaxRange)\n\n if (rawMinMaxRange === '') {\n return ''\n }\n\n if (!isNaN(numberValue)) {\n return numberValue\n }\n\n throw new Error('Unsupported min/max range')\n }\n\n const groupedData = jsonData.reduce((groups, item) => {\n const key = `${item.postbackSequenceIndex}-${formatSchemaType(item.conversionValueType)}`\n\n if (!groups[key]) {\n // eslint-disable-next-line no-param-reassign\n groups[key] = []\n }\n\n groups[key].push(item)\n return groups\n }, {})\n\n each(groupedData, (conditions, key) => {\n const [postbackSequenceIndex, schemaType] = key.split('-')\n\n output.cvSchema.cvSchemaWindows.push({\n cvSchemaConditions: map(conditions, condition => ({\n aggregationType: '',\n conversionValue: formatConversionValue(condition.conversionValue),\n currency: condition.currency,\n eventMapping: getEventMappingFromCondition(condition),\n eventName: condition.customEventName,\n maxRange: formatMinMaxRange(condition.maxRange),\n minRange: formatMinMaxRange(condition.minRange)\n })),\n lockWindowHours: '',\n postbackSequenceIndex: formatPostbackSequenceIndex(postbackSequenceIndex),\n schemaType\n })\n })\n\n return output\n}\n\nexport const getJsonFromCvSchema = cvSchema => {\n const jsonOutput = []\n\n const formatConversionValue = ({ conversionValueType, rawConversionValue }) => {\n const stringValue = rawConversionValue.toString()\n\n if (\n conversionValueType === CV_SCHEMA_TYPE_COARSE_GRAINED\n && includes(keys(CV_SCHEMA_COARSE_VALUE_MAPPING), stringValue)\n ) {\n return CV_SCHEMA_COARSE_VALUE_MAPPING[stringValue]\n }\n\n return stringValue\n }\n\n cvSchema.cvSchemaWindows.forEach(cvSchemaWindow => {\n const initialObject = {\n ...DEFAULT_EVENT_MAPPINGS\n }\n\n cvSchemaWindow.cvSchemaConditions.forEach(condition => {\n keys(condition).forEach(key => {\n initialObject[key] = ''\n })\n })\n\n cvSchemaWindow.cvSchemaConditions.forEach(condition => {\n const parsedEntry = {\n ...initialObject,\n conversionValue: formatConversionValue({\n conversionValueType: cvSchemaWindow.schemaType,\n rawConversionValue: condition.conversionValue\n }),\n conversionValueType: cvSchemaWindow.schemaType,\n currency: condition.currency,\n customEventName: condition.eventName,\n maxRange: condition.maxRange ? condition.maxRange.toString() : '',\n minRange: condition.minRange ? condition.minRange.toString() : '',\n postbackSequenceIndex: cvSchemaWindow.postbackSequenceIndex.toString()\n }\n\n if (condition.eventMapping?.meta) {\n parsedEntry.metaEventName = condition.eventMapping.meta || ''\n }\n\n if (condition.eventMapping?.google) {\n parsedEntry.googleEventName = condition.eventMapping.google || ''\n }\n\n if (condition.eventMapping?.tiktok) {\n parsedEntry.tiktokEventName = condition.eventMapping.tiktok || ''\n }\n\n jsonOutput.push(parsedEntry)\n })\n })\n\n return reorderKeysInCollection(\n removeEmptyItemsFromCollection(jsonOutput),\n CSV_PREVIEW_COLUMN_ORDER\n )\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___jeI4T\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___2VYAU\",\"btn-toggle\":\"styles-module__btn-toggle___YUbOc\",\"handle\":\"styles-module__handle___2sf0N\",\"active\":\"styles-module__active___Rrwni\",\"focus\":\"styles-module__focus___Zjgaz\",\"card-panel\":\"styles-module__card-panel___scQtY\",\"panel-heading\":\"styles-module__panel-heading___1QoNv\",\"panel-title\":\"styles-module__panel-title___3ID7m\",\"panel-subtitle\":\"styles-module__panel-subtitle___3HVNG\",\"panel-body\":\"styles-module__panel-body___2iOWo\",\"reportedCampaigns\":\"styles-module__reportedCampaigns___2za35\",\"campaignsList\":\"styles-module__campaignsList___2QGfy\",\"dataRow\":\"styles-module__dataRow___2_vi6\",\"header\":\"styles-module__header___1lrSw\",\"reportedInstalls\":\"styles-module__reportedInstalls___2V1lU\",\"name\":\"styles-module__name___LB34V\",\"spend\":\"styles-module__spend___3uAne\",\"campaignsRow\":\"styles-module__campaignsRow___1ncZH\",\"mergeButtonContainer\":\"styles-module__mergeButtonContainer___D-73I\",\"mergeButton\":\"styles-module__mergeButton___WC-t1\"};","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport FontAwesomeIcon from '../FontAwesomeIcon'\nimport Overlay from '../Overlay'\nimport OverlayText from '../Overlay/Text'\nimport OverlaySubtext from '../Overlay/Subtext'\n\nimport {\n getCompletedOnboardingRequirementsMessage,\n useOnboardingStatusState\n} from '../../contexts/OnboardingStatus'\nimport { metricDefinitionObject } from '../../utils/customPropTypes'\n\nimport styles from './styles.module.scss'\n\nconst AwaitingDataOverlay = ({ isCardOverlay, metricDefinition }) => {\n let message\n\n if (metricDefinition) {\n const { onboardingRequirements } = metricDefinition\n\n message = getCompletedOnboardingRequirementsMessage({\n onboardingRequirements,\n onboardingStatus: useOnboardingStatusState()\n })\n }\n\n return (\n \n
\n
\n \n \n\n {message &&
{message}
}\n
\n\n \n It may take a few hours to see data here\n \n
\n
\n
\n )\n}\n\nAwaitingDataOverlay.propTypes = {\n isCardOverlay: PropTypes.bool,\n metricDefinition: metricDefinitionObject.isRequired\n}\n\nAwaitingDataOverlay.defaultProps = {\n isCardOverlay: false\n}\n\nexport default AwaitingDataOverlay\n","import FontAwesomeIcon from '../FontAwesomeIcon'\nimport Overlay from '../Overlay'\nimport OverlayText from '../Overlay/Text'\nimport OverlaySubtext from '../Overlay/Subtext'\n\nimport styles from './styles.module.scss'\n\nconst NoDataOverlay = ({ className, isCardOverlay }) => (\n \n
\n
\n \n \n\n
No data to display
\n
\n\n \n Please make a different filter selection\n \n
\n
\n
\n)\n\nexport default NoDataOverlay\n","import { useMemo } from 'react'\nimport PropTypes from 'prop-types'\nimport { useQuery } from 'react-query'\nimport { useLocation } from 'react-router-dom'\nimport { map } from 'lodash'\n\nimport Presenter from './presentation'\n\nimport { useMetricDefinitionsState } from '../../contexts/MetricDefinitions'\nimport { useFeatureFlagsState } from '../../contexts/FeatureFlags'\nimport {\n groupMetricDefinitonsByOnboardingStatus, useOnboardingStatusState\n} from '../../contexts/OnboardingStatus'\nimport {\n buildQueryParams,\n useReportingFiltersState,\n getReportPageFromPathname,\n getReportTypeByReportPage\n} from '../../contexts/ReportingFilters'\nimport { USER_ACQUISITION_REPORT_TYPE_STR } from '../../contexts/ReportingFilters/constants'\nimport { useCurrentUserState } from '../../contexts/CurrentUser'\nimport { mergeDataForDrilldownTable } from '../../utils/charts'\nimport { isPresent, mapKeysToMetricDefinitions } from '../../utils/helpers'\nimport {\n generateAppLevelDataByDateForMetrics,\n generateStatsDataByDateForMetrics\n} from '../../utils/mock'\nimport {\n fetchAdRevenueData,\n fetchAdRevenueGranularData,\n fetchGroupedStatsData,\n fetchStatsData,\n fetchReportingData\n} from '../../api/reporting'\n\nimport { transformQueryParamsForV4Api } from '../../api/reporting/helpers'\n\nconst KPIDrilldown = (\n {\n className,\n groupedApiEndpoint,\n metricDefinitionKeys,\n statsApiEndpoint,\n tableHeader\n }\n) => {\n const { featureFlags } = useFeatureFlagsState()\n\n const apiFetchFunctionMapping = {\n adRevenue: fetchAdRevenueData,\n adRevenueGranular: fetchAdRevenueGranularData,\n groupedStats: fetchGroupedStatsData,\n stats: fetchStatsData\n }\n\n const metricDefinitions = mapKeysToMetricDefinitions({\n keys: metricDefinitionKeys,\n state: useMetricDefinitionsState()\n })\n\n const onboardingStatus = useOnboardingStatusState()\n\n const {\n mockableMetricDefinitions,\n queryableMetricDefinitions\n } = groupMetricDefinitonsByOnboardingStatus({ metricDefinitions, onboardingStatus })\n\n const location = useLocation()\n const reportPage = getReportPageFromPathname(location.pathname)\n\n const queryableMetricDefinitionKeys = map(queryableMetricDefinitions, 'key')\n\n const { currentUser } = useCurrentUserState()\n const reportingFilters = useReportingFiltersState()\n\n const queryParamsForFetchingData = {\n ...buildQueryParams({ currentUser, location, reportingFilters }),\n metrics: queryableMetricDefinitionKeys\n }\n\n const queryKey = JSON.stringify(queryParamsForFetchingData)\n\n const canQuery = isPresent(queryableMetricDefinitionKeys)\n const isMocking = !canQuery\n\n const {\n data: statsData,\n isError: isStatsDataError,\n isFetching: isFetchingStatsData,\n isLoading: isLoadingStatsData\n } = useQuery(['KPIDrilldownStats', queryKey], () => {\n if (featureFlags.includes('reporting_v4')) {\n return fetchReportingData({\n context: {\n apiVersion: 4,\n isFlat: true,\n queryParams: transformQueryParamsForV4Api({\n queryParams: queryParamsForFetchingData\n }),\n reportType: getReportTypeByReportPage(reportPage)\n }\n })\n }\n\n const queryFn = apiFetchFunctionMapping[statsApiEndpoint]\n\n return queryFn({ params: queryParamsForFetchingData })\n }, {\n enabled: canQuery\n })\n\n const {\n data: groupedStatsData,\n isError: isGroupedStatsDataError,\n isFetching: isFetchingGroupedStatsData,\n isLoading: isLoadingGroupedStatsData\n } = useQuery(['KPIDrilldownGroupedStats', queryKey], () => {\n if (featureFlags.includes('reporting_v4')) {\n return fetchReportingData({\n context: {\n apiVersion: 4,\n isFlat: true,\n queryParams: transformQueryParamsForV4Api({\n queryParams: queryParamsForFetchingData\n }),\n reportType: getReportTypeByReportPage(reportPage)\n }\n })\n }\n\n const queryFn = apiFetchFunctionMapping[groupedApiEndpoint]\n\n return queryFn({ params: queryParamsForFetchingData })\n }, {\n enabled: canQuery\n })\n\n const isLoading = isLoadingGroupedStatsData || isLoadingStatsData\n const isFetching = isFetchingGroupedStatsData || isFetchingStatsData\n const isPullingData = isLoading || isFetching\n const isError = isGroupedStatsDataError || isStatsDataError\n\n const drilldownData = useMemo(() => {\n if (isMocking) {\n const mockableMetricDefinitionKeys = map(mockableMetricDefinitions, 'key')\n\n return mergeDataForDrilldownTable({\n groupedStatsData: generateAppLevelDataByDateForMetrics(mockableMetricDefinitionKeys),\n statsData: generateStatsDataByDateForMetrics(mockableMetricDefinitionKeys)\n })\n }\n\n if (!(isLoading || isError)) {\n return mergeDataForDrilldownTable({\n groupedStatsData,\n statsData\n })\n }\n\n return []\n }, [groupedStatsData, isError, isLoading, isMocking, mockableMetricDefinitions, statsData])\n\n return (\n \n )\n /* eslint-enable react/jsx-props-no-spreading */\n}\n\nKPIDrilldown.propTypes = {\n className: PropTypes.string,\n groupedApiEndpoint: PropTypes.oneOf(['adRevenue', 'groupedStats']).isRequired,\n metricDefinitionKeys: PropTypes.arrayOf(PropTypes.string).isRequired,\n statsApiEndpoint: PropTypes.oneOf(['adRevenueGranular', 'stats']).isRequired,\n tableHeader: PropTypes.string.isRequired\n}\n\nKPIDrilldown.defaultProps = {\n className: null\n}\n\nexport default KPIDrilldown\n","import PropTypes from 'prop-types'\n\nimport styles from './styles.module.scss'\n\nconst ReportingDataImg = ({ alt, src }) => (\n {alt}\n)\n\nReportingDataImg.propTypes = {\n alt: PropTypes.string.isRequired,\n src: PropTypes.string.isRequired\n}\n\nexport default ReportingDataImg\n","export const GLOBAL_FILTER_DEBOUNCE_MS = 200\nexport const DEFAULT_NAME_HEADER_SORT_TYPE = 'alpha'\nexport const DEFAULT_NAME_HEADER_TEXT = 'Name'\nexport const DEFAULT_COLUMN_SORT_TYPE = 'amount'\nexport const DEFAULT_COLUMN_OPTIONS = {\n sortDescFirst: true\n}\n\nexport const DEFAULT_QUERY_OPTIONS = {\n skip: true\n}\n\nexport const OVERLAP_GROUP_BY_IDS = ['ad_network_id', 'campaign_id']\n","// This variable is a descriptive way for the first page item to be accounted in the range of\n// blocks when the current page is <= to the MIN_NUM_PAGE_NEIGHBORS.\nconst DEFAULT_FIRST_PAGE_ADDITIVE = 1\n\n// First and last page are always visible.\nexport const TOTAL_NUM_DEFAULT_PAGES = 2\n\n// Min number of page items to be shown in the paginator. Excludes first/last page that are always\n// visible. It's a min b/c we add additional page items to the paginator based on the value of the\n// current page.\nexport const MIN_NUM_PAGE_NEIGHBORS = 3\n\nexport const MAX_NUM_PAGES_DISPLAYABLE = TOTAL_NUM_DEFAULT_PAGES + MIN_NUM_PAGE_NEIGHBORS\n\n// Account for the paginator not having both more pages ellipsis items being displayed. This\n// variable is a descriptive way for adding a page item to the paginator when we are not showing\n// both the ellipsis page items.\nconst ELLIPSIS_NOT_VISIBLE_ADDITIVE = 1\n\nexport const MORE_PAGES = 'MORE'\nexport const NEXT_PAGE = 'NEXT'\nexport const PREVIOUS_PAGE = 'PREVIOUS'\n\nexport const NUM_GROWTH_LEFT_PAGES = MIN_NUM_PAGE_NEIGHBORS + ELLIPSIS_NOT_VISIBLE_ADDITIVE\nexport const NUM_GROWTH_RIGHT_PAGES = MIN_NUM_PAGE_NEIGHBORS\n + ELLIPSIS_NOT_VISIBLE_ADDITIVE\n + DEFAULT_FIRST_PAGE_ADDITIVE\n\n// The underscore.js range function's stop variable is exclusive.\n// https://underscorejs.org/#range\nexport const RANGE_ADDITIVE = 1\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___BTw9q\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___2dEMT\",\"btn-toggle\":\"styles-module__btn-toggle___2fX6S\",\"handle\":\"styles-module__handle___1ccUG\",\"active\":\"styles-module__active___2ZWaf\",\"focus\":\"styles-module__focus___2g--3\",\"card-panel\":\"styles-module__card-panel___1K81J\",\"panel-heading\":\"styles-module__panel-heading___1F07K\",\"panel-title\":\"styles-module__panel-title___1NAcG\",\"panel-subtitle\":\"styles-module__panel-subtitle___1zOjX\",\"panel-body\":\"styles-module__panel-body___1fIrq\",\"cardPanel\":\"styles-module__cardPanel___1kcxj\",\"overlayContainer\":\"styles-module__overlayContainer___2x34N\",\"overlay\":\"styles-module__overlay___311vi\",\"overlayContentContainer\":\"styles-module__overlayContentContainer___26Jls\",\"overlayContent\":\"styles-module__overlayContent___2fPLx\",\"panelHeader\":\"styles-module__panelHeader___2SoC5\",\"panelTitle\":\"styles-module__panelTitle___2-kQR\",\"panelBody\":\"styles-module__panelBody___3CkH1\",\"opaquenessFull\":\"styles-module__opaquenessFull___25nBG\",\"opaquenessHalf\":\"styles-module__opaquenessHalf___3ceJ5\",\"opaquenessMild\":\"styles-module__opaquenessMild___3IPDe\",\"opaquenessMore\":\"styles-module__opaquenessMore___2BKi3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___3mi6E\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___7sXP-\",\"btn-toggle\":\"styles-module__btn-toggle___3fV34\",\"handle\":\"styles-module__handle___kbLs1\",\"active\":\"styles-module__active___2FgqJ\",\"focus\":\"styles-module__focus___sGAMx\",\"card-panel\":\"styles-module__card-panel___3JkFb\",\"panel-heading\":\"styles-module__panel-heading___2Fv1M\",\"panel-title\":\"styles-module__panel-title___2iTbF\",\"panel-subtitle\":\"styles-module__panel-subtitle___109BK\",\"panel-body\":\"styles-module__panel-body___2wnNk\",\"cell\":\"styles-module__cell___63G6o\",\"table\":\"styles-module__table___HJ0kU\",\"tableContainer\":\"styles-module__tableContainer___zYjat\",\"body\":\"styles-module__body___OteMr\",\"stickyHeader\":\"styles-module__stickyHeader___3md_f\",\"depthOne\":\"styles-module__depthOne___3vEfc\",\"depthTwo\":\"styles-module__depthTwo___34Qy3\",\"depthThree\":\"styles-module__depthThree___3SKxd\",\"depthFour\":\"styles-module__depthFour___3hMkn\",\"header\":\"styles-module__header___1qkHm\",\"skeletonRow\":\"styles-module__skeletonRow___2pbjG\",\"noSearchMatch\":\"styles-module__noSearchMatch___3poPF\",\"nameCell\":\"styles-module__nameCell___3Eqv4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___2vupi\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___3_RWr\",\"btn-toggle\":\"styles-module__btn-toggle___Pp1gr\",\"handle\":\"styles-module__handle___1BYEs\",\"active\":\"styles-module__active___2znOq\",\"focus\":\"styles-module__focus___2eZXp\",\"card-panel\":\"styles-module__card-panel___3Ogbt\",\"panel-heading\":\"styles-module__panel-heading___3x-0V\",\"panel-title\":\"styles-module__panel-title___676V9\",\"panel-subtitle\":\"styles-module__panel-subtitle___3G7uE\",\"panel-body\":\"styles-module__panel-body___1W4xS\",\"nameHeader\":\"styles-module__nameHeader___27Trc\",\"dateHeader\":\"styles-module__dateHeader___1s-XN\",\"appHeader\":\"styles-module__appHeader___2Y-4E\",\"adNetworkHeader\":\"styles-module__adNetworkHeader___2eDcT\",\"countryHeader\":\"styles-module__countryHeader___xzEDD\",\"platformHeader\":\"styles-module__platformHeader___2qp3D\",\"nameHeaderAllExpandable\":\"styles-module__nameHeaderAllExpandable___1TayU\",\"nameHeaderExpander\":\"styles-module__nameHeaderExpander___1w9g_\",\"nameCell\":\"styles-module__nameCell___21RsP\",\"dateCell\":\"styles-module__dateCell___sbGto\",\"appCell\":\"styles-module__appCell___28uia\",\"adNetworkCell\":\"styles-module__adNetworkCell___1KE1B\",\"countryCell\":\"styles-module__countryCell___2UIXd\",\"platformCell\":\"styles-module__platformCell___1P4xy\",\"metricCell\":\"styles-module__metricCell___PduKG\",\"metricHeader\":\"styles-module__metricHeader___lHhuq\",\"metricHeaderCompact\":\"styles-module__metricHeaderCompact___2Vshv\",\"nameDisplay\":\"styles-module__nameDisplay___3CvST\",\"dateDisplay\":\"styles-module__dateDisplay___iEaV0\"};","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport { BUTTON_LEVELS, DEFAULT_ERROR_TEXT } from './constants'\n\nimport styles from './styles.module.scss'\n\n/*\n eslint-disable jsx-a11y/interactive-supports-focus,\n jsx-a11y/click-events-have-key-events\n*/\nconst Button = ({\n children,\n className,\n errorText,\n isDisabled,\n isError,\n level,\n onClick\n}) => (\n \n {isError ? errorText : children}\n \n)\n/*\n eslint-enable jsx-a11y/interactive-supports-focus,\n jsx-a11y/click-events-have-key-events\n*/\n\nButton.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n errorText: PropTypes.string,\n isDisabled: PropTypes.bool,\n isError: PropTypes.bool,\n level: PropTypes.oneOf(['danger', 'success', 'warning', 'default']),\n onClick: PropTypes.func.isRequired\n}\n\nButton.defaultProps = {\n className: '',\n errorText: DEFAULT_ERROR_TEXT,\n isDisabled: false,\n isError: false,\n level: 'default'\n}\n\nexport default Button\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nclass ClickOutsideAlerter extends React.PureComponent {\n constructor(props) {\n super(props)\n\n this.setWrapperRef = this.setWrapperRef.bind(this)\n this.handleClickOutside = this.handleClickOutside.bind(this)\n }\n\n componentDidMount() {\n document.addEventListener('mousedown', this.handleClickOutside)\n }\n\n componentWillUnmount() {\n document.removeEventListener('mousedown', this.handleClickOutside)\n }\n\n setWrapperRef(node) {\n this.wrapperRef = node\n }\n\n handleClickOutside(event) {\n if (this.wrapperRef && !this.wrapperRef.contains(event.target)) {\n const { onClickOutside } = this.props\n\n onClickOutside()\n }\n }\n\n render() {\n const { children } = this.props\n\n return
{children}
\n }\n}\n\nClickOutsideAlerter.propTypes = {\n children: PropTypes.node.isRequired,\n onClickOutside: PropTypes.func.isRequired\n}\n\nexport default ClickOutsideAlerter\n","import { Children } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport styles from './styles.module.scss'\n\nconst PageHeader = ({ children, className, header }) => (\n

\n {Children.count(children) > 0 ? children : header}\n

\n)\n\nPageHeader.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n header: PropTypes.oneOfType([PropTypes.element, PropTypes.string])\n}\n\nPageHeader.defaultProps = {\n className: null,\n header: null\n}\n\nexport default PageHeader\n","import React, { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { connect, ErrorMessage } from 'formik'\nimport classNames from 'classnames'\nimport { uniqueId } from 'lodash'\n\nimport FormError from '../FormError/FormError'\nimport FormLabel from '../FormLabel/FormLabel'\n\nimport { extractInputProps } from '../../utils/helpers'\nimport { formikInjectedPropTypesObject } from '../../utils/customPropTypes'\nimport styles from './styles.module.scss'\n\nfunction FormTextField(props) {\n const {\n className: classNameProp,\n containerClassName: containerClassNameProp,\n formik,\n helpComponent,\n label,\n ...restOfProps\n } = props\n const {\n name\n } = restOfProps\n\n const [isFocused, setIsFocused] = useState(false)\n\n const handleBlur = useCallback(ev => {\n formik.handleBlur(ev)\n setIsFocused(false)\n }, [formik.handleBlur, name])\n\n const handleFocus = useCallback(() => {\n setIsFocused(true)\n }, [name])\n\n const containerClassName = classNames(styles.container, containerClassNameProp, {\n [styles.containerWithFocusedInput]: isFocused\n })\n const extractedInputProps = extractInputProps(restOfProps)\n const htmlFor = uniqueId(`FormTextField-${name}`)\n\n const inputProps = {\n ...extractedInputProps,\n onChange: formik.handleChange,\n value: formik.values[name]\n }\n\n return (\n
\n {label && }\n\n \n\n \n\n {helpComponent}\n
\n )\n}\n\nFormTextField.propTypes = {\n autoComplete: PropTypes.bool,\n autoFocus: PropTypes.bool,\n className: PropTypes.string,\n containerClassName: PropTypes.string,\n disabled: PropTypes.bool,\n formik: formikInjectedPropTypesObject.isRequired,\n helpComponent: PropTypes.element,\n label: PropTypes.string,\n maxLength: PropTypes.number,\n minLength: PropTypes.number,\n name: PropTypes.string.isRequired,\n pattern: PropTypes.instanceOf(RegExp),\n placeholder: PropTypes.string,\n readOnly: PropTypes.bool,\n required: PropTypes.bool,\n size: PropTypes.number\n}\n\nFormTextField.defaultProps = {\n autoComplete: false,\n autoFocus: false,\n className: '',\n containerClassName: '',\n disabled: false,\n helpComponent: undefined,\n label: undefined,\n maxLength: undefined,\n minLength: undefined,\n pattern: undefined,\n placeholder: undefined,\n readOnly: false,\n required: false,\n size: undefined\n}\n\nexport default connect(FormTextField)\n","// https://fkhadra.github.io/react-toastify/api/toast\nimport { toast } from 'react-toastify'\n\nconst DEFAULT_OPTIONS = {\n autoClose: 5000,\n closeButton: true,\n pauseOnFocusLoss: true,\n pauseOnHover: true,\n position: 'top-right'\n}\n\nconst DEFAULT_ERROR_OPTIONS = Object.assign(DEFAULT_OPTIONS, { autoClose: 10000 })\n\nconst DEFAULT_SUCCESS_OPTIONS = Object.assign(DEFAULT_OPTIONS, { autoClose: 7000 })\n\nexport const displayErrorMessage = (msg, options = {}) => {\n toast.error(msg, Object.assign(DEFAULT_ERROR_OPTIONS, options))\n}\n\nexport const displaySuccessMessage = (msg, options = {}) => {\n toast.success(msg, Object.assign(DEFAULT_SUCCESS_OPTIONS, options))\n}\n\nexport const displayInfoMessage = (msg, options = {}) => {\n toast.info(msg, Object.assign(DEFAULT_OPTIONS, options))\n}\n","import { subDays } from 'date-fns'\nimport { isFunction, random, range, take } from 'lodash'\n\nimport { androidApp, iosApp } from './factories/apps'\nimport { formatDateToStr } from '../components/ReportingSidebar/DateFilter/helpers'\nimport { ONE_SECOND, FIVE_ITEMS } from './constants'\n\nexport const getFormattedDateStrFromDaysAgo = daysAgo => (\n formatDateToStr(subDays(new Date(), daysAgo))\n)\n\n/* eslint-disable sort-keys */\nexport const METRIC_KEY_TO_STAT_GENERATOR = {\n adRevenue: () => random(2000, 3000, true),\n allFraud: () => random(5, 100),\n assists: () => random(5, 100),\n average: () => random(0.01, 1, true),\n blockedClicks: () => random(5, 100),\n blockedDeviceEvents: () => random(5, 100),\n clicks: () => random(10000, 30000),\n conversionValueAvg: () => random(0, 63, true),\n appleConversionValueAvg: () => random(0, 63, true),\n conversionValueCount: () => random(5, 100),\n appleConversionValueCount: () => random(5, 100),\n conversionValueTotal: () => random(5, 1000),\n appleConversionValueTotal: () => random(5, 1000),\n count: () => random(1000, 10000),\n cpEvent: () => random(1, 200, true),\n cpKsessions_1d: () => random(16, 18, true),\n cpKsessions_2d: () => random(14, 16, true),\n cpKsessions_3d: () => random(12, 14, true),\n cpKsessions_7d: () => random(10, 12, true),\n cpKsessions_14d: () => random(8, 10, true),\n cpKsessions_30d: () => random(6, 8, true),\n cpKsessions_90d: () => random(4, 6, true),\n cpUser: () => random(0.5, 80, true),\n cpUser_1d: () => random(0.5, 5, true),\n cpUser_2d: () => random(2, 7, true),\n cpUser_3d: () => random(5, 9, true),\n cpUser_7d: () => random(7, 11, true),\n cpUser_14d: () => random(9, 20, true),\n cpUser_30d: () => random(18, 35, true),\n cpUser_90d: () => random(25, 80, true),\n cpc: () => random(0.1, 10, true),\n cpi: () => random(0.1, 5, true),\n cpm: () => random(0.1, 10, true),\n cpr: () => random(1, 100, true),\n ctr: () => random(1, 100, true),\n cumCnt: () => random(10, 100),\n cumCntPu: () => random(0.001, 1, true),\n cumVal: () => random(10, 100, true),\n cumValPu: () => random(0.001, 1, true),\n cvr: () => random(1, 100, true),\n ecpc: () => random(0.1, 10, true),\n ecpm: () => random(0.1, 10, true),\n fidelityType: () => random(0, 1),\n firstDownloadAssists: () => random(5, 100),\n firstDownloadCount: () => random(5, 100),\n appleFirstDownloadCount: () => random(5, 100),\n firstDownloadCvAvg: () => random(0, 63, true),\n appleFirstDownloadCvAvg: () => random(0, 63, true),\n firstDownloadCvTotal: () => random(5, 1000),\n appleFirstDownloadCvTotal: () => random(5, 1000),\n fraudPurchases: () => random(5, 100),\n fraudRevenue: () => random(10, 1000, true),\n iapArpu: () => random(0.1, 5, true),\n iapRevenue: () => random(3000, 5000, true),\n iapRoi: () => random(-50, 50, true),\n iapRpu: () => random(0.1, 5, true),\n iapRpu_0d: () => random(0.1, 5, true),\n impressions: () => random(10000, 30000),\n installs: () => random(10000, 30000),\n installsDifferencePct: () => random(1, 5, true),\n lifetime: () => random(1, 5, true),\n pubArpu: () => random(0.1, 5, true),\n pubRev: () => random(2000, 3000, true),\n pubrev_0d: () => random(2000, 3000, true),\n pubrev_1d: () => random(2000, 3000, true),\n pubrev_2d: () => random(2000, 3000, true),\n pubrev_4d: () => random(2000, 3000, true),\n pubrev_5d: () => random(2000, 3000, true),\n pubrev_6d: () => random(2000, 3000, true),\n pubrev_7d: () => random(2000, 3000, true),\n pubrev_14d: () => random(2000, 3000, true),\n pubrev_30d: () => random(2000, 3000, true),\n pubrev_60d: () => random(2000, 3000, true),\n pubrev_90d: () => random(2000, 3000, true),\n pubrev_120d: () => random(2000, 3000, true),\n pubRevenue: () => random(2000, 3000, true),\n pubRoi: () => random(-50, 50, true),\n pubRpu: () => random(0.1, 5, true),\n redownloadAssists: () => random(5, 100),\n redownloadCount: () => random(5, 100),\n appleRedownloadCount: () => random(5, 100),\n redownloadCvAvg: () => random(0, 63, true),\n appleRedownloadCvAvg: () => random(0, 63, true),\n redownloadCvTotal: () => random(5, 1000),\n appleRedownloadCvTotal: () => random(5, 1000),\n retention: () => random(1, 20, true),\n retention_0d: () => random(16, 20, true),\n retention_1d: () => random(13, 20, true),\n retention_2d: () => random(11, 16, true),\n retention_3d: () => random(9, 12, true),\n retention_7d: () => random(5, 10, true),\n retention_14d: () => random(2, 6, true),\n retention_30d: () => random(0.5, 4, true),\n retention_90d: () => random(0.1, 1.5, true),\n revenues: () => random(2000, 3000, true),\n roas_0d: () => random(90, 100, true),\n roas_1d: () => random(80, 90, true),\n roas_2d: () => random(70, 80, true),\n roas_3d: () => random(60, 70, true),\n roas_7d: () => random(50, 60, true),\n roas_14d: () => random(40, 50, true),\n roas_30d: () => random(35, 45, true),\n roas_90d: () => random(30, 40, true),\n roi_0d: () => random(90, 100, true),\n roi_1d: () => random(80, 90, true),\n roi_2d: () => random(70, 80, true),\n roi_3d: () => random(60, 70, true),\n roi_7d: () => random(50, 60, true),\n roi_14d: () => random(40, 50, true),\n roi_30d: () => random(35, 45, true),\n roi_90d: () => random(30, 40, true),\n rpu_0d: () => random(90, 100, true),\n rpu_1d: () => random(80, 90, true),\n rpu_2d: () => random(70, 80, true),\n rpu_3d: () => random(60, 70, true),\n rpu_7d: () => random(50, 60, true),\n rpu_14d: () => random(40, 50, true),\n rpu_30d: () => random(35, 45, true),\n rpu_90d: () => random(30, 40, true),\n sessions: () => random(20000, 50000),\n sessions_0d: () => random(20000, 50000),\n sessionsLtpu: () => random(1, 50, true),\n spend: () => random(1000, 2000, true),\n skanSpend: () => random(1000, 2000, true),\n sum: () => random(100, 2000, true),\n tcpi: () => random(1, 50, true),\n totalArpu: () => random(0.1, 5, true),\n totalProfitMargin: () => random(3000, 5000, true),\n totalRev: () => random(3000, 5000, true),\n totalRevenue: () => random(3000, 5000, true),\n totalRev_0d: () => random(100, 200, true),\n totalRev_1d: () => random(200, 300, true),\n totalRev_3d: () => random(300, 400, true),\n totalRev_7d: () => random(600, 900, true),\n totalRev_90d: () => random(1000, 2000, true),\n totalRoas: () => random(-50, 50, true),\n totalRoi: () => random(-50, 50, true),\n totalRpu: () => random(0.1, 5, true),\n trackedClicks: () => random(10000, 30000),\n trackedCvr: () => random(5, 10, true),\n trackedImpressions: () => random(10000, 30000),\n trackedInstalls: () => random(5000, 15000),\n users: () => random(500, 1500),\n clicksDifference: () => random(50, 200),\n clicksDifferencePct: () => random(50, 200),\n installsDifference: () => random(50, 200),\n adMediationRpu: () => random(0.1, 5, true),\n adMediationRevenue: () => random(1000, 5000, true),\n adMediationArpu: () => random(0.1, 5, true),\n avgDau: () => random(500, 1500),\n avgWau: () => random(500, 1500),\n avgMau: () => random(500, 1500),\n totalAdMediationRevenue: () => random(1000, 5000, true),\n totalAdMediationRpu: () => random(0.1, 5, true),\n totalAdMediationArpu: () => random(0.1, 5, true),\n totalAdMediationRoi: () => random(-50, 50, true),\n totalAdMediationRoas: () => random(-50, 50, true),\n totalAdMediationProfitMargin: () => random(-50, 50, true),\n trackedReinstalls: () => random(500, 1500)\n}\n/* eslint-enable sort-keys */\n\nexport const generateRandomStatForMetric = metric => {\n const statGeneratorFn = METRIC_KEY_TO_STAT_GENERATOR[metric]\n\n if (!isFunction(statGeneratorFn)) {\n throw new Error(`Missing METRIC_KEY_TO_STAT_GENERATOR metric key ${metric}`)\n }\n\n return statGeneratorFn()\n}\n\nconst generateRandomStatsForMetrics = metrics => (\n metrics.reduce((stats, metric) => {\n stats[metric] = generateRandomStatForMetric(metric)\n\n return stats\n }, {})\n)\n\nconst getDateRange = () => range(31).map(daysToSub => getFormattedDateStrFromDaysAgo(daysToSub))\n\nexport const generateSummaryLevelDataForMetric = metric => generateRandomStatForMetric(metric)\n\nexport const generateSummaryLevelDataForMetrics = metrics => generateRandomStatsForMetrics(metrics)\n\nexport const generateStatsDataByDateForMetrics = metrics => (\n getDateRange().map(date => ({\n date,\n ...generateRandomStatsForMetrics(metrics)\n }))\n)\n\nexport const generateAppLevelDataByXDayForMetrics = metrics => (\n range(31).flatMap(xday => ([\n {\n xday,\n ...iosApp,\n ...generateRandomStatsForMetrics(metrics)\n },\n {\n xday,\n ...androidApp,\n ...generateRandomStatsForMetrics(metrics)\n }\n ]))\n)\n\nexport const generateAppLevelDataByDateForMetrics = metrics => (\n getDateRange().flatMap(date => ([\n {\n date,\n ...iosApp,\n ...generateRandomStatsForMetrics(metrics)\n },\n {\n date,\n ...androidApp,\n ...generateRandomStatsForMetrics(metrics)\n }\n ]))\n)\n\nexport const generateAppLevelConversionValueData = () => {\n const NULL_CONVERSIONS_COUNT = 4000\n const ZERO_CONVERSIONS_COUNT = 19000\n const RANDOMIZATION_AMOUNT = 100\n\n const conversionValueCountDistribution = [\n ZERO_CONVERSIONS_COUNT,\n 1200, 900, 600, 500, 400, 400, 500, 500, 600, 800,\n 800, 900, 900, 1500, 1700, 500, 2200, 2400, 1900, 2400,\n 2800, 2900, 1500, 3200, 3300, 3700, 3300, 3200, 4000, 4200,\n 3200, 3700, 5000, 4000, 5000, 5300, 5300, 5400, 5500, 5600,\n 4000, 5700, 5800, 6000, 6300, 6500, 6600, 5900, 7100, 6900,\n 6800, 6600, 6300, 6400, 6100, 6000, 5800, 5600, 5200, 5000,\n 4500, 3200, 1500\n ]\n\n const conversionValueData = [\n {\n attributes: {\n conversionValue: null,\n conversionValueCount: NULL_CONVERSIONS_COUNT + random(RANDOMIZATION_AMOUNT),\n name: null\n },\n id: '',\n type: 'sk_ad_network_report'\n }\n ]\n\n conversionValueCountDistribution.forEach((number, index) => {\n conversionValueData.push({\n attributes: {\n conversionValue: index,\n conversionValueCount: number + random(RANDOMIZATION_AMOUNT),\n name: String(index)\n },\n id: String(index),\n type: 'sk_ad_network_report'\n })\n })\n\n return [conversionValueData]\n}\n\nexport const fetchMockAppLevelDataByDateForMetrics = async ({ params }) => {\n const metricsToMock = params.metrics || []\n\n const fetchMockData = () => new Promise(resolve => {\n setTimeout(() => {\n resolve(generateAppLevelDataByDateForMetrics(metricsToMock))\n }, ONE_SECOND)\n })\n\n const data = await fetchMockData()\n\n return take(data, FIVE_ITEMS)\n}\n\nexport const fetchMockConversionValueDataForApp = async () => {\n const fetchMockData = () => new Promise(resolve => {\n setTimeout(() => {\n resolve(generateAppLevelConversionValueData())\n }, ONE_SECOND)\n })\n\n const data = await fetchMockData()\n\n return data\n}\n","import { find } from 'lodash'\n\nexport const processAllMergeableCampaigns = ({ tracked, reported }) => ({\n reportedCampaigns: reported.map(\n ({\n campaignId: id,\n campaignName: name,\n installs: reportedInstalls,\n spend\n }) => ({\n id,\n name,\n reportedInstalls,\n spend\n })\n ),\n trackedCampaigns: tracked.map(\n ({\n campaignId: id,\n campaignName: name,\n trackedInstalls\n }) => ({\n id,\n name,\n trackedInstalls\n })\n )\n})\n\nexport const getAppByUrl = ({ apps, urlSearch }) => {\n const appId = new URLSearchParams(urlSearch).get('app_id')\n\n if (appId) {\n return find(apps, { id: appId }) || null\n }\n\n return null\n}\n\nexport const getChannelByUrl = ({ channels, urlSearch }) => {\n const channelId = new URLSearchParams(urlSearch).get('ad_network_id')\n\n if (channelId) {\n return find(channels, { id: Number(channelId) }) || null\n }\n\n return null\n}\n\nexport const getLookbackWindowByUrl = ({ lookbackWindows, urlSearch }) => {\n const lookbackWindow = new URLSearchParams(urlSearch).get('lookback_window')\n\n if (lookbackWindow) {\n return find(lookbackWindows, { value: Number(lookbackWindow) }) || null\n }\n\n return null\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___3nzq5\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___36K6V\",\"btn-toggle\":\"styles-module__btn-toggle___3LxUT\",\"handle\":\"styles-module__handle___Mn0e8\",\"active\":\"styles-module__active___b4Vc2\",\"focus\":\"styles-module__focus___2HV02\",\"card-panel\":\"styles-module__card-panel___29GyH\",\"panel-heading\":\"styles-module__panel-heading___3K59N\",\"panel-title\":\"styles-module__panel-title___2joil\",\"panel-subtitle\":\"styles-module__panel-subtitle___2BPsA\",\"panel-body\":\"styles-module__panel-body___38Evf\",\"card\":\"styles-module__card___dQp7V\",\"cardContent\":\"styles-module__cardContent___3Qdt6\",\"leftCard\":\"styles-module__leftCard___4RBw8\",\"rightCard\":\"styles-module__rightCard___N8mpE\",\"firstCard\":\"styles-module__firstCard___1dWB6\",\"lastCard\":\"styles-module__lastCard___27gVl\",\"middleCard\":\"styles-module__middleCard___2mk49\",\"container\":\"styles-module__container___2tqky\",\"value\":\"styles-module__value___2J7yL\",\"valueSkeleton\":\"styles-module__valueSkeleton___1RbnF\",\"dataLabel\":\"styles-module__dataLabel___yOuf4\",\"dataNoValue\":\"styles-module__dataNoValue___3dNSf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___2HXTC\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1cYEY\",\"btn-toggle\":\"styles-module__btn-toggle___2q2F3\",\"handle\":\"styles-module__handle___pGm79\",\"active\":\"styles-module__active___2ubgt\",\"focus\":\"styles-module__focus___22Qrt\",\"card-panel\":\"styles-module__card-panel___3LzSv\",\"panel-heading\":\"styles-module__panel-heading___MtqnE\",\"panel-title\":\"styles-module__panel-title___3h7zx\",\"panel-subtitle\":\"styles-module__panel-subtitle___30QFr\",\"panel-body\":\"styles-module__panel-body___1IhSs\",\"container\":\"styles-module__container___2yjj7\",\"header\":\"styles-module__header___rD23P\",\"thin\":\"styles-module__thin___1SU6u\",\"title\":\"styles-module__title___3XHef\",\"appList\":\"styles-module__appList___1x56F\",\"channelList\":\"styles-module__channelList___33kQV\",\"appListItem\":\"styles-module__appListItem___QfoyF\",\"channelListItem\":\"styles-module__channelListItem___1tvBa\",\"appSearch\":\"styles-module__appSearch___2CBEI\",\"channelSearch\":\"styles-module__channelSearch___1ua8x\",\"copyStatus\":\"styles-module__copyStatus___1WbzB\"};","import PropTypes from 'prop-types'\n\nimport FontAwesomeIcon from '../FontAwesomeIcon'\nimport Overlay from '../Overlay'\nimport OverlayText from '../Overlay/Text'\n\nimport styles from './styles.module.scss'\n\nconst ChartFailed = ({ isCardOverlay, onReloadClick }) => (\n \n \n The data failed to load\n \n\n \n \n)\n\nChartFailed.propTypes = {\n isCardOverlay: PropTypes.bool,\n onReloadClick: PropTypes.func.isRequired\n}\n\nChartFailed.defaultProps = {\n isCardOverlay: false\n}\n\nexport default ChartFailed\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport FontAwesomeIcon from '../../../../../FontAwesomeIcon'\n\nimport styles from './styles.module.scss'\n\nconst MultiSelectIcon = ({ isSelected }) => {\n const className = classNames(styles.icon, {\n [styles.selected]: isSelected\n })\n\n const iconName = isSelected ? 'check-square' : 'square'\n\n return (\n
\n \n
\n )\n}\n\nMultiSelectIcon.propTypes = {\n isSelected: PropTypes.bool.isRequired\n}\n\nexport default MultiSelectIcon\n","import React, { useEffect, useRef } from 'react'\n\nexport default function usePrevious(value) {\n const ref = useRef()\n\n useEffect(() => {\n ref.current = value\n })\n\n return ref.current\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"controlBgColor\":\"#fff\",\"controlBgColorDisabled\":\"#eee\",\"controlBorder\":\"1px solid #dee9f4\",\"controlBorderRadius\":\"6px\",\"controlLineHeight\":\"40px\",\"controlFontFamily\":\"\\\"Montserrat\\\",\\\"Lato\\\",\\\"Helvetica Neue\\\",Helvetica,Sans-serif\",\"controlFontSize\":\"14px\",\"controlFontWeight\":\"600\",\"menuZIndex\":\"8000\",\"singleValueColor\":\"#0271c3\",\"singleValueFontWeight\":\"500\",\"valueContainerPadding\":\"2px 15px\",\"google-oauth-button\":\"styles-module__google-oauth-button___21Jjw\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___2g1xK\",\"btn-toggle\":\"styles-module__btn-toggle___2NKmz\",\"handle\":\"styles-module__handle___TLclz\",\"active\":\"styles-module__active___38KVy\",\"focus\":\"styles-module__focus___2ToRQ\",\"card-panel\":\"styles-module__card-panel___7Mkvs\",\"panel-heading\":\"styles-module__panel-heading___r118I\",\"panel-title\":\"styles-module__panel-title___2-1gj\",\"panel-subtitle\":\"styles-module__panel-subtitle___3IeCc\",\"panel-body\":\"styles-module__panel-body___2kFlR\"};","export const SKELETON_ROW_COUNT = 4\n\nexport const MIN_ROW_LENGTH_RENDER_COUNT = 1\n\nexport const DEFAULT_FLEX = 1\n\nexport const HEADER_EVENT = 'Event'\nexport const HEADER_NAME = 'Name'\nexport const HEADER_STATUS = 'Status'\nexport const HEADER_USER_FILTER = 'User Filter'\n\nexport const COLUMN_HEADER_FLEX_MAPPING = {\n '': 1,\n [HEADER_EVENT]: 1.25,\n [HEADER_NAME]: 1.25,\n [HEADER_STATUS]: 0.5,\n [HEADER_USER_FILTER]: 1\n}\n","export const DEFAULT_CELL_WIDTH = 75\n\nexport const NON_METRIC_CELL_WIDTH_MAPPING = {\n adNetwork: 25,\n app: 200,\n country: 200,\n date: 95,\n name: 200,\n platform: 25\n}\n\nexport const INITIAL_STATE_SORT_BY = [{ desc: false, id: 'name' }]\n\nexport const RESIZE_TIMEOUT_IN_MS = 150\n\nexport const EMPTY_HEADER = ''\nexport const DEFAULT_PAGE_SIZE = 100\nexport const DEFAULT_PAGE_INDEX = 0\n","import React from 'react'\nimport classNames from 'classnames'\nimport PropTypes from 'prop-types'\n\nimport styles from './styles.module.scss'\n\nconst CardHeader = ({ children, className, isActive }) => (\n

\n {children}\n

\n)\n\nCardHeader.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n isActive: PropTypes.bool\n}\n\nCardHeader.defaultProps = {\n className: null,\n isActive: false\n}\n\nexport default CardHeader\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport Tooltip from 'rc-tooltip'\n\nimport { TOOLTIP_DELAY_IN_S } from './constants'\nimport { metricDefinitionObject } from '../../utils/customPropTypes'\n\nimport styles from './styles.module.scss'\n\nconst Overlay = ({ className, metric }) => {\n const {\n dataSource,\n desc,\n formula,\n link,\n title\n } = metric.components.tooltip\n\n const showFormula = formula.length > 0\n const showLink = link.length > 0\n\n return (\n
\n
{title}
\n
Data Source: {dataSource}
\n
{desc}
\n {showFormula &&
{formula}
}\n {showLink && (\n \n Learn More...\n \n )}\n
\n )\n}\n\nconst MetricTooltip = ({ className, metric, children, placement }) => (\n \n )}\n overlayClassName={styles.overlay}\n placement={placement}\n >\n {children}\n \n)\n\nOverlay.propTypes = {\n className: PropTypes.string,\n metric: metricDefinitionObject.isRequired\n}\n\nOverlay.defaultProps = {\n className: null\n}\n\nMetricTooltip.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n metric: metricDefinitionObject.isRequired,\n placement: PropTypes.oneOf(['top', 'bottom', 'left', 'right'])\n}\n\nMetricTooltip.defaultProps = {\n className: null,\n placement: 'top'\n}\n\nexport default MetricTooltip\n","import classNames from 'classnames'\nimport { omit } from 'lodash'\nimport React from 'react'\nimport Select, { components } from 'react-select'\n\nimport { deepCamelKeys } from '../../utils/helpers'\nimport { PRIMARY_COLORS } from '../../utils/react-select'\nimport Icon from '../Icon'\nimport PlatformIcon from '../PlatformIcon'\nimport stylesObj from './styles.module.scss'\n\nexport const customStyles = {\n container: styles => ({ ...styles, cursor: 'pointer' }),\n control: () => ({\n backgroundColor: stylesObj.controlBackgroundColor,\n border: stylesObj.controlBorder,\n borderRadius: stylesObj.controlBorderRadius,\n display: 'flex',\n flexGrow: 0,\n flexShrink: 1,\n fontFamily: stylesObj.controlFontFamily,\n fontSize: stylesObj.controlFontSize,\n fontWeight: stylesObj.controlFontWeight,\n lineHeight: stylesObj.controlLineHeight\n }),\n dropdownIndicator: styles => ({\n ...styles,\n ':hover': {\n ...styles[':hover'],\n color: stylesObj.dropdownIndicatorColor\n },\n color: stylesObj.dropdownIndicatorColor\n }),\n indicatorSeparator: styles => ({\n ...styles,\n display: 'none',\n width: 0\n }),\n input: styles => ({\n ...styles,\n color: 'transparent'\n }),\n menu: styles => ({\n ...styles,\n whiteSpace: 'nowrap',\n width: 'auto',\n zIndex: stylesObj.menuZIndex\n }),\n menuList: styles => ({\n ...styles,\n '&::-webkit-scrollbar': {\n '-webkit-appearance': 'none'\n },\n '&::-webkit-scrollbar-thumb': {\n backgroundColor: stylesObj.menuListScrollbarBackgroundColor,\n border: stylesObj.menuListScrollbarBorder,\n borderRadius: stylesObj.menuListScrollbarBorderRadius\n },\n '&::-webkit-scrollbar:horizontal': {\n height: stylesObj.menuListScrollbarDimensions\n },\n '&::-webkit-scrollbar:vertical': {\n width: stylesObj.menuListScrollbarDimensions\n }\n }),\n placeholder: styles => ({\n ...styles,\n color: stylesObj.placeholderColor,\n fontStyle: 'italic',\n fontWeight: stylesObj.placeholderFontWeight,\n padding: stylesObj.placeholderPadding\n }),\n singleValue: styles => ({\n ...omit(styles, ['maxWidth', 'position', 'transform']),\n color: stylesObj.singleValueColor,\n fontWeight: stylesObj.singleValueFontWeight,\n margin: 0,\n padding: stylesObj.singleValuePadding\n }),\n valueContainer: styles => ({\n ...styles,\n flexWrap: 'nowrap',\n padding: 0\n })\n}\n\nconst CustomOption = props => {\n // eslint-disable-next-line react/prop-types\n const { data } = props\n\n const { iconUrl, label, name, platform, id } = deepCamelKeys(data)\n\n return (\n \n \n {iconUrl && }\n {platform && (\n \n )}\n {name || label || id}\n \n \n )\n}\n\n/* eslint-disable react/prop-types, react/jsx-props-no-spreading */\nconst FormDropdown = ({ customStyles: customStylesProp, ...restProps }) => (\n ({\n ...theme,\n colors: {\n ...theme.colors,\n primary: PRIMARY_COLORS.base,\n primary25: PRIMARY_COLORS['25'],\n primary50: PRIMARY_COLORS['50'],\n primary75: PRIMARY_COLORS['75']\n }\n })}\n components={{\n Option: CustomOption\n }}\n />\n)\n/* eslint-enable react/prop-types, react/jsx-props-no-spreading */\n\nexport default FormDropdown\n","import { isEqual, map } from 'lodash'\n\n// eslint-disable-next-line import/prefer-default-export\nexport const hasSelectedAllVisibleItems = (\n {\n key,\n selectedKeys,\n visibleItems\n }\n) => {\n if (visibleItems.length !== selectedKeys.length) {\n return false\n }\n\n const visibleKeys = map(visibleItems, key || 'id')\n return isEqual(visibleKeys.sort(), selectedKeys.sort())\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___zwAVg\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___TH7_r\",\"btn-toggle\":\"styles-module__btn-toggle___329ft\",\"handle\":\"styles-module__handle___xK4vL\",\"active\":\"styles-module__active___3_p2T\",\"focus\":\"styles-module__focus___jwmcy\",\"card-panel\":\"styles-module__card-panel___2uvlD\",\"panel-heading\":\"styles-module__panel-heading___1jmI_\",\"panel-title\":\"styles-module__panel-title___2-7vW\",\"panel-subtitle\":\"styles-module__panel-subtitle___19V7T\",\"panel-body\":\"styles-module__panel-body___RsSLf\",\"sidebar\":\"styles-module__sidebar___3sMCJ\",\"sidebarCollapsed\":\"styles-module__sidebarCollapsed___2LG1t\",\"sidebarContent\":\"styles-module__sidebarContent___1hVqS\"};","export const getNumberAsPercentage = number => number * 100\n\nexport const sanitizePercentage = newValue => {\n const numValue = Number(newValue)\n\n if (Number.isNaN(numValue) || numValue < 0) {\n return 0\n }\n\n if (numValue > 100) {\n return 100\n }\n\n return Math.round(numValue)\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___1BHqZ\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1TnA3\",\"btn-toggle\":\"styles-module__btn-toggle___2nzbp\",\"handle\":\"styles-module__handle___2XF-F\",\"active\":\"styles-module__active___3s8Cv\",\"focus\":\"styles-module__focus___Y49pF\",\"card-panel\":\"styles-module__card-panel___3_HHE\",\"panel-heading\":\"styles-module__panel-heading___zwafc\",\"panel-title\":\"styles-module__panel-title___3bXLx\",\"panel-subtitle\":\"styles-module__panel-subtitle___1in8t\",\"panel-body\":\"styles-module__panel-body___24A_1\",\"menu\":\"styles-module__menu___2AfMV\",\"menuInner\":\"styles-module__menuInner___3vzbt\",\"menuInnerMultiple\":\"styles-module__menuInnerMultiple___2AjA_\",\"header\":\"styles-module__header___1HF6f\",\"searchInputContainer\":\"styles-module__searchInputContainer___YNVLE\",\"searchInput\":\"styles-module__searchInput___2Tiau\",\"footer\":\"styles-module__footer___2WZbJ\",\"footerWithMultipleActions\":\"styles-module__footerWithMultipleActions___1SvXx\",\"saveBtn\":\"styles-module__saveBtn___3ZMRP\",\"open\":\"styles-module__open___2yToE\",\"dropdown-toggle\":\"styles-module__dropdown-toggle___2U-uR\",\"disabled\":\"styles-module__disabled___3ZkDk\",\"badge\":\"styles-module__badge___1zuSN\",\"btn\":\"styles-module__btn___3mfRy\",\"clearBtn\":\"styles-module__clearBtn___28-G6\",\"selectAllCheckboxLabel\":\"styles-module__selectAllCheckboxLabel___MuJbC\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___ZAOY1\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___3wSuw\",\"btn-toggle\":\"styles-module__btn-toggle___1lCwt\",\"handle\":\"styles-module__handle___1bcYX\",\"active\":\"styles-module__active___3s3aR\",\"focus\":\"styles-module__focus___2nl6Q\",\"card-panel\":\"styles-module__card-panel___wR9Mm\",\"panel-heading\":\"styles-module__panel-heading___1X7gL\",\"panel-title\":\"styles-module__panel-title___3_wb3\",\"panel-subtitle\":\"styles-module__panel-subtitle___3_ZgG\",\"panel-body\":\"styles-module__panel-body___AOEXp\",\"asyncButton\":\"styles-module__asyncButton___2ljPn\",\"isHoverable\":\"styles-module__isHoverable___1edPS\",\"success\":\"styles-module__success___3aqNJ\",\"danger\":\"styles-module__danger___2p08a\",\"warning\":\"styles-module__warning___1WM5z\",\"isDisabled\":\"styles-module__isDisabled___p0cTc\",\"isLoading\":\"styles-module__isLoading___z727x\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"controlColor\":\"#265479\",\"controlFontSize\":\"20px\",\"controlFontWeight\":\"700\",\"dropdownIndicatorPaddingTop\":\"5px\",\"indicatorsContainerPaddingRight\":\"30px\",\"google-oauth-button\":\"styles-module__google-oauth-button___J8cKm\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___38n8B\",\"btn-toggle\":\"styles-module__btn-toggle___3MEhB\",\"handle\":\"styles-module__handle___2GMuS\",\"active\":\"styles-module__active___1Lzt0\",\"focus\":\"styles-module__focus___1P2sN\",\"card-panel\":\"styles-module__card-panel___22Y4S\",\"panel-heading\":\"styles-module__panel-heading___SMDDO\",\"panel-title\":\"styles-module__panel-title___14Trg\",\"panel-subtitle\":\"styles-module__panel-subtitle___2zNOf\",\"panel-body\":\"styles-module__panel-body___1i2Vq\",\"label\":\"styles-module__label___NtLHy\",\"optionLabel\":\"styles-module__optionLabel___2DaIC\",\"appSelector\":\"styles-module__appSelector___jCX-t\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___BhzRO\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___2yjsy\",\"btn-toggle\":\"styles-module__btn-toggle___pw3Os\",\"handle\":\"styles-module__handle___1gZs_\",\"active\":\"styles-module__active___1Ht2n\",\"focus\":\"styles-module__focus___1TfoY\",\"card-panel\":\"styles-module__card-panel___1K9cW\",\"panel-heading\":\"styles-module__panel-heading___eOval\",\"panel-title\":\"styles-module__panel-title___vSUnA\",\"panel-subtitle\":\"styles-module__panel-subtitle___3iHAw\",\"panel-body\":\"styles-module__panel-body___15dDp\",\"card\":\"styles-module__card___3Wy9A\",\"cardContent\":\"styles-module__cardContent___u_loD\",\"leftCard\":\"styles-module__leftCard___2IuHQ\",\"rightCard\":\"styles-module__rightCard___Syy6T\",\"link\":\"styles-module__link___1lK2r\",\"kpiDataContainer\":\"styles-module__kpiDataContainer___3vrJ9\",\"kpiDataValue\":\"styles-module__kpiDataValue___9Pr-X\",\"valueSkeleton\":\"styles-module__valueSkeleton___1GRv4\",\"kpiDataLabel\":\"styles-module__kpiDataLabel___suW5T\",\"kpiDataNoValue\":\"styles-module__kpiDataNoValue___1-RyZ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___3tTK3\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1upO6\",\"btn-toggle\":\"styles-module__btn-toggle___2-QLj\",\"handle\":\"styles-module__handle___ls-7s\",\"active\":\"styles-module__active___4urk7\",\"focus\":\"styles-module__focus___2uLTw\",\"card-panel\":\"styles-module__card-panel___3abSy\",\"panel-heading\":\"styles-module__panel-heading___1aSQc\",\"panel-title\":\"styles-module__panel-title___3TiJd\",\"panel-subtitle\":\"styles-module__panel-subtitle___11-HS\",\"panel-body\":\"styles-module__panel-body___J8nKL\",\"tooltip\":\"styles-module__tooltip___3xv9A\",\"tooltipHeaderLabel\":\"styles-module__tooltipHeaderLabel___1QUpB\",\"tooltipHeaderKey\":\"styles-module__tooltipHeaderKey___15bXZ\",\"tooltipDivider\":\"styles-module__tooltipDivider___2_Avy\",\"tooltipPoint\":\"styles-module__tooltipPoint___1JelS\",\"tooltipPointConversionCount\":\"styles-module__tooltipPointConversionCount___3yNjO\",\"tooltipPointLabel\":\"styles-module__tooltipPointLabel___196IC\",\"tooltipPointSeries\":\"styles-module__tooltipPointSeries___ot0JS\",\"tooltipPointSeriesName\":\"styles-module__tooltipPointSeriesName___2i3pi\",\"tooltipPointSeriesBlock\":\"styles-module__tooltipPointSeriesBlock___2eydb\"};","import {\n LEVEL_DANGER,\n LEVEL_SUCCESS,\n LEVEL_WARNING,\n THRESHOLD_SUCCESS,\n THRESHOLD_WARNING,\n PERCENTAGE_MULTIPLIER,\n PERCENTAGE_PRECISION\n} from './constants'\n\nexport const getPercentageByValue = value => {\n const includesDecimalPoint = value.toString().includes('.')\n\n if (includesDecimalPoint) {\n return `${parseFloat((value * PERCENTAGE_MULTIPLIER).toFixed(PERCENTAGE_PRECISION))}%`\n }\n\n return `${value}%`\n}\n\nexport const getLevelByValueInThreshold = value => {\n let percentage = value\n\n const isWholePercentage = !percentage.toString().includes('.')\n\n if (isWholePercentage) {\n percentage /= PERCENTAGE_MULTIPLIER\n }\n\n if (percentage >= THRESHOLD_SUCCESS) {\n return LEVEL_SUCCESS\n }\n\n if (percentage >= THRESHOLD_WARNING) {\n return LEVEL_WARNING\n }\n\n return LEVEL_DANGER\n}\n","export const THRESHOLD_SUCCESS = 0.75\nexport const THRESHOLD_WARNING = 0.5\n\nexport const LEVEL_DANGER = 'danger'\nexport const LEVEL_SUCCESS = 'success'\nexport const LEVEL_WARNING = 'warning'\n\nexport const PERCENTAGE_MULTIPLIER = 100\nexport const PERCENTAGE_PRECISION = 2\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___r-uA8\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___2CyPp\",\"btn-toggle\":\"styles-module__btn-toggle___sD9RO\",\"handle\":\"styles-module__handle___3_wbe\",\"active\":\"styles-module__active___LxIP1\",\"focus\":\"styles-module__focus___1UGMD\",\"card-panel\":\"styles-module__card-panel___uPMCw\",\"panel-heading\":\"styles-module__panel-heading___klP5H\",\"panel-title\":\"styles-module__panel-title___1MfP8\",\"panel-subtitle\":\"styles-module__panel-subtitle___12VjW\",\"panel-body\":\"styles-module__panel-body___uLTJc\",\"container\":\"styles-module__container___vn1hD\",\"links\":\"styles-module__links___6pPDN\",\"tableColumnLeft\":\"styles-module__tableColumnLeft___Zd0X1\",\"tableColumnRight\":\"styles-module__tableColumnRight___Brg6N\",\"componentEntry\":\"styles-module__componentEntry___1D2ys\",\"componentPreview\":\"styles-module__componentPreview___2I4fi\",\"search\":\"styles-module__search___1Xoeq\"};","import { isEmpty } from 'lodash'\n\nexport const validDates = (startDate, endDate) => {\n const startDateGiven = !isEmpty(startDate)\n const startDateValue = Date.parse(startDate)\n const endDateValue = Date.parse(endDate)\n\n const hasValidStartDate = startDateGiven && Number.isFinite(startDateValue)\n const hasValidEndDate = isEmpty(endDate) || Number.isFinite(endDateValue)\n\n return hasValidStartDate && hasValidEndDate\n}\n\nexport const validDateRange = (startDate, endDate) => {\n const startDateValue = Date.parse(startDate)\n const endDateValue = Date.parse(endDate)\n\n return isEmpty(endDate) || startDateValue <= endDateValue\n}\n","// eslint-disable-next-line import/prefer-default-export\nexport const calculateRowRange = ({ pageIndex, pageSize, rowCount }) => {\n const startIndex = pageIndex * pageSize\n const endIndex = Math.min((pageIndex + 1) * pageSize - 1, rowCount - 1)\n\n return {\n end: endIndex + 1,\n start: startIndex + 1\n }\n}\n\nexport const getAllRowsText = rowCount => {\n if (rowCount === 0) {\n return 'No results.'\n }\n\n if (rowCount === 1) {\n return 'Viewing 1 row.'\n }\n\n return `Viewing all ${rowCount} rows.`\n}\n","export const OVERLAY_OPAQUENESS = {\n FULL: 'full',\n MORE: 'more',\n NONE: 'none'\n}\n","import { snakeCase } from 'snake-case'\n\nimport { TENJIN_ATTRIBUTION_PROVIDER_ID } from '../../utils/constants'\nimport { isBlank, omitEmptyValues } from '../../utils/helpers'\nimport {\n DASHBOARD_APPS_AD_NETWORK_SETTINGS_PATH,\n DASHBOARD_APPS_CALLBACK_GROUPS_PATH,\n DASHBOARD_APPS_CALLBACK_HEALTH_PATH,\n DASHBOARD_APPS_CHANNEL_SETTINGS_PATH,\n DASHBOARD_APPS_CREDENTIAL_SETTINGS_PATH,\n DASHBOARD_APPS_EVENT_CALLBACKS_PATH,\n DASHBOARD_APPS_INTEGRATIONS_PATH,\n DASHBOARD_APPS_S2S_CALLBACKS_PATH,\n DASHBOARD_APPS_URL\n} from './constants'\n\nimport { MOCK_REPORTING_API_URL, isMockReportingApiEnabled } from '../../utils/mock-reporting-api'\n\nexport const sanitizeValues = values => {\n const data = {\n attributionProviderId: values.attributionProviderId,\n platform: snakeCase(values.platform)\n }\n\n if (isBlank(values.storeUrl)) {\n data.storeName = values.storeName\n data.bundleId = values.bundleId\n data.destinationUrl = values.destinationUrl\n } else {\n data.storeUrl = values.storeUrl\n }\n\n if (values.attributionProviderId !== TENJIN_ATTRIBUTION_PROVIDER_ID) {\n data.tenjinSdk = values.tenjinSdk\n }\n\n return omitEmptyValues(data)\n}\n\nexport const getChannelSettingsUrl = ({ appId, channelId }) => [\n `${isMockReportingApiEnabled() ? MOCK_REPORTING_API_URL : ''}`,\n `${DASHBOARD_APPS_URL}/${appId}`,\n `${DASHBOARD_APPS_INTEGRATIONS_PATH}/${channelId}`,\n DASHBOARD_APPS_CALLBACK_GROUPS_PATH,\n DASHBOARD_APPS_CHANNEL_SETTINGS_PATH\n].join('')\n\nexport const getCredentialSettingsUrl = ({ appId, channelId }) => [\n `${isMockReportingApiEnabled() ? MOCK_REPORTING_API_URL : ''}`,\n `${DASHBOARD_APPS_URL}/${appId}`,\n `${DASHBOARD_APPS_INTEGRATIONS_PATH}/${channelId}`,\n DASHBOARD_APPS_CALLBACK_GROUPS_PATH,\n DASHBOARD_APPS_CREDENTIAL_SETTINGS_PATH\n].join('')\n\nexport const getCallbackHealthUrl = appId => [\n `${isMockReportingApiEnabled() ? MOCK_REPORTING_API_URL : ''}`,\n `${DASHBOARD_APPS_URL}/${appId}`,\n DASHBOARD_APPS_EVENT_CALLBACKS_PATH,\n DASHBOARD_APPS_CALLBACK_HEALTH_PATH\n].join('')\n\nexport const getCallbackGroupsUrl = ({ appId, channelId, callbackGroupId }) => [\n `${isMockReportingApiEnabled() ? MOCK_REPORTING_API_URL : ''}`,\n `${DASHBOARD_APPS_URL}/${appId}`,\n `${DASHBOARD_APPS_INTEGRATIONS_PATH}/${channelId}`,\n `${DASHBOARD_APPS_CALLBACK_GROUPS_PATH}${callbackGroupId ? `/${callbackGroupId}` : ''}`\n].join('')\n\nexport const getEventCallbacksUrl = appId => [\n `${isMockReportingApiEnabled() ? MOCK_REPORTING_API_URL : ''}`,\n `${DASHBOARD_APPS_URL}/${appId}`,\n `${DASHBOARD_APPS_EVENT_CALLBACKS_PATH}`\n].join('')\n\nexport const getCustomCallbackCreationUrl = appId => [\n `${isMockReportingApiEnabled() ? MOCK_REPORTING_API_URL : ''}`,\n `${DASHBOARD_APPS_URL}/${appId}`,\n `${DASHBOARD_APPS_EVENT_CALLBACKS_PATH}`,\n '/new?step=2'\n].join('')\n\nexport const getCustomCallbackUrl = ({ appId, callbackId }) => [\n `${isMockReportingApiEnabled() ? MOCK_REPORTING_API_URL : ''}`,\n `${DASHBOARD_APPS_URL}/${appId}`,\n `${DASHBOARD_APPS_EVENT_CALLBACKS_PATH}`,\n `/${callbackId}`,\n '/edit'\n].join('')\n\nexport const getS2SCallbacksUrl = appId => [\n `${isMockReportingApiEnabled() ? MOCK_REPORTING_API_URL : ''}`,\n `${DASHBOARD_APPS_URL}/${appId}`,\n `${DASHBOARD_APPS_EVENT_CALLBACKS_PATH}`,\n `${DASHBOARD_APPS_S2S_CALLBACKS_PATH}`\n].join('')\n\nexport const getAdNetworkSettingsUrl = ({ appId, channelId }) => [\n `${isMockReportingApiEnabled() ? MOCK_REPORTING_API_URL : ''}`,\n `${DASHBOARD_APPS_URL}/${appId}`,\n `${DASHBOARD_APPS_INTEGRATIONS_PATH}/${channelId}`,\n DASHBOARD_APPS_CALLBACK_GROUPS_PATH,\n DASHBOARD_APPS_AD_NETWORK_SETTINGS_PATH\n].join('')\n","import PropTypes from 'prop-types'\n\nconst Icon = ({ className, iconUrl }) => (\n \"icon\"\n)\n\nIcon.propTypes = {\n className: PropTypes.string,\n iconUrl: PropTypes.string.isRequired\n}\n\nIcon.defaultProps = {\n className: ''\n}\n\nexport default Icon\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport styles from './styles.module.scss'\n\nconst Overlay = ({ children, className, isCardOverlay }) => (\n
\n
\n
\n\n
\n {children}\n
\n
\n
\n)\n\nOverlay.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n isCardOverlay: PropTypes.bool\n}\n\nOverlay.defaultProps = {\n className: null,\n isCardOverlay: false\n}\n\nexport default Overlay\n","import { forwardRef, Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport Tooltip from 'rc-tooltip'\n\nimport {\n getCountryContent, getPlatformContent, getPlatformIcon, getUnavailableContent,\n isGroupingByCountry, isGroupingByPlatform\n} from './helpers'\n\nimport { isPresent, isUnavailable } from '../../utils/helpers'\nimport {\n arrayOfCountries,\n oneOfSelectableGroupBys,\n oneOfSelectablePlatforms\n} from '../../utils/customPropTypes'\n\nimport styles from './styles.module.scss'\n\nconst ReportingDataNameDisplay = forwardRef((props, ref) => {\n const {\n className,\n countries,\n fieldType,\n groupBy,\n icon: iconProp,\n name: nameProp,\n nameClassName,\n platform,\n platformClassName,\n shouldTooltipName,\n tooltipPlacement\n } = props\n\n let icon = iconProp\n let name = nameProp\n let platformIcon = null\n\n if (isGroupingByCountry(groupBy)) {\n const countryContent = getCountryContent({ countries, name })\n\n icon = countryContent.icon\n name = countryContent.name\n }\n\n if (isGroupingByPlatform(groupBy)) {\n const platformContent = getPlatformContent({ platform: name })\n\n icon = platformContent.icon\n name = platformContent.name\n }\n\n if (isUnavailable(name)) {\n const unavailableContent = getUnavailableContent({ fieldType, name })\n\n icon = unavailableContent.icon\n name = unavailableContent.name\n }\n\n if (!isGroupingByPlatform(groupBy) && isPresent(platform)) {\n platformIcon = getPlatformIcon({ className: platformClassName, platform })\n }\n\n return (\n \n {isGroupingByCountry ? (\n {icon}\n ) : (\n {icon}\n )}\n\n {platformIcon}\n\n {name}}\n placement={tooltipPlacement}\n trigger={shouldTooltipName ? ['hover'] : []}\n >\n \n {name}\n \n \n \n )\n})\n\nReportingDataNameDisplay.propTypes = {\n className: PropTypes.string,\n countries: arrayOfCountries,\n fieldType: PropTypes.string,\n groupBy: oneOfSelectableGroupBys.isRequired,\n icon: PropTypes.element,\n name: PropTypes.string.isRequired,\n nameClassName: PropTypes.string,\n platform: oneOfSelectablePlatforms,\n platformClassName: PropTypes.string,\n shouldTooltipName: PropTypes.bool,\n tooltipPlacement: PropTypes.oneOf([\n 'left',\n 'right',\n 'top',\n 'bottom',\n 'topLeft',\n 'topRight',\n 'bottomLeft',\n 'bottomRight'\n ])\n}\n\nReportingDataNameDisplay.defaultProps = {\n className: 'u-flex u-flexAlignItemsCenter',\n countries: [],\n fieldType: '',\n icon: null,\n nameClassName: null,\n platform: null,\n platformClassName: null,\n shouldTooltipName: false,\n tooltipPlacement: 'top'\n}\n\nexport default ReportingDataNameDisplay\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\n\nimport SearchInput from '../../../SearchInputV2'\n\nimport styles from './styles.module.scss'\n\nconst Search = (\n {\n isDisabled,\n onSearchTextChange,\n placeholderText\n }\n) => {\n const [searchText, setSearchText] = useState('')\n\n return (\n
\n
\n Refine by\n
\n\n \n
\n )\n}\n\nSearch.propTypes = {\n isDisabled: PropTypes.bool,\n onSearchTextChange: PropTypes.func.isRequired,\n placeholderText: PropTypes.string.isRequired\n}\n\nSearch.defaultProps = {\n isDisabled: false\n}\n\nexport default Search\n","import styles from './styles.module.scss'\n\n// eslint-disable-next-line import/prefer-default-export\nexport const defaultModalStyles = {\n content: {\n backgroundColor: styles.modalBackgroundColor,\n borderRadius: styles.modalBorderRadius,\n bottom: styles.modalBottom,\n boxShadow: styles.modalBoxShadow,\n left: styles.modalLeft,\n marginRight: styles.modalMarginRight,\n maxWidth: styles.modalMaxWidth,\n padding: styles.modalPadding,\n right: styles.modalRight,\n top: styles.modalTop,\n transform: styles.modalTransform,\n width: styles.modalWidth\n },\n overlay: {\n backgroundColor: styles.overlayBackgroundColor\n }\n}\n","export const WINDOW_TYPE_DETERMINISTIC_CLICK = 'deterministicClickAttributionWindow'\nexport const WINDOW_TYPE_DETERMINISTIC_IMPRESSION = 'deterministicImpressionAttributionWindow'\nexport const WINDOW_TYPE_PROBABILISTIC_CLICK = 'probabilisticClickAttributionWindow'\nexport const WINDOW_TYPE_PROBABILISTIC_IMPRESSION = 'probabilisticImpressionAttributionWindow'\n\nexport const ATTRIBUTION_WINDOW_KEYS = [\n WINDOW_TYPE_DETERMINISTIC_CLICK,\n WINDOW_TYPE_DETERMINISTIC_IMPRESSION,\n WINDOW_TYPE_PROBABILISTIC_CLICK,\n WINDOW_TYPE_PROBABILISTIC_IMPRESSION\n]\n","import { createContext, useContext, useReducer } from 'react'\nimport {\n map, find, isUndefined, some\n} from 'lodash'\nimport PropTypes from 'prop-types'\nimport { isBlank } from '../../utils/helpers'\nimport { ATTRIBUTION_WINDOW_KEYS } from './constants'\n\n// TODO: [nafeu] remove context altogether to reduce redundancies\nconst AppIntegrationsContext = createContext()\nconst AppIntegrationsDispatchContext = createContext()\n\n// TODO: [nafeu] move to appropriate helpers file and add specs\nexport const isAppChannelCustomSettings = appChannel => {\n if (!isBlank(appChannel)) {\n const hasCustomSetting = key => appChannel[key] !== 0 && appChannel[key] !== null\n return some(ATTRIBUTION_WINDOW_KEYS, hasCustomSetting)\n }\n\n return false\n}\n\n// TODO: [nafeu] move to appropriate helpers file and add specs\nexport const replaceItemInList = ({ itemList, newItem }) => {\n const updatedList = map(itemList, item => {\n if (item.id === newItem.id) {\n return newItem\n }\n return item\n })\n\n return updatedList\n}\n\nreplaceItemInList.propTypes = {\n itemList: PropTypes.arrayOf(PropTypes.shape).isRequired,\n newItem: PropTypes.shape.isRequired\n}\n\nconst getInitialState = (\n {\n appChannels,\n apps,\n channels,\n currentTab,\n currentApp,\n currentAppChannel,\n currentChannel\n }\n) => {\n const hasAppChannelCustomSettings = isAppChannelCustomSettings(currentAppChannel)\n\n return {\n appChannels,\n apps,\n channels,\n currentApp,\n currentAppChannel,\n currentAppChannelHasCustomSettings: hasAppChannelCustomSettings,\n currentAppChannelOverrideToggleOn: hasAppChannelCustomSettings,\n currentChannel,\n currentTab\n }\n}\n\nconst reducers = {\n UPDATE_CHANNEL_OVERRIDE_ON: (state, payload) => {\n const appChannelOverrideOn = payload\n return { ...state, currentAppChannelOverrideToggleOn: appChannelOverrideOn }\n },\n UPDATE_CURRENT_APP: (state, payload) => {\n const updatedApp = payload\n let appChannel\n if (state.currentChannel) {\n appChannel = find(state.appChannels, {\n adNetworkId: state.currentChannel.id,\n appId: updatedApp.id\n })\n }\n const hasAppChannelCustomSettings = isAppChannelCustomSettings(appChannel)\n return {\n ...state,\n apps: replaceItemInList({\n itemList: state.apps,\n newItem: updatedApp\n }),\n currentApp: updatedApp,\n currentAppChannel: appChannel,\n currentAppChannelHasCustomSettings: hasAppChannelCustomSettings,\n currentAppChannelOverrideToggleOn: hasAppChannelCustomSettings\n }\n },\n UPDATE_CURRENT_APP_CHANNEL: (state, payload) => {\n const updatedAppChannel = payload\n const hasAppChannelCustomSettings = isAppChannelCustomSettings(updatedAppChannel)\n return {\n ...state,\n appChannels: replaceItemInList({\n itemList: state.appChannels,\n newItem: updatedAppChannel\n }),\n currentAppChannel: updatedAppChannel,\n currentAppChannelHasCustomSettings: hasAppChannelCustomSettings,\n currentAppChannelOverrideToggleOn: hasAppChannelCustomSettings\n }\n },\n UPDATE_CURRENT_CHANNEL: (state, payload) => {\n const updatedChannel = payload\n let appChannel\n if (state.currentApp) {\n appChannel = find(state.appChannels, {\n adNetworkId: updatedChannel.id,\n appId: state.currentApp.id\n })\n }\n const hasAppChannelCustomSettings = isAppChannelCustomSettings(appChannel)\n return {\n ...state,\n channels: replaceItemInList({\n itemList: state.channels,\n newItem: updatedChannel\n }),\n currentAppChannel: appChannel,\n currentAppChannelHasCustomSettings: hasAppChannelCustomSettings,\n currentAppChannelOverrideToggleOn: hasAppChannelCustomSettings,\n currentChannel: updatedChannel\n }\n }\n}\n\nconst appIntegrationReducer = (state, action) => {\n const { type, payload } = action\n if (isUndefined(payload)) return { state }\n\n const handleAction = reducers[type]\n if (!handleAction) return state\n\n return handleAction(state, payload)\n}\n\n/* eslint-disable react/prop-types */\nexport const AppIntegrationsProvider = ({\n children,\n status\n}) => {\n const [state, dispatch] = useReducer(appIntegrationReducer, getInitialState(status))\n\n return (\n \n \n {children}\n \n \n )\n}\n/* eslint-enable react/prop-types */\n\nexport const useAppIntegrationState = () => {\n const context = useContext(AppIntegrationsContext)\n\n if (isUndefined(context)) {\n throw new Error('useAppIntegrationState must be used within a AppIntegrationsProvider')\n }\n\n return context\n}\n\nexport const useAppIntegrationDispatch = () => {\n const context = useContext(AppIntegrationsDispatchContext)\n\n if (isUndefined(context)) {\n throw new Error('useAppIntegrationDispatch must be used within a AppIntegrationsProvider')\n }\n\n return context\n}\n","import { has, isEmpty } from 'lodash'\nimport { camelCase } from 'camel-case'\nimport classNames from 'classnames'\n\nimport PlatformIcon from '../PlatformIcon'\nimport {\n GROUP_BY_COUNTRY_STR, GROUP_BY_PLATFORM_STR\n} from '../../contexts/GroupedSummaryTableSettings/constants'\n\nimport { getPlatformDisplayName, isBlank } from '../../utils/helpers'\n\nconst getFlagFromCountry = country => country.emoji_flag || country.emojiFlag\n\nexport const getCountryContent = ({ countries, name }) => {\n if (isBlank(name)) {\n return {\n icon: null,\n name: 'Unknown'\n }\n }\n\n const countryAlpha2 = name.toUpperCase()\n const countryInfo = countries.find(country => country.id === countryAlpha2)\n\n if (isEmpty(countryInfo)) {\n return {\n icon: null,\n name: `Unknown (${countryAlpha2})`\n }\n }\n\n return {\n icon: getFlagFromCountry(countryInfo),\n name: `${countryInfo.name} (${countryInfo.id})`\n }\n}\n\nexport const getPlatformIcon = ({ className, platform }) => (\n \n)\n\nexport const getPlatformContent = ({ className, platform }) => ({\n icon: getPlatformIcon({ className, platform }),\n name: getPlatformDisplayName(camelCase(platform))\n})\n\nconst FIELD_TYPE_TO_DISPLAY_NAME = {\n adNetworkId: 'Channel',\n appId: 'App',\n campaignId: 'Campaign',\n conversionValue: 'Conversion Value',\n country: 'Country',\n fidelityType: 'Fidelity Type',\n platform: 'App Store',\n siteId: 'Site / Keyword',\n skAdNetworkId: 'SK Ad Network',\n skCampaignId: 'SK Campaign',\n skSourceAppId: 'SK Source App ID'\n}\n\nconst convertFieldTypeToName = fieldType => {\n if (isBlank(fieldType)) return null\n\n const camelCasedFieldType = camelCase(fieldType)\n\n if (has(FIELD_TYPE_TO_DISPLAY_NAME, camelCasedFieldType)) {\n return `Unavailable ${FIELD_TYPE_TO_DISPLAY_NAME[camelCasedFieldType]}`\n }\n\n return null\n}\n\nexport const getUnavailableContent = ({ fieldType, name }) => ({\n icon: null,\n name: (convertFieldTypeToName(fieldType) || name)\n})\n\nexport const isGroupingByCountry = groupBy => groupBy === GROUP_BY_COUNTRY_STR\nexport const isGroupingByPlatform = groupBy => groupBy === GROUP_BY_PLATFORM_STR\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"comparisonSelectorMarginRight\":\"10px\",\"controlBgColor\":\"#e6f1f9\",\"controlBorderRadius\":\"6px\",\"controlLineHeight\":\"30px\",\"controlFontFamily\":\"\\\"Montserrat\\\",\\\"Lato\\\",\\\"Helvetica Neue\\\",Helvetica,Sans-serif\",\"controlFontSize\":\"14px\",\"controlFontWeight\":\"600\",\"menuZIndex\":\"8000\",\"valueContainerPadding\":\"2px 15px\",\"multiValueRemoveHighlightColor\":\"#fff\",\"google-oauth-button\":\"styles-module__google-oauth-button___1Y-WW\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1x2rB\",\"btn-toggle\":\"styles-module__btn-toggle___3JSjh\",\"handle\":\"styles-module__handle___17Qq7\",\"active\":\"styles-module__active___1b4YL\",\"focus\":\"styles-module__focus___2Vy49\",\"card-panel\":\"styles-module__card-panel___3sX4D\",\"panel-heading\":\"styles-module__panel-heading___qQ2bH\",\"panel-title\":\"styles-module__panel-title___2wN2C\",\"panel-subtitle\":\"styles-module__panel-subtitle___1Ttff\",\"panel-body\":\"styles-module__panel-body___2yG64\",\"multiValueLabelBlock\":\"styles-module__multiValueLabelBlock___i6_88\",\"multiValueLabelText\":\"styles-module__multiValueLabelText___3FX7L\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___1crsf\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1Xc4q\",\"btn-toggle\":\"styles-module__btn-toggle___1obCR\",\"handle\":\"styles-module__handle___2oLPc\",\"active\":\"styles-module__active___18Dy2\",\"focus\":\"styles-module__focus___oDsoh\",\"card-panel\":\"styles-module__card-panel___le1TX\",\"panel-heading\":\"styles-module__panel-heading___2HTCt\",\"panel-title\":\"styles-module__panel-title___aGw4N\",\"panel-subtitle\":\"styles-module__panel-subtitle___3gkfJ\",\"panel-body\":\"styles-module__panel-body___inERm\",\"syncButton\":\"styles-module__syncButton___3UZ8f\",\"success\":\"styles-module__success___39YIK\",\"danger\":\"styles-module__danger___1MJPJ\",\"warning\":\"styles-module__warning___1Llir\",\"isDisabled\":\"styles-module__isDisabled___1ULlG\",\"isLoading\":\"styles-module__isLoading___2dHqM\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___NHcog\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___u9Qg2\",\"btn-toggle\":\"styles-module__btn-toggle___2DVAo\",\"handle\":\"styles-module__handle___3BmdA\",\"active\":\"styles-module__active___qsa_4\",\"focus\":\"styles-module__focus___17HQj\",\"card-panel\":\"styles-module__card-panel___7Y6mt\",\"panel-heading\":\"styles-module__panel-heading___3RflL\",\"panel-title\":\"styles-module__panel-title____fXSu\",\"panel-subtitle\":\"styles-module__panel-subtitle___1Zity\",\"panel-body\":\"styles-module__panel-body___2yNQL\",\"subtitleRow\":\"styles-module__subtitleRow___2KZiZ\",\"inputRow\":\"styles-module__inputRow___2fvEE\",\"current\":\"styles-module__current___NLBJ2\",\"commissionCell\":\"styles-module__commissionCell___2vD5o\",\"datesCell\":\"styles-module__datesCell___2YhWg\",\"dates\":\"styles-module__dates___FJFx7\",\"warningRow\":\"styles-module__warningRow___1dNSR\"};","export const DEFAULT_NAME_HEADER_SORT_TYPE = 'alpha'\nexport const DEFAULT_NAME_HEADER_TEXT = 'Name'\nexport const DEFAULT_COLUMN_SORT_TYPE = 'amount'\nexport const DEFAULT_COLUMN_OPTIONS = {\n sortDescFirst: true\n}\n\nexport const DEFAULT_QUERY_OPTIONS = {\n skip: true\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modalTop\":\"50%\",\"modalLeft\":\"50%\",\"modalRight\":\"auto\",\"modalBottom\":\"auto\",\"modalMarginRight\":\"-50%\",\"modalTransform\":\"translate(-50%, -50%)\",\"modalBackgroundColor\":\"#fff\",\"modalBoxShadow\":\"0 5px 15px rgba(0,0,0,0.2)\",\"modalPadding\":\"20px\",\"modalMaxWidth\":\"600px\",\"modalWidth\":\"80%\",\"modalBorderRadius\":\"8px\",\"overlayBackgroundColor\":\"rgba(49,84,118,0.3)\",\"google-oauth-button\":\"styles-module__google-oauth-button___3sqp1\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___Emtc8\",\"btn-toggle\":\"styles-module__btn-toggle___1G4I7\",\"handle\":\"styles-module__handle___16u8B\",\"active\":\"styles-module__active___1daDN\",\"focus\":\"styles-module__focus___2eV3t\",\"card-panel\":\"styles-module__card-panel___6GcpN\",\"panel-heading\":\"styles-module__panel-heading___rmPda\",\"panel-title\":\"styles-module__panel-title___1WBr4\",\"panel-subtitle\":\"styles-module__panel-subtitle___7ejVk\",\"panel-body\":\"styles-module__panel-body___3SzlY\"};","import classNames from 'classnames'\nimport { noop } from 'lodash'\nimport PropTypes from 'prop-types'\nimport { useState } from 'react'\n\nimport { RESET_DURATION_MS } from './constants'\nimport styles from './styles.module.scss'\n\n/*\n eslint-disable jsx-a11y/interactive-supports-focus,\n jsx-a11y/click-events-have-key-events\n*/\nconst AsyncButton = ({\n children,\n className,\n errorContent,\n isDisabled,\n isError: isErrorProp,\n isLoading: isLoadingProp,\n isSuccess: isSuccessProp,\n level,\n loadingContent,\n onClick,\n onError,\n onSuccess,\n resetOnSuccess,\n successContent\n}) => {\n const [isError, setIsError] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n const [isSuccess, setIsSuccess] = useState(false)\n\n const handleClick = async () => {\n setIsLoading(true)\n setIsSuccess(false)\n setIsError(false)\n\n try {\n await onClick()\n\n setIsLoading(false)\n\n onSuccess()\n setIsSuccess(true)\n\n if (resetOnSuccess) {\n setTimeout(() => {\n setIsSuccess(false)\n }, RESET_DURATION_MS)\n }\n } catch (error) {\n onError()\n window.Honeybadger.notify(error)\n setIsError(true)\n setIsLoading(false)\n }\n }\n\n const isErrorState = isErrorProp || isError\n const isLoadingState = isLoadingProp || isLoading\n const isSuccessState = isSuccessProp || isSuccess\n\n if (isErrorState) {\n return (\n
\n {errorContent}\n
\n )\n }\n\n if (isLoadingState) {\n return (\n \n {loadingContent}\n
\n )\n }\n\n if (isSuccessState) {\n return (\n
\n {successContent || children}\n
\n )\n }\n\n const isClickable = !isSuccessState && !isDisabled && !isLoadingState\n\n return (\n \n {children}\n \n )\n}\n/*\n eslint-enable jsx-a11y/interactive-supports-focus,\n jsx-a11y/click-events-have-key-events\n*/\n\nAsyncButton.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n errorContent: PropTypes.node.isRequired,\n isDisabled: PropTypes.bool,\n isError: PropTypes.bool,\n isLoading: PropTypes.bool,\n isSuccess: PropTypes.bool,\n level: PropTypes.oneOf(['danger', 'success', 'warning', 'default']),\n loadingContent: PropTypes.node.isRequired,\n onClick: PropTypes.func.isRequired,\n onError: PropTypes.func.isRequired,\n onSuccess: PropTypes.func.isRequired,\n resetOnSuccess: PropTypes.bool,\n successContent: PropTypes.node\n}\n\nAsyncButton.defaultProps = {\n className: '',\n isDisabled: false,\n isError: null,\n isLoading: null,\n isSuccess: null,\n level: 'default',\n resetOnSuccess: false,\n successContent: null\n}\n\nexport default AsyncButton\n","import { useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport FontAwesomeIcon from '../FontAwesomeIcon'\n\nimport styles from './styles.module.scss'\n\nconst SearchInput = (\n {\n alwaysShowClearIcon,\n autoFocus,\n className,\n clearIconClassName: clearIconClassNameProp,\n displaySearchIcon,\n inputClassName: inputClassNameProp,\n isDisabled,\n onSearchTextChange,\n placeholderText,\n searchText,\n setSearchText\n }\n) => {\n useEffect(() => {\n onSearchTextChange(searchText)\n }, [searchText])\n\n const handleChange = event => {\n if (!isDisabled) {\n setSearchText(event.target.value)\n }\n }\n\n const inputClassName = classNames(\n {\n disabled: isDisabled,\n [styles.withSearchIcon]: displaySearchIcon\n },\n 'form-control',\n styles.input,\n inputClassNameProp\n )\n\n const showClearIcon = (searchText.length > 0) || alwaysShowClearIcon\n\n const clearIconClassName = classNames(styles.clearIcon, clearIconClassNameProp)\n\n return (\n
\n \n\n {showClearIcon && (\n setSearchText('')}\n type=\"far\"\n />\n )}\n\n {displaySearchIcon && (\n \n )}\n
\n )\n}\n\nSearchInput.propTypes = {\n alwaysShowClearIcon: PropTypes.bool,\n autoFocus: PropTypes.bool,\n className: PropTypes.string,\n clearIconClassName: PropTypes.string,\n displaySearchIcon: PropTypes.bool,\n inputClassName: PropTypes.string,\n isDisabled: PropTypes.bool,\n onSearchTextChange: PropTypes.func.isRequired,\n placeholderText: PropTypes.string.isRequired,\n searchText: PropTypes.string.isRequired,\n setSearchText: PropTypes.func.isRequired\n}\n\nSearchInput.defaultProps = {\n alwaysShowClearIcon: false,\n autoFocus: false,\n className: null,\n clearIconClassName: null,\n displaySearchIcon: false,\n inputClassName: null,\n isDisabled: false\n}\n\nexport default SearchInput\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport { isEmpty } from 'lodash'\nimport Tooltip from 'rc-tooltip'\n\nimport { TOOLTIP_MOUSE_ENTER_DELAY } from '../../utils/constants'\n\nimport styles from './styles.module.scss'\n\nimport FontAwesomeIcon from '../FontAwesomeIcon'\nimport FragmentWrapper from '../FragmentWrapper'\n\nconst FormInput = ({\n className,\n inputClassName,\n classNameStatic,\n isDisabled,\n isStatic,\n isError,\n messageContent,\n tooltipContent,\n tooltipPlacement,\n ...inputProps\n}) => {\n const { value } = inputProps\n\n if (isStatic) {\n return (\n
\n {isEmpty(value) ? : value}\n
\n )\n }\n\n const TooltipWrapper = tooltipContent ? Tooltip : FragmentWrapper\n\n return (\n
\n \n \n \n {messageContent &&
{messageContent}
}\n
\n )\n}\n\nFormInput.propTypes = {\n className: PropTypes.string,\n classNameStatic: PropTypes.string,\n inputClassName: PropTypes.string,\n isDisabled: PropTypes.bool,\n isError: PropTypes.bool,\n isStatic: PropTypes.bool,\n messageContent: PropTypes.string,\n tooltipContent: PropTypes.node,\n tooltipPlacement: PropTypes.oneOf(['top', 'bottom', 'left', 'right'])\n}\n\nFormInput.defaultProps = {\n className: '',\n classNameStatic: '',\n inputClassName: '',\n isDisabled: false,\n isError: false,\n isStatic: false,\n messageContent: null,\n tooltipContent: null,\n tooltipPlacement: 'right'\n}\n\nexport default FormInput\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___2n1-d\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___d77yF\",\"btn-toggle\":\"styles-module__btn-toggle___hZJ7G\",\"handle\":\"styles-module__handle___3nf9o\",\"active\":\"styles-module__active___2iYGo\",\"focus\":\"styles-module__focus___c3UBa\",\"card-panel\":\"styles-module__card-panel___1y5Ba\",\"panel-heading\":\"styles-module__panel-heading___2-nyt\",\"panel-title\":\"styles-module__panel-title___1PyRc\",\"panel-subtitle\":\"styles-module__panel-subtitle___21DFt\",\"panel-body\":\"styles-module__panel-body___Fq3sY\",\"tabs\":\"styles-module__tabs___1W5c_\",\"tab\":\"styles-module__tab___cQXyD\",\"activeBottomBorder\":\"styles-module__activeBottomBorder___3PnIC\",\"cardHeader\":\"styles-module__cardHeader___1C-be\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___2t-KC\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___TD5XZ\",\"btn-toggle\":\"styles-module__btn-toggle___1ljLA\",\"handle\":\"styles-module__handle___2ZfC2\",\"active\":\"styles-module__active___3fkuz\",\"focus\":\"styles-module__focus___3pcUx\",\"card-panel\":\"styles-module__card-panel___2FNwY\",\"panel-heading\":\"styles-module__panel-heading___1o6U6\",\"panel-title\":\"styles-module__panel-title___3IE2w\",\"panel-subtitle\":\"styles-module__panel-subtitle___354u8\",\"panel-body\":\"styles-module__panel-body___Yw2Z4\",\"nameHeader\":\"styles-module__nameHeader___1HfEz\",\"nameHeaderAllExpandable\":\"styles-module__nameHeaderAllExpandable___A4OYf\",\"nameHeaderExpander\":\"styles-module__nameHeaderExpander___3GkN9\",\"nameCell\":\"styles-module__nameCell___1oUER\",\"metricCell\":\"styles-module__metricCell___2cXys\",\"metricHeader\":\"styles-module__metricHeader___etOQg\",\"metricHeaderCompact\":\"styles-module__metricHeaderCompact___3o6gm\",\"nameDisplay\":\"styles-module__nameDisplay___20jYl\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___1lhOF\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___2Urb4\",\"btn-toggle\":\"styles-module__btn-toggle___WHU0b\",\"handle\":\"styles-module__handle___2wm7H\",\"active\":\"styles-module__active___t5e3d\",\"focus\":\"styles-module__focus___1b45U\",\"card-panel\":\"styles-module__card-panel___cP7HW\",\"panel-heading\":\"styles-module__panel-heading___39V2A\",\"panel-title\":\"styles-module__panel-title___1sYpi\",\"panel-subtitle\":\"styles-module__panel-subtitle___2Cd4q\",\"panel-body\":\"styles-module__panel-body___3A4gI\",\"wrapper\":\"styles-module__wrapper___uyLAj\",\"tableHeaderContainer\":\"styles-module__tableHeaderContainer___18YFL\",\"stickyHeader\":\"styles-module__stickyHeader___15jG7\",\"tableHeader\":\"styles-module__tableHeader___qiXaE\",\"header\":\"styles-module__header___3JTV4\",\"nameDisplay\":\"styles-module__nameDisplay___1Oioa\",\"tableContainer\":\"styles-module__tableContainer___3Vscz\",\"skeletonRow\":\"styles-module__skeletonRow___3d_d9\"};","export const DASHBOARD_ADMIN_AD_NETWORK_URL = '../admin/ad_networks/'\nexport const DASHBOARD_ADMIN_ORGANIZATION_URL = '../admin/organizations/'\nexport const DASHBOARD_ADMIN_USER_URL = '../admin/users/'\nexport const DASHBOARD_ADMIN_AD_ACCOUNT_URL = '../admin/ad_accounts/'\nexport const REPORT_NEVER_UPDATED = 'neverUpdated'\nexport const REPORT_FAILED_TO_ADD = 'failedToAdd'\nexport const SORT_NAME_VALUE_MAPPING = {\n adAccount: 'ad_account_name',\n adNetwork: 'ad_network_name',\n createdAt: 'created_at',\n organization: 'organization_name',\n user: 'contact_user_email'\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___1Vt38\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___jzlHi\",\"btn-toggle\":\"styles-module__btn-toggle___10Wvd\",\"handle\":\"styles-module__handle___2xLIn\",\"active\":\"styles-module__active___2-VKw\",\"focus\":\"styles-module__focus___gKgkv\",\"card-panel\":\"styles-module__card-panel___K1iZZ\",\"panel-heading\":\"styles-module__panel-heading___2mTdy\",\"panel-title\":\"styles-module__panel-title___S83wV\",\"panel-subtitle\":\"styles-module__panel-subtitle___hXdrz\",\"panel-body\":\"styles-module__panel-body___2ab_x\",\"container\":\"styles-module__container___2pn38\",\"filters\":\"styles-module__filters___t78_X\",\"sortButton\":\"styles-module__sortButton___1OtQf\",\"table\":\"styles-module__table___3lBpg\"};","import {\n LABEL_APP_AND_SDK,\n LABEL_ATTRIBUTION,\n LABEL_CALLBACKS,\n LABEL_SK_AD_NETWORK,\n PATH_ATTRIBUTION,\n PATH_CALLBACKS,\n PATH_DASHBOARD_APPS,\n PATH_INTEGRATIONS,\n PATH_SK_AD_NETWORK,\n PLATFORM_IOS\n} from '../constants'\n\nexport const getNavigationOptions = ({ app, setIsLoading }) => [\n {\n handleChangeAppRedirect: ({ id }) => {\n setIsLoading(true)\n window.location.href = `${PATH_DASHBOARD_APPS}/${id}`\n },\n isActive: () => window.location.pathname === `${PATH_DASHBOARD_APPS}/${app.id}`,\n label: LABEL_APP_AND_SDK,\n path: `${PATH_DASHBOARD_APPS}/${app.id}`\n },\n {\n handleChangeAppRedirect: ({ id }) => {\n setIsLoading(true)\n window.location.href = `${PATH_DASHBOARD_APPS}/${id}${PATH_ATTRIBUTION}`\n },\n isActive: () => window.location.pathname.includes(PATH_ATTRIBUTION),\n label: LABEL_ATTRIBUTION,\n path: `${PATH_DASHBOARD_APPS}/${app.id}${PATH_ATTRIBUTION}`\n },\n {\n handleChangeAppRedirect: ({ id }) => {\n setIsLoading(true)\n window.location.href = `${PATH_DASHBOARD_APPS}/${id}${PATH_CALLBACKS}`\n },\n isActive: () => window.location.pathname.includes(`${PATH_DASHBOARD_APPS}/${app.id}${PATH_CALLBACKS}`),\n label: LABEL_CALLBACKS,\n path: `${PATH_DASHBOARD_APPS}/${app.id}${PATH_CALLBACKS}`\n },\n ...(window.gon.feature_flags.includes('skan_csv_upload') && app.platform === PLATFORM_IOS ? [{\n handleChangeAppRedirect: ({ id }) => {\n setIsLoading(true)\n window.location.href = `${PATH_DASHBOARD_APPS}/${id}${PATH_SK_AD_NETWORK}`\n },\n isActive: () => window.location.pathname === `${PATH_DASHBOARD_APPS}/${app.id}${PATH_SK_AD_NETWORK}`,\n label: LABEL_SK_AD_NETWORK,\n path: `${PATH_DASHBOARD_APPS}/${app.id}${PATH_SK_AD_NETWORK}`\n }] : [])\n]\n","import { keys } from 'lodash'\n\n// eslint-disable-next-line import/prefer-default-export\nexport const FIELDS_TO_OMIT_FOR_CSV = [\n 'adNetworkId',\n 'adNetworkShortId',\n 'adNetworkIconUrl',\n 'campaignIconUrl',\n 'appIconUrl',\n 'appId',\n 'attributes',\n 'campaignId',\n 'childQueryIds',\n 'custom',\n 'date',\n 'iconUrl',\n 'id',\n 'isLastQueryInSequence',\n 'name',\n 'shortId',\n 'siteId',\n 'skAdNetworkId',\n 'skCampaignId',\n 'subRows',\n 'type'\n]\n\nexport const DEFAULT_EXPORT_GRANULARITY = 'totals-daily'\n\nexport const EMPTY_APP = {\n bundleId: '',\n id: '',\n name: '',\n storeId: ''\n}\n\nexport const GROUP_BY_HEADER_MAPPING = {\n adNetworkApp: 'name',\n adNetworkAppCountry: 'name',\n adNetworkId: 'channel',\n adPlacementId: 'adPlacementName',\n appId: 'appName',\n campaignCountry: 'name',\n campaignId: 'campaign',\n conversionValue: 'conversionValue',\n country: 'country',\n fidelityType: 'fidelityType',\n platform: 'platform',\n siteId: 'site',\n skAdNetworkId: 'skAdNetwork',\n skCampaignId: 'skCampaign',\n skSourceAppId: 'skSourceApp'\n}\n\nexport const DATE_FORMAT_YYYY_MM_DD_LENGTH = 10\n\nexport const CSV_COLUMN_SORT_ORDER = [\n 'date',\n 'name',\n 'country',\n 'appName',\n 'platform',\n 'adNetworkName',\n 'campaign',\n 'bundleId',\n 'storeId',\n 'conversionValue',\n 'fidelityType',\n 'site',\n 'skAdNetwork',\n 'skCampaign',\n 'skSourceApp'\n]\n\nexport const COMBINATION_GROUP_BY_TO_SINGLE_ID_MAPPING = {\n adNetworkApp: ['adNetworkId', 'appId'],\n adNetworkAppCountry: ['adNetworkId', 'appId', 'country'],\n campaignCountry: ['campaignId', 'country'],\n campaignId: ['adNetworkId', 'campaignId']\n}\n\nexport const COMBINATION_GROUP_BYS = keys(COMBINATION_GROUP_BY_TO_SINGLE_ID_MAPPING)\n","export const REQUIRED_TEXT = \"Can't be Blank\"\nexport const INVALID_FORMAT_TEXT = 'Invalid Format'\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport styles from './styles.module.scss'\n\nconst OverlayText = ({ children, className }) => (\n
\n {children}\n
\n)\n\nOverlayText.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string\n}\n\nOverlayText.defaultProps = {\n className: null\n}\n\nexport default OverlayText\n","import PropTypes from 'prop-types'\nimport Skeleton from 'react-loading-skeleton'\nimport { range } from 'lodash'\n\nconst SkeletonRows = ({ className, numRows, skeletonClassName }) => (\n range(numRows).map(i => (\n
\n \n
\n ))\n)\n\nSkeletonRows.propTypes = {\n className: PropTypes.string,\n numRows: PropTypes.number,\n skeletonClassName: PropTypes.string\n}\n\nSkeletonRows.defaultProps = {\n className: null,\n numRows: 5,\n skeletonClassName: null\n}\n\nexport default SkeletonRows\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport { useReportingFiltersState } from '../../contexts/ReportingFilters'\n\nimport styles from './styles.module.scss'\n\nconst ReportingContent = ({ children }) => {\n const { isSidebarCollapsed } = useReportingFiltersState()\n\n const className = classNames(styles.content, {\n [styles.collapsed]: isSidebarCollapsed\n })\n\n return (\n
\n {children}\n
\n )\n}\n\nReportingContent.propTypes = {\n children: PropTypes.node.isRequired\n}\n\nexport default ReportingContent\n","import PropTypes from 'prop-types'\n\nimport FontAwesomeIcon from '../../../../FontAwesomeIcon'\n\nimport styles from './styles.module.scss'\n\nconst Header = ({ children, onClose }) => (\n
\n
{children}
\n\n
\n \n
\n
\n)\n\nHeader.propTypes = {\n children: PropTypes.node.isRequired,\n onClose: PropTypes.func.isRequired\n}\n\nexport default Header\n","import PropTypes from 'prop-types'\n\nimport ListItem from '../Pane/ListItem'\nimport MultiSelectIcon from '../Pane/ListItem/MultiSelectIcon'\n\nconst SelectAll = (\n {\n isAllSelected,\n isDisabled,\n itemIds,\n labelText,\n onClick\n }\n) => {\n const handleClick = () => {\n if (isDisabled) return\n\n if (isAllSelected) {\n onClick([])\n } else {\n onClick(itemIds)\n }\n }\n\n return (\n }\n />\n )\n}\n\nSelectAll.propTypes = {\n isAllSelected: PropTypes.bool,\n isDisabled: PropTypes.bool,\n itemIds: PropTypes.arrayOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ])).isRequired,\n labelText: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired\n}\n\nSelectAll.defaultProps = {\n isAllSelected: false,\n isDisabled: false\n}\n\nexport default SelectAll\n","import PropTypes from 'prop-types'\n\nimport styles from './styles.module.scss'\n\nimport SelectedItem from './SelectedItem'\nimport { PLATFORM_TO_ICON } from '../../../PlatformIcon/constants'\n\n// eslint-disable-next-line react/prop-types\nconst SelectedItemCountInfo = ({ message }) => (\n
\n
\n {message}\n
\n
\n)\n\nconst SelectedItems = ({\n isAllSelected,\n itemTitle,\n maxDisplayCount,\n onClickSelectedItem,\n selectedItemsCount,\n selectedItemsInfo\n}) => {\n const isNoneSelected = selectedItemsCount === 0\n const isSomeSelected = !isAllSelected && !isNoneSelected\n\n const isWithinDisplayLimit = isSomeSelected && selectedItemsCount <= maxDisplayCount\n const isMaxDisplayLimit = isSomeSelected && selectedItemsCount > maxDisplayCount\n\n const showNoneSelected = isNoneSelected && !isAllSelected\n\n return (\n
\n
\n Selected {itemTitle}\n
\n {isAllSelected && (\n \n )}\n\n {isWithinDisplayLimit && (\n
\n {selectedItemsInfo.map(item => {\n const icons = []\n\n if (item.iconUrl) {\n icons.push({ name: item.name, url: item.iconUrl })\n }\n\n if (item.platform) {\n const platformIconUrl = PLATFORM_TO_ICON[item.platform] || PLATFORM_TO_ICON.unknown\n\n icons.push({ name: item.platform, url: platformIconUrl })\n }\n\n return (\n \n )\n })}\n
\n )}\n\n {isMaxDisplayLimit && (\n \n )}\n\n {showNoneSelected && (\n \n )}\n
\n )\n}\n\nSelectedItems.propTypes = {\n isAllSelected: PropTypes.bool.isRequired,\n itemTitle: PropTypes.string.isRequired,\n maxDisplayCount: PropTypes.number.isRequired,\n onClickSelectedItem: PropTypes.func.isRequired,\n selectedItemsCount: PropTypes.number.isRequired,\n selectedItemsInfo: PropTypes.arrayOf(PropTypes.object).isRequired\n}\n\nexport default SelectedItems\n","import { isEmpty } from 'lodash'\n\nexport const buildLabelTextFromMultiSelected = (\n {\n humanizedSelectedTypeStr,\n selectable,\n selected\n }\n) => {\n if (isEmpty(selected)) {\n return `No ${humanizedSelectedTypeStr}`\n }\n\n if (selected.length === selectable.length) {\n return `All ${humanizedSelectedTypeStr}`\n }\n\n return `${selected.length} ${humanizedSelectedTypeStr}`\n}\n\nexport default buildLabelTextFromMultiSelected\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___bC-k-\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___3c0jS\",\"btn-toggle\":\"styles-module__btn-toggle___33ubE\",\"handle\":\"styles-module__handle___1rCIP\",\"active\":\"styles-module__active___3JdRz\",\"focus\":\"styles-module__focus___CpIpH\",\"card-panel\":\"styles-module__card-panel___32bjg\",\"panel-heading\":\"styles-module__panel-heading___FGgXV\",\"panel-title\":\"styles-module__panel-title___3eJn7\",\"panel-subtitle\":\"styles-module__panel-subtitle___2uMER\",\"panel-body\":\"styles-module__panel-body___2jrs0\",\"container\":\"styles-module__container___2iSnp\",\"renderer\":\"styles-module__renderer___dKfOf\",\"img\":\"styles-module__img___3JoXQ\",\"platformIcon\":\"styles-module__platformIcon___2D4ri\",\"lookbackWindow\":\"styles-module__lookbackWindow___2P3lv\"};","import PropTypes from 'prop-types'\nimport Tooltip from 'rc-tooltip'\nimport { isEmpty } from 'lodash'\n\nimport MetricTooltip from '../../../../MetricTooltip'\n\nimport { TOOLTIP_DELAY_IN_S } from './constants'\nimport { metricDefinitionObject } from '../../../../../utils/customPropTypes'\n\nimport styles from './styles.module.scss'\n\nconst Header = ({\n className,\n metric,\n text,\n tooltipText\n}) => {\n const isMetric = metric && !isEmpty(metric)\n\n if (isMetric) {\n return (\n \n
\n {text}\n
\n
\n )\n }\n\n return (\n {tooltipText}}\n placement=\"top\"\n >\n
\n {text}\n
\n \n )\n}\n\nHeader.propTypes = {\n className: PropTypes.string,\n metric: metricDefinitionObject,\n text: PropTypes.string.isRequired,\n tooltipText: PropTypes.string\n}\n\nHeader.defaultProps = {\n className: null,\n metric: null,\n tooltipText: ''\n}\n\nexport default Header\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___3OfQ3\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1lEbm\",\"btn-toggle\":\"styles-module__btn-toggle___3qpo3\",\"handle\":\"styles-module__handle___3_7ab\",\"active\":\"styles-module__active___3kHs0\",\"focus\":\"styles-module__focus___2UwkL\",\"card-panel\":\"styles-module__card-panel___3KmJA\",\"panel-heading\":\"styles-module__panel-heading___1NjYs\",\"panel-title\":\"styles-module__panel-title___3L_0l\",\"panel-subtitle\":\"styles-module__panel-subtitle___KZ9Qi\",\"panel-body\":\"styles-module__panel-body___3EWu1\",\"label\":\"styles-module__label___1u484\",\"inner\":\"styles-module__inner___19M0C\",\"inner--sm\":\"styles-module__inner--sm___3I-70\",\"hiddenInput\":\"styles-module__hiddenInput___2bwbs\",\"visibleCheckbox\":\"styles-module__visibleCheckbox___2-9JC\",\"focusedVisibleCheckbox\":\"styles-module__focusedVisibleCheckbox___1c_Pe\",\"hoveredVisibleCheckbox\":\"styles-module__hoveredVisibleCheckbox___i03TM\",\"checkedVisibleCheckbox\":\"styles-module__checkedVisibleCheckbox___3VuPl\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___1n3-c\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___MXN9v\",\"btn-toggle\":\"styles-module__btn-toggle___1Ig21\",\"handle\":\"styles-module__handle___25Qch\",\"active\":\"styles-module__active___2ZU8l\",\"focus\":\"styles-module__focus___32tSx\",\"card-panel\":\"styles-module__card-panel___2U_dp\",\"panel-heading\":\"styles-module__panel-heading___2Oza3\",\"panel-title\":\"styles-module__panel-title___1GlAP\",\"panel-subtitle\":\"styles-module__panel-subtitle___VSOtn\",\"panel-body\":\"styles-module__panel-body___1WdAB\",\"alert\":\"styles-module__alert___1bQyu\",\"icon\":\"styles-module__icon___1VTID\",\"content\":\"styles-module__content___1AFlF\",\"closeButton\":\"styles-module__closeButton___IbH7X\",\"primary\":\"styles-module__primary___lQBp4\",\"success\":\"styles-module__success___35o98\",\"warning\":\"styles-module__warning___30T1H\",\"danger\":\"styles-module__danger___1eEnj\"};","import Highcharts from 'highcharts'\nimport { isInteger } from 'lodash'\nimport { CONVERSION_VALUE_HISTOGRAM_TOOLTIP_BACKGROUND_COLOR } from '../../../utils/charts'\n\nexport const CHART_SKELETON_HEIGHT = 400\n\nexport const PLOT_OPTIONS = {\n column: {\n animation: false,\n dataLabels: {\n enabled: false\n }\n }\n}\n\nexport const X_AXIS_OPTIONS = {\n dataLabels: {\n enabled: true\n },\n labels: {\n allowOverlap: false,\n enabled: true,\n // eslint-disable-next-line func-names, object-shorthand, space-before-function-paren\n formatter: function() {\n const { value } = this\n\n if (value < 0) {\n return 'Null'\n }\n\n return value\n },\n step: 2\n },\n max: 63,\n tickInterval: 1,\n tickLength: 0,\n title: {\n enabled: true,\n style: {\n fontSize: '14px',\n fontWeight: 'bold'\n },\n y: 10\n },\n type: 'linear'\n}\n\nexport const Y_AXIS_OPTIONS = {\n labels: {\n // eslint-disable-next-line func-names, object-shorthand, space-before-function-paren\n formatter: function() {\n const { value } = this\n\n if (isInteger(value)) {\n return Highcharts.numberFormat(value, 0, '', ',')\n }\n\n return ''\n }\n },\n title: {\n enabled: true,\n style: {\n fontSize: '14px',\n fontWeight: 'bold'\n },\n x: -10\n }\n}\n\nexport const TOOLTIP_OPTIONS = {\n animation: false,\n backgroundColor: CONVERSION_VALUE_HISTOGRAM_TOOLTIP_BACKGROUND_COLOR,\n shadow: false,\n shared: true,\n useHTML: true\n}\n\nexport const CHART_RENDERER_DELAY_MS = 500\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___1GLcZ\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___3CotR\",\"btn-toggle\":\"styles-module__btn-toggle___2fQey\",\"handle\":\"styles-module__handle___2zLQj\",\"active\":\"styles-module__active___3VVtJ\",\"focus\":\"styles-module__focus___1AKJT\",\"card-panel\":\"styles-module__card-panel___3cFHH\",\"panel-heading\":\"styles-module__panel-heading___3U9ys\",\"panel-title\":\"styles-module__panel-title___2gKpe\",\"panel-subtitle\":\"styles-module__panel-subtitle___13m5Z\",\"panel-body\":\"styles-module__panel-body___MLNsU\",\"overlayInner\":\"styles-module__overlayInner___3Jq9i\",\"hideButton\":\"styles-module__hideButton___14Rsk\",\"title\":\"styles-module__title___Z7Qdl\",\"roleContainer\":\"styles-module__roleContainer___1FYAF\",\"roleTitle\":\"styles-module__roleTitle___H1uu_\",\"roleContent\":\"styles-module__roleContent___2zhoI\",\"footer\":\"styles-module__footer___i0U8S\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___2Ny_z\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1L7CQ\",\"btn-toggle\":\"styles-module__btn-toggle___2l-Dg\",\"handle\":\"styles-module__handle___3K7gF\",\"active\":\"styles-module__active___3k6uY\",\"focus\":\"styles-module__focus___1n-XH\",\"card-panel\":\"styles-module__card-panel___2RinI\",\"panel-heading\":\"styles-module__panel-heading___VRnuF\",\"panel-title\":\"styles-module__panel-title___21Es7\",\"panel-subtitle\":\"styles-module__panel-subtitle___2CQYE\",\"panel-body\":\"styles-module__panel-body___3OodR\",\"disabled\":\"styles-module__disabled___24Wd5\",\"warning\":\"styles-module__warning___gCYFJ\",\"tdDate\":\"styles-module__tdDate___2gfzE\",\"tdSdkKey\":\"styles-module__tdSdkKey___phbyl\",\"orgIcon\":\"styles-module__orgIcon___1IOj9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"skeletonWidth\":\"500px\",\"skeletonHeight\":\"50px\",\"google-oauth-button\":\"styles-module__google-oauth-button___QEzrt\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___A1tcm\",\"btn-toggle\":\"styles-module__btn-toggle___38GqP\",\"handle\":\"styles-module__handle___-Vhkq\",\"active\":\"styles-module__active___2J_Xf\",\"focus\":\"styles-module__focus___22XhA\",\"card-panel\":\"styles-module__card-panel___2M_oP\",\"panel-heading\":\"styles-module__panel-heading___3lNtb\",\"panel-title\":\"styles-module__panel-title___1-kQL\",\"panel-subtitle\":\"styles-module__panel-subtitle___1hR6-\",\"panel-body\":\"styles-module__panel-body___7QMh9\",\"formInput\":\"styles-module__formInput___3bglG\",\"formInputStatic\":\"styles-module__formInputStatic___GuIMC\",\"errorMessage\":\"styles-module__errorMessage___3Os8T\",\"saveButton\":\"styles-module__saveButton___14olG\",\"cancelButton\":\"styles-module__cancelButton___2NgqS\",\"cardPanelFooter\":\"styles-module__cardPanelFooter___2rvgt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"skeletonWidth\":\"100%\",\"skeletonHeight\":\"50px\",\"google-oauth-button\":\"styles-module__google-oauth-button___34WC5\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___268LY\",\"btn-toggle\":\"styles-module__btn-toggle___4W6fp\",\"handle\":\"styles-module__handle___2CqfW\",\"active\":\"styles-module__active___O5Dmg\",\"focus\":\"styles-module__focus___alZ2J\",\"card-panel\":\"styles-module__card-panel___1GCFu\",\"panel-heading\":\"styles-module__panel-heading___1CrMk\",\"panel-title\":\"styles-module__panel-title___2kzqX\",\"panel-subtitle\":\"styles-module__panel-subtitle___9_VlE\",\"panel-body\":\"styles-module__panel-body___FguNH\",\"header\":\"styles-module__header___164ma\",\"row\":\"styles-module__row___2ZG94\",\"cell\":\"styles-module__cell___3dvxD\",\"event\":\"styles-module__event___3sfhM\",\"link\":\"styles-module__link___1UcRR\",\"fixedHeight\":\"styles-module__fixedHeight___2RU8r\",\"fixedOverlayContainer\":\"styles-module__fixedOverlayContainer___3B4-8\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"skeletonWidth\":\"100%\",\"skeletonHeight\":\"50px\",\"google-oauth-button\":\"styles-module__google-oauth-button___2ofo8\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___3ZlgR\",\"btn-toggle\":\"styles-module__btn-toggle___3zzsA\",\"handle\":\"styles-module__handle___3zG4f\",\"active\":\"styles-module__active___1jD9t\",\"focus\":\"styles-module__focus___3_Pi7\",\"card-panel\":\"styles-module__card-panel___2rBTi\",\"panel-heading\":\"styles-module__panel-heading___1dOh3\",\"panel-title\":\"styles-module__panel-title___2EKtG\",\"panel-subtitle\":\"styles-module__panel-subtitle___8IY54\",\"panel-body\":\"styles-module__panel-body___21y0K\",\"header\":\"styles-module__header___3K9Ob\",\"row\":\"styles-module__row___2JXkV\",\"cell\":\"styles-module__cell___W9mJl\",\"name\":\"styles-module__name___kkm9O\",\"eventName\":\"styles-module__eventName___2zb9D\",\"addCustomCallbacksButton\":\"styles-module__addCustomCallbacksButton___N1K-Z\"};","export const ERROR_TEXT = 'An error ocurred.'\n\nexport const UNSAVED_CHANGES = 'You have unsaved changes'\n\nexport const PLATFORM_LABELS = {\n amazon: 'Amazon',\n android: 'Android',\n ios: 'iOS'\n}\n\nexport const MOUSE_LEAVE_DELAY = 1\nexport const INPUT_REF_FOCUS_TIMEOUT = 0\n\nexport const ACTION_SELECT_OPTION = 'select-option'\nexport const ACTION_DESELECT_OPTION = 'deselect-option'\nexport const ACTION_INPUT_CHANGE = 'input-change'\nexport const ACTION_MENU_CLOSE = 'menu-close'\n\nexport const PLACEHOLDER_INPUT = 'Filter apps'\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport { noop } from 'lodash'\n\nimport styles from './styles.module.scss'\n\nimport {\n ANIMATION_SPIN,\n ICON_SPINNER,\n RESET_DURATION_MS\n} from './constants'\n\nimport FontAwesomeIcon from '../FontAwesomeIcon'\n\n/*\n eslint-disable jsx-a11y/interactive-supports-focus,\n jsx-a11y/click-events-have-key-events\n*/\nconst AsyncIconTextButton = ({\n children,\n className,\n errorIcon,\n errorText,\n icon,\n isDisabled,\n loadingIcon,\n loadingText,\n onClick,\n onError,\n onSuccess,\n resetOnSuccess,\n successIcon,\n successText\n}) => {\n const [isError, setIsError] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n const [isSuccess, setIsSuccess] = useState(false)\n\n const handleClick = async () => {\n setIsLoading(true)\n setIsSuccess(false)\n setIsError(false)\n\n try {\n await onClick()\n\n setIsLoading(false)\n\n onSuccess()\n setIsSuccess(true)\n\n if (resetOnSuccess) {\n setTimeout(() => {\n setIsSuccess(false)\n }, RESET_DURATION_MS)\n }\n } catch (error) {\n onError(error)\n window.Honeybadger.notify(error)\n setIsError(true)\n setIsLoading(false)\n }\n }\n\n let content\n let displayIcon\n\n if (isError) {\n content = errorText || children\n displayIcon = errorIcon || icon\n } else if (isLoading) {\n content = loadingText || children\n displayIcon = loadingIcon || icon\n } else if (isSuccess) {\n content = successText || children\n displayIcon = successIcon || icon\n } else {\n content = children\n displayIcon = icon\n }\n\n const isClickable = !isSuccess && !isDisabled && !isLoading\n const isSpinner = displayIcon === ICON_SPINNER\n\n return (\n \n \n
{content}
\n \n )\n}\n/*\n eslint-enable jsx-a11y/interactive-supports-focus,\n jsx-a11y/click-events-have-key-events\n*/\n\nAsyncIconTextButton.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n errorIcon: PropTypes.string,\n errorText: PropTypes.string,\n icon: PropTypes.string,\n isDisabled: PropTypes.bool,\n loadingIcon: PropTypes.string,\n loadingText: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n onError: PropTypes.func,\n onSuccess: PropTypes.func,\n resetOnSuccess: PropTypes.bool,\n successIcon: PropTypes.string,\n successText: PropTypes.string\n}\n\nAsyncIconTextButton.defaultProps = {\n className: '',\n errorIcon: null,\n errorText: null,\n icon: 'pencil',\n isDisabled: false,\n loadingIcon: 'spinner',\n loadingText: null,\n onError: () => {},\n onSuccess: () => {},\n resetOnSuccess: false,\n successIcon: null,\n successText: null\n}\n\nexport default AsyncIconTextButton\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport styles from './styles.module.scss'\n\n/*\n eslint-disable jsx-a11y/interactive-supports-focus,\n jsx-a11y/click-events-have-key-events,\n jsx-a11y/no-static-element-interactions\n*/\nconst Toggle = ({\n className,\n isDisabled,\n isOn,\n isToggling,\n onToggle\n}) => {\n const canToggle = !isToggling && !isDisabled\n\n return (\n {}}\n >\n
{isOn ? 'On' : 'Off'}
\n
\n
\n )\n}\n/*\n eslint-enable jsx-a11y/interactive-supports-focus,\n jsx-a11y/click-events-have-key-events,\n jsx-a11y/no-static-element-interactions\n*/\n\nToggle.propTypes = {\n className: PropTypes.string,\n isDisabled: PropTypes.bool,\n isOn: PropTypes.bool.isRequired,\n isToggling: PropTypes.bool,\n onToggle: PropTypes.func.isRequired\n}\n\nToggle.defaultProps = {\n className: '',\n isDisabled: false,\n isToggling: false\n}\n\nexport default Toggle\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport classNames from 'classnames'\nimport { isEmpty } from 'lodash'\n\nimport styles from './styles.module.scss'\n\nclass Label extends React.PureComponent {\n renderFormLabel() {\n const {\n children, className: classNameProp, htmlFor, text\n } = this.props\n\n const className = classNames(styles.label, styles.formLabel, classNameProp)\n const childrenCount = React.Children.count(children)\n\n return (\n \n )\n }\n\n renderPageLabel() {\n const {\n children, className: classNameProp, text\n } = this.props\n\n const className = classNames(styles.label, classNameProp)\n const childrenCount = React.Children.count(children)\n\n return (\n
\n {childrenCount > 0 && children}\n {text}\n
\n )\n }\n\n render() {\n const {\n children, className: classNameProp, htmlFor\n } = this.props\n\n return (\n \n {!isEmpty(htmlFor) && this.renderFormLabel()}\n {isEmpty(htmlFor) && this.renderPageLabel()}\n \n )\n }\n}\n\nLabel.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n htmlFor: PropTypes.string,\n text: PropTypes.string\n}\n\nLabel.defaultProps = {\n children: [],\n className: '',\n htmlFor: '',\n text: null\n}\n\nexport default Label\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___2lx_i\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___9G_j2\",\"btn-toggle\":\"styles-module__btn-toggle___MLER0\",\"handle\":\"styles-module__handle___1CF48\",\"active\":\"styles-module__active____aY2Y\",\"focus\":\"styles-module__focus___NJOF3\",\"card-panel\":\"styles-module__card-panel___Kf8Mf\",\"panel-heading\":\"styles-module__panel-heading___6KKgX\",\"panel-title\":\"styles-module__panel-title___23uv4\",\"panel-subtitle\":\"styles-module__panel-subtitle___Y-k-q\",\"panel-body\":\"styles-module__panel-body___1cepp\",\"container\":\"styles-module__container___1KDOA\",\"nestedContainer\":\"styles-module__nestedContainer___Skkok\",\"row\":\"styles-module__row___2Xcqn\",\"activeRow\":\"styles-module__activeRow___3Y1CX\",\"hoveredRow\":\"styles-module__hoveredRow___nnXrH\"};","export const DEFAULT_QUERY_OPTIONS = {\n skip: true\n}\n\nexport const CONVERSION_VALUE_QUERY_OVERRIDES = {\n groupBy: 'conversion_value',\n metrics: ['conversionValueCount']\n}\n\nexport const VALUE_RANGE_OPTIONS = [\n {\n id: 'all-values',\n minXValue: -1,\n name: 'All Values'\n },\n {\n id: 'values-0-63',\n minXValue: 0,\n name: 'Values 0-63'\n },\n {\n id: 'values-1-63',\n minXValue: 1,\n name: 'Values 1-63'\n }\n]\n\nexport const DEFAULT_VALUE_RANGE = VALUE_RANGE_OPTIONS[0]\n\nexport const VALUE_RANGE_MAPPING = VALUE_RANGE_OPTIONS.reduce(\n (mapping, option) => ({\n ...mapping,\n [option.id]: option.minXValue\n }),\n {}\n)\n","export const VALID_ANIMATED_OPTIONS = new Set(['spin', 'pulse'])\nexport const VALID_FLIP_OPTIONS = new Set(['horizontal', 'vertical'])\nexport const VALID_LIST_OPTIONS = new Set(['ul', 'li'])\nexport const VALID_PULLED_OPTIONS = new Set(['right', 'left'])\nexport const VALID_ROTATE_OPTIONS = new Set(['90', '180', '270'])\nexport const VALID_SIZE_OPTIONS = new Set(['2x', '3x', '4x', '5x', 'lg'])\nexport const VALID_TYPE_OPTIONS = new Set(['fas', 'far', 'fal', 'fab', 'fad', 'fak'])\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___1U5j_\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___3FnmK\",\"btn-toggle\":\"styles-module__btn-toggle___3pxAr\",\"handle\":\"styles-module__handle___3Frhj\",\"active\":\"styles-module__active___2jgbP\",\"focus\":\"styles-module__focus___1MQq7\",\"card-panel\":\"styles-module__card-panel___3bHiw\",\"panel-heading\":\"styles-module__panel-heading___PmpoS\",\"panel-title\":\"styles-module__panel-title___3THNe\",\"panel-subtitle\":\"styles-module__panel-subtitle___JUD7Z\",\"panel-body\":\"styles-module__panel-body___261KV\",\"container\":\"styles-module__container___1i3MJ\",\"formControl\":\"styles-module__formControl___3G_4b\",\"formControlSm\":\"styles-module__formControlSm___1Rwpd\",\"searchIcon\":\"styles-module__searchIcon___1eXrN\",\"closeIcon\":\"styles-module__closeIcon___tKTTU\",\"primaryContainer\":\"styles-module__primaryContainer___2tAjA\",\"containerWithSearchIcon\":\"styles-module__containerWithSearchIcon___3G148\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___2rd9W\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___2PSYQ\",\"btn-toggle\":\"styles-module__btn-toggle___9lK9_\",\"handle\":\"styles-module__handle___rXjfY\",\"active\":\"styles-module__active___2XHv-\",\"focus\":\"styles-module__focus___3LF53\",\"card-panel\":\"styles-module__card-panel___1IeMn\",\"panel-heading\":\"styles-module__panel-heading___1fVbQ\",\"panel-title\":\"styles-module__panel-title___1zTO2\",\"panel-subtitle\":\"styles-module__panel-subtitle___2r7z5\",\"panel-body\":\"styles-module__panel-body___2ibkq\",\"confirmationModal\":\"styles-module__confirmationModal___2WsDQ\",\"header\":\"styles-module__header___1J0Cj\",\"prompt\":\"styles-module__prompt___1rDjF\",\"button\":\"styles-module__button___1KB6X\",\"confirmButton\":\"styles-module__confirmButton___1Ij_K\",\"cancelButton\":\"styles-module__cancelButton___1XG_u\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___qG5k4\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1zdmG\",\"btn-toggle\":\"styles-module__btn-toggle___1WcMr\",\"handle\":\"styles-module__handle___1P0LS\",\"active\":\"styles-module__active___338tI\",\"focus\":\"styles-module__focus___iIIJt\",\"card-panel\":\"styles-module__card-panel___2TmHR\",\"panel-heading\":\"styles-module__panel-heading___38_Mz\",\"panel-title\":\"styles-module__panel-title___3g4fG\",\"panel-subtitle\":\"styles-module__panel-subtitle___177jh\",\"panel-body\":\"styles-module__panel-body___GLAlZ\",\"overlay\":\"styles-module__overlay___JLoon\",\"tooltip\":\"styles-module__tooltip___3S_md\",\"title\":\"styles-module__title___1uXcD\",\"dataSource\":\"styles-module__dataSource___1CirB\",\"desc\":\"styles-module__desc___Gtvim\",\"formula\":\"styles-module__formula___3OM3h\",\"link\":\"styles-module__link___2cpkt\"};","export const DEFAULT_CELL_WIDTH = 150\nexport const DEFAULT_NAME_CELL_WIDTH = 300\nexport const EXTENDED_NAME_CELL_WIDTH = 500\n\nexport const INITIAL_STATE_SORT_BY = [{ desc: false, id: 'name' }]\n\nexport const RESIZE_TIMEOUT_IN_MS = 150\n\nexport const NAME_COLUMN_MODE_EXTENDED = 'extended'\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"loadingIconColor\":\"#2b2c2f\",\"loadingIconMarginRight\":\"15px\",\"loadingIconMarginLeft\":\"15px\",\"loadingIconSize\":\"25px\",\"google-oauth-button\":\"styles-module__google-oauth-button___80xga\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___3X94_\",\"btn-toggle\":\"styles-module__btn-toggle___3djsP\",\"handle\":\"styles-module__handle___cWN_U\",\"active\":\"styles-module__active___3fVP5\",\"focus\":\"styles-module__focus___Gups-\",\"card-panel\":\"styles-module__card-panel___2jRwH\",\"panel-heading\":\"styles-module__panel-heading___3WrUF\",\"panel-title\":\"styles-module__panel-title___3YhWS\",\"panel-subtitle\":\"styles-module__panel-subtitle___1KuIP\",\"panel-body\":\"styles-module__panel-body___3MZsr\",\"wrapper\":\"styles-module__wrapper___2OUnv\",\"expandIcon\":\"styles-module__expandIcon___2DkoB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"containerZIndex\":\"1000\",\"multiValueBgColor\":\"#fcfcfc\",\"multiValueBorderColor\":\"#eee\",\"google-oauth-button\":\"styles-module__google-oauth-button___3tEk8\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1vvMl\",\"btn-toggle\":\"styles-module__btn-toggle___35R5U\",\"handle\":\"styles-module__handle___2UP_3\",\"active\":\"styles-module__active___3eUMs\",\"focus\":\"styles-module__focus___2E2fU\",\"card-panel\":\"styles-module__card-panel___3FmZA\",\"panel-heading\":\"styles-module__panel-heading___3izcj\",\"panel-title\":\"styles-module__panel-title___2anEq\",\"panel-subtitle\":\"styles-module__panel-subtitle___g_KYG\",\"panel-body\":\"styles-module__panel-body___BIaIQ\",\"option\":\"styles-module__option___SEZzR\",\"colorBlock\":\"styles-module__colorBlock___2CgIk\",\"header\":\"styles-module__header___15xfv\",\"maxOption\":\"styles-module__maxOption___3QkR_\",\"toggleSelectorVisibilityBtn\":\"styles-module__toggleSelectorVisibilityBtn___39XvO\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___3i9an\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___255Wa\",\"btn-toggle\":\"styles-module__btn-toggle___2gvRl\",\"handle\":\"styles-module__handle___jL46J\",\"active\":\"styles-module__active___1TA-m\",\"focus\":\"styles-module__focus___38d2y\",\"card-panel\":\"styles-module__card-panel___1Nhh-\",\"panel-heading\":\"styles-module__panel-heading___3bie7\",\"panel-title\":\"styles-module__panel-title___2zQqI\",\"panel-subtitle\":\"styles-module__panel-subtitle___1tKyi\",\"panel-body\":\"styles-module__panel-body___1I4cd\",\"popover\":\"styles-module__popover___36RzF\",\"title\":\"styles-module__title___1cnIv\",\"content\":\"styles-module__content___KHuwe\",\"close\":\"styles-module__close___B5a2Z\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___2G_Xe\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___12IqG\",\"btn-toggle\":\"styles-module__btn-toggle___1qUEr\",\"handle\":\"styles-module__handle___1EPQQ\",\"active\":\"styles-module__active___31-u8\",\"focus\":\"styles-module__focus___3FgYm\",\"card-panel\":\"styles-module__card-panel___1jEj3\",\"panel-heading\":\"styles-module__panel-heading___1IZyE\",\"panel-title\":\"styles-module__panel-title___3QxYk\",\"panel-subtitle\":\"styles-module__panel-subtitle___3RigT\",\"panel-body\":\"styles-module__panel-body___1YvvD\",\"footer\":\"styles-module__footer___2vK8d\",\"links\":\"styles-module__links___TXCv9\",\"link\":\"styles-module__link___1KIy9\",\"fa\":\"styles-module__fa___QRH2t\",\"icon\":\"styles-module__icon___2BO39\",\"cc\":\"styles-module__cc___2BsPi\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"defaultWidth\":\"300px\",\"skeletonHeight\":\"50px\",\"google-oauth-button\":\"styles-module__google-oauth-button___iY9YN\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1PZZI\",\"btn-toggle\":\"styles-module__btn-toggle___27dcE\",\"handle\":\"styles-module__handle___1C8QO\",\"active\":\"styles-module__active___3tSAp\",\"focus\":\"styles-module__focus___1hUGg\",\"card-panel\":\"styles-module__card-panel___2Xzfk\",\"panel-heading\":\"styles-module__panel-heading___BwwKZ\",\"panel-title\":\"styles-module__panel-title___Kvs-M\",\"panel-subtitle\":\"styles-module__panel-subtitle___SeczR\",\"panel-body\":\"styles-module__panel-body___vB9BF\",\"formInputContainer\":\"styles-module__formInputContainer___3c0SV\",\"messageContent\":\"styles-module__messageContent___3ld9M\",\"formInput\":\"styles-module__formInput___1odbu\",\"noValue\":\"styles-module__noValue___3LKIW\",\"isError\":\"styles-module__isError___3BWw4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___1UVzb\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1wgs_\",\"btn-toggle\":\"styles-module__btn-toggle___ylRqb\",\"handle\":\"styles-module__handle___2OGN-\",\"active\":\"styles-module__active___lOcAl\",\"focus\":\"styles-module__focus___1z8lf\",\"card-panel\":\"styles-module__card-panel___3wjnO\",\"panel-heading\":\"styles-module__panel-heading___X3sk0\",\"panel-title\":\"styles-module__panel-title___7UWE5\",\"panel-subtitle\":\"styles-module__panel-subtitle___WpiiE\",\"panel-body\":\"styles-module__panel-body___SAacz\",\"wrapper\":\"styles-module__wrapper___dtLyB\",\"collapsed\":\"styles-module__collapsed___2vfqr\",\"content\":\"styles-module__content___1bkBR\",\"title\":\"styles-module__title___3zBED\",\"label\":\"styles-module__label___288g8\",\"changesBorder\":\"styles-module__changesBorder___1Jycq\",\"changesBorderCollapsed\":\"styles-module__changesBorderCollapsed___2686T\"};","export const formatCallbackGroupTemplate = payload => ({\n ...payload,\n requiredMacros: (payload.requiredMacros || '').split(',')\n})\n","import { SORT_NAME_VALUE_MAPPING } from './constants'\n\nexport const getSortValueByName = name => SORT_NAME_VALUE_MAPPING[name]\n\nexport const getSortedRowsByProperty = ({ baseRows, property }) => {\n if (!property) {\n return baseRows\n }\n\n return [...baseRows].sort((a, b) => a[property].localeCompare(b[property]))\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___1XaPw\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___YKNT4\",\"btn-toggle\":\"styles-module__btn-toggle___Z3Ezs\",\"handle\":\"styles-module__handle___3HsNW\",\"active\":\"styles-module__active___3TLdX\",\"focus\":\"styles-module__focus___1ndWG\",\"card-panel\":\"styles-module__card-panel___2jaUr\",\"panel-heading\":\"styles-module__panel-heading___23XUY\",\"panel-title\":\"styles-module__panel-title___1LqWN\",\"panel-subtitle\":\"styles-module__panel-subtitle___1NGxd\",\"panel-body\":\"styles-module__panel-body___3F9uY\",\"appDetail\":\"styles-module__appDetail___2EkiF\",\"appDetailElement\":\"styles-module__appDetailElement___3Zcah\",\"platformIcon\":\"styles-module__platformIcon___1_lfA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___PqBOQ\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___7Q2Yw\",\"btn-toggle\":\"styles-module__btn-toggle___3j_IP\",\"handle\":\"styles-module__handle___Kmemd\",\"active\":\"styles-module__active___3fOGs\",\"focus\":\"styles-module__focus___42kCr\",\"card-panel\":\"styles-module__card-panel___1jjIz\",\"panel-heading\":\"styles-module__panel-heading___Qy19Y\",\"panel-title\":\"styles-module__panel-title___2XFdx\",\"panel-subtitle\":\"styles-module__panel-subtitle___1QEr9\",\"panel-body\":\"styles-module__panel-body___1xZo8\",\"container\":\"styles-module__container___1PNJO\",\"header\":\"styles-module__header___1M1EW\",\"body\":\"styles-module__body___3Xsju\",\"formfield\":\"styles-module__formfield___3eIpO\",\"dropdown\":\"styles-module__dropdown___3iXIN\",\"footer\":\"styles-module__footer___1bRLP\"};","export const CARD_PANEL_TITLE = 'Move Campaign To Another App'\n\nexport const DROPDOWN_LABEL = 'Destination App'\nexport const DROPDOWN_PLACEHOLDER = 'Select app'\n\nexport const MOVE_CAMPAIGN_BUTTON_TEXT = 'Move Campaign'\n\nexport const MODAL_CONFIRMATION_TEXT = 'Confirm'\nexport const MODAL_TEXT = 'Are you sure want to move this campaign?'\nexport const MODAL_NOTICE = 'This action is not reversible.'\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport styles from './styles.module.scss'\n\nconst Badge = ({\n children,\n className,\n level\n}) => (\n
\n {children}\n
\n)\n\nBadge.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n level: PropTypes.oneOf(['danger', 'success', 'warning', 'default'])\n}\n\nBadge.defaultProps = {\n className: '',\n level: 'default'\n}\n\nexport default Badge\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport Text from '../Text'\nimport styles from './styles.module.scss'\n\nconst OverlaySubtext = ({ children, className }) => (\n \n {children}\n \n)\n\nOverlaySubtext.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string\n}\n\nOverlaySubtext.defaultProps = {\n className: null\n}\n\nexport default OverlaySubtext\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport styles from './styles.module.scss'\n\n/*\n eslint-disable jsx-a11y/interactive-supports-focus,\n jsx-a11y/click-events-have-key-events\n*/\nconst ConfirmationModalContent = ({\n cancelText,\n confirmText,\n header,\n prompt,\n onCancel,\n onConfirm\n}) => (\n
\n
{header}
\n
{prompt}
\n
\n \n {cancelText}\n
\n \n {confirmText}\n
\n \n \n)\n/*\n eslint-enable jsx-a11y/interactive-supports-focus,\n jsx-a11y/click-events-have-key-events\n*/\n\nConfirmationModalContent.propTypes = {\n cancelText: PropTypes.string,\n confirmText: PropTypes.string,\n header: PropTypes.string,\n onCancel: PropTypes.func.isRequired,\n onConfirm: PropTypes.func.isRequired,\n prompt: PropTypes.string\n}\n\nConfirmationModalContent.defaultProps = {\n cancelText: 'Cancel',\n confirmText: 'Yes',\n header: 'Confirm',\n prompt: 'Are you sure you want to continue?'\n}\n\nexport default ConfirmationModalContent\n","import { forwardRef } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport styles from './styles.module.scss'\n\nconst TableContainer = forwardRef((props, ref) => {\n const {\n children, className\n } = props\n\n return (\n
\n {children}\n
\n )\n})\n\nTableContainer.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string\n}\n\nTableContainer.defaultProps = {\n className: null\n}\n\nexport default TableContainer\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport styles from './styles.module.scss'\n\nconst TableData = ({\n children,\n className: classNameProp,\n dataType,\n isFirstColumn,\n ...restProps\n}) => {\n const isAlpha = dataType === 'alpha'\n const isNumeric = !isAlpha\n\n const className = classNames({\n 'text-left': isAlpha,\n 'text-right': isNumeric,\n [styles.numeric]: isNumeric\n }, classNameProp)\n\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n
\n {children}\n
\n )\n}\n\nTableData.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n dataType: PropTypes.oneOf(['alpha', 'numeric']).isRequired,\n isFirstColumn: PropTypes.bool\n}\n\nTableData.defaultProps = {\n className: '',\n isFirstColumn: false\n}\n\nexport default TableData\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport SkeletonRows from '../SkeletonRows'\n\nimport styles from './styles.module.scss'\n\nconst FakeRows = ({ className, numRows }) => (\n \n)\n\nFakeRows.propTypes = {\n className: PropTypes.string,\n numRows: PropTypes.number\n}\n\nFakeRows.defaultProps = {\n className: null,\n numRows: 5\n}\n\nexport default FakeRows\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport styles from './styles.module.scss'\n\n/* eslint-disable react/jsx-props-no-spreading */\nconst TableHeader = ({\n children, className: classNameProp, dataType, ...restProps\n}) => {\n const className = classNames(styles.header, classNameProp, {\n 'text-left': dataType === 'alpha',\n 'text-right': dataType === 'numeric'\n })\n\n return (\n
\n {children}\n
\n )\n}\n\nTableHeader.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n dataType: PropTypes.oneOf(['alpha', 'numeric']).isRequired\n}\n\nTableHeader.defaultProps = {\n className: null\n}\n\nexport default TableHeader\n/* eslint-enable react/jsx-props-no-spreading */\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport styles from './styles.module.scss'\n\nconst TableRow = ({\n children, className: classNameProp, depth, index, isExpanded, ...restProps\n}) => {\n const isEvenIndex = index % 2 === 0\n const isTopLevelRow = depth === 0\n\n const className = classNames(styles.row, styles[`level-${depth}`], classNameProp, {\n [styles.expanded]: isExpanded && isTopLevelRow,\n [styles.even]: isEvenIndex && isTopLevelRow,\n [styles.odd] : !isEvenIndex && isTopLevelRow\n })\n\n /* eslint-disable react/jsx-props-no-spreading */\n return (\n
\n {children}\n
\n )\n /* eslint-enable react/jsx-props-no-spreading */\n}\n\nTableRow.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n depth: PropTypes.number.isRequired,\n index: PropTypes.number.isRequired,\n isExpanded: PropTypes.bool\n}\n\nTableRow.defaultProps = {\n className: null,\n isExpanded: false\n}\n\nexport default TableRow\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport styles from './styles.module.scss'\n\nimport FontAwesomeIcon from '../FontAwesomeIcon'\n\nconst PopoutLink = ({ children, className, path }) => (\n \n {children &&
{children}
}\n \n \n)\n\nPopoutLink.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n path: PropTypes.string.isRequired\n}\n\nPopoutLink.defaultProps = {\n children: null,\n className: ''\n}\n\nexport default PopoutLink\n","import {\n useEffect,\n useState,\n useMemo,\n Fragment\n} from 'react'\nimport PropTypes from 'prop-types'\nimport { isArray, map, find } from 'lodash'\nimport Fuse from 'fuse.js'\nimport { useLocation } from 'react-router-dom'\nimport { FixedSizeList as List } from 'react-window'\n\nimport Filter from '../Filter'\nimport FontAwesomeIcon from '../../FontAwesomeIcon'\nimport Label from '../Filter/Label'\nimport ListItem from './ListItem'\nimport PaidFilter from './PaidFilter'\nimport Pane from '../Filter/Pane'\nimport Search from '../Filter/Search'\nimport SelectAll from '../Filter/SelectAll'\nimport SelectedItems from '../Filter/SelectedItems'\n\nimport { isPresent, deepCamelKeys } from '../../../utils/helpers'\nimport { buildLabelTextFromMultiSelected } from '../Filter/Label/helpers'\nimport { FUSE_OPTIONS } from '../Filter/constants'\nimport { useReportingFiltersState, isDataExporterPage } from '../../../contexts/ReportingFilters'\nimport { MAX_DISPLAY_COUNT } from '../Filter/SelectedItems/constants'\nimport { CHANNEL_LIST_HEIGHT_OFFSET, CHANNEL_LIST_ITEM_SIZE } from './constants'\nimport useWindowDimensions from '../../../hooks/useWindowDimensions'\nimport { hasSelectedAllVisibleItems } from '../Filter/helpers'\n\nimport styles from './styles.module.scss'\n\nconst createFuseList = channels => new Fuse(channels, FUSE_OPTIONS)\n\nconst ChannelsFilter = (\n {\n hasFilterChanges,\n isCollapsed,\n isOpen,\n onChange,\n onCloseClick,\n onLabelClick,\n selectedChannels,\n selectedGroupBy\n }\n) => {\n const { channels: channelsByContext, dataExporterChannels } = useReportingFiltersState()\n\n const location = useLocation()\n const channels = isDataExporterPage(location)\n ? deepCamelKeys(dataExporterChannels)\n : channelsByContext\n\n const [searchText, setSearchText] = useState('')\n const [searchableList, setSearchableList] = useState(createFuseList(channels))\n const [visibleChannels, setVisibleChannels] = useState(channels)\n\n const { height } = useWindowDimensions()\n\n const selectedChannelsInfo = useMemo(\n () => map(\n selectedChannels,\n selectedChannel => find(channels, { id: selectedChannel })\n ),\n [channels, selectedChannels]\n )\n\n useEffect(() => {\n setSearchableList(createFuseList(channels))\n }, [visibleChannels])\n\n useEffect(() => {\n if (isPresent(searchText)) {\n setVisibleChannels(map(searchableList.search(searchText), 'item'))\n } else {\n setVisibleChannels(channels)\n }\n }, [searchText])\n\n const handleListItemClick = clickedChannelId => {\n if (selectedChannels.includes(clickedChannelId)) {\n onChange(selectedChannels.filter(channelId => channelId !== clickedChannelId))\n } else {\n onChange([...selectedChannels, clickedChannelId])\n }\n }\n\n const handleClickSelectedChannel = ({ id }) => {\n handleListItemClick(id)\n }\n\n let isGroupingBySiteId = false\n\n if (isArray(selectedGroupBy)) {\n isGroupingBySiteId = selectedGroupBy.includes('site_id')\n } else {\n isGroupingBySiteId = selectedGroupBy === 'site_id'\n }\n\n const hasMultipleChannels = channels.length > 1\n\n // eslint-disable-next-line react/prop-types\n const ListItemRow = ({ index, style }) => {\n const channel = visibleChannels[index]\n\n return (\n
\n handleListItemClick(channel.id)}\n />\n
\n )\n }\n\n const labelText = buildLabelTextFromMultiSelected({\n humanizedSelectedTypeStr: 'Channels',\n selectable: channels,\n selected: selectedChannels\n })\n\n const isAllSelected = hasSelectedAllVisibleItems({\n selectedKeys: selectedChannels,\n visibleItems: visibleChannels\n })\n\n return (\n }\n hasFilterChanges={hasFilterChanges}\n isCollapsed={isCollapsed}\n isDisabled={false}\n isOpen={isOpen}\n isTooltipDisabled={!isCollapsed}\n labelTitle=\"Channels\"\n onClick={onLabelClick}\n >\n {labelText}\n \n )}\n pane={(\n \n \n setSearchText(newSearchText)}\n placeholderText=\"Filter Channels\"\n />\n \n )}\n title=\"Channels\"\n >\n \n \n {hasMultipleChannels && (\n \n )}\n \n {ListItemRow}\n \n \n \n )}\n />\n )\n}\n\nChannelsFilter.propTypes = {\n hasFilterChanges: PropTypes.bool.isRequired,\n isCollapsed: PropTypes.bool.isRequired,\n isOpen: PropTypes.bool.isRequired,\n onChange: PropTypes.func.isRequired,\n onCloseClick: PropTypes.func.isRequired,\n onLabelClick: PropTypes.func.isRequired,\n selectedChannels: PropTypes.arrayOf(PropTypes.number).isRequired,\n selectedGroupBy: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]).isRequired\n}\n\nexport default ChannelsFilter\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport FontAwesomeIcon from '../../FontAwesomeIcon'\n\nimport styles from './styles.module.scss'\n\nconst Collapser = ({ isCollapsed, onClick }) => {\n const icon = isCollapsed ? 'arrow-right' : 'arrow-left'\n const label = isCollapsed ? '' : 'Hide'\n\n return (\n
\n
\n {label}\n
\n
\n )\n}\n\nCollapser.propTypes = {\n isCollapsed: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired\n}\n\nexport default Collapser\n","import { useMemo, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { DateRangePicker } from 'react-date-range'\nimport classNames from 'classnames'\n\nimport Filter from '../Filter'\nimport FontAwesomeIcon from '../../FontAwesomeIcon'\nimport Label from '../Filter/Label'\nimport PaneHeader from '../Filter/Pane/Header'\nimport PaneTitle from '../Filter/Pane/Title'\n\nimport { RANGE_COLORS, VOID_END_DATE } from './constants'\n\nimport {\n formatDateForDisplay,\n formatDateToStr,\n getMinDate,\n getRestrictedDateRange,\n getStaticRanges,\n inputRanges,\n parseStrToDate\n} from './helpers'\n\nimport { isPresent } from '../../../utils/helpers'\n\nimport styles from './styles.module.scss'\n\nconst DateFilter = (\n {\n hasFilterChanges,\n isCollapsed,\n isOpen,\n onChange,\n onCloseClick,\n onLabelClick,\n selectedEndDate,\n selectedStartDate\n }\n) => {\n // VOID_END_DATE - this is a hack for the react-date-range library in order to allow the\n // 'days up to today' input to be empty\n // https://github.com/hypeserver/react-date-range/issues/330\n const isVoidedEndDate = selectedEndDate === VOID_END_DATE\n\n const [selectedRanges, setSelectedRanges] = useState({\n endDate: isVoidedEndDate ? new Date('') : parseStrToDate(selectedEndDate),\n key: 'dateRange',\n startDate: isPresent(selectedStartDate) ? parseStrToDate(selectedStartDate) : null\n })\n\n const handleChange = ({ dateRange }) => {\n const updatedRange = getRestrictedDateRange(dateRange)\n\n setSelectedRanges(updatedRange)\n\n const changedEndDate = updatedRange.endDate\n ? formatDateToStr(updatedRange.endDate)\n : VOID_END_DATE\n\n const changedStartDate = updatedRange.startDate\n ? formatDateToStr(updatedRange.startDate)\n : null\n\n onChange({\n endDate: changedEndDate,\n startDate: changedStartDate\n })\n }\n\n const { startDate, endDate } = selectedRanges\n\n let labelText\n if (startDate && endDate && endDate !== VOID_END_DATE) {\n labelText = `${formatDateForDisplay(selectedRanges.startDate)} - ${formatDateForDisplay(selectedRanges.endDate)}`\n } else {\n labelText = 'Not Set'\n }\n\n const staticRanges = useMemo(() => getStaticRanges(), [])\n\n return (\n }\n hasFilterChanges={hasFilterChanges}\n isCollapsed={isCollapsed}\n isDisabled={false}\n isOpen={isOpen}\n isTooltipDisabled={!isCollapsed}\n labelTitle=\"Date Range\"\n onClick={onLabelClick}\n >\n {labelText}\n \n )}\n pane={(\n
\n \n \n Date Range\n \n \n\n \n
\n )}\n />\n )\n}\n\nDateFilter.propTypes = {\n hasFilterChanges: PropTypes.bool.isRequired,\n isCollapsed: PropTypes.bool.isRequired,\n isOpen: PropTypes.bool.isRequired,\n onChange: PropTypes.func.isRequired,\n onCloseClick: PropTypes.func.isRequired,\n onLabelClick: PropTypes.func.isRequired,\n selectedEndDate: PropTypes.string.isRequired,\n selectedStartDate: PropTypes.string.isRequired\n}\n\nexport default DateFilter\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport styles from './styles.module.scss'\n\nfunction FormError({ children, className }) {\n return {children}\n}\n\nFormError.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string\n}\n\nFormError.defaultProps = {\n className: ''\n}\n\nexport default FormError\n","export const FUSE_OPTIONS = {\n distance: 100,\n keys: ['name'],\n location: 0,\n minMatchCharLength: 1,\n shouldSort: true,\n threshold: 0.3\n}\n","import {\n createContext,\n useContext,\n useReducer\n} from 'react'\nimport { isUndefined } from 'lodash'\n\nconst StateContext = createContext()\n\nconst reducer = state => state\n\n/* eslint-disable react/prop-types */\nexport const FeatureFlagsProvider = ({\n children,\n featureFlags = []\n}) => {\n const [state] = useReducer(reducer, { featureFlags })\n\n return (\n \n {children}\n \n )\n}\n/* eslint-enable react/prop-types */\n\nexport const useFeatureFlagsState = () => {\n const context = useContext(StateContext)\n\n if (isUndefined(context)) {\n throw new Error('useFeatureFlagsState must be used within a FeatureFlagsProvider')\n }\n\n return context\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport { uniqueId } from 'lodash'\n\nimport Label from '../Label/Label'\n\nimport styles from './styles.module.scss'\n\nclass RadioButton extends React.PureComponent {\n render() {\n const {\n children,\n className: classNameProp,\n inputClassName,\n isChecked,\n labelClassName,\n onKeyUp,\n onChange,\n required,\n value\n } = this.props\n\n const htmlFor = uniqueId(`RadioButton-${value}`)\n\n return (\n
\n \n\n \n \n \n \n \n\n {children}\n \n
\n )\n }\n}\n\nRadioButton.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n inputClassName: PropTypes.string,\n isChecked: PropTypes.bool.isRequired,\n labelClassName: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n onKeyUp: PropTypes.func,\n required: PropTypes.bool,\n value: PropTypes.string.isRequired\n}\n\nRadioButton.defaultProps = {\n className: '',\n inputClassName: '',\n labelClassName: '',\n onKeyUp: null,\n required: false\n}\n\nexport default RadioButton\n","import React, { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport Tooltip from 'rc-tooltip'\n\nimport FontAwesomeIcon from '../FontAwesomeIcon'\n\nimport { isBlankValue } from '../ReportingDataMetricValueDisplay/helpers'\n\nimport styles from './styles.module.scss'\n\nconst ReportingDataDisplay = ({\n className,\n iconClassName,\n // eslint-disable-next-line react/prop-types\n icon,\n hideTooltip,\n hideValue,\n truncate,\n value,\n valueClassName\n}) => {\n const showValue = !hideValue\n\n if (isBlankValue(value) && showValue) {\n return (\n \n \n \n )\n }\n\n if (hideTooltip) {\n return (\n
\n {icon}\n {showValue && (\n \n {value}\n \n )}\n
\n )\n }\n\n return (\n {value}}\n placement=\"top\"\n >\n
\n {icon}\n {showValue && (\n \n {value}\n \n )}\n
\n \n )\n}\n\nReportingDataDisplay.propTypes = {\n className: PropTypes.string,\n hideTooltip: PropTypes.bool,\n hideValue: PropTypes.bool,\n iconClassName: PropTypes.string,\n truncate: PropTypes.bool,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n valueClassName: PropTypes.string\n}\n\nReportingDataDisplay.defaultProps = {\n className: null,\n hideTooltip: false,\n hideValue: false,\n iconClassName: null,\n truncate: false,\n value: '',\n valueClassName: null\n}\n\nexport default ReportingDataDisplay\n","import AmazonIcon from '../../../assets/svgs/amazon.svg'\nimport AndroidOtherIcon from '../../../assets/svgs/android_other.svg'\nimport IosIcon from '../../../assets/svgs/ios.svg'\nimport AndroidIcon from '../../../assets/svgs/android.svg'\nimport WindowsIcon from '../../../assets/svgs/windows.svg'\nimport UnknownIcon from '../../../assets/svgs/unknown.svg'\n\nexport const PLATFORM_TO_ICON = {\n amazon: AmazonIcon,\n android: AndroidIcon,\n androidOther: AndroidOtherIcon,\n ios: IosIcon,\n windows: WindowsIcon,\n unknown: UnknownIcon\n}\n\nexport const VALID_SIZES = ['tiny', 'xs', 'sm', 'md', 'lg', 'xl', 'xxl']\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___ZvktQ\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1CKRV\",\"btn-toggle\":\"styles-module__btn-toggle___k6Hsv\",\"handle\":\"styles-module__handle___1Nt-M\",\"active\":\"styles-module__active___1tbzU\",\"focus\":\"styles-module__focus___C-XeD\",\"card-panel\":\"styles-module__card-panel___34fnm\",\"panel-heading\":\"styles-module__panel-heading___1cHAH\",\"panel-title\":\"styles-module__panel-title___3mUln\",\"panel-subtitle\":\"styles-module__panel-subtitle___2RlTx\",\"panel-body\":\"styles-module__panel-body___2LVwR\",\"overlay\":\"styles-module__overlay___1GJG-\",\"cardOverlay\":\"styles-module__cardOverlay___2zEJN\",\"cardBackground\":\"styles-module__cardBackground___2htkM\",\"overlayInner\":\"styles-module__overlayInner___3p7u4\",\"background\":\"styles-module__background___Rl8F-\",\"content\":\"styles-module__content___gb-8h\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___3iAhs\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___93NoQ\",\"btn-toggle\":\"styles-module__btn-toggle___2LqJc\",\"handle\":\"styles-module__handle___2bXKb\",\"active\":\"styles-module__active___SDxCz\",\"focus\":\"styles-module__focus___2qTH4\",\"card-panel\":\"styles-module__card-panel___1tLCl\",\"panel-heading\":\"styles-module__panel-heading___mBeBR\",\"panel-title\":\"styles-module__panel-title___30s9o\",\"panel-subtitle\":\"styles-module__panel-subtitle___RTO1V\",\"panel-body\":\"styles-module__panel-body___8eBuF\",\"container\":\"styles-module__container___T-UPp\",\"ripples\":\"styles-module__ripples___mP06O\",\"btn\":\"styles-module__btn___mPVOk\",\"btnSelected\":\"styles-module__btnSelected___3mnSx\",\"label\":\"styles-module__label___15gfM\",\"icon\":\"styles-module__icon___3l1TI\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"stickyTopOffset\":\"60\",\"google-oauth-button\":\"styles-module__google-oauth-button___3jR5l\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1FOGA\",\"btn-toggle\":\"styles-module__btn-toggle___1NBY8\",\"handle\":\"styles-module__handle___1n4Tz\",\"active\":\"styles-module__active___d2y9V\",\"focus\":\"styles-module__focus___2-xe4\",\"card-panel\":\"styles-module__card-panel___3deOY\",\"panel-heading\":\"styles-module__panel-heading___1xg8u\",\"panel-title\":\"styles-module__panel-title___1NO2J\",\"panel-subtitle\":\"styles-module__panel-subtitle___1pDqa\",\"panel-body\":\"styles-module__panel-body___1XpnM\",\"sticky\":\"styles-module__sticky___10lsn\",\"isCollapsed\":\"styles-module__isCollapsed___3ApKE\",\"stickyWrapper\":\"styles-module__stickyWrapper___fD7kF\",\"stickyBtn\":\"styles-module__stickyBtn___T287H\",\"header\":\"styles-module__header___3Zauj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___2V7g-\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___2H1nL\",\"btn-toggle\":\"styles-module__btn-toggle___3B_PA\",\"handle\":\"styles-module__handle___nOB5K\",\"active\":\"styles-module__active___2c0oc\",\"focus\":\"styles-module__focus___3f6aV\",\"card-panel\":\"styles-module__card-panel___1_b4k\",\"panel-heading\":\"styles-module__panel-heading___2P6RH\",\"panel-title\":\"styles-module__panel-title___2K80h\",\"panel-subtitle\":\"styles-module__panel-subtitle___1-r_2\",\"panel-body\":\"styles-module__panel-body___2OzF5\",\"select\":\"styles-module__select___25Vk7\",\"container\":\"styles-module__container___1MeDO\",\"btn\":\"styles-module__btn___1WSJL\",\"label\":\"styles-module__label___3vVcd\",\"value\":\"styles-module__value___1dtxe\",\"toggleIcon\":\"styles-module__toggleIcon___2lToG\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___3hJIj\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___sHZhi\",\"btn-toggle\":\"styles-module__btn-toggle___3Bk9x\",\"handle\":\"styles-module__handle___p_dXC\",\"active\":\"styles-module__active___1V0xC\",\"focus\":\"styles-module__focus___1d16z\",\"card-panel\":\"styles-module__card-panel___2Y64x\",\"panel-heading\":\"styles-module__panel-heading___3MRva\",\"panel-title\":\"styles-module__panel-title___34dlj\",\"panel-subtitle\":\"styles-module__panel-subtitle___3XGSQ\",\"panel-body\":\"styles-module__panel-body___3cX0S\",\"loadingBar\":\"styles-module__loadingBar___2arEk\",\"completed\":\"styles-module__completed___3cAW_\",\"primary\":\"styles-module__primary___1DZhm\",\"success\":\"styles-module__success___2leeX\",\"danger\":\"styles-module__danger___3Fhp2\",\"warning\":\"styles-module__warning___3XtZ4\"};","import { has, isNil } from 'lodash'\n\n// eslint-disable-next-line import/prefer-default-export\nexport const getDefaultOnboardingPopupStatus = userSettings => {\n if (isNil(userSettings)) {\n return false\n }\n\n const isMissingSetting = !has(userSettings, 'onboarding.popup')\n\n if (isMissingSetting) {\n return true\n }\n\n return userSettings.onboarding.popup === 'enabled'\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___3kd6e\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1Thvb\",\"btn-toggle\":\"styles-module__btn-toggle___2e3eb\",\"handle\":\"styles-module__handle___1k-bO\",\"active\":\"styles-module__active___30uiI\",\"focus\":\"styles-module__focus___3N8aq\",\"card-panel\":\"styles-module__card-panel___3B7Pl\",\"panel-heading\":\"styles-module__panel-heading___2T8wq\",\"panel-title\":\"styles-module__panel-title___1St0Z\",\"panel-subtitle\":\"styles-module__panel-subtitle___1h_Mk\",\"panel-body\":\"styles-module__panel-body___B62kJ\",\"toggle\":\"styles-module__toggle___1tnAb\",\"label\":\"styles-module__label___29Uof\",\"isDisabled\":\"styles-module__isDisabled___3d-OW\",\"isToggling\":\"styles-module__isToggling___3rPxM\",\"isOn\":\"styles-module__isOn___27tV1\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___3lLux\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___3Iuwb\",\"btn-toggle\":\"styles-module__btn-toggle___2j7VO\",\"handle\":\"styles-module__handle___2pPKZ\",\"active\":\"styles-module__active___3veLO\",\"focus\":\"styles-module__focus___3fQKg\",\"card-panel\":\"styles-module__card-panel___9r8Gd\",\"panel-heading\":\"styles-module__panel-heading___1PB-w\",\"panel-title\":\"styles-module__panel-title___3SW39\",\"panel-subtitle\":\"styles-module__panel-subtitle___3G8oN\",\"panel-body\":\"styles-module__panel-body___15fr_\",\"standaloneCampaignMergeTool\":\"styles-module__standaloneCampaignMergeTool___1HE_0\",\"titleSection\":\"styles-module__titleSection___3KF5j\",\"title\":\"styles-module__title___22F0w\",\"subHeading\":\"styles-module__subHeading___2Z1FA\",\"inputContainer\":\"styles-module__inputContainer___2-mM8\",\"input\":\"styles-module__input___11xXr\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___2offk\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1yqBs\",\"btn-toggle\":\"styles-module__btn-toggle___Yboes\",\"handle\":\"styles-module__handle___2T-Ew\",\"active\":\"styles-module__active___2C7Ax\",\"focus\":\"styles-module__focus___2JchT\",\"card-panel\":\"styles-module__card-panel___1Jr-j\",\"panel-heading\":\"styles-module__panel-heading___3C4ZH\",\"panel-title\":\"styles-module__panel-title___ATPUO\",\"panel-subtitle\":\"styles-module__panel-subtitle___3H6cv\",\"panel-body\":\"styles-module__panel-body___2PzZN\",\"csvPreviewTableContainer\":\"styles-module__csvPreviewTableContainer___2Jryi\",\"csvPreviewTable\":\"styles-module__csvPreviewTable___3bniK\",\"header\":\"styles-module__header___6Hzxi\",\"row\":\"styles-module__row___GIXKs\",\"cell\":\"styles-module__cell___1KD8o\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"skeletonAppSelectorHeight\":\"50px\",\"skeletonAppSelectorWidth\":\"300px\",\"skeletonTabNavigationHeight\":\"30px\",\"skeletonTabNavigationWidth\":\"500px\",\"skeletonCardPanelHeight\":\"200px\",\"google-oauth-button\":\"styles-module__google-oauth-button___2GgfQ\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1UWGP\",\"btn-toggle\":\"styles-module__btn-toggle___3yWAQ\",\"handle\":\"styles-module__handle___2prec\",\"active\":\"styles-module__active___3pxuY\",\"focus\":\"styles-module__focus___hlEuN\",\"card-panel\":\"styles-module__card-panel___1QUt_\",\"panel-heading\":\"styles-module__panel-heading___1ipwG\",\"panel-title\":\"styles-module__panel-title___2svcV\",\"panel-subtitle\":\"styles-module__panel-subtitle___3xGsX\",\"panel-body\":\"styles-module__panel-body___lFbVi\"};","import React from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport styles from './styles.module.scss'\n\nimport FontAwesomeIcon from '../FontAwesomeIcon'\n\nconst BackLink = ({ className: classNameProp, link, text }) => (\n \n {text}\n \n)\n\nBackLink.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n link: PropTypes.string.isRequired,\n text: PropTypes.string\n}\n\nBackLink.defaultProps = {\n text: 'Back'\n}\n\nexport default BackLink\n","import classNames from 'classnames'\nimport PropTypes from 'prop-types'\nimport { useState } from 'react'\n\nimport FontAwesomeIcon from '../FontAwesomeIcon'\nimport { DEFAULT_VISIBILITY } from './constants'\nimport styles from './styles.module.scss'\n\nconst Alert = ({ children, className, icon, iconClassName, level }) => {\n const [isVisible, setIsVisible] = useState(DEFAULT_VISIBILITY)\n\n const handleClickClose = () => setIsVisible(false)\n\n const isHidden = !isVisible\n\n if (isHidden) return ''\n\n return (\n \n
\n {icon && (\n \n )}\n {children}\n
\n
\n \n
\n \n )\n}\n\nAlert.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n icon: PropTypes.string,\n iconClassName: PropTypes.string,\n level: PropTypes.oneOf(['danger', 'success', 'warning', 'default'])\n}\n\nAlert.defaultProps = {\n className: '',\n icon: null,\n iconClassName: '',\n level: 'default'\n}\n\nexport default Alert\n","import classNames from 'classnames'\nimport PropTypes from 'prop-types'\n\nimport Alert from '../Alert'\nimport styles from './styles.module.scss'\n\nconst AlertList = ({ className, alertContainerClassName, alerts }) => (\n
\n {alerts.map(({ children, ...remainingProps }) => (\n
\n {children}\n
\n ))}\n
\n)\n\nAlertList.propTypes = {\n alertContainerClassName: PropTypes.string,\n alerts: PropTypes.arrayOf(\n PropTypes.shape({\n children: PropTypes.arrayOf(PropTypes.node),\n className: PropTypes.string,\n icon: PropTypes.string,\n iconClassName: PropTypes.string,\n key: PropTypes.string,\n level: PropTypes.string\n })\n ),\n className: PropTypes.string\n}\n\nAlertList.defaultProps = {\n alertContainerClassName: '',\n alerts: [],\n className: ''\n}\n\nexport default AlertList\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport styles from './styles.module.scss'\n\nconst BoldLink = ({ className, path, children }) => (\n \n {children}\n \n)\n\nBoldLink.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n path: PropTypes.string.isRequired\n}\n\nBoldLink.defaultProps = {\n children: null,\n className: ''\n}\n\nexport default BoldLink\n","import { Fragment } from 'react'\nimport { find, orderBy } from 'lodash'\nimport PropTypes from 'prop-types'\nimport { components, createFilter } from 'react-select'\nimport classNames from 'classnames'\n\nimport Dropdown, { customStyles, labelledControlStyles } from '../Dropdown'\nimport Icon from '../Icon'\n\nimport { arrayOfChannelObjects } from '../../utils/customPropTypes'\n\nimport {\n LABEL_CHANNEL_SELECTOR,\n PLACEHOLDER_CHANNEL_SELECTOR,\n FILTER_CONFIG\n} from './constants'\n\nimport stylesObj from './styles.module.scss'\n\nconst customChannelSelectorStyles = {\n ...customStyles,\n ...labelledControlStyles,\n control: () => ({\n ...customStyles.control(),\n ...labelledControlStyles.control(),\n color: stylesObj.controlColor,\n fontSize: stylesObj.controlFontSize,\n fontWeight: stylesObj.controlFontWeight,\n paddingTop: stylesObj.controlPaddingTop\n }),\n dropdownIndicator: () => ({\n color: stylesObj.controlColor,\n paddingTop: stylesObj.dropdownIndicatorPaddingTop\n }),\n indicatorsContainer: () => ({\n paddingRight: stylesObj.indicatorsContainerPaddingRight\n }),\n placeholder: () => ({\n color: stylesObj.placeholderColor,\n fontFamily: stylesObj.placeholderFontFamily,\n fontStyle: stylesObj.placeholderFontStyle,\n fontWeight: stylesObj.placeholderFontWeight\n })\n}\n\nconst ChannelSelector = ({\n className,\n channels,\n onChange,\n selectedChannelId\n}) => {\n const selectedChannel = find(channels, { id: selectedChannelId })\n\n const sortedChannels = orderBy(channels, ['name'], ['asc'])\n\n const CustomControl = props => (\n \n
{LABEL_CHANNEL_SELECTOR}
\n \n
\n )\n\n const OptionLabel = ({ name }) => (\n
\n {selectedChannel && }\n {name}\n
\n )\n\n OptionLabel.propTypes = {\n name: PropTypes.string.isRequired\n }\n\n return (\n
\n
\n option.id}\n isClearable={false}\n isSearchable\n onChange={onChange}\n options={sortedChannels}\n value={selectedChannel}\n customControl={CustomControl}\n customStyles={customChannelSelectorStyles}\n placeholder={PLACEHOLDER_CHANNEL_SELECTOR}\n filterOption={createFilter(FILTER_CONFIG)}\n />\n
\n
\n )\n}\n\nChannelSelector.propTypes = {\n channels: arrayOfChannelObjects.isRequired,\n className: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n selectedChannelId: PropTypes.string\n}\n\nChannelSelector.defaultProps = {\n className: '',\n selectedChannelId: ''\n}\n\nexport default ChannelSelector\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport styles from './styles.module.scss'\n\nconst Footer = ({ className }) => (\n
\n
\n TERMS\n\n PRIVACY\n\n \n
\n\n
\n © {new Date().getFullYear()} Tenjin, Inc.\n
\n
\n)\n\nFooter.propTypes = {\n className: PropTypes.string\n}\n\nFooter.defaultProps = {\n className: null\n}\n\nexport default Footer\n","import classNames from 'classnames'\nimport PropTypes from 'prop-types'\n\nimport { ONE_HUNDRED, ONE_HUNDRED_PERCENT } from './constants'\nimport styles from './styles.module.scss'\n\nconst LoadingBar = ({\n className,\n percentage,\n progressLevel,\n progressClassName,\n completeLevel\n}) => {\n const isComplete = percentage >= ONE_HUNDRED_PERCENT\n\n const level = isComplete ? completeLevel : progressLevel\n\n return (\n \n \n \n )\n}\n\nLoadingBar.propTypes = {\n className: PropTypes.string,\n completeLevel: PropTypes.oneOf([\n 'danger',\n 'success',\n 'warning',\n 'primary',\n 'custom'\n ]),\n percentage: PropTypes.number.isRequired,\n progressClassName: PropTypes.string,\n progressLevel: PropTypes.oneOf([\n 'danger',\n 'success',\n 'warning',\n 'primary',\n 'custom'\n ])\n}\n\nLoadingBar.defaultProps = {\n className: '',\n completeLevel: 'success',\n progressClassName: '',\n progressLevel: 'primary'\n}\n\nexport default LoadingBar\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport FontAwesomeIcon from '../FontAwesomeIcon'\n\nimport styles from './styles.module.scss'\n\nconst ModalHeaderWithClose = ({ children, className, onClickClose }) => (\n
\n {children}\n \n
\n)\n\nModalHeaderWithClose.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n onClickClose: PropTypes.func.isRequired\n}\n\nModalHeaderWithClose.defaultProps = {\n className: ''\n}\n\nexport default ModalHeaderWithClose\n","import { forwardRef } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport PuffLoader from 'react-spinners/PuffLoader'\nimport Tooltip from 'rc-tooltip'\n\nimport FontAwesomeIcon from '../../FontAwesomeIcon'\n\nimport styles from './styles.module.scss'\n\nconst DataRowExpander = forwardRef((props, ref) => {\n const {\n className, expandIconClassName: expandIconClassNameProp, isExpanded, isHidden,\n isLoading, tooltipText\n } = props\n\n if (isHidden) {\n return (\n
\n )\n }\n\n const showDetailsMessage = `${isExpanded ? 'Show less' : 'Show more'} details`\n\n const expandIconClassName = classNames(styles.expandIcon, expandIconClassNameProp)\n\n return (\n
\n {isLoading ? (\n \n ) : (\n {tooltipText || showDetailsMessage}}\n placement=\"top\"\n >\n \n \n \n \n )}\n
\n )\n})\n\nDataRowExpander.propTypes = {\n className: PropTypes.string,\n expandIconClassName: PropTypes.string,\n isExpanded: PropTypes.bool,\n isHidden: PropTypes.bool,\n isLoading: PropTypes.bool,\n tooltipText: PropTypes.string\n}\n\nDataRowExpander.defaultProps = {\n className: null,\n expandIconClassName: null,\n isExpanded: false,\n isHidden: false,\n isLoading: false,\n tooltipText: null\n}\n\nexport default DataRowExpander\n","import React, { useCallback } from 'react'\nimport PropTypes from 'prop-types'\n\nimport classNames from 'classnames'\n\nimport { noop } from '../../utils/helpers'\n\nconst PaginatorItem = props => {\n const {\n children, className, onClick, pageNumber\n } = props\n\n const handleClick = useCallback(ev => {\n ev.preventDefault()\n onClick(pageNumber)\n }, [onClick, pageNumber])\n\n const handleKeyDown = useCallback(ev => {\n if (ev.key === 'Enter') {\n ev.preventDefault()\n onClick(pageNumber)\n }\n }, [onClick, pageNumber])\n\n /* eslint-disable jsx-a11y/anchor-is-valid */\n return (\n
  • \n \n {children}\n \n
  • \n )\n /* eslint-enable jsx-a11y/anchor-is-valid */\n}\n\nPaginatorItem.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n onClick: PropTypes.func,\n pageNumber: PropTypes.oneOfType([PropTypes.number])\n}\n\nPaginatorItem.defaultProps = {\n className: '',\n onClick: noop,\n pageNumber: null\n}\n\nexport default PaginatorItem\n","import {\n isEmpty,\n each,\n filter,\n head\n} from 'lodash'\n\nimport { VALUE_RANGE_OPTIONS } from './constants'\n\nimport { getDefaultComparisonByGroupBy } from '../../contexts/ReportingFilters'\n\nimport { ALL_GROUP_BY_ID_STR, SK_AD_NETWORK_REPORT_TYPE_STR } from '../../contexts/ReportingFilters/constants'\nimport { GROUP_BY_CAMPAIGN_STR } from '../../contexts/GroupedSummaryTableSettings/constants'\n\nimport {\n getPluralizedTotalGroupByDisplayName,\n getPluralizedUnavailableGroupByDisplayName\n} from '../../utils/helpers'\n\n// eslint-disable-next-line import/prefer-default-export\nexport const getValidValueRangeOptions = allFetchedConversionValueHistogramData => {\n if (!isEmpty(allFetchedConversionValueHistogramData)) {\n let highestConversionValue = -1\n\n each(allFetchedConversionValueHistogramData, data => {\n each(data, item => {\n const { conversionValue, conversionValueCount } = item.attributes\n\n const higherConversionValueExists = conversionValue !== null\n && conversionValueCount > 0\n && Number(conversionValue) > highestConversionValue\n\n if (higherConversionValueExists) {\n highestConversionValue = conversionValue\n }\n })\n })\n\n return filter(\n VALUE_RANGE_OPTIONS,\n valueRange => highestConversionValue >= valueRange.minXValue\n )\n }\n\n return [head(VALUE_RANGE_OPTIONS)]\n}\n\nexport const getValidComparisonSelectorOptions = ({\n groupBy,\n groupedSummaryTableData\n}) => {\n const firstGroupBy = groupBy[0]\n\n const comparisonOptions = [\n getDefaultComparisonByGroupBy(groupBy)\n ]\n\n each(groupedSummaryTableData, ({\n attributes,\n id: rowId,\n name,\n type\n }) => {\n let id = rowId\n\n const isSkAdNetworkReport = type === SK_AD_NETWORK_REPORT_TYPE_STR\n const isCampaignIdGroupBy = firstGroupBy === GROUP_BY_CAMPAIGN_STR\n\n if (isSkAdNetworkReport && isCampaignIdGroupBy) {\n id = attributes.campaignId\n }\n\n comparisonOptions.push({ groupBy: firstGroupBy, id, name })\n })\n\n return comparisonOptions\n}\n\nexport const getComparisonSelectorOptionLabel = ({ id, name, groupBy }) => {\n if (id === ALL_GROUP_BY_ID_STR) {\n return getPluralizedTotalGroupByDisplayName(groupBy)\n }\n\n if (!name) {\n return getPluralizedUnavailableGroupByDisplayName(groupBy)\n }\n\n return name\n}\n\nexport const getComparisonSelectorOptionLabelByName = ({ groupBy, name }) => {\n if (name === ALL_GROUP_BY_ID_STR) {\n return getPluralizedTotalGroupByDisplayName(groupBy)\n }\n\n if (!name) {\n return getPluralizedUnavailableGroupByDisplayName(groupBy)\n }\n\n return name\n}\n","import PropTypes from 'prop-types'\nimport Skeleton from 'react-loading-skeleton'\nimport { isNumber } from 'lodash'\n\nimport { CHART_SKELETON_HEIGHT } from './constants'\n\nconst ChartSkeleton = ({ height }) => (\n \n)\n\nChartSkeleton.propTypes = {\n height: PropTypes.number\n}\n\nChartSkeleton.defaultProps = {\n height: null\n}\n\nexport default ChartSkeleton\n","export const CHART_SKELETON_HEIGHT = 454\n\nexport const PLOT_OPTIONS = {\n area: {\n animation: false,\n marker: {\n enabled: true,\n radius: 3,\n symbol: 'circle'\n },\n stacking: 'normal'\n },\n series: {\n animation: false,\n connectNulls: true,\n marker: {\n enabled: true,\n radius: 3,\n symbol: 'circle'\n }\n }\n}\n\nexport const X_DAY_RANGES = [\n {\n displayName: '7d',\n value: 7\n },\n {\n displayName: '30d',\n value: 30\n },\n {\n displayName: 'All',\n value: 'all'\n }\n]\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___3XPat\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___3cAXF\",\"btn-toggle\":\"styles-module__btn-toggle___3s7Ge\",\"handle\":\"styles-module__handle___124J3\",\"active\":\"styles-module__active___VLp00\",\"focus\":\"styles-module__focus___1xeF-\",\"card-panel\":\"styles-module__card-panel___31tyS\",\"panel-heading\":\"styles-module__panel-heading___yMT3f\",\"panel-title\":\"styles-module__panel-title___bKpZa\",\"panel-subtitle\":\"styles-module__panel-subtitle___1vnvQ\",\"panel-body\":\"styles-module__panel-body___AeH1W\",\"wrapper\":\"styles-module__wrapper___3vOaI\",\"content\":\"styles-module__content___1-5cA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___3wz_y\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___2jMKx\",\"btn-toggle\":\"styles-module__btn-toggle___16sv3\",\"handle\":\"styles-module__handle___2tStk\",\"active\":\"styles-module__active___1LBoM\",\"focus\":\"styles-module__focus___mme80\",\"card-panel\":\"styles-module__card-panel___3DuYN\",\"panel-heading\":\"styles-module__panel-heading___2Xyr7\",\"panel-title\":\"styles-module__panel-title___3WXwx\",\"panel-subtitle\":\"styles-module__panel-subtitle___2NgX8\",\"panel-body\":\"styles-module__panel-body___3oYZo\",\"icon\":\"styles-module__icon___2C_ks\",\"selected\":\"styles-module__selected___30ldv\"};","import PropTypes from 'prop-types'\n\nimport PlatformIcon from '../../../../PlatformIcon'\nimport QuickSelectorBtn from '../../../Filter/Pane/QuickSelectorBtn'\n\nimport { oneOfSelectablePlatforms } from '../../../../../utils/customPropTypes'\n\nconst PlatformFilter = ({ isActive, onClick, platform }) => (\n \n \n \n)\n\nPlatformFilter.propTypes = {\n isActive: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n platform: oneOfSelectablePlatforms.isRequired\n}\n\nexport default PlatformFilter\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport styles from './styles.module.scss'\n\n/*\n eslint-disable jsx-a11y/interactive-supports-focus,\n jsx-a11y/click-events-have-key-events,\n jsx-a11y/no-static-element-interactions\n*/\nconst ToolbarButton = ({\n className,\n disabled,\n onClick,\n children\n}) => (\n \n {children}\n
    \n)\n/*\n eslint-enable jsx-a11y/interactive-supports-focus,\n jsx-a11y/click-events-have-key-events,\n jsx-a11y/no-static-element-interactions\n*/\n\nToolbarButton.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n onClick: PropTypes.func.isRequired\n}\n\nToolbarButton.defaultProps = {\n className: null,\n disabled: false\n}\n\nexport default ToolbarButton\n","export const DATE_FORMAT = 'yyyy-MM-dd'\nexport const FLOAT_PRECISION = 0.0001\nexport const ESCAPE_KEYCODE = 27\nexport const ERROR_MESSAGE = 'Unable to update! Please try again later.'\n","import { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport TableHeader from '../TableHeader'\nimport AttributionDetails from '../AttributionDetails'\nimport {\n ATTRIBUTION_TYPE, ATTRIBUTION_TYPE_LABEL,\n ATTRIBUTION_WINDOW_LEVEL, ATTRIBUTION_LEVEL_WINDOW_LABEL\n} from '../constants'\nimport { channelObject } from '../../../../../../../utils/customPropTypes'\nimport styles from '../styles.module.scss'\n\nconst AttributionRow = ({ level, attributionType, adNetwork }) => {\n const hideProbabilistic = adNetwork?.selfAttributing || false\n\n return (\n \n \n {!hideProbabilistic && (\n \n )}\n \n )\n}\n\nAttributionRow.propTypes = {\n adNetwork: channelObject,\n attributionType: PropTypes.string.isRequired,\n level: PropTypes.string.isRequired\n}\n\nAttributionRow.defaultProps = {\n adNetwork: null\n}\n\nconst AttributionTable = ({ level, attributionType, adNetwork }) => {\n const adNetworkName = adNetwork?.name || ''\n return (\n
    \n
    \n \n \n
    \n
    \n )\n}\n\nAttributionTable.propTypes = {\n adNetwork: channelObject,\n attributionType: PropTypes.string.isRequired,\n level: PropTypes.string.isRequired\n}\n\nAttributionTable.defaultProps = {\n adNetwork: null\n}\n\nexport default AttributionTable\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport ClickOutsideAlerter from '../ClickOutsideAlerter'\nimport SelectMenu from '../SelectMenu/SelectMenu'\nimport SelectButton from '../SelectButton/SelectButton'\n\nimport { noop } from '../../utils/helpers'\n\nimport styles from './styles.module.scss'\n\nclass Select extends React.Component {\n constructor(props) {\n super(props)\n\n this.handleClickOutside = this.handleClickOutside.bind(this)\n this.handleSave = this.handleSave.bind(this)\n this.toggleMenu = this.toggleMenu.bind(this)\n\n this.state = {\n isMenuOpen: false\n }\n }\n\n toggleMenu() {\n const { isMenuOpen } = this.state\n const { onMenuToggle } = this.props\n\n this.setState({ isMenuOpen: !isMenuOpen }, () => {\n onMenuToggle(!isMenuOpen)\n })\n }\n\n handleClickOutside() {\n const { isMenuOpen } = this.state\n\n if (!isMenuOpen) return\n\n const { onMenuToggle } = this.props\n\n this.setState({ isMenuOpen: false }, () => {\n onMenuToggle(false)\n })\n }\n\n handleSave(itemIds) {\n const { onSave } = this.props\n\n this.setState({ isMenuOpen: false }, () => {\n onSave(itemIds)\n })\n }\n\n renderMenu() {\n const {\n allSelectLabel,\n alphabetize,\n description,\n items,\n menuHeader,\n menuItemRenderer,\n multiple,\n saveOnSelect,\n searchPlaceholder,\n searchable,\n selected,\n selectMenuClassName\n } = this.props\n\n return (\n \n )\n }\n\n renderSelectButton() {\n const {\n items,\n selectButtonClassName,\n selectButtonContainerClassName,\n selectButtonIconClassName,\n selectButtonLabel,\n selectButtonLabelClassName,\n selectButtonValue,\n selectButtonValueClassName,\n selectButtonValueRenderer,\n selected\n } = this.props\n const {\n isMenuOpen\n } = this.state\n\n return (\n \n )\n }\n\n render() {\n const {\n className: classNameProp\n } = this.props\n const {\n isMenuOpen\n } = this.state\n\n return (\n \n
    \n
    \n
    \n {this.renderSelectButton()}\n {isMenuOpen && this.renderMenu()}\n
    \n
    \n
    \n
    \n )\n }\n}\n\nSelect.propTypes = {\n allSelectLabel: PropTypes.string,\n alphabetize: PropTypes.bool,\n className: PropTypes.string,\n description: PropTypes.string,\n items: PropTypes.objectOf(\n PropTypes.shape({\n id: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string\n ]).isRequired,\n name: PropTypes.string.isRequired\n })\n ).isRequired,\n menuHeader: PropTypes.string,\n menuItemRenderer: PropTypes.func,\n multiple: PropTypes.bool,\n onMenuToggle: PropTypes.func,\n onSave: PropTypes.func.isRequired,\n saveOnSelect: PropTypes.bool,\n searchPlaceholder: PropTypes.string,\n searchable: PropTypes.bool,\n selectButtonClassName: PropTypes.string,\n selectButtonContainerClassName: PropTypes.string,\n selectButtonIconClassName: PropTypes.string,\n selectButtonLabel: PropTypes.string.isRequired,\n selectButtonLabelClassName: PropTypes.string,\n selectButtonValue: PropTypes.string,\n selectButtonValueClassName: PropTypes.string,\n selectButtonValueRenderer: PropTypes.func,\n selectMenuClassName: PropTypes.string,\n selected: PropTypes.oneOfType([\n PropTypes.array,\n PropTypes.number,\n PropTypes.string\n ])\n}\n\nSelect.defaultProps = {\n allSelectLabel: '',\n alphabetize: false,\n className: '',\n description: '',\n menuHeader: '',\n menuItemRenderer: null,\n multiple: false,\n onMenuToggle: noop,\n saveOnSelect: false,\n searchPlaceholder: '',\n searchable: false,\n selectButtonClassName: '',\n selectButtonContainerClassName: '',\n selectButtonIconClassName: '',\n selectButtonLabelClassName: '',\n selectButtonValue: null,\n selectButtonValueClassName: '',\n selectButtonValueRenderer: null,\n selectMenuClassName: '',\n selected: null\n}\n\nexport default Select\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___25D1W\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___69dBZ\",\"btn-toggle\":\"styles-module__btn-toggle___1Z_70\",\"handle\":\"styles-module__handle___t2ZUx\",\"active\":\"styles-module__active___180-j\",\"focus\":\"styles-module__focus___1G7lh\",\"card-panel\":\"styles-module__card-panel___1D4M1\",\"panel-heading\":\"styles-module__panel-heading___x1ZQX\",\"panel-title\":\"styles-module__panel-title___2dg6Z\",\"panel-subtitle\":\"styles-module__panel-subtitle___64O8I\",\"panel-body\":\"styles-module__panel-body___1-RhE\",\"badge\":\"styles-module__badge___2vw_c\",\"primary\":\"styles-module__primary___qPJ6s\",\"success\":\"styles-module__success___3k9e5\",\"warning\":\"styles-module__warning___1BtfK\",\"danger\":\"styles-module__danger___3zqOU\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___3slYo\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1hww3\",\"btn-toggle\":\"styles-module__btn-toggle___PxXW-\",\"handle\":\"styles-module__handle___2Yp3U\",\"active\":\"styles-module__active___3DPcd\",\"focus\":\"styles-module__focus___1scw9\",\"card-panel\":\"styles-module__card-panel___2hKgA\",\"panel-heading\":\"styles-module__panel-heading___1xQIz\",\"panel-title\":\"styles-module__panel-title___1TlQy\",\"panel-subtitle\":\"styles-module__panel-subtitle___1zOV9\",\"panel-body\":\"styles-module__panel-body___3--QA\",\"button\":\"styles-module__button___2aB2l\",\"success\":\"styles-module__success___xs840\",\"danger\":\"styles-module__danger___2BBvM\",\"warning\":\"styles-module__warning___2JQQD\",\"isDisabled\":\"styles-module__isDisabled___1tF4o\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___1FcpW\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___10Vyn\",\"btn-toggle\":\"styles-module__btn-toggle___20Yod\",\"handle\":\"styles-module__handle___ZzMTb\",\"active\":\"styles-module__active___-N8qz\",\"focus\":\"styles-module__focus___1OMp-\",\"card-panel\":\"styles-module__card-panel___2Pbqh\",\"panel-heading\":\"styles-module__panel-heading___3XFUc\",\"panel-title\":\"styles-module__panel-title___33Kp9\",\"panel-subtitle\":\"styles-module__panel-subtitle___1kY2x\",\"panel-body\":\"styles-module__panel-body___2c3Wm\",\"row\":\"styles-module__row___1oyaQ\",\"expanded\":\"styles-module__expanded___3b-7S\",\"level-0\":\"styles-module__level-0___1kzZZ\",\"even\":\"styles-module__even___3ET_9\",\"odd\":\"styles-module__odd___2IyrH\",\"level-1\":\"styles-module__level-1___3EhJk\",\"level-2\":\"styles-module__level-2___yt61p\",\"level-3\":\"styles-module__level-3___3zuZN\",\"noClick\":\"styles-module__noClick___d3NGJ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button____G6jT\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___2J3hD\",\"btn-toggle\":\"styles-module__btn-toggle___1JiTh\",\"handle\":\"styles-module__handle___3aKFl\",\"active\":\"styles-module__active___2WmVZ\",\"focus\":\"styles-module__focus___3ShHe\",\"card-panel\":\"styles-module__card-panel___H7sWL\",\"panel-heading\":\"styles-module__panel-heading___21Cpj\",\"panel-title\":\"styles-module__panel-title___XYw2H\",\"panel-subtitle\":\"styles-module__panel-subtitle___iwhdu\",\"panel-body\":\"styles-module__panel-body___1_Zx-\",\"inputWrapper\":\"styles-module__inputWrapper___2i6Rv\",\"input\":\"styles-module__input___38eB3\",\"withSearchIcon\":\"styles-module__withSearchIcon___v_qJT\",\"clearIcon\":\"styles-module__clearIcon___36Uzb\",\"searchIcon\":\"styles-module__searchIcon___2EdEC\"};","import { chain, includes } from 'lodash'\n\nimport { getReportTypeFromPathname } from '../../contexts/ReportingFilters'\n\n// eslint-disable-next-line import/prefer-default-export\nexport const getQueryURLForDataExporterV1 = ({ location, params }) => {\n let encodedQuery\n\n const hasSearch = location.search && location.search.length > 0\n\n const reportType = getReportTypeFromPathname(location.pathname)\n\n if (hasSearch) {\n encodedQuery = chain(location.search)\n .replace(/ad_networks/g, 'ad_network_ids')\n .replace(/apps/g, 'app_ids')\n .replace(/(granularity=[a-z|-]+)/, 'granularity=totals-daily')\n .value()\n\n encodedQuery += `&metrics=${encodeURIComponent(params.metrics.join(','))}`\n } else {\n encodedQuery = new URLSearchParams(params).toString()\n }\n\n const isMissingQueryStringDelimiter = !includes(encodedQuery, '?')\n\n if (isMissingQueryStringDelimiter) {\n encodedQuery = `?${encodedQuery}`\n }\n\n const isMissingReportType = !includes(encodedQuery, 'report_type')\n\n if (isMissingReportType) {\n encodedQuery = `${encodedQuery}&report_type=${reportType}`\n }\n\n /*\n Note: For https://adromance.atlassian.net/browse/TENJIN-12438,\n there is a bug that causes the data exporter link to be\n broken when the user has UA and SKAD metrics selected.\n This is due to Data Exporter V1 not being compatible with\n UA metrics being selected at the same time as SKAD metrics.\n This issue will be resolved once issue TENJIN-12494 is\n resolved and the epic TENJIN-10162 is released.\n */\n\n return `/dashboard/data_exporter${encodedQuery}`\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___9Fip-\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___iR21E\",\"btn-toggle\":\"styles-module__btn-toggle___1WVQK\",\"handle\":\"styles-module__handle___34ky-\",\"active\":\"styles-module__active___3e2K1\",\"focus\":\"styles-module__focus___3ndSZ\",\"card-panel\":\"styles-module__card-panel___2-9pZ\",\"panel-heading\":\"styles-module__panel-heading___2z5te\",\"panel-title\":\"styles-module__panel-title___2JVIW\",\"panel-subtitle\":\"styles-module__panel-subtitle___2Sawa\",\"panel-body\":\"styles-module__panel-body___BAYl-\",\"switch\":\"styles-module__switch___9jx8W\",\"label\":\"styles-module__label___1Ql7g\",\"isDisabled\":\"styles-module__isDisabled___3HbTM\",\"isToggling\":\"styles-module__isToggling___3yrjI\",\"isSecondary\":\"styles-module__isSecondary___1s68P\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___anrTQ\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___272P3\",\"btn-toggle\":\"styles-module__btn-toggle___2oaCw\",\"handle\":\"styles-module__handle___eaMi7\",\"active\":\"styles-module__active___2I-iS\",\"focus\":\"styles-module__focus___Vtxau\",\"card-panel\":\"styles-module__card-panel___2apY5\",\"panel-heading\":\"styles-module__panel-heading___5wKV7\",\"panel-title\":\"styles-module__panel-title___3rqg2\",\"panel-subtitle\":\"styles-module__panel-subtitle___3utHZ\",\"panel-body\":\"styles-module__panel-body___1Ehyj\",\"sourceToggle\":\"styles-module__sourceToggle___3wGf1\",\"tooltipContent\":\"styles-module__tooltipContent___eEZep\",\"isAdMediationDisabled\":\"styles-module__isAdMediationDisabled___12w5X\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___19T_y\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___39chA\",\"btn-toggle\":\"styles-module__btn-toggle___3nBAM\",\"handle\":\"styles-module__handle___1XMi6\",\"active\":\"styles-module__active___1U0Iw\",\"focus\":\"styles-module__focus___143b-\",\"card-panel\":\"styles-module__card-panel___2Woy2\",\"panel-heading\":\"styles-module__panel-heading___3_EM_\",\"panel-title\":\"styles-module__panel-title___3QyGk\",\"panel-subtitle\":\"styles-module__panel-subtitle___1cX-C\",\"panel-body\":\"styles-module__panel-body___2uZJ1\",\"container\":\"styles-module__container___2rrO1\",\"label\":\"styles-module__label___17xPT\",\"radioDot\":\"styles-module__radioDot___38idU\",\"radioOutline\":\"styles-module__radioOutline___wE1Vd\",\"input\":\"styles-module__input___13apX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___kwG5i\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___HsWk4\",\"btn-toggle\":\"styles-module__btn-toggle___32p41\",\"handle\":\"styles-module__handle___xhu_e\",\"active\":\"styles-module__active___WeT6i\",\"focus\":\"styles-module__focus___x_WIh\",\"card-panel\":\"styles-module__card-panel___WQjaJ\",\"panel-heading\":\"styles-module__panel-heading___SAuiL\",\"panel-title\":\"styles-module__panel-title___8UZ-d\",\"panel-subtitle\":\"styles-module__panel-subtitle___2l-y_\",\"panel-body\":\"styles-module__panel-body___16WfO\",\"ptiMeter\":\"styles-module__ptiMeter___2BtKs\",\"ptiLoadingBar\":\"styles-module__ptiLoadingBar___2NxwY\",\"allowanceInfo\":\"styles-module__allowanceInfo___3Y4DB\",\"attributionsInfo\":\"styles-module__attributionsInfo___1xxyN\",\"ptiProgress\":\"styles-module__ptiProgress___1JQVo\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___2P_Vu\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___2VHQn\",\"btn-toggle\":\"styles-module__btn-toggle___1d4eZ\",\"handle\":\"styles-module__handle___3g3Vt\",\"active\":\"styles-module__active___24a59\",\"focus\":\"styles-module__focus___2qe5J\",\"card-panel\":\"styles-module__card-panel___27wmf\",\"panel-heading\":\"styles-module__panel-heading___3gQVm\",\"panel-title\":\"styles-module__panel-title___6Ai4s\",\"panel-subtitle\":\"styles-module__panel-subtitle___Ox6wZ\",\"panel-body\":\"styles-module__panel-body___kFYPs\",\"listItem\":\"styles-module__listItem___12sUE\",\"listItemSelected\":\"styles-module__listItemSelected___3rsfX\",\"listItemDisabled\":\"styles-module__listItemDisabled___1DuzF\",\"leftContent\":\"styles-module__leftContent___3_BXK\",\"rightContent\":\"styles-module__rightContent___1Q7nl\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___KEBxw\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___3J0xI\",\"btn-toggle\":\"styles-module__btn-toggle___15iIg\",\"handle\":\"styles-module__handle___2RXrD\",\"active\":\"styles-module__active___3-uCu\",\"focus\":\"styles-module__focus___3mNl4\",\"card-panel\":\"styles-module__card-panel___jdnxg\",\"panel-heading\":\"styles-module__panel-heading___2rEAb\",\"panel-title\":\"styles-module__panel-title___2nUDO\",\"panel-subtitle\":\"styles-module__panel-subtitle___RiMix\",\"panel-body\":\"styles-module__panel-body___Q0cDS\",\"container\":\"styles-module__container___2KaT9\",\"items\":\"styles-module__items___s3wAy\",\"header\":\"styles-module__header___3W5G7\",\"input\":\"styles-module__input___1FKLg\",\"selectedItemCountInfo\":\"styles-module__selectedItemCountInfo___2kuTH\",\"selectedItemCountMessage\":\"styles-module__selectedItemCountMessage___1KO7h\"};","export const TIME_FORMAT = 'yyyy-MM-dd HH:mma z'\nexport const UTC_TIME_ZONE = 'Etc/UTC'\nexport const FIVE_SECONDS = 5000\nexport const NUM_YEARS_FOR_MIN_DATE = 1\nexport const NUM_VISIBLE_MONTHS_IN_PICKER = 1\n","export const APP_LIMITED_READONLY_ROLE = 'app_limited_readonly'\n\nexport const QUERY_REFRESH_INTERVAL = 1800000 // 30 minutes\n\nexport const QUERY_RETRY_COUNT = 1\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"controlLineHeight\":\"30px\",\"menuZIndex\":\"10000\",\"controlHeight\":\"41px\",\"controlMinWidth\":\"200px\",\"controlBorderColor\":\"#dee9f4\",\"google-oauth-button\":\"styles-module__google-oauth-button___3REw0\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___3O5QY\",\"btn-toggle\":\"styles-module__btn-toggle___2hg3O\",\"handle\":\"styles-module__handle___39hKN\",\"active\":\"styles-module__active___2M9rO\",\"focus\":\"styles-module__focus___3X0zh\",\"card-panel\":\"styles-module__card-panel___1r8YL\",\"panel-heading\":\"styles-module__panel-heading___36vwY\",\"panel-title\":\"styles-module__panel-title___3_7Kp\",\"panel-subtitle\":\"styles-module__panel-subtitle___3Dh_q\",\"panel-body\":\"styles-module__panel-body___2MRtS\"};","import { chain } from 'lodash'\nimport { isSkAdNetworkReport } from '../../../../../contexts/ReportingFilters'\n\n// eslint-disable-next-line import/prefer-default-export\nexport const getSelectableMetrics = ({ metricDefinitions, reportType }) => (\n chain(metricDefinitions)\n .filter(metric => {\n const isVisibleInExporter = metric.components?.dataExporter?.isVisible\n\n if (isSkAdNetworkReport(reportType)) {\n const isNotHidden = !metric.components?.dataExporter?.hideForSkAdNetworkReport\n\n return isVisibleInExporter && isNotHidden\n }\n\n return isVisibleInExporter\n })\n .sortBy('displayName')\n .value()\n)\n","export const SOURCE_API = 'api'\nexport const SOURCE_ILRD = 'ilrd'\nexport const URL_PARAM_SOURCE = 'source'\nexport const LINK_UPGRADE_NOW =\n 'https://docs.tenjin.com/v1/docs/ad-mediation-revenue-metrics-callbacks'\n","export const MAX_PTI_COUNT = 20000\n\n// TODO: [nafeu] add a more advanced lookup for plan details\nexport const PLAN_DETAILS = [\n 'All Tenjin Products',\n 'Unlimited users',\n 'Server-Server Integration',\n 'Custom Callbacks',\n 'LiveOps Campaigns',\n 'Ad Mediation ROI'\n]\n\nexport const STRIPE_BILLING_URL = '/dashboard/stripe/billing'\nexport const STRIPE_CHANGE_PLAN_URL = '/dashboard/stripe/change_plan'\n","import { isUnavailable } from '../../../../utils/helpers'\n\n// eslint-disable-next-line import/prefer-default-export\nexport const sortRows = (rowA, rowB, columnId, desc) => {\n if (isUnavailable(rowA.original.name)) {\n return desc ? -1 : 1\n }\n // TODO: potentially change needed here as well for numeric sort\n return rowA.original.name.localeCompare(\n rowB.original.name, 'en', { numeric: true }\n )\n}\n","export const DASHBOARD_ADMIN_AD_NETWORKS_URL = '/dashboard/admin/ad_networks'\nexport const DASHBOARD_ADMIN_CALLBACK_TEMPLATES_URL = '/dashboard/admin/callback_templates'\nexport const DASHBOARD_ADMIN_CALLBACK_GROUP_TEMPLATES_PATH = '/callback_group_templates'\n","import { Fragment } from 'react'\nimport { find } from 'lodash'\nimport PropTypes from 'prop-types'\nimport { components, createFilter } from 'react-select'\nimport classNames from 'classnames'\n\nimport Dropdown, { customStyles, labelledControlStyles } from '../Dropdown'\nimport Icon from '../Icon'\nimport PlatformIcon from '../PlatformIcon'\n\nimport { arrayOfAppObjects } from '../../utils/customPropTypes'\n\nimport {\n LABEL_APP_SELECTOR,\n PLACEHOLDER_APP_SELECTOR,\n FILTER_CONFIG\n} from './constants'\n\nimport stylesObj from './styles.module.scss'\n\nconst customAppSelectorStyles = {\n ...customStyles,\n ...labelledControlStyles,\n control: () => ({\n ...customStyles.control(),\n ...labelledControlStyles.control(),\n color: stylesObj.controlColor,\n fontSize: stylesObj.controlFontSize,\n fontWeight: stylesObj.controlFontWeight\n }),\n dropdownIndicator: () => ({\n color: stylesObj.controlColor,\n paddingTop: stylesObj.dropdownIndicatorPaddingTop\n }),\n indicatorsContainer: () => ({\n paddingRight: stylesObj.indicatorsContainerPaddingRight\n })\n}\n\nconst AppSelector = ({ apps, onChange, selectedAppId }) => {\n const selectedApp = find(apps, { id: selectedAppId })\n\n const CustomControl = props => (\n \n
    {LABEL_APP_SELECTOR}
    \n \n
    \n )\n\n const OptionLabel = ({ name }) => (\n
    \n \n \n {name}\n
    \n )\n\n OptionLabel.propTypes = {\n name: PropTypes.string.isRequired\n }\n\n return (\n
    \n
    \n option.id}\n isClearable={false}\n isSearchable\n onChange={onChange}\n options={apps}\n value={selectedApp}\n customControl={CustomControl}\n customStyles={customAppSelectorStyles}\n placeholder={PLACEHOLDER_APP_SELECTOR}\n filterOption={createFilter(FILTER_CONFIG)}\n />\n
    \n
    \n )\n}\n\nAppSelector.propTypes = {\n apps: arrayOfAppObjects.isRequired,\n onChange: PropTypes.func.isRequired,\n selectedAppId: PropTypes.string\n}\n\nAppSelector.defaultProps = {\n selectedAppId: ''\n}\n\nexport default AppSelector\n","import { Fragment } from 'react'\nimport PropTypes from 'prop-types'\n\nconst FragmentWrapper = ({ children }) => (\n \n {children}\n \n)\n\nFragmentWrapper.propTypes = {\n children: PropTypes.node.isRequired\n}\n\nexport default FragmentWrapper\n","import React, { useCallback } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport Ripples from 'react-ripples'\n\nimport styles from './styles.module.scss'\n\nconst Chip = ({ btnClassName: btnClassNameProp, className, icon, label, onClick, selected }) => {\n const renderIcon = useCallback(() => {\n if (icon && React.isValidElement(icon)) {\n return React.cloneElement(icon, {\n className: classNames(styles.icon, icon.props.className)\n })\n }\n\n return null\n }, [icon])\n\n const btnClassName = classNames(styles.btn, btnClassNameProp, {\n [styles.btnSelected]: selected\n })\n\n return (\n
    \n \n \n \n
    \n )\n}\n\nChip.propTypes = {\n btnClassName: PropTypes.string,\n className: PropTypes.string,\n icon: PropTypes.element,\n label: PropTypes.node.isRequired,\n onClick: PropTypes.func.isRequired,\n selected: PropTypes.bool.isRequired\n}\n\nChip.defaultProps = {\n btnClassName: '',\n className: '',\n icon: null\n}\n\nexport default Chip\n","import classNames from 'classnames'\nimport PropTypes from 'prop-types'\n\nimport FontAwesomeIcon from '../../../FontAwesomeIcon'\n\nimport styles from '../styles.module.scss'\n\nconst ArrowIcon = ({ isSelected }) => {\n const className = classNames(styles.innerListItemIcon, {\n [styles.selectedInnerListItemIcon]: isSelected\n })\n\n return (\n
    \n \n
    \n )\n}\n\nArrowIcon.propTypes = {\n isSelected: PropTypes.bool.isRequired\n}\n\nexport default ArrowIcon\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport Text from '../../Overlay/Subtext'\n\nimport styles from './styles.module.scss'\n\nconst NoDataRow = ({ className, msg }) => (\n {msg}\n)\n\nNoDataRow.propTypes = {\n msg: PropTypes.string\n}\n\nNoDataRow.defaultProps = {\n msg: 'No data to display. Please make a different filter selection.'\n}\n\nexport default NoDataRow\n","import { useMemo } from 'react'\nimport { useQuery } from 'react-query'\nimport { useLocation } from 'react-router-dom'\nimport { map } from 'lodash'\n\nimport Presenter from './presentation'\n\nimport { transformResponseDataForChart } from '../../../../utils/charts'\nimport { isPresent } from '../../../../utils/helpers'\nimport { useMetricDefinitionsState } from '../../../../contexts/MetricDefinitions'\nimport {\n groupMetricDefinitonsByOnboardingStatus, useOnboardingStatusState\n} from '../../../../contexts/OnboardingStatus'\nimport { buildQueryParams, useReportingFiltersState } from '../../../../contexts/ReportingFilters'\nimport { useCurrentUserState } from '../../../../contexts/CurrentUser'\nimport { fetchGroupedStatsData, fetchSummaryData } from '../../../../api/reporting'\nimport {\n generateAppLevelDataByDateForMetrics, generateSummaryLevelDataForMetrics\n} from '../../../../utils/mock'\nimport { getKPICardsMetricDefinitions } from './helpers'\n\nconst KPICards = () => {\n const { metricDefinitions: metricDefinitionsState } = useMetricDefinitionsState()\n\n const onboardingStatus = useOnboardingStatusState()\n\n const metricDefinitions = getKPICardsMetricDefinitions(metricDefinitionsState)\n\n const {\n mockableMetricDefinitions,\n queryableMetricDefinitions\n } = groupMetricDefinitonsByOnboardingStatus({ metricDefinitions, onboardingStatus })\n\n const location = useLocation()\n\n const { currentUser } = useCurrentUserState()\n const reportingFilters = useReportingFiltersState()\n\n const queryParamsForFetchingData = {\n ...buildQueryParams({ currentUser, location, reportingFilters }),\n metrics: map(queryableMetricDefinitions, 'key')\n }\n\n const queryKey = JSON.stringify(queryParamsForFetchingData)\n\n const canQuery = isPresent(queryParamsForFetchingData.metrics)\n\n const {\n data: summaryDataResponse,\n isError: isSummaryDataError,\n isFetching: isFetchingSummaryData,\n isLoading: isLoadingSummaryData,\n refetch: refetchSummaryData\n } = useQuery(['kpiCardsSummary', queryKey], () => fetchSummaryData({ params: queryParamsForFetchingData }), {\n enabled: canQuery\n })\n\n const {\n data: groupedStatsDataResponse,\n isError: isGroupedStatsDataError,\n isFetching: isFetchingGroupedStatsData,\n isLoading: isLoadingGroupedStatsData,\n refetch: refetchGroupedStatsData\n } = useQuery(['kpiCardsGroupedStats', queryKey], () => (\n fetchGroupedStatsData({ params: queryParamsForFetchingData })\n ), {\n enabled: canQuery\n })\n\n const isPullingSummaryData = isLoadingSummaryData || isFetchingSummaryData\n const isPullingGroupedStatsData = isLoadingGroupedStatsData || isFetchingGroupedStatsData\n\n const isError = isSummaryDataError || isGroupedStatsDataError\n\n const isSuccess = !(isPullingGroupedStatsData || isError)\n\n const onReloadClick = () => {\n refetchSummaryData()\n refetchGroupedStatsData()\n }\n\n const groupedStatsDataByMetric = useMemo(() => {\n if (isSuccess && groupedStatsDataResponse) {\n return transformResponseDataForChart({\n metricDefinitions: queryableMetricDefinitions,\n responseDataList: groupedStatsDataResponse\n })\n }\n\n return {}\n }, [groupedStatsDataResponse, isSuccess, queryableMetricDefinitions])\n\n const mockedMetricDefinitionKeys = map(mockableMetricDefinitions, 'key')\n\n const mockedGroupedStatsDataByMetric = transformResponseDataForChart({\n metricDefinitions: mockableMetricDefinitions,\n responseDataList: generateAppLevelDataByDateForMetrics(mockedMetricDefinitionKeys)\n })\n\n const summaryDataByMetric = {\n ...(summaryDataResponse || {}),\n ...generateSummaryLevelDataForMetrics(mockedMetricDefinitionKeys)\n }\n\n return (\n \n )\n}\n\nexport default KPICards\n","import FontAwesomeIcon from '../FontAwesomeIcon'\nimport ReportingDataImg from '../ReportingDataImg'\nimport ReportingDataMetricValueDisplay from '../ReportingDataMetricValueDisplay'\nimport ReportingDataNameDisplay from '../ReportingDataNameDisplay'\n\nimport {\n arrayOfCountries, highchartsPointObject, oneOfMetricValueTypes, oneOfSelectableGroupBys\n} from '../../utils/customPropTypes'\n\nimport styles from './styles.module.scss'\n\nconst TooltipPoint = ({\n countries,\n groupBy,\n point,\n valueType\n}) => {\n const {\n color,\n series: {\n options: {\n iconUrl, id, name, platform\n }\n },\n y\n } = point\n\n if (id === 'Total') {\n return (\n
    \n \n\n {'Total:\\u00A0'}\n\n \n
    \n )\n }\n\n return (\n
    \n \n\n }\n name={name}\n platform={platform}\n />\n\n {':\\u00A0'}\n\n \n
    \n )\n}\n\nTooltipPoint.propTypes = {\n countries: arrayOfCountries,\n groupBy: oneOfSelectableGroupBys.isRequired,\n point: highchartsPointObject.isRequired,\n valueType: oneOfMetricValueTypes.isRequired\n}\n\nTooltipPoint.defaultProps = {\n countries: []\n}\n\nexport default TooltipPoint\n","import classNames from 'classnames'\nimport PropTypes from 'prop-types'\nimport { useEffect, useRef, useState } from 'react'\nimport { useLocation } from 'react-router-dom'\n\nimport {\n getReportPageFromPathname,\n useReportingFiltersState\n} from '../../../../contexts/ReportingFilters'\nimport DataExporterButton from '../../../DataExporterButton'\nimport { convertReportPageToHeader } from './helpers'\nimport stylesObj from './styles.module.scss'\n\nconst ReportingPageHeader = ({ children }) => {\n const [isSticky, setIsSticky] = useState(false)\n const ref = useRef(null)\n\n const location = useLocation()\n\n const { isSidebarCollapsed } = useReportingFiltersState()\n\n const handleScroll = () => {\n if (ref.current) {\n const headerDistanceFromScrollPosition = Math.round(\n ref.current.getBoundingClientRect().top\n )\n\n const stickyConditionOffset = Number(stylesObj.stickyTopOffset)\n\n setIsSticky(headerDistanceFromScrollPosition <= stickyConditionOffset)\n }\n }\n\n useEffect(() => {\n window.addEventListener('scroll', handleScroll)\n\n return () => {\n window.removeEventListener('scroll', () => handleScroll)\n }\n }, [])\n\n const wrapperClassName = classNames(\n 'mbml',\n 'u-position-relative',\n 'u-flex',\n 'u-flexAlignItemsCenter',\n 'u-flexJustifyBetween',\n {\n [stylesObj.sticky]: isSticky,\n [stylesObj.isCollapsed]: isSidebarCollapsed\n }\n )\n\n const childrenWrapperClassName = classNames({\n [stylesObj.stickyWrapper]: isSticky\n })\n\n const dataExporterBtnClassName = classNames({\n [stylesObj.stickyBtn]: isSticky\n })\n\n const reportPage = getReportPageFromPathname(location.pathname)\n\n const canDisplayDataExporterButton = !(\n reportPage === 'custom' || reportPage === 'usage'\n )\n\n const headerText = convertReportPageToHeader(reportPage)\n\n return (\n
    \n
    \n
    {headerText} Report
    \n\n
    {children}
    \n
    \n\n {canDisplayDataExporterButton && (\n \n )}\n
    \n )\n}\n\nReportingPageHeader.propTypes = {\n children: PropTypes.node.isRequired\n}\n\nexport default ReportingPageHeader\n","import PropTypes from 'prop-types'\n\nimport styles from './styles.module.scss'\n\nconst SummaryBlock = ({\n header, label, overlay, value\n}) => (\n
    \n
    \n {header}\n
    \n\n
    \n {value}\n
    \n\n
    \n {label}\n
    \n\n {overlay}\n
    \n)\n\nSummaryBlock.propTypes = {\n header: PropTypes.oneOfType([PropTypes.element, PropTypes.string]).isRequired,\n label: PropTypes.oneOfType([PropTypes.element, PropTypes.string]).isRequired,\n overlay: PropTypes.oneOfType([PropTypes.element]),\n value: PropTypes.oneOfType([PropTypes.element, PropTypes.number, PropTypes.string]).isRequired\n}\n\nSummaryBlock.defaultProps = {\n overlay: null\n}\n\nexport default SummaryBlock\n","import classNames from 'classnames'\nimport PropTypes from 'prop-types'\nimport { useHistory, useLocation } from 'react-router-dom'\n\nimport { isUsingImpressionLevelRevenueData } from '../../../../api/reporting/helpers'\nimport FormLabelWithTooltip from '../../../FormLabelWithTooltip'\nimport Header from '../../../Header'\nimport Switch from '../../../Switch'\nimport {\n LINK_UPGRADE_NOW,\n SOURCE_API,\n SOURCE_ILRD,\n URL_PARAM_SOURCE\n} from './constants'\nimport styles from './styles.module.scss'\n\nconst SourceToggle = ({ className }) => {\n const location = useLocation()\n const history = useHistory()\n const hasIlrdAccess = window.gon.feature_flags.includes('ilrd_enabled')\n\n const upgradeNowTooltipContent = !hasIlrdAccess && (\n
    \n Don't have ILRD data? Upgrade Now\n
    \n )\n\n const adMediationTooltipContent = (\n
    \n Charts use Impression-Level Revenue Data\n
    \n from the SDK as their source.\n {upgradeNowTooltipContent}\n
    \n )\n\n const apiTooltipContent = (\n
    \n Charts use allocated revenue data from the\n
    \n Ad Network API as their source.\n {upgradeNowTooltipContent}\n
    \n )\n\n const handleSwitchSource = () => {\n const searchParams = new URLSearchParams(location.search)\n const currentSource = searchParams.get(URL_PARAM_SOURCE)\n\n const newSource = currentSource === SOURCE_ILRD ? SOURCE_API : SOURCE_ILRD\n\n searchParams.set(URL_PARAM_SOURCE, newSource)\n\n const newUrl = `${location.pathname}?${searchParams.toString()}`\n\n history.push(newUrl)\n }\n\n return (\n
    \n
    \n
    \n Select data source for charts below\n
    \n
    \n \n API\n \n \n \n Ad Mediation\n \n
    \n
    \n )\n}\n\nSourceToggle.propTypes = {\n className: PropTypes.string\n}\n\nSourceToggle.defaultProps = {\n className: ''\n}\n\nexport default SourceToggle\n","import BounceLoader from 'react-spinners/BounceLoader'\n\nimport Overlay from '../Overlay'\n\nimport styles from './styles.module.scss'\n\nconst LoadingOverlay = () => (\n \n \n \n)\n\nexport default LoadingOverlay\n","import classNames from 'classnames'\nimport PropTypes from 'prop-types'\n\nimport FontAwesomeIcon from '../../../FontAwesomeIcon'\n\nimport styles from './styles.module.scss'\n\nconst BackLink = ({ onClick }) => (\n \n \n\n Back to Menu\n \n)\n\nBackLink.propTypes = {\n onClick: PropTypes.func.isRequired\n}\n\nexport default BackLink\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport styles from './styles.module.scss'\n\nconst HeaderWithHelpText = ({ className, header, children }) => (\n
    \n
    {header}
    \n
    \n {children}\n
    \n
    \n)\n\nHeaderWithHelpText.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n header: PropTypes.string.isRequired\n}\n\nHeaderWithHelpText.defaultProps = {\n children: null,\n className: ''\n}\n\nexport default HeaderWithHelpText\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport styles from './styles.module.scss'\n\nconst LineTabNavigation = ({ className, options }) => (\n
    \n {options.map(({ label, path, isActive }) => (\n \n {label}\n \n ))}\n
    \n)\n\nLineTabNavigation.propTypes = {\n className: PropTypes.string,\n options: PropTypes.arrayOf(PropTypes.shape({\n isActive: PropTypes.func.isRequired,\n label: PropTypes.string.isRequired,\n path: PropTypes.string.isRequired\n }))\n}\n\nLineTabNavigation.defaultProps = {\n className: '',\n options: []\n}\n\nexport default LineTabNavigation\n","import classNames from 'classnames'\nimport { map } from 'lodash'\nimport React, { useEffect, useState } from 'react'\nimport { useHistory, useLocation } from 'react-router-dom'\n\nimport { useCurrentUserState } from '../../contexts/CurrentUser'\nimport { useGroupedSummaryTableSettingsDispatch } from '../../contexts/GroupedSummaryTableSettings'\nimport { useMetricDefinitionsDispatch } from '../../contexts/MetricDefinitions'\nimport {\n getEventNameFromQuery,\n getReportPageFromPathname,\n getUrlSearchParams,\n isCustomReportPage,\n useReportingFiltersDispatch,\n useReportingFiltersState\n} from '../../contexts/ReportingFilters'\nimport { setLocalDashboardStorage } from '../../utils/helpers'\nimport ClickOutsideAlerter from '../ClickOutsideAlerter'\nimport ApplyBtn from './ApplyBtn'\nimport AppsFilter from './AppsFilter'\nimport ChannelsFilter from './ChannelsFilter'\nimport Collapser from './Collapser'\nimport CountriesFilter from './CountriesFilter'\nimport DateFilter from './DateFilter'\nimport GranularityFilter from './GranularityFilter'\nimport GroupByFilter from './GroupByFilter'\nimport {\n buildQueryParamsFromFilterChanges,\n buildStateFromQueryParams,\n getFilterChanges\n} from './helpers'\nimport styles from './styles.module.scss'\n\nconst ReportingSidebar = () => {\n const reportingFilters = useReportingFiltersState()\n const reportingFiltersDispatch = useReportingFiltersDispatch()\n\n const metricDefinitionsDispatch = useMetricDefinitionsDispatch()\n\n const drilldownRulesDispatch = useGroupedSummaryTableSettingsDispatch()\n\n const history = useHistory()\n const location = useLocation()\n\n const { currentUser } = useCurrentUserState()\n\n const [state, setState] = useState({\n currentOpenPane: null,\n ...buildStateFromQueryParams({\n currentUser,\n location,\n reportingFilters\n })\n })\n\n const { countries, isSidebarCollapsed: isCollapsed } = reportingFilters\n\n const {\n currentApps,\n currentChannels,\n currentCountries,\n currentEndDate,\n currentGranularity,\n currentGroupBy,\n currentOpenPane,\n currentStartDate,\n unappliedApps,\n unappliedChannels,\n unappliedCountries,\n unappliedEndDate,\n unappliedGranularity,\n unappliedGroupBy,\n unappliedStartDate\n } = state\n\n useEffect(() => {\n if (unappliedGroupBy === 'site_id') {\n const allCountryIds = map(countries, 'id')\n setState({\n ...state,\n currentCountries: allCountryIds,\n unappliedCountries: allCountryIds\n })\n }\n }, [countries, unappliedGroupBy])\n\n useEffect(() => {\n setState({\n ...state,\n ...buildStateFromQueryParams({\n currentUser,\n location,\n reportingFilters\n })\n })\n }, [location])\n\n const {\n canApplyChanges,\n hasAppsFilterChanges,\n hasChannelsFilterChanges,\n hasCountriesFilterChanges,\n hasDateFilterChanges,\n hasFilterChanges,\n hasGranularityFilterChanges,\n hasGroupByFilterChanges\n } = getFilterChanges({\n currentApps,\n currentChannels,\n currentCountries,\n currentEndDate,\n currentGranularity,\n currentGroupBy,\n currentStartDate,\n unappliedApps,\n unappliedChannels,\n unappliedCountries,\n unappliedEndDate,\n unappliedGranularity,\n unappliedGroupBy,\n unappliedStartDate\n })\n\n const togglePaneFor = pane =>\n setState({\n ...state,\n currentOpenPane: currentOpenPane === pane ? null : pane\n })\n\n const closeCurrentPane = () => setState({ ...state, currentOpenPane: null })\n\n const handleApplyClick = () => {\n const reportPage = getReportPageFromPathname(location.pathname)\n const urlSearchParams = getUrlSearchParams(location.search)\n\n let eventName\n if (isCustomReportPage(reportPage)) {\n eventName = getEventNameFromQuery(urlSearchParams)\n }\n\n const urlParams = buildQueryParamsFromFilterChanges({\n apps: unappliedApps,\n channels: unappliedChannels,\n countries: unappliedCountries,\n endDate: unappliedEndDate,\n eventName,\n granularity: unappliedGranularity,\n groupBy: unappliedGroupBy,\n reportingFilters,\n startDate: unappliedStartDate\n })\n\n let auxiliaryUrlParams = ''\n\n if (urlSearchParams.get('source')) {\n auxiliaryUrlParams += `&source=${urlSearchParams.get('source')}`\n }\n\n if (urlSearchParams.get('flag')) {\n auxiliaryUrlParams += `&flag=${urlSearchParams.get('flag')}`\n }\n\n const fullUrlParams = `?${urlParams}${auxiliaryUrlParams}`\n\n const updatedUrl = `${location.pathname}${fullUrlParams}`\n\n setLocalDashboardStorage(`${reportPage}:groupBy`, unappliedGroupBy)\n\n history.push(updatedUrl)\n\n closeCurrentPane()\n\n if (hasGranularityFilterChanges) {\n metricDefinitionsDispatch({\n payload: { granularity: unappliedGranularity, reportPage },\n type: 'CHANGE_GRANULARITY'\n })\n }\n\n if (hasGroupByFilterChanges) {\n drilldownRulesDispatch({\n payload: { groupBy: unappliedGroupBy, reportPage },\n type: 'UPDATE_RULES'\n })\n }\n }\n\n return (\n \n \n
    \n {\n setState({\n ...state,\n unappliedEndDate: endDate,\n unappliedStartDate: startDate\n })\n }}\n onCloseClick={closeCurrentPane}\n onLabelClick={() => togglePaneFor('dates')}\n selectedEndDate={unappliedEndDate}\n selectedStartDate={unappliedStartDate}\n />\n\n setState({ ...state, unappliedApps: apps })}\n onCloseClick={closeCurrentPane}\n onLabelClick={() => togglePaneFor('apps')}\n selectedApps={unappliedApps}\n />\n\n \n setState({ ...state, unappliedChannels: channels })\n }\n onCloseClick={closeCurrentPane}\n onLabelClick={() => togglePaneFor('channels')}\n selectedChannels={unappliedChannels}\n selectedGroupBy={unappliedGroupBy}\n />\n\n {\n setState({ ...state, unappliedCountries: newCountries })\n }}\n onCloseClick={closeCurrentPane}\n onLabelClick={() => togglePaneFor('countries')}\n selectedCountries={unappliedCountries}\n selectedGroupBy={unappliedGroupBy}\n />\n\n {\n setState({\n ...state,\n currentOpenPane: null,\n unappliedGroupBy: groupBy\n })\n }}\n onCloseClick={closeCurrentPane}\n onLabelClick={() => togglePaneFor('groupBy')}\n selectedChannels={unappliedChannels}\n selectedGroupBy={unappliedGroupBy}\n />\n\n {\n setState({\n ...state,\n currentOpenPane: null,\n unappliedGranularity: granularity\n })\n }}\n onCloseClick={closeCurrentPane}\n onLabelClick={() => togglePaneFor('granularity')}\n selectedGranularity={unappliedGranularity}\n />\n\n \n\n reportingFiltersDispatch({ type: 'TOGGLE_SIDEBAR' })}\n />\n
    \n \n
    \n )\n}\n\nexport default ReportingSidebar\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport Tooltip from 'rc-tooltip'\n\nimport FontAwesomeIcon from '../../FontAwesomeIcon'\n\nimport { noop } from '../../../utils/helpers'\n\nimport styles from './styles.module.scss'\n\nconst ApplyBtn = ({\n canApply, hasFilterChanges, isCollapsed, onClick\n}) => {\n const className = classNames('btn', 'btn-success', styles.button, {\n disabled: !canApply\n })\n\n let tooltipText\n\n if (canApply) {\n tooltipText = 'Apply your filters changes'\n } else if (hasFilterChanges) {\n tooltipText = 'You have some filters that are not valid'\n } else {\n tooltipText = 'You have no filter changes'\n }\n\n return (\n {tooltipText}}\n placement=\"right\"\n >\n \n {!isCollapsed && 'Apply Filters'}\n {isCollapsed && }\n \n \n )\n}\n\nApplyBtn.propTypes = {\n canApply: PropTypes.bool.isRequired,\n hasFilterChanges: PropTypes.bool.isRequired,\n isCollapsed: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired\n}\n\nexport default ApplyBtn\n","import {\n useEffect,\n useState,\n useMemo,\n Fragment\n} from 'react'\nimport PropTypes from 'prop-types'\nimport { map, find } from 'lodash'\nimport Fuse from 'fuse.js'\nimport { FixedSizeList as List } from 'react-window'\n\nimport Filter from '../Filter'\nimport FontAwesomeIcon from '../../FontAwesomeIcon'\nimport Label from '../Filter/Label'\nimport ListItem from './ListItem'\nimport Pane from '../Filter/Pane'\nimport PlatformFilters from './PlatformFilters'\nimport Search from '../Filter/Search'\nimport SelectAll from '../Filter/SelectAll'\nimport SelectedItems from '../Filter/SelectedItems'\n\nimport { isPresent } from '../../../utils/helpers'\nimport { buildLabelTextFromMultiSelected } from '../Filter/Label/helpers'\nimport { FUSE_OPTIONS } from '../Filter/constants'\nimport { useReportingFiltersState } from '../../../contexts/ReportingFilters'\nimport { MAX_DISPLAY_COUNT } from '../Filter/SelectedItems/constants'\nimport { APP_LIST_HEIGHT_OFFSET, APP_LIST_ITEM_SIZE } from './constants'\nimport useWindowDimensions from '../../../hooks/useWindowDimensions'\nimport { hasSelectedAllVisibleItems } from '../Filter/helpers'\n\nimport styles from './styles.module.scss'\n\nconst createFuseList = apps => new Fuse(apps, FUSE_OPTIONS)\n\nconst AppsFilter = (\n {\n hasFilterChanges,\n isCollapsed,\n isOpen,\n onChange,\n onCloseClick,\n onLabelClick,\n selectedApps\n }\n) => {\n const { apps } = useReportingFiltersState()\n\n const [searchText, setSearchText] = useState('')\n const [searchableList, setSearchableList] = useState(createFuseList(apps))\n const [visibleApps, setVisibleApps] = useState(apps)\n\n const { height } = useWindowDimensions()\n\n const selectedAppsInfo = useMemo(\n () => map(\n selectedApps,\n selectedApp => find(apps, { id: selectedApp })\n ),\n [apps, selectedApps]\n )\n\n useEffect(() => {\n setSearchableList(createFuseList(apps))\n }, [apps])\n\n useEffect(() => {\n if (isPresent(searchText)) {\n setVisibleApps(map(searchableList.search(searchText), 'item'))\n } else {\n setVisibleApps(apps)\n }\n }, [searchText])\n\n const handleListItemClick = clickedAppId => {\n if (selectedApps.includes(clickedAppId)) {\n onChange(selectedApps.filter(appId => appId !== clickedAppId))\n } else {\n onChange([...selectedApps, clickedAppId])\n }\n }\n\n const handleClickSelectedApp = ({ id }) => {\n handleListItemClick(id)\n }\n\n // eslint-disable-next-line react/prop-types\n const ListItemRow = ({ index, style }) => {\n const app = visibleApps[index]\n\n return (\n
    \n handleListItemClick(app.id)}\n />\n
    \n )\n }\n\n const labelText = buildLabelTextFromMultiSelected({\n humanizedSelectedTypeStr: 'Apps',\n selectable: apps,\n selected: selectedApps\n })\n\n const isAllSelected = hasSelectedAllVisibleItems({\n selectedKeys: selectedApps,\n visibleItems: visibleApps\n })\n\n return (\n }\n hasFilterChanges={hasFilterChanges}\n isCollapsed={isCollapsed}\n isDisabled={false}\n isOpen={isOpen}\n isTooltipDisabled={!isCollapsed}\n labelTitle=\"Apps\"\n onClick={onLabelClick}\n >\n {labelText}\n \n )}\n pane={(\n \n \n setSearchText(newSearchText)}\n placeholderText=\"Filter Apps\"\n />\n \n )}\n title=\"Apps\"\n >\n \n \n \n \n {ListItemRow}\n \n \n \n )}\n />\n )\n}\n\nAppsFilter.propTypes = {\n hasFilterChanges: PropTypes.bool.isRequired,\n isCollapsed: PropTypes.bool.isRequired,\n isOpen: PropTypes.bool.isRequired,\n onChange: PropTypes.func.isRequired,\n onCloseClick: PropTypes.func.isRequired,\n onLabelClick: PropTypes.func.isRequired,\n selectedApps: PropTypes.arrayOf(PropTypes.string).isRequired\n}\n\nexport default AppsFilter\n","import PropTypes from 'prop-types'\n\nimport styles from './styles.module.scss'\n\nconst Title = ({ children }) => (\n

    {children}

    \n)\n\nTitle.propTypes = {\n children: PropTypes.node.isRequired\n}\n\nexport default Title\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport { noop } from '../../../../../utils/helpers'\n\nimport styles from './styles.module.scss'\n\nconst QuickSelectorBtn = (\n {\n children,\n isActive,\n isDisabled,\n onClick\n }\n) => (\n \n {children}\n \n)\n\nQuickSelectorBtn.propTypes = {\n children: PropTypes.node.isRequired,\n isActive: PropTypes.bool.isRequired,\n isDisabled: PropTypes.bool,\n onClick: PropTypes.func.isRequired\n}\n\nQuickSelectorBtn.defaultProps = {\n isDisabled: false\n}\n\nexport default QuickSelectorBtn\n","import {\n useEffect,\n useState,\n useMemo,\n Fragment\n} from 'react'\nimport PropTypes from 'prop-types'\nimport { map, find } from 'lodash'\nimport Fuse from 'fuse.js'\nimport { FixedSizeList as List } from 'react-window'\n\nimport Filter from '../Filter'\nimport FontAwesomeIcon from '../../FontAwesomeIcon'\nimport Label from '../Filter/Label'\nimport ListItem from './ListItem'\nimport Pane from '../Filter/Pane'\nimport Search from '../Filter/Search'\nimport SelectAll from '../Filter/SelectAll'\nimport SelectedItems from '../Filter/SelectedItems'\n\nimport { isPresent } from '../../../utils/helpers'\nimport { buildLabelTextFromMultiSelected } from '../Filter/Label/helpers'\nimport { FUSE_OPTIONS } from '../Filter/constants'\nimport { useReportingFiltersState } from '../../../contexts/ReportingFilters'\nimport { MAX_DISPLAY_COUNT } from '../Filter/SelectedItems/constants'\nimport { COUNTRY_LIST_HEIGHT_OFFSET, COUNTRY_LIST_ITEM_SIZE } from './constants'\nimport useWindowDimensions from '../../../hooks/useWindowDimensions'\nimport { hasSelectedAllVisibleItems } from '../Filter/helpers'\n\nimport styles from './styles.module.scss'\n\nconst createFuseList = countries => new Fuse(countries, FUSE_OPTIONS)\n\nconst CountriesFilter = (\n {\n hasFilterChanges,\n isCollapsed,\n isOpen,\n onChange,\n onCloseClick,\n onLabelClick,\n selectedCountries,\n selectedGroupBy\n }\n) => {\n const { countries } = useReportingFiltersState()\n\n const [searchText, setSearchText] = useState('')\n const [searchableList, setSearchableList] = useState(createFuseList(countries))\n const [visibleCountries, setVisibleCountries] = useState(countries)\n\n const { height } = useWindowDimensions()\n\n const selectedCountriesInfo = useMemo(\n () => map(\n selectedCountries,\n selectedCountry => find(countries, { id: selectedCountry })\n ),\n [countries, selectedCountries]\n )\n\n useEffect(() => {\n setSearchableList(createFuseList(countries))\n }, [countries])\n\n useEffect(() => {\n if (isPresent(searchText)) {\n setVisibleCountries(map(searchableList.search(searchText), 'item'))\n } else {\n setVisibleCountries(countries)\n }\n }, [searchText])\n\n const handleListItemClick = clickedCountryId => {\n if (selectedCountries.includes(clickedCountryId)) {\n onChange(selectedCountries.filter(countryId => countryId !== clickedCountryId))\n } else {\n onChange([...selectedCountries, clickedCountryId])\n }\n }\n\n const handleClickSelectedCountry = ({ id }) => {\n handleListItemClick(id)\n }\n\n // eslint-disable-next-line react/prop-types\n const ListItemRow = ({ index, style }) => {\n const country = visibleCountries[index]\n\n return (\n
    \n handleListItemClick(country.id)}\n />\n
    \n )\n }\n\n const labelText = buildLabelTextFromMultiSelected({\n humanizedSelectedTypeStr: 'Countries',\n selectable: countries,\n selected: selectedCountries\n })\n\n const isDisabled = selectedGroupBy === 'site_id'\n\n const tooltipText = isDisabled\n ? 'Countries filter is disabled when grouping by Site ID'\n : labelText\n\n const isAllSelected = hasSelectedAllVisibleItems({\n selectedKeys: selectedCountries,\n visibleItems: visibleCountries\n })\n\n return (\n }\n hasFilterChanges={hasFilterChanges}\n isCollapsed={isCollapsed}\n isDisabled={isDisabled}\n isOpen={isOpen}\n isTooltipDisabled={!(isCollapsed || isDisabled)}\n labelTitle=\"Countries\"\n onClick={onLabelClick}\n tooltipText={tooltipText}\n >\n {labelText}\n \n )}\n pane={(\n \n \n setSearchText(newSearchText)}\n placeholderText=\"Filter Countries\"\n />\n \n )}\n title=\"Countries\"\n >\n \n \n \n {ListItemRow}\n \n \n \n )}\n />\n )\n}\n\nCountriesFilter.propTypes = {\n hasFilterChanges: PropTypes.bool.isRequired,\n isCollapsed: PropTypes.bool.isRequired,\n isOpen: PropTypes.bool.isRequired,\n onChange: PropTypes.func.isRequired,\n onCloseClick: PropTypes.func.isRequired,\n onLabelClick: PropTypes.func.isRequired,\n selectedCountries: PropTypes.arrayOf(PropTypes.string).isRequired,\n selectedGroupBy: PropTypes.string.isRequired\n}\n\nexport default CountriesFilter\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nconst ToggleButton = ({\n isDisabled,\n isOn,\n onClick\n}) => (\n \n \n \n)\n\nToggleButton.propTypes = {\n isDisabled: PropTypes.bool,\n isOn: PropTypes.bool,\n onClick: PropTypes.func.isRequired\n}\n\nToggleButton.defaultProps = {\n isDisabled: false,\n isOn: false\n}\n\nexport default ToggleButton\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { getDecimalByPercent } from '../../helpers'\n\nconst ShowCommissionValue = ({\n deduction\n}) => (\n \n {getDecimalByPercent(deduction)}\n \n)\n\nShowCommissionValue.propTypes = {\n deduction: PropTypes.number.isRequired\n}\n\nexport default ShowCommissionValue\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { map } from 'lodash'\nimport Fuse from 'fuse.js'\n\nimport Filter from '../../../../ReportingSidebar/Filter'\nimport FontAwesomeIcon from '../../../../FontAwesomeIcon'\nimport Label from '../../../../ReportingSidebar/Filter/Label'\nimport ListItem from './ListItem'\nimport Pane from '../../../../ReportingSidebar/Filter/Pane'\nimport Search from '../../../../ReportingSidebar/Filter/Search'\n\nimport { isPresent } from '../../../../../utils/helpers'\nimport { FUSE_OPTIONS } from '../../../../ReportingSidebar/Filter/constants'\nimport { useReportingFiltersState } from '../../../../../contexts/ReportingFilters'\n\nimport styles from './styles.module.scss'\n\nconst createFuseList = apps => new Fuse(apps, FUSE_OPTIONS)\n\nconst AppsFilter = (\n {\n hasFilterChanges,\n isCollapsed,\n isOpen,\n onChange,\n onCloseClick,\n onLabelClick,\n selectedApps\n }\n) => {\n const { apps } = useReportingFiltersState()\n\n const [searchText, setSearchText] = useState('')\n const [searchableList, setSearchableList] = useState(createFuseList(apps))\n const [visibleApps, setVisibleApps] = useState(apps)\n\n useEffect(() => {\n setSearchableList(createFuseList(apps))\n }, [apps])\n\n useEffect(() => {\n if (isPresent(searchText)) {\n setVisibleApps(map(searchableList.search(searchText), 'item'))\n } else {\n setVisibleApps(apps)\n }\n }, [searchText])\n\n const handleListItemClick = clickedAppId => {\n onChange([clickedAppId])\n }\n\n const listItems = []\n\n listItems.push(\n
    \n Disabled apps listed below do not have an SK App claimed.\n
    \n )\n\n visibleApps.forEach(app => listItems.push(\n handleListItemClick(app.id)}\n />\n ))\n\n const selectedApp = apps.find(app => selectedApps[0] === app.id)\n\n return (\n }\n hasFilterChanges={hasFilterChanges}\n isCollapsed={isCollapsed}\n isDisabled={false}\n isOpen={isOpen}\n isTooltipDisabled={!isCollapsed}\n labelTitle=\"App\"\n onClick={onLabelClick}\n >\n {selectedApp?.name || 'No App'}\n \n )}\n pane={(\n setSearchText(newSearchText)}\n placeholderText=\"Filter Apps\"\n />\n )}\n title=\"Apps\"\n listClass={styles.fixedList}\n >\n {listItems}\n \n )}\n />\n )\n}\n\nAppsFilter.propTypes = {\n hasFilterChanges: PropTypes.bool.isRequired,\n isCollapsed: PropTypes.bool.isRequired,\n isOpen: PropTypes.bool.isRequired,\n onChange: PropTypes.func.isRequired,\n onCloseClick: PropTypes.func.isRequired,\n onLabelClick: PropTypes.func.isRequired,\n selectedApps: PropTypes.arrayOf(PropTypes.string).isRequired\n}\n\nexport default AppsFilter\n","export const getTopLevelRowsById = rows => {\n const topLevelRowsById = []\n\n rows.forEach(row => {\n const { depth, id } = row\n\n if (depth === 0) {\n topLevelRowsById.push(id)\n }\n })\n\n return topLevelRowsById\n}\n","import classNames from 'classnames'\nimport { isEmpty } from 'lodash'\nimport PropTypes from 'prop-types'\nimport Tooltip from 'rc-tooltip'\n\nimport { metricDefinitionObject } from '../../../utils/customPropTypes'\nimport FontAwesomeIcon from '../../FontAwesomeIcon'\nimport MetricTooltip from '../../MetricTooltip'\nimport { TOOLTIP_DELAY_IN_S } from './constants'\nimport styles from './styles.module.scss'\n\nconst getSortIcon = ({ isSorted, isSortedDesc, sortType }) => {\n if (isSorted) {\n if (isSortedDesc) {\n return `sort-${sortType}-desc`\n }\n\n return `sort-${sortType}-asc`\n }\n\n return 'sort'\n}\n\nconst Header = ({\n className,\n isSorted,\n isSortedDesc,\n metric,\n sortType,\n text,\n tooltipText\n}) => {\n const sortIconClassName = classNames(styles.sortIcon)\n const sortIcon = getSortIcon({ isSorted, isSortedDesc, sortType })\n\n const isMetric = metric && !isEmpty(metric)\n\n if (isMetric) {\n return (\n \n
    \n {text}\n\n \n
    \n
    \n )\n }\n\n return (\n {tooltipText}
    }\n placement=\"top\"\n >\n
    \n {text}\n\n \n
    \n \n )\n}\n\nHeader.propTypes = {\n className: PropTypes.string,\n isSorted: PropTypes.bool.isRequired,\n isSortedDesc: PropTypes.bool,\n metric: metricDefinitionObject,\n sortType: PropTypes.oneOf(['alpha', 'amount']),\n text: PropTypes.string.isRequired,\n tooltipText: PropTypes.string\n}\n\nHeader.defaultProps = {\n className: null,\n isSortedDesc: false,\n metric: null,\n sortType: 'amount',\n tooltipText: ''\n}\n\nexport default Header\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { pick } from 'lodash'\n\nimport FontAwesomeIcon from '../FontAwesomeIcon'\nimport Popover from '../Popover/Popover'\n\nimport { POPOVER_PROPS_LIST } from './constants'\n\nimport styles from './styles.module.scss'\n\nfunction FormHelpPopover(props) {\n const popoverProps = pick(props, POPOVER_PROPS_LIST)\n\n popoverProps.popoverClassName = styles.popoverTemplate\n\n /* eslint-disable react/jsx-props-no-spreading */\n return (\n \n
    \n \n
    \n
    \n )\n /* eslint-enable react/jsx-props-no-spreading */\n}\n\nFormHelpPopover.propTypes = {\n animation: PropTypes.bool,\n container: PropTypes.oneOfType([PropTypes.oneOf([false]), PropTypes.string]),\n content: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.element\n ]).isRequired,\n contentClassName: PropTypes.string,\n delay: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.shape({\n hide: PropTypes.number,\n show: PropTypes.number\n })\n ]),\n html: PropTypes.bool,\n onHidden: PropTypes.func,\n onHide: PropTypes.func,\n onInserted: PropTypes.func,\n onShow: PropTypes.func,\n onShown: PropTypes.func,\n placement: PropTypes.oneOf(['top', 'bottom', 'left', 'right', 'auto']),\n sanitize: PropTypes.bool,\n sanitizeFn: PropTypes.func,\n selector: PropTypes.oneOfType([PropTypes.oneOf([false]), PropTypes.string]),\n template: PropTypes.string,\n title: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n trigger: PropTypes.string,\n viewport: PropTypes.shape({ padding: PropTypes.number, select: PropTypes.string })\n}\n\nFormHelpPopover.defaultProps = {\n animation: true,\n container: false,\n contentClassName: '',\n delay: 0,\n html: false,\n onHidden: () => {},\n onHide: () => {},\n onInserted: () => {},\n onShow: () => {},\n onShown: () => {},\n placement: 'top',\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: null,\n title: '',\n trigger: 'click',\n viewport: null\n}\n\nexport default FormHelpPopover\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport { Form, useFormikContext } from 'formik'\n\nimport LoadingOverlay from '../LoadingOverlay'\n\nimport styles from './styles.module.scss'\n\nfunction FormWrapper({ children }) {\n const { isSubmitting } = useFormikContext()\n\n const className = classNames(styles.form, {\n [styles.formSubmitting]: isSubmitting\n })\n\n return (\n
    \n {children}\n {isSubmitting && }\n \n )\n}\n\nFormWrapper.propTypes = {\n children: PropTypes.node.isRequired\n}\n\nexport default FormWrapper\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport { useFormikContext } from 'formik'\nimport { isNull } from 'lodash'\n\nimport styles from './styles.module.scss'\n\nfunction FormSubmitButton(\n { children, className: classNameProp, isDisabled }\n) {\n const {\n dirty, isSubmitting, isValid, isValidating\n } = useFormikContext()\n\n let disabled\n if (isNull(isDisabled)) {\n disabled = !(dirty && isValid) || isSubmitting || isValidating\n } else {\n disabled = isDisabled\n }\n\n return (\n \n {children}\n \n )\n}\n\nFormSubmitButton.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n isDisabled: PropTypes.bool\n}\n\nFormSubmitButton.defaultProps = {\n className: '',\n isDisabled: null\n}\n\nexport default FormSubmitButton\n","// eslint-disable-next-line import/prefer-default-export\nexport const MAX_DISPLAY_COUNT = 10\n","import PropTypes from 'prop-types'\n\nimport ListItem from '../../../../../ReportingSidebar/Filter/Pane/ListItem'\nimport SingleSelectIcon from '../../../../../ReportingSidebar/Filter/Pane/ListItem/SingleSelectIcon'\n\nconst ReportTypeListItem = (\n {\n report,\n isSelected,\n onClick\n }\n) => {\n // TODO: Add apps list tooltip text\n let tooltipText\n\n return (\n }\n tooltipText={tooltipText}\n />\n )\n}\n\nReportTypeListItem.propTypes = {\n isSelected: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n report: PropTypes.string.isRequired\n}\n\nexport default ReportTypeListItem\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___To2Xf\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1c-ae\",\"btn-toggle\":\"styles-module__btn-toggle___2jB8m\",\"handle\":\"styles-module__handle___25qUB\",\"active\":\"styles-module__active___2WLgq\",\"focus\":\"styles-module__focus___2Yk5I\",\"card-panel\":\"styles-module__card-panel___1Wclm\",\"panel-heading\":\"styles-module__panel-heading___1KYQz\",\"panel-title\":\"styles-module__panel-title___5W_LX\",\"panel-subtitle\":\"styles-module__panel-subtitle___F4I3w\",\"panel-body\":\"styles-module__panel-body___1a8gN\",\"container\":\"styles-module__container___1pGj3\",\"btn\":\"styles-module__btn___v2HiL\",\"activeBtn\":\"styles-module__activeBtn___3nPUN\",\"value\":\"styles-module__value___1wKe-\"};","import { useEffect, useState } from 'react'\n\nexport default function useRefSize(ref) {\n const [size, setSize] = useState({\n height: undefined,\n width: undefined\n })\n\n useEffect(() => {\n function handleResize() {\n setSize({\n height: ref.current?.offsetHeight,\n width: ref.current?.offsetWidth\n })\n }\n\n window.addEventListener('resize', handleResize)\n\n handleResize()\n\n return () => window.removeEventListener('resize', handleResize)\n }, [ref.current])\n\n return size\n}\n","import { METRIC_CATEGORY } from '../../../../contexts/MetricDefinitions/constants'\n\nexport const isNewMetric = metricDefinition =>\n metricDefinition.categories.includes(METRIC_CATEGORY.NEW)\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___2T6db\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___2-b03\",\"btn-toggle\":\"styles-module__btn-toggle___3bRYh\",\"handle\":\"styles-module__handle___vrm1b\",\"active\":\"styles-module__active___28I1c\",\"focus\":\"styles-module__focus___1fwhY\",\"card-panel\":\"styles-module__card-panel___EbsY4\",\"panel-heading\":\"styles-module__panel-heading___k_PnP\",\"panel-title\":\"styles-module__panel-title____f9QJ\",\"panel-subtitle\":\"styles-module__panel-subtitle___2YHsb\",\"panel-body\":\"styles-module__panel-body___2TsIe\",\"layout\":\"styles-module__layout___1QZdz\",\"tableContainer\":\"styles-module__tableContainer___1AM0U\",\"tableContainerNoXScroll\":\"styles-module__tableContainerNoXScroll___2B0XG\",\"tooltip\":\"styles-module__tooltip___2-3Sp\",\"compactView\":\"styles-module__compactView___2RweJ\"};","export const CHART_SKELETON_HEIGHT = 400\nexport const MAX_VISIBLE_DATA_SERIES = 10\n\nexport const PLOT_OPTIONS = {\n area: {\n animation: false,\n connectNulls: true,\n marker: {\n enabled: true,\n radius: 3,\n symbol: 'circle'\n }\n },\n line: {\n animation: false,\n connectNulls: true,\n marker: {\n enabled: true,\n radius: 3,\n symbol: 'circle'\n }\n }\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___UOlb9\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___2KxCG\",\"btn-toggle\":\"styles-module__btn-toggle___3vYOC\",\"handle\":\"styles-module__handle___1DrXR\",\"active\":\"styles-module__active___3LWP4\",\"focus\":\"styles-module__focus___weYKS\",\"card-panel\":\"styles-module__card-panel___2IWiD\",\"panel-heading\":\"styles-module__panel-heading___2d7pR\",\"panel-title\":\"styles-module__panel-title___1E_tj\",\"panel-subtitle\":\"styles-module__panel-subtitle___3AP6S\",\"panel-body\":\"styles-module__panel-body___3prxo\",\"wrapper\":\"styles-module__wrapper___1xVuJ\",\"header\":\"styles-module__header___ZdG6y\",\"value\":\"styles-module__value___2wg4x\",\"label\":\"styles-module__label___1QMZN\"};","import React, { useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'formik'\nimport { isUndefined } from 'lodash'\n\nimport usePrevious from '../../hooks/usePrevious'\n\nimport { formikInjectedPropTypesObject } from '../../utils/customPropTypes'\n\nimport Chip from '../Chip'\n\nfunction FormChip(props) {\n const {\n btnClassName, className, formik, icon, label, name, value\n } = props\n const {\n getFieldMeta, setFieldValue, setFieldTouched\n } = formik\n const {\n value: fieldValue\n } = getFieldMeta(name)\n\n const prevFieldValue = usePrevious(fieldValue)\n\n const handleClick = useCallback(() => {\n const setValueTo = fieldValue === value ? null : value\n setFieldValue(name, setValueTo)\n }, [fieldValue, name, setFieldValue, value])\n\n useEffect(() => {\n if (isUndefined(prevFieldValue)) return\n\n if (fieldValue !== prevFieldValue) {\n setFieldTouched(name)\n }\n }, [fieldValue, name, prevFieldValue, setFieldTouched])\n\n return (\n \n )\n}\n\nFormChip.propTypes = {\n btnClassName: PropTypes.string,\n className: PropTypes.string,\n formik: formikInjectedPropTypesObject.isRequired,\n icon: PropTypes.element,\n label: PropTypes.node.isRequired,\n name: PropTypes.string.isRequired,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ])\n}\n\nFormChip.defaultProps = {\n btnClassName: '',\n className: '',\n icon: null,\n value: null\n}\n\nexport default connect(FormChip)\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___YzBHi\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___3y3S_\",\"btn-toggle\":\"styles-module__btn-toggle___3HjzC\",\"handle\":\"styles-module__handle___6TkBE\",\"active\":\"styles-module__active___xbyLD\",\"focus\":\"styles-module__focus___3O0N7\",\"card-panel\":\"styles-module__card-panel___U3Jng\",\"panel-heading\":\"styles-module__panel-heading___1cU8k\",\"panel-title\":\"styles-module__panel-title___1SHY1\",\"panel-subtitle\":\"styles-module__panel-subtitle___CnHYa\",\"panel-body\":\"styles-module__panel-body___1SK2V\",\"percentageLabel\":\"styles-module__percentageLabel___3IXWC\",\"success\":\"styles-module__success___bS_mY\",\"warning\":\"styles-module__warning___2x1yj\",\"danger\":\"styles-module__danger___1V8kx\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___OmODT\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1RZEy\",\"btn-toggle\":\"styles-module__btn-toggle___2DzaK\",\"handle\":\"styles-module__handle___2Bbwi\",\"active\":\"styles-module__active___2EASS\",\"focus\":\"styles-module__focus___8ZrZK\",\"card-panel\":\"styles-module__card-panel___K5pBk\",\"panel-heading\":\"styles-module__panel-heading___1tkDM\",\"panel-title\":\"styles-module__panel-title___1QQpp\",\"panel-subtitle\":\"styles-module__panel-subtitle___2UK5l\",\"panel-body\":\"styles-module__panel-body___3fI8Y\",\"filter\":\"styles-module__filter___31SJn\",\"disabled\":\"styles-module__disabled___1d3WW\"};","import { useState, useEffect } from 'react'\n\nfunction getWindowDimensions() {\n const { innerWidth: width, innerHeight: height } = window\n\n return {\n height,\n width\n }\n}\n\nexport default function useWindowDimensions() {\n const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions())\n\n useEffect(() => {\n function handleResize() {\n setWindowDimensions(getWindowDimensions())\n }\n\n window.addEventListener('resize', handleResize)\n return () => window.removeEventListener('resize', handleResize)\n }, [])\n\n return windowDimensions\n}\n","import { useEffect } from 'react'\n\nimport { useReportingFiltersState } from '../contexts/ReportingFilters'\n\nexport default function useFlashMessagesHook() {\n const { isSidebarCollapsed } = useReportingFiltersState()\n\n useEffect(() => {\n const $flashMessages = document.querySelectorAll('.alert')\n\n $flashMessages.forEach($flashMessage => {\n if (isSidebarCollapsed) {\n $flashMessage.classList.add('alert--withSidebarCollapsed')\n $flashMessage.classList.remove('alert--withSidebar')\n } else {\n $flashMessage.classList.add('alert--withSidebar')\n $flashMessage.classList.remove('alert--withSidebarCollapsed')\n }\n })\n }, [isSidebarCollapsed])\n}\n","// eslint-disable-next-line import/prefer-default-export\nexport const PREDEFINED_LOOKBACK_WINDOWS = [\n {\n label: 'last 7 days',\n value: 7\n },\n {\n label: 'last 30 days',\n value: 30\n },\n {\n label: 'last 60 days',\n value: 60\n },\n {\n label: 'last year',\n value: 365\n },\n {\n label: 'all time',\n value: 365 * 10\n }\n]\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___1Nofh\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1Jnnv\",\"btn-toggle\":\"styles-module__btn-toggle___u6Eoz\",\"handle\":\"styles-module__handle___1nd9s\",\"active\":\"styles-module__active___1dI_B\",\"focus\":\"styles-module__focus___2TsQR\",\"card-panel\":\"styles-module__card-panel___37TDR\",\"panel-heading\":\"styles-module__panel-heading___2VN8m\",\"panel-title\":\"styles-module__panel-title___3DOmT\",\"panel-subtitle\":\"styles-module__panel-subtitle___2mZ31\",\"panel-body\":\"styles-module__panel-body___1xXjb\",\"isSelected\":\"styles-module__isSelected___1tzAx\",\"titleSection\":\"styles-module__titleSection___3q83r\",\"title\":\"styles-module__title___1mXgS\",\"subHeading\":\"styles-module__subHeading___2wXYZ\",\"breadcrumb\":\"styles-module__breadcrumb___2T5uC\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___1Ax_x\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___2anha\",\"btn-toggle\":\"styles-module__btn-toggle___Ps1eE\",\"handle\":\"styles-module__handle___3_Y2Z\",\"active\":\"styles-module__active___1i8OM\",\"focus\":\"styles-module__focus___r64dl\",\"card-panel\":\"styles-module__card-panel___rt3pt\",\"panel-heading\":\"styles-module__panel-heading___woiR3\",\"panel-title\":\"styles-module__panel-title___3yXLz\",\"panel-subtitle\":\"styles-module__panel-subtitle___2Oshx\",\"panel-body\":\"styles-module__panel-body___34xnu\",\"label\":\"styles-module__label___1iJt1\",\"filter\":\"styles-module__filter___2XXY5\",\"pane\":\"styles-module__pane___1V9dD\",\"datePicker\":\"styles-module__datePicker___3LuJP\"};","import { FLOAT_PRECISION } from '../../constants'\n\n// eslint-disable-next-line import/prefer-default-export\nexport const isEqualFloat = (a, b) => Math.abs(a - b) < FLOAT_PRECISION\n","import { isEmpty } from 'lodash'\n\n// eslint-disable-next-line import/prefer-default-export\nexport const formatDate = (dateStr, defaultValue) => {\n if (isEmpty(dateStr)) {\n return defaultValue\n }\n\n const date = new Date(Date.parse(dateStr))\n\n return date.toLocaleDateString(undefined, { timeZone: 'UTC' })\n}\n","import { PATH_DASHBOARD_APPS, PATH_INTEGRATIONS } from './constants'\n\nexport const getAttributionTabUrl = ({ actionId, appId, channelId }) => {\n const basePath = channelId\n ? `${PATH_DASHBOARD_APPS}/${appId}${PATH_INTEGRATIONS}/${channelId}`\n : `${PATH_DASHBOARD_APPS}/${appId}`\n\n return actionId ? `${basePath}/${actionId}` : basePath\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___2VwPU\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___2nrcn\",\"btn-toggle\":\"styles-module__btn-toggle___1yTlE\",\"handle\":\"styles-module__handle___3Lnuw\",\"active\":\"styles-module__active___3064Q\",\"focus\":\"styles-module__focus___1X9-7\",\"card-panel\":\"styles-module__card-panel___3wQvJ\",\"panel-heading\":\"styles-module__panel-heading___M3h7e\",\"panel-title\":\"styles-module__panel-title___2Y0Ve\",\"panel-subtitle\":\"styles-module__panel-subtitle___1mrk7\",\"panel-body\":\"styles-module__panel-body___3kqiM\",\"label\":\"styles-module__label___3Zo7v\",\"filter\":\"styles-module__filter___2_p7a\",\"pane\":\"styles-module__pane___ZbTy2\",\"datePicker\":\"styles-module__datePicker___Bjt1n\"};","import { includes } from 'lodash'\n\nimport Header from '../Header'\nimport ReportingDataImg from '../../../../ReportingDataImg'\nimport ReportingDataMetricValueDisplay from '../../../../ReportingDataMetricValueDisplay'\nimport ReportingDataDateDisplay from '../../../../ReportingDataDateDisplay'\nimport ReportingDataDisplay from '../../../../ReportingDataDisplay'\n\nimport { sortRows } from '../helpers'\nimport {\n includesSomeItemCombination,\n GROUP_BY_TO_DISPLAY_NAME\n} from '../../../../../utils/helpers'\n\nimport {\n DEFAULT_NAME_HEADER_TEXT,\n DEFAULT_COLUMN_OPTIONS\n} from '../constants'\n\nimport {\n DEFAULT_CELL_WIDTH,\n NON_METRIC_CELL_WIDTH_MAPPING,\n EMPTY_HEADER\n} from './constants'\n\nimport {\n getPlatformIcon,\n getCountryContent\n} from '../../../../ReportingDataNameDisplay/helpers'\n\nimport { isPublisherReport } from '../../../../../contexts/ReportingFilters'\nimport { isUsingClickhouse } from '../../../../../api/reporting/helpers'\n\nimport styles from './styles.module.scss'\n\nexport const getColumnsForSelectedMetrics = (\n {\n metricDefinitions,\n selectedMetrics\n }\n) => {\n const width = DEFAULT_CELL_WIDTH\n\n return selectedMetrics.map(metric => ({\n ...DEFAULT_COLUMN_OPTIONS,\n // eslint-disable-next-line react/prop-types\n Cell: ({ value }) => (\n \n ),\n // eslint-disable-next-line react/prop-types\n Header: () => {\n const selectedMetric = metricDefinitions[metric]\n\n return (\n \n )\n },\n accessor: metric,\n width\n }))\n}\n\nexport const getNonMetricHeaderVisibility = ({\n _includesSomeItemCombination = includesSomeItemCombination,\n columnKeys,\n groupBy,\n reportType\n}) => {\n const nameColumnIsNotRedundant = (!isUsingClickhouse() && !isPublisherReport(reportType))\n || !includes([\n 'appId',\n 'adNetworkId',\n 'adNetworkApp',\n 'adNetworkAppCountry',\n 'appCountry',\n 'platform',\n 'country'\n ], groupBy)\n\n return {\n showAdNetwork: _includesSomeItemCombination({\n allItems: columnKeys,\n combinations: [\n ['adNetworkName']\n ]\n }),\n showApp: _includesSomeItemCombination({\n allItems: columnKeys,\n combinations: [\n ['appName', 'appIconUrl']\n ]\n }),\n showCountry: _includesSomeItemCombination({\n allItems: columnKeys,\n combinations: [\n ['country']\n ]\n }),\n showName: _includesSomeItemCombination({\n allItems: columnKeys,\n combinations: [\n ['name']\n ]\n }) && nameColumnIsNotRedundant,\n showPlatform: _includesSomeItemCombination({\n allItems: columnKeys,\n combinations: [\n ['platform']\n ]\n })\n }\n}\n\nconst nameHeader = options => ({\n ...DEFAULT_COLUMN_OPTIONS,\n accessor: 'name',\n id: 'name',\n sortDescFirst: false,\n // eslint-disable-next-line react/prop-types, sort-keys\n Header: () => (\n \n ),\n // eslint-disable-next-line react/prop-types, sort-keys\n Cell: ({ row }) => {\n /* eslint-disable react/prop-types */\n const { name, iconUrl } = row.original\n /* eslint-enable react/prop-types */\n\n return (\n }\n className={styles.nameCell}\n value={name}\n truncate\n />\n )\n },\n sortType: sortRows,\n width: NON_METRIC_CELL_WIDTH_MAPPING.name,\n ...options\n})\n\nconst dateHeader = options => ({\n ...DEFAULT_COLUMN_OPTIONS,\n accessor: 'date',\n id: 'date',\n sortDescFirst: true,\n // eslint-disable-next-line react/prop-types, sort-keys\n Header: () => (\n \n ),\n // eslint-disable-next-line react/prop-types, sort-keys\n Cell: ({ row }) => {\n /* eslint-disable react/prop-types */\n const { date } = row.original\n /* eslint-enable react/prop-types */\n\n return (\n
    \n \n
    \n )\n },\n sortType: sortRows,\n width: NON_METRIC_CELL_WIDTH_MAPPING.date,\n ...options\n})\n\nconst countryHeader = ({ countries, ...options }) => ({\n ...DEFAULT_COLUMN_OPTIONS,\n accessor: 'country',\n id: 'country',\n sortDescFirst: false,\n // eslint-disable-next-line react/prop-types, sort-keys\n Header: () => (\n \n ),\n // eslint-disable-next-line react/prop-types, sort-keys\n Cell: ({ row }) => {\n /* eslint-disable react/prop-types */\n const { country } = row.original\n /* eslint-enable react/prop-types */\n\n const { icon: countryIcon, name: countryName } = getCountryContent({\n countries,\n name: country\n })\n\n return (\n
    \n \n
    \n )\n },\n sortType: sortRows,\n width: NON_METRIC_CELL_WIDTH_MAPPING.country,\n ...options\n})\n\nconst adNetworkHeader = options => ({\n ...DEFAULT_COLUMN_OPTIONS,\n accessor: 'adNetwork',\n id: 'adNetwork',\n sortDescFirst: false,\n // eslint-disable-next-line react/prop-types, sort-keys\n Header: () => (\n \n ),\n // eslint-disable-next-line react/prop-types, sort-keys\n Cell: ({ row }) => {\n /* eslint-disable react/prop-types */\n const { adNetworkName, adNetworkIconUrl } = row.original\n /* eslint-enable react/prop-types */\n\n return (\n
    \n }\n value={adNetworkName}\n hideValue\n />\n
    \n )\n },\n sortType: sortRows,\n width: NON_METRIC_CELL_WIDTH_MAPPING.adNetwork,\n ...options\n})\n\nconst appHeader = options => ({\n ...DEFAULT_COLUMN_OPTIONS,\n accessor: 'app',\n id: 'app',\n sortDescFirst: false,\n // eslint-disable-next-line react/prop-types, sort-keys\n Header: () => (\n \n ),\n // eslint-disable-next-line react/prop-types, sort-keys\n Cell: ({ row }) => {\n /* eslint-disable react/prop-types */\n const { appName, appIconUrl } = row.original\n /* eslint-enable react/prop-types */\n\n return (\n }\n value={appName}\n className={styles.nameCell}\n truncate\n />\n )\n },\n sortType: sortRows,\n width: NON_METRIC_CELL_WIDTH_MAPPING.app,\n ...options\n})\n\nconst platformHeader = options => ({\n ...DEFAULT_COLUMN_OPTIONS,\n accessor: 'platform',\n id: 'platform',\n sortDescFirst: false,\n // eslint-disable-next-line react/prop-types, sort-keys\n Header: () => (\n \n ),\n // eslint-disable-next-line react/prop-types, sort-keys\n Cell: ({ row }) => {\n /* eslint-disable react/prop-types */\n const { platform } = row.original\n /* eslint-enable react/prop-types */\n\n const platformIcon = getPlatformIcon({ platform })\n\n return (\n
    \n \n
    \n )\n },\n sortType: sortRows,\n width: NON_METRIC_CELL_WIDTH_MAPPING.platform,\n ...options\n})\n\nexport const getDefaultHeaders = ({\n columnKeys,\n countries,\n groupBy,\n reportType,\n showDate\n}) => {\n const {\n showAdNetwork,\n showApp,\n showCountry,\n showName,\n showPlatform\n } = getNonMetricHeaderVisibility({ columnKeys, groupBy, reportType })\n\n const headers = [\n ...(showDate ? [dateHeader()] : []),\n ...(showPlatform ? [platformHeader()] : []),\n ...(showAdNetwork ? [adNetworkHeader()] : []),\n ...(showName ? [nameHeader({ groupBy })] : []),\n ...(showCountry ? [countryHeader({ countries })] : []),\n ...(showApp ? [appHeader()] : [])\n ]\n\n return headers\n}\n","// eslint-disable-next-line import/prefer-default-export\nexport const getDefaultValue = selectedSavedReport => {\n if (!selectedSavedReport) {\n return null\n }\n\n return {\n label: selectedSavedReport.name,\n value: selectedSavedReport.id\n }\n}\n\nexport const buildSavedReportUrl = ({ location, savedReportId, reportType }) => {\n const { pathname } = location\n\n return `${pathname}?report_type=${reportType}&saved_report_id=${savedReportId}`\n}\n","import { filter, includes } from 'lodash'\n\n// eslint-disable-next-line import/prefer-default-export\nexport const getGranularitiesByTotalsOption = ({\n dataExporterGranularities,\n isUsingTotals\n}) => filter(\n dataExporterGranularities,\n ({ id }) => {\n if (isUsingTotals) {\n return includes(id, 'totals-')\n }\n return !includes(id, 'totals-')\n }\n)\n","import { snakeCase } from 'snake-case'\n\nexport const HIDDEN_INPUT_NAME = `${snakeCase('callbackTemplate')}[${snakeCase('callbackGroupTemplateId')}]`\nexport const HIDDEN_INPUT_ID = `${snakeCase('callbackTemplate')}_${snakeCase('callbackGroupTemplateId')}`\n\nexport const ELEMENT_ID_EVENT_DEFINITION = snakeCase('callbackTemplateEventDefinition')\nexport const ELEMENT_ID_PLATFORM = snakeCase('callbackTemplatePlatform')\nexport const ELEMENT_ID_TEMPLATEABLE_ID = snakeCase('callbackTemplateTemplateableId')\n","import { deepSnakeKeys } from '../../utils/helpers'\nimport {\n DASHBOARD_CAMPAIGNS_MERGE_URL,\n DASHBOARD_CAMPAIGNS_URL,\n DASHBOARD_CAMPAIGNS_MOVE_PATH,\n DEFAULT_LOOKBACK_WINDOW\n} from './constants'\nimport { get, post } from '../../utils/request'\n\nexport const fetchAllMergeableCampaigns = async ({\n adNetworkId,\n appId,\n lookbackWindow = DEFAULT_LOOKBACK_WINDOW\n}) => {\n const { data } = await get(DASHBOARD_CAMPAIGNS_MERGE_URL, deepSnakeKeys({\n params: {\n adNetworkId,\n appId,\n lookbackWindow\n }\n }))\n\n return data\n}\n\nexport const mergeCampaigns = async ({ reportedCampaignId, trackedCampaignId }) => {\n // eslint-disable-next-line no-return-await\n const response = await post(DASHBOARD_CAMPAIGNS_MERGE_URL, deepSnakeKeys({\n reportedCampaignId,\n trackedCampaignId\n }))\n\n return response\n}\n\nexport const moveCampaign = async ({ id, destinationId }) => {\n // eslint-disable-next-line no-return-await\n const dashboardCampaignsMoveUrl = `${DASHBOARD_CAMPAIGNS_URL}/${id}${DASHBOARD_CAMPAIGNS_MOVE_PATH}`\n\n const response = await post(dashboardCampaignsMoveUrl, deepSnakeKeys({\n destinationId,\n id\n }))\n\n return response\n}\n","export const DASHBOARD_CAMPAIGNS_MERGE_URL = '/dashboard/campaigns/merge'\nexport const DASHBOARD_CAMPAIGNS_URL = '/dashboard/campaigns'\nexport const DASHBOARD_CAMPAIGNS_MOVE_PATH = '/move'\nexport const DEFAULT_LOOKBACK_WINDOW = 7\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport styles from './styles.module.scss'\n\nconst Label = ({ children, className }) => (\n
    {children}
    \n)\n\nLabel.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string\n}\n\nLabel.defaultProps = {\n className: null\n}\n\nexport default Label\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport { arrayOfBreadcrumbPaths } from '../../utils/customPropTypes'\n\nconst Breadcrumb = ({ className, paths }) => (\n
    \n
    \n
      \n {paths.map(({ label, path }) => (\n path\n ?
    • {label}
    • \n :
    • {label}
    • \n ))}\n
    \n
    \n
    \n)\n\nBreadcrumb.propTypes = {\n className: PropTypes.string,\n paths: arrayOfBreadcrumbPaths.isRequired\n}\n\nBreadcrumb.defaultProps = {\n className: ''\n}\n\nexport default Breadcrumb\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport styles from './styles.module.scss'\n\nconst ButtonTabNavigation = ({ className, options }) => (\n
    \n {options.map(({\n label,\n id,\n isActive,\n handleClick,\n badge\n }) => (\n /* eslint-disable jsx-a11y/click-events-have-key-events,\n jsx-a11y/no-static-element-interactions */\n \n {label}\n {badge}\n
    \n /* eslint-enable jsx-a11y/click-events-have-key-events,\n jsx-a11y/no-static-element-interactions */\n ))}\n \n)\n\nButtonTabNavigation.propTypes = {\n className: PropTypes.string,\n options: PropTypes.arrayOf(PropTypes.shape({\n handleClick: PropTypes.func.isRequired,\n id: PropTypes.string.isRequired,\n isActive: PropTypes.func.isRequired,\n label: PropTypes.string.isRequired\n }))\n}\n\nButtonTabNavigation.defaultProps = {\n className: '',\n options: []\n}\nexport default ButtonTabNavigation\n","import { forwardRef } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\n/* eslint-disable react/jsx-props-no-spreading */\nconst Table = forwardRef((props, ref) => {\n const { children, className, ...restProps } = props\n\n return (\n \n {children}\n \n )\n})\n/* eslint-enable react/jsx-props-no-spreading */\n\nTable.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string\n}\n\nTable.defaultProps = {\n className: null\n}\n\nexport default Table\n","import classNames from 'classnames'\nimport PropTypes from 'prop-types'\n\nimport styles from './styles.module.scss'\n\nconst Header = ({ className, children }) => (\n
    {children}
    \n)\n\nHeader.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string\n}\n\nHeader.defaultProps = {\n children: null,\n className: ''\n}\n\nexport default Header\n","import classNames from 'classnames'\nimport PropTypes from 'prop-types'\n\nimport styles from './styles.module.scss'\n\n/*\n eslint-disable jsx-a11y/interactive-supports-focus,\n jsx-a11y/click-events-have-key-events,\n jsx-a11y/no-static-element-interactions\n*/\nconst Switch = ({\n className,\n isDisabled,\n isPrimary,\n isSwitching,\n onSwitch\n}) => {\n const canSwitch = !isSwitching && !isDisabled\n\n return (\n {}}\n >\n
    \n
    \n )\n}\n/*\n eslint-enable jsx-a11y/interactive-supports-focus,\n jsx-a11y/click-events-have-key-events,\n jsx-a11y/no-static-element-interactions\n*/\n\nSwitch.propTypes = {\n className: PropTypes.string,\n isDisabled: PropTypes.bool,\n isPrimary: PropTypes.bool.isRequired,\n isSwitching: PropTypes.bool,\n onSwitch: PropTypes.func.isRequired\n}\n\nSwitch.defaultProps = {\n className: '',\n isDisabled: false,\n isSwitching: false\n}\n\nexport default Switch\n","import { Fragment, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport { CopyToClipboard } from 'react-copy-to-clipboard'\n\nimport FontAwesomeIcon from '../FontAwesomeIcon'\n\nimport { COPY_TO_CLIPBOARD_SUCCESS_MS } from './constants'\n\nimport styles from './styles.module.scss'\n\nconst CopyButton = ({\n className,\n copiedText,\n textToCopy,\n onCopy,\n prompt\n}) => {\n const [isCopied, setIsCopied] = useState(false)\n\n const handleClickCopy = () => {\n setIsCopied(true)\n onCopy()\n\n setTimeout(() => {\n setIsCopied(false)\n }, COPY_TO_CLIPBOARD_SUCCESS_MS)\n }\n\n return (\n \n
    \n \n
    {isCopied && copiedText ? copiedText : prompt}
    \n
    \n
    \n )\n}\n\nCopyButton.propTypes = {\n className: PropTypes.string,\n copiedText: PropTypes.string,\n onCopy: PropTypes.func,\n prompt: PropTypes.string,\n textToCopy: PropTypes.string.isRequired\n}\n\nCopyButton.defaultProps = {\n className: '',\n copiedText: null,\n onCopy: () => {},\n prompt: ''\n}\n\nexport default CopyButton\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nconst PageLayout = ({ children, className }) => (\n
    \n {children}\n
    \n)\n\nPageLayout.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string\n}\n\nPageLayout.defaultProps = {\n className: ''\n}\n\nexport default PageLayout\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport styles from './styles.module.scss'\n\nimport {\n getPercentageByValue,\n getLevelByValueInThreshold\n} from './helpers'\n\nimport {\n LEVEL_DANGER,\n LEVEL_SUCCESS,\n LEVEL_WARNING\n} from './constants'\n\nconst PercentageLabel = ({ className, value }) => {\n const level = getLevelByValueInThreshold(value)\n\n return (\n
    \n {getPercentageByValue(value)}\n
    \n )\n}\n\nPercentageLabel.propTypes = {\n className: PropTypes.string,\n value: PropTypes.number.isRequired\n}\n\nPercentageLabel.defaultProps = {\n className: ''\n}\n\nexport default PercentageLabel\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport { noop } from 'lodash'\n\nimport styles from './styles.module.scss'\n\n/*\n eslint-disable jsx-a11y/interactive-supports-focus,\n jsx-a11y/click-events-have-key-events\n*/\nconst SyncButton = ({\n children,\n className,\n errorContent,\n isDisabled,\n isError,\n isLoading,\n isSuccess,\n level,\n loadingContent,\n onClick,\n successContent\n}) => {\n if (isError) {\n return (\n
    \n {errorContent}\n
    \n )\n }\n\n if (isLoading) {\n return (\n
    \n {loadingContent}\n
    \n )\n }\n\n if (isSuccess) {\n return (\n
    \n {successContent || children}\n
    \n )\n }\n\n const isClickable = !isSuccess && !isDisabled && !isLoading\n\n return (\n \n {children}\n \n )\n}\n/*\n eslint-enable jsx-a11y/interactive-supports-focus,\n jsx-a11y/click-events-have-key-events\n*/\n\nSyncButton.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n errorContent: PropTypes.node.isRequired,\n isDisabled: PropTypes.bool,\n isError: PropTypes.bool,\n isLoading: PropTypes.bool,\n isSuccess: PropTypes.bool,\n level: PropTypes.oneOf(['danger', 'success', 'warning', 'default']),\n loadingContent: PropTypes.node.isRequired,\n onClick: PropTypes.func.isRequired,\n successContent: PropTypes.node\n}\n\nSyncButton.defaultProps = {\n className: '',\n isDisabled: false,\n isError: null,\n isLoading: null,\n isSuccess: null,\n level: 'default',\n resetOnSuccess: false,\n successContent: null\n}\n\nexport default SyncButton\n","import React, { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport { isFunction } from 'lodash'\n\nimport Checkbox from '../Checkbox/Checkbox'\n\nimport styles from './styles.module.scss'\n\nfunction SelectMenuItem(props) {\n const {\n checkboxClassName,\n className,\n isSelected,\n item,\n menuItemRenderer,\n multiple,\n onCheck,\n onUncheck\n } = props\n\n const [isHovered, setIsHovered] = useState(false)\n\n const handleChange = useCallback(() => {\n if (multiple) {\n if (isSelected) {\n onUncheck(item.id)\n } else {\n onCheck(item.id)\n }\n } else if (!isSelected) {\n onCheck(item.id)\n }\n }, [isSelected, item, multiple, onCheck, onUncheck])\n\n const handleKeyDown = useCallback(ev => {\n if (ev.key === 'Enter') {\n ev.preventDefault()\n handleChange()\n }\n }, [isSelected, item, multiple, onCheck, onUncheck])\n\n const handleMouseEnter = useCallback(() => {\n setIsHovered(true)\n }, [])\n\n const handleMouseLeave = useCallback(() => {\n setIsHovered(false)\n }, [])\n\n const renderContent = useCallback(() => {\n if (isFunction(menuItemRenderer)) {\n return menuItemRenderer(item)\n }\n\n return <>{item.name}\n }, [item, menuItemRenderer])\n\n const renderCheckbox = useCallback(() => (\n \n ), [checkboxClassName, isSelected, item, multiple])\n\n const renderSelectableRow = useCallback(() => {\n const selectableRowClassName = classNames(styles.row, {\n [styles.activeRow]: isSelected,\n [styles.hoveredRow]: isHovered && !isSelected\n })\n\n return (\n \n {renderContent()}\n \n )\n }, [isHovered, isSelected, item])\n\n return (\n
    \n {multiple && renderCheckbox()}\n {!multiple && renderSelectableRow()}\n
    \n )\n}\n\nSelectMenuItem.propTypes = {\n checkboxClassName: PropTypes.string,\n className: PropTypes.string,\n isSelected: PropTypes.bool.isRequired,\n item: PropTypes.shape({\n id: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string\n ]).isRequired,\n name: PropTypes.string.isRequired\n }).isRequired,\n menuItemRenderer: PropTypes.func,\n multiple: PropTypes.bool,\n onCheck: PropTypes.func.isRequired,\n onUncheck: PropTypes.func.isRequired\n}\n\nSelectMenuItem.defaultProps = {\n checkboxClassName: '',\n className: '',\n menuItemRenderer: null,\n multiple: false\n}\n\nexport default SelectMenuItem\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport { ToastContainer } from 'react-toastify'\n\nimport styles from './styles.module.scss'\n\nclass PageContainer extends React.PureComponent {\n render() {\n const { children, className: classNameProp, hasSidebar } = this.props\n\n const containerStylesClassName = hasSidebar ? styles.containerWithSidebar : styles.container\n\n const className = classNames(containerStylesClassName, classNameProp, {\n [`${classNameProp}--sidebar`]: hasSidebar\n })\n\n return (\n
    \n \n\n {children}\n
    \n )\n }\n}\n\nPageContainer.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n hasSidebar: PropTypes.bool\n}\n\nPageContainer.defaultProps = {\n className: '',\n hasSidebar: false\n}\n\nexport default PageContainer\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___3nZ3f\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___jziEc\",\"btn-toggle\":\"styles-module__btn-toggle___UQi7k\",\"handle\":\"styles-module__handle___3U6Tg\",\"active\":\"styles-module__active___12uMD\",\"focus\":\"styles-module__focus___3_xtn\",\"card-panel\":\"styles-module__card-panel___1EptS\",\"panel-heading\":\"styles-module__panel-heading___3xaB-\",\"panel-title\":\"styles-module__panel-title___1q63Y\",\"panel-subtitle\":\"styles-module__panel-subtitle___2muPM\",\"panel-body\":\"styles-module__panel-body___1ITLs\",\"wrapper\":\"styles-module__wrapper___34Uem\"};","import { trimEnd } from 'lodash'\nimport pluralize from 'pluralize'\nimport PropTypes from 'prop-types'\nimport Tooltip from 'rc-tooltip'\nimport { useEffect, useState } from 'react'\n\nimport { useAppIntegrationState } from '../../../../../../../contexts/AppIntegrations'\nimport FontAwesomeIcon from '../../../../../../FontAwesomeIcon'\nimport ToggleButton from '../../../../../../ToggleButton'\nimport {\n APP_ATTRIBUTION_WINDOWS,\n ATTRIBUTION_WINDOW_LEVEL,\n DEFAULT_WINDOW_TIME_VALUE,\n TYPE_HOURS,\n TYPE_PROBABILISTIC\n} from '../constants'\nimport useUpdateAttributionSettings from '../hooks/useUpdateAttributionSetting'\nimport styles from '../styles.module.scss'\nimport {\n convertSecondsToHumanObject,\n getAttributionSettings,\n getSupportedTimeTypes\n} from '../utils'\nimport WindowEditEnabled from './WindowEditEnabled'\nimport WindowEditMode from './WindowEditMode'\n\nconst AttributionDetails = ({ level, windowType }) => {\n const {\n currentApp,\n currentAppChannel,\n currentAppChannelHasCustomSettings,\n currentAppChannelOverrideToggleOn,\n currentChannel\n } = useAppIntegrationState()\n\n const { updateAppAttributionWindow, updateAppChannelAttributionWindow } =\n useUpdateAttributionSettings()\n\n const isAppChannelSettings = level === ATTRIBUTION_WINDOW_LEVEL.APP_CHANNEL\n\n const attributionWindowSettings = getAttributionSettings({\n currentApp,\n currentAppChannel,\n currentAppChannelHasCustomSettings,\n currentAppChannelOverrideToggleOn,\n currentChannel,\n level\n })\n\n const attributionWindow = attributionWindowSettings[windowType]\n const isProbabilistic = attributionWindow.matchType === TYPE_PROBABILISTIC\n\n const supportedTimeTypes = getSupportedTimeTypes({\n engagementType: attributionWindow.engagementType,\n matchType: attributionWindow.matchType\n })\n\n const timeParsed = convertSecondsToHumanObject({\n seconds: attributionWindow.value,\n supportedTimeTypes\n })\n\n const [isEditing, setIsEditing] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n const [timeType, setTimeType] = useState(timeParsed.type)\n const [timeValue, setTimeValue] = useState(timeParsed.value)\n const [timeLabel, setTimeLabel] = useState(timeParsed.label)\n const [windowActive, setWindowActive] = useState(timeParsed.value !== 0)\n const [toggleEnabled, setToggleEnabled] = useState(timeParsed.value !== 0)\n const [saveTriggered, setSaveTriggered] = useState(false)\n\n const handleClickEnableEdit = () => {\n setIsEditing(true)\n }\n\n const handleDisableEdit = () => {\n setIsEditing(false)\n }\n\n const handleTimeTypeChange = e => {\n setTimeType(e.target.value)\n }\n\n const handleTimeValueChange = e => {\n setTimeValue(+e.target.value)\n }\n\n const resetSettings = () => {\n setTimeValue(DEFAULT_WINDOW_TIME_VALUE)\n setTimeType(TYPE_HOURS)\n setToggleEnabled(false)\n }\n\n const handleWindowSave = () => {\n setIsLoading(true)\n setSaveTriggered(true)\n }\n\n const disableAttributionWindow = () => {\n resetSettings()\n handleWindowSave()\n }\n\n const enableAttributionWindow = () => {\n resetSettings()\n handleClickEnableEdit()\n }\n\n const handleWindowToggle = e => {\n const toggleOn = e.currentTarget.getAttribute('aria-pressed') === 'true'\n if (toggleOn) {\n enableAttributionWindow()\n } else {\n disableAttributionWindow()\n }\n setWindowActive(toggleOn)\n }\n\n useEffect(() => {\n if (saveTriggered) {\n setIsLoading(true)\n if (isAppChannelSettings) {\n updateAppChannelAttributionWindow({\n timeType,\n timeValue,\n windowType\n })\n } else {\n updateAppAttributionWindow({\n timeType,\n timeValue,\n windowType\n })\n }\n setSaveTriggered(false)\n }\n }, [timeValue, timeType, saveTriggered])\n\n useEffect(() => {\n setTimeLabel(pluralize(trimEnd(timeType, 's'), timeValue, true))\n }, [timeType, timeValue])\n\n const isProbablisticSettingsInactive = !windowActive && isProbabilistic\n const isAppChannelEditingDisabled =\n isAppChannelSettings && !currentAppChannelOverrideToggleOn\n const showToggleButton = isProbabilistic\n const showOverrideWarning =\n windowActive && !isAppChannelSettings && currentAppChannelOverrideToggleOn\n\n const WindowEditDisabled = () => (\n {timeLabel}\n )\n\n const AttributionWindowCell = () => {\n if (isProbablisticSettingsInactive) return ''\n if (isEditing) {\n return (\n \n )\n }\n if (isAppChannelEditingDisabled) {\n return \n }\n return (\n \n )\n }\n\n const AttributionWindowCellOverrideNotification = () => (\n
    \n {showOverrideWarning && }\n
    \n )\n\n const AttributionWindowCellOverrideMessage = () => (\n
    \n {showOverrideWarning && 'Override Exists'}\n
    \n )\n\n return (\n
    \n
    \n {APP_ATTRIBUTION_WINDOWS[windowType].label}\n \n \n \n \n \n {showToggleButton && (\n \n \n \n )}\n
    \n \n
    \n \n \n
    \n
    \n )\n}\n\nAttributionDetails.propTypes = {\n level: PropTypes.string.isRequired,\n windowType: PropTypes.string.isRequired\n}\n\nexport default AttributionDetails\n","import { camelCase } from 'camel-case'\nimport { find } from 'lodash'\nimport PropTypes from 'prop-types'\nimport Tooltip from 'rc-tooltip'\nimport { Fragment, useState } from 'react'\nimport Skeleton from 'react-loading-skeleton'\n\nimport { overlayOpaquenessTypes } from '../../../../../../../utils/customPropTypes'\nimport AsyncIconTextButton from '../../../../../../AsyncIconTextButton'\nimport CardPanel from '../../../../../../CardPanel'\nimport FlexTable from '../../../../../../FlexTable'\nimport FontAwesomeIcon from '../../../../../../FontAwesomeIcon'\nimport FormDropdown from '../../../../../../FormDropdown'\nimport FormLabelWithTooltip from '../../../../../../FormLabelWithTooltip'\nimport PageNotice from '../../../../../../PageNotice'\nimport Toggle from '../../../../../../Toggle'\nimport { USER_FILTER_OPTIONS } from '../constants'\nimport {\n COLUMN_HEADER_FLEX_MAPPING,\n DEFAULT_FLEX,\n HEADER_EVENT,\n HEADER_NAME,\n HEADER_STATUS,\n MIN_ROW_LENGTH_RENDER_COUNT,\n SKELETON_ROW_COUNT\n} from './constants'\nimport EventOptionsPopupOverlay from './EventOptionsPopupOverlay'\nimport styles from './styles.module.scss'\n\nconst customUserFilterStyles = {\n container: existingStyles => ({\n ...existingStyles,\n cursor: 'pointer',\n width: styles.userFilterInputWidth\n }),\n control: (_, state) => ({\n backgroundColor: state.isDisabled\n ? styles.controlDisabledBackgroundColor\n : styles.controlBackgroundColor,\n border: styles.controlBorder,\n borderRadius: styles.controlBorderRadius,\n display: 'flex',\n flexGrow: 0,\n flexShrink: 1,\n fontFamily: styles.controlFontFamily,\n fontSize: styles.controlFontSize,\n fontWeight: styles.controlFontWeight,\n lineHeight: styles.controlLineHeight\n }),\n dropdownIndicator: (existingStyles, state) => ({\n ...existingStyles,\n ':hover': {\n ...existingStyles[':hover'],\n color: styles.dropdownIndicatorColor\n },\n color: styles.dropdownIndicatorColor,\n display: state.isDisabled ? 'none' : 'inherit'\n })\n}\n\nexport const buildCallbacksTableRow = (row, rowIndex) => {\n const {\n activatable,\n active,\n event,\n headers,\n id,\n install,\n isHeadersRow,\n name,\n onChangeCallbackGroup,\n onClickEditCallback,\n onToggleCallbackGroup,\n tooltipContent,\n userFilter,\n userFilterEditable\n } = row\n\n if (isHeadersRow) {\n return {\n cells: headers.map((header, headerIndex) => ({\n cell:
    {header}
    ,\n flex: COLUMN_HEADER_FLEX_MAPPING[header] || DEFAULT_FLEX,\n id: `header${headerIndex}`\n })),\n id: 'headers'\n }\n }\n\n return {\n cells: [\n {\n cell: (\n \n onToggleCallbackGroup({ active, callbackGroupId: id })\n }\n />\n ),\n flex: COLUMN_HEADER_FLEX_MAPPING[HEADER_STATUS],\n id: `cellStatus${rowIndex}`\n },\n {\n cell: (\n \n {name}\n \n ),\n flex: COLUMN_HEADER_FLEX_MAPPING[HEADER_NAME],\n id: `cellName${rowIndex}`\n },\n {\n cell: (\n
    \n {install ? 'First App Open' : event}\n
    \n ),\n flex: COLUMN_HEADER_FLEX_MAPPING[HEADER_EVENT],\n id: `cellEvent${rowIndex}`\n },\n {\n cell: (\n option.label}\n getOptionValue={option => option.value}\n isClearable={false}\n onChange={({ value }) =>\n onChangeCallbackGroup({ callbackGroupId: id, value })\n }\n options={USER_FILTER_OPTIONS}\n value={find(USER_FILTER_OPTIONS, { value: camelCase(userFilter) })}\n placeholder=\"Select option\"\n />\n ),\n id: `cellUserFilter${rowIndex}`\n },\n {\n cell: (\n onClickEditCallback(id)}\n onError={() => {}}\n resetOnSuccess\n >\n Edit\n \n ),\n id: `cellEdit${rowIndex}`\n }\n ],\n id: `row${rowIndex}`\n }\n}\n\nconst CallbacksTable = ({\n // eslint-disable-next-line no-unused-vars\n errors,\n eventOptions,\n isEventOptionsVisible,\n isLoading,\n isMissingCallbackGroupTemplates,\n onClickAddEvent,\n overlayContent,\n overlayOpaqueness,\n rows,\n setIsEventOptionsVisible\n}) => {\n const [showAdvancedCallbacks, setShowAdvancedCallbacks] = useState(false)\n\n const showTable = rows.length > MIN_ROW_LENGTH_RENDER_COUNT\n\n return (\n \n {isLoading ? (\n \n {Array.from(Array(SKELETON_ROW_COUNT)).map(() => (\n \n \n
    \n
    \n ))}\n
    \n ) : (\n \n \n Enable the callbacks for the events you want to track with the\n Channel selected above.\n \n {showTable && (\n \n )}\n {!isMissingCallbackGroupTemplates && (\n setIsEventOptionsVisible(isVisible)}\n prefixCls=\"eventOptions\"\n overlay={\n \n }\n placement=\"bottom\"\n destroyTooltipOnHide\n align={{\n offset: [\n styles.eventOptionsPopupOffsetX,\n styles.eventOptionsPopupOffsetY\n ]\n }}\n >\n
    \n \n Add Events\n
    \n \n )}\n
    \n )}\n \n )\n}\n\nCallbacksTable.propTypes = {\n errors: PropTypes.shape({\n message: PropTypes.string.isRequired\n }),\n eventOptions: PropTypes.shape({\n advanced: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired\n })\n ),\n standard: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired\n })\n )\n }).isRequired,\n isEventOptionsVisible: PropTypes.bool.isRequired,\n isLoading: PropTypes.bool.isRequired,\n isMissingCallbackGroupTemplates: PropTypes.bool.isRequired,\n onClickAddEvent: PropTypes.func.isRequired,\n overlayContent: PropTypes.node.isRequired,\n overlayOpaqueness: overlayOpaquenessTypes.isRequired,\n rows: PropTypes.arrayOf(\n PropTypes.shape({\n event: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n status: PropTypes.bool.isRequired\n })\n ).isRequired,\n setIsEventOptionsVisible: PropTypes.func.isRequired\n}\n\nCallbacksTable.defaultProps = {\n errors: {}\n}\n\nexport default CallbacksTable\n","import classNames from 'classnames'\nimport PropTypes from 'prop-types'\nimport { Fragment } from 'react'\nimport Skeleton from 'react-loading-skeleton'\n\nimport { overlayOpaquenessTypes } from '../../../../../../../utils/customPropTypes'\nimport AsyncButton from '../../../../../../AsyncButton'\nimport AsyncIconTextButton from '../../../../../../AsyncIconTextButton'\nimport Button from '../../../../../../Button'\nimport CardPanel from '../../../../../../CardPanel'\nimport FormInput from '../../../../../../FormInput'\nimport FormLabelWithTooltip from '../../../../../../FormLabelWithTooltip'\nimport PageNotice from '../../../../../../PageNotice'\nimport { SKELETON_ROW_COUNT } from './constants'\nimport styles from './styles.module.scss'\n\nexport const buildFieldElements = ({\n associated_groups: associatedGroups,\n credentials,\n display,\n error,\n id,\n isEditingCredentials,\n setCredentials\n}) => (\n \n {display && (\n {`Required for ${associatedGroups.join(', ').trim()}`}\n ) : null\n }\n placement=\"right\"\n >\n {display}\n \n )}\n {error}\n }\n type=\"text\"\n placeholder={display ? `enter your ${display}` : 'enter value'}\n isStatic={!isEditingCredentials}\n value={credentials[id]}\n onChange={event =>\n setCredentials({\n ...credentials,\n [id]: event.target.value\n })\n }\n />\n \n)\n\nconst CredentialsCard = ({\n callbackInstructions,\n fields,\n isLoading,\n isSaving,\n onClickCancel,\n onClickEdit,\n onClickSave,\n onSuccess,\n overlayContent,\n overlayOpaqueness,\n showEditButton,\n showFooter\n}) => {\n const CredentialsCardFooter = () => (\n \n \n Something went wrong.}\n level=\"success\"\n isLoading={isSaving}\n loadingContent={Saving...}\n onClick={onClickSave}\n onError={() => {}}\n onSuccess={onSuccess}\n resetOnSuccess\n >\n Save\n \n \n )\n\n const CredentialsCardActions = () => (\n {}}\n onSuccess={() => {}}\n >\n Edit\n \n )\n\n return (\n : null}\n footer={showFooter ? : null}\n title=\"Settings\"\n >\n {isLoading ? (\n \n {Array.from(Array(SKELETON_ROW_COUNT)).map(() => (\n \n \n
    \n
    \n ))}\n
    \n ) : (\n \n \n To get data from the Channel selected above, first complete the\n fields below.\n {callbackInstructions && (\n \n )}\n \n {fields}\n \n )}\n \n )\n}\n\nCredentialsCard.propTypes = {\n callbackInstructions: PropTypes.string,\n errors: PropTypes.shape({\n message: PropTypes.string.isRequired\n }),\n fields: PropTypes.node.isRequired,\n isLoading: PropTypes.bool.isRequired,\n isSaving: PropTypes.bool.isRequired,\n onClickCancel: PropTypes.func.isRequired,\n onClickEdit: PropTypes.func.isRequired,\n onClickSave: PropTypes.func.isRequired,\n onSuccess: PropTypes.func.isRequired,\n overlayContent: PropTypes.node.isRequired,\n overlayOpaqueness: overlayOpaquenessTypes.isRequired,\n showEditButton: PropTypes.bool.isRequired,\n showFooter: PropTypes.bool.isRequired\n}\n\nCredentialsCard.defaultProps = {\n callbackInstructions: null,\n errors: {}\n}\n\nexport default CredentialsCard\n","import { camelCase } from 'camel-case'\nimport classNames from 'classnames'\nimport { find, isEmpty, isNil, omit } from 'lodash'\nimport PropTypes from 'prop-types'\nimport Tooltip from 'rc-tooltip'\nimport { useEffect, useState } from 'react'\n\nimport { TOOLTIP_MOUSE_ENTER_DELAY } from '../../../../../../../utils/constants'\nimport AlertList from '../../../../../../AlertList'\nimport AsyncButton from '../../../../../../AsyncButton'\nimport Button from '../../../../../../Button'\nimport FlexTable from '../../../../../../FlexTable'\nimport FontAwesomeIcon from '../../../../../../FontAwesomeIcon'\nimport FormDropdown from '../../../../../../FormDropdown'\nimport FormInput from '../../../../../../FormInput'\nimport ModalHeaderWithClose from '../../../../../../ModalHeaderWithClose'\nimport PageNotice from '../../../../../../PageNotice'\nimport { DEFAULT_ERROR_ALERT_PROPS } from '../constants'\nimport styles from './styles.module.scss'\n\nconst customFormDropdownStyles = {\n // eslint-disable-next-line no-unused-vars\n control: (_, state) => ({\n backgroundColor: state.isDisabled\n ? styles.controlDisabledBackgroundColor\n : styles.controlBackgroundColor,\n border: styles.controlBorder,\n borderRadius: styles.controlBorderRadius,\n display: 'flex',\n flexGrow: 0,\n flexShrink: 1,\n fontFamily: styles.controlFontFamily,\n fontSize: styles.controlFontSize,\n fontWeight: styles.controlFontWeight,\n lineHeight: styles.controlLineHeight\n }),\n dropdownIndicator: (existingStyles, state) => ({\n ...existingStyles,\n ':hover': {\n ...existingStyles[':hover'],\n color: styles.dropdownIndicatorColor\n },\n color: styles.dropdownIndicatorColor,\n display: state.isDisabled ? 'none' : 'inherit'\n }),\n input: existingStyles => ({\n ...existingStyles,\n caretColor: 'transparent',\n color: styles.singleValueColor,\n fontWeight: styles.singleValueFontWeight,\n margin: 0,\n paddingLeft: styles.singleValuePaddingLeft\n }),\n menu: existingStyles => ({\n ...existingStyles,\n right: styles.menuRight,\n whiteSpace: 'nowrap',\n width: styles.menuWidth,\n zIndex: styles.menuZIndex\n }),\n menuList: existingStyles => ({\n ...existingStyles,\n '&::-webkit-scrollbar': {\n '-webkit-appearance': 'none'\n },\n '&::-webkit-scrollbar-thumb': {\n backgroundColor: styles.menuListScrollbarBackgroundColor,\n border: styles.menuListScrollbarBorder,\n borderRadius: styles.menuListScrollbarBorderRadius\n },\n '&::-webkit-scrollbar:horizontal': {\n height: styles.menuListScrollbarDimensions\n },\n '&::-webkit-scrollbar:vertical': {\n width: styles.menuListScrollbarDimensions\n },\n maxHeight: styles.menuListMaxHeight,\n overflowX: 'hidden'\n }),\n placeholder: existingStyles => ({\n ...existingStyles,\n color: styles.placeholderColor,\n fontStyle: 'italic',\n fontWeight: styles.placeholderFontWeight,\n height: styles.placeholderHeight,\n overflow: 'hidden',\n padding: styles.placeholderPadding\n }),\n singleValue: existingStyles => ({\n ...omit(existingStyles, ['maxWidth', 'position', 'transform']),\n color: styles.singleValueColor,\n fontWeight: styles.singleValueFontWeight,\n margin: 0,\n paddingLeft: styles.singleValuePaddingLeft\n }),\n valueContainer: existingStyles => ({\n ...existingStyles,\n flexWrap: 'nowrap',\n padding: styles.formDropdownPadding,\n width: styles.formDropdownValueContainerWidth\n })\n}\n\nexport const buildEditCallbackModalRow = ({\n callback: { macros, eventEditable, userFilterEditable, install },\n callbackName,\n eventDefinition,\n eventDefinitions,\n headers,\n isHeadersRow,\n onChangeEditedCallbackDraft,\n rowIndex,\n userFilter,\n userFilterOptions,\n ...macroValues\n}) => {\n const filteredMacros = (macros || []).filter(\n ({ default: isDefault, value, name }) =>\n (isDefault && value !== null && !isNil(macroValues[name])) || !isDefault\n )\n\n const hasMoreThanThreeRowItems = filteredMacros && filteredMacros.length > 0\n\n const cellItemClass = classNames(styles.cellItem, {\n [styles.threeItemRow]: !hasMoreThanThreeRowItems\n })\n\n const callbackModalInputClass = classNames(styles.callbackModalInput, {\n [styles.threeItemRow]: !hasMoreThanThreeRowItems\n })\n\n if (isHeadersRow) {\n return {\n cells: headers.map(({ label, tooltipContent }, headerIndex) => ({\n cell: (\n
    \n {label}\n {tooltipContent && (\n {tooltipContent}}\n placement=\"top\"\n >\n
    \n \n
    \n \n )}\n
    \n ),\n id: `header${headerIndex}`\n })),\n id: 'headers'\n }\n }\n\n return {\n cells: [\n {\n cell: (\n \n onChangeEditedCallbackDraft({\n property: 'callbackName',\n rowIndex,\n value\n })\n }\n value={callbackName}\n placeholder=\"enter name\"\n />\n ),\n id: `cellCallbackName${rowIndex}`\n },\n {\n cell: (\n \n install ? `First App Open` : option.name\n }\n getOptionValue={option => option.id}\n isClearable={false}\n onChange={value =>\n onChangeEditedCallbackDraft({\n property: 'eventDefinition',\n rowIndex,\n value\n })\n }\n options={eventDefinitions}\n value={find(eventDefinitions, { name: eventDefinition })}\n placeholder=\"select event\"\n />\n ),\n id: `cellEventName${rowIndex}`\n },\n {\n cell: (\n option.label}\n getOptionValue={option => option.value}\n isClearable={false}\n onChange={value =>\n onChangeEditedCallbackDraft({\n property: 'userFilter',\n rowIndex,\n value\n })\n }\n options={userFilterOptions}\n value={find(userFilterOptions, { value: camelCase(userFilter) })}\n placeholder=\"select filter\"\n />\n ),\n id: `cellUserFilter${rowIndex}`\n },\n ...filteredMacros.map(({ name, allowed_values: allowedValues }) => ({\n cell: allowedValues ? (\n option.label}\n getOptionValue={option => option.value}\n isClearable={false}\n onChange={value =>\n onChangeEditedCallbackDraft({\n property: name,\n rowIndex,\n value\n })\n }\n options={allowedValues.map(allowedValue => ({\n label: allowedValue,\n value: allowedValue\n }))}\n value={macroValues[name]}\n placeholder=\"select value\"\n />\n ) : (\n \n onChangeEditedCallbackDraft({\n property: name,\n rowIndex,\n value\n })\n }\n value={macroValues[name]?.value}\n placeholder={name}\n />\n ),\n id: `cell${name}${rowIndex}`\n }))\n ],\n id: `row${rowIndex}`\n }\n}\n\nconst EditCallbackModal = ({\n clearError,\n errors,\n instructions,\n isEditedCallbackSavable,\n isSaving,\n onClickClose,\n onClickSaveEditedCallback,\n rows,\n selectedCallbackName\n}) => {\n const [errorList, setErrorList] = useState([])\n const [errorCounter, setErrorCounter] = useState(0)\n\n const clearErrorList = () => {\n setErrorList([])\n clearError('editedCallback')\n }\n\n const handleClickClose = () => {\n clearErrorList()\n onClickClose()\n }\n\n useEffect(() => {\n const hasNewError = !isEmpty(errors.editedCallback)\n\n if (hasNewError) {\n setErrorList(currentErrorList => [\n ...currentErrorList,\n {\n ...DEFAULT_ERROR_ALERT_PROPS,\n children: [{errors.editedCallback}],\n key: errorCounter\n }\n ])\n\n setErrorCounter(currentErrorCounter => currentErrorCounter + 1)\n }\n }, [errors.editedCallback])\n\n return (\n
    \n \n {selectedCallbackName}\n \n {instructions && (\n \n \n \n )}\n \n }\n />\n
    \n
    \n \n Something went wrong.}\n isDisabled={!isEditedCallbackSavable}\n isLoading={isSaving}\n level=\"success\"\n loadingContent={Saving...}\n onClick={onClickSaveEditedCallback}\n onError={() => {}}\n onSuccess={() => {}}\n resetOnSuccess\n >\n {errors.editedCallback ? 'Retry' : 'Save'}\n \n
    \n
    \n )\n}\n\nEditCallbackModal.propTypes = {\n clearError: PropTypes.func.isRequired,\n errors: PropTypes.objectOf(PropTypes.string),\n instructions: PropTypes.string,\n isEditedCallbackSavable: PropTypes.bool.isRequired,\n isSaving: PropTypes.bool.isRequired,\n onClickClose: PropTypes.func.isRequired,\n onClickSaveEditedCallback: PropTypes.func.isRequired,\n rows: PropTypes.shape({\n cells: PropTypes.shape({\n cell: PropTypes.node.isRequired,\n flex: PropTypes.number,\n id: PropTypes.string.isRequired\n }),\n id: PropTypes.string.isRequired\n }).isRequired,\n selectedCallbackName: PropTypes.string.isRequired\n}\n\nEditCallbackModal.defaultProps = {\n errors: {},\n instructions: null\n}\n\nexport default EditCallbackModal\n","import classNames from 'classnames'\nimport { isNil } from 'lodash'\nimport PropTypes from 'prop-types'\nimport { Fragment } from 'react'\nimport Skeleton from 'react-loading-skeleton'\n\nimport { getEventCallbacksUrl } from '../../../../../../../api/apps/helpers'\nimport { overlayOpaquenessTypes } from '../../../../../../../utils/customPropTypes'\nimport CardPanel from '../../../../../../CardPanel'\nimport FlexTable from '../../../../../../FlexTable'\nimport PageNotice from '../../../../../../PageNotice'\nimport PercentageLabel from '../../../../../../PercentageLabel'\nimport { MIN_CALLBACK_HEALTH_ROWS, SKELETON_ROW_COUNT } from './constants'\nimport styles from './styles.module.scss'\n\nexport const buildHealthTableRow = (\n { appId, callback, headers, health, isHeadersRow },\n rowIndex\n) => {\n if (isHeadersRow) {\n return {\n cells: headers.map((header, headerIndex) => ({\n cell:
    {header}
    ,\n id: `header${headerIndex}`\n })),\n id: 'headers'\n }\n }\n\n return {\n cells: [\n {\n cell: (\n \n {callback.name}\n \n ),\n id: `cellName${rowIndex}`\n },\n {\n cell:
    {callback.eventName}
    ,\n id: `cellEvent${rowIndex}`\n },\n {\n cell: !isNil(health) ? : '',\n id: `cellHealth${rowIndex}`\n }\n ],\n id: `row${rowIndex}`\n }\n}\n\nconst HealthTable = ({\n isLoading,\n isOverlay,\n overlayContent,\n overlayOpaqueness,\n rows\n}) => (\n \n {isLoading ? (\n \n {Array.from(Array(SKELETON_ROW_COUNT)).map(() => (\n \n \n
    \n
    \n ))}\n
    \n ) : (\n \n \n The following callbacks may need your attention. Health indicates what\n percentage of the callback’s attempts have been successful.\n \n {rows.length >= MIN_CALLBACK_HEALTH_ROWS && (\n \n )}\n \n )}\n \n)\n\nHealthTable.propTypes = {\n isLoading: PropTypes.bool.isRequired,\n isOverlay: PropTypes.bool.isRequired,\n overlayContent: PropTypes.node.isRequired,\n overlayOpaqueness: overlayOpaquenessTypes.isRequired,\n rows: PropTypes.arrayOf(\n PropTypes.shape({\n event: PropTypes.string.isRequired,\n health: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired\n })\n ).isRequired\n}\n\nexport default HealthTable\n","import classNames from 'classnames'\nimport { find, isEmpty, omit } from 'lodash'\nimport PropTypes from 'prop-types'\nimport Tooltip from 'rc-tooltip'\nimport { useEffect, useState } from 'react'\n\nimport { TOOLTIP_MOUSE_ENTER_DELAY } from '../../../../../../../utils/constants'\nimport AlertList from '../../../../../../AlertList'\nimport AsyncButton from '../../../../../../AsyncButton'\nimport Button from '../../../../../../Button'\nimport FlexTable from '../../../../../../FlexTable'\nimport FontAwesomeIcon from '../../../../../../FontAwesomeIcon'\nimport FormDropdown from '../../../../../../FormDropdown'\nimport FormInput from '../../../../../../FormInput'\nimport ModalHeaderWithClose from '../../../../../../ModalHeaderWithClose'\nimport PageNotice from '../../../../../../PageNotice'\nimport { DEFAULT_ERROR_ALERT_PROPS, GROUP_TYPE_ADVANCED } from '../constants'\nimport styles from './styles.module.scss'\n\nconst customFormDropdownStyles = {\n // eslint-disable-next-line no-unused-vars\n control: (_, state) => ({\n backgroundColor: state.isDisabled\n ? styles.controlDisabledBackgroundColor\n : styles.controlBackgroundColor,\n border: styles.controlBorder,\n borderRadius: styles.controlBorderRadius,\n display: 'flex',\n flexGrow: 0,\n flexShrink: 1,\n fontFamily: styles.controlFontFamily,\n fontSize: styles.controlFontSize,\n fontWeight: styles.controlFontWeight,\n lineHeight: styles.controlLineHeight\n }),\n dropdownIndicator: (existingStyles, state) => ({\n ...existingStyles,\n ':hover': {\n ...existingStyles[':hover'],\n color: styles.dropdownIndicatorColor\n },\n color: styles.dropdownIndicatorColor,\n display: state.isDisabled ? 'none' : 'inherit'\n }),\n input: existingStyles => ({\n ...existingStyles,\n caretColor: 'transparent',\n color: styles.singleValueColor,\n fontWeight: styles.singleValueFontWeight,\n margin: 0,\n paddingLeft: styles.singleValuePaddingLeft\n }),\n menu: existingStyles => ({\n ...existingStyles,\n right: styles.menuRight,\n whiteSpace: 'nowrap',\n width: styles.menuWidth,\n zIndex: styles.menuZIndex\n }),\n menuList: existingStyles => ({\n ...existingStyles,\n '&::-webkit-scrollbar': {\n '-webkit-appearance': 'none'\n },\n '&::-webkit-scrollbar-thumb': {\n backgroundColor: styles.menuListScrollbarBackgroundColor,\n border: styles.menuListScrollbarBorder,\n borderRadius: styles.menuListScrollbarBorderRadius\n },\n '&::-webkit-scrollbar:horizontal': {\n height: styles.menuListScrollbarDimensions\n },\n '&::-webkit-scrollbar:vertical': {\n width: styles.menuListScrollbarDimensions\n },\n maxHeight: styles.menuListMaxHeight,\n overflowX: 'hidden'\n }),\n placeholder: existingStyles => ({\n ...existingStyles,\n color: styles.placeholderColor,\n fontStyle: 'italic',\n fontWeight: styles.placeholderFontWeight,\n height: styles.placeholderHeight,\n overflow: 'hidden',\n padding: styles.placeholderPadding\n }),\n singleValue: existingStyles => ({\n ...omit(existingStyles, ['maxWidth', 'position', 'transform']),\n color: styles.singleValueColor,\n fontWeight: styles.singleValueFontWeight,\n margin: 0,\n paddingLeft: styles.singleValuePaddingLeft\n }),\n valueContainer: existingStyles => ({\n ...existingStyles,\n flexWrap: 'nowrap',\n padding: styles.formDropdownPadding,\n width: styles.formDropdownValueContainerWidth\n })\n}\n\nexport const buildNewEventModalRow = ({\n errors,\n callbackGroupTemplate: {\n fixedEventDefinition,\n requiredMacros,\n userFilterDefault,\n userFilterEditable\n },\n callbackName,\n eventDefinition,\n eventDefinitions: eventDefinitionOptions,\n groupType,\n headers,\n isHeadersRow,\n onChangeEventDraft,\n rowIndex,\n userFilter,\n userFilterOptions,\n ...macroValues\n}) => {\n const isAdvancedGroup = groupType === GROUP_TYPE_ADVANCED\n\n const filteredRequiredMacros = (requiredMacros || []).filter(\n ({ default: isDefault }) => (isDefault && isAdvancedGroup) || !isDefault\n )\n\n const hasMoreThanThreeRowItems =\n filteredRequiredMacros && filteredRequiredMacros.length > 0\n\n const cellItemClass = classNames(styles.cellItem, {\n [styles.threeItemRow]: !hasMoreThanThreeRowItems\n })\n\n const eventModalInputClass = classNames(styles.eventModalInput, {\n [styles.threeItemRow]: !hasMoreThanThreeRowItems\n })\n\n const isEventDefinitionUneditable = fixedEventDefinition !== null\n\n let eventDefinitionValue = eventDefinition\n\n if (isEventDefinitionUneditable) {\n eventDefinitionValue =\n find(eventDefinitionOptions, { name: fixedEventDefinition }) || userFilter\n }\n\n let userFilterValue = userFilter\n\n if (!userFilterEditable) {\n userFilterValue =\n find(userFilterOptions, { value: userFilterDefault }) || userFilter\n }\n\n if (isHeadersRow) {\n return {\n cells: headers.map(({ label, tooltipContent }, headerIndex) => ({\n cell: (\n
    \n {label}\n {tooltipContent && (\n {tooltipContent}}\n placement=\"top\"\n >\n
    \n \n
    \n \n )}\n
    \n ),\n id: `header${headerIndex}`\n })),\n id: 'headers'\n }\n }\n\n return {\n cells: [\n {\n cell: (\n \n onChangeEventDraft({\n property: 'callbackName',\n rowIndex,\n value\n })\n }\n value={callbackName}\n placeholder=\"enter name\"\n />\n ),\n id: `cellCallbackName${rowIndex}`\n },\n {\n cell: (\n option.name}\n getOptionValue={option => option.id}\n isClearable={false}\n onChange={value =>\n onChangeEventDraft({\n property: 'eventDefinition',\n rowIndex,\n value\n })\n }\n options={eventDefinitionOptions}\n value={eventDefinitionValue}\n placeholder=\"select event\"\n />\n ),\n id: `cellEventName${rowIndex}`\n },\n {\n cell: (\n option.label}\n getOptionValue={option => option.value}\n isClearable={false}\n onChange={value =>\n onChangeEventDraft({\n property: 'userFilter',\n rowIndex,\n value\n })\n }\n options={userFilterOptions}\n value={userFilterValue}\n placeholder=\"select filter\"\n />\n ),\n id: `cellUserFilter${rowIndex}`\n },\n ...filteredRequiredMacros.map(({ name, allowedValues }) => ({\n cell: allowedValues ? (\n option.label}\n getOptionValue={option => option.value}\n isClearable={false}\n onChange={value =>\n onChangeEventDraft({\n property: name,\n rowIndex,\n value\n })\n }\n options={allowedValues.map(allowedValue => ({\n label: allowedValue,\n value: allowedValue\n }))}\n value={macroValues[name]}\n placeholder=\"select value\"\n />\n ) : (\n \n onChangeEventDraft({\n property: name,\n rowIndex,\n value\n })\n }\n value={macroValues[name]}\n placeholder={name}\n />\n ),\n id: `cell${name}${rowIndex}`\n }))\n ],\n id: `row${rowIndex}`\n }\n}\n\nconst NewEventModal = ({\n clearError,\n errors,\n instructions,\n isNewEventSavable,\n isSaving,\n onClickClose,\n onClickSaveNewEvent,\n // eslint-disable-next-line react/prop-types\n rows,\n selectedEventName\n}) => {\n const [errorList, setErrorList] = useState([])\n const [errorCounter, setErrorCounter] = useState(0)\n\n const clearErrorList = () => {\n setErrorList([])\n clearError('newEvent')\n }\n\n const handleClickClose = () => {\n clearErrorList()\n onClickClose()\n }\n\n useEffect(() => {\n const hasNewError = !isEmpty(errors.newEvent)\n\n if (hasNewError) {\n setErrorList(currentErrorList => [\n ...currentErrorList,\n {\n ...DEFAULT_ERROR_ALERT_PROPS,\n children: [{errors.newEvent}],\n key: errorCounter\n }\n ])\n\n setErrorCounter(currentErrorCounter => currentErrorCounter + 1)\n }\n }, [errors.newEvent])\n\n return (\n
    \n \n {selectedEventName}\n \n {instructions && (\n \n \n \n )}\n \n }\n />\n {/*\n // TODO: [nafeu] re-enable this option when building bulk-edit functionality\n
    \n
    \n \n Add Event\n
    \n
    \n */}\n
    \n
    \n \n Something went wrong.}\n isDisabled={!isNewEventSavable}\n isLoading={isSaving}\n level=\"success\"\n loadingContent={Saving...}\n onClick={onClickSaveNewEvent}\n onError={() => {}}\n onSuccess={() => {}}\n resetOnSuccess\n >\n {errors.newEvent ? 'Retry' : 'Save'}\n \n
    \n
    \n )\n}\n\nNewEventModal.propTypes = {\n clearError: PropTypes.func.isRequired,\n errors: PropTypes.objectOf(PropTypes.string),\n instructions: PropTypes.string,\n isNewEventSavable: PropTypes.bool.isRequired,\n isSaving: PropTypes.bool.isRequired,\n onClickClose: PropTypes.func.isRequired,\n onClickSaveNewEvent: PropTypes.func.isRequired,\n selectedEventName: PropTypes.string.isRequired\n}\n\nNewEventModal.defaultProps = {\n errors: {},\n instructions: null\n}\n\nexport default NewEventModal\n","import PropTypes from 'prop-types'\nimport { Fragment } from 'react'\nimport Skeleton from 'react-loading-skeleton'\n\nimport { overlayOpaquenessTypes } from '../../../../../../../utils/customPropTypes'\nimport AsyncIconTextButton from '../../../../../../AsyncIconTextButton'\nimport CardPanel from '../../../../../../CardPanel'\nimport FlexTable from '../../../../../../FlexTable'\nimport FontAwesomeIcon from '../../../../../../FontAwesomeIcon'\nimport PageNotice from '../../../../../../PageNotice'\nimport { SKELETON_ROW_COUNT } from './constants'\nimport styles from './styles.module.scss'\n\nexport const buildS2SCallbacksTableRow = ({\n eventName,\n headers,\n id: callbackId,\n isHeadersRow,\n name,\n onClickEditCustomCallback,\n rowIndex\n}) => {\n if (isHeadersRow) {\n return {\n cells: headers.map((header, headerIndex) => ({\n cell:
    {header}
    ,\n id: `header${headerIndex}`\n })),\n id: 'headers'\n }\n }\n\n return {\n cells: [\n {\n cell:
    {name}
    ,\n id: `cellStatus${rowIndex}`\n },\n {\n cell:
    {eventName}
    ,\n id: `cellName${rowIndex}`\n },\n {\n cell: (\n onClickEditCustomCallback(callbackId)}\n onError={() => {}}\n resetOnSuccess\n >\n Edit\n \n ),\n id: `cellEdit${rowIndex}`\n }\n ],\n id: `row${rowIndex}`\n }\n}\n\n/*\n eslint-disable jsx-a11y/interactive-supports-focus,\n jsx-a11y/click-events-have-key-events,\n jsx-a11y/no-static-element-interactions\n*/\nconst S2SCallbacksTable = ({\n // eslint-disable-next-line no-unused-vars\n isLoading,\n onClickAddCustomCallback,\n overlayContent,\n overlayOpaqueness,\n rows\n}) => (\n \n \n Add a S2S Callback\n \n }\n >\n {isLoading ? (\n \n {Array.from(Array(SKELETON_ROW_COUNT)).map(() => (\n \n \n
    \n
    \n ))}\n
    \n ) : (\n \n \n Send realtime data to your own data warehouse with a custom callback.\n \n \n \n )}\n \n)\n/*\n eslint-enable jsx-a11y/interactive-supports-focus,\n jsx-a11y/click-events-have-key-events,\n jsx-a11y/no-static-element-interactions\n*/\n\nS2SCallbacksTable.propTypes = {\n isLoading: PropTypes.bool.isRequired,\n onClickAddCustomCallback: PropTypes.bool.isRequired,\n overlayContent: PropTypes.node.isRequired,\n overlayOpaqueness: overlayOpaquenessTypes.isRequired,\n rows: PropTypes.arrayOf(\n PropTypes.shape({\n eventName: PropTypes.string.isRequired,\n name: PropTypes.bool.isRequired\n })\n ).isRequired\n}\n\nexport default S2SCallbacksTable\n","import { useRef, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { format, parseISO } from 'date-fns'\nimport TdKeyCell from './TdKeyCell'\nimport { deepCamelKeys } from '../../../../../../../utils/helpers'\nimport { post, put } from '../../../../../../../utils/request'\nimport { API_KEY_NAME_MAX_LENGTH } from './constants'\n\nimport styles from './styles.module.scss'\n\nconst KeyRow = ({\n // eslint-disable-next-line react/prop-types\n apiKey: apiKeyProp,\n canRevoke,\n integrated,\n isOrgKey,\n lastSeenDate,\n onError,\n onRemoveKeyRow,\n onShowRevokeModal\n}) => {\n const apiKey = deepCamelKeys(apiKeyProp)\n const baseApiKeyURL = `${window.location.pathname}/api_keys/${apiKey.id}`\n const revokeApiKeyURL = `${baseApiKeyURL}/disable`\n\n const [isEditing, setIsEditing] = useState(apiKey.isNew)\n const [name, setName] = useState(apiKey.name)\n const nameRef = useRef(null)\n\n const ESCAPE_KEYCODE = 27\n const ENTER_KEYCODE = 13\n\n const handleEnableEdit = () => {\n setIsEditing(true)\n }\n\n const handleDisableEdit = () => {\n setIsEditing(false)\n }\n\n const handleChangeName = async () => {\n const nameExists = nameRef.current.value.length > 0\n if (nameExists) {\n setName(nameRef.current.value)\n }\n handleDisableEdit()\n try {\n await put(baseApiKeyURL, { api_key: { name: nameRef.current.value } })\n } catch (error) {\n onError(error)\n }\n }\n\n const revokeSdkKey = async () => {\n onRemoveKeyRow()\n\n try {\n await post(revokeApiKeyURL)\n } catch (error) {\n onError(error)\n }\n }\n\n const handleRevoke = () => {\n if (!canRevoke) return\n\n onShowRevokeModal({ revokeSdkKey })\n }\n\n const handleOrgKeyRevoke = () => {\n onShowRevokeModal({ isOrgKeyParam: true, revokeSdkKey })\n }\n\n const onKeyUpName = event => {\n switch (event.keyCode) {\n case ESCAPE_KEYCODE:\n handleDisableEdit(event)\n break\n case ENTER_KEYCODE:\n handleChangeName(event)\n break\n default:\n }\n }\n\n const nameCell = () => (isEditing\n ? (\n
    \n \n \n {' '}\n \n {' '}\n \n \n
    \n )\n : (\n
    \n {\n isOrgKey\n ? (\n \n Universal SDK Key\n \n deprecated\n \n \n )\n : (\n \n {name}\n \n \n \n \n )\n }\n
    \n ))\n\n const newKeyBadge = () => (apiKey.isNew\n ? new\n : )\n\n const formattedLastSeenDate = () => {\n if (!integrated) {\n return (\n never\n )\n }\n\n if (lastSeenDate) {\n return (\n \n {format(parseISO(lastSeenDate), 'yyyy-MM-dd')}\n \n )\n }\n\n return (\n -\n )\n }\n\n return (\n \n \n {nameCell()}\n \n \n \n {format(parseISO(apiKey.createdAt), 'yyyy-MM-dd')}\n {' '}\n {newKeyBadge()}\n \n \n {formattedLastSeenDate()}\n \n \n {\n isOrgKey\n ? (\n \n Disable\n \n )\n : (\n \n Revoke\n \n )\n }\n \n \n )\n}\n\nKeyRow.propTypes = {\n canRevoke: PropTypes.bool.isRequired,\n integrated: PropTypes.bool.isRequired,\n isOrgKey: PropTypes.bool,\n lastSeenDate: PropTypes.string,\n onError: PropTypes.func,\n onRemoveKeyRow: PropTypes.func,\n onShowRevokeModal: PropTypes.func\n}\n\nKeyRow.defaultProps = {\n isOrgKey: false,\n lastSeenDate: null,\n onError: () => {},\n onRemoveKeyRow: () => {},\n onShowRevokeModal: () => {}\n}\n\nexport default KeyRow\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___UmAg4\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1rA3A\",\"btn-toggle\":\"styles-module__btn-toggle___69gRT\",\"handle\":\"styles-module__handle___1HowX\",\"active\":\"styles-module__active___2eEpB\",\"focus\":\"styles-module__focus___1q2xg\",\"card-panel\":\"styles-module__card-panel___2PdmX\",\"panel-heading\":\"styles-module__panel-heading___4e7BK\",\"panel-title\":\"styles-module__panel-title____6SQO\",\"panel-subtitle\":\"styles-module__panel-subtitle___yIKlB\",\"panel-body\":\"styles-module__panel-body___pnOAG\",\"icon\":\"styles-module__icon___3vOcj\",\"icon--sm\":\"styles-module__icon--sm___3sZ85\",\"visibleIcon\":\"styles-module__visibleIcon___Q-u6-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___2mw7U\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___3Bp6f\",\"btn-toggle\":\"styles-module__btn-toggle___tmXIK\",\"handle\":\"styles-module__handle___1QrXm\",\"active\":\"styles-module__active___1x2nq\",\"focus\":\"styles-module__focus___1Jbbz\",\"card-panel\":\"styles-module__card-panel___1ssil\",\"panel-heading\":\"styles-module__panel-heading___30A40\",\"panel-title\":\"styles-module__panel-title___2r4ms\",\"panel-subtitle\":\"styles-module__panel-subtitle___2aWdu\",\"panel-body\":\"styles-module__panel-body___3_Cl3\",\"label\":\"styles-module__label___3_YQQ\",\"formLabel\":\"styles-module__formLabel___2gTxL\"};","export const displaySettingsByValueType = {\n currency: {\n numberOfDigits: 2,\n prependWith: '$'\n },\n number: {\n numberOfDigits: 2,\n shouldDropTrailingZeroes: true\n },\n percentage: {\n numberOfDigits: 2,\n postfixWith: '%',\n shouldDropTrailingZeroes: true\n },\n wholeNumber: {\n numberOfDigits: 0\n }\n}\n\nexport const MIN_NUMBER_OF_DIGITS = 1\nexport const MAX_NUMBER_OF_DIGITS = 100\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___2w7pH\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1ojbE\",\"btn-toggle\":\"styles-module__btn-toggle___1vpd8\",\"handle\":\"styles-module__handle___2kWAK\",\"active\":\"styles-module__active___1Gvpl\",\"focus\":\"styles-module__focus___3S0GT\",\"card-panel\":\"styles-module__card-panel___2cEgg\",\"panel-heading\":\"styles-module__panel-heading___1e27m\",\"panel-title\":\"styles-module__panel-title___1GE7n\",\"panel-subtitle\":\"styles-module__panel-subtitle___UBmQw\",\"panel-body\":\"styles-module__panel-body___3Fpv9\",\"buttonTabNavigation\":\"styles-module__buttonTabNavigation___3bkbM\",\"tabButton\":\"styles-module__tabButton___25H_P\",\"isActive\":\"styles-module__isActive___3zGZa\"};","export const UNLINKABLE_IDS = [-1, '-1', 0, '0', '00000000-0000-0000-0000-000000000000']\n\nexport const ENTITY_TYPES_TO_LINK_DETAILS = {\n ad_network_id: {\n baseHref: '/dashboard/integrations',\n title: 'View Channel'\n },\n app_id: {\n baseHref: '/dashboard/apps',\n title: 'View App'\n },\n campaign_id: {\n baseHref: '/dashboard/campaigns',\n title: 'View Campaign'\n }\n}\n\nexport const LINKABLE_ENTITY_TYPES = Object.keys(ENTITY_TYPES_TO_LINK_DETAILS)\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___5ZIZP\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___2Mqg-\",\"btn-toggle\":\"styles-module__btn-toggle___dNjiQ\",\"handle\":\"styles-module__handle___ho2mf\",\"active\":\"styles-module__active___OyOWY\",\"focus\":\"styles-module__focus___2TMrG\",\"card-panel\":\"styles-module__card-panel___1jEtN\",\"panel-heading\":\"styles-module__panel-heading___2t2mG\",\"panel-title\":\"styles-module__panel-title___eMZWr\",\"panel-subtitle\":\"styles-module__panel-subtitle___11wdS\",\"panel-body\":\"styles-module__panel-body___2VnGl\",\"chartTypeButtons\":\"styles-module__chartTypeButtons___1HYs6\",\"chartTypeButton\":\"styles-module__chartTypeButton___3YuD3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___2yzEh\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1fkUa\",\"btn-toggle\":\"styles-module__btn-toggle___23efS\",\"handle\":\"styles-module__handle___2n0Vk\",\"active\":\"styles-module__active___2x3uc\",\"focus\":\"styles-module__focus___3oYhj\",\"card-panel\":\"styles-module__card-panel___251Ru\",\"panel-heading\":\"styles-module__panel-heading___1slji\",\"panel-title\":\"styles-module__panel-title___NXCN2\",\"panel-subtitle\":\"styles-module__panel-subtitle___2Hr-p\",\"panel-body\":\"styles-module__panel-body___1pSc4\",\"container\":\"styles-module__container____38VT\",\"containerWithFocusedInput\":\"styles-module__containerWithFocusedInput___1zi28\",\"input\":\"styles-module__input___3eVA0\",\"error\":\"styles-module__error___3PHE2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___2SO6s\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___3l93U\",\"btn-toggle\":\"styles-module__btn-toggle___sTU6s\",\"handle\":\"styles-module__handle___e0NdD\",\"active\":\"styles-module__active___2IqCU\",\"focus\":\"styles-module__focus___3Nmgj\",\"card-panel\":\"styles-module__card-panel___-tz1l\",\"panel-heading\":\"styles-module__panel-heading___3o7Vy\",\"panel-title\":\"styles-module__panel-title___29up3\",\"panel-subtitle\":\"styles-module__panel-subtitle___3o6WG\",\"panel-body\":\"styles-module__panel-body___oXKJb\",\"iconContainer\":\"styles-module__iconContainer___3BBVp\",\"icon\":\"styles-module__icon___1XkKO\",\"popoverTemplate\":\"styles-module__popoverTemplate___13DJL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___1kQsS\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___3eIao\",\"btn-toggle\":\"styles-module__btn-toggle___1sDsA\",\"handle\":\"styles-module__handle___26akL\",\"active\":\"styles-module__active___2_IUG\",\"focus\":\"styles-module__focus___1hOyb\",\"card-panel\":\"styles-module__card-panel___14zY_\",\"panel-heading\":\"styles-module__panel-heading___3azYH\",\"panel-title\":\"styles-module__panel-title___1ojV5\",\"panel-subtitle\":\"styles-module__panel-subtitle___3LL5E\",\"panel-body\":\"styles-module__panel-body___3PzAg\",\"flexTable\":\"styles-module__flexTable___2ZX8s\",\"row\":\"styles-module__row___26DNN\",\"cell\":\"styles-module__cell___cGy4j\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___3C9e4\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___3L_t0\",\"btn-toggle\":\"styles-module__btn-toggle___QVEwZ\",\"handle\":\"styles-module__handle___2koiR\",\"active\":\"styles-module__active___2M6Ty\",\"focus\":\"styles-module__focus___2nwNf\",\"card-panel\":\"styles-module__card-panel___3PXOW\",\"panel-heading\":\"styles-module__panel-heading___34XDj\",\"panel-title\":\"styles-module__panel-title___aC_9Z\",\"panel-subtitle\":\"styles-module__panel-subtitle___3D0-n\",\"panel-body\":\"styles-module__panel-body___aL2YG\",\"headerWithHelpText\":\"styles-module__headerWithHelpText___1jp9T\",\"header\":\"styles-module__header___1r7CX\",\"helpText\":\"styles-module__helpText___36iDK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___3wY2Q\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___2tjdh\",\"btn-toggle\":\"styles-module__btn-toggle___1-gOV\",\"handle\":\"styles-module__handle___3RqU7\",\"active\":\"styles-module__active___23ApN\",\"focus\":\"styles-module__focus___2Tthl\",\"card-panel\":\"styles-module__card-panel___xt5Yj\",\"panel-heading\":\"styles-module__panel-heading___2DG0r\",\"panel-title\":\"styles-module__panel-title___2_Igb\",\"panel-subtitle\":\"styles-module__panel-subtitle___2BndU\",\"panel-body\":\"styles-module__panel-body___1IyoB\",\"lineTabNavigation\":\"styles-module__lineTabNavigation___cy_vs\",\"link\":\"styles-module__link___3jt-h\",\"isActive\":\"styles-module__isActive___13yn0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___3RW5v\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___3hTC2\",\"btn-toggle\":\"styles-module__btn-toggle___4kGzg\",\"handle\":\"styles-module__handle___17hcW\",\"active\":\"styles-module__active___35YOk\",\"focus\":\"styles-module__focus___2XV8q\",\"card-panel\":\"styles-module__card-panel___W0XlV\",\"panel-heading\":\"styles-module__panel-heading___55Miq\",\"panel-title\":\"styles-module__panel-title___EkTJJ\",\"panel-subtitle\":\"styles-module__panel-subtitle___3jAEM\",\"panel-body\":\"styles-module__panel-body___2X4xj\",\"noValue\":\"styles-module__noValue___2I4XL\",\"truncate\":\"styles-module__truncate___NJP4U\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___26zQh\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___16mV2\",\"btn-toggle\":\"styles-module__btn-toggle___100aQ\",\"handle\":\"styles-module__handle___3fmJD\",\"active\":\"styles-module__active___vEwOm\",\"focus\":\"styles-module__focus___kyqi_\",\"card-panel\":\"styles-module__card-panel___3COFo\",\"panel-heading\":\"styles-module__panel-heading___1OZox\",\"panel-title\":\"styles-module__panel-title___1wAXf\",\"panel-subtitle\":\"styles-module__panel-subtitle___IGAYv\",\"panel-body\":\"styles-module__panel-body___3IhkZ\",\"sidebar\":\"styles-module__sidebar___1WX-a\",\"sidebarCollapsed\":\"styles-module__sidebarCollapsed___KU1pC\",\"sidebarContent\":\"styles-module__sidebarContent___1uHRs\",\"pane\":\"styles-module__pane___26WfM\",\"paneCollapsed\":\"styles-module__paneCollapsed___1qLdv\",\"list\":\"styles-module__list___2ZDch\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___1KCOc\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___30zq-\",\"btn-toggle\":\"styles-module__btn-toggle___31Q0F\",\"handle\":\"styles-module__handle___2m_Ad\",\"active\":\"styles-module__active___1K96X\",\"focus\":\"styles-module__focus___31cSb\",\"card-panel\":\"styles-module__card-panel___3k5rk\",\"panel-heading\":\"styles-module__panel-heading___3BZn8\",\"panel-title\":\"styles-module__panel-title___w-6gS\",\"panel-subtitle\":\"styles-module__panel-subtitle___5ue0o\",\"panel-body\":\"styles-module__panel-body___zT4Pg\",\"btn\":\"styles-module__btn___11UhG\",\"disabled\":\"styles-module__disabled___2jvwt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___xf-Ax\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1fyOO\",\"btn-toggle\":\"styles-module__btn-toggle___LUPdT\",\"handle\":\"styles-module__handle___1i4CF\",\"active\":\"styles-module__active___2bAOY\",\"focus\":\"styles-module__focus___HPWzF\",\"card-panel\":\"styles-module__card-panel___2v-A_\",\"panel-heading\":\"styles-module__panel-heading___3Np8W\",\"panel-title\":\"styles-module__panel-title___1Hmca\",\"panel-subtitle\":\"styles-module__panel-subtitle___2U8gf\",\"panel-body\":\"styles-module__panel-body___1cQJP\",\"container\":\"styles-module__container___2FsHu\",\"header\":\"styles-module__header___LSD2G\",\"input\":\"styles-module__input___2gP5w\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___tNLGH\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___ZMKPn\",\"btn-toggle\":\"styles-module__btn-toggle___3-_2w\",\"handle\":\"styles-module__handle___2VMUr\",\"active\":\"styles-module__active___3SSph\",\"focus\":\"styles-module__focus___1xwPw\",\"card-panel\":\"styles-module__card-panel___2juNU\",\"panel-heading\":\"styles-module__panel-heading___iVNA6\",\"panel-title\":\"styles-module__panel-title___2w3bW\",\"panel-subtitle\":\"styles-module__panel-subtitle___34UyV\",\"panel-body\":\"styles-module__panel-body___1U2Gy\",\"img\":\"styles-module__img___2S5Cb\",\"selectedItem\":\"styles-module__selectedItem___25r-A\",\"displayName\":\"styles-module__displayName___EC7j5\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___1qG9i\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___SVsMe\",\"btn-toggle\":\"styles-module__btn-toggle___2cjwF\",\"handle\":\"styles-module__handle___tc03N\",\"active\":\"styles-module__active___1I4to\",\"focus\":\"styles-module__focus___3wTh4\",\"card-panel\":\"styles-module__card-panel___3Hlmy\",\"panel-heading\":\"styles-module__panel-heading___vOyQX\",\"panel-title\":\"styles-module__panel-title___2Z30h\",\"panel-subtitle\":\"styles-module__panel-subtitle___1hXCA\",\"panel-body\":\"styles-module__panel-body___3XLT1\",\"img\":\"styles-module__img___3YRDh\",\"imgDisabled\":\"styles-module__imgDisabled___1xCXB\",\"channelName\":\"styles-module__channelName___TEcTp\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___OyN9q\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1qpKy\",\"btn-toggle\":\"styles-module__btn-toggle___1AlUO\",\"handle\":\"styles-module__handle___3Vpjd\",\"active\":\"styles-module__active___2Yxrt\",\"focus\":\"styles-module__focus___1JXnX\",\"card-panel\":\"styles-module__card-panel___35Vr6\",\"panel-heading\":\"styles-module__panel-heading___1p16u\",\"panel-title\":\"styles-module__panel-title___1r84E\",\"panel-subtitle\":\"styles-module__panel-subtitle___2cwyh\",\"panel-body\":\"styles-module__panel-body___3VE2_\",\"pane\":\"styles-module__pane___2CcR3\",\"paneCollapsed\":\"styles-module__paneCollapsed___2qVx1\",\"datePicker\":\"styles-module__datePicker___3Pg_l\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___2HCMy\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___b1TKE\",\"btn-toggle\":\"styles-module__btn-toggle___3e_Vc\",\"handle\":\"styles-module__handle___2RtbQ\",\"active\":\"styles-module__active___4EHDs\",\"focus\":\"styles-module__focus___24sQM\",\"card-panel\":\"styles-module__card-panel___2SbB4\",\"panel-heading\":\"styles-module__panel-heading___tVqrP\",\"panel-title\":\"styles-module__panel-title___3VPvb\",\"panel-subtitle\":\"styles-module__panel-subtitle___Ie4QT\",\"panel-body\":\"styles-module__panel-body___1BL85\",\"aemToggle\":\"styles-module__aemToggle___2cQJP\",\"tooltipContent\":\"styles-module__tooltipContent___1XDvb\",\"boldLink\":\"styles-module__boldLink___3fYW1\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___1RYmR\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___V08dG\",\"btn-toggle\":\"styles-module__btn-toggle___1quBf\",\"handle\":\"styles-module__handle___10hoe\",\"active\":\"styles-module__active___3ELVA\",\"focus\":\"styles-module__focus___19QEu\",\"card-panel\":\"styles-module__card-panel___wsUvo\",\"panel-heading\":\"styles-module__panel-heading___24zT_\",\"panel-title\":\"styles-module__panel-title___3qRU2\",\"panel-subtitle\":\"styles-module__panel-subtitle___1Dfvf\",\"panel-body\":\"styles-module__panel-body___2zLnu\",\"layout\":\"styles-module__layout___1LSO2\",\"tableContainer\":\"styles-module__tableContainer___1OUuN\",\"tableContainerNoXScroll\":\"styles-module__tableContainerNoXScroll___2YCSH\",\"tooltip\":\"styles-module__tooltip___1f87v\",\"compactView\":\"styles-module__compactView___ekqQw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___1v3cF\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___3Ofpf\",\"btn-toggle\":\"styles-module__btn-toggle___2hPOY\",\"handle\":\"styles-module__handle___2vepU\",\"active\":\"styles-module__active___3ezjx\",\"focus\":\"styles-module__focus___39D4C\",\"card-panel\":\"styles-module__card-panel___1P5V5\",\"panel-heading\":\"styles-module__panel-heading___mqoVd\",\"panel-title\":\"styles-module__panel-title___CHCfs\",\"panel-subtitle\":\"styles-module__panel-subtitle___aOQ-c\",\"panel-body\":\"styles-module__panel-body___nwC_N\",\"img\":\"styles-module__img___2vwmQ\",\"platformIcon\":\"styles-module__platformIcon___YkEuJ\",\"link\":\"styles-module__link___3M7pA\",\"appName\":\"styles-module__appName___3TMsc\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"google-oauth-button\":\"styles-module__google-oauth-button___1vUPZ\",\"amazon-oauth-button\":\"styles-module__amazon-oauth-button___1pAcu\",\"btn-toggle\":\"styles-module__btn-toggle___2KzgR\",\"handle\":\"styles-module__handle___18auN\",\"active\":\"styles-module__active___2unYg\",\"focus\":\"styles-module__focus___2G8If\",\"card-panel\":\"styles-module__card-panel___3dHn7\",\"panel-heading\":\"styles-module__panel-heading___2Bgdj\",\"panel-title\":\"styles-module__panel-title___3wAcL\",\"panel-subtitle\":\"styles-module__panel-subtitle___3UQii\",\"panel-body\":\"styles-module__panel-body___2Umqp\",\"totalsRadioButton\":\"styles-module__totalsRadioButton___oTedx\",\"totalsRadioHeader\":\"styles-module__totalsRadioHeader___2XXiq\"};","import React from 'react'\nimport pluralize from 'pluralize'\n\nimport Select from '../Select/Select'\nimport Tooltip from 'rc-tooltip'\nimport PlatformIcon from '../PlatformIcon'\n\nimport styles from './styles.module.scss'\n\nconst filterButtonValue = (items, selectedItems, text) => {\n if (selectedItems.length === 0 || items.length === selectedItems.length) {\n return 'All'\n } if (selectedItems.length <= 2) {\n return selectedItems.map(selectedItem => items[selectedItem].name).join(', ') // e.g. Tapjoy, Applovin\n }\n\n return pluralize(text, selectedItems.length, true) // e.g. 3 Channels\n}\n\nconst getLookbackWindowValue = ({ lookbackWindows, selectedLookbackWindow }) => {\n const lookbackWindow = lookbackWindows[selectedLookbackWindow]\n\n let value = ''\n\n if (lookbackWindow) {\n if (/days/i.test(lookbackWindow.name)) {\n value = `Data from past ${lookbackWindow.name.toLowerCase()}`\n } else {\n value = `Data from ${lookbackWindow.name.toLowerCase()}`\n }\n }\n\n return value\n}\n\nconst appRenderer = (\n {\n icon_url: iconUrl, // eslint-disable-line camelcase\n name,\n platform\n }\n) => (\n
    \n {name}\n\n \n\n \n {name}\n \n
    \n)\n\nconst channelRenderer = (\n {\n icon_url: iconUrl, // eslint-disable-line camelcase\n name\n }\n) => (\n
    \n {name}\n\n \n {name}\n \n
    \n)\n\nconst platformRenderer = (\n {\n id,\n name\n }\n) => (\n
    \n \n {name}\n
    \n)\n\nexport const renderPlatformsFilter = (\n {\n onPlatformsSave,\n platforms,\n selectedPlatforms\n }\n) => {\n const selectButtonValue = filterButtonValue(\n platforms,\n selectedPlatforms,\n 'App Stores'\n )\n\n return (\n \n )\n}\n\nexport const renderAppsFilter = (\n {\n apps,\n onAppsSave,\n selectedAppIds\n }\n) => {\n const selectButtonValue = filterButtonValue(\n apps,\n selectedAppIds,\n 'App'\n )\n\n return (\n \n )\n}\n\nexport const renderChannelsFilter = (\n {\n channels,\n onChannelsSave,\n selectedChannelIds\n }\n) => {\n const selectButtonValue = filterButtonValue(\n channels,\n selectedChannelIds,\n 'Channel'\n )\n\n return (\n \n )\n}\n\nexport const renderLookbackWindowFilter = (\n {\n lookbackWindows,\n onLookbackWindowSave,\n selectedLookbackWindow\n }\n) => (\n \n)\n","export const DEFAULT_ERROR_TEXT = 'Something went wrong.'\nexport const BUTTON_LEVELS = {\n DANGER: 'danger',\n DEFAULT: 'default',\n SUCCESS: 'success',\n WARNING: 'warning'\n}\n","import { pickBy, xor } from 'lodash'\n\nimport { getQueryParams } from '../../contexts/ReportingFilters'\nimport { deepSnakeKeys, isPresent } from '../../utils/helpers'\nimport { VOID_END_DATE } from './DateFilter/constants'\n\nconst hasFilterChangesFor = ({ applied, unapplied }) => xor(applied, unapplied).length > 0\n\nexport const getFilterChanges = (\n {\n currentApps,\n currentChannels,\n currentCountries,\n currentEndDate,\n currentGranularity,\n currentGroupBy,\n currentStartDate,\n unappliedApps,\n unappliedChannels,\n unappliedCountries,\n unappliedEndDate,\n unappliedGranularity,\n unappliedGroupBy,\n unappliedStartDate\n }\n) => {\n const hasUnappliedApps = isPresent(unappliedApps)\n\n const hasAppsFilterChanges = hasUnappliedApps\n && hasFilterChangesFor({\n applied: currentApps,\n unapplied: unappliedApps\n })\n\n const hasUnappliedChannels = isPresent(unappliedChannels)\n\n const hasChannelsFilterChanges = hasUnappliedChannels\n && hasFilterChangesFor({\n applied: currentChannels,\n unapplied: unappliedChannels\n })\n\n const hasUnappliedCountries = isPresent(unappliedCountries)\n\n const hasCountriesFilterChanges = hasUnappliedCountries\n && hasFilterChangesFor({\n applied: currentCountries,\n unapplied: unappliedCountries\n })\n\n const hasDateFilterChanges = currentEndDate !== unappliedEndDate\n || currentStartDate !== unappliedStartDate\n\n const hasGranularityFilterChanges = currentGranularity !== unappliedGranularity\n\n const hasGroupByFilterChanges = currentGroupBy !== unappliedGroupBy\n\n const hasFilterChanges = hasAppsFilterChanges\n || hasChannelsFilterChanges\n || hasCountriesFilterChanges\n || hasDateFilterChanges\n || hasGranularityFilterChanges\n || hasGroupByFilterChanges\n\n const canApplyChanges = hasFilterChanges\n && hasUnappliedApps\n && hasUnappliedChannels\n && hasUnappliedCountries\n && unappliedEndDate !== VOID_END_DATE\n\n return {\n canApplyChanges,\n hasAppsFilterChanges,\n hasChannelsFilterChanges,\n hasCountriesFilterChanges,\n hasDateFilterChanges,\n hasFilterChanges,\n hasGranularityFilterChanges,\n hasGroupByFilterChanges\n }\n}\n\nexport const buildStateFromQueryParams = ({ currentUser, location, reportingFilters }) => {\n const {\n apps: currentApps,\n channels: currentChannels,\n countries: currentCountries,\n endDate: currentEndDate,\n granularity: currentGranularity,\n groupBy: currentGroupBy,\n startDate: currentStartDate\n } = getQueryParams({ currentUser, location, reportingFilters })\n\n return {\n currentApps,\n currentChannels,\n currentCountries,\n currentEndDate,\n currentGranularity,\n currentGroupBy,\n currentStartDate,\n unappliedApps: currentApps,\n unappliedChannels: currentChannels,\n unappliedCountries: currentCountries,\n unappliedEndDate: currentEndDate,\n unappliedGranularity: currentGranularity,\n unappliedGroupBy: currentGroupBy,\n unappliedStartDate: currentStartDate\n }\n}\n\nexport const buildQueryParamsFromFilterChanges = (\n {\n apps, channels, countries, endDate, eventName, granularity, groupBy, reportingFilters, startDate\n }\n) => {\n const { apps: allApps, channels: allChannels, countries: allCountries } = reportingFilters\n\n const urlParams = new URLSearchParams(pickBy(deepSnakeKeys({\n endDate,\n eventName,\n granularity,\n groupBy,\n startDate\n })))\n\n if (allApps.length !== apps.length) {\n apps.forEach(app => {\n urlParams.append('apps[]', app)\n })\n }\n\n if (allChannels.length !== channels.length) {\n channels.forEach(channel => {\n urlParams.append('ad_networks[]', channel)\n })\n }\n\n if (allCountries.length !== countries.length) {\n countries.forEach(country => {\n urlParams.append('countries[]', country)\n })\n }\n\n return urlParams.toString()\n}\n","// eslint-disable-next-line import/prefer-default-export\nexport const CAMPAIGN_ROW_SKELETON_HEIGHT = 50\n","import { pickBy, xor } from 'lodash'\nimport { snakeCase } from 'snake-case'\n\nimport {\n getMetricColumnsByReportType,\n getQueryParams,\n getReportTypeFromLocation,\n getSavedReportFromLocation,\n getSkQueryParams,\n isSkAdNetworkReport\n} from '../../../../contexts/ReportingFilters'\nimport { deepSnakeKeys, isPresent } from '../../../../utils/helpers'\nimport { VOID_END_DATE } from '../../../ReportingSidebar/DateFilter/constants'\n\nconst hasFilterChangesFor = ({ applied, unapplied }) =>\n xor(applied, unapplied).length > 0\n\nexport const getFilterChanges = ({\n currentApps,\n currentChannels,\n currentCountries,\n currentEndDate,\n currentGroupBy,\n currentStartDate,\n currentGranularity,\n currentMetrics,\n unappliedApps,\n unappliedChannels,\n unappliedCountries,\n unappliedEndDate,\n unappliedGranularity,\n unappliedGroupBy,\n unappliedStartDate,\n unappliedMetrics\n}) => {\n const hasUnappliedApps = isPresent(unappliedApps)\n\n const hasAppsFilterChanges =\n hasUnappliedApps &&\n hasFilterChangesFor({\n applied: currentApps,\n unapplied: unappliedApps\n })\n\n const hasUnappliedChannels = isPresent(unappliedChannels)\n\n const hasChannelsFilterChanges =\n hasUnappliedChannels &&\n hasFilterChangesFor({\n applied: currentChannels,\n unapplied: unappliedChannels\n })\n\n const hasCountriesFilterChanges = currentCountries !== unappliedCountries\n\n const hasDateFilterChanges =\n currentEndDate !== unappliedEndDate ||\n currentStartDate !== unappliedStartDate\n\n const hasGranularityFilterChanges =\n currentGranularity !== unappliedGranularity\n\n const hasGroupByFilterChanges = currentGroupBy !== unappliedGroupBy\n\n const hasMetricsFilterChanges = currentMetrics !== unappliedMetrics\n\n const hasFilterChanges =\n hasAppsFilterChanges ||\n hasChannelsFilterChanges ||\n hasCountriesFilterChanges ||\n hasDateFilterChanges ||\n hasGranularityFilterChanges ||\n hasGroupByFilterChanges ||\n hasMetricsFilterChanges\n\n const canApplyChanges =\n hasFilterChanges &&\n hasUnappliedApps &&\n hasUnappliedChannels &&\n unappliedEndDate !== VOID_END_DATE\n\n return {\n canApplyChanges,\n hasAppsFilterChanges,\n hasChannelsFilterChanges,\n hasCountriesFilterChanges,\n hasDateFilterChanges,\n hasFilterChanges,\n hasGranularityFilterChanges,\n hasGroupByFilterChanges,\n hasMetricsFilterChanges\n }\n}\n\nexport const buildStateFromQueryParams = ({\n currentUser,\n location,\n reportingFilters,\n metricColumnsByReport\n}) => {\n const reportType = getReportTypeFromLocation(location)\n const currentMetrics = getMetricColumnsByReportType({\n location,\n metricColumnsByReport,\n reportType\n })\n\n const getReportQueryParams = isSkAdNetworkReport(reportType)\n ? getSkQueryParams\n : getQueryParams\n\n const {\n apps: currentApps,\n channels: currentChannels,\n endDate: currentEndDate,\n groupBy: currentGroupBy,\n countries: currentCountries,\n granularity: currentGranularity,\n startDate: currentStartDate\n } = getReportQueryParams({\n currentUser,\n location,\n reportingFilters\n })\n\n const savedReport = getSavedReportFromLocation({\n currentStartDate,\n location,\n reportType,\n reportingFilters\n })\n\n const canUseSavedReport = savedReport && !reportingFilters.isFilterDirty\n\n const state = {\n currentApps: canUseSavedReport ? savedReport.appIds : currentApps,\n currentChannels: canUseSavedReport\n ? savedReport.adNetworkIds\n : currentChannels,\n currentCountries: canUseSavedReport\n ? savedReport.countries\n : currentCountries,\n currentEndDate,\n currentGranularity: canUseSavedReport\n ? savedReport.granularity\n : currentGranularity,\n currentGroupBy: canUseSavedReport ? savedReport.groupBy : currentGroupBy,\n currentMetrics: canUseSavedReport ? savedReport.metrics : currentMetrics,\n currentStartDate,\n selectedReport: getReportTypeFromLocation(location),\n unappliedApps: canUseSavedReport ? savedReport.appIds : currentApps,\n unappliedChannels: canUseSavedReport\n ? savedReport.adNetworkIds\n : currentChannels,\n unappliedCountries: canUseSavedReport\n ? savedReport.countries\n : currentCountries,\n unappliedEndDate: currentEndDate,\n unappliedGranularity: canUseSavedReport\n ? savedReport.granularity\n : currentGranularity,\n unappliedGroupBy: canUseSavedReport ? savedReport.groupBy : currentGroupBy,\n unappliedMetrics: canUseSavedReport ? savedReport.metrics : currentMetrics,\n unappliedStartDate: currentStartDate\n }\n\n const {\n apps: allApps,\n channels: allChannels,\n countries: allCountries\n } = reportingFilters\n\n let dataExporterQuery = {\n endDate: state.currentEndDate,\n granularity: state.currentGranularity,\n groupBy: state.currentGroupBy,\n metrics: state.currentMetrics,\n startDate: state.currentStartDate\n }\n\n if (state.currentApps && allApps.length !== state.currentApps.length) {\n dataExporterQuery = { ...dataExporterQuery, appIds: state.currentApps }\n }\n\n if (\n state.currentChannels &&\n allChannels.length !== state.currentChannels.length\n ) {\n dataExporterQuery = {\n ...dataExporterQuery,\n adNetworkIds: state.currentChannels\n }\n }\n\n if (\n state.currentCountries &&\n allCountries.length !== state.currentCountries.length\n ) {\n dataExporterQuery = {\n ...dataExporterQuery,\n countries: state.currentCountries\n }\n }\n\n return { ...state, dataExporterQuery }\n}\n\nexport const buildQueryParamsFromFilterChanges = ({\n apps,\n channels,\n countries,\n endDate,\n granularity,\n groupBy,\n metrics,\n startDate,\n reportingFilters,\n selectedReport\n}) => {\n const snakeCasedKeys = deepSnakeKeys({\n endDate,\n granularity,\n groupBy,\n reportType: selectedReport,\n startDate\n })\n\n const urlParams = new URLSearchParams(pickBy(snakeCasedKeys))\n\n const {\n apps: allApps,\n channels: allChannels,\n countries: allCountries\n } = reportingFilters\n\n metrics.forEach(metric => {\n urlParams.append('metrics[]', snakeCase(metric))\n })\n\n if (allApps.length !== apps.length) {\n apps.forEach(app => {\n urlParams.append('app_ids[]', app)\n })\n }\n\n if (allChannels.length !== channels.length) {\n channels.forEach(channel => {\n urlParams.append('ad_network_ids[]', channel)\n })\n }\n\n if (!isSkAdNetworkReport(selectedReport)) {\n if (allCountries.length !== countries.length) {\n countries.forEach(country => {\n urlParams.append('countries[]', country)\n })\n }\n }\n\n return urlParams.toString()\n}\n","// eslint-disable-next-line import/prefer-default-export\nexport const FUSE_OPTIONS = {\n distance: 100,\n keys: ['displayName'],\n location: 0,\n minMatchCharLength: 1,\n shouldSort: true,\n threshold: 0.3\n}\n\nexport const MAX_DISPLAY_COUNT = 10\nexport const METRIC_LIST_HEIGHT_OFFSET = 375\nexport const METRIC_LIST_ITEM_SIZE = 50\n","import { pickBy, xor } from 'lodash'\n\nimport { getSkQueryParams } from '../../../../contexts/ReportingFilters'\nimport { deepSnakeKeys, isPresent } from '../../../../utils/helpers'\nimport { VOID_END_DATE } from '../../../ReportingSidebar/DateFilter/constants'\n\nconst hasFilterChangesFor = ({ applied, unapplied }) => xor(applied, unapplied).length > 0\n\nexport const getFilterChanges = (\n {\n currentApps,\n currentChannels,\n currentEndDate,\n currentGroupBy,\n currentStartDate,\n unappliedApps,\n unappliedChannels,\n unappliedEndDate,\n unappliedGroupBy,\n unappliedStartDate\n }\n) => {\n const hasUnappliedApps = isPresent(unappliedApps)\n\n const hasAppsFilterChanges = hasUnappliedApps\n && hasFilterChangesFor({\n applied: currentApps,\n unapplied: unappliedApps\n })\n\n const hasUnappliedChannels = isPresent(unappliedChannels)\n\n const hasChannelsFilterChanges = hasUnappliedChannels\n && hasFilterChangesFor({\n applied: currentChannels,\n unapplied: unappliedChannels\n })\n\n const hasDateFilterChanges = currentEndDate !== unappliedEndDate\n || currentStartDate !== unappliedStartDate\n\n const hasGroupByFilterChanges = currentGroupBy !== unappliedGroupBy\n\n const hasFilterChanges = hasAppsFilterChanges\n || hasChannelsFilterChanges\n || hasDateFilterChanges\n || hasGroupByFilterChanges\n\n const canApplyChanges = hasFilterChanges\n && hasUnappliedApps\n && hasUnappliedChannels\n && unappliedEndDate !== VOID_END_DATE\n\n return {\n canApplyChanges,\n hasAppsFilterChanges,\n hasChannelsFilterChanges,\n hasDateFilterChanges,\n hasFilterChanges,\n hasGroupByFilterChanges\n }\n}\n\nexport const buildStateFromQueryParams = ({ currentUser, location, reportingFilters }) => {\n const {\n apps: currentApps,\n channels: currentChannels,\n endDate: currentEndDate,\n groupBy: currentGroupBy,\n startDate: currentStartDate\n } = getSkQueryParams({ currentUser, location, reportingFilters })\n\n return {\n currentApps,\n currentChannels,\n currentEndDate,\n currentGroupBy,\n currentStartDate,\n unappliedApps: currentApps,\n unappliedChannels: currentChannels,\n unappliedEndDate: currentEndDate,\n unappliedGroupBy: currentGroupBy,\n unappliedStartDate: currentStartDate\n }\n}\n\nexport const buildQueryParamsFromFilterChanges = (\n {\n apps, channels, endDate, groupBy, reportingFilters, startDate\n }\n) => {\n const { apps: allApps, channels: allChannels } = reportingFilters\n\n const urlParams = new URLSearchParams(pickBy(deepSnakeKeys({\n endDate,\n groupBy,\n startDate\n })))\n\n if (allApps.length !== apps.length) {\n apps.forEach(app => {\n urlParams.append('apps[]', app)\n })\n }\n\n if (allChannels.length !== channels.length) {\n channels.forEach(channel => {\n urlParams.append('ad_networks[]', channel)\n })\n }\n\n return urlParams.toString()\n}\n","import { camelCase } from 'camel-case'\n\nimport {\n BASE_JSONAPI_POINTER, LOGIN_PATH, NETWORK_ERROR_MSG, UNAUTHORIZED_ACCESS_MSG\n} from './constants'\nimport { displayErrorMessage } from './toastNotifications'\n\nconst pointerToField = pointer => camelCase(pointer.split('/').pop())\nconst redirectLocation = errorObject => errorObject.meta.location\n\n/**\n * 401 Unauthorized\n * Display unauthorized error message and redirect user to login page\n */\nexport const handleUnauthorizedResponse = () => {\n displayErrorMessage(UNAUTHORIZED_ACCESS_MSG, {\n autoClose: 3500,\n closeButton: false,\n closeOnClick: false,\n hideProgressBar: true,\n onClose: () => { window.location.href = LOGIN_PATH },\n pauseOnHover: false,\n pauseOnFocusLoss: false\n })\n}\n\n/**\n * 409 Conflict\n * Redirect to the conflicted entity that is specified in the meta location member of the response\n * @param {Error} error The error resposne\n */\nexport const handleConflictResponse = error => {\n const { errors } = error.response.data\n\n window.location.href = redirectLocation(errors[0])\n}\n\n/**\n * 422 Unprocessable Entity\n * Uses the errors in the response to properly set errors in our forms\n * @param {Error} error The error response\n * @param {function} setErrors Callback function to set errors in the form\n*/\nexport const handleUnprocessableEntityResponse = (error, setErrors) => {\n const { errors } = error.response.data\n\n const errorMessages = errors.reduce((accumulator, error) => {\n const { source: { pointer }, title } = error\n\n if (pointer !== BASE_JSONAPI_POINTER) {\n const field = pointerToField(pointer)\n accumulator[field] = title\n }\n\n return accumulator\n }, {})\n\n setErrors(errorMessages)\n}\n\nexport const handleNetworkErrorResponse = () => {\n displayErrorMessage(NETWORK_ERROR_MSG, {\n autoClose: false,\n closeButton: false,\n closeOnClick: false,\n hideProgressBar: true,\n pauseOnHover: false,\n pauseOnFocusLoss: false\n })\n}\n\nexport const transformMetricColumnsFromServer = metricColumnsByReportObj => {\n const metricColumnsByReport = {}\n\n Object.keys(metricColumnsByReportObj).forEach(reportPage => {\n metricColumnsByReport[reportPage] = metricColumnsByReportObj[reportPage]\n .map(metricKey => camelCase(metricKey))\n })\n\n return metricColumnsByReport\n}\n","import React, { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport { noop } from 'lodash'\n\nimport FontAwesomeIcon from '../FontAwesomeIcon'\nimport { get } from '../../utils/request'\n\nconst AsyncActionButton = ({\n className,\n text,\n level,\n icon,\n hideOnSuccess,\n loadingText,\n url,\n successText,\n successLevel,\n onSuccess\n}) => {\n const [isLoading, setIsLoading] = useState(false)\n const [isError, setIsError] = useState(false)\n const [isSuccess, setIsSuccess] = useState(false)\n\n const handleClick = async () => {\n setIsLoading(true)\n\n try {\n await get(url)\n setIsLoading(false)\n setIsSuccess(true)\n onSuccess()\n } catch (error) {\n window.Honeybadger.notify(error)\n setIsError(true)\n }\n }\n\n if (isError) {\n return
    Something went wrong.
    \n }\n\n if (isSuccess && hideOnSuccess) {\n return ''\n }\n\n const levelClass = `btn-${isSuccess ? successLevel : level}`\n\n const buttonIcon = () => {\n if (isLoading) return \n if (isError) return \n if (isSuccess) return \n\n return \n }\n\n const buttonText = () => {\n if (isLoading) return loadingText\n if (isError) return 'Something went wrong.'\n if (isSuccess) return successText\n\n return text\n }\n\n return (\n \n {buttonIcon()}\n {' '}\n {buttonText()}\n \n )\n}\n\nAsyncActionButton.propTypes = {\n className: PropTypes.string,\n hideOnSuccess: PropTypes.bool,\n icon: PropTypes.string,\n level: PropTypes.string,\n loadingText: PropTypes.string,\n onSuccess: PropTypes.func,\n successLevel: PropTypes.string,\n successText: PropTypes.string,\n text: PropTypes.string.isRequired,\n url: PropTypes.string.isRequired\n}\n\nAsyncActionButton.defaultProps = {\n className: '',\n hideOnSuccess: false,\n icon: null,\n level: 'success',\n loadingText: 'Submitting...',\n onSuccess: noop,\n successLevel: 'success',\n successText: 'Submission Successful'\n}\n\nexport default AsyncActionButton\n","import React, { useEffect, useState, useMemo } from 'react'\nimport { useQuery } from 'react-query'\nimport { useLocation } from 'react-router-dom'\nimport {\n isArray,\n isEmpty,\n isNull,\n flatten\n} from 'lodash'\nimport classNames from 'classnames'\nimport PropTypes from 'prop-types'\n\nimport AwaitingDataOverlay from '../AwaitingDataOverlay'\nimport ChartFailed from '../ChartFailed'\nimport GroupingTitle from './GroupingTitle'\nimport NoDataOverlay from '../NoDataOverlay'\nimport HistogramActions from './HistogramActions'\nimport OnboardingActionOverlay from '../OnboardingActionOverlay'\nimport Chart from './Chart'\n\nimport {\n useOnboardingStatusState, getConversionValueHistogramOnboardingStatus\n} from '../../contexts/OnboardingStatus'\n\nimport {\n buildQueryParams,\n useReportingFiltersState,\n getQueryParams\n} from '../../contexts/ReportingFilters'\n\nimport {\n useGroupedSummaryTableSettingsState\n} from '../../contexts/GroupedSummaryTableSettings'\n\nimport { useCurrentUserState } from '../../contexts/CurrentUser'\nimport { fetchConversionValueDataByGroupBy } from '../../api/reporting'\n\nimport { fetchMockConversionValueDataForApp } from '../../utils/mock'\n\nimport styles from './styles.module.scss'\n\nimport {\n getValidValueRangeOptions,\n getValidComparisonSelectorOptions\n} from './helpers'\n\nimport {\n CONVERSION_VALUE_QUERY_OVERRIDES,\n DEFAULT_QUERY_OPTIONS,\n DEFAULT_VALUE_RANGE\n} from './constants'\n\nconst ConversionValueHistogram = ({ className }) => {\n const location = useLocation()\n const onboardingStatus = useOnboardingStatusState()\n const reportingFilters = useReportingFiltersState()\n const { currentUser } = useCurrentUserState()\n const { groupBy } = getQueryParams({ currentUser, location, reportingFilters })\n\n const {\n isFetchingTableData,\n tableData: groupedSummaryTableData\n } = useGroupedSummaryTableSettingsState()\n\n const validComparisonSelectorOptions = useMemo(\n () => getValidComparisonSelectorOptions({\n groupBy,\n groupedSummaryTableData\n }),\n [groupBy, groupedSummaryTableData]\n )\n\n const defaultComparison = [validComparisonSelectorOptions[0]]\n\n const [selectedComparison, setSelectedComparison] = useState(defaultComparison)\n\n useEffect(() => {\n setSelectedComparison(defaultComparison)\n }, [groupedSummaryTableData])\n\n const [conversionValueHistogramData, setConversionValueHistogramData] = useState(null)\n\n const [valueRange, setValueRange] = useState(DEFAULT_VALUE_RANGE)\n\n const [isBarChart, setIsBarChart] = useState(true)\n\n const {\n isMocking,\n metricDefinitionForOverlay\n } = getConversionValueHistogramOnboardingStatus({ onboardingStatus })\n\n const queryParamsForFetchingData = {\n ...buildQueryParams({ currentUser, location, reportingFilters }),\n ...CONVERSION_VALUE_QUERY_OVERRIDES\n }\n\n const queryKey = JSON.stringify(queryParamsForFetchingData)\n\n const fetchConversionValueHistogramData = isMocking\n ? fetchMockConversionValueDataForApp\n : fetchConversionValueDataByGroupBy\n\n const {\n data: allFetchedConversionValueHistogramData,\n isError,\n isFetching,\n isLoading,\n refetch\n } = useQuery(\n [\n 'ConversionValueHistogramData',\n queryKey,\n location.search,\n selectedComparison\n ],\n () => (\n fetchConversionValueHistogramData({\n groupBy,\n params: queryParamsForFetchingData,\n selectedComparison\n })\n ),\n DEFAULT_QUERY_OPTIONS\n )\n\n const isPullingData = isLoading || isFetching || isNull(allFetchedConversionValueHistogramData)\n\n useEffect(() => {\n if (isError) {\n setConversionValueHistogramData([])\n } else {\n setConversionValueHistogramData(allFetchedConversionValueHistogramData)\n }\n }, [allFetchedConversionValueHistogramData, isError, isFetching, isLoading])\n\n const { hasRecentlyReceivedFirstEvents } = onboardingStatus\n\n const validValueRangeOptions = getValidValueRangeOptions(allFetchedConversionValueHistogramData)\n\n const flattenedConversionValueHistogramData = flatten(conversionValueHistogramData)\n\n const hasNoDataToDisplay = !isMocking\n && !isError\n && !isPullingData\n && !hasRecentlyReceivedFirstEvents\n && isArray(flattenedConversionValueHistogramData)\n && isEmpty(flattenedConversionValueHistogramData)\n\n const isAwaitingDataToBeCalculated = !isMocking\n && !isError\n && !isPullingData\n && hasRecentlyReceivedFirstEvents\n && isEmpty(flattenedConversionValueHistogramData)\n\n const handleChangeValueRange = updatedValueRange => {\n setValueRange(updatedValueRange)\n }\n\n const handleChangeComparison = updatedComparison => {\n setSelectedComparison(updatedComparison)\n }\n\n const firstGroupBy = groupBy && groupBy[0]\n\n return (\n
    \n
    \n
    \n \n\n \n
    \n\n {hasNoDataToDisplay && }\n\n {isAwaitingDataToBeCalculated && (\n \n )}\n
    \n\n
    \n \n
    \n\n {isMocking && }\n\n {isError && }\n
    \n )\n}\n\nConversionValueHistogram.propTypes = {\n className: PropTypes.oneOfType([\n PropTypes.array,\n PropTypes.string\n ])\n}\n\nConversionValueHistogram.defaultProps = {\n className: ''\n}\n\nexport default ConversionValueHistogram\n","import React from 'react'\nimport CardHeader from '../../CardHeader'\n\nconst GroupingTitle = () => Conversion Value Distribution\n\nexport default GroupingTitle\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {\n arrayOfSelectableValueRanges,\n arrayOfSelectableComparisonOptions\n} from '../../../utils/customPropTypes'\n\nimport ComparisonSelector from './ComparisonSelector'\nimport ChartTypeButtons from './ChartTypeButtons'\nimport ValueRangeSelector from './ValueRangeSelector'\n\nconst HistogramActions = ({\n comparisonOptions,\n isFetching,\n isBarChart,\n setIsBarChart,\n onChangeComparison,\n onChangeValueRange,\n selectedComparison,\n valueRange,\n valueRangeOptions\n}) => (\n
    \n \n \n \n
    \n)\n\nHistogramActions.propTypes = {\n comparisonOptions: arrayOfSelectableComparisonOptions.isRequired,\n isBarChart: PropTypes.bool,\n isFetching: PropTypes.bool.isRequired,\n onChangeComparison: PropTypes.func.isRequired,\n onChangeValueRange: PropTypes.func.isRequired,\n selectedComparison: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string\n })\n ).isRequired,\n setIsBarChart: PropTypes.func.isRequired,\n valueRange: PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string\n }).isRequired,\n valueRangeOptions: arrayOfSelectableValueRanges.isRequired\n}\n\nHistogramActions.defaultProps = {\n isBarChart: true\n}\n\nexport default HistogramActions\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { components } from 'react-select'\n\nimport { arrayOfSelectableComparisonOptions } from '../../../../utils/customPropTypes'\nimport stylesObj from './styles.module.scss'\nimport { PRIMARY_COLORS } from '../../../../utils/react-select'\nimport { CONVERSION_VALUE_HISTOGRAM_COLORS } from '../../../../utils/charts'\nimport { MAX_SELECTION_COUNT, MIN_SELECTION_COUNT } from './constants'\n\nimport { getComparisonSelectorOptionLabel } from '../../helpers'\n\nimport Dropdown from '../../../Dropdown'\n\nconst customStylesObj = {\n container: styles => ({\n ...styles,\n cursor: 'pointer',\n marginRight: stylesObj.comparisonSelectorMarginRight,\n width: '100%'\n }),\n control: () => ({\n backgroundColor: stylesObj.controlBgColor,\n borderRadius: stylesObj.controlBorderRadius,\n display: 'flex',\n flexGrow: 0,\n flexShrink: 1,\n fontFamily: stylesObj.controlFontFamily,\n fontSize: stylesObj.controlFontSize,\n fontWeight: stylesObj.controlFontWeight,\n lineHeight: stylesObj.controlLineHeight\n }),\n loadingIndicator: styles => ({\n ...styles,\n color: PRIMARY_COLORS.base\n }),\n multiValue: styles => ({\n ...styles,\n backgroundColor: 'none'\n })\n}\n\nconst ComparisonSelector = ({\n onChangeComparison,\n comparisonOptions,\n selectedComparison,\n isLoading\n}) => {\n const multiLabelColorMappingById = selectedComparison.reduce(\n (mapping, { id }, index) => ({\n ...mapping,\n [id]: CONVERSION_VALUE_HISTOGRAM_COLORS[index]\n }),\n {}\n )\n\n // eslint-disable-next-line react/prop-types\n const MultiValueLabel = ({ children, data, ...rest }) => {\n // eslint-disable-next-line react/prop-types\n const { id } = data\n\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n \n \n
    {children}
    \n
    \n )\n }\n\n const customStyles = {\n ...customStylesObj,\n multiValueLabel: (styles, data) => {\n // eslint-disable-next-line react/prop-types\n const { index } = data\n const color = CONVERSION_VALUE_HISTOGRAM_COLORS[index]\n\n return {\n ...styles,\n alignItems: 'center',\n color,\n display: 'flex',\n fontSize: stylesObj.controlFontSize\n }\n },\n multiValueRemove: (styles, data) => {\n // eslint-disable-next-line react/prop-types\n const { index } = data\n const color = CONVERSION_VALUE_HISTOGRAM_COLORS[index]\n\n // eslint-disable-next-line react/prop-types\n const shouldHideRemoveButton = selectedComparison.length < MAX_SELECTION_COUNT\n\n if (shouldHideRemoveButton) {\n return {\n ...styles,\n display: 'none'\n }\n }\n\n return {\n ...styles,\n ':hover': {},\n color\n }\n }\n }\n\n // eslint-disable-next-line react/prop-types\n const isOptionDisabled = () => selectedComparison.length > MIN_SELECTION_COUNT\n\n const getOptionValue = option => option.id\n\n return (\n \n )\n}\n\nComparisonSelector.propTypes = {\n comparisonOptions: arrayOfSelectableComparisonOptions.isRequired,\n isLoading: PropTypes.bool.isRequired,\n onChangeComparison: PropTypes.func.isRequired,\n selectedComparison: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string\n })\n ).isRequired\n}\n\nexport default ComparisonSelector\n","import { Fragment } from 'react'\n\nimport GroupedSummaryTable from '../../../GroupedSummaryTable'\nimport { REPORTS_BY_VALUE } from '../constants'\nimport KPICards from '../KPICards'\nimport ReportsSelector from '../ReportsSelector'\n\nconst CreativesPage = () => (\n \n \n\n \n\n \n \n)\n\nexport default CreativesPage\n","import { getButtonDetailsFromRequirement } from '../../../contexts/OnboardingStatus'\nimport { oneOfOnboardingRequirements } from '../../../utils/customPropTypes'\nimport FontAwesomeIcon from '../../FontAwesomeIcon'\nimport styles from './styles.module.scss'\n\nconst MissingRequirementBtn = ({ missingOnboardingRequirement }) => {\n const { href, icon, iconType, text } = getButtonDetailsFromRequirement(\n missingOnboardingRequirement\n )\n\n const handleClick = () => {\n if (window.amplitudeInstance) {\n window.amplitudeInstance.logEvent(\n 'CLICK_MISSING_ONBOARDING_REQUIREMENT',\n {\n buttonHref: href,\n buttonText: text,\n path: window.location.pathname\n }\n )\n }\n\n return true\n }\n\n return (\n \n )\n}\n\nMissingRequirementBtn.propTypes = {\n missingOnboardingRequirement: oneOfOnboardingRequirements.isRequired\n}\n\nexport default MissingRequirementBtn\n","import arrayToSentence from 'array-to-sentence'\n\nimport { missingRequirementToSentence } from '../../../contexts/OnboardingStatus'\nimport { arrayOfOnboardingRequirements } from '../../../utils/customPropTypes'\n\nimport styles from './styles.module.scss'\n\nconst MissingRequirementsMessage = ({ missingOnboardingRequirements }) => {\n const missingRequirementsSentencesList = missingOnboardingRequirements.map(requirement => (\n missingRequirementToSentence(requirement)\n ))\n\n const missingRequirementsMessage = arrayToSentence(missingRequirementsSentencesList)\n\n return (\n
    \n To see your data here,
    \n add {missingRequirementsMessage}\n
    \n )\n}\n\nMissingRequirementsMessage.propTypes = {\n missingOnboardingRequirements: arrayOfOnboardingRequirements.isRequired\n}\n\nexport default MissingRequirementsMessage\n","import classNames from 'classnames'\nimport { differenceBy, filter, isEmpty, isEqual, noop } from 'lodash'\nimport React, { useEffect, useState } from 'react'\nimport { useLocation } from 'react-router-dom'\nimport { useDeepCompareEffect } from 'use-deep-compare'\n\nimport { saveMetrics } from '../../../api/reporting'\nimport {\n useGroupedSummaryTableSettingsDispatch,\n useGroupedSummaryTableSettingsState\n} from '../../../contexts/GroupedSummaryTableSettings'\nimport { useMetricDefinitionsState } from '../../../contexts/MetricDefinitions'\nimport { getReportPageFromPathname } from '../../../contexts/ReportingFilters'\nimport ClickOutsideAlerter from '../../ClickOutsideAlerter'\nimport ApplyMetricsButton from './ApplyMetricsButton'\nimport Filter from './Filter'\nimport Header from './Header'\nimport {\n buildSelectableMetrics,\n buildSelectedMetrics,\n isMatchedBySearch\n} from './helpers'\nimport ItemList from './ItemList'\nimport styles from './styles.module.scss'\n\nconst ColumnEditorPane = () => {\n const state = useGroupedSummaryTableSettingsState()\n const dispatch = useGroupedSummaryTableSettingsDispatch()\n\n const { isColumnEditorOpen, metricColumnsByReport } = state\n\n const { metricDefinitions } = useMetricDefinitionsState()\n\n const location = useLocation()\n const reportPage = getReportPageFromPathname(location.pathname)\n\n const selectableMetrics = buildSelectableMetrics(metricDefinitions)\n const selectedMetrics = buildSelectedMetrics({\n metricDefinitions,\n selectedMetricKeys: metricColumnsByReport[reportPage]\n })\n\n const [hasSelectedMetricsChanged, setHasSelectedMetricsChanged] =\n useState(false)\n const [searchText, setSearchText] = useState('')\n const [currentSelectableMetrics, setCurrentSelectableMetrics] =\n useState(selectableMetrics)\n const [currentSelectedMetrics, setCurrentSelectedMetrics] =\n useState(selectedMetrics)\n\n useDeepCompareEffect(() => {\n setCurrentSelectedMetrics(selectedMetrics)\n }, [selectedMetrics])\n\n useEffect(() => {\n setSearchText('')\n }, [isColumnEditorOpen])\n\n useDeepCompareEffect(() => {\n if (isEmpty(searchText)) {\n setCurrentSelectableMetrics(selectableMetrics)\n } else {\n const updatedSelectableMetrics = filter(selectableMetrics, metric =>\n isMatchedBySearch({\n metricDefinition: metricDefinitions[metric.id],\n searchText\n })\n )\n\n setCurrentSelectableMetrics(updatedSelectableMetrics)\n }\n }, [searchText, selectableMetrics])\n\n const getAvailableMetrics = () =>\n differenceBy(currentSelectableMetrics, currentSelectedMetrics, 'id')\n\n const handleChangeSearch = event => {\n const { value } = event.target\n\n setSearchText(value)\n }\n\n const handleClickAvailable = metric => {\n setHasSelectedMetricsChanged(true)\n setCurrentSelectedMetrics([...currentSelectedMetrics, metric])\n }\n\n const handleClickSelected = metric => {\n setHasSelectedMetricsChanged(true)\n\n const updatedSelectedMetrics = filter(\n currentSelectedMetrics,\n selectedMetric => !isEqual(selectedMetric, metric)\n )\n\n setCurrentSelectedMetrics(updatedSelectedMetrics)\n }\n\n const currentSelectedMetricIds = currentSelectedMetrics.map(\n metric => metric.id\n )\n\n // TODO: [nafeu, ricky] find a more elegant solution to saving custom metrics into msets [TENJIN-23964]\n const selectedMetricsWithoutCustomMetrics = currentSelectedMetricIds.filter(\n metric => metric[0] !== 'z'\n )\n\n const handleClickApply = () => {\n saveMetrics({\n metrics: selectedMetricsWithoutCustomMetrics,\n report: reportPage\n })\n\n dispatch({\n payload: { metrics: currentSelectedMetricIds, reportPage },\n type: 'APPLY_METRICS'\n })\n }\n\n const handleClickCancel = () => {\n setCurrentSelectedMetrics(selectedMetrics)\n\n dispatch({\n payload: {},\n type: 'CLOSE_COLUMN_EDITOR'\n })\n }\n\n const handleClickClearSearch = () => {\n setSearchText('')\n }\n\n const handleChangeSelectedSortOrder = updatedSelectedMetrics => {\n const originalOrder = selectedMetrics.map(item => item.id).join('')\n const updatedOrder = updatedSelectedMetrics.map(item => item.id).join('')\n const hasOrderChanged = updatedOrder !== originalOrder\n\n if (hasOrderChanged) {\n setHasSelectedMetricsChanged(true)\n }\n\n setCurrentSelectedMetrics(updatedSelectedMetrics)\n }\n\n const className = classNames(styles.groupedSummaryTableMetrics, {\n [styles.visibleGroupedSummaryTableMetrics]: isColumnEditorOpen\n })\n\n const availableMetrics = getAvailableMetrics()\n\n return (\n \n
    \n
    \n
    \n \n \n \n
    \n
    \n \n )\n}\n\nexport default ColumnEditorPane\n","import classNames from 'classnames'\nimport PropTypes from 'prop-types'\n\nimport styles from '../styles.module.scss'\n\nconst ApplyMetricsButton = ({ hasSelectedMetricsChanged, isColumnEditorOpen, onClickApply }) => {\n const className = classNames(styles.innerSaveBtn, {\n [styles.activeInnerSaveBtn]: isColumnEditorOpen\n })\n\n const buttonClass = classNames('btn', 'btn-success', {\n [styles.disabled]: !hasSelectedMetricsChanged\n })\n\n return (\n
    \n \n Apply Metrics\n \n
    \n )\n}\n\nApplyMetricsButton.propTypes = {\n hasSelectedMetricsChanged: PropTypes.bool.isRequired,\n isColumnEditorOpen: PropTypes.bool.isRequired,\n onClickApply: PropTypes.func.isRequired\n}\n\nexport default ApplyMetricsButton\n","import classNames from 'classnames'\nimport PropTypes from 'prop-types'\n\nimport FontAwesomeIcon from '../../../FontAwesomeIcon'\n\nimport styles from '../styles.module.scss'\n\nconst Filter = ({ onChangeSearch, onClearSearch, searchText }) => (\n
    \n
    \n Refine by\n
    \n\n \n\n \n \n \n
    \n)\n\nFilter.propTypes = {\n onChangeSearch: PropTypes.func.isRequired,\n onClearSearch: PropTypes.func.isRequired,\n searchText: PropTypes.string.isRequired\n}\n\nexport default Filter\n","import PropTypes from 'prop-types'\n\nimport FontAwesomeIcon from '../../../FontAwesomeIcon'\n\nimport styles from '../styles.module.scss'\n\nconst Header = ({ onClickCancel }) => (\n
    \n
    Edit Metrics
    \n
    \n \n
    \n
    \n)\n\nHeader.propTypes = {\n onClickCancel: PropTypes.func.isRequired\n}\n\nexport default Header\n","import { isEmpty } from 'lodash'\nimport PropTypes from 'prop-types'\nimport { useMemo, useState } from 'react'\nimport { ReactSortable } from 'react-sortablejs'\n\n// eslint-disable-next-line import/no-cycle\nimport { useMetricDefinitionsState } from '../../../../contexts/MetricDefinitions'\nimport { METRIC_CATEGORY } from '../../../../contexts/MetricDefinitions/constants'\nimport MetricTooltip from '../../../MetricTooltip'\nimport AvailableItem from '../AvailableItem'\nimport CategorySelector from '../CategorySelector'\nimport { sortMetricsAlphabeticallyWithXDay } from '../helpers'\nimport SelectedItem from '../SelectedItem'\nimport styles from '../styles.module.scss'\nimport { isNewMetric } from './helpers'\n\nconst { id: allCategoriesId } = METRIC_CATEGORY.ALL\n\nconst ItemList = ({\n availableMetrics,\n onChangeSelectedSortOrder,\n onClickAvailable,\n onClickSelected,\n selectedMetrics\n}) => {\n const { metricDefinitions, metricsByCategory } = useMetricDefinitionsState()\n\n const [selectedCategory, setSelectedCategory] = useState(allCategoriesId)\n\n const handleClickCategory = category => setSelectedCategory(category)\n\n const availableMetricsFilteredByCategory = useMemo(() => {\n const showAllMetrics =\n isEmpty(selectedCategory) || selectedCategory === allCategoriesId\n\n if (showAllMetrics) {\n return availableMetrics.sort(sortMetricsAlphabeticallyWithXDay)\n }\n\n return availableMetrics\n .filter(({ id: metricKey }) =>\n metricsByCategory[selectedCategory].metrics.includes(metricKey)\n )\n .sort(sortMetricsAlphabeticallyWithXDay)\n }, [availableMetrics, selectedCategory])\n\n /*\n eslint-disable jsx-a11y/click-events-have-key-events,\n jsx-a11y/no-static-element-interactions\n */\n return (\n
    \n
    \n

    Selected Metrics

    \n
    \n \n {selectedMetrics.map(item => (\n \n
    onClickSelected(item)}>\n \n
    \n \n ))}\n \n
    \n
    \n
    \n

    Available Metrics

    \n
    \n \n {availableMetricsFilteredByCategory.map(item => (\n \n
    onClickAvailable(item)}>\n \n
    \n
    \n ))}\n
    \n
    \n
    \n )\n /*\n eslint-enable jsx-a11y/click-events-have-key-events,\n jsx-a11y/no-static-element-interactions\n */\n}\n\nItemList.propTypes = {\n availableMetrics: PropTypes.arrayOf(PropTypes.object).isRequired,\n onChangeSelectedSortOrder: PropTypes.func.isRequired,\n onClickAvailable: PropTypes.func.isRequired,\n onClickSelected: PropTypes.func.isRequired,\n selectedMetrics: PropTypes.arrayOf(PropTypes.object).isRequired\n}\n\nexport default ItemList\n","import PropTypes from 'prop-types'\n\nimport Badge from '../../../Badge'\nimport ArrowIcon from '../ArrowIcon'\nimport styles from '../styles.module.scss'\n\nconst AvailableItem = ({ item, isNew }) => (\n
    \n \n
    \n {item.name}\n {isNew &&
    NEW
    }\n
    \n
    \n)\n\nAvailableItem.propTypes = {\n isNew: PropTypes.bool,\n item: PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired\n }).isRequired\n}\n\nAvailableItem.defaultProps = {\n isNew: false\n}\n\nexport default AvailableItem\n","import classNames from 'classnames'\nimport { keys } from 'lodash'\nimport PropTypes from 'prop-types'\nimport Tooltip from 'rc-tooltip'\nimport { useState } from 'react'\n\n// eslint-disable-next-line import/no-cycle\nimport { METRIC_CATEGORY } from '../../../../contexts/MetricDefinitions/constants'\nimport { sortMetricCategoryIds } from '../../../../contexts/MetricDefinitions/helpers'\nimport Badge from '../../../Badge'\nimport FontAwesomeIcon from '../../../FontAwesomeIcon'\nimport styles from '../styles.module.scss'\nimport { TOOLTIP_MOUSE_ENTER_DELAY } from './constants'\n\nconst CategorySelector = ({\n onClickCategory,\n selectedCategory,\n metricsByCategory\n}) => {\n const [showCategories, setShowCategories] = useState(false)\n\n const handleClickShowCategories = () =>\n setShowCategories(currentShowCategories => !currentShowCategories)\n\n const handleClickCategory = category => {\n onClickCategory(category)\n setShowCategories(false)\n }\n /*\n eslint-disable jsx-a11y/click-events-have-key-events,\n jsx-a11y/no-static-element-interactions\n */\n return (\n \n \n Metric Categories\n {showCategories ? (\n \n ) : (\n \n )}\n \n {showCategories &&\n keys(metricsByCategory)\n .sort(sortMetricCategoryIds)\n .map(category => {\n const { label, tooltip } = METRIC_CATEGORY[category]\n const { count, hasNewMetrics } = metricsByCategory[category]\n\n const isSelected = selectedCategory === category\n\n return (\n {tooltip}\n }\n placement=\"left\"\n trigger=\"hover\"\n >\n handleClickCategory(category)}\n >\n
    \n
    {label}
    \n {hasNewMetrics && new}\n
    \n
    {count}
    \n \n \n )\n })}\n \n )\n}\n/*\n eslint-enable jsx-a11y/click-events-have-key-events,\n jsx-a11y/no-static-element-interactions\n*/\n\nCategorySelector.propTypes = {\n metricsByCategory: PropTypes.shape({\n category: PropTypes.shape({\n count: PropTypes.number,\n metrics: PropTypes.arrayOf(PropTypes.string)\n })\n }).isRequired,\n onClickCategory: PropTypes.func.isRequired,\n selectedCategory: PropTypes.string.isRequired\n}\n\nexport default CategorySelector\n","import classNames from 'classnames'\nimport PropTypes from 'prop-types'\n\nimport ArrowIcon from '../ArrowIcon'\nimport DragIcon from '../DragIcon'\n\nimport styles from '../styles.module.scss'\n\nconst SelectedItem = ({ item }) => {\n const className = classNames(\n styles.innerListItem,\n styles.selectedInnerListItem\n )\n\n return (\n
    \n \n
    \n {item.name}\n
    \n \n
    \n )\n}\n\nSelectedItem.propTypes = {\n item: PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired\n }).isRequired\n}\n\nexport default SelectedItem\n","import classNames from 'classnames'\n\nimport FontAwesomeIcon from '../../../FontAwesomeIcon'\n\nimport styles from '../styles.module.scss'\n\nconst DragIcon = () => {\n const className = classNames(styles.innerListItemIcon, styles.dragIcon)\n\n return (\n
    \n \n
    \n )\n}\n\nexport default DragIcon\n","import { useLocation } from 'react-router-dom'\n\nimport CardHeader from '../../CardHeader'\n\nimport { getQueryParams, useReportingFiltersState } from '../../../contexts/ReportingFilters'\nimport { useCurrentUserState } from '../../../contexts/CurrentUser'\nimport { getGroupNameFromGroupBy } from '../../../utils/helpers'\n\nconst GroupingTitle = () => {\n const reportingFilters = useReportingFiltersState()\n const location = useLocation()\n const { currentUser } = useCurrentUserState()\n const { groupBy } = getQueryParams({ currentUser, location, reportingFilters })\n const groupName = getGroupNameFromGroupBy(groupBy)\n\n return {groupName}\n}\n\nexport default GroupingTitle\n","import PropTypes from 'prop-types'\nimport { useEffect, useMemo, useRef } from 'react'\nimport { useLocation } from 'react-router-dom'\nimport {\n useExpanded,\n useFlexLayout,\n useGlobalFilter,\n useSortBy,\n useTable\n} from 'react-table'\nimport { useSticky } from 'react-table-sticky'\n\nimport {\n useGroupedSummaryTableSettingsDispatch,\n useGroupedSummaryTableSettingsState\n} from '../../../contexts/GroupedSummaryTableSettings'\nimport { useMetricDefinitionsState } from '../../../contexts/MetricDefinitions'\nimport { getReportPageFromPathname } from '../../../contexts/ReportingFilters'\nimport useRefSize from '../../../hooks/useRefSize'\nimport { customGlobalFilter } from '../helpers'\nimport TableInstance from '../TableInstance'\nimport { INITIAL_STATE_SORT_BY, NAME_COLUMN_MODE_EXTENDED } from './constants'\nimport { getColumnsForSelectedMetrics, getDefaultHeaders } from './helpers'\n\nconst Table = ({\n globalFilter,\n hasNoData,\n isAllExpandable,\n isCompactViewMode,\n isPullingData,\n isUsingGroupByForNameHeader,\n onClickRow,\n tableContainerWidth,\n tableData,\n tableRowsLoadingById\n}) => {\n const { metricDefinitions } = useMetricDefinitionsState()\n\n const location = useLocation()\n const reportPage = getReportPageFromPathname(location.pathname)\n\n const {\n rules: drilldownRules,\n metricColumnsByReport,\n isAllExpanded,\n nameColumnMode\n } = useGroupedSummaryTableSettingsState()\n\n const isNameExtended = nameColumnMode === NAME_COLUMN_MODE_EXTENDED\n\n const tableSettingsDispatch = useGroupedSummaryTableSettingsDispatch()\n\n const toggleAllExpanded = () => {\n tableSettingsDispatch({\n payload: {},\n type: 'TOGGLE_ALL_EXPANDED'\n })\n }\n\n const doneExpandingAll = () => {\n tableSettingsDispatch({\n payload: {},\n type: 'DONE_EXPANDING_ALL'\n })\n }\n\n const selectedMetrics = metricColumnsByReport[reportPage]\n\n const tableRef = useRef(null)\n const tableSize = useRefSize(tableRef)\n\n const [columns, data] = useMemo(() => {\n const memoizedColumns = [\n ...getDefaultHeaders({\n drilldownRules,\n isAllExpandable,\n isCompactViewMode,\n isNameExtended,\n isPullingData,\n isUsingGroupByForNameHeader\n }),\n ...getColumnsForSelectedMetrics({\n isCompactViewMode,\n metricDefinitions,\n selectedMetrics,\n tableContainerWidth,\n tableWidth: tableSize.width\n })\n ]\n\n const memoizedData = tableData || []\n\n return [memoizedColumns, memoizedData]\n }, [\n drilldownRules,\n isCompactViewMode,\n isNameExtended,\n metricDefinitions,\n selectedMetrics,\n tableContainerWidth,\n tableData,\n tableSize.width\n ])\n\n const tableInstance = useTable(\n {\n autoResetExpanded: false,\n autoResetGlobalFilter: false,\n autoResetSortBy: false,\n columns,\n data,\n disableMultiSort: true,\n getSubRows: row => row.subRows,\n globalFilter: customGlobalFilter,\n initialState: { sortBy: INITIAL_STATE_SORT_BY }\n },\n /*\n Note: The ordering of react-table hooks is important here\n https://github.com/tannerlinsley/react-table/issues/1493\n */\n useFlexLayout,\n useGlobalFilter,\n useSortBy,\n useExpanded,\n useSticky\n )\n\n useEffect(() => {\n if (isPullingData) {\n tableInstance.toggleAllRowsExpanded(false)\n }\n }, [isPullingData, tableInstance])\n\n return (\n \n )\n}\n\nTable.propTypes = {\n globalFilter: PropTypes.string.isRequired,\n hasNoData: PropTypes.bool.isRequired,\n isAllExpandable: PropTypes.bool,\n isCompactViewMode: PropTypes.bool,\n isLoading: PropTypes.bool,\n isPullingData: PropTypes.bool,\n isUsingGroupByForNameHeader: PropTypes.bool,\n onClickRow: PropTypes.func.isRequired,\n tableContainerWidth: PropTypes.number,\n tableData: PropTypes.arrayOf(PropTypes.object),\n // eslint-disable-next-line react/forbid-prop-types\n tableRowsLoadingById: PropTypes.object.isRequired\n}\n\nTable.defaultProps = {\n isAllExpandable: false,\n isCompactViewMode: false,\n isLoading: false,\n isPullingData: false,\n isUsingGroupByForNameHeader: false,\n tableContainerWidth: null,\n tableData: []\n}\n\nexport default Table\n","import { forwardRef, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport { isEmpty, map } from 'lodash'\n\nimport Table from '../../Table'\nimport TableData from '../../Table/Data'\nimport TableFakeRows from '../../Table/FakeRows'\nimport TableHeader from '../../Table/Header'\nimport TableRow from '../../Table/Row'\nimport TableSkeletonRows from '../../Table/SkeletonRows'\nimport TableNoDataRow from '../../Table/NoDataRow'\n\nimport { getTopLevelRowsById } from '../../Table/helpers'\n\nimport styles from './styles.module.scss'\n\n/* eslint-disable react/prop-types */\nconst TableInstance = forwardRef((props, ref) => {\n/* eslint-enable react/prop-types */\n const {\n getTableBodyProps,\n getTableProps,\n globalFilter,\n hasNoData,\n headerGroups,\n isAllExpandable,\n isAllExpanded,\n doneExpandingAll,\n isCompactViewMode,\n isPullingData,\n onClickRow,\n prepareRow,\n rows,\n setGlobalFilter,\n state: { expanded },\n tableRowsLoadingById,\n toggleAllExpanded\n } = props\n\n useEffect(() => {\n setGlobalFilter(globalFilter)\n }, [globalFilter])\n\n const hasNoRowsOfData = isEmpty(rows)\n\n const shouldShowTableData = !(isPullingData || hasNoRowsOfData || hasNoData)\n\n const hasNoSearchDataToDisplay = !isPullingData\n && !hasNoData\n && hasNoRowsOfData\n && globalFilter.length > 0\n\n const topLevelRowsById = getTopLevelRowsById(rows)\n\n /* eslint-disable react/jsx-props-no-spreading */\n return (\n
    \n
    \n {\n // eslint-disable-next-line react/prop-types\n headerGroups.map(headerGroup => (\n
    \n {headerGroup.headers.map(column => {\n const isNameColumn = column.id === 'name'\n const tableHeaderClassName = classNames(styles.header, {\n [styles.nameHeader]: isNameColumn,\n [styles.compactHeader]: isCompactViewMode,\n 'u-flexJustifyEnd': isCompactViewMode && !isNameColumn\n })\n\n const hideReactTableTooltips = { title: undefined }\n\n const sortByProps = column.getSortByToggleProps({ ...hideReactTableTooltips })\n const title = isNameColumn ? null : sortByProps.title\n\n const onClick = async event => {\n const isExpander = event.target.className.includes('expandIcon')\n\n if (isExpander) {\n toggleAllExpanded()\n\n const invokeRowClick = async row => {\n const shouldToggleRow = (isAllExpanded && expanded[row.id])\n || (!isAllExpanded && !expanded[row.id])\n\n if (shouldToggleRow) {\n const toggleRowExpandedProps = row.getToggleRowExpandedProps()\n\n await onClickRow(row)\n toggleRowExpandedProps.onClick(event)\n }\n }\n\n const allInvokedRowClicks = map(rows, row => invokeRowClick(row))\n\n await Promise.all(allInvokedRowClicks)\n\n doneExpandingAll()\n } else {\n sortByProps.onClick(event)\n }\n }\n\n return (\n \n {column.render('Header')}\n \n )\n })}\n
    \n ))\n }\n
    \n\n
    \n {isPullingData && (\n
    \n \n
    \n )}\n\n {shouldShowTableData && (\n // eslint-disable-next-line react/prop-types\n rows.map(row => {\n prepareRow(row)\n\n const isExpanded = expanded[row.id]\n const isLoading = tableRowsLoadingById[row.id]\n\n const toggleRowExpandedProps = row.getToggleRowExpandedProps()\n\n const onClick = async event => {\n if (!isLoading) {\n if (!isExpanded) {\n await onClickRow(row)\n setGlobalFilter(globalFilter)\n }\n toggleRowExpandedProps.onClick(event)\n }\n }\n\n return (\n \n {row.cells.map((cell, index) => {\n const isFirstColumn = index === 0\n\n const isNameColumn = cell.column.id === 'name'\n\n const tdClassName = classNames(\n {\n [styles.nameCell]: isNameColumn,\n [styles.depthOne]: isFirstColumn && row.depth === 1,\n [styles.depthTwo]: isFirstColumn && row.depth === 2,\n [styles.depthThree]: isFirstColumn && row.depth === 3,\n [styles.depthFour]: isFirstColumn && row.depth === 4,\n [styles.paddingForSortIcon]: !isNameColumn\n },\n styles.cell\n )\n\n return (\n \n {cell.render('Cell', {\n isExpanded,\n isLoading\n })}\n \n )\n })}\n \n )\n })\n )}\n\n {hasNoData && (\n
    \n \n
    \n )}\n\n {hasNoSearchDataToDisplay && (\n \n )}\n
    \n
    \n )\n /* eslint-enable react/jsx-props-no-spreading */\n})\n\nTableInstance.propTypes = {\n globalFilter: PropTypes.string.isRequired,\n hasNoData: PropTypes.bool.isRequired,\n isCompactViewMode: PropTypes.bool,\n isPullingData: PropTypes.bool,\n setGlobalFilter: PropTypes.func.isRequired,\n tableRowsLoadingById: PropTypes.object // eslint-disable-line react/forbid-prop-types\n}\n\nTableInstance.defaultProps = {\n isCompactViewMode: false,\n isPullingData: false,\n tableRowsLoadingById: {}\n}\n\nexport default TableInstance\n","import { forwardRef, Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport Tooltip from 'rc-tooltip'\n\nimport FontAwesomeIcon from '../../FontAwesomeIcon'\n\nimport { getLinkDetailsByTableRow } from './helpers'\nimport { LINKABLE_ENTITY_TYPES } from './constants'\n\nimport styles from './styles.module.scss'\n\nconst DataRowExternalLink = forwardRef((props, ref) => {\n const {\n className,\n fieldType,\n row\n } = props\n\n const isLinkableFieldType = LINKABLE_ENTITY_TYPES.includes(fieldType)\n\n const {\n href,\n title\n } = isLinkableFieldType ? getLinkDetailsByTableRow({ fieldType, row }) : {}\n\n const handleClick = ev => {\n ev.stopPropagation()\n\n return true\n }\n\n const shouldRenderLinkPlaceholder = !href && isLinkableFieldType\n\n return (\n \n {href && (\n {title}
    }\n placement=\"top\"\n >\n \n \n \n \n )}\n\n {shouldRenderLinkPlaceholder && (\n \n )}\n \n )\n})\n\nDataRowExternalLink.propTypes = {\n fieldType: PropTypes.string.isRequired,\n row: PropTypes.object.isRequired // eslint-disable-line react/forbid-prop-types\n}\n\nexport default DataRowExternalLink\n","import PropTypes from 'prop-types'\nimport { useLocation } from 'react-router-dom'\n\nimport {\n getReportPageFromPathname,\n isCustomReportPage\n} from '../../../contexts/ReportingFilters'\nimport DownloadCSVButtonClient from '../../DownloadCSVButtonClient'\nimport EditColumnsButton from './EditColumnsButton'\nimport GlobalFilter from './GlobalFilter'\nimport TableViewModeButtons from './TableViewModeButtons'\nimport ToggleNameExtendedButton from './ToggleNameExtendedButton'\n\nconst TableActions = ({\n globalFilter,\n isCompactViewMode,\n isNameExtended,\n isFilterDisabled,\n onTableViewModeClick,\n onToggleNameExtended,\n setGlobalFilter,\n // eslint-disable-next-line react/prop-types\n tableData\n}) => {\n const location = useLocation()\n const reportPage = getReportPageFromPathname(location.pathname)\n\n const canShowCSVDownloadButton = !isCustomReportPage(reportPage)\n\n return (\n
    \n {window.gon.feature_flags.includes('name_column_extender') && (\n \n )}\n\n \n\n \n\n \n\n {canShowCSVDownloadButton && }\n
    \n )\n}\n\nTableActions.propTypes = {\n globalFilter: PropTypes.string.isRequired,\n isCompactViewMode: PropTypes.bool.isRequired,\n isFilterDisabled: PropTypes.bool.isRequired,\n isNameExtended: PropTypes.bool.isRequired,\n onTableViewModeClick: PropTypes.func.isRequired,\n onToggleNameExtended: PropTypes.func.isRequired,\n setGlobalFilter: PropTypes.func.isRequired\n}\n\nexport default TableActions\n","import Tooltip from 'rc-tooltip'\nimport classNames from 'classnames'\nimport { CSVLink } from 'react-csv'\nimport PropTypes from 'prop-types'\nimport { useLocation } from 'react-router-dom'\n\nimport {\n useReportingFiltersState,\n getReportPageFromPathname,\n getGroupByFromQuery,\n getUrlSearchParams,\n getStartDateFromQuery,\n getEndDateFromQuery,\n isDataExporterPage\n} from '../../contexts/ReportingFilters'\n\nimport { useMetricDefinitionsState } from '../../contexts/MetricDefinitions'\nimport { useCurrentUserState } from '../../contexts/CurrentUser'\n\nimport FontAwesomeIcon from '../FontAwesomeIcon'\n\nimport { buildCSVData, getCSVHeaders, getCSVFilename } from './helpers'\nimport { TOOLTIP_MOUSE_ENTER_DELAY } from '../../utils/constants'\n\nimport { arrayOfTableData } from '../../utils/customPropTypes'\n\nconst DownloadCSVButtonClient = ({ data }) => {\n const { metricDefinitions } = useMetricDefinitionsState()\n const { selectedApps, apps } = useReportingFiltersState()\n const { currentUser } = useCurrentUserState()\n\n const date = new Date()\n const location = useLocation()\n const query = getUrlSearchParams(location.search)\n const reportPage = getReportPageFromPathname(location.pathname)\n\n const startDate = getStartDateFromQuery({ currentUser, date, query })\n const endDate = getEndDateFromQuery({ currentUser, date, query })\n const groupBy = getGroupByFromQuery({ query, reportPage })\n\n const isDataExporter = isDataExporterPage(location)\n\n const csvData = buildCSVData({\n apps,\n data,\n groupBy,\n isDataExporter,\n metricDefinitions,\n reportPage,\n selectedApps\n })\n\n const headers = getCSVHeaders(csvData)\n const filename = getCSVFilename({ endDate, groupBy, startDate })\n\n return (\n
    \n Download CSV}\n placement=\"top\"\n >\n \n Download CSV\n \n \n
    \n )\n}\n\nDownloadCSVButtonClient.propTypes = {\n data: arrayOfTableData\n}\n\nDownloadCSVButtonClient.defaultProps = {\n data: []\n}\n\nexport default DownloadCSVButtonClient\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport FontAwesomeIcon from '../../../FontAwesomeIcon'\nimport {\n useGroupedSummaryTableSettingsDispatch\n} from '../../../../contexts/GroupedSummaryTableSettings'\n\nconst EditColumnsButton = ({ className }) => {\n const dispatch = useGroupedSummaryTableSettingsDispatch()\n\n const handleClickEditColumns = () => {\n dispatch({\n payload: {},\n type: 'OPEN_COLUMN_EDITOR'\n })\n }\n\n return (\n
    \n \n Edit Metrics\n \n
    \n )\n}\n\nEditColumnsButton.propTypes = {\n className: PropTypes.string\n}\n\nEditColumnsButton.defaultProps = {\n className: null\n}\n\nexport default EditColumnsButton\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { useAsyncDebounce } from 'react-table'\nimport classNames from 'classnames'\n\nimport FontAwesomeIcon from '../../../FontAwesomeIcon'\nimport SearchInput from '../../../SearchInputV2'\n\nimport { GLOBAL_FILTER_DEBOUNCE_MS } from '../../constants'\n\nimport styles from './styles.module.scss'\n\nconst GlobalFilter = ({\n globalFilter,\n isDisabled,\n setGlobalFilter\n}) => {\n const [searchText, setSearchText] = useState(globalFilter)\n\n const onChange = useAsyncDebounce(value => {\n setGlobalFilter(value)\n }, GLOBAL_FILTER_DEBOUNCE_MS)\n\n return (\n
    \n
    \n
    \n
    \n
    \n \n
    \n\n \n
    \n
    \n
    \n
    \n )\n}\n\nGlobalFilter.propTypes = {\n globalFilter: PropTypes.string.isRequired,\n isDisabled: PropTypes.bool.isRequired,\n setGlobalFilter: PropTypes.func.isRequired\n}\n\nexport default GlobalFilter\n","import PropTypes from 'prop-types'\nimport Tooltip from 'rc-tooltip'\nimport classNames from 'classnames'\n\nimport FontAwesomeIcon from '../../../FontAwesomeIcon'\n\nimport { DEFAULT_BTN_CLASS_NAME } from './constants'\n\nconst TableViewModeButtons = ({ className, isCompactViewMode, onClick }) => {\n const compressBtnClassName = classNames(DEFAULT_BTN_CLASS_NAME, {\n active: isCompactViewMode\n })\n\n const expandBtnClassName = classNames(DEFAULT_BTN_CLASS_NAME, {\n active: !isCompactViewMode\n })\n\n return (\n
    \n Compact View}\n placement=\"top\"\n >\n onClick(true)}\n type=\"button\"\n >\n \n \n \n\n Default View}\n placement=\"top\"\n >\n onClick(false)}\n type=\"button\"\n >\n \n \n \n
    \n )\n}\n\nTableViewModeButtons.propTypes = {\n className: PropTypes.string,\n isCompactViewMode: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired\n}\n\nTableViewModeButtons.defaultProps = {\n className: null\n}\n\nexport default TableViewModeButtons\n","import classNames from 'classnames'\nimport PropTypes from 'prop-types'\nimport Tooltip from 'rc-tooltip'\n\nimport FontAwesomeIcon from '../../../FontAwesomeIcon'\n\n/* eslint-disable react/prop-types,\n react/destructuring-assignment,\n jsx-a11y/click-events-have-key-events,\n jsx-a11y/no-static-element-interactions */\nconst ToggleNameExtendedButton = ({ className, isNameExtended, onClick }) => (\n \n \n {isNameExtended ? 'Shorten Name Column' : 'Extend Name Column'}\n
    \n }\n placement=\"top\"\n >\n
    \n \n
    \n \n \n)\n/* eslint-enable react/prop-types,\n react/destructuring-assignment,\n jsx-a11y/click-events-have-key-events,\n jsx-a11y/no-static-element-interactions */\n\nToggleNameExtendedButton.propTypes = {\n className: PropTypes.string,\n isNameExtended: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired\n}\n\nToggleNameExtendedButton.defaultProps = {\n className: null\n}\n\nexport default ToggleNameExtendedButton\n","import { useCallback } from 'react'\nimport PropTypes from 'prop-types'\nimport { Link, useLocation } from 'react-router-dom'\nimport classNames from 'classnames'\nimport Skeleton from 'react-loading-skeleton'\nimport { isEmpty, noop } from 'lodash'\n\nimport AwaitingDataOverlay from '../../../AwaitingDataOverlay'\nimport CardHeader from '../../../CardHeader'\nimport Chart from './Chart'\nimport ChartFailed from '../../../ChartFailed'\nimport NoDataOverlay from '../../../NoDataOverlay'\nimport OnboardingActionOverlay from '../../../OnboardingActionOverlay'\nimport ReportingDataMetricValueDisplay from '../../../ReportingDataMetricValueDisplay'\n\nimport { useMetricDefinitionsDispatch } from '../../../../contexts/MetricDefinitions'\nimport { useOnboardingStatusState } from '../../../../contexts/OnboardingStatus'\nimport { isBlank, stripTrailingSlash } from '../../../../utils/helpers'\nimport {\n metricDefinitionObject,\n userAcquisitionReportObject\n} from '../../../../utils/customPropTypes'\n\nimport styles from './styles.module.scss'\n\nconst KPICard = ({\n groupedStatsData, index, isError, isFetchingGroupedStatsData, isFetchingSummaryData, isMocking,\n metricDefinition, onReloadClick, report, value\n}) => {\n const location = useLocation()\n\n const {\n displayName, valueType, calculatedAsLabel\n } = metricDefinition\n\n const renderKPIData = useCallback(() => {\n const valueClassName = classNames(styles.kpiDataValue, {\n [styles.valueSkeleton]: isFetchingSummaryData\n })\n\n const valueIconClassName = classNames({ [styles.kpiDataNoValue]: isBlank(value) })\n\n return (\n
    \n \n {displayName}\n \n\n
    \n {isFetchingSummaryData ? (\n \n ) : (\n \n )}\n\n
    \n {calculatedAsLabel}\n
    \n
    \n
    \n )\n }, [calculatedAsLabel, displayName, isFetchingSummaryData, value, valueType])\n\n const isCardOnTheLeft = index % 2 === 0\n const isCardOnTheRight = index % 2 === 1\n\n const className = classNames(styles.card, {\n [styles.leftCard]: isCardOnTheLeft,\n [styles.rightCard]: isCardOnTheRight\n })\n\n const metricDefinitionsDispatch = useMetricDefinitionsDispatch()\n\n const onClickLink = () => {\n metricDefinitionsDispatch({ payload: { reportPage: report.value }, type: 'CHANGE_REPORT_PAGE' })\n }\n\n const { hasRecentlyReceivedFirstEvents } = useOnboardingStatusState()\n\n const hasNoGroupedStatsData = !isMocking\n && !isError\n && !isFetchingGroupedStatsData\n && !hasRecentlyReceivedFirstEvents\n && isEmpty(groupedStatsData)\n\n const hasFailedLoadingData = !isMocking && isError\n\n const isAwaitingDataToBeCalculated = !isMocking\n && !isError\n && !isFetchingGroupedStatsData\n && hasRecentlyReceivedFirstEvents\n && isEmpty(groupedStatsData)\n\n return (\n
    \n \n
    \n {renderKPIData()}\n\n \n
    \n \n\n {isMocking && }\n {hasFailedLoadingData && }\n {hasNoGroupedStatsData && }\n {isAwaitingDataToBeCalculated && (\n \n )}\n
    \n )\n}\n\nKPICard.propTypes = {\n groupedStatsData: PropTypes.arrayOf(PropTypes.object).isRequired,\n index: PropTypes.number.isRequired,\n isError: PropTypes.bool.isRequired,\n isFetchingGroupedStatsData: PropTypes.bool.isRequired,\n isFetchingSummaryData: PropTypes.bool.isRequired,\n isMocking: PropTypes.bool.isRequired,\n metricDefinition: metricDefinitionObject.isRequired,\n onReloadClick: PropTypes.func.isRequired,\n report: userAcquisitionReportObject.isRequired,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n}\n\nKPICard.defaultProps = {\n value: null\n}\n\nexport default KPICard\n","import { useMemo } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n Chart, HighchartsChart, HighchartsProvider, Tooltip, XAxis, YAxis\n} from 'react-jsx-highcharts'\nimport { renderToString } from 'react-dom/server'\nimport Highcharts from 'highcharts'\nimport { useLocation } from 'react-router-dom'\nimport { useDeepCompareMemo } from 'use-deep-compare'\nimport { cloneDeep } from 'lodash'\n\nimport ChartSkeleton from '../../../../KPITabs/Chart/skeleton'\nimport TooltipPoint from '../../../../TooltipPoint'\nimport {\n arrayOfHighchartsSeriesData,\n metricDefinitionObject\n} from '../../../../../utils/customPropTypes'\nimport { getQueryParams, useReportingFiltersState } from '../../../../../contexts/ReportingFilters'\nimport { useCurrentUserState } from '../../../../../contexts/CurrentUser'\nimport useHighchartsReflowEffect from '../../../../../hooks/useHighchartsReflowEffect'\n\nimport { buildSeries, getXAxisMinMax } from './helpers'\nimport { CHART_SKELETON_HEIGHT, PLOT_OPTIONS } from './constants'\n\nconst KPICardChart = ({ data, isFetching, metricDefinition }) => {\n if (isFetching) {\n return \n }\n\n const {\n components: { kpiCard: { chartType } }, valueType\n } = metricDefinition\n\n const reportingFilters = useReportingFiltersState()\n\n const { countries, isSidebarCollapsed } = reportingFilters\n\n useHighchartsReflowEffect([isSidebarCollapsed])\n\n const location = useLocation()\n\n const { currentUser } = useCurrentUserState()\n\n const queryParams = getQueryParams({ currentUser, location, reportingFilters })\n\n const { endDate, groupBy, startDate } = queryParams\n\n const series = useDeepCompareMemo(() => (\n buildSeries({ chartType, data, metricDefinitionKey: metricDefinition.key })\n ), [chartType, data, metricDefinition.key])\n\n const pointFormatter = useMemo(() => function formatter() {\n return renderToString(\n \n )\n }, [groupBy, valueType])\n\n const xAxis = useMemo(() => {\n const {\n max,\n min\n } = getXAxisMinMax({ endDate, startDate })\n\n return (\n \n )\n }, [endDate, startDate])\n\n const plotOptions = cloneDeep(PLOT_OPTIONS)\n\n if (series.length > 1) {\n plotOptions.area.stacking = 'normal'\n }\n\n return (\n \n \n \n\n {xAxis}\n\n \n {series}\n \n\n {point.key}\"\n pointFormatter={pointFormatter}\n shadow={false}\n shared\n useHTML\n xDateFormat=\"%b %d, %Y\"\n />\n \n \n )\n}\n\nKPICardChart.propTypes = {\n data: arrayOfHighchartsSeriesData,\n isFetching: PropTypes.bool.isRequired,\n metricDefinition: metricDefinitionObject.isRequired\n}\n\nKPICardChart.defaultProps = {\n data: []\n}\n\nexport default KPICardChart\n","import { useLocation } from 'react-router-dom'\nimport { snakeCase } from 'snake-case'\nimport Tooltip from 'rc-tooltip'\nimport classNames from 'classnames'\nimport PropTypes from 'prop-types'\n\nimport {\n buildQueryParams, getReportPageFromPathname, isPublisherPage, isSkAdNetworkPage,\n useReportingFiltersState\n} from '../../contexts/ReportingFilters'\n\nimport {\n useGroupedSummaryTableSettingsState\n} from '../../contexts/GroupedSummaryTableSettings'\n\nimport { useCurrentUserState } from '../../contexts/CurrentUser'\nimport FontAwesomeIcon from '../FontAwesomeIcon'\nimport { deepSnakeKeys } from '../../utils/helpers'\n\nimport { getQueryURLForDataExporterV1 } from './helpers'\n\nimport styles from './styles.module.scss'\n\nconst DataExporterButton = ({ className }) => {\n const location = useLocation()\n const reportPage = getReportPageFromPathname(location.pathname)\n const { metricColumnsByReport } = useGroupedSummaryTableSettingsState()\n const { currentUser } = useCurrentUserState()\n const reportingFilters = useReportingFiltersState()\n\n const params = {\n ...deepSnakeKeys(buildQueryParams({ currentUser, location, reportingFilters })),\n granularity: 'totals-daily',\n metrics: metricColumnsByReport[reportPage].map(\n metric => snakeCase(metric)\n )\n }\n\n if (isPublisherPage(reportPage)) {\n params.report_type = 'ad_revenue'\n } else if (isSkAdNetworkPage(reportPage)) {\n params.report_type = 'sk_ad_network_report'\n\n delete params.granularity\n }\n\n const href = getQueryURLForDataExporterV1({ location, params })\n\n return (\n
    \n Go To Data Exporter}\n placement=\"top\"\n >\n \n Data Exporter\n \n \n
    \n )\n}\n\nDataExporterButton.propTypes = {\n className: PropTypes.string\n}\n\nDataExporterButton.defaultProps = {\n className: null\n}\n\nexport default DataExporterButton\n","import ReportsSelector from '../../ReportsSelector'\nimport { REPORTS_BY_VALUE } from '../../constants'\n\nconst NoCustomEventsPage = () => (\n
    \n \n\n

    You have no custom events.

    \n

    \n Install the Tenjin SDK to view additional reports regarding in-app purchases\n and customized user behavior events.\n

    \n

    \n \n Install the SDK\n \n

    \n
    \n)\n\nexport default NoCustomEventsPage\n","import { useCallback, useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport Select from 'react-select'\nimport { useHistory, useLocation } from 'react-router-dom'\nimport { debounce } from 'lodash'\n\nimport {\n getDefaultValue, getUrlWithCustomEventName, handleGroupLabelFormat\n} from './helpers'\nimport { PRIMARY_COLORS } from '../../../../../utils/react-select'\nimport { arrayOfSelectableCustomEvents } from '../../../../../utils/customPropTypes'\n\nimport { CUSTOM_EVENTS_SEARCH_DEBOUNCE_MS } from './constants'\n\nimport styles from './styles.module.scss'\n\nconst customStyles = {\n menu: provided => ({\n ...provided,\n zIndex: styles.menuZIndex\n })\n}\n\nconst CustomEventsSelector = ({\n customEvents,\n currentCustomEventName,\n onMenuScrollToBottom,\n onChangeSearchInput\n}) => {\n const [activeCustomEventSearch, setActiveCustomEventSearch] = useState('')\n\n useEffect(() => {\n onChangeSearchInput(activeCustomEventSearch)\n }, [activeCustomEventSearch])\n\n const history = useHistory()\n const location = useLocation()\n\n const handleChange = newCustomEvent => {\n if (newCustomEvent.value !== currentCustomEventName) {\n history.push(getUrlWithCustomEventName({ customEventName: newCustomEvent.value, location }))\n }\n }\n\n const handleInputChange = useCallback(debounce(newInputValue => {\n setActiveCustomEventSearch(newInputValue)\n }, CUSTOM_EVENTS_SEARCH_DEBOUNCE_MS), [])\n\n const filterOption = ({ data, label: labelProp, value }, searchStrProp) => {\n const label = labelProp.toLocaleLowerCase()\n const searchStr = searchStrProp?.toLocaleLowerCase()\n\n if (label.includes(searchStr) || value.includes(searchStr)) return true\n\n const currentGroup = customEvents.find(group => group.label.appId === data.appId)\n\n if (currentGroup.label.name.toLocaleLowerCase().includes(searchStr)) return true\n\n return false\n }\n\n return (\n
    \n
    Active In-App Event
    \n handleInputChange(newInputValue)}\n options={customEvents}\n styles={customStyles}\n theme={theme => ({\n ...theme,\n colors: {\n ...theme.colors,\n primary: PRIMARY_COLORS.base,\n primary25: PRIMARY_COLORS['25'],\n primary50: PRIMARY_COLORS['50'],\n primary75: PRIMARY_COLORS['75']\n }\n })}\n />\n
    \n )\n}\n\nCustomEventsSelector.propTypes = {\n currentCustomEventName: PropTypes.string.isRequired,\n customEvents: arrayOfSelectableCustomEvents,\n onChangeSearchInput: PropTypes.func.isRequired,\n onMenuScrollToBottom: PropTypes.func.isRequired\n}\n\nCustomEventsSelector.defaultProps = {\n customEvents: []\n}\n\nexport default CustomEventsSelector\n","import KPITabsWrapper from '../../../../../KPITabs/wrapper'\n\nimport { SUMMARY_BLOCKS, TABS } from './constants'\n\nconst Purchasers = () => (\n \n)\n\nexport default Purchasers\n","import { map } from 'lodash'\nimport PropTypes from 'prop-types'\nimport { useEffect } from 'react'\nimport { useLocation } from 'react-router-dom'\n\nimport { useCurrentUserState } from '../../contexts/CurrentUser'\nimport { useFeatureFlagsState } from '../../contexts/FeatureFlags'\nimport {\n groupMetricDefinitonsByOnboardingStatus,\n useOnboardingStatusState\n} from '../../contexts/OnboardingStatus'\nimport { useReportingFiltersState } from '../../contexts/ReportingFilters'\nimport {\n kpiTabGroupedStatsMetricDefinitionObject,\n kpiTabSummaryMetricDefinitionObject\n} from '../../utils/customPropTypes'\nimport {\n buildMockDataForGroupedStats,\n buildMockDataForSummary,\n performQueriesFor,\n useDataFromGroupedQueries,\n useDataFromSummaryQueries\n} from './helpers'\nimport Presenter from './presentation'\n\nconst KPITabs = ({\n groupedStatsMetricDefinitions,\n summaryMetricDefinitions\n}) => {\n const location = useLocation()\n\n const source = new URLSearchParams(location.search).get('source')\n\n const onboardingStatus = useOnboardingStatusState()\n const { currentUser } = useCurrentUserState()\n const reportingFilters = useReportingFiltersState()\n const { featureFlags } = useFeatureFlagsState()\n\n const {\n mockableMetricDefinitions: mockableGroupedStatsMetricDefinitions,\n queryableMetricDefinitions: queryableGroupedStatsMetricDefinitions\n } = groupMetricDefinitonsByOnboardingStatus({\n metricDefinitions: groupedStatsMetricDefinitions,\n onboardingStatus\n })\n\n const {\n mockableMetricDefinitions: mockableSummaryMetricDefinitions,\n queryableMetricDefinitions: queryableSummaryMetricDefinitions\n } = groupMetricDefinitonsByOnboardingStatus({\n metricDefinitions: summaryMetricDefinitions,\n onboardingStatus\n })\n\n const groupedQueriesResult = performQueriesFor({\n currentUser,\n featureFlags,\n location,\n metricDefinitions: queryableGroupedStatsMetricDefinitions,\n reportingFilters\n })\n\n const groupedStatsDataByMetric = {\n ...useDataFromGroupedQueries(groupedQueriesResult),\n ...buildMockDataForGroupedStats(mockableGroupedStatsMetricDefinitions)\n }\n\n const summaryQueriesResult = performQueriesFor({\n currentUser,\n featureFlags,\n location,\n metricDefinitions: queryableSummaryMetricDefinitions,\n reportingFilters\n })\n\n const summaryDataByMetric = {\n ...useDataFromSummaryQueries(summaryQueriesResult),\n ...buildMockDataForSummary(mockableSummaryMetricDefinitions)\n }\n\n const isError = groupedQueriesResult.isError || summaryQueriesResult.isError\n\n const refetchData = () => {\n groupedQueriesResult.queries.forEach(query => query.refetch())\n summaryQueriesResult.queries.forEach(query => query.refetch())\n }\n\n const onReloadClick = () => refetchData()\n\n useEffect(refetchData, [source])\n\n return (\n \n )\n}\n\nKPITabs.propTypes = {\n groupedStatsMetricDefinitions: PropTypes.arrayOf(\n kpiTabGroupedStatsMetricDefinitionObject\n ).isRequired,\n summaryMetricDefinitions: PropTypes.arrayOf(\n kpiTabSummaryMetricDefinitionObject\n ).isRequired\n}\n\nexport default KPITabs\n","import { useMemo, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { renderToString } from 'react-dom/server'\nimport {\n Chart, HighchartsChart, HighchartsProvider, Tooltip, YAxis\n} from 'react-jsx-highcharts'\nimport Highcharts from 'highcharts'\nimport { useLocation } from 'react-router-dom'\nimport { useDeepCompareMemo } from 'use-deep-compare'\nimport { merge } from 'lodash'\n\nimport ChartSkeleton from './skeleton'\nimport TooltipPoint from '../../TooltipPoint'\nimport XDaySelector from './XDaySelector'\n\nimport { kpiTabGroupedStatsMetricDefinitionObject } from '../../../utils/customPropTypes'\nimport { getQueryParams, useReportingFiltersState } from '../../../contexts/ReportingFilters'\nimport { useCurrentUserState } from '../../../contexts/CurrentUser'\nimport useHighchartsReflowEffect from '../../../hooks/useHighchartsReflowEffect'\n\nimport { buildSeries, buildXAxis } from './helpers'\nimport { PLOT_OPTIONS, X_DAY_RANGES } from './constants'\n\nimport styles from './styles.module.scss'\n\nconst KPITabsChart = (\n {\n activeMetricDefinition,\n data,\n isFetching,\n visibleSeriesIds\n }\n) => {\n if (isFetching) {\n return \n }\n\n const {\n components: {\n kpiTabChart: {\n minY, minYRange, xAxisType, yAxis: yAxisLabel\n }\n },\n valueType\n } = activeMetricDefinition\n\n const reportingFilters = useReportingFiltersState()\n\n const { countries, isSidebarCollapsed } = reportingFilters\n\n useHighchartsReflowEffect([isSidebarCollapsed])\n\n const location = useLocation()\n\n const { currentUser } = useCurrentUserState()\n\n const queryParams = getQueryParams({ currentUser, location, reportingFilters })\n\n const { endDate, groupBy, startDate } = queryParams\n\n const isDisplayingXDayData = xAxisType === 'xday'\n\n const [xDayRange, setXDayRange] = useState(isDisplayingXDayData ? X_DAY_RANGES[0].value : null)\n\n const series = useDeepCompareMemo(() => (\n buildSeries({ activeMetricDefinition, data, visibleSeriesIds })\n ), [activeMetricDefinition, data, visibleSeriesIds])\n\n const pointFormatter = useMemo(() => function formatter() {\n return renderToString(\n \n )\n }, [groupBy, valueType])\n\n const xAxis = useMemo(() => (\n buildXAxis({\n endDate, isXDay: xAxisType === 'xday', startDate, xDayRange\n })\n ), [endDate, startDate, xAxisType, xDayRange])\n\n const headerFormat = useMemo(() => (\n `\n {point.key}${xAxisType === 'xday' ? '-Day' : ''}\n `\n ), [xAxisType])\n\n const plotBands = useMemo(() => {\n if (minY && minY < 0) {\n return [\n {\n color: 'rgba(255, 0, 0, 0.1)',\n from: -Infinity,\n to: 0\n },\n {\n color: 'rgba(0, 255, 0, 0.1)',\n from: 0,\n to: Infinity\n }\n ]\n }\n\n return []\n }, [minY])\n\n return (\n
    \n {isDisplayingXDayData && (\n setXDayRange(newXDayRange)}\n />\n )}\n\n \n \n \n\n {xAxis}\n\n \n {yAxisLabel}\n\n {series}\n \n\n \n \n \n
    \n )\n}\n\nKPITabsChart.propTypes = {\n activeMetricDefinition: kpiTabGroupedStatsMetricDefinitionObject.isRequired,\n data: PropTypes.object, // eslint-disable-line react/forbid-prop-types\n isFetching: PropTypes.bool,\n visibleSeriesIds: PropTypes.arrayOf(PropTypes.string)\n}\n\nKPITabsChart.defaultProps = {\n data: {},\n isFetching: false,\n visibleSeriesIds: []\n}\n\nexport default KPITabsChart\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport { map } from 'lodash'\n\nimport { X_DAY_RANGES } from '../constants'\n\nconst XDaySelector = ({ currentXDayRange, onClick }) => {\n const handleClick = xDayRange => {\n if (currentXDayRange !== xDayRange) {\n onClick(xDayRange)\n }\n }\n\n return (\n
    \n {X_DAY_RANGES.map(({ displayName, value }) => (\n handleClick(value)}\n type=\"button\"\n >\n {displayName}\n \n ))}\n
    \n )\n}\n\nXDaySelector.propTypes = {\n currentXDayRange: PropTypes.oneOf(map(X_DAY_RANGES, 'value')).isRequired,\n onClick: PropTypes.func.isRequired\n}\n\nexport default XDaySelector\n","import PropTypes from 'prop-types'\nimport Skeleton from 'react-loading-skeleton'\n\nimport OnboardingActionOverlay from '../../OnboardingActionOverlay'\nimport ReportingDataMetricValueDisplay from '../../ReportingDataMetricValueDisplay'\nimport SummaryBlock from './SummaryBlock'\n\nimport { kpiTabSummaryMetricDefinitionObject } from '../../../utils/customPropTypes'\n\nimport styles from './styles.module.scss'\n\nconst SummaryBlocks = (\n {\n isFetching,\n metricDefinitions,\n mockedMetricDefinitionKeys,\n summaryDataByMetric\n }\n) => (\n
    \n {metricDefinitions.map(metricDefinition => {\n let overlay = null\n\n if (mockedMetricDefinitionKeys.includes(metricDefinition.key)) {\n overlay = \n }\n\n return (\n \n ) : (\n \n )}\n />\n )\n })}\n
    \n)\n\nSummaryBlocks.propTypes = {\n isFetching: PropTypes.bool,\n metricDefinitions: PropTypes.arrayOf(kpiTabSummaryMetricDefinitionObject).isRequired,\n mockedMetricDefinitionKeys: PropTypes.arrayOf(PropTypes.string),\n summaryDataByMetric: PropTypes.object // eslint-disable-line react/forbid-prop-types\n}\n\nSummaryBlocks.defaultProps = {\n isFetching: false,\n mockedMetricDefinitionKeys: [],\n summaryDataByMetric: {}\n}\n\nexport default SummaryBlocks\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport CardHeader from '../../CardHeader'\nimport { kpiTabGroupedStatsMetricDefinitionObject } from '../../../utils/customPropTypes'\nimport MetricTooltip from '../../MetricTooltip'\n\nimport styles from './styles.module.scss'\n\nconst TabButtons = ({\n activeMetricDefinition, metricDefinitions, onClick\n}) => (\n
    \n {metricDefinitions.map(metricDefinition => {\n const isActiveTab = metricDefinition.key === activeMetricDefinition.key\n\n const tabClassName = classNames(styles.tab, {\n [styles.active]: isActiveTab\n })\n\n return (\n \n onClick(metricDefinition)}\n type=\"button\"\n >\n
    \n \n {metricDefinition.abbreviatedName}\n \n\n {isActiveTab &&
    }\n
    \n \n \n )\n })}\n
    \n)\n\nTabButtons.propTypes = {\n activeMetricDefinition: kpiTabGroupedStatsMetricDefinitionObject.isRequired,\n metricDefinitions: PropTypes.arrayOf(kpiTabGroupedStatsMetricDefinitionObject).isRequired,\n onClick: PropTypes.func.isRequired\n}\n\nexport default TabButtons\n","import { Fragment, useMemo, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport Select, { components as ReactSelectComponents } from 'react-select'\nimport ReactNbsp from 'react-nbsp'\nimport { useLocation } from 'react-router-dom'\nimport { sortBy } from 'lodash'\nimport classNames from 'classnames'\n\nimport FontAwesomeIcon from '../../FontAwesomeIcon'\nimport HelpText from '../../HelpText'\nimport ReportingDataImg from '../../ReportingDataImg'\nimport ReportingDataNameDisplay from '../../ReportingDataNameDisplay'\n\nimport { getQueryParams, useReportingFiltersState } from '../../../contexts/ReportingFilters'\nimport { useCurrentUserState } from '../../../contexts/CurrentUser'\nimport { getGroupNameFromGroupBy } from '../../../utils/helpers'\nimport { CHART_COLORS } from '../../../utils/charts'\n\nimport { kpiTabGroupedStatsMetricDefinitionObject } from '../../../utils/customPropTypes'\n\nimport styles from './styles.module.scss'\n\n// styles overrides for react-select\n// https://react-select.com/styles\nconst customStyles = {\n container: provided => ({\n ...provided,\n zIndex: styles.containerZIndex\n }),\n multiValue: (provided, state) => ({\n ...provided,\n backgroundColor: styles.multiValueBgColor,\n border: `1px solid ${styles.multiValueBorderColor}`,\n borderRadius: '8px',\n position: 'relative'\n })\n}\n\nconst VisibleDataSelector = (\n {\n maxSelectable,\n metricDefinition,\n onChange,\n selectable,\n selected\n }\n) => {\n const [isShowingSelector, setIsShowingSelector] = useState(true)\n\n const reportingFilters = useReportingFiltersState()\n const { countries } = reportingFilters\n\n const location = useLocation()\n\n const { currentUser } = useCurrentUserState()\n\n const queryParams = getQueryParams({ currentUser, location, reportingFilters })\n\n const { groupBy } = queryParams\n\n const selectedIds = selected.map(item => item.id)\n\n const formatOptionLabel = useMemo(() => ({\n iconUrl, id, name, platform\n }) => {\n const color = CHART_COLORS[selectedIds.indexOf(id)]\n\n return (\n
    \n
    \n\n }\n name={name}\n platform={platform}\n />\n
    \n )\n }, [countries, groupBy, selectedIds])\n\n const groupByName = getGroupNameFromGroupBy(groupBy)\n\n /* eslint-disable react/prop-types,react/jsx-props-no-spreading */\n const Menu = useMemo(() => (\n props => {\n const optionSelectedLength = props.getValue().length || 0\n\n return (\n \n {optionSelectedLength < maxSelectable ? (\n props.children\n ) : (\n
    \n Max limit of {maxSelectable} achieved\n
    \n )}\n
    \n )\n }\n ), [maxSelectable])\n /* eslint-enable react/prop-types,react/jsx-props-no-spreading */\n\n return (\n
    \n setIsShowingSelector(!isShowingSelector)}\n >\n \n\n \n\n {isShowingSelector ? 'Hide' : 'Show'} Visible {groupByName} List\n \n\n {isShowingSelector && (\n \n option.name}\n getOptionValue={option => option.id}\n isMulti\n key={metricDefinition.key}\n onChange={options => onChange(options)}\n options={sortBy(selectable, 'name')}\n styles={customStyles}\n value={selected}\n />\n\n Select up to {maxSelectable}\n \n )}\n
    \n )\n}\n\nVisibleDataSelector.propTypes = {\n maxSelectable: PropTypes.number.isRequired,\n metricDefinition: kpiTabGroupedStatsMetricDefinitionObject.isRequired,\n onChange: PropTypes.func.isRequired,\n selectable: PropTypes.arrayOf(PropTypes.object),\n selected: PropTypes.arrayOf(PropTypes.object)\n}\n\nVisibleDataSelector.defaultProps = {\n selectable: [],\n selected: []\n}\n\nexport default VisibleDataSelector\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport styles from './styles.module.scss'\n\nconst HelpText = ({ children, className }) => (\n {children}\n)\n\nHelpText.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string\n}\n\nHelpText.defaultProps = {\n className: ''\n}\n\nexport default HelpText\n","import KPITabsWrapper from '../../../../../KPITabs/wrapper'\n\nimport { SUMMARY_BLOCKS, TABS } from './constants'\n\nconst PurchaseXDay = () => (\n \n)\n\nexport default PurchaseXDay\n","import KPITabsWrapper from '../../../../../KPITabs/wrapper'\n\nimport { SUMMARY_BLOCKS, TABS } from './constants'\n\nconst RetentionXDay = () => (\n \n)\n\nexport default RetentionXDay\n","import { Fragment } from 'react'\n\nimport KPIDrilldownFraud from './KPIDrilldown/Fraud'\nimport KPITabsFraud from './KPITabs/Fraud'\nimport GroupedSummaryTable from '../../../GroupedSummaryTable'\nimport ReportsSelector from '../ReportsSelector'\n\nimport { REPORTS_BY_VALUE } from '../constants'\n\nconst FraudPage = () => (\n \n \n\n \n\n \n\n \n \n)\n\nexport default FraudPage\n","import KPIDrilldown from '../../../../../KPIDrilldown'\n\nimport { METRIC_DEFINITION_KEYS } from './constants'\n\nconst Fraud = () => (\n \n)\n\nexport default Fraud\n","import KPITabsWrapper from '../../../../../KPITabs/wrapper'\n\nimport { SUMMARY_BLOCKS, TABS } from './constants'\n\nconst Fraud = () => (\n \n)\n\nexport default Fraud\n","import { Fragment } from 'react'\n\nimport ReportsSelector from '../ReportsSelector'\nimport GroupedSummaryTable from '../../../GroupedSummaryTable'\nimport KPICards from '../KPICards'\n\nimport { REPORTS_BY_VALUE } from '../constants'\n\nconst OverviewPage = () => (\n \n \n\n \n\n \n \n)\n\nexport default OverviewPage\n","import { Fragment } from 'react'\n\nimport KPIDrilldownRetention from './KPIDrilldown/Retention'\nimport KPITabsRetention from './KPITabs/Retention'\nimport GroupedSummaryTable from '../../../GroupedSummaryTable'\nimport ReportsSelector from '../ReportsSelector'\n\nimport { REPORTS_BY_VALUE } from '../constants'\n\nconst RetentionPage = () => (\n \n \n\n \n\n \n\n \n \n)\n\nexport default RetentionPage\n","import KPIDrilldown from '../../../../../KPIDrilldown'\n\nimport { METRIC_DEFINITION_KEYS } from './constants'\n\nconst Retention = () => (\n \n)\n\nexport default Retention\n","import KPITabsWrapper from '../../../../../KPITabs/wrapper'\n\nimport { SUMMARY_BLOCKS, TABS } from './constants'\n\nconst Retention = () => (\n \n)\n\nexport default Retention\n","import { Fragment } from 'react'\n\nimport GroupedSummaryTable from '../../../GroupedSummaryTable'\nimport { REPORTS_BY_VALUE } from '../constants'\nimport ReportsSelector from '../ReportsSelector'\nimport SourceToggle from '../SourceToggle'\nimport KPIDrilldownRevenue from './KPIDrilldown/Revenue'\nimport KPITabsTotalLTV from './KPITabs/TotalLTV'\nimport KPITabsTotalLTVPerUser from './KPITabs/TotalLTVPerUser'\nimport KPITabsTotalRevenue from './KPITabs/TotalRevenue'\nimport KPITabsTotalRevenuePerDAU from './KPITabs/TotalRevenuePerDAU'\n\nconst RevenuePage = () => (\n \n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n \n)\n\nexport default RevenuePage\n","import KPIDrilldown from '../../../../../KPIDrilldown'\n\nimport { METRIC_DEFINITION_KEYS } from './constants'\n\nconst Revenue = () => (\n \n)\n\nexport default Revenue\n","import KPITabsWrapper from '../../../../../KPITabs/wrapper'\nimport { getSummaryBlocks, getTabs } from './helpers'\n\nconst TotalLTV = () => (\n \n)\n\nexport default TotalLTV\n","import KPITabsWrapper from '../../../../../KPITabs/wrapper'\nimport { getSummaryBlocks, getTabs } from './helpers'\n\nconst TotalLTVPerUser = () => (\n \n)\n\nexport default TotalLTVPerUser\n","import KPITabsWrapper from '../../../../../KPITabs/wrapper'\nimport { getSummaryBlocks, getTabs } from './helpers'\n\nconst TotalRevenue = () => (\n \n)\n\nexport default TotalRevenue\n","import KPITabsWrapper from '../../../../../KPITabs/wrapper'\nimport { getSummaryBlocks, getTabs } from './helpers'\n\nconst TotalRevenuePerDAU = () => (\n \n)\n\nexport default TotalRevenuePerDAU\n","import { Fragment } from 'react'\n\nimport GroupedSummaryTable from '../../../GroupedSummaryTable'\nimport { REPORTS_BY_VALUE } from '../constants'\nimport ReportsSelector from '../ReportsSelector'\nimport SourceToggle from '../SourceToggle'\nimport KPIDrilldownROI from './KPIDrilldown/XDayROI'\nimport KPITabsLifetimeROI from './KPITabs/LifetimeROI'\nimport KPITabsROI from './KPITabs/ROI'\n\nconst RoiPage = () => (\n \n \n\n \n\n \n\n \n\n \n\n \n \n)\n\nexport default RoiPage\n","import KPIDrilldown from '../../../../../KPIDrilldown'\n\nimport { METRIC_DEFINITION_KEYS } from './constants'\n\nconst XDayROI = () => (\n \n)\n\nexport default XDayROI\n","import KPITabsWrapper from '../../../../../KPITabs/wrapper'\nimport { getSummaryBlocks, getTabs } from './helpers'\n\nconst LifetimeROI = () => (\n \n)\n\nexport default LifetimeROI\n","import KPITabsWrapper from '../../../../../KPITabs/wrapper'\n\nimport { SUMMARY_BLOCKS, TABS } from './constants'\n\nconst ROI = () => (\n \n)\n\nexport default ROI\n","import { Fragment } from 'react'\n\nimport KPITabsCost from './KPITabs/Cost'\nimport KPITabsSpend from './KPITabs/Spend'\nimport GroupedSummaryTable from '../../../GroupedSummaryTable'\nimport ReportsSelector from '../ReportsSelector'\n\nimport { REPORTS_BY_VALUE } from '../constants'\n\nconst SpendPage = () => (\n \n \n\n \n\n \n\n \n \n)\n\nexport default SpendPage\n","import KPITabsWrapper from '../../../../../KPITabs/wrapper'\n\nimport { SUMMARY_BLOCKS, TABS } from './constants'\n\nconst Cost = () => (\n \n)\n\nexport default Cost\n","import KPITabsWrapper from '../../../../../KPITabs/wrapper'\n\nimport { SUMMARY_BLOCKS, TABS } from './constants'\n\nconst Spend = () => (\n \n)\n\nexport default Spend\n","import { Fragment } from 'react'\n\nimport KPITabsUsage from './KPITabs/Usage'\nimport KPITabsUsageXDay from './KPITabs/UsageXDay'\nimport ReportsSelector from '../ReportsSelector'\n\nimport { REPORTS_BY_VALUE } from '../constants'\n\nconst UsagePage = () => (\n \n \n\n \n\n \n \n)\n\nexport default UsagePage\n","import KPITabsWrapper from '../../../../../KPITabs/wrapper'\n\nimport { SUMMARY_BLOCKS, TABS } from './constants'\n\nconst Usage = () => (\n \n)\n\nexport default Usage\n","import KPITabsWrapper from '../../../../../KPITabs/wrapper'\n\nimport { SUMMARY_BLOCKS, TABS } from './constants'\n\nconst UsageXDay = () => (\n \n)\n\nexport default UsageXDay\n","import { Fragment } from 'react'\n\nimport KPIDrilldownCostPerRetainedUser from './KPIDrilldown/CostPerRetainedUser'\nimport KPIDrilldownCostPer1000Sessions from './KPIDrilldown/CostPer1000Sessions'\nimport KPITabsLifetimeCost from './KPITabs/LifetimeCost'\nimport KPITabsCostPer1000Sessions from './KPITabs/CostPer1000Sessions'\nimport ReportsSelector from '../ReportsSelector'\nimport GroupedSummaryTable from '../../../GroupedSummaryTable'\n\nimport { REPORTS_BY_VALUE } from '../constants'\n\nconst ValuePage = () => (\n \n \n\n \n\n \n\n \n\n \n\n \n \n)\n\nexport default ValuePage\n","import KPIDrilldown from '../../../../../KPIDrilldown'\n\nimport { METRIC_DEFINITION_KEYS } from './constants'\n\nconst CostPerRetainedUser = () => (\n \n)\n\nexport default CostPerRetainedUser\n","import KPIDrilldown from '../../../../../KPIDrilldown'\n\nimport { METRIC_DEFINITION_KEYS } from './constants'\n\nconst CostPer1000Sessions = () => (\n \n)\n\nexport default CostPer1000Sessions\n","import KPITabsWrapper from '../../../../../KPITabs/wrapper'\n\nimport { SUMMARY_BLOCKS, TABS } from './constants'\n\nconst LifetimeCost = () => (\n \n)\n\nexport default LifetimeCost\n","import KPITabsWrapper from '../../../../../KPITabs/wrapper'\n\nimport { SUMMARY_BLOCKS, TABS } from './constants'\n\nconst CostPer1000Sessions = () => (\n \n)\n\nexport default CostPer1000Sessions\n","import React from 'react'\nimport Tooltip from 'rc-tooltip'\nimport classNames from 'classnames'\nimport PropTypes from 'prop-types'\n\nimport FontAwesomeIcon from '../../../FontAwesomeIcon'\nimport { DEFAULT_BTN_CLASS_NAME } from './constants'\nimport { TOOLTIP_MOUSE_ENTER_DELAY } from '../../../../utils/constants'\n\nimport styles from './styles.module.scss'\n\nconst ChartTypeButtons = ({ className, isBarChart, setIsBarChart }) => {\n const barChartBtnClassName = classNames(DEFAULT_BTN_CLASS_NAME, styles.chartTypeButton, {\n active: isBarChart\n })\n\n const splineChartBtnClassName = classNames(DEFAULT_BTN_CLASS_NAME, styles.chartTypeButton, {\n active: !isBarChart\n })\n\n return (\n
    \n Bar Chart}\n placement=\"top\"\n >\n setIsBarChart(true)}\n type=\"button\"\n >\n \n \n \n\n Spline Chart}\n placement=\"top\"\n >\n setIsBarChart(false)}\n type=\"button\"\n >\n \n \n \n
    \n )\n}\n\nChartTypeButtons.propTypes = {\n className: PropTypes.string,\n isBarChart: PropTypes.bool,\n setIsBarChart: PropTypes.func.isRequired\n}\n\nChartTypeButtons.defaultProps = {\n className: null,\n isBarChart: true\n}\n\nexport default ChartTypeButtons\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { arrayOfSelectableValueRanges } from '../../../../utils/customPropTypes'\n\nimport Dropdown from '../../../Dropdown'\n\nconst ValueRangeSelector = ({\n onChangeValueRange,\n valueRangeOptions,\n valueRange\n}) => (\n option.name}\n getOptionValue={option => option.id}\n isClearable={false}\n isSearchable={false}\n onChange={onChangeValueRange}\n options={valueRangeOptions}\n value={valueRange}\n />\n)\n\nValueRangeSelector.propTypes = {\n onChangeValueRange: PropTypes.func.isRequired,\n valueRange: PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string\n }).isRequired,\n valueRangeOptions: arrayOfSelectableValueRanges.isRequired\n}\n\nexport default ValueRangeSelector\n","import React, { useMemo, useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n Chart, HighchartsChart, HighchartsProvider, XAxis, YAxis, Tooltip\n} from 'react-jsx-highcharts'\nimport Highcharts from 'highcharts'\nimport { cloneDeep, map } from 'lodash'\n\nimport ChartSkeleton from '../../KPITabs/Chart/skeleton'\nimport { arrayOfHighchartsSeriesData } from '../../../utils/customPropTypes'\nimport { useReportingFiltersState } from '../../../contexts/ReportingFilters'\nimport useHighchartsReflowEffect from '../../../hooks/useHighchartsReflowEffect'\n\nimport { buildSeries, getMinXByValueRange, getTooltipOptionsByGroupBy } from './helpers'\n\nimport {\n CHART_SKELETON_HEIGHT,\n PLOT_OPTIONS,\n X_AXIS_OPTIONS,\n CHART_RENDERER_DELAY_MS\n} from './constants'\n\n/*\n Note: this DelayedChartRenderer is a hack to handle\n a bizarre HighCharts render compatibility error\n with React that was causing a TypeError\n*/\n// eslint-disable-next-line react/prop-types\nconst DelayedChartRenderer = ({ children }) => {\n const [isShown, setIsShown] = useState(false)\n\n useEffect(() => {\n setTimeout(() => {\n setIsShown(true)\n }, CHART_RENDERER_DELAY_MS)\n }, [0])\n\n return isShown ? children : \n}\n\nconst ConversionValueHistogramChart = ({\n allData,\n groupBy,\n selectedComparison,\n isBarChart,\n isFetching,\n valueRange\n}) => {\n const reportingFilters = useReportingFiltersState()\n\n const { isSidebarCollapsed } = reportingFilters\n\n useHighchartsReflowEffect([isSidebarCollapsed])\n\n const plotOptions = cloneDeep(PLOT_OPTIONS)\n\n const series = useMemo(() => map(allData, (data, dataIndex) => (\n buildSeries({\n data,\n dataIndex,\n isBarChart,\n selectedComparisonObject: selectedComparison[dataIndex]\n })\n )), [allData, isBarChart])\n\n const minXValue = getMinXByValueRange(valueRange)\n\n if (isFetching) {\n return \n }\n\n return (\n \n \n \n \n\n {/* eslint-disable react/jsx-props-no-spreading */}\n \n Conversion Values\n \n\n {series}\n\n \n {/* eslint-enable react/jsx-props-no-spreading */}\n \n \n \n )\n}\n\nConversionValueHistogramChart.propTypes = {\n allData: PropTypes.arrayOf(arrayOfHighchartsSeriesData),\n groupBy: PropTypes.string,\n isBarChart: PropTypes.bool,\n isFetching: PropTypes.bool.isRequired,\n selectedComparison: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string\n })\n ).isRequired,\n valueRange: PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string\n }).isRequired\n}\n\nConversionValueHistogramChart.defaultProps = {\n allData: [],\n groupBy: '',\n isBarChart: true\n}\n\nexport default ConversionValueHistogramChart\n","import FormTextField from '../../FormTextField/FormTextField'\n\nconst AppDestinationUrlFormField = () => (\n \n)\n\nexport default AppDestinationUrlFormField\n","import { Fragment, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport Admin from './Admin'\nimport Analyze from './Analyze'\nimport Automate from './Automate'\nimport Configure from './Configure'\nimport Diagnose from './Diagnose'\nimport Impersonate from './Impersonate'\nimport MyAccount from './MyAccount'\nimport Notifications from './Notifications'\nimport Support from './Support'\nimport SwitchOrgs from './SwitchOrgs'\n\nimport { useCurrentUserState } from '../../../contexts/CurrentUser'\n\nimport styles from './styles.module.scss'\n\nconst Modal = ({ isVisible, setIsVisible }) => {\n const [isShowingSwitchOrgs, setIsShowingSwitchOrgs] = useState(false)\n const [isShowingImpersonate, setIsShowingImpersonate] = useState(false)\n\n const { currentUser } = useCurrentUserState()\n\n return (\n
    \n {!(isShowingSwitchOrgs || isShowingImpersonate) && (\n \n \n\n \n\n \n\n \n\n \n\n \n\n \n\n {currentUser.admin && (\n \n )}\n \n )}\n\n {isShowingImpersonate && (\n \n )}\n\n {isShowingSwitchOrgs && (\n \n )}\n
    \n )\n}\n\nModal.propTypes = {\n setIsVisible: PropTypes.func.isRequired\n}\n\nexport default Modal\n","import PropTypes from 'prop-types'\n\nimport Link from '../Link'\nimport Section from '../Section'\nimport SectionContent from '../SectionContent'\nimport SectionHeader from '../SectionHeader'\n\nimport { useCurrentUserState } from '../../../../contexts/CurrentUser'\n\nconst Admin = ({ isShowingImpersonate, setIsShowingImpersonate }) => {\n const {\n currentUser: { isActingAsUser }\n } = useCurrentUserState()\n\n const onImpersonateClick = ev => {\n ev.preventDefault()\n\n setIsShowingImpersonate(!isShowingImpersonate)\n }\n\n /* eslint-disable jsx-a11y/anchor-is-valid */\n return (\n
    \n Admin\n\n \n \n Impersonate {isActingAsUser && '(Active)'}\n \n\n \n Apps\n \n\n \n Attribution Imports\n \n\n \n Attribution Providers\n \n\n \n Callback Status\n \n\n \n Callback Templates\n \n\n \n Campaign Buckets\n \n\n \n Campaign Merge\n \n\n \n Customer Database Metrics\n \n\n \n DataVaults\n \n\n \n Email Imports\n \n\n \n Exchange Rates\n \n\n \n Features\n \n\n \n Historical Stats\n \n\n \n Marketing Channels\n \n\n \n Publisher Apps\n \n\n \n SK Ad Networks\n \n\n \n SK Apps\n \n\n \n Background Jobs\n \n\n \n DailyStats Worker Stats\n \n\n \n Data Pipelines\n \n \n
    \n )\n /* eslint-enable jsx-a11y/anchor-is-valid */\n}\n\nAdmin.propTypes = {\n isShowingImpersonate: PropTypes.bool.isRequired,\n setIsShowingImpersonate: PropTypes.func.isRequired\n}\n\nexport default Admin\n","import { Fragment } from 'react'\n\nimport Label from '../Label'\nimport Link from '../Link'\nimport Section from '../Section'\nimport SectionContent from '../SectionContent'\nimport SectionHeader from '../SectionHeader'\n\nimport { useCurrentUserState } from '../../../../contexts/CurrentUser'\n\nconst Analyze = () => {\n const {\n accessControl: {\n canViewUserAcquisition,\n canViewAdMonetization,\n canViewDataExporter\n }\n } = useCurrentUserState()\n\n if (!(canViewUserAcquisition || canViewAdMonetization || canViewDataExporter)) {\n return null\n }\n\n return (\n
    \n Analyze\n\n \n {(canViewUserAcquisition || canViewAdMonetization) && (\n \n \n\n {canViewUserAcquisition && (\n \n User Acquisition\n \n )}\n\n {canViewAdMonetization && (\n \n Ad Monetization\n \n )}\n \n )}\n\n {canViewDataExporter && (\n \n \n\n \n Data Exporter\n \n \n )}\n \n
    \n )\n}\n\nexport default Analyze\n","import Label from '../Label'\nimport Link from '../Link'\nimport Section from '../Section'\nimport SectionContent from '../SectionContent'\nimport SectionHeader from '../SectionHeader'\n\nimport { useCurrentUserState } from '../../../../contexts/CurrentUser'\n\nconst Automate = () => {\n const {\n accessControl: {\n canViewDataVaultCredentials,\n canViewAccessTokens\n }\n } = useCurrentUserState()\n\n if (!(canViewDataVaultCredentials || canViewAccessTokens)) {\n return null\n }\n\n return (\n
    \n Automate\n\n \n {canViewDataVaultCredentials && (\n \n DataVault Credentials\n \n )}\n\n {canViewAccessTokens && (\n \n Access Tokens\n \n )}\n\n \n\n \n DataVault\n \n\n \n Reporting Metrics API\n \n\n \n Campaign Management API\n \n \n
    \n )\n}\n\nexport default Automate\n","import Label from '../Label'\nimport Link from '../Link'\nimport Section from '../Section'\nimport SectionContent from '../SectionContent'\nimport SectionHeader from '../SectionHeader'\n\nimport { useCurrentUserState } from '../../../../contexts/CurrentUser'\n\nconst Configure = () => {\n const {\n accessControl: {\n canViewApps,\n canViewCampaigns,\n canViewChannels\n }\n } = useCurrentUserState()\n\n if (!(canViewApps || canViewCampaigns || canViewChannels)) {\n return null\n }\n\n return (\n
    \n Configure\n\n \n {canViewApps && (\n \n Apps\n \n )}\n\n {canViewChannels && (\n \n Channels\n \n )}\n\n {canViewCampaigns && (\n \n Campaigns\n \n )}\n\n \n\n \n Attribution\n \n\n \n Event callback\n \n \n
    \n )\n}\n\nexport default Configure\n","import { Fragment } from 'react'\n\nimport Label from '../Label'\nimport Link from '../Link'\nimport Section from '../Section'\nimport SectionContent from '../SectionContent'\nimport SectionHeader from '../SectionHeader'\n\nimport { useCurrentUserState } from '../../../../contexts/CurrentUser'\nimport { useHealthState } from '../../../../contexts/Health'\n\nconst Diagnose = () => {\n const {\n accessControl: {\n canViewHealth,\n canViewCampaignBuckets,\n canViewSdkLiveData,\n canViewTestDevices,\n canViewStatusUpdates,\n canViewCampaignMerge\n }\n } = useCurrentUserState()\n\n const { unlinkedCampaignsAndAdPlacementsCount } = useHealthState()\n\n if (!(canViewHealth\n || canViewCampaignBuckets\n || canViewSdkLiveData\n || canViewTestDevices\n || canViewStatusUpdates\n || canViewCampaignMerge)) {\n return null\n }\n\n return (\n
    \n Diagnose\n\n \n {(canViewHealth || canViewCampaignBuckets) && (\n \n \n\n {canViewHealth && (\n \n Health\n
    \n {unlinkedCampaignsAndAdPlacementsCount}\n
    \n \n )}\n\n {canViewCampaignBuckets && (\n \n Campaign Buckets\n \n )}\n\n {canViewCampaignMerge && (\n \n Campaign Merge\n \n )}\n
    \n )}\n\n {(canViewSdkLiveData || canViewTestDevices) && (\n \n \n\n {canViewSdkLiveData && (\n \n SDK Live Data\n \n )}\n\n {canViewTestDevices && (\n \n Test Devices\n \n )}\n \n )}\n\n {canViewStatusUpdates && (\n \n \n\n \n Status Updates\n \n \n )}\n
    \n
    \n )\n}\n\nexport default Diagnose\n","import { Fragment } from 'react'\nimport PropTypes from 'prop-types'\n\nimport BackLink from '../BackLink'\nimport Label from '../Label'\nimport Link from '../Link'\nimport Section from '../Section'\nimport SectionContent from '../SectionContent'\nimport SectionHeader from '../SectionHeader'\n\nimport { useCurrentUserState } from '../../../../contexts/CurrentUser'\n\nconst Impersonate = ({ setIsShowingImpersonate }) => {\n const buildImpersonateLink = org => `/dashboard/admin/users/${org.user_id}/become`\n\n const { currentUser, recentOrgs } = useCurrentUserState()\n\n const impersonatableOrgs = recentOrgs\n .filter(org => org.id !== currentUser.organizationId)\n .map(org => (\n \n {org.name}\n \n ))\n\n return (\n
    \n setIsShowingImpersonate(false)} />\n\n Impersonate\n\n \n {currentUser.isActingAsUser && (\n \n Revert to Self\n \n )}\n\n \n Organizations\n \n\n \n Users\n \n\n {impersonatableOrgs.length > 0 && (\n \n \n\n {impersonatableOrgs}\n \n )}\n \n
    \n )\n}\n\nImpersonate.propTypes = {\n setIsShowingImpersonate: PropTypes.func.isRequired\n}\n\nexport default Impersonate\n","import PropTypes from 'prop-types'\n\nimport { useCurrentUserState } from '../../../../contexts/CurrentUser'\nimport Label from '../Label'\nimport Link from '../Link'\nimport PtiMeter from '../../../Navigation/MyAccount/PtiMeter'\nimport Section from '../Section'\nimport SectionContent from '../SectionContent'\nimport SectionHeader from '../SectionHeader'\nimport SignOutLink from '../SignOutLink'\nimport styles from './styles.module.scss'\n\nconst MyAccount = ({ isShowingSwitchOrgs, setIsShowingSwitchOrgs }) => {\n const {\n accessControl: {\n canViewGdprRequests,\n canViewManageOrganization,\n canViewManageUser,\n canViewMonthlyEvents\n },\n currentUser,\n switchableOrgs\n } = useCurrentUserState()\n\n const onSwitchOrgsClick = ev => {\n ev.preventDefault()\n\n setIsShowingSwitchOrgs(!isShowingSwitchOrgs)\n }\n\n /* eslint-disable jsx-a11y/anchor-is-valid */\n return (\n
    \n My Account\n\n \n
    \n \n\n \n
    \n\n {switchableOrgs.length > 0 && (\n \n Switch Organizations\n \n )}\n\n {canViewMonthlyEvents &&\n (window.gon.feature_flags.includes('usage_and_billing') ? (\n
    \n \n \n Usage & Billing\n \n
    \n ) : (\n Monthly Activity\n ))}\n\n {canViewGdprRequests && (\n GDPR Requests\n )}\n\n {canViewManageUser && Manage User}\n\n {canViewManageOrganization && (\n Manage Organization\n )}\n\n \n
    \n
    \n )\n /* eslint-enable jsx-a11y/anchor-is-valid */\n}\n\nMyAccount.propTypes = {\n isShowingSwitchOrgs: PropTypes.bool.isRequired,\n setIsShowingSwitchOrgs: PropTypes.func.isRequired\n}\n\nexport default MyAccount\n","import classNames from 'classnames'\nimport PropTypes from 'prop-types'\n\nimport LoadingBar from '../../../LoadingBar'\nimport styles from './styles.module.scss'\n\nconst PtiMeter = ({ className }) => (\n
    \n
    \n 32% of PTI Allowance\n
    \n \n
    \n
    \n 6,400 of 20,000\n
    \n paid attributions used\n
    \n
    \n)\n\nPtiMeter.propTypes = {\n className: PropTypes.string\n}\n\nPtiMeter.defaultProps = {\n className: ''\n}\n\nexport default PtiMeter\n","import Link from '../Link'\n\nconst SignOutLink = () => (\n \n Sign Out\n \n)\n\nexport default SignOutLink\n","import Link from '../Link'\nimport Section from '../Section'\nimport SectionContent from '../SectionContent'\nimport SectionHeader from '../SectionHeader'\n\nimport { useCurrentUserState } from '../../../../contexts/CurrentUser'\n\nconst Notifications = () => {\n const {\n accessControl: {\n canViewAlertDefinitions,\n canViewNotifications\n }\n } = useCurrentUserState()\n\n if (!(canViewAlertDefinitions || canViewNotifications)) {\n return null\n }\n\n return (\n
    \n Notifications\n\n \n\n {canViewAlertDefinitions && (\n \n Configure Alerts\n \n )}\n\n {canViewNotifications && (\n \n View All\n \n )}\n \n
    \n )\n}\n\nexport default Notifications\n","import Link from '../Link'\nimport Section from '../Section'\nimport SectionContent from '../SectionContent'\nimport SectionHeader from '../SectionHeader'\n\nimport { useCurrentUserState } from '../../../../contexts/CurrentUser'\n\nconst Support = () => {\n const {\n accessControl: {\n canViewSupport\n }\n } = useCurrentUserState()\n\n if (!canViewSupport) return null\n\n const handleSupportClick = ev => {\n ev.preventDefault()\n\n if (window.Intercom) {\n window.Intercom('show')\n }\n }\n\n /* eslint-disable jsx-a11y/anchor-is-valid */\n return (\n
    \n Support\n\n \n \n Documentation\n \n\n \n APIs\n \n\n \n SDKs\n \n\n \n Chat with Support\n \n \n
    \n )\n /* eslint-enable jsx-a11y/anchor-is-valid */\n}\n\nexport default Support\n","import PropTypes from 'prop-types'\n\nimport BackLink from '../BackLink'\nimport Link from '../Link'\nimport Section from '../Section'\nimport SectionContent from '../SectionContent'\nimport SectionHeader from '../SectionHeader'\n\nimport { useCurrentUserState } from '../../../../contexts/CurrentUser'\n\nimport styles from './styles.module.scss'\n\nconst SwitchOrgs = ({ setIsShowingSwitchOrgs }) => {\n const { currentUser, switchableOrgs } = useCurrentUserState()\n\n if (switchableOrgs.length === 0) return null\n\n const buildSwitchingOrgLink = org => `/dashboard/organizations/${org.id}/switch`\n\n return (\n
    \n setIsShowingSwitchOrgs(false)} />\n\n Switch Organizations\n\n \n
    {currentUser.organizationName} (Active)
    \n\n {switchableOrgs.map(org => (\n \n {org.name}\n \n ))}\n
    \n
    \n )\n}\n\nSwitchOrgs.propTypes = {\n setIsShowingSwitchOrgs: PropTypes.func.isRequired\n}\n\nexport default SwitchOrgs\n","import { useCallback } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport Skeleton from 'react-loading-skeleton'\nimport { isNull } from 'lodash'\n\nimport AwaitingDataOverlay from '../AwaitingDataOverlay'\nimport CardHeader from '../CardHeader'\nimport ChartFailed from '../ChartFailed'\nimport NoDataOverlay from '../NoDataOverlay'\nimport OnboardingActionOverlay from '../OnboardingActionOverlay'\nimport ReportingDataMetricValueDisplay from '../ReportingDataMetricValueDisplay'\n\nimport { isBlank } from '../../utils/helpers'\nimport { metricDefinitionObject, onboardingStatusObject } from '../../utils/customPropTypes'\n\nimport styles from './styles.module.scss'\n\nconst KPICard = ({\n index, isError, isFetching, isMocking, value, metricDefinition,\n onReloadClick, onboardingStatus, isTwoCardLayout, cardCount\n}) => {\n const renderKPIData = useCallback(() => {\n const valueClassName = classNames(styles.value, {\n [styles.valueSkeleton]: isFetching\n })\n\n const { calculatedAsLabel, displayName, valueType } = metricDefinition\n\n const valueIconClassName = classNames({ [styles.dataNoValue]: isBlank(value) })\n\n return (\n
    \n \n {displayName}\n \n\n
    \n {isFetching ? (\n \n ) : (\n \n )}\n\n
    \n {calculatedAsLabel}\n
    \n
    \n
    \n )\n }, [isFetching, value])\n\n let isCardOnTheLeft\n let isCardOnTheRight\n let isFirstCard\n let isMiddleCard\n let isLastCard\n\n if (isTwoCardLayout) {\n isCardOnTheLeft = index % 2 === 0\n isCardOnTheRight = index % 2 === 1\n } else {\n isFirstCard = index === 0\n isMiddleCard = index > 0 && index < (cardCount - 1)\n isLastCard = index === cardCount\n }\n\n const className = classNames(styles.card, {\n [styles.leftCard]: isCardOnTheLeft,\n [styles.rightCard]: isCardOnTheRight,\n [styles.firstCard]: isFirstCard,\n [styles.middleCard]: isMiddleCard,\n [styles.lastCard]: isLastCard\n })\n\n const { hasRecentlyReceivedFirstEvents } = onboardingStatus\n\n const hasNoSummaryData = !isMocking\n && !isError\n && !isFetching\n && !hasRecentlyReceivedFirstEvents\n && isNull(value)\n\n const hasFailedLoadingData = !isMocking && isError\n\n const isAwaitingDataToBeCalculated = !isMocking\n && !isError\n && !isFetching\n && hasRecentlyReceivedFirstEvents\n && isNull(value)\n\n return (\n
    \n
    \n {renderKPIData()}\n
    \n\n {isMocking && }\n {hasFailedLoadingData && }\n {hasNoSummaryData && }\n {isAwaitingDataToBeCalculated && (\n \n )}\n
    \n )\n}\n\nKPICard.propTypes = {\n cardCount: PropTypes.number,\n index: PropTypes.number.isRequired,\n isError: PropTypes.bool.isRequired,\n isFetching: PropTypes.bool.isRequired,\n isMocking: PropTypes.bool.isRequired,\n isTwoCardLayout: PropTypes.bool,\n metricDefinition: metricDefinitionObject.isRequired,\n onReloadClick: PropTypes.func.isRequired,\n onboardingStatus: onboardingStatusObject.isRequired,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n}\n\nKPICard.defaultProps = {\n cardCount: 2,\n isTwoCardLayout: true,\n value: null\n}\n\nexport default KPICard\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport styles from './styles.module.scss'\nimport Dropdown from '../../Dropdown'\nimport {\n DOCUMENTATION_LINKS,\n PLATFORM_SDK_OPTIONS,\n ROLE_DEVELOPER,\n ROLE_MARKETER\n} from '../constants'\nimport {\n arrayOfPlatformSDKOptions,\n arrayOfRoleObjects,\n platformSDKObject,\n roleObject\n} from '../../../utils/customPropTypes'\n\nconst RoleContentMarketer = ({ onClickWithTracking }) => (\n
    \n
      \n
    1. \n onClickWithTracking({\n href: DOCUMENTATION_LINKS.APPS,\n text: 'Add an app'\n })}\n >\n Add an app\n \n
      \n Go to Configure > Apps from the top navigation bar > Click "Add a New App"\n
    2. \n
    3. \n onClickWithTracking({\n href: DOCUMENTATION_LINKS.CHANNELS_OVERVIEW,\n text: 'Add your marketing channels'\n })}\n >\n Add your marketing channels\n \n
      \n Go to Configure > Channels > Click "Add a Channel"\n
    4. \n
    5. \n {\n 'Select the ad network that you want to pull ad revenue data'\n + ' or ad spend from. You will need to add the specific network\\'s'\n + ' API keys and credentials.'\n }\n
    6. \n
    7. \n For more on channels, view \n \n Setting up Channels and Tracking Ad Spend \n \n in our docs\n
    8. \n
    \n
    \n)\n\nconst RoleContentDeveloper = ({\n onChangePlatformSDK,\n onClickWithTracking,\n platformSDKOptions,\n selectedPlatformSDK\n}) => {\n const { linkText, linkUrl } = selectedPlatformSDK\n\n return (\n
    \n
      \n
    1. \n onClickWithTracking({\n href: DOCUMENTATION_LINKS.APPS,\n text: 'Add an app'\n })}\n >\n Add an app\n \n
      \n Go to Configure > Apps from the top navigation bar > Click "Add a New App"\n
    2. \n
    3. \n
      \n
      Send events through the SDK
      \n option.label}\n getOptionValue={option => option.value}\n isClearable={false}\n isSearchable={false}\n onChange={onChangePlatformSDK}\n options={platformSDKOptions}\n value={selectedPlatformSDK}\n />\n
      \n View our docs for directions on {linkText}\n
    4. \n
    \n
    \n )\n}\n\nconst Overlay = ({\n className,\n onChangeSelectedRole,\n onClickWithTracking,\n onClosePopup,\n roleOptions,\n selectedRole\n}) => {\n const [selectedPlatformSDK, setSelectedPlatformSDK] = useState(PLATFORM_SDK_OPTIONS[0])\n\n const handleChangePlatformSDK = updatedPlatformSDK => {\n setSelectedPlatformSDK(updatedPlatformSDK)\n }\n\n return (\n
    \n
    \n {\n if (event.key === 'Enter') { onClosePopup() }\n }}\n className={styles.hideButton}\n onClick={onClosePopup}\n >\n Hide\n
    \n
    \n\n
    Welcome To Tenjin!
    \n\n
    \n
    What's your role?
    \n option.label}\n getOptionValue={option => option.value}\n isClearable={false}\n isSearchable={false}\n onChange={onChangeSelectedRole}\n options={roleOptions}\n value={selectedRole}\n />\n
    \n\n {selectedRole.value === ROLE_MARKETER && (\n \n )}\n {selectedRole.value === ROLE_DEVELOPER && (\n \n )}\n\n
    \n Have questions? Visit our \n onClickWithTracking({\n href: DOCUMENTATION_LINKS.KNOWLEDGE_BASE,\n text: 'knowledge base'\n })}\n >\n knowledge base \n \n or contact \n \n support@tenjin.com\n \n
    \n
    \n )\n}\n\nRoleContentMarketer.propTypes = {\n onClickWithTracking: PropTypes.func.isRequired\n}\n\nRoleContentDeveloper.propTypes = {\n onChangePlatformSDK: PropTypes.func.isRequired,\n onClickWithTracking: PropTypes.func.isRequired,\n platformSDKOptions: arrayOfPlatformSDKOptions.isRequired,\n selectedPlatformSDK: platformSDKObject.isRequired\n}\n\nOverlay.propTypes = {\n className: PropTypes.string,\n onChangeSelectedRole: PropTypes.func.isRequired,\n onClickWithTracking: PropTypes.func.isRequired,\n onClosePopup: PropTypes.func.isRequired,\n roleOptions: arrayOfRoleObjects.isRequired,\n selectedRole: roleObject.isRequired\n}\n\nOverlay.defaultProps = {\n className: null\n}\n\nexport default Overlay\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport { format, parseISO } from 'date-fns'\n\nimport FontAwesomeIcon from '../FontAwesomeIcon'\n\nimport { isBlankValue } from '../ReportingDataMetricValueDisplay/helpers'\n\nimport styles from './styles.module.scss'\n\nconst ReportingDataDateDisplay = ({\n className,\n iconClassName,\n value\n}) => {\n if (isBlankValue(value)) {\n return (\n \n \n \n )\n }\n\n return (\n \n {format(parseISO(value), 'yyyy-MM-dd')}\n \n )\n}\n\nReportingDataDateDisplay.propTypes = {\n className: PropTypes.string,\n iconClassName: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ])\n}\n\nReportingDataDateDisplay.defaultProps = {\n className: null,\n iconClassName: null,\n value: ''\n}\n\nexport default ReportingDataDateDisplay\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport FontAwesomeIcon from '../../../../FontAwesomeIcon'\n\nimport styles from './styles.module.scss'\n\nconst VisibilityIcon = ({ isOpen }) => (\n \n)\n\nVisibilityIcon.propTypes = {\n isOpen: PropTypes.bool.isRequired\n}\n\nexport default VisibilityIcon\n","import { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport Tooltip from 'rc-tooltip'\n\nimport ListItem from '../../Filter/Pane/ListItem'\nimport MultiSelectIcon from '../../Filter/Pane/ListItem/MultiSelectIcon'\nimport PlatformIcon from '../../../PlatformIcon'\n\nimport { TOOLTIP_MOUSE_ENTER_DELAY } from '../../../../utils/constants'\nimport { associatableAppObject } from '../../../../utils/customPropTypes'\n\nimport styles from './styles.module.scss'\n\nconst AppsListItem = (\n {\n app,\n isSelected,\n onClick\n }\n) => (\n \n {app.iconUrl && (\n {app.name}\n )}\n\n \n\n {app.name}}\n placement=\"top\"\n >\n
    {app.name}
    \n \n \n )}\n onClick={onClick}\n selectionIcon={}\n />\n)\n\nAppsListItem.propTypes = {\n app: associatableAppObject.isRequired,\n isSelected: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired\n}\n\nexport default AppsListItem\n","import PropTypes from 'prop-types'\n\nimport styles from './styles.module.scss'\n\nconst Subtitle = ({ children }) => (\n
    {children}
    \n)\n\nSubtitle.propTypes = {\n children: PropTypes.node.isRequired\n}\n\nexport default Subtitle\n","import { useMemo } from 'react'\nimport PropTypes from 'prop-types'\nimport { xor } from 'lodash'\nimport { camelCase } from 'camel-case'\n\nimport PlatformFilter from './PlatformFilter'\nimport { arrayOfAssociatableApps } from '../../../../utils/customPropTypes'\nimport { isPresent } from '../../../../utils/helpers'\n\nconst isActivePlatformFilter = ({ selectable, selected }) => (\n xor(selectable, selected).length === 0\n)\n\nconst PlatformFilters = (\n {\n apps,\n onClick,\n selectedApps\n }\n) => {\n const appIdsByPlatform = useMemo(() => {\n const appIdsByPlatformObj = {\n amazon: [],\n android: [],\n androidOther: [],\n ios: []\n }\n\n apps.forEach(app => {\n const appPlatform = camelCase(app.platform || '')\n\n if (appIdsByPlatformObj[appPlatform]) {\n appIdsByPlatformObj[appPlatform].push(app.id)\n }\n })\n\n return appIdsByPlatformObj\n }, [apps])\n\n const hasSelectedApps = isPresent(selectedApps)\n\n const iosFilterSelected = useMemo(() => (\n hasSelectedApps\n && isActivePlatformFilter({\n selectable: appIdsByPlatform.ios,\n selected: selectedApps\n })\n ), [appIdsByPlatform.ios, hasSelectedApps, selectedApps])\n\n const androidFilterSelected = useMemo(() => (\n hasSelectedApps\n && isActivePlatformFilter({\n selectable: appIdsByPlatform.android,\n selected: selectedApps\n })\n ), [appIdsByPlatform.android, hasSelectedApps, selectedApps])\n\n const androidOtherFilterSelected = useMemo(() => (\n hasSelectedApps\n && isActivePlatformFilter({\n selectable: appIdsByPlatform.androidOther,\n selected: selectedApps\n })\n ), [appIdsByPlatform.androidOther, hasSelectedApps, selectedApps])\n\n const amazonFilterSelected = useMemo(() => (\n hasSelectedApps\n && isActivePlatformFilter({\n selectable: appIdsByPlatform.amazon,\n selected: selectedApps\n })\n ), [appIdsByPlatform.amazon, hasSelectedApps, selectedApps])\n\n return (\n
    \n onClick(appIdsByPlatform.ios)}\n platform=\"ios\"\n />\n onClick(appIdsByPlatform.android)}\n platform=\"android\"\n />\n onClick(appIdsByPlatform.amazon)}\n platform=\"amazon\"\n />\n onClick(appIdsByPlatform.androidOther)}\n platform=\"androidOther\"\n />\n
    \n )\n}\n\nPlatformFilters.propTypes = {\n apps: arrayOfAssociatableApps.isRequired,\n onClick: PropTypes.func.isRequired,\n selectedApps: PropTypes.arrayOf(PropTypes.string).isRequired\n}\n\nexport default PlatformFilters\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport { isEmpty, map } from 'lodash'\n\nimport styles from './styles.module.scss'\n\nimport FontAwesomeIcon from '../../../../FontAwesomeIcon'\nimport { arrayOfSelectedItemIcons } from '../../../../../utils/customPropTypes'\n\nconst SelectedItem = ({\n item,\n displayName,\n onClickSelectedItem,\n icons\n}) => {\n const className = classNames(\n styles.selectedItem,\n 'u-display-block'\n )\n\n const handleClickSelectedItem = () => {\n onClickSelectedItem(item)\n }\n\n const hasIcons = icons && !isEmpty(icons)\n\n /* eslint-disable jsx-a11y/click-events-have-key-events */\n return (\n \n \n {hasIcons && map(icons, ({ name: alt, url: src }) => (\n {alt}\n ))}\n
    {displayName}
    \n
    \n )\n /* eslint-enable jsx-a11y/click-events-have-key-events */\n}\n\nSelectedItem.propTypes = {\n displayName: PropTypes.string.isRequired,\n icons: arrayOfSelectedItemIcons,\n // eslint-disable-next-line react/forbid-prop-types\n item: PropTypes.object.isRequired,\n onClickSelectedItem: PropTypes.func.isRequired\n}\n\nSelectedItem.defaultProps = {\n icons: null\n}\n\nexport default SelectedItem\n","import { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport Tooltip from 'rc-tooltip'\n\nimport ListItem from '../../Filter/Pane/ListItem'\nimport MultiSelectIcon from '../../Filter/Pane/ListItem/MultiSelectIcon'\nimport { channelObject } from '../../../../utils/customPropTypes'\nimport { TOOLTIP_MOUSE_ENTER_DELAY } from '../../../../utils/constants'\n\nimport styles from './styles.module.scss'\n\nconst ChannelsListItem = (\n {\n channel,\n isGroupingBySiteId,\n isSelected,\n onClick,\n selectedChannels\n }\n) => {\n let tooltipText\n\n const isDisabled = !isSelected\n && isGroupingBySiteId\n && selectedChannels.length >= 1\n\n if (isDisabled) {\n tooltipText = 'Can only select 1 channel when grouping by Site ID'\n }\n\n return (\n \n {channel.iconUrl && (\n \n )}\n\n {channel.name}}\n placement=\"top\"\n >\n
    {channel.name}
    \n \n \n )}\n onClick={onClick}\n selectionIcon={}\n tooltipText={tooltipText}\n />\n )\n}\n\nChannelsListItem.propTypes = {\n channel: channelObject.isRequired,\n isGroupingBySiteId: PropTypes.bool.isRequired,\n isSelected: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n selectedChannels: PropTypes.arrayOf(PropTypes.number).isRequired\n}\n\nexport default ChannelsListItem\n","import { useMemo } from 'react'\nimport PropTypes from 'prop-types'\nimport { difference, map, xor } from 'lodash'\n\nimport QuickSelectorBtn from '../../Filter/Pane/QuickSelectorBtn'\n\nimport { arrayOfChannels } from '../../../../utils/customPropTypes'\nimport { isPresent } from '../../../../utils/helpers'\nimport { NON_PAID_CHANNEL_IDS } from './constants'\n\nconst PaidFilter = (\n {\n channels,\n isDisabled,\n onClick,\n selectedChannels\n }\n) => {\n const paidChannelIds = difference(map(channels, 'id'), NON_PAID_CHANNEL_IDS)\n\n if (paidChannelIds.length === 0) return null\n\n const hasSelectedChannels = isPresent(selectedChannels)\n\n const paidFilterSelected = useMemo(() => (\n hasSelectedChannels\n && xor(paidChannelIds, selectedChannels).length === 0\n ), [hasSelectedChannels, paidChannelIds, selectedChannels])\n\n return (\n
    \n onClick(paidChannelIds)}\n >\n Paid Channels\n \n
    \n )\n}\n\nPaidFilter.propTypes = {\n channels: arrayOfChannels.isRequired,\n isDisabled: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n selectedChannels: PropTypes.arrayOf(PropTypes.number).isRequired\n}\n\nexport default PaidFilter\n","import { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport Tooltip from 'rc-tooltip'\n\nimport ListItem from '../../Filter/Pane/ListItem'\nimport MultiSelectIcon from '../../Filter/Pane/ListItem/MultiSelectIcon'\nimport { countryObject } from '../../../../utils/customPropTypes'\nimport { TOOLTIP_MOUSE_ENTER_DELAY } from '../../../../utils/constants'\n\nimport styles from './styles.module.scss'\n\nconst CountriesListItem = (\n {\n country,\n isSelected,\n onClick\n }\n) => (\n \n
    {country.emojiFlag}
    \n\n {country.name}}\n placement=\"top\"\n >\n
    {country.name}
    \n \n \n )}\n onClick={onClick}\n selectionIcon={}\n />\n)\n\nCountriesListItem.propTypes = {\n country: countryObject.isRequired,\n isSelected: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired\n}\n\nexport default CountriesListItem\n","import PropTypes from 'prop-types'\n\nimport Filter from '../Filter'\nimport FontAwesomeIcon from '../../FontAwesomeIcon'\nimport Label from '../Filter/Label'\nimport ListItem from './ListItem'\nimport Pane from '../Filter/Pane'\n\nimport { useReportingFiltersState } from '../../../contexts/ReportingFilters'\nimport { oneOfSelectableGranularities } from '../../../utils/customPropTypes'\n\nconst GranularityFilter = (\n {\n hasFilterChanges,\n isCollapsed,\n isOpen,\n onChange,\n onCloseClick,\n onLabelClick,\n selectedGranularity\n }\n) => {\n const { granularities } = useReportingFiltersState()\n\n const granularity = granularities.find(gran => gran.id === selectedGranularity)\n\n const listItems = granularities.map(gran => (\n onChange(gran.id)}\n />\n ))\n\n return (\n }\n hasFilterChanges={hasFilterChanges}\n isCollapsed={isCollapsed}\n isDisabled={false}\n isOpen={isOpen}\n isTooltipDisabled={!isCollapsed}\n labelTitle=\"Granularity\"\n onClick={onLabelClick}\n tooltipText={`Granularity - ${granularity.name}`}\n >\n {granularity.name}\n \n )}\n pane={(\n \n {listItems}\n \n )}\n />\n )\n}\n\nGranularityFilter.propTypes = {\n hasFilterChanges: PropTypes.bool.isRequired,\n isCollapsed: PropTypes.bool.isRequired,\n isOpen: PropTypes.bool.isRequired,\n onChange: PropTypes.func.isRequired,\n onCloseClick: PropTypes.func.isRequired,\n onLabelClick: PropTypes.func.isRequired,\n selectedGranularity: oneOfSelectableGranularities.isRequired\n}\n\nexport default GranularityFilter\n","import PropTypes from 'prop-types'\n\nimport ListItem from '../../Filter/Pane/ListItem'\nimport SingleSelectIcon from '../../Filter/Pane/ListItem/SingleSelectIcon'\n\nimport { granularityObject } from '../../../../utils/customPropTypes'\n\nconst GranularityListItem = (\n {\n granularity,\n isSelected,\n onClick\n }\n) => (\n }\n />\n)\n\nGranularityListItem.propTypes = {\n granularity: granularityObject.isRequired,\n isSelected: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired\n}\n\nexport default GranularityListItem\n","import PropTypes from 'prop-types'\n\nimport Filter from '../Filter'\nimport FontAwesomeIcon from '../../FontAwesomeIcon'\nimport Label from '../Filter/Label'\nimport ListItem from './ListItem'\nimport Pane from '../Filter/Pane'\nimport TargetingTags from './TargetingTags'\n\nimport { useReportingFiltersState } from '../../../contexts/ReportingFilters'\n\nconst GroupByFilter = (\n {\n hasFilterChanges,\n isCollapsed,\n isOpen,\n onChange,\n onCloseClick,\n onLabelClick,\n selectedChannels,\n selectedGroupBy\n }\n) => {\n const { canGroupByTargetingTags, groupBys, targetingTags } = useReportingFiltersState()\n\n const groupableItems = [\n ...groupBys,\n ...targetingTags\n ]\n\n const currentGroupBy = groupableItems.find(({ id }) => id === selectedGroupBy)\n\n const listItems = groupBys.map(groupBy => (\n onChange(groupBy.id)}\n selectedChannels={selectedChannels}\n />\n ))\n\n if (canGroupByTargetingTags && targetingTags.length > 0) {\n listItems.push(\n \n )\n }\n\n return (\n }\n hasFilterChanges={hasFilterChanges}\n isCollapsed={isCollapsed}\n isDisabled={false}\n isOpen={isOpen}\n isTooltipDisabled={!isCollapsed}\n labelTitle=\"Group By\"\n onClick={onLabelClick}\n tooltipText={`Group By - ${currentGroupBy.name}`}\n >\n {currentGroupBy.name}\n \n )}\n pane={(\n \n {listItems}\n \n )}\n />\n )\n}\n\nGroupByFilter.propTypes = {\n hasFilterChanges: PropTypes.bool.isRequired,\n isCollapsed: PropTypes.bool.isRequired,\n isOpen: PropTypes.bool.isRequired,\n onChange: PropTypes.func.isRequired,\n onCloseClick: PropTypes.func.isRequired,\n onLabelClick: PropTypes.func.isRequired,\n selectedChannels: PropTypes.arrayOf(PropTypes.number).isRequired,\n selectedGroupBy: PropTypes.string.isRequired\n}\n\nexport default GroupByFilter\n","import PropTypes from 'prop-types'\nimport { useLocation } from 'react-router-dom'\n\nimport { getReportPageFromPathname } from '../../../../contexts/ReportingFilters'\nimport {\n CREATIVE_GROUP_BY_ID_STR,\n CREATIVES_REPORT_STR,\n CUSTOM_REPORT_STR,\n SITE_ID_GROUP_BY_ID_STR\n} from '../../../../contexts/ReportingFilters/constants'\nimport ListItem from '../../Filter/Pane/ListItem'\nimport SingleSelectIcon from '../../Filter/Pane/ListItem/SingleSelectIcon'\n\nconst GroupByListItem = ({\n groupBy,\n isSelected,\n onClick,\n selectedChannels\n}) => {\n let tooltipText\n\n const { pathname } = useLocation()\n\n const reportPage = getReportPageFromPathname(pathname)\n\n const isDisabledSiteId =\n groupBy.id === SITE_ID_GROUP_BY_ID_STR &&\n (selectedChannels.length > 1 || reportPage === CUSTOM_REPORT_STR)\n\n const isDisabledCreative =\n groupBy.id === CREATIVE_GROUP_BY_ID_STR &&\n reportPage !== CREATIVES_REPORT_STR\n\n const isDisabled = isDisabledSiteId || isDisabledCreative\n\n if (isDisabledSiteId) {\n tooltipText =\n selectedChannels.length > 1\n ? 'Must select only 1 Channel to group by Site ID'\n : \"Can't group by Site ID for custom events\"\n } else if (isDisabledCreative) {\n tooltipText = 'Only available in creatives report'\n }\n\n return (\n }\n tooltipText={tooltipText}\n />\n )\n}\n\nGroupByListItem.propTypes = {\n groupBy: PropTypes.shape({ id: PropTypes.string, name: PropTypes.string })\n .isRequired,\n isSelected: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n selectedChannels: PropTypes.arrayOf(PropTypes.number).isRequired\n}\n\nexport default GroupByListItem\n","import { Fragment } from 'react'\nimport PropTypes from 'prop-types'\n\nimport ListItem from '../../Filter/Pane/ListItem'\nimport SingleSelectIcon from '../../Filter/Pane/ListItem/SingleSelectIcon'\n\nimport { useReportingFiltersState } from '../../../../contexts/ReportingFilters'\n\nimport styles from './styles.module.scss'\n\nconst TargetingTags = (\n {\n onChange,\n selectedGroupBy\n }\n) => {\n const { targetingTags } = useReportingFiltersState()\n\n return (\n \n
    \n Targeting Tags\n
    \n\n {targetingTags.map(targetingTag => (\n onChange(targetingTag.id)}\n selectionIcon={}\n />\n ))}\n
    \n )\n}\n\nTargetingTags.propTypes = {\n onChange: PropTypes.func.isRequired,\n selectedGroupBy: PropTypes.string.isRequired\n}\n\nexport default TargetingTags\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport styles from './styles.module.scss'\n\nconst Toolbar = ({ className, children }) => (\n
    \n {children}\n
    \n)\n\nToolbar.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string\n}\n\nToolbar.defaultProps = {\n className: null\n}\n\nexport default Toolbar\n","import { Fragment, useEffect } from 'react'\nimport { Route } from 'react-router-dom'\n\nimport PublisherPage from './PublisherPage'\nimport ReportingContent from '../../ReportingContent'\nimport ReportingSidebar from '../../ReportingSidebar'\n\nimport useFlashMessagesHook from '../../../hooks/useFlashMessagesHook'\n// Note: disabled nav link updates for issue TENJIN-11310\n// import useUpdateNavLinksFromFilterEffect from '../../../hooks/useUpdateNavLinksFromFiltersHook'\n\nconst AdMonetizationPage = ({ match }) => {\n useEffect(() => {\n document.title = `Ad Revenue Reports - Tenjin`\n })\n\n useFlashMessagesHook()\n\n // Note: disabled nav link updates for issue TENJIN-11310\n // useUpdateNavLinksFromFilterEffect()\n\n return (\n \n \n\n \n\n \n \n \n )\n}\n\nexport default AdMonetizationPage\n","import { Fragment } from 'react'\n\nimport GroupedSummaryTable from '../../../GroupedSummaryTable'\nimport KPIDrilldownAdRevenue from './KPIDrilldown/AdRevenue'\nimport KPITabsAdRevenue from './KPITabs/AdRevenue'\nimport KPITabsEffectiveCost from './KPITabs/EffectiveCost'\n\nconst PublisherPage = () => (\n \n \n\n \n\n \n\n \n \n)\n\nexport default PublisherPage\n","import KPIDrilldown from '../../../../../KPIDrilldown'\n\nimport { METRIC_DEFINITION_KEYS } from './constants'\n\nconst AdRevenue = () => (\n \n)\n\nexport default AdRevenue\n","import KPITabsWrapper from '../../../../../KPITabs/wrapper'\n\nimport { SUMMARY_BLOCKS, TABS } from './constants'\n\nconst AdRevenue = () => (\n \n)\n\nexport default AdRevenue\n","import KPITabsWrapper from '../../../../../KPITabs/wrapper'\n\nimport { SUMMARY_BLOCKS, TABS } from './constants'\n\nconst EffectiveCost = () => (\n \n)\n\nexport default EffectiveCost\n","import PropTypes from 'prop-types'\n\nimport styles from './styles.module.scss'\nimport Dropdown from '../../../Dropdown'\n\nimport {\n appObject,\n channelObject,\n arrayOfAppObjects,\n arrayOfChannels\n} from '../../../../utils/customPropTypes'\n\nconst CampaignFilters = ({\n apps,\n channels,\n lookbackWindows,\n selectedApp,\n selectedChannel,\n selectedLookback,\n onChangeSelectedApp,\n onChangeSelectedChannel,\n onChangeSelectedLookback\n}) => (\n
    \n option.name}\n getOptionValue={option => option.id}\n isClearable={false}\n isSearchable\n onChange={onChangeSelectedApp}\n options={apps}\n value={selectedApp}\n placeholder=\"Select an app\"\n />\n option.name}\n getOptionValue={option => option.id}\n isClearable={false}\n isSearchable\n onChange={onChangeSelectedChannel}\n options={channels}\n value={selectedChannel}\n placeholder=\"Select a channel\"\n />\n option.label}\n getOptionValue={option => option.value}\n isClearable={false}\n isSearchable\n onChange={onChangeSelectedLookback}\n options={lookbackWindows}\n value={selectedLookback}\n />\n
    \n)\n\nCampaignFilters.propTypes = {\n apps: arrayOfAppObjects,\n channels: arrayOfChannels,\n lookbackWindows: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.number.isRequired\n })\n ).isRequired,\n onChangeSelectedApp: PropTypes.func.isRequired,\n onChangeSelectedChannel: PropTypes.func.isRequired,\n onChangeSelectedLookback: PropTypes.func.isRequired,\n selectedApp: appObject,\n selectedChannel: channelObject,\n selectedLookback: PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.number.isRequired\n })\n}\n\nCampaignFilters.defaultProps = {\n apps: [],\n channels: [],\n selectedApp: null,\n selectedChannel: null,\n selectedLookback: null\n}\n\nexport default CampaignFilters\n","import { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport Modal from 'react-modal'\n\nimport styles from './styles.module.scss'\nimport SearchInput from '../../../SearchInputV2'\nimport ConfirmationModalContent from '../../../ConfirmationModalContent'\nimport { defaultModalStyles } from '../../../../utils/modal'\nimport CampaignColumns from './CampaignColumns'\n\n/*\n eslint-disable jsx-a11y/interactive-supports-focus,\n jsx-a11y/click-events-have-key-events\n*/\nconst StandaloneCampaignMergeTool = ({\n closeModal,\n isMergeable,\n isModalOpen,\n isEmptyState,\n isError,\n isMerging,\n isLoading,\n onCancelMerge,\n onChangeSearchText,\n onClickMergeCampaigns,\n onClickReportedCampaign,\n onClickTrackedCampaign,\n onConfirmMerge,\n reportedCampaigns,\n searchText,\n selectedReportedCampaign,\n selectedTrackedCampaign,\n setSearchText,\n trackedCampaigns\n}) => (\n \n
    \n
    \n
    Raw Campaigns
    \n
    \n {\n 'Consolidate campaigns by merging one Tenjin campaign with tracked data'\n + ' to its matching Ad Network campaign with reported data.'\n }\n
    \n
    \n
    \n
    \n \n
    \n \n
    \n \n \n \n
    \n)\n/*\n eslint-enable jsx-a11y/interactive-supports-focus,\n jsx-a11y/click-events-have-key-events\n*/\n\nStandaloneCampaignMergeTool.propTypes = {\n closeModal: PropTypes.func.isRequired,\n isEmptyState: PropTypes.bool.isRequired,\n isError: PropTypes.bool.isRequired,\n isLoading: PropTypes.bool.isRequired,\n isMergeable: PropTypes.bool.isRequired,\n isMerging: PropTypes.bool.isRequired,\n isModalOpen: PropTypes.bool,\n onCancelMerge: PropTypes.func.isRequired,\n onChangeSearchText: PropTypes.func.isRequired,\n onClickMergeCampaigns: PropTypes.func.isRequired,\n onClickReportedCampaign: PropTypes.func.isRequired,\n onClickTrackedCampaign: PropTypes.func.isRequired,\n onConfirmMerge: PropTypes.func.isRequired,\n reportedCampaigns: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n reportedInstalls: PropTypes.number,\n spend: PropTypes.number\n })\n ),\n searchText: PropTypes.string,\n selectedReportedCampaign: PropTypes.string,\n selectedTrackedCampaign: PropTypes.string,\n setSearchText: PropTypes.func.isRequired,\n trackedCampaigns: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n reportedInstalls: PropTypes.number,\n spend: PropTypes.number\n })\n )\n}\n\nStandaloneCampaignMergeTool.defaultProps = {\n isModalOpen: false,\n reportedCampaigns: [],\n searchText: '',\n selectedReportedCampaign: null,\n selectedTrackedCampaign: null,\n trackedCampaigns: []\n}\n\nexport default StandaloneCampaignMergeTool\n","import { Fragment } from 'react'\nimport classNames from 'classnames'\nimport PropTypes from 'prop-types'\nimport Tooltip from 'rc-tooltip'\n\nimport styles from './styles.module.scss'\nimport { formatNumberForDisplay } from '../../../../ReportingDataMetricValueDisplay/helpers'\nimport FontAwesomeIcon from '../../../../FontAwesomeIcon'\nimport { TOOLTIP_MOUSE_ENTER_DELAY } from '../../../../../utils/constants'\nimport CampaignRowsSkeleton from './skeleton'\n\nconst emptyStateMessage = (\n
    \n Select an app and channel to view
    campaigns eligible for merging.\n
    \n)\n\nconst missingCampaignsMessage = (\n
    \n No campaigns found.\n
    \n)\n\n/*\n eslint-disable jsx-a11y/interactive-supports-focus,\n jsx-a11y/click-events-have-key-events\n*/\nconst CampaignColumns = ({\n isError,\n isLoading,\n isMerging,\n isMergeable,\n isEmptyState,\n onClickMergeCampaigns,\n onClickReportedCampaign,\n onClickTrackedCampaign,\n reportedCampaigns,\n selectedReportedCampaign,\n selectedTrackedCampaign,\n trackedCampaigns\n}) => {\n const isTrackedCampaignSelected = selectedTrackedCampaign !== null\n const isReportedCampaignSelected = selectedReportedCampaign !== null\n\n const canClickMerge = isMergeable && !isLoading && !isMerging\n const showSelectionPrompt = !isEmptyState && !isLoading && !isMerging\n\n const isMissingTrackedCampaigns = !isEmptyState\n && !isLoading\n && !isMerging\n && trackedCampaigns.length === 0\n\n const isMissingReportedCampaigns = !isEmptyState\n && !isLoading\n && !isMerging\n && reportedCampaigns.length === 0\n\n return (\n \n
    \n
    \n
    \n TENJIN CAMPAIGNS{' '}\n {showSelectionPrompt && (\n isTrackedCampaignSelected ? (\n 1 Selected\n ) : (\n Select 1\n )\n )}\n
    \n
    \n
    \n
    Campaign Name
    \n
    Tracked Installs
    \n
    \n {isEmptyState && emptyStateMessage}\n {isMissingTrackedCampaigns && missingCampaignsMessage}\n {!isEmptyState && (\n (isLoading || isMerging) ? (\n \n ) : (\n trackedCampaigns.map(({ id, name, trackedInstalls }) => (\n onClickTrackedCampaign(id)}\n role=\"button\"\n >\n
    \n {name}}\n placement=\"top\"\n >\n {name}\n \n
    \n {id}\n
    \n
    {trackedInstalls || '-'}
    \n
    \n ))\n )\n )}\n
    \n
    \n
    \n
    \n AD NETWORK CAMPAIGNS{' '}\n {showSelectionPrompt && (\n isReportedCampaignSelected ? (\n 1 Selected\n ) : (\n Select 1\n )\n )}\n
    \n
    \n
    \n
    Campaign Name
    \n
    Reported Installs
    \n
    Spend
    \n
    \n {isEmptyState && emptyStateMessage}\n {isMissingReportedCampaigns && missingCampaignsMessage}\n {!isEmptyState && (\n (isLoading || isMerging) ? (\n \n ) : (\n reportedCampaigns.map(({\n id,\n name,\n reportedInstalls,\n spend\n }) => (\n onClickReportedCampaign(id)}\n role=\"button\"\n >\n
    \n {name}}\n placement=\"top\"\n >\n {name}\n \n
    \n {id}\n
    \n
    \n {reportedInstalls || '-'}\n
    \n
    \n {spend ? (\n \n ${formatNumberForDisplay({ number: spend, numberOfDigits: 2 })}\n \n ) : '-'}\n
    \n
    \n ))\n )\n )}\n
    \n \n \n {isMerging ? (\n \n \n \n ) : (\n {}}\n role=\"button\"\n >\n {isError ? 'Something went wrong.' : 'Merge Campaigns'}\n \n )}\n
    \n )\n}\n/*\n eslint-enable jsx-a11y/interactive-supports-focus,\n jsx-a11y/click-events-have-key-events\n*/\n\nCampaignColumns.propTypes = {\n isEmptyState: PropTypes.bool.isRequired,\n isError: PropTypes.bool.isRequired,\n isLoading: PropTypes.bool.isRequired,\n isMergeable: PropTypes.bool.isRequired,\n isMerging: PropTypes.bool.isRequired,\n onClickMergeCampaigns: PropTypes.func.isRequired,\n onClickReportedCampaign: PropTypes.func.isRequired,\n onClickTrackedCampaign: PropTypes.func.isRequired,\n reportedCampaigns: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n reportedInstalls: PropTypes.number,\n spend: PropTypes.number\n })\n ),\n selectedReportedCampaign: PropTypes.string,\n selectedTrackedCampaign: PropTypes.string,\n trackedCampaigns: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n reportedInstalls: PropTypes.number,\n spend: PropTypes.number\n })\n )\n}\n\nCampaignColumns.defaultProps = {\n reportedCampaigns: [],\n selectedReportedCampaign: null,\n selectedTrackedCampaign: null,\n trackedCampaigns: []\n}\n\nexport default CampaignColumns\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport { Fragment, useState } from 'react'\nimport AppDetail from './AppDetail'\nimport EnableSdkKeyButton from './EnableSdkKeyButton'\nimport { apiKeyObject, apiKeyAppObject, apiKeyDateObject } from '../../../../../../../../utils/customPropTypes'\nimport { getSdkKeyUpdatedAtDate, getLastSeenDateString } from './helpers'\nimport styles from './styles.module.scss'\n\nconst SdkKeyRow = ({\n app,\n handleDeleteRow,\n lastSeenDate,\n sdkKey\n}) => {\n const [isDisabled, setIsDisabled] = useState(false)\n\n const orgIcon = () => (\n
    \n \n Organization key\n
    \n )\n\n const handleDeleteRowError = () => {\n setIsDisabled(true)\n }\n\n return (\n \n \n \n \n \n \n
    \n {sdkKey.name}\n
    \n
    \n {sdkKey.authenticationToken}\n
    \n \n \n {app ? : orgIcon()}\n \n \n {getSdkKeyUpdatedAtDate(sdkKey)}\n \n \n {getLastSeenDateString(lastSeenDate)}\n \n \n {\n isDisabled && (\n \n \n This SDK key ({sdkKey.authenticationToken}) cannot be enabled, likely due\n to the app already having too many enabled SDK keys. If this key still needs to be\n enabled, check the app page and disable other unused SDK keys before proceeding.\n \n \n )\n }\n
    \n )\n}\n\nSdkKeyRow.propTypes = {\n app: apiKeyAppObject,\n handleDeleteRow: PropTypes.func.isRequired,\n lastSeenDate: apiKeyDateObject,\n sdkKey: apiKeyObject.isRequired\n}\n\nSdkKeyRow.defaultProps = {\n app: null,\n lastSeenDate: {}\n}\n\nexport default SdkKeyRow\n","import classNames from 'classnames'\nimport { apiKeyAppObject } from '../../../../../../../../../utils/customPropTypes'\nimport PlatformIcon from '../../../../../../../../PlatformIcon'\nimport styles from './styles.module.scss'\nimport { DASHBOARD_ADMIN_APPS_URL, DASHBOARD_APPS_URL } from './constants'\n\nconst AppDetail = ({\n app\n}) => {\n const appAdminUrl = `${DASHBOARD_ADMIN_APPS_URL}${app.id}/edit`\n const appUrl = `${DASHBOARD_APPS_URL}${app.id}`\n\n return (\n \n )\n}\n\nAppDetail.propTypes = {\n app: apiKeyAppObject.isRequired\n}\n\nexport default AppDetail\n","import PropTypes from 'prop-types'\nimport { useState } from 'react'\nimport { post } from '../../../../../../../../../utils/request'\nimport { noop } from '../../../../../../../../../utils/helpers'\nimport { API_KEY_BASE_URL } from './constants'\n\nconst EnableSdkKeyButton = ({\n handleDeleteRow,\n handleDeleteRowError,\n sdkKeyId\n}) => {\n const enableUrl = `${API_KEY_BASE_URL}${sdkKeyId}/enable`\n const [isUpdating, setIsUpdating] = useState(false)\n const handleClick = async () => {\n setIsUpdating(true)\n try {\n await post(enableUrl)\n handleDeleteRow()\n } catch (error) {\n handleDeleteRowError()\n setIsUpdating(false)\n }\n }\n\n return (\n \n Enable\n \n )\n}\n\nEnableSdkKeyButton.propTypes = {\n handleDeleteRow: PropTypes.func.isRequired,\n handleDeleteRowError: PropTypes.func.isRequired,\n sdkKeyId: PropTypes.number.isRequired\n}\n\nexport default EnableSdkKeyButton\n","import React, { useState, Fragment } from 'react'\nimport { isEmpty } from 'lodash'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport CancelButton from './CancelButton'\nimport EditButton from './EditButton'\nimport SaveButton from './SaveButton'\nimport CommissionValue from './CommissionValue'\nimport DateValue from './DateValue'\nimport { ERROR_MESSAGE, ESCAPE_KEYCODE } from './constants'\nimport {\n hasStarted,\n makeRequest,\n parseDeductionRecord,\n todayDateString\n} from './helpers'\nimport { revenueDeductionObject } from '../../../../../../utils/customPropTypes'\nimport { getNumberAsPercentage } from './CommissionValue/EditCommissionValueInput/helpers'\nimport ShowCommissionValue from './CommissionValue/ShowCommissionValue'\nimport styles from './styles.module.scss'\n\nconst AppStoreCommission = ({\n allowedDeductionValues,\n defaultDeduction,\n revenueDeduction\n}) => {\n const [deductionRecord, setDeductionRecord] = useState(revenueDeduction)\n\n const isNew = isEmpty(deductionRecord)\n\n const initialDeductionValue = isNew ? defaultDeduction : deductionRecord.deduction\n const initialEndDate = isNew ? '' : (deductionRecord.endDate || '')\n const initialStartDate = isNew ? todayDateString() : deductionRecord.startDate\n\n const [deduction, setDeduction] = useState(initialDeductionValue)\n const [errorMsg, setErrorMsg] = useState('')\n const [isEditing, setIsEditing] = useState(false)\n const [isUpdating, setIsUpdating] = useState(false)\n const [startDate, setStartDate] = useState(initialStartDate)\n const [endDate, setEndDate] = useState(initialEndDate)\n\n const baseURL = `${window.location.pathname}/revenue_deductions`\n\n const cancelEdit = () => {\n setDeduction(initialDeductionValue)\n setStartDate(initialStartDate)\n setEndDate(initialEndDate)\n setIsEditing(false)\n }\n\n const handleClickSave = async () => {\n setErrorMsg('')\n setIsUpdating(true)\n\n try {\n const data = { deduction, endDate, startDate }\n const response = await makeRequest({ baseURL, data, record: deductionRecord })\n setDeductionRecord(parseDeductionRecord(response))\n setIsEditing(false)\n } catch (error) {\n setErrorMsg(ERROR_MESSAGE)\n } finally {\n setIsUpdating(false)\n }\n }\n\n const actionButton = () => {\n if (!isEditing) {\n return \n }\n\n return (\n \n \n \n \n )\n }\n\n const handleKeyUp = event => {\n if (event.keyCode === ESCAPE_KEYCODE) {\n cancelEdit()\n }\n }\n\n const showWarning = !isEmpty(endDate) && defaultDeduction !== deduction\n\n const revertWarningClassName = classNames({\n [styles.warningRow]: showWarning,\n [styles.row]: showWarning,\n hidden: !showWarning\n })\n\n const showCurrentRevShare = !isEditing && startDate && !hasStarted(startDate)\n\n const currentRevShareRow = () => (\n \n \n
    \n \n
    \n \n \n
    \n Current app store commission\n
    \n \n \n )\n\n return (\n
    \n
    \n
    \n Set the App Store Commission for In-App Purchases and Subscriptions\n
    \n
    \n
    \n
    \n
    {errorMsg}
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n {showCurrentRevShare && currentRevShareRow()}\n \n \n \n \n \n \n
    \n App Store Commission\n \n Dates Valid\n \n  \n
    \n setDeduction(Number(newValue))}\n />\n \n
    \n \n
    \n
    \n {actionButton()}\n
    \n
    \n Automatically reverts to\n {' '}\n {getNumberAsPercentage(defaultDeduction)}%\n after end date\n
    \n
    \n )\n}\n\nAppStoreCommission.propTypes = {\n allowedDeductionValues: PropTypes.arrayOf(PropTypes.number),\n defaultDeduction: PropTypes.number.isRequired,\n revenueDeduction: revenueDeductionObject\n}\n\nAppStoreCommission.defaultProps = {\n allowedDeductionValues: [],\n revenueDeduction: {}\n}\n\nexport default AppStoreCommission\n","import PropTypes from 'prop-types'\n\nconst CancelButton = ({\n handleClickCancel,\n isUpdating\n}) => {\n const isDisabled = isUpdating\n\n return (\n \n Cancel\n \n )\n}\n\nCancelButton.propTypes = {\n handleClickCancel: PropTypes.func.isRequired,\n isUpdating: PropTypes.bool.isRequired\n}\n\nexport default CancelButton\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst EditButton = ({\n setIsEditing\n}) => (\n \n)\n\nEditButton.propTypes = {\n setIsEditing: PropTypes.func.isRequired\n}\n\nexport default EditButton\n","import PropTypes from 'prop-types'\nimport React from 'react'\n\nconst SaveButton = ({\n handleClickSave,\n isUpdating\n}) => {\n const isDisabled = isUpdating\n\n return (\n \n \n Save\n \n )\n}\n\nSaveButton.propTypes = {\n handleClickSave: PropTypes.func.isRequired,\n isUpdating: PropTypes.bool.isRequired\n}\n\nexport default SaveButton\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { isEmpty } from 'lodash'\nimport EditCommissionValueSelector from './EditCommissionValueSelector'\nimport EditCommissionValueInput from './EditCommissionValueInput'\nimport ShowCommissionValue from './ShowCommissionValue'\n\nconst CommissionValue = ({\n allowedDeductionValues,\n deduction,\n handleKeyUp,\n isEditing,\n setDeduction\n}) => {\n if (!isEditing) {\n return \n }\n\n if (isEmpty(allowedDeductionValues)) {\n return \n }\n\n return (\n \n )\n}\n\nCommissionValue.propTypes = {\n allowedDeductionValues: PropTypes.arrayOf(PropTypes.number).isRequired,\n deduction: PropTypes.number.isRequired,\n handleKeyUp: PropTypes.func.isRequired,\n isEditing: PropTypes.bool.isRequired,\n setDeduction: PropTypes.func.isRequired\n}\n\nexport default CommissionValue\n","import React, { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport { getDecimalByPercent } from '../../helpers'\nimport { isEqualFloat } from './helpers'\nimport RadioButton from '../../../../../../../RadioButton/RadioButton'\n\nconst EditCommissionValueSelector = ({\n allowedDeductionValues,\n deduction,\n handleKeyUp,\n setDeduction\n}) => (\n \n {allowedDeductionValues.map(allowedDeduction => (\n setDeduction(event.target.value)}\n onKeyUp={handleKeyUp}\n value={allowedDeduction.toString()}\n >\n {getDecimalByPercent(allowedDeduction)}\n \n ))}\n \n)\n\nEditCommissionValueSelector.propTypes = {\n allowedDeductionValues: PropTypes.arrayOf(PropTypes.number).isRequired,\n deduction: PropTypes.number.isRequired,\n handleKeyUp: PropTypes.func.isRequired,\n setDeduction: PropTypes.func.isRequired\n}\n\nexport default EditCommissionValueSelector\n","import React, { useState, useRef } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n MAX_DEDUCTION_PERCENT,\n MIN_DEDUCTION_PERCENT\n} from './constants'\nimport {\n getNumberAsPercentage,\n sanitizePercentage\n} from './helpers'\nimport styles from './styles.module.scss'\n\nconst EditCommissionValueInput = ({\n deduction,\n setDeduction\n}) => {\n const ref = useRef(null)\n\n const handleOnBlur = () => {\n const { current: { value } } = ref\n\n const sanitizedValue = sanitizePercentage(value)\n\n setDeduction(sanitizedValue / MAX_DEDUCTION_PERCENT)\n ref.current.value = sanitizedValue\n }\n\n const defaultPercentValue = getNumberAsPercentage(deduction)\n\n return (\n
    \n \n
    %
    \n
    \n )\n}\n\nEditCommissionValueInput.propTypes = {\n deduction: PropTypes.number.isRequired,\n setDeduction: PropTypes.func.isRequired\n}\n\nexport default EditCommissionValueInput\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport EditDateValue from './EditDateValue'\nimport ShowDateValue from './ShowDateValue'\n\nconst DateValue = ({\n endDate,\n handleKeyUp,\n isEditing,\n isNew,\n setEndDate,\n setStartDate,\n startDate\n}) => {\n if (isEditing) {\n return (\n \n )\n }\n\n if (isNew) {\n return 'Ongoing'\n }\n\n return \n}\n\nDateValue.propTypes = {\n endDate: PropTypes.string.isRequired,\n handleKeyUp: PropTypes.func.isRequired,\n isEditing: PropTypes.bool.isRequired,\n isNew: PropTypes.bool.isRequired,\n setEndDate: PropTypes.func.isRequired,\n setStartDate: PropTypes.func.isRequired,\n startDate: PropTypes.string.isRequired\n}\n\nexport default DateValue\n","import React, { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { isEmpty } from 'lodash'\nimport classNames from 'classnames'\n\nimport { validDateRange, validDates } from './helpers'\nimport { todayDateString, hasStarted } from '../../helpers'\n\nimport styles from './styles.module.scss'\n\nconst EditDateValue = ({\n endDate,\n handleKeyUp,\n setEndDate,\n setStartDate,\n startDate\n}) => {\n const initialInputType = isEmpty(endDate) ? 'text' : 'date'\n\n const [endDateInputType, setEndDateInputType] = useState(initialInputType)\n\n const today = todayDateString()\n const minStartDate = today\n const maxStartDate = endDate\n const minEndDate = hasStarted(startDate) ? today : startDate\n\n const handleStartDateUpdate = event => {\n const hasValidDates = validDateRange(event.target.value, endDate)\n if (hasValidDates) {\n setStartDate(event.target.value)\n }\n }\n\n const handleEndDateChange = event => {\n const hasValidDates = validDates(startDate, event.target.value)\n if (hasValidDates) {\n setEndDate(event.target.value)\n }\n }\n\n const handleEndDateBlur = () => {\n const hasValidDateRange = validDateRange(startDate, endDate)\n if (!hasValidDateRange) {\n setEndDate('')\n }\n\n const shouldDisplayPlaceholder = isEmpty(endDate)\n if (shouldDisplayPlaceholder) {\n setEndDateInputType('text')\n }\n }\n\n return (\n
    \n
    \n \n
    \n
    \n to\n
    \n
    \n setEndDateInputType('date')}\n onKeyUp={handleKeyUp}\n placeholder=\"Ongoing\"\n type={endDateInputType}\n min={minEndDate}\n value={endDate}\n />\n
    \n
    \n )\n}\n\nEditDateValue.propTypes = {\n endDate: PropTypes.string.isRequired,\n handleKeyUp: PropTypes.func.isRequired,\n setEndDate: PropTypes.func.isRequired,\n setStartDate: PropTypes.func.isRequired,\n startDate: PropTypes.string.isRequired\n}\n\nexport default EditDateValue\n","import React, { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport { formatDate } from './helpers'\n\nconst ShowDateValue = ({\n endDate,\n startDate\n}) => (\n \n
    \n {formatDate(startDate)}\n
    \n
    \n -\n
    \n
    \n {formatDate(endDate, 'Ongoing')}\n
    \n
    \n)\n\nShowDateValue.propTypes = {\n endDate: PropTypes.string.isRequired,\n startDate: PropTypes.string.isRequired\n}\n\nexport default ShowDateValue\n","import { Fragment, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { find, includes } from 'lodash'\n\nimport { getNavigationOptions } from './helpers'\n\nimport LineTabNavigation from '../../../../../LineTabNavigation'\nimport AppSelector from '../../../../../AppSelector'\n\nimport { arrayOfAppObjects, appObject } from '../../../../../../utils/customPropTypes'\nimport { deepCamelKeys, replaceSubstringInUrlAndPushState } from '../../../../../../utils/helpers'\nimport {\n useAppIntegrationDispatch,\n useAppIntegrationState\n} from '../../../../../../contexts/AppIntegrations'\n\nconst TabNavigation = ({\n app,\n apps: appsProp,\n setIsLoading,\n isAsync\n}) => {\n const currentPath = window.location.pathname\n\n const apps = deepCamelKeys(appsProp)\n\n const appMissing = !includes(apps.map(app => app.id), app.id)\n if (appMissing) {\n apps.push(app)\n }\n\n const [options, setOptions] = useState(getNavigationOptions({ app, setIsLoading }))\n\n if (isAsync) {\n const { currentApp } = useAppIntegrationState()\n const appIntegrationDispatch = useAppIntegrationDispatch()\n\n const handleChangeAppAsynchronously = selectedApp => {\n setOptions(getNavigationOptions({ app: selectedApp, setIsLoading }))\n appIntegrationDispatch({ payload: selectedApp, type: 'UPDATE_CURRENT_APP' })\n // TODO: [nafeu] deprecate this and anywhere it is used in favor of react-router-dom\n replaceSubstringInUrlAndPushState({\n currentSubstring: currentApp.id,\n newSubstring: selectedApp.id\n })\n }\n\n return (\n \n \n \n \n )\n }\n\n const { handleChangeAppRedirect } = find(options, option => option.isActive()) || {}\n\n return (\n \n \n \n \n )\n}\n\nTabNavigation.propTypes = {\n app: appObject.isRequired,\n apps: arrayOfAppObjects.isRequired,\n isAsync: PropTypes.bool,\n setIsLoading: PropTypes.func\n}\n\nTabNavigation.defaultProps = {\n isAsync: false,\n setIsLoading: () => {}\n}\n\nexport default TabNavigation\n","import classNames from 'classnames'\nimport PropTypes from 'prop-types'\nimport Tooltip from 'rc-tooltip'\nimport { Fragment } from 'react'\n\nimport {\n useAppIntegrationDispatch,\n useAppIntegrationState\n} from '../../../../../../contexts/AppIntegrations'\nimport { TOOLTIP_MOUSE_ENTER_DELAY } from '../../../../../../utils/constants'\nimport ChannelSelector from '../../../../../ChannelSelector'\nimport FontAwesomeIcon from '../../../../../FontAwesomeIcon'\nimport ToggleButton from '../../../../../ToggleButton'\nimport { TABS } from '../constants'\nimport { getAttributionTabUrl } from '../helpers'\nimport AdNetworkInstructions from './AdNetworkInstructions'\nimport AppChannelInstructions from './AppChannelInstructions'\nimport AppInstructions from './AppInstructions'\nimport AttributionTable from './AttributionTable'\nimport {\n ATTRIBUTION_TYPE_KEY_CLICK,\n ATTRIBUTION_TYPE_KEY_IMPRESSION,\n ATTRIBUTION_WINDOW_LEVEL_KEY_APP,\n ATTRIBUTION_WINDOW_LEVEL_KEY_APP_CHANNEL,\n TEXT_APP,\n TEXT_APP_CHANNEL_ATTRIBUTION_WINDOW,\n TEXT_ATTRIBUTION_WINDOW,\n TEXT_CUSTOM_ATTRIBUTION_WINDOW_NOT_SUPPORTED,\n TEXT_OVERRIDE_APP_SETTINGS,\n TEXT_OVERRIDE_APP_SETTINGS_TOOLTIP\n} from './constants'\nimport { getChannelsFilteredByAdSpend } from './helpers'\nimport useUpdateAttributionSettings from './hooks/useUpdateAttributionSetting'\nimport styles from './styles.module.scss'\n\nconst AttributionTab = () => {\n const {\n currentAppChannelOverrideToggleOn,\n currentChannel,\n currentApp,\n channels\n } = useAppIntegrationState()\n\n const {\n resetAppChannelAttributionWindow,\n setDefaultAppChannelAttributionWindow\n } = useUpdateAttributionSettings()\n\n const handleToggleOverideAppSettings = () => {\n if (currentAppChannelOverrideToggleOn) {\n resetAppChannelAttributionWindow()\n } else {\n setDefaultAppChannelAttributionWindow()\n }\n }\n\n const appIntegrationDispatch = useAppIntegrationDispatch()\n\n const channelsFilteredByAdSpend = getChannelsFilteredByAdSpend(channels)\n\n const handleChangeChannel = channel => {\n const url = getAttributionTabUrl({\n actionId: TABS.ATTRIBUTION,\n appId: currentApp.id,\n channelId: channel.custom ? channel.shortId : channel.id\n })\n\n window.history.pushState({}, '', url)\n appIntegrationDispatch({ payload: channel, type: 'UPDATE_CURRENT_CHANNEL' })\n }\n\n const supportCustomAttributionWindows =\n currentChannel?.customAttributionWindows || false\n\n const AttributionPanel = ({ title, body }) => (\n
    \n
    \n
    {title}
    \n
    \n
    {body}
    \n
    \n )\n\n AttributionPanel.propTypes = {\n body: PropTypes.node.isRequired,\n title: PropTypes.node.isRequired\n }\n\n const CustomAttributionWindowNotSupportedMessage = () => {\n const adNetworkName = currentChannel?.name || ''\n return (\n
    \n \n \n \n {adNetworkName} {TEXT_CUSTOM_ATTRIBUTION_WINDOW_NOT_SUPPORTED}\n
    \n )\n }\n\n const AttributionPanelTitle = () => (\n
    \n {TEXT_APP}\n \n \n \n {TEXT_APP_CHANNEL_ATTRIBUTION_WINDOW}\n
    \n )\n\n const AttributionWindowSupported = () => (\n \n \n
    \n \n {TEXT_OVERRIDE_APP_SETTINGS}\n {TEXT_OVERRIDE_APP_SETTINGS_TOOLTIP}}\n placement=\"top\"\n >\n
    \n \n
    \n \n
    \n \n }\n body={\n \n {currentChannel?.selfAttributing && }\n \n \n \n }\n />\n )\n\n const AttributionWindowNotSupported = () => (\n \n \n \n }\n body={\n \n \n \n }\n />\n )\n\n return (\n
    \n \n \n \n \n \n }\n />\n \n \n {currentChannel && supportCustomAttributionWindows && (\n \n )}\n {currentChannel && !supportCustomAttributionWindows && (\n \n )}\n
    \n )\n}\n\nexport default AttributionTab\n","import classNames from 'classnames'\nimport {\n APP_INTEGRATION_PATH, TEXT_CHANNELS, TEXT_CHANNEL_SELECTOR_TITLE,\n TEXT_CHANNEL_SELECTOR_MESSAGE, TEXT_CHANNEL_SELECTOR_MESSAGE_END\n} from '../constants'\nimport styles from '../styles.module.scss'\n\nconst AdNetworkInstructions = () => (\n
    \n
    \n {TEXT_CHANNEL_SELECTOR_TITLE}\n
    \n
    \n {TEXT_CHANNEL_SELECTOR_MESSAGE}\n \n {TEXT_CHANNELS}\n \n {TEXT_CHANNEL_SELECTOR_MESSAGE_END}\n
    \n
    \n)\nexport default AdNetworkInstructions\n","import classNames from 'classnames'\n\nimport FontAwesomeIcon from '../../../../../../FontAwesomeIcon'\nimport { TEXT_APP_CHANNEL_INSTRUCTIONS } from '../constants'\nimport styles from '../styles.module.scss'\n\nconst AppChannelInstructions = () => (\n
    \n \n \n \n {TEXT_APP_CHANNEL_INSTRUCTIONS}\n
    \n)\n\nexport default AppChannelInstructions\n","import { TEXT_APP_INSTRUCTIONS } from '../constants'\n\nconst AppInstructions = () => (\n
    \n {TEXT_APP_INSTRUCTIONS}\n
    \n)\nexport default AppInstructions\n","import { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport styles from '../styles.module.scss'\nimport { isBlank } from '../../../../../../../utils/helpers'\nimport FontAwesomeIcon from '../../../../../../FontAwesomeIcon'\n\nconst TableHeader = ({ typeLabel, levelLabel, adNetworkName }) => {\n const LabelDivider = () => (\n \n \n \n )\n return (\n
    \n
    \n {typeLabel}\n
    \n
    \n
    \n {!isBlank(adNetworkName)\n && {adNetworkName} }\n {levelLabel}\n
    \n
    \n )\n}\n\nTableHeader.propTypes = {\n adNetworkName: PropTypes.string,\n levelLabel: PropTypes.string.isRequired,\n typeLabel: PropTypes.string.isRequired\n}\n\nTableHeader.defaultProps = {\n adNetworkName: ''\n}\nexport default TableHeader\n","import PropTypes from 'prop-types'\nimport FontAwesomeIcon from '../../../../../../../FontAwesomeIcon'\nimport {\n TEXT_EDIT_BUTTON\n} from '../../constants'\n\nconst WindowEditEnabled = ({\n onEnableEdit,\n timeLabel\n}) => (\n \n \n {timeLabel}\n \n \n \n \n \n \n \n)\n\nWindowEditEnabled.propTypes = {\n onEnableEdit: PropTypes.func.isRequired,\n timeLabel: PropTypes.string.isRequired\n}\n\nexport default WindowEditEnabled\n","import PropTypes from 'prop-types'\n\nimport { arrayOfAttributionWindowTimeTypes } from '../../../../../../../../utils/customPropTypes'\nimport { TYPE_DAYS, TYPE_HOURS } from '../../constants'\nimport EditButton from '../EditButton'\nimport SelectFormTimeType from '../SelectFormTimeType'\nimport SelectFormTimeValue from '../SelectFormTimeValue'\n\nconst WindowEditMode = ({\n isLoading,\n onEditCancel,\n onTimeTypeChange,\n onTimeValueChange,\n onWindowSave,\n supportedTimeTypes,\n timeType,\n timeValue\n}) => (\n \n \n \n \n \n)\n\nWindowEditMode.propTypes = {\n isLoading: PropTypes.bool.isRequired,\n onEditCancel: PropTypes.func.isRequired,\n onTimeTypeChange: PropTypes.func.isRequired,\n onTimeValueChange: PropTypes.func.isRequired,\n onWindowSave: PropTypes.func.isRequired,\n supportedTimeTypes: arrayOfAttributionWindowTimeTypes,\n timeType: PropTypes.string.isRequired,\n timeValue: PropTypes.number.isRequired\n}\n\nWindowEditMode.defaultProps = {\n supportedTimeTypes: [TYPE_DAYS, TYPE_HOURS]\n}\n\nexport default WindowEditMode\n","import PropTypes from 'prop-types'\nimport FontAwesomeIcon from '../../../../../../../FontAwesomeIcon'\n\nconst EditButton = ({\n isLoading,\n onEditCancel,\n onWindowSave\n}) => (\n \n \n \n \n)\n\nEditButton.propTypes = {\n isLoading: PropTypes.bool.isRequired,\n onEditCancel: PropTypes.func.isRequired,\n onWindowSave: PropTypes.func.isRequired\n}\n\nexport default EditButton\n","import PropTypes from 'prop-types'\n\nimport { arrayOfAttributionWindowTimeTypes } from '../../../../../../../../utils/customPropTypes'\nimport {\n TEXT_DAYS,\n TEXT_DAYS_RANGE,\n TEXT_HOURS,\n TEXT_HOURS_RANGE,\n TYPE_DAYS,\n TYPE_HOURS\n} from '../../constants'\nimport styles from '../../styles.module.scss'\n\nconst getTimeTypeLabel = timeType =>\n timeType === TYPE_DAYS ? TEXT_DAYS_RANGE : TEXT_HOURS_RANGE\n\nconst timeTypeOptions = {\n [TYPE_DAYS]: TEXT_DAYS,\n [TYPE_HOURS]: TEXT_HOURS\n}\n\nconst SelectFormTimeType = ({\n onTimeTypeChange,\n supportedTimeTypes,\n timeType\n}) => (\n \n \n {supportedTimeTypes.map(type => (\n \n ))}\n \n \n \n)\n\nSelectFormTimeType.propTypes = {\n onTimeTypeChange: PropTypes.func.isRequired,\n supportedTimeTypes: arrayOfAttributionWindowTimeTypes,\n timeType: PropTypes.string.isRequired\n}\n\nSelectFormTimeType.defaultProps = {\n supportedTimeTypes: [TYPE_DAYS, TYPE_HOURS]\n}\n\nexport default SelectFormTimeType\n","import PropTypes from 'prop-types'\nimport { getTimeRange } from '../../utils'\nimport styles from '../../styles.module.scss'\n\nconst SelectFormTimeValue = ({\n onTimeValueChange,\n timeType,\n timeValue\n}) => (\n \n \n {getTimeRange(timeType).map(time => (\n \n ))}\n \n \n)\n\nSelectFormTimeValue.propTypes = {\n onTimeValueChange: PropTypes.func.isRequired,\n timeType: PropTypes.string.isRequired,\n timeValue: PropTypes.number.isRequired\n}\n\nexport default SelectFormTimeValue\n","import { camelCase } from 'camel-case'\nimport classNames from 'classnames'\nimport {\n find,\n isEmpty,\n isNil,\n isObject,\n mapValues,\n omitBy,\n pick,\n uniq,\n without\n} from 'lodash'\nimport PropTypes from 'prop-types'\nimport { Fragment, useEffect, useState } from 'react'\nimport Modal from 'react-modal'\nimport {\n Redirect,\n Route,\n Switch,\n useHistory,\n useLocation,\n useParams\n} from 'react-router-dom'\nimport { ToastContainer } from 'react-toastify'\nimport { snakeCase } from 'snake-case'\n\nimport {\n createCallbackGroup,\n fetchCallbackHealth,\n fetchChannelSettings,\n fetchS2SCallbacks,\n saveCredentialSettings,\n toggleCallbackGroup,\n toggleMetaAem,\n updateCallbackGroup\n} from '../../../../../../api/apps'\nimport {\n getCustomCallbackCreationUrl,\n getCustomCallbackUrl\n} from '../../../../../../api/apps/helpers'\nimport {\n CHANNELS,\n FIRST_ITEM,\n PLATFORMS\n} from '../../../../../../utils/constants'\nimport {\n appObject,\n arrayOfChannelObjects\n} from '../../../../../../utils/customPropTypes'\nimport { deepCamelKeys } from '../../../../../../utils/helpers'\nimport { defaultModalStyles } from '../../../../../../utils/modal'\nimport { displayErrorMessage } from '../../../../../../utils/toastNotifications'\nimport BoldLink from '../../../../../BoldLink'\nimport Button from '../../../../../Button'\nimport ButtonTabNavigation from '../../../../../ButtonTabNavigation'\nimport { OVERLAY_OPAQUENESS } from '../../../../../CardPanel/constants'\nimport ChannelSelector from '../../../../../ChannelSelector'\nimport FontAwesomeIcon from '../../../../../FontAwesomeIcon'\nimport HeaderWithHelpText from '../../../../../HeaderWithHelpText'\nimport PopoutLink from '../../../../../PopoutLink'\nimport {\n PATH_CALLBACKS,\n PATH_DASHBOARD_APPS,\n PATH_DASHBOARD_INTEGRATIONS\n} from '../constants'\nimport AemToggle from './AemToggle'\nimport CallbacksTable, { buildCallbacksTableRow } from './CallbacksTable'\nimport { MIN_ROW_LENGTH_RENDER_COUNT } from './CallbacksTable/constants'\nimport {\n CALLBACK_HEALTH_SUCCESS_THRESHOLD,\n CALLBACKS_TABLE_HEADERS,\n CHANNEL_SETTINGS_ERROR,\n DEFAULT_ERROR_MESSAGE,\n EDIT_CALLBACK_MODAL_HEADERS,\n HEADER_INDEX_OFFSET,\n HEALTH_TABLE_HEADERS,\n NEW_EVENT_DRAFT_DEFAULTS,\n NEW_EVENT_EMPTY_ROW,\n NEW_EVENT_MODAL_HEADERS,\n PRESERVED_CREDENTIAL_FACEBOOK_APP_ID,\n PRESERVED_KEYS_FOR_CASE_TRANSFORMATION,\n S2S_CALLBACKS_TABLE_HEADERS,\n SUB_TABS,\n USER_FILTER_OPTIONS\n} from './constants'\nimport CredentialsCard, { buildFieldElements } from './CredentialsCard'\nimport EditCallbackModal, {\n buildEditCallbackModalRow\n} from './EditCallbackModal'\nimport HealthTable, { buildHealthTableRow } from './HealthTable'\nimport {\n getCredentialsFromSettings,\n getFieldSetFromSettings,\n getModalHeadersForRequiredMacros,\n getRequiredMacrosMappingForDraft,\n getSortedCallbackGroupsForTable,\n getSortedCallbackHealthForTable,\n getSortedS2SCallbacksForTable,\n validateEditedCallbackDraft,\n validateNewEventDraft\n} from './helpers'\nimport NewEventModal, { buildNewEventModalRow } from './NewEventModal'\nimport S2SCallbacksTable, {\n buildS2SCallbacksTableRow\n} from './S2SCallbacksTable'\nimport styles from './styles.module.scss'\n\nconst HelpTextHeader = () => (\n \n Can't find the channel you're looking for? Make sure you've\n added it in the \n Channels Tab\n  first \n \n \n)\n\nconst EmptyStateOverlay = () => (\n
    \n Select a channel in the dropdown above\n
    \n to view required settings.\n
    \n)\n\nconst MissingIntegrationOverlay = () => (\n
    \n This channel has not been integrated yet.\n
    \n)\n\nconst MissingCredentialsOverlay = () => (\n
    \n No settings available for this channel.\n
    \n)\n\nconst MissingCallbacksOverlay = () => (\n
    \n No callbacks available for this channel.\n
    \n)\n\nconst CallbackHealthEmptyStateOverlay = () => (\n
    \n Great news!\n
    \n None of your callbacks require attention.\n
    \n)\n\nconst S2SCallbacksEmptyStateOverlay = () => (\n
    No S2S Callbacks found.
    \n)\n\nconst CallbacksTab = ({ app, channels, isAdmin }) => {\n const history = useHistory()\n const location = useLocation()\n const urlParams = deepCamelKeys(useParams())\n\n const appId = app.id\n\n const filteredChannels = channels.filter(\n ({ custom, callbackRequired }) => !custom && callbackRequired\n )\n\n const [selectedChannel, setSelectedChannel] = useState(null)\n const [isEditingCredentials, setIsEditingCredentials] = useState(true)\n const [savingState, setSavingState] = useState([])\n const [loadingState, setLoadingState] = useState([])\n const [isNavigating, setIsNavigating] = useState(false)\n const [originalCredentials, setOriginalCredentials] = useState({})\n const [credentials, setCredentials] = useState({})\n const [fieldSet, setFieldSet] = useState([])\n const [errors, setErrors] = useState({})\n\n const [isEventOptionsVisible, setIsEventOptionsVisible] = useState(false)\n\n const [isNewEventModalOpen, setIsNewEventModalOpen] = useState(false)\n const [newEventDraft, setNewEventDraft] = useState(NEW_EVENT_DRAFT_DEFAULTS)\n\n const [isEditCallbackModalOpen, setIsEditCallbackModalOpen] = useState(false)\n const [editedCallbackDraft, setEditedCallbackDraft] = useState(null)\n\n const [callbackGroupTemplates, setCallbackGroupTemplates] = useState({})\n const [callbackGroups, setCallbackGroups] = useState([])\n\n const [callbackHealth, setCallbackHealth] = useState([])\n const [s2sCallbacks, setS2sCallbacks] = useState([])\n\n const [adNetworkSettings, setAdNetworkSettings] = useState({})\n const [adNetworkSettingsError, setAdNetworkSettingsError] = useState({})\n\n const [callbackInstructions, setCallbackInstructions] = useState()\n\n const [isMissingIntegration, setIsMissingIntegration] = useState(false)\n\n const openNewEventModal = () => setIsNewEventModalOpen(true)\n const closeNewEventModal = () => setIsNewEventModalOpen(false)\n\n const openEditCallbackModal = () => setIsEditCallbackModalOpen(true)\n const closeEditCallbackModal = () => setIsEditCallbackModalOpen(false)\n\n const setLoading = loadingKey =>\n setLoadingState(currentLoadingState =>\n uniq([...currentLoadingState, loadingKey])\n )\n const isLoading = loadingKey => loadingState.includes(loadingKey)\n const clearLoading = loadingKey =>\n setLoadingState(currentLoadingState =>\n without(currentLoadingState, loadingKey)\n )\n\n const setAllLoading = () => {\n setLoadingState(currentLoadingState =>\n uniq([\n ...currentLoadingState,\n 'credentials',\n 'callbacks',\n 'health',\n 's2sCallbacks'\n ])\n )\n }\n\n const clearAllLoading = () => {\n setLoadingState([])\n }\n\n const setSaving = savingKey =>\n setSavingState(currentSavingState =>\n uniq([...currentSavingState, savingKey])\n )\n const clearSaving = savingKey =>\n setSavingState(currentSavingState => without(currentSavingState, savingKey))\n const isSaving = savingKey => savingState.includes(savingKey)\n\n const clearError = errorKey => {\n setErrors(currentErrors => ({ ...currentErrors, [errorKey]: null }))\n }\n\n const setError = ({ error, errorKey }) => {\n setErrors(currentErrors => ({\n ...currentErrors,\n [errorKey]: error.response?.data?.error || DEFAULT_ERROR_MESSAGE\n }))\n }\n\n const rehydrateWithChannelSettings = data => {\n const {\n addableCallbackGroupTemplates,\n adNetworkSettings: fetchedAdNetworkSettings,\n callbackInstructions: fetchedcallbackInstructions,\n credentialSettings,\n toggleableCallbackGroups\n } = data\n\n setFieldSet(getFieldSetFromSettings(credentialSettings))\n\n const updatedCredentials = getCredentialsFromSettings(credentialSettings)\n\n setOriginalCredentials(updatedCredentials)\n setCredentials(updatedCredentials)\n setCallbackGroups(toggleableCallbackGroups)\n setCallbackInstructions(fetchedcallbackInstructions)\n\n if (addableCallbackGroupTemplates) {\n setCallbackGroupTemplates(addableCallbackGroupTemplates)\n }\n\n if (fetchedAdNetworkSettings) {\n setAdNetworkSettings(fetchedAdNetworkSettings)\n }\n }\n\n const fetchSelectedChannelSettings = async () => {\n setErrors({})\n setIsMissingIntegration(false)\n setAllLoading()\n\n try {\n const { data } = await fetchChannelSettings({\n appId,\n channelId: selectedChannel.id\n })\n\n const formattedData = deepCamelKeys(\n data,\n PRESERVED_KEYS_FOR_CASE_TRANSFORMATION\n )\n\n const isNotIntegrated = isEmpty(formattedData)\n\n if (isNotIntegrated) {\n setIsMissingIntegration(true)\n } else {\n rehydrateWithChannelSettings(formattedData)\n }\n\n clearAllLoading()\n } catch (error) {\n window.Honeybadger.notify(error)\n setErrors(CHANNEL_SETTINGS_ERROR)\n clearAllLoading()\n }\n }\n\n const fetchSelectedCallbackHealth = async () => {\n clearError('health')\n setLoading('health')\n\n try {\n const { data } = await fetchCallbackHealth(appId)\n\n setCallbackHealth(data)\n\n clearLoading('health')\n } catch (error) {\n window.Honeybadger.notify(error)\n setError({ error, errorKey: 'health' })\n clearLoading('health')\n }\n }\n\n const fetchSelectedS2SCallbacks = async () => {\n clearError('s2sCallbacks')\n setLoading('s2sCallbacks')\n\n try {\n const { data } = await fetchS2SCallbacks(appId)\n\n setS2sCallbacks(data)\n\n clearLoading('s2sCallbacks')\n } catch (error) {\n window.Honeybadger.notify(error)\n setError({ error, errorKey: 's2sCallbacks' })\n clearLoading('s2sCallbacks')\n }\n }\n\n const updateCallbackGroupChannelFilter = async ({\n callbackGroupId,\n value\n }) => {\n clearError('callbacks')\n setLoading('callbacks')\n\n try {\n const { data } = await updateCallbackGroup({\n appId,\n callbackGroupId,\n channelId: selectedChannel.id,\n params: {\n callbackGroup: {\n userFilter: snakeCase(value)\n }\n }\n })\n\n const { toggleableCallbackGroups } = deepCamelKeys(\n data,\n PRESERVED_KEYS_FOR_CASE_TRANSFORMATION\n )\n\n setCallbackGroups(toggleableCallbackGroups)\n\n clearLoading('callbacks')\n } catch (error) {\n window.Honeybadger.notify(error)\n setError({ error, errorKey: 'callbacks' })\n clearLoading('callbacks')\n }\n }\n\n const toggleActivatableCallbackGroup = async ({ callbackGroupId, value }) => {\n clearError('callbacks')\n setSaving('callbacks')\n\n try {\n const { data } = await toggleCallbackGroup({\n appId,\n callbackGroupId,\n channelId: selectedChannel.id,\n params: {\n callbackGroup: {\n active: value\n }\n }\n })\n\n const { toggleableCallbackGroups } = data\n\n setCallbackGroups(toggleableCallbackGroups)\n\n clearSaving('callbacks')\n } catch (error) {\n window.Honeybadger.notify(error)\n setError({ error, errorKey: 'callbacks' })\n clearSaving('callbacks')\n }\n }\n\n const handleChangeCallbackGroupUserFilter = ({ callbackGroupId, value }) => {\n updateCallbackGroupChannelFilter({ callbackGroupId, value })\n }\n\n const handleToggleCallbackGroup = ({ callbackGroupId, active }) => {\n toggleActivatableCallbackGroup({ callbackGroupId, value: !active })\n }\n\n const handleToggleMetaAem = async () => {\n clearError('metaAem')\n setLoading('metaAem')\n\n try {\n const { data } = await toggleMetaAem({\n appId,\n channelId: selectedChannel.id,\n params: {\n adNetworkSettings: {\n metaAemToggle: !adNetworkSettings.metaAemToggle\n }\n }\n })\n\n const {\n adNetworkSettings: fetchedAdNetworkSettings,\n error: fetchedAdNetworkSettingsError\n } = data\n\n setAdNetworkSettings(fetchedAdNetworkSettings)\n setAdNetworkSettingsError(fetchedAdNetworkSettingsError)\n\n clearLoading('metaAem')\n } catch (error) {\n window.Honeybadger.notify(error)\n setError({ error, errorKey: 'metaAem' })\n clearLoading('metaAem')\n }\n }\n\n const clearCurrentChannel = () => {\n setAdNetworkSettings({})\n setCallbackGroups([])\n setCallbackGroupTemplates({})\n setCallbackInstructions(null)\n setCredentials({})\n setErrors({})\n setFieldSet([])\n setOriginalCredentials({})\n setLoadingState([])\n setSavingState([])\n }\n\n useEffect(() => {\n if (selectedChannel) {\n clearCurrentChannel()\n fetchSelectedChannelSettings()\n }\n }, [selectedChannel])\n\n useEffect(() => {\n fetchSelectedCallbackHealth()\n fetchSelectedS2SCallbacks()\n }, [])\n\n useEffect(() => {\n const isChannelIdInUrl = urlParams.integrationId\n const isChannelNotLoaded = selectedChannel === null\n\n if (isChannelIdInUrl && isChannelNotLoaded) {\n const activeChannel = find(channels, {\n id: Number(urlParams.integrationId)\n })\n\n if (activeChannel) {\n setSelectedChannel(activeChannel)\n }\n }\n }, [urlParams])\n\n useEffect(() => {\n if (adNetworkSettingsError) {\n displayErrorMessage(adNetworkSettingsError)\n }\n }, [adNetworkSettingsError])\n\n const handleChangeChannel = channel => {\n history.push(\n `${PATH_DASHBOARD_APPS}/${appId}${PATH_CALLBACKS}/${SUB_TABS.INTEGRATIONS.BASE_PATH}/${channel.id}`\n )\n setSelectedChannel(channel)\n }\n\n const handleClickEdit = () => setIsEditingCredentials(true)\n\n const handleClickSave = async () => {\n clearError('credentials')\n setSaving('credentials')\n\n try {\n const { data } = await saveCredentialSettings({\n appId,\n channelId: selectedChannel.id,\n params: {\n credentialSettings: credentials\n }\n })\n\n rehydrateWithChannelSettings(data)\n\n clearSaving('credentials')\n } catch (error) {\n window.Honeybadger.notify(error)\n setError({ error, errorKey: 'credentials' })\n clearSaving('credentials')\n }\n }\n\n const handleClickRetry = () => {\n setErrors({})\n setIsEditingCredentials(true)\n }\n\n const handleClickAddEvent = ({ name, groupType }) => {\n const callbackGroupTemplate = find(callbackGroupTemplates[groupType], {\n name\n })\n\n const userFilterDefaultSettings = (() => {\n if (!callbackGroupTemplate.userFilterDefault) return {}\n\n const defaultValue = find(\n callbackGroupTemplate.userFilterOptions || USER_FILTER_OPTIONS,\n {\n value: callbackGroupTemplate.userFilterDefault\n }\n )\n\n return { userFilter: defaultValue } || {}\n })()\n\n setNewEventDraft({\n ...newEventDraft,\n groupType,\n rows: [\n {\n ...NEW_EVENT_EMPTY_ROW,\n callbackName: name,\n ...getRequiredMacrosMappingForDraft({\n callbackGroupTemplate,\n credentials\n }),\n ...userFilterDefaultSettings\n }\n ],\n selectedCallbackGroupTemplate: callbackGroupTemplate\n })\n setIsEventOptionsVisible(false)\n openNewEventModal()\n }\n\n const handleChangeEventDraft = ({ rowIndex, property, value }) => {\n setNewEventDraft({\n ...newEventDraft,\n rows: newEventDraft.rows.map((row, index) => {\n const isMatchingRow = rowIndex === index\n\n if (isMatchingRow) {\n return { ...row, [property]: value }\n }\n\n return row\n })\n })\n }\n\n const handleClickEditCallback = callbackId => {\n const callback = find(callbackGroups, { id: callbackId })\n\n setEditedCallbackDraft({\n ...editedCallbackDraft,\n isDirty: false,\n rows: [\n {\n ...{\n callbackName: callback.name,\n eventDefinition: callback.event,\n userFilter: callback.userFilter,\n userFilterOptions: USER_FILTER_OPTIONS\n },\n ...callback.macros.reduce((mapping, { name, value }) => {\n // eslint-disable-next-line no-param-reassign\n mapping[name] = { label: value, value }\n\n return mapping\n }, {})\n }\n ],\n selectedCallback: callback\n })\n\n openEditCallbackModal()\n }\n\n const handleChangeEditableCallbackDraft = ({ rowIndex, property, value }) => {\n setEditedCallbackDraft({\n ...editedCallbackDraft,\n isDirty: true,\n rows: editedCallbackDraft.rows.map((row, index) => {\n const isMatchingRow = rowIndex === index\n\n if (!isMatchingRow) return row\n\n let processedValue = value\n\n if (property === 'userFilter') {\n processedValue = value.value\n }\n\n if (property === 'eventDefinition') {\n processedValue = value.name\n }\n\n return { ...row, [property]: processedValue }\n })\n })\n }\n\n const handleClickSaveNewEvent = async () => {\n clearError('newEvent')\n setSaving('newEvent')\n\n try {\n const { selectedCallbackGroupTemplate, rows } = newEventDraft\n\n const { fixedEventDefinition } = selectedCallbackGroupTemplate\n const { eventDefinitions } = callbackGroupTemplates\n\n // TODO: [nafeu] update this to handle all rows when implementing bulk edit\n const rowToSave = rows[FIRST_ITEM]\n\n const {\n callbackName: name,\n eventDefinition,\n userFilter: { value: userFilter },\n ...macroValues\n } = rowToSave\n\n const eventDefinitionId = (\n (fixedEventDefinition &&\n find(eventDefinitions, { name: fixedEventDefinition })) ||\n eventDefinition\n ).id\n\n const params = {\n callbackGroupTemplateId: selectedCallbackGroupTemplate?.id,\n eventDefinitionId,\n macroValues: mapValues(\n omitBy(\n pick(\n macroValues,\n selectedCallbackGroupTemplate?.requiredMacros.map(\n ({ name: callbackName }) => callbackName\n ) || []\n ),\n isNil\n ),\n value => (isObject(value) ? value.value : value)\n ),\n name,\n userFilter: snakeCase(userFilter)\n }\n\n await createCallbackGroup({\n appId,\n channelId: selectedChannel.id,\n params\n })\n\n clearSaving('newEvent')\n closeNewEventModal()\n fetchSelectedChannelSettings()\n } catch (error) {\n window.Honeybadger.notify(error)\n setError({ error, errorKey: 'newEvent' })\n clearSaving('newEvent')\n }\n }\n\n const handleClickSaveEditedCallback = async () => {\n clearError('editedCallback')\n setSaving('editedCallback')\n\n try {\n const { selectedCallback, rows } = editedCallbackDraft\n const { eventDefinitions } = callbackGroupTemplates\n\n // TODO: [nafeu] update this to handle all rows when implementing bulk edit\n const rowToSave = rows[FIRST_ITEM]\n\n const {\n callbackName: name,\n eventDefinition,\n userFilter,\n ...macroValues\n } = rowToSave\n\n const params = {\n callbackGroup: {\n eventDefinitionId: find(eventDefinitions, { name: eventDefinition })\n ?.id,\n macroValues: mapValues(\n pick(\n macroValues,\n selectedCallback?.macros.map(\n ({ name: callbackName }) => callbackName\n ) || []\n ),\n value => (isObject(value) ? value.value : value)\n ),\n name,\n userFilter: snakeCase(userFilter)\n }\n }\n\n const { data } = await updateCallbackGroup({\n appId,\n callbackGroupId: selectedCallback.id,\n channelId: selectedChannel.id,\n params\n })\n\n const { toggleableCallbackGroups } = deepCamelKeys(\n data,\n PRESERVED_KEYS_FOR_CASE_TRANSFORMATION\n )\n\n setCallbackGroups(toggleableCallbackGroups)\n\n clearSaving('editedCallback')\n closeEditCallbackModal()\n fetchSelectedChannelSettings()\n } catch (error) {\n window.Honeybadger.notify(error)\n setError({ error, errorKey: 'editedCallback' })\n clearSaving('editedCallback')\n }\n }\n\n const onSuccess = () => {\n setIsEditingCredentials(false)\n }\n\n const handleClickCancel = () => {\n setCredentials(originalCredentials)\n setIsEditingCredentials(false)\n }\n\n const handleClickAddCustomCallback = () => {\n setIsNavigating(true)\n window.location.href = getCustomCallbackCreationUrl(appId)\n }\n\n const handleClickEditCustomCallback = callbackId => {\n setIsNavigating(true)\n window.location.href = getCustomCallbackUrl({ appId, callbackId })\n }\n\n const handleClickSubTab = subTab => {\n history.push(`${PATH_DASHBOARD_APPS}/${appId}${PATH_CALLBACKS}/${subTab}`)\n }\n\n const ErrorOverlay = () => (\n \n \n Something Went Wrong.\n \n \n \n )\n\n const isMissingCredentials = isEmpty(credentials)\n const isMissingCallbackGroupTemplates =\n isEmpty(callbackGroupTemplates?.standard) &&\n isEmpty(callbackGroupTemplates?.advanced)\n const isMissingCallbackGroups = isEmpty(callbackGroups)\n const isMissingCallbackHealthData = isEmpty(callbackHealth)\n const isMissingS2SCallbacks = isEmpty(s2sCallbacks)\n\n const isCallbackHealthGreen =\n !isMissingCallbackHealthData &&\n callbackHealth\n .filter(({ health }) => !isNil(health))\n .every(({ health }) => health >= CALLBACK_HEALTH_SUCCESS_THRESHOLD)\n\n const isMissingChannel =\n selectedChannel === null || selectedChannel === undefined\n const showFooter =\n isEditingCredentials &&\n !isMissingChannel &&\n !isMissingIntegration &&\n !isMissingCredentials\n const showEditButton = !isEditingCredentials\n\n const showCallbackHealthEmptyState = isMissingCallbackHealthData\n\n const showS2SCallbacksEmptyState = isMissingS2SCallbacks && !isNavigating\n\n const credentialsCardOverlayContent = (() => {\n if (errors.credentials) return \n if (isMissingChannel) return \n if (isMissingIntegration) return \n if (isMissingCredentials) return \n\n return ''\n })()\n\n const credentialsCardOverlayOpaqueness = (() => {\n if (errors.credentials || isSaving('credentials'))\n return OVERLAY_OPAQUENESS.MORE\n if (\n isMissingChannel ||\n isMissingIntegration ||\n (!isLoading('credentials') && isMissingCredentials)\n )\n return OVERLAY_OPAQUENESS.FULL\n\n return OVERLAY_OPAQUENESS.NONE\n })()\n\n const callbacksTableOverlayContent = (() => {\n if (errors.callbacks) return \n if (isMissingChannel) return \n if (isMissingIntegration) return \n if (isMissingCallbackGroups) return \n\n return ''\n })()\n\n const callbacksTableOverlayOpaqueness = (() => {\n if (errors.callbacks || isSaving('callbacks'))\n return OVERLAY_OPAQUENESS.MORE\n if (\n isMissingChannel ||\n isMissingIntegration ||\n (!isLoading('callbacks') && isMissingCallbackGroups)\n )\n return OVERLAY_OPAQUENESS.FULL\n\n return OVERLAY_OPAQUENESS.NONE\n })()\n\n const healthTableOverlayContent = (() => {\n if (errors.health) return \n if (showCallbackHealthEmptyState) return \n\n return ''\n })()\n\n const healthTableOverlayOpaqueness = (() => {\n if (errors.health || isSaving('health')) return OVERLAY_OPAQUENESS.MORE\n if (showCallbackHealthEmptyState) return OVERLAY_OPAQUENESS.FULL\n\n return OVERLAY_OPAQUENESS.NONE\n })()\n\n const s2sCallbacksTableOverlayContent = (() => {\n if (errors.s2sCallbacks) return \n if (showS2SCallbacksEmptyState) return \n\n return ''\n })()\n\n const s2sCallbacksTableOverlayOpaqueness = (() => {\n if (errors.s2sCallbacks || isSaving('s2sCallbacks') || isNavigating)\n return OVERLAY_OPAQUENESS.MORE\n if (showS2SCallbacksEmptyState) return OVERLAY_OPAQUENESS.FULL\n\n return OVERLAY_OPAQUENESS.NONE\n })()\n\n const callbacksTableRows = [\n CALLBACKS_TABLE_HEADERS,\n ...getSortedCallbackGroupsForTable(callbackGroups)\n ]\n .map(row => ({\n ...row,\n onChangeCallbackGroup: handleChangeCallbackGroupUserFilter,\n onClickEditCallback: handleClickEditCallback,\n onToggleCallbackGroup: handleToggleCallbackGroup\n }))\n .map(buildCallbacksTableRow)\n\n const newEventModalRows = [\n getModalHeadersForRequiredMacros({\n callbackGroupTemplate: newEventDraft.selectedCallbackGroupTemplate,\n defaultHeaders: NEW_EVENT_MODAL_HEADERS,\n groupType: newEventDraft.groupType,\n selectedChannel\n }),\n ...newEventDraft.rows\n ].map((newEventData, rowIndex) =>\n buildNewEventModalRow({\n ...newEventData,\n callbackGroupTemplate: newEventDraft.selectedCallbackGroupTemplate,\n eventDefinitions: callbackGroupTemplates.eventDefinitions,\n groupType: newEventDraft.groupType,\n onChangeEventDraft: handleChangeEventDraft,\n rowIndex: rowIndex - HEADER_INDEX_OFFSET\n })\n )\n\n const editedCallbackModalRows = editedCallbackDraft\n ? [\n getModalHeadersForRequiredMacros({\n callback: editedCallbackDraft.selectedCallback,\n defaultHeaders: EDIT_CALLBACK_MODAL_HEADERS,\n selectedChannel\n }),\n ...editedCallbackDraft.rows\n ].map((editedCallbackData, rowIndex) =>\n buildEditCallbackModalRow({\n ...editedCallbackData,\n callback: editedCallbackDraft.selectedCallback,\n eventDefinitions: callbackGroupTemplates.eventDefinitions,\n onChangeEditedCallbackDraft: handleChangeEditableCallbackDraft,\n rowIndex: rowIndex - HEADER_INDEX_OFFSET\n })\n )\n : []\n\n const fields = fieldSet.map(fieldData =>\n buildFieldElements({\n ...fieldData,\n credentials,\n error: errors[fieldData.id],\n isEditingCredentials,\n setCredentials\n })\n )\n\n const s2sCallbacksTableRows = [\n S2S_CALLBACKS_TABLE_HEADERS,\n ...getSortedS2SCallbacksForTable(s2sCallbacks)\n ].map((s2sCallbackData, rowIndex) =>\n buildS2SCallbacksTableRow({\n ...s2sCallbackData,\n onClickEditCustomCallback: handleClickEditCustomCallback,\n rowIndex: rowIndex - HEADER_INDEX_OFFSET\n })\n )\n\n const healthTableRows = [\n HEALTH_TABLE_HEADERS,\n ...getSortedCallbackHealthForTable(callbackHealth)\n ].map((row, rowIndex) => buildHealthTableRow({ ...row, appId }, rowIndex))\n\n const buildHealthBadge = () => {\n if (isMissingCallbackHealthData) return ''\n if (isCallbackHealthGreen) {\n return (\n \n )\n }\n\n return (\n \n )\n }\n\n const subTabNavigationOptions = [\n {\n handleClick: () =>\n handleClickSubTab(\n `${SUB_TABS.INTEGRATIONS.BASE_PATH}${\n selectedChannel ? `/${selectedChannel.id}` : ''\n }`\n ),\n id: SUB_TABS.INTEGRATIONS.BASE_PATH,\n isActive: () =>\n location.pathname.includes(SUB_TABS.INTEGRATIONS.BASE_PATH),\n label: SUB_TABS.INTEGRATIONS.LABEL\n },\n {\n handleClick: () => handleClickSubTab(SUB_TABS.S2S_CALLBACKS.PATH),\n id: SUB_TABS.S2S_CALLBACKS.PATH,\n isActive: () => location.pathname.includes(SUB_TABS.S2S_CALLBACKS.PATH),\n label: SUB_TABS.S2S_CALLBACKS.LABEL\n },\n {\n badge: buildHealthBadge(),\n handleClick: () => handleClickSubTab(SUB_TABS.HEALTH.PATH),\n id: SUB_TABS.HEALTH.PATH,\n isActive: () => location.pathname.includes(SUB_TABS.HEALTH.PATH),\n label: SUB_TABS.HEALTH.LABEL\n }\n ]\n\n const isNewEventSavable = validateNewEventDraft(newEventDraft)\n\n const isEditedCallbackSavable =\n validateEditedCallbackDraft(editedCallbackDraft)\n\n const showAemToggle =\n new URLSearchParams(window.location.search)\n .get('flag')\n ?.includes('aem_toggle') ||\n (app.platform === PLATFORMS.ios.id &&\n selectedChannel?.id === CHANNELS.META.id)\n\n const isAemToggleDisabled = (() => {\n const facebookAppIdValue =\n originalCredentials[PRESERVED_CREDENTIAL_FACEBOOK_APP_ID] ||\n originalCredentials[camelCase(PRESERVED_CREDENTIAL_FACEBOOK_APP_ID)]\n\n return isNil(facebookAppIdValue) || isEmpty(facebookAppIdValue)\n })()\n\n const IntegrationsTab = () => (\n \n \n
    \n \n {showAemToggle && (\n \n )}\n
    \n \n \n \n \n \n \n \n \n
    \n )\n\n const S2SCallbacksTab = () => (\n \n )\n\n const HealthTab = () => (\n \n )\n\n return (\n \n \n
    \n \n \n \n \n \n \n \n \n \n
    \n
    \n )\n}\n\nCallbacksTab.propTypes = {\n app: appObject.isRequired,\n channels: arrayOfChannelObjects.isRequired,\n isAdmin: PropTypes.bool.isRequired\n}\n\nexport default CallbacksTab\n","import classNames from 'classnames'\nimport PropTypes from 'prop-types'\n\nimport BoldLink from '../../../../../../BoldLink'\nimport FontAwesomeIcon from '../../../../../../FontAwesomeIcon'\nimport FormLabelWithTooltip from '../../../../../../FormLabelWithTooltip'\nimport Toggle from '../../../../../../Toggle'\nimport { META_AEM_LINK } from './constants'\nimport styles from './styles.module.scss'\n\nconst TooltipContent = (\n
    \n Turn on the toggle to share data from users who have\n
    \n opted out of the ATT prompt\n
    \n
    \n More information on{' '}\n \n Meta's AEM Page \n \n
    \n)\n\nconst AemToggle = ({ className, isDisabled, isOn, isToggling, onToggle }) => (\n
    \n {} : onToggle}\n />\n \n Aggregated Events Measurement\n \n
    \n)\n\nAemToggle.propTypes = {\n className: PropTypes.string,\n isDisabled: PropTypes.bool.isRequired,\n isOn: PropTypes.bool.isRequired,\n isToggling: PropTypes.bool.isRequired,\n onToggle: PropTypes.func.isRequired\n}\n\nAemToggle.defaultProps = {\n className: ''\n}\n\nexport default AemToggle\n","import PropTypes from 'prop-types'\nimport { Fragment } from 'react'\n\nimport FontAwesomeIcon from '../../../../../../../FontAwesomeIcon'\nimport { GROUP_TYPE_ADVANCED, GROUP_TYPE_STANDARD } from '../../constants'\nimport styles from './styles.module.scss'\n\n/*\n eslint-disable jsx-a11y/interactive-supports-focus,\n jsx-a11y/click-events-have-key-events,\n jsx-a11y/no-static-element-interactions\n*/\nconst StandardOptions = ({ onClickEventOption, options }) =>\n options.map(({ id, name }) => (\n \n onClickEventOption({\n groupType: GROUP_TYPE_STANDARD,\n name\n })\n }\n >\n {name}\n
    \n ))\n\nconst AdvancedOptions = ({ onClickEventOption, options }) =>\n options.map(({ name }) => (\n \n onClickEventOption({\n groupType: GROUP_TYPE_ADVANCED,\n name\n })\n }\n >\n {name}{' '}\n \n not recommended\n \n \n ))\n\nconst EventOptions = ({\n eventOptions,\n onClickEventOption,\n setShowAdvancedCallbacks,\n showAdvancedCallbacks\n}) => (\n \n
    \n {showAdvancedCallbacks ? (\n \n ) : (\n \n )}\n
    \n {eventOptions.advanced.length > 0 && (\n setShowAdvancedCallbacks(!showAdvancedCallbacks)}\n >\n {showAdvancedCallbacks ? '< Back' : 'Advanced'}\n \n )}\n
    \n)\n\n/*\n eslint-enable jsx-a11y/interactive-supports-focus,\n jsx-a11y/click-events-have-key-events,\n jsx-a11y/no-static-element-interactions\n*/\n\nEventOptions.propTypes = {\n eventOptions: PropTypes.shape({\n advanced: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired\n })\n ),\n standard: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired\n })\n )\n }).isRequired,\n onClickEventOption: PropTypes.func.isRequired,\n setShowAdvancedCallbacks: PropTypes.func.isRequired,\n showAdvancedCallbacks: PropTypes.bool.isRequired\n}\n\nexport default EventOptions\n","import classNames from 'classnames'\nimport { format, parseISO } from 'date-fns'\nimport { isNil } from 'lodash'\nimport PropTypes from 'prop-types'\nimport { Fragment, useEffect, useMemo, useRef, useState } from 'react'\nimport Skeleton from 'react-loading-skeleton'\n\nimport {\n fetchCvSchema,\n saveCvSchema,\n toggleSkanReadiness\n} from '../../../../../../api/apps'\nimport { oneOfSkAppClaimStatuses } from '../../../../../../utils/customPropTypes'\nimport { parseCSV } from '../../../../../../utils/helpers'\nimport Alert from '../../../../../Alert'\nimport CardPanel from '../../../../../CardPanel'\nimport CopyButton from '../../../../../CopyButton'\nimport FormLabelWithTooltip from '../../../../../FormLabelWithTooltip'\nimport PopoutLink from '../../../../../PopoutLink'\nimport SyncButton from '../../../../../SyncButton'\nimport Toggle from '../../../../../Toggle'\nimport SkAdNetworkStatus from '../../SkAdNetworkStatus'\nimport {\n CV_SAMPLE_CSV_FILE,\n CV_SAMPLE_CSV_URL,\n CV_SAMPLE_CSV_WITH_META_URL,\n DATE_FORMAT_UPLOADED_AT,\n ERROR_RESET_TIMEOUT_MS,\n KNOWLEDGE_BASE_CV_MAPPING_RECOMMENDATION_URL,\n KNOWLEDGE_BASE_UPLOAD_CV_SCHEMA,\n MMP_CONNECTION_URL_BASE,\n SKELETON_ROW_COUNT\n} from './constants'\nimport CSVPreviewTable from './CSVPreviewTable'\nimport { getCvSchemaFromJson, getJsonFromCvSchema } from './helpers'\nimport styles from './styles.module.scss'\n\nconst SkAdNetworkTab = ({\n appId,\n isSkAppClaimable,\n skAppClaimStatus,\n storeId\n}) => {\n const [isLoading, setIsLoading] = useState(false)\n const [isUploading, setIsUploading] = useState(false)\n const [isError, setIsError] = useState(false)\n const [cvSchema, setCvSchema] = useState(null)\n const [schemaExists, setSchemaExists] = useState(false)\n\n const [isToggleDisabled, setToggleDisabled] = useState(true)\n const [isSkanFeaturesOn, setIsSkanFeaturesOn] = useState(true)\n\n const fileInputRef = useRef(null)\n\n const cvSampleCsvUrl = CV_SAMPLE_CSV_WITH_META_URL\n const isVerified = skAppClaimStatus === 'verified'\n\n const handleError = () => {\n setTimeout(() => {\n setIsError(false)\n }, ERROR_RESET_TIMEOUT_MS)\n }\n\n const handleUploadSuccess = updatedCvSchema => {\n setCvSchema(updatedCvSchema)\n setIsUploading(false)\n setToggleDisabled(false)\n setSchemaExists(true)\n }\n\n const handleFileChange = event => {\n const selectedFile = event.target.files[0]\n\n if (selectedFile) {\n const reader = new FileReader()\n\n reader.onload = async readerEvent => {\n setIsError(false)\n setIsUploading(true)\n\n try {\n const csvData = readerEvent.target.result\n const parsedCvSchema = getCvSchemaFromJson({\n appId,\n description: selectedFile.name,\n jsonData: parseCSV(csvData)\n })\n\n const { data: updatedCvSchema } = await saveCvSchema({\n appId,\n params: parsedCvSchema\n })\n\n handleUploadSuccess(updatedCvSchema)\n } catch (error) {\n window.Honeybadger.notify(error)\n setIsError(true)\n setIsUploading(false)\n }\n }\n\n reader.readAsText(selectedFile)\n }\n }\n\n const handleClickUpload = () => {\n fileInputRef.current.click()\n }\n\n const handleClickToggle = async () => {\n if (isToggleDisabled) return\n\n setIsLoading(true)\n\n try {\n const {\n data: { isOn }\n } = await toggleSkanReadiness({\n appId,\n params: { isOn: isSkanFeaturesOn }\n })\n\n setIsSkanFeaturesOn(isOn)\n setIsLoading(false)\n } catch (error) {\n window.Honeybadger.notify(error)\n setIsError(true)\n setIsLoading(false)\n }\n }\n\n useEffect(() => {\n const loadCvSchema = async () => {\n setIsLoading(true)\n\n try {\n const { data: fetchedCvSchema } = await fetchCvSchema(appId)\n\n const fetchedCvSchemaExists = fetchedCvSchema.id\n\n if (fetchedCvSchemaExists) {\n setToggleDisabled(false)\n setIsSkanFeaturesOn(fetchedCvSchema.online)\n setCvSchema(fetchedCvSchema)\n setSchemaExists(true)\n }\n\n setIsLoading(false)\n } catch (error) {\n window.Honeybadger.notify(error)\n setIsError(true)\n setIsLoading(false)\n }\n }\n\n loadCvSchema()\n }, [])\n\n const cvSchemaJson = useMemo(() => {\n if (cvSchema) {\n return getJsonFromCvSchema(cvSchema)\n }\n\n return null\n }, [cvSchema])\n\n const showEmptyState = !isSkanFeaturesOn && !isLoading && !isUploading\n const showUploadInstructions = isNil(cvSchema) && !isLoading\n const showMmpUrl = schemaExists\n const showCvSchema = !isNil(cvSchema) && !isLoading\n const showAlert = !schemaExists\n const showLoadingSkeleton = isLoading || isUploading\n const showUploadButton = isSkanFeaturesOn\n const showFilename = !isUploading && !isLoading\n const showCvSchemaJson = cvSchemaJson !== null\n\n const SkanConfigurationActions = () => (\n
    \n \n \n Enabling the SKAN features will ensure that your CV schema is shared\n with all partners.\n \n }\n placement=\"right\"\n className={styles.skanFeaturesLabel}\n >\n SKAN Features\n \n
    \n )\n\n const ConversionValueMappingFooter = () => (\n \n \n {showUploadButton && (\n \n {schemaExists && (\n
    \n To upload a new schema, \n \n download our csv template\n \n  and upload the file once you've added your data.\n
    \n )}\n Something went wrong.}\n isDisabled={isLoading}\n isError={isError}\n isLoading={isUploading}\n level=\"success\"\n loadingContent={uploading...}\n onClick={handleClickUpload}\n onError={handleError}\n resetOnSuccess\n >\n {schemaExists ? 'Update csv' : 'Upload csv'}\n \n
    \n )}\n \n )\n\n const LoadingSkeleton = () => (\n \n \n \n
    \n
    \n {Array.from(Array(SKELETON_ROW_COUNT)).map(() => (\n \n \n
    \n
    \n ))}\n
    \n )\n\n const EmptyStateOverlay = () => (\n
    \n To map conversion values, you must turn SKAN Features on.\n
    \n Enabling SKAN Features will ensure that your conversion value schema is\n shared with all partners.\n
    \n )\n\n const ErrorOverlay = () => (\n
    Something went wrong.
    \n )\n\n const overlayContent = (() => {\n if (isError) return \n if (showEmptyState) return \n\n return ''\n })()\n\n const overlayOpaqueness = (() => {\n if (showEmptyState) return 'full'\n\n return 'none'\n })()\n\n const tooltipText = () => {\n if (isVerified && showMmpUrl) {\n return 'Copy and paste this URL into the ad network dashboard.'\n } else if (isVerified) {\n return 'MMP Connection URL will be available once you upload a conversion value mapping'\n }\n return 'MMP Connection URL will be available once the app is verified and a conversion value' +\n ' mapping has been uploaded'\n }\n return (\n
    \n }\n className={styles.skanConfigurationPanel}\n >\n \n
    \n {tooltipText()}}>\n MMP Connection Url:\n \n {showMmpUrl && (\n \n )}\n
    \n \n {isVerified && (\n \n
    \n \n Learn more about Conversion Value Mapping\n \n
    \n \n }\n overlayContent={overlayContent}\n overlayOpaqueness={overlayOpaqueness}\n >\n
    \n {showLoadingSkeleton && }\n {showCvSchema && (\n
    \n {showAlert && (\n \n Important: Confirm that you are manually\n updating conversion values in the SDK, and that your\n uploaded schema matches your SKAN methods to avoid\n campaign optimization issues.\n \n )}\n {showFilename && (\n \n \n {cvSchema.description}\n \n \n uploaded{' '}\n {format(\n parseISO(cvSchema.createdAt),\n DATE_FORMAT_UPLOADED_AT\n )}\n \n \n )}\n {showCvSchemaJson && (\n \n )}\n
    \n )}\n {showUploadInstructions && (\n \n
    \n
    \n 1.{' '}\n \n Download our csv template\n \n
    \n
    \n 2. Call our SKAN methods in the SDK to update your\n conversion values\n
    \n
    \n 3. Upload the file once you've added your data\n
    \n
    \n
    \n \n For more help, view our docs\n \n
    \n Uploaded schema must adhere to the template.\n
    \n If you're running Meta campaigns that use SKAN as an\n attribution method, make sure to enable Meta Callbacks.\n
    \n
    \n
    \n )}\n
    \n \n
    \n )}\n
    \n )\n}\n\nSkAdNetworkTab.propTypes = {\n appId: PropTypes.string.isRequired,\n isSkAppClaimable: PropTypes.bool.isRequired,\n skAppClaimStatus: oneOfSkAppClaimStatuses.isRequired,\n storeId: PropTypes.string.isRequired\n}\n\nexport default SkAdNetworkTab\n","import React, { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport { camelCase } from 'camel-case'\n\nimport { oneOfSkAppClaimStatuses } from '../../../../../utils/customPropTypes'\n\nimport Badge from '../../../../Badge'\nimport FormLabelWithTooltip from '../../../../FormLabelWithTooltip'\n\nimport styles from './styles.module.scss'\n\nimport {\n DASHBOARD_APPS_URL,\n DASHBOARD_APPS_CLAIM_SK_APP_PATH\n} from '../../../../../api/dashboard/constants'\nimport {\n COPY_BY_APP_CLAIM_STATUS_MAPPING,\n APP_CLAIM_STATUS_PROCESSING_REQUEST,\n APP_CLAIM_STATUS_UNVERIFIED\n} from './constants'\n\nimport AsyncActionButton from '../../../../AsyncActionButton'\n\nconst SkAdNetworkStatus = ({\n appId,\n className,\n isClaimable,\n status\n}) => {\n const actionUrl = `${DASHBOARD_APPS_URL}${appId}${DASHBOARD_APPS_CLAIM_SK_APP_PATH}`\n\n const [appClaimStatus, setAppClaimStatus] = useState(camelCase(status))\n\n const handleVerifyOwnershipSuccess = () => {\n const flashMessage = document.querySelector('#alert-sk-app-claim-success')\n\n flashMessage.style.display = 'block'\n\n setAppClaimStatus(APP_CLAIM_STATUS_PROCESSING_REQUEST)\n }\n\n const {\n badgeText,\n badgeLevel,\n helpText\n } = COPY_BY_APP_CLAIM_STATUS_MAPPING[appClaimStatus]\n\n const isUnverified = appClaimStatus === APP_CLAIM_STATUS_UNVERIFIED\n const isVerifiable = isUnverified && isClaimable\n const helpTextOverride = isUnverified && !isVerifiable ? '' : helpText\n\n return (\n
    \n \n SKAN Status:\n \n {badgeText}\n
    {helpTextOverride}
    \n {isVerifiable && (\n \n )}\n
    \n )\n}\n\nSkAdNetworkStatus.propTypes = {\n appId: PropTypes.string.isRequired,\n className: PropTypes.string,\n isClaimable: PropTypes.bool.isRequired,\n status: oneOfSkAppClaimStatuses.isRequired\n}\n\nSkAdNetworkStatus.defaultProps = {\n className: ''\n}\n\nexport default SkAdNetworkStatus\n","import classNames from 'classnames'\nimport { keys } from 'lodash'\nimport PropTypes from 'prop-types'\nimport { snakeCase } from 'snake-case'\n\nimport { FIRST_ITEM } from '../../../../../../../utils/constants'\nimport { getWidthByStringLength } from '../../../../../../../utils/helpers'\nimport FlexTable from '../../../../../../FlexTable'\nimport { COLUMN_CHARACTER_LENGTH_MULTIPLIER } from './constants'\nimport styles from './styles.module.scss'\n\nexport const buildCSVPreviewRow = (\n { headers, isHeadersRow, ...columns },\n rowIndex\n) => {\n if (isHeadersRow) {\n return {\n cells: headers.map((header, headerIndex) => ({\n cell:
    {snakeCase(header)}
    ,\n flex: 'none',\n id: `header${headerIndex}`,\n width: getWidthByStringLength({\n inputString: header,\n widthMultiplier: COLUMN_CHARACTER_LENGTH_MULTIPLIER\n })\n })),\n id: 'headers'\n }\n }\n\n return {\n cells: keys(columns).map((columnKey, columnIndex) => ({\n cell:
    {columns[columnKey]}
    ,\n flex: 'none',\n id: `cell${columnKey}${rowIndex}${columnIndex}`,\n title: columns[columnKey],\n width: getWidthByStringLength({\n inputString: columnKey,\n widthMultiplier: COLUMN_CHARACTER_LENGTH_MULTIPLIER\n })\n })),\n id: `row${rowIndex}`\n }\n}\n\nconst CSVPreviewTable = ({ cvSchemaJson, cellClassName }) => {\n const headers = keys(cvSchemaJson[FIRST_ITEM])\n\n const rows = [\n {\n headers,\n isHeadersRow: true\n },\n ...cvSchemaJson\n ].map(buildCSVPreviewRow)\n\n return (\n
    \n \n
    \n )\n}\n\nCSVPreviewTable.propTypes = {\n cellClassName: PropTypes.string,\n cvSchemaJson: PropTypes.arrayOf(\n PropTypes.shape({\n conversionValue: PropTypes.string.isRequired,\n conversionValueType: PropTypes.string.isRequired,\n currency: PropTypes.string,\n customEventName: PropTypes.string.isRequired,\n googleEventName: PropTypes.string,\n maxRange: PropTypes.string,\n metaEventName: PropTypes.string,\n minRange: PropTypes.string,\n postbackSequenceIndex: PropTypes.string.isRequired,\n tiktokEventName: PropTypes.string\n })\n ).isRequired\n}\n\nCSVPreviewTable.defaultProps = {\n cellClassName: ''\n}\n\nexport default CSVPreviewTable\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { CopyToClipboard } from 'react-copy-to-clipboard'\nimport Tooltip from 'rc-tooltip'\nimport { COPIED_TEXT_DELAY } from './constants'\n\nconst TdKeyCell = ({\n token\n}) => {\n const [tooltipVisible, setTooltipVisible] = useState(false)\n const [previousTimeoutId, setPreviousTimeoutId] = useState(null)\n\n const onVisibleChange = visible => {\n if (!visible) {\n const id = setTimeout(() => {\n setTooltipVisible(false)\n }, COPIED_TEXT_DELAY)\n setPreviousTimeoutId(id)\n }\n }\n\n const onCopy = () => {\n setTooltipVisible(true)\n clearTimeout(previousTimeoutId)\n }\n\n return (\n \n {token}\n \n Copied}\n visible={tooltipVisible}\n onVisibleChange={onVisibleChange}\n placement=\"top\"\n >\n Copy\n \n \n \n )\n}\n\nTdKeyCell.propTypes = {\n token: PropTypes.string.isRequired\n}\n\nexport default TdKeyCell\n","import { Fragment } from 'react'\nimport classNames from 'classnames'\nimport PropTypes from 'prop-types'\nimport Tooltip from 'rc-tooltip'\n\nimport { formatNumberForDisplay } from '../../../../../ReportingDataMetricValueDisplay/helpers'\nimport CampaignRowsSkeleton from './skeleton'\nimport { TOOLTIP_MOUSE_ENTER_DELAY } from '../../../../../../utils/constants'\n\nimport styles from './styles.module.scss'\n\nconst emptyStateMessage = (\n
    \n No reported campaigns found.\n
    \n)\n\nconst errorStateMessage = (\n
    \n Something went wrong.\n
    \n)\n\nconst CampaignsList = ({\n isError,\n isLoading,\n isMerging,\n isEmptyState,\n onClickMergeCampaign,\n reportedCampaigns\n}) => {\n if (isLoading || isMerging) {\n return \n }\n\n if (isError) {\n return errorStateMessage\n }\n\n if (isEmptyState) {\n return emptyStateMessage\n }\n /*\n eslint-disable jsx-a11y/interactive-supports-focus,\n jsx-a11y/click-events-have-key-events\n */\n return (\n
    \n
    \n
    Campaign Name
    \n
    Reported Installs
    \n
    Spend
    \n
    \n
    \n {reportedCampaigns.map(({\n id,\n name,\n reportedInstalls,\n spend\n }) => (\n
    \n
    \n {name}}\n placement=\"top\"\n >\n {name}\n \n
    \n {id}\n
    \n
    \n {reportedInstalls || '-'}\n
    \n
    \n {spend ? (\n \n ${formatNumberForDisplay({ number: spend, numberOfDigits: 2 })}\n \n ) : '-'}\n
    \n
    \n
    onClickMergeCampaign(id)}>\n Merge\n
    \n
    \n
    \n ))}\n
    \n )\n /*\n eslint-enable jsx-a11y/interactive-supports-focus,\n jsx-a11y/click-events-have-key-events\n */\n}\n\nCampaignsList.propTypes = {\n isEmptyState: PropTypes.bool.isRequired,\n isError: PropTypes.bool.isRequired,\n isLoading: PropTypes.bool.isRequired,\n isMerging: PropTypes.bool.isRequired,\n onClickMergeCampaign: PropTypes.func.isRequired,\n reportedCampaigns: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n installs: PropTypes.number,\n name: PropTypes.string,\n spend: PropTypes.spend\n })\n ).isRequired\n}\n\nexport default CampaignsList\n","import React from 'react'\n\nimport FormTextField from '../../../../../FormTextField/FormTextField'\n\nconst DeviceNameFormField = () => {\n return (\n \n )\n}\n\nexport default DeviceNameFormField\n","import React, { useCallback } from 'react'\nimport { renderToString } from 'react-dom/server'\nimport { oneOfSelectablePlatforms } from '../../../../../../utils/customPropTypes'\nimport { PLATFORMS } from '../../../../../../utils/constants'\nimport FormHelpPopover from '../../../../../FormHelpPopover/FormHelpPopover'\nimport FormTextField from '../../../../../FormTextField/FormTextField'\nimport { camelCase } from 'camel-case'\n\nconst inputPopoverContent = (platform) => (\n
    \n { PLATFORMS[platform].deviceIdentifiers.advertisingId.description }\n
    \n)\n\nconst AdvertisingIdFormField = ({\n platform: platformProp\n}) => {\n const platform = camelCase(platformProp)\n\n const platformTitle = (platform) => {\n return PLATFORMS[platform].deviceIdentifiers.advertisingId.label\n }\n \n const helpPopoverComponent = useCallback(() => {\n return (\n \n )\n })\n\n return (\n \n )\n}\n\nAdvertisingIdFormField.propTypes = {\n platform: oneOfSelectablePlatforms.isRequired\n}\n\nexport default AdvertisingIdFormField\n","import React, { useCallback } from 'react'\nimport { renderToString } from 'react-dom/server'\nimport { PLATFORMS } from '../../../../../../utils/constants'\nimport FormHelpPopover from '../../../../../FormHelpPopover/FormHelpPopover'\nimport FormTextField from '../../../../../FormTextField/FormTextField'\n\nconst inputPopoverContent = (\n
    \n { PLATFORMS.ios.deviceIdentifiers.developerDeviceId.description }\n
    \n)\n\nconst DeveloperDeviceIdFormField = () => {\n const title = PLATFORMS.ios.deviceIdentifiers.developerDeviceId.label\n\n const helpPopoverComponent = useCallback(() => {\n return (\n \n )\n })\n\n return (\n \n )\n}\n\nexport default DeveloperDeviceIdFormField\n","import React from 'react'\n\nimport Dropdown from '../../../../../Dropdown'\nimport { arrayOfAppObjects } from '../../../../../../utils/customPropTypes'\n\nconst AppSelectDropDown = ({\n onChange,\n options,\n value\n}) => {\n\n return (\n option.name}\n getOptionValue={option => option.id}\n isClearable={false}\n isSearchable\n onChange={onChange}\n options={options}\n value={value}\n placeholder=\"Select an app\"\n />\n )\n}\n\nAppSelectDropDown.propTypes = {\n onChange: PropTypes.func,\n options: arrayOfAppObjects.isRequired,\n value: PropTypes.object\n}\n\nexport default AppSelectDropDown\n","import React from 'react'\nimport Dropdown from '../../../../../Dropdown'\nimport { PLATFORMS } from '../../../../../../utils/constants'\n\nconst DeviceTypeDropDown = ({\n onChange,\n value\n}) => {\n\n const formOptions = [\n { \n label: PLATFORMS.ios.deviceIdentifiers.advertisingId.label,\n value: PLATFORMS.ios.deviceIdentifiers.advertisingId.value\n },\n { \n label: PLATFORMS.ios.deviceIdentifiers.developerDeviceId.label,\n value: PLATFORMS.ios.deviceIdentifiers.developerDeviceId.value\n },\n ]\n \n return (\n option.label}\n getOptionValue={option => option.value}\n isClearable={false}\n isSearchable\n onChange={onChange}\n options={formOptions}\n value={value}\n placeholder=\"Select an iOS ID Type\"\n />\n )\n}\n\nDeviceTypeDropDown.propTypes = {\n onChange: PropTypes.func,\n value: PropTypes.object\n}\n\nexport default DeviceTypeDropDown\n","import { Fragment, useEffect } from 'react'\nimport { Route } from 'react-router-dom'\n\nimport PageHeader from '../../PageHeader'\nimport PageSubtext from '../../PageSubtext/PageSubtext'\nimport PageNotice from '../../PageNotice'\nimport Presenter from './presentation'\nimport ReportingContent from '../../ReportingContent'\nimport ReportingSidebar from './ReportingSidebar'\nimport useFlashMessagesHook from '../../../hooks/useFlashMessagesHook'\n\nimport { DATA_EXPORTER_SUBHEADING, DATA_EXPORTER_NOTICE } from './constants'\n\n/* eslint-disable react/prop-types */\nconst DataExporterPage = ({ match }) => {\n useEffect(() => {\n document.title = 'Data Exporter - Tenjin'\n })\n\n useFlashMessagesHook()\n\n return (\n \n \n\n \n Data Exporter\n {DATA_EXPORTER_SUBHEADING}\n {DATA_EXPORTER_NOTICE}\n\n \n \n \n )\n}\n/* eslint-enable react/prop-types */\n\nexport default DataExporterPage\n","import { useEffect, useRef, useState } from 'react'\nimport { useQuery } from 'react-query'\nimport { useLocation } from 'react-router-dom'\nimport {\n isArray,\n isEmpty,\n isNull,\n includes,\n filter\n} from 'lodash'\nimport classNames from 'classnames'\nimport PropTypes from 'prop-types'\n\nimport AwaitingDataOverlay from '../../../AwaitingDataOverlay'\nimport ChartFailed from '../../../ChartFailed'\nimport NoDataOverlay from '../../../NoDataOverlay'\nimport PaginatedTable from './PaginatedTable'\nimport TableContainer from '../../../Table/Container'\nimport OnboardingActionOverlay from '../../../OnboardingActionOverlay'\n\nimport { useMetricDefinitionsState } from '../../../../contexts/MetricDefinitions'\nimport {\n useOnboardingStatusState, getGroupedSummaryTableOnboardingStatus\n} from '../../../../contexts/OnboardingStatus'\n\nimport {\n useGroupedSummaryTableSettingsState\n} from '../../../../contexts/GroupedSummaryTableSettings'\n\nimport {\n getReportPageFromReportType,\n getReportTypeFromLocation,\n useReportingFiltersState,\n useReportingFiltersDispatch,\n isSkAdNetworkReport\n} from '../../../../contexts/ReportingFilters'\n\nimport { stripTotalsFromGranularity } from '../../../../utils/helpers'\n\nimport { getQueryFunctionForDataExporter, saveTableViewMode } from '../../../../api/reporting'\n\nimport usePrevious from '../../../../hooks/usePrevious'\nimport useRefSize from '../../../../hooks/useRefSize'\n\nimport { fetchMockAppLevelDataByDateForMetrics } from '../../../../utils/mock'\nimport { UA_METRICS_AVAILABLE_IN_SK_AD_NETWORK_REPORT } from '../../../../utils/constants'\n\nimport styles from './styles.module.scss'\n\nimport { DEFAULT_QUERY_OPTIONS } from './constants'\n\nconst ExporterPreviewTable = ({ className }) => {\n const { metricDefinitions } = useMetricDefinitionsState()\n const location = useLocation()\n const onboardingStatus = useOnboardingStatusState()\n\n const reportingFilters = useReportingFiltersState()\n const reportingFiltersDispatch = useReportingFiltersDispatch()\n\n const reportType = getReportTypeFromLocation(location)\n const reportPage = getReportPageFromReportType(reportType)\n\n const {\n metricColumnsByReport, viewMode: tableViewMode\n } = useGroupedSummaryTableSettingsState()\n\n const [tableData, setTableData] = useState(null)\n\n const setTableDataInSettings = fetchedTableData => {\n reportingFiltersDispatch({\n payload: { dataExporterTableData: fetchedTableData },\n type: 'SET_DATA_EXPORTER_TABLE_DATA'\n })\n }\n\n const setIsFetchingTableData = isFetchingDataExporterTableData => {\n reportingFiltersDispatch({\n payload: { isFetchingDataExporterTableData },\n type: 'SET_IS_FETCHING_DATA_EXPORTER_TABLE_DATA'\n })\n }\n\n const prevTableViewMode = usePrevious(tableViewMode)\n\n useEffect(() => {\n const hasTableViewModeChanges = prevTableViewMode && tableViewMode !== prevTableViewMode\n\n if (hasTableViewModeChanges) {\n saveTableViewMode(tableViewMode)\n }\n }, [prevTableViewMode, tableViewMode])\n\n const selectedMetricDefinitions = metricColumnsByReport[reportPage].map(\n metric => metricDefinitions[metric]\n )\n\n const { isMocking, metricDefinitionForOverlay } = getGroupedSummaryTableOnboardingStatus({\n onboardingStatus,\n selectedMetricDefinitions\n })\n\n let queryParamsForFetchingData = reportingFilters.dataExporterQuery\n\n const queryKey = JSON.stringify(queryParamsForFetchingData)\n\n const isGroupedByDate = includes(queryParamsForFetchingData.granularity, 'totals')\n\n if (isGroupedByDate) {\n queryParamsForFetchingData = {\n ...queryParamsForFetchingData,\n granularity: stripTotalsFromGranularity(\n queryParamsForFetchingData.granularity\n )\n }\n }\n\n /*\n TODO: Remove this once UA metrics are supported in DEv2\n (reference: TENJIN-11758, TENJIN-12909)\n */\n const shouldHideUaMetrics = isSkAdNetworkReport(reportType)\n\n if (shouldHideUaMetrics) {\n queryParamsForFetchingData = {\n ...queryParamsForFetchingData,\n metrics: filter(\n queryParamsForFetchingData.metrics,\n metric => !includes(UA_METRICS_AVAILABLE_IN_SK_AD_NETWORK_REPORT, metric)\n )\n }\n }\n\n const fetchExporterPreviewTableData = (isMocking || isEmpty(queryParamsForFetchingData))\n ? fetchMockAppLevelDataByDateForMetrics\n : getQueryFunctionForDataExporter({ isGroupedByDate, reportPage })\n\n const {\n data: groupedSummaryData,\n isError,\n isFetching,\n isLoading,\n refetch\n } = useQuery(['ExporterPreviewTableData', queryKey], () => (\n fetchExporterPreviewTableData({ isFlat: true, params: queryParamsForFetchingData })\n ), DEFAULT_QUERY_OPTIONS)\n\n const isPullingData = isLoading || isFetching || isNull(tableData)\n\n useEffect(() => {\n if (isLoading || isFetching) {\n setIsFetchingTableData(isLoading || isFetching)\n return\n }\n\n if (isError) {\n setTableData([])\n setTableDataInSettings([])\n } else {\n setTableData(groupedSummaryData)\n setTableDataInSettings(groupedSummaryData)\n }\n\n setIsFetchingTableData(false)\n }, [groupedSummaryData, isError, isFetching, isLoading])\n\n const { hasRecentlyReceivedFirstEvents } = onboardingStatus\n\n const hasNoDataToDisplay = !isMocking\n && !isError\n && !isPullingData\n && !hasRecentlyReceivedFirstEvents\n && isArray(tableData)\n && isEmpty(tableData)\n\n const isAwaitingDataToBeCalculated = !isMocking\n && !isError\n && !isPullingData\n && hasRecentlyReceivedFirstEvents\n && isEmpty(tableData)\n\n const shouldHaveNoHorizontalScroll = hasNoDataToDisplay\n || isAwaitingDataToBeCalculated\n\n const tableContainerClassName = classNames(styles.tableContainer, {\n [styles.tableContainerNoXScroll]: shouldHaveNoHorizontalScroll\n })\n\n const tableContainerRef = useRef(null)\n const tableContainerSize = useRefSize(tableContainerRef)\n\n return (\n
    \n
    \n \n \n\n {hasNoDataToDisplay && }\n\n {isAwaitingDataToBeCalculated && (\n \n )}\n \n
    \n\n {isMocking && }\n\n {isError && }\n
    \n )\n}\n\nExporterPreviewTable.propTypes = {\n className: PropTypes.oneOfType([\n PropTypes.array,\n PropTypes.string\n ])\n}\n\nExporterPreviewTable.defaultProps = {\n className: ''\n}\n\nexport default ExporterPreviewTable\n","import { useMemo, useRef } from 'react'\nimport { useLocation } from 'react-router-dom'\nimport PropTypes from 'prop-types'\nimport {\n useBlockLayout,\n useExpanded,\n useGlobalFilter,\n usePagination,\n useSortBy,\n useTable\n} from 'react-table'\nimport {\n includes,\n head,\n keys,\n isArray\n} from 'lodash'\nimport { camelCase } from 'camel-case'\n\nimport { deepCamelKeys } from '../../../../../utils/helpers'\n\nimport PaginatedTableInstance from '../PaginatedTableInstance'\n\nimport {\n INITIAL_STATE_SORT_BY,\n DEFAULT_PAGE_INDEX,\n DEFAULT_PAGE_SIZE\n} from './constants'\n\nimport { getColumnsForSelectedMetrics, getDefaultHeaders } from './helpers'\nimport { useMetricDefinitionsState } from '../../../../../contexts/MetricDefinitions'\nimport {\n useGroupedSummaryTableSettingsState\n} from '../../../../../contexts/GroupedSummaryTableSettings'\nimport {\n useReportingFiltersState,\n getReportTypeFromLocation\n} from '../../../../../contexts/ReportingFilters'\nimport useRefSize from '../../../../../hooks/useRefSize'\n\nconst PaginatedTable = ({\n hasNoData,\n isPullingData,\n tableContainerWidth,\n tableData,\n selectedMetrics\n}) => {\n const location = useLocation()\n const reportType = getReportTypeFromLocation(location)\n\n const { metricDefinitions } = useMetricDefinitionsState()\n const { rules: drilldownRules } = useGroupedSummaryTableSettingsState()\n\n const { dataExporterQuery, countries } = useReportingFiltersState()\n\n const tableRef = useRef(null)\n const tableSize = useRefSize(tableRef)\n\n const showDate = !includes(dataExporterQuery.granularity, 'totals')\n\n const columnKeys = keys(head(tableData))\n\n const groupBy = dataExporterQuery.groupBy && (\n isArray(dataExporterQuery.groupBy)\n ? deepCamelKeys(dataExporterQuery.groupBy)\n : camelCase(dataExporterQuery.groupBy)\n )\n\n const [columns, data] = useMemo(\n () => {\n const memoizedColumns = [\n ...getDefaultHeaders({\n columnKeys,\n countries,\n groupBy,\n reportType,\n showDate\n }),\n ...getColumnsForSelectedMetrics({\n isUsingDates: showDate,\n metricDefinitions,\n selectedMetrics,\n tableContainerWidth,\n tableWidth: tableSize.width\n })\n ]\n\n const memoizedData = tableData || []\n\n return [memoizedColumns, memoizedData]\n },\n [\n drilldownRules, metricDefinitions, selectedMetrics, tableContainerWidth,\n tableData, tableSize.width\n ]\n )\n\n const tableInstance = useTable(\n {\n autoResetExpanded: false,\n autoResetGlobalFilter: false,\n autoResetSortBy: false,\n columns,\n data,\n disableMultiSort: true,\n getSubRows: row => row.subRows,\n initialState: {\n pageIndex: DEFAULT_PAGE_INDEX,\n pageSize: DEFAULT_PAGE_SIZE,\n sortBy: INITIAL_STATE_SORT_BY\n }\n },\n /*\n Note: The ordering of react-table hooks is important here\n https://github.com/tannerlinsley/react-table/issues/1493\n */\n useBlockLayout,\n useGlobalFilter,\n useSortBy,\n useExpanded,\n usePagination\n )\n\n return (\n \n )\n}\n\nPaginatedTable.propTypes = {\n hasNoData: PropTypes.bool.isRequired,\n isLoading: PropTypes.bool,\n isPullingData: PropTypes.bool,\n selectedMetrics: PropTypes.arrayOf(PropTypes.string),\n tableContainerWidth: PropTypes.number,\n tableData: PropTypes.arrayOf(PropTypes.object)\n}\n\nPaginatedTable.defaultProps = {\n isLoading: false,\n isPullingData: false,\n selectedMetrics: [],\n tableContainerWidth: null,\n tableData: []\n}\n\nexport default PaginatedTable\n","import { forwardRef } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport { isEmpty } from 'lodash'\n\nimport TableData from '../../../../Table/Data'\nimport TableFakeRows from '../../../../Table/FakeRows'\nimport TableHeader from '../../../../Table/Header'\nimport TableRow from '../../../../Table/Row'\nimport TableSkeletonRows from '../../../../Table/SkeletonRows'\nimport TableNoDataRow from '../../../../Table/NoDataRow'\nimport PaginationControls from '../PaginationControls'\n\nimport { getTopLevelRowsById } from '../../../../Table/helpers'\n\nimport styles from './styles.module.scss'\n\nconst PaginatedTableInstance = forwardRef((props, ref) => {\n /* eslint-disable react/prop-types */\n const {\n canNextPage,\n canPreviousPage,\n getTableBodyProps,\n getTableProps,\n gotoPage,\n hasNoData,\n headerGroups,\n isPullingData,\n nextPage,\n page,\n pageCount,\n pageOptions,\n prepareRow,\n previousPage,\n rows,\n setPageSize,\n state: { pageIndex, pageSize }\n } = props\n /* eslint-enable react/prop-types */\n\n const hasNoRowsOfData = isEmpty(page)\n\n const shouldShowTableData = !(isPullingData || hasNoRowsOfData || hasNoData)\n\n const hasNoSearchDataToDisplay = !isPullingData\n && !hasNoData\n && hasNoRowsOfData\n\n const topLevelRowsById = getTopLevelRowsById(page)\n\n /* eslint-disable react/jsx-props-no-spreading */\n return (\n
    \n
    \n \n {\n // eslint-disable-next-line react/prop-types\n headerGroups.map(headerGroup => (\n
    \n {headerGroup.headers.map(column => {\n const isNameColumn = column.id === 'name'\n\n const hideReactTableTooltips = { title: undefined }\n\n const sortByProps = column.getSortByToggleProps({ ...hideReactTableTooltips })\n const title = isNameColumn ? null : sortByProps.title\n\n const onClick = async event => {\n sortByProps.onClick(event)\n }\n\n return (\n \n {column.render('Header')}\n \n )\n })}\n
    \n ))\n }\n
    \n\n
    \n {isPullingData && (\n
    \n \n
    \n )}\n\n {shouldShowTableData && (\n // eslint-disable-next-line react/prop-types\n page.map(row => {\n prepareRow(row)\n\n return (\n \n {row.cells.map((cell, index) => {\n const isFirstColumn = index === 0\n\n const isNameColumn = cell.column.id === 'name'\n\n /*\n TODO: Remove this section and nesting related code as\n data exporter does not handle row expansion\n */\n const tdClassName = classNames(\n {\n [styles.nameCell]: isNameColumn,\n [styles.depthOne]: isFirstColumn && row.depth === 1,\n [styles.depthTwo]: isFirstColumn && row.depth === 2,\n [styles.depthThree]: isFirstColumn && row.depth === 3,\n [styles.depthFour]: isFirstColumn && row.depth === 4,\n [styles.paddingForSortIcon]: !isNameColumn\n },\n styles.cell\n )\n\n return (\n \n {cell.render('Cell')}\n \n )\n })}\n \n )\n })\n )}\n\n {hasNoData && (\n
    \n \n
    \n )}\n\n {hasNoSearchDataToDisplay && (\n \n )}\n
    \n
    \n )\n /* eslint-enable react/jsx-props-no-spreading */\n})\n\nPaginatedTableInstance.propTypes = {\n hasNoData: PropTypes.bool.isRequired,\n isPullingData: PropTypes.bool\n}\n\nPaginatedTableInstance.defaultProps = {\n isPullingData: false\n}\n\nexport default PaginatedTableInstance\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport styles from './styles.module.scss'\n\nimport Toolbar from '../../../../Toolbar'\nimport ToolbarButton from '../../../../ToolbarButton'\nimport FontAwesomeIcon from '../../../../FontAwesomeIcon'\nimport PageSelector from './PageSelector'\nimport PageSizeSelector from './PageSizeSelector'\n\nconst PaginationControls = ({\n canNextPage,\n canPreviousPage,\n className,\n gotoPage,\n isPullingData,\n nextPage,\n pageCount,\n pageIndex,\n pageOptions,\n pageSize,\n previousPage,\n rowCount,\n setPageSize\n}) => (\n
    \n \n gotoPage(0)}\n disabled={!canPreviousPage}\n >\n \n \n previousPage()}\n disabled={!canPreviousPage}\n >\n \n \n nextPage()}\n disabled={!canNextPage}\n >\n \n \n gotoPage(pageCount - 1)}\n disabled={!canNextPage}\n >\n \n \n \n \n \n
    \n)\n\nPaginationControls.propTypes = {\n canNextPage: PropTypes.bool.isRequired,\n canPreviousPage: PropTypes.bool.isRequired,\n className: PropTypes.string,\n gotoPage: PropTypes.func.isRequired,\n isPullingData: PropTypes.bool.isRequired,\n nextPage: PropTypes.func.isRequired,\n pageCount: PropTypes.number.isRequired,\n pageIndex: PropTypes.number.isRequired,\n pageOptions: PropTypes.arrayOf(PropTypes.number).isRequired,\n pageSize: PropTypes.number.isRequired,\n previousPage: PropTypes.bool.isRequired,\n rowCount: PropTypes.number.isRequired,\n setPageSize: PropTypes.func.isRequired\n}\n\nPaginationControls.defaultProps = {\n className: null\n}\n\nexport default PaginationControls\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport styles from './styles.module.scss'\nimport Dropdown from '../../../../../Dropdown'\nimport FontAwesomeIcon from '../../../../../FontAwesomeIcon'\n\nconst PageSelector = ({\n className,\n gotoPage,\n isPullingData,\n pageIndex,\n pageOptions\n}) => {\n const handleChangePageSize = ({ value: updatedPageSize }) => gotoPage(updatedPageSize)\n\n const formattedPageOptions = pageOptions.map(pageOption => ({\n label: String(pageOption + 1),\n value: pageOption\n }))\n\n const noValueSymbol = \n\n const value = {\n label: isPullingData ? noValueSymbol : `${pageIndex + 1} of ${pageOptions.length}`,\n value: pageIndex\n }\n\n return (\n
    \n option.label}\n getOptionValue={option => option.value}\n isClearable={false}\n isSearchable\n onChange={handleChangePageSize}\n options={formattedPageOptions}\n value={value}\n placeholder=\"Select page\"\n />\n
    \n )\n}\n\nPageSelector.propTypes = {\n className: PropTypes.string,\n gotoPage: PropTypes.func.isRequired,\n isPullingData: PropTypes.bool.isRequired,\n pageIndex: PropTypes.func.isRequired,\n pageOptions: PropTypes.arrayOf(PropTypes.number).isRequired\n}\n\nPageSelector.defaultProps = {\n className: null\n}\n\nexport default PageSelector\n","import { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport styles from './styles.module.scss'\n\nimport { PAGE_SIZE_OPTIONS } from './constants'\nimport Dropdown from '../../../../../Dropdown'\nimport { calculateRowRange, getAllRowsText } from './helpers'\nimport FontAwesomeIcon from '../../../../../FontAwesomeIcon'\n\nconst PageSizeSelector = ({\n className,\n isPullingData,\n pageIndex,\n pageSize,\n rowCount,\n setPageSize\n}) => {\n const isShowingAllRows = pageSize >= rowCount\n\n const handleChangePageSize = ({ value: updatedPageSize }) => setPageSize(updatedPageSize)\n\n const allRowsText = getAllRowsText(rowCount)\n\n const { end, start } = calculateRowRange({ pageIndex, pageSize, rowCount })\n\n const someRowsText = (\n \n {pageSize}{' '}\n \n Viewing {start}-{end} of {rowCount} rows.\n \n \n )\n\n const rowsLabel = isShowingAllRows ? allRowsText : someRowsText\n\n const noValueSymbol = \n\n const value = {\n label: isPullingData ? noValueSymbol : rowsLabel,\n value: pageSize\n }\n\n return (\n
    \n option.label}\n getOptionValue={option => option.value}\n isClearable={false}\n onChange={handleChangePageSize}\n options={PAGE_SIZE_OPTIONS}\n value={value}\n placeholder=\"Select page size\"\n />\n
    \n )\n}\n\nPageSizeSelector.propTypes = {\n className: PropTypes.string,\n isPullingData: PropTypes.bool.isRequired,\n pageIndex: PropTypes.number.isRequired,\n pageSize: PropTypes.number.isRequired,\n rowCount: PropTypes.number.isRequired,\n setPageSize: PropTypes.func.isRequired\n}\n\nPageSizeSelector.defaultProps = {\n className: null\n}\n\nexport default PageSizeSelector\n","import { Fragment } from 'react'\nimport classNames from 'classnames'\nimport { useLocation } from 'react-router-dom'\n\nimport DeleteReportBtn from './DeleteReportBtn'\nimport DownloadCSVBtn from './DownloadCSVBtn'\nimport SaveReportBtn from './SaveReportBtn'\nimport SavedReportSelector from './SavedReportSelector'\n\nimport {\n isSkAdNetworkReport,\n getReportTypeFromLocation\n} from '../../../../contexts/ReportingFilters'\n\nconst ExporterActions = () => {\n const location = useLocation()\n const reportType = getReportTypeFromLocation(location)\n\n const allowSave = !isSkAdNetworkReport(reportType)\n\n const className = classNames('u-flex', 'u-flexJustifyStart')\n\n return (\n
    \n {allowSave && (\n \n \n \n \n \n )}\n\n \n
    \n )\n}\n\nexport default ExporterActions\n","import { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport { useLocation, useHistory } from 'react-router-dom'\nimport { noop } from '../../../../../utils/helpers'\n\nimport FontAwesomeIcon from '../../../../FontAwesomeIcon'\n\nimport styles from './styles.module.scss'\n\nimport {\n useReportingFiltersState,\n useReportingFiltersDispatch,\n getReportTypeFromLocation,\n getSavedReportFromLocation\n} from '../../../../../contexts/ReportingFilters'\n\nimport { deleteSavedReport } from '../../../../../api/reporting'\n\nconst DeleteReportBtn = ({ className }) => {\n const reportingFilters = useReportingFiltersState()\n const reportingFiltersDispatch = useReportingFiltersDispatch()\n\n const history = useHistory()\n const location = useLocation()\n const reportType = getReportTypeFromLocation(location)\n\n const selectedSavedReport = getSavedReportFromLocation({\n location,\n reportType,\n reportingFilters\n })\n\n const {\n isDeletingReport,\n isDeletingReportError,\n savedReportName\n } = reportingFilters\n\n const saveBtnClassName = classNames('btn', 'btn-lg', 'btn-danger', {\n disabled: isDeletingReport || isDeletingReportError || !savedReportName\n })\n\n const canClickDelete = !isDeletingReport && !isDeletingReportError && savedReportName\n\n const deleteIcon = 'trash'\n const deleteText = isDeletingReportError || 'Delete Report'\n\n const handleClick = async () => {\n reportingFiltersDispatch({\n payload: { isDeletingReport: true },\n type: 'SET_IS_DELETING_REPORT'\n })\n\n try {\n // eslint-disable-next-line no-alert\n if (window.confirm(`Delete ${selectedSavedReport.name}`)) {\n await deleteSavedReport(selectedSavedReport.id)\n\n const refreshUrl = `${location.pathname}?report_type=${reportType}`\n\n history.push(refreshUrl)\n history.go(0)\n }\n } catch (error) {\n const errorMessage = error.response?.data?.error || 'Something went wrong.'\n\n reportingFiltersDispatch({\n payload: { isDeletingReportError: errorMessage },\n type: 'SET_IS_DELETING_REPORT_ERROR'\n })\n\n reportingFiltersDispatch({\n payload: { isDeletingReport: false },\n type: 'SET_IS_DELETING_REPORT'\n })\n }\n }\n\n /* eslint-disable jsx-a11y/interactive-supports-focus, jsx-a11y/click-events-have-key-events */\n return (\n
    \n \n {isDeletingReport ? (\n \n Deleting\n \n ) : (\n \n {deleteText}\n \n )}\n
    \n
    \n )\n /* eslint-enable jsx-a11y/interactive-supports-focus */\n}\n\nDeleteReportBtn.propTypes = {\n className: PropTypes.string\n}\n\nDeleteReportBtn.defaultProps = {\n className: ''\n}\n\nexport default DeleteReportBtn\n","import classNames from 'classnames'\nimport { CSVLink } from 'react-csv'\nimport PropTypes from 'prop-types'\nimport { useLocation } from 'react-router-dom'\n\nimport FontAwesomeIcon from '../../../../FontAwesomeIcon'\n\nimport {\n useReportingFiltersState,\n getQueryParams\n} from '../../../../../contexts/ReportingFilters'\n\nimport { useMetricDefinitionsState } from '../../../../../contexts/MetricDefinitions'\nimport { useCurrentUserState } from '../../../../../contexts/CurrentUser'\nimport {\n buildDataExporterCSVData,\n getCSVHeaders,\n getCSVFilename\n} from '../../../../DownloadCSVButtonClient/helpers'\n\nimport styles from './styles.module.scss'\n\nconst DownloadCSVBtn = ({ className }) => {\n const location = useLocation()\n const reportingFilters = useReportingFiltersState()\n const { currentUser } = useCurrentUserState()\n const { metricDefinitions } = useMetricDefinitionsState()\n\n const { dataExporterTableData, dataExporterQuery, apps } = reportingFilters\n\n const urlParams = getQueryParams({\n currentUser,\n location,\n reportingFilters\n })\n\n const groupBy = dataExporterQuery.groupBy || urlParams.groupBy\n const startDate = dataExporterQuery.startDate || urlParams.startDate\n const endDate = dataExporterQuery.endDate || urlParams.endDate\n\n const csvData = buildDataExporterCSVData({\n apps,\n data: dataExporterTableData,\n groupBy,\n metricDefinitions\n })\n\n const headers = getCSVHeaders(csvData)\n const filename = getCSVFilename({ endDate, groupBy, startDate })\n\n const hasCsvData = csvData.length > 0\n\n return (\n
    \n \n Download CSV\n \n
    \n )\n}\n\nDownloadCSVBtn.propTypes = {\n className: PropTypes.string\n}\n\nDownloadCSVBtn.defaultProps = {\n className: ''\n}\n\nexport default DownloadCSVBtn\n","import { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport { useLocation } from 'react-router-dom'\nimport { noop } from '../../../../../utils/helpers'\n\nimport FontAwesomeIcon from '../../../../FontAwesomeIcon'\n\nimport styles from './styles.module.scss'\n\nimport {\n useReportingFiltersState,\n useReportingFiltersDispatch,\n getSavedReportPayloadFromFilters,\n getReportTypeFromLocation,\n getSavedReportFromLocation\n} from '../../../../../contexts/ReportingFilters'\n\nimport { updateSavedReport } from '../../../../../api/reporting'\n\nconst SaveReportBtn = ({ className }) => {\n const reportingFilters = useReportingFiltersState()\n const reportingFiltersDispatch = useReportingFiltersDispatch()\n\n const location = useLocation()\n const reportType = getReportTypeFromLocation(location)\n\n const selectedSavedReport = getSavedReportFromLocation({\n location,\n reportType,\n reportingFilters\n })\n\n const {\n isSavingReport,\n isSavingReportError,\n savedReportName\n } = reportingFilters\n\n const saveBtnClassName = classNames('btn', 'btn-lg', {\n 'btn-danger': isSavingReportError,\n 'btn-success': !isSavingReportError,\n disabled: isSavingReport || isSavingReportError || !savedReportName\n })\n\n const canClickSave = !isSavingReport && !isSavingReportError && savedReportName\n\n const saveIcon = isSavingReportError ? 'times' : 'save'\n const saveText = isSavingReportError || 'Save Report'\n\n const handleClick = async () => {\n const data = getSavedReportPayloadFromFilters({\n reportType,\n reportingFilters\n })\n\n reportingFiltersDispatch({\n payload: { isSavingReport: true },\n type: 'SET_IS_SAVING_REPORT'\n })\n\n try {\n await updateSavedReport({ data, id: selectedSavedReport.id })\n } catch (error) {\n const errorMessage = error.response?.data?.error || 'Something went wrong.'\n\n reportingFiltersDispatch({\n payload: { isSavingReportError: errorMessage },\n type: 'SET_IS_SAVING_REPORT_ERROR'\n })\n }\n\n reportingFiltersDispatch({\n payload: { isSavingReport: false },\n type: 'SET_IS_SAVING_REPORT'\n })\n }\n\n /* eslint-disable jsx-a11y/interactive-supports-focus, jsx-a11y/click-events-have-key-events */\n return (\n
    \n \n {isSavingReport ? (\n \n Saving\n \n ) : (\n \n {saveText}\n \n )}\n
    \n \n )\n /* eslint-enable jsx-a11y/interactive-supports-focus */\n}\n\nSaveReportBtn.propTypes = {\n className: PropTypes.string\n}\n\nSaveReportBtn.defaultProps = {\n className: ''\n}\n\nexport default SaveReportBtn\n","import { map } from 'lodash'\nimport PropTypes from 'prop-types'\nimport { useEffect } from 'react'\nimport { useHistory, useLocation } from 'react-router-dom'\nimport CreatableSelect from 'react-select/creatable'\n\nimport { createSavedReport } from '../../../../../api/reporting'\nimport {\n getReportTypeFromLocation,\n getSavedReportFromLocation,\n getSavedReportPayloadFromFilters,\n useReportingFiltersDispatch,\n useReportingFiltersState\n} from '../../../../../contexts/ReportingFilters'\nimport { PRIMARY_COLORS } from '../../../../../utils/react-select'\nimport { MAX_MENU_HEIGHT } from './constants'\nimport { buildSavedReportUrl, getDefaultValue } from './helpers'\nimport stylesObj from './styles.module.scss'\n\nconst customStyles = {\n clearIndicator: styles => ({\n ...styles,\n padding: 0\n }),\n container: styles => ({ ...styles, cursor: 'pointer' }),\n control: styles => ({\n ...styles,\n borderColor: stylesObj.controlBorderColor,\n display: 'flex',\n flexGrow: 0,\n flexShrink: 1,\n fontFamily: 'Montserrat',\n height: stylesObj.controlHeight,\n lineHeight: stylesObj.controlLineHeight,\n minWidth: stylesObj.controlMinWidth\n }),\n dropdownIndicator: styles => ({\n ...styles,\n ':hover': {\n ...styles[':hover'],\n color: PRIMARY_COLORS.base\n },\n color: PRIMARY_COLORS.base,\n paddingLeft: 0\n }),\n indicatorSeparator: styles => ({\n ...styles,\n display: 'none',\n width: 0\n }),\n menu: styles => ({\n ...styles,\n whiteSpace: 'nowrap',\n zIndex: stylesObj.menuZIndex\n }),\n singleValue: () => ({ color: PRIMARY_COLORS.base })\n}\n\nconst SavedReportSelector = ({ className }) => {\n const reportingFilters = useReportingFiltersState()\n const reportingFiltersDispatch = useReportingFiltersDispatch()\n\n const location = useLocation()\n const reportType = getReportTypeFromLocation(location)\n const history = useHistory()\n\n const { savedReportsByReportType } = reportingFilters\n\n const savedReportOptions = savedReportsByReportType[reportType]\n\n const selectedSavedReport = getSavedReportFromLocation({\n location,\n reportType,\n reportingFilters\n })\n\n useEffect(() => {\n if (selectedSavedReport) {\n reportingFiltersDispatch({\n payload: { name: selectedSavedReport.name },\n type: 'SET_SAVED_REPORT_NAME'\n })\n }\n }, [location])\n\n const options = [\n {\n label: 'Select Existing Report',\n options: map(savedReportOptions, ({ id, name }) => ({\n label: name,\n value: id\n }))\n }\n ]\n\n const handleChange = async (data, event) => {\n if (event.action === 'clear') {\n reportingFiltersDispatch({\n payload: { name: '' },\n type: 'SET_SAVED_REPORT_NAME'\n })\n\n reportingFiltersDispatch({\n payload: { isSavingReportError: null },\n type: 'SET_IS_SAVING_REPORT_ERROR'\n })\n }\n\n if (event.action === 'select-option') {\n reportingFiltersDispatch({\n payload: { name: data.label },\n type: 'SET_SAVED_REPORT_NAME'\n })\n\n reportingFiltersDispatch({\n payload: { isSavingReportError: null },\n type: 'SET_IS_SAVING_REPORT_ERROR'\n })\n\n reportingFiltersDispatch({\n payload: { isFilterDirty: false },\n type: 'SET_IS_FILTER_DIRTY'\n })\n\n const savedReportUrl = buildSavedReportUrl({\n location,\n reportType,\n savedReportId: data.value\n })\n\n history.push(savedReportUrl)\n }\n\n if (event.action === 'create-option') {\n reportingFiltersDispatch({\n payload: { name: data.value },\n type: 'SET_SAVED_REPORT_NAME'\n })\n\n reportingFiltersDispatch({\n payload: { isSavingReport: true },\n type: 'SET_IS_SAVING_REPORT'\n })\n\n const payload = getSavedReportPayloadFromFilters({\n reportType,\n reportingFilters\n })\n\n try {\n const {\n data: { id }\n } = await createSavedReport({ ...payload, name: data.value })\n\n const savedReportUrl = buildSavedReportUrl({\n location,\n reportType,\n savedReportId: id\n })\n\n history.push(savedReportUrl)\n history.go(0)\n } catch (error) {\n const errorMessage =\n error.response?.data?.error || 'Something went wrong.'\n\n reportingFiltersDispatch({\n payload: { isSavingReportError: errorMessage },\n type: 'SET_IS_SAVING_REPORT_ERROR'\n })\n\n reportingFiltersDispatch({\n payload: { isSavingReport: false },\n type: 'SET_IS_SAVING_REPORT'\n })\n }\n }\n }\n\n return (\n
    \n `Save \"${label}\" as new report`}\n onChange={handleChange}\n maxMenuHeight={MAX_MENU_HEIGHT}\n placeholder=\"Enter Report Name\"\n options={options}\n styles={customStyles}\n theme={theme => ({\n ...theme,\n colors: {\n ...theme.colors,\n primary: PRIMARY_COLORS.base,\n primary25: PRIMARY_COLORS['25'],\n primary50: PRIMARY_COLORS['50'],\n primary75: PRIMARY_COLORS['75']\n }\n })}\n />\n
    \n )\n}\n\nSavedReportSelector.propTypes = {\n className: PropTypes.string\n}\n\nSavedReportSelector.defaultProps = {\n className: ''\n}\n\nexport default SavedReportSelector\n","import classNames from 'classnames'\nimport { filter } from 'lodash'\nimport React, { useEffect, useState } from 'react'\nimport { useHistory, useLocation } from 'react-router-dom'\n\nimport { useCurrentUserState } from '../../../../contexts/CurrentUser'\nimport { useGroupedSummaryTableSettingsState } from '../../../../contexts/GroupedSummaryTableSettings'\nimport { useMetricDefinitionsDispatch } from '../../../../contexts/MetricDefinitions'\nimport {\n getReportPageByReportType,\n getSavedReportFromLocation,\n isPublisherReport,\n isSkAdNetworkReport,\n isUserAcquisitionReport,\n useReportingFiltersDispatch,\n useReportingFiltersState\n} from '../../../../contexts/ReportingFilters'\nimport { USER_ACQUISITION_REPORT_TYPE_STR } from '../../../../contexts/ReportingFilters/constants'\nimport ClickOutsideAlerter from '../../../ClickOutsideAlerter'\nimport LoadingOverlay from '../../../LoadingOverlay'\nimport AppsFilter from '../../../ReportingSidebar/AppsFilter'\nimport ChannelsFilter from '../../../ReportingSidebar/ChannelsFilter'\nimport Collapser from '../../../ReportingSidebar/Collapser'\nimport CountriesFilter from '../../../ReportingSidebar/CountriesFilter'\nimport DateFilter from '../../../ReportingSidebar/DateFilter'\nimport styles from '../../../ReportingSidebar/styles.module.scss'\nimport SkAdNetworkAppsFilter from '../../SkAdNetworkPage/ReportingSidebar/AppsFilter'\nimport ClearFiltersBtn from './ClearFiltersBtn'\nimport FetchResultsBtn from './FetchResultsBtn'\nimport GranularityFilter from './GranularityFilter'\nimport {\n buildQueryParamsFromFilterChanges,\n buildStateFromQueryParams,\n getFilterChanges\n} from './helpers'\nimport MetricsFilter from './MetricsFilter'\nimport MultiSelectGroupByFilter from './MultiSelectGroupByFilter'\nimport ReportTypeFilter from './ReportTypeFilter'\nimport SingleSelectGroupByFilter from './SingleSelectGroupByFilter'\n\nconst ReportingSidebar = () => {\n const reportingFilters = useReportingFiltersState()\n const reportingFiltersDispatch = useReportingFiltersDispatch()\n\n const metricDefinitionsDispatch = useMetricDefinitionsDispatch()\n const { metricColumnsByReport } = useGroupedSummaryTableSettingsState()\n\n const history = useHistory()\n const location = useLocation()\n\n const { currentUser } = useCurrentUserState()\n\n const [state, setState] = useState({\n currentOpenPane: null,\n ...buildStateFromQueryParams({\n currentUser,\n location,\n metricColumnsByReport,\n reportingFilters\n })\n })\n\n const [isChangingReportType, setIsChangingReportType] = useState(false)\n\n const { isSidebarCollapsed: isCollapsed } = reportingFilters\n\n const {\n currentApps,\n currentCountries,\n currentChannels,\n currentEndDate,\n currentGranularity,\n currentGroupBy,\n currentMetrics,\n currentOpenPane,\n currentStartDate,\n selectedReport,\n unappliedApps,\n unappliedCountries,\n unappliedChannels,\n unappliedEndDate,\n unappliedGranularity,\n unappliedGroupBy,\n unappliedMetrics,\n unappliedStartDate,\n dataExporterQuery\n } = state\n\n useEffect(() => {\n reportingFiltersDispatch({\n payload: { dataExporterQuery },\n type: 'UPDATE_DATA_EXPORTER_QUERY'\n })\n }, [dataExporterQuery])\n\n useEffect(() => {\n setState({\n ...state,\n ...buildStateFromQueryParams({\n currentUser,\n location,\n metricColumnsByReport,\n reportingFilters\n })\n })\n }, [location])\n\n const {\n canApplyChanges,\n hasAppsFilterChanges,\n hasChannelsFilterChanges,\n hasCountriesFilterChanges,\n hasDateFilterChanges,\n hasFilterChanges,\n hasMetricsFilterChanges,\n hasGranularityFilterChanges,\n hasGroupByFilterChanges\n } = getFilterChanges({\n currentApps,\n currentChannels,\n currentCountries,\n currentEndDate,\n currentGranularity,\n currentGroupBy,\n currentMetrics,\n currentStartDate,\n unappliedApps,\n unappliedChannels,\n unappliedCountries,\n unappliedEndDate,\n unappliedGranularity,\n unappliedGroupBy,\n unappliedMetrics,\n unappliedStartDate\n })\n\n const togglePaneFor = pane =>\n setState({\n ...state,\n currentOpenPane: currentOpenPane === pane ? null : pane\n })\n\n const closeCurrentPane = () => setState({ ...state, currentOpenPane: null })\n\n const handleClickFetchResults = () => {\n /*\n Note: This button is not clickable unless the filters\n have changed, setting isFilterDirty here\n prevents the savedReport from overwriting the\n updated filters.\n */\n reportingFiltersDispatch({\n payload: { isFilterDirty: true },\n type: 'SET_IS_FILTER_DIRTY'\n })\n\n const urlParams = buildQueryParamsFromFilterChanges({\n apps: unappliedApps,\n channels: unappliedChannels,\n /*\n TODO: Add default prop validation for components\n that fail with empty countries\n */\n countries: unappliedCountries || [],\n endDate: unappliedEndDate,\n granularity: unappliedGranularity,\n groupBy: unappliedGroupBy,\n metrics: unappliedMetrics,\n reportingFilters,\n selectedReport,\n startDate: unappliedStartDate\n })\n\n let updatedUrl = `${location.pathname}?${urlParams}`\n\n const selectedSavedReport = getSavedReportFromLocation({\n location,\n reportType: selectedReport,\n reportingFilters\n })\n\n if (selectedSavedReport) {\n updatedUrl = `${updatedUrl}&saved_report_id=${selectedSavedReport.id}`\n }\n\n history.push(updatedUrl)\n\n closeCurrentPane()\n }\n\n const handleClickClearFilters = () => {\n const urlParams =\n selectedReport !== USER_ACQUISITION_REPORT_TYPE_STR\n ? `?report_type=${selectedReport}`\n : ''\n\n history.push(`${location.pathname}${urlParams}`)\n closeCurrentPane()\n }\n\n const handleChangeReportType = reportType => {\n metricDefinitionsDispatch({\n payload: { reportType },\n type: 'CHANGE_REPORT_TYPE'\n })\n setIsChangingReportType(true)\n }\n\n const handleChangeGranularity = ({ reportType, granularity }) => {\n metricDefinitionsDispatch({\n payload: {\n granularity,\n reportPage: getReportPageByReportType(reportType)\n },\n type: 'CHANGE_GRANULARITY'\n })\n }\n\n useEffect(() => {\n const selectedApps = unappliedApps.slice(0, 1)\n\n if (selectedApps.length > 0) {\n reportingFiltersDispatch({\n payload: { selectedApps },\n type: 'UPDATE_SELECTED_APPS'\n })\n }\n }, [unappliedApps])\n\n const showUserAcquisitionFilters = isUserAcquisitionReport(selectedReport)\n const showAdMonetizationFilters = isPublisherReport(selectedReport)\n const showSkAdNetworkReportFilters = isSkAdNetworkReport(selectedReport)\n const showSingleSelectGroupByFilter =\n showUserAcquisitionFilters || showAdMonetizationFilters\n const showCountriesFilter =\n showUserAcquisitionFilters || showAdMonetizationFilters\n\n if (isChangingReportType) {\n return \n }\n\n return (\n \n \n
    \n togglePaneFor('reportType')}\n onChangeReportType={reportType =>\n handleChangeReportType(reportType)\n }\n />\n\n {\n setState({\n ...state,\n unappliedEndDate: endDate,\n unappliedStartDate: startDate\n })\n }}\n onCloseClick={closeCurrentPane}\n onLabelClick={() => togglePaneFor('dates')}\n selectedEndDate={unappliedEndDate}\n selectedStartDate={unappliedStartDate}\n />\n\n {\n setState({\n ...state,\n currentOpenPane: null,\n unappliedGranularity: granularity\n })\n handleChangeGranularity({\n granularity,\n reportType: selectedReport\n })\n }}\n onCloseClick={closeCurrentPane}\n onLabelClick={() => togglePaneFor('granularity')}\n selectedGranularity={unappliedGranularity}\n />\n\n {showSingleSelectGroupByFilter && (\n {\n setState({\n ...state,\n currentOpenPane: null,\n unappliedGroupBy: groupBy\n })\n }}\n onCloseClick={closeCurrentPane}\n onLabelClick={() => togglePaneFor('groupBy')}\n selectedChannels={unappliedChannels}\n selectedGroupBy={unappliedGroupBy}\n />\n )}\n\n {showSkAdNetworkReportFilters && (\n {\n setState({ ...state, unappliedGroupBy: groupBy })\n }}\n onCloseClick={closeCurrentPane}\n onLabelClick={() => togglePaneFor('groupBy')}\n selectedGroupBy={unappliedGroupBy}\n />\n )}\n\n {showSkAdNetworkReportFilters ? (\n \n setState({\n ...state,\n currentOpenPane: null,\n unappliedApps: apps\n })\n }\n onCloseClick={closeCurrentPane}\n onLabelClick={() => togglePaneFor('apps')}\n selectedApps={unappliedApps.slice(0, 1)}\n />\n ) : (\n setState({ ...state, unappliedApps: apps })}\n onCloseClick={closeCurrentPane}\n onLabelClick={() => togglePaneFor('apps')}\n selectedApps={unappliedApps}\n />\n )}\n\n \n setState({ ...state, unappliedChannels: channels })\n }\n onCloseClick={closeCurrentPane}\n onLabelClick={() => togglePaneFor('channels')}\n selectedChannels={unappliedChannels}\n selectedGroupBy={unappliedGroupBy}\n />\n\n {showCountriesFilter && (\n {\n setState({ ...state, unappliedCountries: newCountries })\n }}\n onCloseClick={closeCurrentPane}\n onLabelClick={() => togglePaneFor('countries')}\n selectedCountries={unappliedCountries}\n selectedGroupBy={unappliedGroupBy}\n />\n )}\n\n \n setState({ ...state, unappliedMetrics: metrics })\n }\n onCloseClick={closeCurrentPane}\n onLabelClick={() => togglePaneFor('metrics')}\n selectedMetrics={unappliedMetrics}\n onClickSelectedMetric={metric => {\n setState({\n ...state,\n unappliedMetrics: filter(\n state.unappliedMetrics,\n unappliedMetric => unappliedMetric !== metric.key\n )\n })\n }}\n />\n\n \n\n \n\n reportingFiltersDispatch({ type: 'TOGGLE_SIDEBAR' })}\n />\n
    \n \n
    \n )\n}\n\nexport default ReportingSidebar\n","import { Fragment } from 'react'\nimport PropTypes from 'prop-types'\n\nimport FontAwesomeIcon from '../../../../../FontAwesomeIcon'\nimport ListItem from '../../../../../ReportingSidebar/Filter/Pane/ListItem'\nimport SingleSelectIcon from '../../../../../ReportingSidebar/Filter/Pane/ListItem/SingleSelectIcon'\nimport PlatformIcon from '../../../../../PlatformIcon'\n\nimport { associatableAppObject } from '../../../../../../utils/customPropTypes'\n\nimport styles from './styles.module.scss'\n\nconst AppsListItem = (\n {\n app,\n isSelected,\n onClick\n }\n) => (\n \n {app.iconUrl && (\n {app.name}\n )}\n\n \n\n {app.name}\n \n )}\n onClick={onClick}\n rightContent={(\n app.numSkApps === 0 && (\n \n \n \n )\n )}\n selectionIcon={}\n />\n)\n\nAppsListItem.propTypes = {\n app: associatableAppObject.isRequired,\n isSelected: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired\n}\n\nexport default AppsListItem\n","import Tooltip from 'rc-tooltip'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport FontAwesomeIcon from '../../../../FontAwesomeIcon'\n\nimport styles from './styles.module.scss'\n\nconst ClearFiltersBtn = ({ isCollapsed, onClick }) => {\n const className = classNames('btn', 'btn-danger', styles.button)\n\n return (\n Clear all filters}\n placement=\"right\"\n >\n \n {!isCollapsed && 'Clear'}\n {isCollapsed && }\n \n \n )\n}\n\nClearFiltersBtn.propTypes = {\n isCollapsed: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired\n}\n\nexport default ClearFiltersBtn\n","import PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport Tooltip from 'rc-tooltip'\n\nimport FontAwesomeIcon from '../../../../FontAwesomeIcon'\n\nimport { noop } from '../../../../../utils/helpers'\n\nimport styles from './styles.module.scss'\n\nconst FetchResultsBtn = ({\n canApply, hasFilterChanges, isCollapsed, onClick\n}) => {\n const className = classNames('btn', 'btn-success', styles.button, {\n disabled: !canApply\n })\n\n let tooltipText\n\n if (canApply) {\n tooltipText = 'Apply your filters changes'\n } else if (hasFilterChanges) {\n tooltipText = 'You have some filters that are not valid'\n } else {\n tooltipText = 'You have no filter changes'\n }\n\n return (\n {tooltipText}}\n placement=\"right\"\n >\n \n {!isCollapsed && 'Fetch Results'}\n {isCollapsed && }\n \n \n )\n}\n\nFetchResultsBtn.propTypes = {\n canApply: PropTypes.bool.isRequired,\n hasFilterChanges: PropTypes.bool.isRequired,\n isCollapsed: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired\n}\n\nexport default FetchResultsBtn\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { find, includes } from 'lodash'\n\nimport Filter from '../../../../ReportingSidebar/Filter'\nimport FontAwesomeIcon from '../../../../FontAwesomeIcon'\nimport Label from '../../../../ReportingSidebar/Filter/Label'\nimport ListItem from './ListItem'\nimport Pane from '../../../../ReportingSidebar/Filter/Pane'\nimport TotalsRadio from './TotalsRadio'\n\nimport { useReportingFiltersState } from '../../../../../contexts/ReportingFilters'\nimport { oneOfSelectableDataExporterGranularities } from '../../../../../utils/customPropTypes'\n\nimport { getGranularitiesByTotalsOption } from './helpers'\n\nconst GranularityFilter = (\n {\n hasFilterChanges,\n isCollapsed,\n isOpen,\n onChange,\n onCloseClick,\n onLabelClick,\n selectedGranularity\n }\n) => {\n const { dataExporterGranularities } = useReportingFiltersState()\n\n const [isUsingTotals, setIsUsingTotals] = useState(includes(selectedGranularity, 'totals-'))\n\n const handleClickTotalsRadio = value => setIsUsingTotals(value)\n\n const activeGranularity = find(dataExporterGranularities, { id: selectedGranularity })\n\n const granularities = getGranularitiesByTotalsOption({\n dataExporterGranularities,\n isUsingTotals\n })\n\n const granularityRadios = granularities.map(granularity => (\n onChange(granularity.id)}\n />\n ))\n\n const tooltipText = `Granularity - ${activeGranularity.name}`\n\n return (\n }\n hasFilterChanges={hasFilterChanges}\n isCollapsed={isCollapsed}\n isDisabled={false}\n isOpen={isOpen}\n isTooltipDisabled={!isCollapsed}\n labelTitle=\"Granularity\"\n onClick={onLabelClick}\n tooltipText={tooltipText}\n >\n {activeGranularity.name}\n \n )}\n pane={(\n \n \n {granularityRadios}\n \n )}\n />\n )\n}\n\nGranularityFilter.propTypes = {\n hasFilterChanges: PropTypes.bool.isRequired,\n isCollapsed: PropTypes.bool.isRequired,\n isOpen: PropTypes.bool.isRequired,\n onChange: PropTypes.func.isRequired,\n onCloseClick: PropTypes.func.isRequired,\n onLabelClick: PropTypes.func.isRequired,\n selectedGranularity: oneOfSelectableDataExporterGranularities.isRequired\n}\n\nexport default GranularityFilter\n","import PropTypes from 'prop-types'\n\nimport ListItem from '../../../../../ReportingSidebar/Filter/Pane/ListItem'\nimport SingleSelectIcon from '../../../../../ReportingSidebar/Filter/Pane/ListItem/SingleSelectIcon'\n\nimport { dataExporterGranularityObject } from '../../../../../../utils/customPropTypes'\n\nconst GranularityListItem = (\n {\n granularity,\n isSelected,\n onClick\n }\n) => (\n }\n />\n)\n\nGranularityListItem.propTypes = {\n granularity: dataExporterGranularityObject.isRequired,\n isSelected: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired\n}\n\nexport default GranularityListItem\n","import { Fragment } from 'react'\nimport PropTypes from 'prop-types'\n\nimport styles from './styles.module.scss'\nimport RadioButton from '../../../../../RadioButton/RadioButton'\n\nconst TotalsRadio = ({ isUsingTotals, onClick }) => (\n \n
    \n Use Totals\n
    \n
    \n onClick(true)}\n >\n Yes\n \n onClick(false)}\n >\n No\n \n
    \n
    \n)\n\nTotalsRadio.propTypes = {\n isUsingTotals: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired\n}\n\nexport default TotalsRadio\n","import {\n useEffect,\n useState,\n useMemo,\n Fragment\n} from 'react'\nimport PropTypes from 'prop-types'\nimport {\n map,\n values,\n filter,\n isNil,\n chain,\n includes\n} from 'lodash'\nimport Fuse from 'fuse.js'\nimport { useLocation } from 'react-router-dom'\nimport { FixedSizeList as List } from 'react-window'\n\nimport Filter from '../../../../ReportingSidebar/Filter'\nimport FontAwesomeIcon from '../../../../FontAwesomeIcon'\nimport Label from '../../../../ReportingSidebar/Filter/Label'\nimport ListItem from './ListItem'\nimport Pane from '../../../../ReportingSidebar/Filter/Pane'\nimport Search from '../../../../ReportingSidebar/Filter/Search'\nimport SelectedItems from '../../../../ReportingSidebar/Filter/SelectedItems'\nimport SelectAll from '../../../../ReportingSidebar/Filter/SelectAll'\n\nimport { isPresent } from '../../../../../utils/helpers'\nimport { buildLabelTextFromMultiSelected } from '../../../../ReportingSidebar/Filter/Label/helpers'\nimport {\n FUSE_OPTIONS,\n MAX_DISPLAY_COUNT,\n METRIC_LIST_HEIGHT_OFFSET,\n METRIC_LIST_ITEM_SIZE\n} from './constants'\nimport { useMetricDefinitionsState } from '../../../../../contexts/MetricDefinitions'\nimport { getBaseMetricDefinitionsMapping } from '../../../../../contexts/MetricDefinitions/helpers'\nimport { getReportTypeFromLocation, isSkAdNetworkReport } from '../../../../../contexts/ReportingFilters'\nimport useWindowDimensions from '../../../../../hooks/useWindowDimensions'\n\nimport { getSelectableMetrics } from './helpers'\nimport { UA_METRICS_AVAILABLE_IN_SK_AD_NETWORK_REPORT } from '../../../../../utils/constants'\nimport { hasSelectedAllVisibleItems } from '../../../../ReportingSidebar/Filter/helpers'\n\nimport styles from './styles.module.scss'\n\nconst createFuseList = metrics => new Fuse(values(metrics), FUSE_OPTIONS)\n\nconst MetricsFilter = (\n {\n hasFilterChanges,\n isCollapsed,\n isOpen,\n onChange,\n onCloseClick,\n onLabelClick,\n selectedMetrics: rawSelectedMetrics,\n onClickSelectedMetric\n }\n) => {\n const location = useLocation()\n const reportType = getReportTypeFromLocation(location)\n\n const { metricDefinitions } = useMetricDefinitionsState()\n\n let metricDefinitionValues\n let selectedMetrics\n\n /*\n TODO: Remove this once UA metrics are supported in DEv2\n (reference: TENJIN-11758, TENJIN-12909)\n */\n const shouldHideUaMetrics = isSkAdNetworkReport(reportType)\n\n if (shouldHideUaMetrics) {\n metricDefinitionValues = chain(metricDefinitions)\n .values()\n .filter(\n ({ key }) => !includes(UA_METRICS_AVAILABLE_IN_SK_AD_NETWORK_REPORT, key)\n )\n .value()\n\n selectedMetrics = filter(\n rawSelectedMetrics,\n key => !includes(UA_METRICS_AVAILABLE_IN_SK_AD_NETWORK_REPORT, key)\n )\n } else {\n metricDefinitionValues = values(metricDefinitions)\n selectedMetrics = rawSelectedMetrics\n }\n\n const metrics = useMemo(\n () => getSelectableMetrics({\n metricDefinitions: metricDefinitionValues,\n reportType\n }),\n [metricDefinitions]\n )\n\n const selectedMetricsInfo = useMemo(() => {\n const metricsMapping = getBaseMetricDefinitionsMapping(metrics)\n\n const selectedMetricsArray = map(\n selectedMetrics,\n selectedMetric => {\n if (metricsMapping[selectedMetric]) {\n return metricsMapping[selectedMetric]\n }\n\n throw new Error(`Missing filter mapping info for metric: ${selectedMetric}`)\n }\n )\n\n return filter(selectedMetricsArray, metric => !isNil(metric))\n }, [metrics, selectedMetrics])\n\n const [searchText, setSearchText] = useState('')\n const [searchableList, setSearchableList] = useState(createFuseList(metrics))\n const [visibleMetrics, setVisibleMetrics] = useState(metrics)\n\n const { height } = useWindowDimensions()\n\n useEffect(() => {\n setSearchableList(createFuseList(metrics))\n }, [metrics])\n\n useEffect(() => {\n if (isPresent(searchText)) {\n setVisibleMetrics(map(searchableList.search(searchText), 'item'))\n } else {\n setVisibleMetrics(metrics)\n }\n }, [searchText])\n\n const handleListItemClick = clickedAppId => {\n if (selectedMetrics.includes(clickedAppId)) {\n onChange(selectedMetrics.filter(appId => appId !== clickedAppId))\n } else {\n onChange([...selectedMetrics, clickedAppId])\n }\n }\n\n // eslint-disable-next-line react/prop-types\n const ListItemRow = ({ index, style }) => {\n const metric = visibleMetrics[index]\n\n return (\n
    \n handleListItemClick(metric.key)}\n />\n
    \n )\n }\n\n const labelText = buildLabelTextFromMultiSelected({\n humanizedSelectedTypeStr: 'Metrics',\n selectable: metrics,\n selected: selectedMetrics\n })\n\n const isAllSelected = hasSelectedAllVisibleItems({\n key: 'key',\n selectedKeys: selectedMetrics,\n visibleItems: visibleMetrics\n })\n\n return (\n }\n hasFilterChanges={hasFilterChanges}\n isCollapsed={isCollapsed}\n isDisabled={false}\n isOpen={isOpen}\n isTooltipDisabled={!isCollapsed}\n labelTitle=\"Metrics\"\n onClick={onLabelClick}\n >\n {labelText}\n \n )}\n pane={(\n \n \n setSearchText(newSearchText)}\n placeholderText=\"Filter Metrics\"\n />\n \n )}\n title=\"Metrics\"\n >\n \n \n \n {ListItemRow}\n \n \n \n )}\n />\n )\n}\n\nMetricsFilter.propTypes = {\n hasFilterChanges: PropTypes.bool.isRequired,\n isCollapsed: PropTypes.bool.isRequired,\n isOpen: PropTypes.bool.isRequired,\n onChange: PropTypes.func.isRequired,\n onClickSelectedMetric: PropTypes.func.isRequired,\n onCloseClick: PropTypes.func.isRequired,\n onLabelClick: PropTypes.func.isRequired,\n selectedMetrics: PropTypes.arrayOf(PropTypes.string).isRequired\n}\n\nexport default MetricsFilter\n","import PropTypes from 'prop-types'\n\nimport ListItem from '../../../../../ReportingSidebar/Filter/Pane/ListItem'\nimport MultiSelectIcon from '../../../../../ReportingSidebar/Filter/Pane/ListItem/MultiSelectIcon'\nimport MetricTooltip from '../../../../../MetricTooltip'\n\nimport { metricDefinitionObject } from '../../../../../../utils/customPropTypes'\n\nconst MetricsListItem = (\n {\n metric,\n isSelected,\n onClick\n }\n) => (\n \n
    {metric.displayName}
    \n \n )}\n onClick={onClick}\n selectionIcon={}\n />\n)\n\nMetricsListItem.propTypes = {\n isSelected: PropTypes.bool.isRequired,\n metric: metricDefinitionObject.isRequired,\n onClick: PropTypes.func.isRequired\n}\n\nexport default MetricsListItem\n","import PropTypes from 'prop-types'\nimport { map, find } from 'lodash'\n\nimport Filter from '../../../../ReportingSidebar/Filter'\nimport FontAwesomeIcon from '../../../../FontAwesomeIcon'\nimport Label from '../../../../ReportingSidebar/Filter/Label'\nimport ListItem from './ListItem'\nimport Pane from '../../../../ReportingSidebar/Filter/Pane'\n\nimport { buildLabelTextFromMultiSelected } from '../../../../ReportingSidebar/Filter/Label/helpers'\n\nimport { useReportingFiltersState } from '../../../../../contexts/ReportingFilters'\n\nimport { GROUP_BY_MULTISELECT_LABEL_SPLIT_COUNT } from './constants'\n\nconst MultiSelectGroupByFilter = (\n {\n hasFilterChanges,\n isCollapsed,\n isOpen,\n onChange,\n onCloseClick,\n onLabelClick,\n selectedGroupBy\n }\n) => {\n const { dataExporterGroupBys } = useReportingFiltersState()\n\n const groupBys = map(dataExporterGroupBys, groupBy => {\n const { id: key, name: displayName } = groupBy\n\n return {\n displayName,\n key\n }\n })\n\n const handleListItemClick = clickedGroupById => {\n if (selectedGroupBy.includes(clickedGroupById)) {\n onChange(selectedGroupBy.filter(groupById => groupById !== clickedGroupById))\n } else {\n onChange([...selectedGroupBy, clickedGroupById])\n }\n }\n\n const listItems = []\n\n groupBys.forEach(groupBy => listItems.push(\n handleListItemClick(groupBy.key)}\n />\n ))\n\n const useNumberedLabel = selectedGroupBy.length > GROUP_BY_MULTISELECT_LABEL_SPLIT_COUNT\n || selectedGroupBy.length === 0\n\n let labelText = ''\n\n if (useNumberedLabel) {\n labelText = buildLabelTextFromMultiSelected({\n humanizedSelectedTypeStr: 'Group Bys',\n selectable: groupBys,\n selected: selectedGroupBy\n })\n } else {\n labelText = map(\n selectedGroupBy,\n key => find(groupBys, { key }).displayName\n ).join(', ')\n }\n\n return (\n }\n hasFilterChanges={hasFilterChanges}\n isCollapsed={isCollapsed}\n isDisabled={false}\n isOpen={isOpen}\n isTooltipDisabled={!isCollapsed}\n labelTitle=\"Group By\"\n onClick={onLabelClick}\n >\n {labelText}\n \n )}\n pane={(\n \n {listItems}\n \n )}\n />\n )\n}\n\nMultiSelectGroupByFilter.propTypes = {\n hasFilterChanges: PropTypes.bool.isRequired,\n isCollapsed: PropTypes.bool.isRequired,\n isOpen: PropTypes.bool.isRequired,\n onChange: PropTypes.func.isRequired,\n onCloseClick: PropTypes.func.isRequired,\n onLabelClick: PropTypes.func.isRequired,\n selectedGroupBy: PropTypes.arrayOf(PropTypes.string).isRequired\n}\n\nexport default MultiSelectGroupByFilter\n","import { Fragment } from 'react'\nimport PropTypes from 'prop-types'\n\nimport ListItem from '../../../../../ReportingSidebar/Filter/Pane/ListItem'\nimport MultiSelectIcon from '../../../../../ReportingSidebar/Filter/Pane/ListItem/MultiSelectIcon'\n\nconst GroupByListItem = (\n {\n displayName,\n isSelected,\n onClick\n }\n) => (\n \n {displayName}\n \n )}\n onClick={onClick}\n selectionIcon={}\n />\n)\n\nGroupByListItem.propTypes = {\n displayName: PropTypes.string.isRequired,\n isSelected: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired\n}\n\nexport default GroupByListItem\n","import PropTypes from 'prop-types'\nimport { useHistory, useLocation } from 'react-router-dom'\n\nimport Filter from '../../../../ReportingSidebar/Filter'\nimport FontAwesomeIcon from '../../../../FontAwesomeIcon'\nimport Label from '../../../../ReportingSidebar/Filter/Label'\nimport ListItem from './ListItem'\nimport Pane from '../../../../ReportingSidebar/Filter/Pane'\n\nimport {\n REPORT_TYPE_LABEL_MAPPING, PUBLISHER_REPORT_TYPE_STR, USER_ACQUISITION_REPORT_TYPE_STR,\n SK_AD_NETWORK_REPORT_TYPE_STR\n} from '../../../../../contexts/ReportingFilters/constants'\n\nimport styles from './styles.module.scss'\n\nconst ReportTypeFilter = (\n {\n isCollapsed,\n isOpen,\n onChangeReportType,\n onCloseClick,\n onLabelClick,\n selectedReport\n }\n) => {\n const history = useHistory()\n const location = useLocation()\n\n const handleClickReportType = reportType => {\n onChangeReportType(reportType)\n history.push(`${location.pathname}?report_type=${reportType}`)\n history.go(0)\n }\n\n return (\n }\n isCollapsed={isCollapsed}\n isDisabled={false}\n isOpen={isOpen}\n isTooltipDisabled={!isCollapsed}\n labelTitle=\"Report Type\"\n onClick={onLabelClick}\n hasFilterChanges={false}\n >\n {REPORT_TYPE_LABEL_MAPPING[selectedReport] || 'Select Report Type'}\n \n )}\n pane={(\n \n
    \n Please select a report type.\n
    \n handleClickReportType(USER_ACQUISITION_REPORT_TYPE_STR)}\n isSelected={selectedReport === USER_ACQUISITION_REPORT_TYPE_STR}\n />\n handleClickReportType(PUBLISHER_REPORT_TYPE_STR)}\n isSelected={selectedReport === PUBLISHER_REPORT_TYPE_STR}\n />\n handleClickReportType(SK_AD_NETWORK_REPORT_TYPE_STR)}\n isSelected={selectedReport === SK_AD_NETWORK_REPORT_TYPE_STR}\n />\n \n )}\n />\n )\n}\n\nReportTypeFilter.propTypes = {\n isCollapsed: PropTypes.bool.isRequired,\n isOpen: PropTypes.bool.isRequired,\n onChangeReportType: PropTypes.func.isRequired,\n onCloseClick: PropTypes.func.isRequired,\n onLabelClick: PropTypes.func.isRequired,\n selectedReport: PropTypes.string.isRequired\n}\n\nexport default ReportTypeFilter\n","import PropTypes from 'prop-types'\n\nimport Filter from '../../../../ReportingSidebar/Filter'\nimport FontAwesomeIcon from '../../../../FontAwesomeIcon'\nimport Label from '../../../../ReportingSidebar/Filter/Label'\nimport ListItem from './ListItem'\nimport Pane from '../../../../ReportingSidebar/Filter/Pane'\nimport TargetingTags from './TargetingTags'\n\nimport { useReportingFiltersState } from '../../../../../contexts/ReportingFilters'\n\nconst SingleSelectGroupByFilter = (\n {\n hasFilterChanges,\n isCollapsed,\n isOpen,\n onChange,\n onCloseClick,\n onLabelClick,\n selectedChannels,\n selectedGroupBy\n }\n) => {\n const {\n canGroupByTargetingTags,\n targetingTags,\n dataExporterGroupBys: groupBys\n } = useReportingFiltersState()\n\n const groupableItems = [\n ...groupBys,\n ...targetingTags\n ]\n\n const currentGroupBy = groupableItems.find(({ id }) => id === selectedGroupBy)\n\n const listItems = groupBys.map(groupBy => (\n onChange(groupBy.id)}\n selectedChannels={selectedChannels}\n />\n ))\n\n if (canGroupByTargetingTags && targetingTags.length > 0) {\n listItems.push(\n \n )\n }\n\n return (\n }\n hasFilterChanges={hasFilterChanges}\n isCollapsed={isCollapsed}\n isDisabled={false}\n isOpen={isOpen}\n isTooltipDisabled={!isCollapsed}\n labelTitle=\"Group By\"\n onClick={onLabelClick}\n tooltipText={`Group By - ${currentGroupBy.name}`}\n >\n {currentGroupBy.name}\n \n )}\n pane={(\n \n {listItems}\n \n )}\n />\n )\n}\n\nSingleSelectGroupByFilter.propTypes = {\n hasFilterChanges: PropTypes.bool.isRequired,\n isCollapsed: PropTypes.bool.isRequired,\n isOpen: PropTypes.bool.isRequired,\n onChange: PropTypes.func.isRequired,\n onCloseClick: PropTypes.func.isRequired,\n onLabelClick: PropTypes.func.isRequired,\n selectedChannels: PropTypes.arrayOf(PropTypes.number).isRequired,\n selectedGroupBy: PropTypes.string.isRequired\n}\n\nexport default SingleSelectGroupByFilter\n","import PropTypes from 'prop-types'\nimport { useLocation } from 'react-router-dom'\n\nimport { getReportPageFromPathname } from '../../../../../../contexts/ReportingFilters'\nimport {\n CREATIVE_GROUP_BY_ID_STR,\n CREATIVES_REPORT_STR,\n CUSTOM_REPORT_STR,\n SITE_ID_GROUP_BY_ID_STR\n} from '../../../../../../contexts/ReportingFilters/constants'\nimport ListItem from '../../../../../ReportingSidebar/Filter/Pane/ListItem'\nimport SingleSelectIcon from '../../../../../ReportingSidebar/Filter/Pane/ListItem/SingleSelectIcon'\n\nconst GroupByListItem = ({\n groupBy,\n isSelected,\n onClick,\n selectedChannels\n}) => {\n let tooltipText\n\n const { pathname } = useLocation()\n\n const reportPage = getReportPageFromPathname(pathname)\n\n const isDisabledSiteId =\n groupBy.id === SITE_ID_GROUP_BY_ID_STR &&\n (selectedChannels.length > 1 || reportPage === CUSTOM_REPORT_STR)\n\n const isDisabledCreative =\n groupBy.id === CREATIVE_GROUP_BY_ID_STR &&\n reportPage !== CREATIVES_REPORT_STR\n\n const isDisabled = isDisabledSiteId || isDisabledCreative\n\n if (isDisabledSiteId) {\n tooltipText =\n selectedChannels.length > 1\n ? 'Must select only 1 Channel to group by Site ID'\n : \"Can't group by Site ID for custom events\"\n } else if (isDisabledCreative) {\n tooltipText = 'Only available in creatives report'\n }\n\n return (\n }\n tooltipText={tooltipText}\n />\n )\n}\n\nGroupByListItem.propTypes = {\n groupBy: PropTypes.shape({ id: PropTypes.string, name: PropTypes.string })\n .isRequired,\n isSelected: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n selectedChannels: PropTypes.arrayOf(PropTypes.number).isRequired\n}\n\nexport default GroupByListItem\n","import { Fragment } from 'react'\nimport PropTypes from 'prop-types'\n\nimport ListItem from '../../../../../ReportingSidebar/Filter/Pane/ListItem'\nimport SingleSelectIcon from '../../../../../ReportingSidebar/Filter/Pane/ListItem/SingleSelectIcon'\n\nimport { useReportingFiltersState } from '../../../../../../contexts/ReportingFilters'\n\nimport styles from './styles.module.scss'\n\nconst TargetingTags = (\n {\n onChange,\n selectedGroupBy\n }\n) => {\n const { targetingTags } = useReportingFiltersState()\n\n return (\n \n
    \n Targeting Tags\n
    \n\n {targetingTags.map(targetingTag => (\n onChange(targetingTag.id)}\n selectionIcon={}\n />\n ))}\n
    \n )\n}\n\nTargetingTags.propTypes = {\n onChange: PropTypes.func.isRequired,\n selectedGroupBy: PropTypes.string.isRequired\n}\n\nexport default TargetingTags\n","import { useEffect } from 'react'\nimport { QueryClient, QueryClientProvider } from 'react-query'\nimport { Route, Switch, useHistory, useLocation } from 'react-router-dom'\n\nimport { CurrentUserProvider } from '../../../contexts/CurrentUser'\nimport { FeatureFlagsProvider } from '../../../contexts/FeatureFlags'\nimport { GroupedSummaryTableSettingsProvider } from '../../../contexts/GroupedSummaryTableSettings'\nimport { MetricDefinitionsProvider } from '../../../contexts/MetricDefinitions'\nimport { OnboardingStatusProvider } from '../../../contexts/OnboardingStatus'\nimport {\n getEventNameFromQuery,\n getGranularityFromQuery,\n getUrlSearchParams,\n ReportingFiltersProvider\n} from '../../../contexts/ReportingFilters'\nimport usePrevious from '../../../hooks/usePrevious'\nimport { deepCamelKeys, deepSnakeKeys } from '../../../utils/helpers'\nimport { transformMetricColumnsFromServer } from '../../../utils/response'\nimport AdMonetizationPage from '../AdMonetizationPage'\nimport DataExporterPage from '../DataExporterPage'\nimport SkAdNetworkPage from '../SkAdNetworkPage'\nimport UserAcquisitionPage from '../UserAcquisitionPage'\nimport {\n APP_LIMITED_READONLY_ROLE,\n QUERY_REFRESH_INTERVAL,\n QUERY_RETRY_COUNT\n} from './constants'\nimport ReportingFooter from './Footer'\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchInterval: QUERY_REFRESH_INTERVAL,\n refetchOnWindowFocus: false,\n retry: QUERY_RETRY_COUNT\n }\n }\n})\n\n/* eslint-disable react/prop-types */\nconst ReportingPage = ({\n apps,\n canGroupByTargetingTags,\n channels,\n channelsByReportType,\n countries,\n currentUser,\n featureFlags,\n granularities,\n granularitiesByReportType,\n groupBysByReportingContext,\n groupBysByReportType,\n metricColumnsByReport: metricColumnsByReportProp,\n onboardingStatus,\n pathRoot,\n savedReportsByReportType,\n targetingTags\n}) => {\n const location = useLocation()\n const history = useHistory()\n\n const escapedQueryStr = new URLSearchParams(location.search).toString()\n const query = getUrlSearchParams(location.search)\n const unescapedQueryStr = query.toString()\n\n const granularity = getGranularityFromQuery(query)\n const customEventName = getEventNameFromQuery(query)\n\n const metricColumnsByReport = transformMetricColumnsFromServer(\n metricColumnsByReportProp\n )\n\n const user = deepCamelKeys(currentUser)\n const prevUser = usePrevious(user)\n\n const includeUnlinkedApps = !user.roles.includes(APP_LIMITED_READONLY_ROLE)\n\n // The getUrlSearchParams function will unescape the location.search string and we should replace\n // the browser URL if there were changes to the location.search string. If we leave the\n // browser URL as-is it causes issues when a user's session times out and we try to return the\n // user back to the location they were on after they re-authenticate, which has the escaped\n // characters. It causes duplicate escaped characters, which then breaks our dashboard.\n // https://adromance.atlassian.net/browse/TENJIN-8358\n useEffect(() => {\n if (escapedQueryStr !== unescapedQueryStr) {\n history.replace(`${window.location.pathname}?${unescapedQueryStr}`)\n }\n }, [escapedQueryStr, unescapedQueryStr])\n\n useEffect(() => {\n if (user.id !== prevUser?.id) {\n const { email, id, name, organizationId } = user\n\n window.Honeybadger.setContext(\n deepSnakeKeys({\n organizationId,\n userEmail: email,\n userId: id,\n userName: name\n })\n )\n }\n }, [user.id, prevUser?.id])\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n )\n}\n\nexport default ReportingPage\n/* eslint-enable react/prop-types */\n","import { Fragment, useEffect } from 'react'\nimport { Route } from 'react-router-dom'\n\nimport PageHeader from '../../PageHeader'\nimport Presenter from './presentation'\nimport ReportingContent from '../../ReportingContent'\nimport ReportingPageHeader from '../ReportingPage/Header'\nimport ReportingSidebar from './ReportingSidebar'\nimport useFlashMessagesHook from '../../../hooks/useFlashMessagesHook'\n\nconst SkAdNetworkPage = ({ match }) => {\n useEffect(() => {\n document.title = 'SK Ad Network Report - Tenjin'\n })\n\n useFlashMessagesHook()\n\n return (\n \n \n\n \n \n Conversion Values\n \n\n \n \n \n\n )\n}\n\nexport default SkAdNetworkPage\n","import { useEffect, useState } from 'react'\nimport { useQuery } from 'react-query'\nimport { useLocation } from 'react-router-dom'\nimport { map, isNull } from 'lodash'\n\nimport KPICard from '../../../KPICard'\nimport { useMetricDefinitionsState } from '../../../../contexts/MetricDefinitions'\n\nimport {\n groupMetricDefinitonsByOnboardingStatus, useOnboardingStatusState\n} from '../../../../contexts/OnboardingStatus'\n\nimport { buildQueryParams, useReportingFiltersState } from '../../../../contexts/ReportingFilters'\nimport { useCurrentUserState } from '../../../../contexts/CurrentUser'\nimport { fetchSummarySkAdNetworkData } from '../../../../api/reporting'\n\nimport {\n getKPICardsMetricDefinitions,\n buildSummaryDataMapping\n} from './helpers'\n\nimport { isCompatibleWithUAMetrics } from '../../../GroupedSummaryTable/helpers'\n\nimport {\n DEFAULT_QUERY_OPTIONS,\n CONVERSION_VALUE_QUERY_OVERRIDES\n} from './constants'\n\nconst KPICards = () => {\n const { metricDefinitions: metricDefinitionsState } = useMetricDefinitionsState()\n\n const onboardingStatus = useOnboardingStatusState()\n\n const metricDefinitions = getKPICardsMetricDefinitions(metricDefinitionsState)\n\n const [summaryDataMapping, setSummaryDataMapping] = useState(null)\n\n const {\n mockableMetricDefinitions\n } = groupMetricDefinitonsByOnboardingStatus({ metricDefinitions, onboardingStatus })\n\n const location = useLocation()\n\n const { currentUser } = useCurrentUserState()\n const reportingFilters = useReportingFiltersState()\n\n const queryParamsForFetchingData = {\n ...buildQueryParams({ currentUser, location, reportingFilters }),\n ...CONVERSION_VALUE_QUERY_OVERRIDES\n }\n\n const queryKey = JSON.stringify(queryParamsForFetchingData)\n\n const {\n data: fetchedSummaryData,\n isError,\n isFetching,\n isLoading,\n refetch\n } = useQuery(['kpiCardsSummary', queryKey], () => (\n fetchSummarySkAdNetworkData({\n isCompatibleWithUAMetrics: isCompatibleWithUAMetrics(\n queryParamsForFetchingData.groupBy\n ),\n params: queryParamsForFetchingData\n })\n ), DEFAULT_QUERY_OPTIONS)\n\n const onReloadClick = () => {\n refetch()\n }\n\n const isPullingData = isLoading || isFetching || isNull(fetchedSummaryData)\n\n useEffect(() => {\n if (isError) {\n setSummaryDataMapping({})\n } else {\n setSummaryDataMapping(buildSummaryDataMapping({\n groupBy: queryParamsForFetchingData.groupBy,\n summaryData: fetchedSummaryData\n }))\n }\n }, [fetchedSummaryData, isError, isFetching, isLoading])\n\n const mockedMetricDefinitionKeys = map(mockableMetricDefinitions, 'key')\n\n return (\n
    \n {metricDefinitions.map((metricDefinition, index) => {\n const { key: metricDefinitionId } = metricDefinition\n\n const isMocking = mockedMetricDefinitionKeys.includes(metricDefinitionId)\n const value = (summaryDataMapping && summaryDataMapping[metricDefinitionId]) || null\n\n return (\n \n )\n })}\n
    \n )\n}\n\nexport default KPICards\n","import React, {\n useEffect, useState\n} from 'react'\nimport classNames from 'classnames'\nimport { useHistory, useLocation } from 'react-router-dom'\n\nimport ApplyBtn from '../../../ReportingSidebar/ApplyBtn'\nimport AppsFilter from './AppsFilter'\nimport ChannelsFilter from '../../../ReportingSidebar/ChannelsFilter'\nimport ClickOutsideAlerter from '../../../ClickOutsideAlerter'\nimport Collapser from '../../../ReportingSidebar/Collapser'\nimport DateFilter from '../../../ReportingSidebar/DateFilter'\nimport GroupByFilter from './GroupByFilter'\n\nimport {\n buildQueryParamsFromFilterChanges, buildStateFromQueryParams, getFilterChanges\n} from './helpers'\nimport {\n getReportPageFromPathname, useReportingFiltersDispatch, useReportingFiltersState\n} from '../../../../contexts/ReportingFilters'\nimport {\n useGroupedSummaryTableSettingsDispatch\n} from '../../../../contexts/GroupedSummaryTableSettings'\nimport { useCurrentUserState } from '../../../../contexts/CurrentUser'\n\nimport styles from '../../../ReportingSidebar/styles.module.scss'\n\nconst ReportingSidebar = () => {\n const reportingFilters = useReportingFiltersState()\n const reportingFiltersDispatch = useReportingFiltersDispatch()\n\n const drilldownRulesDispatch = useGroupedSummaryTableSettingsDispatch()\n\n const history = useHistory()\n const location = useLocation()\n\n const { currentUser } = useCurrentUserState()\n\n const [state, setState] = useState({\n currentOpenPane: null,\n ...buildStateFromQueryParams({\n currentUser,\n location,\n reportingFilters\n })\n })\n\n const { isSidebarCollapsed: isCollapsed } = reportingFilters\n\n const {\n currentApps,\n currentChannels,\n currentEndDate,\n currentGroupBy,\n currentOpenPane,\n currentStartDate,\n unappliedApps,\n unappliedChannels,\n unappliedEndDate,\n unappliedGroupBy,\n unappliedStartDate\n } = state\n\n useEffect(() => {\n setState({\n ...state,\n ...buildStateFromQueryParams({\n currentUser,\n location,\n reportingFilters\n })\n })\n }, [location])\n\n const {\n canApplyChanges,\n hasAppsFilterChanges,\n hasChannelsFilterChanges,\n hasDateFilterChanges,\n hasFilterChanges,\n hasGroupByFilterChanges\n } = getFilterChanges({\n currentApps,\n currentChannels,\n currentEndDate,\n currentGroupBy,\n currentStartDate,\n unappliedApps,\n unappliedChannels,\n unappliedEndDate,\n unappliedGroupBy,\n unappliedStartDate\n })\n\n const togglePaneFor = pane => setState({\n ...state,\n currentOpenPane: currentOpenPane === pane ? null : pane\n })\n\n const closeCurrentPane = () => setState({ ...state, currentOpenPane: null })\n\n const handleApplyClick = () => {\n const urlParams = buildQueryParamsFromFilterChanges({\n apps: unappliedApps,\n channels: unappliedChannels,\n endDate: unappliedEndDate,\n groupBy: unappliedGroupBy,\n reportingFilters,\n startDate: unappliedStartDate\n })\n\n history.push(`${location.pathname}?${urlParams}`)\n\n closeCurrentPane()\n\n if (hasGroupByFilterChanges) {\n const reportPage = getReportPageFromPathname(location.pathname)\n\n drilldownRulesDispatch({\n payload: { groupBy: unappliedGroupBy, reportPage },\n type: 'UPDATE_RULES'\n })\n }\n }\n\n useEffect(() => {\n const selectedApps = unappliedApps.slice(0, 1)\n\n if (selectedApps.length > 0) {\n reportingFiltersDispatch({\n payload: { selectedApps },\n type: 'UPDATE_SELECTED_APPS'\n })\n }\n }, [unappliedApps])\n\n return (\n \n
    \n
    \n setState({ ...state, currentOpenPane: null, unappliedApps: apps })}\n onCloseClick={closeCurrentPane}\n onLabelClick={() => togglePaneFor('apps')}\n selectedApps={unappliedApps.slice(0, 1)}\n />\n\n {\n setState({ ...state, unappliedEndDate: endDate, unappliedStartDate: startDate })\n }}\n onCloseClick={closeCurrentPane}\n onLabelClick={() => togglePaneFor('dates')}\n selectedEndDate={unappliedEndDate}\n selectedStartDate={unappliedStartDate}\n />\n\n setState({ ...state, unappliedChannels: channels })}\n onCloseClick={closeCurrentPane}\n onLabelClick={() => togglePaneFor('channels')}\n selectedChannels={unappliedChannels}\n selectedGroupBy={unappliedGroupBy}\n />\n\n {\n setState({ ...state, unappliedGroupBy: groupBy })\n }}\n onCloseClick={closeCurrentPane}\n onLabelClick={() => togglePaneFor('groupBy')}\n selectedGroupBy={unappliedGroupBy}\n />\n\n \n\n reportingFiltersDispatch({ type: 'TOGGLE_SIDEBAR' })}\n />\n
    \n
    \n
    \n )\n}\n\nexport default ReportingSidebar\n","import { useEffect, useState } from 'react'\nimport { useLocation } from 'react-router-dom'\nimport PropTypes from 'prop-types'\n\nimport Dropdown from '../../../../Dropdown'\nimport Filter from '../../../../ReportingSidebar/Filter'\nimport FontAwesomeIcon from '../../../../FontAwesomeIcon'\nimport Label from '../../../../ReportingSidebar/Filter/Label'\nimport Pane from '../../../../ReportingSidebar/Filter/Pane'\nimport SwapButton from './SwapButton'\n\nimport {\n useReportingFiltersState,\n isDataExporterPage\n} from '../../../../../contexts/ReportingFilters'\n\nconst getGroupByOptions = ({ disabledOptionIdsList, options }) => options.map(option => (\n {\n ...option,\n isDisabled: disabledOptionIdsList.includes(option.id)\n }\n))\n\nconst GroupByFilter = (\n {\n hasFilterChanges,\n isCollapsed,\n isOpen,\n onChange,\n onCloseClick,\n onLabelClick,\n selectedGroupBy\n }\n) => {\n const { groupBys: dashboardGroupBys, dataExporterGroupBys } = useReportingFiltersState()\n\n const location = useLocation()\n\n const groupBys = [\n ...(isDataExporterPage(location) ? dataExporterGroupBys : dashboardGroupBys)\n ].reduce((accumulator, option) => {\n if (option.id === 'app_id') return accumulator\n\n if (option.name === 'SK Campaign (requires SK Ad Network)') {\n // eslint-disable-next-line no-param-reassign\n option.name = 'SK Campaign'\n }\n\n accumulator.push(option)\n\n return accumulator\n }, [])\n\n const [baseGroupBy, setBaseGroupBy] = useState(\n groupBys.find(groupBy => groupBy.id === selectedGroupBy[0])\n )\n\n const [secondaryGroupBy, setSecondaryGroupBy] = useState(\n groupBys.find(groupBy => groupBy.id === selectedGroupBy[1])\n )\n\n const baseGroupByOptions = getGroupByOptions({\n disabledOptionIdsList: [secondaryGroupBy.id],\n options: groupBys\n })\n\n const secondaryGroupByOptions = getGroupByOptions({\n disabledOptionIdsList: [baseGroupBy.id],\n options: groupBys\n })\n\n const handleBaseChange = newBaseGroupBy => {\n if (newBaseGroupBy.id !== baseGroupBy.id) {\n setBaseGroupBy(newBaseGroupBy)\n }\n }\n\n const handleSecondaryChange = newSecondaryGroupBy => {\n if (newSecondaryGroupBy.id !== secondaryGroupBy.id) {\n setSecondaryGroupBy(newSecondaryGroupBy)\n }\n }\n\n useEffect(() => {\n onChange([baseGroupBy.id, secondaryGroupBy.id])\n }, [baseGroupBy, secondaryGroupBy])\n\n const handleSwap = () => {\n const currentSecondary = secondaryGroupBy\n\n setSecondaryGroupBy(baseGroupBy)\n setBaseGroupBy(currentSecondary)\n }\n\n return (\n }\n hasFilterChanges={hasFilterChanges}\n isCollapsed={isCollapsed}\n isDisabled={false}\n isOpen={isOpen}\n isTooltipDisabled={!isCollapsed}\n labelTitle=\"Group By\"\n onClick={onLabelClick}\n tooltipText={`Group By - ${baseGroupBy.name} → ${secondaryGroupBy.name}`}\n >\n {`${baseGroupBy.name} → ${secondaryGroupBy.name}`}\n \n )}\n pane={(\n \n
    \n option.name}\n getOptionValue={option => option.id}\n isClearable={false}\n isSearchable={false}\n onChange={handleBaseChange}\n options={baseGroupByOptions}\n value={baseGroupBy}\n />\n\n
    \n \n\n TO\n
    \n\n option.name}\n getOptionValue={option => option.id}\n isClearable={false}\n isSearchable={false}\n onChange={handleSecondaryChange}\n options={secondaryGroupByOptions}\n value={secondaryGroupBy}\n />\n
    \n \n )}\n />\n )\n}\n\nGroupByFilter.propTypes = {\n hasFilterChanges: PropTypes.bool.isRequired,\n isCollapsed: PropTypes.bool.isRequired,\n isOpen: PropTypes.bool.isRequired,\n onChange: PropTypes.func.isRequired,\n onCloseClick: PropTypes.func.isRequired,\n onLabelClick: PropTypes.func.isRequired,\n selectedGroupBy: PropTypes.arrayOf(PropTypes.string).isRequired\n}\n\nexport default GroupByFilter\n","import classNames from 'classnames'\nimport PropTypes from 'prop-types'\nimport Tooltip from 'rc-tooltip'\n\nimport FontAwesomeIcon from '../../../../../FontAwesomeIcon'\n\nimport styles from './styles.module.scss'\n\nconst SwapButton = ({ onClick }) => (\n \n \n \n \n \n)\n\nSwapButton.propTypes = {\n onClick: PropTypes.func.isRequired\n}\n\nexport default SwapButton\n","import { Fragment, useEffect } from 'react'\nimport { Switch, Route, useLocation } from 'react-router-dom'\n\nimport ReportingContent from '../../ReportingContent'\nimport ReportingSidebar from '../../ReportingSidebar'\nimport { REPORTS_BY_VALUE, ROUTES, WINDOW_SCROLLTO_OPTIONS } from './constants'\nimport { getReportPageFromPathname } from '../../../contexts/ReportingFilters'\nimport useFlashMessagesHook from '../../../hooks/useFlashMessagesHook'\n// Note: disabled nav link updates for issue TENJIN-11310\n// import useUpdateNavLinksFromFilterEffect from '../../../hooks/useUpdateNavLinksFromFiltersHook'\n\nconst UserAcquisitonPage = ({ match }) => {\n const location = useLocation()\n\n const reportPage = getReportPageFromPathname(location.pathname)\n\n useEffect(() => {\n document.title = `${REPORTS_BY_VALUE[reportPage].label} Reports - Tenjin`\n window.scrollTo(WINDOW_SCROLLTO_OPTIONS)\n }, [reportPage])\n\n useFlashMessagesHook()\n // Note: disabled nav link updates for issue TENJIN-11310\n // useUpdateNavLinksFromFilterEffect()\n\n return (\n \n \n\n \n \n {ROUTES.map(route => (\n \n ))}\n \n \n \n )\n}\n\nexport default UserAcquisitonPage\n","import classNames from 'classnames'\n\nimport Footer from '../../../Footer'\n\nimport { useReportingFiltersState } from '../../../../contexts/ReportingFilters'\n\nimport styles from './styles.module.scss'\n\nconst ReportingFooter = () => {\n const { isSidebarCollapsed } = useReportingFiltersState()\n\n const className = classNames(styles.footer, {\n [styles.footerCollapsed]: isSidebarCollapsed\n })\n\n return