{"version":3,"file":"static/js/application.async.landing~7bd16237.3e344b2c.chunk.js","mappings":"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","sources":["../../../node_modules/@bingads-webui-campaign-react/business-name/src/styles.js","../../../node_modules/@bingads-webui-campaign-react/business-name/src/business-name-with-validation.js","../../../node_modules/@bingads-webui-campaign-react/business-name/src/controlled-business-name-with-validation.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/components/selectable-item.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/components/objective-item.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/components/action-list.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/components/ad-type-item.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/components/deal-filter-bar.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/components/choose-ads-panel.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/page/choose-objective.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/page/choose-objective-with-legacy.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/styles/campaign-creation-search-styles.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/page/campaign-creation-search.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/page/campaign-creation-audience.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/page/campaign-creation-audience-video.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/page/campaign-creation-search-shopping.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/page/campaign-creation-audience-shopping.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/page/campaign-creation-audience-simplified.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/page/campaign-creation-shopping-wizard.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/styles/campaign-creation-search-v2-styles.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/page/campaign-creation-search-v2.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/page/adgroup-creation.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/helper/tools-config.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/helper/inject-factory.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/helper/ad-type-config.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/helper/inject-wrapper.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/helper/router-helper.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/components/navigate-section.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/components/navigate-content.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/components/creation-header.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/helper/with-creation-header.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/helper/get-delayed-styles.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/helper/get-common-campaign-creation-options.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/helper/get-mmc-data.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/helper/get-deals.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/helper/objectives-config.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/styles/adgroup-creation-audience-styles.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/page/adgroup-creation-audience.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/styles/adgroup-creation-search-styles.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/page/adgroup-creation-search.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/styles/creation-content-container-style.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/styles/campaign-creation-ad-editor-override.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/styles/action-list.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/styles/choose-objective.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/styles/objective-item.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/styles/navigate-section.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/styles/navigate-content.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/styles/ad-type-item.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/styles/choose-ads-panel.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/styles/selectable-item.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/styles/index.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/styles/step-wizard.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-selector-edm/src/campaign-adgroup-selector-style.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-selector-edm/src/util.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-selector-edm/src/legacy-i18n-map.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-selector-edm/src/campaign-adgroup-selector-edm.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-selector-edm/src/campaign-adgroup-selector-edm-view.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles/src/campaign-adgroup-settings-from-sel-design/shared-styles-from-sel-design.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles/src/creation-common-styles/disclaimer-extensions-styles.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles/src/creation-common-styles/settings-common-style.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles/src/campaign-creation-search-styles/campaign-settings-style.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles/src/campaign-creation-search-styles/adgroups-keywords-styles.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles/src/campaign-creation-search-styles/budget-bids-styles.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles/src/campaign-creation-search-styles/ad-extensions-styles.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles/src/campaign-creation-search-styles/dsa-campaign-styles.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles/src/campaign-creation-search-styles/adgroup-creation-styles.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles/src/creation-common-styles/double-list-a11y-hacker-styles.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles/src/campaign-creation-search-shopping-styles/index.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles/src/creation-common-styles/creation-common-style.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles/src/campaign-creation-audience-styles/audience-campaign-settings-styles.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles/src/campaign-creation-audience-styles/audience-targets-settings-styles.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles/src/campaign-creation-audience-styles/audience-budget-bids-styles.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles/src/campaign-creation-audience-styles/audience-ads-styles.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles/src/campaign-creation-audience-styles/audience-adgroup-creation-styles.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles/src/campaign-creation-audience-styles/audience-campaign-bmc-redirect-styles.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles/src/raise-bid-popup-styles/raise-bid-popup-style.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles/src/campaign-creation-smart-shopping-styles/index.js","../../../node_modules/@bingads-webui-campaign-react/campaign-http/src/campaign-fetch-config.js","../../../node_modules/@bingads-webui-campaign-react/campaign-http/src/use-campaign-fetch-provider.js","../../../node_modules/@bingads-webui-campaign-react/campaign-http/src/use-fetch.js","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/components/duration-selector-placeholder.tsx","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/styles/campaign-goal-title.js","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/styles/fac-badge.js","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/components/goal-card/fac-badge.tsx","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/components/goal-card/campaign-goal-title.tsx","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/styles/campaign-goal-card.js","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/components/goal-card/campaign-goal-card.tsx","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/page/goal-selection.tsx","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/styles/campaign-type-card-with-goal.js","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/components/selection-card-with-goal.tsx","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/components/campaign-type-card/campaign-ad-type-options-radio.tsx","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/page/campaign-type-selection-with-goal/configs.ts","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/page/campaign-type-selection-with-goal/index.tsx","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/page/ad-type-selection-with-goal/configs.ts","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/page/ad-type-selection-with-goal/index.tsx","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/styles/campaign-type-card-no-goal.js","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/components/campaign-type-card/campaign-type-card-no-goal.tsx","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/page/campaign-type-selection-no-goal.tsx","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/helpers/campaign-objective.ts","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/components/custom-sections/custom-section-selector.tsx","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/components/ad-type-card/plain-card.tsx","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/components/ad-type-card/unified-app-ads-card.tsx","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/page/ad-type-selection-page/default-ad-type-selection-page.tsx","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/page/ad-type-selection-page/shopping-ad-type-selection-page.tsx","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/page/ad-type-selection-page/unified-app-ad-type-selection-page.tsx","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/page/index.tsx","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/styles/index.js","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/styles/vars.js","../../../node_modules/@bingads-webui-campaign-react/campaign-settings-utils/src/constants.js","../../../node_modules/@bingads-webui-campaign-react/campaign-settings-utils/src/goal-confirm-logic-utils.js","../../../node_modules/@bingads-webui-campaign-react/campaign-settings-wizard-v1-utils/src/use-confirm-dialog-config.js","../../../node_modules/@bingads-webui-campaign-react/carousel/src/styles.js","../../../node_modules/@bingads-webui-campaign-react/carousel/src/index.js","../../../node_modules/@bingads-webui-campaign-react/carousel/src/utils.js","../../../node_modules/@bingads-webui-campaign-react/carousel/src/simple-carousel.js","../../../node_modules/@bingads-webui-campaign-react/categorized-dropdown-list/src/categorized-dropdown-list.js","../../../node_modules/@bingads-webui-campaign-react/categorized-dropdown-list/src/styles/categorized-dropdown-list-styles.js","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/template/header-template.pug","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/template/legacy-steps-template.pug","../../../node_modules/@bingads-webui-campaign-react/campaign-adgroup-creation/src/template/steps-template.pug","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/components/custom-sections/audience-campaign-selector.tsx","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/components/custom-sections/perf-max-store-selector.tsx","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/config/constants.ts","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/helpers/navigate-to-wizard.ts","../../../node_modules/@bingads-webui-campaign-react/campaign-onboarding-v2/src/page/ad-type-selection-page/ad-type-selection-page.tsx","../../../node_modules/@bingads-webui-campaign-react/campaign-status-summary-cards/src/styles/footer-styles.ts","../../../node_modules/@bingads-webui-campaign-react/campaign-status-summary-cards/src/components/with-footer.tsx","../../../node_modules/@bingads-webui-campaign-react/campaign-status-summary-cards/src/components/use-read-campaign.ts","../../../node_modules/@bingads-webui-campaign-react/campaign-status-summary-cards/src/utils/create-or-update-campaign.ts","../../../node_modules/@bingads-webui-campaign-react/campaign-status-summary-cards/src/components/use-repository.ts","../../../node_modules/@bingads-webui-campaign-react/campaign-status-summary-cards/src/utils/api-error-mapper.ts","../../../node_modules/@bingads-webui-campaign-react/campaign-status-summary-cards/src/styles/budget-card-styles.ts","../../../node_modules/@bingads-webui-campaign-react/campaign-status-summary-cards/src/components/budget-card.tsx","../../../node_modules/@bingads-webui-campaign-react/campaign-status-summary-cards/src/utils/linkedin-campaign-utils.ts","../../../node_modules/@bingads-webui-campaign-react/campaign-status-summary-cards/src/styles/bid-strategy-card-styles.ts","../../../node_modules/@bingads-webui-campaign-react/campaign-status-summary-cards/src/components/bid-strategy-card.tsx","../../../node_modules/@bingads-webui-campaign-react/campaign-status-summary-cards/src/components/campaign-status-card.tsx","../../../node_modules/@bingads-webui-campaign-react/campaign-status-summary-cards/src/styles/styles.ts","../../../node_modules/@bingads-webui-campaign-react/campaign-status-summary-cards/src/campaign-status-summary-cards.tsx","../../../node_modules/@bingads-webui-campaign-react/card-selector/src/card-config.ts","../../../node_modules/@bingads-webui-campaign-react/card-selector/src/styles/card-styles.ts","../../../node_modules/@bingads-webui-campaign-react/card-selector/src/card.tsx","../../../node_modules/@bingads-webui-campaign-react/card-selector/src/styles/card-selector-styles.ts","../../../node_modules/@bingads-webui-campaign-react/card-selector/src/card-selector.tsx"],"sourcesContent":["export const getTextInputContainerStyles = () => ({\r\n TextInputContainer: {\r\n width: '435px',\r\n '& div .error': {\r\n color: '#A80000',\r\n },\r\n },\r\n});\r\n","import _ from 'underscore';\r\nimport React, { useCallback, useEffect, useMemo, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport { getLength } from '@bingads-webui-universal/primitive-utilities';\r\n\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport {\r\n RemainingCharsUnvalidatedTextField,\r\n} from '@bingads-webui-campaign-react/remaining-chars-hint';\r\n\r\nimport { getTextInputContainerStyles } from './styles';\r\n\r\nconst DefaultBusinessNameMaxLength = 25;\r\nconst IS_DISTINGUISH_WIDE_CHAR = true;\r\n\r\nexport const BusinessNameWithValidation = (props) => {\r\n const {\r\n id,\r\n i18n,\r\n maxLength,\r\n updateValidation,\r\n validationProps,\r\n onBusinessNameChanged,\r\n showLabel,\r\n } = props;\r\n\r\n const { data } = validationProps;\r\n\r\n const activity = useContext(ActivityContext);\r\n\r\n const businessName = _.result(data, 'BusinessName');\r\n\r\n const getErrorMessages = useCallback((value) => {\r\n const textLength = getLength(value, IS_DISTINGUISH_WIDE_CHAR);\r\n\r\n if (textLength === 0) {\r\n return [i18n.getString(_TL_('Required field'))];\r\n }\r\n\r\n if (textLength > maxLength) {\r\n return [i18n.getString(_TL_('Field should not exceed {{maxLength}} characters'), { maxLength })];\r\n }\r\n\r\n return [];\r\n }, [i18n, maxLength]);\r\n\r\n useEffect(() => {\r\n updateValidation(getErrorMessages(businessName), { BusinessName: businessName }, false /* shouldDirty */);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const onChanged= useCallback((event, value) => {\r\n updateValidation(getErrorMessages(value), { BusinessName: value });\r\n onBusinessNameChanged(value);\r\n\r\n if (activity) {\r\n activity.signal(`onBusinessNameChanged - ${JSON.stringify(value)}`);\r\n }\r\n }, [updateValidation, getErrorMessages, activity, onBusinessNameChanged]);\r\n\r\n const classes = useDefaultStyles(getTextInputContainerStyles);\r\n\r\n const loadedBusinessName = useMemo(() => (\r\n
\r\n \r\n
), [classes.TextInputContainer, id, businessName, onChanged, maxLength, i18n, showLabel]);\r\n\r\n return loadedBusinessName;\r\n};\r\n\r\nBusinessNameWithValidation.propTypes = {\r\n id: PropTypes.string,\r\n validationProps: PropTypes.shape({}).isRequired,\r\n i18n: PropTypes.shape({}).isRequired,\r\n maxLength: PropTypes.number,\r\n updateValidation: PropTypes.func,\r\n onBusinessNameChanged: PropTypes.func,\r\n showLabel: PropTypes.bool,\r\n};\r\n\r\nBusinessNameWithValidation.defaultProps = {\r\n id: undefined,\r\n maxLength: DefaultBusinessNameMaxLength,\r\n updateValidation: _.noop,\r\n onBusinessNameChanged: _.noop,\r\n showLabel: false,\r\n};\r\n","import _ from 'underscore';\r\nimport React, { useCallback, useEffect, useMemo, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport { getLength } from '@bingads-webui-universal/primitive-utilities';\r\n\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport {\r\n ControlledRemainingCharsUnvalidatedTextField,\r\n} from '@bingads-webui-campaign-react/remaining-chars-hint';\r\n\r\nimport { getTextInputContainerStyles } from './styles';\r\n\r\nconst DefaultBusinessNameMaxLength = 25;\r\nconst IS_DISTINGUISH_WIDE_CHAR = true;\r\n\r\nexport const ControlledBusinessNameWithValidation = (props) => {\r\n const {\r\n id,\r\n i18n,\r\n maxLength,\r\n updateValidation,\r\n validationProps,\r\n onBusinessNameChanged,\r\n showLabel,\r\n } = props;\r\n\r\n const { data } = validationProps;\r\n\r\n const activity = useContext(ActivityContext);\r\n\r\n const businessName = _.result(data, 'BusinessName');\r\n\r\n const getErrorMessages = useCallback((value) => {\r\n const textLength = getLength(value, IS_DISTINGUISH_WIDE_CHAR);\r\n\r\n if (textLength === 0) {\r\n return [i18n.getString(_TL_('Required field'))];\r\n }\r\n\r\n if (textLength > maxLength) {\r\n return [i18n.getString(_TL_('Field should not exceed {{maxLength}} characters'), { maxLength })];\r\n }\r\n\r\n return [];\r\n }, [i18n, maxLength]);\r\n\r\n useEffect(() => {\r\n updateValidation(getErrorMessages(businessName), { BusinessName: businessName }, false /* shouldDirty */);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [businessName]);\r\n\r\n const onChanged= useCallback((event, value) => {\r\n updateValidation(getErrorMessages(value), { BusinessName: value });\r\n onBusinessNameChanged(value);\r\n\r\n if (activity) {\r\n activity.signal(`onBusinessNameChanged - ${JSON.stringify(value)}`);\r\n }\r\n }, [updateValidation, getErrorMessages, activity, onBusinessNameChanged]);\r\n\r\n const classes = useDefaultStyles(getTextInputContainerStyles);\r\n\r\n const loadedBusinessName = useMemo(() => (\r\n
\r\n \r\n
), [classes.TextInputContainer, id, businessName, onChanged, maxLength, i18n, showLabel]);\r\n\r\n return loadedBusinessName;\r\n};\r\n\r\nControlledBusinessNameWithValidation.propTypes = {\r\n id: PropTypes.string,\r\n validationProps: PropTypes.shape({}).isRequired,\r\n i18n: PropTypes.shape({}).isRequired,\r\n maxLength: PropTypes.number,\r\n updateValidation: PropTypes.func,\r\n onBusinessNameChanged: PropTypes.func,\r\n showLabel: PropTypes.bool,\r\n};\r\n\r\nControlledBusinessNameWithValidation.defaultProps = {\r\n id: undefined,\r\n maxLength: DefaultBusinessNameMaxLength,\r\n updateValidation: _.noop,\r\n onBusinessNameChanged: _.noop,\r\n showLabel: false,\r\n};\r\n","/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\r\n/* eslint-disable jsx-a11y/no-static-element-interactions */\r\nimport React from 'react';\r\nimport classnames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport { mapObject, constant, identity } from 'underscore';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getSelectableItemStyles } from '../styles';\r\n\r\nclass SelectableItem extends React.PureComponent {\r\n handleKeyDown = (event) => {\r\n if ((event.keyCode === 13) || (event.keyCode === 32)) {\r\n this.handleClick();\r\n }\r\n };\r\n\r\n handleClick = () => {\r\n const {\r\n id, siteMapId, siteMapAvailable, onClick,\r\n } = this.props;\r\n\r\n if (onClick) {\r\n onClick({ id, siteMapId, siteMapAvailable });\r\n }\r\n };\r\n\r\n render() {\r\n const {\r\n classes,\r\n 'aria-label': ariaLabel,\r\n isSelected,\r\n children,\r\n ariaItemSize,\r\n ariaItemIndex,\r\n className,\r\n showWarning,\r\n isNewFeature,\r\n i18n,\r\n } = this.props;\r\n\r\n const rootClass = classnames([\r\n classes.selectableButton,\r\n `campaign-objective-button${isSelected ? ' selected' : ''}`,\r\n className,\r\n ]);\r\n\r\n return (\r\n showWarning(true)}\r\n onFocus={showWarning}\r\n className={rootClass}\r\n onClick={this.handleClick}\r\n onKeyDown={this.handleKeyDown}\r\n aria-label={ariaLabel}\r\n >\r\n \r\n {children}\r\n \r\n );\r\n }\r\n}\r\n\r\nSelectableItem.propTypes = {\r\n classes: PropTypes.shape(mapObject(\r\n getSelectableItemStyles({}, {}),\r\n constant(PropTypes.string.isRequired)\r\n )).isRequired,\r\n id: PropTypes.string.isRequired,\r\n siteMapId: PropTypes.string,\r\n siteMapAvailable: PropTypes.func,\r\n children: PropTypes.node.isRequired,\r\n onClick: PropTypes.func,\r\n 'aria-label': PropTypes.string,\r\n isSelected: PropTypes.bool,\r\n ariaItemSize: PropTypes.number.isRequired,\r\n ariaItemIndex: PropTypes.number.isRequired,\r\n className: PropTypes.string,\r\n showWarning: PropTypes.func,\r\n isNewFeature: PropTypes.bool,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }),\r\n};\r\n\r\nSelectableItem.defaultProps = {\r\n onClick: null,\r\n siteMapId: '',\r\n siteMapAvailable: null,\r\n 'aria-label': '',\r\n isSelected: false,\r\n className: '',\r\n showWarning: identity,\r\n isNewFeature: false,\r\n i18n: {\r\n getString: text => text,\r\n },\r\n};\r\n\r\nexport const StyledSelectableItem = withDefaultStyles(SelectableItem, getSelectableItemStyles);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { compose, mapObject, constant } from 'underscore';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { Glyphicon } from '@bingads-webui-react/primitive';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { getObjectiveItemStyles } from '../styles';\r\nimport { StyledSelectableItem } from './selectable-item';\r\n\r\nconst MaxDescriptionLength = 36;\r\n\r\nclass ObjectiveItem extends React.PureComponent {\r\n helpKeyDown = (event) => {\r\n if ((event.keyCode === 13) || (event.keyCode === 32)) {\r\n this.helpClick(event);\r\n event.stopPropagation();\r\n }\r\n };\r\n\r\n helpClick = (event) => {\r\n window.PopupController.PopupJsClick(event.target);\r\n event.stopPropagation();\r\n };\r\n\r\n handleDescription = (description) => {\r\n const wordArray = description.split(' ');\r\n let updatedDescription = description;\r\n while (updatedDescription.length > MaxDescriptionLength) {\r\n wordArray.pop();\r\n updatedDescription = `${wordArray.join(' ')}...`;\r\n }\r\n\r\n return updatedDescription;\r\n };\r\n\r\n renderObjectiveItemContent = () => {\r\n const {\r\n classes,\r\n iconName,\r\n descriptionLine,\r\n helpId,\r\n helpArialLabel,\r\n onClick,\r\n isNewFeature,\r\n showFACBadge,\r\n FACInfo,\r\n isSVGIcon,\r\n i18n,\r\n } = this.props;\r\n\r\n const description = this.handleDescription(descriptionLine);\r\n const rootClass = classNames('objective-item', 'wider-objective-item');\r\n\r\n return (\r\n \r\n
\r\n {isSVGIcon ? () : ()}\r\n
\r\n
{description}
\r\n
\r\n
\r\n
);\r\n };\r\n\r\n render() {\r\n const {\r\n classes,\r\n } = this.props;\r\n\r\n return (\r\n
\r\n {this.renderObjectiveItemContent()}\r\n
\r\n );\r\n }\r\n}\r\n\r\nObjectiveItem.propTypes = {\r\n classes: PropTypes.shape(mapObject(\r\n getObjectiveItemStyles({}, {}),\r\n constant(PropTypes.string.isRequired)\r\n )).isRequired,\r\n id: PropTypes.string.isRequired,\r\n iconName: PropTypes.string.isRequired,\r\n descriptionLine: PropTypes.string.isRequired,\r\n helpId: PropTypes.string,\r\n onClick: PropTypes.func,\r\n isSVGIcon: PropTypes.bool,\r\n 'aria-label': PropTypes.string,\r\n isSelected: PropTypes.bool,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n helpArialLabel: PropTypes.string,\r\n isNewFeature: PropTypes.bool,\r\n showFACBadge: PropTypes.bool,\r\n FACInfo: PropTypes.shape({\r\n CouponValueWithCurrency: PropTypes.string,\r\n }),\r\n ariaItemSize: PropTypes.number.isRequired,\r\n ariaItemIndex: PropTypes.number.isRequired,\r\n};\r\n\r\nObjectiveItem.defaultProps = {\r\n helpId: null,\r\n onClick: null,\r\n isSVGIcon: false,\r\n 'aria-label': '',\r\n isSelected: false,\r\n helpArialLabel: null,\r\n isNewFeature: false,\r\n showFACBadge: false,\r\n FACInfo: null,\r\n};\r\n\r\nconst wrap = compose(\r\n TempComponent => withDefaultStyles(TempComponent, getObjectiveItemStyles),\r\n withI18nConsumer\r\n);\r\n\r\nexport const StyledObjectiveItem = wrap(ObjectiveItem);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { mapObject, constant } from 'underscore';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getActionListStyles } from '../styles';\r\nimport { StyledObjectiveItem } from './objective-item';\r\n\r\nconst ActionList = ({\r\n classes,\r\n title,\r\n actionItems,\r\n}) => {\r\n const ariaLabelId = `campaignCreationActionListTitle-${Math.floor(Math.random() * 10000)}`;\r\n\r\n return (\r\n
\r\n {title && (\r\n
\r\n {title}\r\n
\r\n )}\r\n
\r\n {actionItems.map((item, index) => (\r\n \r\n ))}\r\n
\r\n
\r\n );\r\n};\r\n\r\nActionList.propTypes = {\r\n classes: PropTypes.shape(mapObject(\r\n getActionListStyles({}, {}),\r\n constant(PropTypes.string.isRequired)\r\n )).isRequired,\r\n title: PropTypes.string,\r\n actionItems: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.string.isRequired,\r\n iconName: PropTypes.string.isRequired,\r\n descriptionLine: PropTypes.string.isRequired,\r\n helpId: PropTypes.string,\r\n onClick: PropTypes.func,\r\n 'aria-label': PropTypes.string,\r\n isSelected: PropTypes.bool,\r\n })).isRequired,\r\n};\r\n\r\nActionList.defaultProps = {\r\n title: null,\r\n};\r\n\r\nexport const StyledActionList = withDefaultStyles(ActionList, getActionListStyles);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Callout, DirectionalHint } from '@fluentui/react';\r\nimport { mapObject, constant, bind } from 'underscore';\r\nimport { Row } from '@bingads-webui-react/layout';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { LearnMoreLink } from '@bingads-webui-campaign-react/help';\r\nimport { getAdTypeItemStyles } from '../styles';\r\nimport { StyledSelectableItem } from './selectable-item';\r\n\r\nclass AdTypeItem extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isSmartShoppingWarningVisible: false,\r\n isPerfMaxWarningVisible: false,\r\n };\r\n this.warningMessageTarget = React.createRef();\r\n }\r\n\r\n handleAdTypeClick = () => {\r\n const {\r\n disabled, onSelect, id, itemId, dealDetails,\r\n } = this.props;\r\n\r\n if (disabled) {\r\n return;\r\n }\r\n\r\n if (itemId === 'MediaPackageCampaign') {\r\n onSelect(dealDetails);\r\n\r\n return;\r\n }\r\n onSelect(id);\r\n };\r\n\r\n showWarning(isShowWarning) {\r\n if (isShowWarning && this.props.isSmartShoppingWarningVisible) {\r\n this.setState({\r\n isSmartShoppingWarningVisible: true,\r\n });\r\n }\r\n if (isShowWarning && this.props.isPerfMaxWarningVisible) {\r\n this.setState({\r\n isPerfMaxWarningVisible: true,\r\n });\r\n }\r\n if (!isShowWarning && this.state.isSmartShoppingWarningVisible) {\r\n this.setState({\r\n isSmartShoppingWarningVisible: false,\r\n });\r\n }\r\n if (!isShowWarning && this.state.isPerfMaxWarningVisible) {\r\n this.setState({\r\n isPerfMaxWarningVisible: false,\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n const {\r\n smartShoppingWarningMessage, disabled, classes, title, description, img, id, isSelected, audienceAdsPolicy, period, 'aria-label': ariaLabel, ariaItemSize, ariaItemIndex, i18n, isNewFeature, helpTopicId,\r\n } = this.props;\r\n\r\n return (\r\n
\r\n \r\n {\r\n isNewFeature ?\r\n
{i18n.getString(_TL_('New'))}
\r\n : ''\r\n }\r\n \r\n {title}\r\n \r\n {\r\n img &&\r\n \r\n {title}\r\n \r\n }\r\n \r\n \r\n {description}\r\n {\r\n audienceAdsPolicy ?\r\n {audienceAdsPolicy}\r\n : ''\r\n }\r\n {period}\r\n {\r\n helpTopicId ?\r\n \r\n : null\r\n }\r\n \r\n \r\n \r\n {this.state.isSmartShoppingWarningVisible && smartShoppingWarningMessage ? (\r\n \r\n {smartShoppingWarningMessage}\r\n \r\n ) : null}\r\n {this.state.isPerfMaxWarningVisible && smartShoppingWarningMessage ? (\r\n \r\n {smartShoppingWarningMessage}\r\n \r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nAdTypeItem.propTypes = {\r\n isSmartShoppingWarningVisible: PropTypes.bool,\r\n isPerfMaxWarningVisible: PropTypes.bool,\r\n smartShoppingWarningMessage: PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.element,\r\n ]),\r\n classes: PropTypes.shape(mapObject(\r\n getAdTypeItemStyles({}, {}),\r\n constant(PropTypes.string.isRequired)\r\n )).isRequired,\r\n id: PropTypes.string.isRequired,\r\n title: PropTypes.string.isRequired,\r\n description: PropTypes.string.isRequired,\r\n img: PropTypes.string.isRequired,\r\n helpTopicId: PropTypes.string,\r\n onSelect: PropTypes.func.isRequired,\r\n isSelected: PropTypes.bool.isRequired,\r\n audienceAdsPolicy: PropTypes.string,\r\n period: PropTypes.string,\r\n 'aria-label': PropTypes.string,\r\n ariaItemSize: PropTypes.number.isRequired,\r\n disabled: PropTypes.bool,\r\n ariaItemIndex: PropTypes.number.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n isNewFeature: PropTypes.bool,\r\n itemId: PropTypes.string,\r\n dealDetails: PropTypes.shape({}),\r\n};\r\n\r\nAdTypeItem.defaultProps = {\r\n isPerfMaxWarningVisible: false,\r\n isSmartShoppingWarningVisible: false,\r\n smartShoppingWarningMessage: '',\r\n audienceAdsPolicy: null,\r\n period: null,\r\n dealDetails: null,\r\n helpTopicId: '',\r\n itemId: '',\r\n disabled: false,\r\n 'aria-label': '',\r\n isNewFeature: false,\r\n};\r\n\r\nexport const StyledAdTypeItem = withDefaultStyles(AdTypeItem, getAdTypeItemStyles);\r\n","/* eslint-disable jsx-a11y/no-static-element-interactions */\r\n/* eslint-disable jsx-a11y/click-events-have-key-events */\r\nimport React, { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport classnames from 'classnames';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { Dropdown } from '@fluentui/react';\r\nimport { getTargetConstraints } from '@bingads-webui-campaign-react/xandr-video-campaign-shared-components';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\n\r\nimport { getChooseAdsPanelStyles } from '../styles';\r\n\r\nfunction isTargetHasValue(deal, targetType) {\r\n return getTargetConstraints(deal, targetType).mandatory.length > 0;\r\n}\r\n\r\nexport function DealFilterBar(props) {\r\n const {\r\n i18n, deals, onFilter, locationFilterOptions, isEnabledDealsV2,\r\n } = props;\r\n\r\n const classes = useDefaultStyles(getChooseAdsPanelStyles);\r\n // alphabetical order by location\r\n const locationOptions = _.sortBy(locationFilterOptions, item => item.text);\r\n const [ronFilter, setRonFilter] = useState(false);\r\n const [ageFilter, setAgeFilter] = useState(false);\r\n const [genderFilter, setGenderFilter] = useState(false);\r\n const [genreFilter, setGenreFilter] = useState(false);\r\n\r\n const currentLocation = config.get('CurrentUser').Market;\r\n // For deal V2 SI test, we will remove it when we can fetch US deals from V2 api\r\n const currentLocationInOptions = locationFilterOptions.find(location => location.key === currentLocation);\r\n const usLocationOptions = locationFilterOptions.find(location => location.key === 'US');\r\n const defaultLocationOptions = isEnabledDealsV2 ? _.first(locationFilterOptions) : usLocationOptions;\r\n\r\n const [locationFilter, setLocationFilter] = useState(currentLocationInOptions || defaultLocationOptions);\r\n\r\n function applyFilterToDeal() {\r\n let tmpDeals = deals.slice();\r\n if (ronFilter) {\r\n tmpDeals = tmpDeals.filter(deal =>\r\n _.get(deal, 'Name', '').toLowerCase().includes('top10') ||\r\n (!deal.Genre && !deal.AgeRange && !isTargetHasValue(deal, 'Gender') && !isTargetHasValue(deal, 'Device') && !isTargetHasValue(deal, 'Audience')));\r\n }\r\n\r\n if (ageFilter) {\r\n tmpDeals = tmpDeals.filter(deal => deal.AgeRange);\r\n }\r\n\r\n if (genderFilter) {\r\n tmpDeals = tmpDeals.filter(deal => isTargetHasValue(deal, 'Gender'));\r\n }\r\n\r\n if (genreFilter) {\r\n tmpDeals = tmpDeals.filter(deal => deal.Genre);\r\n }\r\n\r\n if (locationFilter.key !== 'all') {\r\n tmpDeals = tmpDeals.filter((deal) => {\r\n const { mandatory } = getTargetConstraints(deal, 'Location');\r\n return mandatory.includes(String(locationFilter.data.Id));\r\n });\r\n }\r\n\r\n onFilter(tmpDeals);\r\n }\r\n\r\n useEffect(() => {\r\n applyFilterToDeal();\r\n }, [ronFilter, ageFilter, genderFilter, genreFilter, locationFilter]);\r\n\r\n function onLocationChange(ev, item) {\r\n setLocationFilter(item);\r\n }\r\n\r\n function onRonClick() {\r\n setRonFilter(!ronFilter);\r\n\r\n setAgeFilter(false);\r\n setGenderFilter(false);\r\n setGenreFilter(false);\r\n }\r\n\r\n function onAgeClick() {\r\n setAgeFilter(!ageFilter);\r\n\r\n setRonFilter(false);\r\n setGenderFilter(false);\r\n setGenreFilter(false);\r\n\r\n applyFilterToDeal();\r\n }\r\n\r\n function onGenderClick() {\r\n setGenderFilter(!genderFilter);\r\n\r\n setRonFilter(false);\r\n setAgeFilter(false);\r\n setGenreFilter(false);\r\n\r\n applyFilterToDeal();\r\n }\r\n\r\n function onGenreClick() {\r\n setGenreFilter(!genreFilter);\r\n\r\n setRonFilter(false);\r\n setAgeFilter(false);\r\n setGenderFilter(false);\r\n\r\n applyFilterToDeal();\r\n }\r\n\r\n return (\r\n
\r\n
\r\n \r\n {i18n.getString(_TL_('RON and TOP10'))}\r\n
\r\n \r\n {i18n.getString(_TL_('Age'))}\r\n
\r\n \r\n {i18n.getString(_TL_('Gender'))}\r\n \r\n \r\n {i18n.getString(_TL_('Genre'))}\r\n \r\n \r\n\r\n
\r\n \r\n
\r\n \r\n );\r\n}\r\n\r\nDealFilterBar.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n deals: PropTypes.array.isRequired,\r\n onFilter: PropTypes.func.isRequired,\r\n locationFilterOptions: PropTypes.array.isRequired,\r\n isEnabledDealsV2: PropTypes.bool,\r\n};\r\n\r\nDealFilterBar.defaultProps = {\r\n isEnabledDealsV2: false,\r\n};\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\n/* eslint-disable jsx-a11y/click-events-have-key-events */\r\n/* eslint-disable jsx-a11y/interactive-supports-focus */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { mapObject, constant, isBoolean, flatten, uniq, each, get } from 'underscore';\r\nimport { MessageBar, Checkbox, Link } from '@fluentui/react';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { Button } from '@bingads-webui-react/primitive';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { Loading } from '@bingads-webui-campaign-react/loading';\r\nimport { Panel } from '@bingads-webui-campaign-react/panel';\r\nimport { withScope, QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { getLocalStorage } from '@bingads-webui/storage';\r\nimport { getRoutePathById, siteMapPropType, withSiteMap } from '@bingads-webui-campaign-react/with-site-map';\r\nimport * as createService from '@bingads-webui-campaign-legacy/campaign-create-advanced/view/service';\r\nimport { bytesForHuman, targetConstraintsToText, getCountriesLocations, getTargetConstraints, getVideoConstraintDuration, MTCurrencyConvertor, isNetflixDeal } from '@bingads-webui-campaign-react/xandr-video-campaign-shared-components';\r\nimport decimal from '@bingads-webui-component-legacy/humanize/decimal';\r\nimport { getChooseAdsPanelStyles } from '../styles';\r\nimport { StyledAdTypeItem } from './ad-type-item';\r\nimport { DealFilterBar } from './deal-filter-bar';\r\nimport {\r\n adTypeConfig,\r\n shoppingCampaignTypeConfig,\r\n perfMaxCampaignTypeConfig,\r\n standardShoppingCampaignTypeConfig,\r\n shoppingCampaignTypes,\r\n xandrVideoCampaignTypeConfig,\r\n adImpressionsCampaignTypeConfig,\r\n getDeals,\r\n getDealsV2,\r\n sponsoredProductCampaignTypeConfig,\r\n} from '../helper';\r\n\r\nconst NFDealAccountPreferenceName = 'WebApp.CampaignUI.AcceptNetflixDealTCs';\r\nlet noSmartShoppingReasonRef = null;\r\n\r\nclass ChooseAdsPanel extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.createService = createService;\r\n\r\n this.localStorage = getLocalStorage();\r\n this.isLocalStorageSupported = this.localStorage.supportsStorage();\r\n if (this.isLocalStorageSupported) {\r\n this.localStorage.invalidate('XandrVideoCampaignType');\r\n }\r\n\r\n this.state = {\r\n selectedAdType: null,\r\n selectedVideoChannelType: null,\r\n selectedAdImpressionsType: null,\r\n selectedCampaignType: null,\r\n selectedSponsoredProductCampaignType: null,\r\n showShoppingCampaignTypeOptions: false,\r\n showPerfMaxCampaignTypeOptions: props.showPerfMaxCampaignTypeOptions,\r\n isPerfMaxCampaignDisabled: false,\r\n netflixDealTCAccepted: this.isAcceptNetflixDealTCs(props),\r\n deals: [],\r\n filteredDeals: [],\r\n isSmartShoppingCampaignDisabled: false,\r\n loading: true,\r\n locationMap: {},\r\n locationFilterOptions: [],\r\n smartShoppingNotSupportedReason: null,\r\n itemId: props.itemId,\r\n };\r\n }\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n if (nextProps.itemId !== prevState.itemId) {\r\n const { itemId, showPerfMaxCampaignTypeOptions } = nextProps;\r\n const selectedCampaignType = showPerfMaxCampaignTypeOptions ? null : shoppingCampaignTypes.smart;\r\n if (itemId === 'ShoppingCampaign' && nextProps.isSmartShoppingCampaignEnabled) {\r\n return {\r\n loading: true,\r\n selectedCampaignType,\r\n showShoppingCampaignTypeOptions: false,\r\n showPerfMaxCampaignTypeOptions: nextProps.showPerfMaxCampaignTypeOptions,\r\n itemId,\r\n };\r\n } else if (itemId === 'MediaPackageCampaign') {\r\n return {\r\n loading: !prevState.deals || prevState.deals.length === 0,\r\n itemId,\r\n };\r\n }\r\n\r\n return {\r\n selectedAdType: null,\r\n selectedCampaignType,\r\n showShoppingCampaignTypeOptions: false,\r\n showPerfMaxCampaignTypeOptions: nextProps.showPerfMaxCampaignTypeOptions,\r\n loading: nextProps.showPerfMaxCampaignTypeOptions,\r\n itemId,\r\n };\r\n }\r\n return null;\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.itemId !== this.props.itemId) {\r\n this.fetchIsSmartShoppingCampaignEnabled(this.props);\r\n this.fetchIsPerfMaxCampaignEnabled(this.props);\r\n this.fetchDeals(this.props);\r\n }\r\n }\r\n\r\n get adTypes() {\r\n const { i18n } = this.props;\r\n return adTypeConfig(i18n);\r\n }\r\n\r\n get shopppingCampaignTypes() {\r\n const { i18n, permissions } = this.props;\r\n return shoppingCampaignTypeConfig(i18n, permissions);\r\n }\r\n\r\n get perfMaxCampaignType() {\r\n const { i18n } = this.props;\r\n return perfMaxCampaignTypeConfig(i18n);\r\n }\r\n\r\n get standardCampaignType() {\r\n const { i18n } = this.props;\r\n return adTypeConfig(i18n, true)[0];\r\n }\r\n\r\n get audienceCampaignType() {\r\n const { i18n } = this.props;\r\n return adTypeConfig(i18n, true)[1];\r\n }\r\n\r\n get standardShoppingCampaignType() {\r\n const { i18n } = this.props;\r\n return standardShoppingCampaignTypeConfig(i18n);\r\n }\r\n\r\n get xandrVideoCampaignType() {\r\n const { i18n } = this.props;\r\n return xandrVideoCampaignTypeConfig(i18n);\r\n }\r\n\r\n get adImpressionCampaignType() {\r\n const { i18n } = this.props;\r\n return adImpressionsCampaignTypeConfig(i18n);\r\n }\r\n\r\n getPanelTitle() {\r\n if (this.state.loading) {\r\n return '';\r\n }\r\n const { i18n, itemId } = this.props;\r\n\r\n if (itemId === 'MediaPackageCampaign') {\r\n return i18n.getString(_TL_('Choose your deal'));\r\n }\r\n\r\n const shoppingCampaignSubTypeTitle = i18n.getString(_TL_('Select a campaign type.'));\r\n const campaignTypeTitle = i18n.getString(_TL_('What kind of ads do you want to run for this campaign?'));\r\n return this.state.showShoppingCampaignTypeOptions || this.state.showPerfMaxCampaignTypeOptions ? shoppingCampaignSubTypeTitle : campaignTypeTitle;\r\n }\r\n\r\n getConversionGoalWarningMessage(isPerfMaxCampaign) {\r\n const {\r\n classes, scope, siteMap, i18n,\r\n } = this.props;\r\n\r\n return (\r\n
\r\n

{i18n.getString(_TL_('Missing conversion tracking'))}

\r\n {i18n.getString(_TL_('To run a {{campaignType}}, you need conversion tracking so you can keep track of when your ads lead to sales on your website.'), {\r\n campaignType: isPerfMaxCampaign ? i18n.getString(_TL_('Performance Max campaign')) : i18n.getString(_TL_('Smart Shopping campaign')),\r\n })}\r\n {\r\n evt.preventDefault();\r\n const pathname = getRoutePathById(siteMap, 'conversion-goals');\r\n\r\n scope.history.push({\r\n pathname,\r\n search: scope.history.location.search,\r\n });\r\n }}\r\n >\r\n {i18n.getString(_TL_('Set up conversion tracking'))}\r\n \r\n
\r\n );\r\n }\r\n\r\n getSmartShoppingWarningMessage() {\r\n const { classes, i18n } = this.props;\r\n switch (this.state.smartShoppingNotSupportedReason) {\r\n case noSmartShoppingReasonRef.NO_AVAILABLE_GOAL:\r\n return this.getConversionGoalWarningMessage();\r\n case noSmartShoppingReasonRef.MORE_THAN_100:\r\n return (\r\n
\r\n

{i18n.getString(_TL_('Campaign limit reached'))}

\r\n {i18n.getString(_TL_('The maximum number of Smart Shopping campaigns allowed per account is 100.'))}\r\n
\r\n );\r\n default:\r\n return '';\r\n }\r\n }\r\n\r\n async fetchDeals(props) {\r\n if (props.permissions.IsDealEnabledForMsAds) {\r\n if (this.state.deals && this.state.deals.length > 0) {\r\n return;\r\n }\r\n const { itemId, scope, serverContext } = props;\r\n const { cid, aid } = scope.values;\r\n const lcid = serverContext ? serverContext.CurrentUser.LocaleID : '1033';\r\n\r\n if (itemId === 'MediaPackageCampaign') {\r\n let deals;\r\n if (props.permissions.IsEnabledDealsV2) {\r\n deals = await getDealsV2(cid, aid).then(response => response.value);\r\n } else {\r\n deals = await getDeals();\r\n }\r\n const locationIds = uniq(flatten(deals.map(deal => getTargetConstraints(deal, 'Location').mandatory)));\r\n\r\n const locationResponse = await getCountriesLocations(locationIds, lcid, cid, aid);\r\n const locationMap = {};\r\n const locationFilterOptions = [];\r\n each(locationResponse, (location) => {\r\n if (!locationMap[location.data.Id]) {\r\n locationFilterOptions.push({ key: location.data.CountryCode, text: location.data.EnglishName, data: location.data });\r\n }\r\n locationMap[location.data.Id] = location.data.EnglishName;\r\n });\r\n\r\n this.setState({\r\n loading: false,\r\n locationMap,\r\n locationFilterOptions,\r\n deals,\r\n filteredDeals: deals,\r\n });\r\n }\r\n }\r\n }\r\n\r\n fetchIsSmartShoppingCampaignEnabled(props) {\r\n const { itemId, showPerfMaxCampaignTypeOptions, isSmartShoppingCampaignEnabled } = props;\r\n if (itemId === 'ShoppingCampaign') {\r\n if (isSmartShoppingCampaignEnabled) {\r\n this.fetchIsSmartShoppingCampaignSupportedWithLegacyCode().then(({ supported, reason }) => {\r\n if (this.props.itemId === itemId) {\r\n const showShoppingCampaignTypeOptions = supported || reason !== noSmartShoppingReasonRef.NO_PILOT;\r\n this.setState({\r\n loading: false,\r\n showShoppingCampaignTypeOptions,\r\n selectedAdType: null,\r\n isSmartShoppingCampaignDisabled: !supported && reason !== noSmartShoppingReasonRef.NO_PILOT,\r\n smartShoppingNotSupportedReason: reason,\r\n });\r\n if (!showPerfMaxCampaignTypeOptions) {\r\n this.setState({\r\n selectedCampaignType: supported ? shoppingCampaignTypes.smart : shoppingCampaignTypes.standard,\r\n });\r\n }\r\n }\r\n });\r\n } else if (this.props.itemId === itemId) {\r\n this.setState({\r\n loading: false,\r\n showShoppingCampaignTypeOptions: true,\r\n isSmartShoppingCampaignDisabled: true,\r\n selectedAdType: null,\r\n });\r\n if (!showPerfMaxCampaignTypeOptions) {\r\n this.setState({\r\n selectedCampaignType: shoppingCampaignTypes.standard,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n fetchIsPerfMaxCampaignEnabled(props) {\r\n const { showPerfMaxCampaignTypeOptions } = props;\r\n\r\n if (showPerfMaxCampaignTypeOptions) {\r\n this.setState({\r\n loading: false,\r\n isPerfMaxCampaignDisabled: false,\r\n });\r\n }\r\n }\r\n\r\n fetchIsSmartShoppingCampaignSupportedWithLegacyCode() {\r\n return new Promise((resolve) => {\r\n const { fetchIsSmartShoppingCampaignSupported, noSmartShoppingReason } = this.createService;\r\n resolve(fetchIsSmartShoppingCampaignSupported());\r\n noSmartShoppingReasonRef = noSmartShoppingReason;\r\n });\r\n }\r\n\r\n handleNextButtonClick = () => {\r\n const {\r\n handleNavigation, permissions, config, preferenceService,\r\n } = this.props;\r\n const {\r\n selectedVideoChannelType,\r\n itemId,\r\n netflixDealTCAccepted,\r\n selectedDeal,\r\n selectedAdImpressionsType,\r\n selectedSponsoredProductCampaignType,\r\n } = this.state;\r\n if (itemId === 'VideoCampaign') {\r\n config.set('XandrVideoCampaignType', selectedVideoChannelType);\r\n\r\n if (this.isLocalStorageSupported) {\r\n this.localStorage.set('XandrVideoCampaignType', selectedVideoChannelType);\r\n }\r\n handleNavigation('VideoCampaign');\r\n } else if (itemId === 'MediaPackageCampaign') {\r\n config.set('VideoMediaDeal', selectedDeal);\r\n\r\n if (netflixDealTCAccepted && this.isNetflixDealSelected()) {\r\n preferenceService.setAtAccountLevel({\r\n Name: NFDealAccountPreferenceName,\r\n Data: true,\r\n Type: 'bool',\r\n Version: 1,\r\n });\r\n }\r\n\r\n if (this.isLocalStorageSupported) {\r\n this.localStorage.set('VideoMediaDeal', selectedDeal);\r\n }\r\n\r\n handleNavigation('VideoCampaign');\r\n } else if (itemId === 'AdImpressions') {\r\n handleNavigation(selectedAdImpressionsType);\r\n } else if (itemId === 'SponsoredShoppingCampaign') {\r\n handleNavigation(selectedSponsoredProductCampaignType);\r\n } else if (this.state.showPerfMaxCampaignTypeOptions) {\r\n if (this.state.showShoppingCampaignTypeOptions && this.state.selectedCampaignType === shoppingCampaignTypes.standard) {\r\n if (permissions.IsAIMCampaignEnabled) {\r\n this.setState({\r\n showPerfMaxCampaignTypeOptions: false,\r\n showShoppingCampaignTypeOptions: false,\r\n });\r\n } else {\r\n handleNavigation('SearchAds');\r\n }\r\n } else {\r\n const { selectedCampaignType } = this.state;\r\n handleNavigation(selectedCampaignType);\r\n }\r\n } else if (!this.state.showShoppingCampaignTypeOptions) {\r\n const { selectedAdType } = this.state;\r\n\r\n handleNavigation(selectedAdType);\r\n } else if (this.state.selectedCampaignType === shoppingCampaignTypes.standard) {\r\n if (permissions.IsAIMCampaignEnabled) {\r\n this.setState({\r\n showShoppingCampaignTypeOptions: false,\r\n });\r\n } else {\r\n handleNavigation('SearchAds');\r\n }\r\n } else {\r\n const { selectedCampaignType } = this.state;\r\n handleNavigation(selectedCampaignType);\r\n }\r\n };\r\n\r\n handleAdTypeSelect = (adTypeId) => {\r\n this.setState({ selectedAdType: adTypeId });\r\n };\r\n\r\n handleCampaignTypeSelect = (id) => {\r\n this.setState({ selectedCampaignType: id });\r\n };\r\n\r\n handleShoppingCampaignTypeSelect = (id) => {\r\n this.setState({ selectedCampaignType: id });\r\n };\r\n\r\n handleXanerVideoCampaignChannelSelect = (id) => {\r\n this.setState({ selectedVideoChannelType: id });\r\n };\r\n\r\n handleSponsoredProductCampaignTypeSelect = (id) => {\r\n this.setState({ selectedSponsoredProductCampaignType: id });\r\n };\r\n\r\n handleDealSelect = (deal) => {\r\n this.setState({ selectedDeal: deal });\r\n };\r\n\r\n handleAdImpressionsCampaignChannelSelect = (id) => {\r\n this.setState({ selectedAdImpressionsType: id });\r\n };\r\n\r\n handleCheckNFDealIterm = async () => {\r\n this.setState({\r\n netflixDealTCAccepted: !this.state.netflixDealTCAccepted,\r\n });\r\n };\r\n\r\n handleDealFilter = (filteredDeals) => {\r\n this.setState({\r\n filteredDeals,\r\n });\r\n };\r\n\r\n isAcceptNetflixDealTCs = (props) => {\r\n const { preferenceService } = props;\r\n return get(preferenceService.findByNameAtAccountLevel(NFDealAccountPreferenceName), 'Data', false);\r\n };\r\n\r\n isNetflixDealSelected = () => this.state.selectedDeal && isNetflixDeal(this.state.selectedDeal);\r\n\r\n isNextButtonDisabled() {\r\n const {\r\n selectedAdType,\r\n selectedCampaignType,\r\n loading,\r\n itemId,\r\n selectedDeal,\r\n netflixDealTCAccepted,\r\n selectedAdImpressionsType,\r\n selectedVideoChannelType,\r\n selectedSponsoredProductCampaignType,\r\n } = this.state;\r\n if (loading) {\r\n return true;\r\n }\r\n\r\n if (this.state.showShoppingCampaignTypeOptions) {\r\n return selectedCampaignType == null;\r\n }\r\n if (this.state.showPerfMaxCampaignTypeOptions) {\r\n return selectedCampaignType == null;\r\n }\r\n if (itemId === 'VideoCampaign') {\r\n return selectedVideoChannelType == null;\r\n }\r\n if (itemId === 'MediaPackageCampaign') {\r\n return selectedDeal == null || (this.isNetflixDealSelected() && !netflixDealTCAccepted);\r\n }\r\n if (itemId === 'AdImpressions') {\r\n return selectedAdImpressionsType == null;\r\n }\r\n if (itemId === 'SponsoredShoppingCampaign') {\r\n return selectedSponsoredProductCampaignType == null;\r\n }\r\n if (!this.state.showShoppingCampaignTypeOptions) {\r\n return selectedAdType == null;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n renderOptions() {\r\n const { i18n, permissions, isSmartShoppingCampaignEnabled } = this.props;\r\n const {\r\n selectedCampaignType,\r\n selectedVideoChannelType,\r\n selectedAdImpressionsType,\r\n selectedSponsoredProductCampaignType,\r\n itemId,\r\n selectedDeal,\r\n filteredDeals,\r\n deals,\r\n isPerfMaxCampaignDisabled,\r\n locationMap,\r\n } = this.state;\r\n let campaignTypeOptions = [];\r\n const { selectedAdType } = this.state;\r\n\r\n if (permissions.IsDomesticSimplifiedChineseEnabled) {\r\n const campaignTypesToShow = [this.standardCampaignType];\r\n if (itemId !== 'ShoppingCampaign') {\r\n campaignTypesToShow.push(this.audienceCampaignType);\r\n }\r\n return campaignTypesToShow.map((campaigntype, index) =>\r\n (\r\n \r\n ));\r\n }\r\n\r\n if (itemId === 'VideoCampaign') {\r\n campaignTypeOptions = this.xandrVideoCampaignType.map((item, index) => (\r\n \r\n ));\r\n return campaignTypeOptions;\r\n }\r\n\r\n if (itemId === 'MediaPackageCampaign') {\r\n const displayDeals = permissions.IsDealFilterEnabled ? filteredDeals : deals;\r\n const options = displayDeals.map((item, index) => {\r\n const hideDealImpression = isNetflixDeal(item);\r\n const isDealGenreRestricted = get(permissions, 'IsDealFilterEnabled', false);\r\n\r\n const configItem = {\r\n id: item.Id,\r\n title: item.Name,\r\n description: (\r\n
\r\n {!hideDealImpression && item.EstimatedImpressions &&
{i18n.getString(_TL_('Estimated Impressions'))}: {bytesForHuman(item.EstimatedImpressions)}
}\r\n
{i18n.getString(_TL_('Deal Id'))}: {item.Id}
\r\n {/* todos: get location by ids */}\r\n
{i18n.getString(_TL_('Country'))}: {targetConstraintsToText(item, 'Location', i18n, locationMap)}
\r\n {\r\n item.MinimumBid ?\r\n
{i18n.getString(_TL_('Minimum bid'))}: {decimal.fromFloatToString(item.MinimumBid, 2)} {MTCurrencyConvertor[item.Currency] || 'USD'}
:\r\n
{i18n.getString(_TL_('Minimum bid'))}: {i18n.getString(_TL_('Unavailable'))}
\r\n }\r\n
{i18n.getString(_TL_('Duration'))}: {getVideoConstraintDuration(item, i18n)}
\r\n
{i18n.getString(_TL_('Gender targeting'))}: {targetConstraintsToText(item, 'Gender', i18n)}
\r\n
{i18n.getString(_TL_('Device targeting'))}: {targetConstraintsToText(item, 'Device', i18n)}
\r\n
{i18n.getString(_TL_('Age targeting'))}: {item.AgeRange || targetConstraintsToText(item, 'Age', i18n)}
\r\n
{i18n.getString(_TL_('Audience targeting'))}: {targetConstraintsToText(item, 'Audience', i18n)}
\r\n {isDealGenreRestricted &&
{i18n.getString(_TL_('Genre targeting'))}: {item.Genre ? 'Available' : 'Unavailable'}
}\r\n
\r\n ),\r\n };\r\n return (\r\n \r\n );\r\n });\r\n\r\n return options;\r\n }\r\n\r\n if (itemId === 'AdImpressions') {\r\n campaignTypeOptions = this.adImpressionCampaignType.map((item, index) => (\r\n \r\n ));\r\n return campaignTypeOptions;\r\n }\r\n\r\n if (itemId === 'SponsoredShoppingCampaign') {\r\n return sponsoredProductCampaignTypeConfig(i18n, permissions).map((item, index) => (\r\n \r\n ));\r\n }\r\n\r\n if (this.state.showPerfMaxCampaignTypeOptions) {\r\n const warningMessage = this.getConversionGoalWarningMessage(true);\r\n const campaignTypeLength = campaignTypeOptions.length;\r\n\r\n campaignTypeOptions.push();\r\n }\r\n\r\n if (this.state.showShoppingCampaignTypeOptions) {\r\n const warningMessage = isSmartShoppingCampaignEnabled && this.getSmartShoppingWarningMessage();\r\n const campaignTypeLength = campaignTypeOptions.length;\r\n\r\n const shoppingOptions = this.shopppingCampaignTypes.map((item, index) => {\r\n const isSmartShoppingDisabled = item.id === shoppingCampaignTypes.smart && this.state.isSmartShoppingCampaignDisabled;\r\n return ();\r\n });\r\n campaignTypeOptions = campaignTypeOptions.concat(shoppingOptions);\r\n return campaignTypeOptions;\r\n } else if (itemId === 'ShoppingCampaign' && this.state.showPerfMaxCampaignTypeOptions) {\r\n const campaignTypeLength = campaignTypeOptions.length;\r\n\r\n campaignTypeOptions.push();\r\n return campaignTypeOptions;\r\n } else if (this.state.showPerfMaxCampaignTypeOptions) {\r\n const campaignTypeLength = campaignTypeOptions.length;\r\n\r\n campaignTypeOptions.push();\r\n campaignTypeOptions.push();\r\n return campaignTypeOptions;\r\n }\r\n\r\n const searchAudienceOptions = this.adTypes.map((item, index) => ());\r\n\r\n return searchAudienceOptions;\r\n }\r\n\r\n renderConsentCheckBox(i18n) {\r\n const { netflixDealTCAccepted } = this.state;\r\n return (\r\n
\r\n \r\n {i18n.getString(_TL_('I have read and agree to the '))}\r\n \r\n {i18n.getString(_TL_('Netflix Inventory Policy'))}\r\n \r\n {i18n.getString(_TL_('.'))}\r\n \r\n }\r\n onChange={this.handleCheckNFDealIterm}\r\n disabled={this.isAcceptNetflixDealTCs(this.props)}\r\n defaultChecked={netflixDealTCAccepted}\r\n />\r\n \r\n {i18n.getString(_TL_('Once you save your campaign, you cannot change your deal. If at some point you want to change your deal, you\\'ll need to create a new campaign.'))}\r\n \r\n \r\n \r\n {\r\n i18n.getString(_TL_('Advertisers in the following verticals are required to submit their licenses and/or proof of creative approval in select markets to serve their ads on Netflix: Alcohol, Financial Services, Insurance, High fat/sugar/salt foods, online sports betting, state-run lotteries, healthcare, pharmaceuticals, and dating. Licenses and proof of creative approval can be submitted in web forms linked through the'))\r\n }\r\n \r\n \r\n {i18n.getString(_TL_('Restricted policy page.'))}\r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n render() {\r\n const {\r\n i18n, isOpen, classes, onClose, isMMCSetup, permissions, isSmartShoppingCampaignEnabled\r\n } = this.props;\r\n const { itemId, deals, locationFilterOptions } = this.state;\r\n let optionsLength = 2;\r\n\r\n if (this.state.showPerfMaxCampaignTypeOptions && !(itemId === 'ShoppingCampaign' && !isSmartShoppingCampaignEnabled)) {\r\n optionsLength = 3;\r\n }\r\n\r\n const width = 1191 - ((3 - optionsLength) * 334);\r\n\r\n return (\r\n \r\n {\r\n permissions.IsDealFilterEnabled &&\r\n itemId === 'MediaPackageCampaign' &&\r\n deals.length > 0 &&\r\n \r\n }\r\n
\r\n {this.state.loading ? : this.renderOptions()}\r\n
\r\n {\r\n this.state.showShoppingCampaignTypeOptions && this.state.showPerfMaxCampaignTypeOptions && isBoolean(isMMCSetup) && !isMMCSetup &&\r\n \r\n {i18n.getString(_TL_('No merchant center stores found. Create a store in Merchant Center in order to run product ads.'))}\r\n \r\n }\r\n\r\n {\r\n itemId === 'MediaPackageCampaign' &&\r\n this.isNetflixDealSelected() &&\r\n this.renderConsentCheckBox(i18n)\r\n }\r\n\r\n
\r\n \r\n {i18n.getString(_TL_('Next'))}\r\n \r\n \r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nChooseAdsPanel.propTypes = {\r\n itemId: PropTypes.string.isRequired,\r\n isSmartShoppingCampaignEnabled: PropTypes.bool.isRequired,\r\n classes: PropTypes.shape(mapObject(\r\n getChooseAdsPanelStyles({}, {}),\r\n constant(PropTypes.string.isRequired)\r\n )).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n isOpen: PropTypes.bool.isRequired,\r\n onClose: PropTypes.func,\r\n preferenceService: PropTypes.shape({}).isRequired,\r\n deals: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n handleNavigation: PropTypes.func.isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n permissions: PropTypes.shape({\r\n dynamic: PropTypes.shape({\r\n PMaxLite: PropTypes.bool,\r\n }).isRequired,\r\n IsAIMCampaignEnabled: PropTypes.bool.isRequired,\r\n IsDealFilterEnabled: PropTypes.bool.isRequired,\r\n IsSmartShoppingCampaignEnabled: PropTypes.bool.isRequired,\r\n IsDomesticSimplifiedChineseEnabled: PropTypes.bool,\r\n IsEnabledDealsV2: PropTypes.bool,\r\n }).isRequired,\r\n serverContext: PropTypes.shape({}).isRequired,\r\n showPerfMaxCampaignTypeOptions: PropTypes.bool,\r\n isMMCSetup: PropTypes.bool.isRequired,\r\n};\r\n\r\nChooseAdsPanel.defaultProps = {\r\n onClose: () => { },\r\n showPerfMaxCampaignTypeOptions: false,\r\n};\r\n\r\nexport const StyledChooseAdsPanel = withDefaultStyles(withI18nConsumer(withScope(withSiteMap(withPermissions(ChooseAdsPanel)))), getChooseAdsPanelStyles);\r\n","import React, { Fragment } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _, { compose, mapObject, constant, map, findWhere } from 'underscore';\r\nimport { withScope, QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { getLocalStorage } from '@bingads-webui/storage';\r\nimport { withDFMCache } from '@bingads-webui/dfm-cache';\r\nimport { withPreference } from '@bingads-webui-react/preference-context';\r\nimport { withSiteMap, siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { Stack } from '@fluentui/react';\r\nimport { withCcJsData } from '@bingads-webui-cc-react/js-data-rest';\r\nimport { Constants as CCUIConstants } from '@bingads-webui-clientcenter/entity-utils';\r\nimport { FAC_FEATURE_ID } from '@bingads-webui-campaign/recommendation-core';\r\n\r\nimport { StyledActionList } from '../components/action-list';\r\nimport { getChooseObjectiveStyles } from '../styles';\r\nimport {\r\n objectivesConfig,\r\n toolsConfig,\r\n navigateSelectedTools,\r\n navigateSelectedObjective,\r\n withCreationHeader,\r\n shoppingCampaignTypes,\r\n campaignTypes,\r\n objectivesForPerfMax,\r\n adImpressionsCampaignTypes,\r\n getProductData,\r\n} from '../helper';\r\nimport { StyledChooseAdsPanel } from '../components/choose-ads-panel';\r\n\r\nclass ChooseObjective extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.localStorage = getLocalStorage();\r\n this.isLocalStorageSupported = this.localStorage.supportsStorage();\r\n if (this.isLocalStorageSupported) {\r\n this.localStorage.invalidate('CampaignObjective');\r\n }\r\n\r\n this.state = {\r\n isPanelOpen: false,\r\n selectedItemId: null,\r\n isMMCSetup: null,\r\n couponDetails: null,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const {\r\n perfMarker,\r\n prefetchChunks,\r\n scope,\r\n ccJsData,\r\n permissions,\r\n i18n,\r\n serverContext,\r\n } = this.props;\r\n if (perfMarker) {\r\n perfMarker.done();\r\n }\r\n if (typeof prefetchChunks === 'function') {\r\n prefetchChunks();\r\n }\r\n const { uid, cid, aid } = scope.values;\r\n const {\r\n CurrentAccount: {\r\n CurrencyCode,\r\n },\r\n } = serverContext;\r\n if (permissions.dynamic.FACForShopping) {\r\n this.getFACData({\r\n ccJsData,\r\n aid,\r\n i18n,\r\n CurrencyCode,\r\n });\r\n }\r\n this.getProductData = _.once(() => {\r\n const getProductDataWithCache = withDFMCache(getProductData, 'getProductScopeDFM', this);\r\n const getProductDataPromise = Promise.resolve(getProductDataWithCache(cid, aid, uid));\r\n getProductDataPromise.then((data) => {\r\n const hasAnyStores = !_.isEmpty(data) && !_.isEmpty(data.ProductCollectionAccounts);\r\n this.setState({\r\n isMMCSetup: hasAnyStores,\r\n });\r\n });\r\n });\r\n this.setSelectedItemFromQueryString();\r\n }\r\n\r\n getFACData = ({\r\n ccJsData, aid, i18n, CurrencyCode,\r\n }) => {\r\n ccJsData.FeatureAdoptionCoupon\r\n .findAll({ aid })\r\n .then((coupons) => {\r\n if (!_.isArray(coupons) || coupons.length === 0) {\r\n return [];\r\n }\r\n return coupons;\r\n })\r\n .catch(() => [])\r\n .then(coupons => _.filter(\r\n coupons,\r\n ({ Status, FeatureId }) => FeatureId === parseInt(FAC_FEATURE_ID.SHOPPING_CAMPAIGN, 10)\r\n && (\r\n Status === CCUIConstants.RecommendationAdoptionStatus.NotInProgess\r\n || Status === CCUIConstants.RecommendationAdoptionStatus.Active\r\n )\r\n ))\r\n .then((coupons) => {\r\n if (coupons.length > 0) {\r\n this.setState({\r\n couponDetails: {\r\n ...coupons[0],\r\n CouponValueWithCurrency: i18n.formatCurrency(coupons[0].CouponValue, CurrencyCode),\r\n },\r\n });\r\n }\r\n });\r\n };\r\n\r\n getDescription = i18n => i18n.getString(_TL_('A successful campaign needs a clear goal, and setting your goal here lets us suggest the most helpful Microsoft Advertising features for your campaign. You\\'ll still have access to all Microsoft Advertising features regardless of the goal you choose.'));\r\n\r\n get showPerfMaxCampaignTypeOptions() {\r\n const { permissions } = this.props;\r\n return permissions.dynamic.PerformanceMaxCampaigns && _.contains(objectivesForPerfMax, this.state.selectedItemId);\r\n }\r\n\r\n setSelectedItemFromQueryString = () => {\r\n const { scope, i18n, permissions } = this.props;\r\n const selectedItemKeyFromSearch = scope.values && scope.values.selectedCampaignObjectiveKey;\r\n const objectiveItems = objectivesConfig({ i18n, permissions }).filter(item => item.isEnabled);\r\n\r\n if (objectiveItems.some(item => item.id === selectedItemKeyFromSearch)) {\r\n this.handleSelectedObjective({ id: selectedItemKeyFromSearch });\r\n }\r\n };\r\n\r\n showPanel = () => {\r\n this.setState({ isPanelOpen: true });\r\n if (this.props.permissions.dynamic.PerformanceMaxCampaigns) {\r\n this.getProductData();\r\n }\r\n };\r\n\r\n closePanel = () => {\r\n this.setState({ isPanelOpen: false, selectedItemId: null });\r\n };\r\n\r\n handleSelectedObjective = ({ id: itemId }) => {\r\n const {\r\n config, permissions, scope, siteMap,\r\n } = this.props;\r\n const isSmartCampaign = itemId === 'SmartCampaign';\r\n const isHotelBooking = itemId === 'HotelBooking';\r\n const isAppInstall = itemId === 'AppInstalls';\r\n const isMSStoreAdsGAWorkflow = itemId === 'MSStoreAds';\r\n\r\n if (isMSStoreAdsGAWorkflow) {\r\n scope.history.push({\r\n pathname: '/campaign/vnext/createcampaign/msstoreads',\r\n search: scope.history.location.search,\r\n });\r\n return;\r\n }\r\n\r\n if (isHotelBooking) {\r\n const IsRenameHotelToLodgingEnabled = this.props.permissions && this.props.permissions.dynamic && this.props.permissions.dynamic.IsRenameHotelToLodgingEnabled;\r\n scope.history.push({\r\n pathname: IsRenameHotelToLodgingEnabled ? '/campaign/vnext/createcampaign/lodging' : '/campaign/vnext/createcampaign/hotel',\r\n search: scope.history.location.search,\r\n });\r\n return;\r\n }\r\n\r\n if (isSmartCampaign) {\r\n const { uid, cid, aid } = scope.values;\r\n window.location.href = `/campaign/smart?cid=${cid}&aid=${aid}&uid=${uid}#/CreateCampaign`;\r\n return;\r\n }\r\n\r\n if (isAppInstall) {\r\n navigateSelectedObjective({\r\n isShopping: false,\r\n isAudience: false,\r\n isSmartShopping: false,\r\n siteMap: [findWhere(siteMap, { id: 'campaign-create' })],\r\n scope,\r\n });\r\n }\r\n\r\n const isShopping = itemId.indexOf('ShoppingCampaign') !== -1;\r\n this.setState({ isPanelOpen: false, selectedItemId: itemId });\r\n config.set('CampaignObjective', itemId);\r\n\r\n if (this.isLocalStorageSupported) {\r\n this.localStorage.set('CampaignObjective', itemId);\r\n }\r\n\r\n if ((permissions.IsVideoAdsForCampaignEnabled && !permissions.dynamic.XandrVideoCampaigns) && itemId === 'VideoCampaign') {\r\n navigateSelectedObjective({\r\n isVideo: true, isAudience: true, siteMap: [findWhere(siteMap, { id: 'campaign-create' })], scope, permissions,\r\n });\r\n } else if (permissions.IsManualCpmEnabled && !permissions.dynamic.XandrDisplayAdsCampaigns && itemId === 'AdImpressions') {\r\n // only native ads enabled\r\n navigateSelectedObjective({\r\n isAudience: true, siteMap: [findWhere(siteMap, { id: 'campaign-create' })], scope,\r\n });\r\n } else if (!permissions.IsManualCpmEnabled && permissions.dynamic.XandrDisplayAdsCampaigns && itemId === 'AdImpressions') {\r\n // only display ad enabled\r\n navigateSelectedObjective({\r\n isAudience: true, isDisplayAds: true, siteMap: [findWhere(siteMap, { id: 'campaign-create' })], scope,\r\n });\r\n } else if (\r\n (permissions.IsAIMCampaignEnabled && itemId !== 'SponsoredShoppingCampaign' &&\r\n !(permissions.IsDomesticSimplifiedChineseEnabled && itemId === 'ShoppingCampaign')) ||\r\n (permissions.IsSmartShoppingCampaignEnabled && !permissions.IsDomesticSimplifiedChineseEnabled && !permissions.dynamic.SSCDeprecation && itemId === 'ShoppingCampaign') ||\r\n (permissions.IsDealEnabledForMsAds && itemId === 'MediaPackageCampaign') ||\r\n (permissions.IsManualCpmEnabled && permissions.dynamic.XandrDisplayAdsCampaigns && itemId === 'AdImpressions') ||\r\n (permissions.dynamic.XandrVideoCampaigns && itemId === 'VideoCampaign') ||\r\n (itemId === 'SponsoredShoppingCampaign')) {\r\n this.showPanel();\r\n } else {\r\n navigateSelectedObjective({\r\n isShopping, isAudience: false, siteMap: [findWhere(siteMap, { id: 'campaign-create' })], scope,\r\n });\r\n }\r\n };\r\n\r\n handleNavigation = (selectedType) => {\r\n const { scope, siteMap, permissions } = this.props;\r\n if (!selectedType) {\r\n return;\r\n }\r\n\r\n if (this.state.selectedItemId === 'VideoCampaign') {\r\n navigateSelectedObjective({\r\n isVideo: true, isAudience: true, siteMap: [findWhere(siteMap, { id: 'campaign-create' })], scope, permissions,\r\n });\r\n return;\r\n }\r\n\r\n if (this.state.selectedItemId === 'MediaPackageCampaign') {\r\n navigateSelectedObjective({\r\n isMediaPackage: true, siteMap: [findWhere(siteMap, { id: 'campaign-create' })], scope,\r\n });\r\n return;\r\n }\r\n\r\n if (this.state.selectedItemId === 'AdImpressions') {\r\n if (selectedType === adImpressionsCampaignTypes.displayAds) {\r\n navigateSelectedObjective({\r\n isAudience: true, isDisplayAds: true, siteMap: [findWhere(siteMap, { id: 'campaign-create' })], scope,\r\n });\r\n return;\r\n }\r\n\r\n navigateSelectedObjective({\r\n isAudience: true, siteMap: [findWhere(siteMap, { id: 'campaign-create' })], scope,\r\n });\r\n return;\r\n }\r\n\r\n if (this.state.selectedItemId === 'SponsoredShoppingCampaign') {\r\n navigateSelectedObjective({\r\n sponsoredBrandAdType: selectedType,\r\n siteMap: [findWhere(siteMap, { id: 'campaign-create' })],\r\n scope,\r\n });\r\n\r\n return;\r\n }\r\n\r\n navigateSelectedObjective({\r\n isShopping: this.state.selectedItemId.indexOf('ShoppingCampaign') !== -1,\r\n isAudience: selectedType === 'AudienceAds',\r\n isNewAudience: permissions.IsNewStaticAudienceCampaignCreationEnabled,\r\n isNewSearch: permissions.dynamic.SearchCampaignCreationRevamp,\r\n isSmartShopping: selectedType === shoppingCampaignTypes.smart,\r\n isPerfMax: selectedType === campaignTypes.perfMax,\r\n siteMap: [findWhere(siteMap, { id: 'campaign-create' })],\r\n scope,\r\n });\r\n };\r\n\r\n renderActionList = () => {\r\n const { i18n, permissions } = this.props;\r\n const objectives = map(objectivesConfig({ i18n, permissions }), item => ({\r\n onClick: this.handleSelectedObjective,\r\n isSelected: (!!this.state.selectedItemId) && this.state.selectedItemId === item.id,\r\n FACInfo: this.state.couponDetails,\r\n ...item,\r\n }));\r\n const tools = map(toolsConfig({ i18n, permissions }), item => ({\r\n onClick: params => navigateSelectedTools({\r\n ...this.props,\r\n ...params,\r\n }),\r\n isSelected: (!!this.state.selectedItemId) && this.state.selectedItemId === item.id,\r\n ...item,\r\n }));\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n render() {\r\n const {\r\n classes,\r\n serverContext,\r\n i18n,\r\n preferenceService,\r\n permissions,\r\n } = this.props;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n \r\n {this.getDescription(i18n)}\r\n \r\n
\r\n {this.renderActionList()}\r\n
\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nChooseObjective.propTypes = {\r\n classes: PropTypes.shape(mapObject(\r\n getChooseObjectiveStyles({}, {}),\r\n constant(PropTypes.string.isRequired)\r\n )).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n preferenceService: PropTypes.shape({}).isRequired,\r\n permissions: PropTypes.shape({\r\n IsAIMCampaignEnabled: PropTypes.bool.isRequired,\r\n IsDynamicSearchAdsV1Enabled: PropTypes.bool.isRequired,\r\n IsAdultAdsEnabled: PropTypes.bool.isRequired,\r\n IsUserAppInstallAdsAllowed: PropTypes.bool.isRequired,\r\n IsEnhancedShoppingCampaignAllowed: PropTypes.bool.isRequired,\r\n IsSmartShoppingCampaignEnabled: PropTypes.bool.isRequired,\r\n IsVideoAdsForCampaignEnabled: PropTypes.bool.isRequired,\r\n IsDealEnabledForMsAds: PropTypes.bool.isRequired,\r\n IsAmplifyEnabled: PropTypes.bool.isRequired,\r\n IsNewStaticAudienceCampaignCreationEnabled: PropTypes.bool.isRequired,\r\n dynamic: PropTypes.shape({\r\n PerformanceMaxCampaigns: PropTypes.bool,\r\n XandrVideoCampaigns: PropTypes.bool,\r\n XandrDisplayAdsCampaigns: PropTypes.bool,\r\n FACForShopping: PropTypes.bool,\r\n DisplayPlusCampaigns: PropTypes.bool,\r\n SSCDeprecation: PropTypes.bool,\r\n SearchCampaignCreationRevamp: PropTypes.bool,\r\n }),\r\n }).isRequired,\r\n // config: e.g. component/config/index file should be inject from the options\r\n // eslint-disable-next-line react/forbid-prop-types\r\n config: PropTypes.object.isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n prefetchChunks: 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 ccJsData: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nconst wrap = compose(\r\n TempComponent => withDefaultStyles(TempComponent, getChooseObjectiveStyles),\r\n withScope,\r\n withI18nConsumer,\r\n withPreference,\r\n withPermissions,\r\n withSiteMap,\r\n withCcJsData,\r\n TempComponent => withCreationHeader(TempComponent, undefined, undefined, false)\r\n);\r\n\r\nexport const StyledCampaignChooseObjective = wrap(ChooseObjective);\r\n","/* istanbul ignore file */\r\nimport React from 'react';\r\nimport Promise from 'bluebird';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { ProgressiveLoadingBlock } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport appConfig from '@bingads-webui-component-legacy/config/index';\r\nimport { StyledCampaignChooseObjective } from './choose-objective';\r\n\r\nconst chooseObjectiveViewPromise = () => Promise.resolve(props => ());\r\n\r\n\r\nexport const ChooseObjectiveWithLegacyConfig = withI18nConsumer((props) => {\r\n const ChooseObjectiveView = React.lazy(() => { // eslint-disable-line arrow-body-style\r\n return chooseObjectiveViewPromise(props).then(InjectedView => ({\r\n default: () => (),\r\n }));\r\n });\r\n\r\n return (\r\n }>\r\n \r\n );\r\n});\r\n","import { isFunction, some, isEmpty } from 'underscore';\r\nimport { merge } from '@bingads-webui/primitive-utilities';\r\nimport {\r\n campaignSettingsStyles,\r\n creationCommonStyle,\r\n dsaCampaignStyles,\r\n} from '@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles';\r\nimport {\r\n helpbuttonStyle, linkStyle, containerBudgetStyle,\r\n sharedBudgetGridWrapper, inputFieldStyle\r\n} from '@bingads-webui-campaign-react/common-styles';\r\nimport { stepWizardStyle } from './step-wizard';\r\nimport { CreationContainerContentOverrideStyle } from './creation-content-container-style';\r\n\r\nfunction resolveStyles(theme, ...styles) {\r\n const resolvedStyles = styles.map(s => (isFunction(s) ? s(theme) : s));\r\n if (some(resolvedStyles, isEmpty)) {\r\n throw new Error('Cannot pass in empty style!');\r\n }\r\n return resolvedStyles;\r\n}\r\nexport const getSearchCreationStyle = (_, { palette = {} }) => {\r\n const globalStyles = merge(\r\n {},\r\n ...resolveStyles(\r\n { palette },\r\n stepWizardStyle,\r\n helpbuttonStyle,\r\n inputFieldStyle,\r\n CreationContainerContentOverrideStyle\r\n )\r\n );\r\n const commonStyles = merge(\r\n {},\r\n ...resolveStyles(\r\n { palette },\r\n containerBudgetStyle,\r\n sharedBudgetGridWrapper,\r\n linkStyle\r\n )\r\n );\r\n const searchCreationStyles = merge(\r\n {},\r\n ...resolveStyles(\r\n { palette },\r\n dsaCampaignStyles,\r\n campaignSettingsStyles,\r\n creationCommonStyle\r\n )\r\n );\r\n return {\r\n '@global': globalStyles,\r\n CampaignCreationSearch: {\r\n ...searchCreationStyles,\r\n ...commonStyles,\r\n },\r\n };\r\n};\r\n","/* istanbul ignore file */\r\nimport React from 'react';\r\nimport Promise from 'bluebird';\r\nimport PropTypes from 'prop-types';\r\nimport { mapObject, constant, isFunction } from 'underscore';\r\nimport { withTheme } from 'react-jss';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { withDelayedStyles } from '@bingads-webui-campaign-react/common-utils';\r\nimport CampaignCreateAdvancedView from '@bingads-webui-campaign-legacy/campaign-create-advanced/view/index';\r\nimport { getSearchCreationStyle } from '../styles/campaign-creation-search-styles';\r\nimport { InjectWrapperWithHoC, withCreationHeader } from '../helper';\r\nimport VerticalTemplate from '../template/legacy-steps-template.pug';\r\n\r\nfunction callbackAfterInjected(view) {\r\n if (view && isFunction(view.on)) {\r\n view.on('begin:switch', view.onSwitch);\r\n view.on('end:switch', view.onSwitched);\r\n }\r\n}\r\n\r\nconst getDelayedCreationStyles = () => (\r\n import(/* webpackMode: 'eager' */'../styles')\r\n .then(({ getEntityCreationStyle }) => ({\r\n getDelayedStyles: getEntityCreationStyle,\r\n }))\r\n);\r\n\r\nfunction CampaignCreationSearch(props) {\r\n const {\r\n serverContext: {\r\n CurrentAccount: {\r\n CurrencyCode,\r\n },\r\n },\r\n perfMarker,\r\n } = props;\r\n return (\r\n Promise.resolve(CampaignCreateAdvancedView)}\r\n InjectViewOption={props.adExtensionsDynamicFeaturesLoader({\r\n permissions: props.permissions,\r\n theme: props.theme,\r\n scope: props.scope,\r\n instrumentation: props.instrumentation,\r\n i18n: props.i18n,\r\n })\r\n .then(adExtensionsDynamicFeatures => ({\r\n accountCurrencyCode: CurrencyCode,\r\n perfMarker,\r\n template: VerticalTemplate,\r\n usePanel: true,\r\n isForVNext: true,\r\n adExtensionsDynamicFeatures,\r\n serverContext: props.serverContext,\r\n scope: props.scope,\r\n }))}\r\n styleScopeName=\"CampaignCreationSearch\"\r\n callbackAfterInjected={callbackAfterInjected}\r\n />);\r\n}\r\n\r\nCampaignCreationSearch.propTypes = {\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 classes: PropTypes.shape(mapObject(\r\n getSearchCreationStyle({}, {}),\r\n constant(PropTypes.string.isRequired)\r\n )).isRequired,\r\n\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n\r\n permissions: PropTypes.shape({}).isRequired,\r\n theme: PropTypes.shape({}).isRequired,\r\n scope: PropTypes.shape({\r\n values: PropTypes.shape({\r\n cid: PropTypes.number.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n i18n: PropTypes.shape({}).isRequired,\r\n instrumentation: PropTypes.shape({}).isRequired,\r\n adExtensionsDynamicFeaturesLoader: PropTypes.func.isRequired,\r\n};\r\n\r\nexport const StyledCampaignCreationSearch =\r\n withDelayedStyles(withCreationHeader(withTheme(CampaignCreationSearch)), getSearchCreationStyle, getDelayedCreationStyles, 'shared_budget_grid_loaded');\r\n","/* istanbul ignore file */\r\nimport React from 'react';\r\nimport Promise from 'bluebird';\r\nimport PropTypes from 'prop-types';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { AudienceCampaignCreationWizard } from '@bingads-webui-campaign-legacy/audience-campaign/loader';\r\nimport { getEntityCreationStyle } from '../styles';\r\nimport { InjectWrapperWithHoC, withCreationHeader, getCommonCampaignCreationViewOptions } from '../helper';\r\nimport VerticalLayout from '../template/steps-template.pug';\r\nimport HeaderTemplate from '../template/header-template.pug';\r\n\r\nfunction CampaignCreationAudience(props) {\r\n return (\r\n Promise.resolve(AudienceCampaignCreationWizard)}\r\n InjectViewOption={{\r\n ...getCommonCampaignCreationViewOptions(props),\r\n layout: VerticalLayout,\r\n headerTemplate: HeaderTemplate,\r\n serverContext: props.serverContext,\r\n }}\r\n styleScopeName=\"CampaignCreationAudience\"\r\n />\r\n );\r\n}\r\n\r\nCampaignCreationAudience.propTypes = {\r\n serverContext: PropTypes.shape({\r\n CurrentAccount: PropTypes.shape({\r\n CurrencyCode: PropTypes.string.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }),\r\n};\r\n\r\nCampaignCreationAudience.defaultProps = {\r\n i18n: {\r\n getString: text => text,\r\n },\r\n};\r\n\r\nexport const StyledCampaignCreationAudience =\r\n withDefaultStyles(withCreationHeader(CampaignCreationAudience), getEntityCreationStyle);\r\n","/* istanbul ignore file */\r\nimport React from 'react';\r\nimport Promise from 'bluebird';\r\nimport PropTypes from 'prop-types';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { AudienceCampaignCreationWizard } from '@bingads-webui-campaign-legacy/audience-campaign/loader';\r\nimport PageContext from '@bingads-webui-static-legacy/page-context';\r\nimport { getEntityCreationStyle } from '../styles';\r\nimport { InjectWrapperWithHoC, withCreationHeader } from '../helper';\r\nimport VerticalLayout from '../template/steps-template.pug';\r\nimport HeaderTemplate from '../template/header-template.pug';\r\n\r\nfunction CampaignCreationAudienceVideo(props) {\r\n const {\r\n serverContext: {\r\n CurrentAccount: {\r\n CurrencyCode,\r\n },\r\n CurrentAccountInActive,\r\n Permissions: {\r\n IsReadOnlyUser,\r\n IsImpressionTrackingUrlsEnabled,\r\n },\r\n },\r\n perfMarker,\r\n i18n,\r\n } = props;\r\n return (\r\n Promise.resolve(AudienceCampaignCreationWizard)}\r\n InjectViewOption={{\r\n viewContext: {\r\n accountCurrencyCode: CurrencyCode,\r\n isReadOnlyUser: IsReadOnlyUser,\r\n CurrentAccountInActive,\r\n },\r\n perfMarker,\r\n layout: VerticalLayout,\r\n headerTemplate: HeaderTemplate,\r\n isForVNext: true,\r\n isImpressionTrackingUrlsEnabled: IsImpressionTrackingUrlsEnabled,\r\n isVideo: true,\r\n newI18n: i18n,\r\n deps: {\r\n pageContext: PageContext,\r\n },\r\n }}\r\n styleScopeName=\"CampaignCreationAudience\"\r\n />);\r\n}\r\n\r\nCampaignCreationAudienceVideo.propTypes = {\r\n serverContext: PropTypes.shape({\r\n CurrentAccount: PropTypes.shape({\r\n CurrencyCode: PropTypes.string.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }),\r\n};\r\n\r\nCampaignCreationAudienceVideo.defaultProps = {\r\n i18n: {\r\n getString: text => text,\r\n },\r\n};\r\n\r\nexport const StyledCampaignCreationAudienceVideo =\r\n withDefaultStyles(withCreationHeader(CampaignCreationAudienceVideo), getEntityCreationStyle);\r\n","/* istanbul ignore file */\r\nimport React from 'react';\r\nimport Promise from 'bluebird';\r\nimport PropTypes from 'prop-types';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport ShoppingCampaignCreationView from '@bingads-webui-campaign-legacy/shopping-campaign/view/campaign-creation/index';\r\nimport { useJsDataContext } from '@bingads-webui-cc-react/js-data-rest';\r\nimport { useShoppingFAC } from '@bingads-webui-campaign-react/shopping-coupon-callout';\r\nimport { getEntityCreationStyle } from '../styles';\r\nimport { InjectWrapperWithHoC, withCreationHeader } from '../helper';\r\n\r\nconst getShoppingCampaignCreationComponent = isMSStoreAdsGAWorkflow => (props) => {\r\n const ccJsData = useJsDataContext();\r\n const { perfMarker, scope, siteMap } = props;\r\n const {\r\n getFACCoupon,\r\n updateCouponStatus,\r\n } = useShoppingFAC({\r\n scope,\r\n siteMap,\r\n });\r\n\r\n return (\r\n
\r\n Promise.resolve(ShoppingCampaignCreationView)}\r\n InjectViewOption={{\r\n perfMarker,\r\n isMSStoreAdsGAWorkflow,\r\n ccJsData,\r\n scope,\r\n siteMap,\r\n getFACCoupon,\r\n updateCouponStatus,\r\n }}\r\n styleScopeName=\"CampaignCreationSearchShopping\"\r\n />\r\n
\r\n );\r\n};\r\n\r\nconst CampaignCreationSearchShopping = getShoppingCampaignCreationComponent(false);\r\nconst CampaignCreationMSStoreAds = getShoppingCampaignCreationComponent(true);\r\n\r\nconst propTypes = {\r\n serverContext: PropTypes.shape({\r\n CurrentAccount: PropTypes.shape({\r\n CurrencyCode: PropTypes.string.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n scope: PropTypes.shape({}).isRequired,\r\n siteMap: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n};\r\n\r\nCampaignCreationSearchShopping.propTypes = propTypes;\r\nCampaignCreationMSStoreAds.propTypes = propTypes;\r\n\r\nexport const StyledCampaignCreationSearchShopping =\r\n withDefaultStyles(withCreationHeader(CampaignCreationSearchShopping), getEntityCreationStyle);\r\nexport const StyledCampaignCreationMSStoreAds =\r\n withDefaultStyles(withCreationHeader(CampaignCreationMSStoreAds), getEntityCreationStyle);\r\n","/* istanbul ignore file */\r\nimport React from 'react';\r\nimport Promise from 'bluebird';\r\nimport PropTypes from 'prop-types';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { AudienceCampaignCreationWizard } from '@bingads-webui-campaign-legacy/audience-campaign/loader';\r\nimport decimal from '@bingads-webui-component-legacy/humanize/decimal';\r\nimport PageContext from '@bingads-webui-static-legacy/page-context';\r\nimport { getEntityCreationStyle } from '../styles';\r\nimport { InjectWrapperWithHoC, withCreationHeader } from '../helper';\r\nimport VerticalLayout from '../template/steps-template.pug';\r\nimport HeaderTemplate from '../template/header-template.pug';\r\n\r\nconst $top = 10000;\r\n\r\nfunction CampaignCreationAudienceShopping(props) {\r\n const {\r\n serverContext: {\r\n CurrentAccount: {\r\n CurrencyCode,\r\n },\r\n Permissions: {\r\n IsReadOnlyUser,\r\n IsEnabledForDynamicFeedCampaign,\r\n },\r\n CurrentAccountInActive,\r\n },\r\n perfMarker,\r\n } = props;\r\n return (\r\n Promise.resolve(AudienceCampaignCreationWizard)}\r\n InjectViewOption={{\r\n viewContext: {\r\n accountCurrencyCode: CurrencyCode,\r\n isReadOnlyUser: IsReadOnlyUser,\r\n CurrentAccountInActive,\r\n },\r\n audienceCampaignType: 'shopping',\r\n audienceCampaignSubType: 'audiencefeedbased',\r\n perfMarker,\r\n layout: VerticalLayout,\r\n headerTemplate: HeaderTemplate,\r\n initData: view => Promise.all(IsEnabledForDynamicFeedCampaign ?\r\n [view.getProductDataInit(), view.getFeedDataInit({ $top })] : [view.getProductDataInit()]),\r\n isForVNext: true,\r\n deps: {\r\n decimal,\r\n pageContext: PageContext,\r\n },\r\n }}\r\n styleScopeName=\"CampaignCreationAudienceShopping\"\r\n />);\r\n}\r\n\r\nCampaignCreationAudienceShopping.propTypes = {\r\n serverContext: PropTypes.shape({\r\n CurrentAccount: PropTypes.shape({\r\n CurrencyCode: PropTypes.string.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n decimal: PropTypes.shape({}).isRequired,\r\n PageContext: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nexport const StyledCampaignCreationAudienceShopping =\r\n withDefaultStyles(withCreationHeader(CampaignCreationAudienceShopping), getEntityCreationStyle);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { StaticAudienceCampaignCreation } from '@bingads-webui-campaign-react/static-audience-campaign-creation';\r\n// import { AudienceCampaignCreationWizard } from '@bingads-webui-campaign-legacy/audience-campaign/loader';\r\nimport { getEntityCreationStyle } from '../styles';\r\nimport { withCreationHeader, getCommonCampaignCreationViewOptions } from '../helper';\r\n\r\nfunction CampaignCreationAudienceSimplified(props) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nCampaignCreationAudienceSimplified.propTypes = {\r\n serverContext: PropTypes.shape({\r\n CurrentAccountInActive: PropTypes.bool.isRequired,\r\n Permissions: PropTypes.shape({\r\n IsReadOnlyUser: PropTypes.bool.isRequired,\r\n IsImpressionTrackingUrlsEnabled: PropTypes.bool.isRequired,\r\n }).isRequired,\r\n CurrentAccount: PropTypes.shape({\r\n CurrencyCode: PropTypes.string.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n classes: PropTypes.shape({\r\n CampaignCreationAudience: PropTypes.string.isRequired,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }),\r\n};\r\n\r\nCampaignCreationAudienceSimplified.defaultProps = {\r\n i18n: {\r\n getString: text => text,\r\n },\r\n};\r\n\r\nexport const StyledCampaignCreationAudienceSimplified =\r\n withDefaultStyles(withCreationHeader(CampaignCreationAudienceSimplified), getEntityCreationStyle);\r\n","/* istanbul ignore file */\r\nimport React from 'react';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { AdTypes } from '@bingads-webui-campaign-react/campaign-onboarding-v2';\r\nimport { ProgressiveLoadingBlock } from '@bingads-webui-campaign-react/shell-ui-common';\r\n\r\nconst getStandardShoppingCampaignWizardAsync = () => import(/* webpackMode: 'eager' */ '@bingads-webui-campaign-react/standard-shopping-wizard')\r\n .then(({ StandardShoppingCampaignWizard }) => StandardShoppingCampaignWizard);\r\n\r\nconst getComponent = getComponentAsync =>\r\n () => getComponentAsync()\r\n .then(component => ({ default: component }));\r\n\r\n\r\nconst StandardShoppingComponent = (props) => {\r\n const Component = React.lazy(getComponent(getStandardShoppingCampaignWizardAsync));\r\n return (\r\n }>\r\n \r\n \r\n );\r\n};\r\n\r\nconst getShoppingCampaignCreationWizardComponent = campaignTypeName => props => ;\r\n\r\nexport const StyledCampaignCreationSearchShoppingWizard =\r\n withDefaultStyles(getShoppingCampaignCreationWizardComponent(AdTypes.AudienceAndSearch));\r\nexport const StyledCampaignCreationAudienceShoppingWizard =\r\n withDefaultStyles(getShoppingCampaignCreationWizardComponent(AdTypes.ShoppingAudience));\r\n","import { isFunction, some, isEmpty } from 'underscore';\r\nimport { merge } from '@bingads-webui/primitive-utilities';\r\nimport {\r\n helpbuttonStyle, inputFieldStyle\r\n} from '@bingads-webui-campaign-react/common-styles';\r\n\r\nconst WizardDefaultLayoutOverrideStyle = {\r\n '.default-layout': {\r\n overflowY: 'hidden',\r\n },\r\n};\r\n\r\nfunction resolveStyles(theme, ...styles) {\r\n const resolvedStyles = styles.map(s => (isFunction(s) ? s(theme) : s));\r\n if (some(resolvedStyles, isEmpty)) {\r\n throw new Error('Cannot pass in empty style!');\r\n }\r\n return resolvedStyles;\r\n}\r\nexport const getSearchCreationV2Style = (_, { palette = {} }) => {\r\n const globalStyles = merge(\r\n {},\r\n ...resolveStyles(\r\n { palette },\r\n helpbuttonStyle,\r\n inputFieldStyle,\r\n WizardDefaultLayoutOverrideStyle\r\n )\r\n );\r\n return {\r\n '@global': globalStyles,\r\n };\r\n};\r\n","/* istanbul ignore file */\r\nimport React, { useCallback, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Promise from 'bluebird';\r\nimport { withTheme } from 'react-jss';\r\nimport { withProps } from '@bingads-webui-react/with-props';\r\nimport { withDelayedStyles } from '@bingads-webui-campaign-react/common-utils';\r\nimport { ProgressiveLoadingBlock } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { getSearchCreationV2Style } from '../styles/campaign-creation-search-v2-styles';\r\nimport { withCreationHeader } from '../helper';\r\n\r\nconst getSearchCampaignWizardAsync = () => import(/* webpackMode: 'eager' */ '@bingads-webui-campaign-react/search-campaign-wizard')\r\n .then(({ SearchCampaignCreationWizard }) => ({ default: SearchCampaignCreationWizard }));\r\n\r\nconst getDelayedCreationStyles = () => (\r\n import(/* webpackMode: 'eager' */'../styles')\r\n .then(({ getEntityCreationStyle }) => ({\r\n getDelayedStyles: getEntityCreationStyle,\r\n }))\r\n);\r\n\r\nconst CampaignCreationSearchV2 = (props) => {\r\n const {\r\n adExtensionsDynamicFeaturesLoader,\r\n permissions,\r\n theme,\r\n scope,\r\n instrumentation,\r\n i18n,\r\n } = props;\r\n\r\n const SearchCampaignCreationWizard = useMemo(() => React.lazy((() => getSearchCampaignWizardAsync())), []);\r\n\r\n const dynamicOptionsLoader = useCallback(\r\n () => Promise.props({\r\n adExtensionsDynamicFeatures: adExtensionsDynamicFeaturesLoader({\r\n permissions,\r\n theme,\r\n scope,\r\n instrumentation,\r\n i18n,\r\n }),\r\n adExtensionsAssociationsFactory:\r\n import(/* webpackChunkName: \"campaign-adgroup-creation\" */'@bingads-webui-campaign-react/ad-extensions-associations-factory'),\r\n })\r\n .then(({ adExtensionsDynamicFeatures, adExtensionsAssociationsFactory }) => ({\r\n adExtensionsDynamicFeatures,\r\n adExtensionsAssociationsFactory,\r\n }))\r\n .then(dynamicOptions => ({\r\n default: withProps({ dynamicOptions }, SearchCampaignCreationWizard),\r\n })),\r\n [adExtensionsDynamicFeaturesLoader, permissions, theme, scope, instrumentation, i18n, SearchCampaignCreationWizard]\r\n );\r\n\r\n const LazyView = useMemo(() => React.lazy(dynamicOptionsLoader), [dynamicOptionsLoader]);\r\n\r\n return (\r\n }>\r\n \r\n \r\n );\r\n};\r\n\r\nCampaignCreationSearchV2.propTypes = {\r\n adExtensionsDynamicFeaturesLoader: PropTypes.func.isRequired,\r\n permissions: PropTypes.shape({}).isRequired,\r\n theme: PropTypes.shape({}).isRequired,\r\n scope: PropTypes.shape({}).isRequired,\r\n instrumentation: PropTypes.shape({}).isRequired,\r\n i18n: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nexport const StyledCampaignCreationSearchV2 =\r\n withDelayedStyles(withCreationHeader(withTheme(CampaignCreationSearchV2), undefined, undefined, undefined, true), getSearchCreationV2Style, getDelayedCreationStyles, 'campaign_create_search_v2_loaded');\r\n","/* istanbul ignore file */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { CampaignSubTypeMapping, isXandrDisplayAdsCampaign, isXandrVideoAdsCampaign, isAudienceNativeAdsCampaign, isSearchCampaign } from '@bingads-webui-campaign-react/constants';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { ProgressiveLoadingBlock } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { setClarityTag } from '@bingads-webui-universal/clarity';\r\n\r\nimport { withCampaign, withCreationHeader } from '../helper';\r\n\r\nconst getStyledAdGroupCreationSearchAsync = () => import(/* webpackMode: 'eager' */'./adgroup-creation-search')\r\n .then(({ StyledAdGroupCreationSearch }) => StyledAdGroupCreationSearch);\r\nconst getStyledAdGroupCreationAudienceAsync = () => import(/* webpackMode: 'eager' */'./adgroup-creation-audience')\r\n .then(({ StyledAdGroupCreationAudience }) => StyledAdGroupCreationAudience);\r\nconst getHotelAdGroupCreationAsync = () => import(/* webpackMode: 'eager' */'@bingads-webui-campaign/hotel-adgroup-upsert')\r\n .then(({ HotelAdGroupCreation }) => HotelAdGroupCreation);\r\nconst getXandrVideoAdGroupCreationAsync = () => import(/* webpackMode: 'eager' */ '@bingads-webui-campaign-react/xandr-video-campaign')\r\n .then(({ XandrVideoAdGroupCreationPage }) => XandrVideoAdGroupCreationPage);\r\nconst getXandrDisplayAdsAdGroupCreationAsync = () => import(/* webpackMode: 'eager' */ '@bingads-webui-campaign-react/xandr-display-ads-campaign')\r\n .then(({ XandrDisplayAdsAdGroupCreationPage }) => XandrDisplayAdsAdGroupCreationPage);\r\nconst getDisplayPlusAdGroupCreationAsync = () => import(/* webpackMode: 'eager' */ '@bingads-webui-campaign-react/display-plus-campaigns')\r\n .then(({ DisplayPlusCreateAdGroupWizard }) => DisplayPlusCreateAdGroupWizard);\r\nconst getSearchAdGroupCreationRevampAsync = () => import(/* webpackMode: 'eager' */ '@bingads-webui-campaign-react/search-campaign-wizard')\r\n .then(({ SearchAdGroupCreationWizard }) => SearchAdGroupCreationWizard);\r\n\r\n/**\r\n * @param {Function} getComponentAsync a function that returns a lazy loading component\r\n * @param {Object} i18n i18n object\r\n * @returns {Function} a function that can be passed to React.lazy()\r\n */\r\nconst getComponent = (getComponentAsync, i18n) =>\r\n () => getComponentAsync()\r\n .then(component => ({ default: withCreationHeader(component, [i18n.getString(_TL_('Ad Groups')), i18n.getString(_TL_('Create ad group'))], 'adgroups') }));\r\n\r\nclass AdGroupCreation extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n const { scope, i18n } = props;\r\n this.SearchComponent = React.lazy(getComponent(getStyledAdGroupCreationSearchAsync, i18n));\r\n this.SearchRevampComponent = React.lazy(getComponent(getSearchAdGroupCreationRevampAsync, i18n));\r\n this.AudienceComponent = React.lazy(getComponent(getStyledAdGroupCreationAudienceAsync, i18n));\r\n this.HotelComponent = React.lazy(getComponent(getHotelAdGroupCreationAsync, i18n));\r\n this.XandrVideoComponent = React.lazy(getComponent(getXandrVideoAdGroupCreationAsync, i18n));\r\n this.XandrDisplayAdsComponent = React.lazy(getComponent(getXandrDisplayAdsAdGroupCreationAsync, i18n));\r\n this.DisplayPlusComponent = React.lazy(getComponent(getDisplayPlusAdGroupCreationAsync, i18n));\r\n\r\n this.isOpenCreatePanel = !!scope.values.isOpenCreatePanel;\r\n if (this.isOpenCreatePanel) {\r\n delete scope.values.isOpenCreatePanel;\r\n scope.history.replace({\r\n pathname: scope.history.location.pathname,\r\n search: scope.stringify(),\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n const { permissions } = this.props;\r\n const campaignType = _.chain(this.props)\r\n .result('campaignContext')\r\n .result('currentCampaign')\r\n .result('CampaignType')\r\n .value();\r\n const campaignSubType = _.chain(this.props)\r\n .result('campaignContext')\r\n .result('currentCampaign')\r\n .result('CampaignSubType')\r\n .value();\r\n\r\n let Component = this.SearchComponent;\r\n\r\n if (isSearchCampaign(campaignType) && permissions && permissions.dynamic &&\r\n permissions.dynamic.SearchCampaignCreationRevamp && permissions.dynamic.SearchRevampPhase2) {\r\n Component = this.SearchRevampComponent;\r\n }\r\n\r\n if (campaignType === 'Audience') {\r\n Component = this.AudienceComponent;\r\n if (permissions && permissions.dynamic && permissions.dynamic.XandrVideoCampaigns &&\r\n isXandrVideoAdsCampaign(campaignSubType)) {\r\n if (permissions.dynamic.CTVAndDealToDisplayPlus && permissions.dynamic.DisplayPlusAdGroupCreation) {\r\n setClarityTag({\r\n IsDisplayPlusAdGroupCreationEnabled: true,\r\n CampaignSubType: campaignSubType,\r\n });\r\n Component = this.DisplayPlusComponent;\r\n } else {\r\n Component = this.XandrVideoComponent;\r\n }\r\n }\r\n if (permissions && permissions.dynamic && permissions.dynamic.XandrDisplayAdsCampaigns &&\r\n isXandrDisplayAdsCampaign(campaignSubType)) {\r\n Component = this.XandrDisplayAdsComponent;\r\n }\r\n if (permissions && permissions.dynamic && permissions.dynamic.DisplayPlusAdGroupCreation &&\r\n isAudienceNativeAdsCampaign(campaignSubType)) {\r\n setClarityTag({\r\n IsDisplayPlusAdGroupCreationEnabled: true,\r\n CampaignSubType: campaignSubType,\r\n });\r\n Component = this.DisplayPlusComponent;\r\n }\r\n }\r\n\r\n if (permissions && permissions.dynamic && permissions.dynamic.HotelCampaign && campaignType === 'Hotel') {\r\n Component = this.HotelComponent;\r\n }\r\n\r\n return (\r\n }>\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nAdGroupCreation.propTypes = {\r\n campaignContext: PropTypes.shape({}).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n permissions: PropTypes.shape({\r\n dynamic: PropTypes.shape({\r\n HotelCampaign: PropTypes.bool,\r\n XandrVideoCampaigns: PropTypes.bool,\r\n XandrDisplayAdsCampaigns: PropTypes.bool,\r\n DisplayPlusAdGroupCreation: PropTypes.bool,\r\n CTVAndDealToDisplayPlus: PropTypes.bool,\r\n SearchCampaignCreationRevamp: PropTypes.bool,\r\n SearchRevampPhase2: PropTypes.bool,\r\n }).isRequired,\r\n }).isRequired,\r\n scope: PropTypes.shape({\r\n values: PropTypes.shape({\r\n isOpenCreatePanel: PropTypes.bool,\r\n }),\r\n history: PropTypes.shape({\r\n replace: PropTypes.func,\r\n location: PropTypes.shape({\r\n pathname: PropTypes.string,\r\n search: PropTypes.string,\r\n }),\r\n }),\r\n stringify: PropTypes.func,\r\n }).isRequired,\r\n};\r\n\r\nexport const AdGroupCreationWithCampaign = withCampaign(withI18nConsumer(AdGroupCreation));\r\n","const toolsItemsPropsMapping = (i18n, permissions) => [\r\n {\r\n id: 'KWPlanner',\r\n title: i18n.getString(_TL_('Keyword planner')),\r\n descriptionLine: i18n.getString(_TL_('Research keywords')),\r\n helpId: 'pop_BA_CampaignCreate_Goals_KWPlanner',\r\n iconName: 'Search',\r\n 'aria-label': i18n.getString(_TL_('Research keywords with the Keyword Planner Tool')),\r\n helpArialLabel: 'Learn more about Research keywords with the Keyword Planner Tool',\r\n siteMapId: 'keyword-planner',\r\n siteMapAvailable: () => true,\r\n isEnabled: true,\r\n },\r\n {\r\n id: 'ImportFile',\r\n title: i18n.getString(_TL_('Import file')),\r\n descriptionLine: i18n.getString(_TL_('Import from a file')),\r\n helpId: 'pop_BA_CampaignCreate_Goals_ImportFile',\r\n iconName: 'Import',\r\n 'aria-label': i18n.getString(_TL_('Import from a file')),\r\n helpArialLabel: 'Learn more about Import from a file',\r\n siteMapId: 'import-file',\r\n siteMapAvailable: () => true,\r\n isEnabled: true,\r\n },\r\n {\r\n id: 'GoogleImport',\r\n title: i18n.getString(_TL_('Google import')),\r\n descriptionLine: i18n.getString(_TL_('Import from Google Ads')),\r\n helpId: 'pop_BA_CampaignCreate_Goals_GoogleImport',\r\n iconName: 'Import',\r\n 'aria-label': i18n.getString(_TL_('Import from Google AdWords')),\r\n helpArialLabel: 'Learn more about Import from Google AdWords',\r\n siteMapId: 'import-google',\r\n siteMapAvailable: () => true,\r\n isEnabled: permissions && !permissions.IsDomesticSimplifiedChineseEnabled,\r\n },\r\n {\r\n id: 'FreeCoach',\r\n title: i18n.getString(_TL_('Free coach')),\r\n descriptionLine: i18n.getString(_TL_('Free coaching on creating a campaign')),\r\n helpId: 'pop_BA_CampaignCreate_Goals_Coaching',\r\n analyticsId: 'free-coaching',\r\n iconName: 'Phone',\r\n 'aria-label': i18n.getString(_TL_('Free coaching on creating a campaign')),\r\n helpArialLabel: 'Learn more about Free coaching on creating a campaign',\r\n siteMapAvailable: () => false,\r\n isEnabled: true,\r\n },\r\n];\r\n\r\nexport const toolsConfig = ({ i18n, permissions }) => {\r\n const toolsItems = toolsItemsPropsMapping(i18n, permissions);\r\n\r\n return toolsItems.filter(item => item.isEnabled);\r\n};\r\n\r\n","/* istanbul ignore file */\r\nimport Promise from 'bluebird';\r\n\r\nconst InjectedView = {};\r\n\r\nexport function injectFactory({\r\n deps = [],\r\n path,\r\n}) {\r\n return new Promise((resolve) => {\r\n window.require(\r\n [...deps],\r\n () => {\r\n window.require([path], (View) => {\r\n InjectedView[path] = View;\r\n resolve(View);\r\n });\r\n }\r\n );\r\n });\r\n}\r\n","import React from 'react';\r\nimport _ from 'underscore';\r\nimport { ReactTemplate } from '@bingads-webui-react/react-template';\r\n\r\nimport AudienceAdsImg from '../../media/AudienceAds_animated.gif';\r\n// import ProductAdsImg from '../../media/ProductAds_animated.gif';\r\nimport SearchAdsImg from '../../media/SearchAds_animated.gif';\r\nimport SmartShoppingImg from '../../media/SmartShopping.gif';\r\nimport StandardShoppingImg from '../../media/StandardShopping.gif';\r\nimport PerformanceMaxImg from '../../media/PerformanceMax.gif';\r\nimport VideoCampaignCTV from '../../media/VideoCampaignCTV.svg';\r\nimport VideoCampaignWeb from '../../media/VideoCampaignWeb.svg';\r\nimport NativeAdsImg from '../../media/img_Native.svg';\r\nimport DisplayAdsImg from '../../media/img_Banner.svg';\r\nimport MicrosoftRetailerNetworkImg from '../../media/MicrosoftRetailerNetwork.svg';\r\nimport SponsoredPromotionsByBrandImg from '../../media/SponsoredPromotionsByBrand.svg';\r\n\r\nexport const adTypeConfig = (i18n, showAsCampaignType) => [{\r\n id: 'SearchAds',\r\n title: showAsCampaignType ? i18n.getString(_TL_('Search')) : i18n.getString(_TL_('Search ads')),\r\n description: i18n.getString(_TL_('Reach potential customers who have displayed search intent for your products and services. These ads can appear with search results on sites like Microsoft Bing, AOL, Yahoo, DuckDuckGo, Ecosia, and other partners. These ads can also extend into relevant sites across the Microsoft Advertising Network to maximize your conversions and reach your performance goal.')),\r\n helpTopicId: 'app50028',\r\n img: SearchAdsImg,\r\n 'aria-label': showAsCampaignType ? i18n.getString(_TL_('Search')) : i18n.getString(_TL_('Search ads')),\r\n}, {\r\n id: 'AudienceAds',\r\n title: showAsCampaignType ? i18n.getString(_TL_('Audience')) : i18n.getString(_TL_('Audience ads')),\r\n description: i18n.getString(_TL_('Show highly relevant ads to your audience and reach them in the right place at the right time on any device. Microsoft Audience ads can appear on sites like MSN, Microsoft Start, Microsoft Edge, Outlook, and partners. ')),\r\n helpTopicId: 'app54714',\r\n img: AudienceAdsImg,\r\n 'aria-label': showAsCampaignType ? i18n.getString(_TL_('Audience')) : i18n.getString(_TL_('Audience ads')),\r\n}, /* {\r\n id: 'SmartAds',\r\n title: i18n.getString(_TL_('Smart ads')),\r\n description: i18n.getString(_TL_('Smart ads description Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo.')),\r\n img: ProductAdsImg,\r\n} */];\r\n\r\nexport const shoppingCampaignTypes = {\r\n smart: 'SmartShoppingCampaign',\r\n standard: 'StandardShoppingCampaign',\r\n};\r\n\r\nexport const campaignTypes = {\r\n standard: 'StandardCampaign',\r\n perfMax: 'PerfMaxCampaign',\r\n};\r\n\r\nexport const xandrVideoCampaignTypes = {\r\n xandrVideoWeb: 'XandrVideoWebCampaign',\r\n xandrVideoCtv: 'XandrVideoCtvCampaign',\r\n};\r\n\r\nexport const adImpressionsCampaignTypes = {\r\n nativeAds: 'NativeAdsCampaign',\r\n displayAds: 'DisplayAdsCampaign',\r\n};\r\n\r\nexport const sponsoredProductCampaignTypes = {\r\n spa: 'MicrosoftRetailerNetwork',\r\n spb: 'SponsoredPromotionsByBrand',\r\n};\r\n\r\nexport const perfMaxCampaignTypeConfig = i18n => ({\r\n id: campaignTypes.perfMax,\r\n title: i18n.getString(_TL_('Performance Max')),\r\n description: i18n.getString(_TL_('Easily create and manage your campaign, optimize ads to reach the right audience at the right time, and drive performance to meet your advertising goals using Microsoft AI. We\\'ll determine which audiences and assets are best for your ads based on your settings. All ads will be eligible to surface on the entire Microsoft Advertising Network.')),\r\n img: PerformanceMaxImg,\r\n 'aria-label': i18n.getString(_TL_('Performance Max')),\r\n helpTopicId: 'app54826',\r\n});\r\n\r\nexport const smartShoppingCampaignTypeConfig = i18n => ({\r\n id: shoppingCampaignTypes.smart,\r\n title: i18n.getString(_TL_('Smart Shopping')),\r\n description: i18n.getString(_TL_('Maximize your return by using automated bidding and targeting on the Microsoft Advertising Network. Smart Shopping campaigns take priority over Standard Shopping campaigns which target the same set of products.')),\r\n img: SmartShoppingImg,\r\n 'aria-label': i18n.getString(_TL_('SmartShopping')),\r\n});\r\n\r\nexport const standardShoppingCampaignTypeConfig = i18n => ({\r\n id: shoppingCampaignTypes.standard,\r\n title: i18n.getString(_TL_('Standard Shopping')),\r\n description: i18n.getString(_TL_('Pick your products, bid strategy, budget, and targeting. Your ads can show on the Microsoft Advertising Network.')),\r\n img: StandardShoppingImg,\r\n 'aria-label': i18n.getString(_TL_('Standard Shopping')),\r\n});\r\n\r\nexport const shoppingCampaignTypeConfig = (i18n, permissions) => _.compact([!permissions.dynamic.SSCDeprecation && smartShoppingCampaignTypeConfig(i18n), standardShoppingCampaignTypeConfig(i18n)]);\r\n\r\nexport const xandrVideoCampaignTypeConfig = i18n => [\r\n {\r\n id: xandrVideoCampaignTypes.xandrVideoWeb,\r\n title: i18n.getString(_TL_('Online video ads')),\r\n description: i18n.getString(_TL_('Online video ads engage potential customers on websites across desktop, tablet, and mobile devices while they\\'re streaming media and browsing the web.')),\r\n img: VideoCampaignWeb,\r\n 'aria-label': i18n.getString(_TL_('Online video ads')),\r\n },\r\n {\r\n id: xandrVideoCampaignTypes.xandrVideoCtv,\r\n title: i18n.getString(_TL_('Connected TV (CTV) ads')),\r\n description: i18n.getString(_TL_('Reach your audience with video ads on CTV streaming services. These ads are designed to increase engagement and maximize completed views of your CTV ads.')),\r\n img: VideoCampaignCTV,\r\n 'aria-label': i18n.getString(_TL_('Connected TV (CTV) ads')),\r\n },\r\n];\r\n\r\nexport const sponsoredProductCampaignTypeConfig = (i18n, permissions) => [\r\n // If MranDeprecation is enabled, we want to hide the option instead of disabling the option\r\n ...(_.get(permissions, ['dynamic', 'MranDeprecation'], false) ? [] : [{\r\n id: sponsoredProductCampaignTypes.spa,\r\n title: i18n.getString(_TL_('Sponsored retail ads')),\r\n description: (\r\n {text} }}\r\n template={i18n.getString(_TL_('Target in-market customers with {{bold}}product ads across Bing and the retailer\\'s network.{{/bold}}'))}\r\n />\r\n ),\r\n img: MicrosoftRetailerNetworkImg,\r\n 'aria-label': i18n.getString(_TL_('Sponsored retail ads')),\r\n }]),\r\n {\r\n id: sponsoredProductCampaignTypes.spb,\r\n title: i18n.getString(_TL_('Sponsored Promotions for brands')),\r\n description: (\r\n {text} }}\r\n template={i18n.getString(_TL_('Target in-market customers with {{bold}}cashback promotions when they shop on Edge.{{/bold}}'))}\r\n />\r\n ),\r\n disabled: !permissions.dynamic.SponsoredPromotionsByBrands,\r\n img: SponsoredPromotionsByBrandImg,\r\n 'aria-label': i18n.getString(_TL_('Sponsored Promotions for brands')),\r\n },\r\n];\r\n\r\nexport const adImpressionsCampaignTypeConfig = i18n => [\r\n {\r\n id: adImpressionsCampaignTypes.nativeAds,\r\n title: i18n.getString(_TL_('Audience ads')),\r\n description: i18n.getString(_TL_('Show personalized, visually rich, responsive ads that integrate naturally into webpage content. ')),\r\n helpTopicId: 'app54714',\r\n img: NativeAdsImg,\r\n 'aria-label': i18n.getString(_TL_('Native ads')),\r\n },\r\n {\r\n id: adImpressionsCampaignTypes.displayAds,\r\n title: i18n.getString(_TL_('Display ads')),\r\n description: i18n.getString(_TL_('Showcase your brand with eye-catching, customized image ads, including banner, billboard, and half-page display placements.')),\r\n img: DisplayAdsImg,\r\n 'aria-label': i18n.getString(_TL_('Display ads')),\r\n },\r\n];\r\n\r\nexport const search = (i18n, showAsCampaignType) => [{\r\n id: 'SearchAds',\r\n title: showAsCampaignType ? i18n.getString(_TL_('Search')) : i18n.getString(_TL_('Search ads')),\r\n description: i18n.getString(_TL_('Search ads appear as results to search queries on the Bing Network. They are text-based ads with formatting and image enhancements')),\r\n img: SearchAdsImg,\r\n 'aria-label': showAsCampaignType ? i18n.getString(_TL_('Search')) : i18n.getString(_TL_('Search ads')),\r\n}, {\r\n id: 'AudienceAds',\r\n title: showAsCampaignType ? i18n.getString(_TL_('Audience')) : i18n.getString(_TL_('Audience ads')),\r\n description: i18n.getString(_TL_('Audience ads appear to people on the Microsoft Advertising Network based on who they are interested in. They are responsive ads that fit with the subject matter and visual design of the surrounding experience. Audience ads must comply with Microsoft Advertising policies and are also subject to additional requirements listed in our ')),\r\n audienceAdsPolicy: i18n.getString(_TL_('Audience ads Policy')),\r\n period: i18n.getString(_TL_('.')),\r\n img: AudienceAdsImg,\r\n 'aria-label': showAsCampaignType ? i18n.getString(_TL_('Audience')) : i18n.getString(_TL_('Audience ads')),\r\n}, /* {\r\n id: 'SmartAds',\r\n title: i18n.getString(_TL_('Smart ads')),\r\n description: i18n.getString(_TL_('Smart ads description Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo.')),\r\n img: ProductAdsImg,\r\n} */];\r\n","/* istanbul ignore file */\r\nimport React from 'react';\r\nimport Promise from 'bluebird';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { BackboneInstanceWrapper } from '@bingads-webui-react/backbone-instance-wrapper';\r\nimport { getRouterDep } from '@bingads-webui-campaign-react/legacy-router-dep';\r\nimport { EventDelegator } from '@bingads-webui-campaign-react/event-delegator';\r\nimport { withSiteMap, processor } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { ProgressiveLoadingBlock } from '@bingads-webui-campaign-react/shell-ui-common';\r\n\r\nexport class InjectWrapper extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n const injectViewFactoryOptions = _.omit(props, ['styleScopeName', 'InjectViewFactory', 'InjectViewOption']);\r\n\r\n this.ReactView = React.lazy(() => props.InjectViewFactory(injectViewFactoryOptions)\r\n .then(InjectedView => Promise.props({ InjectedView, InjectViewOption: props.InjectViewOption }))\r\n .then(({ InjectedView, InjectViewOption }) => {\r\n const { deps = {} } = InjectViewOption;\r\n const viewOptions = {\r\n ...InjectViewOption,\r\n deps: {\r\n router: getRouterDep(props.scope, props.siteMap),\r\n eventDelegator: new EventDelegator(),\r\n i18nNewDesign: this.props.i18n,\r\n ...deps,\r\n },\r\n };\r\n\r\n const initData = viewOptions.initData || (() => Promise.resolve());\r\n\r\n return Promise.resolve(new InjectedView(viewOptions))\r\n .then(view => initData(view).then(() => view))\r\n .then((view) => {\r\n props.callbackAfterInjected(view);\r\n this.instance = view.render();\r\n return this.instance;\r\n })\r\n .then(instance => ({\r\n default: () => {\r\n this.props.callbackAfterRendered();\r\n return (\r\n
\r\n \r\n
);\r\n },\r\n }));\r\n }));\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.instance && this.instance.remove) {\r\n this.instance.remove();\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n }>\r\n \r\n );\r\n }\r\n}\r\n\r\nInjectWrapper.propTypes = {\r\n InjectViewFactory: PropTypes.func.isRequired,\r\n serverContext: PropTypes.shape({\r\n Permissions: PropTypes.object.isRequired,\r\n CurrentAccount: PropTypes.object.isRequired,\r\n }).isRequired,\r\n InjectViewOption: PropTypes.objectOf(PropTypes.any),\r\n classes: PropTypes.objectOf(PropTypes.any).isRequired,\r\n styleScopeName: PropTypes.string,\r\n scope: PropTypes.objectOf(PropTypes.any).isRequired,\r\n siteMap: PropTypes.arrayOf(PropTypes.any).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n callbackAfterInjected: PropTypes.func,\r\n callbackAfterRendered: PropTypes.func,\r\n};\r\n\r\nInjectWrapper.defaultProps = {\r\n InjectViewOption: {},\r\n styleScopeName: 'CampaignCreationSearch',\r\n callbackAfterInjected: _.noop,\r\n callbackAfterRendered: _.noop,\r\n};\r\n\r\nexport const InjectWrapperWithHoC = withI18nConsumer(withSiteMap(InjectWrapper, [processor.processPermissions]));\r\n","import { getRoutePathById } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { sponsoredProductCampaignTypes } from './ad-type-config';\r\n\r\n// These urls is not find in sitemap\r\n// Keep the orignal behavior to navigate to old campaign page\r\nconst toolsPathMap = urlIds => ({\r\n ImportFile: `/Campaign/ImportCampaign/FileImport?${urlIds}`,\r\n GoogleImport: `/Campaign/ImportCampaign/GoogleImport?${urlIds}`,\r\n FreeCoach: 'http://go.microsoft.com/fwlink?LinkId=398320',\r\n});\r\n\r\nexport function navigateToRoute(scope, siteMap, id) {\r\n const pathname = getRoutePathById(siteMap, id);\r\n\r\n scope.history.push({\r\n pathname,\r\n search: scope.history.location.search,\r\n });\r\n}\r\n\r\nexport function navigateSelectedObjective({\r\n isDisplayAds,\r\n isVideo,\r\n isMediaPackage,\r\n isAudience,\r\n isShopping,\r\n isSmartShopping,\r\n isPerfMax,\r\n sponsoredBrandAdType,\r\n scope,\r\n siteMap,\r\n isNewAudience,\r\n isNewSearch,\r\n permissions,\r\n}) {\r\n let id = null;\r\n if (isVideo) {\r\n if (permissions.dynamic.XandrVideoCampaigns) {\r\n id = 'campaign-create-xandr-video';\r\n } else {\r\n id = 'campaign-create-videoaudience';\r\n }\r\n } else if (isDisplayAds) {\r\n id = 'campaign-create-xandr-display-ads';\r\n } else if (isMediaPackage) {\r\n id = 'campaign-create-xandr-mediadeal';\r\n } else if (isPerfMax) {\r\n id = 'campaign-create-pmax';\r\n } else if (isAudience) {\r\n if (isShopping) {\r\n id = 'campaign-create-shoppingaudience';\r\n } else {\r\n id = `campaign-create-${isNewAudience ? 'audience-simplified' : 'audience'}`;\r\n }\r\n } else if (sponsoredBrandAdType === sponsoredProductCampaignTypes.spa) {\r\n id = 'campaign-create-shopping-spa';\r\n } else if (sponsoredBrandAdType === sponsoredProductCampaignTypes.spb) {\r\n id = 'campaign-create-shopping-spb';\r\n } else if (!isSmartShopping) {\r\n const searchId = isNewSearch ? 'search-v2' : 'search';\r\n id = `campaign-create-${isShopping ? 'shopping' : searchId}`;\r\n } else {\r\n id = 'campaign-create-smart-shopping';\r\n }\r\n\r\n navigateToRoute(scope, siteMap, id);\r\n}\r\n\r\nexport function navigateSelectedTools({\r\n scope, siteMap, permissions, id: itemId, siteMapId, siteMapAvailable,\r\n}) {\r\n if (siteMapAvailable && siteMapAvailable(permissions)) {\r\n navigateToRoute(scope, siteMap, siteMapId);\r\n return;\r\n }\r\n\r\n const {\r\n values: {\r\n cid,\r\n uid,\r\n aid,\r\n },\r\n } = scope;\r\n const urlIds = `cid=${cid}&uid=${uid}&aid=${aid}`;\r\n const itemTarget = itemId === 'FreeCoach' ? '_blank' : '_self';\r\n\r\n window.open(toolsPathMap(urlIds)[itemId], itemTarget);\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withScope, QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withSiteMap } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { navigateToRoute } from '../helper';\r\nimport { getNavigateSectionStyles } from '../styles';\r\n\r\nconst NavigateSection = (props) => {\r\n const {\r\n i18n,\r\n backRouterId,\r\n isShowConfirmPopup,\r\n isBorderInsteadOfShadow,\r\n ariaLabelText,\r\n } = props;\r\n\r\n const onBackLinkClick = () => {\r\n const { scope, siteMap } = props;\r\n if (isShowConfirmPopup && !confirm(i18n.getString(_TL_('Changes you made may not be saved.')))) {\r\n return;\r\n }\r\n navigateToRoute(scope, siteMap, backRouterId);\r\n };\r\n\r\n const classes = useDefaultStyles(getNavigateSectionStyles({ isBorderInsteadOfShadow }));\r\n\r\n return (\r\n
\r\n \r\n
{props.content ||
{i18n.getString(_TL_('Campaigns > Create Campaign'))}
}
\r\n
\r\n );\r\n};\r\n\r\nNavigateSection.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n siteMap: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n backRouterId: PropTypes.string,\r\n content: PropTypes.element,\r\n isShowConfirmPopup: PropTypes.bool,\r\n isBorderInsteadOfShadow: PropTypes.bool,\r\n ariaLabelText: PropTypes.string.isRequired,\r\n};\r\n\r\nNavigateSection.defaultProps = {\r\n backRouterId: 'campaigns',\r\n content: undefined,\r\n isShowConfirmPopup: true,\r\n isBorderInsteadOfShadow: false,\r\n};\r\n\r\nexport const StyledNavigateSection = withScope(withSiteMap(withI18nConsumer(NavigateSection)));\r\n","import React from 'react';\r\nimport { map, last, constant, mapObject } from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getNavigateContentStyles } from '../styles';\r\n\r\nfunction NavigateContent(props) {\r\n const { crumbs, classes } = props;\r\n const crumbSpans = map(crumbs, (crumb, index) => {`${crumb} > `});\r\n\r\n if (crumbSpans.length > 0) {\r\n crumbSpans[crumbSpans.length - 1] = ({last(crumbs)});\r\n }\r\n\r\n return (\r\n
\r\n {crumbSpans}\r\n
);\r\n}\r\n\r\nNavigateContent.propTypes = {\r\n crumbs: PropTypes.arrayOf(PropTypes.string),\r\n classes: PropTypes.shape(mapObject(\r\n getNavigateContentStyles({}, {}),\r\n constant(PropTypes.string.isRequired)\r\n )).isRequired,\r\n};\r\n\r\nNavigateContent.defaultProps = {\r\n crumbs: [],\r\n};\r\n\r\nexport const StyledNavigateContent = withDefaultStyles(NavigateContent, getNavigateContentStyles);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { StyledNavigateSection } from './navigate-section';\r\nimport { StyledNavigateContent } from './navigate-content';\r\n\r\nexport function CreationHeader(props) {\r\n return (\r\n
\r\n } ariaLabelText={_.first(props.crumbs)} {...props} />\r\n
\r\n );\r\n}\r\n\r\nCreationHeader.propTypes = {\r\n style: PropTypes.shape({}),\r\n crumbs: PropTypes.arrayOf(PropTypes.string),\r\n};\r\n\r\nCreationHeader.defaultProps = {\r\n style: {},\r\n crumbs: [],\r\n};\r\n","import _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { getLocalStorage } from '@bingads-webui/storage';\r\nimport { withSiteMap, siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { CreationHeader } from '../components/creation-header';\r\n\r\n\r\nconst styles = () => ({\r\n container: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: '100%',\r\n },\r\n});\r\n\r\nexport function withCreationHeader(Component, headerCrumbs, backRouterId, isShowConfirmPopup, isBorderInsteadOfShadow) {\r\n const CreationHeaderHoC = (props) => {\r\n const { i18n, siteMap, classes } = props;\r\n const localStorage = getLocalStorage();\r\n let fromPathId = backRouterId;\r\n if (localStorage.supportsStorage()) {\r\n fromPathId = localStorage.get('fromPathId');\r\n }\r\n let crumbs = headerCrumbs;\r\n if (_.isUndefined(crumbs)) {\r\n const fromPage = _.findWhere(siteMap, { id: fromPathId });\r\n let fromPageName = '';\r\n if (fromPage && fromPage.name) {\r\n fromPageName = i18n.getString(_TL_(fromPage.name));\r\n }\r\n crumbs = [\r\n fromPageName || i18n.getString(_TL_('Campaigns')),\r\n i18n.getString(_TL_('Create Campaign'))];\r\n }\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n };\r\n\r\n CreationHeaderHoC.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n classes: PropTypes.shape({\r\n container: PropTypes.string.isRequired,\r\n }).isRequired,\r\n };\r\n\r\n return withDefaultStyles(withI18nConsumer(withSiteMap(CreationHeaderHoC)), styles);\r\n}\r\n","export const getDelayedCreationStyles = () => (\r\n import(/* webpackMode: 'eager' */'../styles')\r\n .then(({ getEntityCreationStyle }) => ({\r\n getDelayedStyles: getEntityCreationStyle,\r\n }))\r\n);\r\n","import PageContext from '@bingads-webui-static-legacy/page-context';\r\n\r\nexport function getCommonCampaignCreationViewOptions(props) {\r\n const {\r\n serverContext: {\r\n CurrentAccount: {\r\n CurrencyCode,\r\n },\r\n CurrentAccountInActive,\r\n Permissions: {\r\n IsReadOnlyUser,\r\n IsImpressionTrackingUrlsEnabled,\r\n },\r\n },\r\n perfMarker,\r\n i18n,\r\n } = props;\r\n\r\n return {\r\n viewContext: {\r\n accountCurrencyCode: CurrencyCode,\r\n isReadOnlyUser: IsReadOnlyUser,\r\n CurrentAccountInActive,\r\n },\r\n perfMarker,\r\n isForVNext: true,\r\n isImpressionTrackingUrlsEnabled: IsImpressionTrackingUrlsEnabled,\r\n newI18n: i18n,\r\n deps: {\r\n pageContext: PageContext,\r\n },\r\n }\r\n}\r\n","\r\nimport { queryify } from '@bingads-webui/url-util';\r\nimport jsData from '@bingads-webui-component-legacy/js-data-campaign/index';\r\n\r\nexport const getProductData = (cid, aid, uid) => {\r\n const url = queryify('/Campaign/NewCampaign/GetProductScope', {\r\n aid,\r\n cid,\r\n uid,\r\n });\r\n\r\n const params = {\r\n url,\r\n adapter: 'legacy',\r\n bypassCache: false,\r\n cacheResponse: true,\r\n };\r\n\r\n return jsData.Product.find('MetaData', params);\r\n};\r\n","import jsData from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport { edmCampaign } from '@bingads-webui/edm-campaign';\r\n\r\nexport const getDeals = () => jsData.Deal.findAll();\r\n\r\nexport const getDealsV2 = (cid, aid) => edmCampaign\r\n .Customers.$withKey(cid)\r\n .Accounts.$withKey(aid)\r\n .Deals.get({\r\n IsUseV2: true,\r\n }).toPromise();\r\n","const objectiveItemsPropsMapping = (i18n, permissions) => [\r\n {\r\n id: 'WebsiteVisits',\r\n descriptionLine: i18n.getString(_TL_('Visits to my website')),\r\n helpId: 'pop_BA_CampaignCreate_Goals_Clicks',\r\n iconName: 'Click',\r\n 'aria-label': i18n.getString(_TL_('Visits to my website')),\r\n helpArialLabel: i18n.getString(_TL_('Learn more about Visits to my website')),\r\n isEnabled: true,\r\n },\r\n {\r\n id: 'LocationVisits',\r\n descriptionLine: i18n.getString(_TL_('Visits to my business location(s)')),\r\n helpId: 'pop_BA_CampaignCreate_Goals_Visits',\r\n iconName: 'PedometerSteps',\r\n 'aria-label': i18n.getString(_TL_('Visits to my business location(s)')),\r\n helpArialLabel: i18n.getString(_TL_('Learn more about Visits to my business location(s)')),\r\n isEnabled: true,\r\n },\r\n {\r\n id: 'WebsiteConversions',\r\n descriptionLine: i18n.getString(_TL_('Conversions in my website')),\r\n helpId: 'pop_BA_CampaignCreate_Goals_Conversions',\r\n iconName: 'WebConversion',\r\n 'aria-label': i18n.getString(_TL_('Conversions in my website')),\r\n helpArialLabel: i18n.getString(_TL_('Learn more about Conversions in my website')),\r\n isEnabled: true,\r\n },\r\n {\r\n id: 'PhoneCalls',\r\n descriptionLine: i18n.getString(_TL_('Phone calls to my business')),\r\n helpId: 'pop_BA_CampaignCreate_Goals_Calls',\r\n iconName: 'Phone',\r\n 'aria-label': i18n.getString(_TL_('Phone calls to my business')),\r\n helpArialLabel: i18n.getString(_TL_('Learn more about Phone calls to my business')),\r\n isEnabled: true,\r\n },\r\n {\r\n id: 'AppInstalls',\r\n descriptionLine: i18n.getString(_TL_('App installs')),\r\n helpId: 'pop_BA_CampaignCreate_Goals_Installs',\r\n iconName: 'CellPhone',\r\n 'aria-label': i18n.getString(_TL_('App installs')),\r\n helpArialLabel: i18n.getString(_TL_('Learn more about App installs')),\r\n isEnabled: permissions.IsUserAppInstallAdsAllowed && !permissions.IsDomesticSimplifiedChineseEnabled,\r\n },\r\n {\r\n id: 'SmartCampaign',\r\n descriptionLine: i18n.getString(_TL_('Smart campaign')),\r\n helpId: 'pop_BA_CampaignCreate_Goals_Smart',\r\n iconName: 'Processing',\r\n 'aria-label': i18n.getString(_TL_('Smart campaign')),\r\n helpArialLabel: i18n.getString(_TL_('Learn more about Smart campaign')),\r\n isEnabled: permissions.IsSmartCampaignPhase2Enabled && !permissions.IsDomesticSimplifiedChineseEnabled,\r\n },\r\n {\r\n id: 'ShoppingCampaign',\r\n descriptionLine: i18n.getString(_TL_('Sell products from your catalog')),\r\n helpId: 'pop_BA_CampaignCreate_Goals_BSC',\r\n iconName: 'ShoppingCart',\r\n 'aria-label': i18n.getString(_TL_('Sell products from your catalog')),\r\n helpArialLabel: i18n.getString(_TL_('Learn more about Sell products from your catalog')),\r\n isEnabled: permissions.IsEnhancedShoppingCampaignAllowed,\r\n showFACBadge: permissions.dynamic.FACForShopping, // show feature adoption coupon badge: eg. '$25 off'\r\n },\r\n {\r\n id: 'SponsoredShoppingCampaign',\r\n descriptionLine: i18n.getString(_TL_('Boost product sales')),\r\n helpId: 'pop_BA_CampaignCreate_Goals_ProductSales',\r\n iconName: 'RetailFinancials',\r\n isSVGIcon: false,\r\n helpArialLabel: i18n.getString(_TL_('Learn more about Boost product sales')),\r\n 'aria-label': i18n.getString(_TL_('Boost product sales')),\r\n isEnabled: permissions.IsSPAv2Enabled && !permissions.IsDomesticSimplifiedChineseEnabled,\r\n },\r\n {\r\n id: 'MSStoreAds',\r\n descriptionLine: i18n.getString(_TL_('Promote your apps and games')),\r\n helpId: 'pop_BA_CampaignCreate_Goals_StoreAds',\r\n iconName: 'MicrosoftStore',\r\n isSVGIcon: true,\r\n helpArialLabel: i18n.getString(_TL_('Learn more about Microsoft Store ads')),\r\n 'aria-label': i18n.getString(_TL_('Promote your apps and games')),\r\n isNewFeature: true,\r\n isEnabled: (!permissions.IsDomesticSimplifiedChineseEnabled && permissions.IsEnhancedShoppingCampaignAllowed) || (permissions.IsDomesticSimplifiedChineseEnabled && permissions.dynamic.WindowsStoreAdsCNExpansion),\r\n },\r\n {\r\n id: 'VideoCampaign',\r\n descriptionLine: permissions.dynamic.XandrVideoCampaigns ? i18n.getString(_TL_('Video views')) : i18n.getString(_TL_('Video views')),\r\n helpId: permissions.dynamic.XandrVideoCampaigns ? 'pop_BA_VideoAds_About' : 'pop_BA_CampaignCreate_Goals_VideoViews',\r\n iconName: 'MSNVideos',\r\n helpArialLabel: permissions.dynamic.XandrVideoCampaigns ? i18n.getString(_TL_('Learn more about brand awareness video')) : i18n.getString(_TL_('Learn more about video views')),\r\n 'aria-label': permissions.dynamic.XandrVideoCampaigns ? i18n.getString(_TL_('Video views')) : i18n.getString(_TL_('Video views')),\r\n isNewFeature: true,\r\n isEnabled: (permissions.IsVideoAdsForCampaignEnabled || permissions.dynamic.XandrVideoCampaigns) && !permissions.IsDomesticSimplifiedChineseEnabled,\r\n },\r\n {\r\n id: 'MediaPackageCampaign',\r\n descriptionLine: i18n.getString(_TL_('Media deals')),\r\n helpId: 'pop_BA_VideoAds_MediaDeals',\r\n iconName: 'MSNVideos',\r\n helpArialLabel: i18n.getString(_TL_('Learn more about media deals')),\r\n 'aria-label': i18n.getString(_TL_('Media deals')),\r\n isNewFeature: true,\r\n isEnabled: permissions.IsDealEnabledForMsAds && !permissions.IsDomesticSimplifiedChineseEnabled,\r\n },\r\n {\r\n id: 'AdImpressions',\r\n descriptionLine: i18n.getString(_TL_('Ad impressions')),\r\n helpId: 'pop_BA_CampaignCreate_Goals_AdImpressions', // TODO\r\n iconName: 'View',\r\n helpArialLabel: i18n.getString(_TL_('Learn more about ad impressions')),\r\n 'aria-label': i18n.getString(_TL_('Ad impressions')),\r\n isEnabled: (permissions.IsManualCpmEnabled || permissions.dynamic.XandrDisplayAdsCampaigns) && !permissions.IsDomesticSimplifiedChineseEnabled,\r\n },\r\n {\r\n id: 'HotelBooking',\r\n descriptionLine: permissions.dynamic.IsRenameHotelToLodgingEnabled ? i18n.getString(_TL_('Increase property bookings')) : i18n.getString(_TL_('Increase hotel bookings')),\r\n helpId: permissions.dynamic.IsRenameHotelToLodgingEnabled ? 'pop_BA_CampaignCreate_Goals_LodgingBooking' : 'pop_BA_CampaignCreate_Goals_HotelBooking',\r\n iconName: 'Hotel',\r\n 'aria-label': permissions.dynamic.IsRenameHotelToLodgingEnabled ? i18n.getString(_TL_('Increase property bookings')) : i18n.getString(_TL_('Increase hotel bookings')),\r\n helpArialLabel: permissions.dynamic.IsRenameHotelToLodgingEnabled ? i18n.getString(_TL_('Learn more about increase property bookings')) : i18n.getString(_TL_('Learn more about increase hotel bookings')),\r\n isNewFeature: true,\r\n isEnabled: permissions.dynamic.HotelCampaign && !permissions.IsDomesticSimplifiedChineseEnabled,\r\n },\r\n];\r\n\r\nexport const objectivesConfig = ({ i18n, permissions }) => {\r\n const objectivesItems = objectiveItemsPropsMapping(i18n, permissions);\r\n\r\n return objectivesItems.filter(item => item.isEnabled);\r\n};\r\n\r\nexport const objectivesForPerfMax = [\r\n 'WebsiteVisits',\r\n 'LocationVisits',\r\n 'WebsiteConversions',\r\n 'PhoneCalls',\r\n 'ShoppingCampaign',\r\n];\r\n","import { isFunction, some, isEmpty } from 'underscore';\r\nimport { merge } from '@bingads-webui/primitive-utilities';\r\nimport {\r\n campaignSettingsStyles, adgroupsKeywordsStyles, adExtensionsStyles, budgetBidsStyles, adgroupCreationStyles,\r\n creationCommonStyle,\r\n dsaCampaignStyles,\r\n audienceCampaignSettingsStyles, audienceTargetsSettingsStyles, audienceBudgetBidsStyles, audienceAdsStyles,\r\n audienceAdgroupStyles,\r\n raiseBidPopupStyles,\r\n disclaimerPanelStyles, globalDsaCampaignStyles,\r\n globalAdgroupCreationStyles,\r\n audienceCampaignBmcRedirectStyles\r\n} from '@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles';\r\nimport {\r\n entitySelectorStyle, uiblockerStyle, toggleButtonStyle, messageBarStyle, searchboxStyle, tableStyle,\r\n helpbuttonStyle, linkStyle, paginationStyle, statusStyle, glyphIconStyle, kendoMultiSelectStyle, commonDoubleListBoxStyle,\r\n advancedSettingsSectionStyle, containerBudgetStyle, locationBidGridStyle, keywordPlannerStyle, locationMapStyle,\r\n sharedBudgetGridWrapper, estimationResultStyle, audienceAssociationSectionStyle, extensionEditorStyles, audienceReachEstimateContainerStyle,\r\n datePickerStyle, audienceModalStyles, audienceCombinedListStyle, keywordToolbarStyle, selectElementStyle, buttonInputStyle, inputFieldStyle, audienceExpressionStyle,\r\n convertToGlobalStyle, legacyUIBlockerStyle\r\n} from '@bingads-webui-campaign-react/common-styles';\r\nimport { adEditorPanelOverrideStyle } from '@bingads-webui-campaign-react/ad-editor-styles';\r\nimport { stepWizardStyle } from './step-wizard';\r\nimport { getCreationContainerContentStyle, CreationContainerContentOverrideStyle } from './creation-content-container-style';\r\n\r\nfunction resolveStyles(theme, ...styles) {\r\n const resolvedStyles = styles.map(s => (isFunction(s) ? s(theme) : s));\r\n\r\n if (some(resolvedStyles, isEmpty)) {\r\n throw new Error('Cannot pass in empty style!');\r\n }\r\n return resolvedStyles;\r\n}\r\n\r\nexport const getAdgroupCreationAudienceStyle = (_, { palette = {} }) => {\r\n const commonStyles = merge(\r\n {},\r\n ...resolveStyles(\r\n { palette },\r\n statusStyle,\r\n paginationStyle,\r\n entitySelectorStyle,\r\n buttonInputStyle,\r\n containerBudgetStyle,\r\n commonDoubleListBoxStyle,\r\n keywordPlannerStyle,\r\n searchboxStyle,\r\n estimationResultStyle,\r\n locationBidGridStyle,\r\n locationMapStyle,\r\n sharedBudgetGridWrapper,\r\n tableStyle,\r\n advancedSettingsSectionStyle,\r\n toggleButtonStyle,\r\n linkStyle,\r\n selectElementStyle\r\n )\r\n );\r\n\r\n const globalStyles = merge(\r\n {},\r\n ...resolveStyles(\r\n { palette },\r\n stepWizardStyle,\r\n uiblockerStyle,\r\n kendoMultiSelectStyle,\r\n audienceModalStyles,\r\n audienceExpressionStyle,\r\n audienceCombinedListStyle,\r\n extensionEditorStyles,\r\n messageBarStyle,\r\n glyphIconStyle,\r\n datePickerStyle,\r\n helpbuttonStyle,\r\n keywordToolbarStyle,\r\n inputFieldStyle,\r\n CreationContainerContentOverrideStyle,\r\n disclaimerPanelStyles,\r\n globalDsaCampaignStyles,\r\n globalAdgroupCreationStyles\r\n ),\r\n convertToGlobalStyle(resolveStyles(\r\n { palette },\r\n adEditorPanelOverrideStyle\r\n ))\r\n );\r\n\r\n\r\n const searchCreationStyles = merge(\r\n {},\r\n ...resolveStyles(\r\n { palette },\r\n audienceTargetsSettingsStyles,\r\n audienceBudgetBidsStyles,\r\n dsaCampaignStyles,\r\n campaignSettingsStyles,\r\n adgroupsKeywordsStyles,\r\n adExtensionsStyles,\r\n budgetBidsStyles,\r\n creationCommonStyle,\r\n adgroupCreationStyles,\r\n raiseBidPopupStyles\r\n )\r\n );\r\n\r\n const audienceCreationStyles = merge(\r\n {\r\n '& .ima-reach-alert': {\r\n padding: '8px 32px 8px 8px !important',\r\n marginTop: '10px',\r\n marginLeft: '0px',\r\n },\r\n },\r\n ...resolveStyles(\r\n { palette },\r\n audienceCampaignSettingsStyles,\r\n audienceReachEstimateContainerStyle,\r\n audienceAssociationSectionStyle,\r\n audienceTargetsSettingsStyles,\r\n audienceBudgetBidsStyles,\r\n audienceAdsStyles,\r\n audienceAdgroupStyles,\r\n audienceCampaignBmcRedirectStyles,\r\n legacyUIBlockerStyle\r\n )\r\n );\r\n\r\n return {\r\n '@global': globalStyles,\r\n\r\n CampaignCreationAudience: {\r\n ...getCreationContainerContentStyle(),\r\n ...audienceCreationStyles,\r\n ...commonStyles,\r\n ...searchCreationStyles,\r\n },\r\n };\r\n};\r\n","/* istanbul ignore file */\r\nimport React from 'react';\r\nimport Promise from 'bluebird';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { AudienceAdgroupCreationWizard } from '@bingads-webui-campaign-legacy/audience-campaign/loader';\r\nimport decimal from '@bingads-webui-component-legacy/humanize/decimal';\r\nimport PageContext from '@bingads-webui-static-legacy/page-context';\r\nimport eventDispatcher from '@bingads-webui-component-legacy/event-dispatcher/index';\r\nimport { withDelayedStyles } from '@bingads-webui-campaign-react/common-utils';\r\nimport { getAdgroupCreationAudienceStyle } from '../styles/adgroup-creation-audience-styles';\r\nimport { InjectWrapperWithHoC, getDelayedCreationStyles } from '../helper';\r\nimport VerticalLayout from '../template/steps-template.pug';\r\nimport HeaderTemplate from '../template/header-template.pug';\r\n\r\nconst ADGROUP_CREATION_AUDIENCE_LOADED_EVENT = 'ad_group_creation_view_loaded';\r\nfunction AdGroupCreationAudience(props) {\r\n const {\r\n serverContext: {\r\n CurrentAccount: {\r\n CurrencyCode,\r\n },\r\n CurrentAccountInActive,\r\n Permissions: {\r\n IsReadOnlyUser,\r\n },\r\n },\r\n campaignContext: { currentCampaign },\r\n perfMarker,\r\n isVideo,\r\n isOpenCreatePanel,\r\n i18n,\r\n } = props;\r\n const isShoppingCampaign = _.result(_.take(currentCampaign.CampaignSettings), 'ProviderId');\r\n const AdGroupCreationAudiencePerfMarker = perfMarker.createChild('AdGroupCreationAudience');\r\n\r\n return ( Promise.resolve(AudienceAdgroupCreationWizard)}\r\n InjectViewOption={{\r\n viewContext: {\r\n accountCurrencyCode: CurrencyCode,\r\n isReadOnlyUser: IsReadOnlyUser,\r\n CurrentAccountInActive,\r\n currentCampaign,\r\n },\r\n audienceCampaignType: isShoppingCampaign ? 'shopping' : '',\r\n perfMarker: AdGroupCreationAudiencePerfMarker,\r\n layout: VerticalLayout,\r\n headerTemplate: HeaderTemplate,\r\n isForVNext: true,\r\n isVideo,\r\n isOpenCreatePanel,\r\n newI18n: i18n,\r\n deps: {\r\n decimal,\r\n pageContext: PageContext,\r\n },\r\n serverContext: props.serverContext,\r\n }}\r\n callbackAfterRendered={() => _.defer(() => eventDispatcher.trigger(ADGROUP_CREATION_AUDIENCE_LOADED_EVENT))}\r\n styleScopeName=\"CampaignCreationAudience\"\r\n />);\r\n}\r\n\r\nAdGroupCreationAudience.propTypes = {\r\n serverContext: PropTypes.shape({\r\n CurrentAccount: PropTypes.shape({\r\n CurrencyCode: PropTypes.string.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n campaignContext: PropTypes.objectOf(PropTypes.any).isRequired,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n isVideo: PropTypes.bool,\r\n isOpenCreatePanel: PropTypes.bool, // isOpenCreatePanel: see if the page is opened from the link in delivery status column\r\n decimal: PropTypes.shape({}).isRequired,\r\n PageContext: PropTypes.shape({}).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }),\r\n};\r\n\r\nAdGroupCreationAudience.defaultProps = {\r\n isVideo: false,\r\n isOpenCreatePanel: false,\r\n i18n: {\r\n getString: text => text,\r\n },\r\n};\r\n\r\nexport const StyledAdGroupCreationAudience =\r\n withDelayedStyles(AdGroupCreationAudience, getAdgroupCreationAudienceStyle, getDelayedCreationStyles, ADGROUP_CREATION_AUDIENCE_LOADED_EVENT);\r\n\r\n","import { isFunction, some, isEmpty } from 'underscore';\r\nimport { merge } from '@bingads-webui/primitive-utilities';\r\nimport {\r\n adExtensionsStyles, adgroupCreationStyles,\r\n creationCommonStyle,\r\n audienceTargetsSettingsStyles, audienceBudgetBidsStyles,\r\n} from '@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles';\r\nimport {\r\n toggleButtonStyle, searchboxStyle, tableStyle,\r\n helpbuttonStyle, paginationStyle, statusStyle, glyphIconStyle,\r\n advancedSettingsSectionStyle, containerBudgetStyle, keywordPlannerStyle,\r\n buttonInputStyle, inputFieldStyle,\r\n convertToGlobalStyle,\r\n} from '@bingads-webui-campaign-react/common-styles';\r\nimport { adEditorPanelOverrideStyle } from '@bingads-webui-campaign-react/ad-editor-styles';\r\nimport { stepWizardStyle } from './step-wizard';\r\nimport { getCreationContainerContentStyle } from './creation-content-container-style';\r\n\r\nfunction resolveStyles(theme, ...styles) {\r\n const resolvedStyles = styles.map(s => (isFunction(s) ? s(theme) : s));\r\n\r\n if (some(resolvedStyles, isEmpty)) {\r\n throw new Error('Cannot pass in empty style!');\r\n }\r\n return resolvedStyles;\r\n}\r\n\r\nexport const getAdgroupCreationStyle = (_, { palette = {} }) => {\r\n const commonStyles = merge(\r\n {},\r\n ...resolveStyles(\r\n { palette },\r\n statusStyle,\r\n paginationStyle,\r\n buttonInputStyle,\r\n containerBudgetStyle,\r\n keywordPlannerStyle,\r\n searchboxStyle,\r\n tableStyle,\r\n advancedSettingsSectionStyle,\r\n toggleButtonStyle\r\n )\r\n );\r\n\r\n const globalStyles = merge(\r\n {},\r\n ...resolveStyles(\r\n { palette },\r\n stepWizardStyle,\r\n glyphIconStyle,\r\n helpbuttonStyle,\r\n inputFieldStyle\r\n ),\r\n convertToGlobalStyle(resolveStyles(\r\n { palette },\r\n adEditorPanelOverrideStyle\r\n ))\r\n );\r\n\r\n\r\n const searchCreationStyles = merge(\r\n {},\r\n ...resolveStyles(\r\n { palette },\r\n audienceTargetsSettingsStyles,\r\n audienceBudgetBidsStyles,\r\n adExtensionsStyles,\r\n creationCommonStyle,\r\n adgroupCreationStyles\r\n )\r\n );\r\n\r\n return {\r\n '@global': globalStyles,\r\n\r\n CampaignCreationSearch: {\r\n ...getCreationContainerContentStyle(),\r\n ...commonStyles,\r\n ...searchCreationStyles,\r\n },\r\n };\r\n};\r\n","/* istanbul ignore file */\r\nimport React from 'react';\r\nimport Promise from 'bluebird';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport MixedModeCreationView from '@bingads-webui-campaign-legacy/adgroup-create-advanced/view/mixed-mode-creation';\r\nimport AdgroupCreateAdvancedView from '@bingads-webui-campaign-legacy/adgroup-create-advanced/view/index';\r\nimport { withDelayedStyles } from '@bingads-webui-campaign-react/common-utils';\r\nimport { getAdgroupCreationStyle } from '../styles/adgroup-creation-search-styles';\r\nimport { InjectWrapperWithHoC, getDelayedCreationStyles } from '../helper';\r\n\r\nfunction AdGroupCreationSearch(props) {\r\n const {\r\n perfMarker, permissions, campaignContext, isOpenCreatePanel,\r\n } = props;\r\n const { IsDSAMixedModeCampaignEnabled } = permissions;\r\n const { currentCampaign } = campaignContext;\r\n const isExperiment = _.result(currentCampaign, 'ExperimentId') > 0;\r\n const isMixed = currentCampaign.CampaignType === 'Default' && IsDSAMixedModeCampaignEnabled && !isExperiment;\r\n const InjectedView = isMixed ? MixedModeCreationView : AdgroupCreateAdvancedView;\r\n const AdGroupCreationSearchPerfMarker = perfMarker.createChild('AdGroupCreationSearch');\r\n AdGroupCreationSearchPerfMarker.willInit();\r\n\r\n return ( Promise.resolve(InjectedView)}\r\n InjectViewOption={{\r\n perfMarker: AdGroupCreationSearchPerfMarker,\r\n usePanel: true,\r\n isForVNext: true,\r\n isOpenCreatePanel,\r\n serverContext: props.serverContext,\r\n }}\r\n styleScopeName=\"CampaignCreationSearch\"\r\n />);\r\n}\r\n\r\nAdGroupCreationSearch.propTypes = {\r\n serverContext: PropTypes.shape({\r\n CurrentAccount: PropTypes.shape({\r\n CurrencyCode: PropTypes.string.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n permissions: PropTypes.shape({\r\n IsDSAMixedModeCampaignEnabled: PropTypes.bool.isRequired,\r\n }).isRequired,\r\n campaignContext: PropTypes.objectOf(PropTypes.any).isRequired,\r\n isOpenCreatePanel: PropTypes.bool, // isOpenCreatePanel: see if the page is opened from the link in delivery status column\r\n};\r\n\r\nAdGroupCreationSearch.defaultProps = {\r\n isOpenCreatePanel: false,\r\n};\r\n\r\nexport const StyledAdGroupCreationSearch =\r\n withDelayedStyles(AdGroupCreationSearch, getAdgroupCreationStyle, getDelayedCreationStyles, 'ad_group_creation_view_loaded');\r\n\r\n","export const getCreationContainerContentStyle = () => ({\r\n flex: 1,\r\n overflow: 'auto',\r\n '& .ba-backbone-instance-wrapper': {\r\n height: '100%',\r\n overflow: 'auto',\r\n\r\n '& >div': {\r\n height: '100%',\r\n overflow: 'auto',\r\n\r\n '& .audience-campaign-creation-wizard-container': {\r\n height: '100%',\r\n overflow: 'auto',\r\n '& .audience-campaign-creation-wizard': {\r\n height: '100%',\r\n overflow: 'auto',\r\n\r\n '& div[data-current-step-name^=\"audience-campaign-creation-wizard-step\"]': {\r\n height: '100%',\r\n overflow: 'auto',\r\n },\r\n },\r\n },\r\n\r\n '& .audience-adgroup-creation-wizard-container': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: '100%',\r\n overflow: 'auto',\r\n\r\n '& .audience-adgroup-creation-wizard': {\r\n flex: 1,\r\n\r\n '& div[data-current-step-name^=\"audience-adgroup-creation-wizard-step\"]': {\r\n height: '100%',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n});\r\n\r\nexport const CreationContainerContentOverrideStyle = {\r\n // TODO: This is a temporary fix\r\n '.app-content-body': {\r\n flex: '1',\r\n overflow: 'auto',\r\n },\r\n};\r\n","import { adEditorStyle } from '@bingads-webui-campaign-react/ad-editor-styles';\r\n\r\nexport const campaignCreationAdEditorOverrideStyle = (_, { palette = {} }) => ({\r\n '& .audience-campaign-creation-wizard-container div[data-current-step-name^=\"audience-campaign-creation-wizard-step3\"]': {\r\n '& .created-ad-list-container.row .ad-list-item .create-another-ad': {\r\n lineHeight: 'unset',\r\n color: '#00a2ff',\r\n fontSize: 14,\r\n border: 'none',\r\n backgroundColor: 'unset',\r\n padding: 2,\r\n position: 'relative',\r\n top: '38px',\r\n\r\n '&:hover, &:active': {\r\n color: `${palette.themeDarker} !important`,\r\n textDecoration: 'underline',\r\n },\r\n '&:focus': {\r\n border: 'none',\r\n outline: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n },\r\n '& .created-ad-list-container.row .existing-ad .existing-ad-options': {\r\n ...adEditorStyle({ palette })['& .created-ad-list-container.row .existing-ad .existing-ad-options'],\r\n display: 'inline',\r\n },\r\n '& .created-ad-list-container.row .existing-ad .existing-ad-options button': {\r\n ...adEditorStyle({ palette })['& .created-ad-list-container.row .existing-ad .existing-ad-options button'],\r\n opacity: '0',\r\n '&:hover, &:active': {\r\n color: `${palette.themeDarker} !important`,\r\n textDecoration: 'underline',\r\n },\r\n },\r\n '& .created-ad-list-container.row .existing-ad:hover .existing-ad-options button': {\r\n opacity: '1',\r\n },\r\n '& .created-ad-list-container.row .existing-ad .existing-ad-options button:focus': {\r\n opacity: '1',\r\n border: 'none',\r\n outline: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n },\r\n '& .alert-info-inline': {\r\n '& > a': {\r\n textDecoration: 'none !important',\r\n },\r\n '& > a:active': {\r\n textDecoration: 'none !important',\r\n },\r\n '& > a:hover': {\r\n textDecoration: 'none !important',\r\n },\r\n },\r\n '& a.helpbutton': {\r\n '&:active': {\r\n textDecoration: 'none !important',\r\n },\r\n '&:hover': {\r\n textDecoration: 'none !important',\r\n },\r\n },\r\n});\r\n","export const getActionListStyles = () => ({\r\n actionList: {\r\n marginTop: 30,\r\n '& .action-list-group': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexWrap: 'wrap',\r\n '& .campaign-objective': {\r\n marginBottom: 2,\r\n },\r\n },\r\n },\r\n title: {\r\n fontWeight: 'bold',\r\n fontSize: 16,\r\n lineHeight: '19px',\r\n color: '#000000',\r\n marginBottom: 24,\r\n },\r\n});\r\n","import { helpbuttonStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nexport const getChooseObjectiveStyles = (_, { palette = {} }) => ({\r\n '@global': helpbuttonStyle({ palette }),\r\n chooseObjective: {\r\n // Used by StyledCampaignChooseObjective, can be removed if removed there.\r\n },\r\n pageContent: {\r\n marginTop: 35,\r\n marginLeft: 18,\r\n minHeight: 450,\r\n },\r\n description: {\r\n marginTop: 24,\r\n fontSize: 14,\r\n lineHeight: '24px',\r\n color: palette.neutralPrimary,\r\n },\r\n});\r\n","import microsoftStoreIcon from '../../media/MicrosoftStore.svg';\r\n\r\nconst svgIconStyle = {\r\n backgroundRepeat: 'no-repeat',\r\n backgroundSize: 'contain',\r\n backgroundPosition: 'center center',\r\n height: '36px',\r\n width: '36px',\r\n margin: '10px 0px -4px',\r\n};\r\n\r\nconst labelStyle = {\r\n position: 'absolute',\r\n right: 5,\r\n top: 5,\r\n borderRadius: 12,\r\n padding: '0 9px',\r\n fontSize: 12,\r\n};\r\n\r\nexport const getObjectiveItemStyles = (_, { palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n objectiveItem: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n },\r\n objectiveItemContent: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n height: '100%',\r\n position: 'relative',\r\n '& .icon-MicrosoftStore': {\r\n backgroundImage: `url(\"${microsoftStoreIcon}\")`,\r\n ...svgIconStyle,\r\n },\r\n },\r\n objectiveIcon: {\r\n fontSize: 35,\r\n lineHeight: '24px',\r\n color: '#000000',\r\n marginTop: 13,\r\n },\r\n objectiveDescription: {\r\n fontSize: 14,\r\n lineHeight: '16px',\r\n textAlign: 'center',\r\n color: palette.neutralPrimary,\r\n marginBottom: '-15px',\r\n width: '90%',\r\n\r\n '& .empty': {\r\n color: palette.neutralLighter,\r\n },\r\n },\r\n objectiveHelpIcon: {\r\n cursor: 'pointer',\r\n '&:focus': {\r\n outline: '1px solid #605e5c',\r\n },\r\n '&:hover': {\r\n backgroundColor: palette.neutralLight,\r\n },\r\n '&:active': {\r\n backgroundColor: palette.neutralQuaternaryAlt,\r\n },\r\n '&::before': {\r\n content: '\"\\\\E9CE\"',\r\n },\r\n fontFamily: iconFontFamily,\r\n fontSize: 15,\r\n marginLeft: '0 !important',\r\n border: 'none',\r\n backgroundColor: 'inherit',\r\n },\r\n newFeatureLabel: {\r\n ...labelStyle,\r\n color: palette.white,\r\n border: `1px solid ${palette.white}`,\r\n backgroundColor: '#D83B01',\r\n },\r\n facLabel: {\r\n ...labelStyle,\r\n color: palette.white,\r\n border: `1px solid ${palette.white}`,\r\n backgroundColor: palette.themePrimary,\r\n },\r\n});\r\n","import { memoize } from 'underscore';\r\n\r\nexport const getNavigateSectionStyles = memoize(({ isBorderInsteadOfShadow = false } = {}) => (_, { palette = {} }) => ({\r\n backToCampaign: {\r\n height: 44,\r\n backgroundColor: palette.neutralLighter,\r\n ...isBorderInsteadOfShadow ? {\r\n borderBottom: `solid 1px ${palette.neutralQuaternaryAlt}`,\r\n } : {\r\n boxShadow: '0px 0.6px 1.8px rgba(0, 0, 0, 0.108), 0px 3.2px 7.2px rgba(0, 0, 0, 0.132)',\r\n },\r\n },\r\n backToCampaignLink: {\r\n lineHeight: '19px',\r\n fontSize: 14,\r\n color: palette.themeDarkAlt,\r\n margin: 1,\r\n padding: [12, 0, 12, 0],\r\n '&:focus': {\r\n outline: '1px solid #605E5C',\r\n },\r\n '& .icon-Back': {\r\n fontSize: 16,\r\n width: 16,\r\n height: 16,\r\n marginRight: 8,\r\n },\r\n },\r\n}), (...args) => JSON.stringify(args));\r\n","export const getNavigateContentStyles = (_, { palette = {} }) => ({\r\n navigateContent: {\r\n color: palette.neutralPrimary,\r\n },\r\n navigateContentLastItem: {\r\n fontWeight: 'bold',\r\n },\r\n});\r\n","import { internalLinkStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nexport const getAdTypeItemStyles = (_, { palette = {} }) => ({\r\n adTypeItem: {\r\n position: 'relative',\r\n '&.disabled': {\r\n opacity: 0.5,\r\n '& > div': {\r\n cursor: 'not-allowed',\r\n },\r\n },\r\n '& > div': {\r\n height: '100%',\r\n minHeight: 365,\r\n width: 344,\r\n cursor: 'pointer',\r\n },\r\n '& .title-row': {\r\n height: 55,\r\n paddingTop: 18,\r\n marginLeft: 19,\r\n marginRight: 19,\r\n textAlign: 'center',\r\n },\r\n '& .img-row': {\r\n marginLeft: 61,\r\n marginRight: 61,\r\n textAlign: 'center',\r\n marginBottom: 10,\r\n },\r\n '& .description-row': {\r\n minHeight: 128,\r\n marginLeft: 19,\r\n marginRight: 19,\r\n textAlign: 'center',\r\n display: 'flex',\r\n alignItems: 'center',\r\n '& .ad-type-description': {\r\n ...internalLinkStyle({ palette, isGreyBackground: true }),\r\n },\r\n },\r\n },\r\n title: {\r\n color: palette.neutralPrimary,\r\n lineHeight: '16px',\r\n fontWeight: 'bold',\r\n },\r\n img: {\r\n },\r\n description: {\r\n lineHeight: '16px',\r\n color: palette.neutralPrimary,\r\n },\r\n newFeatureLabel: {\r\n position: 'absolute',\r\n marginLeft: '2px',\r\n marginTop: '2px',\r\n backgroundColor: '#D83B01',\r\n color: palette.white,\r\n borderRadius: 12,\r\n padding: '0 9px',\r\n border: `1px solid ${palette.white}`,\r\n fontSize: 12,\r\n },\r\n});\r\n","export const getChooseAdsPanelStyles = (_, { palette = {} }) => ({\r\n smartShoppingWarning: {\r\n padding: '17px 27px',\r\n '& h3': {\r\n marginTop: 0,\r\n },\r\n },\r\n dealFilterBar: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n '& .targetFilters': {\r\n justifyContent: 'space-between',\r\n display: 'flex',\r\n width: '250px',\r\n\r\n '& .target': {\r\n cursor: 'pointer',\r\n borderRadius: '5px',\r\n border: '1px solid lightgray',\r\n padding: '6px',\r\n },\r\n '& .target-active': {\r\n border: '1px solid #0078D4',\r\n color: '#0078D4',\r\n },\r\n },\r\n },\r\n smartShoppingWarningLink: {\r\n display: 'block',\r\n },\r\n chooseAdsPanelBody: {\r\n display: 'flex',\r\n marginTop: 75,\r\n marginBottom: 'auto',\r\n marginRight: 45,\r\n marginLeft: 45,\r\n flexWrap: 'wrap',\r\n padding: 1,\r\n overflowY: 'auto',\r\n },\r\n chooseAdsPanelFooter: {\r\n height: 64,\r\n backgroundColor: palette.white,\r\n marginBottom: 0,\r\n paddingTop: 16,\r\n },\r\n nextButton: {\r\n marginRight: 8,\r\n },\r\n cancelButton: {\r\n },\r\n chooseObjectivePanel: {\r\n boxShadow: 'none',\r\n '&.MediaPackageCampaign': {\r\n fontSize: 12,\r\n '& .campaign-objective-button': {\r\n boxShadow: '0px 1.6px 3.6px rgba(0, 0, 0, 0.132), 0px 0.3px 0px rgba(0, 0, 0, 0.108)',\r\n width: 306,\r\n marginRight: 10,\r\n marginBottom: 10,\r\n height: 280,\r\n },\r\n '& .deal-description': {\r\n '& div': {\r\n lineHeight: 2,\r\n },\r\n },\r\n '& .description-row': {\r\n height: 'unset',\r\n textAlign: 'left',\r\n },\r\n '& .title-row': {\r\n textAlign: 'left',\r\n fontSize: 15,\r\n },\r\n },\r\n '&:focus': {\r\n outline: 'none',\r\n },\r\n '& .panel-close': {\r\n width: 32,\r\n height: 44,\r\n right: 8,\r\n top: 2,\r\n minWidth: 'unset',\r\n '& .panel-cancel-icon': {\r\n fontSize: 12,\r\n lineHeight: '12px',\r\n color: palette.neutralSecondary,\r\n margin: 0,\r\n top: 0,\r\n right: 5,\r\n },\r\n },\r\n '& .panel-title': {\r\n lineHeight: '27px',\r\n fontSize: 20,\r\n color: palette.neutralPrimary,\r\n fontWeight: 'bold',\r\n },\r\n '& .panel-body': {\r\n paddingBottom: 0,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n position: 'relative',\r\n },\r\n '& .panel-header': {\r\n marginTop: 11,\r\n },\r\n '& .ms-MessageBar': {\r\n backgroundColor: '#EFF6FC',\r\n },\r\n },\r\n});\r\n","export const getSelectableItemStyles = (_, { palette = {} }) => ({\r\n selectableButton: {\r\n padding: 0,\r\n height: 112,\r\n width: 140,\r\n cursor: 'pointer',\r\n\r\n '&:focus, &:hover, &:active': {\r\n outline: `1px solid ${palette.neutralPrimary}`,\r\n '& .shared-radio': {\r\n opacity: 1,\r\n },\r\n },\r\n '&.selected': {\r\n '& .shared-radio': {\r\n opacity: 1,\r\n },\r\n outline: `1px solid ${palette.themePrimary}`,\r\n },\r\n backgroundColor: palette.neutralLighter,\r\n marginRight: 2,\r\n outline: 'none',\r\n border: 'none',\r\n '& .shared-radio': {\r\n '&:focus, &:hover, &:active': {\r\n opacity: 1,\r\n },\r\n float: 'right',\r\n marginTop: '5px',\r\n marginLeft: '-25px',\r\n marginRight: '5px',\r\n position: 'relative',\r\n opacity: 0,\r\n },\r\n\r\n '& .icon-RadioBtnOff': {\r\n right: 5,\r\n zIndex: 1,\r\n },\r\n '&.wider-objective-item.objective-item': {\r\n width: 150,\r\n },\r\n },\r\n});\r\n","import { isFunction, some, isEmpty } from 'underscore';\r\nimport { merge } from '@bingads-webui/primitive-utilities';\r\nimport {\r\n campaignSettingsStyles, adgroupsKeywordsStyles, adExtensionsStyles, budgetBidsStyles, adgroupCreationStyles,\r\n creationCommonStyle,\r\n dsaCampaignStyles,\r\n audienceCampaignSettingsStyles, audienceTargetsSettingsStyles, audienceBudgetBidsStyles, audienceAdsStyles,\r\n audienceAdgroupStyles,\r\n campaignCreationSearchShoppingStyles,\r\n raiseBidPopupStyles,\r\n disclaimerPanelStyles, globalDsaCampaignStyles,\r\n smartShoppingStyles, globalAdgroupCreationStyles,\r\n audienceCampaignBmcRedirectStyles\r\n} from '@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles';\r\nimport {\r\n entitySelectorStyle, uiblockerStyle, toggleButtonStyle, messageBarStyle, searchboxStyle, tableStyle,\r\n helpbuttonStyle, linkStyle, paginationStyle, statusStyle, glyphIconStyle, kendoMultiSelectStyle, commonDoubleListBoxStyle,\r\n advancedSettingsSectionStyle, containerBudgetStyle, locationBidGridStyle, keywordPlannerStyle, locationMapStyle,\r\n sharedBudgetGridWrapper, estimationResultStyle, audienceAssociationSectionStyle, extensionEditorStyles, audienceReachEstimateContainerStyle,\r\n datePickerStyle, audienceModalStyles, audienceCombinedListStyle, keywordToolbarStyle, selectElementStyle, buttonInputStyle, inputFieldStyle, audienceExpressionStyle,\r\n convertToGlobalStyle, legacyUIBlockerStyle\r\n} from '@bingads-webui-campaign-react/common-styles';\r\nimport { adEditorPanelOverrideStyle } from '@bingads-webui-campaign-react/ad-editor-styles';\r\nimport { stepWizardStyle } from './step-wizard';\r\nimport { getCreationContainerContentStyle, CreationContainerContentOverrideStyle } from './creation-content-container-style';\r\nimport { campaignCreationAdEditorOverrideStyle } from './campaign-creation-ad-editor-override';\r\n\r\nexport * from './action-list';\r\nexport * from './choose-objective';\r\nexport * from './objective-item';\r\nexport * from './navigate-section';\r\nexport * from './navigate-content';\r\nexport * from './ad-type-item';\r\nexport * from './choose-ads-panel';\r\nexport * from './selectable-item';\r\n\r\n\r\nfunction resolveStyles(theme, ...styles) {\r\n const resolvedStyles = styles.map(s => (isFunction(s) ? s(theme) : s));\r\n\r\n if (some(resolvedStyles, isEmpty)) {\r\n throw new Error('Cannot pass in empty style!');\r\n }\r\n return resolvedStyles;\r\n}\r\n\r\nexport const getEntityCreationStyle = (_, { palette = {} }) => {\r\n const commonStyles = merge(\r\n {},\r\n ...resolveStyles(\r\n { palette },\r\n statusStyle,\r\n paginationStyle,\r\n entitySelectorStyle,\r\n buttonInputStyle,\r\n containerBudgetStyle,\r\n commonDoubleListBoxStyle,\r\n keywordPlannerStyle,\r\n searchboxStyle,\r\n estimationResultStyle,\r\n locationBidGridStyle,\r\n locationMapStyle,\r\n sharedBudgetGridWrapper,\r\n tableStyle,\r\n advancedSettingsSectionStyle,\r\n toggleButtonStyle,\r\n linkStyle,\r\n selectElementStyle\r\n )\r\n );\r\n\r\n const globalStyles = merge(\r\n {},\r\n ...resolveStyles(\r\n { palette },\r\n stepWizardStyle,\r\n uiblockerStyle,\r\n kendoMultiSelectStyle,\r\n audienceModalStyles,\r\n audienceExpressionStyle,\r\n audienceCombinedListStyle,\r\n extensionEditorStyles,\r\n messageBarStyle,\r\n glyphIconStyle,\r\n datePickerStyle,\r\n helpbuttonStyle,\r\n keywordToolbarStyle,\r\n inputFieldStyle,\r\n CreationContainerContentOverrideStyle,\r\n disclaimerPanelStyles,\r\n globalDsaCampaignStyles,\r\n globalAdgroupCreationStyles\r\n ),\r\n convertToGlobalStyle(resolveStyles(\r\n { palette },\r\n adEditorPanelOverrideStyle\r\n ))\r\n );\r\n\r\n\r\n const searchCreationStyles = merge(\r\n {},\r\n ...resolveStyles(\r\n { palette },\r\n audienceTargetsSettingsStyles,\r\n audienceBudgetBidsStyles,\r\n dsaCampaignStyles,\r\n campaignSettingsStyles,\r\n adgroupsKeywordsStyles,\r\n adExtensionsStyles,\r\n budgetBidsStyles,\r\n creationCommonStyle,\r\n adgroupCreationStyles,\r\n raiseBidPopupStyles\r\n )\r\n );\r\n\r\n const audienceCreationStyles = merge(\r\n {\r\n '& .ima-reach-alert': {\r\n padding: '8px 32px 8px 8px !important',\r\n marginTop: '10px',\r\n marginLeft: '0px',\r\n },\r\n },\r\n ...resolveStyles(\r\n { palette },\r\n audienceCampaignSettingsStyles,\r\n audienceReachEstimateContainerStyle,\r\n audienceAssociationSectionStyle,\r\n audienceTargetsSettingsStyles,\r\n audienceBudgetBidsStyles,\r\n audienceAdsStyles,\r\n audienceAdgroupStyles,\r\n audienceCampaignBmcRedirectStyles,\r\n legacyUIBlockerStyle\r\n )\r\n );\r\n\r\n const shoppingCreationStyles = merge(\r\n {},\r\n ...resolveStyles(\r\n { palette },\r\n campaignCreationSearchShoppingStyles,\r\n audienceCampaignSettingsStyles\r\n )\r\n );\r\n\r\n const smartShoppingCreationStyles = merge(\r\n {},\r\n ...resolveStyles(\r\n { palette },\r\n smartShoppingStyles,\r\n audienceCampaignSettingsStyles,\r\n campaignCreationSearchShoppingStyles\r\n )\r\n );\r\n\r\n\r\n return {\r\n '@global': globalStyles,\r\n\r\n CampaignCreationSearch: {\r\n ...getCreationContainerContentStyle(),\r\n ...commonStyles,\r\n ...searchCreationStyles,\r\n },\r\n\r\n CampaignCreationSearchShopping: {\r\n ...getCreationContainerContentStyle(),\r\n ...shoppingCreationStyles,\r\n ...commonStyles,\r\n ...searchCreationStyles,\r\n\r\n },\r\n\r\n CampaignCreationAudienceShopping: {\r\n ...getCreationContainerContentStyle(),\r\n ...audienceCreationStyles,\r\n ...commonStyles,\r\n ...searchCreationStyles,\r\n },\r\n\r\n CampaignCreationAudience: {\r\n ...getCreationContainerContentStyle(),\r\n ...audienceCreationStyles,\r\n ...commonStyles,\r\n ...searchCreationStyles,\r\n ...campaignCreationAdEditorOverrideStyle(_, { palette }),\r\n },\r\n\r\n CampaignCreationSmartShopping: {\r\n ...getCreationContainerContentStyle(),\r\n ...smartShoppingCreationStyles,\r\n ...commonStyles,\r\n },\r\n };\r\n};\r\n","export const stepWizardStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '.steps-wizard': {\r\n height: '100%',\r\n },\r\n '.steps-wizard:after': {\r\n content: '\" \"',\r\n clear: 'both',\r\n display: 'block',\r\n },\r\n '.step-content-container': {\r\n borderLeft: `1px solid ${palette.neutralQuaternaryAlt}`,\r\n paddingTop: '20px',\r\n paddingLeft: 0,\r\n paddingBottom: '64px',\r\n minHeight: '100%',\r\n\r\n '& div[data-step-status=\"done\"], div[data-step-status=\"pending\"]': {\r\n padding: 0,\r\n },\r\n\r\n '& .step-footer[data-step-status=\"done\"], .step-footer[data-step-status=\"pending\"]': {\r\n display: 'none',\r\n },\r\n },\r\n '.steps-wizard .steps-wizard__title, .step-body .step-page-title': {\r\n fontSize: 20,\r\n fontWeight: 600,\r\n lineHeight: '27px',\r\n marginLeft: 32,\r\n\r\n '& span[role=\"heading\"][tabindex=\"-1\"]': {\r\n outline: 'none',\r\n },\r\n },\r\n '.step-content-container .steps-wizard__description': {\r\n marginTop: '0px',\r\n },\r\n '.step-content-container>.action-container': {\r\n width: '100%',\r\n paddingTop: '16px',\r\n paddingBottom: '16px',\r\n paddingLeft: '32px',\r\n marginLeft: '0 !important',\r\n borderTop: `1px solid ${palette.neutralQuaternaryAlt}`,\r\n bottom: 0,\r\n position: 'absolute',\r\n },\r\n\r\n '.step-content-container .action-container .btn': {\r\n marginRight: 12,\r\n },\r\n\r\n '.step-content-container .action-container .btn-back': {\r\n marginRight: 38,\r\n },\r\n\r\n '.step-indicator-container': {\r\n marginTop: '27px',\r\n paddingLeft: 20,\r\n },\r\n '.step-vertical-divider': {\r\n marginLeft: '7px',\r\n top: '16px',\r\n borderLeft: '2px solid #EBEBEB',\r\n height: '39px',\r\n marginBottom: '3px',\r\n marginTop: '3px',\r\n },\r\n '.step-indicator': {\r\n /* position: 'absolute', */\r\n width: '16px',\r\n height: '16px',\r\n left: '0px',\r\n top: 'calc(50% - 16px/2)',\r\n\r\n fontFamily: 'Fabric MDL2 Assets',\r\n fontSize: '16px',\r\n lineHeight: '16px',\r\n /* identical to box height */\r\n flex: [0, 1, 'auto'],\r\n alignItems: 'center',\r\n borderRadius: '50%',\r\n },\r\n\r\n '.step-header[data-step-status=active] .step-indicator': {\r\n backgroundColor: '#C0DEF6',\r\n fontWeight: 600,\r\n },\r\n '.step-header[data-step-status=done] .step-indicator': {\r\n fontFamily: iconFontFamily,\r\n color: palette.themePrimary,\r\n fontSize: 16,\r\n },\r\n '.step-header[data-step-status=done] .step-indicator:before': {\r\n content: '\"\\\\EC61\"',\r\n },\r\n '.step-header[data-step-status=pending] .step-indicator': {\r\n border: `2px solid ${palette.neutralLight}`,\r\n boxSizing: 'border-box',\r\n\r\n '& .title': {\r\n marginTop: -4,\r\n },\r\n },\r\n '.current-step': {\r\n backgroundColor: '#C0DEF6',\r\n fontWeight: 600,\r\n },\r\n '.not-start-step': {\r\n border: `2px solid ${palette.neutralLight}`,\r\n boxSizing: 'border-box',\r\n\r\n '& span.title': {\r\n marginTop: -4,\r\n },\r\n },\r\n '.completed-step': {\r\n fontFamily: iconFontFamily,\r\n color: palette.themePrimary,\r\n '&:before': {\r\n content: '\"\\\\EC61\"',\r\n },\r\n },\r\n '.step-indicator .title': {\r\n position: 'absolute',\r\n height: '24px',\r\n left: '28px',\r\n /* top: 'calc(50% - 24px/2 - 1px)', */\r\n fontFamily: 'Segoe UI',\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n flex: [0, 1, 'auto'],\r\n alignItems: 'center',\r\n color: palette.neutralPrimary,\r\n marginRight: '20px',\r\n marginLeft: 20,\r\n marginTop: -2,\r\n },\r\n});\r\n","export const getCampaignAdgroupMultiSelectorStyle = (iconFontFamily = 'MsAds MDL2 Assets') => ({\r\n '& .ba-campaign-selector .list-selector-content .add-arrow-button': {\r\n top: '20%',\r\n },\r\n '& .ba-campaign-adgroup-selector .list-selector-content .add-arrow-button': {\r\n top: '50%',\r\n },\r\n '& .ba-campaign-selector, .ba-campaign-adgroup-selector': {\r\n top: 'auto',\r\n left: 'auto',\r\n '& .list-selector-content .remove-arrow-button': {\r\n position: 'absolute',\r\n top: '2%',\r\n right: 10,\r\n },\r\n '& .list-selector-content .add-arrow-button': {\r\n position: 'absolute',\r\n right: 10,\r\n },\r\n '& .ba-entity-selector': {\r\n minWidth: 300,\r\n },\r\n '& .dropdown-toggle': {\r\n width: '220px !important',\r\n },\r\n '& .multi-selector': {\r\n border: 'none',\r\n '& .ba-pagination': {\r\n '& .pager-input': {\r\n width: '70px',\r\n },\r\n },\r\n '& .ba-list-selector': {\r\n borderTop: '0px', // we want to have a light grey line for the bottom border of the search box\r\n '& .list-selector-action-bar': {\r\n '& [class*=\"-all-content\"]': {\r\n padding: '10px 8px',\r\n color: '#0078D4',\r\n cursor: 'pointer',\r\n '& span': {\r\n '&:hover': {\r\n color: '#004578',\r\n textDecorationLine: 'underline',\r\n },\r\n },\r\n },\r\n '& .select-all-content .enabled.arrow-button': {\r\n float: 'right',\r\n },\r\n '& .remove-all-content .remove.arrow-button': {\r\n marginTop: 0,\r\n },\r\n },\r\n '& .list-selector-content': {\r\n '& .list-selector-item': {\r\n maxWidth: '350px',\r\n '& .statusEnabled_icon::before': { // Todo: find icons for status disabled etc.\r\n color: '#107c10',\r\n content: '\"\\\\ECCC\"',\r\n fontFamily: iconFontFamily,\r\n },\r\n '& .statusPaused_icon::before': { // Todo: find icons for status disabled etc.\r\n color: '#323130',\r\n content: '\"\\\\F6B0\"',\r\n fontFamily: iconFontFamily,\r\n },\r\n '& .statusDeleted_icon::before': { // Todo: find icons for status disabled etc.\r\n color: '#FF0000',\r\n content: '\"\\\\E738\"',\r\n fontFamily: iconFontFamily,\r\n },\r\n '& .iconba-Error': {\r\n color: '#d13438',\r\n },\r\n '& .iconba-Completed': {\r\n color: '#107c10',\r\n },\r\n '& > div, & .item-content': {\r\n maxWidth: 'none !important',\r\n },\r\n },\r\n },\r\n '& .arrow-button': {\r\n color: '#0078D4',\r\n },\r\n '& .arrow-button.enabled': {\r\n marginLeft: 10,\r\n overflow: 'visible !important',\r\n textDecoration: 'none !important',\r\n background: 'none !important',\r\n fontFamily: iconFontFamily,\r\n cursor: 'pointer',\r\n },\r\n\r\n '& .arrow-button.enabled:before': {\r\n content: '\"\\\\E710\"',\r\n },\r\n\r\n '& .arrow-button.remove': {\r\n marginRight: 10,\r\n marginTop: 8,\r\n float: 'right',\r\n fontFamily: iconFontFamily,\r\n padding: 0,\r\n cursor: 'pointer',\r\n },\r\n\r\n '& .arrow-button.remove:before': {\r\n content: '\"\\\\E738\"',\r\n },\r\n\r\n '& .arrow-button.remove+a': {\r\n width: 'fit-content',\r\n padding: 0,\r\n },\r\n '& .btn-done': {\r\n marginRight: '10px',\r\n },\r\n },\r\n '& .multi-selector-result-container': {\r\n margin: '0 0 0 8px',\r\n '& .list-selector-container .ba-list-selector': {\r\n height: '351px',\r\n borderTop: '1px solid #605E5C', // no search box on top of the result container\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","import { map } from 'underscore';\r\n\r\nexport const processEdmResult = (data, isError = false) => {\r\n if (isError) {\r\n return { items: [], totalCount: 0 };\r\n }\r\n const totalCount = data['@odata.count'];\r\n const items = map(data.value, item => ({\r\n Id: item.Id,\r\n name: item.Name,\r\n status: item.Status,\r\n campaignName: item.Campaign ? item.Campaign.Name : null,\r\n CampaignId: item.Campaign ? item.Campaign.Id : null,\r\n }));\r\n return { items, totalCount };\r\n};\r\n\r\nexport const processEdmResultAccount = (data, isError = false) => {\r\n if (isError) {\r\n return { items: [], totalCount: 0 };\r\n }\r\n const totalCount = data['@odata.count'];\r\n const items = map(data.value, item => ({\r\n Id: item.Id,\r\n name: item.Name,\r\n status: item.AccountInactiveReasonsCount > 0 ? 'AccountError' : 'AccountActive',\r\n }));\r\n return { items, totalCount };\r\n};\r\n","export const legacyI18nMap = {\r\n CampaignSelector_List_Header: _TL_('Available campaigns: {{itemCount}}'),\r\n AdGroupSelector_List_Header: _TL_('Available ad groups: {{itemCount}}'),\r\n EmptyList_Content: _TL_('No items found'),\r\n EntitySelector_Pagination_Page: _TL_('Page: '),\r\n EntitySelector_Pagination_TotalPageCountText: _TL_(' of '),\r\n EntitySelector_Pagination_PreviousPageText: _TL_('Previous page'),\r\n EntitySelector_Pagination_NextPageText: _TL_('Next page'),\r\n EntitySelector_Search_Placeholder: _TL_('Search'),\r\n CampaignSelector_SelectCampaign: _TL_('Select campaign'),\r\n CampaignSelector_SelectCampaigns: _TL_('Select campaigns'),\r\n AdGroupSelector_SelectAdGroup: _TL_('Select ad group'),\r\n AdGroupSelector_SelectAdGroups: _TL_('Select ad groups'),\r\n CampaignSelector_Result_List_Header: _TL_('Selected campaigns: {{itemCount}}'),\r\n AdGroupSelector_Result_List_Header: _TL_('Selected ad groups: {{itemCount}}'),\r\n Result_Action_Bar: _TL_('Select all on this page'),\r\n 'Select ad group(s)': _TL_('Select ad group(s)'),\r\n 'Select an ad group': _TL_('Select an ad group'),\r\n 'Selected ad groups: {{itemCount}}': _TL_('Selected ad groups: {{itemCount}}'),\r\n 'Campaigns: {{itemCount}}': _TL_('Campaigns: {{itemCount}}'),\r\n Campaigns: _TL_('Campaigns'),\r\n 'Ad groups': _TL_('Ad groups'),\r\n 'Available ad groups: {{itemCount}}': _TL_('Available ad groups: {{itemCount}}'),\r\n 'No results to display.': _TL_('No results to display.'),\r\n 'Select all on this page': _TL_('Select all on this page'),\r\n 'Remove all': _TL_('Remove all'),\r\n Done: _TL_('Done'),\r\n Cancel: _TL_('Cancel'),\r\n 'Available Entity: {{itemCount}}': _TL_('Available Entity: {{itemCount}}'),\r\n 'No items found': _TL_('No items found'),\r\n Search: _TL_('Search'),\r\n CampaignSelector_Result_Action_Bar: _TL_('Select all on this page'),\r\n 'Found {{totalCount}} Results for {{searchText}}': _TL_('Found {{totalCount}} Results for {{searchText}}'),\r\n 'No results found for {{searchText}}': _TL_('No results found for {{searchText}}'),\r\n AccountSelector_List_Header: _TL_('Available accounts: {{itemCount}}'),\r\n AccountSelector_SelectAccounts: _TL_('Select accounts'),\r\n AccountSelector_Result_List_Header: _TL_('Selected accounts: {{itemCount}}'),\r\n};\r\n","/* eslint-disable @typescript-eslint/no-unused-vars */\r\nimport $ from 'jquery';\r\nimport React from 'react';\r\nimport { identity, extend, map, isArray, each, noop, isEmpty } from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { buildLegacyI18n } from '@bingads-webui/build-legacy-i18n';\r\nimport { CampaignAdgroupSelector } from '@bingads-webui-campaign-react/campaign-adgroup-selector';\r\nimport { CampaignSelector } from '@bingads-webui-campaign-react/campaign-selector';\r\nimport { getEntityFromScope } from '@bingads-webui/edm-campaign';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { ComponentSettings, ThemeFluent } from '@bingads-webui-theme-2018/theme-fluent';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { getCampaignAdgroupMultiSelectorStyle } from './campaign-adgroup-selector-style';\r\nimport { processEdmResult, processEdmResultAccount } from './util';\r\nimport { legacyI18nMap } from './legacy-i18n-map';\r\n\r\nconst CAMPAIGN_PAGESIZE = 10;\r\nconst ADGROUP_PAGESIZE = 6;\r\nclass UnstyledCampaignAdgroupSelectorEdm extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.campaign = {\r\n onFetch: this.fetchCampaign,\r\n onSelect: props.onSelectCampaign,\r\n pageSize: CAMPAIGN_PAGESIZE,\r\n containerClassName: 'campaign-entity-container',\r\n };\r\n this.adgroup = {\r\n onFetch: this.fetchAdgroup,\r\n onSelect: props.onSelectAdGroup,\r\n pageSize: ADGROUP_PAGESIZE,\r\n containerClassName: 'adgroup-entity-container',\r\n };\r\n this.i18nLegacy = buildLegacyI18n(this.props.i18n, [legacyI18nMap]);\r\n this.campaignId = this.props.scope.values.campaignId;\r\n this.selfRef = React.createRef();\r\n }\r\n\r\n onSelectDone = (items) => {\r\n if (items.length > 0) {\r\n this.props.onApply(map(items, item => JSON.stringify(item)));\r\n }\r\n }\r\n\r\n fetchCampaign = ({\r\n query = '', pageNumber = 0, pageSize = CAMPAIGN_PAGESIZE,\r\n }) => {\r\n const { currentEntity } = getEntityFromScope(this.props.scope);\r\n const filter = this.props.campaignFilterCustomizer ?\r\n this.props.campaignFilterCustomizer(query) :\r\n `contains(Name, '${query}')`;\r\n\r\n return currentEntity.Campaigns.get({\r\n filter: {\r\n where: filter,\r\n },\r\n skip: pageSize * pageNumber,\r\n top: pageSize,\r\n select: ['Id', 'Name', 'Status'],\r\n }).fetch()\r\n .then(data => processEdmResult(data))\r\n .catch(e => processEdmResult(null, true))\r\n .finally(withUiBlock($(`.${this.campaign.containerClassName}`, this.selfRef.current)));\r\n }\r\n\r\n fetchAdgroup = ({\r\n query = '', pageNumber = 0, pageSize = CAMPAIGN_PAGESIZE, scopeParentItem = null,\r\n }) => {\r\n const filter = this.props.adGroupFilterCustomizer ?\r\n this.props.adGroupFilterCustomizer(query) :\r\n `contains(Name, '${query}')`;\r\n this.campaignId = scopeParentItem ? scopeParentItem.Id : this.props.scope.values.campaignId;\r\n const { currentEntity } = getEntityFromScope({\r\n values: {\r\n cid: this.props.scope.values.cid,\r\n aid: this.props.scope.values.aid,\r\n campaignId: this.campaignId,\r\n },\r\n });\r\n\r\n return currentEntity.AdGroups.get({\r\n filter: {\r\n where: filter,\r\n },\r\n skip: pageSize * pageNumber,\r\n top: pageSize,\r\n select: ['Id', 'Name', 'Status', 'Campaign'],\r\n }).fetch()\r\n .then(data => processEdmResult(data))\r\n .catch(e => processEdmResult(null, true))\r\n .finally(withUiBlock($(`.${this.adgroup.containerClassName}`, this.selfRef.current)));\r\n }\r\n\r\n fetchAccount = ({\r\n query = '', pageNumber = 0, pageSize = CAMPAIGN_PAGESIZE,\r\n }) => {\r\n const { currentEntity } = getEntityFromScope(this.props.scope);\r\n // Filter out deleted accounts, only fetch expert account (AccountMode = 0)\r\n const filter = this.props.accountFilterCustomizer ?\r\n this.props.accountFilterCustomizer(query) :\r\n `contains(Name, '${query}') and AccountMode eq 0 and AccountInactiveReasons/all(r:r/Reason ne Enum.AccountInactiveReasonCode'Deleted')`;\r\n\r\n return currentEntity.Accounts.get({\r\n filter: {\r\n where: filter,\r\n },\r\n skip: pageSize * pageNumber,\r\n top: pageSize,\r\n select: ['Id', 'Name', 'Status'],\r\n }).fetch()\r\n .then(data => processEdmResultAccount(data))\r\n .catch(e => processEdmResultAccount(null, true));\r\n };\r\n\r\n render() {\r\n const { aid, campaignId, adGroupId } = this.props.scope.values;\r\n const className = `container ${this.props.classes.campaignAdgroupMultiSelector}`;\r\n\r\n if (isArray(this.props.value)) {\r\n each(this.props.value, (item) => {\r\n extend(item, {\r\n name: item.name || item.Name,\r\n });\r\n });\r\n }\r\n\r\n // Account selector, only include expert accounts under customer\r\n if (this.props.isCampaignMode && !aid) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n if (this.props.isCampaignMode && !campaignId) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n if (!this.props.isCampaignMode && campaignId && !adGroupId) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n if (!this.props.isCampaignMode && !campaignId && !adGroupId) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n return null;\r\n }\r\n}\r\n\r\nconst getCampaignAdgroupMultiSelectorStyles = (_, { palette = ThemeFluent.palette }) => extend({\r\n campaignAdgroupMultiSelector: extend(\r\n {},\r\n ComponentSettings.entitySelectorStyle({ palette }),\r\n extend(\r\n {},\r\n ComponentSettings.paginationStyle({ palette }),\r\n { '& .ba-pagination': ComponentSettings.paginationStyle({ palette })['& .ba-pagination, .dlb-pager-container, .pagination-control'] }\r\n ),\r\n getCampaignAdgroupMultiSelectorStyle()\r\n ),\r\n});\r\n\r\nexport const CampaignAdgroupSelectorEdm = withDefaultStyles(\r\n UnstyledCampaignAdgroupSelectorEdm,\r\n getCampaignAdgroupMultiSelectorStyles\r\n);\r\n\r\nUnstyledCampaignAdgroupSelectorEdm.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n scope: PropTypes.shape({\r\n values: PropTypes.shape({\r\n cid: PropTypes.number.isRequired,\r\n aid: PropTypes.number,\r\n campaignId: PropTypes.number,\r\n adGroupId: PropTypes.number,\r\n }),\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n campaignAdgroupMultiSelector: PropTypes.string.isRequired,\r\n }).isRequired,\r\n onApply: PropTypes.func.isRequired,\r\n onSelectCampaign: PropTypes.func,\r\n onSelectAdGroup: PropTypes.func,\r\n onSelectCancel: PropTypes.func,\r\n isCampaignMode: PropTypes.bool,\r\n isMultiMode: PropTypes.bool,\r\n withDropdownMenu: PropTypes.bool,\r\n // this will completely replace the default campaign filter, there will be no cancatenation\r\n accountFilterCustomizer: PropTypes.func,\r\n campaignFilterCustomizer: PropTypes.func,\r\n adGroupFilterCustomizer: PropTypes.func,\r\n // eslint-disable-next-line react/forbid-prop-types\r\n value: PropTypes.any,\r\n perfMarker: perfMarkerPropTypes,\r\n};\r\n\r\nUnstyledCampaignAdgroupSelectorEdm.defaultProps = {\r\n isCampaignMode: false,\r\n isMultiMode: true,\r\n withDropdownMenu: true,\r\n value: null,\r\n accountFilterCustomizer: undefined,\r\n campaignFilterCustomizer: undefined,\r\n adGroupFilterCustomizer: undefined,\r\n onSelectCancel: noop,\r\n onSelectCampaign: identity,\r\n onSelectAdGroup: identity,\r\n perfMarker: null,\r\n};\r\n","import Backbone from 'backbone';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { CampaignAdgroupSelectorEdm } from './campaign-adgroup-selector-edm';\r\n\r\n/**\r\n * the backbone view for the react campaign adgroup selector\r\n * campaign format: {onFetch, pageSize}\r\n * adgroup format: {onFetch, pageSize}\r\n */\r\nexport class CampaignAdgroupSelectorEdmView extends Backbone.View {\r\n initialize({\r\n i18n, scope, isCampaignMode, withDropdownMenu,\r\n campaignFilterCustomizer, value,\r\n }) {\r\n this.i18n = i18n;\r\n this.scope = scope;\r\n this.onApply = this.onApply.bind(this);\r\n this.onSelectCancel = this.onSelectCancel.bind(this);\r\n this.isCampaignMode = isCampaignMode;\r\n this.withDropdownMenu = withDropdownMenu;\r\n this.campaignFilterCustomizer = campaignFilterCustomizer;\r\n this.value = value;\r\n }\r\n\r\n /**\r\n * should trigger event to notify outter component\r\n * @param {object} selectedItem - the item selected\r\n * @returns {undefined} update the state with fetch result\r\n */\r\n onApply(selectedItem) {\r\n this.trigger('on-apply', selectedItem);\r\n }\r\n\r\n /**\r\n * should trigger event to notify outter component\r\n * @param {object} selectedItem - the item selected\r\n * @returns {undefined} update the state with fetch result\r\n */\r\n onSelectCancel() {\r\n this.trigger('on-select-cancel');\r\n }\r\n\r\n render() {\r\n ReactDOM.render(\r\n (\r\n \r\n ), this.el\r\n );\r\n return this;\r\n }\r\n\r\n remove() {\r\n ReactDOM.unmountComponentAtNode(this.el);\r\n return super.remove();\r\n }\r\n}\r\n","export const sharedStylesFromSelDesign = () => ({\r\n '.advanced-settings-section .form-group .col-sm-10 .camp-adg-shared-text-under-dropdown': {\r\n marginBottom: '0px',\r\n marginTop: '6px',\r\n },\r\n '.audience-advanced-settings .form-group .col-sm-10 .camp-adg-shared-text-under-dropdown': {\r\n marginBottom: '0px',\r\n marginTop: '6px',\r\n },\r\n '.camp-adg-shared-label-spacing': {\r\n marginTop: '12px',\r\n },\r\n '.camp-adg-shared-label': {\r\n fontWeight: '600',\r\n },\r\n '.row .camp-adg-shared-instruction-spacing': {\r\n marginBottom: '10px',\r\n },\r\n '.row .camp-adg-shared-first-textarea-spacing': {\r\n marginTop: '8px',\r\n },\r\n '.row .camp-adg-shared-spacing-between-textareas': {\r\n marginTop: '35px',\r\n },\r\n // Space between text areas for campaign settings exclusions section\r\n '.advanced-settings-section .form-group .ip-exclusion': {\r\n marginTop: '34px',\r\n },\r\n '.camp-adg-shared-disabled-textarea': {\r\n backgroundColor: '#ffffff',\r\n },\r\n '.camp-adg-shared-textarea': {\r\n borderWidth: '2px',\r\n },\r\n '.camp-adg-shared-exclusions-dropdown': {\r\n marginLeft: '15px',\r\n },\r\n 'a.camp-adg-shared-exclusions-dropdown:hover, a.trackingTemplateSection:hover, a.finalUrlSuffixSection:hover, a.customParametersSection:hover': {\r\n textDecoration: 'none',\r\n paddingBottom: '2px',\r\n borderBottomWidth: '1px',\r\n borderBottomStyle: 'solid',\r\n },\r\n});\r\n","import {\r\n alertStyle,\r\n entitySelectorStyle,\r\n} from '@bingads-webui-campaign-react/common-styles';\r\n\r\nexport const disclaimerSettingsStyles = ({ palette, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '& .disclaimer__container .form-group': {\r\n '& .form-control-static': {\r\n marginTop: 8,\r\n marginBottom: 8,\r\n position: 'relative',\r\n\r\n '& .addDisclaimerButton': {\r\n position: 'absolute',\r\n left: 0,\r\n },\r\n },\r\n\r\n '& .alert.alert-info': {\r\n marginTop: 5,\r\n marginBottom: 16,\r\n width: 'fit-content',\r\n },\r\n\r\n '& .disclaimer-selector': {\r\n '& .list-selector-option': {\r\n '& .disclaimer-item-name': {\r\n display: 'inline-block',\r\n maxWidth: 180,\r\n },\r\n\r\n '& .action-right': {\r\n float: 'right',\r\n },\r\n },\r\n\r\n '& .open .dropdown-menu': {\r\n position: 'relative',\r\n },\r\n\r\n '& .truncated': {\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n },\r\n\r\n ...entitySelectorStyle({ palette, iconFontFamily }),\r\n },\r\n});\r\n\r\nexport const disclaimerPanelStyles = ({ palette, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '.disclaimer-editor-panel': {\r\n ...alertStyle({ palette, iconFontFamily }),\r\n\r\n '& .panel-content': {\r\n width: 592,\r\n\r\n '& .panel-title': {\r\n fontSize: 20,\r\n fontWeight: '600 !important',\r\n lineHeight: '27px',\r\n },\r\n\r\n '& .panel-body': {\r\n paddingRight: 64,\r\n display: 'flex',\r\n 'flex-direction': 'column',\r\n\r\n '& .disclaimer-setting-content': {\r\n marginBottom: 'auto',\r\n },\r\n\r\n '& .disclaimer-setting-footer': {\r\n marginTop: 32,\r\n\r\n '& button ~ button': {\r\n marginLeft: 10,\r\n },\r\n },\r\n },\r\n\r\n '& .form-group': {\r\n margin: 0,\r\n\r\n '& > .control-label': {\r\n textAlign: 'left',\r\n float: 'none',\r\n width: '100%',\r\n },\r\n\r\n '& > .col-sm-8': {\r\n width: '100%',\r\n },\r\n },\r\n\r\n '& .form-group ~ .form-group': {\r\n marginTop: 32,\r\n },\r\n\r\n '& .col-sm-1, & .col-sm-2, & .col-sm-3, & .col-sm-4, & .col-sm-5, & .col-sm-6, & .col-sm-7, & .col-sm-8, & .col-sm-9, & .col-sm-10, & .col-sm-11, & .col-sm-12': {\r\n float: 'none',\r\n paddingLeft: 0,\r\n paddingRight: 0,\r\n },\r\n\r\n '& .alert.alert-info': {\r\n marginTop: 8,\r\n },\r\n\r\n '& div.error': {\r\n color: '#A80000',\r\n margin: '4px 0 0 0',\r\n fontSize: 12,\r\n },\r\n\r\n '& .mt-error': {\r\n backgroundColor: '#fde7e9',\r\n padding: 5,\r\n marginTop: 10,\r\n '& .over-all-errors.error': {\r\n fontSize: 12,\r\n color: '#D90026',\r\n },\r\n },\r\n\r\n '& .setting-disclaimer-layoutType .radio': {\r\n paddingTop: 0,\r\n },\r\n\r\n '& .dropdown-toggle.btn': {\r\n border: 'none',\r\n width: '100%',\r\n height: '100%',\r\n paddingLeft: 8,\r\n paddingRight: 8,\r\n borderRadius: 2,\r\n },\r\n\r\n '& .ba-dropdown-selector': {\r\n position: 'relative',\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n minWidth: 132,\r\n verticalAlign: 'baseline',\r\n marginLeft: 8,\r\n height: 30,\r\n borderRadius: 2,\r\n\r\n '& .glyphicon-triangle-bottom': {\r\n marginTop: 4,\r\n '&::before': {\r\n content: '\"\\\\E70D\"',\r\n },\r\n },\r\n },\r\n\r\n '& .dropdown-menu': {\r\n top: 'auto',\r\n position: 'absolute',\r\n width: '100%',\r\n padding: '10px',\r\n },\r\n\r\n '& .ba-list-selector': {\r\n border: 'none',\r\n '& .list-selector-item': {\r\n padding: '5px 10px',\r\n margin: '0',\r\n '&:hover': {\r\n cursor: 'pointer',\r\n backgroundColor: '#f5f5f5',\r\n },\r\n '&.selected': {\r\n background: '#E7F0F6',\r\n },\r\n '& .item-actions': {\r\n float: 'right',\r\n },\r\n },\r\n },\r\n\r\n '& textarea#disclaimer-editor-information-popup': {\r\n height: 169,\r\n resize: 'none',\r\n },\r\n\r\n '& textarea#disclaimer-editor-information-additionalline': {\r\n height: 69,\r\n resize: 'none',\r\n },\r\n\r\n '& .url-editor-form': {\r\n display: 'flex',\r\n gridTemplateColumns: 'auto 1fr',\r\n\r\n '& > select.form-control': {\r\n width: 'auto',\r\n marginRight: 6,\r\n },\r\n\r\n '& > input': {\r\n marginLeft: 6,\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","import { internalLinkStyle, underlineLinkStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nimport { disclaimerSettingsStyles } from './disclaimer-extensions-styles';\r\n\r\nexport const settingsCommonStyles = ({ palette }) => ({\r\n '& .language, & .bidding-strategy__container select.form-control': {\r\n width: 461,\r\n },\r\n\r\n '& .bidding-strategy__container': {\r\n '& .custom-param__key-field': {\r\n display: 'inline-block',\r\n width: 85,\r\n marginLeft: 5,\r\n marginRight: 5,\r\n },\r\n '& #currencyLabelTargetRoas': {\r\n display: 'inline',\r\n },\r\n '& #currencyLabelCostPerSale': {\r\n display: 'inline',\r\n },\r\n },\r\n\r\n '& .cashback-settings': {\r\n '& .cashback-percent-container': {\r\n display: 'flex',\r\n '& .form-control.cashback-option-select': {\r\n width: 180,\r\n marginRight: 10,\r\n },\r\n '& .cashback-input-container, & .cashback-inherit-container, & .inherit-cashback-value': {\r\n flex: 1,\r\n display: 'flex',\r\n '& input': {\r\n width: 90,\r\n },\r\n '& .input-group-addon': {\r\n width: 'auto',\r\n paddingTop: 8,\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .control-label': {\r\n lineHeight: 1.5,\r\n marginTop: 26,\r\n },\r\n '& .control-label#currencyLabelTargetCpa': {\r\n marginTop: 'auto',\r\n display: 'inline',\r\n },\r\n\r\n '& .control-label+.col-sm-4': {\r\n display: 'table',\r\n width: 'auto',\r\n },\r\n\r\n '& .location-targets': {\r\n '& .control-label': {\r\n marginTop: 33,\r\n },\r\n\r\n '& .form-horizontal': {\r\n '& > div:nth-child(2) .control-label': {\r\n marginTop: 10,\r\n },\r\n\r\n '& .location-target-physical-intent': {\r\n '& .control-label': {\r\n marginTop: '33px !important',\r\n },\r\n },\r\n },\r\n\r\n '& .form-group .col-sm-2': {\r\n display: 'block',\r\n },\r\n },\r\n\r\n '& #AdvancedBudgetOptions': {\r\n marginTop: 10,\r\n },\r\n\r\n '& .copy-campaign-settings': {\r\n minWidth: 400,\r\n marginBottom: 4,\r\n\r\n '& .copy-settings': {\r\n paddingLeft: 28,\r\n },\r\n },\r\n\r\n '& .checkbox, .radio': {\r\n padding: 0,\r\n height: 'auto',\r\n },\r\n\r\n '& .checkbox-inline': {\r\n marginLeft: 0,\r\n },\r\n\r\n '& .checkbox label': {\r\n display: 'inline-block',\r\n },\r\n\r\n '& .checkbox input[type=\"checkbox\"], & .checkbox-inline input[type=\"checkbox\"], & .radio input[type=\"radio\"]': {\r\n float: 'left',\r\n marginTop: 3,\r\n },\r\n\r\n '& .multi-language-selector': {\r\n width: 542,\r\n\r\n '& .alert': {\r\n width: 'auto',\r\n lineHeight: 1.5,\r\n margin: '8px 0',\r\n padding: 8,\r\n boxShadow: 'none',\r\n },\r\n\r\n '& .alert-image': {\r\n marginTop: 3,\r\n },\r\n\r\n '& .description': {\r\n paddingLeft: 15,\r\n },\r\n\r\n\r\n '& .container-fluid': {\r\n margin: 0,\r\n padding: 0,\r\n },\r\n\r\n '& .target-suggested-language': {\r\n height: 32,\r\n display: 'table',\r\n background: `${palette.white}`,\r\n marginTop: 10,\r\n verticalAlign: 'middle',\r\n color: '#000000',\r\n border: '1px solid #8A8886',\r\n boxSizing: 'border-box',\r\n borderRadius: 2,\r\n padding: '0 16px',\r\n lineHeight: '30px',\r\n fontSize: 14,\r\n fontWeight: 600,\r\n },\r\n\r\n '& .checkbox-inline': {\r\n paddingTop: 8,\r\n paddingBottom: 8,\r\n },\r\n '& .alert-info.form-group': {\r\n '& .alert-info-inline': {\r\n ...internalLinkStyle({ palette, elementLocator: '> a', isGreyBackground: true }),\r\n '& > a:focus': {\r\n border: 0,\r\n },\r\n },\r\n },\r\n ...underlineLinkStyle({ palette, elementLocator: 'a.HelpTopic' }),\r\n '& a.HelpTopic:focus': {\r\n border: 0,\r\n },\r\n },\r\n\r\n '& .language-error-container .col-sm-2': {\r\n display: 'none',\r\n },\r\n\r\n '& .dsa-switch-container label .text': {\r\n 'white-space': 'nowrap',\r\n },\r\n\r\n ...disclaimerSettingsStyles({ palette }),\r\n});\r\n","/* eslint-disable @typescript-eslint/no-unused-vars */\r\nimport { settingsCommonStyles } from '../creation-common-styles/settings-common-style';\r\n\r\nexport const campaignSettingsStyles = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '& .campaign-settings__container': settingsCommonStyles({ palette }),\r\n '& .dsa-switch-container, & .po-switch-container': {\r\n '& .checkbox-inline .text': {\r\n width: 250,\r\n },\r\n '& .HelpTopic': {\r\n marginLeft: 5,\r\n },\r\n },\r\n '& .rsa-auto-assets-setting-container': {\r\n '& .checkbox-inline': {\r\n width: '100%',\r\n },\r\n '& .HelpTopic': {\r\n marginLeft: 5,\r\n },\r\n },\r\n '& .feed-product-filter-container': {\r\n marginTop: 33,\r\n '& .filter-offset': {\r\n marginLeft: 25,\r\n },\r\n },\r\n '& .feed-product-filter': {\r\n '& .all-feed-products': {\r\n alignItems: 'center',\r\n display: 'flex',\r\n },\r\n },\r\n '& .broad-only-setting-container': {\r\n '& .broad-only-setting-radio-content': {\r\n paddingLeft: 28,\r\n },\r\n '& .HelpTopic': {\r\n marginLeft: 5,\r\n },\r\n },\r\n});\r\n","const getInputBorderStyle = palette => ({\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n '&:focus': {\r\n border: `1px solid ${palette.themePrimary}`,\r\n },\r\n});\r\n\r\nexport const adgroupsKeywordsStyles = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '& .mixed-mode-adgroup-create .dynamic-ad-group-create-view-container .landing-page-container': {\r\n marginBottom: 0,\r\n },\r\n\r\n '& .mixed-mode-adgroup-create .HelpTopic': {\r\n marginLeft: 5,\r\n },\r\n\r\n '& .mixed-mode-adgroup-create .authoring-container label': {\r\n paddingLeft: 28,\r\n },\r\n\r\n '& .adgroups-keywords__container, .keyword-section': {\r\n\r\n '& .panel': {\r\n border: 0,\r\n boxShadow: 'none',\r\n },\r\n\r\n '& .landing-page-container': {\r\n width: 447,\r\n padding: 0,\r\n marginBottom: 36,\r\n\r\n '& .pull-left': {\r\n float: 'none',\r\n display: 'inline-block',\r\n },\r\n\r\n '& .pull-left:nth-child(2)': {\r\n position: 'absolute',\r\n top: 68,\r\n left: -8,\r\n padding: [8, 5, 8, 8],\r\n\r\n '&:focus-within': {\r\n outline: '1px solid #605E5C',\r\n },\r\n\r\n '& input[type=\"checkbox\"]': {\r\n outline: 'none',\r\n },\r\n },\r\n\r\n '& .landing-page-container__label': {\r\n fontSize: 14,\r\n },\r\n\r\n '& .landing-page-container__checkbox': {\r\n margin: '0 8px 0 0 !important',\r\n verticalAlign: 'middle',\r\n position: 'relative',\r\n },\r\n\r\n '& div:nth-child(2)': {\r\n marginTop: 8,\r\n },\r\n\r\n '& .form-control': {\r\n width: '100%',\r\n ...getInputBorderStyle(palette),\r\n },\r\n },\r\n\r\n '& .ad-group-list-container': {\r\n width: 460,\r\n padding: '8px 0 0 0',\r\n marginTop: 18,\r\n marginBottom: 80,\r\n },\r\n\r\n '& .ad-group-list': {\r\n width: 447,\r\n borderTop: `1px solid ${palette.neutralSecondary}`,\r\n padding: 0,\r\n },\r\n\r\n '& .ad-group-list-container .form-control, .adgroup__body .form-group': {\r\n width: 416,\r\n\r\n '& input.adgroup-name, textarea.keyword-textarea': {\r\n ...getInputBorderStyle(palette),\r\n },\r\n },\r\n\r\n '& .adgroup__body': {\r\n padding: 0,\r\n width: 416,\r\n marginLeft: 30,\r\n\r\n '& .form-group > #KoErrors': {\r\n marginLeft: 0,\r\n },\r\n },\r\n\r\n '& .ad-group-collapsible, .parser': {\r\n position: 'relative',\r\n\r\n '& textarea.error': {\r\n color: palette.neutralSecondary,\r\n },\r\n },\r\n\r\n '& .ad-group-list > .row': {\r\n position: 'relative',\r\n paddingBotton: 15,\r\n\r\n '& div[data-bind=\"visible: !isDeleted()\"]': {\r\n borderBottom: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n },\r\n\r\n '& .ad-group-list__col-sm-1--remove': {\r\n position: 'absolute',\r\n top: 8,\r\n right: 0,\r\n zIndex: 1,\r\n width: 'auto',\r\n height: '32px',\r\n padding: 0,\r\n },\r\n\r\n '& .ad-group-list__col-sm-1--remove .glyphicon-remove': {\r\n fontFamily: iconFontFamily,\r\n fontSize: 16,\r\n color: palette.black,\r\n minWidth: 106,\r\n height: '32px',\r\n border: '1px solid #8A8886',\r\n borderRadius: 2,\r\n padding: '2px 12px',\r\n\r\n '&:hover': {\r\n textDecoration: 'none',\r\n backgroundColor: palette.neutralLighter,\r\n },\r\n\r\n '&:focus': {\r\n outline: `1px solid ${palette.neutralSecondaryAlt}`,\r\n boxShadow: `inset 0 0 0 1px ${palette.neutralSecondary}`,\r\n outlineOffset: 0,\r\n border: `2px solid ${palette.white}`,\r\n },\r\n\r\n '& span': {\r\n fontFamily: 'Segoe UI,Tahoma,Geneva,Verdana,sans-serif',\r\n fontSize: 14,\r\n fontWeight: 600,\r\n color: palette.neutralPrimary,\r\n lineHeight: '19px',\r\n },\r\n },\r\n\r\n '& .ad-group-list__col-sm-1--remove .glyphicon-remove:before': {\r\n content: '\"\\\\E738\"',\r\n position: 'relative',\r\n top: 5,\r\n paddingRight: 8,\r\n },\r\n\r\n '& .ad-group-list__col-sm-1--toggle': {\r\n marginTop: 6,\r\n padding: 0,\r\n width: 30,\r\n },\r\n\r\n '& .ad-group-list-container.ad-group--no-toggle': {\r\n '& .ad-group-list__col-sm-1--toggle': {\r\n display: 'none',\r\n },\r\n\r\n '& .adgroup__body': {\r\n marginLeft: '0 !important',\r\n width: 447,\r\n\r\n '& .form-group, .form-control': {\r\n width: 447,\r\n },\r\n\r\n '& input.adgroup-name, textarea.keyword-textarea': {\r\n ...getInputBorderStyle(palette),\r\n },\r\n\r\n '& #Keyword_Bmm_Warning_Div': {\r\n padding: '8px 32px 8px 8px',\r\n marginBottom: 8,\r\n },\r\n\r\n '& #Keyword_Bmm_Block_Div': {\r\n padding: '8px 32px 8px 8px',\r\n marginBottom: 8,\r\n },\r\n },\r\n\r\n '& .ad-group-list__col-sm-1__label': {\r\n color: '#323130',\r\n },\r\n },\r\n\r\n '& .ad-group-list__glyphicon': {\r\n fontFamily: iconFontFamily,\r\n fontSize: 18,\r\n color: palette.themePrimary,\r\n },\r\n\r\n '& .ad-group-list__col-sm-1--toggle .ad-group-list__glyphicon': {\r\n width: 30,\r\n },\r\n\r\n '& .glyphicon-chevron-down:before': {\r\n content: '\"\\\\E76C\"',\r\n },\r\n\r\n '& .glyphicon-chevron-up:before': {\r\n content: '\"\\\\E70D\"',\r\n },\r\n\r\n '& .ad-group-list__col-sm-1__label': {\r\n fontSize: 14,\r\n color: palette.themePrimary,\r\n },\r\n\r\n '& .accordion-toggle.clickable': {\r\n '&:focus, &:hover': {\r\n backgroundColor: palette.neutralLighter,\r\n },\r\n\r\n '& .ad-group-list__col-sm-1__label': {\r\n fontSize: 18,\r\n },\r\n },\r\n\r\n '& .accordion-with-popup-help': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n\r\n '& .helpbutton': {\r\n marginTop: 15,\r\n },\r\n },\r\n\r\n '& .accordion-toggle': {\r\n marginTop: 8,\r\n outline: 'none',\r\n display: 'flex',\r\n },\r\n\r\n '& .accordion-toggle[aria-expanded=\"false\"] + .row': {\r\n '& .adgroup__body': {\r\n '& input.adgroup-name': {\r\n border: 0,\r\n marginBottom: 8,\r\n cursor: 'default',\r\n },\r\n\r\n '& .remaining-hint': {\r\n display: 'none',\r\n },\r\n },\r\n },\r\n\r\n '& .accordion-toggle .col-sm-10': {\r\n padding: 0,\r\n },\r\n\r\n '& .btn-create-adgroup': {\r\n marginTop: 36,\r\n\r\n '&:focus': {\r\n left: 1,\r\n },\r\n },\r\n\r\n '& .ad-group-list__col-sm-1--toggle+.col-sm-9': {\r\n width: 447,\r\n padding: 0,\r\n },\r\n\r\n '& .deletedConfirmation': {\r\n marginBottom: 20,\r\n marginTop: 20,\r\n overflowWrap: 'anywhere',\r\n },\r\n\r\n '& .keyword-planner-root .keyword-planner-container .glyphicon.form-control-feedback': {\r\n fontFamily: iconFontFamily,\r\n width: 12,\r\n height: 38,\r\n },\r\n },\r\n\r\n});\r\n\r\n","export const budgetBidsStyles = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n\r\n '& .budget-bid-settings': {\r\n\r\n marginBottom: '123px !important',\r\n borderBottom: `1px solid ${palette.neutralSecondary}`,\r\n\r\n /** **************budget begin******* */\r\n\r\n '& .control-label:first-child:': {\r\n marginTop: 26,\r\n },\r\n\r\n '& .budget-suggestion-container': {\r\n display: 'inline-block',\r\n border: '1px solid #0078d7',\r\n padding: '10px 8px',\r\n fontSize: '12px',\r\n height: '38.67px',\r\n\r\n '& .iconba-Lightbulb': {\r\n marginRight: '8px',\r\n top: '-1px',\r\n color: '#0078d4',\r\n verticalAlign: 'text-bottom',\r\n },\r\n\r\n '& .budget-suggestion': {\r\n marginRight: '8px',\r\n verticalAlign: 'baseline',\r\n },\r\n\r\n '& .use-suggested-budget': {\r\n boxSizing: 'border-box',\r\n background: '#ffffff',\r\n border: '1px solid #8a8886',\r\n borderRadius: '2px',\r\n padding: '4px 16px',\r\n top: '-4px',\r\n height: '24.67px',\r\n lineHeight: 1,\r\n },\r\n },\r\n\r\n /** **************Bid strategy begin******* */\r\n\r\n '& .bidding-strategy__container': {\r\n marginTop: 12,\r\n\r\n '& select': {\r\n margin: '5px 0',\r\n width: 460,\r\n },\r\n '& div[data-bind=\"visible: checkCPC\"]': {\r\n paddingTop: 8,\r\n },\r\n '& input[type=\"checkbox\"]': {\r\n float: 'left',\r\n },\r\n '& .custom-param__key-field': {\r\n display: 'inline-block',\r\n width: 85,\r\n marginLeft: 5,\r\n marginRight: 5,\r\n },\r\n '& #currencyLabelTargetCpa': {\r\n display: 'inline-block',\r\n 'vertical-align': 'initial',\r\n marginTop: 0,\r\n },\r\n '& #currencyLabelTargetRoas': {\r\n display: 'inline-block',\r\n 'vertical-align': 'initial',\r\n marginTop: 0,\r\n },\r\n '& .alert.alert-info': {\r\n marginTop: 8,\r\n },\r\n '& .alert-image': {\r\n paddingTop: 3,\r\n },\r\n '& a.helpbutton': {\r\n 'margin-left': '5px',\r\n },\r\n },\r\n\r\n\r\n /** **************performance-grid begin******* */\r\n\r\n '& .performance-grid': {\r\n margin: '7px 0 0 15px',\r\n width: 983,\r\n padding: 0,\r\n paddingBottom: 37,\r\n\r\n '& .bidBoost-percentValue': {\r\n width: 'auto',\r\n display: 'inline-block',\r\n },\r\n\r\n '& .popover': {\r\n border: 'none',\r\n boxShadow: 'none',\r\n },\r\n\r\n '& .popover-content': {\r\n width: 342,\r\n height: 159,\r\n padding: '9px 24px',\r\n border: '1px solid #edebe9',\r\n boxShadow: '0px 6.4px 14.4px 0px rgb(0 0 0 / 13%), 0px 1.2px 3.6px 0px rgb(0 0 0 / 11%)',\r\n borderRadius: '2px',\r\n },\r\n\r\n '& .table>thead>tr>th': {\r\n verticalAlign: 'top',\r\n textAlign: 'left',\r\n border: `1px solid ${palette.neutralLight}`,\r\n fontWeight: 'normal',\r\n },\r\n\r\n '& .table>tbody>tr>td': {\r\n verticalAlign: 'middle',\r\n padding: '0 10px',\r\n height: 42,\r\n border: `1px solid ${palette.neutralLight}`,\r\n },\r\n\r\n '& .table>tbody>tr>td:first-child > span': {\r\n display: 'inline-block',\r\n overflow: 'hidden',\r\n maxWidth: '300px',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n },\r\n\r\n '& .table__row--indent td:first-child': {\r\n paddingLeft: '32px !important',\r\n },\r\n\r\n '& .table>thead>tr>th span': {\r\n display: 'inline-block',\r\n maxWidth: '80%',\r\n },\r\n\r\n '& .footer': {\r\n '& .header-subview-0': {\r\n border: 0,\r\n },\r\n },\r\n\r\n '& .grid-error-list': {\r\n margin: 0,\r\n\r\n '& .error-message': {\r\n color: '#A80000',\r\n },\r\n },\r\n },\r\n '& .low-bid-title': {\r\n fontWeight: 600,\r\n fontSize: '20px',\r\n paddingTop: '8px',\r\n },\r\n '& .low-bid-subcontent': {\r\n fontWeight: 400,\r\n fontSize: '12px',\r\n paddingBottom: '21px',\r\n },\r\n\r\n '& .grid-header-helpId': {\r\n verticalAlign: 'top',\r\n },\r\n\r\n '& .grid-header-text': {\r\n fontWeight: 'normal',\r\n },\r\n\r\n '& .form-control input-bid': {\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n borderRadius: 2,\r\n },\r\n\r\n '& .status-row .col-sm-9': {\r\n padding: 0,\r\n },\r\n\r\n '& .status-row .col-sm-10': {\r\n padding: 0,\r\n },\r\n\r\n '& .bid-status-icon, .bid-hint-text': {\r\n padding: 0,\r\n marginTop: 6,\r\n width: 14,\r\n },\r\n\r\n '& .bid-hint-text': {\r\n marginLeft: 4,\r\n },\r\n\r\n '& .status_warning': {\r\n color: '#d83B01',\r\n fontFamily: iconFontFamily,\r\n fontSize: 16,\r\n },\r\n\r\n '& .status_warning:before': {\r\n content: '\"\\\\E7BA\"',\r\n },\r\n\r\n '& .bid-status-icon': {\r\n position: 'relative',\r\n left: '-4px',\r\n top: '-1px',\r\n },\r\n\r\n '& .status_icon': {\r\n fontFamily: iconFontFamily,\r\n float: 'right',\r\n textDecoration: 'none',\r\n background: 'none',\r\n },\r\n\r\n '& .status_icon:before, .status_icon_hover:before': {\r\n content: '\"\\\\E712\"',\r\n },\r\n\r\n '& .form-group > #KoErrors': {\r\n marginLeft: 15,\r\n marginRight: 15,\r\n },\r\n\r\n '& #KoErrors': {\r\n paddingLeft: 8,\r\n },\r\n\r\n '& .critical-low-bid': {\r\n color: '#D83B01',\r\n fontSize: 14,\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 400,\r\n width: 51,\r\n top: '-1px',\r\n borderBottom: '1px dashed #0078D4',\r\n },\r\n\r\n '& .status-row.row': {\r\n paddingRight: '12px',\r\n },\r\n\r\n '& .iconba-Lightbulb': {\r\n color: '#0078D4',\r\n fontSize: 16,\r\n },\r\n\r\n '& .low-bid-footer': {\r\n fontWeight: 400,\r\n fontSize: 14,\r\n paddingTop: '20px',\r\n },\r\n\r\n '& .apply-link': {\r\n paddingRight: 10,\r\n fontSize: 14,\r\n },\r\n\r\n '& .cancel-link': {\r\n paddingLeft: 10,\r\n fontSize: 14,\r\n },\r\n\r\n '& .estimated-num-val': {\r\n paddingLeft: 4,\r\n },\r\n\r\n '& .raise-bid-popup-content.normal-low-bid': {\r\n width: 342,\r\n height: 159,\r\n padding: '9px 24px',\r\n '& .normal-low-bid-content': {\r\n marginTop: '9px',\r\n\r\n '& .normal-low-bid-title': {\r\n paddingTop: '7px',\r\n fontWeight: 600,\r\n fontSize: 20,\r\n lineHeight: '28px',\r\n },\r\n '& .normal-low-bid-subcontent': {\r\n fontSize: 12,\r\n lineHeight: '16px',\r\n paddingTop: '4px',\r\n },\r\n '& .normal-low-bid-footer': {\r\n fontWeight: 400,\r\n fontSize: 14,\r\n lineHeight: '22px',\r\n paddingTop: '16px',\r\n },\r\n },\r\n },\r\n\r\n /** **************campaign-targets begin******* */\r\n\r\n '& a[data-target=\".campaign-targets\"]': {\r\n fontSize: 18,\r\n marginLeft: 15,\r\n marginBottom: 15,\r\n padding: '8px 0 20px 0',\r\n borderTop: `1px solid ${palette.neutralSecondary}`,\r\n width: 'calc(100% - 30px)',\r\n backgroundClip: 'content-box',\r\n\r\n '& .expanderImage, .expandedImage': {\r\n fontSize: 18,\r\n marginRight: 11,\r\n },\r\n '&:hover': {\r\n borderBottom: 'none',\r\n borderLeft: 'none',\r\n borderRight: 'none',\r\n textDecoration: 'none',\r\n backgroundColor: '#F3F2F1',\r\n },\r\n '&:focus': {\r\n borderBottom: 'none',\r\n borderLeft: 'none',\r\n borderRight: 'none',\r\n textDecoration: 'none',\r\n },\r\n '&:focus::after': {\r\n border: '1px solid',\r\n borderColor: palette.neutralSecondary,\r\n textDecoration: 'none',\r\n content: '\"\"',\r\n width: '100%',\r\n display: 'block',\r\n height: '32px',\r\n top: '8px',\r\n position: 'absolute',\r\n },\r\n },\r\n\r\n '& .campaign-targets': {\r\n paddingLeft: 38,\r\n padding: 0,\r\n\r\n '& .audience-advanced-target-settings': {\r\n marginTop: '-20px',\r\n padding: 0,\r\n\r\n '& a.toggle-edit-target-category': {\r\n padding: '0px 8px 5px 8px',\r\n position: 'relative',\r\n left: '-8px',\r\n },\r\n },\r\n\r\n '& .audience-target-selector-container': {\r\n marginBottom: '-30px',\r\n },\r\n },\r\n },\r\n\r\n});\r\n\r\n","import { adsExtensionDoubleListStyle, adExtensionItemTemplateStyles } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nexport const adExtensionsStyles = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '& .container-fluid': {\r\n padding: 0,\r\n\r\n '& .adgroup-ads__container': {\r\n marginTop: 20,\r\n borderTop: `1px solid ${palette.neutralLight}`,\r\n width: '100%',\r\n minHeight: 133,\r\n '&.mixed-mode-campaign-creation': {\r\n minHeight: 'auto',\r\n\r\n '& h3': {\r\n lineHeight: 'inherit',\r\n },\r\n },\r\n\r\n '& .adgroup-display': {\r\n padding: 0,\r\n width: 160,\r\n marginRight: 37,\r\n },\r\n\r\n '& .adgroup-display-title': {\r\n fontSize: 18,\r\n color: palette.neutralPrimary,\r\n fontWeight: 600,\r\n\r\n '& span': {\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n display: 'inline-block',\r\n maxWidth: 160,\r\n },\r\n },\r\n\r\n '& .adgroup-display-keyword': {\r\n fontSize: 14,\r\n color: palette.neutralSecondary,\r\n\r\n '& span': {\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n display: 'inline-block',\r\n maxWidth: 160,\r\n },\r\n },\r\n },\r\n\r\n '& .adgroup-creative': {\r\n minHeight: 113,\r\n borderBottom: `1px solid ${palette.neutralLight}`,\r\n\r\n '& .adgroup-ads-creative>div:last-child': {\r\n minHeight: 133,\r\n },\r\n\r\n '& .adgroup-dashedBox-sm': {\r\n border: 0,\r\n },\r\n },\r\n\r\n '& .standard-adgroup-ad-creation-section-container, & .dynamic-adgroup-ad-creation-section-container': {\r\n '& h3 a': {\r\n clear: 'both',\r\n fontSize: 18,\r\n paddingLeft: 0,\r\n '&:hover': {\r\n textDecoration: 'none',\r\n backgroundColor: '#f3f2f1',\r\n },\r\n },\r\n '& .adgroup-ads-creative': {\r\n marginLeft: 30,\r\n },\r\n },\r\n\r\n '& .ads-creative': {\r\n marginTop: 10,\r\n marginBottom: 10,\r\n backgroundColor: palette.white,\r\n border: 0,\r\n paddingLeft: 0,\r\n\r\n '& .ad-editor-list-group': {\r\n zoom: 1,\r\n outline: 'none',\r\n\r\n '&:focus': {\r\n outline: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n },\r\n\r\n '& .ad-editor-list-group:after': {\r\n clear: 'both',\r\n content: '\"\"',\r\n display: 'block',\r\n height: 0,\r\n width: 0,\r\n visibility: 'hidden',\r\n },\r\n\r\n '& .ad-editor-list-group:focus': {\r\n '& .k-state-focused': {\r\n backgroundColor: palette.neutralLighter,\r\n },\r\n\r\n '& .k-state-selected': {\r\n backgroundColor: palette.neutralLight,\r\n },\r\n },\r\n\r\n '& .row': {\r\n top: 3,\r\n left: 500,\r\n\r\n '& .pager': {\r\n height: 'auto',\r\n width: '300px',\r\n },\r\n '& .pager:first-child span': {\r\n verticalAlign: 'baseline',\r\n },\r\n },\r\n },\r\n\r\n '& .adgroup-ads__container+.form-group': {\r\n marginTop: 9,\r\n marginLeft: 0,\r\n marginRight: 0,\r\n\r\n '& a': {\r\n fontSize: 18,\r\n fontWeight: 600,\r\n },\r\n },\r\n\r\n '& .expandedImage, .expanderImage': {\r\n marginRight: 11,\r\n marginBottom: 2,\r\n },\r\n\r\n\r\n '& .ad-extensions>p': {\r\n marginLeft: 0,\r\n },\r\n\r\n '& .ad-extensions>.form-group': {\r\n margin: '9px 0',\r\n },\r\n\r\n '& .ad-extensions': {\r\n\r\n borderBottom: `1px solid ${palette.neutralSecondary}`,\r\n marginBottom: 58,\r\n paddingBottom: 10,\r\n\r\n '& .text-right': {\r\n clear: 'both',\r\n width: 'auto',\r\n float: 'none',\r\n marginLeft: 30,\r\n padding: 0,\r\n textAlign: 'left', // Fix for bug 1953624\r\n },\r\n\r\n '& p': {\r\n color: palette.neutralPrimary,\r\n margin: '5px 0 0 30px',\r\n },\r\n\r\n },\r\n\r\n '& .create-ad': {\r\n background: palette.white,\r\n border: `1px solid ${palette.neutralSecondaryAlt}`,\r\n boxSizing: ' border-box',\r\n borderRadius: 2,\r\n height: 32,\r\n minWidth: 152,\r\n textAlign: 'center',\r\n lineHeight: '32px',\r\n marginTop: 45,\r\n marginBottom: 45,\r\n float: 'left',\r\n\r\n '& .create-ad-link': {\r\n color: '#323130',\r\n fontWeight: 600,\r\n display: 'block',\r\n width: '100%',\r\n height: '100%',\r\n position: 'relative',\r\n padding: '0 12px',\r\n\r\n '&:focus, &:active, &:hover': {\r\n textDecoration: 'none',\r\n border: 0,\r\n },\r\n\r\n '&:focus:after, &:active:after, &:hover:after': {\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n outline: '1px solid transparent',\r\n position: 'absolute',\r\n top: 1,\r\n bottom: 1,\r\n left: 1,\r\n right: 1,\r\n content: '\"\"',\r\n },\r\n },\r\n\r\n '& .glyphicon-plus': {\r\n marginRight: 12,\r\n verticalAlign: 'inherit',\r\n },\r\n },\r\n\r\n '& .adEditor-listitem': {\r\n background: palette.white,\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n height: 110,\r\n width: 364,\r\n float: 'left',\r\n padding: 13,\r\n position: 'relative',\r\n marginRight: 113,\r\n marginBottom: 5,\r\n marginTop: 5,\r\n\r\n '& .previewTitleAd': {\r\n display: 'block',\r\n },\r\n\r\n '& .truncated': {\r\n height: '18px',\r\n lineHeight: '20px',\r\n display: 'block',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n\r\n '& .truncated:first-child': {\r\n height: '24px',\r\n },\r\n\r\n '& .truncated:first-child span': {\r\n fontSize: 20,\r\n color: '#001BA0',\r\n verticalAlign: 'top',\r\n },\r\n\r\n '& .preview-ad-slug': {\r\n verticalAlign: 'top',\r\n },\r\n\r\n '& a.previewUrlAd': {\r\n fontSize: 13,\r\n color: '#006D21',\r\n\r\n '& span': {\r\n verticalAlign: 'top',\r\n },\r\n },\r\n\r\n '& .previewtext': {\r\n fontSize: 13,\r\n color: '#666666',\r\n\r\n '& span': {\r\n verticalAlign: 'top',\r\n },\r\n },\r\n\r\n '& .adEditor-toolbar': {\r\n height: 24,\r\n position: 'absolute',\r\n right: 8,\r\n bottom: 3,\r\n\r\n '& .btn-group': {\r\n '&:after': {\r\n content: '\"|\"',\r\n color: palette.neutralPrimary,\r\n },\r\n\r\n '&:last-child:after': {\r\n content: '\"\"',\r\n },\r\n },\r\n\r\n '& .btn': {\r\n minWidth: 'auto',\r\n height: 'auto',\r\n border: 'none',\r\n float: 'left',\r\n padding: '0 2px',\r\n backgroundColor: 'transparent',\r\n color: palette.themePrimary,\r\n fontWeight: 'normal',\r\n },\r\n\r\n '& .open > .dropdown-menu': {\r\n width: 'auto',\r\n\r\n '& .btn': {\r\n padding: '2px 10px',\r\n float: 'none',\r\n width: '100%',\r\n textAlign: 'left',\r\n },\r\n\r\n '& .copy-to-some': {\r\n paddingRight: 26,\r\n position: 'relative',\r\n\r\n '& .caret': {\r\n marginTop: 4,\r\n position: 'absolute',\r\n right: 0,\r\n marginRight: 10,\r\n },\r\n },\r\n\r\n '& .copyToSome': {\r\n '& label': {\r\n lineHeight: '24px',\r\n\r\n '& input': {\r\n marginRight: 0,\r\n },\r\n\r\n '& span': {\r\n width: 160,\r\n display: 'inline-block',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n },\r\n\r\n '& li>a:focus::after': {\r\n display: 'none',\r\n },\r\n },\r\n },\r\n\r\n },\r\n\r\n '& .responsive-ad-preview-shared-template': {\r\n '& div': {\r\n color: '#767676',\r\n },\r\n\r\n '& img': {\r\n width: 114,\r\n height: 60,\r\n marginRight: 8,\r\n },\r\n },\r\n },\r\n\r\n '& .adEditor-error': {\r\n borderColor: '#A80000',\r\n },\r\n\r\n '& a[data-target=\"#createAdExtensions\"]': {\r\n width: '100%',\r\n display: 'inline-block',\r\n\r\n '&:hover': {\r\n border: 'none',\r\n textDecoration: 'none',\r\n backgroundColor: '#F3F2F1',\r\n },\r\n\r\n '&:focus': {\r\n border: '1px solid',\r\n borderColor: palette.neutralSecondary,\r\n textDecoration: 'none',\r\n outline: 'none',\r\n },\r\n },\r\n\r\n ...adsExtensionDoubleListStyle({ palette, iconFontFamily }),\r\n ...adExtensionItemTemplateStyles()({ palette, iconFontFamily }),\r\n },\r\n});\r\n","import { convertToLocalStyle, convertToConcatStyle, scrollbarStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport { pillControlStyle } from '@bingads-webui-react/scope-selector';\r\n\r\nexport const categoryContainerStyle = () => ({\r\n '& .category-container': {\r\n\r\n '& .grid-container': {\r\n padding: 1,\r\n },\r\n\r\n '& .panel-heading': {\r\n position: 'absolute',\r\n zIndex: 1,\r\n marginTop: 48,\r\n padding: '0 8px',\r\n },\r\n\r\n '& .autoSuggSearchBoxContainer': {\r\n height: 48,\r\n width: '100%',\r\n padding: 0,\r\n\r\n '& .searchbox-input': {\r\n height: 48,\r\n width: '100%',\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n },\r\n\r\n '& .form-control-feedback': {\r\n position: 'absolute',\r\n left: 0,\r\n paddingTop: 4,\r\n pointerEvents: 'auto',\r\n },\r\n },\r\n\r\n '& .grid-table': {\r\n marginTop: 28,\r\n height: 400,\r\n overflowY: 'auto',\r\n\r\n '& .table': {\r\n tableLayout: 'fixed',\r\n },\r\n\r\n '& .col-sm-1': {\r\n display: 'none',\r\n },\r\n\r\n '& .table>thead>tr.table__row--header>th': {\r\n width: '50%',\r\n border: '0px !important',\r\n fontWeight: 600,\r\n\r\n '& .grid-asc, & .grid-des': {\r\n float: 'left',\r\n },\r\n\r\n '&.col-CategoryName': {\r\n '& .grid-asc, & .grid-des': {\r\n display: 'none',\r\n\r\n '&~.col-sm-8::before': {\r\n fontFamily: 'MsAds MDL2 Assets',\r\n position: 'relative',\r\n top: 3,\r\n },\r\n },\r\n\r\n '& .grid-asc~.col-sm-8::before': {\r\n content: '\"\\\\EE68\"',\r\n },\r\n\r\n '& .grid-des~.col-sm-8::before': {\r\n content: '\"\\\\EE69\"',\r\n },\r\n },\r\n\r\n\r\n '& .col-sm-1': {\r\n display: 'block',\r\n padding: 0,\r\n width: 'unset',\r\n marginLeft: 0,\r\n top: 0,\r\n\r\n '& .glyphicon-arrow-left': {\r\n display: 'none',\r\n padding: [2, 5, 0, 0],\r\n },\r\n },\r\n },\r\n\r\n '& .col-sm-8': {\r\n padding: 0,\r\n },\r\n\r\n '& tbody .col-CategoryName': {\r\n '& .col-sm-8': {\r\n width: '100%',\r\n },\r\n },\r\n\r\n '& .col-Coverage': {\r\n\r\n '& .col-sm-8': {\r\n '& span': {\r\n display: 'inline-block',\r\n textAlign: 'right',\r\n },\r\n },\r\n '& .col-sm-3': {\r\n width: 'auto',\r\n padding: 0,\r\n float: 'right',\r\n },\r\n },\r\n\r\n '& .table>tbody>tr>td': {\r\n height: 36,\r\n border: 0,\r\n padding: '0 8px',\r\n position: 'relative',\r\n },\r\n },\r\n\r\n '& .category-error': {\r\n display: 'none',\r\n },\r\n },\r\n});\r\n\r\nexport const previewStyles = () => ({\r\n '& .summary': {\r\n borderTop: '1px solid #BBB',\r\n marginTop: 8,\r\n paddingTop: 8,\r\n position: 'relative',\r\n\r\n '& .preview': {\r\n padding: '0 8px',\r\n\r\n '& .operand': {\r\n marginRight: 2,\r\n },\r\n\r\n '& .popover-content': {\r\n padding: [20, 28, 10, 28],\r\n },\r\n },\r\n\r\n '& .col-sm-1': {\r\n position: 'absolute',\r\n right: 8,\r\n },\r\n },\r\n});\r\n\r\n\r\nexport const dsaCampaignStyles = ({ palette = {} }) => ({\r\n /** step 1 */\r\n '& .dsa-targeting-source': {\r\n\r\n marginLeft: 20,\r\n ...convertToLocalStyle(scrollbarStyle({ palette })),\r\n\r\n '& .radio': {\r\n padding: [5, 8, 5, 28],\r\n position: 'relative',\r\n left: -28,\r\n display: 'table',\r\n\r\n '&:focus-within': {\r\n outline: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n },\r\n\r\n '& .layout-columns-container': {\r\n maxWidth: 1020,\r\n },\r\n\r\n '& label': {\r\n display: 'block',\r\n padding: '5px 20px',\r\n paddingLeft: 20,\r\n fontWeight: 'normal',\r\n },\r\n\r\n '& .panel-form': {\r\n backgroundColor: 'white',\r\n border: '1px solid #BBB',\r\n },\r\n\r\n '& .col-sm-12': {\r\n padding: 0,\r\n },\r\n\r\n '& .panel-heading': {\r\n backgroundColor: '#E5E5E5',\r\n\r\n '& .panel-title': {\r\n margin: 0,\r\n },\r\n },\r\n\r\n '& .doubleListBox': {\r\n marginTop: 10,\r\n\r\n '& .layout-columns-element': {\r\n width: 350,\r\n padding: 0,\r\n\r\n '& .panel-form': {\r\n height: 482,\r\n\r\n '& .panel-heading': {\r\n height: 36,\r\n backgroundColor: '#ffffff',\r\n padding: 8,\r\n\r\n '& .panel-title': {\r\n color: '#323130',\r\n fontSize: 14,\r\n fontWeight: 600,\r\n },\r\n },\r\n\r\n '& .panel-body': {\r\n padding: 0,\r\n overflow: 'auto',\r\n paddingBottom: 2,\r\n\r\n '& .dlb-source-container': {\r\n height: 398,\r\n },\r\n\r\n '& .dlb-selected-container': {\r\n height: 446,\r\n },\r\n\r\n '& .dlb-emptyMessage': {\r\n padding: '0 8px',\r\n },\r\n\r\n '& .dlb-source-list, & .dlb-selected-list': {\r\n\r\n outline: 'none',\r\n\r\n '& .dlbItem': {\r\n height: 36,\r\n position: 'relative',\r\n padding: '0 8px',\r\n\r\n '& .dlbItem-actions, & .a11y-k-listview-button': {\r\n position: 'absolute',\r\n right: 8,\r\n height: 36,\r\n lineHeight: '36px',\r\n },\r\n\r\n '& .dlbItem-content': {\r\n height: 36,\r\n lineHeight: '36px',\r\n paddingRight: '30px',\r\n\r\n '& .itemTemplate-text': {\r\n '& > span': {\r\n display: 'block',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n },\r\n },\r\n\r\n '&:hover': {\r\n backgroundColor: '#EDEBE9',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .layout-columns-element:nth-child(1)': {\r\n position: 'absolute',\r\n height: 48,\r\n\r\n '& .dlb-filter-alignPlaceholder': {\r\n width: '100%',\r\n\r\n '& .searchbox': {\r\n padding: '0 1px',\r\n border: '1px solid #BBB',\r\n\r\n '& .searchbox-input': {\r\n height: 48,\r\n paddingLeft: 48,\r\n },\r\n\r\n '& .form-control-feedback': {\r\n position: 'absolute',\r\n left: 0,\r\n height: 48,\r\n lineHeight: '48px',\r\n pointerEvents: 'auto',\r\n\r\n '& .searchbox-searchbutton': {\r\n position: 'absolute',\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .panel-form': {\r\n height: 434,\r\n },\r\n },\r\n\r\n '& .layout-columns-element:nth-child(2)': {\r\n height: 'auto',\r\n marginTop: 48,\r\n\r\n '& .panel-form': {\r\n height: 434,\r\n },\r\n },\r\n\r\n '& .layout-columns-element:nth-child(3)': {\r\n height: 482,\r\n marginLeft: 8,\r\n },\r\n },\r\n },\r\n\r\n /** step 2 */\r\n '& .authoring-container': {\r\n width: 960,\r\n marginTop: 4,\r\n ...convertToLocalStyle(scrollbarStyle({ palette })),\r\n\r\n '& .pill-control': {\r\n ...pillControlStyle({ palette }),\r\n marginBottom: '17px',\r\n },\r\n\r\n '& .panel-heading': {\r\n padding: '5px 0',\r\n fontWeight: 600,\r\n\r\n '& .panel-title': {\r\n margin: 0,\r\n fontSize: 14,\r\n\r\n '& .h5': {\r\n fontSize: 14,\r\n },\r\n },\r\n },\r\n\r\n '& .panel-body': {\r\n padding: 0,\r\n\r\n '& .form-group': {\r\n width: '100% !important',\r\n float: 'none',\r\n },\r\n },\r\n\r\n '& .type-bold': {\r\n fontWeight: 600,\r\n },\r\n\r\n '& .target-type-radiogroup input[type=\"radio\"]:focus': {\r\n outline: `1px solid ${palette.neutralSecondary} !important`,\r\n },\r\n\r\n '& .target-type-radiogroup span': {\r\n verticalAlign: 'top',\r\n },\r\n\r\n '& .form-group': {\r\n width: '100%',\r\n margin: 0,\r\n marginBottom: 10,\r\n },\r\n\r\n '& label': {\r\n display: 'block',\r\n padding: '5px 20px',\r\n fontWeight: 'normal',\r\n },\r\n\r\n '& .col-sm-12': {\r\n padding: 0,\r\n\r\n '& .type-bold': {\r\n fontSize: 14,\r\n },\r\n },\r\n\r\n\r\n '& .doubleListBox': {\r\n width: 'auto',\r\n marginBottom: '15px',\r\n\r\n '& >.col-sm-7': {\r\n width: 400,\r\n padding: 0,\r\n },\r\n\r\n '& .panel-heading': {\r\n color: '#323130',\r\n fontSize: 14,\r\n padding: '0 8px',\r\n },\r\n\r\n '& .panel-form': {\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n height: 482,\r\n },\r\n\r\n '& .remaining-hint': {\r\n fontSize: 12,\r\n color: palette.neutralSecondary,\r\n },\r\n\r\n ...categoryContainerStyle(),\r\n\r\n '& .allwebpage-container': {\r\n '& .dlb-source-container': {\r\n marginTop: 15,\r\n padding: '0 8px',\r\n\r\n '& .select': {\r\n\r\n '& .col-sm-11': {\r\n padding: 0,\r\n },\r\n\r\n '& .col-sm-1': {\r\n position: 'absolute',\r\n right: 8,\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .exacturls-container': {\r\n '& .exact-urls-container': {\r\n '& ::-webkit-scrollbar': {\r\n width: 8,\r\n },\r\n '& .form-control.exacturl-textarea': {\r\n width: 278,\r\n marginTop: 8,\r\n resize: 'None',\r\n minHeight: 360,\r\n },\r\n\r\n '& .web-condition': {\r\n float: 'left',\r\n marginLeft: 10,\r\n marginRight: 10,\r\n width: 90,\r\n '& .operand': {\r\n marginRight: 2,\r\n marginLeft: 8,\r\n },\r\n },\r\n '& .alert.alert-danger.url-equals-error': {\r\n width: 278,\r\n marginLeft: 107,\r\n },\r\n },\r\n\r\n '& div.addall': {\r\n marginTop: 16,\r\n paddingLeft: 107,\r\n },\r\n },\r\n\r\n '& .specificwebpage-container, .rules-container': {\r\n '& .panel-body': {\r\n\r\n overflowY: 'auto',\r\n overflowX: 'hidden',\r\n height: 450,\r\n\r\n '& div.addall': {\r\n marginTop: 16,\r\n marginLeft: 8,\r\n },\r\n\r\n '& .specific-target-container': {\r\n '& .specific-target-condition': {\r\n position: 'relative',\r\n margin: '8px 0 0 0 !important',\r\n\r\n '& .col-sm-4': {\r\n padding: 0,\r\n marginLeft: 8,\r\n width: 125,\r\n\r\n '& .form-control': {\r\n width: 125,\r\n },\r\n },\r\n\r\n '& .col-sm-2': {\r\n padding: '0 8px',\r\n width: 72,\r\n minHeight: '1px',\r\n\r\n '& label': {\r\n padding: 0,\r\n height: 32,\r\n lineHeight: '32px',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n },\r\n\r\n '& .col-sm-5': {\r\n padding: 0,\r\n width: 150,\r\n\r\n '& .form-control': {\r\n width: 150,\r\n },\r\n\r\n '& .form-control-static': {\r\n height: 'auto',\r\n lineHeight: '32px',\r\n\r\n '& span': {\r\n verticalAlign: 'unset',\r\n },\r\n },\r\n },\r\n\r\n '& .col-sm-1': {\r\n top: 6,\r\n width: 14,\r\n padding: 0,\r\n marginLeft: 8,\r\n },\r\n\r\n '& .col-sm-12': {\r\n '& label': {\r\n padding: '0 0 8px 8px',\r\n color: '#000',\r\n fontWeight: '600',\r\n },\r\n },\r\n\r\n '& .category-container': {\r\n padding: 0,\r\n width: '100%',\r\n marginBottom: 8,\r\n\r\n '& .panel-form': {\r\n border: 0,\r\n borderTop: `1px solid ${palette.neutralSecondary}`,\r\n borderBottom: `1px solid ${palette.neutralSecondary}`,\r\n marginTop: 17,\r\n height: 'auto',\r\n\r\n '& .panel-body': {\r\n height: 'auto',\r\n overflowY: 'unset',\r\n },\r\n\r\n '& .grid-table': {\r\n overflowY: 'unset',\r\n height: 'auto',\r\n },\r\n\r\n '& .col-Coverage': {\r\n '& .col-sm-7': {\r\n width: 'auto',\r\n },\r\n\r\n '& .col-sm-5': {\r\n width: 'auto',\r\n position: 'absolute',\r\n right: 8,\r\n },\r\n },\r\n },\r\n\r\n '& .category-error': {\r\n display: 'none',\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .add-row': {\r\n padding: '0 8px',\r\n },\r\n\r\n ...previewStyles(),\r\n },\r\n },\r\n\r\n '& .autotarget-customlabel-container': {\r\n '& .col-sm-11': {\r\n paddingLeft: 8,\r\n paddingRight: 8,\r\n\r\n '& .custom-label-form-label, .custom-label-input': {\r\n width: '100%',\r\n padding: 0,\r\n\r\n '& label': {\r\n paddingLeft: 0,\r\n },\r\n\r\n '& input.form-control': {\r\n width: '100%',\r\n },\r\n },\r\n },\r\n\r\n '& .col-sm-1.form-control-static': {\r\n top: 35,\r\n right: 8,\r\n },\r\n },\r\n\r\n '& .selected-targets-container.col-sm-5': {\r\n width: 514,\r\n padding: 0,\r\n marginLeft: 8,\r\n\r\n '& .panel-form': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n\r\n '& .panel-heading': {\r\n padding: '0 8px',\r\n\r\n '& .panel-title': {\r\n\r\n '& .selected-header': {\r\n width: 'auto',\r\n padding: 0,\r\n\r\n '& .type-bold': {\r\n float: 'left',\r\n margin: 0,\r\n padding: 0,\r\n maxWidth: 340,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n lineHeight: '27px',\r\n },\r\n\r\n '& .helpbutton': {\r\n width: '15px',\r\n float: 'left',\r\n padding: 0,\r\n },\r\n },\r\n\r\n '& .col-sm-4.h5': {\r\n width: 'auto',\r\n position: 'absolute',\r\n right: 8,\r\n padding: 0,\r\n margin: 0,\r\n textAlign: 'right',\r\n\r\n '& a': {\r\n padding: 0,\r\n fontWeight: 'normal',\r\n maxWidth: 170,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n lineHeight: '27px',\r\n },\r\n },\r\n\r\n '& .selected-description': {\r\n '& .h5': {\r\n fontWeight: 'normal',\r\n overflowWrap: 'break-word',\r\n wordBreak: 'break-word',\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .panel-body': {\r\n flex: 1,\r\n overflow: 'auto',\r\n\r\n '& .remove-all': {\r\n right: 8,\r\n padding: 0,\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'clip',\r\n marginBottom: 6,\r\n marginRight: 8,\r\n float: 'right',\r\n\r\n '& .remove': {\r\n display: 'none',\r\n },\r\n\r\n '& .col-sm-5': {\r\n width: 'auto',\r\n padding: 0,\r\n },\r\n },\r\n\r\n '& #BidValidationError': {\r\n padding: 0,\r\n },\r\n\r\n '& .inactive': {\r\n padding: '0 8px',\r\n },\r\n\r\n '& .dlb-selected-container': {\r\n height: '100%',\r\n overflow: 'auto',\r\n\r\n '& .dlb-selected-list': {\r\n height: '100%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n overflow: 'auto',\r\n alignItems: 'flex-end',\r\n\r\n '& .panel-body': {\r\n width: '100%',\r\n },\r\n },\r\n\r\n '& ul[data-bind=\"foreach: items\"]': {\r\n overflowY: 'auto',\r\n flex: 1,\r\n paddingLeft: 8,\r\n paddingRight: 8,\r\n clear: 'both',\r\n paddingBottom: 8,\r\n width: '100%',\r\n\r\n '& .dlbItem': {\r\n height: 36,\r\n padding: 2,\r\n position: 'relative',\r\n\r\n '& .arrow-button': {\r\n position: 'absolute',\r\n right: 0,\r\n marginTop: 6,\r\n },\r\n\r\n '& .negative-targetName.targetName': {\r\n width: 300,\r\n '& .specificpage, .exacturls': {\r\n '& .operand': {\r\n maxWidth: 85,\r\n },\r\n '& .operator': {\r\n maxWidth: 55,\r\n },\r\n '& .truncated': {\r\n maxWidth: 150,\r\n },\r\n },\r\n },\r\n\r\n '& .targetName': {\r\n width: 180,\r\n height: 32,\r\n lineHeight: '32px',\r\n paddingLeft: 0,\r\n paddingRight: 8,\r\n '& .argument': {\r\n verticalAlign: 'baseline',\r\n marginLeft: 8,\r\n },\r\n '& div': {\r\n display: 'inline-block',\r\n verticalAlign: 'middle',\r\n },\r\n\r\n '& .specificpage, .exacturls': {\r\n borderBottom: '1px dashed #0078D4',\r\n\r\n '& .operand': {\r\n marginRight: 2,\r\n maxWidth: 55,\r\n display: 'inline-block',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n\r\n '& .operator': {\r\n maxWidth: 50,\r\n display: 'inline-block',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n\r\n '& .preview-operand': {\r\n '& .popover': {\r\n marginTop: 0,\r\n marginLeft: 11,\r\n marginBottom: 20,\r\n width: 173,\r\n top: '0px !important',\r\n left: '80px !important',\r\n\r\n '& .arrow': {\r\n left: '0px !important',\r\n top: 12,\r\n },\r\n\r\n '& .popover-content': {\r\n padding: '9px 14px',\r\n fontSize: 14,\r\n\r\n '& .conditions': {\r\n '& .operand, .operator': {\r\n fontWeight: 600,\r\n maxWidth: 90,\r\n },\r\n\r\n '& .truncated': {\r\n maxWidth: 150,\r\n marginLeft: 0,\r\n display: 'block',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .truncated': {\r\n maxWidth: 60,\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n marginLeft: 3,\r\n\r\n '& a': {\r\n color: '#323130',\r\n },\r\n },\r\n\r\n '& .category': {\r\n '& div:first-child span': {\r\n maxWidth: 70,\r\n display: 'inline-block',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n\r\n '& .truncated': {\r\n maxWidth: 100,\r\n },\r\n },\r\n\r\n '& .allwebpage': {\r\n '& span': {\r\n maxWidth: 170,\r\n display: 'inline-block',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n },\r\n\r\n '& span': {\r\n verticalAlign: 'top',\r\n },\r\n },\r\n\r\n '& .col-sm-4': {\r\n width: 84,\r\n height: 32,\r\n padding: 0,\r\n\r\n '& .form-control': {\r\n width: 84,\r\n margin: 0,\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 '& .alert': {\r\n marginTop: 5,\r\n width: '100%',\r\n },\r\n\r\n '& span, & a': {\r\n overflowWrap: 'break-word',\r\n wordBreak: 'break-word',\r\n },\r\n\r\n '& .edit-category-icon': {\r\n marginLeft: 5,\r\n },\r\n },\r\n\r\n '& .pager': {\r\n display: 'none',\r\n },\r\n },\r\n\r\n /** step 4 */\r\n '& .adgroupbid-grid': {\r\n marginLeft: 0,\r\n width: 460,\r\n marginBottom: 33,\r\n\r\n '& .text-left': {\r\n padding: '5px 10px',\r\n },\r\n\r\n '& .input-group-addon': {\r\n backgroundColor: '#FFFFFF',\r\n border: 0,\r\n },\r\n\r\n '& .grid-error-row': {\r\n '& .error-message': {\r\n color: '#A80000',\r\n fontSize: 12,\r\n },\r\n },\r\n\r\n '& .table>tbody>tr>td:first-child > span': {\r\n display: 'inline-block',\r\n overflow: 'hidden',\r\n maxWidth: '280px',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n },\r\n },\r\n});\r\n\r\n// this style is in the body scope, out of the feature scope, so use as the global pattern\r\nexport const globalDsaCampaignStyles = ({ palette = {} }) => ({\r\n '.k-list-container': {\r\n overflowY: 'auto',\r\n ...convertToConcatStyle(scrollbarStyle({ palette })),\r\n },\r\n\r\n});\r\n","/* eslint-disable @typescript-eslint/no-unused-vars */\r\nimport { settingsCommonStyles } from '../creation-common-styles/settings-common-style';\r\nimport { doubleListA11yHackerStyles } from '../creation-common-styles/double-list-a11y-hacker-styles';\r\n\r\nexport const adgroupCreationStyles = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '& .adgroup-create-page': {\r\n padding: '25px 32px 0 32px',\r\n\r\n '& .alert.alert-danger': {\r\n paddingLeft: '8px',\r\n },\r\n '& h1': {\r\n margin: 0,\r\n fontSize: 20,\r\n color: '#323130',\r\n },\r\n '& h3': {\r\n fontSize: 14,\r\n color: '#323130',\r\n margin: '14px 0',\r\n fontWeight: 'normal',\r\n },\r\n\r\n '& hr': {\r\n display: 'none',\r\n },\r\n\r\n '& .type-bold': {\r\n fontSize: 18,\r\n paddingTop: 8,\r\n borderTop: `1px solid ${palette.neutralSecondary}`,\r\n margin: '30px 0 0 0',\r\n clear: 'both',\r\n },\r\n\r\n '& .container-fluid': {\r\n padding: 1,\r\n margin: 0,\r\n border: 'none',\r\n '& .form-group': {\r\n margin: 0,\r\n\r\n '& #LanguageSelectorDescription': {\r\n paddingBottom: 7,\r\n },\r\n },\r\n\r\n '& .language': {\r\n margin: '5px 0',\r\n },\r\n },\r\n\r\n '& .adgroup-settings .bidding-strategy__container .form-group': {\r\n '& #BidStrategySetting_BidStrategy_Label': {\r\n padding: [5, 0],\r\n },\r\n\r\n '& .col-sm-6 > .form-control-static': {\r\n paddingBottom: 8,\r\n minHeight: 1,\r\n },\r\n },\r\n\r\n '& .toggle-campaign-settings-switch': {\r\n paddingRight: '8px !important',\r\n marginTop: 3,\r\n display: 'inline-block',\r\n float: 'left',\r\n },\r\n\r\n '& .type-normal': {\r\n fontWeight: 400,\r\n },\r\n\r\n '& .audience-advanced-target-settings': {\r\n paddingTop: 10,\r\n },\r\n\r\n '& .ad-section': {\r\n minHeight: 150,\r\n\r\n '& .alert': {\r\n marginTop: 15,\r\n },\r\n\r\n '& .adEditor-listitem': {\r\n marginRight: 70,\r\n },\r\n\r\n '& .ads-creative .row.col-sm-3': {\r\n left: 900,\r\n },\r\n },\r\n\r\n '& .location-targets-section': {\r\n '& .control-label': {\r\n marginTop: 33,\r\n },\r\n\r\n '& .form-horizontal': {\r\n '& > div:nth-child(2) .control-label': {\r\n marginTop: 10,\r\n },\r\n\r\n '& .location-target-physical-intent': {\r\n '& .control-label': {\r\n marginTop: '33px !important',\r\n },\r\n },\r\n },\r\n\r\n '& .form-group .col-sm-2': {\r\n display: 'block',\r\n },\r\n },\r\n\r\n '& .location-target-done': {\r\n margin: '0 12px 0 15px',\r\n },\r\n\r\n '& .advanced-settings-section': {\r\n marginTop: 30,\r\n paddingBottom: 0,\r\n borderTop: `1px solid ${palette.neutralSecondary}`,\r\n paddingTop: 8,\r\n\r\n '& .date-container>.form-control-static': {\r\n minHeight: 230,\r\n },\r\n },\r\n\r\n '& .advanced-settings-title': {\r\n display: 'none',\r\n },\r\n\r\n '& .add-keywords-root': {\r\n\r\n marginTop: 30,\r\n\r\n '& .col-sm-4': {\r\n padding: 0,\r\n\r\n '& #Keyword_Bmm_Warning_Div': {\r\n padding: '8px 32px 8px 8px',\r\n },\r\n\r\n '& #Keyword_Bmm_Block_Div': {\r\n padding: '8px 32px 8px 8px',\r\n },\r\n },\r\n\r\n '& .keyword-planner-root': {\r\n marginTop: 10,\r\n },\r\n },\r\n\r\n '& .save-bar': {\r\n borderTop: '1px solid #EDEBE9',\r\n paddingTop: 16,\r\n margin: '35px 0 0 -32px',\r\n padding: '16px 32px',\r\n\r\n '& .btn-save': {\r\n marginRight: 12,\r\n },\r\n },\r\n\r\n '& .bid-section': {\r\n position: 'relative',\r\n\r\n '& .alert': {\r\n margin: '8px 16px -26px 16px',\r\n },\r\n\r\n '& .search-bid__container': {\r\n '& .bidSuggestion .col-sm-10': {\r\n paddingLeft: 0,\r\n },\r\n '& .btn-apply-bid': {\r\n marginLeft: 8,\r\n width: '38px',\r\n height: '24px',\r\n marginTop: 0,\r\n },\r\n '& .iconba.iconba-Lightbulb': {\r\n color: '#0078D4',\r\n fontSize: '14px',\r\n fontFamily: iconFontFamily,\r\n position: 'absolute',\r\n top: '18px',\r\n },\r\n\r\n '& .alert-info-inline': {\r\n marginLeft: '20px',\r\n },\r\n\r\n 'div[data-bind=\"visible: showEstimateButton\"]': {\r\n padding: 0,\r\n },\r\n\r\n '& span.status-container': {\r\n display: 'inline-block',\r\n width: '14px',\r\n position: 'absolute',\r\n height: '100%',\r\n\r\n '& .iconba.iconba-Warning': {\r\n color: '#FF9900',\r\n fontSize: '14px',\r\n fontFamily: iconFontFamily,\r\n position: 'absolute',\r\n left: '2px',\r\n top: '9px',\r\n },\r\n },\r\n },\r\n\r\n '& .bidWarning': {\r\n marginLeft: 0,\r\n marginTop: 6,\r\n '& .alert-info-inline': {\r\n marginLeft: '0!important',\r\n },\r\n },\r\n },\r\n\r\n '& .auto-targets-section': {\r\n '& .type-bold': {\r\n borderTop: 0,\r\n },\r\n '& .panel.authoring-container': {\r\n boxShadow: 'none',\r\n '& .category-container .grid-table .clickable': {\r\n cursor: 'pointer',\r\n },\r\n },\r\n },\r\n\r\n '& .adgroup-settings #AdGroupCreate_KoErrors': {\r\n marginLeft: 15,\r\n },\r\n },\r\n\r\n '& .mixed-mode-adgroup-create': {\r\n '& ul.alert': {\r\n marginTop: 10,\r\n },\r\n '& .dynamic-adgroup-creation-section-container>h3, & .standard-adgroup-creation-section-container>h3': {\r\n height: 30,\r\n marginBottom: 0,\r\n '& a': {\r\n paddingLeft: 0,\r\n fontSize: 18,\r\n '&:hover': {\r\n textDecoration: 'none',\r\n backgroundColor: '#f3f2f1',\r\n },\r\n },\r\n '& .expandedImage, & .expanderImage': {\r\n marginRight: 11,\r\n },\r\n },\r\n '& #standardAdGroupSection, & #dynamicAdGroupSection': {\r\n marginLeft: 24,\r\n },\r\n '& .filter-clear': {\r\n clear: 'both',\r\n },\r\n },\r\n\r\n '& .mixed-mode-ad-group-creation-container': {\r\n '& .dynamic-ad-group-create-view-container .row-fluid .ad-group-list-container': {\r\n marginTop: 0,\r\n },\r\n '&>ul.alert': {\r\n margin: '0 32px',\r\n },\r\n '& .mixed-mode-ad-group-creation-title, & .ad-group-type-section, & .adgroup-creation-dsa-settings-view-container': {\r\n padding: '0 32px 0 32px',\r\n '& .control-label': {\r\n lineHeight: 1.5,\r\n },\r\n },\r\n '& .save-bar': {\r\n borderTop: '1px solid #EDEBE9',\r\n paddingTop: 16,\r\n margin: '35px 0 0 0',\r\n padding: '16px 32px',\r\n\r\n '& .btn-save': {\r\n marginRight: 12,\r\n },\r\n },\r\n },\r\n '& .adgroup-settings': settingsCommonStyles({ palette }),\r\n ...doubleListA11yHackerStyles(),\r\n});\r\n\r\n\r\n// this style is out of the feature scope, so use as the global pattern\r\nexport const globalAdgroupCreationStyles = ({ palette = {} }) => ({\r\n '.change-adgroup-type-view': {\r\n paddingBottom: 10,\r\n '& .change-adgroup-type-title': {\r\n fontWeight: 'bold',\r\n display: 'block',\r\n paddingBottom: 10,\r\n },\r\n },\r\n});\r\n","export const doubleListA11yHackerStyles = () => ({\r\n '& .a11y-adapter-list': {\r\n outline: 'none',\r\n },\r\n '& .a11y-adapter-item': {\r\n '&.a11y-adapter-item-focused': {\r\n border: '1px solid #605e5c',\r\n },\r\n '&.a11y-adapter-item-selected': {\r\n background: '#edebe9',\r\n },\r\n },\r\n});\r\n","export const campaignCreationSearchShoppingStyles = ({ palette = {} }) => ({\r\n '& a.brands_url_link, & .bmc_url_link': {\r\n textDecoration: 'underline',\r\n },\r\n '& .location-manage': {\r\n '& .location-popup-editor .ba-backbone-instance-wrapper>div': {\r\n padding: 0,\r\n },\r\n },\r\n '& .ba-backbone-instance-wrapper': {\r\n '& >div': {\r\n padding: '20px 32px',\r\n width: '100%',\r\n },\r\n\r\n '& .name, & .store, & .countryChange, & .bid-setting__container .input-group': {\r\n width: 438,\r\n },\r\n\r\n '& .bid-warning': {\r\n marginTop: 6,\r\n },\r\n\r\n '& .budget-amount': {\r\n width: '313px !important',\r\n },\r\n\r\n '& .bidding-strategy__container': {\r\n '& .col-sm-6': {\r\n width: 438,\r\n boxSizing: 'content-box',\r\n paddingTop: 5,\r\n\r\n '& > .form-control-static': {\r\n paddingBottom: 8,\r\n minHeight: 1,\r\n },\r\n },\r\n },\r\n\r\n '& h1': {\r\n margin: 0,\r\n fontSize: 20,\r\n color: palette.neutralPrimary,\r\n },\r\n '& h3': {\r\n fontSize: 14,\r\n color: palette.neutralPrimary,\r\n margin: '14px 0',\r\n fontWeight: 'normal',\r\n },\r\n\r\n '& hr': {\r\n marginTop: -29,\r\n background: palette.neutralSecondary,\r\n height: '1px',\r\n },\r\n\r\n '& .type-bold': {\r\n fontSize: 18,\r\n margin: '40px 0 0 0',\r\n },\r\n\r\n '& .advanced-settings-section': {\r\n borderTop: 0,\r\n marginTop: 0,\r\n paddingTop: 33,\r\n },\r\n\r\n '& .location-target-done': {\r\n marginLeft: 15,\r\n marginRight: 12,\r\n },\r\n\r\n '& .save-bar': {\r\n borderTop: `1px solid ${palette.neutralLight}`,\r\n paddingTop: 16,\r\n\r\n '& .btn-save': {\r\n marginRight: 12,\r\n },\r\n },\r\n\r\n '& .no-stores-message': {\r\n lineHeight: '48px',\r\n },\r\n\r\n '& .brands_url_link': {\r\n textDecoration: 'underline',\r\n verticalAlign: 'middle',\r\n '& span': {\r\n verticalAlign: 'baseline',\r\n },\r\n },\r\n\r\n '& .feed-product-filter': {\r\n marginTop: 33,\r\n '& .all-feed-products': {\r\n alignItems: 'center',\r\n display: 'flex',\r\n },\r\n '& .filter-offset': {\r\n marginLeft: 25,\r\n },\r\n },\r\n\r\n },\r\n '& .bmc_url_link': {\r\n display: 'inline-block',\r\n margin: '25px 0 25px 5px',\r\n },\r\n});\r\n","import { internalLinkStyle, underlineLinkStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nexport const creationCommonStyle = ({ palette = {} }, { isCreationPage = true } = {}) => (Object.assign({\r\n\r\n '& .steps-wizard__description': {\r\n marginTop: 8,\r\n marginBottom: 0,\r\n marginLeft: 32,\r\n color: palette.neutralSecondary,\r\n },\r\n\r\n '& .advanced-campaign-creation__wrapper': {\r\n marginLeft: 32,\r\n marginRight: 32,\r\n paddingBottom: 12,\r\n },\r\n\r\n '& .action-container': {\r\n marginLeft: 32,\r\n },\r\n\r\n '& .step-content-container .content-container, .step-content-container > .action-container': {\r\n minWidth: 1380,\r\n },\r\n\r\n '& .row': {\r\n margin: 0,\r\n },\r\n\r\n '& .helpbutton': {\r\n display: 'inline-block',\r\n marginLeft: 5,\r\n },\r\n\r\n '& label': {\r\n display: 'inline-block',\r\n },\r\n\r\n '& span': {\r\n verticalAlign: 'middle',\r\n },\r\n\r\n '& .display-inline-block': {\r\n display: 'inline-block !important',\r\n },\r\n\r\n '& .help-block, .remaining-chars-hint-container': {\r\n textAlign: 'right',\r\n fontSize: 14,\r\n margin: 0,\r\n color: palette.neutralPrimary,\r\n lineHeight: '24px',\r\n },\r\n\r\n '& .help-block.error': {\r\n textAlign: 'left',\r\n },\r\n\r\n '& ol, ul': {\r\n listStyle: 'none',\r\n paddingLeft: 0,\r\n },\r\n\r\n '& .validation-error': {\r\n border: '1px solid #A80000 !important',\r\n backgroundColor: palette.white,\r\n margin: 0,\r\n },\r\n\r\n '& .error': {\r\n color: '#A80000',\r\n },\r\n\r\n '& div.error': {\r\n fontSize: 12,\r\n },\r\n\r\n '& input.error, select.error, textarea.error, input.campaign-error-row, select.campaign-error-row, textarea.campaign-error-row': {\r\n border: '1px solid #A80000 !important',\r\n },\r\n\r\n '& .form-group': {\r\n padding: 0,\r\n marginBottom: 0,\r\n },\r\n\r\n '& .form-control': {\r\n height: 32,\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n boxSizing: 'border-box',\r\n borderRadius: 2,\r\n },\r\n\r\n '& .form-control:focus': {\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n\r\n '& .form-control-static': {\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n margin: 0,\r\n height: 'auto',\r\n color: palette.neutralSecondary,\r\n\r\n '&.copy-settings': {\r\n marginTop: 4,\r\n },\r\n },\r\n\r\n '& .control-label, .form-label-container': {\r\n textAlign: 'left',\r\n width: 'auto',\r\n float: 'none',\r\n marginTop: 33,\r\n fontSize: 14,\r\n color: palette.neutralPrimary,\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n display: 'block',\r\n },\r\n\r\n '& .form-label-container': {\r\n '&>label>span': {\r\n padding: '5px 0px',\r\n display: 'inline-block',\r\n },\r\n },\r\n\r\n '& .control-label .col-sm-4': {\r\n width: 'auto',\r\n },\r\n\r\n '& .displayNone': {\r\n display: 'none',\r\n },\r\n\r\n '& select': {\r\n appearance: 'none',\r\n '-webkit-appearance': 'none',\r\n },\r\n\r\n '& textarea': {\r\n resize: 'none',\r\n },\r\n\r\n '& .input-group-addon': {\r\n backgroundColor: palette.white,\r\n border: 0,\r\n },\r\n\r\n '& .bidding-strategy__container': {\r\n '& .alert-image': {\r\n paddingTop: 5,\r\n },\r\n '& .alert.alert-info': {\r\n margin: '8px 0',\r\n lineHeight: 'unset',\r\n },\r\n },\r\n\r\n '& .alert-info.form-group': {\r\n '& .alert-info-inline': {\r\n ...internalLinkStyle({ palette, elementLocator: '> a', isGreyBackground: true }),\r\n '& > a:focus': {\r\n border: 0,\r\n },\r\n },\r\n },\r\n\r\n '& .cashback-settings .alert.alert-info': {\r\n marginTop: 15,\r\n marginRight: 24,\r\n marginLeft: 'unset',\r\n lineHeight: 'unset',\r\n },\r\n\r\n '& .cashback-settings .alert-div': {\r\n width: '50%',\r\n },\r\n\r\n ...underlineLinkStyle({ palette, elementLocator: 'a.HelpTopic' }),\r\n '& a.HelpTopic:focus': {\r\n border: 0,\r\n },\r\n}, isCreationPage ? {\r\n '& .checkbox > label + .helpbutton, .radio > label + .helpbutton': {\r\n marginLeft: '-6px',\r\n },\r\n} : {}));\r\n\r\n","/* eslint-disable @typescript-eslint/no-unused-vars */\r\nexport const audienceCampaignSettingsStyles = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '& .crud-audience-campaign': {\r\n color: palette.neutralPrimary,\r\n padding: [0, 32],\r\n\r\n '& .description': {\r\n lineHeight: '24px',\r\n marginTop: 8,\r\n },\r\n\r\n '& .form-group': {\r\n\r\n '& .col-sm-2': {\r\n margin: [26, 0, 0, 0],\r\n },\r\n\r\n '& .Name-value': {\r\n padding: [6, 8, 7, 8],\r\n boxSizing: 'border-box',\r\n borderRadius: 2,\r\n width: 461,\r\n marginTop: 2,\r\n backgroundColor: palette.white,\r\n },\r\n\r\n '& .remaining-chars-hint': {\r\n marginBottom: 0,\r\n marginTop: 3,\r\n },\r\n\r\n },\r\n },\r\n '& .shopping-settings__container': {\r\n '& .col-sm-offset-2': {\r\n margin: 0,\r\n },\r\n\r\n '& .query-group-container': {\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n padding: 10,\r\n width: 551,\r\n\r\n '& .query-editor': {\r\n margin: '2px 0',\r\n\r\n '& .form-control': {\r\n width: 188,\r\n },\r\n\r\n '& .text-center': {\r\n padding: '0 27px',\r\n width: 'auto',\r\n },\r\n\r\n '& .col-sm-5': {\r\n margin: 0,\r\n width: 'auto',\r\n padding: 0,\r\n },\r\n\r\n '& .control-label': {\r\n height: 32,\r\n lineHeight: '32px',\r\n margin: 0,\r\n },\r\n\r\n '& .remove-editor': {\r\n width: 'auto',\r\n padding: 0,\r\n margin: 0,\r\n marginLeft: 10,\r\n marginTop: 5,\r\n },\r\n },\r\n\r\n '& .col-sm-12': {\r\n float: 'none',\r\n padding: 0,\r\n },\r\n\r\n '& .text-right': {\r\n textAlign: 'left',\r\n marginTop: 15,\r\n },\r\n\r\n '& .addNewQuery': {\r\n '& .glyphicon ': {\r\n marginRight: 5,\r\n marginTop: '-5px',\r\n },\r\n },\r\n },\r\n\r\n '& .query-summary-item': {\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n padding: 10,\r\n width: 462,\r\n\r\n '& div.query-item': {\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n\r\n '& .edit-query span': {\r\n verticalAlign: 'baseline',\r\n },\r\n },\r\n },\r\n});\r\n","/* eslint-disable @typescript-eslint/no-unused-vars */\r\nexport const criterionSettingAudienceStyles = ({ palette = {} }) => ({\r\n '& .criterion-setting-Audience': {\r\n\r\n '& .col-sm-10': {\r\n width: '100%',\r\n '& .form-group': {\r\n margin: 0,\r\n },\r\n },\r\n\r\n '& a.audience__caption--folded': {\r\n display: 'inline-block',\r\n\r\n '& > span': {\r\n verticalAlign: 'unset',\r\n },\r\n },\r\n\r\n '& .create-audience-fallback-popover': {\r\n backgroundColor: palette.white,\r\n position: 'absolute',\r\n left: '160px !important',\r\n top: '-40px !important',\r\n zIndex: 5,\r\n '& .popover-view': {\r\n border: '1px solid #edebe9',\r\n boxShadow: '0 6.4px 14.4px 0 rgba(0,0,0,.132), 0 1.2px 3.6px 0 rgba(0,0,0,.108)',\r\n borderRadius: '2px',\r\n padding: '20px',\r\n width: '250px',\r\n '& .fallback-popover-title': {\r\n fontSize: '20px',\r\n lineHeight: '28px',\r\n fontWeight: 600,\r\n },\r\n '& .fallback-popover': {\r\n '& .message': {\r\n fontSize: '12px',\r\n lineHeight: '22px',\r\n paddingTop: '10px',\r\n paddingBottom: '10px',\r\n },\r\n '& .link-container': {\r\n fontsize: '16px',\r\n '& .iconba.iconba-OpenInNewWindow': {\r\n color: palette.themeDarkAlt,\r\n margin: '0 4px',\r\n top: '2px',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst linkedInTargetSelectionSyles = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }, {\r\n companySearchTableWidth = 450,\r\n companySearchTableCompanyNameWidth = 258,\r\n companyIconHeightWidth = 32,\r\n targetGridWidth = 514,\r\n} = {}) => ({\r\n '& .target-intent-header': {\r\n marginBottom: 8,\r\n },\r\n\r\n '& .search-box__input-group': {\r\n position: 'relative',\r\n\r\n '& .search-box__input': {\r\n background: '#FFFFFF',\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n boxSizing: 'border-box',\r\n borderRadius: 2,\r\n padding: '6px 8px 7px 32px',\r\n width: companySearchTableWidth,\r\n },\r\n\r\n '& .search-box__icon': {\r\n fontFamily: iconFontFamily,\r\n fontSize: 16,\r\n position: 'absolute',\r\n left: 0,\r\n color: '#0078D4',\r\n padding: 8,\r\n lineHeight: '16px',\r\n },\r\n\r\n '& .search-box__icon:before': {\r\n content: '\"\\\\E721\"',\r\n },\r\n },\r\n\r\n '& .company-search-container': {\r\n position: 'relative',\r\n\r\n '& .company-search-table': {\r\n width: companySearchTableWidth,\r\n height: '182px',\r\n overflow: 'auto',\r\n background: '#FFFFFF',\r\n boxShadow: '0px 0.6px 1.8px rgba(0, 0, 0, 0.108), 0px 3.2px 7.2px rgba(0, 0, 0, 0.132)',\r\n borderRadius: '0px 0px 2px 2px',\r\n },\r\n\r\n '& .empty-result-message': {\r\n position: 'absolute',\r\n top: 0,\r\n },\r\n },\r\n\r\n '& .company-item-template': {\r\n padding: '2px 8px 0 8px',\r\n '& .pull-right': {\r\n margin: 0,\r\n padding: 0,\r\n verticalAlign: 'top',\r\n\r\n '& .company-search-include-link': {\r\n textAlign: 'right',\r\n },\r\n\r\n '& .company-search-separator': {\r\n margin: '0 5px',\r\n verticalAlign: 'baseline',\r\n },\r\n },\r\n\r\n '& .pull-left': {\r\n marginTop: 5,\r\n marginRight: 7,\r\n\r\n '& img': {\r\n width: companyIconHeightWidth,\r\n height: companyIconHeightWidth,\r\n display: 'block',\r\n overflow: 'hidden',\r\n },\r\n },\r\n\r\n '& .company-name': {\r\n width: companySearchTableCompanyNameWidth,\r\n lineHeight: '20px',\r\n\r\n '& .company-item-name, .company-item-industry': {\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n paddingRight: 5,\r\n },\r\n },\r\n },\r\n\r\n '& .company-item-template:last-child': {\r\n paddingBottom: 13,\r\n },\r\n\r\n '& .linked-in-target-grid-container, .linked-in-excluded-grid-container': {\r\n marginTop: 8,\r\n position: 'relative',\r\n width: targetGridWidth,\r\n\r\n '& .target-grid-remove-all-container': {\r\n position: 'absolute',\r\n right: 10,\r\n top: 11,\r\n },\r\n\r\n '& .target-grid': {\r\n '& .table-container': {\r\n width: '100%',\r\n '& tr > th, tr > td': {\r\n height: '42px',\r\n },\r\n\r\n '& .table': {\r\n '& .header': {\r\n padding: '11px 8px 12px 7px',\r\n\r\n '& tr > th': {\r\n fontWeight: 'normal',\r\n height: '42px',\r\n },\r\n\r\n '& tr > th:first-child': {\r\n width: 140,\r\n },\r\n\r\n '& tr > th:nth-child(2)': {\r\n width: 325,\r\n },\r\n\r\n '& tr > th:nth-child(3)': {\r\n width: 149,\r\n },\r\n },\r\n\r\n '& tbody': {\r\n '& .linked-in-target-grid__area-row': {\r\n '& .text-left:nth-child(2)': {\r\n paddingLeft: 7,\r\n paddingRight: 8,\r\n },\r\n\r\n '& .text-left': {\r\n padding: 0,\r\n\r\n '& .statusEnabled_icon, .statusExcluded_icon': {\r\n lineHeight: '19px',\r\n padding: '12px 9px 11px 17px',\r\n },\r\n\r\n '& .company-item-template': {\r\n padding: 0,\r\n\r\n '& .pull-left': {\r\n margin: 0,\r\n padding: '5px 7px 5px 1px',\r\n },\r\n\r\n '& .company-name': {\r\n width: '100%',\r\n paddingRight: 8,\r\n\r\n '& .company-item-name, .company-item-industry': {\r\n width: 300,\r\n },\r\n },\r\n },\r\n\r\n '& .linked-in-target-grid__remove-col': {\r\n fontFamily: iconFontFamily,\r\n fontSize: 12,\r\n color: '#605E5C',\r\n textAlign: 'center',\r\n padding: '15px 8px',\r\n },\r\n\r\n '& .linked-in-target-grid__remove-col:before': {\r\n content: '\"\\\\E711\"',\r\n },\r\n '& .clickable': {\r\n cursor: 'pointer',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .linked-in-target-search-container': {\r\n width: companySearchTableWidth,\r\n\r\n '& .treeview': {\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n width: companySearchTableWidth,\r\n height: '265px',\r\n },\r\n\r\n '& .search-result-tree': {\r\n padding: '8px 7px 8px 3px',\r\n height: '215px',\r\n overflowY: 'auto',\r\n\r\n '& .node-container': {\r\n '& .tree-node-container': {\r\n paddingBottom: 8,\r\n\r\n '& .grouped-node-title-container': {\r\n '& .glyphicon': {\r\n fontFamily: iconFontFamily,\r\n marginRight: 5,\r\n },\r\n '& .glyphicon-triangle-right:before': {\r\n content: '\"\\\\F08F\"',\r\n },\r\n '& .glyphicon-triangle-bottom:before': {\r\n content: '\"\\\\F08E\"',\r\n },\r\n\r\n '& span:last-child': {\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n },\r\n\r\n '& .state-value-container': {\r\n float: 'right',\r\n },\r\n\r\n '& .children-container': {\r\n marginLeft: 18,\r\n\r\n '& .node-container': {\r\n '& .tree-node-container': {\r\n paddingBottom: 0,\r\n paddingTop: 2,\r\n\r\n '& span:first-child': {\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n display: 'inline-block',\r\n width: companySearchTableWidth - 210,\r\n },\r\n\r\n '& .action-link, .action-separator': {\r\n float: 'right',\r\n },\r\n\r\n '& .action-separator': {\r\n margin: [0, 5],\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst linkedInSharedStyles = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }, {\r\n companySearchTableWidth = 450,\r\n companySearchTableCompanyNameWidth = 258,\r\n companyIconHeightWidth = 32,\r\n} = {}) => ({\r\n '& .col-sm-10, .col-sm-12': {\r\n width: '100%',\r\n\r\n '& .empty-result-message': {\r\n padding: 8,\r\n },\r\n\r\n '& .bid-adjustment-grids-container': {\r\n width: '816px',\r\n },\r\n\r\n '& .target-selection-container': {\r\n ...linkedInTargetSelectionSyles(\r\n { palette, iconFontFamily },\r\n {\r\n companySearchTableWidth,\r\n companySearchTableCompanyNameWidth,\r\n companyIconHeightWidth,\r\n targetGridWidth: 816,\r\n }\r\n ),\r\n },\r\n },\r\n});\r\n\r\nconst searchBoxStyles = ({ companySearchTableWidth = 450 }) => ({\r\n '& .search-box__input-group': {\r\n '& .search-box__input': {\r\n border: '0 !important',\r\n borderBottom: '1px solid #F3F2F1 !important',\r\n width: `${companySearchTableWidth - 2}px !important`,\r\n height: '48px',\r\n paddingLeft: '48px !important',\r\n },\r\n\r\n '& .search-box__icon': {\r\n padding: '16px !important',\r\n },\r\n },\r\n});\r\n\r\nexport const criterionSettingCompanyStyles = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }, {\r\n companySearchTableWidth = 450,\r\n companySearchTableCompanyNameWidth = 258,\r\n companyIconHeightWidth = 32,\r\n targetGridWidth = 514,\r\n} = {}) => ({\r\n '& .criterion-setting-CompanyName': {\r\n ...linkedInTargetSelectionSyles(\r\n { palette, iconFontFamily },\r\n {\r\n companySearchTableWidth,\r\n companySearchTableCompanyNameWidth,\r\n companyIconHeightWidth,\r\n targetGridWidth,\r\n }\r\n ),\r\n },\r\n});\r\n\r\nexport const criterionSettingIndustryStyles = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }, {\r\n companySearchTableWidth = 450,\r\n companySearchTableCompanyNameWidth = 258,\r\n companyIconHeightWidth = 32,\r\n targetGridWidth = 514,\r\n} = {}) => ({\r\n '& .criterion-setting-Industry': {\r\n '& div': {\r\n ...linkedInTargetSelectionSyles(\r\n { palette, iconFontFamily },\r\n {\r\n companySearchTableWidth,\r\n companySearchTableCompanyNameWidth,\r\n companyIconHeightWidth,\r\n targetGridWidth,\r\n }\r\n ),\r\n },\r\n ...searchBoxStyles({ companySearchTableWidth }),\r\n },\r\n});\r\n\r\nconst jobFunctionSearchStyles = ({ companySearchTableWidth = 450 }) => ({\r\n '& .searchbox-container': {\r\n border: '1px solid #605E5C',\r\n width: companySearchTableWidth,\r\n height: '265px',\r\n },\r\n\r\n '& .search-result-view-container': {\r\n height: '215px',\r\n overflow: 'auto',\r\n\r\n '& .job-function-item-template': {\r\n padding: '8px 8px 9px 8px',\r\n lineHeight: '19px',\r\n\r\n '& .job-function-item-name': {\r\n width: companySearchTableWidth - 180,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n\r\n '& .job-function-search-separator': {\r\n margin: [0, 5],\r\n verticalAlign: 'baseline',\r\n },\r\n },\r\n },\r\n});\r\n\r\nexport const criterionSettingJobFunctionStyles = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }, {\r\n companySearchTableWidth = 450,\r\n companySearchTableCompanyNameWidth = 258,\r\n companyIconHeightWidth = 32,\r\n targetGridWidth = 514,\r\n} = {}) => ({\r\n '& .criterion-setting-JobFunction': {\r\n '& div': {\r\n ...linkedInTargetSelectionSyles(\r\n { palette, iconFontFamily },\r\n {\r\n companySearchTableWidth,\r\n companySearchTableCompanyNameWidth,\r\n companyIconHeightWidth,\r\n targetGridWidth,\r\n }\r\n ),\r\n },\r\n ...searchBoxStyles({ companySearchTableWidth }),\r\n ...jobFunctionSearchStyles({ companySearchTableWidth }),\r\n },\r\n});\r\n\r\nexport const selectorContainerStyles = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }, {\r\n companySearchTableWidth = 400,\r\n companySearchTableCompanyNameWidth = 258,\r\n companyIconHeightWidth = 32,\r\n}) => ({\r\n '& button.btn.btn-primary#location': {\r\n marginTop: 0,\r\n },\r\n '& .item-container:not(#location-setting-container)': {\r\n marginLeft: '1.3em',\r\n border: '0em',\r\n '& label.checkbox-inline': {\r\n display: 'flex',\r\n },\r\n '& .criterion-setting-Industry, .criterion-setting-JobFunction': {\r\n ...searchBoxStyles({ companySearchTableWidth }),\r\n },\r\n '& .criterion-setting-JobFunction': {\r\n ...jobFunctionSearchStyles({ companySearchTableWidth }),\r\n },\r\n '& .search-box__input-group': {\r\n position: 'relative',\r\n '& .search-box__input': {\r\n background: '#FFFFFF',\r\n border: '1px solid #B3B0AD',\r\n boxSizing: 'border-box',\r\n borderRadius: 2,\r\n padding: '6px 8px 7px 32px',\r\n width: companySearchTableWidth,\r\n },\r\n '& .search-box__icon': {\r\n fontFamily: iconFontFamily,\r\n fontSize: 16,\r\n position: 'absolute',\r\n left: 0,\r\n color: '#0078D4',\r\n padding: 8,\r\n lineHeight: '16px',\r\n },\r\n '& .search-box__icon:before': {\r\n content: '\"\\\\E721\"',\r\n },\r\n },\r\n '& .criterion-setting-CompanyName, .criterion-setting-Industry, .criterion-setting-JobFunction': {\r\n ...linkedInSharedStyles(\r\n { palette, iconFontFamily },\r\n {\r\n companySearchTableWidth,\r\n companySearchTableCompanyNameWidth,\r\n companyIconHeightWidth,\r\n }\r\n ),\r\n marginLeft: '-15px',\r\n },\r\n '& .audience-setting-container': {\r\n '& .searchbox': {\r\n marginLeft: '15px',\r\n },\r\n '& .create-audience-link-section div': {\r\n marginLeft: '13px',\r\n },\r\n '& label.checkbox-label#IMAIneligibleToggleLable': {\r\n marginLeft: '18px',\r\n },\r\n },\r\n },\r\n '& .item-container#location-setting-container': {\r\n marginLeft: '0.3em',\r\n border: '0em',\r\n },\r\n});\r\n\r\nexport const selectorContainerBtnStyles = ({ iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n margin: '0em',\r\n background: 'transparent',\r\n display: 'inline-block',\r\n paddingLeft: '0.3em',\r\n marginTop: 40,\r\n color: '#605e5c',\r\n '& .summary-details': {\r\n color: '#605e5c',\r\n fontWeight: 'normal',\r\n display: 'block',\r\n border: 0,\r\n margin: 0,\r\n textAlign: 'left',\r\n visibility: 'visible',\r\n },\r\n '& .target-header': {\r\n margin: '0 em',\r\n display: 'flex',\r\n border: '0em',\r\n // new\r\n '&:before': {\r\n color: '#0078D4',\r\n content: '\"\\\\E76C\"',\r\n fontFamily: iconFontFamily,\r\n marginRight: 8,\r\n position: 'relative',\r\n // display: 'flex',\r\n top: 2,\r\n },\r\n '& p.target-selection-title': {\r\n color: '#0078D4',\r\n margin: 0,\r\n padding: 0,\r\n border: '0em',\r\n fontWeight: 'bold',\r\n },\r\n '& p.target-selection-title:hover': {\r\n color: '#004578',\r\n textDecoration: 'underline',\r\n },\r\n },\r\n '&[aria-expanded=\"true\"] .target-header:before': {\r\n content: '\"\\\\E70D\"',\r\n },\r\n});\r\n\r\nexport const audienceTargetsSettingsStyles = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }, {\r\n companySearchTableWidth = 450,\r\n companySearchTableCompanyNameWidth = 258,\r\n companyIconHeightWidth = 32,\r\n} = {}) => ({\r\n '& .crud-audience-adgroup': {\r\n color: '#323130',\r\n padding: [24, 32],\r\n overflow: 'hidden',\r\n zoom: 1,\r\n },\r\n '& .crud-audience-adgroup, & .audience-adgroup-settings-wizard-container, & .campaign-targets, & .adgroup-targets-section, & .adgroup-targets, & .criterion-creation-container, & .new-creation-flow-target-selector-container': {\r\n '& table.table--no-border>tbody>tr:hover, table.table-hover>tbody>tr:hover': {\r\n background: palette.neutralLight,\r\n '& td': {\r\n border: `1px solid ${palette.white}`,\r\n },\r\n },\r\n\r\n '& .optimized-selector-container, & .optimized-container, & .audience-target-settings-container': {\r\n ...selectorContainerStyles(\r\n { palette, iconFontFamily },\r\n {\r\n companySearchTableWidth,\r\n companySearchTableCompanyNameWidth,\r\n companyIconHeightWidth,\r\n }\r\n ),\r\n '& button.btn.btn-primary.expand-btn': {\r\n ...selectorContainerBtnStyles({ iconFontFamily }),\r\n },\r\n },\r\n\r\n '& .adgroup-name-input-container': {\r\n '& .name-input-control-container': {\r\n padding: 0,\r\n width: 461,\r\n\r\n '& .form-control': {\r\n padding: [6, 8, 7, 8],\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n boxSizing: 'border-box',\r\n borderRadius: 2,\r\n width: 461,\r\n marginTop: 2,\r\n backgroundColor: '#FFFFFF',\r\n // i added this\r\n '-webkit-user-select': 'all',\r\n '-moz-user-select': 'all',\r\n '-ms-user-select': 'all',\r\n userSelect: 'all',\r\n },\r\n\r\n '& .remaining-chars-hint': {\r\n marginBottom: 0,\r\n marginTop: 3,\r\n },\r\n },\r\n },\r\n\r\n '& .crud-audience-target-selector': {\r\n width: 900,\r\n\r\n '& .crud-audience-target-selector__description': {\r\n fontSize: 14,\r\n lineHeight: 1.5,\r\n color: '#323130',\r\n paddingTop: 26,\r\n marginBottom: 10.5,\r\n border: 'none',\r\n },\r\n\r\n '& .selection-item-container': {\r\n width: 259,\r\n height: '92px',\r\n padding: 0,\r\n margin: [0, 37, 37, 0],\r\n\r\n '& .selection-item-button': {\r\n color: '#323130',\r\n width: 259,\r\n height: '92px',\r\n backgroundColor: '#F3F2F1',\r\n paddingLeft: 13,\r\n paddingRight: 14,\r\n position: 'relative',\r\n\r\n '&:hover': {\r\n zIndex: 0,\r\n border: '1px solid #323130',\r\n },\r\n\r\n '&:focus': {\r\n border: '1px solid #605E5C',\r\n },\r\n\r\n '&:active': {\r\n borderColor: palette.themePrimary,\r\n zIndex: 0,\r\n\r\n '& .glyphicon-plus:before': {\r\n color: palette.themePrimary,\r\n content: '\"\\\\EC61\"',\r\n },\r\n },\r\n\r\n '& .col-sm-1': {\r\n position: 'absolute',\r\n right: 0,\r\n top: 0,\r\n paddingLeft: 0,\r\n\r\n '& .glyphicon-ok, .glyphicon-plus': {\r\n fontSize: 18,\r\n fontFamily: iconFontFamily,\r\n position: 'unset',\r\n margin: 0,\r\n },\r\n '& .glyphicon-ok:before': {\r\n color: palette.themePrimary,\r\n content: '\"\\\\EC61\"',\r\n },\r\n '& .glyphicon-plus:before': {\r\n color: palette.neutralPrimary,\r\n position: 'relative',\r\n zIndex: '-1',\r\n content: '\"\\\\ECCA\"',\r\n },\r\n\r\n },\r\n\r\n '& .col-sm-11': {\r\n width: 232,\r\n padding: 0,\r\n position: 'absolute',\r\n top: '50%',\r\n transform: 'translate(0px, -50%)',\r\n\r\n '& .selection-item-description': {\r\n fontWeight: 'lighter',\r\n whiteSpace: 'normal',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n display: '-webkit-box',\r\n '-webkit-line-clamp': 3,\r\n '-webkit-box-orient': 'vertical',\r\n },\r\n\r\n },\r\n },\r\n\r\n '& .selection-item-button.active': {\r\n border: [1, 'solid', '#0078D4'],\r\n\r\n '&:hover': {\r\n borderColor: palette.themeDarker,\r\n '& .glyphicon-ok:before': {\r\n color: palette.themeDarker,\r\n },\r\n },\r\n },\r\n },\r\n '& .audience-selector-container': {\r\n '& h5.control-label': {\r\n display: 'none',\r\n },\r\n '& button.btn.btn-primary.btn-dropdown': {\r\n ...selectorContainerBtnStyles({ iconFontFamily }),\r\n },\r\n ...selectorContainerStyles(\r\n { palette, iconFontFamily },\r\n {\r\n companySearchTableWidth,\r\n companySearchTableCompanyNameWidth,\r\n companyIconHeightWidth,\r\n }\r\n ),\r\n }, // audience target selector container\r\n }, // crud audience target selector container\r\n\r\n '& .audience-target-settings-container, .criterion-setting-container-in-creation': {\r\n '& .parent-level-bid-adjustment-grid': {\r\n width: 1000,\r\n '& .pull-left': {\r\n marginRight: 7,\r\n },\r\n },\r\n '& .show-cashback-percent': {\r\n '& .table-container': {\r\n '& .company-item-template': {\r\n display: 'flex',\r\n '& .pull-left': {\r\n marginRight: 10,\r\n },\r\n '& .company-name': {\r\n width: 200,\r\n },\r\n },\r\n '& .cashback-percent-cell': {\r\n '& .input-group-addon': {\r\n border: 'none',\r\n background: 'none',\r\n padding: 0,\r\n verticalAlign: 'middle',\r\n lineHeight: '30px',\r\n },\r\n },\r\n },\r\n '& .cashback-percent-col': {\r\n '& .inline-input.form-control': {\r\n width: 66,\r\n },\r\n },\r\n '& .linked-in-target-grid-view .column-header.column-header-leaf.column-name-BidAdjustment': {\r\n width: '254px !important',\r\n },\r\n '& .current-level-bid-adjustment-grid': {\r\n width: 1000,\r\n },\r\n '&.criterion-setting-CompanyName, &.criterion-setting-Industry, &.criterion-setting-JobFunction': {\r\n '& .linked-in-target-grid-container': {\r\n width: '1000px !important',\r\n },\r\n },\r\n '& .cashback-percent-cell': {\r\n '& input': {\r\n width: 60,\r\n },\r\n },\r\n '& .linked-in-target-grid-view': {\r\n '& .target-grid': {\r\n '& .column-header.column-name-isIncludedOrExcluded': {\r\n width: '100px !important',\r\n },\r\n '& .column-header': {\r\n '&.column-name-targetName': {\r\n width: 'auto !important',\r\n },\r\n '&.column-name-name': {\r\n width: '223px !important',\r\n },\r\n },\r\n '& .bid-adjustment-target-column input': {\r\n width: 60,\r\n },\r\n '& .company-item-template': {\r\n '& .company-name': {\r\n '& .company-item-name, & .company-item-industry': {\r\n width: '200px !important',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n paddingBottom: 15,\r\n\r\n '& .pagination-control': {\r\n '& .pager': {\r\n display: 'inline-block',\r\n marginLeft: 20,\r\n },\r\n },\r\n\r\n '& .location-setting-controller': {\r\n marginBottom: 0,\r\n\r\n '& .control-label': {\r\n marginTop: 10,\r\n },\r\n\r\n '& .searchbox-input': {\r\n padding: [3, 33, 3, 12],\r\n },\r\n\r\n '& .radio': {\r\n paddingTop: 0,\r\n },\r\n },\r\n\r\n '& .criterion-setting-Age, .criterion-setting-Gender': {\r\n\r\n '& .target-selection-container': {\r\n '& .form-group': {\r\n margin: 0,\r\n\r\n '& .row': {\r\n '& .col-sm-3': {\r\n paddingLeft: 0,\r\n },\r\n '& .checkbox-inline': {\r\n '& input, div': {\r\n float: 'left',\r\n },\r\n },\r\n\r\n },\r\n '& .errors-container': {\r\n padding: 0,\r\n },\r\n },\r\n },\r\n },\r\n\r\n ...criterionSettingAudienceStyles({ palette }),\r\n\r\n '& .criterion-setting-CompanyName .col-sm-12 .target-selection-container .searchbox-container .search-box__input-group .search-box__input': {\r\n width: companySearchTableWidth,\r\n },\r\n\r\n '& .criterion-setting-CompanyName .col-sm-10 .target-selection-container .searchbox-container .search-box__input-group .search-box__input': {\r\n width: companySearchTableWidth,\r\n },\r\n\r\n '& .target-selection-container': {\r\n '& .column-name-BidAdjustment': {\r\n width: '280px !important',\r\n },\r\n '& .column-name-removeAll': {\r\n width: '149px !important',\r\n },\r\n '& tbody': {\r\n '& .linked-in-target-grid__area-row': {\r\n '& .bid-adjustment-target-column select.form-control,input.form-control': {\r\n display: 'inline-block !important',\r\n 'margin-left': '5px',\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .criterion-setting-CompanyName, .criterion-setting-Industry, .criterion-setting-JobFunction': {\r\n ...linkedInSharedStyles(\r\n { palette, iconFontFamily },\r\n {\r\n companySearchTableWidth,\r\n companySearchTableCompanyNameWidth,\r\n companyIconHeightWidth,\r\n }\r\n ),\r\n },\r\n '& .criterion-setting-Industry, .criterion-setting-JobFunction': {\r\n ...searchBoxStyles({ companySearchTableWidth }),\r\n },\r\n '& .criterion-setting-JobFunction': {\r\n ...jobFunctionSearchStyles({ companySearchTableWidth }),\r\n },\r\n },\r\n\r\n '& .errors-container': {\r\n float: 'left',\r\n clear: 'both',\r\n padding: '0 15px 15px 15px',\r\n },\r\n\r\n '& .audience-advanced-target-settings': {\r\n paddingTop: 10,\r\n },\r\n\r\n '& .glyphicon-pencil': {\r\n marginRight: 11,\r\n },\r\n\r\n '& .no-target-exist-edit-label': {\r\n marginRight: 5,\r\n '& u': {\r\n 'text-decoration': 'none',\r\n },\r\n },\r\n\r\n '& .edit-target-show-button': {\r\n verticalAlign: 'middle',\r\n },\r\n\r\n '& .edit-target-show-button-container': {\r\n paddingBottom: 8,\r\n },\r\n\r\n '& .done-editing-target-button': {\r\n background: palette.themePrimary,\r\n color: palette.white,\r\n\r\n '&:focus:after': {\r\n border: `1px solid ${palette.white}`,\r\n bottom: 1,\r\n left: 1,\r\n right: 1,\r\n top: 1,\r\n },\r\n },\r\n\r\n '& .level-toggle-container': {\r\n padding: '5px 0',\r\n marginBottom: 10,\r\n\r\n '& .level-toggle': {\r\n marginRight: 8,\r\n float: 'left',\r\n },\r\n },\r\n\r\n '& .alert-info.form-group.adgroup-override-info': {\r\n lineHeight: 1.5,\r\n margin: '8px 0',\r\n padding: 8,\r\n\r\n '& .alert-image': {\r\n marginTop: 3,\r\n float: 'left',\r\n },\r\n '& .alert-info-inline': {\r\n '& a': {\r\n textDecoration: 'underline',\r\n },\r\n },\r\n },\r\n\r\n '& .location-target-done': {\r\n margin: '0 12px 0 15px',\r\n },\r\n\r\n },\r\n '& .adgroup-targets': {\r\n '& .linked-in-target-grid-container': {\r\n '& .column-name-BidAdjustment': {\r\n width: '280px !important',\r\n },\r\n '& .column-name-removeAll': {\r\n width: '149px !important',\r\n },\r\n '& tbody': {\r\n '& .linked-in-target-grid__area-row': {\r\n '& .bid-adjustment-target-column select.form-control,input.form-control': {\r\n display: 'inline-block !important',\r\n 'margin-left': '5px',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","/* eslint-disable @typescript-eslint/no-unused-vars */\r\nexport const audienceBudgetBidsStyles = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n\r\n '& .crud-audience-budget-bid': {\r\n\r\n padding: '0 32px 15px 32px',\r\n\r\n '& .control-label:nth-child(1)': {\r\n marginTop: 24,\r\n },\r\n\r\n '& .budget': {\r\n '& .form-control-static': {\r\n minHeight: 1,\r\n\r\n '& .col-sm-fluid': {\r\n float: 'left',\r\n paddingRight: 10,\r\n },\r\n },\r\n },\r\n\r\n '& .bid__container > .form-group': {\r\n '& .form-control-static': {\r\n minHeight: 1,\r\n },\r\n },\r\n\r\n '& .default-bid': {\r\n float: 'none',\r\n\r\n '& .input-group': {\r\n paddingTop: 5,\r\n },\r\n\r\n\r\n '& .input-group-addon': {\r\n backgroundColor: palette.white,\r\n border: 0,\r\n },\r\n\r\n\r\n '& .kpiestimation-result': {\r\n '& .panel-heading': {\r\n marginBottom: 15,\r\n border: 0,\r\n },\r\n },\r\n },\r\n\r\n '& .bid-adjustments-container, .adschedule-targets-container': {\r\n border: 0,\r\n\r\n '& .bid-adjustment-targets-container, .adschedule-targets': {\r\n padding: [0, 15],\r\n },\r\n\r\n '& .bid-adjustments-section, .adschedule-section': {\r\n zIndex: 1,\r\n\r\n '&:focus, &:hover': {\r\n outline: 'none',\r\n border: 'none',\r\n textDecoration: 'none',\r\n color: palette.themePrimary,\r\n background: palette.neutralLighter,\r\n },\r\n },\r\n },\r\n\r\n '& .container-budget': {\r\n paddingLeft: '0 !important',\r\n },\r\n\r\n },\r\n '& .criterion-setting-container': {\r\n '&.show-cashback-percent': {\r\n '& .bid-adjustment-grids-container .table-container, & .location-bid-grid-container .table-container': {\r\n width: 856,\r\n '& .inherit-cashback-value': {\r\n display: 'inline-block',\r\n },\r\n '& .cashback-option-select.form-control': {\r\n width: '180px !important',\r\n },\r\n '& .input-group-addon': {\r\n padding: 0,\r\n lineHeight: '30px',\r\n verticalAlign: 'middle',\r\n background: 'none',\r\n },\r\n },\r\n },\r\n '&.criterion-setting-CompanyName.show-cashback-percent': {\r\n '& .bid-adjustment-grids-container .table-container': {\r\n width: 1100,\r\n },\r\n },\r\n '&.criterion-setting-Industry.show-cashback-percent': {\r\n '& .bid-adjustment-grids-container .table-container': {\r\n width: 1000,\r\n },\r\n },\r\n '&.criterion-setting-JobFunction.show-cashback-percent': {\r\n '& .bid-adjustment-grids-container .table-container': {\r\n width: 900,\r\n },\r\n },\r\n '&.criterion-setting-Audience.show-cashback-percent': {\r\n '& .bid-adjustment-grids-container .table-container': {\r\n width: 1050,\r\n '& .column-name-Target': {\r\n width: 300,\r\n },\r\n },\r\n },\r\n '& .target-edit-container, .bid-adjustment-grids-container': {\r\n\r\n '& table.table--no-border>tbody>tr:hover': {\r\n background: palette.neutralLight,\r\n '& td': {\r\n border: `1px solid ${palette.white}`,\r\n },\r\n },\r\n\r\n '& .table-container': {\r\n width: 716,\r\n\r\n '& .header': {\r\n padding: '11px 7px 12px 7px',\r\n\r\n '& tr > th': {\r\n fontWeight: 'normal',\r\n height: '42px',\r\n wordBreak: 'break-all',\r\n },\r\n\r\n '& tr > th:first-child': {\r\n width: 140,\r\n },\r\n\r\n '& tr > th:nth-child(3)': {\r\n width: 249,\r\n },\r\n },\r\n\r\n '& tbody': {\r\n '& tr > td': {\r\n fontWeight: 'normal',\r\n height: '42px',\r\n wordBreak: 'break-all',\r\n },\r\n\r\n '& tr > .text-left:first-child': {\r\n '& .statusEnabled_icon, .statusExcluded_icon': {\r\n lineHeight: '19px',\r\n padding: '12px 9px 11px 7px',\r\n },\r\n },\r\n\r\n '& tr > .text-left:nth-child(2)': {\r\n padding: '0px 7px',\r\n lineHeight: '20px',\r\n '&.col-location': {\r\n wordBreak: 'break-word',\r\n },\r\n },\r\n\r\n '& tr > .text-left:nth-child(3), & tr > .text-left:nth-child(4)': {\r\n padding: '0px 7px',\r\n\r\n '& .form-inline': {\r\n '& .form-control': {\r\n marginRight: 8,\r\n width: 135,\r\n padding: '0 28px 0 8px',\r\n },\r\n\r\n '& .inline-input, & input[type=text]': {\r\n width: 66,\r\n padding: '0 8px',\r\n },\r\n\r\n '& .error': {\r\n margin: 0,\r\n },\r\n },\r\n },\r\n\r\n '& .company-item-template': {\r\n paddingTop: 2,\r\n\r\n '& .pull-left': {\r\n marginTop: 5,\r\n marginRight: 7,\r\n\r\n '& img': {\r\n width: 32,\r\n height: 32,\r\n overflow: 'hidden',\r\n display: 'block',\r\n },\r\n },\r\n\r\n '& .company-name': {\r\n width: 310,\r\n lineHeight: '20px',\r\n\r\n '& .company-item-name, .company-item-industry': {\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n paddingRight: 5,\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .footer': {\r\n '& .pagination-control': {\r\n '& .pager': {\r\n display: 'inline-block',\r\n marginLeft: 20,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","export const audienceAdsStyles = () => ({\r\n '& .crud-audience-ad': Object.assign(\r\n {},\r\n {\r\n marginLeft: 32,\r\n\r\n '& .control-label': {\r\n margin: 0,\r\n },\r\n '& .form-control-static': {\r\n paddingTop: 7,\r\n paddingBottom: 7,\r\n },\r\n\r\n '& .alert': {\r\n marginLeft: 0,\r\n },\r\n\r\n '& .mobile-url': {\r\n marginTop: 32,\r\n },\r\n\r\n '& .ad-edit-action-buttons': {\r\n marginTop: 20,\r\n\r\n '& .save-ad-button': {\r\n marginRight: 12,\r\n },\r\n },\r\n\r\n '& .HelpTopic': {\r\n verticalAlign: 'middle',\r\n },\r\n\r\n '& .audience-ads-policy-container': {\r\n '& .alert-info-inline': {\r\n '& >a': {\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n },\r\n\r\n '& .expand-url-options': {\r\n '& .spritedimagealign': {\r\n display: 'inline-block',\r\n },\r\n\r\n '& > span': {\r\n verticalAlign: 'unset',\r\n },\r\n },\r\n }\r\n ),\r\n\r\n '& .error-no-created-ad': {\r\n marginLeft: 32,\r\n },\r\n});\r\n","/* eslint-disable @typescript-eslint/no-unused-vars */\r\nexport const audienceAdgroupStyles = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }, { creationContainerMarginLeft = 32 } = {}) => ({\r\n\r\n '& .audience-adgroup-creation-wizard-container, & .audience-adgroup-settings-wizard-container': {\r\n '& .cashback-percent-container': {\r\n display: 'flex',\r\n '& select': {\r\n width: 180,\r\n marginRight: 10,\r\n },\r\n '& .cashback-inherit-container, & .cashback-input-container': {\r\n display: 'flex',\r\n '& .cashback-percent-input': {\r\n width: 90,\r\n },\r\n '& .input-group-addon': {\r\n width: 'auto',\r\n paddingTop: 8,\r\n },\r\n },\r\n },\r\n\r\n '& h1': {\r\n borderBottom: '1px solid rgb(237, 235, 233)',\r\n margin: 0,\r\n fontSize: 20,\r\n paddingTop: 20,\r\n paddingBottom: 20,\r\n paddingLeft: 16,\r\n },\r\n\r\n '& .adgroup-creation-step1-container': {\r\n marginLeft: creationContainerMarginLeft,\r\n\r\n '& .form-horizontal>.form-group:nth-child(1)>.control-label:nth-child(1)': {\r\n marginTop: 0,\r\n '&.crud-adgroup-schedule-label': {\r\n marginTop: 33,\r\n },\r\n },\r\n\r\n '& .name-input-control-container': {\r\n '& .Name-value': {\r\n width: 438,\r\n },\r\n },\r\n\r\n '& .remaining-chars-hint-container': {\r\n width: 438,\r\n\r\n '& .remaining-chars-hint': {\r\n margin: 0,\r\n },\r\n },\r\n\r\n '& .bidding-strategy-container': {\r\n '& select': {\r\n width: 438,\r\n },\r\n\r\n '& #BidStrategySetting_BidStrategy_Label': {\r\n padding: [5, 0],\r\n },\r\n\r\n '& .col-sm-6 > .form-control-static': {\r\n minHeight: 1,\r\n paddingBottom: 8,\r\n },\r\n },\r\n\r\n '& .default-bid-container': {\r\n width: 438,\r\n\r\n '& .input-group-addon': {\r\n background: palette.white,\r\n border: 0,\r\n color: palette.neutralPrimary,\r\n padding: '6px 6px 6px 12px',\r\n },\r\n },\r\n\r\n '& .audience-advanced-settings-section': {\r\n marginTop: 30,\r\n\r\n '& .audience-advanced-settings-header': {\r\n marginLeft: 0,\r\n padding: 0,\r\n fontSize: 18,\r\n '& .expanderImage, .expandedImage': {\r\n fontSize: 18,\r\n marginRight: 11,\r\n },\r\n },\r\n\r\n '& .audience-advanced-settings': {\r\n marginLeft: creationContainerMarginLeft,\r\n\r\n '& .ad-schedule': {\r\n marginLeft: 16,\r\n },\r\n },\r\n\r\n },\r\n },\r\n\r\n '& .audience-adgroup-creation-wizard-step2': {\r\n '& .crud-audience-target-selector': {\r\n paddingTop: 0,\r\n },\r\n },\r\n },\r\n\r\n '& .audience-adgroup-settings-wizard-container': {\r\n overflow: 'auto',\r\n },\r\n});\r\n","/* eslint-disable @typescript-eslint/no-unused-vars */\r\nexport const audienceCampaignBmcRedirectStyles = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '& .bmc_redirect_page': {\r\n padding: '20px 32px',\r\n width: '100%',\r\n },\r\n '& h1.bmc_redirect_header': {\r\n margin: 0,\r\n fontSize: 20,\r\n color: palette.neutralPrimary,\r\n },\r\n\r\n '& .bmc_save_bar': {\r\n borderTop: `1px solid ${palette.neutralLight}`,\r\n paddingTop: 16,\r\n\r\n '& .btn-save': {\r\n marginRight: 12,\r\n },\r\n },\r\n '& .bmc_url_link': {\r\n display: 'inline-block',\r\n margin: '25px 0 25px 5px',\r\n },\r\n});\r\n","export const raiseBidPopupStyles = () => ({\r\n\r\n '& .raise-bid-popup-content': {\r\n width: '355px',\r\n zIndex: 1,\r\n position: 'absolute',\r\n color: 'black',\r\n background: '#fff',\r\n padding: '16px 14px 16px 16px',\r\n border: 'solid 1px #dddddd',\r\n left: '22px',\r\n top: '50%',\r\n transform: 'translateY(-50%)',\r\n cursor: 'default',\r\n fontFamily: 'Segoe UI,Tahoma,Geneva,Verdana,sans-serif',\r\n boxShadow: '0 6.4px 14.4px 0 rgba(0,0,0,.132), 0 1.2px 3.6px 0 rgba(0,0,0,.108)',\r\n\r\n '& .close-button.closeimage': {\r\n float: 'right',\r\n position: 'relative',\r\n cursor: 'pointer',\r\n color: '#333333',\r\n verticalAlign: 'middle',\r\n },\r\n\r\n '& strong.title': {\r\n marginRight: '24px',\r\n fontSize: '20px',\r\n lineHeight: '1.5',\r\n display: 'block',\r\n },\r\n\r\n '& .subcontent': {\r\n marginRight: '24px',\r\n marginTop: '24px',\r\n lineHeight: 'normal',\r\n },\r\n\r\n '& label.choices': {\r\n marginRight: '24px',\r\n marginTop: '11px',\r\n marginBottom: '11px',\r\n fontWeight: 'normal',\r\n\r\n '& span.bid-suggestion': {\r\n position: 'relative',\r\n top: '-2px',\r\n },\r\n },\r\n\r\n '& .btn.btn-default.cancel': {\r\n marginLeft: '8px',\r\n },\r\n },\r\n});\r\n","const colors = {\r\n completedBorder: '#0078d4',\r\n completedIcon: '#0078d4',\r\n inProgressIcon: '#c0def6',\r\n incompleteBorder: '#ebebeb',\r\n incompleteIcon: '#edebe9',\r\n\r\n background: '#fff',\r\n stepContentBorder: '#e1dfdd',\r\n subtitle: '#605E5C',\r\n title: '#323130',\r\n};\r\n\r\nexport function smartShoppingStyles({ palette }) {\r\n return {\r\n '&>.page-content': {\r\n height: '100%',\r\n width: '100%',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'stretch',\r\n '& .bidding-strategy__container': {\r\n '& .custom-param__key-field': {\r\n display: 'inline-block',\r\n width: '85px',\r\n 'margin-left': '5px',\r\n 'margin-right': '5px',\r\n },\r\n '& #currencyLabelTargetCpa': {\r\n display: 'inline-block',\r\n 'vertical-align': 'initial',\r\n marginTop: 0,\r\n },\r\n '& #currencyLabelTargetRoas': {\r\n display: 'inline-block',\r\n 'vertical-align': 'initial',\r\n marginTop: 0,\r\n },\r\n '& a.helpbutton': {\r\n 'margin-left': '5px',\r\n },\r\n '& .alert': {\r\n marginTop: 6,\r\n marginLeft: 0,\r\n '& .alert-image': {\r\n height: 16,\r\n paddingTop: 0,\r\n },\r\n },\r\n '& .checkbox': {\r\n '& label': {\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n '& [type=checkbox]': {\r\n order: -1,\r\n display: 'block',\r\n marginRight: 8,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n '& .progress-list': {\r\n minWidth: 248,\r\n width: 248,\r\n borderRight: `1px solid ${colors.stepContentBorder}`,\r\n marginLeft: '38px',\r\n\r\n '& ol.step-progress-list': {\r\n margin: 0,\r\n padding: 0,\r\n listStyle: 'none',\r\n },\r\n\r\n '& ol.step-progress-list>.step-progress-list-item': {\r\n paddingTop: '24px',\r\n\r\n '&:first-child': {\r\n borderLeftColor: colors.background,\r\n },\r\n\r\n '&>.step-progress-list-item-glyphicon': {\r\n marginLeft: '-8px',\r\n marginRight: '8px',\r\n background: colors.background,\r\n paddingTop: '5px',\r\n paddingBottom: '4px',\r\n },\r\n },\r\n\r\n '& .step-progress-list-item': {\r\n borderLeft: `2px solid ${colors.completedBorder}`,\r\n '&.step-progress-list-item-ahead': { borderLeftColor: colors.incompleteBorder },\r\n },\r\n\r\n '& .step-progress-list-item-behind .step-progress-list-item-glyphicon': {\r\n color: colors.completedIcon,\r\n },\r\n\r\n '& .step-progress-list-item-selected .step-progress-list-item-glyphicon': {\r\n color: colors.inProgressIcon,\r\n },\r\n\r\n '& .step-progress-list-item-ahead .step-progress-list-item-glyphicon': {\r\n color: colors.incompleteIcon,\r\n },\r\n },\r\n '& .sub-form': {\r\n flex: 1,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n '&>.form-content': {\r\n flex: 1,\r\n },\r\n '&>.bottom-bar': {\r\n borderTop: `1px solid ${palette.neutralLight}`,\r\n padding: '0 32px',\r\n height: 64,\r\n display: 'flex',\r\n alignItems: 'center',\r\n '&>.ssc-form-next': {\r\n marginRight: 54,\r\n '&.first-step': {\r\n marginRight: 12,\r\n },\r\n },\r\n '&>.ssc-form-back': {\r\n marginRight: 12,\r\n },\r\n },\r\n '& .adschedule-targets-container': {\r\n borderTop: 'none',\r\n '& .form-group': {\r\n '& .col-sm-2, & .col-sm-10': {\r\n paddingLeft: 0,\r\n },\r\n },\r\n },\r\n },\r\n '& .smart-shopping-campaign-settings': {\r\n '& .header-section': {\r\n marginLeft: 32,\r\n '&>p': {\r\n color: palette.neutralSecondary,\r\n },\r\n },\r\n '& .ba-backbone-instance-wrapper>div': {\r\n paddingTop: 0,\r\n },\r\n '& .advanced-scheduling-grid': {\r\n '& .alert': {\r\n margin: 0,\r\n lineHeight: '16px',\r\n },\r\n },\r\n },\r\n '& .crud-audience-ad': {\r\n '&>a.HelpTopic, &>span': {\r\n display: 'inline-block',\r\n lineHeight: '21px',\r\n verticalAlign: 'middle',\r\n },\r\n '&>a.HelpTopic': {\r\n marginLeft: 5,\r\n },\r\n '& .audience-ads-policy-container .alert.alert-info': {\r\n lineHeight: '16px',\r\n marginTop: 0,\r\n marginLeft: 0,\r\n '& .alert-info-inline': {\r\n '& a': {\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n '& .alert-image': {\r\n marginTop: 2,\r\n },\r\n },\r\n '& .react-image-experience': {\r\n '& .advanced-url-options': {\r\n '& .col-sm-8 .row': {\r\n height: 35,\r\n },\r\n '& .upgraded-url-options-preview__value': {\r\n marginTop: 2,\r\n },\r\n '& .control-label': {\r\n marginTop: 0,\r\n },\r\n '& input.form-control.custom-param__key-field': {\r\n margin: '0 5px',\r\n },\r\n '& input.form-control.custom-param__value-field': {\r\n marginLeft: 5,\r\n },\r\n '& .tracking-template__container .charactersRemaining span': {\r\n wordBreak: 'break-all',\r\n },\r\n '& .row': {\r\n minHeight: 35,\r\n marginTop: 10,\r\n },\r\n '& .upgraded-url-options-preview__label': {\r\n 'white-space': 'nowrap',\r\n },\r\n },\r\n '& .impression-tracking-urls': {\r\n '& .form-group .row': {\r\n display: 'block',\r\n },\r\n },\r\n },\r\n },\r\n '& .location-manage': {\r\n '& .location-popup-editor .ba-backbone-instance-wrapper>div': {\r\n padding: 0,\r\n },\r\n },\r\n '& .feed-filter__container': {\r\n marginTop: 33,\r\n },\r\n };\r\n}\r\n","import { generateGuid, getTimestamp } from '@bingads-webui-universal/primitive-utilities';\r\nimport _ from 'underscore';\r\n\r\nexport function getDefaultUrl(serverContext) {\r\n const { CmAPI } = serverContext.ServicesEndpoints;\r\n return CmAPI;\r\n}\r\n\r\nconst getAjaxStubLogger = _.memoize((instrumentation) => {\r\n if (instrumentation && instrumentation.ajaxStubScenario) {\r\n const scenario = instrumentation.ajaxStubScenario.create();\r\n const activity = scenario.ajaxStubActivity.create();\r\n return activity;\r\n }\r\n\r\n return {\r\n ajax: _.noop,\r\n trace: _.noop,\r\n error: _.noop,\r\n };\r\n});\r\n\r\nconst getRequestPayloadLogger = _.memoize((instrumentation) => {\r\n const schema = {\r\n scenario: [\r\n {\r\n name: 'CampaignFetch',\r\n value: 'CampaignFetch',\r\n activity: [\r\n { name: 'RequestPayload', value: 'RequestPayload' },\r\n { name: 'Response', value: 'Response' },\r\n ],\r\n },\r\n ],\r\n };\r\n\r\n instrumentation.addScenario(schema);\r\n\r\n const scenario = instrumentation.CampaignFetch.create();\r\n const requestLogger = scenario.RequestPayload.create();\r\n const responseLogger = scenario.Response.create();\r\n\r\n return {\r\n requestLogger,\r\n responseLogger,\r\n };\r\n});\r\n\r\nexport function getDefaultOptions(serverContext, instrumentation) {\r\n const { Id: aid, AdvertiserCustomerID: cid } = serverContext.CurrentAccount;\r\n const { CmAPI } = serverContext.ServicesEndpoints;\r\n const isOnebox = CmAPI.indexOf('redmond.corp') > -1;\r\n const startTimes = {};\r\n const httpMethods = {};\r\n\r\n const ajaxStubLogger = getAjaxStubLogger(instrumentation);\r\n const { requestLogger } = getRequestPayloadLogger(instrumentation);\r\n\r\n function beforeFetch(options, url, route) {\r\n const httpMethod = options.method || 'GET';\r\n const requestId = options.headers['x-ms-requestid'];\r\n startTimes[requestId] = getTimestamp();\r\n httpMethods[requestId] = httpMethod;\r\n\r\n const path = `${url}/${route}`;\r\n requestLogger.trace({ body: options.body }, path, requestId, httpMethod);\r\n\r\n // Mimic AjaxEventHandler::beforeSendHandler\r\n ajaxStubLogger.ajax(\r\n requestId,\r\n path,\r\n true,\r\n httpMethod,\r\n 0,\r\n true,\r\n '',\r\n -1\r\n );\r\n }\r\n\r\n function afterFetch(fetchResponse) {\r\n const requestId = fetchResponse.headers.get('x-ms-requestid');\r\n const responseUrl = new URL(fetchResponse.url);\r\n\r\n const startTime = startTimes[requestId];\r\n const duration = startTime ? getTimestamp() - startTime : 0;\r\n delete startTimes[requestId];\r\n\r\n const httpMethod = httpMethods[requestId];\r\n delete httpMethods[requestId];\r\n\r\n // Mimic AjaxEventHandler::successHandler\r\n ajaxStubLogger.ajax(\r\n requestId,\r\n responseUrl && responseUrl.pathname,\r\n false,\r\n httpMethod,\r\n duration,\r\n fetchResponse.ok,\r\n '',\r\n -1\r\n );\r\n\r\n // Mimic AjaxEventHandler::errorHandler\r\n if (!fetchResponse.ok) {\r\n const error = _.compact([\r\n `Ajax error [${fetchResponse.status}]`,\r\n fetchResponse.statusText || 'error',\r\n fetchResponse.bodyText,\r\n ]).join(', ');\r\n\r\n ajaxStubLogger.error(error, responseUrl && responseUrl.pathname, requestId, '', httpMethod);\r\n }\r\n }\r\n\r\n const finalOptions = {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n lcid: serverContext.CurrentUser.Locale,\r\n 'x-ms-clientapplication': 'bingadsweb',\r\n 'x-ms-applicationname': 'bingadsweb',\r\n 'x-ms-pagetrackingid': serverContext.PageTrackingId,\r\n Authorization: `CCMTSmallToken ${serverContext.Token}`,\r\n CustomerAccountId: aid,\r\n CustomerId: cid,\r\n ...(isOnebox? { DeveloperToken: '1L9L5BYH550' }: {}),\r\n },\r\n cachePolicy: 'cache-first',\r\n };\r\n\r\n const defaultOptions = {\r\n ...finalOptions,\r\n interceptors: {\r\n request: ({ route, url, options }) => {\r\n const reqId = generateGuid();\r\n // eslint-disable-next-line no-param-reassign\r\n options.headers['x-ms-requestid'] = reqId;\r\n // eslint-disable-next-line no-param-reassign\r\n options.headers['Request-Id'] = reqId;\r\n // eslint-disable-next-line no-param-reassign\r\n options.headers['x-ms-trackingid'] = reqId;\r\n beforeFetch(options, url, route);\r\n return options;\r\n },\r\n response: ({ response }) => {\r\n afterFetch(response);\r\n return response;\r\n },\r\n },\r\n };\r\n\r\n return defaultOptions;\r\n}\r\n","/* eslint-disable import/prefer-default-export */\r\nimport React, { useContext } from 'react';\r\nimport { Provider } from 'use-http';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { InstrumentationContext } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { getDefaultOptions, getDefaultUrl } from './campaign-fetch-config';\r\n\r\nexport function CampaignFetchProvider({ url, options, children }) {\r\n const serverContext = useContext(ServerContext);\r\n let finalUrl = url || getDefaultUrl(serverContext);\r\n finalUrl = finalUrl.replace(/\\/+$/, '');\r\n\r\n const instrumentation = useContext(InstrumentationContext);\r\n const finalOptions = getDefaultOptions(serverContext, instrumentation);\r\n\r\n if (options && options.headers) {\r\n finalOptions.headers = { ...finalOptions.headers, ...options.headers };\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n","/* eslint-disable no-use-before-define */\r\nimport _ from 'underscore';\r\nimport { useMemo } from 'react';\r\nimport useFetch from 'use-http';\r\n\r\nclass FetchError extends Error {\r\n constructor(errors) {\r\n super('An CMAPI fetch error occurred');\r\n this.error = errors || [];\r\n }\r\n}\r\n\r\nconst useCampaignFetch = (...args) => {\r\n const {\r\n request,\r\n response,\r\n loading,\r\n data,\r\n error,\r\n } = useFetch(...args);\r\n\r\n const wrappedRequest = useMemo(() => {\r\n const del = getCallProxy(withCacheInvalidation(request.del, request.cache));\r\n return {\r\n ...request,\r\n get: getCallProxy(request.get),\r\n post: getCallProxy(withCacheInvalidation(request.post, request.cache)),\r\n put: getCallProxy(withCacheInvalidation(request.put, request.cache)),\r\n patch: getCallProxy(withCacheInvalidation(request.patch, request.cache)),\r\n del,\r\n delete: del,\r\n };\r\n }, [request]);\r\n\r\n // for details on the expected response shape, see https://github.com/ava/use-http/blob/master/src/useFetch.ts\r\n return Object.assign(\r\n [wrappedRequest, response, loading, error],\r\n {\r\n request: wrappedRequest,\r\n response,\r\n ...wrappedRequest,\r\n loading,\r\n data,\r\n error,\r\n }\r\n );\r\n};\r\n\r\nfunction withCacheInvalidation(call, cache) {\r\n return (...args) => call(...args).then((response) => {\r\n cache.clear();\r\n return response;\r\n });\r\n}\r\n\r\nfunction getCallProxy(call) {\r\n return (...args) => call(...args).then(getData);\r\n}\r\n\r\nfunction getData(response) {\r\n if (response == null) {\r\n return null;\r\n } else if (_.isArray(response.OperationErrors) && !_.isEmpty(response.OperationErrors)) {\r\n const errors = [];\r\n _.each(response.OperationErrors, (err) => {\r\n if (!_.isEmpty(err && err.Message)) {\r\n errors.push({\r\n Code: err.Code,\r\n Message: err.Message,\r\n Details: err.Details,\r\n });\r\n }\r\n });\r\n throw new FetchError(errors);\r\n } else {\r\n return response;\r\n }\r\n}\r\n\r\n\r\nexport default useCampaignFetch;\r\n","import React from 'react';\r\n\r\nconst DurationSelectorPlaceholder = () => (\r\n \r\n);\r\n\r\nexport default DurationSelectorPlaceholder;\r\n","import { font } from './vars';\r\n\r\nconst goalTypeContainer = {\r\n height: '24px',\r\n marginTop: '-12px',\r\n marginLeft: '-12px',\r\n gap: '10px',\r\n alignSelf: 'flex-start',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n width: '100%',\r\n};\r\n\r\nconst goalType = {\r\n textAlign: 'left',\r\n fontFamily: font,\r\n fontSize: '13px',\r\n fontWeight: '600',\r\n lineHeight: '17px',\r\n width: '72px',\r\n height: '17px',\r\n};\r\n\r\nconst goalTypeTitle = {\r\n padding: '2px 8px 2px 8px',\r\n borderRadius: '4px',\r\n height: '24px',\r\n};\r\n\r\nconst goalBadge = {\r\n color: '#ffffff',\r\n border: '1px solid #ffffff',\r\n padding: '0 9px',\r\n borderRadius: '12px',\r\n backgroundColor: '#0078d4',\r\n marginRight: '-28px',\r\n maxWidth: '120px',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n}\r\n\r\nexport const getStyles = () => {\r\n return {\r\n goalTypeContainer,\r\n goalType,\r\n goalTypeTitle,\r\n goalBadge,\r\n };\r\n};\r\n","const goalBadge = {\r\n color: '#ffffff',\r\n border: '1px solid #ffffff',\r\n padding: '0 9px',\r\n borderRadius: '12px',\r\n backgroundColor: '#0078d4',\r\n marginRight: '-28px',\r\n maxWidth: '120px',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n};\r\n\r\nexport const getStyles = () => {\r\n return {\r\n goalBadge,\r\n };\r\n};\r\n","import React, { useMemo } from 'react';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getStyles } from '../../styles/fac-badge';\r\n\r\nexport interface FACBadgeProps {\r\n permissions?: any;\r\n FACCouponInfo?: any;\r\n i18n?: any;\r\n showBadge?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport const FACBadge = (props: FACBadgeProps) => {\r\n const styles = useDefaultStyles(getStyles);\r\n const showBadge = useMemo(() => props.showBadge && (props?.permissions?.dynamic?.FACForShopping || false), [props.permissions, props.showBadge]);\r\n const facBadgeText = useMemo(() => (props.i18n && props.FACCouponInfo ? props.i18n.getString(_TL_('{{CouponValue}} off'), { CouponValue: props.FACCouponInfo.CouponValueWithCurrency }) : ''), [props.i18n, props.FACCouponInfo]);\r\n\r\n if (props.i18n && showBadge && props.FACCouponInfo) {\r\n return (\r\n \r\n {facBadgeText}\r\n \r\n );\r\n }\r\n return null;\r\n};\r\n","import React from 'react';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getStyles } from '../../styles/campaign-goal-title';\r\nimport { FACBadge } from './fac-badge';\r\n\r\n/**\r\n * CampaignGoalTitle component\r\n * @param goalTypeTitle - title of the goal type\r\n * @param goalTypeTitleColors - [backgroundColor, textColor]\r\n */\r\nexport interface CampaignGoalTitleProps {\r\n goalTypeTitle: string;\r\n goalTypeTitleColors: [string, string];\r\n hasFACBadge?: boolean;\r\n FACCouponInfo?: any;\r\n i18n?: any;\r\n permissions?: any;\r\n}\r\n\r\nexport const CampaignGoalTitle = (props: CampaignGoalTitleProps) => {\r\n const styles = useDefaultStyles(getStyles);\r\n\r\n return (\r\n
\r\n {props.goalTypeTitle}\r\n \r\n
\r\n );\r\n};\r\n","import { bgColor, cardColor, selectedCardBorderColor, font } from './vars';\r\n\r\nconst goalCardButton = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n width: '255.33px',\r\n height: '266.5px',\r\n};\r\nconst goalCardContainer = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n width: '255.33px',\r\n height: '266.5px',\r\n padding: '28px',\r\n border: '1px solid rgba(0, 0, 0, 0.0)',\r\n borderRadius: '4px',\r\n backgroundColor: cardColor,\r\n boxShadow: '0px 2px 4px 0px #0000001A',\r\n '&:hover': {\r\n cursor: 'pointer',\r\n backgroundColor: bgColor,\r\n },\r\n};\r\nconst goalCardContainerSelected = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n width: '255.33px',\r\n height: '266.5px',\r\n padding: '28px',\r\n border: `1px solid ${selectedCardBorderColor}`,\r\n borderRadius: '4px',\r\n backgroundColor: cardColor,\r\n boxShadow: '0px 2px 4px 0px #0000001A',\r\n '&:hover': {\r\n cursor: 'pointer',\r\n backgroundColor: bgColor,\r\n },\r\n};\r\nconst noGoalTypes = {\r\n height: '12px',\r\n};\r\nconst text = {\r\n fontFamily: font,\r\n letterSpacing: '0px',\r\n lineHeight: '24px',\r\n textAlign: 'center',\r\n color: '#000000',\r\n};\r\nconst title = {\r\n fontFamily: font,\r\n letterSpacing: '0px',\r\n lineHeight: '24px',\r\n textAlign: 'center',\r\n color: '#000000',\r\n fontSize: '18px',\r\n fontWeight: '600',\r\n width: 'max-content',\r\n height: '30px',\r\n display: 'flex',\r\n maxWidth: '120%',\r\n whiteSpace: 'nowrap',\r\n};\r\nconst titleName = {\r\n width: '100%',\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n};\r\nconst titleHelp = {\r\n flexShrink: '0',\r\n};\r\nconst titleWithTooltip = {\r\n fontFamily: font,\r\n letterSpacing: '0px',\r\n lineHeight: '24px',\r\n textAlign: 'center',\r\n color: '#000000',\r\n fontSize: '18px',\r\n fontWeight: '600',\r\n width: '45px',\r\n height: '30px',\r\n};\r\nconst description = {\r\n fontFamily: font,\r\n letterSpacing: '0px',\r\n lineHeight: '20px',\r\n textAlign: 'center',\r\n color: '#000000',\r\n fontSize: '14px',\r\n fontWeight: '400',\r\n overflow: 'visible',\r\n width: '220px',\r\n height: '40px',\r\n};\r\n\r\nexport const getStyles = () => {\r\n return {\r\n goalCardButton,\r\n goalCardContainer,\r\n goalCardContainerSelected,\r\n noGoalTypes,\r\n text,\r\n title,\r\n titleName,\r\n titleHelp,\r\n titleWithTooltip,\r\n description,\r\n };\r\n};\r\n\r\n","/* eslint-disable arrow-body-style */\r\nimport React, { ReactElement, useContext } from 'react';\r\nimport { ActionButton } from '@fluentui/react';\r\nimport { HelpPopupInline } from '@bingads-webui-react/help-popup';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { CampaignGoalTitle } from './campaign-goal-title';\r\nimport { getStyles } from '../../styles/campaign-goal-card';\r\n\r\n\r\nexport interface CampaignGoalCardStyles {\r\n cardTitle?: React.CSSProperties;\r\n cardDescription?: React.CSSProperties;\r\n}\r\n\r\nexport interface CampaignGoalCardProps {\r\n goalId: string;\r\n goalTypeTitle: string | undefined;\r\n goalTypeTitleColors: [string, string] | undefined;\r\n title: string;\r\n tooltipId?: string;\r\n description: string;\r\n icon: ReactElement;\r\n styles?: CampaignGoalCardStyles;\r\n onClick: (goalSelected: string) => void;\r\n selected: boolean;\r\n hasFACBadge?: boolean;\r\n FACCouponInfo?: any;\r\n permissions?: any;\r\n}\r\n\r\n\r\nexport const CampaignGoalCard = (props: CampaignGoalCardProps) => {\r\n\r\n const i18n: any = useContext(I18nContext);\r\n const styles = useDefaultStyles(getStyles);\r\n\r\n const handleKeyDown = (event) => {\r\n if (((event.keyCode === 13) || (event.keyCode === 32))) props?.onClick(props.goalId);\r\n };\r\n\r\n const renderGoalTypeTitle = () => {\r\n if (typeof props.goalTypeTitle === 'undefined' || typeof props.goalTypeTitleColors === 'undefined') return
;\r\n return (\r\n \r\n );\r\n };\r\n\r\n return (\r\n props?.onClick(props.goalId)} onKeyDown={handleKeyDown} className={styles.goalCardButton}>\r\n
\r\n {renderGoalTypeTitle()}\r\n {props.icon}\r\n \r\n {i18n.getString(props.title)}\r\n {props.tooltipId && }\r\n \r\n {i18n.getString(props.description)}\r\n
\r\n
\r\n );\r\n};\r\n","import React, { useContext } from 'react';\r\nimport { IStackTokens, Stack, StackItem, Image } from '@fluentui/react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { CampaignGoal, CampaignGoalType, TitleColors, CampaignGoalTitle, CampaignGoalDescriptionText, CampaignGoalTitleBoostCampaign, CampaignGoalDescriptionTextBoostCampaign, CampaignGoalTypeBoost } from '../config/constants';\r\nimport { brandIcon, considerationIcon, convertCustomersIcon, promoteAppIcon, sellProductsIcon, skipGoalsIcon } from '../helpers/icons';\r\nimport { CampaignGoalCard, CampaignGoalCardProps } from '../components/goal-card/campaign-goal-card';\r\nimport { getStyles } from '../styles/index';\r\n\r\nconst stackTokens: IStackTokens = { childrenGap: 15, padding: 10 };\r\n\r\n// Ordered config for goal cards\r\nconst getGoalCardConfig = (): Omit[] => [\r\n {\r\n goalId: CampaignGoal.ConvertCustomers,\r\n goalTypeTitle: CampaignGoalType.Conversions,\r\n goalTypeTitleColors: [TitleColors.GreenBG, TitleColors.GreenText],\r\n title: CampaignGoalTitle[CampaignGoal.ConvertCustomers],\r\n tooltipId: 'pop_BA_Onboarding_DriveConv',\r\n description: CampaignGoalDescriptionText[CampaignGoal.ConvertCustomers],\r\n icon: {`${CampaignGoal.ConvertCustomers},\r\n },\r\n {\r\n goalId: CampaignGoal.Consideration,\r\n goalTypeTitle: CampaignGoalType.Leads,\r\n goalTypeTitleColors: [TitleColors.YellowBG, TitleColors.YellowText],\r\n title: CampaignGoalTitle[CampaignGoal.Consideration],\r\n tooltipId: 'pop_BA_Onboarding_Leads',\r\n description: CampaignGoalDescriptionText[CampaignGoal.Consideration],\r\n icon: {`${CampaignGoal.Consideration},\r\n },\r\n {\r\n goalId: CampaignGoal.BrandAwareness,\r\n goalTypeTitle: CampaignGoalType.Awareness,\r\n goalTypeTitleColors: [TitleColors.BlueBG, TitleColors.BlueText],\r\n title: CampaignGoalTitle[CampaignGoal.BrandAwareness],\r\n tooltipId: 'pop_BA_Onboarding_Awareness',\r\n description: CampaignGoalDescriptionText[CampaignGoal.BrandAwareness],\r\n icon: {`${CampaignGoal.BrandAwareness},\r\n },\r\n {\r\n goalId: CampaignGoal.SellProducts,\r\n goalTypeTitle: CampaignGoalType.Conversions,\r\n goalTypeTitleColors: [TitleColors.GreenBG, TitleColors.GreenText],\r\n title: CampaignGoalTitle[CampaignGoal.SellProducts],\r\n tooltipId: 'pop_BA_Onboarding_SellProducts',\r\n description: CampaignGoalDescriptionText[CampaignGoal.SellProducts],\r\n icon: {`${CampaignGoal.SellProducts},\r\n hasFACBadge: true,\r\n },\r\n {\r\n goalId: CampaignGoal.PromoteApp,\r\n goalTypeTitle: CampaignGoalType.Conversions,\r\n goalTypeTitleColors: [TitleColors.GreenBG, TitleColors.GreenText],\r\n title: CampaignGoalTitle[CampaignGoal.PromoteApp],\r\n tooltipId: 'pop_BA_Onboarding_AppsGames',\r\n description: CampaignGoalDescriptionText[CampaignGoal.PromoteApp],\r\n icon: {`${CampaignGoal.PromoteApp},\r\n },\r\n {\r\n goalId: CampaignGoal.UnifiedPromoteApp,\r\n goalTypeTitle: CampaignGoalType.Conversions,\r\n goalTypeTitleColors: [TitleColors.GreenBG, TitleColors.GreenText],\r\n title: CampaignGoalTitle[CampaignGoal.UnifiedPromoteApp],\r\n tooltipId: 'pop_BA_Onboarding_AppsGames',\r\n description: CampaignGoalDescriptionText[CampaignGoal.UnifiedPromoteApp],\r\n icon: {`${CampaignGoal.UnifiedPromoteApp},\r\n },\r\n {\r\n goalId: CampaignGoal.SkipGoals,\r\n goalTypeTitle: undefined,\r\n goalTypeTitleColors: undefined,\r\n title: CampaignGoalTitle[CampaignGoal.SkipGoals],\r\n description: CampaignGoalDescriptionText[CampaignGoal.SkipGoals],\r\n icon: {`${CampaignGoal.SkipGoals},\r\n },\r\n];\r\n\r\nconst getBoostCampaignGoalCardConfig = (): Omit[] => [\r\n {\r\n goalId: CampaignGoal.ConvertCustomers,\r\n goalTypeTitle: CampaignGoalTypeBoost.Conversions,\r\n goalTypeTitleColors: [TitleColors.GreenBG, TitleColors.GreenText],\r\n title: CampaignGoalTitleBoostCampaign[CampaignGoal.ConvertCustomers],\r\n tooltipId: 'pop_BA_Onboarding_DriveConv',\r\n description: CampaignGoalDescriptionTextBoostCampaign[CampaignGoal.ConvertCustomers],\r\n icon: {`${CampaignGoal.ConvertCustomers},\r\n },\r\n {\r\n goalId: CampaignGoal.Consideration,\r\n goalTypeTitle: CampaignGoalTypeBoost.Engagement,\r\n goalTypeTitleColors: [TitleColors.YellowBG, TitleColors.YellowText],\r\n title: CampaignGoalTitleBoostCampaign[CampaignGoal.Consideration],\r\n tooltipId: 'pop_BA_Onboarding_Leads',\r\n description: CampaignGoalDescriptionTextBoostCampaign[CampaignGoal.Consideration],\r\n icon: {`${CampaignGoal.Consideration},\r\n },\r\n {\r\n goalId: CampaignGoal.BrandAwareness,\r\n goalTypeTitle: CampaignGoalTypeBoost.Awareness,\r\n goalTypeTitleColors: [TitleColors.BlueBG, TitleColors.BlueText],\r\n title: CampaignGoalTitleBoostCampaign[CampaignGoal.BrandAwareness],\r\n tooltipId: 'pop_BA_Onboarding_Awareness',\r\n description: CampaignGoalDescriptionTextBoostCampaign[CampaignGoal.BrandAwareness],\r\n icon: {`${CampaignGoal.BrandAwareness},\r\n },\r\n];\r\n\r\ninterface CampaignGoalSelectionProps {\r\n handleGoalCardClick: (goalSelected: string) => void;\r\n selectedCampaignGoal: string;\r\n disabledGoals: CampaignGoal[];\r\n permissions: any;\r\n FACCouponInfo: any;\r\n}\r\n\r\nexport const CampaignGoalSelection = (props: CampaignGoalSelectionProps) => {\r\n const {\r\n handleGoalCardClick, selectedCampaignGoal, permissions, FACCouponInfo,\r\n } = props;\r\n\r\n const i18n: any = useContext(I18nContext);\r\n const isBoostCampaignWithCampaignGoal = permissions?.IsAmplifyEnabled && permissions?.IsBoostPassCampaignGoalEnabled;\r\n const goalCardConfig = isBoostCampaignWithCampaignGoal ? getBoostCampaignGoalCardConfig() : getGoalCardConfig();\r\n\r\n const styles = useDefaultStyles(getStyles);\r\n\r\n return (\r\n \r\n \r\n
\r\n {i18n.getString(_TL_('What\\'s the goal of this campaign?'))}\r\n {i18n.getString(_TL_('Choose the goal that best suits the campaign you want to create.'))}\r\n
\r\n
\r\n \r\n {goalCardConfig.filter(c =>\r\n !props.disabledGoals.includes(c.goalId as CampaignGoal))\r\n .map(card => )}\r\n \r\n
\r\n );\r\n};\r\n","import { font, selectedCardBorderColor } from './vars';\r\n\r\nconst CampaignTypeCardBorderColor = '#E1DFDD';\r\n\r\nconst cardWrapper = {\r\n width: '544px',\r\n // height: 100px;\r\n padding: '12px',\r\n borderRadius: '4px',\r\n gap: '16px',\r\n border: `1px solid ${CampaignTypeCardBorderColor}`,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n '&:hover': {\r\n cursor: 'pointer',\r\n },\r\n '& input[type=radio]': {\r\n width: '100%',\r\n height: '100%',\r\n },\r\n};\r\n\r\n\r\nconst cardWrapperSelected = {\r\n ...cardWrapper,\r\n border: `1px solid ${selectedCardBorderColor}`,\r\n pointerEvents: 'none',\r\n zIndex: 0,\r\n};\r\n\r\nconst helpIcon = {\r\n pointerEvents: 'auto',\r\n zIndex: 1,\r\n};\r\n\r\nconst radioButtonWrapper = {\r\n alignSelf: 'flex-end',\r\n margin: '-5px -5px -10px 0',\r\n};\r\n\r\nconst selectedRadioButton = {\r\n marginRight: '19px',\r\n marginBottom: '-21px',\r\n};\r\n\r\nconst choiceFieldWrapper = {\r\n minWidth: '100%',\r\n height: '100%',\r\n};\r\n\r\nconst iconAndTextRow = {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n gap: '10px',\r\n};\r\n\r\nconst iconAndTextRowIcon = {\r\n width: '52px',\r\n height: '52px',\r\n};\r\n\r\nconst iconAndTextRowTextWrapper = {\r\n fontFamily: font,\r\n letterSpacing: '0px',\r\n textAlign: 'left',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n width: '430px',\r\n};\r\n\r\nconst iconAndTextRowTextWrapperTitleText = {\r\n display: 'flex',\r\n fontSize: '18px',\r\n fontWeight: '600',\r\n lineHeight: '24px',\r\n};\r\n\r\nconst iconAndTextRowTextWrapperDescriptionText = {\r\n fontSize: '14px',\r\n fontWeight: '400',\r\n lineHeight: '20px',\r\n};\r\n\r\nconst expandedContent = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '8px',\r\n};\r\n\r\nconst expandedContentOptionsHeader = {\r\n fontFamily: font,\r\n fontSize: '14px',\r\n fontWeight: '600',\r\n lineHeight: '19px',\r\n letterSpacing: '0px',\r\n textAlign: 'left',\r\n color: '#000000',\r\n marginLeft: '3px',\r\n};\r\n\r\nconst adTypesWrapper = {\r\n width: '496px',\r\n gap: '8px',\r\n display: 'grid',\r\n gridAutoColumns: 'minmax(0, 1fr)',\r\n gridAutoFlow: 'column',\r\n zIndex: 100,\r\n pointerEvents: 'auto',\r\n input: {\r\n type: 'radio',\r\n width: '100%',\r\n height: '100%',\r\n },\r\n};\r\n\r\nconst adTypeWrapper = {\r\n height: '100%',\r\n padding: '10px 5px 10px 10px',\r\n borderRadius: '4px',\r\n border: `1px solid ${CampaignTypeCardBorderColor}`,\r\n gap: '8px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n '&:hover': {\r\n cursor: 'pointer',\r\n },\r\n};\r\n\r\nconst adTypeWrapperSelectedRadioButton = {\r\n marginRight: '8px',\r\n marginTop: '-15px',\r\n marginBottom: '-6px',\r\n};\r\n\r\nconst adTypeWrapperTextWrapper = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n fontFamily: font,\r\n letterSpacing: '0px',\r\n gap: '4px',\r\n textAlign: 'left',\r\n color: '#323130',\r\n};\r\n\r\nconst adTypeWrapperTextWrapperTitleText = {\r\n fontSize: '16px',\r\n fontWeight: '600',\r\n lineHeight: '21px',\r\n};\r\n\r\nconst adTypeWrapperTextWrapperDescriptionText = {\r\n fontSize: '14px',\r\n fontWeight: '400',\r\n lineHeight: '19px',\r\n};\r\n\r\nconst adTypeWrapperLearnMoreLink = {\r\n position: 'relative',\r\n zIndex: 999,\r\n};\r\n\r\nconst adTypeWrapperSelected = {\r\n ...adTypeWrapper,\r\n background: '#EFF6FC',\r\n};\r\n\r\nconst facBadge = {\r\n fontWeight: '100',\r\n fontSize: '12px',\r\n position: 'absolute',\r\n right: '40px',\r\n};\r\n\r\nconst subSectionFacBadge = {\r\n fontSize: '12px',\r\n marginLeft: '10px',\r\n fontWeight: '100',\r\n};\r\n\r\nexport const getStyles = () => {\r\n return {\r\n cardWrapper,\r\n '.cardwrapper input': {\r\n width: '100%',\r\n height: '100%',\r\n },\r\n cardWrapperSelected,\r\n helpIcon,\r\n radioButtonWrapper,\r\n selectedRadioButton,\r\n choiceFieldWrapper,\r\n iconAndTextRow,\r\n iconAndTextRowIcon,\r\n iconAndTextRowTextWrapper,\r\n iconAndTextRowTextWrapperTitleText,\r\n iconAndTextRowTextWrapperDescriptionText,\r\n expandedContent,\r\n expandedContentOptionsHeader,\r\n adTypesWrapper,\r\n adTypeWrapper,\r\n adTypeWrapperSelectedRadioButton,\r\n adTypeWrapperTextWrapper,\r\n adTypeWrapperTextWrapperTitleText,\r\n adTypeWrapperTextWrapperDescriptionText,\r\n adTypeWrapperLearnMoreLink,\r\n adTypeWrapperSelected,\r\n facBadge,\r\n subSectionFacBadge,\r\n };\r\n};\r\n","/* eslint-disable react/no-unused-prop-types */\r\nimport React, { useContext } from 'react';\r\nimport { HelpPopupInline } from '@bingads-webui-react/help-popup';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getStyles } from '../styles/campaign-type-card-with-goal';\r\nimport { FACBadge } from './goal-card/fac-badge';\r\n\r\nexport interface SelectionCardWithGoalProps {\r\n title: string;\r\n tooltipId: string | undefined;\r\n id: string;\r\n titleOverride?: string;\r\n descriptionShort: string;\r\n descriptionExtended?: string;\r\n optionsHeader?: string;\r\n icon: any;\r\n radioRender: ((p?: any) => (any)) | undefined | any;\r\n selected: boolean;\r\n optionsComponent?: any;\r\n hasFACBadge?: boolean;\r\n FACCouponInfo?: any;\r\n permissions?: any;\r\n}\r\n\r\nexport const SelectionCardWithGoal = (props: SelectionCardWithGoalProps) => {\r\n\r\n // const { onClick, campaignTypeId, objectiveID, selected } = props;\r\n const i18n: any = useContext(I18nContext);\r\n const description = i18n.getString(props.descriptionShort);\r\n const descriptionExtended = i18n.getString(props.descriptionExtended);\r\n const styles = useDefaultStyles(getStyles);\r\n\r\n return (\r\n
\r\n
\r\n {props.selected &&
{props.radioRender!()}
}\r\n
\r\n
\r\n
{props.icon}
\r\n
\r\n \r\n {i18n.getString(props.titleOverride || props.title)}\r\n {props.tooltipId &&\r\n
\r\n \r\n
}\r\n \r\n
\r\n {props.selected ? descriptionExtended : description}\r\n
\r\n
\r\n
\r\n {props.selected && props.optionsHeader && {i18n.getString(props.optionsHeader)}}\r\n
\r\n {props.selected && props?.optionsComponent}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n","import React, { useContext, useEffect, useState } from 'react';\r\nimport { ChoiceGroup, IChoiceGroupOption } from '@fluentui/react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { HelpPopupInline } from '@bingads-webui-react/help-popup';\r\nimport { LearnMoreLink } from '@bingads-webui-campaign-react/help';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { AdTypes } from '../../config/constants';\r\nimport { getStyles } from '../../styles/campaign-type-card-with-goal';\r\nimport { FACBadge } from '../goal-card/fac-badge';\r\n\r\nexport interface AdTypeOption {\r\n id: AdTypes;\r\n title: string;\r\n tooltipId?: string;\r\n learnMoreId?: string;\r\n description: string;\r\n hasFACBadge?: boolean;\r\n}\r\n\r\nexport interface CampaignAdTypeOptionsProps {\r\n adTypeOptions: AdTypeOption[];\r\n onAdTypeSelect: (adType: AdTypes) => void;\r\n defaultAdType?: AdTypes;\r\n permissions?: any;\r\n FACCouponInfo?: any;\r\n}\r\n\r\n\r\nconst getRadioGroupStyle = optionsCount => () => {\r\n const styles = getStyles().adTypesWrapper;\r\n if (optionsCount > 3) {\r\n styles['grid-template-columns'] = 'repeat(2, minmax(0, 1fr))';\r\n styles['grid-auto-flow'] = 'unset';\r\n }\r\n return {\r\n flexContainer: [\r\n styles,\r\n ],\r\n };\r\n};\r\n\r\nconst getChoiceOptionStyle = () => {\r\n return {\r\n choiceFieldWrapper: [\r\n getStyles().choiceFieldWrapper,\r\n ],\r\n };\r\n};\r\n\r\nexport const CampaignAdTypeOptionsRadio = (props: CampaignAdTypeOptionsProps) => {\r\n\r\n const { adTypeOptions, onAdTypeSelect, defaultAdType } = props;\r\n const styles = useDefaultStyles(getStyles);\r\n\r\n const [selectedAdType, setSelectedAdType] = useState(defaultAdType ?? adTypeOptions[0]?.id);\r\n\r\n // make sure the parent gets the default ad type when this component mounts\r\n useEffect(() => {\r\n if (defaultAdType) {\r\n onAdTypeSelect(defaultAdType);\r\n }\r\n }, []);\r\n\r\n const handleAdTypeChange = (e, option) => {\r\n const selected = option?.key as AdTypes ?? (defaultAdType ?? adTypeOptions[0]?.id);\r\n setSelectedAdType(selected);\r\n onAdTypeSelect(selected);\r\n };\r\n\r\n const i18n: any = useContext(I18nContext);\r\n\r\n if (adTypeOptions.length === 0) return null;\r\n return (\r\n {\r\n return {\r\n className: `${option.id}Card`,\r\n key: option.id,\r\n text: '',\r\n styles: getChoiceOptionStyle,\r\n onRenderLabel: () => null,\r\n onRenderField: (optionProps) => {\r\n const selected = optionProps != null && optionProps.checked;\r\n return (\r\n
\r\n {/*
\r\n {selected &&
{defaultRender!()}
}\r\n
*/}\r\n
\r\n \r\n {i18n.getString(option.title)}\r\n {option.tooltipId && }\r\n \r\n \r\n \r\n {i18n.getString(option.description)}\r\n {option.learnMoreId &&
}\r\n
\r\n
\r\n
\r\n );\r\n },\r\n };\r\n })}\r\n />\r\n );\r\n};\r\n","import { CampaignGoal, CampaignType, AdTypes, ObjectiveIDs, CampaignOptionTypes, CampaignTypeTitle, CampaignTypeTooltipIds, AdTypesSelectionHeaderText, CampaignAdTypes, ICampaignGoalsToCampaignTypesMap } from '../../config/constants';\r\nimport { AppInstallSearchPreview, CTVPreview, DisplayPlusNativePreview, DisplayPlusDisplayPreview, DisplayPlusVideoPreview, HotelPreview, LinkedInPreview, PmaxPreview, SearchPreview, ShoppingPreview, WindowsStorePreview } from '../../helpers/images';\r\nimport { smartShoppingIcon, standardShoppingIcon, connectedTVIconAdv, displayPlusIconAdv, hotelIconAdv, pmaxIconAdv, searchIconAdv, shoppingForBrandsIconAdv, windowsStoreIconAdv, linkedInIconAdv } from '../../helpers/icons';\r\n\r\nexport interface ICampaignGoalToCampaignType {\r\n title: string,\r\n tooltipId: string | undefined,\r\n defaultObjectiveID: string,\r\n ObjectiveIDsForAdTypes?: { [adTypeId: string]: string },\r\n optionsType: CampaignOptionTypes,\r\n optionsHeader?: string,\r\n options?: { id: AdTypes, title: string, description: string, learnMoreId?: string, tooltipId?: string, }[],\r\n enableOptions?: Function,\r\n titleOverride?: string,\r\n descriptionOverride?: string,\r\n descriptionExtendedOverride?: string,\r\n defaultAdType?: AdTypes,\r\n hasFACBadge?: boolean,\r\n}\r\n\r\nexport interface ICampaignGoalToAdType {\r\n [adType: string]: ICampaignGoalToCampaignType\r\n}\r\n\r\nexport interface ICampaignGoalConfig {\r\n [campaignType: string]: ICampaignGoalToCampaignType\r\n}\r\n\r\nexport interface ICampaignGoalToCampaignTypeMap {\r\n [goal: string]: ICampaignGoalConfig\r\n}\r\n\r\nconst enableDisplayPlusOptions = (config: ICampaignGoalToCampaignType, permissions: any) => {\r\n const dynamicPermissions = permissions && permissions.dynamic;\r\n const isEnableMultiAdFormat = dynamicPermissions && dynamicPermissions.MultiAdFormat;\r\n const isFBImportForAudienceCampaignCreationEnabled = dynamicPermissions.FBImportForAudienceCampaignCreation;\r\n\r\n const displayPlus = { ...config };\r\n if (isEnableMultiAdFormat === true) {\r\n displayPlus.optionsType = CampaignOptionTypes.None;\r\n displayPlus.defaultAdType = AdTypes.Native;\r\n displayPlus.options = undefined;\r\n displayPlus.optionsHeader = undefined;\r\n }\r\n\r\n if (isFBImportForAudienceCampaignCreationEnabled) {\r\n if (displayPlus.options) {\r\n displayPlus.options = [...displayPlus.options, CampaignAdTypes[CampaignType.DisplayPlus].MetaImport];\r\n } else {\r\n displayPlus.options = [\r\n CampaignAdTypes[CampaignType.DisplayPlus].AudienceDefault,\r\n CampaignAdTypes[CampaignType.DisplayPlus].MetaImport,\r\n ];\r\n }\r\n }\r\n\r\n return displayPlus;\r\n};\r\n\r\nconst enableDisplayAndVideoOptions = (config: ICampaignGoalToCampaignType, permissions: any) => {\r\n const dynamicPermissions = permissions && permissions.dynamic;\r\n const isEnabledForXandrVideoCampaign = dynamicPermissions && dynamicPermissions.XandrVideoCampaigns;\r\n const isEnabledForXandrDisplayCampaign = dynamicPermissions && dynamicPermissions.XandrDisplayAdsCampaigns;\r\n\r\n const isEnableMSANDisplayCampaigns = dynamicPermissions && dynamicPermissions.EnableMSANDisplayCampaigns;\r\n const isEnableMSANVideoCampaigns = dynamicPermissions && dynamicPermissions.EnableMSANVideoCampaigns;\r\n\r\n const isEnabledForDisplayCampaign = isEnableMSANDisplayCampaigns && isEnabledForXandrDisplayCampaign;\r\n const isEnabledForVideoCampaign = isEnableMSANVideoCampaigns && isEnabledForXandrVideoCampaign;\r\n\r\n const isFBImportForAudienceCampaignCreationEnabled = dynamicPermissions.FBImportForAudienceCampaignCreation;\r\n\r\n // We show the options only when Video/Display are enabled and enabled for MSAN\r\n\r\n if (isEnabledForDisplayCampaign === true || isEnabledForVideoCampaign === true || isFBImportForAudienceCampaignCreationEnabled === true) {\r\n const displayPlus = { ...config };\r\n displayPlus.optionsType = CampaignOptionTypes.Radio;\r\n displayPlus.options = [];\r\n if (isEnabledForDisplayCampaign === true) {\r\n displayPlus.options.push(CampaignAdTypes[CampaignType.DisplayPlus].Display);\r\n }\r\n displayPlus.options.push(CampaignAdTypes[CampaignType.DisplayPlus].Native);\r\n if (isEnabledForVideoCampaign === true) {\r\n displayPlus.options.push(CampaignAdTypes[CampaignType.DisplayPlus].Video);\r\n }\r\n return enableDisplayPlusOptions(displayPlus, permissions);\r\n }\r\n return config;\r\n};\r\n\r\n// Mapping of campaign goals to all possible campaign types and ad types\r\nexport const CampaignGoalToCampaignTypeMap: ICampaignGoalToCampaignTypeMap = {\r\n [CampaignGoal.ConvertCustomers]: {\r\n [CampaignType.PerformanceMax]: {\r\n title: CampaignTypeTitle[CampaignType.PerformanceMax],\r\n tooltipId: CampaignTypeTooltipIds[CampaignType.PerformanceMax],\r\n defaultObjectiveID: ObjectiveIDs.WebsiteConversions,\r\n optionsType: CampaignOptionTypes.None,\r\n },\r\n // will always be native ad types here\r\n [CampaignType.DisplayPlus]: {\r\n title: CampaignTypeTitle[CampaignType.DisplayPlus],\r\n tooltipId: CampaignTypeTooltipIds[CampaignType.DisplayPlus],\r\n defaultObjectiveID: ObjectiveIDs.Conversions,\r\n optionsType: CampaignOptionTypes.None,\r\n enableOptions: enableDisplayAndVideoOptions,\r\n defaultAdType: AdTypes.Native,\r\n },\r\n [CampaignType.Search]: {\r\n title: CampaignTypeTitle[CampaignType.Search],\r\n tooltipId: CampaignTypeTooltipIds[CampaignType.Search],\r\n defaultObjectiveID: ObjectiveIDs.WebsiteConversions,\r\n optionsType: CampaignOptionTypes.Radio,\r\n optionsHeader: AdTypesSelectionHeaderText.AdTypeGeneric,\r\n options: [\r\n CampaignAdTypes[CampaignType.Search].Multimedia,\r\n CampaignAdTypes[CampaignType.Search].AppInstalls,\r\n ],\r\n defaultAdType: AdTypes.Multimedia,\r\n },\r\n [CampaignType.Hotel]: {\r\n defaultObjectiveID: ObjectiveIDs.HotelBooking,\r\n tooltipId: CampaignTypeTooltipIds[CampaignType.Hotel],\r\n title: CampaignTypeTitle[CampaignType.Hotel],\r\n optionsType: CampaignOptionTypes.None,\r\n },\r\n [CampaignType.Lodging]: {\r\n defaultObjectiveID: ObjectiveIDs.HotelBooking,\r\n tooltipId: CampaignTypeTooltipIds[CampaignType.Lodging],\r\n title: CampaignTypeTitle[CampaignType.Lodging],\r\n optionsType: CampaignOptionTypes.None,\r\n },\r\n },\r\n [CampaignGoal.SellProducts]: {\r\n [CampaignType.PerformanceMax]: {\r\n title: CampaignTypeTitle[CampaignType.PerformanceMax],\r\n tooltipId: CampaignTypeTooltipIds[CampaignType.PerformanceMax],\r\n defaultObjectiveID: ObjectiveIDs.ShoppingCampaign,\r\n optionsType: CampaignOptionTypes.None,\r\n },\r\n [CampaignType.StandardShopping]: {\r\n title: CampaignTypeTitle[CampaignType.StandardShopping],\r\n tooltipId: CampaignTypeTooltipIds[CampaignType.StandardShopping],\r\n defaultObjectiveID: ObjectiveIDs.ShoppingCampaign,\r\n optionsType: CampaignOptionTypes.Radio,\r\n optionsHeader: AdTypesSelectionHeaderText.Shopping,\r\n options: [\r\n CampaignAdTypes[CampaignType.StandardShopping].ShoppingAudience,\r\n CampaignAdTypes[CampaignType.StandardShopping].Search,\r\n ],\r\n defaultAdType: AdTypes.ShoppingAudience,\r\n hasFACBadge: true,\r\n },\r\n [CampaignType.SmartShopping]: {\r\n title: CampaignTypeTitle[CampaignType.SmartShopping],\r\n tooltipId: CampaignTypeTooltipIds[CampaignType.SmartShopping],\r\n defaultObjectiveID: ObjectiveIDs.ShoppingCampaign,\r\n optionsType: CampaignOptionTypes.None,\r\n hasFACBadge: true,\r\n },\r\n [CampaignType.ShoppingForBrands]: {\r\n title: CampaignTypeTitle[CampaignType.ShoppingForBrands],\r\n tooltipId: CampaignTypeTooltipIds[CampaignType.ShoppingForBrands],\r\n defaultObjectiveID: ObjectiveIDs.SponsoredShoppingCampaign,\r\n optionsType: CampaignOptionTypes.Radio,\r\n options: [\r\n CampaignAdTypes[CampaignType.ShoppingForBrands].MRN,\r\n CampaignAdTypes[CampaignType.ShoppingForBrands].SPB,\r\n ],\r\n defaultAdType: AdTypes.MRN,\r\n },\r\n },\r\n [CampaignGoal.PromoteApp]: {\r\n [CampaignType.WindowsStore]: {\r\n title: CampaignTypeTitle[CampaignType.WindowsStore],\r\n tooltipId: CampaignTypeTooltipIds[CampaignType.WindowsStore],\r\n defaultObjectiveID: ObjectiveIDs.MSStoreAds,\r\n optionsType: CampaignOptionTypes.None,\r\n },\r\n // Will always be App Installs ad type\r\n [CampaignType.Search]: {\r\n title: CampaignTypeTitle[CampaignType.Search],\r\n tooltipId: undefined,\r\n defaultObjectiveID: ObjectiveIDs.AppInstalls,\r\n optionsType: CampaignOptionTypes.None,\r\n titleOverride: _TL_('App Installs ads'),\r\n descriptionOverride: _TL_('Show ads for your mobile apps on search results pages in response to queries.'),\r\n descriptionExtendedOverride: _TL_('Show ads for your mobile apps on search results pages in response to queries.'),\r\n defaultAdType: AdTypes.AppInstalls,\r\n },\r\n },\r\n [CampaignGoal.Consideration]: {\r\n // TODO will always be native ad types here for the MVP\r\n [CampaignType.DisplayPlus]: {\r\n title: CampaignTypeTitle[CampaignType.DisplayPlus],\r\n tooltipId: CampaignTypeTooltipIds[CampaignType.DisplayPlus],\r\n defaultObjectiveID: ObjectiveIDs.Consideration,\r\n optionsType: CampaignOptionTypes.None,\r\n defaultAdType: AdTypes.Native,\r\n enableOptions: enableDisplayAndVideoOptions,\r\n },\r\n [CampaignType.Search]: {\r\n title: CampaignTypeTitle[CampaignType.Search],\r\n tooltipId: CampaignTypeTooltipIds[CampaignType.Search],\r\n defaultObjectiveID: ObjectiveIDs.AdImpressions,\r\n ObjectiveIDsForAdTypes: {\r\n [AdTypes.Multimedia as string]: ObjectiveIDs.WebsiteVisits,\r\n [AdTypes.AppInstalls as string]: ObjectiveIDs.AppInstalls,\r\n },\r\n optionsType: CampaignOptionTypes.Radio,\r\n optionsHeader: AdTypesSelectionHeaderText.AdTypeGeneric,\r\n options: [\r\n CampaignAdTypes[CampaignType.Search].Multimedia,\r\n CampaignAdTypes[CampaignType.Search].AppInstalls,\r\n ],\r\n defaultAdType: AdTypes.Multimedia,\r\n },\r\n [CampaignType.LinkedIn]: {\r\n title: CampaignTypeTitle[CampaignType.LinkedIn],\r\n tooltipId: CampaignTypeTooltipIds[CampaignType.LinkedIn],\r\n defaultObjectiveID: ObjectiveIDs.Consideration,\r\n optionsType: CampaignOptionTypes.None,\r\n },\r\n },\r\n [CampaignGoal.BrandAwareness]: {\r\n [CampaignType.DisplayPlus]: {\r\n title: CampaignTypeTitle[CampaignType.DisplayPlus],\r\n tooltipId: CampaignTypeTooltipIds[CampaignType.DisplayPlus],\r\n defaultObjectiveID: ObjectiveIDs.Awareness,\r\n optionsType: CampaignOptionTypes.Radio,\r\n optionsHeader: AdTypesSelectionHeaderText.AdTypeGeneric,\r\n enableOptions: enableDisplayPlusOptions,\r\n options: [\r\n CampaignAdTypes[CampaignType.DisplayPlus].Display,\r\n CampaignAdTypes[CampaignType.DisplayPlus].Native,\r\n CampaignAdTypes[CampaignType.DisplayPlus].Video,\r\n ],\r\n defaultAdType: AdTypes.Display,\r\n },\r\n [CampaignType.ConnectedTV]: {\r\n title: CampaignTypeTitle[CampaignType.ConnectedTV],\r\n tooltipId: CampaignTypeTooltipIds[CampaignType.ConnectedTV],\r\n defaultObjectiveID: ObjectiveIDs.VideoCampaign,\r\n optionsType: CampaignOptionTypes.Radio,\r\n optionsHeader: AdTypesSelectionHeaderText.CTV,\r\n options: [\r\n CampaignAdTypes[CampaignType.ConnectedTV].AudienceVideo,\r\n // CampaignAdTypes[CampaignType.ConnectedTV].Premium,\r\n CampaignAdTypes[CampaignType.ConnectedTV].Netflix,\r\n ],\r\n defaultAdType: AdTypes.AudienceVideo,\r\n },\r\n [CampaignType.LinkedIn]: {\r\n title: CampaignTypeTitle[CampaignType.LinkedIn],\r\n tooltipId: CampaignTypeTooltipIds[CampaignType.LinkedIn],\r\n defaultObjectiveID: ObjectiveIDs.Awareness,\r\n optionsType: CampaignOptionTypes.None,\r\n },\r\n },\r\n};\r\n\r\nexport const getCampaignTypeIcon = (type: string) => {\r\n switch (type) {\r\n case CampaignType.PerformanceMax:\r\n return pmaxIconAdv;\r\n case CampaignType.DisplayPlus:\r\n return displayPlusIconAdv;\r\n case CampaignType.Search:\r\n return searchIconAdv;\r\n case CampaignType.StandardShopping:\r\n return standardShoppingIcon;\r\n case CampaignType.SmartShopping:\r\n return smartShoppingIcon;\r\n case CampaignType.ShoppingForBrands:\r\n return shoppingForBrandsIconAdv;\r\n case CampaignType.ConnectedTV:\r\n return connectedTVIconAdv;\r\n // case CampaignType.Deals:\r\n // return dealsIconAdv;\r\n case CampaignType.WindowsStore:\r\n return windowsStoreIconAdv;\r\n case CampaignType.Lodging:\r\n return hotelIconAdv;\r\n case CampaignType.Hotel:\r\n return hotelIconAdv;\r\n case CampaignType.LinkedIn:\r\n return linkedInIconAdv;\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\nexport const getCampaignPreviewImage = (type: string, adType?: AdTypes) => {\r\n switch (type) {\r\n case CampaignType.LinkedIn:\r\n return LinkedInPreview;\r\n case CampaignType.PerformanceMax:\r\n return PmaxPreview;\r\n case CampaignType.DisplayPlus:\r\n if (adType === AdTypes.Native) return DisplayPlusNativePreview;\r\n if (adType === AdTypes.Video) return DisplayPlusVideoPreview;\r\n if (adType === AdTypes.Display) return DisplayPlusDisplayPreview;\r\n return DisplayPlusNativePreview;\r\n case CampaignType.Search:\r\n if (adType === AdTypes.AppInstalls) return AppInstallSearchPreview;\r\n return SearchPreview;\r\n case CampaignType.StandardShopping:\r\n return ShoppingPreview;\r\n case CampaignType.SmartShopping:\r\n return ShoppingPreview;\r\n case CampaignType.ShoppingForBrands:\r\n return ShoppingPreview;\r\n case CampaignType.ConnectedTV:\r\n return CTVPreview;\r\n case CampaignType.WindowsStore:\r\n return WindowsStorePreview;\r\n case CampaignType.Lodging:\r\n return HotelPreview;\r\n case CampaignType.Hotel:\r\n return HotelPreview;\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\nexport const getObjectiveID = (campaignType: ICampaignGoalToCampaignType, adType: AdTypes) => {\r\n return campaignType.ObjectiveIDsForAdTypes?.[adType] || campaignType.defaultObjectiveID;\r\n};\r\n\r\nexport const configureCampaignTypeSelection = (goal: CampaignGoal, campaignGoalToCampaignMap: ICampaignGoalsToCampaignTypesMap, disabledAdTypes: AdTypes[], permissions: any): ICampaignGoalConfig => {\r\n const campaignGoalConfig: ICampaignGoalConfig = {};\r\n const campaignTypes = campaignGoalToCampaignMap[goal];\r\n const baseCampaignGoalConfig = CampaignGoalToCampaignTypeMap[goal];\r\n Object.entries(baseCampaignGoalConfig).forEach(([campaignType, campaignTypeConfig]) => {\r\n if (!campaignTypes.includes(campaignType as CampaignType)) return;\r\n\r\n const configCopy = campaignTypeConfig.enableOptions ? { ...campaignTypeConfig.enableOptions(campaignTypeConfig, permissions) } : { ...campaignTypeConfig };\r\n if (configCopy.options) {\r\n const options = configCopy.options.filter(option => !disabledAdTypes.includes(option.id as AdTypes));\r\n // if only 1 option, set it to the default and remove the options list and header\r\n if (options.length === 0) {\r\n configCopy.defaultAdType = AdTypes.NoneSelected;\r\n configCopy.options = undefined;\r\n configCopy.optionsHeader = undefined;\r\n } else if (options.length === 1) {\r\n configCopy.defaultAdType = options[0].id;\r\n configCopy.options = undefined;\r\n configCopy.optionsHeader = undefined;\r\n } else {\r\n // if the default ad type is disabled, set the first available ad type to the default\r\n if (!options.some(c => c.id === configCopy.defaultAdType)) configCopy.defaultAdType = options[0].id;\r\n configCopy.options = options;\r\n }\r\n }\r\n campaignGoalConfig[campaignType] = configCopy;\r\n });\r\n\r\n return campaignGoalConfig;\r\n};\r\n","import React, { useContext, useState, useEffect } from 'react';\r\nimport { ChoiceGroup, Image, IChoiceGroupOption } from '@fluentui/react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { ScenarioContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { SelectionCardWithGoal } from '../../components/selection-card-with-goal';\r\nimport { CampaignGoal, CampaignType, CampaignGoalPageTwoText, CampaignTypeWithGoalDescriptionTextShort,\r\n CampaignTypeWithGoalDescriptionTextExtended, AdTypes, ICampaignGoalsToCampaignTypesMap } from '../../config/constants';\r\nimport { getStyles } from '../../styles/index';\r\nimport { CampaignAdTypeOptionsRadio } from '../../components/campaign-type-card/campaign-ad-type-options-radio';\r\nimport { configureCampaignTypeSelection, getCampaignPreviewImage, getCampaignTypeIcon, getObjectiveID, } from './configs';\r\n\r\ninterface CampaignTypeSelectionWithGoalProps {\r\n selectedCampaignGoal: CampaignGoal,\r\n campaignGoalToCampaignTypeMap: ICampaignGoalsToCampaignTypesMap,\r\n disabledAdTypes: AdTypes[],\r\n handleCampaignTypeSelect: (campaignType: string, objectiveID: string, adType?: string) => void,\r\n FACCouponInfo?: any,\r\n permissions?: any,\r\n}\r\n\r\nexport const CampaignTypeSelectionWithGoal = (props: CampaignTypeSelectionWithGoalProps) => {\r\n const {\r\n selectedCampaignGoal,\r\n campaignGoalToCampaignTypeMap,\r\n disabledAdTypes,\r\n handleCampaignTypeSelect,\r\n permissions,\r\n FACCouponInfo,\r\n } = props;\r\n const i18n: any = useContext(I18nContext);\r\n const scenarioContext: any = useContext(ScenarioContext);\r\n const styles = useDefaultStyles(getStyles);\r\n\r\n const campaignGoalConfig = configureCampaignTypeSelection(selectedCampaignGoal, campaignGoalToCampaignTypeMap, disabledAdTypes, permissions);\r\n\r\n const defaultCampaignType = Object.keys(campaignGoalConfig)[0];\r\n\r\n const [selectedCampaignType, setSelectedCampaignType] = useState(defaultCampaignType);\r\n const [selectedAdType, setSelectedAdType] = useState(campaignGoalConfig[defaultCampaignType].defaultAdType ?? AdTypes.NoneSelected);\r\n\r\n // We need to make the main page aware of default campaign type, objective ID, and ad type when this component mounts\r\n useEffect(() => {\r\n if (handleCampaignTypeSelect) {\r\n const defCampaign = Object.keys(campaignGoalConfig)[0];\r\n const defAdType = campaignGoalConfig[defaultCampaignType].defaultAdType ?? AdTypes.NoneSelected;\r\n const objectiveId = getObjectiveID(campaignGoalConfig[defCampaign], defAdType);\r\n handleCampaignTypeSelect(defaultCampaignType, objectiveId, defAdType);\r\n setSelectedCampaignType(defCampaign);\r\n setSelectedAdType(defAdType);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.selectedCampaignGoal]);\r\n\r\n const renderCampaignTypeCardsWithGoal = () => {\r\n if (selectedCampaignGoal === CampaignGoal.SkipGoals || selectedCampaignGoal === CampaignGoal.NoneSelected) return null;\r\n const options: IChoiceGroupOption[] = Object.entries(campaignGoalConfig).map(([campaignType, config]) => {\r\n const id = campaignType as CampaignType;\r\n const { title } = config;\r\n\r\n const titleOverride = config?.titleOverride;\r\n const descShort = config?.descriptionOverride || CampaignTypeWithGoalDescriptionTextShort[campaignType];\r\n const descExtended = config?.descriptionExtendedOverride || CampaignTypeWithGoalDescriptionTextExtended[campaignType];\r\n const icon = {`${campaignType};\r\n const defaultAdType = config?.defaultAdType;\r\n const optionsComponent = config?.options && {\r\n setSelectedAdType(adType);\r\n const objectiveId = getObjectiveID(campaignGoalConfig[id], adType);\r\n handleCampaignTypeSelect(id, objectiveId, adType);\r\n const activity = scenarioContext.createActivity('AdTypeSelectWithGoal');\r\n activity.trace({\r\n id,\r\n objectiveId,\r\n adType,\r\n isFBImportForAudienceCampaignCreationEnabled: permissions.dynamic.FBImportForAudienceCampaignCreation,\r\n });\r\n }}\r\n defaultAdType={defaultAdType}\r\n permissions={permissions}\r\n FACCouponInfo={FACCouponInfo}\r\n />;\r\n const r: IChoiceGroupOption = {\r\n className: `${id}Card`,\r\n key: id,\r\n text: '',\r\n onRenderLabel: () => null,\r\n onRenderField: (optionProps, defaultRender) => {\r\n return (\r\n \r\n );\r\n },\r\n };\r\n return r;\r\n });\r\n\r\n const getRadioGroupStyle = () => {\r\n return {\r\n flexContainer: [\r\n styles.choiceGroupWrapper,\r\n ],\r\n };\r\n };\r\n\r\n return (\r\n {\r\n const cType = option?.key as CampaignType;\r\n const adType = campaignGoalConfig[cType].defaultAdType || AdTypes.NoneSelected;\r\n const objectiveId = getObjectiveID(campaignGoalConfig[cType], adType);\r\n setSelectedAdType(adType);\r\n setSelectedCampaignType(cType);\r\n handleCampaignTypeSelect(cType, objectiveId, adType);\r\n const activity = scenarioContext.createActivity('CampaignTypeSelectionWithGoal');\r\n activity.trace({\r\n campaignType: cType,\r\n adType,\r\n objectiveId,\r\n isFBImportForAudienceCampaignCreationEnabled: permissions.dynamic.FBImportForAudienceCampaignCreation,\r\n });\r\n }}\r\n />\r\n );\r\n };\r\n\r\n const primaryTextOverride = CampaignGoalPageTwoText[selectedCampaignGoal].primaryOverride;\r\n const secondaryTextOverride = CampaignGoalPageTwoText[selectedCampaignGoal].secondaryOverride;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n \r\n {primaryTextOverride ? i18n.getString(primaryTextOverride) : i18n.getString(_TL_('Select a campaign type'))}\r\n \r\n \r\n {\r\n secondaryTextOverride\r\n ? {i18n.getString(secondaryTextOverride)}\r\n : {i18n.getString(_TL_('Choose the'))} {i18n.getString(CampaignGoalPageTwoText[selectedCampaignGoal].secondary)} {i18n.getString(_TL_('campaign that\\'s right for you.'))}\r\n }\r\n \r\n
\r\n
\r\n {renderCampaignTypeCardsWithGoal()}\r\n
\r\n
\r\n
\r\n {`${selectedCampaignType}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n","import { AdTypes, CampaignGoal, CampaignType, ObjectiveIDs } from '../../config/constants';\r\nimport { WindowsStorePreview, MobileAppInstallPreview } from '../../helpers/images';\r\nimport { androidPlayStoreIconAdv, iOsAppStoreIconAdv, microsoftIconAdv } from '../../helpers/icons';\r\n\r\n\r\nexport interface ICampaignGoalAdTypeConfig {\r\n title: string,\r\n tooltipId: string | undefined,\r\n objectiveID: string,\r\n campaignType: CampaignType,\r\n titleOverride?: string,\r\n descriptionOverride?: string,\r\n descriptionExtendedOverride?: string,\r\n defaultAdType?: AdTypes,\r\n hasFACBadge?: boolean,\r\n}\r\n\r\nexport interface ICampaignGoalToAdType {\r\n [adType: string]: ICampaignGoalAdTypeConfig\r\n}\r\n\r\nexport interface ICampaignGoalToAdTypeConfig {\r\n [goal: string]: ICampaignGoalToAdType\r\n}\r\n\r\nexport const CampaignGoalToAdTypeConfig: ICampaignGoalToAdTypeConfig = {\r\n [CampaignGoal.UnifiedPromoteApp]: {\r\n [AdTypes.WindowsAppStore]: {\r\n title: _TL_('Microsoft Store'),\r\n tooltipId: undefined,\r\n objectiveID: ObjectiveIDs.AppInstalls,\r\n campaignType: CampaignType.UnifiedAppAds,\r\n descriptionOverride: _TL_('Promote your Microsoft apps in the Store, Start menu, and other Microsoft components.'),\r\n descriptionExtendedOverride: _TL_('Promote your Microsoft apps in the Store, Start menu, and other Microsoft components.'),\r\n },\r\n [AdTypes.AndroidPlayStore]: {\r\n title: _TL_('Android'),\r\n tooltipId: undefined,\r\n objectiveID: ObjectiveIDs.AppInstalls,\r\n campaignType: CampaignType.UnifiedAppAds,\r\n descriptionOverride: _TL_('Promote your Android app on mobile devices across the Microsoft Advertising Network.'),\r\n descriptionExtendedOverride: _TL_('Promote your Android app on mobile devices across the Microsoft Advertising Network.'),\r\n },\r\n [AdTypes.IosAppStore]: {\r\n title: _TL_('iOS'),\r\n tooltipId: undefined,\r\n objectiveID: ObjectiveIDs.AppInstalls,\r\n campaignType: CampaignType.UnifiedAppAds,\r\n descriptionOverride: _TL_('Promote your iOS app on mobile devices across the Microsoft Advertising Network.'),\r\n descriptionExtendedOverride: _TL_('Promote your iOS app on mobile devices across the Microsoft Advertising Network.'),\r\n },\r\n },\r\n};\r\n\r\nexport const getAdTypeIcon = (type: string) => {\r\n switch (type) {\r\n case AdTypes.WindowsAppStore:\r\n return microsoftIconAdv;\r\n case AdTypes.AndroidPlayStore:\r\n return androidPlayStoreIconAdv;\r\n case AdTypes.IosAppStore:\r\n return iOsAppStoreIconAdv;\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\nexport const getAdPreviewImage = (type: string) => {\r\n switch (type) {\r\n case AdTypes.WindowsAppStore:\r\n return WindowsStorePreview;\r\n case AdTypes.AndroidPlayStore:\r\n return MobileAppInstallPreview;\r\n case AdTypes.IosAppStore:\r\n return MobileAppInstallPreview;\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\nexport const configureAdTypeSelection = (goal: CampaignGoal, campaignGoalToAdTypeMap: ICampaignGoalToAdTypeConfig, disabledAdTypes: AdTypes[]): ICampaignGoalToAdType => {\r\n const baseCampaignGoalConfig = CampaignGoalToAdTypeConfig[goal];\r\n Object.keys(baseCampaignGoalConfig).forEach((adType) => {\r\n if (!disabledAdTypes.includes(adType as AdTypes)) return;\r\n\r\n delete baseCampaignGoalConfig[adType];\r\n });\r\n\r\n return baseCampaignGoalConfig;\r\n};\r\n","import React, { useContext, useState, useEffect } from 'react';\r\nimport { ChoiceGroup, Image, IChoiceGroupOption } from '@fluentui/react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { SelectionCardWithGoal } from '../../components/selection-card-with-goal';\r\nimport { CampaignGoal, CampaignType, CampaignGoalPageTwoText, CampaignTypeWithGoalDescriptionTextShort,\r\n CampaignTypeWithGoalDescriptionTextExtended, AdTypes } from '../../config/constants';\r\nimport { getStyles } from '../../styles/index';\r\nimport { getAdPreviewImage, getAdTypeIcon, CampaignGoalToAdTypeConfig, configureAdTypeSelection } from './configs';\r\n\r\ninterface CampaignTypeSelectionWithGoalProps {\r\n selectedCampaignGoal: CampaignGoal,\r\n disabledAdTypes: AdTypes[],\r\n handleAdTypeSelect: (campaignType: string, objectiveID: string, adType?: string) => void,\r\n FACCouponInfo?: any,\r\n permissions?: any,\r\n}\r\n\r\nexport const AdTypeSelectionWithGoal = (props: CampaignTypeSelectionWithGoalProps) => {\r\n const {\r\n selectedCampaignGoal,\r\n disabledAdTypes,\r\n handleAdTypeSelect,\r\n permissions,\r\n FACCouponInfo,\r\n } = props;\r\n const i18n: any = useContext(I18nContext);\r\n const styles = useDefaultStyles(getStyles);\r\n\r\n const campaignGoalConfig = configureAdTypeSelection(selectedCampaignGoal, CampaignGoalToAdTypeConfig, disabledAdTypes);\r\n\r\n const defaultAdType = Object.keys(campaignGoalConfig)[0];\r\n\r\n const [selectedAdType, setSelectedAdType] = useState(defaultAdType);\r\n\r\n // We need to make the main page aware of default campaign type, objective ID, and ad type when this component mounts\r\n useEffect(() => {\r\n if (handleAdTypeSelect) {\r\n const defAdType = Object.keys(campaignGoalConfig)[0];\r\n const defCampaign = campaignGoalConfig[defaultAdType].campaignType ?? CampaignType.NoneSelected;\r\n const objectiveId = campaignGoalConfig[defaultAdType].objectiveID;\r\n handleAdTypeSelect(defCampaign, objectiveId, defAdType);\r\n setSelectedAdType(defAdType);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.selectedCampaignGoal]);\r\n\r\n const renderAdTypeCardsWithGoal = () => {\r\n if (selectedCampaignGoal === CampaignGoal.SkipGoals || selectedCampaignGoal === CampaignGoal.NoneSelected) return null;\r\n const options: IChoiceGroupOption[] = Object.entries(campaignGoalConfig).map(([adType, config]) => {\r\n const id = adType as AdTypes;\r\n\r\n const titleOverride = config?.titleOverride;\r\n const descShort = config?.descriptionOverride || CampaignTypeWithGoalDescriptionTextShort[adType];\r\n const descExtended = config?.descriptionExtendedOverride || CampaignTypeWithGoalDescriptionTextExtended[adType];\r\n const icon = {`${adType};\r\n const r: IChoiceGroupOption = {\r\n className: `${id}Card`,\r\n key: id,\r\n text: '',\r\n onRenderLabel: () => null,\r\n onRenderField: (optionProps, defaultRender) => {\r\n return (\r\n \r\n );\r\n },\r\n };\r\n return r;\r\n });\r\n\r\n const getRadioGroupStyle = () => {\r\n return {\r\n flexContainer: [\r\n styles.choiceGroupWrapper,\r\n ],\r\n };\r\n };\r\n\r\n return (\r\n {\r\n const adType = option?.key as AdTypes;\r\n const cType = campaignGoalConfig[adType].campaignType || CampaignType.NoneSelected;\r\n const objectiveId = campaignGoalConfig[adType].objectiveID;\r\n setSelectedAdType(adType);\r\n handleAdTypeSelect(cType, objectiveId, adType);\r\n }}\r\n />\r\n );\r\n };\r\n\r\n const primaryTextOverride = CampaignGoalPageTwoText[selectedCampaignGoal].primaryOverride;\r\n const secondaryTextOverride = CampaignGoalPageTwoText[selectedCampaignGoal].secondaryOverride;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n \r\n {primaryTextOverride ? i18n.getString(primaryTextOverride) : i18n.getString(_TL_('Select an ad type'))}\r\n \r\n \r\n {i18n.getString(secondaryTextOverride)}\r\n \r\n
\r\n
\r\n {renderAdTypeCardsWithGoal()}\r\n
\r\n
\r\n
\r\n {`${selectedAdType}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n","import { bgColor, cardColor, selectedCardBorderColor, font } from './vars';\r\n\r\nconst cardContainer = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'flex-start',\r\n alignItems: 'center',\r\n background: cardColor,\r\n boxShadow: '0px 2px 4px 0px #0000001A',\r\n border: '1px solid rgba(0,0,0,0)',\r\n width: 282.5,\r\n height: 278,\r\n padding: '0 20px 0 20px',\r\n borderRadius: 4,\r\n gap: '12px',\r\n '&:hover': {\r\n cursor: 'pointer',\r\n background: bgColor,\r\n },\r\n};\r\nconst cardContainerSelected = {\r\n ...cardContainer,\r\n border: `1px solid ${selectedCardBorderColor}`,\r\n};\r\nconst text = {\r\n fontFamily: font,\r\n lineHeight: '20px',\r\n letterSpacing: 0,\r\n textAlign: 'center',\r\n};\r\nconst title = {\r\n ...text,\r\n fontSize: 15,\r\n fontWeight: 700,\r\n};\r\nconst description = {\r\n ...text,\r\n fontSize: 14,\r\n fontWeight: 400,\r\n};\r\nconst goalTypesContainer = {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n gap: '20px',\r\n marginTop: 10,\r\n justifyContent: 'center',\r\n};\r\n\r\nconst facBadge = {\r\n position: 'absolute',\r\n top: 10,\r\n right: 40,\r\n};\r\n\r\nexport const getStyles = () => {\r\n return {\r\n cardContainer,\r\n cardContainerSelected,\r\n title,\r\n description,\r\n goalTypesContainer,\r\n facBadge,\r\n };\r\n};\r\n","import React, { useContext } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { HelpPopupInline } from '@bingads-webui-react/help-popup';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { CampaignGoalTitle } from '../goal-card/campaign-goal-title';\r\nimport { getStyles } from '../../styles/campaign-type-card-no-goal';\r\nimport { FACBadge } from '../goal-card/fac-badge';\r\n\r\n/**\r\n * CampaignTypeCardSimple component\r\n * @param title - title of the card\r\n * @param description - description of the card\r\n * @param icon - icon of the card\r\n * @param tooltip - tooltip of the card\r\n * @param goalTypes - goal types of the card, in the format [goalTypeString, backgroundColor, textColor][]\r\n */\r\nexport interface CampaignTypeCardNoGoalProps {\r\n title: string;\r\n tooltipId: string;\r\n description: string;\r\n icon: any;\r\n goalTypes: [string, string, string][];\r\n selected: boolean;\r\n id?: string;\r\n hasFACBadge?: boolean;\r\n FACCouponInfo?: any;\r\n permissions?: any;\r\n}\r\n\r\n\r\nexport const CampaignTypeCardNoGoal = (props: CampaignTypeCardNoGoalProps) => {\r\n\r\n const i18n: any = useContext(I18nContext);\r\n const styles = useDefaultStyles(getStyles);\r\n\r\n const renderTitle = () => {\r\n return (\r\n
\r\n {i18n.getString(props.title)}\r\n {props.tooltipId && }\r\n
\r\n );\r\n };\r\n\r\n const renderDescription = () => {i18n.getString(props.description)};\r\n\r\n const renderGoalTypes = () => {\r\n const goalTypes = props.goalTypes.map(goalType => );\r\n return (\r\n
\r\n {goalTypes}\r\n
\r\n );\r\n };\r\n\r\n // onClick={() => props.onClick(props.id, props.objectiveID)} onKeyDown={handleKeyDown}\r\n return (\r\n
\r\n \r\n {props.icon}\r\n {renderTitle()}\r\n {renderDescription()}\r\n {renderGoalTypes()}\r\n
\r\n );\r\n\r\n};\r\n","import React, { useContext, useState, useEffect } from 'react';\r\nimport { Stack, StackItem, Image, ChoiceGroup, IChoiceGroupOption } from '@fluentui/react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { ScenarioContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getRoutePathById } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { CampaignGoalType, CampaignType, CampaignTypeTitle, CampaignTypeWithNoGoalDescriptionText, TitleColors, ObjectiveIDs, CampaignTypeTooltipIds } from '../config/constants';\r\nimport { CampaignTypeCardNoGoal, CampaignTypeCardNoGoalProps } from '../components/campaign-type-card/campaign-type-card-no-goal';\r\nimport { connectedTVIcon, displayPlusIcon, hotelIcon, pmaxIcon, searchIcon, shoppingForBrandsIcon, windowsStoreIcon, shoppingIcon } from '../helpers/icons';\r\nimport { getStyles } from '../styles/index';\r\n\r\ninterface ICardConfig extends Omit {\r\n id: string;\r\n objectiveID: string;\r\n hasFACBadge?: boolean;\r\n}\r\n\r\nconst getCampaignCardNoGoalConfig = (disabledCampaignTypes, classes): ICardConfig[] => {\r\n const config: ICardConfig[] = [\r\n {\r\n title: CampaignTypeTitle[CampaignType.Search],\r\n tooltipId: CampaignTypeTooltipIds[CampaignType.Search],\r\n id: CampaignType.Search,\r\n objectiveID: ObjectiveIDs.WebsiteVisits,\r\n description: CampaignTypeWithNoGoalDescriptionText[CampaignType.Search],\r\n icon: {`${CampaignType.Search},\r\n goalTypes: [\r\n [CampaignGoalType.Conversions, TitleColors.GreenBG, TitleColors.GreenText],\r\n [CampaignGoalType.Leads, TitleColors.YellowBG, TitleColors.YellowText],\r\n ],\r\n },\r\n {\r\n title: CampaignTypeTitle[CampaignType.Shopping],\r\n tooltipId: CampaignTypeTooltipIds[CampaignType.StandardShopping],\r\n id: CampaignType.StandardShopping,\r\n objectiveID: ObjectiveIDs.ShoppingCampaign,\r\n description: CampaignTypeWithNoGoalDescriptionText[CampaignType.StandardShopping],\r\n icon: {`${CampaignType.StandardShopping},\r\n hasFACBadge: true,\r\n goalTypes: [\r\n [CampaignGoalType.Conversions, TitleColors.GreenBG, TitleColors.GreenText],\r\n ],\r\n },\r\n {\r\n title: CampaignTypeTitle[CampaignType.ConnectedTV],\r\n tooltipId: CampaignTypeTooltipIds[CampaignType.ConnectedTV],\r\n id: CampaignType.ConnectedTV,\r\n objectiveID: ObjectiveIDs.VideoCampaign,\r\n description: CampaignTypeWithNoGoalDescriptionText[CampaignType.ConnectedTV],\r\n icon: {`${CampaignType.ConnectedTV},\r\n goalTypes: [\r\n [CampaignGoalType.Awareness, TitleColors.BlueBG, TitleColors.BlueText],\r\n ],\r\n },\r\n // removed, combined with connected ctv\r\n // {\r\n // title: CampaignType.Deals,\r\n // description: 'These non-skippable video ads serve on CTV streaming services',\r\n // icon: {`${CampaignType.Deals},\r\n // tooltip: '',\r\n // goalTypes: [\r\n // [CampaignGoalType.Awareness, TitleColors.BlueBG, TitleColors.BlueText],\r\n // ],\r\n // },\r\n {\r\n title: CampaignTypeTitle[CampaignType.WindowsStore],\r\n tooltipId: CampaignTypeTooltipIds[CampaignType.WindowsStore],\r\n id: CampaignType.WindowsStore,\r\n objectiveID: ObjectiveIDs.MSStoreAds,\r\n description: CampaignTypeWithNoGoalDescriptionText[CampaignType.WindowsStore],\r\n icon: {`${CampaignType.WindowsStore},\r\n goalTypes: [\r\n [CampaignGoalType.Conversions, TitleColors.GreenBG, TitleColors.GreenText],\r\n ],\r\n },\r\n {\r\n title: CampaignTypeTitle[CampaignType.UnifiedAppAds],\r\n tooltipId: CampaignTypeTooltipIds[CampaignType.WindowsStore],\r\n id: CampaignType.UnifiedAppAds,\r\n objectiveID: ObjectiveIDs.AppInstalls,\r\n description: CampaignTypeWithNoGoalDescriptionText[CampaignType.UnifiedAppAds],\r\n icon: {`${CampaignType.UnifiedAppAds},\r\n goalTypes: [\r\n [CampaignGoalType.Conversions, TitleColors.GreenBG, TitleColors.GreenText],\r\n ],\r\n },\r\n {\r\n title: CampaignTypeTitle[CampaignType.Hotel],\r\n tooltipId: CampaignTypeTooltipIds[CampaignType.Hotel],\r\n id: CampaignType.Hotel,\r\n objectiveID: ObjectiveIDs.HotelBooking,\r\n description: CampaignTypeWithNoGoalDescriptionText[CampaignType.Hotel],\r\n icon: {`${CampaignType.Hotel},\r\n goalTypes: [\r\n [CampaignGoalType.Conversions, TitleColors.GreenBG, TitleColors.GreenText],\r\n ],\r\n },\r\n {\r\n title: CampaignTypeTitle[CampaignType.Lodging],\r\n tooltipId: CampaignTypeTooltipIds[CampaignType.Lodging],\r\n id: CampaignType.Lodging,\r\n objectiveID: ObjectiveIDs.HotelBooking,\r\n description: CampaignTypeWithNoGoalDescriptionText[CampaignType.Lodging],\r\n icon: {`${CampaignType.Hotel},\r\n goalTypes: [\r\n [CampaignGoalType.Conversions, TitleColors.GreenBG, TitleColors.GreenText],\r\n ],\r\n },\r\n {\r\n title: CampaignTypeTitle[CampaignType.ShoppingForBrands],\r\n tooltipId: CampaignTypeTooltipIds[CampaignType.ShoppingForBrands],\r\n id: CampaignType.ShoppingForBrands,\r\n objectiveID: ObjectiveIDs.ShoppingCampaign,\r\n description: CampaignTypeWithNoGoalDescriptionText[CampaignType.ShoppingForBrands],\r\n icon: {`${CampaignType.ShoppingForBrands},\r\n goalTypes: [\r\n [CampaignGoalType.Conversions, TitleColors.GreenBG, TitleColors.GreenText],\r\n ],\r\n },\r\n {\r\n title: CampaignTypeTitle[CampaignType.PerformanceMax],\r\n tooltipId: CampaignTypeTooltipIds[CampaignType.PerformanceMax],\r\n id: CampaignType.PerformanceMax,\r\n objectiveID: ObjectiveIDs.WebsiteVisits,\r\n description: CampaignTypeWithNoGoalDescriptionText[CampaignType.PerformanceMax],\r\n icon: {`${CampaignType.PerformanceMax},\r\n goalTypes: [\r\n [CampaignGoalType.Conversions, TitleColors.GreenBG, TitleColors.GreenText],\r\n ],\r\n },\r\n {\r\n title: CampaignTypeTitle[CampaignType.DisplayPlus],\r\n tooltipId: CampaignTypeTooltipIds[CampaignType.DisplayPlus],\r\n id: CampaignType.DisplayPlus,\r\n objectiveID: ObjectiveIDs.WebsiteVisits,\r\n description: CampaignTypeWithNoGoalDescriptionText[CampaignType.DisplayPlus],\r\n icon: {`${CampaignType.DisplayPlus},\r\n goalTypes: [\r\n [CampaignGoalType.Conversions, TitleColors.GreenBG, TitleColors.GreenText],\r\n [CampaignGoalType.Leads, TitleColors.YellowBG, TitleColors.YellowText],\r\n [CampaignGoalType.Awareness, TitleColors.BlueBG, TitleColors.BlueText],\r\n ],\r\n },\r\n ];\r\n return config.filter(c => !disabledCampaignTypes.includes(c.id));\r\n};\r\n\r\ninterface CampaignTypeSelectionNoGoalProps {\r\n disabledCampaignTypes: CampaignType[],\r\n handleCampaignTypeSelect: (campaignType: string, objectiveID: string) => void,\r\n FACCouponInfo?: any,\r\n permissions: any,\r\n scope: any,\r\n siteMap: any,\r\n isSpbEnabled: boolean,\r\n}\r\n\r\nexport const CampaignTypeSelectionNoGoal = (props: CampaignTypeSelectionNoGoalProps) => {\r\n\r\n const {\r\n disabledCampaignTypes, handleCampaignTypeSelect,\r\n permissions, scope, siteMap, isSpbEnabled,\r\n } = props;\r\n const styles = useDefaultStyles(getStyles);\r\n\r\n const cardConfig = getCampaignCardNoGoalConfig(disabledCampaignTypes, styles);\r\n const typeToObjectiveIDMap = {};\r\n cardConfig.forEach((c) => {\r\n typeToObjectiveIDMap[c.id] = c.objectiveID;\r\n });\r\n const cardCount = cardConfig.length;\r\n const maxWidth = ((cardCount <= 6 && cardCount !== 4) || cardCount === 9) ? '900px' : '1400px';\r\n\r\n const i18n: any = useContext(I18nContext);\r\n const scenarioContext: any = useContext(ScenarioContext);\r\n\r\n const [selectedCampaignType, setSelectedCampaignType] = useState(CampaignType.NoneSelected);\r\n\r\n const renderCampaignTypeCards = () => {\r\n const choiceGroupOptions: IChoiceGroupOption[] = cardConfig.map((card) => {\r\n return {\r\n className: `${card.id}Card`,\r\n key: card.id,\r\n id: card.id,\r\n text: '',\r\n name: card.id,\r\n ariaLabel: card.title,\r\n onRenderLabel: () => null,\r\n onRenderField: optionProps => ,\r\n };\r\n });\r\n\r\n const getRadioGroupStyle = () => {\r\n return {\r\n flexContainer: [\r\n styles.cardsContainerNoGoals,\r\n ],\r\n };\r\n };\r\n\r\n return (\r\n {\r\n const campaignType = option?.key as CampaignType;\r\n const objId = typeToObjectiveIDMap[campaignType];\r\n setSelectedCampaignType(campaignType);\r\n handleCampaignTypeSelect(campaignType, objId);\r\n const activity = scenarioContext.createActivity('CampaignTypeSelectionNoGoal');\r\n activity.trace({\r\n campaignType,\r\n objId,\r\n isFBImportForAudienceCampaignCreationEnabled: permissions.dynamic.FBImportForAudienceCampaignCreation,\r\n });\r\n }}\r\n selectedKey={selectedCampaignType}\r\n />\r\n );\r\n };\r\n\r\n useEffect(() => {\r\n const { selectedCampaignObjectiveKey } = scope.values;\r\n const objId = typeToObjectiveIDMap[CampaignType.ShoppingForBrands];\r\n if (selectedCampaignObjectiveKey === 'SponsoredShoppingCampaign' && objId) {\r\n scope.remove(['selectedCampaignObjectiveKey']);\r\n if (!isSpbEnabled) {\r\n scope.save(getRoutePathById(siteMap, 'campaign-create-shopping-spa'));\r\n } else {\r\n setSelectedCampaignType(CampaignType.ShoppingForBrands);\r\n handleCampaignTypeSelect(CampaignType.ShoppingForBrands, objId);\r\n scope.save();\r\n }\r\n }\r\n }, [scope, handleCampaignTypeSelect, typeToObjectiveIDMap, permissions, siteMap, isSpbEnabled]);\r\n\r\n return (\r\n \r\n \r\n
\r\n {i18n.getString(_TL_('Choose the type of campaign you want to create'))}\r\n
\r\n
\r\n
\r\n {renderCampaignTypeCards()}\r\n
\r\n
\r\n );\r\n};\r\n","// Global var to store the selected campaign objective\r\nlet selectedCampaignObjective;\r\n\r\nexport const getGlobalSelectedCampaignObjective = () => selectedCampaignObjective;\r\nexport const setGlobalSelectedCampaignObjective = (objective) => {\r\n selectedCampaignObjective = objective;\r\n};\r\n","import React, { useMemo, lazy } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { CampaignType, CustomSectionConfig } from '../../config/constants';\r\n\r\nconst DefaultCustomSectionPlaceholder = () => (\r\n \r\n);\r\n\r\n\r\nexport const shouldRenderCustomComonentEvaluvator = ({\r\n selectedGoal, selectedCampaignType, permissions,\r\n}) => {\r\n const customSectionConfig = CustomSectionConfig[selectedCampaignType] || {};\r\n\r\n if (customSectionConfig.shouldRender) {\r\n return customSectionConfig.shouldRender({\r\n selectedGoal,\r\n selectedCampaignType,\r\n permissions,\r\n });\r\n }\r\n\r\n return false;\r\n};\r\n\r\n// use this component to dynamically import custom sections which are shown after campaign goal/type selection is done.\r\nexport const CustomSectionSelector = ({\r\n selectedGoal,\r\n selectedCampaignType,\r\n permissions,\r\n scenarioContext,\r\n handleContinueClick,\r\n}) => {\r\n const customSectionConfig = useMemo(() => CustomSectionConfig[selectedCampaignType] || {}, [selectedCampaignType]);\r\n\r\n if (customSectionConfig.shouldRender && customSectionConfig.shouldRender({\r\n selectedGoal,\r\n selectedCampaignType,\r\n permissions,\r\n })) {\r\n if (selectedCampaignType === CampaignType.PerformanceMax) {\r\n // eslint-disable-next-line import/no-unresolved\r\n const DelayedPerfMaxCustomSection = lazy(() => import(/* webpackMode: \"eager\" */'./perf-max-store-selector')\r\n .then(e => e.default)\r\n .then(module => ({ default: module })));\r\n return (\r\n } >\r\n \r\n \r\n );\r\n }\r\n\r\n if (selectedCampaignType === CampaignType.DisplayPlus) {\r\n // eslint-disable-next-line import/no-unresolved\r\n const AudienceCampaignSelecter = lazy(() => import(/* webpackMode: \"eager\" */'./audience-campaign-selector')\r\n .then(e => e.default)\r\n .then(module => ({ default: module })));\r\n return (\r\n } >\r\n \r\n \r\n );\r\n }\r\n\r\n }\r\n\r\n\r\n return null;\r\n};\r\n\r\nCustomSectionSelector.propTypes = {\r\n selectedGoal: PropTypes.string.isRequired,\r\n selectedCampaignType: PropTypes.string.isRequired,\r\n permissions: PropTypes.shape({\r\n dynamic: PropTypes.shape({\r\n PMaxWizardRefresh: PropTypes.bool,\r\n FBImportForAudienceCampaignCreation: PropTypes.bool,\r\n }),\r\n }).isRequired,\r\n scenarioContext: PropTypes.shape({}).isRequired,\r\n handleContinueClick: PropTypes.func.isRequired,\r\n};\r\n","import React, { useContext } from 'react';\r\n// @ts-ignore\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { IChoiceGroupOptionProps } from '@fluentui/react';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getStyles } from '../../styles/index';\r\nimport { FACBadge } from '../../components/goal-card/fac-badge';\r\n\r\nexport interface PlainCardProps {\r\n adType: any,\r\n permissions: any,\r\n FACCouponInfo: any,\r\n optionProps: IChoiceGroupOptionProps | undefined;\r\n}\r\n\r\nexport const PlainCard = (props: PlainCardProps) => {\r\n const i18n: any = useContext(I18nContext);\r\n const styles = useDefaultStyles(getStyles);\r\n\r\n const {\r\n adType, permissions, FACCouponInfo, optionProps,\r\n } = props;\r\n\r\n return (\r\n
\r\n \r\n
\r\n {i18n.getString(adType.title)}\r\n
\r\n {i18n.getString(adType.description)}\r\n
\r\n );\r\n};\r\n","import React, { useContext } from 'react';\r\nimport { Image, IChoiceGroupOptionProps, Stack } from '@fluentui/react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getStyles } from '../../styles/index';\r\nimport { AdTypes } from '../../config/constants';\r\nimport { FACBadge } from '../../components/goal-card/fac-badge';\r\nimport { microsoftIconAdv, androidPlayStoreIconAdv, iOsAppStoreIconAdv } from '../../helpers/icons';\r\n\r\nconst getAdTypeIcon = (type: string) => {\r\n switch (type) {\r\n case AdTypes.WindowsAppStore:\r\n return microsoftIconAdv;\r\n case AdTypes.AndroidPlayStore:\r\n return androidPlayStoreIconAdv;\r\n case AdTypes.IosAppStore:\r\n return iOsAppStoreIconAdv;\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\nexport interface UnifiedAppAdsCardProps {\r\n adType: any,\r\n permissions: any,\r\n FACCouponInfo: any,\r\n optionProps: IChoiceGroupOptionProps | undefined;\r\n}\r\n\r\nexport const UnifiedAppAdsCard = (props: UnifiedAppAdsCardProps) => {\r\n const i18n: any = useContext(I18nContext);\r\n const styles = useDefaultStyles(getStyles);\r\n\r\n const {\r\n adType, permissions, FACCouponInfo, optionProps,\r\n } = props;\r\n\r\n return (\r\n
\r\n \r\n \r\n {`${adType.id}\r\n
\r\n {i18n.getString(adType.title)}\r\n
\r\n {i18n.getString(adType.description)}\r\n
\r\n
\r\n );\r\n};\r\n","import React, { useContext } from 'react';\r\n// @ts-ignore\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { CampaignTypeTitle, AdTypesSelectionHeaderText, CampaignType } from '../../config/constants';\r\nimport { AdTypeSelectionPage } from './ad-type-selection-page';\r\n\r\ninterface DefaultAdTypeSelectionPageProps {\r\n adTypeSelectionRef: React.RefObject,\r\n selectedCampaignType: CampaignType,\r\n adTypeCards: React.ReactNode,\r\n}\r\n\r\nexport const DefaultAdTypeSelectionPage = (props: DefaultAdTypeSelectionPageProps) => {\r\n const i18n: any = useContext(I18nContext);\r\n\r\n const {\r\n adTypeSelectionRef,\r\n selectedCampaignType,\r\n adTypeCards,\r\n } = props;\r\n\r\n return (\r\n \r\n \r\n {i18n.getString(AdTypesSelectionHeaderText.AdTypeGeneric)}\r\n {i18n.getString(_TL_('Currently, you can only create one ad type per {{item}} campaign. Choose the ad type that\\'s right for you.'), { item: CampaignTypeTitle[selectedCampaignType] })}\r\n \r\n \r\n {adTypeCards}\r\n \r\n \r\n );\r\n};\r\n","import React, { useContext } from 'react';\r\n// @ts-ignore\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { AdTypesSelectionHeaderText } from '../../config/constants';\r\nimport { AdTypeSelectionPage } from './ad-type-selection-page';\r\n\r\ninterface ShoppingAdTypeSelectionPageProps {\r\n adTypeSelectionRef: React.RefObject,\r\n adTypeCards: any,\r\n}\r\n\r\nexport const ShoppingAdTypeSelectionPage = (props: ShoppingAdTypeSelectionPageProps) => {\r\n const i18n: any = useContext(I18nContext);\r\n\r\n const {\r\n adTypeSelectionRef,\r\n adTypeCards,\r\n } = props;\r\n\r\n return (\r\n \r\n \r\n {i18n.getString(AdTypesSelectionHeaderText.AdTypeGeneric)}\r\n \r\n \r\n {adTypeCards}\r\n \r\n \r\n );\r\n};\r\n","import React, { useContext } from 'react';\r\n// @ts-ignore\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { AdTypesSelectionHeaderText } from '../../config/constants';\r\nimport { AdTypeSelectionPage } from './ad-type-selection-page';\r\n\r\ninterface UnifiedAppTypeSelectionPageProps {\r\n adTypeSelectionRef: React.RefObject,\r\n adTypeCards: any,\r\n}\r\n\r\nexport const UnifiedAppAdTypeSelectionPage = (props: UnifiedAppTypeSelectionPageProps) => {\r\n const i18n: any = useContext(I18nContext);\r\n\r\n const {\r\n adTypeSelectionRef,\r\n adTypeCards,\r\n } = props;\r\n\r\n return (\r\n \r\n \r\n {i18n.getString(AdTypesSelectionHeaderText.UnifiedAppAds)}\r\n {i18n.getString(_TL_('Choose the type of app-based campaign that best suits your needs.'))}\r\n \r\n \r\n {adTypeCards}\r\n \r\n \r\n );\r\n\r\n\r\n};\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React, { useCallback, useContext, useEffect, useMemo, useState, lazy, RefObject } from 'react';\r\n// @ts-ignore\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { Activity, Scenario, ScenarioContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { getLocalStorage } from '@bingads-webui/storage';\r\nimport appConfig from '@bingads-webui-component-legacy/config';\r\nimport { withPreference } from '@bingads-webui-react/preference-context';\r\nimport { withSiteMap } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { withCcJsData } from '@bingads-webui-cc-react/js-data-rest';\r\nimport { IChoiceGroupOption, Stack } from '@fluentui/react';\r\nimport { ChoiceGroup, PrimaryButton } from '@bingads-webui-react/fabric-with-signal';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { FAC_FEATURE_ID } from '@bingads-webui-campaign/recommendation-core';\r\nimport { notificationApi } from '@bingads-webui-campaign/notification-center';\r\nimport { Constants as CCUIConstants } from '@bingads-webui-clientcenter/entity-utils';\r\nimport { findWhere, isArray, filter, isFunction } from 'underscore';\r\nimport {\r\n CampaignGoal, CampaignType, getCampaignGoalToCampaignTypeMap, CampaignGoalsToCampaignTypesMap,\r\n AdTypes, getCampaignAdTypes, xandrVideoCampaignTypes,\r\n ActivityName,\r\n LocalStorageKeys,\r\n DummyAdTypesMap\r\n} from '../config/constants';\r\nimport DurationSelectorPlaceholder from '../components/duration-selector-placeholder';\r\nimport { navigateToFBImport, navigateToWizard } from '../helpers/navigate-to-wizard';\r\nimport { getStyles } from '../styles/index';\r\nimport { CampaignGoalSelection } from './goal-selection';\r\nimport { CampaignTypeSelectionWithGoal } from './campaign-type-selection-with-goal';\r\nimport { AdTypeSelectionWithGoal } from './ad-type-selection-with-goal';\r\nimport { CampaignTypeSelectionNoGoal } from './campaign-type-selection-no-goal';\r\nimport { setGlobalSelectedCampaignObjective } from '../helpers/campaign-objective';\r\nimport { shouldRenderCustomComonentEvaluvator, CustomSectionSelector } from '../components/custom-sections/custom-section-selector';\r\nimport { UnifiedAppAdsCard, PlainCard } from '../components/ad-type-card';\r\nimport { DefaultAdTypeSelectionPage, ShoppingAdTypeSelectionPage, UnifiedAppAdTypeSelectionPage } from './ad-type-selection-page';\r\n\r\nconst getAdTypesRadioGroupStyle = () => {\r\n return {\r\n flexContainer: [\r\n getStyles().adTypeCardsContainer,\r\n ],\r\n };\r\n};\r\n\r\nconst getAdTypeChoiceOptionStyle = () => {\r\n return {\r\n choiceFieldWrapper: [\r\n getStyles().choiceFieldWrapper,\r\n ],\r\n input: {\r\n zIndex: 1000,\r\n },\r\n };\r\n};\r\n\r\n// const useStyles = createUseStyles(getStyles);\r\n\r\n// for some reasion eslint doesn't understand these vars are destructured and used\r\n/* eslint-disable react/no-unused-prop-types */\r\ninterface CampaignOnboardingV2PageProps {\r\n permissions: any;\r\n scope: any;\r\n siteMap: any;\r\n preferenceService: any;\r\n perfMarker: any;\r\n ccJsData: any;\r\n serverContext: any;\r\n prefetchChunks: any;\r\n netflixDealsPageImport: any;\r\n}\r\n/* eslint-disable react/no-unused-prop-types */\r\n\r\ninterface NetflixDealAgreement {\r\n accepted: boolean;\r\n acceptedOnAccountProperties: boolean;\r\n saveAcceptanceToAccountProperties: Function | undefined;\r\n}\r\n\r\nconst initialNetflixDealTcAgreement = {\r\n accepted: false,\r\n acceptedOnAccountProperties: false,\r\n saveAcceptanceToAccountProperties: undefined,\r\n};\r\n\r\nconst CampaignOnboardingV2PageInternal = (props: CampaignOnboardingV2PageProps) => {\r\n\r\n const {\r\n permissions, scope, siteMap, perfMarker, ccJsData, serverContext, prefetchChunks, netflixDealsPageImport,\r\n } = { ...props };\r\n\r\n const {\r\n CurrentAccount: {\r\n Id: aid,\r\n CurrencyCode,\r\n PaymentOption,\r\n },\r\n } = serverContext;\r\n\r\n const [selectedCampaignGoal, setSelectedCampaignGoal] = useState(CampaignGoal.NoneSelected);\r\n const [selectedCampaignType, setSelectedCampaignType] = useState(CampaignType.NoneSelected);\r\n const [selectedAdType, setSelectedAdType] = useState(AdTypes.NoneSelected);\r\n const [disabledCampaignTypes, setDisabledCampaignTypes] = useState([]);\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const [disabledAdTypes, setDisabledAdTypes] = useState([]);\r\n const [disabledGoals, setDisabledGoals] = useState([]);\r\n // TODO need to have better defaults for these maps. Can't be empty but shouldn't include types that are disabled\r\n const [campaignGoalToCampaignTypeMap, setCampaignGoalToCampaignTypeMap] = useState(CampaignGoalsToCampaignTypesMap);\r\n const [campaignAdTypeMap, setcampaignAdTypeMap] = useState(getCampaignAdTypes([]));\r\n const [FACCouponInfo, setFACCouponInfo] = useState(null);\r\n const [selectedNetflixDeal, setSelectedNetflixDeal] = useState(undefined);\r\n const [netflixDealTcAgreement, setNetflixDealsTcAgreement] = useState(initialNetflixDealTcAgreement);\r\n\r\n const pageSection2Ref = React.useRef(null);\r\n const adTypeSelectionRef = React.useRef(null);\r\n\r\n const [sectionRefs, setSectionRefs] = useState[]>([]);\r\n const [shouldRenderCustomSection, setShouldRenderCustomSection] = useState(false);\r\n\r\n const styles = useDefaultStyles(getStyles);\r\n const i18n: any = useContext(I18nContext);\r\n const scenarioContext: any = useContext(ScenarioContext);\r\n\r\n const localStorage = getLocalStorage();\r\n const isLocalStorageSupported = localStorage.supportsStorage();\r\n\r\n const isShoppingForBrandsEnabled = useMemo(() => permissions?.IsSPAv2Enabled && !permissions?.IsDomesticSimplifiedChineseEnabled && !(permissions?.IsSPAv2Enabled && !permissions?.dynamic?.SponsoredPromotionsByBrands && permissions?.dynamic?.MranDeprecation), [permissions]);\r\n const isSpbEnabled = useMemo(() => isShoppingForBrandsEnabled && permissions?.dynamic?.SponsoredPromotionsByBrands && !permissions?.dynamic?.MranSimplificationV2, [permissions, isShoppingForBrandsEnabled]);\r\n // ------------------ USEEFFECTS ------------------\r\n\r\n // get disabled campaign types and ad types from permissions, set campaign type maps and available goals based on those\r\n useEffect(() => {\r\n const dCampaignTypes: CampaignType[] = [];\r\n const dAdTypes: AdTypes[] = [];\r\n const dGoals: CampaignGoal[] = [];\r\n\r\n const isPmaxEnabled = permissions?.dynamic?.PerformanceMaxCampaigns && (!permissions?.IsDomesticSimplifiedChineseEnabled || permissions?.dynamic?.PerformanceMaxInCnMarket);\r\n const isDisplayPlusEnabled = permissions?.dynamic?.DisplayPlusCampaigns;\r\n const isNetflixAdsEnabled = permissions?.dynamic?.NetflixDealNewExperienceEnabled && permissions?.IsDealEnabledForMsAds && !permissions?.IsDomesticSimplifiedChineseEnabled;\r\n const isVideoEnabled = (permissions?.IsVideoAdsForCampaignEnabled || permissions?.dynamic?.XandrVideoCampaigns) && !permissions.IsDomesticSimplifiedChineseEnabled;\r\n const isDisplayAdsEnabled = permissions?.dynamic?.XandrDisplayAdsCampaigns;\r\n const isAudienceEnabled = permissions?.IsAIMCampaignEnabled;\r\n const isHotelEnabled = permissions?.dynamic.HotelCampaign && !permissions?.IsDomesticSimplifiedChineseEnabled;\r\n const isHotelRenamedToLodging = permissions?.dynamic?.IsRenameHotelToLodgingEnabled;\r\n const isSmartShoppingDeprecated = permissions?.dynamic?.SSCDeprecation;\r\n // Microsoft Store Ads access is limited for advertisers in regions where Enhanced Shopping Campaigns V2 is not GA like CN.\r\n const isMicrosoftStoreAdsEnabled = permissions.dynamic.AppAdsCampaignPhaseOne && (!permissions?.IsDomesticSimplifiedChineseEnabled || permissions?.dynamic?.AppCampaignInCnMarket);\r\n // AWF is out of scope for PA CN\r\n const isAudienceShoppingCampaignEnabled = !permissions?.IsDomesticSimplifiedChineseEnabled;\r\n const isEnableMultiAdFormat = permissions.dynamic.MultiAdFormat;\r\n const isLinkedInEnabled = permissions.dynamic.LinkedInCampaigns && (PaymentOption === 'Threshold' || PaymentOption === 'Monthly Invoice');\r\n const isUnifiedAppAdsEnabled = permissions.dynamic.UnifiedAppAds;\r\n const isMranDeprecated = permissions?.dynamic?.MranDeprecation;\r\n\r\n if (!isHotelEnabled) {\r\n dCampaignTypes.push(CampaignType.Hotel);\r\n dCampaignTypes.push(CampaignType.Lodging);\r\n } else if (isHotelRenamedToLodging) dCampaignTypes.push(CampaignType.Hotel);\r\n else dCampaignTypes.push(CampaignType.Lodging);\r\n if (!isPmaxEnabled) dCampaignTypes.push(CampaignType.PerformanceMax);\r\n if (!isDisplayPlusEnabled) dCampaignTypes.push(CampaignType.DisplayPlus);\r\n if (!isAudienceEnabled) dCampaignTypes.push(CampaignType.DisplayPlus);\r\n if (!isShoppingForBrandsEnabled) dCampaignTypes.push(CampaignType.ShoppingForBrands);\r\n if (!isVideoEnabled) {\r\n dCampaignTypes.push(CampaignType.ConnectedTV);\r\n dAdTypes.push(AdTypes.Video);\r\n }\r\n if (isEnableMultiAdFormat) {\r\n dAdTypes.push(AdTypes.Video);\r\n dAdTypes.push(AdTypes.Display);\r\n }\r\n if (!isDisplayAdsEnabled) dAdTypes.push(AdTypes.Display);\r\n if (!isNetflixAdsEnabled) dAdTypes.push(AdTypes.Netflix);\r\n if (!isSpbEnabled) dAdTypes.push(AdTypes.SPB);\r\n if (isSmartShoppingDeprecated) {\r\n dCampaignTypes.push(CampaignType.SmartShopping);\r\n dAdTypes.push(AdTypes.SmartShopping);\r\n }\r\n if (!isMicrosoftStoreAdsEnabled) dCampaignTypes.push(CampaignType.WindowsStore);\r\n if (!isAudienceShoppingCampaignEnabled) dAdTypes.push(AdTypes.ShoppingAudience);\r\n if (!isLinkedInEnabled) dCampaignTypes.push(CampaignType.LinkedIn);\r\n if (isMranDeprecated) dAdTypes.push(AdTypes.MRN);\r\n if (isUnifiedAppAdsEnabled) {\r\n dCampaignTypes.push(CampaignType.WindowsStore);\r\n if (!isMicrosoftStoreAdsEnabled) dAdTypes.push(AdTypes.WindowsAppStore);\r\n } else {\r\n dCampaignTypes.push(CampaignType.UnifiedAppAds);\r\n }\r\n\r\n setDisabledCampaignTypes(dCampaignTypes);\r\n setDisabledAdTypes(dAdTypes);\r\n\r\n const goalToTypeMap = getCampaignGoalToCampaignTypeMap(dCampaignTypes);\r\n Object.entries(goalToTypeMap).forEach(([goal, types]) => {\r\n if (Object.values(types).length === 0) dGoals.push(goal as CampaignGoal);\r\n });\r\n\r\n if (isUnifiedAppAdsEnabled) {\r\n dGoals.push(CampaignGoal.PromoteApp);\r\n } else {\r\n dGoals.push(CampaignGoal.UnifiedPromoteApp);\r\n }\r\n\r\n setDisabledGoals(dGoals);\r\n setCampaignGoalToCampaignTypeMap(goalToTypeMap);\r\n setcampaignAdTypeMap(getCampaignAdTypes(dAdTypes));\r\n }, [permissions, isShoppingForBrandsEnabled, isSpbEnabled]);\r\n\r\n useEffect(() => {\r\n if (sectionRefs.length > 0) {\r\n sectionRefs[sectionRefs.length - 1].current?.scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n }\r\n }, [sectionRefs]);\r\n\r\n useEffect(() => {\r\n if (isLocalStorageSupported) {\r\n localStorage.invalidate('XandrVideoCampaignType');\r\n localStorage.invalidate('DisplayPlusCampaignType');\r\n localStorage.invalidate('UnifiedAppAdsCampaignType');\r\n }\r\n\r\n // set config for CTV or DisplayPlus if selected\r\n const isCTV = selectedCampaignType === CampaignType.ConnectedTV;\r\n const isDisplayPlus = selectedCampaignType === CampaignType.DisplayPlus;\r\n const isCTVAndDealToDisplayPlusEnabled = permissions.dynamic.CTVAndDealToDisplayPlus;\r\n const isDisplayPlusEnabled = permissions.dynamic.DisplayPlusCampaigns;\r\n\r\n // TODO: Consolidate all the campaign types into UnifiedAppAds\r\n const isUnifiedAppAds = permissions.dynamic.UnifiedAppAds && selectedCampaignType === CampaignType.UnifiedAppAds;\r\n const adType = DummyAdTypesMap[selectedAdType] ? DummyAdTypesMap[selectedAdType] : selectedAdType;\r\n if (isCTV) {\r\n if (isCTVAndDealToDisplayPlusEnabled && isDisplayPlusEnabled) {\r\n appConfig.set(LocalStorageKeys.DisplayPlusCampaignType, adType);\r\n } else {\r\n appConfig.set(LocalStorageKeys.XandrVideoCampaignType, xandrVideoCampaignTypes.xandrVideoCtv);\r\n }\r\n }\r\n if (isDisplayPlus) appConfig.set(LocalStorageKeys.DisplayPlusCampaignType, adType);\r\n if (isLocalStorageSupported) {\r\n if (isCTV) {\r\n if (isCTVAndDealToDisplayPlusEnabled && isDisplayPlusEnabled) {\r\n localStorage.set(LocalStorageKeys.DisplayPlusCampaignType, adType);\r\n } else {\r\n localStorage.set(LocalStorageKeys.XandrVideoCampaignType, xandrVideoCampaignTypes.xandrVideoCtv);\r\n }\r\n }\r\n if (isDisplayPlus) localStorage.set(LocalStorageKeys.DisplayPlusCampaignType, adType);\r\n if (isUnifiedAppAds) {\r\n appConfig.set(LocalStorageKeys.UnifiedAppCampaignAdType, adType);\r\n localStorage.set(LocalStorageKeys.UnifiedAppCampaignAdType, adType);\r\n }\r\n }\r\n }, [isLocalStorageSupported, localStorage, permissions.dynamic.CTVAndDealToDisplayPlus, permissions.dynamic.DisplayPlusCampaigns, permissions.dynamic.UnifiedAppAds, selectedAdType, selectedCampaignType]);\r\n\r\n useEffect(() => {\r\n // indicate page load is complete.\r\n perfMarker.done();\r\n if (isFunction(prefetchChunks)) {\r\n prefetchChunks();\r\n }\r\n }, [perfMarker, prefetchChunks]);\r\n\r\n useEffect(() => {\r\n setShouldRenderCustomSection(shouldRenderCustomComonentEvaluvator({\r\n selectedGoal: selectedCampaignGoal,\r\n selectedCampaignType,\r\n permissions,\r\n }));\r\n }, [permissions, selectedCampaignGoal, selectedCampaignType]);\r\n\r\n // ------------------ CALLBACKS ------------------\r\n\r\n const handleGoalCardClick = (goalSelected) => {\r\n const activity = scenarioContext.createActivity('GoalCardClick');\r\n activity.trace({\r\n goalSelected,\r\n isFBImportForAudienceCampaignCreationEnabled: permissions.dynamic.FBImportForAudienceCampaignCreation,\r\n });\r\n setSelectedCampaignGoal(goalSelected);\r\n if (permissions.IsAmplifyEnabled && permissions.IsBoostPassCampaignGoalEnabled) {\r\n setGlobalSelectedCampaignObjective(goalSelected);\r\n }\r\n\r\n if (goalSelected === CampaignGoal.SkipGoals) {\r\n setSelectedCampaignType(CampaignType.NoneSelected);\r\n setSelectedAdType(AdTypes.NoneSelected);\r\n }\r\n\r\n setSectionRefs([pageSection2Ref]);\r\n };\r\n\r\n const navigateToCampaignCreateWizard = useCallback(\r\n () => navigateToWizard(appConfig, permissions, scope, [findWhere(siteMap, { id: 'campaign-create' })], selectedCampaignType, selectedAdType),\r\n [permissions, scope, selectedAdType, selectedCampaignType, siteMap]\r\n );\r\n\r\n const setDealToVideoMediaDealConfig = useCallback(() => {\r\n appConfig.set('VideoMediaDeal', selectedNetflixDeal);\r\n if (isLocalStorageSupported) {\r\n localStorage.invalidate('VideoMediaDeal');\r\n localStorage.set('VideoMediaDeal', selectedNetflixDeal);\r\n }\r\n }, [isLocalStorageSupported, localStorage, selectedNetflixDeal]);\r\n\r\n const navigateToVideoMediaDealCampaignCreateWizard = useCallback(() => {\r\n setDealToVideoMediaDealConfig();\r\n const activity = scenarioContext.createActivity(ActivityName.NetflixDealContinueToWizard);\r\n activity.trace('navigating to video media deal campaign create wizard');\r\n navigateToCampaignCreateWizard();\r\n }, [navigateToCampaignCreateWizard, scenarioContext, setDealToVideoMediaDealConfig]);\r\n\r\n const handleTCSaveError = useCallback(() => {\r\n const activity = scenarioContext.createActivity(ActivityName.NetflixDealContinueToWizard);\r\n activity.error('unable to save Netflix deal TC acceptance to account properties');\r\n notificationApi.showWarning(i18n.getString(_TL_('We were unable to save your acceptance of the terms and conditions. Please try again later.')));\r\n }, [i18n, scenarioContext]);\r\n\r\n const navigateToNetflixDealCampaignCreateWizard = useCallback(() => {\r\n if (selectedNetflixDeal && netflixDealTcAgreement?.accepted) {\r\n if (!netflixDealTcAgreement?.acceptedOnAccountProperties) {\r\n if (typeof netflixDealTcAgreement.saveAcceptanceToAccountProperties === 'function') {\r\n // wait for the agreement to be saved to account properties before navigating to the wizard\r\n netflixDealTcAgreement.saveAcceptanceToAccountProperties()\r\n .then(() => {\r\n navigateToVideoMediaDealCampaignCreateWizard();\r\n })\r\n .catch(() => {\r\n handleTCSaveError();\r\n });\r\n } else {\r\n handleTCSaveError();\r\n }\r\n } else {\r\n navigateToVideoMediaDealCampaignCreateWizard();\r\n }\r\n }\r\n }, [selectedNetflixDeal, netflixDealTcAgreement, navigateToVideoMediaDealCampaignCreateWizard, handleTCSaveError]);\r\n\r\n // navigate to the creation wizard when the continue button is clicked\r\n const handleContinueClick = useCallback(() => {\r\n const activity = scenarioContext.createActivity(ActivityName.ContinueClick);\r\n const isFBImportForAudienceCampaignCreationEnabled = permissions.dynamic.FBImportForAudienceCampaignCreation;\r\n activity.trace({\r\n selectedCampaignType,\r\n selectedAdType,\r\n isFBImportForAudienceCampaignCreationEnabled,\r\n });\r\n if (selectedAdType === AdTypes.MetaImport) {\r\n navigateToFBImport(scope);\r\n return;\r\n }\r\n if (selectedCampaignType !== CampaignType.NoneSelected) {\r\n if (selectedCampaignType === CampaignType.ConnectedTV && selectedAdType === AdTypes.Netflix) {\r\n navigateToNetflixDealCampaignCreateWizard();\r\n } else {\r\n navigateToCampaignCreateWizard();\r\n }\r\n }\r\n }, [navigateToCampaignCreateWizard, navigateToNetflixDealCampaignCreateWizard, scenarioContext, scope, selectedAdType, selectedCampaignType]);\r\n\r\n // set selected campaign type (also ad type if passed) and set objective ID in config\r\n const handleCampaignTypeSelect = useCallback((campaignType, objectiveID, adType = null) => {\r\n setSelectedCampaignType(campaignType);\r\n if (adType) setSelectedAdType(adType);\r\n appConfig.set('CampaignObjective', objectiveID);\r\n if (isLocalStorageSupported) {\r\n localStorage.invalidate('CampaignObjective');\r\n localStorage.set('CampaignObjective', objectiveID);\r\n }\r\n }, [isLocalStorageSupported, localStorage]);\r\n\r\n const getFACData = useCallback(() => {\r\n ccJsData.FeatureAdoptionCoupon\r\n .findAll({ aid })\r\n .then((coupons) => {\r\n if (!isArray(coupons) || coupons.length === 0) {\r\n return [];\r\n }\r\n return coupons;\r\n })\r\n .catch(() => [])\r\n .then(coupons => filter(\r\n coupons,\r\n ({ Status, FeatureId }) => FeatureId === parseInt(FAC_FEATURE_ID.SHOPPING_CAMPAIGN, 10)\r\n && (\r\n Status === CCUIConstants.RecommendationAdoptionStatus.NotInProgess\r\n || Status === CCUIConstants.RecommendationAdoptionStatus.Active\r\n )\r\n ))\r\n .then((coupons) => {\r\n if (coupons.length > 0) {\r\n setFACCouponInfo({\r\n ...coupons[0],\r\n CouponValueWithCurrency: i18n.formatCurrency(coupons[0].CouponValue, CurrencyCode),\r\n });\r\n }\r\n });\r\n }, [ccJsData, i18n, setFACCouponInfo, CurrencyCode, aid]);\r\n\r\n useEffect(() => {\r\n getFACData();\r\n }, [getFACData]);\r\n\r\n const onDealSelection = useCallback((deal) => {\r\n setSelectedNetflixDeal(deal);\r\n }, [setSelectedNetflixDeal]);\r\n\r\n // ------------------ RENDER FUNCTIONS ------------------\r\n\r\n const renderPageSectionTwo = useMemo(() => {\r\n if (selectedCampaignGoal === CampaignGoal.NoneSelected) return null;\r\n else if (selectedCampaignGoal === CampaignGoal.SkipGoals) {\r\n return (\r\n \r\n );\r\n } else if (selectedCampaignGoal === CampaignGoal.UnifiedPromoteApp) {\r\n return (\r\n \r\n );\r\n }\r\n return (\r\n \r\n );\r\n }, [selectedCampaignGoal, campaignGoalToCampaignTypeMap, disabledAdTypes, permissions, handleCampaignTypeSelect, FACCouponInfo, disabledCampaignTypes, scope, siteMap, isSpbEnabled]);\r\n\r\n const renderAdTypesSelection = useMemo(() => {\r\n // don't render anything if no campaign type is selected or if the selected campaign type doesn't have any ad types\r\n if (selectedCampaignType === CampaignType.NoneSelected || selectedCampaignGoal !== CampaignGoal.SkipGoals) return null;\r\n const adTypeMap = Object.values(campaignAdTypeMap[selectedCampaignType]).filter(v => v.id !== AdTypes.MetaImport && v.id !== AdTypes.AudienceDefault);\r\n if (adTypeMap.length === 0) {\r\n setSelectedAdType(AdTypes.NoneSelected);\r\n return null;\r\n }\r\n\r\n // If the current selected ad type is not in the list of ad types for this campaign type, set the default ad type\r\n if (adTypeMap.findIndex(({ id }) => id === selectedAdType) === -1) setSelectedAdType(adTypeMap[0].id);\r\n\r\n // don't render anything if there is only one ad type (will be selected by default)\r\n if (adTypeMap.length === 1) return null;\r\n\r\n // render ad type cards\r\n const options: IChoiceGroupOption[] = adTypeMap.map((adType) => {\r\n return {\r\n key: adType.id,\r\n className: `${adType.id}Card`,\r\n text: '',\r\n styles: getAdTypeChoiceOptionStyle,\r\n onRenderLabel: () => null,\r\n onRenderField: (optionProps) => {\r\n if (selectedCampaignType === CampaignType.UnifiedAppAds) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n );\r\n },\r\n };\r\n });\r\n\r\n return setSelectedAdType(option?.key as AdTypes)} selectedKey={selectedAdType} />;\r\n\r\n }, [selectedCampaignType, selectedCampaignGoal, campaignAdTypeMap, selectedAdType, permissions, FACCouponInfo]);\r\n\r\n const renderAdTypesPageSection = useMemo(() => {\r\n const getSectionsWithoutAdTypeSelectionRef = (refs) => {\r\n const indexOfAdTypeSelectionRef = refs.findIndex(ref => ref === adTypeSelectionRef);\r\n if (indexOfAdTypeSelectionRef > -1) {\r\n const newSectionRefs = [...refs];\r\n newSectionRefs.splice(indexOfAdTypeSelectionRef, 1);\r\n return newSectionRefs;\r\n }\r\n return refs;\r\n };\r\n\r\n if (selectedCampaignGoal === CampaignGoal.SkipGoals && selectedCampaignType !== CampaignType.NoneSelected) {\r\n const adTypeCards = renderAdTypesSelection;\r\n if (!adTypeCards) {\r\n\r\n // remove the ad type section ref from sectionRefs array\r\n setSectionRefs(previousRefs => ([...getSectionsWithoutAdTypeSelectionRef(previousRefs)]));\r\n\r\n return null;\r\n }\r\n setSectionRefs(previousRefs => ([...getSectionsWithoutAdTypeSelectionRef(previousRefs), adTypeSelectionRef]));\r\n\r\n if (selectedCampaignType === CampaignType.UnifiedAppAds) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n if (selectedCampaignType === CampaignType.StandardShopping || selectedCampaignType === CampaignType.ShoppingForBrands) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n // remove the ad type section ref from sectionRefs array\r\n setSectionRefs(previousRefs => ([...getSectionsWithoutAdTypeSelectionRef(previousRefs)]));\r\n return null;\r\n }, [renderAdTypesSelection, selectedCampaignGoal, selectedCampaignType]);\r\n\r\n const renderNetflixDealsPageSection = useMemo(() => {\r\n if (selectedCampaignType === CampaignType.ConnectedTV && selectedAdType === AdTypes.Netflix) {\r\n // eslint-disable-next-line import/no-unresolved\r\n const DelayedNetflixDeals = lazy(() => netflixDealsPageImport()\r\n .then(e => e.default)\r\n .then(module => ({ default: module })));\r\n return (\r\n } >\r\n setNetflixDealsTcAgreement(agreement)}\r\n />\r\n \r\n );\r\n }\r\n return null;\r\n }, [netflixDealsPageImport, selectedCampaignType, selectedAdType, onDealSelection]);\r\n\r\n useEffect(() => {\r\n const { selectedCampaignObjectiveKey } = scope.values;\r\n if (selectedCampaignObjectiveKey === 'SponsoredShoppingCampaign') {\r\n setSelectedCampaignGoal(CampaignGoal.SkipGoals);\r\n }\r\n }, [scope.values]);\r\n\r\n const renderContinueButton = useMemo(() => {\r\n if (shouldRenderCustomSection) {\r\n // the custom section must handle from the continue button.\r\n return (\r\n \r\n );\r\n }\r\n\r\n if (!renderNetflixDealsPageSection || selectedNetflixDeal) {\r\n return ();\r\n }\r\n\r\n return null;\r\n }, [handleContinueClick, i18n, netflixDealTcAgreement, permissions, renderNetflixDealsPageSection, scenarioContext, selectedCampaignGoal, selectedCampaignType, selectedNetflixDeal, shouldRenderCustomSection]);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n {renderPageSectionTwo}\r\n {renderAdTypesPageSection}\r\n {renderNetflixDealsPageSection}\r\n {renderContinueButton}\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst CampaignOnboardingV2Page = (props) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const CampaignOnboardingV2 = withSiteMap(withCcJsData(withPreference(withPermissions(withScope(CampaignOnboardingV2Page)))));\r\n","import { bgColor, cardColor, selectedCardBorderColor, font } from './vars';\r\n\r\nconst pageContainer = {\r\n backgroundColor: bgColor,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n gap: '80px',\r\n rowGap: '30vh',\r\n minHeight: '100%',\r\n};\r\n\r\nconst containerColumn = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n};\r\n\r\nconst goalsSectionContainer = {\r\n ...containerColumn,\r\n maxWidth: '821px',\r\n rowGap: '33px',\r\n};\r\n\r\nconst titleText = {\r\n ...containerColumn,\r\n fontFamily: font,\r\n textAlign: 'center',\r\n gap: '8px',\r\n marginTop: '67px',\r\n marginBottom: 32,\r\n};\r\n\r\nconst titleTextPrimaryText = {\r\n fontSize: '28px',\r\n fontWeight: '600',\r\n lineHeight: '37px',\r\n letterSpacing: '-0.25px',\r\n};\r\n\r\nconst titleTextSecondaryText = {\r\n fontSize: '16px',\r\n fontWeight: '400',\r\n lineHeight: '21px',\r\n letterSpacing: '0px',\r\n};\r\n\r\nconst campaignTypeSectionContainer = {\r\n ...containerColumn,\r\n scrollMarginTop: '20px',\r\n maxWidth: '100%',\r\n justifyContent: 'flex-start',\r\n rowGap: '33px',\r\n marginBottom: '60px',\r\n minHeight: '1044px',\r\n '@media (max-height: 950px)': {\r\n minHeight: 'auto', // Set height to auto for smaller screens\r\n },\r\n};\r\n\r\nconst campaignTypeSectionContainerTitleText = {\r\n ...titleText,\r\n marginTop: '0px',\r\n marginBottom: '30px',\r\n};\r\n\r\nconst cardsContainerWithGoals = {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n flexDirection: 'column',\r\n gap: '16px',\r\n width: '100%',\r\n height: '740px', // Default height for larger screens\r\n '@media (max-height: 950px)': {\r\n height: 'auto', // Set height to auto for smaller screens\r\n },\r\n padding: '24px',\r\n borderRadius: '6px',\r\n boxShadow: '0px 3px 6px 0px #0000001F',\r\n backgroundColor: cardColor,\r\n};\r\n\r\nconst typeAndPreviewContainer = {\r\n display: 'grid',\r\n height: '100%',\r\n alignItems: 'center',\r\n gridTemplateColumns: '1fr 1fr',\r\n};\r\n\r\nconst typeContainer = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '20px',\r\n};\r\n\r\nconst typeContainerTitleText = {\r\n ...titleText,\r\n alignItems: 'start',\r\n marginTop: '0px',\r\n marginBottom: '30px',\r\n '@media (max-height: 950px)': {\r\n marginBottom: '0px',\r\n },\r\n};\r\n\r\nconst typeContainerTitleTextPrimaryText = {\r\n ...titleTextPrimaryText,\r\n lineHeight: '32px',\r\n letterSpacing: '0px',\r\n};\r\n\r\nconst typeContainerTitleTextSecondaryText = {\r\n ...titleTextSecondaryText,\r\n color: '#605E5C',\r\n};\r\n\r\nconst typeContainerTitleTextSecondaryTextHighlighted = {\r\n color: '#1355D4',\r\n fontWeight: '600',\r\n // color: #3D07D5;\r\n};\r\n\r\nconst types = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '5px',\r\n};\r\n\r\nconst previewContainer = {\r\n width: '616px',\r\n height: '692px',\r\n '@media (max-height: 950px)': {\r\n height: 'auto', // Set height to auto for smaller screens\r\n },\r\n borderRadius: '6px',\r\n backgroundColor: bgColor,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-around',\r\n};\r\n\r\nconst choiceGroupWrapper = {\r\n '& input[type=radio]': {\r\n width: '100%',\r\n height: '100%',\r\n },\r\n};\r\n\r\nconst adTypePageSectionContainer = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n marginTop: '100px',\r\n};\r\n\r\nconst adTypeCardsContainer = {\r\n ...choiceGroupWrapper,\r\n justifyContent: 'center',\r\n display: 'flex',\r\n gap: '8px',\r\n};\r\n\r\nconst adTypeCard = {\r\n width: '240px',\r\n height: '100%',\r\n padding: '28px',\r\n borderRadius: '4px',\r\n gap: '8px',\r\n boxShadow: '0px 2px 4px 0px #0000001A',\r\n backgroundColor: cardColor,\r\n fontFamily: font,\r\n letterSpacing: '0px',\r\n textAlign: 'left',\r\n border: '1px solid rgba(0, 0, 0, 0.0)',\r\n};\r\n\r\nconst adTypeIconCard = {\r\n ...adTypeCard,\r\n width: '302px',\r\n textAlign: 'center',\r\n};\r\n\r\nconst adTypeIconCardSelected = {\r\n ...adTypeIconCard,\r\n border: `1px solid ${selectedCardBorderColor}`,\r\n};\r\n\r\nconst adTypeCardTitleWrapper = {\r\n display: 'flex',\r\n gap: '8px',\r\n};\r\n\r\nconst adTypeCardTitleText = {\r\n marginBottom: '8px',\r\n fontSize: '16px',\r\n fontWeight: '600',\r\n lineHeight: '21px',\r\n};\r\n\r\nconst adTypeCardDescriptionText = {\r\n fontSize: '14px',\r\n fontWeight: '400',\r\n lineHeight: '19px',\r\n};\r\n\r\nconst adTypeCardHover = {\r\n ...adTypeCard,\r\n cursor: 'pointer',\r\n backgroundColor: bgColor,\r\n};\r\n\r\nconst adTypeCardSelected = {\r\n ...adTypeCard,\r\n border: `1px solid ${selectedCardBorderColor}`,\r\n};\r\n\r\nconst adTypeCardIcon = {\r\n margin: 20,\r\n};\r\n\r\nconst cardsContainerNoGoals = {\r\n ...choiceGroupWrapper,\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n justifyContent: 'center',\r\n gap: '16px',\r\n};\r\n\r\nconst campaignTypeIcon = {\r\n pointerEvents: 'none',\r\n margin: '10px 0 -10px 0',\r\n};\r\n\r\nconst choiceFieldWrapper = {\r\n height: '100%',\r\n};\r\n\r\nconst facBadge = {\r\n position: 'absolute',\r\n top: '10px',\r\n right: '40px',\r\n};\r\n\r\nexport const getStyles = () => {\r\n return {\r\n choiceGroupWrapper,\r\n pageContainer,\r\n containerColumn,\r\n goalsSectionContainer,\r\n titleText,\r\n titleTextPrimaryText,\r\n titleTextSecondaryText,\r\n campaignTypeSectionContainer,\r\n campaignTypeSectionContainerTitleText,\r\n cardsContainerWithGoals,\r\n typeAndPreviewContainer,\r\n typeContainer,\r\n typeContainerTitleText,\r\n typeContainerTitleTextPrimaryText,\r\n typeContainerTitleTextSecondaryText,\r\n typeContainerTitleTextSecondaryTextHighlighted,\r\n types,\r\n previewContainer,\r\n adTypePageSectionContainer,\r\n adTypeCardsContainer,\r\n adTypeCard,\r\n adTypeIconCard,\r\n adTypeIconCardSelected,\r\n adTypeCardIcon,\r\n adTypeCardTitleWrapper,\r\n adTypeCardTitleText,\r\n adTypeCardDescriptionText,\r\n adTypeCardHover,\r\n adTypeCardSelected,\r\n cardsContainerNoGoals,\r\n campaignTypeIcon,\r\n choiceFieldWrapper,\r\n facBadge,\r\n };\r\n};\r\n\r\n","export const bgColor = '#FAF9F8';\r\nexport const cardColor = '#FFFFFF';\r\nexport const selectedCardBorderColor = '#0078D4';\r\nexport const font = 'Segoe UI';\r\n","export const CONFIRM_MESSAGES_TYPE = {\r\n REMOVE_ACTIVE_CONVERSION: 'REMOVE_ACTIVE_CONVERSION',\r\n ADD_CONVERSION_GOALS_MESSAGE: 'ADD_CONVERSION_GOALS_MESSAGE',\r\n CONFIRM_CAMPAIGN_LEVEL_GOALS: 'CONFIRM_CAMPAIGN_LEVEL_GOALS',\r\n CONFIRM_ACCOUNT_LEVEL_GOALS: 'CONFIRM_ACCOUNT_LEVEL_GOALS',\r\n};\r\n\r\nexport const CONFIRM_MESSAGES = {\r\n [CONFIRM_MESSAGES_TYPE.REMOVE_ACTIVE_CONVERSION]: {\r\n title: _TL_('Remove active conversion goal from campaign?'),\r\n content: _TL_('You\\'re removing a conversion goal that\\'s actively receiving conversions, which may negatively impact campaign performance. Confirm that the campaign has at least one active goal. Ensure that your campaign is optimized by conversion goals aligned with the campaign’s objective (e.g., a goal tracking homepage visits isn’t directly relevant for a campaign driving sales).'),\r\n },\r\n [CONFIRM_MESSAGES_TYPE.ADD_CONVERSION_GOALS_MESSAGE]: {\r\n title: _TL_('Add selected conversion goals to campaign?'),\r\n content: _TL_('The selected goals currently receive low conversions, which may negatively impact campaign performance. Ensure that for offline conversion goals, conversions are uploaded within a week, and for online conversions, UET tags are correctly set up. Automated bid strategies (e.g., Target CPA, Target ROAS, Maximize conversions, Maximize conversion value) need at least 30 conversions in the past 30 days to optimize performance effectively. Ensure that your campaign is optimized by conversion goals aligned with the campaign’s objective (e.g., a goal tracking homepage visits isn\\'t directly relevant for a campaign driving sales).'),\r\n },\r\n [CONFIRM_MESSAGES_TYPE.CONFIRM_CAMPAIGN_LEVEL_GOALS]: {\r\n title: _TL_('Confirm campaign-level conversion goals?'),\r\n content: _TL_('These changes may negatively impact campaign performance. Ensure the campaign has at least one goal with sufficient conversions. For offline conversion goals, conversions need to be uploaded within a week, and for online conversions, the UET tag needs to be set up correctly. Automated bid strategies (e.g., Target CPA, Target ROAS, Maximize conversions, Maximize conversion value) need at least 30 conversions in the past 30 days to optimize performance effectively. Ensure that your campaign is optimized by conversion goals aligned with the campaign\\'t objective (e.g., a goal tracking homepage visits isn\\'t directly relevant for a campaign driving sales).'),\r\n },\r\n [CONFIRM_MESSAGES_TYPE.CONFIRM_ACCOUNT_LEVEL_GOALS]: {\r\n title: _TL_('Use account-level goals to optimize this campaign?'),\r\n content: _TL_('Your campaign performance will now be optimized by all eligible account-level conversion goals. Ensure that your campaign is optimized by conversion goals directly aligned with the campaign\\'s objective (e.g., a goal tracking homepage visits isn\\'t directly relevant for a campaign driving sales).'),\r\n },\r\n};\r\n","\r\nimport _ from 'underscore';\r\nimport { CONFIRM_MESSAGES_TYPE } from './constants';\r\n\r\nconst CONVERSION_SCOPE = {\r\n ACCOUNT_SCOPE: 'account-scope',\r\n CAMPAIGN_SCOPE: 'campaign-scope',\r\n};\r\n\r\nconst targetBiddingSchemeTypeList = [\r\n 'MaxConversions',\r\n 'TargetCpa',\r\n 'TargetRoas',\r\n 'MaxConversionValue',\r\n];\r\n\r\nexport const getMessageType = (initialData, patchData) => {\r\n const BiddingSchemeType = _.get(patchData, ['campaign', 'BiddingScheme', 'Type']);\r\n if (!targetBiddingSchemeTypeList.includes(BiddingSchemeType)) {\r\n return null;\r\n }\r\n\r\n const goalSelectionPath = ['campaign', 'conversionGoals', 'goalSelection'];\r\n const initialGoalSelection = _.get(patchData, ['campaign', 'conversionGoals', 'originalConversionGoals'], []);\r\n const goalSelection = _.get(patchData, goalSelectionPath, []);\r\n const hasAnyGoalSelections = _.size(goalSelection) > 0;\r\n\r\n const initialGoalScope = _.size(initialGoalSelection) > 0 ? CONVERSION_SCOPE.CAMPAIGN_SCOPE : CONVERSION_SCOPE.ACCOUNT_SCOPE;\r\n const newGoalScope = hasAnyGoalSelections? CONVERSION_SCOPE.CAMPAIGN_SCOPE : CONVERSION_SCOPE.ACCOUNT_SCOPE;\r\n const scopeSelectionPath = ['campaign', 'conversionGoals', 'goalScopeSelection'];\r\n const newGoalScopeValue = _.get(patchData, scopeSelectionPath, '');\r\n\r\n const removedGoals = initialGoalSelection.filter(initialGoal =>\r\n !goalSelection.some(goal => goal.Id === initialGoal.Id));\r\n\r\n if (initialGoalScope === CONVERSION_SCOPE.ACCOUNT_SCOPE && (newGoalScope === CONVERSION_SCOPE.CAMPAIGN_SCOPE && newGoalScopeValue === CONVERSION_SCOPE.CAMPAIGN_SCOPE)) {\r\n return CONFIRM_MESSAGES_TYPE.CONFIRM_CAMPAIGN_LEVEL_GOALS;\r\n } else if ((newGoalScope === CONVERSION_SCOPE.ACCOUNT_SCOPE && initialGoalScope === CONVERSION_SCOPE.CAMPAIGN_SCOPE) || (newGoalScopeValue === CONVERSION_SCOPE.ACCOUNT_SCOPE && initialGoalScope === CONVERSION_SCOPE.CAMPAIGN_SCOPE)) {\r\n return CONFIRM_MESSAGES_TYPE.CONFIRM_ACCOUNT_LEVEL_GOALS;\r\n }\r\n\r\n if (removedGoals.some(goal => goal && (goal.TrackingStatus === 'RecordingConversions') && hasAnyGoalSelections)) {\r\n return CONFIRM_MESSAGES_TYPE.REMOVE_ACTIVE_CONVERSION;\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport const getNeedConfirming = (permissions, context) => {\r\n const data = context.data || {};\r\n const initialData = context.initialData || {};\r\n\r\n if (!(\r\n _.get(permissions, ['dynamic', 'ConversionAssociationWarning'], false)\r\n || _.get(permissions, ['dynamic', 'ConversionAssociationWarningP2'], false)\r\n || _.get(permissions, ['dynamic', 'ConversionAssociationWarningP3'], false)\r\n )) {\r\n return false;\r\n }\r\n\r\n return getMessageType(initialData, data) !== null;\r\n};\r\n","import { useMemo, useContext } from 'react';\r\nimport { getCurrentStepId, useWizardService } from '@bingads-webui-react/wizard-core';\r\nimport { CONFIRM_MESSAGES } from '@bingads-webui-campaign-react/campaign-settings-utils';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\n\r\nexport const getStyles = () => ({\r\n confirmDialogContent: {\r\n '& .ms-Dialog-main': {\r\n width: '600px',\r\n maxWidth: '80%',\r\n },\r\n '& .ms-Dialog-subText': {\r\n display: 'none',\r\n },\r\n },\r\n});\r\n\r\nexport const useConfirmDialogConfig = (stateMatch) => {\r\n const { config: wizardConfig, state: wizardState } = useWizardService();\r\n const classes = useDefaultStyles(getStyles);\r\n const i18n = useContext(I18nContext);\r\n const wizardId = wizardConfig && wizardConfig.id;\r\n\r\n const config = useMemo(() => {\r\n const dialogConfig = {\r\n confirmType: '', title: null, content: null, subText: '', disableConfirmPopup: false, className: classes.confirmDialogContent,\r\n };\r\n\r\n if (stateMatch) {\r\n const { wizardData } = wizardState.context;\r\n const currentStepId = getCurrentStepId(wizardState);\r\n\r\n if (\r\n (wizardId=== 'perf-max-north-star-setting-wizard' && currentStepId === 'CAMPAIGNSETTING')\r\n || (wizardId=== 'display-plus-wizard' && currentStepId === 'CAMPAIGN_EDIT')\r\n || (wizardId === 'SearchCampaignEditWizard' && currentStepId === 'CAMPAIGN_EDIT_SETTINGS')\r\n || (wizardId === 'standard-shopping-wizard' && currentStepId === 'CAMPAIGN_SETTINGS')\r\n ) {\r\n if (wizardData.customConfirmMessages && wizardData.customConfirmMessages.length > 0) {\r\n wizardData.customConfirmMessages.forEach((messageType) => {\r\n const foundMessage = CONFIRM_MESSAGES[messageType];\r\n if (foundMessage) {\r\n dialogConfig.content = i18n.getString(foundMessage.content);\r\n dialogConfig.title = i18n.getString(foundMessage.title);\r\n dialogConfig.confirmType = messageType;\r\n }\r\n });\r\n } else {\r\n dialogConfig.disableConfirmPopup = true;\r\n }\r\n } else {\r\n dialogConfig.disableConfirmPopup = true;\r\n }\r\n }\r\n\r\n return dialogConfig;\r\n }, [classes.confirmDialogContent, i18n, stateMatch, wizardId, wizardState]);\r\n\r\n return config;\r\n};\r\n\r\nexport const useConfirmDialogConfigWithLogger = (stateMatch) => {\r\n const config = useConfirmDialogConfig(stateMatch) || {};\r\n const activity = useContext(ActivityContext);\r\n const onLog = (action) => {\r\n if (activity && activity.trace) {\r\n activity.trace(`[ConfirmDialog] ${action} title ${config.confirmType}`);\r\n }\r\n };\r\n\r\n return {\r\n ...config, onOpenFn: () => onLog('onOpenFn'), onConfirmFn: () => onLog('onConfirmFn'), onCancelFn: () => onLog('onCancelFn'),\r\n };\r\n};\r\n","import { makeStyles } from '@fluentui/react-components';\r\n\r\nexport const HINT_WIDTH = 20;\r\nexport const useStyles = makeStyles({\r\n carouselParent: {\r\n position: 'relative',\r\n display: 'inline-flex',\r\n width: '100%',\r\n alignItems: 'end',\r\n },\r\n\r\n container: {\r\n height: '100%',\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n display: 'inline-block',\r\n flexGrow: 1,\r\n alignSelf: 'center',\r\n },\r\n parentContainer: {\r\n position: 'relative',\r\n transitionProperty: 'left',\r\n transitionDuration: '0.5s',\r\n transitionTimingFunction: 'ease-out',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n height: '100%',\r\n alignItems: 'center',\r\n },\r\n chevronButton: {\r\n alignSelf: 'center',\r\n position: 'inherit',\r\n boxShadow: '0px 4px 8px 0px #00000024',\r\n backgroundColor: '#FFFFFF',\r\n\r\n borderTopLeftRadius: '32px',\r\n borderTopRightRadius: '32px',\r\n borderBottomLeftRadius: '32px',\r\n borderBottomRightRadius: '32px',\r\n\r\n borderLeftStyle: 'solid',\r\n borderRightStyle: 'solid',\r\n borderTopStyle: 'solid',\r\n borderBottomStyle: 'solid',\r\n\r\n borderLeftWidth: '1px',\r\n borderRightWidth: '1px',\r\n borderTopWidth: '1px',\r\n borderBottomWidth: '1px',\r\n\r\n borderLeftColor: '#D1D1D1',\r\n borderRightColor: '#D1D1D1',\r\n borderTopColor: '#D1D1D1',\r\n borderBottomColor: '#D1D1D1',\r\n\r\n ':focus-visible': {\r\n borderLeftColor: '#000',\r\n borderRightColor: '#000',\r\n borderTopColor: '#000',\r\n borderBottomColor: '#000',\r\n backgroundColor: '#FFFFFF',\r\n borderLeftWidth: '2px',\r\n borderRightWidth: '2px',\r\n borderTopWidth: '2px',\r\n borderBottomWidth: '2px',\r\n height: '32px',\r\n },\r\n ':active:hover': {\r\n backgroundColor: '#FFFFFF',\r\n },\r\n ':hover': {\r\n backgroundColor: '#FFFFFF',\r\n },\r\n },\r\n chevronButtonLeft: {\r\n zIndex: 1,\r\n marginRight: '2px',\r\n left: '20px',\r\n },\r\n chevronButtonRight: {\r\n right: '20px',\r\n },\r\n hintRight: {\r\n display: 'inline-block',\r\n position: 'absolute',\r\n backgroundImage: 'linear-gradient(270deg, #FFFFFF 0%, rgba(255, 255, 255, 0.927755) 18.23%, rgba(255, 255, 255, 0.776042) 48.44%, rgba(250, 249, 255, 0.5) 78.24%, rgba(255, 255, 255, 0) 100%)',\r\n width: `${HINT_WIDTH}px`,\r\n height: '100%',\r\n right: '32px',\r\n },\r\n hintLeft: {\r\n display: 'inline-block',\r\n position: 'absolute',\r\n backgroundImage: 'linear-gradient(270deg, #FFFFFF 0%, rgba(255, 255, 255, 0.927755) 18.23%, rgba(255, 255, 255, 0.776042) 48.44%, rgba(250, 249, 255, 0.5) 78.24%, rgba(255, 255, 255, 0) 100%)',\r\n width: `${HINT_WIDTH}px`,\r\n height: '100%',\r\n left: '34px',\r\n transform: 'rotate(-180deg)',\r\n },\r\n});\r\n\r\nexport const useSimpleCarouselStyles = makeStyles({\r\n container: {\r\n overflowX: 'auto',\r\n paddingBottom: '12px',\r\n },\r\n cardContents: {\r\n display: 'flex',\r\n },\r\n});\r\n","import React, { useState, useEffect, useRef, useCallback, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { Button, mergeClasses } from '@fluentui/react-components';\r\nimport { ChevronLeft12Regular, ChevronRight12Regular } from '@fluentui/react-icons';\r\n\r\nimport { getFullyShownContentsCount } from './utils';\r\nimport { useStyles, HINT_WIDTH } from './styles';\r\n\r\nexport const Carousel = ({\r\n contents,\r\n contentWidth,\r\n i18n,\r\n}) => {\r\n const [offset, setOffset] = useState(0);\r\n const classes = useStyles();\r\n const [contentContainerWidth, setContentContainerWidth] = useState(0);\r\n const contentContainerNode = useRef(null);\r\n\r\n useEffect(() => {\r\n const handleResize = () => {\r\n if (contentContainerNode.current) {\r\n setContentContainerWidth(contentContainerNode.current.offsetWidth);\r\n }\r\n };\r\n\r\n window.addEventListener('resize', handleResize);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n };\r\n }, []);\r\n\r\n const measuredRef = useCallback((node) => {\r\n if (node) {\r\n contentContainerNode.current = node;\r\n setContentContainerWidth(contentContainerNode.current.offsetWidth);\r\n }\r\n }, []);\r\n\r\n const displayedContentCount = getFullyShownContentsCount(contentContainerWidth, contentWidth);\r\n const noMoreResult = offset + displayedContentCount + 1 > contents.length;\r\n\r\n const leftIconButton = useMemo(() => (\r\n }\r\n onClick={() => setOffset(offset - 1)}\r\n onKeyDown={(event) => {\r\n if ((event.code === 'Enter' || event.code === 'Space') && offset <= 1) {\r\n document.querySelector('.paddle-right').focus();\r\n setOffset(offset - 1);\r\n event.preventDefault();\r\n }\r\n }}\r\n aria-label={i18n.getString(_TL_('click to see previous'))}\r\n />\r\n ), [i18n, offset, classes]);\r\n\r\n const rightIconButton = useMemo(() => (\r\n }\r\n className={mergeClasses('paddle-right', classes.chevronButton, classes.chevronButtonRight)}\r\n onClick={() => {\r\n const newOffset = offset + 1;\r\n if (newOffset + displayedContentCount <= contents.length) {\r\n setOffset(offset + 1);\r\n }\r\n }}\r\n onKeyDown={(event) => {\r\n if ((event.code === 'Enter' || event.code === 'Space') && offset + displayedContentCount >= contents.length - 1) {\r\n document.querySelector('.paddle-left').focus();\r\n setOffset(offset + 1);\r\n event.preventDefault();\r\n }\r\n }}\r\n aria-label={i18n.getString(_TL_('click to see next'))}\r\n />\r\n ), [displayedContentCount, i18n, contents, offset, classes]);\r\n\r\n const parentContainer = useMemo(() => {\r\n const left = offset > 0 ? ((-1 * contentWidth * offset) + HINT_WIDTH) : 0;\r\n return (\r\n \r\n {displayedContentCount > 0 &&\r\n index + offset + 1).join(), current2: offset + displayedContentCount, total: contents.length })\r\n }\r\n />\r\n }\r\n {\r\n contents.map((content, index) => (\r\n \r\n {content}\r\n
\r\n ))\r\n }\r\n \r\n );\r\n }, [classes.parentContainer, contentWidth, contents, offset, i18n, displayedContentCount]);\r\n\r\n if (contents.length === 0) {\r\n return null;\r\n }\r\n\r\n const showRightIconButton = contents.length > displayedContentCount && !noMoreResult;\r\n\r\n return (\r\n
\r\n {offset > 0 && leftIconButton}\r\n 0 ? { width: contentContainerWidth } : {}}\r\n >\r\n {displayedContentCount > 0 && parentContainer}\r\n
\r\n {\r\n offset > 0 &&\r\n
\r\n }\r\n {showRightIconButton &&\r\n \r\n
\r\n {rightIconButton}\r\n \r\n }\r\n
\r\n );\r\n};\r\n\r\nCarousel.propTypes = {\r\n contents: PropTypes.arrayOf(PropTypes.node).isRequired,\r\n contentWidth: PropTypes.number.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n};\r\n","import _ from 'underscore';\r\n\r\nexport const getFullyShownContentsCount = (width, contentWidth) => {\r\n if (!_.isNumber(width) || width <= 0 || !_.isNumber(contentWidth) || contentWidth <= 0) {\r\n return 0;\r\n }\r\n return Math.floor(width / contentWidth);\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { mergeClasses } from '@fluentui/react-components';\r\n\r\nimport { useSimpleCarouselStyles } from './styles';\r\n\r\nexport const SimpleCarousel = ({\r\n contents,\r\n}) => {\r\n const classes = useSimpleCarouselStyles();\r\n\r\n return (\r\n
\r\n
\r\n {contents}\r\n
\r\n
\r\n );\r\n};\r\n\r\nSimpleCarousel.propTypes = {\r\n contents: PropTypes.arrayOf(PropTypes.node).isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { mapObject, constant, flatten, noop } from 'underscore';\r\nimport { Dropdown, DropdownMenuItemType } from '@fluentui/react';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getContainerFactoryStyles } from './styles/categorized-dropdown-list-styles';\r\n\r\nlet dropdownStyles = {\r\n dropdownItemHeader: {\r\n color: 'black',\r\n fontWeight: 'bold',\r\n },\r\n};\r\n\r\nconst ConstructOptionKey = (categoryKey, optionKey) => `${categoryKey}_${optionKey}`;\r\n\r\nconst DeConstructOptionKey = constructedOptionKey => ({\r\n categoryKey: constructedOptionKey.split('_')[0],\r\n optionKey: constructedOptionKey.split('_')[1],\r\n});\r\n\r\nconst mapCatogriesToDropdownOptions = categories => flatten(categories.map((category, index) => {\r\n const options = category.value.map((item, innerIndex) => ({\r\n key: ConstructOptionKey(category.key, item.key ? item.key : innerIndex),\r\n text: item.text,\r\n title: item.text,\r\n }));\r\n // add header option\r\n options.unshift({ key: `${category.key}_Header`, text: category.text, itemType: DropdownMenuItemType.Header });\r\n // add divider option\r\n options.push({ key: `divider_${index}`, text: '-', itemType: DropdownMenuItemType.Divider });\r\n return options;\r\n}));\r\n\r\nconst CategorizedDropdownListUnStyle = (props) => {\r\n const {\r\n classes: { CategorizedDropdownListContainer },\r\n categories,\r\n onSelectionChange,\r\n placeholder,\r\n label,\r\n dropdownStyle,\r\n selectedKey,\r\n forwardedRef,\r\n maxHeight,\r\n disabled,\r\n } = props;\r\n if (dropdownStyle) {\r\n const { title } = dropdownStyle;\r\n if (!title) {\r\n dropdownStyle.title = {\r\n borderColor: 'rgb(179, 176, 173)',\r\n };\r\n }\r\n if (title && !title.borderColor) {\r\n title.borderColor = 'rgb(179, 176, 173)';\r\n }\r\n dropdownStyles = { ...dropdownStyles, ...dropdownStyle };\r\n }\r\n\r\n const options = mapCatogriesToDropdownOptions(categories);\r\n const [selectedItem, setSelectedItem] = React.useState();\r\n let defaultSelectedKey;\r\n if (selectedKey) {\r\n const { categoryKey, optionKey } = selectedKey;\r\n defaultSelectedKey = ConstructOptionKey(categoryKey, optionKey);\r\n }\r\n\r\n const onChange = (_, item) => {\r\n setSelectedItem(item);\r\n const { categoryKey, optionKey } = DeConstructOptionKey(item.key);\r\n onSelectionChange({\r\n category: categoryKey,\r\n value: item,\r\n optionKey,\r\n });\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nCategorizedDropdownListUnStyle.propTypes = {\r\n classes: PropTypes.shape(mapObject(\r\n getContainerFactoryStyles(),\r\n constant(PropTypes.string.isRequired)\r\n )).isRequired,\r\n categories: PropTypes.arrayOf(PropTypes.shape({\r\n key: PropTypes.string.isRequired,\r\n text: PropTypes.string.isRequired,\r\n value: PropTypes.arrayOf(PropTypes.shape({\r\n key: PropTypes.string,\r\n text: PropTypes.string.isRequired,\r\n }).isRequired).isRequired,\r\n })).isRequired,\r\n onSelectionChange: PropTypes.func,\r\n placeholder: PropTypes.string,\r\n label: PropTypes.string,\r\n // eslint-disable-next-line react/forbid-prop-types\r\n dropdownStyle: PropTypes.object,\r\n selectedKey: PropTypes.shape({\r\n categoryKey: PropTypes.string.isRequired,\r\n optionKey: PropTypes.string.isRequired,\r\n }),\r\n // eslint-disable-next-line react/forbid-prop-types\r\n forwardedRef: PropTypes.any,\r\n maxHeight: PropTypes.string || PropTypes.number,\r\n disabled: PropTypes.bool,\r\n};\r\n\r\nCategorizedDropdownListUnStyle.defaultProps = {\r\n onSelectionChange: noop,\r\n placeholder: undefined,\r\n label: undefined,\r\n dropdownStyle: null,\r\n selectedKey: null,\r\n forwardedRef: null,\r\n maxHeight: null,\r\n disabled: false,\r\n};\r\n\r\nconst CategorizedDropdownListStyled =\r\n withDefaultStyles(CategorizedDropdownListUnStyle, getContainerFactoryStyles);\r\n\r\nexport const CategorizedDropdownList =\r\n React.forwardRef((props, ref) => );\r\n\r\n","export const getContainerFactoryStyles = () =>\r\n ({\r\n CategorizedDropdownListContainer: {\r\n },\r\n });\r\n","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (html, text) {pug_html = pug_html + \"\\u003Cdiv class=\\\"step-indicator\\\"\\u003E\";\nif (text) {\npug_html = pug_html + \"\\u003Cspan class=\\\"title\\\"\\u003E\" + (pug.escape(null == (pug_interp = text) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse\nif (html) {\npug_html = pug_html + (null == (pug_interp = html) ? \"\" : pug_interp);\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"html\" in locals_for_with?locals_for_with.html:typeof html!==\"undefined\"?html:undefined,\"text\" in locals_for_with?locals_for_with.text:typeof text!==\"undefined\"?text:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (contentClass, steps) {pug_html = pug_html + \"\\u003Cdiv class=\\\"steps-wizard\\\"\\u003E\\u003Cdiv class=\\\"step-indicator-container col-sm-2\\\"\\u003E\";\n// iterate steps\n;(function(){\n var $$obj = steps;\n if ('number' == typeof $$obj.length) {\n for (var index = 0, $$l = $$obj.length; index < $$l; index++) {\n var step = $$obj[index];\nif (index > 0) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"step-vertical-divider\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"step-wizard-substep\\\"\\u003E\\u003Cdiv\" + (\" class=\\\"step-indicator\\\"\"+pug.attr(\"data-bind\", 'css: {\\\n \"current-step\": ' + index + '=== stepIndex(), \\\n \"not-start-step\": ' + index + '> stepIndex(), \\\n \"completed-step\": ' + index + '< stepIndex(), \\\n }', true, true)) + \"\\u003E\\u003Cspan\" + (\" class=\\\"title\\\"\"+pug.attr(\"id\", `steptab-${index}`, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = step.title) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var index in $$obj) {\n $$l++;\n var step = $$obj[index];\nif (index > 0) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"step-vertical-divider\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"step-wizard-substep\\\"\\u003E\\u003Cdiv\" + (\" class=\\\"step-indicator\\\"\"+pug.attr(\"data-bind\", 'css: {\\\n \"current-step\": ' + index + '=== stepIndex(), \\\n \"not-start-step\": ' + index + '> stepIndex(), \\\n \"completed-step\": ' + index + '< stepIndex(), \\\n }', true, true)) + \"\\u003E\\u003Cspan\" + (\" class=\\\"title\\\"\"+pug.attr(\"id\", `steptab-${index}`, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = step.title) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"step-content-container col-sm-10\\\"\\u003E\";\n// iterate steps\n;(function(){\n var $$obj = steps;\n if ('number' == typeof $$obj.length) {\n for (var index = 0, $$l = $$obj.length; index < $$l; index++) {\n var step = $$obj[index];\npug_html = pug_html + (\"\\u003Cdiv\" + (\" class=\\\"content content-container\\\"\"+pug.attr(\"data-bind\", 'visible:' + index + ' === stepIndex()', true, true)) + \"\\u003E\\u003Cdiv class=\\\"steps-wizard__title\\\"\\u003E\\u003Cspan role=\\\"heading\\\" aria-level=\\\"1\\\" tabIndex=\\\"-1\\\"\\u003E\" + (pug.escape(null == (pug_interp = step.pageTitle) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"steps-wizard__description clearfix\\\"\\u003E\" + (pug.escape(null == (pug_interp = step.description) ? \"\" : pug_interp)));\nif (step.descriptionHelpText) {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"HelpTopic\\\"\"+\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"query\", step.descriptionHelpId, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = step.descriptionHelpText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"steps-wizard__content\",\"clearfix\",contentClass], [false,false,true]), false, true)) + \"\\u003E\\u003Cdiv\" + (\" class=\\\"content-wrapper\\\"\"+\" role=\\\"tabpanel\\\"\"+pug.attr(\"id\", `steppanel-${index}`, true, true)+pug.attr(\"aria-labelledby\", `steptab-${index}`, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var index in $$obj) {\n $$l++;\n var step = $$obj[index];\npug_html = pug_html + (\"\\u003Cdiv\" + (\" class=\\\"content content-container\\\"\"+pug.attr(\"data-bind\", 'visible:' + index + ' === stepIndex()', true, true)) + \"\\u003E\\u003Cdiv class=\\\"steps-wizard__title\\\"\\u003E\\u003Cspan role=\\\"heading\\\" aria-level=\\\"1\\\" tabIndex=\\\"-1\\\"\\u003E\" + (pug.escape(null == (pug_interp = step.pageTitle) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"steps-wizard__description clearfix\\\"\\u003E\" + (pug.escape(null == (pug_interp = step.description) ? \"\" : pug_interp)));\nif (step.descriptionHelpText) {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"HelpTopic\\\"\"+\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"query\", step.descriptionHelpId, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = step.descriptionHelpText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"steps-wizard__content\",\"clearfix\",contentClass], [false,false,true]), false, true)) + \"\\u003E\\u003Cdiv\" + (\" class=\\\"content-wrapper\\\"\"+\" role=\\\"tabpanel\\\"\"+pug.attr(\"id\", `steppanel-${index}`, true, true)+pug.attr(\"aria-labelledby\", `steptab-${index}`, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003Cdiv class=\\\"action action-container\\\"\\u003E\\u003Cdiv class=\\\"clearfix steps-wizard__footer\\\"\\u003E\\u003C!-- ko foreach: customButtons--\\u003E\\u003Cbutton class=\\\"btn\\\" data-bind=\\\"css: cssClass + (" btn-" + key), text: Text, visible: isVisible, enable: isEnable\\\"\\u003E\\u003C\\u002Fbutton\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"contentClass\" in locals_for_with?locals_for_with.contentClass:typeof contentClass!==\"undefined\"?contentClass:undefined,\"steps\" in locals_for_with?locals_for_with.steps:typeof steps!==\"undefined\"?steps:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (steps) {pug_html = pug_html + \"\\u003Cdiv class=\\\"steps-wizard\\\"\\u003E\\u003Cdiv class=\\\"step-indicator-container col-sm-2\\\"\\u003E\";\n// iterate steps\n;(function(){\n var $$obj = steps;\n if ('number' == typeof $$obj.length) {\n for (var index = 0, $$l = $$obj.length; index < $$l; index++) {\n var step = $$obj[index];\nif (index > 0) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"step-vertical-divider\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv\" + (\" class=\\\"step-header\\\"\"+pug.attr(\"data-step-name\", step.name, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var index in $$obj) {\n $$l++;\n var step = $$obj[index];\nif (index > 0) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"step-vertical-divider\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv\" + (\" class=\\\"step-header\\\"\"+pug.attr(\"data-step-name\", step.name, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"step-content-container col-sm-10\\\"\\u003E\";\n// iterate steps\n;(function(){\n var $$obj = steps;\n if ('number' == typeof $$obj.length) {\n for (var index = 0, $$l = $$obj.length; index < $$l; index++) {\n var step = $$obj[index];\npug_html = pug_html + \"\\u003Cdiv\" + (\" class=\\\"step-body\\\"\"+pug.attr(\"data-step-name\", step.name, true, true)) + \"\\u003E\\u003Cdiv class=\\\"step-page-title\\\" role=\\\"heading\\\" aria-level=\\\"1\\\"\\u003E\" + (pug.escape(null == (pug_interp = step.view && step.view.pageTitle && step.view.pageTitle.text) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"step-content content-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (\" class=\\\"step-footer action-container\\\"\"+pug.attr(\"data-step-name\", step.name, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var index in $$obj) {\n $$l++;\n var step = $$obj[index];\npug_html = pug_html + \"\\u003Cdiv\" + (\" class=\\\"step-body\\\"\"+pug.attr(\"data-step-name\", step.name, true, true)) + \"\\u003E\\u003Cdiv class=\\\"step-page-title\\\" role=\\\"heading\\\" aria-level=\\\"1\\\"\\u003E\" + (pug.escape(null == (pug_interp = step.view && step.view.pageTitle && step.view.pageTitle.text) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"step-content content-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (\" class=\\\"step-footer action-container\\\"\"+pug.attr(\"data-step-name\", step.name, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"steps\" in locals_for_with?locals_for_with.steps:typeof steps!==\"undefined\"?steps:undefined));;return pug_html;};\nmodule.exports = template;","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React, { useContext, useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { Image } from '@fluentui/react';\r\nimport { navigateToFBImport } from '../../helpers/navigate-to-wizard';\r\nimport { ActivityName, CampaignType, AdTypes } from '../../config/constants';\r\nimport { AdTypeSelectionPage } from '../../page/ad-type-selection-page/ad-type-selection-page';\r\nimport { DisplayPlusStartIcon, MetaImportIcon } from '../../helpers/icons';\r\nimport { bgColor, cardColor, font } from '../../styles/vars';\r\n\r\nconst getStyles = () => {\r\n const text = {\r\n fontFamily: font,\r\n lineHeight: '20px',\r\n letterSpacing: 0,\r\n textAlign: 'center',\r\n };\r\n return {\r\n buttonContainer: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n gap: '8px',\r\n justifyContent: 'center',\r\n },\r\n card: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'flex-start',\r\n alignItems: 'center',\r\n background: cardColor,\r\n boxShadow: '0px 2px 4px 0px #0000001A',\r\n border: '1px solid rgba(0,0,0,0)',\r\n width: 240,\r\n height: 255,\r\n borderRadius: 4,\r\n '&:hover': {\r\n cursor: 'pointer',\r\n background: bgColor,\r\n },\r\n },\r\n title: {\r\n ...text,\r\n fontSize: 16,\r\n fontWeight: 700,\r\n marginTop: 8,\r\n },\r\n description: {\r\n ...text,\r\n fontSize: 14,\r\n width: 184,\r\n fontWeight: 400,\r\n marginTop: 4,\r\n },\r\n };\r\n};\r\n\r\nconst AudienceCampaignSelecter = ({\r\n scenarioContext,\r\n handleContinueClick,\r\n}) => {\r\n const i18n: any = useContext(I18nContext);\r\n const { scope } : any = useContext(ScopeContext);\r\n const styles = useDefaultStyles(getStyles);\r\n\r\n const navigateToFBImportPage = useCallback((e) => {\r\n e.preventDefault();\r\n const activity = scenarioContext.createActivity(ActivityName.ContinueClick);\r\n activity.trace({\r\n selectedCampaignType: CampaignType.DisplayPlus,\r\n selectedAdType: AdTypes.MetaImport,\r\n isFBImportForAudienceCampaignCreationEnabled: true,\r\n });\r\n navigateToFBImport(scope);\r\n }, [scenarioContext, scope]);\r\n\r\n const continueToWizard = useCallback(() => {\r\n const activity = scenarioContext.createActivity(ActivityName.ContinueToFaceBookImport);\r\n activity.trace({\r\n selectedCampaignType: CampaignType.DisplayPlus,\r\n selectedAdType: AdTypes.Native,\r\n isFBImportForAudienceCampaignCreationEnabled: true,\r\n });\r\n handleContinueClick();\r\n }, [handleContinueClick, scenarioContext]);\r\n\r\n return (\r\n \r\n \r\n {i18n.getString(_TL_('How would you like to begin your campaign'))}\r\n {i18n.getString(_TL_('Choose to create a new campaign with Microsoft or seamlessly import one from Meta'))}\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nAudienceCampaignSelecter.propTypes = {\r\n scenarioContext: PropTypes.shape({\r\n createActivity: PropTypes.func.isRequired,\r\n }).isRequired,\r\n handleContinueClick: PropTypes.func.isRequired,\r\n};\r\nexport default AudienceCampaignSelecter;\r\n","import React, { useContext, useState, useRef, useEffect, useCallback, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { FontIcon } from '@fluentui/react';\r\nimport { PrimaryButton } from '@bingads-webui-react/fabric-with-signal';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getLocalStorage } from '@bingads-webui/storage';\r\nimport appConfig from '@bingads-webui-component-legacy/config';\r\nimport { Alert } from '@bingads-webui-react/alert';\r\nimport { HelpLink } from '@bingads-webui-react/help-link';\r\nimport { setClarityTag } from '@bingads-webui-universal/clarity';\r\n\r\n// @ts-ignore\r\nimport { ValidationGroup } from '@bingads-webui-react/validation';\r\nimport { StoreSelectContainer } from '@bingads-webui-campaign-react/store-select';\r\nimport { getRoutePathById, withSiteMap } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport storeSelectorImg from '../../../media/campaignTypeAdvIcons/storeSelector.svg';\r\nimport { CampaignGoal } from '../../config/constants';\r\n\r\nconst getStoreSelectorStyles = () => () => ({\r\n root: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n maxWidth: '1280px',\r\n minHeight: 'calc(100vh - 200px)',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n },\r\n storeSelector: {\r\n background: 'rgba(255, 255, 255, 1)',\r\n width: 783,\r\n height: 'auto',\r\n borderRadius: 4,\r\n padding: '48px 60px 48px 20px',\r\n marginTop: '50px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexDirection: 'row',\r\n columnGap: 20,\r\n flexWrap: 'wrap',\r\n '& .store-select': {\r\n width: '100%',\r\n },\r\n '& .store-settings-loading': {\r\n marginLeft: '200px',\r\n },\r\n '& .error': {\r\n color: '#A80000',\r\n },\r\n '& .btn.btn-default.alert__action': {\r\n minWidth: '140px',\r\n },\r\n boxShadow: '0px 2px 4px 0px #0000001A',\r\n },\r\n headerSection: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n },\r\n startCampaignButton: {\r\n marginTop: '50px',\r\n },\r\n storeIcon: {\r\n height: 69,\r\n width: 127,\r\n },\r\n storeDropdown: {\r\n maxWidth: '500px',\r\n },\r\n alert: {\r\n marginTop: 10,\r\n '& i': {\r\n marginRight: 10,\r\n },\r\n },\r\n});\r\n\r\nconst GoalToStoreMap = {\r\n [CampaignGoal.SellProducts]: 'ShoppingCampaign',\r\n [CampaignGoal.ConvertCustomers]: 'Conversions',\r\n};\r\n\r\nconst defaultAlertText = _TL_('To display product ads, you must select a Merchant Center store. However, if you do not wish to display product ads, you can skip selecting a store. Keep in mind if you decide to advertise products in the future, you will need to create a new campaign.');\r\n\r\nconst PerfMaxStoreSelector = ({\r\n selectedGoal,\r\n siteMap,\r\n}) => {\r\n const i18n: any = useContext(I18nContext);\r\n const { scope } : any = useContext(ScopeContext);\r\n\r\n const { aid, cid, uid } = scope.values || {};\r\n\r\n const classes = useDefaultStyles(getStoreSelectorStyles());\r\n\r\n const [showStoreSelector, setShowStoreSelector] = useState(false);\r\n\r\n const storeSelectorRef = useRef(null);\r\n\r\n const [selectedStoreResult, setSelectedStoreResult] = useState(null);\r\n\r\n const localStorage = getLocalStorage();\r\n\r\n const handleContinueClick = () => {\r\n setShowStoreSelector(true);\r\n };\r\n\r\n const ShoppingAlertText = useMemo(() => (\r\n
\r\n {i18n.getString(_TL_('If you want to serve products ads, you will need to set up a Merchant Center store to use for your campaign.'))}\r\n {i18n.getString(_TL_('Learn more about creating a Merchant Center store.'))} \r\n
\r\n ), [i18n]);\r\n\r\n const onStartCampaignClick = () => {\r\n if (selectedStoreResult.isValid) {\r\n // set provider Id to local storage.\r\n appConfig.set('ProviderId', selectedStoreResult.data.ProviderId);\r\n appConfig.set('SalesCountry', selectedStoreResult.data.SalesCountry);\r\n appConfig.set('LocalInventoryAdsEnabled', selectedStoreResult.data.LocalInventoryAdsEnabled);\r\n appConfig.set('FeedLabel', selectedStoreResult.data.FeedLabel);\r\n appConfig.set('IsFeedFiltered', selectedStoreResult.data.IsFeedFiltered);\r\n if (localStorage.supportsStorage()) {\r\n localStorage.set('ProviderId', selectedStoreResult.data.ProviderId);\r\n localStorage.set('SalesCountry', selectedStoreResult.data.SalesCountry);\r\n localStorage.set('LocalInventoryAdsEnabled', selectedStoreResult.data.LocalInventoryAdsEnabled);\r\n localStorage.set('FeedLabel', selectedStoreResult.data.FeedLabel);\r\n localStorage.set('IsFeedFiltered', selectedStoreResult.data.IsFeedFiltered);\r\n }\r\n\r\n // navigate to perf max wizard.\r\n const url = getRoutePathById(siteMap, 'campaign-create-pmax-v2');\r\n\r\n scope.history.push({\r\n pathname: url,\r\n search: scope.history.location.search,\r\n });\r\n }\r\n };\r\n\r\n const scrollIntoView = useCallback((ref: React.RefObject) => {\r\n ref.current?.scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n }, []);\r\n\r\n const onValidate = useCallback((result) => {\r\n setSelectedStoreResult({ ...result });\r\n }, []);\r\n\r\n const alertMessage = useMemo(() => (\r\n GoalToStoreMap[selectedGoal] === 'ShoppingCampaign' ? ShoppingAlertText : i18n.getString(defaultAlertText)\r\n ), [ShoppingAlertText, i18n, selectedGoal]);\r\n\r\n useEffect(() => {\r\n if (showStoreSelector) {\r\n scrollIntoView(storeSelectorRef);\r\n setClarityTag({ PerfMaxStoreSelector: selectedGoal });\r\n }\r\n }, [scrollIntoView, selectedGoal, showStoreSelector, storeSelectorRef]);\r\n\r\n return (\r\n
\r\n { !showStoreSelector && \r\n }\r\n {\r\n showStoreSelector && (\r\n
\r\n
\r\n

{i18n.getString(_TL_('Which store would you like to use?'))}

\r\n
{i18n.getString(_TL_('We will use products from catalogs you upload to Merchant Center and use them to create ads.'))}
\r\n
\r\n
\r\n
\r\n {i18n.getString(_TL_('Store\r\n
\r\n
\r\n \r\n {\r\n aid && cid && uid && (\r\n \r\n )\r\n }\r\n
\r\n )}\r\n message={alertMessage}\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\nPerfMaxStoreSelector.propTypes = {\r\n selectedGoal: PropTypes.string.isRequired,\r\n siteMap: PropTypes.shape({}).isRequired,\r\n permissions: PropTypes.shape({\r\n dynamic: PropTypes.shape({\r\n FeedLabel: PropTypes.bool,\r\n FeedLabelBlockList: PropTypes.bool,\r\n }),\r\n }).isRequired,\r\n};\r\n\r\nexport default withSiteMap(PerfMaxStoreSelector);\r\n","/**\r\n * This file contains all of the strings and constant values related to campaign types, sub-types, and ad-types\r\n *\r\n * To add a new campaign type, you need to update the following constants:\r\n * - CampaignType\r\n * - CampaignTypeTitle\r\n * - CampaignTypeDescription\r\n * - CampaignTypeTooltipIds\r\n * - CampaignAdTypes (also use this for campaign sub-types which aren't necessarily ad types)\r\n * - CampaignGoalToCampaignTypeMap (which goals will have your campaign type as an option)\r\n *\r\n * If you need to add additional ad types or campaign sub-types, you will also need to update:\r\n * - AdTypes\r\n * - AdTypeTitles\r\n * - AdTypeTooltipIds\r\n *\r\n * Icons and images are imported in the helpers/icons.ts or helpers/images.ts files.\r\n *\r\n * Final navigation is handle in navigate-to-wizard. You will need to make sure your campaign type is added there,.\r\n */\r\n\r\nexport enum TitleColors {\r\n GreenBG = '#DFF6DD',\r\n GreenText = '#036903',\r\n YellowBG = '#FDF6D7',\r\n YellowText = '#715A0B',\r\n BlueBG = '#EFF6FC',\r\n BlueText = '#005A9E',\r\n}\r\n\r\nexport const CampaignGoalType = {\r\n Conversions: _TL_('Conversions'),\r\n Leads: _TL_('Leads'),\r\n Awareness: _TL_('Awareness'),\r\n};\r\n\r\nexport const CampaignGoalTypeBoost = {\r\n Conversions: _TL_('Conversions'),\r\n Engagement: _TL_('Engagement'),\r\n Awareness: _TL_('Awareness'),\r\n};\r\n\r\nexport const CampaignGoalTypeBoostV2 = {\r\n Acquisition: _TL_('Acquisition'),\r\n Engagement: _TL_('Engagement'),\r\n Awareness: _TL_('Awareness'),\r\n};\r\n\r\nexport enum CampaignGoal {\r\n ConvertCustomers = 'ConvertCustomers',\r\n Consideration = 'Consideration',\r\n BrandAwareness = 'BrandAwareness',\r\n SellProducts = 'SellProducts',\r\n PromoteApp = 'PromoteMyApp',\r\n UnifiedPromoteApp = 'UnifiedPromoteApp',\r\n SkipGoals = 'SkipGoals',\r\n NoneSelected = 'None',\r\n}\r\n\r\nexport const CampaignGoalTitle = {\r\n [CampaignGoal.ConvertCustomers]: _TL_('Drive conversions'),\r\n [CampaignGoal.Consideration]: _TL_('Generate leads'),\r\n [CampaignGoal.BrandAwareness]: _TL_('Build brand awareness'),\r\n [CampaignGoal.SellProducts]: _TL_('Sell products'),\r\n [CampaignGoal.PromoteApp]: _TL_('Promote apps'),\r\n [CampaignGoal.UnifiedPromoteApp]: _TL_('Promote apps'),\r\n [CampaignGoal.SkipGoals]: _TL_('Skip'),\r\n};\r\n\r\nexport const CampaignGoalTitleBoostCampaign = {\r\n [CampaignGoal.ConvertCustomers]: _TL_('Acquisitions'),\r\n [CampaignGoal.Consideration]: _TL_('Retention'),\r\n [CampaignGoal.BrandAwareness]: _TL_('Build brand awareness'),\r\n};\r\n\r\nexport const CampaignGoalDescriptionText = {\r\n [CampaignGoal.ConvertCustomers]: _TL_('Get more customers to make purchases and meet your performance goals.'),\r\n [CampaignGoal.Consideration]: _TL_('Get visits to your website and attract potential customers.'),\r\n [CampaignGoal.BrandAwareness]: _TL_('Increase your audience\\'s familiarity with your brand.'),\r\n [CampaignGoal.SellProducts]: _TL_('Advertise products from your Merchant Center store.'),\r\n [CampaignGoal.PromoteApp]: _TL_('Increase discoverability and downloads for your apps.'),\r\n [CampaignGoal.UnifiedPromoteApp]: _TL_('Advertise your iOS, Android, or Microsoft Windows apps.'),\r\n [CampaignGoal.SkipGoals]: _TL_('You already know which campaign type you want to use.'),\r\n};\r\n\r\nexport const CampaignGoalDescriptionTextBoostCampaign = {\r\n [CampaignGoal.ConvertCustomers]: _TL_('Acquire more customers to make purchases.'),\r\n [CampaignGoal.Consideration]: _TL_('Retain your current set of users.'),\r\n [CampaignGoal.BrandAwareness]: _TL_('Increase your audience\\'s familiarity with your brand.'),\r\n};\r\n\r\nexport const CampaignGoalPageTwoText = {\r\n [CampaignGoal.ConvertCustomers]: {\r\n primary: _TL_('convert customers'),\r\n secondary: _TL_('conversion-based'),\r\n },\r\n [CampaignGoal.Consideration]: {\r\n primary: _TL_('generate leads'),\r\n secondary: _TL_('lead-based'),\r\n },\r\n [CampaignGoal.BrandAwareness]: {\r\n primary: _TL_('build brand awareness'),\r\n secondary: _TL_('brand awareness-based'),\r\n },\r\n [CampaignGoal.SellProducts]: {\r\n primary: _TL_('sell your products'),\r\n secondary: _TL_('product-based'),\r\n },\r\n [CampaignGoal.PromoteApp]: {\r\n primary: _TL_('promote your apps'),\r\n secondary: _TL_('app-based'),\r\n },\r\n [CampaignGoal.UnifiedPromoteApp]: {\r\n primaryOverride: _TL_('Select an app-based campaign'),\r\n secondaryOverride: _TL_('Choose the platform your app is on'),\r\n },\r\n};\r\n\r\nexport enum CampaignType {\r\n DisplayPlus = 'DisplayPlus',\r\n Search = 'Search',\r\n ConnectedTV = 'ConnectedTV',\r\n LinkedIn = 'LinkedIn',\r\n PerformanceMax = 'PerformanceMax',\r\n Shopping = 'Shopping',\r\n StandardShopping = 'StandardShopping',\r\n SmartShopping = 'SmartShopping',\r\n ShoppingForBrands = 'ShoppingForbrands',\r\n WindowsStore = 'WindowsStore',\r\n WindowsAppStore = 'WindowsAppStore',\r\n Lodging = 'Lodging',\r\n Hotel = 'Hotel',\r\n UnifiedAppAds = 'UnifiedAppAds',\r\n // Deals = 'Deals',\r\n NoneSelected = 'None',\r\n}\r\n\r\nexport const CampaignTypeTitle = {\r\n [CampaignType.DisplayPlus]: _TL_('Audience'),\r\n [CampaignType.Search]: _TL_('Search'),\r\n [CampaignType.ConnectedTV]: _TL_('Premium Streaming'),\r\n [CampaignType.LinkedIn]: _TL_('LinkedIn'),\r\n [CampaignType.PerformanceMax]: _TL_('Performance Max'),\r\n [CampaignType.Shopping]: _TL_('Shopping'),\r\n [CampaignType.StandardShopping]: _TL_('Standard Shopping'),\r\n [CampaignType.SmartShopping]: _TL_('Smart Shopping'),\r\n [CampaignType.ShoppingForBrands]: _TL_('Shopping campaigns for brands'),\r\n [CampaignType.WindowsStore]: _TL_('Microsoft apps'),\r\n [CampaignType.UnifiedAppAds]: _TL_('Universal app'),\r\n [CampaignType.Lodging]: _TL_('Lodging'),\r\n [CampaignType.Hotel]: _TL_('Hotel'),\r\n};\r\n\r\n// description text for campaign types on Advanced campaign card type\r\nexport const CampaignTypeWithGoalDescriptionTextShort = {\r\n [CampaignType.DisplayPlus]: _TL_('Target your ideal audience in the right place at the right time.'),\r\n [CampaignType.Search]: _TL_('Get in front of interested customers across search and search intent-powered display.'),\r\n [CampaignType.ConnectedTV]: _TL_('Show your video ads on premium streaming services, such as Netflix, Paramount, Roku, LG, Samsung, Rakuten, etc.'),\r\n [CampaignType.LinkedIn]: _TL_('Reach professional audiences on their LinkedIn feeds.'),\r\n [CampaignType.PerformanceMax]: _TL_('Provide assets and we\\'ll create ads for you using Microsoft AI.'),\r\n [CampaignType.StandardShopping]: _TL_('Showcase your product inventory to drive purchases.'),\r\n [CampaignType.SmartShopping]: _TL_('Show your products ads to your ideal audience and on search results pages more automatically.'),\r\n [CampaignType.ShoppingForBrands]: _TL_('Boost product sales across all retailers.'),\r\n [CampaignType.WindowsStore]: _TL_('Promote your Microsoft apps in the Store, Start menu, and other Microsoft components. '),\r\n [CampaignType.Lodging]: _TL_('Manage your Hotel price ads and Property promotion ads.'),\r\n [CampaignType.Hotel]: _TL_('Manage your Hotel price ads and Property promotion ads.'),\r\n [CampaignType.UnifiedAppAds]: _TL_('Promote your Windows, Android, or iOS app'),\r\n};\r\n\r\n// TODO There aren't any expanded texts after the text scrub, so we can remove this at some point\r\nexport const CampaignTypeWithGoalDescriptionTextExtended = {\r\n [CampaignType.DisplayPlus]: CampaignTypeWithGoalDescriptionTextShort[CampaignType.DisplayPlus],\r\n [CampaignType.Search]: CampaignTypeWithGoalDescriptionTextShort[CampaignType.Search],\r\n [CampaignType.ConnectedTV]: CampaignTypeWithGoalDescriptionTextShort[CampaignType.ConnectedTV],\r\n [CampaignType.LinkedIn]: CampaignTypeWithGoalDescriptionTextShort[CampaignType.LinkedIn],\r\n [CampaignType.PerformanceMax]: CampaignTypeWithGoalDescriptionTextShort[CampaignType.PerformanceMax],\r\n [CampaignType.StandardShopping]: CampaignTypeWithGoalDescriptionTextShort[CampaignType.StandardShopping],\r\n [CampaignType.SmartShopping]: CampaignTypeWithGoalDescriptionTextShort[CampaignType.SmartShopping],\r\n [CampaignType.ShoppingForBrands]: CampaignTypeWithGoalDescriptionTextShort[CampaignType.ShoppingForBrands],\r\n [CampaignType.WindowsStore]: CampaignTypeWithGoalDescriptionTextShort[CampaignType.WindowsStore],\r\n [CampaignType.Lodging]: CampaignTypeWithGoalDescriptionTextShort[CampaignType.Lodging],\r\n [CampaignType.Hotel]: CampaignTypeWithGoalDescriptionTextShort[CampaignType.Hotel],\r\n};\r\n\r\n// TODO after the text scrub, these texts are duplicates of CampaignTypeWithGoalDescriptionTextShort and so can be removed\r\nexport const CampaignTypeWithNoGoalDescriptionText = {\r\n [CampaignType.DisplayPlus]: _TL_('Target your ideal audience in the right place at the right time.'),\r\n [CampaignType.Search]: _TL_('Get in front of interested customers across search and search intent-powered display.'),\r\n [CampaignType.ConnectedTV]: _TL_('Show your video ads on premium streaming services.'),\r\n [CampaignType.LinkedIn]: _TL_('Create image ads for your LinkedIn audience.'),\r\n [CampaignType.PerformanceMax]: _TL_('Provide assets and we’ll create ads for you using Microsoft AI.'),\r\n [CampaignType.StandardShopping]: _TL_('Advertise your products to your target audience and on search results pages.'),\r\n [CampaignType.SmartShopping]: _TL_('Show your products ads to your ideal audience and on search results pages more automatically.'),\r\n [CampaignType.ShoppingForBrands]: _TL_('Boost product sales across all retailers.'),\r\n [CampaignType.WindowsStore]: _TL_('Increase visibility and downloads for your apps in the Micrsoft Store.'),\r\n [CampaignType.Lodging]: _TL_('Manage your Hotel price ads and Property promotion ads.'),\r\n [CampaignType.Hotel]: _TL_('Manage your Hotel price ads and Property promotion ads.'),\r\n [CampaignType.UnifiedAppAds]: _TL_('Promote your Windows, Android, or iOS app'),\r\n};\r\n\r\nexport const CampaignTypeTooltipIds = {\r\n [CampaignType.DisplayPlus]: 'pop_BA_Onboarding_Audience',\r\n [CampaignType.Search]: 'pop_BA_Onboarding_Search',\r\n [CampaignType.ConnectedTV]: 'pop_BA_Onboarding_PremiumStreaming',\r\n [CampaignType.LinkedIn]: 'pop_BA_Onboarding_LinkedIn',\r\n [CampaignType.PerformanceMax]: 'pop_BA_Onboarding_PMAX',\r\n [CampaignType.StandardShopping]: 'pop_BA_Onboarding_Shopping',\r\n [CampaignType.SmartShopping]: 'pop_BA_Onboarding_SmartShopping',\r\n [CampaignType.ShoppingForBrands]: 'pop_BA_Onboarding_ShoppingBrands',\r\n [CampaignType.Lodging]: 'pop_BA_Onboarding_Lodging',\r\n [CampaignType.Hotel]: 'pop_BA_Onboarding_Lodging',\r\n};\r\n\r\n// possible additional options for campaign types on Advanced campaign card type\r\nexport enum CampaignOptionTypes {\r\n None,\r\n Radio,\r\n Checkbox,\r\n}\r\n\r\nexport enum AdTypes {\r\n Display = 'Display',\r\n Native = 'Native',\r\n Video = 'Video',\r\n AudienceDefault = 'AudienceDefault',\r\n MetaImport = 'MetaImport',\r\n Multimedia = 'Multimedia',\r\n AppInstalls = 'AppInstalls',\r\n AudienceVideo = 'AudienceVideo',\r\n ShoppingAudience = 'ShoppingAudience',\r\n // Premium = 'Premium Bundle',\r\n Netflix = 'Netflix',\r\n Search = 'Search',\r\n AudienceAndSearch = 'AudienceAndSearch',\r\n SmartShopping = 'SmartShopping',\r\n MRN = 'MicrosoftRetailerNetwork',\r\n SPB = 'SponsoredPromotionsByBrand',\r\n WindowsAppStore = 'WindowsAppStore',\r\n AndroidPlayStore = 'AndroidPlayStore',\r\n IosAppStore = 'IosAppStore',\r\n NoneSelected = 'None',\r\n}\r\n\r\nexport const DummyAdTypesMap = {\r\n AudienceDefault: 'Native',\r\n};\r\n\r\nexport const AdTypeTitles = {\r\n [AdTypes.Display]: _TL_('Display ads'),\r\n [AdTypes.Native]: _TL_('Native ads'),\r\n [AdTypes.Video]: _TL_('Video ads'),\r\n [AdTypes.AudienceDefault]: _TL_('Build new campaign'),\r\n [AdTypes.MetaImport]: _TL_('Import From Meta'),\r\n [AdTypes.Multimedia]: _TL_('Search ads'),\r\n [AdTypes.AppInstalls]: _TL_('App Install ads'),\r\n [AdTypes.AudienceVideo]: _TL_('Premium Streaming'),\r\n // [AdTypes.Premium]: _TL_('Premium Bundle'),\r\n [AdTypes.Netflix]: _TL_('Netflix'),\r\n [AdTypes.ShoppingAudience]: _TL_('Audience'),\r\n [AdTypes.Search]: _TL_('Search'),\r\n [AdTypes.AudienceAndSearch]: _TL_('Search'),\r\n [AdTypes.SmartShopping]: _TL_('Smart shopping'),\r\n [AdTypes.MRN]: _TL_('Sponsored retail ads'),\r\n [AdTypes.SPB]: _TL_('Sponsored promotions for brands'),\r\n [AdTypes.WindowsAppStore]: _TL_('Windows'),\r\n [AdTypes.AndroidPlayStore]: _TL_('Android'),\r\n [AdTypes.IosAppStore]: _TL_('iOS'),\r\n};\r\n\r\nexport const AdTypeTooltipIds = {\r\n [AdTypes.Display]: null,\r\n [AdTypes.Native]: null,\r\n [AdTypes.Video]: null,\r\n [AdTypes.Multimedia]: 'pop_BA_Onboarding_Search',\r\n [AdTypes.AppInstalls]: 'pop_BA_Onboarding_AppInstalls',\r\n [AdTypes.AudienceVideo]: null,\r\n // [AdTypes.Premium]: '',\r\n [AdTypes.Netflix]: null,\r\n [AdTypes.ShoppingAudience]: null,\r\n [AdTypes.Search]: null,\r\n [AdTypes.AudienceAndSearch]: null,\r\n [AdTypes.SmartShopping]: 'pop_BA_Onboarding_SmartShopping',\r\n [AdTypes.MRN]: null,\r\n [AdTypes.SPB]: null,\r\n};\r\n\r\nexport const AdTypesSelectionHeaderText = {\r\n AdTypeGeneric: _TL_('Where do you want to show your ads?'),\r\n Shopping: _TL_('Choose the type of shopping campaign you prefer'),\r\n CTV: _TL_('Where do you want to show your ads?'),\r\n UnifiedAppAds: _TL_('Which platform is your app on?'),\r\n};\r\n\r\n// Possible objective IDs based on the goal+campaign selected\r\nexport const ObjectiveIDs = {\r\n WebsiteVisits: 'WebsiteVisits',\r\n LocationVisits: 'LocationVisits',\r\n WebsiteConversions: 'WebsiteConversions',\r\n PhoneCalls: 'PhoneCalls',\r\n AppInstalls: 'AppInstalls',\r\n SmartCampaign: 'SmartCampaign',\r\n ShoppingCampaign: 'ShoppingCampaign',\r\n SponsoredShoppingCampaign: 'SponsoredShoppingCampaign',\r\n MSStoreAds: 'MSStoreAds',\r\n VideoCampaign: 'VideoCampaign',\r\n MediaPackageCampaign: 'MediaPackageCampaign',\r\n AdImpressions: 'AdImpressions',\r\n HotelBooking: 'HotelBooking',\r\n Conversions: 'Conversions',\r\n Consideration: 'Consideration',\r\n Awareness: 'Awareness',\r\n};\r\n\r\nexport const LocalStorageKeys = {\r\n DisplayPlusCampaignType: 'DisplayPlusCampaignType',\r\n XandrVideoCampaignType: 'XandrVideoCampaignType',\r\n UnifiedAppCampaignAdType: 'UnifiedAppCampaignAdType',\r\n};\r\n\r\nexport interface ICampaignAdTypes {\r\n [adType: string]: {\r\n [type: string]: {\r\n id: AdTypes,\r\n icon?: string,\r\n title: string,\r\n description: string,\r\n learnMoreId?: string,\r\n tooltipId?: string,\r\n hasFACBadge?: boolean,\r\n }\r\n }\r\n}\r\n\r\n// map of campaign types and their possible ad types\r\nexport const CampaignAdTypes: ICampaignAdTypes = {\r\n [CampaignType.DisplayPlus]: {\r\n Native: {\r\n id: AdTypes.Native,\r\n title: AdTypeTitles[AdTypes.Native],\r\n description: _TL_('Show personalized, visually rich ads.'),\r\n learnMoreId: 'app54714',\r\n },\r\n Display: {\r\n id: AdTypes.Display,\r\n title: AdTypeTitles[AdTypes.Display],\r\n description: _TL_('Showcase eye-catching, customized image ads.'),\r\n learnMoreId: 'ext60196',\r\n },\r\n Video: {\r\n id: AdTypes.Video,\r\n title: AdTypeTitles[AdTypes.Video],\r\n description: _TL_('Show online video ads.'),\r\n learnMoreId: 'app54794',\r\n },\r\n AudienceDefault: {\r\n id: AdTypes.AudienceDefault,\r\n title: AdTypeTitles[AdTypes.AudienceDefault],\r\n description: _TL_('Create an audience campaign with Microsoft'),\r\n },\r\n MetaImport: {\r\n id: AdTypes.MetaImport,\r\n title: AdTypeTitles[AdTypes.MetaImport],\r\n description: _TL_('Quickly transfer your existing Meta campaign'),\r\n },\r\n },\r\n [CampaignType.Search]: {\r\n Multimedia: {\r\n id: AdTypes.Multimedia,\r\n title: AdTypeTitles[AdTypes.Multimedia],\r\n description: _TL_('Show ads for your products and services. '),\r\n tooltipId: AdTypeTooltipIds[AdTypes.Multimedia],\r\n },\r\n AppInstalls: {\r\n id: AdTypes.AppInstalls,\r\n title: AdTypeTitles[AdTypes.AppInstalls],\r\n description: _TL_('Show ads for your mobile apps.'),\r\n tooltipId: AdTypeTooltipIds[AdTypes.AppInstalls],\r\n },\r\n },\r\n [CampaignType.ConnectedTV]: {\r\n AudienceVideo: {\r\n id: AdTypes.AudienceVideo,\r\n title: AdTypeTitles[AdTypes.AudienceVideo],\r\n description: _TL_('Show video ads on premium streaming services. Upload broadcast-quality videos or allow Copilot to create videos.'),\r\n learnMoreId: 'app54794',\r\n },\r\n // Premium not included for now\r\n // Premium: {\r\n // title: AdTypes.Premium,\r\n // description: 'Custom creatives for ads that stand out on the page',\r\n // },\r\n Netflix: {\r\n id: AdTypes.Netflix,\r\n title: AdTypeTitles[AdTypes.Netflix],\r\n description: _TL_('Show video ads only on Netflix. Upload broadcast-quality videos.'),\r\n },\r\n },\r\n [CampaignType.LinkedIn]: {\r\n // no ad types\r\n },\r\n [CampaignType.PerformanceMax]: {\r\n // no ad types\r\n },\r\n [CampaignType.StandardShopping]: {\r\n ShoppingAudience: {\r\n id: AdTypes.ShoppingAudience,\r\n title: AdTypeTitles[AdTypes.ShoppingAudience],\r\n description: _TL_('Show your product ads in native placements on any device across sites such as Microsoft Edge, MSN, Microsoft Start, Outlook, and more.'),\r\n },\r\n Search: {\r\n id: AdTypes.AudienceAndSearch,\r\n title: AdTypeTitles[AdTypes.AudienceAndSearch],\r\n description: _TL_('Show your product ads to customers who are searching and browsing on relevant sites, such as Bing, AOL, DuckDuckGo, Ecosia, Yahoo, and more.'),\r\n hasFACBadge: true,\r\n },\r\n SmartShopping: {\r\n id: AdTypes.SmartShopping,\r\n title: AdTypeTitles[AdTypes.SmartShopping],\r\n description: _TL_('Show your product ads to your ideal audience and on search results pages more automatically.'),\r\n hasFACBadge: true,\r\n },\r\n },\r\n [CampaignType.ShoppingForBrands]: {\r\n MRN: {\r\n id: AdTypes.MRN,\r\n title: AdTypeTitles[AdTypes.MRN],\r\n description: _TL_('Target in-market customers with product ads across Bing and the retailer’s network.'),\r\n },\r\n SPB: {\r\n id: AdTypes.SPB,\r\n title: AdTypeTitles[AdTypes.SPB],\r\n description: _TL_('Target in-market customers with cashback promotions when they shop on Edge.'),\r\n },\r\n },\r\n [CampaignType.WindowsStore]: {\r\n // no ad types\r\n },\r\n [CampaignType.Lodging]: {\r\n // no ad types\r\n },\r\n [CampaignType.Hotel]: {\r\n // no ad types\r\n },\r\n [CampaignType.UnifiedAppAds]: {\r\n WindowsAppStore: {\r\n id: AdTypes.WindowsAppStore,\r\n icon: AdTypes.WindowsAppStore,\r\n title: AdTypeTitles[AdTypes.WindowsAppStore],\r\n description: _TL_('Promote your Windows app on the Microsoft Windows app store.'),\r\n learnMoreId: 'app54714',\r\n },\r\n IosAppStore: {\r\n id: AdTypes.IosAppStore,\r\n icon: AdTypes.IosAppStore,\r\n title: AdTypeTitles[AdTypes.IosAppStore],\r\n description: _TL_('Promote your iOS app on mobile devices across the Microsoft Advertising Network.'),\r\n learnMoreId: 'app54794',\r\n },\r\n AndroidPlayStore: {\r\n id: AdTypes.AndroidPlayStore,\r\n icon: AdTypes.AndroidPlayStore,\r\n title: AdTypeTitles[AdTypes.AndroidPlayStore],\r\n description: _TL_('Promote your Android app on mobile devices across the Microsoft Advertising Network.'),\r\n learnMoreId: 'ext60196',\r\n },\r\n },\r\n};\r\n\r\n// returns a filtered map of campaign types and their possible ad types based on the disabled ad types\r\nexport const getCampaignAdTypes = (disabledAdTypes: AdTypes[]): ICampaignAdTypes => {\r\n const filteredMap: ICampaignAdTypes = {};\r\n Object.entries(CampaignAdTypes).forEach(([campaignType, adTypes]) => {\r\n filteredMap[campaignType] = {};\r\n Object.entries(adTypes).forEach(([key, options]) => {\r\n if (!disabledAdTypes.includes(options.id as AdTypes)) {\r\n filteredMap[campaignType][key] = CampaignAdTypes[campaignType][key];\r\n }\r\n });\r\n });\r\n return filteredMap;\r\n\r\n};\r\n\r\nexport const xandrVideoCampaignTypes = {\r\n xandrVideoWeb: 'XandrVideoWebCampaign',\r\n xandrVideoCtv: 'XandrVideoCtvCampaign',\r\n};\r\n\r\nexport const adImpressionsCampaignTypes = {\r\n nativeAds: 'NativeAdsCampaign',\r\n displayAds: 'DisplayAdsCampaign',\r\n};\r\n\r\nexport const sponsoredProductCampaignTypes = {\r\n spa: 'MicrosoftRetailerNetwork',\r\n spb: 'SponsoredPromotionsByBrand',\r\n};\r\n\r\nexport interface ICampaignGoalToCampaignType {\r\n title: string,\r\n tooltipId: string | undefined,\r\n defaultObjectiveID: string,\r\n ObjectiveIDsForAdTypes?: { [adTypeId: string]: string },\r\n optionsType: CampaignOptionTypes,\r\n optionsHeader?: string,\r\n options?: { id: AdTypes, title: string, description: string, learnMoreId?: string, tooltipId?: string, }[],\r\n enableOptions?: Function,\r\n titleOverride?: string,\r\n descriptionOverride?: string,\r\n descriptionExtendedOverride?: string,\r\n defaultAdType?: AdTypes,\r\n hasFACBadge?: boolean,\r\n}\r\n\r\nexport interface ICampaignGoalsToCampaignTypesMap {\r\n [goal: string]: CampaignType[],\r\n}\r\n\r\nexport const CampaignGoalsToCampaignTypesMap: ICampaignGoalsToCampaignTypesMap = {\r\n [CampaignGoal.ConvertCustomers]: [\r\n CampaignType.PerformanceMax,\r\n CampaignType.DisplayPlus,\r\n CampaignType.Search,\r\n CampaignType.Hotel,\r\n CampaignType.Lodging,\r\n ],\r\n [CampaignGoal.SellProducts]: [\r\n CampaignType.PerformanceMax,\r\n CampaignType.StandardShopping,\r\n CampaignType.SmartShopping,\r\n CampaignType.ShoppingForBrands,\r\n ],\r\n [CampaignGoal.PromoteApp]: [\r\n CampaignType.WindowsStore,\r\n CampaignType.Search,\r\n ],\r\n [CampaignGoal.UnifiedPromoteApp]: [\r\n CampaignType.UnifiedAppAds,\r\n ],\r\n [CampaignGoal.Consideration]: [\r\n CampaignType.DisplayPlus,\r\n CampaignType.Search,\r\n CampaignType.LinkedIn,\r\n ],\r\n [CampaignGoal.BrandAwareness]: [\r\n CampaignType.DisplayPlus,\r\n CampaignType.ConnectedTV,\r\n CampaignType.LinkedIn,\r\n ],\r\n};\r\n\r\nexport const getCampaignGoalToCampaignTypeMap = (disabledCampaignTypes: CampaignType[]): ICampaignGoalsToCampaignTypesMap => {\r\n const map = CampaignGoalsToCampaignTypesMap;\r\n const filteredMap: ICampaignGoalsToCampaignTypesMap = {};\r\n Object.entries(map).forEach(([goal, campaignTypes]) => {\r\n filteredMap[goal] = [];\r\n campaignTypes.forEach((campaignType) => {\r\n if (!disabledCampaignTypes.includes(campaignType)) {\r\n filteredMap[goal].push(campaignType);\r\n }\r\n });\r\n });\r\n return filteredMap;\r\n};\r\n\r\n// required types for showing custom sections\r\nexport const CustomSectionConfig = {\r\n [CampaignType.PerformanceMax]: {\r\n goal: [CampaignGoal.ConvertCustomers, CampaignGoal.SellProducts, CampaignGoal.SkipGoals],\r\n campaignType: [CampaignType.PerformanceMax],\r\n shouldRender: ({ selectedGoal, selectedCampaignType, permissions = { dynamic: {} } }) => {\r\n const config = CustomSectionConfig[selectedCampaignType] || {};\r\n\r\n const { goal = [], campaignType = [] } = config;\r\n\r\n return goal.includes(selectedGoal) && campaignType.includes(selectedCampaignType) && (permissions.dynamic as Record)?.PMaxWizardRefresh;\r\n },\r\n },\r\n [CampaignType.DisplayPlus]: {\r\n shouldRender: ({ selectedGoal, selectedCampaignType, permissions = { dynamic: {} } }) => {\r\n return selectedGoal === CampaignGoal.SkipGoals && selectedCampaignType === CampaignType.DisplayPlus && (permissions.dynamic as Record)?.FBImportForAudienceCampaignCreation;\r\n },\r\n },\r\n};\r\n\r\nexport enum ActivityName {\r\n NetflixDealContinueToWizard = 'NetflixDealContinueToWizard',\r\n ContinueToFaceBookImport = 'ContinueToFaceBookImport',\r\n ContinueClick = 'ContinueClick',\r\n}\r\n","import { getRoutePathById } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { CampaignType, AdTypes } from '../config/constants';\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nconst campaignTypeToURLMap = {\r\n [CampaignType.DisplayPlus]: {\r\n default: '/campaign/vnext/createcampaign/displayplus',\r\n },\r\n [CampaignType.Search]: {\r\n default: '/campaign/vnext/createcampaign/search',\r\n },\r\n [CampaignType.ConnectedTV]: {\r\n default: '/campaign/vnext/createcampaign/awareness',\r\n [AdTypes.AudienceVideo]: '/campaign/vnext/createcampaign/awareness',\r\n [AdTypes.Netflix]: '/campaign/vnext/createcampaign/awareness',\r\n },\r\n [CampaignType.PerformanceMax]: {\r\n default: '/campaign/vnext/createcampaign/performancemax',\r\n },\r\n [CampaignType.StandardShopping]: {\r\n default: '/campaign/vnext/createcampaign/searchshopping',\r\n [AdTypes.Search]: '/campaign/vnext/createcampaign/searchshopping',\r\n [AdTypes.ShoppingAudience]: '/campaign/vnext/createcampaign/audienceshopping',\r\n },\r\n [CampaignType.SmartShopping]: {\r\n default: '/campaign/vnext/createcampaign/smartshopping',\r\n },\r\n [CampaignType.ShoppingForBrands]: {\r\n default: '/campaign/vnext/createcampaign/mran',\r\n [AdTypes.MRN]: '/campaign/vnext/createcampaign/mran',\r\n [AdTypes.SPB]: '/campaign/vnext/createcampaign/sponsoredpromotion',\r\n },\r\n [CampaignType.WindowsStore]: {\r\n default: '/campaign/vnext/createcampaign/msstoreads',\r\n },\r\n [CampaignType.WindowsAppStore]: {\r\n default: '/campaign/vnext/createcampaign/appads',\r\n },\r\n [CampaignType.LinkedIn]: {\r\n default: '/campaign/vnext/createcampaign/linkedin',\r\n },\r\n [CampaignType.Lodging]: {\r\n default: '/campaign/vnext/createcampaign/lodging',\r\n },\r\n [CampaignType.Hotel]: {\r\n default: '/campaign/vnext/createcampaign/hotel',\r\n },\r\n [CampaignType.UnifiedAppAds]: {\r\n default: '/campaign/vnext/createcampaign/unifiedappads',\r\n },\r\n};\r\n\r\nexport const navigateToWizard = (config, permissions, scope, siteMap, campaignType: CampaignType, adType: AdTypes) => {\r\n let url;\r\n switch (campaignType) {\r\n case CampaignType.Search:\r\n if (permissions.dynamic.SearchCampaignCreationRevamp && adType === AdTypes.Multimedia) {\r\n url = getRoutePathById(siteMap, 'campaign-create-search-v2');\r\n } else {\r\n url = getRoutePathById(siteMap, 'campaign-create-search');\r\n }\r\n break;\r\n case CampaignType.DisplayPlus:\r\n if (!permissions.dynamic.XandrVideoCampaigns && adType === AdTypes.Video) {\r\n url = getRoutePathById(siteMap, 'campaign-create-videoaudience');\r\n } else {\r\n url = campaignTypeToURLMap[campaignType].default;\r\n }\r\n break;\r\n case CampaignType.ConnectedTV:\r\n if (permissions.dynamic.XandrVideoCampaigns) {\r\n if (adType === AdTypes.AudienceVideo) url = getRoutePathById(siteMap, 'campaign-create-xandr-video');\r\n else if (adType === AdTypes.Netflix) url = getRoutePathById(siteMap, 'campaign-create-xandr-mediadeal');\r\n else url = getRoutePathById(siteMap, 'campaign-create-xandr-video');\r\n } else {\r\n url = getRoutePathById(siteMap, 'campaign-create-videoaudience');\r\n }\r\n break;\r\n case CampaignType.PerformanceMax:\r\n url = getRoutePathById(siteMap, 'campaign-create-pmax');\r\n break;\r\n case CampaignType.StandardShopping:\r\n if (adType === AdTypes.Search) url = getRoutePathById(siteMap, 'campaign-create-shopping');\r\n else if (adType === AdTypes.ShoppingAudience) url = getRoutePathById(siteMap, 'campaign-create-shoppingaudience');\r\n else if (adType === AdTypes.SmartShopping) url = getRoutePathById(siteMap, 'campaign-create-smart-shopping');\r\n else url = getRoutePathById(siteMap, 'campaign-create-shopping');\r\n break;\r\n case CampaignType.SmartShopping:\r\n url = getRoutePathById(siteMap, 'campaign-create-smart-shopping');\r\n break;\r\n case CampaignType.ShoppingForBrands:\r\n if (adType === AdTypes.MRN) url = getRoutePathById(siteMap, 'campaign-create-shopping-spa');\r\n else if (adType === AdTypes.SPB) url = getRoutePathById(siteMap, 'campaign-create-shopping-spb');\r\n else url = getRoutePathById(siteMap, 'campaign-create-shopping-spa');\r\n break;\r\n case CampaignType.WindowsStore:\r\n url = permissions.dynamic.AppAdsCampaignPhaseOne || adType === AdTypes.WindowsAppStore ? campaignTypeToURLMap[CampaignType.WindowsAppStore].default : campaignTypeToURLMap[campaignType].default;\r\n break;\r\n case CampaignType.UnifiedAppAds:\r\n if (adType === AdTypes.WindowsAppStore) {\r\n if (permissions.dynamic.UnifiedAppAds && permissions.dynamic.AppAdsCampaignPhaseOne) url = campaignTypeToURLMap[campaignType].default;\r\n else url = campaignTypeToURLMap[CampaignType.WindowsAppStore].default;\r\n } else {\r\n url = campaignTypeToURLMap[campaignType].default;\r\n }\r\n break;\r\n case CampaignType.LinkedIn:\r\n case CampaignType.Lodging:\r\n case CampaignType.Hotel:\r\n url = campaignTypeToURLMap[campaignType].default;\r\n break;\r\n default:\r\n url = getRoutePathById(siteMap, 'campaign-create-search');\r\n }\r\n\r\n scope.history.push({\r\n pathname: url,\r\n search: scope.history.location.search,\r\n });\r\n};\r\n\r\nexport const navigateToFBImport = (scope) => {\r\n scope.history.push({\r\n pathname: '/campaign/vnext/facebookimport',\r\n search: `${scope.history.location.search}&fromAudienceCreation=true`,\r\n });\r\n};\r\n","/* eslint-disable react-hooks/rules-of-hooks */\r\nimport React from 'react';\r\n// @ts-ignore\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getStyles } from '../../styles/index';\r\n\r\nexport const AdTypeSelectionPage = Object({});\r\n\r\n\r\ninterface AdTypeSelectionPageContainerProps {\r\n adTypeSelectionRef: React.RefObject,\r\n children: React.ReactNode,\r\n}\r\n\r\nAdTypeSelectionPage.Container = (props: AdTypeSelectionPageContainerProps) => {\r\n const styles = useDefaultStyles(getStyles);\r\n\r\n const {\r\n adTypeSelectionRef,\r\n children,\r\n } = props;\r\n\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n};\r\n\r\n\r\ninterface AdTypeSelectionPageHeaderProps {\r\n children: React.ReactNode,\r\n}\r\n\r\nAdTypeSelectionPage.Header = (props: AdTypeSelectionPageHeaderProps) => {\r\n const styles = useDefaultStyles(getStyles);\r\n\r\n const {\r\n children,\r\n } = props;\r\n\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n};\r\n\r\n\r\ninterface AdTypeSelectionPageTitleProps {\r\n children: React.ReactNode,\r\n}\r\n\r\nAdTypeSelectionPage.Title = (props: AdTypeSelectionPageTitleProps) => {\r\n const styles = useDefaultStyles(getStyles);\r\n\r\n const {\r\n children,\r\n } = props;\r\n\r\n return (\r\n {children}\r\n );\r\n};\r\n\r\n\r\ninterface AdTypeSelectionPageSubTitleProps {\r\n children: React.ReactNode,\r\n}\r\n\r\nAdTypeSelectionPage.SubTitle = (props: AdTypeSelectionPageSubTitleProps) => {\r\n const styles = useDefaultStyles(getStyles);\r\n\r\n const {\r\n children,\r\n } = props;\r\n\r\n return (\r\n {children}\r\n );\r\n};\r\n\r\n\r\ninterface AdTypeSelectionPageBodyProps {\r\n children: React.ReactNode,\r\n}\r\n\r\nAdTypeSelectionPage.Body = (props: AdTypeSelectionPageBodyProps) => {\r\n const {\r\n children,\r\n } = props;\r\n\r\n return (\r\n
{children}
\r\n );\r\n};\r\n","import { makeStyles } from '@fluentui/react-components';\r\n\r\nexport const useFooterStyles = makeStyles({\r\n container: {\r\n marginTop: '8px',\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n },\r\n saveButton: {\r\n marginRight: '8px',\r\n },\r\n containerLeft: {\r\n marginTop: '8px',\r\n display: 'flex',\r\n },\r\n});\r\n","import React, { useContext, useCallback } from 'react';\r\nimport classNames from 'classnames';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { FORM_STATES, FORM_EVENTS, useFormService } from '@bingads-webui-react/form';\r\nimport { Button } from '@fluentui/react-components';\r\n\r\nimport { useFooterStyles } from '../styles/footer-styles';\r\n\r\nexport function withFooter(WrappedComponent, showBudgetSuggestion?) {\r\n const HoC = (props) => {\r\n const i18n = useContext(I18nContext) as any;\r\n const styles = useFooterStyles();\r\n const { state, send } = useFormService();\r\n const isLoading = state.matches(FORM_STATES.LOADING);\r\n\r\n const onSave = useCallback(() => send(FORM_EVENTS.SAVE), [send]);\r\n const onCancel = useCallback(() => send(FORM_EVENTS.CANCEL), [send]);\r\n return (\r\n <>\r\n \r\n {!showBudgetSuggestion &&\r\n
\r\n \r\n \r\n
\r\n }\r\n\r\n {showBudgetSuggestion &&\r\n
\r\n \r\n \r\n
}\r\n \r\n );\r\n };\r\n HoC.defaultProps = {\r\n headerState: undefined,\r\n };\r\n return HoC;\r\n}\r\n","import { useContext, useCallback } from 'react';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { getCampaignStatus, getCampaignStatusPromise } from '@bingads-webui-campaign-react/pmax-overview-data';\r\n\r\nexport const useReadCampaign = ({ set }) => {\r\n const { scope } = useContext(ScopeContext) as any;\r\n const {\r\n cid, aid, campaignId,\r\n } = scope.values;\r\n\r\n return useCallback(() => getCampaignStatus({\r\n cid, aid, campaignId, set,\r\n }), [aid, campaignId, cid, set]);\r\n};\r\n\r\nexport const useReadCampaignPromise = () => {\r\n const { scope } = useContext(ScopeContext) as any;\r\n const {\r\n cid, aid, campaignId,\r\n } = scope.values;\r\n\r\n return useCallback(() => getCampaignStatusPromise({ cid, aid, campaignId }), [aid, campaignId, cid]);\r\n};\r\n","import { edmCampaign } from '@bingads-webui/edm-campaign';\r\n\r\nexport const createOrUpdateCampaign = (data) => {\r\n const campaignEDM = edmCampaign.types.resolve('Model.ShoppingCampaign');\r\n const campaignResource = new campaignEDM.ResourceIdentifier();\r\n const createOrUpdateCall = data && data.Id ?\r\n campaignResource.bulkUpdate.bind(campaignResource) :\r\n campaignResource.bulkCreate.bind(campaignResource);\r\n return createOrUpdateCall(data);\r\n};\r\n","import { useState, useCallback, useContext, useMemo } from 'react';\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { MAX_CONVERSIONS } from '@bingads-webui-campaign-react/bid-strategy-component';\r\nimport { InstrumentationContext } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { showBudgetBidCampaignNotifications } from '@bingads-webui-campaign/import-shared-utils';\r\nimport { LogTargetCpaCheckOnSave } from '@bingads-webui-campaign-react/target-cpa-warning-banner';\r\n\r\nimport { useReadCampaignPromise } from './use-read-campaign';\r\nimport { createOrUpdateCampaign } from '../utils/create-or-update-campaign';\r\n\r\nexport const useRepository = (isBudget: Boolean) => {\r\n const { scope } = useContext(ScopeContext) as any;\r\n const { campaignId } = scope.values;\r\n const instrumentation = useContext(InstrumentationContext) as any;\r\n const readCampaign = useReadCampaignPromise();\r\n const [initialCampaign, setInitialCampaign] = useState({});\r\n\r\n const log = useMemo(() => {\r\n if (instrumentation && instrumentation.campaignOverviewEdit) {\r\n const scenario = instrumentation.campaignOverviewEdit.create();\r\n return isBudget ? scenario.budgetEdit.create() : scenario.bidStrategyEdit.create();\r\n }\r\n return {\r\n trace: _.noop,\r\n error: _.noop,\r\n };\r\n }, [instrumentation, isBudget]);\r\n const i18n = useContext(I18nContext) as any;\r\n const serverContext = useContext(ServerContext) as any;\r\n const currencyCode = serverContext?.CurrentAccount?.CurrencyCode;\r\n\r\n const localizeBudget = useCallback((budget, currency) => i18n.formatCurrency(\r\n Number(budget), currency.toUpperCase(),\r\n { withSymbol: false }\r\n ), [i18n]);\r\n\r\n const loadCampaign = useCallback(() => {\r\n if (!campaignId) {\r\n return Promise.resolve({\r\n initialBudget: null,\r\n bidStrategy: null,\r\n cpa: null,\r\n });\r\n }\r\n\r\n return readCampaign().then((campaign) => {\r\n log.trace(`Load campaign succeed: ${JSON.stringify(campaign)}`);\r\n setInitialCampaign(campaign);\r\n const campaignType = campaign?.CampaignType;\r\n const campaignGoal = campaign?.CampaignSettings?.[0]?.Goal;\r\n const budgetAmount = campaign?.Budget?.Amount;\r\n const bidStrategy = campaign?.BiddingScheme?.Type;\r\n const cpa = campaign?.BiddingScheme?.TargetCpa;\r\n const roas = campaign?.BiddingScheme?.TargetRoas;\r\n const language = _.first(campaign?.Languages);\r\n const isInitialAdditionalDetailsChecked = _.isNumber(cpa) || _.isNumber(roas);\r\n const deliveryStatus = campaign?.DeliveryStatus;\r\n const deliveryStatusDetails = campaign?.DeliveryStatusDetails;\r\n\r\n return {\r\n campaignType,\r\n campaignGoal,\r\n budgetAmount,\r\n bidStrategy,\r\n cpa,\r\n roas: (_.isNumber(roas) ? roas * 100 : null),\r\n language,\r\n isInitialAdditionalDetailsChecked,\r\n deliveryStatus,\r\n deliveryStatusDetails,\r\n };\r\n }).catch((error) => {\r\n log.error(`Load campaign fail: ${JSON.stringify(error)}`);\r\n\r\n return Promise.reject(error);\r\n });\r\n }, [log, campaignId, readCampaign]);\r\n\r\n const load = useCallback(() => loadCampaign().then((campaignData) => {\r\n const currency = currencyCode;\r\n\r\n return ({\r\n ...campaignData,\r\n currency,\r\n budgetAmount: localizeBudget(campaignData.budgetAmount, currency),\r\n isBudgetValid: true,\r\n isMarketingMetricValid: true,\r\n });\r\n }).catch((error) => {\r\n log.error(`Load campaign requests fail: ${JSON.stringify(error)}`);\r\n return Promise.reject(error);\r\n }), [loadCampaign, localizeBudget, log, currencyCode]);\r\n\r\n const save = ({ data }) => {\r\n const {\r\n campaignType,\r\n budgetAmount,\r\n bidStrategy,\r\n cpa,\r\n roas,\r\n isBudgetValid,\r\n isMarketingMetricValid,\r\n } = data || {};\r\n\r\n if (!isBudgetValid || !isMarketingMetricValid) {\r\n return Promise.reject(new Error(`use-repository - isBudget ${isBudget}: invalid data to save isBudgetValid: ${isBudgetValid} isMarketingMetricValid: ${isMarketingMetricValid}`));\r\n }\r\n\r\n let marketingMetric = {};\r\n if (campaignType === 'PerformanceMax') {\r\n marketingMetric = bidStrategy === MAX_CONVERSIONS.type\r\n ? { TargetCpa: cpa }\r\n : { TargetRoas: (_.isNumber(roas) ? (roas / 100).toFixed(4) : null) };\r\n }\r\n\r\n const updateCampaign = () => {\r\n const modelToSave = {\r\n Id: campaignId,\r\n BiddingScheme: {\r\n Type: bidStrategy,\r\n ...marketingMetric,\r\n },\r\n Budget: {\r\n Amount: i18n.parseDecimal(budgetAmount),\r\n Type: 'DailyStandard',\r\n },\r\n };\r\n\r\n return createOrUpdateCampaign(modelToSave).then((res) => {\r\n log.trace(`Update ${isBudget ? 'budget' : 'bid strategy'} succeed`);\r\n const { activity: BudgetBidCampaignImportNotificationActivity } = instrumentation.createScenarioAndActivity({\r\n scenarioName: 'BudgetBidCampaignImportNotification',\r\n activityName: 'PmaxCampaignStatusCard',\r\n });\r\n\r\n\r\n showBudgetBidCampaignNotifications({\r\n campaignItemList: [initialCampaign],\r\n oldBudget: initialCampaign?.Budget,\r\n newBudget: modelToSave.Budget,\r\n oldBidStrategy: initialCampaign?.BiddingScheme,\r\n newBidStrategy: modelToSave.BiddingScheme,\r\n activity: BudgetBidCampaignImportNotificationActivity,\r\n });\r\n return res;\r\n }).catch((error) => {\r\n log.error(`Update ${isBudget ? 'budget' : 'bid strategy'} fails: ${JSON.stringify(error)}`);\r\n // eslint-disable-next-line prefer-promise-reject-errors\r\n return Promise.reject({ error });\r\n });\r\n };\r\n\r\n return updateCampaign().then(() => {\r\n log.trace(`Save ${isBudget ? 'budget' : 'bid strategy'} succeed`);\r\n if (!isBudget) {\r\n LogTargetCpaCheckOnSave(i18n, { dynamic: { TargetCpaValueCheck: true } }, budgetAmount, cpa, log, 'campaign-status-summary-card');\r\n }\r\n return data;\r\n }).catch((error) => {\r\n log.error(`Save ${isBudget ? 'budget' : 'bid strategy'} fails: ${JSON.stringify(error)}`);\r\n // eslint-disable-next-line prefer-promise-reject-errors\r\n return Promise.reject({ error });\r\n });\r\n };\r\n\r\n return {\r\n load,\r\n save,\r\n };\r\n};\r\n\r\nexport const useBudgetRepository = () => useRepository(true);\r\nexport const useBidStrategyRepository = () => useRepository(false);\r\n","export function getApiErrorMapper(i18n: any): Function {\r\n return (function apiErrorMapper(error: any): string {\r\n switch (error?.Error) {\r\n case 'CampaignServiceInvalidDailyBudget': {\r\n return i18n.getString(_TL_('Invalid daily budget'));\r\n }\r\n case 'UnsupportedBiddingScheme': {\r\n return i18n.getString(_TL_('Unsupported bidding scheme'));\r\n }\r\n case 'InvalidTargetRoasValue': {\r\n return i18n.getString(_TL_('Invalid target ROAS value'));\r\n }\r\n default: {\r\n return i18n.getString(_TL_('An error occurred, please try again later'));\r\n }\r\n }\r\n });\r\n}\r\n","import { makeStyles, tokens } from '@fluentui/react-components';\r\n\r\nexport const useBudgetCardStyles = makeStyles({\r\n container: {\r\n '& .error': {\r\n color: tokens.colorPaletteCranberryBorderActive,\r\n },\r\n },\r\n});\r\n","import _ from 'underscore';\r\nimport React, { useState, useContext, useCallback, useMemo, useEffect } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { WalletCreditCard20Regular } from '@fluentui/react-icons';\r\nimport { StatusSummaryCard } from '@bingads-webui-campaign-react/status-summary-card';\r\nimport { BudgetComponent } from '@bingads-webui-campaign-react/budget-component';\r\nimport { FORM_STATES, Form, useFormService } from '@bingads-webui-react/form';\r\nimport { ValidationGroup } from '@bingads-webui-react/validation';\r\nimport { Budget } from '@bingads-webui/campaign-odata-schemas';\r\nimport { FormErrorGroup, UnmappedFormErrors as OriginalUnmappedFormErrors } from '@bingads-webui-campaign-react/form-error';\r\nimport { withControlErrorHandling } from '@bingads-webui-campaign-react/error-handling';\r\nimport { InstrumentationContext } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { BudgetSuggestion, MODE, useBudgetSuggestionRepository } from '@bingads-webui-campaign-react/budget-suggestion-v2';\r\nimport { LearnMoreLink } from '@bingads-webui-campaign-react/help';\r\nimport { mergeI18n } from '@bingads-webui-campaign-react/i18n-merger';\r\nimport { buildLegacyI18n } from '@bingads-webui/build-legacy-i18n';\r\nimport { ValidationStringMap } from '@bingads-webui/validation-string-map';\r\nimport { LinkedInBudgetRangePerCurrency } from '@bingads-webui-campaign-legacy/common-grid-config/budget/get-budget-range';\r\n\r\nimport { withFooter } from './with-footer';\r\nimport { useBudgetRepository } from './use-repository';\r\nimport { useReadCampaign } from './use-read-campaign';\r\nimport { getApiErrorMapper } from '../utils/api-error-mapper';\r\nimport { useBudgetCardStyles } from '../styles/budget-card-styles';\r\n\r\nconst UnmappedFormErrors = withControlErrorHandling(OriginalUnmappedFormErrors);\r\n\r\nconst FormViewWrapper = ({\r\n data,\r\n onDataChange,\r\n logger,\r\n error,\r\n}: { data: any; onDataChange: Function; logger: Function; error: any; }) => {\r\n const {\r\n campaignType,\r\n budgetAmount,\r\n currency,\r\n bidStrategy,\r\n // deliveryStatus,\r\n // deliveryStatusDetails,\r\n } = data || {};\r\n const errors = error?.error?.errors || [];\r\n const i18n = useContext(I18nContext) as any;\r\n const serverContext = useContext(ServerContext) as any;\r\n\r\n const { scope } = useContext(ScopeContext) as any;\r\n const { campaignId } = scope.values;\r\n const classes = useBudgetCardStyles();\r\n const { state } = useFormService();\r\n const showBudgetSuggestion = serverContext?.DynamicPermissions?.EnableBudgetSuggestion && campaignType === 'PerformanceMax';\r\n const isLoading = state.matches(FORM_STATES.LOADING);\r\n const [isBSLoading, setIsBSLoading] = useState(true);\r\n const [isBSCalled, setIsBSCalled] = useState(false);\r\n\r\n const apiErrorMapper = getApiErrorMapper(i18n);\r\n\r\n const legacyI18n = useMemo(() => buildLegacyI18n(i18n, [ValidationStringMap]), [i18n]);\r\n\r\n const mergedI18n = useMemo(() => mergeI18n(\r\n legacyI18n,\r\n i18n\r\n ), [i18n, legacyI18n]);\r\n\r\n const schema = useMemo(() => {\r\n if (campaignType === 'LinkedIn' && LinkedInBudgetRangePerCurrency[currency]) {\r\n return ({\r\n Currency: currency,\r\n GlobalMaximumBudget: { DailyBudget: LinkedInBudgetRangePerCurrency[currency].Max },\r\n GlobalMinimumBudget: { DailyBudget: LinkedInBudgetRangePerCurrency[currency].Min },\r\n MaximumBudget: { DailyBudget: LinkedInBudgetRangePerCurrency[currency].Max }, // we need to pass this as a max for the slider\r\n });\r\n }\r\n\r\n // Currently the max daily budget returned by server context is the same as max monthly budget https://msasg.visualstudio.com/Bing_Ads/_git/AdsAppUI?path=/private/UI/OpportunityUI/Microsoft.AdCenter.UI.Web.Opportunity/Repository/StaticEntityRepository.cs&version=GBmaster&line=86&lineEnd=86&lineStartColumn=13&lineEndColumn=122&lineStyle=plain&_a=contents\r\n // Because of that we use the same logic as on MT where maxDailyBudget = maxMonthlyBudget / 28 https://msasg.visualstudio.com/DefaultCollection/Bing_Ads/_git/AdsAppsMT?path=/private/Common/BusinessRules/CampaignValidators/BudgetLimitHelper.cs&version=GBmaster&line=10&lineEnd=12&lineStartColumn=1&lineEndColumn=35&lineStyle=plain&_a=contents\r\n const maxDailyBudget = serverContext?.BudgetRange?.MonthlyRange?.CeilingValue ? Number((serverContext?.BudgetRange?.MonthlyRange?.CeilingValue / 28).toFixed(2)) : serverContext?.BudgetRange?.DailyRange?.CeilingValue;\r\n return ({\r\n Currency: currency,\r\n GlobalMaximumBudget: { DailyBudget: maxDailyBudget },\r\n GlobalMinimumBudget: { DailyBudget: serverContext?.BudgetRange?.DailyRange?.FloorValue },\r\n MaximumBudget: { DailyBudget: maxDailyBudget }, // we need to pass this as a max for the slider\r\n });\r\n }, [currency, serverContext, campaignType]);\r\n\r\n const onFieldChange = useCallback((updatedData) => {\r\n onDataChange({\r\n data: prevData => ({\r\n ...prevData,\r\n ...updatedData,\r\n }),\r\n });\r\n }, [onDataChange]);\r\n\r\n const localizeBudget = useCallback((budget, shouldLocalize) => (\r\n shouldLocalize ? i18n.formatCurrency(\r\n Number(budget), currency.toUpperCase(),\r\n { withSymbol: false }\r\n ) : budget), [currency, i18n]);\r\n\r\n const onBudgetChange = useCallback((newBudget, shouldLocalize = false) => {\r\n const budgetAmountValue = localizeBudget(newBudget, shouldLocalize);\r\n onFieldChange({ budgetAmount: budgetAmountValue });\r\n }, [onFieldChange, localizeBudget]);\r\n\r\n const onChange = useCallback((newBudget, shouldLocalize = false) => {\r\n if (newBudget?.data?.budget && newBudget.isValid) {\r\n const budgetVal = localizeBudget(String(newBudget.data.budget), shouldLocalize);\r\n onFieldChange({ budgetAmount: budgetVal, isBudgetValid: newBudget.isValid, budgetErrors: newBudget.messages });\r\n }\r\n if (newBudget && !newBudget.isValid) {\r\n onFieldChange({ isBudgetValid: newBudget.isValid, budgetErrors: newBudget.messages });\r\n }\r\n }, [onFieldChange, localizeBudget]);\r\n\r\n const onBudgetValidate = useCallback(({ isValid, messages }) => {\r\n onFieldChange({ isBudgetValid: isValid, budgetErrors: messages });\r\n }, [onFieldChange]);\r\n\r\n const [budgetSuggestionData, setBudgetSuggestionData] = useState(null);\r\n\r\n const { loadBudget } = useBudgetSuggestionRepository({\r\n campaignId,\r\n campaignType,\r\n currency,\r\n campaign: data,\r\n });\r\n\r\n useEffect(() => {\r\n if (showBudgetSuggestion) {\r\n if (_.isEmpty(budgetSuggestionData) && data && campaignId && !isBSCalled) {\r\n loadBudget().then((datas) => {\r\n setBudgetSuggestionData(datas);\r\n }).finally(() => {\r\n setIsBSLoading(false);\r\n setIsBSCalled(true);\r\n });\r\n }\r\n } else {\r\n setIsBSLoading(isLoading);\r\n }\r\n }, [loadBudget, budgetSuggestionData, campaignId, data, isLoading, showBudgetSuggestion, isBSCalled]);\r\n\r\n // const showBudgetSuggestion = serverContext?.DynamicPermissions?.EnableBudgetSuggestion &&\r\n // (deliveryStatus === 'BudgetSuggestions' || _.includes(deliveryStatusDetails, 'BudgetSuggestions'));\r\n const showBudgetSuggestionData = showBudgetSuggestion && !_.isEmpty(budgetSuggestionData);\r\n\r\n return (\r\n
\r\n \r\n { },\r\n }}\r\n >{\r\n !isBSLoading &&\r\n
\r\n {!showBudgetSuggestionData &&\r\n \r\n }\r\n {showBudgetSuggestionData &&\r\n
\r\n {i18n.getString(_TL_('Your ads could be shown more often. You can increase your budget to ensure more ad exposure.'))}\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\nconst BudgetForm = ({ closeDialog, log, showBudgetSuggestion }: { closeDialog: Function, log: { trace: Function }, showBudgetSuggestion: Boolean}) => {\r\n const onDoneSaving = useCallback((...params) => {\r\n log.trace('Budget form popover closed: saved');\r\n closeDialog(...params);\r\n }, [log, closeDialog]);\r\n\r\n const onCanceled = useCallback((...params) => {\r\n log.trace('Budget form popover closed: canceled');\r\n closeDialog(...params);\r\n }, [log, closeDialog]);\r\n\r\n useEffect(() => {\r\n log.trace('Budget card popover rendered');\r\n }, [log]);\r\n\r\n const config = useMemo(() => ({\r\n id: 'budget-form',\r\n view: withFooter(FormViewWrapper, showBudgetSuggestion),\r\n repository: useBudgetRepository,\r\n machineOptions: {\r\n actions: {\r\n onDoneSaving,\r\n onCanceled,\r\n },\r\n },\r\n }), [onCanceled, onDoneSaving, showBudgetSuggestion]);\r\n return (
);\r\n};\r\n\r\nexport const BudgetCard: React.FunctionComponent<{ contentReady: Function }> = ({ contentReady }: { contentReady: Function }) => {\r\n const i18n = useContext(I18nContext) as any;\r\n const instrumentation = useContext(InstrumentationContext) as any;\r\n const serverContext = useContext(ServerContext) as any;\r\n const currency = serverContext?.CurrentAccount?.CurrencyCode;\r\n\r\n const log = useMemo(() => {\r\n if (instrumentation && instrumentation.campaignOverviewEdit) {\r\n const scenario = instrumentation.campaignOverviewEdit.create();\r\n return scenario.budgetEdit.create();\r\n }\r\n return {\r\n trace: _.noop,\r\n error: _.noop,\r\n };\r\n }, [instrumentation]);\r\n\r\n const [budgetText, setBudgetText] = useState('');\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [budgetTitle, setBudgetTitle] = useState(i18n.getString(_TL_('Set campaign budget')));\r\n const [isBSCalled, setIsBSCalled] = useState(false);\r\n\r\n const [campaignInfo, setCampaignInfo] = useState(null);\r\n\r\n const [budgetSuggestionData, setBudgetSuggestionData] = useState(null);\r\n const { loadBudget } = useBudgetSuggestionRepository({\r\n campaignId: campaignInfo?.Id,\r\n campaignType: campaignInfo?.campaignType,\r\n currency,\r\n campaignInfo,\r\n });\r\n\r\n\r\n useEffect(() => {\r\n if (serverContext?.DynamicPermissions?.EnableBudgetSuggestion &&\r\n !isBSCalled &&\r\n _.isEmpty(budgetSuggestionData) && campaignInfo && campaignInfo?.Id) {\r\n loadBudget().then((dataBs) => {\r\n setBudgetSuggestionData(dataBs);\r\n setBudgetTitle(i18n.getString(_TL_('Budget recommendations')));\r\n }).finally(() => {\r\n setIsLoading(false);\r\n setIsBSCalled(true);\r\n });\r\n }\r\n }, [loadBudget, campaignInfo, budgetSuggestionData, serverContext?.DynamicPermissions?.EnableBudgetSuggestion, isBSCalled, i18n]);\r\n\r\n const set = useCallback((campaign) => {\r\n const localizedBudget = i18n.formatCurrency(\r\n Number(campaign?.Budget?.Amount), currency.toUpperCase(),\r\n { withSymbol: false }\r\n );\r\n setCampaignInfo(campaign);\r\n setBudgetText(i18n.getString(_TL_('{{budget}} {{currency}}/Day'), { currency: currency.toUpperCase(), budget: localizedBudget }));\r\n if (!serverContext?.DynamicPermissions?.EnableBudgetSuggestion) {\r\n setIsLoading(false);\r\n }\r\n contentReady();\r\n }, [contentReady, currency, i18n, serverContext?.DynamicPermissions?.EnableBudgetSuggestion]);\r\n\r\n\r\n const readCampaign = useReadCampaign({ set });\r\n useEffect(() => {\r\n setIsLoading(true);\r\n readCampaign();\r\n }, [currency, i18n, readCampaign, contentReady]);\r\n\r\n useEffect(() => {\r\n log.trace('Budget card rendered');\r\n }, [log]);\r\n\r\n const ChildComponent = useMemo(() => (props => ), [log, budgetSuggestionData]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n","export const LINKEDIN_CAMPAIGN_GOALS = {\r\n MoreWebsiteActions: 'MoreWebsiteActions',\r\n MoreBrandAwareness: 'MoreBrandAwareness',\r\n};\r\n\r\nexport const getLinkedInBidStrategyOptions = (campaignGoal) => {\r\n if (campaignGoal === LINKEDIN_CAMPAIGN_GOALS.MoreBrandAwareness) {\r\n return [{\r\n key: 'MaxReach',\r\n text: _TL_('Maximize reach'),\r\n type: 'MaxReach',\r\n }, {\r\n key: 'MaxImpressions',\r\n text: _TL_('Maximize impressions'),\r\n type: 'MaxImpressions',\r\n }];\r\n }\r\n\r\n return [{\r\n key: 'MaxClicks',\r\n text: _TL_('Maximize clicks'),\r\n type: 'MaxClicks',\r\n }];\r\n};\r\n\r\nexport const getLinkedInBidStrategyText = (campaign, i18n) => {\r\n const bidStrategy = campaign?.BiddingScheme?.Type;\r\n if (bidStrategy === 'MaxReach') {\r\n return i18n.getString(_TL_('Maximize reach'));\r\n }\r\n if (bidStrategy === 'MaxImpressions') {\r\n return i18n.getString(_TL_('Maximize impressions'));\r\n }\r\n return i18n.getString(_TL_('Maximize clicks'));\r\n};\r\n","import { makeStyles, tokens } from '@fluentui/react-components';\r\n\r\nexport const useBidStrategyCardStyles = makeStyles({\r\n container: {\r\n '& .error': {\r\n color: tokens.colorPaletteCranberryBorderActive,\r\n },\r\n },\r\n});\r\n","import _ from 'underscore';\r\nimport React, { useState, useContext, useCallback, useMemo, useEffect } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { Gavel20Regular } from '@fluentui/react-icons';\r\nimport { StatusSummaryCard } from '@bingads-webui-campaign-react/status-summary-card';\r\nimport { BidStrategyComponent, MAX_CONVERSIONS, MAX_CONVERSIONS_VALUE } from '@bingads-webui-campaign-react/bid-strategy-component';\r\nimport { FORM_STATES, Form, useFormService } from '@bingads-webui-react/form';\r\nimport { FormErrorGroup, UnmappedFormErrors as OriginalUnmappedFormErrors } from '@bingads-webui-campaign-react/form-error';\r\nimport { withControlErrorHandling } from '@bingads-webui-campaign-react/error-handling';\r\nimport { InstrumentationContext } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\n\r\nimport { withFooter } from './with-footer';\r\nimport { useBidStrategyRepository } from './use-repository';\r\nimport { useReadCampaign } from './use-read-campaign';\r\nimport { getApiErrorMapper } from '../utils/api-error-mapper';\r\nimport { getLinkedInBidStrategyText, getLinkedInBidStrategyOptions } from '../utils/linkedin-campaign-utils';\r\nimport { useBidStrategyCardStyles } from '../styles/bid-strategy-card-styles';\r\n\r\nconst UnmappedFormErrors = withControlErrorHandling(OriginalUnmappedFormErrors);\r\n\r\nconst FormViewWrapper = ({\r\n data,\r\n onDataChange,\r\n error,\r\n}: { data: any; onDataChange: Function; error: any; }) => {\r\n const errors = error?.error?.errors || [];\r\n const {\r\n campaignType,\r\n campaignGoal,\r\n bidStrategy,\r\n cpa,\r\n roas,\r\n isInitialAdditionalDetailsChecked,\r\n currency,\r\n budgetAmount,\r\n } = data || {};\r\n const { state } = useFormService();\r\n const isLoading = state.matches(FORM_STATES.LOADING);\r\n const classes = useBidStrategyCardStyles();\r\n\r\n const i18n = useContext(I18nContext) as any;\r\n const apiErrorMapper = getApiErrorMapper(i18n);\r\n\r\n const serverContext = useContext(ServerContext) as any;\r\n const bidRange = (serverContext && serverContext.KeywordBidRange) || null;\r\n\r\n const options = useMemo(() => {\r\n if (campaignType === 'PerformanceMax') {\r\n return [MAX_CONVERSIONS, MAX_CONVERSIONS_VALUE];\r\n }\r\n if (campaignType === 'LinkedIn') {\r\n return getLinkedInBidStrategyOptions(campaignGoal);\r\n }\r\n return [];\r\n }, [campaignGoal, campaignType]);\r\n\r\n const onFieldChange = useCallback((updatedData) => {\r\n onDataChange({\r\n data: prevData => ({\r\n ...prevData,\r\n ...updatedData,\r\n }),\r\n });\r\n }, [onDataChange]);\r\n\r\n const onBidStrategyChange = useCallback((e, newBidStrategy) => {\r\n const bidStrategyType = newBidStrategy?.type;\r\n onFieldChange({ bidStrategy: bidStrategyType });\r\n }, [onFieldChange]);\r\n\r\n const onMarketingMetricChange = useCallback(({\r\n data: newMarketingMetric,\r\n isValid,\r\n messages,\r\n }) => {\r\n onFieldChange({\r\n ...newMarketingMetric,\r\n isMarketingMetricValid: isValid,\r\n marketingMetricErrors: messages,\r\n });\r\n }, [onFieldChange]);\r\n\r\n return (\r\n
\r\n \r\n \r\n\r\n \r\n \r\n
);\r\n};\r\n\r\nconst BidStrategyForm = ({ closeDialog, log }: { closeDialog: Function, log: { trace: Function } }) => {\r\n const onDoneSaving = useCallback((...params) => {\r\n log.trace('Bid strategy form popover closed: saved');\r\n closeDialog(...params);\r\n }, [log, closeDialog]);\r\n\r\n const onCanceled = useCallback((...params) => {\r\n log.trace('Bid strategy form popover closed: canceled');\r\n closeDialog(...params);\r\n }, [log, closeDialog]);\r\n\r\n useEffect(() => {\r\n log.trace('Bid strategy card popover rendered');\r\n }, [log]);\r\n\r\n const config = useMemo(() => ({\r\n id: 'bid-strategy-form',\r\n view: withFooter(FormViewWrapper),\r\n repository: useBidStrategyRepository,\r\n machineOptions: {\r\n actions: {\r\n onDoneSaving,\r\n onCanceled,\r\n },\r\n },\r\n }), [onCanceled, onDoneSaving]);\r\n return ();\r\n};\r\n\r\nconst getBidStrategyText = (campaign, i18n) => {\r\n if (campaign.CampaignType === 'PerformanceMax') {\r\n return campaign?.BiddingScheme?.Type === MAX_CONVERSIONS.type ? i18n.getString(MAX_CONVERSIONS.text) : i18n.getString(MAX_CONVERSIONS_VALUE.text);\r\n }\r\n if (campaign.CampaignType === 'LinkedIn') {\r\n return getLinkedInBidStrategyText(campaign, i18n);\r\n }\r\n return '';\r\n};\r\n\r\nexport const BidStrategyCard: React.FunctionComponent<{ contentReady: Function }> = ({ contentReady }: { contentReady: Function }) => {\r\n const i18n = useContext(I18nContext) as any;\r\n const instrumentation = useContext(InstrumentationContext) as any;\r\n\r\n const [bidStrategyText, setBidStrategyText] = useState('');\r\n const [isLoading, setIsLoading] = useState(true);\r\n\r\n const log = useMemo(() => {\r\n if (instrumentation && instrumentation.campaignOverviewEdit) {\r\n const scenario = instrumentation.campaignOverviewEdit.create();\r\n return scenario.bidStrategyEdit.create();\r\n }\r\n return {\r\n trace: _.noop,\r\n error: _.noop,\r\n };\r\n }, [instrumentation]);\r\n\r\n const set = useCallback((campaign) => {\r\n setBidStrategyText(getBidStrategyText(campaign, i18n));\r\n setIsLoading(false);\r\n contentReady();\r\n }, [contentReady, i18n]);\r\n const readCampaign = useReadCampaign({ set });\r\n useEffect(() => {\r\n setIsLoading(true);\r\n readCampaign();\r\n }, [i18n, readCampaign, contentReady]);\r\n\r\n useEffect(() => {\r\n log.trace('Bid strategy card rendered');\r\n }, [log]);\r\n\r\n const ChildComponent = useMemo(() => (props => ), [log]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n","import _ from 'underscore';\r\nimport React, { useState, useCallback, useContext, useMemo, useEffect } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { tokens } from '@fluentui/react-components';\r\nimport {\r\n CheckmarkCircle20Regular,\r\n Pause20Regular,\r\n Circle12Filled,\r\n Pause12Filled,\r\n} from '@fluentui/react-icons';\r\nimport { showPausedCampaignNotifications } from '@bingads-webui-campaign/import-shared-utils';\r\nimport { StatusSummaryCard } from '@bingads-webui-campaign-react/status-summary-card';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { edmCampaign } from '@bingads-webui/edm-campaign';\r\nimport { InstrumentationContext } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { useReadCampaign } from './use-read-campaign';\r\n\r\nexport const CampaignStatusCard: React.FunctionComponent<{ contentReady: Function }> = React.memo(({ contentReady }: { contentReady: Function }) => {\r\n const i18n = useContext(I18nContext) as any;\r\n const instrumentation = useContext(InstrumentationContext) as any;\r\n const { scope } = useContext(ScopeContext) as any;\r\n const {\r\n cid, aid, campaignId,\r\n } = scope.values;\r\n\r\n const log = useMemo(() => {\r\n if (instrumentation && instrumentation.campaignOverviewEdit) {\r\n const scenario = instrumentation.campaignOverviewEdit.create();\r\n return scenario.campaignStatusEdit.create();\r\n }\r\n return {\r\n trace: _.noop,\r\n error: _.noop,\r\n };\r\n }, [instrumentation]);\r\n\r\n const pausedCampaignImportNotificationActivity = useMemo(() => {\r\n const { activity } = instrumentation.createScenarioAndActivity({\r\n scenarioName: 'PausedCampaignImportNotification',\r\n activityName: 'OverviewCampaignStatusCard',\r\n });\r\n return activity;\r\n }, [instrumentation]);\r\n\r\n const menuItemConfigs = useMemo(() => ([\r\n {\r\n text: i18n.getString(_TL_('Enabled')),\r\n value: 'Active',\r\n icon: Circle12Filled,\r\n iconColor: tokens.colorPaletteGreenForeground1,\r\n },\r\n {\r\n text: i18n.getString(_TL_('Paused')),\r\n value: 'Paused',\r\n icon: Pause12Filled,\r\n },\r\n ]), [i18n]);\r\n\r\n const [checkedValue, setCheckedValue] = useState('Active');\r\n const [campaignItemData, seCampaignItemData] = useState({});\r\n const [isLoading, setIsLoading] = useState(true);\r\n\r\n const set = useCallback((campaign) => {\r\n setCheckedValue(campaign?.Status === 'Active' ? 'Active' : 'Paused');\r\n\r\n // set campaign item data\r\n seCampaignItemData(campaign);\r\n\r\n setIsLoading(false);\r\n contentReady();\r\n }, [contentReady]);\r\n const readCampaign = useReadCampaign({ set });\r\n useEffect(() => {\r\n setIsLoading(true);\r\n readCampaign();\r\n }, [readCampaign, contentReady]);\r\n\r\n const onChange = useCallback((\r\n e,\r\n { checkedItems }\r\n ) => {\r\n setIsLoading(true);\r\n edmCampaign\r\n .Customers.$withKey(cid)\r\n .Accounts.$withKey(aid)\r\n .Campaigns.$withKey(campaignId)\r\n .bulkUpdate({\r\n Id: campaignId,\r\n Status: checkedItems[0],\r\n }).then(() => {\r\n log.trace(`Campaign status updated to ${checkedItems[0]}`);\r\n setCheckedValue(checkedItems[0]);\r\n\r\n // show paused campaign notifications based on specific conditions\r\n showPausedCampaignNotifications({\r\n campaignItemList: [campaignItemData],\r\n updateStatus: checkedItems[0] === 'Paused' ? 'UserPaused' : checkedItems[0], // convert the paused status text to be consistent with other scenarios\r\n activity: pausedCampaignImportNotificationActivity,\r\n });\r\n }, (error) => {\r\n log.error(`Campaign status update failed with error: ${JSON.stringify(error)}`);\r\n })\r\n .finally(() => setIsLoading(false));\r\n }, [cid, aid, campaignId, log, campaignItemData, pausedCampaignImportNotificationActivity]);\r\n\r\n const isActive = checkedValue === 'Active';\r\n\r\n useEffect(() => {\r\n log.trace('Campaign status card rendered');\r\n }, [log]);\r\n\r\n return (\r\n \r\n );\r\n});\r\n","import { makeStyles, shorthands } from '@fluentui/react-components';\r\n\r\nimport { ResponsiveSize, isSizeInList } from '@bingads-webui-campaign-react/pmax-overview-responsive-utils';\r\n\r\nexport const useCampaignStatusSummaryCardsStyles = makeStyles({\r\n container: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n justifyContent: 'space-between',\r\n ...shorthands.padding('6px'),\r\n ...shorthands.gap('12px'),\r\n },\r\n fullWidthCards: {\r\n flexDirection: 'column',\r\n },\r\n});\r\n\r\nexport const shouldUseFullWidthCards = (responsiveSize: ResponsiveSize) => !isSizeInList(responsiveSize, ['xl', 'xxl']);\r\n","import React, { memo } from 'react';\r\nimport classNames from 'classnames';\r\n\r\nimport { ResponsiveSize } from '@bingads-webui-campaign-react/pmax-overview-responsive-utils';\r\n\r\nimport { BudgetCard } from './components/budget-card';\r\nimport { BidStrategyCard } from './components/bid-strategy-card';\r\nimport { CampaignStatusCard } from './components/campaign-status-card';\r\nimport { shouldUseFullWidthCards, useCampaignStatusSummaryCardsStyles } from './styles/styles';\r\n\r\ntype CampaignStatusSummaryCardsProps = {\r\n campaignStatusContentReady: Function;\r\n budgetContentReady: Function;\r\n bidStrategyContentReady: Function;\r\n responsiveSize: ResponsiveSize;\r\n};\r\n\r\nexport const CampaignStatusSummaryCards: React.FunctionComponent =\r\n memo(({\r\n campaignStatusContentReady, budgetContentReady, bidStrategyContentReady, responsiveSize,\r\n }: CampaignStatusSummaryCardsProps) => {\r\n const classes = useCampaignStatusSummaryCardsStyles();\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n });\r\n","import performanceImage from '../media/performance.svg';\r\nimport recommendationsImage from '../media/recommendations.svg';\r\nimport campaignsImage from '../media/campaigns.svg';\r\nimport topChangesImage from '../media/top-changes.svg';\r\nimport conversionTrackingImage from '../media/conversion-tracking.svg';\r\nimport keywordsImage from '../media/keywords.svg';\r\nimport searchTermsImage from '../media/search-terms.svg';\r\nimport devicesImage from '../media/devices.svg';\r\nimport competitionImage from '../media/competition.svg';\r\nimport adGroupsImage from '../media/ad-groups.svg';\r\nimport accountsImage from '../media/accounts.svg';\r\nimport topLocationsImage from '../media/top-locations.svg';\r\n\r\nexport const CARD_CONFIG = {\r\n 'CardType-Performance': {\r\n icon: performanceImage,\r\n title: _TL_('Performance'),\r\n description: _TL_('View your campaigns\\' key performance data all in one place'),\r\n },\r\n 'CardType-Recommendations': {\r\n icon: recommendationsImage,\r\n title: _TL_('Recommendations'),\r\n description: _TL_('View key untapped strategies to ensure that you are getting the most out of your Microsoft advertising experience.'),\r\n },\r\n 'CardType-TopCampaigns': {\r\n icon: campaignsImage,\r\n title: _TL_('Campaigns'),\r\n description: _TL_('View your top campaigns of interest based on their performance data.'),\r\n },\r\n 'CardType-TopChanges-Campaign': {\r\n icon: topChangesImage,\r\n title: _TL_('Top changes'),\r\n description: _TL_('Identify which campaigns and ad groups are responsible for the biggest changes to your account.'),\r\n },\r\n 'CardType-TopChanges-Account': {\r\n icon: topChangesImage,\r\n title: _TL_('Top changes'),\r\n description: _TL_('Identify which accounts are responsible for the biggest changes.'),\r\n },\r\n 'CardType-TopChanges-AdGroup': {\r\n icon: topChangesImage,\r\n title: _TL_('Top changes'),\r\n description: _TL_('Identify which campaigns and ad groups are responsible for the biggest changes to your account.'),\r\n },\r\n 'CardType-Conversion-Tracking': {\r\n icon: conversionTrackingImage,\r\n title: _TL_('Conversion tracking'),\r\n description: _TL_('Conversions track website actions to measure campaign performance.'),\r\n },\r\n 'CardType-TopKeyword': {\r\n icon: keywordsImage,\r\n title: _TL_('Keywords'),\r\n description: _TL_('View your top keywords of interest based on their performance data.'),\r\n },\r\n 'CardType-TopSearchTerms': {\r\n icon: searchTermsImage,\r\n title: _TL_('What people searched'),\r\n description: _TL_('Get a quick glance into what queries potential customers are searching for to trigger your ads.'),\r\n },\r\n 'CardType-Device': {\r\n icon: devicesImage,\r\n title: _TL_('Devices'),\r\n description: _TL_('Get insights on how your campaigns perform by device type.'),\r\n },\r\n 'CardType-Competition': {\r\n icon: competitionImage,\r\n title: _TL_('Competition'),\r\n description: _TL_('View your campaign\\'s key performance data all in one place.'),\r\n },\r\n 'CardType-TopLocations': {\r\n icon: topLocationsImage,\r\n title: _TL_('Top locations'),\r\n description: _TL_('Highlights the top 10 best performing locations within the location targets you initially set.'),\r\n },\r\n 'CardType-TopAdGroup': {\r\n icon: adGroupsImage,\r\n title: _TL_('Ad groups'),\r\n description: _TL_('View your top ad groups of interest based on their performance data.'),\r\n },\r\n 'CardType-TopAccounts': {\r\n icon: accountsImage,\r\n title: _TL_('Accounts'),\r\n description: _TL_('View your top accounts of interest based on their performance data.'),\r\n },\r\n};\r\n","import { makeStyles, tokens, shorthands } from '@fluentui/react-components';\r\n\r\nconst cardStyle = {\r\n width: '280px',\r\n height: '185px',\r\n};\r\nexport const useCardStyles = makeStyles({\r\n card: cardStyle,\r\n cardSelected: {\r\n ...cardStyle,\r\n ...shorthands.border('1px', 'solid', tokens.colorNeutralForeground2BrandHover),\r\n },\r\n checkmark: {\r\n position: 'absolute',\r\n top: '0',\r\n right: '0',\r\n width: '16px',\r\n height: '16px',\r\n marginTop: '16px',\r\n marginRight: '16px',\r\n color: tokens.colorNeutralForeground2BrandHover,\r\n },\r\n image: {\r\n ...shorthands.margin('8px'),\r\n height: '45px',\r\n width: '45px',\r\n },\r\n header: {\r\n maxHeight: '52px',\r\n },\r\n textArea: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n title: {\r\n marginTop: '16px',\r\n marginBottom: '4px',\r\n },\r\n});\r\n","import React, { useCallback } from 'react';\r\nimport classNames from 'classnames';\r\nimport {\r\n Card as FluentCard,\r\n Caption1,\r\n Text,\r\n Image,\r\n} from '@fluentui/react-components';\r\nimport { CheckmarkCircleFilled } from '@fluentui/react-icons';\r\n\r\nimport { CARD_CONFIG } from './card-config';\r\nimport { CardProps } from './types';\r\nimport { useCardStyles } from './styles/card-styles';\r\n\r\nexport function Card({\r\n i18n,\r\n cardId,\r\n isSelected,\r\n onCardSelectionChange,\r\n}: CardProps) {\r\n const styles = useCardStyles() as any;\r\n const onCardClicked = useCallback(() => onCardSelectionChange(cardId, !isSelected), [cardId, isSelected, onCardSelectionChange]);\r\n const handleSpace = useCallback((e) => {\r\n if (e.key === ' ') {\r\n onCardClicked();\r\n }\r\n }, [onCardClicked]);\r\n if (!CARD_CONFIG[cardId]) return null;\r\n return (\r\n \r\n
\r\n {i18n.getString(CARD_CONFIG[cardId].title)}\r\n {isSelected && }\r\n
\r\n
\r\n \r\n {i18n.getString(CARD_CONFIG[cardId].title)}\r\n \r\n {i18n.getString(CARD_CONFIG[cardId].description)}\r\n
\r\n
\r\n );\r\n}\r\n","import { makeStyles, shorthands } from '@fluentui/react-components';\r\n\r\nexport const useCardSelectorStyles = makeStyles({\r\n cardsContainer: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n ...shorthands.gap('16px'),\r\n marginTop: '24px',\r\n marginBottom: '24px',\r\n },\r\n divider: {\r\n maxHeight: '1px',\r\n },\r\n});\r\n","import _ from 'underscore';\r\nimport classNames from 'classnames';\r\nimport React, { useState, useContext, useMemo, useCallback } from 'react';\r\nimport {\r\n Body1,\r\n Button,\r\n Divider,\r\n useRestoreFocusSource,\r\n useRestoreFocusTarget,\r\n} from '@fluentui/react-components';\r\nimport {\r\n DrawerBody,\r\n DrawerHeader,\r\n DrawerHeaderTitle,\r\n DrawerFooter,\r\n Drawer,\r\n} from '@fluentui/react-drawer';\r\nimport { Dismiss24Regular, AppsAddIn16Regular } from '@fluentui/react-icons';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\n\r\nimport { Card } from './card';\r\nimport { useCardSelectorStyles } from './styles/card-selector-styles';\r\nimport { CardSelectorProps, CardConfigProps } from './types';\r\n\r\nexport function CardSelector({\r\n cards,\r\n onSave,\r\n}: CardSelectorProps) {\r\n const styles = useCardSelectorStyles() as any;\r\n const i18n = useContext(I18nContext) as any;\r\n\r\n const [open, setOpen] = useState(false);\r\n const onOpenDrawer = () => setOpen(true);\r\n const [localCardsState, setLocalCardsState] = useState(cards);\r\n const onCardSelectionChange = useCallback((cardId, isSelected) => {\r\n const index = _.findIndex(localCardsState, { id: cardId });\r\n if (index >= 0) {\r\n const newCards = [...localCardsState];\r\n newCards[index] = { ...newCards[index], hidden: !isSelected };\r\n setLocalCardsState(newCards);\r\n }\r\n }, [localCardsState]);\r\n\r\n const onSaveClicked = useCallback(() => {\r\n onSave(localCardsState);\r\n setOpen(false);\r\n }, [localCardsState, onSave]);\r\n\r\n const onCancel = useCallback(() => {\r\n setOpen(false);\r\n setLocalCardsState(cards);\r\n }, [cards]);\r\n\r\n const selectedCount = useMemo(() => _.reject(localCardsState, (card: CardConfigProps) => card.hidden)?.length || 0, [localCardsState]);\r\n\r\n // Overlay Drawer will handle focus by default, but inline Drawers need manual focus restoration attributes, if applicable\r\n const restoreFocusTargetAttributes = useRestoreFocusTarget();\r\n const restoreFocusSourceAttributes = useRestoreFocusSource();\r\n const tileLabel = selectedCount === 1\r\n ? _TL_('{{count}} tile selected')\r\n : _TL_('{{count}} tiles selected');\r\n\r\n return (\r\n
\r\n }\r\n onClick={onOpenDrawer}\r\n >\r\n {i18n.getString(_TL_('Add or remove tiles'))}\r\n \r\n \r\n \r\n }\r\n onClick={onCancel}\r\n />\r\n }\r\n >\r\n {i18n.getString(_TL_('Add or remove tiles'))}\r\n \r\n \r\n\r\n \r\n <>{i18n.getString(_TL_('Select what tiles you would like to see in this overview.'))}\r\n
\r\n {_.map(\r\n localCardsState,\r\n (card: CardConfigProps) => ()\r\n )}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {i18n.getString(tileLabel, { count: selectedCount })}\r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n"],"names":["getTextInputContainerStyles","TextInputContainer","width","color","BusinessNameWithValidation","props","id","i18n","maxLength","updateValidation","validationProps","onBusinessNameChanged","showLabel","data","activity","useContext","ActivityContext","businessName","_","getErrorMessages","useCallback","value","textLength","getLength","getString","_TL_","useEffect","BusinessName","onChanged","event","signal","concat","JSON","stringify","classes","useDefaultStyles","useMemo","_jsx","className","classnames","children","RemainingCharsUnvalidatedTextField","defaultValue","onChange","maxLengthHint","label","ariaLabel","defaultProps","undefined","SelectableItem","_React$PureComponent","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","handleKeyDown","keyCode","handleClick","_this$props","siteMapId","siteMapAvailable","onClick","_inherits","_createClass","key","_this$props2","this","isSelected","ariaItemSize","ariaItemIndex","showWarning","isNewFeature","rootClass","selectableButton","_jsxs","onMouseOver","onFocus","onKeyDown","type","tabIndex","checked","React","identity","text","StyledSelectableItem","withDefaultStyles","getSelectableItemStyles","ObjectiveItem","helpKeyDown","helpClick","stopPropagation","window","PopupController","PopupJsClick","target","handleDescription","description","wordArray","split","updatedDescription","pop","join","renderObjectiveItemContent","iconName","descriptionLine","helpId","helpArialLabel","showFACBadge","FACInfo","isSVGIcon","classNames","_objectSpread","objectiveItemContent","objectiveIcon","Glyphicon","glyph","objectiveDescription","objectiveHelpIcon","topic","newFeatureLabel","facLabel","CouponValue","CouponValueWithCurrency","objectiveItem","StyledObjectiveItem","compose","TempComponent","getObjectiveItemStyles","withI18nConsumer","wrap","ActionList","_ref","title","actionItems","ariaLabelId","Math","floor","random","actionList","role","map","item","index","StyledActionList","getActionListStyles","AdTypeItem","handleAdTypeClick","disabled","onSelect","itemId","dealDetails","state","isSmartShoppingWarningVisible","isPerfMaxWarningVisible","warningMessageTarget","isShowWarning","setState","smartShoppingWarningMessage","img","audienceAdsPolicy","period","helpTopicId","ref","adTypeItem","bind","Row","src","alt","rel","href","LearnMoreLink","linkText","Callout","smartShoppingWarningCallout","current","directionalHint","DirectionalHint","leftCenter","calloutWidth","rightCenter","StyledAdTypeItem","getAdTypeItemStyles","isTargetHasValue","deal","targetType","getTargetConstraints","mandatory","DealFilterBar","deals","onFilter","locationFilterOptions","isEnabledDealsV2","getChooseAdsPanelStyles","locationOptions","_useState","useState","_useState2","_slicedToArray","ronFilter","setRonFilter","_useState3","_useState4","ageFilter","setAgeFilter","_useState5","_useState6","genderFilter","setGenderFilter","_useState7","_useState8","genreFilter","setGenreFilter","currentLocation","config","get","Market","currentLocationInOptions","find","location","usLocationOptions","defaultLocationOptions","_useState9","_useState10","locationFilter","setLocationFilter","applyFilterToDeal","tmpDeals","slice","filter","toLowerCase","includes","Genre","AgeRange","String","Id","dealFilterBar","Dropdown","placeholder","options","selectedKey","ev","styles","dropdown","NFDealAccountPreferenceName","noSmartShoppingReasonRef","ChooseAdsPanel","handleNextButtonClick","handleNavigation","permissions","preferenceService","_this$state","selectedVideoChannelType","netflixDealTCAccepted","selectedDeal","selectedAdImpressionsType","selectedSponsoredProductCampaignType","set","isLocalStorageSupported","localStorage","isNetflixDealSelected","setAtAccountLevel","Name","Data","Type","Version","showPerfMaxCampaignTypeOptions","showShoppingCampaignTypeOptions","selectedCampaignType","shoppingCampaignTypes","standard","IsAIMCampaignEnabled","selectedAdType","handleAdTypeSelect","adTypeId","handleCampaignTypeSelect","handleShoppingCampaignTypeSelect","handleXanerVideoCampaignChannelSelect","handleSponsoredProductCampaignTypeSelect","handleDealSelect","handleAdImpressionsCampaignChannelSelect","handleCheckNFDealIterm","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_context","prev","next","stop","handleDealFilter","filteredDeals","isAcceptNetflixDealTCs","findByNameAtAccountLevel","isNetflixDeal","createService","getLocalStorage","supportsStorage","invalidate","isPerfMaxCampaignDisabled","isSmartShoppingCampaignDisabled","loading","locationMap","smartShoppingNotSupportedReason","prevProps","fetchIsSmartShoppingCampaignEnabled","fetchIsPerfMaxCampaignEnabled","fetchDeals","adTypeConfig","shoppingCampaignTypeConfig","perfMaxCampaignTypeConfig","standardShoppingCampaignTypeConfig","xandrVideoCampaignTypeConfig","adImpressionsCampaignTypeConfig","_this$props3","shoppingCampaignSubTypeTitle","campaignTypeTitle","isPerfMaxCampaign","_this$props4","scope","siteMap","smartShoppingWarning","campaignType","smartShoppingWarningLink","evt","preventDefault","pathname","getRoutePathById","history","push","search","_this$props5","NO_AVAILABLE_GOAL","getConversionGoalWarningMessage","MORE_THAN_100","_fetchDeals","_callee2","serverContext","_scope$values","cid","aid","lcid","locationIds","locationResponse","_context2","IsDealEnabledForMsAds","abrupt","values","CurrentUser","LocaleID","IsEnabledDealsV2","getDealsV2","then","response","sent","getDeals","uniq","flatten","getCountriesLocations","each","CountryCode","EnglishName","_x","apply","_this2","isSmartShoppingCampaignEnabled","fetchIsSmartShoppingCampaignSupportedWithLegacyCode","_ref2","supported","reason","NO_PILOT","smart","_this3","Promise","resolve","_this3$createService","fetchIsSmartShoppingCampaignSupported","noSmartShoppingReason","_this$state2","_this4","_this$props6","_this$state3","campaignTypeOptions","IsDomesticSimplifiedChineseEnabled","campaignTypesToShow","standardCampaignType","audienceCampaignType","campaigntype","xandrVideoCampaignType","IsDealFilterEnabled","hideDealImpression","isDealGenreRestricted","configItem","EstimatedImpressions","style","fontSize","fontWeight","bytesForHuman","targetConstraintsToText","MinimumBid","decimal","fromFloatToString","MTCurrencyConvertor","Currency","getVideoConstraintDuration","adImpressionCampaignType","sponsoredProductCampaignTypeConfig","warningMessage","campaignTypeLength","perfMaxCampaignType","getSmartShoppingWarningMessage","shoppingOptions","shopppingCampaignTypes","isSmartShoppingDisabled","standardShoppingCampaignType","adTypes","Checkbox","_Fragment","Link","defaultChecked","MessageBar","_this$props7","isOpen","onClose","isMMCSetup","_this$state4","optionsLength","Panel","getPanelTitle","panelClassName","chooseObjectivePanel","panelReadyAriaLabel","chooseAdsPanelBody","Loading","isVisible","renderOptions","isBoolean","isMultiline","renderConsentCheckBox","chooseAdsPanelFooter","Button","nextButton","btnStyle","isNextButtonDisabled","cancelButton","nextProps","prevState","StyledChooseAdsPanel","withScope","withSiteMap","withPermissions","ChooseObjective","getFACData","ccJsData","CurrencyCode","FeatureAdoptionCoupon","findAll","coupons","catch","Status","FeatureId","parseInt","FAC_FEATURE_ID","SHOPPING_CAMPAIGN","CCUIConstants","RecommendationAdoptionStatus","NotInProgess","Active","couponDetails","formatCurrency","getDescription","setSelectedItemFromQueryString","selectedItemKeyFromSearch","selectedCampaignObjectiveKey","objectivesConfig","isEnabled","some","handleSelectedObjective","showPanel","isPanelOpen","dynamic","PerformanceMaxCampaigns","getProductData","closePanel","selectedItemId","_ref3","isSmartCampaign","isHotelBooking","isAppInstall","IsRenameHotelToLodgingEnabled","uid","navigateSelectedObjective","isShopping","isAudience","isSmartShopping","findWhere","indexOf","IsVideoAdsForCampaignEnabled","XandrVideoCampaigns","isVideo","IsManualCpmEnabled","XandrDisplayAdsCampaigns","isDisplayAds","IsSmartShoppingCampaignEnabled","SSCDeprecation","selectedType","adImpressionsCampaignTypes","displayAds","isNewAudience","IsNewStaticAudienceCampaignCreationEnabled","isNewSearch","SearchCampaignCreationRevamp","isPerfMax","campaignTypes","perfMax","sponsoredBrandAdType","isMediaPackage","renderActionList","objectives","tools","toolsConfig","params","navigateSelectedTools","Fragment","perfMarker","prefetchChunks","done","_scope$values2","CurrentAccount","FACForShopping","getProductDataWithCache","withDFMCache","hasAnyStores","ProductCollectionAccounts","objectivesForPerfMax","chooseObjective","pageContent","Stack","horizontal","tokens","childrenGap","Item","grow","StyledCampaignChooseObjective","getChooseObjectiveStyles","withPreference","withCcJsData","withCreationHeader","ChooseObjectiveWithLegacyConfig","ChooseObjectiveView","appConfig","InjectedView","default","fallback","ProgressiveLoadingBlock","resolveStyles","theme","resolvedStyles","s","isFunction","isEmpty","Error","callbackAfterInjected","view","on","onSwitch","onSwitched","StyledCampaignCreationSearch","withDelayedStyles","withTheme","InjectWrapperWithHoC","InjectViewFactory","CampaignCreateAdvancedView","InjectViewOption","adExtensionsDynamicFeaturesLoader","instrumentation","adExtensionsDynamicFeatures","accountCurrencyCode","template","VerticalTemplate","usePanel","isForVNext","styleScopeName","_ref$palette","palette","globalStyles","merge","_toConsumableArray","stepWizardStyle","helpbuttonStyle","inputFieldStyle","CreationContainerContentOverrideStyle","commonStyles","containerBudgetStyle","sharedBudgetGridWrapper","linkStyle","searchCreationStyles","dsaCampaignStyles","campaignSettingsStyles","creationCommonStyle","CampaignCreationSearch","getDelayedStyles","getEntityCreationStyle","CampaignCreationAudience","AudienceCampaignCreationWizard","getCommonCampaignCreationViewOptions","layout","VerticalLayout","headerTemplate","HeaderTemplate","StyledCampaignCreationAudience","CampaignCreationAudienceVideo","_props$serverContext","CurrentAccountInActive","_props$serverContext$","Permissions","IsReadOnlyUser","IsImpressionTrackingUrlsEnabled","viewContext","isReadOnlyUser","isImpressionTrackingUrlsEnabled","newI18n","deps","pageContext","PageContext","StyledCampaignCreationAudienceVideo","getShoppingCampaignCreationComponent","isMSStoreAdsGAWorkflow","useJsDataContext","_useShoppingFAC","useShoppingFAC","getFACCoupon","updateCouponStatus","ShoppingCampaignCreationView","CampaignCreationSearchShopping","CampaignCreationMSStoreAds","propTypes","PropTypes","isRequired","perfMarkerPropTypes","StyledCampaignCreationSearchShopping","StyledCampaignCreationMSStoreAds","StyledCampaignCreationAudienceShopping","IsEnabledForDynamicFeedCampaign","audienceCampaignSubType","initData","getProductDataInit","getFeedDataInit","$top","CampaignCreationAudienceSimplified","StaticAudienceCampaignCreation","StyledCampaignCreationAudienceSimplified","getStandardShoppingCampaignWizardAsync","StandardShoppingCampaignWizard","StandardShoppingComponent","getComponentAsync","Component","component","getShoppingCampaignCreationWizardComponent","campaignTypeName","StyledCampaignCreationSearchShoppingWizard","AdTypes","AudienceAndSearch","StyledCampaignCreationAudienceShoppingWizard","ShoppingAudience","WizardDefaultLayoutOverrideStyle","overflowY","StyledCampaignCreationSearchV2","SearchCampaignCreationWizard","dynamicOptionsLoader","adExtensionsAssociationsFactory","dynamicOptions","withProps","LazyView","getStyledAdGroupCreationSearchAsync","StyledAdGroupCreationSearch","getStyledAdGroupCreationAudienceAsync","StyledAdGroupCreationAudience","getHotelAdGroupCreationAsync","HotelAdGroupCreation","getXandrVideoAdGroupCreationAsync","_ref4","XandrVideoAdGroupCreationPage","getXandrDisplayAdsAdGroupCreationAsync","_ref5","XandrDisplayAdsAdGroupCreationPage","getDisplayPlusAdGroupCreationAsync","_ref6","DisplayPlusCreateAdGroupWizard","getSearchAdGroupCreationRevampAsync","_ref7","SearchAdGroupCreationWizard","getComponent","AdGroupCreation","SearchComponent","SearchRevampComponent","AudienceComponent","HotelComponent","XandrVideoComponent","XandrDisplayAdsComponent","DisplayPlusComponent","isOpenCreatePanel","replace","result","campaignSubType","isSearchCampaign","SearchRevampPhase2","isXandrVideoAdsCampaign","CTVAndDealToDisplayPlus","DisplayPlusAdGroupCreation","setClarityTag","IsDisplayPlusAdGroupCreationEnabled","CampaignSubType","isXandrDisplayAdsCampaign","isAudienceNativeAdsCampaign","HotelCampaign","CampaignSubTypeMapping","AudienceVideoAds","AdGroupCreationWithCampaign","withCampaign","toolsItems","analyticsId","toolsItemsPropsMapping","injectFactory","_ref$deps","path","require","View","showAsCampaignType","SearchAdsImg","AudienceAdsImg","xandrVideoCampaignTypes","xandrVideoWeb","xandrVideoCtv","nativeAds","sponsoredProductCampaignTypes","spa","spb","PerformanceMaxImg","smartShoppingCampaignTypeConfig","SmartShoppingImg","StandardShoppingImg","VideoCampaignWeb","VideoCampaignCTV","ReactTemplate","model","bold","MicrosoftRetailerNetworkImg","SponsoredPromotionsByBrands","SponsoredPromotionsByBrandImg","NativeAdsImg","DisplayAdsImg","InjectWrapper","injectViewFactoryOptions","ReactView","_InjectViewOption$dep","viewOptions","router","getRouterDep","eventDelegator","EventDelegator","i18nNewDesign","instance","render","callbackAfterRendered","BackboneInstanceWrapper","managed","remove","processor","processPermissions","toolsPathMap","urlIds","ImportFile","GoogleImport","FreeCoach","navigateToRoute","itemTarget","open","NavigateSection","backRouterId","isShowConfirmPopup","isBorderInsteadOfShadow","ariaLabelText","onBackLinkClick","confirm","getNavigateSectionStyles","backToCampaign","backToCampaignLink","onKeyPress","display","marginLeft","content","StyledNavigateSection","NavigateContent","crumbs","crumbSpans","crumb","navigateContentLastItem","last","navigateContent","StyledNavigateContent","getNavigateContentStyles","CreationHeader","container","flexDirection","height","headerCrumbs","fromPathId","fromPage","fromPageName","name","getDelayedCreationStyles","url","queryify","adapter","bypassCache","cacheResponse","jsData","Product","Deal","edmCampaign","Customers","$withKey","Accounts","Deals","IsUseV2","toPromise","objectivesItems","IsUserAppInstallAdsAllowed","IsSmartCampaignPhase2Enabled","IsEnhancedShoppingCampaignAllowed","IsSPAv2Enabled","WindowsStoreAdsCNExpansion","objectiveItemsPropsMapping","ADGROUP_CREATION_AUDIENCE_LOADED_EVENT","AdGroupCreationAudience","currentCampaign","campaignContext","isShoppingCampaign","CampaignSettings","AdGroupCreationAudiencePerfMarker","createChild","AudienceAdgroupCreationWizard","eventDispatcher","trigger","statusStyle","paginationStyle","entitySelectorStyle","buttonInputStyle","commonDoubleListBoxStyle","keywordPlannerStyle","searchboxStyle","estimationResultStyle","locationBidGridStyle","locationMapStyle","tableStyle","advancedSettingsSectionStyle","toggleButtonStyle","selectElementStyle","uiblockerStyle","kendoMultiSelectStyle","audienceModalStyles","audienceExpressionStyle","audienceCombinedListStyle","extensionEditorStyles","messageBarStyle","glyphIconStyle","datePickerStyle","keywordToolbarStyle","disclaimerPanelStyles","globalDsaCampaignStyles","globalAdgroupCreationStyles","convertToGlobalStyle","adEditorPanelOverrideStyle","audienceTargetsSettingsStyles","audienceBudgetBidsStyles","adgroupsKeywordsStyles","adExtensionsStyles","budgetBidsStyles","adgroupCreationStyles","raiseBidPopupStyles","audienceCreationStyles","padding","marginTop","audienceCampaignSettingsStyles","audienceReachEstimateContainerStyle","audienceAssociationSectionStyle","audienceAdsStyles","audienceAdgroupStyles","audienceCampaignBmcRedirectStyles","legacyUIBlockerStyle","getCreationContainerContentStyle","AdGroupCreationSearch","IsDSAMixedModeCampaignEnabled","isExperiment","CampaignType","MixedModeCreationView","AdgroupCreateAdvancedView","AdGroupCreationSearchPerfMarker","willInit","flex","overflow","campaignCreationAdEditorOverrideStyle","lineHeight","border","backgroundColor","position","top","themeDarker","textDecoration","outline","neutralSecondary","adEditorStyle","opacity","alignItems","flexWrap","marginBottom","minHeight","neutralPrimary","svgIconStyle","backgroundRepeat","backgroundSize","backgroundPosition","margin","labelStyle","right","borderRadius","_ref$iconFontFamily","iconFontFamily","justifyContent","backgroundImage","microsoftStoreIcon","textAlign","neutralLighter","cursor","neutralLight","neutralQuaternaryAlt","fontFamily","white","themePrimary","memoize","_ref$isBorderInsteadO","_ref2$palette","borderBottom","boxShadow","themeDarkAlt","marginRight","paddingTop","internalLinkStyle","isGreyBackground","minWidth","paddingBottom","float","zIndex","shoppingCreationStyles","campaignCreationSearchShoppingStyles","smartShoppingCreationStyles","smartShoppingStyles","CampaignCreationAudienceShopping","CampaignCreationSmartShopping","clear","borderLeft","paddingLeft","borderTop","bottom","left","boxSizing","getCampaignAdgroupMultiSelectorStyle","textDecorationLine","maxWidth","background","processEdmResult","items","totalCount","status","campaignName","Campaign","CampaignId","processEdmResultAccount","AccountInactiveReasonsCount","legacyI18nMap","CampaignSelector_List_Header","AdGroupSelector_List_Header","EmptyList_Content","EntitySelector_Pagination_Page","EntitySelector_Pagination_TotalPageCountText","EntitySelector_Pagination_PreviousPageText","EntitySelector_Pagination_NextPageText","EntitySelector_Search_Placeholder","CampaignSelector_SelectCampaign","CampaignSelector_SelectCampaigns","AdGroupSelector_SelectAdGroup","AdGroupSelector_SelectAdGroups","CampaignSelector_Result_List_Header","AdGroupSelector_Result_List_Header","Result_Action_Bar","Campaigns","Done","Cancel","Search","CampaignSelector_Result_Action_Bar","AccountSelector_List_Header","AccountSelector_SelectAccounts","AccountSelector_Result_List_Header","CAMPAIGN_PAGESIZE","UnstyledCampaignAdgroupSelectorEdm","_React$Component","onSelectDone","onApply","fetchCampaign","_ref$query","query","_ref$pageNumber","pageNumber","_ref$pageSize","pageSize","currentEntity","getEntityFromScope","campaignFilterCustomizer","where","skip","select","fetch","e","finally","withUiBlock","$","campaign","containerClassName","selfRef","fetchAdgroup","_ref2$query","_ref2$pageNumber","_ref2$pageSize","_ref2$scopeParentItem","scopeParentItem","adGroupFilterCustomizer","campaignId","AdGroups","adgroup","fetchAccount","_ref3$query","_ref3$pageNumber","_ref3$pageSize","accountFilterCustomizer","onFetch","onSelectCampaign","onSelectAdGroup","i18nLegacy","buildLegacyI18n","_this$props$scope$val","adGroupId","campaignAdgroupMultiSelector","isArray","extend","isCampaignMode","CampaignSelector","isMultiMode","selectedItemsForMultiMode","onSelectCancel","withDropdownMenu","stringKeys","listHeader","selectEntities","emptyListContent","resultHeader","actionBar","CampaignAdgroupSelector","selectedCampaign","selectedAdgroupsForMultiMode","CampaignAdgroupSelectorEdm","_ref4$palette","ThemeFluent","ComponentSettings","noop","CampaignAdgroupSelectorEdmView","_Backbone$View","selectedItem","ReactDOM","el","_superPropGet","Backbone","sharedStylesFromSelDesign","borderWidth","borderBottomWidth","borderBottomStyle","_ref2$iconFontFamily","alertStyle","paddingRight","verticalAlign","resize","gridTemplateColumns","settingsCommonStyles","elementLocator","underlineLinkStyle","textOverflow","whiteSpace","disclaimerSettingsStyles","getInputBorderStyle","paddingBotton","black","neutralSecondaryAlt","outlineOffset","overflowWrap","backgroundClip","borderRight","borderColor","zoom","visibility","adsExtensionDoubleListStyle","adExtensionItemTemplateStyles","categoryContainerStyle","pointerEvents","tableLayout","convertToLocalStyle","scrollbarStyle","pillControlStyle","overflowX","wordBreak","convertToConcatStyle","_ref2$isCreationPage","isCreationPage","Object","assign","listStyle","appearance","criterionSettingAudienceStyles","fontsize","linkedInTargetSelectionSyles","_ref3$companySearchTa","companySearchTableWidth","_ref3$companySearchTa2","companySearchTableCompanyNameWidth","_ref3$companyIconHeig","companyIconHeightWidth","_ref3$targetGridWidth","targetGridWidth","linkedInSharedStyles","_ref4$iconFontFamily","_ref5$companySearchTa","_ref5$companySearchTa2","_ref5$companyIconHeig","searchBoxStyles","_ref6$companySearchTa","criterionSettingCompanyStyles","_ref7$palette","_ref7$iconFontFamily","_ref8","_ref8$companySearchTa","_ref8$companySearchTa2","_ref8$companyIconHeig","_ref8$targetGridWidth","criterionSettingIndustryStyles","_ref9","_ref9$palette","_ref9$iconFontFamily","_ref10","_ref10$companySearchT","_ref10$companySearchT2","_ref10$companyIconHei","_ref10$targetGridWidt","jobFunctionSearchStyles","_ref11","_ref11$companySearchT","criterionSettingJobFunctionStyles","_ref12","_ref12$palette","_ref12$iconFontFamily","_ref13","_ref13$companySearchT","_ref13$companySearchT2","_ref13$companyIconHei","_ref13$targetGridWidt","selectorContainerStyles","_ref14","_ref15","_ref14$palette","_ref14$iconFontFamily","_ref15$companySearchT","_ref15$companySearchT2","_ref15$companyIconHei","selectorContainerBtnStyles","_ref16","_ref16$iconFontFamily","_ref17","_ref17$palette","_ref17$iconFontFamily","_ref18","_ref18$companySearchT","_ref18$companySearchT2","_ref18$companyIconHei","userSelect","transform","_ref2$creationContain","creationContainerMarginLeft","colors","completedBorder","completedIcon","inProgressIcon","incompleteBorder","incompleteIcon","stepContentBorder","subtitle","order","borderLeftColor","getAjaxStubLogger","ajaxStubScenario","create","ajaxStubActivity","ajax","trace","error","getRequestPayloadLogger","addScenario","scenario","CampaignFetch","requestLogger","RequestPayload","responseLogger","Response","getDefaultOptions","_serverContext$Curren","AdvertiserCustomerID","isOnebox","ServicesEndpoints","CmAPI","startTimes","httpMethods","ajaxStubLogger","finalOptions","headers","Locale","PageTrackingId","Authorization","Token","CustomerAccountId","CustomerId","DeveloperToken","cachePolicy","interceptors","request","route","reqId","generateGuid","httpMethod","method","requestId","getTimestamp","body","beforeFetch","fetchResponse","responseUrl","URL","startTime","duration","ok","statusText","bodyText","afterFetch","CampaignFetchProvider","ServerContext","finalUrl","getDefaultUrl","InstrumentationContext","Provider","FetchError","_Error","errors","_wrapNativeSuper","withCacheInvalidation","call","cache","getCallProxy","getData","OperationErrors","err","Message","Code","Details","_useFetch","useFetch","wrappedRequest","del","post","put","patch","delete","goalTypeContainer","gap","alignSelf","goalType","font","goalTypeTitle","goalBadge","getStyles","FACBadge","showBadge","facBadgeText","FACCouponInfo","CampaignGoalTitle","goalTypeTitleColors","hasFACBadge","goalCardButton","goalCardContainer","cardColor","bgColor","goalCardContainerSelected","selectedCardBorderColor","noGoalTypes","letterSpacing","titleName","titleHelp","flexShrink","titleWithTooltip","CampaignGoalCard","I18nContext","ActionButton","goalId","selected","icon","tooltipId","HelpPopupInline","cardDescription","stackTokens","CampaignGoalSelection","handleGoalCardClick","selectedCampaignGoal","goalCardConfig","IsAmplifyEnabled","IsBoostPassCampaignGoalEnabled","ConvertCustomers","Conversions","GreenBG","GreenText","Image","Consideration","Engagement","YellowBG","YellowText","BrandAwareness","Awareness","BlueBG","BlueText","Leads","SellProducts","PromoteApp","UnifiedPromoteApp","SkipGoals","goalsSectionContainer","horizontalAlign","StackItem","titleText","titleTextPrimaryText","titleTextSecondaryText","c","disabledGoals","card","CampaignTypeCardBorderColor","cardWrapper","cardWrapperSelected","helpIcon","radioButtonWrapper","selectedRadioButton","choiceFieldWrapper","iconAndTextRow","iconAndTextRowIcon","iconAndTextRowTextWrapper","iconAndTextRowTextWrapperTitleText","iconAndTextRowTextWrapperDescriptionText","expandedContent","expandedContentOptionsHeader","adTypesWrapper","gridAutoColumns","gridAutoFlow","input","adTypeWrapper","adTypeWrapperSelectedRadioButton","adTypeWrapperTextWrapper","adTypeWrapperTextWrapperTitleText","adTypeWrapperTextWrapperDescriptionText","adTypeWrapperLearnMoreLink","adTypeWrapperSelected","facBadge","subSectionFacBadge","SelectionCardWithGoal","descriptionShort","descriptionExtended","radioRender","titleOverride","optionsComponent","optionsHeader","getChoiceOptionStyle","CampaignAdTypeOptionsRadio","adTypeOptions","onAdTypeSelect","defaultAdType","setSelectedAdType","ChoiceGroup","option","optionsCount","flexContainer","onRenderLabel","onRenderField","optionProps","learnMoreId","isUnderlineLink","enableDisplayPlusOptions","dynamicPermissions","isEnableMultiAdFormat","MultiAdFormat","isFBImportForAudienceCampaignCreationEnabled","FBImportForAudienceCampaignCreation","displayPlus","optionsType","None","Native","DisplayPlus","MetaImport","AudienceDefault","enableDisplayAndVideoOptions","isEnabledForXandrVideoCampaign","isEnabledForXandrDisplayCampaign","isEnabledForDisplayCampaign","EnableMSANDisplayCampaigns","isEnabledForVideoCampaign","EnableMSANVideoCampaigns","Radio","Display","Video","CampaignGoalToCampaignTypeMap","PerformanceMax","defaultObjectiveID","WebsiteConversions","enableOptions","AdTypeGeneric","Multimedia","AppInstalls","Hotel","HotelBooking","Lodging","ShoppingCampaign","StandardShopping","Shopping","SmartShopping","ShoppingForBrands","SponsoredShoppingCampaign","MRN","SPB","WindowsStore","MSStoreAds","descriptionOverride","descriptionExtendedOverride","AdImpressions","ObjectiveIDsForAdTypes","WebsiteVisits","LinkedIn","ConnectedTV","VideoCampaign","CTV","AudienceVideo","Netflix","getCampaignTypeIcon","getCampaignPreviewImage","adType","getObjectiveID","CampaignTypeSelectionWithGoal","campaignGoalToCampaignTypeMap","disabledAdTypes","scenarioContext","ScenarioContext","campaignGoalConfig","goal","campaignGoalToCampaignMap","baseCampaignGoalConfig","entries","forEach","campaignTypeConfig","configCopy","NoneSelected","configureCampaignTypeSelection","defaultCampaignType","keys","setSelectedCampaignType","defCampaign","defAdType","objectiveId","primaryTextOverride","primaryOverride","secondaryTextOverride","secondaryOverride","cardsContainerWithGoals","typeAndPreviewContainer","typeContainer","typeContainerTitleText","typeContainerTitleTextPrimaryText","typeContainerTitleTextSecondaryText","typeContainerTitleTextSecondaryTextHighlighted","secondary","types","descShort","descExtended","createActivity","r","defaultRender","choiceGroupWrapper","cType","renderCampaignTypeCardsWithGoal","previewContainer","CampaignGoalToAdTypeConfig","WindowsAppStore","objectiveID","UnifiedAppAds","AndroidPlayStore","IosAppStore","getAdTypeIcon","getAdPreviewImage","AdTypeSelectionWithGoal","campaignGoalToAdTypeMap","configureAdTypeSelection","renderAdTypeCardsWithGoal","cardContainer","cardContainerSelected","goalTypesContainer","CampaignTypeCardNoGoal","goalTypes","renderGoalTypes","CampaignTypeSelectionNoGoal","disabledCampaignTypes","isSpbEnabled","cardConfig","campaignTypeIcon","getCampaignCardNoGoalConfig","typeToObjectiveIDMap","cardCount","objId","save","containerColumn","choiceGroupOptions","cardsContainerNoGoals","renderCampaignTypeCards","selectedCampaignObjective","getGlobalSelectedCampaignObjective","setGlobalSelectedCampaignObjective","objective","DefaultCustomSectionPlaceholder","CustomSectionSelector","selectedGoal","handleContinueClick","customSectionConfig","shouldRender","DelayedPerfMaxCustomSection","lazy","module","AudienceCampaignSelecter","PMaxWizardRefresh","PlainCard","adTypeCardSelected","adTypeCard","adTypeCardTitleWrapper","adTypeCardTitleText","adTypeCardDescriptionText","UnifiedAppAdsCard","adTypeIconCardSelected","adTypeIconCard","adTypeCardIcon","DefaultAdTypeSelectionPage","adTypeSelectionRef","adTypeCards","Container","Header","Title","SubTitle","Body","ShoppingAdTypeSelectionPage","UnifiedAppAdTypeSelectionPage","getAdTypesRadioGroupStyle","adTypeCardsContainer","getAdTypeChoiceOptionStyle","initialNetflixDealTcAgreement","accepted","acceptedOnAccountProperties","saveAcceptanceToAccountProperties","CampaignOnboardingV2PageInternal","netflixDealsPageImport","PaymentOption","setSelectedCampaignGoal","setDisabledCampaignTypes","setDisabledAdTypes","setDisabledGoals","setCampaignGoalToCampaignTypeMap","campaignAdTypeMap","setcampaignAdTypeMap","setFACCouponInfo","selectedNetflixDeal","setSelectedNetflixDeal","netflixDealTcAgreement","setNetflixDealsTcAgreement","pageSection2Ref","sectionRefs","setSectionRefs","shouldRenderCustomSection","setShouldRenderCustomSection","isShoppingForBrandsEnabled","MranDeprecation","MranSimplificationV2","dCampaignTypes","dAdTypes","dGoals","isPmaxEnabled","PerformanceMaxInCnMarket","isDisplayPlusEnabled","DisplayPlusCampaigns","isNetflixAdsEnabled","NetflixDealNewExperienceEnabled","isVideoEnabled","isDisplayAdsEnabled","isAudienceEnabled","isHotelEnabled","isHotelRenamedToLodging","isSmartShoppingDeprecated","isMicrosoftStoreAdsEnabled","AppAdsCampaignPhaseOne","AppCampaignInCnMarket","isAudienceShoppingCampaignEnabled","isLinkedInEnabled","LinkedInCampaigns","isUnifiedAppAdsEnabled","isMranDeprecated","goalToTypeMap","scrollIntoView","behavior","block","isCTV","isDisplayPlus","isCTVAndDealToDisplayPlusEnabled","isUnifiedAppAds","DisplayPlusCampaignType","XandrVideoCampaignType","UnifiedAppCampaignAdType","shouldRenderCustomComonentEvaluvator","navigateToCampaignCreateWizard","setDealToVideoMediaDealConfig","navigateToVideoMediaDealCampaignCreateWizard","NetflixDealContinueToWizard","handleTCSaveError","notificationApi","navigateToNetflixDealCampaignCreateWizard","ContinueClick","onDealSelection","renderPageSectionTwo","renderAdTypesSelection","adTypeMap","v","findIndex","renderAdTypesPageSection","getSectionsWithoutAdTypeSelectionRef","refs","indexOfAdTypeSelectionRef","newSectionRefs","splice","previousRefs","renderNetflixDealsPageSection","DelayedNetflixDeals","onTcAcceptanceChange","agreement","renderContinueButton","PrimaryButton","allowDisabledFocus","pageContainer","root","align","goalSelected","campaignTypeSectionContainer","CampaignOnboardingV2","Scenario","Activity","rowGap","scrollMarginTop","campaignTypeSectionContainerTitleText","adTypePageSectionContainer","adTypeCardHover","CONFIRM_MESSAGES_TYPE","CONFIRM_MESSAGES","_defineProperty","CONVERSION_SCOPE","targetBiddingSchemeTypeList","getMessageType","initialData","patchData","BiddingSchemeType","initialGoalSelection","goalSelection","hasAnyGoalSelections","initialGoalScope","newGoalScope","newGoalScopeValue","removedGoals","initialGoal","TrackingStatus","getNeedConfirming","context","confirmDialogContent","useConfirmDialogConfigWithLogger","stateMatch","_useWizardService","useWizardService","wizardConfig","wizardState","wizardId","dialogConfig","confirmType","subText","disableConfirmPopup","wizardData","currentStepId","getCurrentStepId","customConfirmMessages","messageType","foundMessage","useConfirmDialogConfig","onLog","action","onOpenFn","onConfirmFn","onCancelFn","useStyles","makeStyles","carouselParent","flexGrow","parentContainer","transitionProperty","transitionDuration","transitionTimingFunction","chevronButton","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","borderLeftStyle","borderRightStyle","borderTopStyle","borderLeftWidth","borderRightWidth","borderTopWidth","borderRightColor","borderTopColor","borderBottomColor","chevronButtonLeft","chevronButtonRight","hintRight","hintLeft","useSimpleCarouselStyles","cardContents","Carousel","contents","contentWidth","offset","setOffset","contentContainerWidth","setContentContainerWidth","contentContainerNode","useRef","handleResize","offsetWidth","addEventListener","removeEventListener","measuredRef","node","displayedContentCount","getFullyShownContentsCount","noMoreResult","leftIconButton","shape","mergeClasses","ChevronLeft12Regular","code","document","querySelector","focus","rightIconButton","ChevronRight12Regular","total","current1","current2","showRightIconButton","SimpleCarousel","dropdownStyles","dropdownItemHeader","ConstructOptionKey","categoryKey","optionKey","CategorizedDropdownListUnStyle","CategorizedDropdownListContainer","categories","onSelectionChange","dropdownStyle","forwardedRef","maxHeight","defaultSelectedKey","category","innerIndex","unshift","itemType","DropdownMenuItemType","Divider","mapCatogriesToDropdownOptions","_React$useState","_React$useState2","setSelectedItem","componentRef","constructedOptionKey","_DeConstructOptionKey","calloutProps","calloutMaxHeight","CategorizedDropdownListStyled","CategorizedDropdownList","pug","exports","locals","pug_interp","pug_html","locals_for_with","html","escape","contentClass","steps","$$obj","$$l","step","attr","pageTitle","descriptionHelpText","descriptionHelpId","buttonContainer","ScopeContext","navigateToFBImportPage","continueToWizard","ContinueToFaceBookImport","GoalToStoreMap","PerfMaxStoreSelector","storeSelector","columnGap","headerSection","startCampaignButton","storeIcon","storeDropdown","alert","showStoreSelector","setShowStoreSelector","storeSelectorRef","selectedStoreResult","setSelectedStoreResult","ShoppingAlertText","HelpLink","onValidate","alertMessage","ValidationGroup","campaignObjective","Alert","level","dismissible","FontIcon","message","isValid","ProviderId","SalesCountry","LocalInventoryAdsEnabled","FeedLabel","IsFeedFiltered","FeedLabelBlockList","TitleColors","CampaignGoalType","CampaignGoalTypeBoost","CampaignGoalTypeBoostV2","Acquisition","CampaignGoal","CampaignGoalTitleBoostCampaign","CampaignGoalDescriptionText","CampaignGoalDescriptionTextBoostCampaign","CampaignGoalPageTwoText","primary","CampaignTypeTitle","CampaignTypeWithGoalDescriptionTextShort","CampaignTypeWithGoalDescriptionTextExtended","CampaignTypeWithNoGoalDescriptionText","CampaignTypeTooltipIds","CampaignOptionTypes","DummyAdTypesMap","AdTypeTitles","AdTypeTooltipIds","AdTypesSelectionHeaderText","ObjectiveIDs","LocationVisits","PhoneCalls","SmartCampaign","MediaPackageCampaign","LocalStorageKeys","CampaignAdTypes","getCampaignAdTypes","filteredMap","CampaignGoalsToCampaignTypesMap","getCampaignGoalToCampaignTypeMap","CustomSectionConfig","ActivityName","campaignTypeToURLMap","navigateToWizard","navigateToFBImport","AdTypeSelectionPage","useFooterStyles","saveButton","containerLeft","withFooter","WrappedComponent","showBudgetSuggestion","HoC","send","useFormService","isLoading","matches","FORM_STATES","LOADING","onSave","FORM_EVENTS","SAVE","onCancel","CANCEL","headerState","useReadCampaign","useRepository","isBudget","readCampaign","useReadCampaignPromise","initialCampaign","setInitialCampaign","log","campaignOverviewEdit","budgetEdit","bidStrategyEdit","currencyCode","localizeBudget","budget","currency","Number","toUpperCase","withSymbol","loadCampaign","campaignGoal","Goal","budgetAmount","Budget","Amount","bidStrategy","BiddingScheme","cpa","TargetCpa","roas","TargetRoas","language","Languages","isInitialAdditionalDetailsChecked","deliveryStatus","DeliveryStatus","deliveryStatusDetails","DeliveryStatusDetails","initialBudget","load","campaignData","isBudgetValid","isMarketingMetricValid","marketingMetric","toFixed","modelToSave","parseDecimal","campaignResource","ResourceIdentifier","bulkUpdate","bulkCreate","createOrUpdateCampaign","res","BudgetBidCampaignImportNotificationActivity","createScenarioAndActivity","scenarioName","activityName","campaignItemList","oldBudget","newBudget","oldBidStrategy","newBidStrategy","updateCampaign","TargetCpaValueCheck","useBudgetRepository","useBidStrategyRepository","getApiErrorMapper","useBudgetCardStyles","colorPaletteCranberryBorderActive","UnmappedFormErrors","FormViewWrapper","onDataChange","logger","DynamicPermissions","EnableBudgetSuggestion","isBSLoading","setIsBSLoading","isBSCalled","setIsBSCalled","apiErrorMapper","legacyI18n","ValidationStringMap","mergedI18n","schema","GlobalMaximumBudget","DailyBudget","Max","GlobalMinimumBudget","Min","MaximumBudget","maxDailyBudget","BudgetRange","MonthlyRange","CeilingValue","DailyRange","FloorValue","onFieldChange","updatedData","prevData","shouldLocalize","onBudgetChange","budgetAmountValue","budgetVal","budgetErrors","messages","onBudgetValidate","budgetSuggestionData","setBudgetSuggestionData","loadBudget","datas","showBudgetSuggestionData","formErrorProps","errorMapper","onNotifyValidation","budgetSuggestion","withSlider","mode","EDITING","bidType","minBudget","maxBudget","BudgetForm","closeDialog","onDoneSaving","onCanceled","repository","machineOptions","actions","Form","BudgetCard","contentReady","budgetText","setBudgetText","setIsLoading","budgetTitle","setBudgetTitle","campaignInfo","setCampaignInfo","dataBs","localizedBudget","ChildComponent","header","IconComponent","dialogEditProps","buttonAriaLabel","LINKEDIN_CAMPAIGN_GOALS","useBidStrategyCardStyles","bidRange","KeywordBidRange","getLinkedInBidStrategyOptions","onBidStrategyChange","bidStrategyType","onMarketingMetricChange","newMarketingMetric","marketingMetricErrors","selectedBidStrategy","marketingMetricsValue","inputUnit","hideMessage","hideAdditionalDetails","withTargetCpaWarning","BidStrategyForm","BidStrategyCard","bidStrategyText","setBidStrategyText","getLinkedInBidStrategyText","getBidStrategyText","CampaignStatusCard","campaignStatusEdit","pausedCampaignImportNotificationActivity","menuItemConfigs","iconColor","colorPaletteGreenForeground1","checkedValue","setCheckedValue","campaignItemData","seCampaignItemData","checkedItems","updateStatus","isActive","dropdownMenuProps","useCampaignStatusSummaryCardsStyles","fullWidthCards","shouldUseFullWidthCards","responsiveSize","CampaignStatusSummaryCards","memo","campaignStatusContentReady","budgetContentReady","bidStrategyContentReady","CARD_CONFIG","cardStyle","useCardStyles","cardSelected","colorNeutralForeground2BrandHover","checkmark","image","textArea","cardId","onCardSelectionChange","onCardClicked","handleSpace","Text","weight","Caption1","useCardSelectorStyles","cardsContainer","divider","CardSelector","cards","setOpen","localCardsState","setLocalCardsState","newCards","hidden","onSaveClicked","selectedCount","restoreFocusTargetAttributes","useRestoreFocus","restoreFocusSourceAttributes","tileLabel","Drawer","onOpenChange","size","DrawerHeader","DrawerHeaderTitle","DrawerBody","DrawerFooter","Body1","count"],"sourceRoot":""}