{"version":3,"file":"static/js/application.async.non-landing~8bf60e89.60ad80b4.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/fetch/uet.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/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 query = {\r\n filter: {\r\n where: filters.join(' and '),\r\n },\r\n select: [...conversionGoalFields],\r\n top: count || 20,\r\n };\r\n\r\n return currentAccount.Goals['Default.GetConversionGoals']\r\n .$makeCall({ query })\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 { getEntityFromScope } from '@bingads-webui/edm-campaign';\r\n\r\nexport const fetchUetTags = ({\r\n count,\r\n ids,\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: ids\r\n ? `Status eq 'Active' AND Id in [${ids.join(', ')}]`\r\n : '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","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","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