{"version":3,"file":"static/js/application.async.non-landing~8bf60e89.474cc194.chunk.js","mappings":"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","sources":["../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/styles.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/paginator.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/landing-page/landing-page-footer.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/countries.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/landing-page/statuses.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/landing-page/status-badge.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/landing-page/lift-studies-grid/delete-study-dialog.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/landing-page/lift-studies-grid/config.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/fetch/campaigns.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/constants/experiment-errors.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/fetch/experiment.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/landing-page/lift-studies-grid/grid.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/utils.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/constants/maximums.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/country/country-selector.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/landing-page/status-selector.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/landing-page/toolbar.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/lift-measurement.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/constants/intents.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/wizard/footer/buttons.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/wizard/footer/footer.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/errors.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/page-layout.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/validate.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/validated/required-dropdown.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/country/country-card.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/date.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/date/start-date-card.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/date/date-picker-strings.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/keyword/keyword-methods.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/keyword/keyword-input.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/keyword/keyword-tag.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/keyword/keyword-display.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/keyword/keyword-selector.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/keyword/keyword-textarea.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/keyword/keyword-textarea-validation.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/measurement-type-card.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/search-lift/search-customer-id.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/skeleton/card-content-skeleton.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/search-lift/search-lift-loading.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/search-lift/search-lift.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/api-save-error-notification.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/uet-tag/uet-tag-selector-utils.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/uet-tag/uet-tag-selector.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/visit-conversion-lift/visit-conversion-methods.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/visit-conversion-lift/visit-conversion-input.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/visit-conversion-lift/visit-conversion-lift-loading.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/visit-conversion-lift/visit-conversion-lift-not-allowed.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/visit-conversion-lift/visit-conversion-lift.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/experiment-name-card.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/impression-threshold-message.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/selected-campaigns-card.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/configure-study-step.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/fetch/conversion.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/configure-study-step-repository.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/fetch/uet.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/constants/campaign.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/constants/selected-campaigns-grid-columns.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/constants/budget-format-options.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/select-campaigns-grid/select-campaigns-grid.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/select-campaigns-grid/select-campaigns-toolbar.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/summary/campaign-name-tag.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/summary/selected-campaigns-accordion.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/summary/study-summary-drawer.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/select-campaigns-grid/select-campaigns-footer.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/select-campaigns-grid/select-campaigns-grid-data-source.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/fetch/lift-experiment-campaigns.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/select-campaigns-step.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/wizard/config.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/common/components/select-campaigns-step-repository.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/fetch/keywords.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/wizard/templates.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/wizard/wizard.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/lift-measurement-form.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/lift-measurement-create.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/lift-measurement-edit.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/fetch/result.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/results/confidence-levels.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/results/overview-table.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/results/positive-performing-audiences-card.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/results/audience-overview-section.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/results/campaign-overview-section.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/results/performance-card/styles.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/results/performance-card/lift.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/results/performance-card/confidence-level.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/results/performance-card/treatment-control.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/results/performance-card/performance-card.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/results/experiment-overview-section.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/results/page-header.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/results/study-summary-card.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/utils/download.js","../../../node_modules/@bingads-webui-campaign-react/lift-measurement-pages/src/lift-measurement-results.js"],"sourcesContent":["import { makeStyles } from '@fluentui/react-components';\r\nimport { uiblockerStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nexport const useCampaignNameTagStyles = makeStyles({\r\n button: {\r\n textAlign: 'left',\r\n },\r\n});\r\n\r\nexport const useFilterDropdownStyles = makeStyles({\r\n root: {\r\n maxWidth: '250px',\r\n },\r\n truncatedText: {\r\n overflowX: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n});\r\n\r\nexport const useKeywordInputStyles = makeStyles({\r\n textarea: {\r\n width: '100%',\r\n height: '120px',\r\n },\r\n textareaContainer: {\r\n paddingLeft: '36px',\r\n width: '100%',\r\n },\r\n});\r\n\r\nexport const useMeasurementTypeSelectorStyles = makeStyles({\r\n dropdownContainer: {\r\n paddingLeft: '36px',\r\n width: '100%',\r\n },\r\n dropdown: {\r\n width: '100%',\r\n },\r\n truncatedText: {\r\n overflowX: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n});\r\n\r\nexport const useRadioChildControlStyles = makeStyles({\r\n container: {\r\n paddingLeft: '36px',\r\n width: '100%',\r\n },\r\n warning: {\r\n marginTop: '10px',\r\n },\r\n});\r\n\r\nexport const useSearchCustomerIdStyles = makeStyles({\r\n input: {\r\n width: '100%',\r\n },\r\n});\r\n\r\nexport const useSelectCampaignGridStyles = makeStyles({\r\n dataGridRow: {\r\n opacity: '1',\r\n },\r\n dataGridRowDisabled: {\r\n opacity: '0.5',\r\n },\r\n selectCampaignTableCell: {\r\n alignItems: 'center',\r\n display: 'flex',\r\n },\r\n spinner: {\r\n 'min-height': '50px',\r\n },\r\n});\r\n\r\nexport const useTagsListStyles = makeStyles({\r\n root: {\r\n paddingBottom: '10px',\r\n },\r\n tagsList: {\r\n columnGap: '2px',\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n rowGap: '2px',\r\n },\r\n tagsToolbar: {\r\n alignItems: 'center',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n },\r\n});\r\n\r\nexport const getUIBlockerStyle = () => ({\r\n '@global': uiblockerStyle({ palette: {} }),\r\n});\r\n\r\nexport const noDataStyles = palette => ({\r\n color: palette.neutralSecondary,\r\n fontSize: '26px',\r\n paddingLeft: '32px',\r\n});\r\n","import React, { useCallback, useContext } from 'react';\r\nimport { GridContext } from '@bingads-webui-grid/grid-context';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport {\r\n Button,\r\n Caption1,\r\n Divider,\r\n makeStyles,\r\n Select,\r\n useId,\r\n} from '@fluentui/react-components';\r\nimport {\r\n ArrowLeftRegular,\r\n ArrowRightRegular,\r\n} from '@fluentui/react-icons';\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n alignItems: 'center',\r\n columnGap: '15px',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n },\r\n pageNumber: {\r\n marginRight: '4px',\r\n maxWidth: '32px',\r\n },\r\n});\r\n\r\nconst pageSizeOptions = [\r\n 10,\r\n 25,\r\n 50,\r\n];\r\n\r\nexport const Paginator = () => {\r\n const i18n = useContext(I18nContext);\r\n const styles = useStyles();\r\n\r\n const { dispatch, state } = useContext(GridContext);\r\n const { pageNumber, pageSize } = state.pagination;\r\n\r\n const pageSizeId = useId();\r\n const pageSizeLabel = i18n.getString(_TL_('Rows per page:'));\r\n const pageCount = Math.ceil(state.totalCount / pageSize);\r\n const pageCountSeparator = i18n.getString(_TL_('of'));\r\n\r\n const onSelectPageSize = useCallback((e, { value }) => {\r\n dispatch({\r\n type: 'UPDATE_PAGINATION',\r\n payload: {\r\n pageNumber: 1,\r\n pageSize: Number(value),\r\n },\r\n });\r\n }, [dispatch]);\r\n\r\n const onDecreasePageNumber = useCallback(() => {\r\n if (pageNumber > 1) {\r\n dispatch({\r\n type: 'UPDATE_PAGINATION',\r\n payload: {\r\n ...state.pagination,\r\n pageNumber: pageNumber - 1,\r\n },\r\n });\r\n }\r\n }, [dispatch, state.pagination, pageNumber]);\r\n\r\n const onIncreasePageNumber = useCallback(() => {\r\n dispatch({\r\n type: 'UPDATE_PAGINATION',\r\n payload: {\r\n ...state.pagination,\r\n pageNumber: pageNumber + 1,\r\n },\r\n });\r\n }, [dispatch, state.pagination, pageNumber]);\r\n\r\n return (\r\n
\r\n {pageSizeLabel}\r\n \r\n {pageSizeOptions.map(pageSizeOption => (\r\n \r\n ))}\r\n \r\n \r\n }\r\n onClick={onDecreasePageNumber}\r\n size=\"small\"\r\n />\r\n {`${pageNumber} ${pageCountSeparator} ${pageCount}`}\r\n }\r\n onClick={onIncreasePageNumber}\r\n size=\"small\"\r\n />\r\n
\r\n );\r\n};\r\n","import { getTheme } from '@fluentui/react';\r\nimport {\r\n Caption1,\r\n makeStyles,\r\n} from '@fluentui/react-components';\r\nimport React, { useContext } from 'react';\r\nimport { GridContext } from '@bingads-webui-grid/grid-context';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { Paginator } from '../common/paginator';\r\nimport { noDataStyles } from '../common/styles';\r\n\r\nconst { palette } = getTheme();\r\nconst useStyles = makeStyles({\r\n noData: noDataStyles(palette),\r\n});\r\n\r\nexport const LandingPageFooter = () => {\r\n const i18n = useContext(I18nContext);\r\n const styles = useStyles();\r\n const { state } = useContext(GridContext);\r\n\r\n return (\r\n <>\r\n {state.items.length > 0 ?\r\n <>\r\n {`${state.totalCount} ${i18n.getString(_TL_('experiments'))}`}\r\n \r\n :\r\n
\r\n {i18n.getString(_TL_('There are no lift studies.'))}\r\n
\r\n }\r\n \r\n );\r\n};\r\n","export const countries = {\r\n AD: {\r\n code: 'AD',\r\n name: _TL_('Andorra'),\r\n },\r\n AE: {\r\n code: 'AE',\r\n name: _TL_('United Arab Emirates'),\r\n },\r\n AG: {\r\n code: 'AG',\r\n name: _TL_('Antigua and Barbuda'),\r\n },\r\n AI: {\r\n code: 'AI',\r\n name: _TL_('Anguilla'),\r\n },\r\n AL: {\r\n code: 'AL',\r\n name: _TL_('Albania'),\r\n },\r\n AM: {\r\n code: 'AM',\r\n name: _TL_('Armenia'),\r\n },\r\n AR: {\r\n code: 'AR',\r\n name: _TL_('Argentina'),\r\n },\r\n AS: {\r\n code: 'AS',\r\n name: _TL_('American Samoa'),\r\n },\r\n AT: {\r\n code: 'AT',\r\n name: _TL_('Austria'),\r\n },\r\n AU: {\r\n code: 'AU',\r\n name: _TL_('Australia'),\r\n },\r\n AW: {\r\n code: 'AW',\r\n name: _TL_('Aruba'),\r\n },\r\n AZ: {\r\n code: 'AZ',\r\n name: _TL_('Azerbaijan'),\r\n },\r\n BA: {\r\n code: 'BA',\r\n name: _TL_('Bosnia and Herzegovina'),\r\n },\r\n BB: {\r\n code: 'BB',\r\n name: _TL_('Barbados'),\r\n },\r\n BD: {\r\n code: 'BD',\r\n name: _TL_('Bangladesh'),\r\n },\r\n BE: {\r\n code: 'BE',\r\n name: _TL_('Belgium'),\r\n },\r\n BF: {\r\n code: 'BF',\r\n name: _TL_('Burkina Faso'),\r\n },\r\n BG: {\r\n code: 'BG',\r\n name: _TL_('Bulgaria'),\r\n },\r\n BH: {\r\n code: 'BH',\r\n name: _TL_('Bahrain'),\r\n },\r\n BJ: {\r\n code: 'BJ',\r\n name: _TL_('Benin'),\r\n },\r\n BM: {\r\n code: 'BM',\r\n name: _TL_('Bermuda'),\r\n },\r\n BN: {\r\n code: 'BN',\r\n name: _TL_('Brunei'),\r\n },\r\n BO: {\r\n code: 'BO',\r\n name: _TL_('Bolivia'),\r\n },\r\n BR: {\r\n code: 'BR',\r\n name: _TL_('Brazil'),\r\n },\r\n BS: {\r\n code: 'BS',\r\n name: _TL_('Bahamas, The'),\r\n },\r\n BW: {\r\n code: 'BW',\r\n name: _TL_('Botswana'),\r\n },\r\n BZ: {\r\n code: 'BZ',\r\n name: _TL_('Belize'),\r\n },\r\n CA: {\r\n code: 'CA',\r\n name: _TL_('Canada'),\r\n },\r\n CC: {\r\n code: 'CC',\r\n name: _TL_('Cocos (Keeling) Islands'),\r\n },\r\n CD: {\r\n code: 'CD',\r\n name: _TL_('Congo (DRC)'),\r\n },\r\n CF: {\r\n code: 'CF',\r\n name: _TL_('Central African Republic'),\r\n },\r\n CG: {\r\n code: 'CG',\r\n name: _TL_('Congo'),\r\n },\r\n CH: {\r\n code: 'CH',\r\n name: _TL_('Switzerland'),\r\n },\r\n CI: {\r\n code: 'CI',\r\n name: _TL_(\"Côte d'Ivoire\"),\r\n },\r\n CK: {\r\n code: 'CK',\r\n name: _TL_('Cook Islands'),\r\n },\r\n CL: {\r\n code: 'CL',\r\n name: _TL_('Chile'),\r\n },\r\n CM: {\r\n code: 'CM',\r\n name: _TL_('Cameroon'),\r\n },\r\n CO: {\r\n code: 'CO',\r\n name: _TL_('Colombia'),\r\n },\r\n CR: {\r\n code: 'CR',\r\n name: _TL_('Costa Rica'),\r\n },\r\n CX: {\r\n code: 'CX',\r\n name: _TL_('Christmas Island'),\r\n },\r\n CY: {\r\n code: 'CY',\r\n name: _TL_('Cyprus'),\r\n },\r\n CZ: {\r\n code: 'CZ',\r\n name: _TL_('Czechia'),\r\n },\r\n DE: {\r\n code: 'DE',\r\n name: _TL_('Germany'),\r\n },\r\n DJ: {\r\n code: 'DJ',\r\n name: _TL_('Djibouti'),\r\n },\r\n DK: {\r\n code: 'DK',\r\n name: _TL_('Denmark'),\r\n },\r\n DM: {\r\n code: 'DM',\r\n name: _TL_('Dominica'),\r\n },\r\n DO: {\r\n code: 'DO',\r\n name: _TL_('Dominican Republic'),\r\n },\r\n DZ: {\r\n code: 'DZ',\r\n name: _TL_('Algeria'),\r\n },\r\n EC: {\r\n code: 'EC',\r\n name: _TL_('Ecuador'),\r\n },\r\n EE: {\r\n code: 'EE',\r\n name: _TL_('Estonia'),\r\n },\r\n EG: {\r\n code: 'EG',\r\n name: _TL_('Egypt'),\r\n },\r\n ER: {\r\n code: 'ER',\r\n name: _TL_('Eritrea'),\r\n },\r\n ES: {\r\n code: 'ES',\r\n name: _TL_('Spain'),\r\n },\r\n ET: {\r\n code: 'ET',\r\n name: _TL_('Ethiopia'),\r\n },\r\n FI: {\r\n code: 'FI',\r\n name: _TL_('Finland'),\r\n },\r\n FJ: {\r\n code: 'FJ',\r\n name: _TL_('Fiji Islands'),\r\n },\r\n FO: {\r\n code: 'FO',\r\n name: _TL_('Faroe Islands'),\r\n },\r\n FR: {\r\n code: 'FR',\r\n name: _TL_('France'),\r\n },\r\n GA: {\r\n code: 'GA',\r\n name: _TL_('Gabon'),\r\n },\r\n GB: {\r\n code: 'GB',\r\n name: _TL_('United Kingdom'),\r\n },\r\n GD: {\r\n code: 'GD',\r\n name: _TL_('Grenada'),\r\n },\r\n GE: {\r\n code: 'GE',\r\n name: _TL_('Georgia'),\r\n },\r\n GF: {\r\n code: 'GF',\r\n name: _TL_('French Guiana'),\r\n },\r\n GI: {\r\n code: 'GI',\r\n name: _TL_('Gibraltar'),\r\n },\r\n GL: {\r\n code: 'GL',\r\n name: _TL_('Greenland'),\r\n },\r\n GM: {\r\n code: 'GM',\r\n name: _TL_('Gambia, The'),\r\n },\r\n GN: {\r\n code: 'GN',\r\n name: _TL_('Guinea'),\r\n },\r\n GP: {\r\n code: 'GP',\r\n name: _TL_('Guadeloupe'),\r\n },\r\n GR: {\r\n code: 'GR',\r\n name: _TL_('Greece'),\r\n },\r\n GT: {\r\n code: 'GT',\r\n name: _TL_('Guatemala'),\r\n },\r\n GU: {\r\n code: 'GU',\r\n name: _TL_('Guam'),\r\n },\r\n GW: {\r\n code: 'GW',\r\n name: _TL_('Guinea-Bissau'),\r\n },\r\n GY: {\r\n code: 'GY',\r\n name: _TL_('Guyana'),\r\n },\r\n HK: {\r\n code: 'HK',\r\n name: _TL_('Hong Kong SAR'),\r\n },\r\n HN: {\r\n code: 'HN',\r\n name: _TL_('Honduras'),\r\n },\r\n HR: {\r\n code: 'HR',\r\n name: _TL_('Croatia'),\r\n },\r\n HT: {\r\n code: 'HT',\r\n name: _TL_('Haiti'),\r\n },\r\n HU: {\r\n code: 'HU',\r\n name: _TL_('Hungary'),\r\n },\r\n ID: {\r\n code: 'ID',\r\n name: _TL_('Indonesia'),\r\n },\r\n IE: {\r\n code: 'IE',\r\n name: _TL_('Ireland'),\r\n },\r\n IL: {\r\n code: 'IL',\r\n name: _TL_('Israel'),\r\n },\r\n IN: {\r\n code: 'IN',\r\n name: _TL_('India'),\r\n },\r\n IQ: {\r\n code: 'IQ',\r\n name: _TL_('Iraq'),\r\n },\r\n IS: {\r\n code: 'IS',\r\n name: _TL_('Iceland'),\r\n },\r\n IT: {\r\n code: 'IT',\r\n name: _TL_('Italy'),\r\n },\r\n JM: {\r\n code: 'JM',\r\n name: _TL_('Jamaica'),\r\n },\r\n JP: {\r\n code: 'JP',\r\n name: _TL_('Japan'),\r\n },\r\n KG: {\r\n code: 'KG',\r\n name: _TL_('Kyrgyzstan'),\r\n },\r\n KM: {\r\n code: 'KM',\r\n name: _TL_('Comoros'),\r\n },\r\n KN: {\r\n code: 'KN',\r\n name: _TL_('Saint Kitts and Nevis'),\r\n },\r\n KY: {\r\n code: 'KY',\r\n name: _TL_('Cayman Islands'),\r\n },\r\n LC: {\r\n code: 'LC',\r\n name: _TL_('Saint Lucia'),\r\n },\r\n LI: {\r\n code: 'LI',\r\n name: _TL_('Liechtenstein'),\r\n },\r\n LK: {\r\n code: 'LK',\r\n name: _TL_('Sri Lanka'),\r\n },\r\n LS: {\r\n code: 'LS',\r\n name: _TL_('Lesotho'),\r\n },\r\n LT: {\r\n code: 'LT',\r\n name: _TL_('Lithuania'),\r\n },\r\n LU: {\r\n code: 'LU',\r\n name: _TL_('Luxembourg'),\r\n },\r\n LV: {\r\n code: 'LV',\r\n name: _TL_('Latvia'),\r\n },\r\n LY: {\r\n code: 'LY',\r\n name: _TL_('Libya'),\r\n },\r\n MC: {\r\n code: 'MC',\r\n name: _TL_('Monaco'),\r\n },\r\n MD: {\r\n code: 'MD',\r\n name: _TL_('Moldova'),\r\n },\r\n ME: {\r\n code: 'ME',\r\n name: _TL_('Montenegro'),\r\n },\r\n MG: {\r\n code: 'MG',\r\n name: _TL_('Madagascar'),\r\n },\r\n MH: {\r\n code: 'MH',\r\n name: _TL_('Marshall Islands'),\r\n },\r\n MK: {\r\n code: 'MK',\r\n name: _TL_('Republic of North Macedonia'),\r\n },\r\n MN: {\r\n code: 'MN',\r\n name: _TL_('Mongolia'),\r\n },\r\n MO: {\r\n code: 'MO',\r\n name: _TL_('Macao SAR'),\r\n },\r\n MP: {\r\n code: 'MP',\r\n name: _TL_('Northern Mariana Islands'),\r\n },\r\n MQ: {\r\n code: 'MQ',\r\n name: _TL_('Martinique'),\r\n },\r\n MR: {\r\n code: 'MR',\r\n name: _TL_('Mauritania'),\r\n },\r\n MS: {\r\n code: 'MS',\r\n name: _TL_('Montserrat'),\r\n },\r\n MT: {\r\n code: 'MT',\r\n name: _TL_('Malta'),\r\n },\r\n MU: {\r\n code: 'MU',\r\n name: _TL_('Mauritius'),\r\n },\r\n MV: {\r\n code: 'MV',\r\n name: _TL_('Maldives'),\r\n },\r\n MW: {\r\n code: 'MW',\r\n name: _TL_('Malawi'),\r\n },\r\n MX: {\r\n code: 'MX',\r\n name: _TL_('Mexico'),\r\n },\r\n MY: {\r\n code: 'MY',\r\n name: _TL_('Malaysia'),\r\n },\r\n NA: {\r\n code: 'NA',\r\n name: _TL_('Namibia'),\r\n },\r\n NC: {\r\n code: 'NC',\r\n name: _TL_('New Caledonia'),\r\n },\r\n NE: {\r\n code: 'NE',\r\n name: _TL_('Niger'),\r\n },\r\n NF: {\r\n code: 'NF',\r\n name: _TL_('Norfolk Island'),\r\n },\r\n NG: {\r\n code: 'NG',\r\n name: _TL_('Nigeria'),\r\n },\r\n NL: {\r\n code: 'NL',\r\n name: _TL_('Netherlands'),\r\n },\r\n NO: {\r\n code: 'NO',\r\n name: _TL_('Norway'),\r\n },\r\n NP: {\r\n code: 'NP',\r\n name: _TL_('Nepal'),\r\n },\r\n NR: {\r\n code: 'NR',\r\n name: _TL_('Nauru'),\r\n },\r\n NU: {\r\n code: 'NU',\r\n name: _TL_('Niue'),\r\n },\r\n NZ: {\r\n code: 'NZ',\r\n name: _TL_('New Zealand'),\r\n },\r\n OM: {\r\n code: 'OM',\r\n name: _TL_('Oman'),\r\n },\r\n PA: {\r\n code: 'PA',\r\n name: _TL_('Panama'),\r\n },\r\n PE: {\r\n code: 'PE',\r\n name: _TL_('Peru'),\r\n },\r\n PF: {\r\n code: 'PF',\r\n name: _TL_('French Polynesia'),\r\n },\r\n PG: {\r\n code: 'PG',\r\n name: _TL_('Papua New Guinea'),\r\n },\r\n PH: {\r\n code: 'PH',\r\n name: _TL_('Philippines'),\r\n },\r\n PK: {\r\n code: 'PK',\r\n name: _TL_('Pakistan'),\r\n },\r\n PL: {\r\n code: 'PL',\r\n name: _TL_('Poland'),\r\n },\r\n PM: {\r\n code: 'PM',\r\n name: _TL_('Saint Pierre and Miquelon'),\r\n },\r\n PN: {\r\n code: 'PN',\r\n name: _TL_('Pitcairn Islands'),\r\n },\r\n PR: {\r\n code: 'PR',\r\n name: _TL_('Puerto Rico'),\r\n },\r\n PT: {\r\n code: 'PT',\r\n name: _TL_('Portugal'),\r\n },\r\n PW: {\r\n code: 'PW',\r\n name: _TL_('Palau'),\r\n },\r\n PY: {\r\n code: 'PY',\r\n name: _TL_('Paraguay'),\r\n },\r\n QA: {\r\n code: 'QA',\r\n name: _TL_('Qatar'),\r\n },\r\n RE: {\r\n code: 'RE',\r\n name: _TL_('Reunion'),\r\n },\r\n RO: {\r\n code: 'RO',\r\n name: _TL_('Romania'),\r\n },\r\n RS: {\r\n code: 'RS',\r\n name: _TL_('Serbia'),\r\n },\r\n RW: {\r\n code: 'RW',\r\n name: _TL_('Rwanda'),\r\n },\r\n SA: {\r\n code: 'SA',\r\n name: _TL_('Saudi Arabia'),\r\n },\r\n SC: {\r\n code: 'SC',\r\n name: _TL_('Seychelles'),\r\n },\r\n SE: {\r\n code: 'SE',\r\n name: _TL_('Sweden'),\r\n },\r\n SG: {\r\n code: 'SG',\r\n name: _TL_('Singapore'),\r\n },\r\n SI: {\r\n code: 'SI',\r\n name: _TL_('Slovenia'),\r\n },\r\n SK: {\r\n code: 'SK',\r\n name: _TL_('Slovakia'),\r\n },\r\n SL: {\r\n code: 'SL',\r\n name: _TL_('Sierra Leone'),\r\n },\r\n SM: {\r\n code: 'SM',\r\n name: _TL_('San Marino'),\r\n },\r\n SN: {\r\n code: 'SN',\r\n name: _TL_('Senegal'),\r\n },\r\n SO: {\r\n code: 'SO',\r\n name: _TL_('Somalia'),\r\n },\r\n SR: {\r\n code: 'SR',\r\n name: _TL_('Suriname'),\r\n },\r\n SV: {\r\n code: 'SV',\r\n name: _TL_('El Salvador'),\r\n },\r\n TC: {\r\n code: 'TC',\r\n name: _TL_('Turks and Caicos Islands'),\r\n },\r\n TG: {\r\n code: 'TG',\r\n name: _TL_('Togo'),\r\n },\r\n TH: {\r\n code: 'TH',\r\n name: _TL_('Thailand'),\r\n },\r\n TJ: {\r\n code: 'TJ',\r\n name: _TL_('Tajikistan'),\r\n },\r\n TK: {\r\n code: 'TK',\r\n name: _TL_('Tokelau'),\r\n },\r\n TN: {\r\n code: 'TN',\r\n name: _TL_('Tunisia'),\r\n },\r\n TO: {\r\n code: 'TO',\r\n name: _TL_('Tonga'),\r\n },\r\n TR: {\r\n code: 'TR',\r\n name: _TL_('Turkey'),\r\n },\r\n TT: {\r\n code: 'TT',\r\n name: _TL_('Trinidad and Tobago'),\r\n },\r\n TV: {\r\n code: 'TV',\r\n name: _TL_('Tuvalu'),\r\n },\r\n TW: {\r\n code: 'TW',\r\n name: _TL_('Taiwan'),\r\n },\r\n TZ: {\r\n code: 'TZ',\r\n name: _TL_('Tanzania'),\r\n },\r\n UG: {\r\n code: 'UG',\r\n name: _TL_('Uganda'),\r\n },\r\n US: {\r\n code: 'US',\r\n name: _TL_('United States'),\r\n },\r\n UY: {\r\n code: 'UY',\r\n name: _TL_('Uruguay'),\r\n },\r\n VA: {\r\n code: 'VA',\r\n name: _TL_('Holy City (the Vatican)'),\r\n },\r\n VC: {\r\n code: 'VC',\r\n name: _TL_('Saint Vincent and the Grenadines'),\r\n },\r\n VE: {\r\n code: 'VE',\r\n name: _TL_('Venezuela'),\r\n },\r\n VG: {\r\n code: 'VG',\r\n name: _TL_('Virgin Islands, British'),\r\n },\r\n VI: {\r\n code: 'VI',\r\n name: _TL_('Virgin Islands, U.S.'),\r\n },\r\n VN: {\r\n code: 'VN',\r\n name: _TL_('Vietnam'),\r\n },\r\n VU: {\r\n code: 'VU',\r\n name: _TL_('Vanuatu'),\r\n },\r\n WF: {\r\n code: 'WF',\r\n name: _TL_('Wallis and Futuna'),\r\n },\r\n WS: {\r\n code: 'WS',\r\n name: _TL_('Samoa'),\r\n },\r\n YE: {\r\n code: 'YE',\r\n name: _TL_('Yemen'),\r\n },\r\n YT: {\r\n code: 'YT',\r\n name: _TL_('Mayotte'),\r\n },\r\n ZA: {\r\n code: 'ZA',\r\n name: _TL_('South Africa'),\r\n },\r\n ZM: {\r\n code: 'ZM',\r\n name: _TL_('Zambia'),\r\n },\r\n ZW: {\r\n code: 'ZW',\r\n name: _TL_('Zimbabwe'),\r\n },\r\n};\r\n","export const STATUS_SCHEDULED = 'Scheduled';\r\nexport const STATUS_RUNNING = 'Running';\r\nexport const STATUS_MEASURING = 'MeasuringResults';\r\nexport const STATUS_COMPLETED = 'Completed';\r\nexport const STATUS_FAILED = 'Failed';\r\nexport const STATUS_DELETED = 'Deleted';\r\n\r\nexport const statuses = {\r\n [STATUS_MEASURING]: {\r\n badgeColor: 'informative',\r\n code: STATUS_MEASURING,\r\n name: _TL_('Measuring results'),\r\n infoTitle: _TL_(\"We're creating your experiment\"),\r\n infoText: _TL_(\"Your experiment {{name}} has finished running and we're measuring results.\"),\r\n },\r\n [STATUS_RUNNING]: {\r\n badgeColor: 'informative',\r\n code: STATUS_RUNNING,\r\n name: _TL_('Active'),\r\n infoTitle: _TL_('Your experiment is active'),\r\n infoText: _TL_(\"Your experiment {{name}} is currently running as expected. Once it's complete, you can view the results. Note: You can't edit active experiments.\"),\r\n },\r\n [STATUS_SCHEDULED]: {\r\n badgeColor: 'important',\r\n code: STATUS_SCHEDULED,\r\n name: _TL_('Scheduled'),\r\n infoTitle: _TL_('Your experiment has been scheduled'),\r\n infoText: _TL_('Your experiment {{name}} is scheduled to run on {{startDate}}. Note: You can still edit this this experiment before it runs.'),\r\n },\r\n [STATUS_FAILED]: {\r\n badgeColor: 'danger',\r\n code: STATUS_FAILED,\r\n name: _TL_('Experiment failed'),\r\n infoTitle: _TL_('Your experiment has failed'),\r\n infoText: _TL_(\"Your experiment {{name}} failed. Your campaign(s) didn't meet the eligibility requirements to run the experiment. Please review the eligibility requirements that appear in the Summary pane during experiment creation.\"),\r\n },\r\n [STATUS_COMPLETED]: {\r\n badgeColor: 'success',\r\n code: STATUS_COMPLETED,\r\n name: _TL_('Completed'),\r\n infoTitle: _TL_('Your experiment is complete'),\r\n infoText: _TL_('Your experiment {{name}} has completed.'),\r\n },\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport React, { useContext } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport {\r\n Badge,\r\n makeStyles,\r\n Popover,\r\n PopoverTrigger,\r\n PopoverSurface,\r\n Subtitle1,\r\n} from '@fluentui/react-components';\r\nimport { statuses } from './statuses';\r\n\r\nconst useStyles = makeStyles({\r\n popoverContent: {\r\n maxWidth: '500px',\r\n },\r\n});\r\n\r\nexport const StatusBadge = ({\r\n code,\r\n infoTextData,\r\n text,\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n const styles = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n {i18n.getString(text)}\r\n \r\n \r\n \r\n
\r\n {i18n.getString(statuses[code].infoTitle)}\r\n

{i18n.getString(statuses[code].infoText, infoTextData)}

\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nStatusBadge.propTypes = {\r\n code: PropTypes.oneOf(Object.keys(statuses)).isRequired,\r\n infoTextData: PropTypes.shape({\r\n name: PropTypes.string,\r\n startDate: PropTypes.string,\r\n }).isRequired,\r\n text: PropTypes.string.isRequired,\r\n};\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n Dialog,\r\n DialogTrigger,\r\n DialogSurface,\r\n DialogTitle,\r\n DialogBody,\r\n DialogActions,\r\n DialogContent,\r\n Button,\r\n} from '@fluentui/react-components';\r\nimport { DeleteRegular } from '@fluentui/react-icons';\r\nimport { useContext } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport {\r\n STATUS_COMPLETED,\r\n STATUS_DELETED,\r\n STATUS_FAILED,\r\n STATUS_MEASURING,\r\n STATUS_RUNNING,\r\n STATUS_SCHEDULED,\r\n} from '../statuses';\r\n\r\nconst nonDeletableStatuses = [\r\n STATUS_RUNNING,\r\n STATUS_MEASURING,\r\n];\r\n\r\nexport const DeleteStudyDialog = ({ onDelete, name, status }) => {\r\n const i18n = useContext(I18nContext);\r\n const description = i18n.getString(_TL_('Are you sure you want to delete the lift study, {{name}}?'), { name });\r\n const deleteButtonLabel = i18n.getString(_TL_('Delete'));\r\n const closeButtonLabel = i18n.getString(_TL_('Close'));\r\n return (\r\n \r\n \r\n }\r\n className=\"delete-experiment-modal\"\r\n />\r\n \r\n \r\n \r\n {i18n.getString(_TL_('Delete Lift Study'))}\r\n \r\n {description}\r\n \r\n \r\n \r\n \r\n \r\n onDelete()}\r\n aria-label={deleteButtonLabel}\r\n >{deleteButtonLabel}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nDeleteStudyDialog.propTypes = {\r\n onDelete: PropTypes.func.isRequired,\r\n name: PropTypes.string.isRequired,\r\n status: PropTypes.oneOf([\r\n STATUS_COMPLETED,\r\n STATUS_DELETED,\r\n STATUS_FAILED,\r\n STATUS_MEASURING,\r\n STATUS_RUNNING,\r\n STATUS_SCHEDULED,\r\n ]).isRequired,\r\n};\r\n","import React from 'react';\r\nimport {\r\n Button,\r\n createTableColumn,\r\n TableCellLayout,\r\n Text,\r\n Tooltip,\r\n} from '@fluentui/react-components';\r\nimport {\r\n EditRegular,\r\n} from '@fluentui/react-icons';\r\n// import { HelpButton } from '@bingads-webui-react/help-popup';\r\nimport { countries } from '../../common/countries';\r\nimport { StatusBadge } from '../status-badge';\r\nimport { DeleteStudyDialog } from './delete-study-dialog';\r\nimport {\r\n statuses,\r\n STATUS_COMPLETED,\r\n STATUS_SCHEDULED,\r\n} from '../statuses';\r\n\r\n/*\r\nconst getHelpButton = (headerName, topic) => {\r\n const stopPropagation = (e) => { e.stopPropagation(); };\r\n\r\n return (\r\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst getHeaderCell = (i18n, name, topic) => {\r\n const headerName = i18n.getString(_TL_('{{name}}'), { name });\r\n return (\r\n <> {headerName} {getHelpButton(headerName, topic)} \r\n );\r\n};\r\n*/\r\n\r\nconst getCountryName = ({ country, i18n }) => i18n.getString(countries[country].name);\r\n\r\nexport const getColumns = ({\r\n i18n,\r\n onClickDelete,\r\n onClickEdit,\r\n onClickName,\r\n}) => [\r\n createTableColumn({\r\n columnId: 'Name',\r\n compare: (a, b) => a.Name.localeCompare(b.Name),\r\n renderCell: (item) => {\r\n const experimentName = item.Status === STATUS_COMPLETED\r\n ? (\r\n onClickName({\r\n id: item.Id,\r\n name: item.Name,\r\n })}\r\n style={{ cursor: 'pointer' }}\r\n underline\r\n >\r\n {item.Name}\r\n \r\n )\r\n : item.Name;\r\n const instructions = i18n.getString(_TL_('Click to view the results for experiment \"{{name}}\".'), {\r\n name: item.Name,\r\n });\r\n\r\n return (\r\n \r\n \r\n {experimentName}\r\n \r\n \r\n );\r\n },\r\n // renderHeaderCell: () => getHeaderCell(i18n, 'Experiment name', 'pop_BA_Experiments_Name'),\r\n renderHeaderCell: () => i18n.getString(_TL_('Experiment name')),\r\n }),\r\n createTableColumn({\r\n columnId: 'Status',\r\n renderCell: (item) => {\r\n const infoTextData = { name: item.Name };\r\n\r\n if (item.Status === STATUS_SCHEDULED) {\r\n infoTextData.startDate = item.StartDate;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n },\r\n // renderHeaderCell: () => getHeaderCell(i18n, 'Status', 'pop_BA_Experiments_Status'),\r\n renderHeaderCell: () => i18n.getString(_TL_('Status')),\r\n }),\r\n createTableColumn({\r\n columnId: 'Campaigns',\r\n renderCell: (item) => {\r\n const campaignNames = item.Campaigns.map(campaign => campaign.Name);\r\n const campaignNamesString = campaignNames.join(i18n.getString(_TL_(', ')));\r\n return (\r\n \r\n \r\n {campaignNamesString}\r\n \r\n \r\n );\r\n },\r\n // renderHeaderCell: () => getHeaderCell(i18n, 'Campaigns', 'pop_BA_Experiments_Campaigns'),\r\n renderHeaderCell: () => i18n.getString(_TL_('Campaigns')),\r\n }),\r\n createTableColumn({\r\n columnId: 'dates',\r\n compare: (a, b) => a.StartDate.localeCompare(b.StartDate),\r\n renderCell: (item) => {\r\n const dateRangeString = `${i18n.formatDate(new Date(item.StartDate))} - ${i18n.formatDate(new Date(item.EndDate))}`;\r\n return (\r\n \r\n \r\n {dateRangeString}\r\n \r\n \r\n );\r\n },\r\n // renderHeaderCell: () => getHeaderCell(i18n, 'Experiment dates', 'pop_BA_Experiments_Dates'),\r\n renderHeaderCell: () => i18n.getString(_TL_('Experiment dates')),\r\n }),\r\n createTableColumn({\r\n columnId: 'Country',\r\n compare: (a, b) => getCountryName({ country: a.Country, i18n }).localeCompare(getCountryName({ country: b.Country, i18n })),\r\n renderCell: (item) => {\r\n const countryString = getCountryName({ country: item.Country, i18n });\r\n return (\r\n \r\n \r\n {countryString}\r\n \r\n \r\n );\r\n },\r\n // renderHeaderCell: () => getHeaderCell(i18n, 'Country', 'pop_BA_Experiments_Country'),\r\n renderHeaderCell: () => i18n.getString(_TL_('Country')),\r\n }),\r\n createTableColumn({\r\n columnId: 'actions',\r\n renderCell: item => (\r\n \r\n }\r\n onClick={() => {\r\n onClickEdit(item.Id);\r\n }}\r\n />\r\n onClickDelete(item.Id)}\r\n name={item.Name}\r\n status={item.Status}\r\n />\r\n \r\n ),\r\n renderHeaderCell: () => i18n.getString(_TL_('Actions')),\r\n }),\r\n];\r\n\r\nexport const getCellFocusMode = (columnId) => {\r\n if (columnId === 'status' || columnId === 'campaigns') {\r\n return 'none';\r\n }\r\n\r\n if (columnId === 'actions') {\r\n return 'group';\r\n }\r\n\r\n return 'cell';\r\n};\r\n","import { edmCampaign } from '@bingads-webui/edm-campaign';\r\n\r\nexport const fetchCampaignsByIdEDM = ({ cid, aid }, campaignIds) => {\r\n const formattedCampaignIds = campaignIds.join(', ');\r\n return edmCampaign\r\n .Customers.$withKey(cid)\r\n .Accounts.$withKey(aid)\r\n .Campaigns\r\n .get({ filter: { where: `Id in [${formattedCampaignIds}]` } })\r\n .toPromise();\r\n};\r\n","export const EXPERIMENT_API_ERRORS = {\r\n CampaignAssociationsLimitExceeded: _TL_('A maximum of 10 campaigns can be selected for a single lift study.'),\r\n DuplicateEntity: _TL_('One or more of your keywords are duplicated.'),\r\n DuplicateTagId: _TL_('One or more of your selected tags are duplicated.'),\r\n EntityAlreadyExists: _TL_('This lift experiment name is already used under this account.'),\r\n EntityLimitExceeded: _TL_('You have more than 20 keywords.'),\r\n ExperimentStartDateInvalid: _TL_('The start date selected for the lift study is in the past.'),\r\n ExperimentTimeperiodOverlapping: _TL_(\"You've already scheduled a lift measurement experiment to run during those dates. You can only run one experiment during a given time period. Please choose different dates.\"),\r\n ExperimentTypeInvalid: _TL_('At least one measurement type needs to be selected for a lift study.'),\r\n InvalidCountryCode: _TL_('The selected country is not supported for lift studies.'),\r\n InvalidCustomerId: _TL_('The CID may not be associated with the business or client. Please confirm and enter the correct CID.'),\r\n InvalidStatus: _TL_('Only active campaigns, which use audience targeting may be used for lift studies.'),\r\n InvalidTagStatus: _TL_('One or more of your selected tags are not active.'),\r\n KeywordIsBlank: _TL_('One or more of your keywords are blank.'),\r\n KeywordTooLong: _TL_('One or more of your keywords is over the character limit of 100.'),\r\n NameExceededMaxLen: _TL_('Lift study names must be less than 128 characters.'),\r\n NotAllowedToDoCurrentOperation: _TL_('The status for this lift study can not be changed.'),\r\n TagsBatchSizeExceesdLimit: _TL_('A maximum of 5 tags is allowed for a single lift study.'),\r\n};\r\n","import { edmCampaign } from '@bingads-webui/edm-campaign';\r\nimport { curlyTemplate } from '@bingads-webui/primitive-utilities';\r\nimport { EXPERIMENT_API_ERRORS } from '../common/constants/experiment-errors';\r\n\r\nexport const USE_SEARCH_MEASUREMENT = 1;\r\nexport const USE_VISIT_MEASUREMENT = 2;\r\nexport const USE_CONVERSION_MEASUREMENT = 4;\r\n\r\nexport const createMeasurementTypeEnum = ({\r\n useConversionLift,\r\n useSearchLift,\r\n useVisitLift,\r\n}) => {\r\n const x = useSearchLift ? USE_SEARCH_MEASUREMENT : 0;\r\n const y = useVisitLift ? USE_VISIT_MEASUREMENT : 0;\r\n const z = useConversionLift ? USE_CONVERSION_MEASUREMENT : 0;\r\n return x + y + z;\r\n};\r\n\r\nexport const parseMeasurementTypeEnum = combinedEnum => ({\r\n useConversionLift: combinedEnum.includes('Conversion'),\r\n useSearchLift: combinedEnum.includes('Search'),\r\n useVisitLift: combinedEnum.includes('Visit'),\r\n});\r\n\r\nexport const stitchFullCampaignsIntoExperiments = (associatedCampaigns, fetchedLiftExperiments) => {\r\n const associatedCampaignsById = {};\r\n associatedCampaigns.forEach((campaign) => {\r\n associatedCampaignsById[campaign.Id] = campaign;\r\n });\r\n const formattedLiftExperiments = fetchedLiftExperiments.reduce((accum, liftExperiment) => {\r\n const formattedCampaigns = liftExperiment.Campaigns.map(campaignId => associatedCampaignsById[campaignId]);\r\n accum.push({\r\n ...liftExperiment,\r\n Campaigns: formattedCampaigns,\r\n });\r\n return accum;\r\n }, []);\r\n return formattedLiftExperiments;\r\n};\r\n\r\nexport const fetchExperiment = async ({ cid, aid, liftExperimentId }, { onSuccess, onFailure }) => edmCampaign\r\n .Customers.$withKey(cid)\r\n .Accounts.$withKey(aid)\r\n .LiftExperiments\r\n .$withKey(liftExperimentId)\r\n .get({\r\n select: [\r\n 'Id',\r\n 'Name',\r\n 'Campaigns',\r\n 'Country',\r\n 'Keywords',\r\n 'MeasurementType',\r\n 'StartDate',\r\n 'SearchCustomerId',\r\n 'UETTags',\r\n ],\r\n })\r\n .toPromise()\r\n .then((response) => {\r\n // This handles the case where a lift exp id param is included but is incorrect (the api returns a 204)\r\n if (!response) {\r\n throw new Error();\r\n }\r\n onSuccess(response);\r\n })\r\n .catch(() => onFailure(curlyTemplate(_TL_('Failed to fetch lift study: {{liftExperimentId}}'))({ liftExperimentId })));\r\n\r\nexport const fetchExperiments = ({ cid, aid }, { query, onSuccess, onFailure }) => edmCampaign\r\n .Customers.$withKey(cid)\r\n .Accounts.$withKey(aid)\r\n .LiftExperiments\r\n .get(query)\r\n .toPromise()\r\n .then((response) => {\r\n onSuccess(response.value);\r\n })\r\n .catch(() => onFailure(_TL_('Failed to fetch lift studies')));\r\n\r\nexport const saveExperiment = ({ cid, aid }, { payload, onSuccess, onFailure }) => edmCampaign\r\n .Customers.$withKey(cid)\r\n .Accounts.$withKey(aid)\r\n .LiftExperiments\r\n .post(payload)\r\n .toPromise()\r\n .then((response) => {\r\n onSuccess(response);\r\n return { isAPISaveFailure: false };\r\n })\r\n .catch((response) => {\r\n const apiErrorCode = response.body.value[0].Code;\r\n const errorMessage = curlyTemplate(_TL_('Failed to create lift study: {{errorMessage}}'))({ errorMessage: EXPERIMENT_API_ERRORS[apiErrorCode] });\r\n onFailure(errorMessage);\r\n return {\r\n isAPISaveFailure: true,\r\n error: new Error(errorMessage),\r\n };\r\n });\r\n\r\n\r\nexport const updateExperiment = ({ cid, aid }, { payload, onSuccess, onFailure }) => edmCampaign\r\n .Customers.$withKey(cid)\r\n .Accounts.$withKey(aid)\r\n .LiftExperiments\r\n .update(payload.Id, payload)\r\n .then((response) => {\r\n onSuccess(response);\r\n return { isAPISaveFailure: false };\r\n })\r\n .catch((response) => {\r\n const apiErrorCode = response.body.value[0].Code;\r\n const errorMessage = curlyTemplate(_TL_('Failed to update lift study: {{liftExperimentId}}. {{errorMessage}}'))({ errorMessage: EXPERIMENT_API_ERRORS[apiErrorCode], liftExperimentId: payload.Id });\r\n onFailure(errorMessage);\r\n return {\r\n isAPISaveFailure: true,\r\n error: new Error(errorMessage),\r\n };\r\n });\r\n\r\nexport const deleteExperiment = ({ cid, aid }, liftExperimentId, onSuccess, onFailure) => edmCampaign\r\n .Customers.$withKey(cid)\r\n .Accounts.$withKey(aid)\r\n .LiftExperiments\r\n .$withKey(liftExperimentId)\r\n .destroyAsPromise()\r\n .then(() => {\r\n onSuccess(liftExperimentId);\r\n })\r\n .catch(() => {\r\n onFailure(curlyTemplate(_TL_('Failed to delete lift study: {{liftExperimentId}}'))({ liftExperimentId }));\r\n });\r\n","import $ from 'jquery';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useCallback, useContext, useEffect } from 'react';\r\nimport { AlertHelper } from '@bingads-webui-campaign/alert-helper';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { GridContext } from '@bingads-webui-grid/grid-context';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { getRoutePathById } from '@bingads-webui-react/with-site-map';\r\nimport { setClarityTag } from '@bingads-webui-universal/clarity';\r\nimport {\r\n DataGrid,\r\n DataGridBody,\r\n DataGridCell,\r\n DataGridHeader,\r\n DataGridHeaderCell,\r\n DataGridRow,\r\n} from '@fluentui/react-components';\r\nimport {\r\n getCellFocusMode,\r\n getColumns,\r\n} from './config';\r\nimport { fetchCampaignsByIdEDM } from '../../fetch/campaigns';\r\nimport { deleteExperiment, fetchExperiments, stitchFullCampaignsIntoExperiments } from '../../fetch/experiment';\r\n\r\nexport const LiftStudiesGrid = ({ onClickEdit, siteMap }) => {\r\n const i18n = useContext(I18nContext);\r\n const { dispatch, state } = useContext(GridContext);\r\n const { scope } = useContext(ScopeContext);\r\n\r\n const onClickName = useCallback(({ id }) => {\r\n const route = getRoutePathById(siteMap, 'lift-measurement-results');\r\n scope.append({ liftExperimentId: id });\r\n scope.save(route);\r\n }, [scope, siteMap]);\r\n\r\n const onFailure = useCallback((message) => {\r\n const alertHelper = new AlertHelper({ i18n });\r\n alertHelper.showError(message);\r\n }, [i18n]);\r\n\r\n const onDeleteFailure = useCallback((message) => {\r\n setClarityTag({\r\n IsDeleteLiftExperimentSuccessful: false,\r\n });\r\n const alertHelper = new AlertHelper({ i18n });\r\n alertHelper.showError(message);\r\n }, [i18n]);\r\n\r\n const onDeleteSuccess = useCallback((liftExperimentIdToDelete) => {\r\n const liftExperimentsWithDeletedRemoved = state.items.reduce((accum, liftExperiment) => {\r\n if (liftExperimentIdToDelete !== liftExperiment.Id) {\r\n accum.push(liftExperiment);\r\n }\r\n return accum;\r\n }, []);\r\n setClarityTag({\r\n IsDeleteLiftExperimentSuccessful: true,\r\n });\r\n dispatch({ type: 'FINISH_LOAD_DATA', payload: { items: liftExperimentsWithDeletedRemoved, totalCount: state.totalCount - 1 } });\r\n }, [dispatch, state.items, state.totalCount]);\r\n\r\n const onClickDelete = useCallback((liftExperimentIdToDelete) => {\r\n setClarityTag({\r\n IsClickedDeleteLiftExperiment: true,\r\n });\r\n deleteExperiment(scope.values, liftExperimentIdToDelete, onDeleteSuccess, onDeleteFailure);\r\n }, [onDeleteSuccess, onDeleteFailure, scope]);\r\n\r\n const columns = getColumns({\r\n i18n, onClickDelete, onClickEdit, onClickName,\r\n });\r\n\r\n const onFetchExperimentsSuccess = useCallback(async (fetchedLiftExperiments) => {\r\n const associatedCampaignIds = fetchedLiftExperiments.reduce((accum, liftExperiment) => [...accum, liftExperiment.Campaigns], []);\r\n if (associatedCampaignIds && associatedCampaignIds.length > 0) {\r\n const campaignsResponse = await fetchCampaignsByIdEDM(scope.values, associatedCampaignIds)\r\n .finally(withUiBlock($('.lift-measurement-wrapper'), i18n.getString(_TL_('Loading'))), [i18n]);\r\n const formattedLiftExperiments = stitchFullCampaignsIntoExperiments(campaignsResponse.value, fetchedLiftExperiments);\r\n dispatch({ type: 'FINISH_LOAD_DATA', payload: { items: formattedLiftExperiments, totalCount: formattedLiftExperiments.length } });\r\n } else {\r\n dispatch({ type: 'FINISH_LOAD_DATA', payload: { items: fetchedLiftExperiments, totalCount: fetchedLiftExperiments.length } });\r\n }\r\n }, [dispatch, i18n, scope.values]);\r\n\r\n const getOrderBy = useCallback((column) => {\r\n if (!column.fieldName || column.fieldName === 'Status' || column.fieldName === 'Campaigns' || column.fieldName === 'actions') {\r\n return undefined;\r\n } else if (column.fieldName === 'dates') {\r\n return { StartDate: column.isSortDescending ? -1 : 1 };\r\n }\r\n\r\n return {\r\n [column.fieldName]: column.isSortDescending ? -1 : 1,\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n fetchExperiments(scope.values, {\r\n query: {\r\n count: true,\r\n top: state.pagination.pageSize,\r\n skip: ((state.pagination.pageNumber - 1) * state.pagination.pageSize),\r\n filter: { where: state.editableFilter },\r\n orderby: getOrderBy(state.sortedColumn),\r\n },\r\n onSuccess: onFetchExperimentsSuccess,\r\n onFailure,\r\n });\r\n }, [getOrderBy, onFailure, onFetchExperimentsSuccess, state.editableFilter, state.pagination, state.sortedColumn, scope.values]);\r\n\r\n const onSortChange = useCallback((e, { sortColumn, sortDirection }) => {\r\n setClarityTag({\r\n IsLiftExperimentSortChanged: true,\r\n LiftExperimentSortField: sortColumn,\r\n LiftExperimentSortDirection: sortDirection,\r\n });\r\n dispatch({\r\n type: 'UPDATE_SORTED_COLUMN',\r\n payload: {\r\n ...state.sortedColumn,\r\n fieldName: sortColumn,\r\n isSortDescending: sortDirection === 'descending',\r\n },\r\n });\r\n }, [dispatch, state]);\r\n\r\n return (\r\n <>\r\n item.Id}\r\n items={state.items}\r\n onSortChange={onSortChange}\r\n sortable\r\n >\r\n \r\n \r\n {({ renderHeaderCell }) => (\r\n \r\n {renderHeaderCell()}\r\n \r\n )}\r\n \r\n \r\n \r\n {({ item, rowId }) => (\r\n \r\n {({ renderCell, columnId }) => (\r\n \r\n {renderCell(item)}\r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nLiftStudiesGrid.propTypes = {\r\n onClickEdit: PropTypes.func.isRequired,\r\n siteMap: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.string,\r\n })).isRequired,\r\n};\r\n","import { maxKeywordCount } from './constants/maximums';\r\n\r\nexport const parseKeywordString = (keywordString) => {\r\n const words = keywordString\r\n .split(',')\r\n .map(word => word.trim());\r\n return words;\r\n};\r\n\r\nexport const sortByName = i18n => (a, b) => {\r\n if (i18n.getString(a.name) < i18n.getString(b.name)) {\r\n return -1;\r\n }\r\n\r\n if (i18n.getString(b.name) < i18n.getString(a.name)) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n};\r\n\r\nexport const getUETTags = (wizardData) => {\r\n if (wizardData.useVisitConversionLift && wizardData.useConversionLift && wizardData.useVisitLift) {\r\n return wizardData.uetTags.both;\r\n } else if (wizardData.useConversionLift) {\r\n return wizardData.uetTags.conversion;\r\n } else if (wizardData.useVisitLift) {\r\n return wizardData.uetTags.visit;\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const getKeywords = (wizardData) => {\r\n if (!wizardData.keywordsMethod || !wizardData.useSearchLift) {\r\n return undefined;\r\n }\r\n return wizardData.keywordsMethod === 'entry'\r\n ? parseKeywordString(wizardData.typedKeywordString)\r\n .filter(kw => kw.length > 0)\r\n .slice(0, maxKeywordCount)\r\n : wizardData.selectedKeywords.map(keywordId => wizardData.fetchedKeywords[keywordId].name);\r\n};\r\n","export const maxCampaignCount = 10; // maximum number of campaigns for a lift experiment\r\nexport const maxExperimentNameLength = 255; // maximum length of an experiment name\r\nexport const maxFetchedAdGroupsCount = 1000; // maximum number of AD Groups\r\nexport const maxFetchedAudienceCriterionCount = 1000; // maximum number of Audience Criterion\r\nexport const maxFetchedGoalsCount = 200; // maximum number of conversion goals to fetch\r\nexport const maxFetchedKeywordsCount = 200; // maximum number of keywords to fetch\r\nexport const maxFetchedTagsCount = 200; // maximum number of UET tags to fetch\r\nexport const maxKeywordCount = 20; // maximum number of keywords for a lift experiment\r\nexport const maxKeywordLength = 100; // maximum length of a keyword\r\nexport const maxSearchCid = 999999999; // maximum value for search CID\r\nexport const maxTagCount = 5; // maximum number of UET tags for a lift experiment\r\nexport const minSearchCid = 1; // minimum value for search CID\r\n","import PropTypes from 'prop-types';\r\nimport React, { useCallback, useContext, useMemo } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport {\r\n Dropdown,\r\n Option,\r\n} from '@fluentui/react-components';\r\nimport { countries } from '../../countries';\r\nimport { useFilterDropdownStyles } from '../../styles';\r\nimport { sortByName } from '../../utils';\r\n\r\nexport const getButtonText = ({\r\n delimiter,\r\n i18n,\r\n placeholder,\r\n selectedCountries,\r\n}) => {\r\n if (selectedCountries.length === 0) {\r\n return placeholder;\r\n }\r\n const formattedSelectionText = selectedCountries\r\n .map(code => i18n.getString(countries[code].name))\r\n .join(delimiter);\r\n const countryText = selectedCountries.length > 1 ? i18n.getString(_TL_('Countries:')) : i18n.getString(_TL_('Country:'));\r\n return `${countryText} ${formattedSelectionText}`;\r\n};\r\n\r\nexport const CountrySelector = ({\r\n onSelect,\r\n selectedCountries,\r\n}) => {\r\n const styles = useFilterDropdownStyles();\r\n\r\n const i18n = useContext(I18nContext);\r\n const placeholder = i18n.getString(_TL_('Countries: All'));\r\n const dropdownLabel = i18n.getString(_TL_('Experiment country filter'));\r\n const delimiter = i18n.getString(_TL_(', '));\r\n\r\n const buttonText = useMemo(() => getButtonText({\r\n delimiter,\r\n i18n,\r\n placeholder,\r\n selectedCountries,\r\n }), [delimiter, i18n, placeholder, selectedCountries]);\r\n\r\n const countryKeyValues = useMemo(() => Object.values(countries).sort(sortByName(i18n)), [i18n]);\r\n\r\n const onOptionSelect = useCallback((e, data) => {\r\n onSelect(data.selectedOptions);\r\n }, [onSelect]);\r\n\r\n return (\r\n
\r\n {buttonText}}\r\n data-selectedOptions={selectedCountries.length ? selectedCountries : placeholder}\r\n multiselect\r\n onOptionSelect={onOptionSelect}\r\n selectedOptions={selectedCountries}\r\n >\r\n {countryKeyValues.map(({ code, name }) => (\r\n \r\n {i18n.getString(name)}\r\n \r\n ))}\r\n \r\n
\r\n );\r\n};\r\n\r\nCountrySelector.propTypes = {\r\n onSelect: PropTypes.func.isRequired,\r\n selectedCountries: PropTypes.arrayOf(PropTypes.string).isRequired,\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport React, { useCallback, useContext, useMemo } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport {\r\n Dropdown,\r\n Option,\r\n} from '@fluentui/react-components';\r\nimport { useFilterDropdownStyles } from '../common/styles';\r\nimport { statuses } from './statuses';\r\n\r\nexport const getButtonText = ({\r\n delimiter,\r\n i18n,\r\n placeholder,\r\n selectedStatuses,\r\n}) => {\r\n if (selectedStatuses.length === 0) {\r\n return placeholder;\r\n }\r\n const formattedSelectionText = selectedStatuses\r\n .map(status => i18n.getString(statuses[status].name))\r\n .join(delimiter);\r\n const statusText = selectedStatuses.length > 1 ? i18n.getString(_TL_('Statuses:')) : i18n.getString(_TL_('Status:'));\r\n return `${statusText} ${formattedSelectionText}`;\r\n};\r\n\r\nexport const StatusSelector = ({\r\n onSelect,\r\n selectedStatuses,\r\n}) => {\r\n const styles = useFilterDropdownStyles();\r\n\r\n const i18n = useContext(I18nContext);\r\n const placeholder = i18n.getString(_TL_('Statuses: All'));\r\n const dropdownLabel = i18n.getString(_TL_('Experiment status filter'));\r\n const delimiter = i18n.getString(_TL_(', '));\r\n\r\n const buttonText = useMemo(() => getButtonText({\r\n delimiter,\r\n i18n,\r\n placeholder,\r\n selectedStatuses,\r\n }), [delimiter, i18n, placeholder, selectedStatuses]);\r\n\r\n const statusMap = useMemo(() => Object.values(statuses), []);\r\n\r\n const onOptionSelect = useCallback((e, data) => {\r\n onSelect(data.selectedOptions);\r\n }, [onSelect]);\r\n\r\n\r\n return (\r\n
\r\n {buttonText}}\r\n data-selectedOptions={selectedStatuses.length ? selectedStatuses : placeholder}\r\n multiselect\r\n onOptionSelect={onOptionSelect}\r\n selectedOptions={selectedStatuses}\r\n >\r\n {statusMap.map(({ code, name }) => (\r\n \r\n {i18n.getString(name)}\r\n \r\n ))}\r\n \r\n
\r\n );\r\n};\r\n\r\nStatusSelector.propTypes = {\r\n onSelect: PropTypes.func.isRequired,\r\n selectedStatuses: PropTypes.arrayOf(PropTypes.string).isRequired,\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';\r\nimport _ from 'underscore';\r\nimport { GridContext } from '@bingads-webui-grid/grid-context';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { setClarityTag } from '@bingads-webui-universal/clarity';\r\nimport {\r\n Button,\r\n Input,\r\n makeStyles,\r\n mergeClasses,\r\n} from '@fluentui/react-components';\r\nimport {\r\n SearchRegular,\r\n} from '@fluentui/react-icons';\r\nimport {\r\n Stack,\r\n} from '@fluentui/react/lib/Stack';\r\nimport { CountrySelector } from '../common/components/country/country-selector';\r\nimport { StatusSelector } from './status-selector';\r\n\r\nconst useStyles = makeStyles({\r\n search: {\r\n width: '300px',\r\n },\r\n});\r\n\r\nconst debouncedEditableFilterDispatch = _.debounce((currentEditableFilterPayload, dispatch) => dispatch({ type: 'SET_EDITABLE_FILTER', payload: currentEditableFilterPayload }), 300);\r\n\r\nexport const Toolbar = ({ onClickCreate }) => {\r\n const styles = useStyles();\r\n const toolbarTokens = {\r\n childrenGap: 12,\r\n };\r\n\r\n const i18n = useContext(I18nContext);\r\n const createButtonLabel = i18n.getString(_TL_('Create'));\r\n const searchBoxPlaceholder = i18n.getString(_TL_('Search by experiment name'));\r\n const searchBoxLabel = i18n.getString(_TL_('Experiment name search'));\r\n\r\n const { dispatch } = useContext(GridContext);\r\n\r\n const [countryFilters, setCountryFilters] = useState([]);\r\n const [searchFilter, setSearchFilter] = useState('');\r\n const [statusFilters, setStatusFilters] = useState([]);\r\n\r\n const onChangeCountries = useCallback((countries) => {\r\n setClarityTag({\r\n IsSelectedLiftExperimentCountryFilter: true,\r\n });\r\n setCountryFilters([...countries]);\r\n }, []);\r\n\r\n const onChangeSearchInput = useCallback((_e, { value }) => {\r\n setClarityTag({\r\n IsChangedLiftExperimentSearchFilter: true,\r\n });\r\n setSearchFilter(value);\r\n }, []);\r\n\r\n const onChangeStatuses = useCallback((statuses) => {\r\n setClarityTag({\r\n IsSelectedLiftExperimentStatusFilter: true,\r\n });\r\n setStatusFilters([...statuses]);\r\n }, []);\r\n\r\n const fetchExperimentsFilter = useMemo(() => {\r\n const formattedCountryFilters = countryFilters.map(country => `'${country}'`).join(', ');\r\n const formattedStatusFilters = statusFilters.map(country => `'${country}'`).join(', ');\r\n return [\r\n searchFilter.length ? `contains(tolower(Name), '${searchFilter.toLowerCase()}')` : null,\r\n countryFilters.length ? `Country in [${formattedCountryFilters}]` : null,\r\n statusFilters.length ? `Status in [${formattedStatusFilters}]` : null,\r\n ].filter(fragment => fragment).join(' and ');\r\n }, [countryFilters, searchFilter, statusFilters]);\r\n\r\n useEffect(() => {\r\n debouncedEditableFilterDispatch(fetchExperimentsFilter, dispatch);\r\n }, [fetchExperimentsFilter, dispatch]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n onChange={onChangeSearchInput}\r\n placeholder={searchBoxPlaceholder}\r\n value={searchFilter}\r\n />\r\n \r\n );\r\n};\r\n\r\nToolbar.propTypes = {\r\n onClickCreate: PropTypes.func.isRequired,\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport React, { useCallback, useContext, useMemo } from 'react';\r\nimport { GridContextProvider } from '@bingads-webui-grid/grid-context';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getRoutePathById } from '@bingads-webui-react/with-site-map';\r\nimport { setClarityTag } from '@bingads-webui-universal/clarity';\r\nimport { Stack } from '@fluentui/react/lib/Stack';\r\nimport {\r\n Card,\r\n CardFooter,\r\n makeStyles,\r\n} from '@fluentui/react-components';\r\nimport { getUIBlockerStyle } from './common/styles';\r\nimport { LandingPageFooter } from './landing-page/landing-page-footer';\r\nimport { LiftStudiesGrid } from './landing-page/lift-studies-grid/grid';\r\nimport { Toolbar } from './landing-page/toolbar';\r\n\r\n\r\nconst useStyles = makeStyles({\r\n footer: {\r\n alignItems: 'center',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n },\r\n gridMobileView: {\r\n '@media screen and (max-width: 600px)': {\r\n width: 'fit-content',\r\n },\r\n },\r\n});\r\n\r\nexport const LiftMeasurement = ({ siteMap }) => {\r\n useDefaultStyles(getUIBlockerStyle);\r\n const mainLayoutTokens = {\r\n childrenGap: 15,\r\n padding: 30,\r\n };\r\n const styles = useStyles();\r\n\r\n const { scope } = useContext(ScopeContext);\r\n\r\n const onClickCreate = useCallback(() => {\r\n setClarityTag({\r\n IsClickedCreateLiftExperiment: true,\r\n });\r\n const route = getRoutePathById(siteMap, 'lift-measurement-creation');\r\n scope.save(route);\r\n }, [scope, siteMap]);\r\n const onClickEdit = useCallback((liftExperimentId) => {\r\n setClarityTag({\r\n IsClickedEditLiftExperiment: true,\r\n });\r\n const route = getRoutePathById(siteMap, 'lift-measurement-edit');\r\n scope.append({ liftExperimentId });\r\n scope.save(route);\r\n }, [scope, siteMap]);\r\n\r\n const initialGridContext = useMemo(() => ({\r\n items: [],\r\n editableFilter: '',\r\n pagination: {\r\n pageNumber: 1,\r\n pageSize: 10,\r\n },\r\n totalCount: 0,\r\n }), []);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nLiftMeasurement.propTypes = {\r\n siteMap: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.string,\r\n })).isRequired,\r\n};\r\n","export const CREATE_INTENT = 'create';\r\nexport const EDIT_INTENT = 'edit';\r\n","import PropTypes from 'prop-types';\r\nimport React, { useCallback, useContext } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport {\r\n Button,\r\n} from '@fluentui/react-components';\r\nimport {\r\n matchStepState,\r\n STEP_STATES,\r\n WIZARD_EVENTS,\r\n useWizardService,\r\n} from '@bingads-webui-react/wizard';\r\n\r\nexport const NextButton = ({ disabled }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n const { state, send } = useWizardService();\r\n const isBlocking = matchStepState(state, STEP_STATES.FETCHING) || matchStepState(state, STEP_STATES.LOADING) || matchStepState(state, STEP_STATES.SAVING);\r\n\r\n const onNextClicked = useCallback(() => {\r\n send(WIZARD_EVENTS.SAVE_AND_NEXT);\r\n }, [send]);\r\n\r\n return (\r\n \r\n {i18n.getString(_TL_('Next'))}\r\n \r\n );\r\n};\r\n\r\nNextButton.propTypes = {\r\n disabled: PropTypes.bool,\r\n};\r\n\r\nNextButton.defaultProps = {\r\n disabled: false,\r\n};\r\n\r\nexport const BackButton = () => {\r\n const i18n = useContext(I18nContext);\r\n\r\n const { state, send } = useWizardService();\r\n const isBlocking = matchStepState(state, STEP_STATES.FETCHING) || matchStepState(state, STEP_STATES.LOADING) || matchStepState(state, STEP_STATES.SAVING);\r\n\r\n const onBackClicked = useCallback(() => {\r\n send(WIZARD_EVENTS.BACK);\r\n }, [send]);\r\n\r\n return (\r\n \r\n {i18n.getString(_TL_('Back'))}\r\n \r\n );\r\n};\r\n\r\nexport const CancelButton = () => {\r\n const i18n = useContext(I18nContext);\r\n\r\n const { state, send } = useWizardService();\r\n const isBlocking = matchStepState(state, STEP_STATES.FETCHING) || matchStepState(state, STEP_STATES.LOADING) || matchStepState(state, STEP_STATES.SAVING);\r\n\r\n const onCancelClicked = useCallback(() => {\r\n send(WIZARD_EVENTS.CANCEL);\r\n }, [send]);\r\n\r\n return (\r\n \r\n {i18n.getString(_TL_('Cancel'))}\r\n \r\n );\r\n};\r\n\r\nexport const SaveAndExitButton = ({ disabled }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n const { state, send } = useWizardService();\r\n const isBlocking = matchStepState(state, STEP_STATES.FETCHING) || matchStepState(state, STEP_STATES.LOADING) || matchStepState(state, STEP_STATES.SAVING);\r\n\r\n const onNextClicked = useCallback(() => {\r\n send(WIZARD_EVENTS.SAVE_AND_EXIT);\r\n }, [send]);\r\n\r\n return (\r\n \r\n {i18n.getString(_TL_('Save and exit'))}\r\n \r\n );\r\n};\r\n\r\nSaveAndExitButton.propTypes = {\r\n disabled: PropTypes.bool,\r\n};\r\n\r\nSaveAndExitButton.defaultProps = {\r\n disabled: false,\r\n};\r\n","import React from 'react';\r\nimport {\r\n getIsFirstStep,\r\n getIsLastStep,\r\n useWizardService,\r\n} from '@bingads-webui-react/wizard';\r\nimport { Stack } from '@fluentui/react';\r\nimport { NextButton, BackButton, CancelButton, SaveAndExitButton } from './buttons';\r\n\r\nexport const LiftMeasurementStepFooter = () => {\r\n const { state } = useWizardService();\r\n const isFirstStep = getIsFirstStep(state);\r\n const isLastStep = getIsLastStep(state);\r\n\r\n return (\r\n \r\n {isFirstStep && }\r\n {isLastStep && }\r\n {isLastStep && }\r\n \r\n \r\n );\r\n};\r\n","export const errorMessages = {\r\n CAMPAIGN_REQUIRED: _TL_('Please select at least one campaign before proceeding to the next step.'),\r\n CAMPAIGNS_TOO_MANY: _TL_('Your lift experiment can include up to {{max}} campaigns.'),\r\n CONVERSION_GOAL_REQUIRED: _TL_('Please select a UET tag that has an active conversion goal associated with it.'),\r\n COUNTRY_REQUIRED: _TL_('Country is required.'),\r\n KEYWORDS_TOO_LONG: _TL_('You entered {{count}} {{unit}} that {{verb}} the {{max}}-character limit. Please shorten your text.'),\r\n KEYWORDS_TOO_MANY: _TL_('You entered {{count}} keywords. The lift experiment is limited to {{max}} keywords.'),\r\n MEASUREMENT_TYPE_REQUIRED: _TL_('You must select at least one lift measurement type.'),\r\n NAME_REQUIRED: _TL_('Experiment name is required.'),\r\n NAME_TOO_LONG: _TL_('Experiment name must be 255 or less characters in length.'),\r\n SAVE_VALIDATION_FAILED: _TL_('You can\\'t save this lift experiment. Please fix the errors and try again.'),\r\n SEARCH_CID_RANGE: _TL_('Customer ID must be between 1 and 999999999.'),\r\n SEARCH_CID_TYPE: _TL_('Customer ID must be a number.'),\r\n SELECTED_KEYWORDS_REQUIRED: _TL_('Keywords are required.'),\r\n START_DATE_REQUIRED: _TL_('Start date is required.'),\r\n STATUS_INVALID_FOR_EDIT: _TL_('Lift studies can only be edited while they are in a scheduled status.'),\r\n TYPED_KEYWORDS_REQUIRED: _TL_('Keywords are required.'),\r\n UET_TAG_SELECTION_REQUIRED: _TL_('Please check below for an issue with your UET tags selection.'),\r\n UET_REQUIRED: _TL_('UET tags are required.'),\r\n VISIT_CONVERSION_LIFT_REQUIRED: _TL_('When using \\'Visit and conversion lift\\', you must choose to measure visit and conversion lift, conversion lift only, or visit lift only.'),\r\n};\r\n","export const mainLayoutTokens = {\r\n childrenGap: 15,\r\n padding: 30,\r\n};\r\n\r\nexport const stepLayoutTokens = {\r\n childrenGap: 15,\r\n padding: '32px',\r\n maxWidth: '67%',\r\n};\r\n\r\nexport const selectCampaignsStepLayoutTokens = {\r\n childrenGap: 15,\r\n padding: '32px',\r\n};\r\n\r\nexport const footerStyles = {\r\n alignItems: 'center',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n};\r\n\r\nexport const cardHeaderStyles = {\r\n cardHeader: {\r\n display: 'flex',\r\n },\r\n label: {\r\n paddingRight: '5px',\r\n },\r\n};\r\n\r\nexport const selectCampaignsStyles = {\r\n root: {\r\n display: 'flex',\r\n flexGrow: 1,\r\n },\r\n content: {\r\n flexGrow: 1,\r\n },\r\n};\r\n\r\nexport const selectedCampaignsAccordionStyles = {\r\n accordionHeader: {\r\n display: 'flex',\r\n paddingBottom: '5px',\r\n '& button': {\r\n paddingLeft: '0px',\r\n paddingRight: '0px',\r\n },\r\n },\r\n accordionHeaderText: {\r\n marginRight: 'auto',\r\n },\r\n count: {\r\n color: '#616161',\r\n },\r\n tagsList: {\r\n columnGap: '2px',\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n rowGap: '2px',\r\n },\r\n};\r\n\r\nexport const studySummaryDrawerStyles = {\r\n content: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n },\r\n drawer: {\r\n paddingLeft: '15px',\r\n paddingRight: '20px',\r\n backgroundColor: '#f5f5f5',\r\n backgroundSize: '100% 0px',\r\n borderLeftStyle: 'solid',\r\n borderLeftWidth: '1px',\r\n borderLeftColor: '#e1dfdd',\r\n },\r\n drawerHeader: {\r\n paddingBottom: '20px',\r\n },\r\n subTitle: {\r\n marginTop: '20px !important',\r\n paddingBottom: '15px',\r\n },\r\n totalBudget: {\r\n paddingBottom: '10px',\r\n color: '#616161',\r\n },\r\n};\r\n\r\n","import {\r\n ADD_KEYWORDS_BY_ENTRY,\r\n ADD_KEYWORDS_BY_SELECTION,\r\n} from './components/keyword/keyword-methods';\r\nimport {\r\n maxCampaignCount,\r\n maxExperimentNameLength,\r\n maxKeywordLength,\r\n maxSearchCid,\r\n minSearchCid,\r\n} from './constants/maximums';\r\nimport { errorMessages } from './errors';\r\nimport { parseKeywordString } from './utils';\r\n\r\nexport const validateCampaigns = ({ selectedCampaignsById }) => {\r\n if (selectedCampaignsById == null) {\r\n return false;\r\n }\r\n\r\n const campaigns = Object.values(selectedCampaignsById);\r\n\r\n if (campaigns.length === 0) {\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nexport const validateExperimentName = ({ experimentName }) => {\r\n if (experimentName.length > maxExperimentNameLength) {\r\n return false;\r\n }\r\n\r\n if (experimentName.trim().length === 0) {\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nexport const validateStartDate = ({ startDate }) => startDate != null;\r\n\r\nexport const validateCountry = ({ country }) => country != null;\r\n\r\nexport const validateMeasurementTypes = ({ useConversionLift, useSearchLift, useVisitLift }) => (\r\n !!useConversionLift || !!useSearchLift || !!useVisitLift\r\n);\r\n\r\nexport const validateEnteredKeywordsRequired = ({ typedKeywordString }) => typedKeywordString.trim().length > 0;\r\n\r\nexport const validateSelectedKeywordsCount = ({ selectedKeywords }) => selectedKeywords.length > 0;\r\n\r\nexport const validateSearchCid = ({ searchCid }) => {\r\n if (searchCid.trim().length === 0) {\r\n return true;\r\n }\r\n\r\n const value = Number(searchCid);\r\n\r\n if (isNaN(value)) {\r\n return false;\r\n }\r\n\r\n if (!Number.isInteger(value)) {\r\n return false;\r\n }\r\n\r\n if (value < minSearchCid || value > maxSearchCid) {\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nexport const validateSearchLift = (data) => {\r\n const {\r\n keywordsMethod,\r\n typedKeywordString,\r\n useSearchLift,\r\n } = data;\r\n\r\n if (!useSearchLift) {\r\n return true;\r\n }\r\n\r\n if (keywordsMethod === ADD_KEYWORDS_BY_ENTRY) {\r\n if (!validateEnteredKeywordsRequired(data)) {\r\n return false;\r\n }\r\n\r\n const parsedKeywords = parseKeywordString(typedKeywordString);\r\n const tooLongKeywords = parsedKeywords.filter(word => word.length > maxKeywordLength);\r\n\r\n if (tooLongKeywords.length > 0) {\r\n return false;\r\n }\r\n }\r\n\r\n if (keywordsMethod === ADD_KEYWORDS_BY_SELECTION) {\r\n if (!validateSelectedKeywordsCount(data)) {\r\n return false;\r\n }\r\n }\r\n\r\n if (!validateSearchCid(data)) {\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nexport const validateCampaignCount = ({ count, i18n }) => {\r\n if (count === 0) {\r\n return {\r\n isValid: false,\r\n error: i18n.getString(errorMessages.CAMPAIGN_REQUIRED),\r\n };\r\n } else if (count > maxCampaignCount) {\r\n return {\r\n isValid: false,\r\n error: i18n.getString(errorMessages.CAMPAIGNS_TOO_MANY, { max: maxCampaignCount }),\r\n };\r\n }\r\n return {\r\n isValid: true,\r\n error: null,\r\n };\r\n};\r\n\r\nexport const validateVisitConversionLift = (data) => {\r\n const {\r\n useConversionLift,\r\n useVisitLift,\r\n useVisitConversionLift,\r\n uetTags,\r\n } = data;\r\n\r\n if (!useVisitConversionLift) {\r\n return true;\r\n }\r\n\r\n if (useConversionLift && useVisitLift) {\r\n return uetTags.both.length !== 0;\r\n }\r\n\r\n if (useConversionLift) {\r\n return uetTags.conversion.length !== 0;\r\n }\r\n\r\n if (useVisitLift) {\r\n return uetTags.visit.length !== 0;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst isMeasurementTypeSelected = data => data.useSearchLift || data.useVisitConversionLift;\r\n\r\nexport const validateLiftExperiment = data => !!data.isValid && isMeasurementTypeSelected(data) && validateVisitConversionLift(data);\r\n","import PropTypes from 'prop-types';\r\nimport React, { useCallback, useEffect } from 'react';\r\nimport { withCustomValidation } from '@bingads-webui-react/validation';\r\nimport { Dropdown } from '@fluentui/react-components';\r\n\r\nconst AdaptedDropdown = ({\r\n errorMessage,\r\n onOptionSelect,\r\n updateValidation,\r\n useSearchLift,\r\n validationProps,\r\n ...restProps\r\n}) => {\r\n const onSelect = useCallback((e, data) => {\r\n const { selectedOptions } = data;\r\n updateValidation(selectedOptions.length === 0 ? [errorMessage] : [], { selectedOptions });\r\n onOptionSelect(e, data);\r\n }, [errorMessage, onOptionSelect, updateValidation]);\r\n\r\n useEffect(() => {\r\n const selected = validationProps.data.selectedOptions;\r\n updateValidation(selected.length === 0 && useSearchLift ? [errorMessage] : [], { selectedOptions: selected });\r\n }, [errorMessage, updateValidation, useSearchLift, validationProps.data.selectedOptions]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nAdaptedDropdown.propTypes = {\r\n errorMessage: PropTypes.string.isRequired,\r\n onOptionSelect: PropTypes.func.isRequired,\r\n useSearchLift: PropTypes.bool.isRequired,\r\n updateValidation: PropTypes.func.isRequired,\r\n validationProps: PropTypes.shape({\r\n data: PropTypes.shape({\r\n selectedOptions: PropTypes.arrayOf(PropTypes.oneOfType([\r\n PropTypes.number,\r\n PropTypes.string,\r\n ])).isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n};\r\n\r\nexport const RequiredDropdown = withCustomValidation(AdaptedDropdown);\r\n","import PropTypes from 'prop-types';\r\nimport React, { useCallback, useContext, useMemo, useState } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport {\r\n Card,\r\n CardHeader,\r\n Field,\r\n Label,\r\n makeStyles,\r\n Option,\r\n} from '@fluentui/react-components';\r\nimport { HelpButton } from '@bingads-webui-react/help-popup';\r\nimport { countries } from '../../countries';\r\nimport { errorMessages } from '../../errors';\r\nimport { cardHeaderStyles } from '../../page-layout';\r\nimport { sortByName } from '../../utils';\r\nimport { RequiredDropdown } from '../validated/required-dropdown';\r\n\r\nconst useStyles = makeStyles(cardHeaderStyles);\r\n\r\nexport const CountryCard = ({ country, onChangeCountry, showError }) => {\r\n const styles = useStyles();\r\n const i18n = useContext(I18nContext);\r\n const countryLabel = i18n.getString(_TL_('Country'));\r\n const learnMore = i18n.getString(_TL_('Click to learn more about'));\r\n const countryKeyValues = useMemo(() => Object.values(countries).sort(sortByName(i18n)), [i18n]);\r\n const countryAsArray = useMemo(() => (country ? [country] : []), [country]);\r\n\r\n const onOptionSelect = useCallback((e, data) => {\r\n onChangeCountry(data.selectedOptions[0]);\r\n }, [onChangeCountry]);\r\n\r\n const [fieldProps, setFieldProps] = useState(null);\r\n\r\n const onValidateCountry = useCallback(({ isValid, messages }) => {\r\n if (isValid) {\r\n setFieldProps(null);\r\n } else {\r\n setFieldProps({\r\n validationMessage: i18n.getString(errorMessages[messages[0]]),\r\n validationState: 'error',\r\n });\r\n }\r\n }, [i18n]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n {countryKeyValues.map(({ code, name }) => (\r\n \r\n {i18n.getString(name)}\r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nCountryCard.propTypes = {\r\n country: PropTypes.string,\r\n onChangeCountry: PropTypes.func.isRequired,\r\n showError: PropTypes.bool,\r\n};\r\n\r\nCountryCard.defaultProps = {\r\n country: null,\r\n showError: false,\r\n};\r\n","const MS_PER_SEC = 1000;\r\nconst SEC_PER_MIN = 60;\r\nconst MIN_PER_HR = 60;\r\nconst HR_PER_DAY = 24;\r\n\r\nexport const MS_PER_DAY = MS_PER_SEC * SEC_PER_MIN * MIN_PER_HR * HR_PER_DAY;\r\n\r\nexport const getFormattedDateString = (d) => {\r\n const isoString = d.toISOString();\r\n return isoString.split('T')[0];\r\n};\r\n\r\nexport const DATE_FORMAT = 'MM/dd/yyyy';\r\nexport const API_DATE_FORMAT = 'yyyy-MM-dd';\r\n","import PropTypes from 'prop-types';\r\nimport React, { useCallback, useContext, useMemo } from 'react';\r\nimport dateUtils from '@bingads-webui-component-legacy/humanize/date';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { withCustomValidation } from '@bingads-webui-react/validation';\r\nimport {\r\n Card,\r\n CardHeader,\r\n Field,\r\n Label,\r\n makeStyles,\r\n} from '@fluentui/react-components';\r\nimport { DatePicker } from '@fluentui/react';\r\nimport { HelpButton } from '@bingads-webui-react/help-popup';\r\nimport {\r\n DATE_FORMAT,\r\n MS_PER_DAY,\r\n} from '../../date';\r\nimport { errorMessages } from '../../errors';\r\nimport { cardHeaderStyles } from '../../page-layout';\r\nimport { getDatePickerStrings } from './date-picker-strings';\r\n\r\nconst useStyles = makeStyles(cardHeaderStyles);\r\n\r\nexport const StartDateCardInternal = ({\r\n onChangeStartDate,\r\n showError,\r\n startDate,\r\n updateValidation,\r\n}) => {\r\n const styles = useStyles();\r\n const i18n = useContext(I18nContext);\r\n const localizedStrings = getDatePickerStrings(i18n);\r\n const tomorrow = new Date(Date.now() + MS_PER_DAY);\r\n const initialDate = useMemo(() => (startDate ? new Date(startDate) : null), [startDate]);\r\n const learnMore = i18n.getString(_TL_('Click to learn more about'));\r\n const startDateLabel = i18n.getString(_TL_('Start date'));\r\n const fieldProps = startDate == null && showError\r\n ? {\r\n validationMessage: i18n.getString(errorMessages.START_DATE_REQUIRED),\r\n validationState: 'error',\r\n }\r\n : null;\r\n\r\n const onSelectStartDate = useCallback((date) => {\r\n const formattedDate = dateUtils.format(date, DATE_FORMAT);\r\n updateValidation([], { startDate: formattedDate });\r\n onChangeStartDate(formattedDate);\r\n }, [onChangeStartDate, updateValidation]);\r\n\r\n const onFormatDate = useCallback(date => (\r\n date\r\n ? i18n.formatDate(date)\r\n : ''\r\n ), [i18n]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nStartDateCardInternal.propTypes = {\r\n onChangeStartDate: PropTypes.func.isRequired,\r\n showError: PropTypes.bool,\r\n startDate: PropTypes.string,\r\n updateValidation: PropTypes.func.isRequired,\r\n};\r\n\r\nStartDateCardInternal.defaultProps = {\r\n showError: false,\r\n startDate: null,\r\n};\r\n\r\nexport const StartDateCard = withCustomValidation(StartDateCardInternal);\r\n","export const getDatePickerStrings = i18n => ({\r\n months: [\r\n i18n.getString(_TL_('January')),\r\n i18n.getString(_TL_('February')),\r\n i18n.getString(_TL_('March')),\r\n i18n.getString(_TL_('April')),\r\n i18n.getString(_TL_('May')),\r\n i18n.getString(_TL_('June')),\r\n i18n.getString(_TL_('July')),\r\n i18n.getString(_TL_('August')),\r\n i18n.getString(_TL_('September')),\r\n i18n.getString(_TL_('October')),\r\n i18n.getString(_TL_('November')),\r\n i18n.getString(_TL_('December')),\r\n ],\r\n shortMonths: [\r\n i18n.getString(_TL_('Jan')),\r\n i18n.getString(_TL_('Feb')),\r\n i18n.getString(_TL_('Mar')),\r\n i18n.getString(_TL_('Apr')),\r\n i18n.getString(_TL_('May')),\r\n i18n.getString(_TL_('Jun')),\r\n i18n.getString(_TL_('Jul')),\r\n i18n.getString(_TL_('Aug')),\r\n i18n.getString(_TL_('Sep')),\r\n i18n.getString(_TL_('Oct')),\r\n i18n.getString(_TL_('Nov')),\r\n i18n.getString(_TL_('Dec')),\r\n ],\r\n days: [\r\n i18n.getString(_TL_('Sun')),\r\n i18n.getString(_TL_('Mon')),\r\n i18n.getString(_TL_('Tue')),\r\n i18n.getString(_TL_('Wed')),\r\n i18n.getString(_TL_('Thu')),\r\n i18n.getString(_TL_('Fri')),\r\n i18n.getString(_TL_('Sat')),\r\n ],\r\n shortDays: [\r\n i18n.getString(_TL_('S')),\r\n i18n.getString(_TL_('M')),\r\n i18n.getString(_TL_('T')),\r\n i18n.getString(_TL_('W')),\r\n i18n.getString(_TL_('T')),\r\n i18n.getString(_TL_('F')),\r\n i18n.getString(_TL_('S')),\r\n ],\r\n goToToday: i18n.getString(_TL_('Go to today')),\r\n prevMonthAriaLabel: i18n.getString(_TL_('Go to previous month')),\r\n nextMonthAriaLabel: i18n.getString(_TL_('Go to next month')),\r\n prevYearAriaLabel: i18n.getString(_TL_('Go to previous year')),\r\n nextYearAriaLabel: i18n.getString(_TL_('Go to next year')),\r\n closeButtonAriaLabel: i18n.getString(_TL_('Close date picker')),\r\n isRequiredErrorMessage: i18n.getString(_TL_('Start date is required.')),\r\n invalidInputErrorMessage: i18n.getString(_TL_('Invalid date format.')),\r\n});\r\n","export const ADD_KEYWORDS_BY_ENTRY = 'entry';\r\nexport const ADD_KEYWORDS_BY_SELECTION = 'select';\r\n","import PropTypes from 'prop-types';\r\nimport React, { useCallback, useContext } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport {\r\n RadioGroup,\r\n Radio,\r\n} from '@fluentui/react-components';\r\nimport {\r\n ADD_KEYWORDS_BY_ENTRY,\r\n ADD_KEYWORDS_BY_SELECTION,\r\n} from './keyword-methods';\r\n\r\nexport const KeywordInput = ({\r\n entryControl,\r\n isDisabled,\r\n isSelectDisabled,\r\n keywordsMethod,\r\n onChangeKeywordsMethod,\r\n selectControl,\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n const selectLabel = i18n.getString(_TL_('Select keywords'));\r\n const entryLabel = i18n.getString(_TL_('Enter keywords'));\r\n\r\n const onSelectRadio = useCallback((e, data) => {\r\n onChangeKeywordsMethod(data.value);\r\n }, [onChangeKeywordsMethod]);\r\n\r\n return (\r\n \r\n \r\n {keywordsMethod === ADD_KEYWORDS_BY_SELECTION && selectControl}\r\n \r\n {keywordsMethod === ADD_KEYWORDS_BY_ENTRY && entryControl}\r\n \r\n );\r\n};\r\n\r\nKeywordInput.propTypes = {\r\n entryControl: PropTypes.node.isRequired,\r\n isDisabled: PropTypes.bool.isRequired,\r\n isSelectDisabled: PropTypes.bool.isRequired,\r\n keywordsMethod: PropTypes.oneOf([\r\n ADD_KEYWORDS_BY_ENTRY,\r\n ADD_KEYWORDS_BY_SELECTION,\r\n ]),\r\n onChangeKeywordsMethod: PropTypes.func.isRequired,\r\n selectControl: PropTypes.node.isRequired,\r\n};\r\n\r\nKeywordInput.defaultProps = {\r\n keywordsMethod: null,\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport React, { useCallback } from 'react';\r\nimport {\r\n Button,\r\n} from '@fluentui/react-components';\r\nimport {\r\n Dismiss12Regular,\r\n} from '@fluentui/react-icons';\r\n\r\nexport const KeywordTag = ({\r\n id,\r\n listRemoveId,\r\n name,\r\n onRemove,\r\n}) => {\r\n const removeTagId = `${listRemoveId}-${id}`;\r\n const onRemoveTag = useCallback(() => {\r\n onRemove(id);\r\n }, [id, onRemove]);\r\n\r\n return (\r\n }\r\n iconPosition=\"after\"\r\n id={removeTagId}\r\n onClick={onRemoveTag}\r\n shape=\"circular\"\r\n size=\"small\"\r\n >\r\n {name}\r\n \r\n );\r\n};\r\n\r\nKeywordTag.propTypes = {\r\n id: PropTypes.number.isRequired,\r\n listRemoveId: PropTypes.string.isRequired,\r\n name: PropTypes.string.isRequired,\r\n onRemove: PropTypes.func.isRequired,\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport React, { useCallback, useContext } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport {\r\n Button,\r\n Text,\r\n useId,\r\n} from '@fluentui/react-components';\r\nimport {\r\n DeleteRegular,\r\n} from '@fluentui/react-icons';\r\nimport { useTagsListStyles } from '../../styles';\r\nimport { KeywordTag } from './keyword-tag';\r\n\r\nexport const KeywordDisplay = ({\r\n fetchedKeywords,\r\n onRemoveAllKeywords,\r\n onRemoveKeyword,\r\n selectedKeywords,\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n const styles = useTagsListStyles();\r\n const tagsListId = useId('selectedKeywordsTagsList');\r\n const tagsListRemoveId = `${tagsListId}-remove`;\r\n\r\n const onRemoveTag = useCallback((removedId) => {\r\n onRemoveKeyword(removedId);\r\n }, [onRemoveKeyword]);\r\n\r\n return (\r\n
\r\n
\r\n \r\n {i18n.getString(_TL_('Selected keywords'))}\r\n \r\n }\r\n iconPosition=\"before\"\r\n onClick={onRemoveAllKeywords}\r\n size=\"small\"\r\n >\r\n {i18n.getString(_TL_('Remove all'))}\r\n \r\n
\r\n \r\n {selectedKeywords.map((keywordId) => {\r\n const { id, name } = fetchedKeywords[keywordId];\r\n return (\r\n \r\n );\r\n })}\r\n
\r\n \r\n );\r\n};\r\n\r\nKeywordDisplay.propTypes = {\r\n fetchedKeywords: PropTypes.objectOf(PropTypes.shape({\r\n id: PropTypes.number.isRequired,\r\n name: PropTypes.string.isRequired,\r\n impressions: PropTypes.number.isRequired,\r\n })),\r\n onRemoveAllKeywords: PropTypes.func.isRequired,\r\n onRemoveKeyword: PropTypes.func.isRequired,\r\n selectedKeywords: PropTypes.arrayOf(PropTypes.number).isRequired,\r\n};\r\n\r\nKeywordDisplay.defaultProps = {\r\n fetchedKeywords: null,\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport React, { useCallback, useContext, useMemo, useState } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport {\r\n Field,\r\n Label,\r\n Option,\r\n useId,\r\n} from '@fluentui/react-components';\r\nimport { maxKeywordCount } from '../../constants/maximums';\r\nimport { errorMessages } from '../../errors';\r\nimport { useMeasurementTypeSelectorStyles } from '../../styles';\r\nimport { RequiredDropdown } from '../validated/required-dropdown';\r\nimport { KeywordDisplay } from './keyword-display';\r\n\r\nexport const KeywordSelector = ({\r\n fetchedKeywords,\r\n isDisabled,\r\n onRemove,\r\n onRemoveAll,\r\n onSelect,\r\n orderedFetchedKeywords,\r\n selected,\r\n showError,\r\n useSearchLift,\r\n}) => {\r\n const dropdownId = useId('useKeywordSelector');\r\n const styles = useMeasurementTypeSelectorStyles();\r\n const i18n = useContext(I18nContext);\r\n const placeholder = i18n.getString(_TL_('Select keywords'));\r\n const impressionsUnit = i18n.getString(_TL_('impressions'));\r\n\r\n const buttonText = useMemo(() => {\r\n if (selected.length === 0) {\r\n return placeholder;\r\n }\r\n return selected.map(keywordId => fetchedKeywords[keywordId].name).join(i18n.getString(_TL_(', ')));\r\n }, [fetchedKeywords, i18n, placeholder, selected]);\r\n\r\n const onSelectDropdownOption = useCallback((e, data) => {\r\n onSelect(data.selectedOptions);\r\n }, [onSelect]);\r\n\r\n const [fieldProps, setFieldProps] = useState(null);\r\n\r\n const onValidateKeywords = useCallback(({ isValid, messages }) => {\r\n if (isValid) {\r\n setFieldProps(null);\r\n } else {\r\n setFieldProps({\r\n validationMessage: i18n.getString(errorMessages[messages[0]]),\r\n validationState: 'error',\r\n });\r\n }\r\n }, [i18n]);\r\n\r\n return (\r\n
\r\n \r\n {i18n.getString(_TL_('Keywords'))}\r\n \r\n {selected.length > 0 && (\r\n \r\n )}\r\n \r\n {buttonText}}\r\n className={styles.dropdown}\r\n disabled={isDisabled}\r\n errorMessage=\"SELECTED_KEYWORDS_REQUIRED\"\r\n multiselect\r\n onOptionSelect={onSelectDropdownOption}\r\n useSearchLift={useSearchLift}\r\n validationProps={{\r\n data: { selectedOptions: selected },\r\n field: 'selectedOptions',\r\n onValidate: onValidateKeywords,\r\n }}\r\n >\r\n {orderedFetchedKeywords.map(({ id, impressions, name }) => {\r\n const isMaxedOut = selected.length === maxKeywordCount;\r\n const isOptionDisabled = isMaxedOut && !selected.includes(id);\r\n const optionLabel = `${name} (${impressions} ${impressionsUnit})`;\r\n\r\n return (\r\n \r\n {optionLabel}\r\n \r\n );\r\n })}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nKeywordSelector.propTypes = {\r\n fetchedKeywords: PropTypes.objectOf(PropTypes.shape({\r\n id: PropTypes.number.isRequired,\r\n name: PropTypes.string.isRequired,\r\n impressions: PropTypes.number.isRequired,\r\n })),\r\n isDisabled: PropTypes.bool.isRequired,\r\n onRemove: PropTypes.func.isRequired,\r\n onRemoveAll: PropTypes.func.isRequired,\r\n onSelect: PropTypes.func.isRequired,\r\n orderedFetchedKeywords: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.number.isRequired,\r\n name: PropTypes.string.isRequired,\r\n impressions: PropTypes.number.isRequired,\r\n })),\r\n selected: PropTypes.arrayOf(PropTypes.number).isRequired,\r\n showError: PropTypes.bool,\r\n useSearchLift: PropTypes.bool.isRequired,\r\n};\r\n\r\nKeywordSelector.defaultProps = {\r\n fetchedKeywords: null,\r\n orderedFetchedKeywords: null,\r\n showError: false,\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport React, { useCallback, useContext, useState } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { withValidation } from '@bingads-webui-react/validation';\r\nimport {\r\n Field,\r\n Label,\r\n Textarea,\r\n useId,\r\n} from '@fluentui/react-components';\r\nimport { useKeywordInputStyles } from '../../styles';\r\nimport { getCustomValidator } from './keyword-textarea-validation';\r\nimport { errorMessages } from '../../errors';\r\n\r\nconst ValidatedTextarea = withValidation(Textarea);\r\n\r\nexport const KeywordTextarea = ({\r\n isDisabled,\r\n keywordString,\r\n onChange,\r\n showError,\r\n}) => {\r\n const textareaId = useId('keywordTextarea');\r\n\r\n const i18n = useContext(I18nContext);\r\n const placeholder = i18n.getString(_TL_('Enter keywords separated by commas'));\r\n\r\n const [fieldProps, setFieldProps] = useState(null);\r\n\r\n const onChangeTextarea = useCallback((e, data) => {\r\n if (data.length) {\r\n const { value } = data[0];\r\n onChange(value);\r\n }\r\n }, [onChange]);\r\n\r\n const styles = useKeywordInputStyles();\r\n\r\n const validator = getCustomValidator();\r\n\r\n const onValidateKeywords = useCallback(({ isValid, messages }) => {\r\n if (isValid) {\r\n setFieldProps(null);\r\n } else {\r\n const message = messages[0];\r\n\r\n if (typeof message === 'object') {\r\n setFieldProps({\r\n validationMessage: i18n.getString(errorMessages[message.key], message.data),\r\n validateState: 'error',\r\n });\r\n } else {\r\n setFieldProps({\r\n validationMessage: i18n.getString(errorMessages[message]),\r\n validationState: 'error',\r\n });\r\n }\r\n }\r\n }, [i18n]);\r\n\r\n return (\r\n
\r\n \r\n {i18n.getString(_TL_('Enter keywords separated by commas'))}\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nKeywordTextarea.propTypes = {\r\n isDisabled: PropTypes.bool.isRequired,\r\n keywordString: PropTypes.string.isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n showError: PropTypes.bool,\r\n};\r\n\r\nKeywordTextarea.defaultProps = {\r\n showError: false,\r\n};\r\n","import { maxKeywordCount, maxKeywordLength } from '../../constants/maximums';\r\nimport { parseKeywordString } from '../../utils';\r\n\r\nexport const getCustomValidator = () => (value) => {\r\n const parsedKeywords = parseKeywordString(value);\r\n\r\n if (!parsedKeywords[0]) {\r\n // We can't use `parsedKeywords.length === 0` because when `value` is just whitespace, `parsedKeywords` will be an\r\n // array with an empty string as its only member.\r\n return ['TYPED_KEYWORDS_REQUIRED'];\r\n }\r\n\r\n const tooLongKeywords = parsedKeywords.filter(word => word.length > maxKeywordLength);\r\n\r\n if (tooLongKeywords.length > 0) {\r\n return [{\r\n key: 'KEYWORDS_TOO_LONG',\r\n data: {\r\n count: tooLongKeywords.length,\r\n max: maxKeywordLength,\r\n unit: tooLongKeywords.length === 1 ? 'keyword' : 'keywords',\r\n verb: tooLongKeywords.length === 1 ? 'exceeds' : 'exceed',\r\n },\r\n }];\r\n }\r\n\r\n if (parsedKeywords.length > maxKeywordCount) {\r\n return [{\r\n key: 'KEYWORDS_TOO_MANY',\r\n data: {\r\n count: parsedKeywords.length,\r\n max: maxKeywordCount,\r\n },\r\n }];\r\n }\r\n\r\n return [];\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport React, { useContext } from 'react';\r\nimport { HelpButton } from '@bingads-webui-react/help-popup';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport {\r\n Card,\r\n CardHeader,\r\n makeStyles,\r\n Subtitle2,\r\n Switch,\r\n} from '@fluentui/react-components';\r\n\r\nconst useStyles = makeStyles({\r\n cardHeader: {\r\n display: 'flex',\r\n '& input': {\r\n height: '100%',\r\n width: '100%',\r\n }\r\n },\r\n});\r\n\r\nexport const MeasurementTypeCard = ({\r\n children,\r\n description,\r\n helpId,\r\n isAllowed,\r\n isEnabled,\r\n onToggle,\r\n title,\r\n}) => {\r\n const styles = useStyles();\r\n const i18n = useContext(I18nContext);\r\n const learnMore = i18n.getString(_TL_('Click to learn more about'));\r\n\r\n const className = title.toLowerCase().replace(/ /g, '-');\r\n\r\n return (\r\n \r\n \r\n {title}}\r\n onChange={onToggle}\r\n />\r\n \r\n \r\n }\r\n />\r\n {description}\r\n {children}\r\n \r\n );\r\n};\r\n\r\nMeasurementTypeCard.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n description: PropTypes.oneOfType([\r\n PropTypes.node,\r\n PropTypes.string,\r\n ]),\r\n helpId: PropTypes.string.isRequired,\r\n isAllowed: PropTypes.bool.isRequired,\r\n isEnabled: PropTypes.bool,\r\n onToggle: PropTypes.func.isRequired,\r\n title: PropTypes.string.isRequired,\r\n};\r\n\r\nMeasurementTypeCard.defaultProps = {\r\n description: null,\r\n isEnabled: true,\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport React, { useCallback, useContext, useState } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { withCustomValidation } from '@bingads-webui-react/validation';\r\nimport {\r\n Field,\r\n Input,\r\n Label,\r\n} from '@fluentui/react-components';\r\nimport { maxSearchCid, minSearchCid } from '../../constants/maximums';\r\nimport { errorMessages } from '../../errors';\r\nimport { useSearchCustomerIdStyles } from '../../styles';\r\n\r\nconst SearchCustomerIdInternal = ({\r\n customerId,\r\n isDisabled,\r\n onChange,\r\n showError,\r\n updateValidation,\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n const label = i18n.getString(_TL_('Add customer ID (optional)'));\r\n const placeholder = i18n.getString(_TL_('Enter the CID associated with your Search campaigns'));\r\n\r\n const styles = useSearchCustomerIdStyles();\r\n\r\n const [fieldProps, setFieldProps] = useState(null);\r\n\r\n const getIsValid = useCallback((data) => {\r\n if (data === '') {\r\n return { isValid: true };\r\n }\r\n if (!data) {\r\n return { errorMessage: errorMessages.SEARCH_CID_TYPE, isValid: false };\r\n }\r\n const formattedData = Number(data);\r\n if (formattedData < minSearchCid || formattedData > maxSearchCid) {\r\n return { errorMessage: errorMessages.SEARCH_CID_RANGE, isValid: false };\r\n }\r\n return { isValid: true };\r\n }, []);\r\n\r\n const onChangeInput = useCallback((e, data) => {\r\n const { errorMessage, isValid } = getIsValid(data.value);\r\n if (isValid) {\r\n setFieldProps(null);\r\n updateValidation([], { searchCid: data.value });\r\n } else {\r\n setFieldProps({\r\n validationMessage: i18n.getString(errorMessage),\r\n validationState: 'error',\r\n });\r\n updateValidation([errorMessage], { searchCid: data.value });\r\n }\r\n onChange(data.value);\r\n }, [getIsValid, i18n, onChange, updateValidation]);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nSearchCustomerIdInternal.propTypes = {\r\n customerId: PropTypes.string.isRequired,\r\n isDisabled: PropTypes.bool.isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n showError: PropTypes.bool,\r\n updateValidation: PropTypes.func.isRequired,\r\n};\r\n\r\nSearchCustomerIdInternal.defaultProps = {\r\n showError: false,\r\n};\r\n\r\nexport const SearchCustomerId = withCustomValidation(SearchCustomerIdInternal);\r\n","import PropTypes from 'prop-types';\r\nimport React, { useMemo } from 'react';\r\nimport {\r\n makeStyles,\r\n Skeleton,\r\n SkeletonItem,\r\n useId,\r\n} from '@fluentui/react-components';\r\n\r\nconst useStyles = makeStyles({\r\n row: {\r\n alignItems: 'center',\r\n columnGap: '10px',\r\n display: 'grid',\r\n gridTemplateColumns: 'min-content 80%',\r\n paddingBottom: '10px',\r\n position: 'relative',\r\n rowGap: '10px',\r\n },\r\n});\r\n\r\nexport const CardContentSkeleton = ({ rowCount }) => {\r\n const skeletonId = useId('cardContentSkeleton');\r\n const rowKeys = useMemo(() => [...Array(rowCount).keys()], [rowCount]);\r\n const styles = useStyles();\r\n\r\n return (\r\n
\r\n \r\n {rowKeys.map(rowKey => (\r\n
\r\n \r\n \r\n
\r\n ))}\r\n
\r\n
\r\n );\r\n};\r\n\r\nCardContentSkeleton.propTypes = {\r\n rowCount: PropTypes.number,\r\n};\r\n\r\nCardContentSkeleton.defaultProps = {\r\n rowCount: 3,\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { CardContentSkeleton } from '../skeleton/card-content-skeleton';\r\nimport { MeasurementTypeCard } from '../measurement-type-card';\r\n\r\nconst noop = () => {};\r\n\r\nexport const SearchLiftLoading = ({ title }) => (\r\n \r\n \r\n \r\n);\r\n\r\nSearchLiftLoading.propTypes = {\r\n title: PropTypes.string.isRequired,\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport React, { useCallback, useContext, useMemo } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { ValidationGroup, withCustomValidation } from '@bingads-webui-react/validation';\r\nimport { useWizardService } from '@bingads-webui-react/wizard';\r\nimport { KeywordInput } from '../keyword/keyword-input';\r\nimport {\r\n ADD_KEYWORDS_BY_ENTRY,\r\n ADD_KEYWORDS_BY_SELECTION,\r\n} from '../keyword/keyword-methods';\r\nimport { KeywordSelector } from '../keyword/keyword-selector';\r\nimport { KeywordTextarea } from '../keyword/keyword-textarea';\r\nimport { MeasurementTypeCard } from '../measurement-type-card';\r\nimport { SearchCustomerId } from './search-customer-id';\r\nimport { SearchLiftLoading } from './search-lift-loading';\r\n\r\nconst SearchLiftInternal = ({\r\n customerId,\r\n isAllowed,\r\n isEnabled,\r\n keywordsMethod,\r\n onChangeCustomerId,\r\n onChangeKeywords,\r\n onChangeKeywordsMethod,\r\n onRemoveAllKeywords,\r\n onRemoveKeyword,\r\n onSelectKeywords,\r\n onToggle,\r\n selectedKeywords,\r\n showError,\r\n typedKeywordString,\r\n updateValidation,\r\n}) => {\r\n const { state: wizardState } = useWizardService();\r\n const { wizardData } = wizardState.context;\r\n\r\n const i18n = useContext(I18nContext);\r\n const title = i18n.getString(_TL_('Search lift'));\r\n const description = i18n.getString(_TL_('Measure your brand search rate (search queries that contain your brand) by adding keywords associated with both your campaign and brand name. You can also enter your customer ID to help measure results. Note: If you use different customer IDs for your Audience and Search campaigns, please ensure that you enter the customer ID associated with your Search campaigns.'));\r\n const isLiftTypeDisabled = !isAllowed || !isEnabled;\r\n\r\n const hasNoKeywords = useMemo(() => {\r\n const keywordKeys = wizardData.fetchedKeywords\r\n ? Object.keys(wizardData.fetchedKeywords)\r\n : [];\r\n return keywordKeys.length === 0;\r\n }, [wizardData.fetchedKeywords]);\r\n\r\n const onValidateSearchLift = useCallback(({\r\n data,\r\n isDirty,\r\n isValid,\r\n messages,\r\n }) => {\r\n if (isValid) {\r\n updateValidation([], data);\r\n }\r\n\r\n if (isDirty) {\r\n updateValidation(messages, data);\r\n }\r\n }, [updateValidation]);\r\n\r\n const validationProps = {\r\n onValidate: onValidateSearchLift,\r\n };\r\n\r\n if (wizardData.isFetchingKeywords !== false) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return wizardData.fetchedKeywords && (\r\n \r\n \r\n \r\n }\r\n isDisabled={isLiftTypeDisabled}\r\n isSelectDisabled={hasNoKeywords}\r\n keywordsMethod={keywordsMethod}\r\n onChangeKeywordsMethod={onChangeKeywordsMethod}\r\n selectControl={\r\n \r\n }\r\n />\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nSearchLiftInternal.propTypes = {\r\n customerId: PropTypes.string.isRequired,\r\n isAllowed: PropTypes.bool.isRequired,\r\n isEnabled: PropTypes.bool,\r\n keywordsMethod: PropTypes.oneOf([\r\n ADD_KEYWORDS_BY_ENTRY,\r\n ADD_KEYWORDS_BY_SELECTION,\r\n ]),\r\n onChangeCustomerId: PropTypes.func.isRequired,\r\n onChangeKeywords: PropTypes.func.isRequired,\r\n onChangeKeywordsMethod: PropTypes.func.isRequired,\r\n onRemoveAllKeywords: PropTypes.func.isRequired,\r\n onRemoveKeyword: PropTypes.func.isRequired,\r\n onSelectKeywords: PropTypes.func.isRequired,\r\n onToggle: PropTypes.func.isRequired,\r\n selectedKeywords: PropTypes.arrayOf(PropTypes.number).isRequired,\r\n showError: PropTypes.bool,\r\n typedKeywordString: PropTypes.string.isRequired,\r\n updateValidation: PropTypes.func.isRequired,\r\n};\r\n\r\nSearchLiftInternal.defaultProps = {\r\n isEnabled: true,\r\n keywordsMethod: null,\r\n showError: false,\r\n};\r\n\r\nexport const SearchLift = withCustomValidation(SearchLiftInternal);\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { makeStyles } from '@fluentui/react-components';\r\nimport { MessageBar, MessageBarBody } from '@fluentui/react-message-bar';\r\n\r\nconst useStyles = makeStyles({\r\n message: {\r\n fontSize: '12px',\r\n },\r\n root: {\r\n paddingBottom: '13px',\r\n paddingTop: '10px',\r\n },\r\n});\r\n\r\nexport const ApiSaveErrorNotification = ({ message }) => {\r\n const styles = useStyles();\r\n\r\n return (\r\n \r\n \r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nApiSaveErrorNotification.propTypes = {\r\n message: PropTypes.string.isRequired,\r\n};\r\n","export const getActiveGoalsCount = goals => goals.filter(({ status }) => status === 'Active').length;\r\n\r\nexport const getGoalsOptionText = ({\r\n goal,\r\n none,\r\n plural,\r\n singular,\r\n}) => {\r\n const { goals, name } = goal;\r\n const count = getActiveGoalsCount(goals);\r\n\r\n if (count === 0) {\r\n return `${name} (${none})`;\r\n }\r\n\r\n if (count === 1) {\r\n return `${name} (${count} ${singular})`;\r\n }\r\n\r\n return `${name} (${count} ${plural})`;\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport React, { useCallback, useContext, useMemo, useState } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport {\r\n Field,\r\n Label,\r\n Option,\r\n useId,\r\n Tooltip,\r\n} from '@fluentui/react-components';\r\nimport { maxTagCount } from '../../constants/maximums';\r\nimport { errorMessages } from '../../errors';\r\nimport { useMeasurementTypeSelectorStyles } from '../../styles';\r\nimport { getGoalsOptionText } from './uet-tag-selector-utils';\r\nimport { RequiredDropdown } from '../validated/required-dropdown';\r\n\r\nexport const UetTagSelector = ({\r\n fetchedUetTags,\r\n isDisabled,\r\n onSelect,\r\n orderedFetchedUetTags,\r\n selected,\r\n showError,\r\n areActiveConversionGoalsMissing,\r\n}) => {\r\n const dropdownId = useId('uetTagSelector');\r\n\r\n const i18n = useContext(I18nContext);\r\n const placeholder = i18n.getString(_TL_('Select UET tag'));\r\n const delimiter = i18n.getString(_TL_(', '));\r\n const buttonText = useMemo(() => {\r\n if (selected.length === 0) {\r\n return placeholder;\r\n }\r\n return selected.map(tagId => fetchedUetTags[tagId].name).join(delimiter);\r\n }, [delimiter, fetchedUetTags, placeholder, selected]);\r\n\r\n const hoverMessage = areActiveConversionGoalsMissing ? i18n.getString(_TL_('The selected conversion lift does not have any active conversion goals')) : null;\r\n const goalsUnit = i18n.getString(_TL_('active goal'));\r\n const goalsUnitPlural = i18n.getString(_TL_('active goals'));\r\n const noGoals = i18n.getString(_TL_('no active goals'));\r\n\r\n const onOptionSelect = useCallback((e, data) => {\r\n onSelect(data.selectedOptions);\r\n }, [onSelect]);\r\n\r\n const styles = useMeasurementTypeSelectorStyles();\r\n\r\n const [fieldProps, setFieldProps] = useState(null);\r\n\r\n const onValidateUetTags = useCallback(({ isValid, messages }) => {\r\n if (isValid) {\r\n setFieldProps(null);\r\n } else {\r\n setFieldProps({\r\n validationMessage: i18n.getString(errorMessages[messages[0]]),\r\n validationState: 'error',\r\n });\r\n }\r\n }, [i18n]);\r\n\r\n return (\r\n
\r\n \r\n {i18n.getString(_TL_('UET tags'))}\r\n \r\n \r\n \r\n {buttonText}}\r\n className={styles.dropdown}\r\n disabled={isDisabled || areActiveConversionGoalsMissing}\r\n errorMessage=\"UET_REQUIRED\"\r\n multiselect\r\n onOptionSelect={onOptionSelect}\r\n validationProps={{\r\n data: { selectedOptions: selected },\r\n field: 'selectedOptions',\r\n onValidate: onValidateUetTags,\r\n }}\r\n >\r\n {orderedFetchedUetTags.map((goal) => {\r\n const { id } = goal;\r\n const isMaxedOut = selected.length === maxTagCount;\r\n const isOptionDisabled = isMaxedOut && !selected.includes(id);\r\n\r\n return (\r\n \r\n {getGoalsOptionText({\r\n goal,\r\n none: noGoals,\r\n plural: goalsUnitPlural,\r\n singular: goalsUnit,\r\n })}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nUetTagSelector.propTypes = {\r\n fetchedUetTags: PropTypes.objectOf(PropTypes.shape({\r\n id: PropTypes.number.isRequired,\r\n name: PropTypes.string.isRequired,\r\n goalsCount: PropTypes.number.isRequired,\r\n })).isRequired,\r\n isDisabled: PropTypes.bool.isRequired,\r\n onSelect: PropTypes.func.isRequired,\r\n orderedFetchedUetTags: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.number.isRequired,\r\n name: PropTypes.string.isRequired,\r\n goalsCount: PropTypes.number.isRequired,\r\n })).isRequired,\r\n selected: PropTypes.arrayOf(PropTypes.number).isRequired,\r\n showError: PropTypes.bool,\r\n areActiveConversionGoalsMissing: PropTypes.bool,\r\n};\r\n\r\nUetTagSelector.defaultProps = {\r\n showError: false,\r\n areActiveConversionGoalsMissing: false,\r\n};\r\n","export const TRACK_BOTH_VISIT_AND_CONVERSION = 'both';\r\nexport const TRACK_CONVERSION_ONLY = 'conversion';\r\nexport const TRACK_VISIT_ONLY = 'visit';\r\n","import PropTypes from 'prop-types';\r\nimport React, { useCallback, useContext } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport {\r\n RadioGroup,\r\n Radio,\r\n} from '@fluentui/react-components';\r\nimport {\r\n TRACK_BOTH_VISIT_AND_CONVERSION,\r\n TRACK_CONVERSION_ONLY,\r\n TRACK_VISIT_ONLY,\r\n} from './visit-conversion-methods';\r\n\r\nexport const VisitConversionInput = ({\r\n combinedControl,\r\n conversionControl,\r\n isDisabled,\r\n onChangeMethod,\r\n useConversionLift,\r\n useVisitLift,\r\n visitControl,\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n const combinedLabel = i18n.getString(_TL_('Measure visit and conversion lift'));\r\n const conversionLabel = i18n.getString(_TL_('Measure conversion lift only'));\r\n const visitLabel = i18n.getString(_TL_('Measure visit lift only'));\r\n\r\n let trackingMethod = null;\r\n if (useConversionLift && useVisitLift) {\r\n trackingMethod = TRACK_BOTH_VISIT_AND_CONVERSION;\r\n } else if (useConversionLift) {\r\n trackingMethod = TRACK_CONVERSION_ONLY;\r\n } else if (useVisitLift) {\r\n trackingMethod = TRACK_VISIT_ONLY;\r\n }\r\n\r\n const onSelectRadio = useCallback((e, { value }) => {\r\n if (value === TRACK_BOTH_VISIT_AND_CONVERSION) {\r\n onChangeMethod({\r\n useConversionLift: true,\r\n useVisitLift: true,\r\n });\r\n } else if (value === TRACK_CONVERSION_ONLY) {\r\n onChangeMethod({\r\n useConversionLift: true,\r\n useVisitLift: false,\r\n });\r\n } else {\r\n onChangeMethod({\r\n useConversionLift: false,\r\n useVisitLift: true,\r\n });\r\n }\r\n }, [onChangeMethod]);\r\n\r\n return (\r\n \r\n \r\n {trackingMethod === TRACK_BOTH_VISIT_AND_CONVERSION && combinedControl}\r\n \r\n {trackingMethod === TRACK_CONVERSION_ONLY && conversionControl}\r\n \r\n {trackingMethod === TRACK_VISIT_ONLY && visitControl}\r\n \r\n );\r\n};\r\n\r\nVisitConversionInput.propTypes = {\r\n combinedControl: PropTypes.node.isRequired,\r\n conversionControl: PropTypes.node.isRequired,\r\n isDisabled: PropTypes.bool.isRequired,\r\n onChangeMethod: PropTypes.func.isRequired,\r\n useConversionLift: PropTypes.bool,\r\n useVisitLift: PropTypes.bool,\r\n visitControl: PropTypes.node.isRequired,\r\n};\r\n\r\nVisitConversionInput.defaultProps = {\r\n useConversionLift: false,\r\n useVisitLift: false,\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { CardContentSkeleton } from '../skeleton/card-content-skeleton';\r\nimport { MeasurementTypeCard } from '../measurement-type-card';\r\n\r\nconst noop = () => {};\r\n\r\nexport const VisitConversionLiftLoading = ({ title }) => (\r\n \r\n \r\n \r\n);\r\n\r\nVisitConversionLiftLoading.propTypes = {\r\n title: PropTypes.string.isRequired,\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport React, { useContext } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { MeasurementTypeCard } from '../measurement-type-card';\r\n\r\nconst noop = () => {};\r\n\r\nexport const VisitConversionLiftNotAllowed = ({ title }) => {\r\n const i18n = useContext(I18nContext);\r\n const explanation = i18n.getString(_TL_(\"You can't measure visits or conversions because you haven't yet set up UET tags and conversion tracking.\"));\r\n return (\r\n \r\n );\r\n};\r\n\r\nVisitConversionLiftNotAllowed.propTypes = {\r\n title: PropTypes.string.isRequired,\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport React, { useCallback, useContext, useMemo, useState } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { withCustomValidation } from '@bingads-webui-react/validation';\r\nimport { useWizardService } from '@bingads-webui-react/wizard';\r\nimport { MessageBar, MessageBarBody } from '@fluentui/react-message-bar';\r\nimport { Field } from '@fluentui/react-components';\r\nimport { errorMessages } from '../../errors';\r\nimport { useRadioChildControlStyles } from '../../styles';\r\nimport { UetTagSelector } from '../uet-tag/uet-tag-selector';\r\nimport { getActiveGoalsCount } from '../uet-tag/uet-tag-selector-utils';\r\nimport { MeasurementTypeCard } from '../measurement-type-card';\r\nimport { VisitConversionInput } from './visit-conversion-input';\r\nimport { VisitConversionLiftLoading } from './visit-conversion-lift-loading';\r\nimport { VisitConversionLiftNotAllowed } from './visit-conversion-lift-not-allowed';\r\n\r\nconst VisitConversionLiftInternal = ({\r\n isEnabled,\r\n onChangeMethod,\r\n onSelectUetTags,\r\n onToggle,\r\n selectedUetTags,\r\n showError,\r\n updateValidation,\r\n useConversionLift,\r\n useVisitLift,\r\n}) => {\r\n const { state: wizardState } = useWizardService();\r\n const { wizardData } = wizardState.context;\r\n const styles = useRadioChildControlStyles();\r\n\r\n const i18n = useContext(I18nContext);\r\n const title = i18n.getString(_TL_('Visit and conversion lift'));\r\n const description = i18n.getString(_TL_('Measure your website visitation rate and/or conversion rate. For both measurement types, you\\'ll need to select the appropriate UET tag for your website.'));\r\n\r\n const isAllowed = useMemo(() => {\r\n const isFinishedFetching = !!(wizardData.fetchedUetTags && wizardData.orderedFetchedUetTags);\r\n if (isFinishedFetching) {\r\n return Object.keys(wizardData.fetchedUetTags).length && wizardData.orderedFetchedUetTags.length;\r\n }\r\n return isFinishedFetching;\r\n }, [wizardData.fetchedUetTags, wizardData.orderedFetchedUetTags]);\r\n const isLiftTypeDisabled = !isAllowed || !isEnabled;\r\n\r\n const [hasLiftTypeRequiredError, setHasLiftTypeRequiredError] = useState(false);\r\n\r\n const onToggleUseVisitConversionLift = useCallback(() => {\r\n const newValue = !isEnabled;\r\n if (newValue && !useConversionLift && !useVisitLift) {\r\n updateValidation(['VISIT_CONVERSION_LIFT_REQUIRED'], { isEnabled: newValue, useConversionLift, useVisitLift });\r\n setHasLiftTypeRequiredError(true);\r\n } else {\r\n setHasLiftTypeRequiredError(false);\r\n }\r\n onToggle();\r\n }, [isEnabled, onToggle, updateValidation, useConversionLift, useVisitLift]);\r\n\r\n const onChangeLiftTypeMethod = useCallback((values) => {\r\n updateValidation([], {\r\n isEnabled,\r\n useConversionLift: values.useConversionLift,\r\n useVisitLift: values.useVisitLift,\r\n });\r\n setHasLiftTypeRequiredError(false);\r\n onChangeMethod(values);\r\n }, [isEnabled, onChangeMethod, updateValidation]);\r\n\r\n // We need to show only those UET tags with active conversion goals for the \"Measure conversion lift only\" option.\r\n const orderedFetchedUetTagsWithActiveGoals = useMemo(() => (\r\n !wizardData.orderedFetchedUetTags\r\n ? null\r\n : wizardData.orderedFetchedUetTags.filter(tag => getActiveGoalsCount(tag.goals) > 0)\r\n ), [wizardData.orderedFetchedUetTags]);\r\n\r\n // We should only show the conversion warning if the user has opted for both visit and conversion lift and selected\r\n // UET tags without active conversion goals.\r\n const [bothVisitAndConversionFieldProps, setBothVisitAndConversionFieldProps] = useState(null);\r\n\r\n const areActiveConversionGoalsMissing = useMemo(() => (\r\n orderedFetchedUetTagsWithActiveGoals && orderedFetchedUetTagsWithActiveGoals.length === 0\r\n ), [orderedFetchedUetTagsWithActiveGoals]);\r\n\r\n const onSelectWithBothVisitAndConversion = useCallback((selectedTags) => {\r\n if (selectedTags.length > 0) {\r\n const withActiveGoalsCount = selectedTags.reduce((sum, tagId) => {\r\n const tagObject = wizardData.fetchedUetTags[tagId];\r\n const activeGoalsCount = getActiveGoalsCount(tagObject.goals);\r\n return sum + activeGoalsCount;\r\n }, 0);\r\n if (withActiveGoalsCount === 0) {\r\n updateValidation(['CONVERSION_GOAL_REQUIRED'], { selectedTags });\r\n setBothVisitAndConversionFieldProps({\r\n validationMessage: i18n.getString(errorMessages.CONVERSION_GOAL_REQUIRED),\r\n validationState: 'error',\r\n });\r\n } else {\r\n updateValidation([], { selectedTags });\r\n setBothVisitAndConversionFieldProps(null);\r\n }\r\n } else {\r\n updateValidation([], { selectedTags });\r\n setBothVisitAndConversionFieldProps(null);\r\n }\r\n onSelectUetTags(selectedTags);\r\n }, [i18n, onSelectUetTags, updateValidation, wizardData.fetchedUetTags]);\r\n\r\n if (!wizardData.isUetTagsFetched) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n if (!isAllowed) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n {showError && hasLiftTypeRequiredError && (\r\n \r\n {i18n.getString(errorMessages.VISIT_CONVERSION_LIFT_REQUIRED)}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n }\r\n conversionControl={\r\n
\r\n \r\n
\r\n }\r\n isDisabled={isLiftTypeDisabled}\r\n onChangeMethod={onChangeLiftTypeMethod}\r\n useConversionLift={useConversionLift}\r\n useVisitLift={useVisitLift}\r\n visitControl={\r\n
\r\n \r\n
\r\n }\r\n />\r\n \r\n );\r\n};\r\n\r\nVisitConversionLiftInternal.propTypes = {\r\n isEnabled: PropTypes.bool,\r\n onChangeMethod: PropTypes.func.isRequired,\r\n onSelectUetTags: PropTypes.func.isRequired,\r\n onToggle: PropTypes.func.isRequired,\r\n selectedUetTags: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.number)).isRequired,\r\n showError: PropTypes.bool,\r\n updateValidation: PropTypes.func.isRequired,\r\n useConversionLift: PropTypes.bool,\r\n useVisitLift: PropTypes.bool,\r\n};\r\n\r\nVisitConversionLiftInternal.defaultProps = {\r\n isEnabled: false,\r\n showError: false,\r\n useConversionLift: false,\r\n useVisitLift: false,\r\n};\r\n\r\nexport const VisitConversionLift = withCustomValidation(VisitConversionLiftInternal);\r\n","import PropTypes from 'prop-types';\r\nimport React, { useCallback, useContext, useState } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { withValidation } from '@bingads-webui-react/validation';\r\nimport {\r\n Card,\r\n CardHeader,\r\n Field,\r\n Input,\r\n Label,\r\n makeStyles,\r\n} from '@fluentui/react-components';\r\nimport { HelpButton } from '@bingads-webui-react/help-popup';\r\nimport { maxExperimentNameLength } from '../constants/maximums';\r\nimport { errorMessages } from '../errors';\r\nimport { cardHeaderStyles } from '../page-layout';\r\n\r\nconst useStyles = makeStyles(cardHeaderStyles);\r\n\r\nconst ValidatedInput = withValidation(Input);\r\n\r\nexport const getErrorProcessor = () => {\r\n const customErrors = {\r\n required: 'NAME_REQUIRED',\r\n maxLength: 'NAME_TOO_LONG',\r\n };\r\n return errors => Object.entries(errors).map(([key, oldError]) => customErrors[key] || oldError);\r\n};\r\n\r\nexport const experimentNameSchema = {\r\n name: 'Experiment Name Schema',\r\n type: 'object',\r\n properties: {\r\n experimentName: {\r\n type: 'string',\r\n required: true,\r\n maxLength: maxExperimentNameLength,\r\n },\r\n },\r\n};\r\n\r\nexport const ExperimentNameCard = ({ experimentName, onChange, showError }) => {\r\n const styles = useStyles();\r\n const i18n = useContext(I18nContext);\r\n const learnMore = i18n.getString(_TL_('Click to learn more about'));\r\n const experimentNameLabel = i18n.getString(_TL_('Experiment name'));\r\n\r\n const [fieldProps, setFieldProps] = useState(null);\r\n\r\n const onValidateExperimentName = useCallback(({ isValid, messages }) => {\r\n if (isValid) {\r\n setFieldProps(null);\r\n } else {\r\n setFieldProps({\r\n validationMessage: i18n.getString(errorMessages[messages[0]]),\r\n validationState: 'error',\r\n });\r\n }\r\n }, [i18n]);\r\n\r\n const errorProcessor = useCallback(getErrorProcessor(), []);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nExperimentNameCard.propTypes = {\r\n experimentName: PropTypes.string,\r\n onChange: PropTypes.func.isRequired,\r\n showError: PropTypes.bool,\r\n};\r\n\r\nExperimentNameCard.defaultProps = {\r\n experimentName: null,\r\n showError: false,\r\n};\r\n","import React, { useContext } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { makeStyles } from '@fluentui/react-components';\r\nimport { MessageBar, MessageBarBody } from '@fluentui/react-message-bar';\r\n\r\nconst useStyles = makeStyles({\r\n message: {\r\n fontSize: '12px',\r\n },\r\n root: {\r\n paddingBottom: '5px',\r\n paddingTop: '10px',\r\n },\r\n});\r\n\r\nexport const ImpressionThresholdMessage = () => {\r\n const styles = useStyles();\r\n const i18n = useContext(I18nContext);\r\n const message = i18n.getString(_TL_('Lift measurement might not have significant/useful results if audiences associated with your selected campaign(s) have less than one million impressions when the experiment is running. Results are also not guaranteed to be significant even if the impression threshold is met.'));\r\n\r\n return (\r\n \r\n \r\n {message}\r\n \r\n \r\n );\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport React, { useContext } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport {\r\n Card,\r\n Text,\r\n Subtitle2,\r\n} from '@fluentui/react-components';\r\n\r\nexport const SelectedCampaignsCard = ({ campaigns }) => {\r\n const i18n = useContext(I18nContext);\r\n const cardTitle = i18n.getString(_TL_('Campaigns'));\r\n const noContent = i18n.getString(_TL_('No campaigns selected'));\r\n const cardContent = campaigns.length === 0\r\n ? noContent\r\n : campaigns.map(({ name }) => name).join(i18n.getString(_TL_(', ')));\r\n\r\n return (\r\n \r\n {cardTitle}\r\n {cardContent}\r\n \r\n );\r\n};\r\n\r\nSelectedCampaignsCard.propTypes = {\r\n campaigns: PropTypes.arrayOf(PropTypes.shape({\r\n name: PropTypes.string.isRequired,\r\n })).isRequired,\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';\r\nimport { LearnMoreLink } from '@bingads-webui-campaign-react/help';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { ValidationGroup, withCustomValidation } from '@bingads-webui-react/validation';\r\nimport { useWizardService, WIZARD_EVENTS } from '@bingads-webui-react/wizard';\r\nimport { setClarityTag } from '@bingads-webui-universal/clarity';\r\nimport { MessageBar, MessageBarBody } from '@fluentui/react-message-bar';\r\nimport { Stack } from '@fluentui/react/lib/Stack';\r\nimport {\r\n Subtitle1,\r\n Text,\r\n Title3,\r\n} from '@fluentui/react-components';\r\nimport { errorMessages } from '../errors';\r\nimport { stepLayoutTokens } from '../page-layout';\r\nimport { validateVisitConversionLift } from '../validate';\r\nimport { CountryCard } from './country/country-card';\r\nimport { StartDateCard } from './date/start-date-card';\r\nimport { ADD_KEYWORDS_BY_SELECTION } from './keyword/keyword-methods';\r\nimport { SearchLift } from './search-lift/search-lift';\r\nimport { ApiSaveErrorNotification } from './api-save-error-notification';\r\nimport { VisitConversionLift } from './visit-conversion-lift/visit-conversion-lift';\r\nimport { ExperimentNameCard } from './experiment-name-card';\r\nimport { ImpressionThresholdMessage } from './impression-threshold-message';\r\nimport { SelectedCampaignsCard } from './selected-campaigns-card';\r\n\r\nconst titles = {\r\n create: _TL_('Create your lift measurement experiment'),\r\n edit: _TL_('Edit your lift measurement experiment'),\r\n};\r\n\r\nconst ConfigureStudyStepInternal = ({ updateValidation }) => {\r\n const i18n = useContext(I18nContext);\r\n const { state: wizardState, send } = useWizardService();\r\n const { wizardData } = wizardState.context;\r\n const { showError } = wizardData;\r\n const [hasLiftTypeRequiredError, setHasLiftTypeRequiredError] = useState(false);\r\n const selectedCampaigns = useMemo(() => (\r\n wizardData.selectedCampaignsById\r\n ? Object.values(wizardData.selectedCampaignsById).map(campaign => ({ name: campaign.Name }))\r\n : []\r\n ), [wizardData.selectedCampaignsById]);\r\n\r\n // Localized strings.\r\n const title = i18n.getString(titles[wizardData.intent]);\r\n const instructions = i18n.getString(_TL_('Lift measurement experiments provide reports on the branch search rate, website visitation rate, and conversion rate for your Audience campaigns (Display, Native, Online Video, and Feed-based). These measurements help you understand how much more likely consumers are to search for your brand, visit your website, and make purchases after seeing your Audience ads.'));\r\n const measurementSectionHeader = i18n.getString(_TL_('Measurement types'));\r\n\r\n const onChangeExperimentName = useCallback((event) => {\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { experimentName: event.target.value });\r\n }, [send]);\r\n\r\n const onChangeStartDate = useCallback((startDate) => {\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { startDate });\r\n }, [send]);\r\n\r\n const onChangeCountry = useCallback((country) => {\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { country });\r\n }, [send]);\r\n\r\n const onToggleUseSearchLift = useCallback(() => {\r\n const newValue = !wizardData.useSearchLift;\r\n\r\n if (!newValue && !wizardData.useConversionLift && !wizardData.useVisitLift) {\r\n updateValidation(['MEASUREMENT_TYPE_REQUIRED']);\r\n setHasLiftTypeRequiredError(true);\r\n } else {\r\n setHasLiftTypeRequiredError(false);\r\n }\r\n\r\n setClarityTag({\r\n IsLiftExperimentUsingSearchLift: newValue,\r\n });\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { useSearchLift: newValue });\r\n }, [send, updateValidation, wizardData.useConversionLift, wizardData.useSearchLift, wizardData.useVisitLift]);\r\n\r\n const onChangeKeywords = useCallback((typedKeywordString) => {\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { typedKeywordString });\r\n }, [send]);\r\n\r\n const onChangeKeywordsMethod = useCallback((method) => {\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { keywordsMethod: method });\r\n }, [send]);\r\n\r\n const onRemoveAllKeywords = useCallback(() => {\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { selectedKeywords: [] });\r\n }, [send]);\r\n\r\n const onRemoveKeyword = useCallback((removedId) => {\r\n const filteredKeywords = wizardData.selectedKeywords.filter(keywordId => keywordId !== removedId);\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { selectedKeywords: filteredKeywords });\r\n }, [send, wizardData.selectedKeywords]);\r\n\r\n const onSelectKeywords = useCallback((selectedWords) => {\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { selectedKeywords: [...selectedWords] });\r\n }, [send]);\r\n\r\n const onChangeCustomerId = useCallback((cid) => {\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { searchCid: cid });\r\n }, [send]);\r\n\r\n const [hasUETTagsSelectionError, setHasUETTagsSelectionError] = useState(false);\r\n const onToggleUseVisitConversionLift = useCallback(() => {\r\n const isNowToggledOn = !wizardData.useVisitConversionLift;\r\n if (isNowToggledOn) {\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { useVisitConversionLift: true });\r\n } else {\r\n setHasUETTagsSelectionError(false);\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { useVisitConversionLift: false, useVisitLift: false, useConversionLift: false });\r\n }\r\n }, [send, wizardData.useVisitConversionLift]);\r\n\r\n const onChangeVisitConversionLiftMethod = useCallback((values) => {\r\n if (!wizardData.useSearchLift && !values.useConversionLift && !values.useVisitLift) {\r\n updateValidation(['MEASUREMENT_TYPE_REQUIRED']);\r\n setHasLiftTypeRequiredError(true);\r\n } else {\r\n setHasLiftTypeRequiredError(false);\r\n }\r\n\r\n setClarityTag({\r\n IsLiftExperimentUsingConversionLift: values.useConversionLift,\r\n IsLiftExperimentUsingVisitLift: values.useVisitLift,\r\n });\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, {\r\n useConversionLift: values.useConversionLift,\r\n useVisitLift: values.useVisitLift,\r\n });\r\n }, [send, updateValidation, wizardData.useSearchLift]);\r\n\r\n const onSelectUetTags = useCallback((selectedTags) => {\r\n let key;\r\n\r\n if (wizardData.useConversionLift && wizardData.useVisitLift) {\r\n key = 'both';\r\n } else if (wizardData.useConversionLift) {\r\n key = 'conversion';\r\n } else {\r\n key = 'visit';\r\n }\r\n setHasUETTagsSelectionError(false);\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, {\r\n uetTags: {\r\n ...wizardData.uetTags,\r\n [key]: [...selectedTags],\r\n },\r\n });\r\n }, [send, wizardData]);\r\n\r\n const onValidate = useCallback(({ isValid }) => {\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { isValid });\r\n }, [send]);\r\n\r\n useEffect(() => {\r\n const isTagsSelectionValid = validateVisitConversionLift(wizardData);\r\n if (showError && !isTagsSelectionValid) {\r\n setHasUETTagsSelectionError(true);\r\n }\r\n }, [showError, wizardData]);\r\n\r\n return (\r\n \r\n \r\n {title}\r\n \r\n \r\n \r\n {wizardData.apiSaveErrorMessage ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {measurementSectionHeader}\r\n {showError && hasLiftTypeRequiredError && (\r\n \r\n {i18n.getString(errorMessages.MEASUREMENT_TYPE_REQUIRED)}\r\n \r\n )}\r\n {showError && hasUETTagsSelectionError && (\r\n \r\n {i18n.getString(errorMessages.UET_TAG_SELECTION_REQUIRED)}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nConfigureStudyStepInternal.propTypes = {\r\n updateValidation: PropTypes.func.isRequired,\r\n};\r\n\r\nexport const ConfigureStudyStep = withCustomValidation(ConfigureStudyStepInternal);\r\n","import { getEntityFromScope } from '@bingads-webui/edm-campaign';\r\n\r\nexport const conversionGoalFields = [\r\n 'Id',\r\n 'Name',\r\n 'Status',\r\n 'Tag',\r\n];\r\n\r\nexport const fetchConversionGoal = ({\r\n count,\r\n scope,\r\n tagId,\r\n}) => {\r\n const { currentAccount } = getEntityFromScope(scope);\r\n const filters = ['Status eq \\'Active\\''];\r\n\r\n if (tagId != null) {\r\n const tagIdFilter = Array.isArray(tagId)\r\n ? `Tag/Id in [${tagId.join(', ')}]`\r\n : `Tag/Id eq ${tagId}`;\r\n filters.push(tagIdFilter);\r\n }\r\n\r\n const filter = {\r\n where: filters.join(' and '),\r\n };\r\n if (count) {\r\n filter.top = count;\r\n }\r\n\r\n return currentAccount.Goals['Default.GetConversionGoals']\r\n .$makeCall({\r\n query: {\r\n select: [...conversionGoalFields],\r\n filter,\r\n },\r\n })\r\n .toPromise();\r\n};\r\n\r\nexport const transformFetchedGoal = fetchedGoal => ({\r\n id: fetchedGoal.Id,\r\n name: fetchedGoal.Name,\r\n status: fetchedGoal.Status,\r\n});\r\n","import { useCallback, useContext } from 'react';\r\nimport dateUtils from '@bingads-webui-component-legacy/humanize/date';\r\nimport { notificationApi } from '@bingads-webui-campaign/notification-center';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { useWizardService, WIZARD_EVENTS } from '@bingads-webui-react/wizard';\r\nimport { fetchConversionGoal, transformFetchedGoal } from '../../fetch/conversion';\r\nimport { fetchKeywords } from '../../fetch/keywords';\r\nimport { fetchUetTags, getFetchedTagCollections, getFetchedTagsWithGoalsIds } from '../../fetch/uet';\r\nimport { EDIT_INTENT } from '../constants/intents';\r\nimport { maxFetchedGoalsCount, maxFetchedKeywordsCount, maxFetchedTagsCount } from '../constants/maximums';\r\nimport { createMeasurementTypeEnum, saveExperiment, updateExperiment } from '../../fetch/experiment';\r\nimport { API_DATE_FORMAT } from '../date';\r\nimport { errorMessages } from '../errors';\r\nimport { getKeywords, getUETTags } from '../utils';\r\nimport { validateLiftExperiment } from '../validate';\r\nimport { ADD_KEYWORDS_BY_ENTRY } from './keyword/keyword-methods';\r\n\r\nconst onFetchKeywordsSuccess = ({ send }) => (keywords) => {\r\n const orderedFetchedKeywords = [];\r\n const fetchedKeywords = {};\r\n\r\n keywords.forEach((keyword) => {\r\n const fetchedKeyword = {\r\n id: keyword.Id,\r\n name: keyword.Text,\r\n status: keyword.Status,\r\n impressions: keyword.PerformanceMetrics && keyword.PerformanceMetrics.Impressions,\r\n };\r\n orderedFetchedKeywords.push(fetchedKeyword);\r\n fetchedKeywords[keyword.Id] = { ...fetchedKeyword };\r\n });\r\n\r\n const updatedWizardData = {\r\n fetchedKeywords,\r\n isFetchingKeywords: false,\r\n orderedFetchedKeywords,\r\n };\r\n\r\n if (orderedFetchedKeywords.length === 0) {\r\n updatedWizardData.keywordsMethod = ADD_KEYWORDS_BY_ENTRY;\r\n }\r\n\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, updatedWizardData);\r\n};\r\n\r\nconst onFetchUetTagsFailure = ({ i18n, msg, send }) => () => {\r\n notificationApi.showWarning(i18n.getString(msg));\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { isUetTagsFetched: true });\r\n};\r\n\r\nconst onFetchUetTagsSuccess = ({ i18n, scope, send }) => (data) => {\r\n const { fetchedTags, fetchedTagsAsArray } = getFetchedTagCollections(data);\r\n const tagsWithGoalsIds = getFetchedTagsWithGoalsIds(fetchedTagsAsArray);\r\n\r\n if (tagsWithGoalsIds.length > 0) {\r\n // For any fetched tags that have associated conversion goals, we need to fetch those goals and add them to the\r\n // tag before setting the fetch results in state.\r\n const msg = _TL_('Failed to fetch conversion goals.');\r\n fetchConversionGoal({\r\n count: maxFetchedGoalsCount,\r\n scope,\r\n tagId: tagsWithGoalsIds,\r\n })\r\n .then(({ value }) => {\r\n value.forEach((goal) => {\r\n fetchedTags[goal.Tag.Id].goals.push(transformFetchedGoal(goal));\r\n });\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, {\r\n fetchedUetTags: fetchedTags,\r\n isUetTagsFetched: true,\r\n orderedFetchedUetTags: fetchedTagsAsArray,\r\n });\r\n })\r\n .catch(onFetchUetTagsFailure({ i18n, msg, send }));\r\n } else {\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, {\r\n fetchedUetTags: fetchedTags,\r\n isUetTagsFetched: true,\r\n orderedFetchedUetTags: fetchedTagsAsArray,\r\n });\r\n }\r\n};\r\n\r\nexport const useConfigureStudyRepository = () => {\r\n const { scope } = useContext(ScopeContext);\r\n const { state: wizardState, send } = useWizardService();\r\n const { wizardData } = wizardState.context;\r\n const isEdit = wizardData.intent === EDIT_INTENT;\r\n\r\n const i18n = useContext(I18nContext);\r\n\r\n const load = useCallback(() => new Promise((resolve) => {\r\n if (wizardData.isFetchingKeywords == null) {\r\n wizardData.isFetchingKeywords = true;\r\n fetchKeywords({\r\n count: maxFetchedKeywordsCount,\r\n scope,\r\n })\r\n .then(onFetchKeywordsSuccess({ send }))\r\n .catch((error) => {\r\n notificationApi.showWarning(i18n.getString(_TL_('Failed to fetch keywords: {{ responseText }}'), { responseText: error.responseText }));\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { isFetchingKeywords: false });\r\n });\r\n }\r\n\r\n if (!wizardData.isUetTagsFetched) {\r\n const msg = _TL_('Failed to fetch UET tags.');\r\n fetchUetTags({\r\n count: maxFetchedTagsCount,\r\n onFailure: onFetchUetTagsFailure({ i18n, msg, send }),\r\n onSuccess: onFetchUetTagsSuccess({ i18n, scope, send }),\r\n scope,\r\n });\r\n }\r\n\r\n setTimeout(() => resolve({}), 1000);\r\n }), [i18n, scope, send, wizardData.isFetchingKeywords, wizardData.isUetTagsFetched]);\r\n\r\n const onFailure = useCallback((message) => {\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { apiSaveErrorMessage: message });\r\n }, [send]);\r\n\r\n const save = useCallback(async () => {\r\n if (!validateLiftExperiment(wizardData)) {\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { showError: true });\r\n const saveValidationError = new Error(i18n.getString(errorMessages.SAVE_VALIDATION_FAILED));\r\n return Promise.reject(saveValidationError);\r\n }\r\n\r\n const payload = {\r\n Campaigns: Object.keys(wizardData.selectedCampaignsById).map(idAsString => Number(idAsString)),\r\n Country: wizardData.country,\r\n Keywords: getKeywords(wizardData),\r\n MeasurementType: createMeasurementTypeEnum({\r\n useConversionLift: wizardData.useConversionLift,\r\n useSearchLift: wizardData.useSearchLift,\r\n useVisitLift: wizardData.useVisitLift,\r\n }),\r\n Name: wizardData.experimentName,\r\n StartDate: dateUtils.toString(wizardData.startDate, API_DATE_FORMAT),\r\n SearchCustomerId: wizardData.searchCid ? Number(wizardData.searchCid) : null,\r\n UETTags: getUETTags(wizardData),\r\n };\r\n\r\n let saveResult;\r\n if (isEdit) {\r\n payload.Id = scope.values.liftExperimentId;\r\n saveResult = await updateExperiment(scope.values, { payload, onSuccess: () => { }, onFailure });\r\n } else {\r\n saveResult = await saveExperiment(scope.values, { payload, onSuccess: () => { }, onFailure });\r\n }\r\n\r\n return saveResult.isAPISaveFailure ? Promise.reject(saveResult.error) : Promise.resolve({});\r\n }, [i18n, isEdit, onFailure, scope.values, send, wizardData]);\r\n\r\n return {\r\n load,\r\n save,\r\n };\r\n};\r\n","import { getEntityFromScope } from '@bingads-webui/edm-campaign';\r\n\r\nexport const fetchUetTags = ({\r\n count,\r\n onFailure,\r\n onSuccess,\r\n scope,\r\n}) => {\r\n const { currentAccount } = getEntityFromScope(scope);\r\n const currentAccountTagsObservable = currentAccount.Tags.get({\r\n top: count,\r\n select: [\r\n 'Id',\r\n 'Name',\r\n 'Status',\r\n 'GoalsCount',\r\n ],\r\n orderby: [\r\n ['GoalsCount', 'desc'],\r\n ],\r\n filter: {\r\n where: 'Status eq \\'Active\\'',\r\n },\r\n });\r\n\r\n return currentAccountTagsObservable.subscribe({\r\n next: onSuccess,\r\n error: onFailure,\r\n });\r\n};\r\n\r\nexport const transformFetchedUetTag = fetchedTag => ({\r\n id: fetchedTag.Id,\r\n name: fetchedTag.Name,\r\n status: fetchedTag.Status,\r\n goals: [],\r\n goalsCount: fetchedTag.GoalsCount,\r\n});\r\n\r\nexport const getFetchedTagCollections = (data) => {\r\n const fetchedTags = {};\r\n const fetchedTagsAsArray = [];\r\n\r\n data.value.forEach((fetchedTag) => {\r\n const uetTag = transformFetchedUetTag(fetchedTag);\r\n fetchedTagsAsArray.push(uetTag);\r\n fetchedTags[fetchedTag.Id] = uetTag;\r\n });\r\n\r\n return {\r\n fetchedTags,\r\n fetchedTagsAsArray,\r\n };\r\n};\r\n\r\nexport const getFetchedTagsWithGoalsIds = fetchedTags => fetchedTags\r\n .filter(fetchedTag => fetchedTag.goalsCount > 0)\r\n .map(fetchedTag => fetchedTag.id);\r\n","export const CAMPAIGN_PAUSED_STATUSES = [\r\n 'UserPaused',\r\n 'BudgetPaused',\r\n 'BudgetUserPaused',\r\n];\r\n\r\nexport const CAMPAIGN_TYPE_DISPLAY = _TL_('Display');\r\nexport const CAMPAIGN_TYPE_NATIVE = _TL_('Native');\r\nexport const CAMPAIGN_TYPE_ONLINE_VIDEO = _TL_('Online video');\r\nexport const CAMPAIGN_TYPE_FEED_BASED = _TL_('Feed-based');\r\n\r\nexport const DEFAULT_CAMPAIGN_SUBTYPE_FILTER = \"CampaignSubType in ['AudienceDynamicFeedBased', 'AudienceFeedBased', 'AudienceStatic', 'AudienceVideoAds', 'BrandAwarenessVideoAds', 'DisplayAds']\";\r\n","export const getSelectedCampaignsGridColumns = (i18n => [{\r\n key: 'CampaignName',\r\n name: i18n.getString(_TL_('Campaign name')),\r\n fieldName: 'Name',\r\n}]);\r\n","export const budgetFormatOptions = {\r\n compact: 'short',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport React, { useCallback, useContext, useMemo } from 'react';\r\nimport { withServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { GridContext } from '@bingads-webui-grid/grid-context';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { useWizardService, WIZARD_EVENTS } from '@bingads-webui-react/wizard';\r\nimport {\r\n createTableColumn,\r\n DataGrid,\r\n DataGridBody,\r\n DataGridCell,\r\n DataGridHeader,\r\n DataGridHeaderCell,\r\n DataGridRow,\r\n Spinner,\r\n TableCellLayout,\r\n} from '@fluentui/react-components';\r\nimport { Pause12Filled, PresenceBusy12Filled } from '@fluentui/react-icons';\r\nimport { budgetFormatOptions } from '../../constants/budget-format-options';\r\nimport {\r\n CAMPAIGN_PAUSED_STATUSES,\r\n CAMPAIGN_TYPE_DISPLAY,\r\n CAMPAIGN_TYPE_FEED_BASED,\r\n CAMPAIGN_TYPE_NATIVE,\r\n CAMPAIGN_TYPE_ONLINE_VIDEO,\r\n} from '../../constants/campaign';\r\nimport { EDIT_INTENT } from '../../constants/intents';\r\nimport { useSelectCampaignGridStyles } from '../../styles';\r\n\r\nconst getCampaignSubtypeText = (subType) => {\r\n switch (subType) {\r\n case 'AudienceStatic':\r\n return CAMPAIGN_TYPE_NATIVE;\r\n case 'BrandAwarenessVideoAds':\r\n case 'AudienceVideoAds':\r\n return CAMPAIGN_TYPE_ONLINE_VIDEO;\r\n case 'AudienceFeedBased':\r\n case 'AudienceDynamicFeedBased':\r\n return CAMPAIGN_TYPE_FEED_BASED;\r\n case 'DisplayAds':\r\n default:\r\n return CAMPAIGN_TYPE_DISPLAY;\r\n }\r\n};\r\n\r\nconst getAudienceTargetingText = (targetingEnabled) => {\r\n if (targetingEnabled === null) {\r\n return _TL_('');\r\n }\r\n\r\n return targetingEnabled ? _TL_('Enabled') : _TL_('Disabled');\r\n};\r\n\r\nconst getColumns = ({ CurrencyCode, i18n }) => [\r\n createTableColumn({\r\n columnId: 'Name',\r\n compare: (a, b) => a.Name.localeCompare(b.Name),\r\n renderCell: ((campaign) => {\r\n let nameIcon = ;\r\n if (CAMPAIGN_PAUSED_STATUSES.includes(campaign.Status)) {\r\n nameIcon = ;\r\n } else if (!campaign.IsAudienceTargetingEnabled) {\r\n nameIcon = ;\r\n }\r\n return (\r\n \r\n {campaign.Name}\r\n \r\n );\r\n }),\r\n renderHeaderCell: () => i18n.getString(_TL_('Campaign name')),\r\n }),\r\n createTableColumn({\r\n columnId: 'CampaignSubType',\r\n renderCell: campaign => i18n.getString(getCampaignSubtypeText(campaign.CampaignSubType)),\r\n renderHeaderCell: () => i18n.getString(_TL_('Campaign type')),\r\n }),\r\n createTableColumn({\r\n columnId: 'IsAudienceTargetingEnabled',\r\n renderCell: campaign => i18n.getString(getAudienceTargetingText(campaign.IsAudienceTargetingEnabled)),\r\n renderHeaderCell: () => i18n.getString(_TL_('Audience targeting')),\r\n }),\r\n createTableColumn({\r\n columnId: 'DailyTargetBudgetAmount',\r\n compare: (a, b) => a.DailyTargetBudgetAmount - b.DailyTargetBudgetAmount,\r\n renderCell: campaign => i18n.formatCurrency(campaign.DailyTargetBudgetAmount, CurrencyCode, budgetFormatOptions),\r\n renderHeaderCell: () => i18n.getString(_TL_('Budget per day')),\r\n }),\r\n createTableColumn({\r\n columnId: 'IsEligibleForMSANLiftExperiment',\r\n compare: (a, b) => a.IsEligibleForMSANLiftExperiment - b.IsEligibleForMSANLiftExperiment,\r\n renderCell: campaign => i18n.getString(campaign.IsEligibleForMSANLiftExperiment ? _TL_('Eligible') : _TL_('Ineligible')),\r\n renderHeaderCell: () => i18n.getString(_TL_('Campaign eligibility')),\r\n }),\r\n];\r\n\r\nconst SelectCampaignsGridInternal = ({\r\n onCampaignsChange,\r\n serverContext,\r\n}) => {\r\n const styles = useSelectCampaignGridStyles();\r\n\r\n const { CurrentAccount } = serverContext;\r\n const { CurrencyCode } = CurrentAccount;\r\n\r\n const { dispatch, state } = useContext(GridContext);\r\n const { state: wizardState, send } = useWizardService();\r\n const i18n = useContext(I18nContext);\r\n const columns = getColumns({ CurrencyCode, i18n });\r\n\r\n const onChangeSelectedCampaigns = useCallback((_event, { selectedItems }) => {\r\n const { selectedCampaignsById } = wizardState.context.wizardData;\r\n\r\n const eligibleCampaigns = state.items ? state.items.filter(campaign => campaign.IsEligibleForMSANLiftExperiment) : [];\r\n // Datagrid nas no notion of disabled items, so once something on page is selected - it always gives you back the entire page when clicking select all\r\n const isSelectAll = selectedItems.size >= state.pagination.pageSize;\r\n if (isSelectAll) {\r\n const isAllEligibleCampaignsSelected = eligibleCampaigns.every(campaign => selectedCampaignsById[campaign.Id]);\r\n if (isAllEligibleCampaignsSelected) {\r\n eligibleCampaigns.forEach((campaign) => {\r\n delete selectedCampaignsById[campaign.Id];\r\n });\r\n } else {\r\n eligibleCampaigns.forEach((campaign) => {\r\n selectedCampaignsById[campaign.Id] = campaign;\r\n });\r\n }\r\n } else {\r\n eligibleCampaigns.forEach((campaign) => {\r\n if (selectedItems.has(campaign.Id)) {\r\n selectedCampaignsById[campaign.Id] = campaign;\r\n } else if (selectedCampaignsById[campaign.Id]) {\r\n delete selectedCampaignsById[campaign.Id];\r\n }\r\n });\r\n }\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { selectedCampaignsById });\r\n onCampaignsChange({ count: Object.keys(selectedCampaignsById).length });\r\n }, [onCampaignsChange, send, state.items, state.pagination.pageSize, wizardState.context.wizardData]);\r\n\r\n const selectedItems = useMemo(() => {\r\n const selectedCampaignsIds = Object.keys(wizardState.context.wizardData.selectedCampaignsById).map(idAsString => Number(idAsString));\r\n return new Set(selectedCampaignsIds);\r\n // eslint-disable-next-line\r\n }, [wizardState.context.wizardData.selectedCampaignsById, Object.keys(wizardState.context.wizardData.selectedCampaignsById).length]);\r\n\r\n const onSortChange = useCallback((e, { sortColumn, sortDirection }) => {\r\n dispatch({\r\n type: 'UPDATE_SORTED_COLUMN',\r\n payload: {\r\n ...state.sortedColumn,\r\n fieldName: sortColumn,\r\n isSortDescending: sortDirection === 'descending',\r\n },\r\n });\r\n }, [dispatch, state]);\r\n\r\n const { isInitialized, intent } = wizardState.context.wizardData;\r\n const isEdit = intent === EDIT_INTENT;\r\n return (\r\n campaign.Id}\r\n items={state.items || []}\r\n onSelectionChange={onChangeSelectedCampaigns}\r\n onSortChange={onSortChange}\r\n selectionMode=\"multiselect\"\r\n sortable\r\n selectedItems={selectedItems}\r\n >\r\n \r\n \r\n {({ renderHeaderCell }) => (\r\n {renderHeaderCell()}\r\n )}\r\n \r\n \r\n {((isEdit && !isInitialized) || state.items === null) ? (\r\n \r\n ) : (\r\n \r\n {({ item, rowId }) => (\r\n \r\n {({ renderCell }) => (\r\n \r\n {renderCell(item)}\r\n \r\n )}\r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nSelectCampaignsGridInternal.propTypes = {\r\n onCampaignsChange: PropTypes.func.isRequired,\r\n serverContext: PropTypes.shape({\r\n CurrentAccount: PropTypes.shape({\r\n CurrencyCode: PropTypes.string.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n};\r\n\r\nexport const SelectCampaignsGrid = withServerContext(SelectCampaignsGridInternal);\r\n","import React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';\r\nimport _ from 'underscore';\r\nimport { GridContext } from '@bingads-webui-grid/grid-context';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { Dropdown, Input, Option } from '@fluentui/react-components';\r\nimport { SearchRegular } from '@fluentui/react-icons';\r\nimport { Stack } from '@fluentui/react/lib/Stack';\r\nimport {\r\n CAMPAIGN_TYPE_DISPLAY,\r\n CAMPAIGN_TYPE_FEED_BASED,\r\n CAMPAIGN_TYPE_NATIVE,\r\n CAMPAIGN_TYPE_ONLINE_VIDEO,\r\n DEFAULT_CAMPAIGN_SUBTYPE_FILTER,\r\n} from '../../constants/campaign';\r\nimport { useFilterDropdownStyles } from '../../styles';\r\n\r\nconst campaignTypes = [\r\n CAMPAIGN_TYPE_DISPLAY,\r\n CAMPAIGN_TYPE_NATIVE,\r\n CAMPAIGN_TYPE_ONLINE_VIDEO,\r\n CAMPAIGN_TYPE_FEED_BASED,\r\n];\r\n\r\nconst debouncedEditableFilterDispatch = _.debounce((currentEditableFilterPayload, dispatch) => dispatch({ type: 'SET_EDITABLE_FILTER', payload: currentEditableFilterPayload }), 300);\r\n\r\nexport const SelectCampaignsToolbar = () => {\r\n const styles = useFilterDropdownStyles();\r\n\r\n const i18n = useContext(I18nContext);\r\n const searchBoxPlaceholder = i18n.getString(_TL_('Search campaigns'));\r\n const inputLabel = i18n.getString(_TL_('Campaign name search'));\r\n const dropdownPlaceholder = i18n.getString(_TL_('Campaign types: All'));\r\n const dropdownLabel = i18n.getString(_TL_('Campaign type filter'));\r\n\r\n const { dispatch } = useContext(GridContext);\r\n const [campaignSearchText, setCampaignSearchText] = useState('');\r\n const [selectedCampaignTypes, setSelectedCampaignTypes] = useState([]);\r\n\r\n const dropdownButtonText = useMemo(\r\n () => {\r\n if (selectedCampaignTypes.length === 0) {\r\n return dropdownPlaceholder;\r\n }\r\n const formattedSelectionText = selectedCampaignTypes.join(i18n.getString(_TL_(', ')));\r\n const statusText = selectedCampaignTypes.length > 1 ? i18n.getString(_TL_('Campaign types:')) : i18n.getString(_TL_('Campaign type:'));\r\n return `${statusText} ${formattedSelectionText}`;\r\n },\r\n [i18n, dropdownPlaceholder, selectedCampaignTypes]\r\n );\r\n\r\n const currentEditableFilterPayload = useMemo(() => {\r\n const filterPayloadBase = `contains(tolower(Name), '${campaignSearchText.toLowerCase()}')`;\r\n if (selectedCampaignTypes.length) {\r\n const formattedCampaignSubTypes = selectedCampaignTypes.map((campaignSubTypeDisplayText) => {\r\n switch (campaignSubTypeDisplayText) {\r\n case CAMPAIGN_TYPE_DISPLAY:\r\n return 'DisplayAds';\r\n case CAMPAIGN_TYPE_NATIVE:\r\n return 'AudienceStatic';\r\n case CAMPAIGN_TYPE_FEED_BASED:\r\n return \"AudienceDynamicFeedBased', 'AudienceFeedBased\";\r\n case CAMPAIGN_TYPE_ONLINE_VIDEO:\r\n default:\r\n return \"AudienceVideoAds', 'BrandAwarenessVideoAds\";\r\n }\r\n });\r\n const formattedFilter = formattedCampaignSubTypes.map(campaignSubType => `'${campaignSubType}'`).join(', ');\r\n return `${filterPayloadBase} and CampaignSubType in [${formattedFilter}]`;\r\n }\r\n return `${filterPayloadBase} and ${DEFAULT_CAMPAIGN_SUBTYPE_FILTER}`;\r\n }, [campaignSearchText, selectedCampaignTypes]);\r\n\r\n useEffect(() => {\r\n debouncedEditableFilterDispatch(currentEditableFilterPayload, dispatch);\r\n }, [currentEditableFilterPayload, dispatch]);\r\n\r\n const onChangeSearchInput = useCallback((_e, { value }) => {\r\n setCampaignSearchText(value);\r\n }, []);\r\n\r\n const onOptionSelect = useCallback((_e, data) => {\r\n setSelectedCampaignTypes(data.selectedOptions);\r\n }, []);\r\n\r\n return (\r\n \r\n }\r\n onChange={onChangeSearchInput}\r\n placeholder={searchBoxPlaceholder}\r\n value={campaignSearchText}\r\n />\r\n {dropdownButtonText}\r\n }\r\n data-selectedOptions={selectedCampaignTypes.length ? selectedCampaignTypes : dropdownPlaceholder}\r\n multiselect\r\n onOptionSelect={onOptionSelect}\r\n selectedOptions={selectedCampaignTypes}\r\n >\r\n {campaignTypes.map(campaignType => (\r\n \r\n {i18n.getString(campaignType)}\r\n \r\n ))}\r\n \r\n \r\n );\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport React, { useContext } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport {\r\n Button,\r\n useId,\r\n} from '@fluentui/react-components';\r\nimport {\r\n Dismiss12Regular,\r\n} from '@fluentui/react-icons';\r\nimport { useCampaignNameTagStyles } from '../../styles';\r\n\r\nexport const CampaignNameTag = ({\r\n campaign,\r\n onRemove,\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n const tagsListId = useId('selectedCampaignsTagsList');\r\n const removeTagId = `${tagsListId}-remove-${campaign.Id}`;\r\n const campaignName = i18n.getString(_TL_('{{name}}'), { name: campaign.Name });\r\n const styles = useCampaignNameTagStyles();\r\n\r\n return (\r\n }\r\n iconPosition=\"after\"\r\n id={campaign.Id}\r\n onClick={() => onRemove(campaign.Id)}\r\n shape=\"rounded\"\r\n size=\"small\"\r\n >\r\n {campaignName}\r\n \r\n );\r\n};\r\n\r\nCampaignNameTag.propTypes = {\r\n campaign: PropTypes.shape({\r\n Id: PropTypes.number.isRequired,\r\n Name: PropTypes.string.isRequired,\r\n }).isRequired,\r\n onRemove: PropTypes.func.isRequired,\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport React, { useCallback, useContext, useMemo } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { useWizardService, WIZARD_EVENTS } from '@bingads-webui-react/wizard';\r\nimport {\r\n makeStyles,\r\n Caption1Strong,\r\n Accordion,\r\n AccordionItem,\r\n AccordionHeader,\r\n AccordionPanel,\r\n} from '@fluentui/react-components';\r\nimport { selectedCampaignsAccordionStyles } from '../../page-layout';\r\nimport { CampaignNameTag } from './campaign-name-tag';\r\n\r\nconst useStyles = makeStyles(selectedCampaignsAccordionStyles);\r\n\r\nexport const SelectedCampaignsAccordion = ({ onRemoveCampaign, selectedCampaigns }) => {\r\n const styles = useStyles();\r\n const i18n = useContext(I18nContext);\r\n\r\n const selectedCampaignsHeader = i18n.getString(_TL_('Campaigns'));\r\n\r\n const numCampaigns = useMemo(() => selectedCampaigns.length, [selectedCampaigns]);\r\n\r\n const { state: wizardState, send } = useWizardService();\r\n const removeCampaign = useCallback((id) => {\r\n const { selectedCampaignsById } = wizardState.context.wizardData;\r\n delete selectedCampaignsById[id];\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { selectedCampaignsById });\r\n onRemoveCampaign({ count: Object.keys(selectedCampaignsById).length });\r\n }, [onRemoveCampaign, send, wizardState.context.wizardData]);\r\n\r\n return (\r\n \r\n \r\n \r\n {selectedCampaignsHeader}\r\n {numCampaigns} {i18n.getString(_TL_('campaigns'))}\r\n \r\n \r\n
\r\n {selectedCampaigns.map(campaign => (\r\n \r\n ))}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nSelectedCampaignsAccordion.propTypes = {\r\n onRemoveCampaign: PropTypes.func.isRequired,\r\n selectedCampaigns: PropTypes.arrayOf(PropTypes.shape({\r\n Id: PropTypes.number.isRequired,\r\n Name: PropTypes.string.isRequired,\r\n })).isRequired,\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport React, { useContext, useMemo } from 'react';\r\nimport { withServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { useWizardService } from '@bingads-webui-react/wizard';\r\nimport { Stack } from '@fluentui/react/lib/Stack';\r\nimport {\r\n makeStyles,\r\n Subtitle1,\r\n Subtitle2,\r\n Body1,\r\n Caption1,\r\n Caption1Strong,\r\n mergeClasses,\r\n} from '@fluentui/react-components';\r\nimport {\r\n DrawerBody,\r\n DrawerHeader,\r\n DrawerHeaderTitle,\r\n DrawerInline,\r\n} from '@fluentui/react-drawer';\r\nimport { budgetFormatOptions } from '../../constants/budget-format-options';\r\nimport { studySummaryDrawerStyles } from '../../page-layout';\r\nimport { ImpressionThresholdMessage } from '../impression-threshold-message';\r\nimport { SelectedCampaignsAccordion } from './selected-campaigns-accordion';\r\n\r\nconst useStyles = makeStyles(studySummaryDrawerStyles);\r\n\r\nconst StudySummaryDrawerInternal = ({ onRemoveCampaign, serverContext }) => {\r\n const styles = useStyles();\r\n const { CurrentAccount } = serverContext;\r\n const { CurrencyCode } = CurrentAccount;\r\n const i18n = useContext(I18nContext);\r\n const studySummaryTitle = i18n.getString(_TL_('Experiment summary'));\r\n const campaignSelectionTitle = i18n.getString(_TL_('Selected campaigns'));\r\n const totalBudgetLabel = i18n.getString(_TL_('Total budget for selected campaigns'));\r\n\r\n const { state: wizardState } = useWizardService();\r\n const { selectedCampaignsById } = wizardState.context.wizardData;\r\n\r\n const selectedCampaigns = Object.keys(selectedCampaignsById).map(campaignId => selectedCampaignsById[campaignId]);\r\n const totalBudgetFormatted = useMemo(() => {\r\n if (!CurrencyCode) return '--';\r\n const total = selectedCampaigns.reduce((acc, campaign) => {\r\n const dailyTargetBudgetAmount = campaign.DailyTargetBudgetAmount ? campaign.DailyTargetBudgetAmount : 0;\r\n const dailyBudget = campaign.Budget && campaign.Budget.Amount ? campaign.Budget.Amount : dailyTargetBudgetAmount;\r\n return acc + dailyBudget;\r\n }, 0);\r\n return i18n.formatCurrency(total, CurrencyCode, budgetFormatOptions);\r\n }, [selectedCampaigns, i18n, CurrencyCode]);\r\n\r\n return (\r\n \r\n \r\n \r\n {studySummaryTitle} \r\n \r\n \r\n \r\n \r\n \r\n {campaignSelectionTitle} \r\n \r\n
\r\n {totalBudgetLabel}\r\n {totalBudgetFormatted}\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nStudySummaryDrawerInternal.propTypes = {\r\n onRemoveCampaign: PropTypes.func.isRequired,\r\n serverContext: PropTypes.shape({\r\n CurrentAccount: PropTypes.shape({\r\n CurrencyCode: PropTypes.string.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n};\r\n\r\nexport const StudySummaryDrawer = withServerContext(StudySummaryDrawerInternal);\r\n","import { getTheme } from '@fluentui/react';\r\nimport {\r\n Caption1,\r\n makeStyles,\r\n} from '@fluentui/react-components';\r\nimport React, { useContext } from 'react';\r\nimport { curlyTemplate } from '@bingads-webui/primitive-utilities';\r\nimport { GridContext } from '@bingads-webui-grid/grid-context';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { Paginator } from '../../paginator';\r\nimport { noDataStyles } from '../../styles';\r\n\r\nconst { palette } = getTheme();\r\nconst useStyles = makeStyles({\r\n noData: noDataStyles(palette),\r\n});\r\n\r\n\r\nexport const SelectCampaignsFooter = () => {\r\n const i18n = useContext(I18nContext);\r\n const styles = useStyles();\r\n const { state } = useContext(GridContext);\r\n\r\n return state.items && state.items.length > 0\r\n ? (\r\n <>\r\n {curlyTemplate(i18n.getString(_TL_('{{count}} Campaign(s)')))({ count: state.totalCount })}\r\n \r\n \r\n ) : (\r\n
\r\n {i18n.getString(_TL_('There are no campaigns.'))}\r\n
\r\n );\r\n};\r\n","import { AlertHelper } from '@bingads-webui-campaign/alert-helper';\r\nimport { GridContext } from '@bingads-webui-grid/grid-context';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { useCallback, useContext, useEffect } from 'react';\r\nimport { fetchLiftExperimentCampaigns } from '../../../fetch/lift-experiment-campaigns';\r\n\r\nexport const SelectCampaignsGridDataSource = () => {\r\n const { state, dispatch } = useContext(GridContext);\r\n const i18n = useContext(I18nContext);\r\n const { scope } = useContext(ScopeContext);\r\n\r\n const getOrderBy = useCallback((column) => {\r\n if (!column.fieldName) {\r\n return undefined;\r\n }\r\n\r\n return `${column.fieldName} ${column.isSortDescending ? 'DESC' : 'ASC'}`;\r\n }, []);\r\n\r\n const onSuccess = useCallback((response) => {\r\n dispatch({ type: 'FINISH_LOAD_DATA', payload: { items: response.value, totalCount: response['@odata.count'] } });\r\n }, [dispatch]);\r\n const onFailure = useCallback((message) => {\r\n const alertHelper = new AlertHelper({ i18n });\r\n alertHelper.showError(message);\r\n }, [i18n]);\r\n\r\n useEffect(() => {\r\n const orderBy = getOrderBy(state.sortedColumn);\r\n dispatch({ type: 'START_LOAD_DATA' });\r\n fetchLiftExperimentCampaigns(scope.values, {\r\n query: {\r\n $count: true,\r\n $top: state.pagination.pageSize,\r\n $skip: ((state.pagination.pageNumber - 1) * state.pagination.pageSize),\r\n $filter: state.editableFilter,\r\n ...(orderBy ? { $orderby: orderBy } : {}),\r\n },\r\n onSuccess,\r\n onFailure,\r\n });\r\n }, [dispatch, getOrderBy, onFailure, onSuccess, state.editableFilter, state.pagination, state.sortedColumn, scope.values]);\r\n\r\n return null;\r\n};\r\n","import { edmCampaign } from '@bingads-webui/edm-campaign';\r\n\r\nexport const fetchLiftExperimentCampaigns = (\r\n { aid, cid },\r\n {\r\n onFailure,\r\n onSuccess,\r\n query,\r\n }\r\n) => edmCampaign\r\n .Customers.$withKey(cid)\r\n .Accounts.$withKey(aid)\r\n .LiftExperimentCampaigns\r\n .get(query)\r\n .toPromise()\r\n .then((response) => {\r\n onSuccess(response);\r\n })\r\n .catch(() => onFailure(_TL_('Failed to fetch campaigns')));\r\n","import React, { useCallback, useContext, useMemo } from 'react';\r\nimport classNames from 'classnames';\r\nimport { GridContextProvider } from '@bingads-webui-grid/grid-context';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { useWizardService, WIZARD_EVENTS } from '@bingads-webui-react/wizard';\r\nimport { MessageBar, MessageBarBody } from '@fluentui/react-message-bar';\r\nimport { Stack } from '@fluentui/react/lib/Stack';\r\nimport {\r\n Card,\r\n CardFooter,\r\n makeStyles,\r\n Text,\r\n Title3,\r\n} from '@fluentui/react-components';\r\nimport { getTheme, SelectionMode } from '@fluentui/react';\r\nimport { DEFAULT_CAMPAIGN_SUBTYPE_FILTER } from '../constants/campaign';\r\nimport { getSelectedCampaignsGridColumns } from '../constants/selected-campaigns-grid-columns';\r\nimport {\r\n footerStyles,\r\n selectCampaignsStepLayoutTokens,\r\n selectCampaignsStyles\r\n} from '../page-layout';\r\nimport { getUIBlockerStyle, noDataStyles } from '../styles';\r\nimport { validateCampaignCount } from '../validate';\r\nimport { SelectCampaignsGrid } from './select-campaigns-grid/select-campaigns-grid';\r\nimport { SelectCampaignsToolbar } from './select-campaigns-grid/select-campaigns-toolbar';\r\nimport { StudySummaryDrawer } from './summary/study-summary-drawer';\r\nimport { SelectCampaignsFooter } from './select-campaigns-grid/select-campaigns-footer';\r\nimport { SelectCampaignsGridDataSource } from './select-campaigns-grid/select-campaigns-grid-data-source';\r\n\r\nconst { palette } = getTheme();\r\n\r\nconst useStyles = makeStyles({\r\n footer: footerStyles,\r\n ...selectCampaignsStyles,\r\n noData: noDataStyles(palette),\r\n});\r\n\r\nexport const SelectCampaignsStep = () => {\r\n useDefaultStyles(getUIBlockerStyle);\r\n const styles = useStyles();\r\n\r\n const i18n = useContext(I18nContext);\r\n const title = i18n.getString(_TL_('Choose one or more campaigns for this experiment'));\r\n const instructions = i18n.getString(_TL_('Select up to 10 campaigns. Please review the campaign eligibility requirements listed in the summary to ensure that your experiment runs successfully.'));\r\n\r\n const { state: wizardState, send } = useWizardService();\r\n const { wizardData } = wizardState.context;\r\n const {\r\n isValid,\r\n selectCampaignsError,\r\n showError,\r\n } = wizardData;\r\n\r\n const onChangeSelectedCampaigns = useCallback(({ count }) => {\r\n const results = validateCampaignCount({ count, i18n });\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, {\r\n isValid: results.isValid,\r\n selectCampaignsError: results.error,\r\n });\r\n }, [i18n, send]);\r\n\r\n const initialGridContext = useMemo(() => ({\r\n editableFilter: DEFAULT_CAMPAIGN_SUBTYPE_FILTER,\r\n items: [],\r\n pagination: {\r\n pageNumber: 1,\r\n pageSize: 10,\r\n },\r\n selectedColumns: getSelectedCampaignsGridColumns(i18n),\r\n selectedItems: new Set(),\r\n selectionMode: SelectionMode.multiple,\r\n totalCount: 0,\r\n }), [i18n]);\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n {title}\r\n {instructions}\r\n {(showError && !isValid) && (\r\n \r\n {selectCampaignsError}\r\n \r\n )}\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n","import { SaveBlocker, DefaultTemplate } from '@bingads-webui-react/wizard-ui-library';\r\nimport { ConfigureStudyStep } from '../common/components/configure-study-step';\r\nimport { useConfigureStudyRepository } from '../common/components/configure-study-step-repository';\r\nimport { SelectCampaignsStep } from '../common/components/select-campaigns-step';\r\nimport { useSelectCampaignsRepository } from '../common/components/select-campaigns-step-repository';\r\n\r\nexport const stepConfigs = [{\r\n id: 'step-1',\r\n view: SelectCampaignsStep,\r\n repository: useSelectCampaignsRepository,\r\n}, {\r\n id: 'step-2',\r\n view: ConfigureStudyStep,\r\n repository: useConfigureStudyRepository,\r\n}];\r\n\r\nexport const layoutConfig = {\r\n 'step-1': {\r\n template: DefaultTemplate,\r\n noBlocker: true,\r\n },\r\n 'step-2': {\r\n template: DefaultTemplate,\r\n customBlocker: SaveBlocker,\r\n },\r\n};\r\n","import { useCallback, useContext } from 'react';\r\nimport { AlertHelper } from '@bingads-webui-campaign/alert-helper';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { useWizardService, WIZARD_EVENTS } from '@bingads-webui-react/wizard';\r\nimport { fetchCampaignsByIdEDM } from '../../fetch/campaigns';\r\nimport { fetchExperiment, parseMeasurementTypeEnum } from '../../fetch/experiment';\r\nimport { EDIT_INTENT } from '../constants/intents';\r\nimport { errorMessages } from '../errors';\r\nimport { validateCampaignCount } from '../validate';\r\nimport { ADD_KEYWORDS_BY_ENTRY, ADD_KEYWORDS_BY_SELECTION } from './keyword/keyword-methods';\r\nimport { STATUS_SCHEDULED } from '../../landing-page/statuses';\r\n\r\nexport const useSelectCampaignsRepository = () => {\r\n const { scope } = useContext(ScopeContext);\r\n\r\n const { state: wizardState, send } = useWizardService();\r\n const { wizardData } = wizardState.context;\r\n const isEdit = wizardData.intent === EDIT_INTENT;\r\n\r\n const i18n = useContext(I18nContext);\r\n\r\n const load = useCallback(() => new Promise((resolve) => {\r\n if (isEdit) {\r\n if (!wizardData.isInitialized) {\r\n const onFailure = (message) => {\r\n const alertHelper = new AlertHelper({ i18n });\r\n alertHelper.showError(message);\r\n // If request for lift study fails, push the user back from edit form to lift studies grid\r\n send(WIZARD_EVENTS.CANCEL);\r\n };\r\n const onSuccess = async (liftExperiment) => {\r\n // Handle the case where user manually enters url for an uneditable lift study\r\n if (liftExperiment.Status !== STATUS_SCHEDULED) {\r\n onFailure(errorMessages.STATUS_INVALID_FOR_EDIT);\r\n }\r\n\r\n const uetTags = {\r\n both: [],\r\n conversion: [],\r\n visit: [],\r\n };\r\n const study = {\r\n ...liftExperiment,\r\n ...parseMeasurementTypeEnum(liftExperiment.MeasurementType),\r\n };\r\n\r\n if (study.useVisitLift && study.useConversionLift) {\r\n uetTags.both = [...study.UETTags];\r\n } else if (study.useVisitLift) {\r\n uetTags.visit = [...study.UETTags];\r\n } else if (study.useConversionLift) {\r\n uetTags.conversion = [...study.UETTags];\r\n }\r\n\r\n const response = await fetchCampaignsByIdEDM(scope.values, study.Campaigns);\r\n const selectedCampaigns = response.value;\r\n const selectedCampaignsById = {};\r\n selectedCampaigns.forEach((campaign) => {\r\n selectedCampaignsById[campaign.Id] = campaign;\r\n });\r\n\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, {\r\n isInitialized: true,\r\n experimentName: study.Name,\r\n startDate: study.StartDate,\r\n country: study.Country,\r\n useSearchLift: study.useSearchLift,\r\n selectedKeywords: [],\r\n keywordsMethod: ADD_KEYWORDS_BY_ENTRY,\r\n typedKeywordString: study.Keywords.join(i18n.getString(_TL_(', '))),\r\n searchCid: study.SearchCustomerId || '',\r\n useVisitConversionLift: study.useVisitLift || study.useConversionLift,\r\n useVisitLift: study.useVisitLift,\r\n useConversionLift: study.useConversionLift,\r\n uetTags,\r\n selectedCampaignsById,\r\n });\r\n\r\n resolve({}); // still unsure how this resolution is being used\r\n };\r\n fetchExperiment(scope.values, { onSuccess, onFailure });\r\n }\r\n } else if (!wizardData.isInitialized) {\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, {\r\n isInitialized: true,\r\n isValid: false,\r\n experimentName: '',\r\n startDate: null,\r\n country: null,\r\n useSearchLift: true,\r\n selectedKeywords: [],\r\n keywordsMethod: ADD_KEYWORDS_BY_SELECTION,\r\n typedKeywordString: '',\r\n searchCid: '',\r\n useVisitConversionLift: false,\r\n useVisitLift: undefined,\r\n useConversionLift: undefined,\r\n uetTags: {\r\n both: [],\r\n conversion: [],\r\n visit: [],\r\n },\r\n });\r\n }\r\n\r\n resolve({});\r\n }), [i18n, isEdit, scope, send, wizardData.isInitialized]);\r\n\r\n const save = useCallback(() => {\r\n const { selectedCampaignsById } = wizardData;\r\n const count = Object.keys(selectedCampaignsById).length;\r\n const result = validateCampaignCount({ count, i18n });\r\n\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, {\r\n isValid: result.isValid,\r\n selectCampaignsError: result.error,\r\n showError: !result.isValid,\r\n });\r\n\r\n if (!result.isValid) {\r\n return Promise.reject(new Error(result.error));\r\n }\r\n\r\n return new Promise((resolve) => {\r\n setTimeout(() => resolve({}), 800);\r\n });\r\n }, [i18n, send, wizardData]);\r\n\r\n return {\r\n load,\r\n save,\r\n };\r\n};\r\n","import { getEntityFromScope } from '@bingads-webui/edm-campaign';\r\nimport {\r\n getFormattedDateString,\r\n MS_PER_DAY,\r\n} from '../common/date';\r\n\r\nexport const fetchKeywords = ({\r\n count,\r\n scope,\r\n}) => {\r\n const { currentAccount } = getEntityFromScope(scope);\r\n const endDate = new Date(Date.now());\r\n const formattedEndDate = getFormattedDateString(endDate);\r\n const msPer90Days = MS_PER_DAY * 90;\r\n const startDate = new Date(endDate.valueOf() - msPer90Days);\r\n const formattedStartDate = getFormattedDateString(startDate);\r\n\r\n return currentAccount.Keywords['Default.GridData'].findAll({\r\n select: [\r\n 'Id',\r\n 'Text',\r\n 'Status',\r\n 'PerformanceMetrics/Impressions',\r\n ],\r\n filter: {\r\n where: 'Status eq \\'Active\\'',\r\n },\r\n orderBy: [\r\n {\r\n key: 'PerformanceMetrics/Impressions',\r\n direction: 'DESC',\r\n },\r\n ],\r\n limit: count,\r\n query: {\r\n gridDataParameters: {\r\n DateRange: {\r\n StartDate: formattedStartDate,\r\n EndDate: formattedEndDate,\r\n },\r\n },\r\n },\r\n });\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport {\r\n getCurrentStepId,\r\n useWizardService,\r\n} from '@bingads-webui-react/wizard';\r\nimport { layoutConfig } from './config';\r\n\r\nexport const CustomLayoutTemplate = ({ items }) => {\r\n const { state } = useWizardService();\r\n const currentStepId = getCurrentStepId(state);\r\n const config = layoutConfig[currentStepId];\r\n const {\r\n noBlocker,\r\n customBlocker,\r\n template: Template,\r\n } = config;\r\n const newItems = { ...items };\r\n\r\n if (noBlocker) {\r\n newItems.Blocker = undefined;\r\n } else if (customBlocker) {\r\n newItems.Blocker = customBlocker;\r\n }\r\n\r\n return