{"version":3,"file":"static/js/application.async.landing~3fe15aab.73927218.chunk.js","mappings":"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","sources":["../../campaign-onboarding-v2/src/components/duration-selector-placeholder.tsx","../../campaign-onboarding-v2/src/styles/campaign-goal-title.js","../../campaign-onboarding-v2/src/styles/fac-badge.js","../../campaign-onboarding-v2/src/components/goal-card/fac-badge.tsx","../../campaign-onboarding-v2/src/components/goal-card/campaign-goal-title.tsx","../../campaign-onboarding-v2/src/styles/campaign-goal-card.js","../../campaign-onboarding-v2/src/components/goal-card/campaign-goal-card.tsx","../../campaign-onboarding-v2/src/page/goal-selection.tsx","../../campaign-onboarding-v2/src/styles/campaign-type-card-with-goal.js","../../campaign-onboarding-v2/src/components/selection-card-with-goal.tsx","../../campaign-onboarding-v2/src/components/campaign-type-card/campaign-ad-type-options-radio.tsx","../../campaign-onboarding-v2/src/page/campaign-type-selection-with-goal/configs.ts","../../campaign-onboarding-v2/src/page/campaign-type-selection-with-goal/index.tsx","../../campaign-onboarding-v2/src/page/ad-type-selection-with-goal/configs.ts","../../campaign-onboarding-v2/src/page/ad-type-selection-with-goal/index.tsx","../../campaign-onboarding-v2/src/styles/campaign-type-card-no-goal.js","../../campaign-onboarding-v2/src/components/campaign-type-card/campaign-type-card-no-goal.tsx","../../campaign-onboarding-v2/src/page/campaign-type-selection-no-goal.tsx","../../campaign-onboarding-v2/src/helpers/campaign-objective.ts","../../campaign-onboarding-v2/src/components/custom-sections/custom-section-selector.tsx","../../campaign-onboarding-v2/src/components/ad-type-card/plain-card.tsx","../../campaign-onboarding-v2/src/components/ad-type-card/unified-app-ads-card.tsx","../../campaign-onboarding-v2/src/page/ad-type-selection-page/default-ad-type-selection-page.tsx","../../campaign-onboarding-v2/src/page/ad-type-selection-page/shopping-ad-type-selection-page.tsx","../../campaign-onboarding-v2/src/page/ad-type-selection-page/unified-app-ad-type-selection-page.tsx","../../campaign-onboarding-v2/src/page/index.tsx","../../campaign-onboarding-v2/src/styles/index.js","../../campaign-onboarding-v2/src/styles/vars.js","../../campaign-onboarding-v2/src/components/custom-sections/audience-campaign-selector.tsx","../../campaign-onboarding-v2/src/components/custom-sections/perf-max-store-selector.tsx","../../campaign-onboarding-v2/src/config/constants.ts","../../campaign-onboarding-v2/src/helpers/navigate-to-wizard.ts","../../campaign-onboarding-v2/src/page/ad-type-selection-page/ad-type-selection-page.tsx"],"sourcesContent":["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","/* 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"],"names":["className","style","backgroundColor","display","flexDirection","margin","height","borderRadius","boxShadow","goalTypeContainer","marginTop","marginLeft","gap","alignSelf","justifyContent","width","goalType","textAlign","fontFamily","font","fontSize","fontWeight","lineHeight","goalTypeTitle","padding","goalBadge","color","border","marginRight","maxWidth","whiteSpace","textOverflow","overflow","getStyles","FACBadge","props","styles","useDefaultStyles","showBadge","useMemo","permissions","dynamic","FACForShopping","facBadgeText","i18n","FACCouponInfo","getString","CouponValue","CouponValueWithCurrency","title","CampaignGoalTitle","goalTypeTitleColors","hasFACBadge","goalCardButton","alignItems","goalCardContainer","cardColor","cursor","bgColor","goalCardContainerSelected","concat","selectedCardBorderColor","noGoalTypes","text","letterSpacing","titleName","titleHelp","flexShrink","titleWithTooltip","description","CampaignGoalCard","useContext","I18nContext","ActionButton","id","goalId","checked","selected","onClick","onKeyDown","event","keyCode","icon","tooltipId","HelpPopupInline","topic","item","cardDescription","stackTokens","childrenGap","CampaignGoalSelection","handleGoalCardClick","selectedCampaignGoal","goalCardConfig","IsAmplifyEnabled","IsBoostPassCampaignGoalEnabled","ConvertCustomers","Conversions","GreenBG","GreenText","Image","src","alt","Consideration","Engagement","YellowBG","YellowText","BrandAwareness","Awareness","BlueBG","BlueText","Leads","SellProducts","PromoteApp","UnifiedPromoteApp","SkipGoals","undefined","Stack","goalsSectionContainer","horizontalAlign","StackItem","titleText","titleTextPrimaryText","titleTextSecondaryText","wrap","horizontal","tokens","filter","c","disabledGoals","includes","map","card","key","CampaignTypeCardBorderColor","cardWrapper","cardWrapperSelected","_objectSpread","pointerEvents","zIndex","helpIcon","radioButtonWrapper","selectedRadioButton","marginBottom","choiceFieldWrapper","minWidth","iconAndTextRow","iconAndTextRowIcon","iconAndTextRowTextWrapper","iconAndTextRowTextWrapperTitleText","iconAndTextRowTextWrapperDescriptionText","expandedContent","expandedContentOptionsHeader","adTypesWrapper","gridAutoColumns","gridAutoFlow","input","type","adTypeWrapper","adTypeWrapperSelectedRadioButton","adTypeWrapperTextWrapper","adTypeWrapperTextWrapperTitleText","adTypeWrapperTextWrapperDescriptionText","adTypeWrapperLearnMoreLink","position","adTypeWrapperSelected","background","facBadge","right","subSectionFacBadge","SelectionCardWithGoal","descriptionShort","descriptionExtended","radioRender","titleOverride","optionsComponent","optionsHeader","getChoiceOptionStyle","CampaignAdTypeOptionsRadio","adTypeOptions","onAdTypeSelect","defaultAdType","selectedAdType","setSelectedAdType","useState","useEffect","length","ChoiceGroup","onChange","e","option","selectedKey","optionsCount","flexContainer","options","onRenderLabel","onRenderField","optionProps","learnMoreId","linkText","isUnderlineLink","isGreyBackground","enableDisplayPlusOptions","config","dynamicPermissions","isEnableMultiAdFormat","MultiAdFormat","isFBImportForAudienceCampaignCreationEnabled","FBImportForAudienceCampaignCreation","displayPlus","optionsType","None","Native","DisplayPlus","MetaImport","AudienceDefault","enableDisplayAndVideoOptions","isEnabledForXandrVideoCampaign","XandrVideoCampaigns","isEnabledForXandrDisplayCampaign","XandrDisplayAdsCampaigns","isEnabledForDisplayCampaign","EnableMSANDisplayCampaigns","isEnabledForVideoCampaign","EnableMSANVideoCampaigns","Radio","push","Display","Video","CampaignGoalToCampaignTypeMap","PerformanceMax","defaultObjectiveID","WebsiteConversions","enableOptions","Search","AdTypeGeneric","Multimedia","AppInstalls","Hotel","HotelBooking","Lodging","ShoppingCampaign","StandardShopping","Shopping","ShoppingAudience","SmartShopping","ShoppingForBrands","SponsoredShoppingCampaign","MRN","SPB","WindowsStore","MSStoreAds","descriptionOverride","descriptionExtendedOverride","AdImpressions","ObjectiveIDsForAdTypes","WebsiteVisits","LinkedIn","ConnectedTV","VideoCampaign","CTV","AudienceVideo","Netflix","getCampaignTypeIcon","getCampaignPreviewImage","adType","getObjectiveID","campaignType","CampaignTypeSelectionWithGoal","campaignGoalToCampaignTypeMap","disabledAdTypes","handleCampaignTypeSelect","scenarioContext","ScenarioContext","campaignGoalConfig","goal","campaignGoalToCampaignMap","campaignTypes","baseCampaignGoalConfig","Object","entries","forEach","campaignTypeConfig","configCopy","NoneSelected","some","configureCampaignTypeSelection","defaultCampaignType","keys","selectedCampaignType","setSelectedCampaignType","defCampaign","defAdType","objectiveId","primaryTextOverride","primaryOverride","secondaryTextOverride","secondaryOverride","cardsContainerWithGoals","typeAndPreviewContainer","typeContainer","typeContainerTitleText","typeContainerTitleTextPrimaryText","typeContainerTitleTextSecondaryText","typeContainerTitleTextSecondaryTextHighlighted","secondary","types","descShort","descExtended","createActivity","trace","r","defaultRender","choiceGroupWrapper","cType","renderCampaignTypeCardsWithGoal","previewContainer","CampaignGoalToAdTypeConfig","WindowsAppStore","objectiveID","UnifiedAppAds","AndroidPlayStore","IosAppStore","getAdTypeIcon","getAdPreviewImage","AdTypeSelectionWithGoal","handleAdTypeSelect","campaignGoalToAdTypeMap","configureAdTypeSelection","renderAdTypeCardsWithGoal","cardContainer","cardContainerSelected","goalTypesContainer","top","CampaignTypeCardNoGoal","goalTypes","renderGoalTypes","CampaignTypeSelectionNoGoal","disabledCampaignTypes","scope","siteMap","isSpbEnabled","cardConfig","classes","campaignTypeIcon","getCampaignCardNoGoalConfig","typeToObjectiveIDMap","cardCount","selectedCampaignObjectiveKey","values","objId","remove","save","getRoutePathById","containerColumn","choiceGroupOptions","name","ariaLabel","cardsContainerNoGoals","renderCampaignTypeCards","selectedCampaignObjective","getGlobalSelectedCampaignObjective","setGlobalSelectedCampaignObjective","objective","DefaultCustomSectionPlaceholder","CustomSectionSelector","selectedGoal","handleContinueClick","customSectionConfig","shouldRender","DelayedPerfMaxCustomSection","lazy","then","default","module","fallback","AudienceCampaignSelecter","propTypes","isRequired","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","perfMarker","ccJsData","serverContext","prefetchChunks","netflixDealsPageImport","CurrentAccount","Id","aid","CurrencyCode","PaymentOption","setSelectedCampaignGoal","setDisabledCampaignTypes","setDisabledAdTypes","setDisabledGoals","setCampaignGoalToCampaignTypeMap","campaignAdTypeMap","setcampaignAdTypeMap","setFACCouponInfo","selectedNetflixDeal","setSelectedNetflixDeal","netflixDealTcAgreement","setNetflixDealsTcAgreement","pageSection2Ref","sectionRefs","setSectionRefs","shouldRenderCustomSection","setShouldRenderCustomSection","localStorage","getLocalStorage","isLocalStorageSupported","supportsStorage","isShoppingForBrandsEnabled","IsSPAv2Enabled","IsDomesticSimplifiedChineseEnabled","SponsoredPromotionsByBrands","MranDeprecation","MranSimplificationV2","dCampaignTypes","dAdTypes","dGoals","isPmaxEnabled","PerformanceMaxCampaigns","PerformanceMaxInCnMarket","isDisplayPlusEnabled","DisplayPlusCampaigns","isNetflixAdsEnabled","NetflixDealNewExperienceEnabled","IsDealEnabledForMsAds","isVideoEnabled","IsVideoAdsForCampaignEnabled","isDisplayAdsEnabled","isAudienceEnabled","IsAIMCampaignEnabled","isHotelEnabled","HotelCampaign","isHotelRenamedToLodging","IsRenameHotelToLodgingEnabled","isSmartShoppingDeprecated","SSCDeprecation","isMicrosoftStoreAdsEnabled","AppAdsCampaignPhaseOne","AppCampaignInCnMarket","isAudienceShoppingCampaignEnabled","isLinkedInEnabled","LinkedInCampaigns","isUnifiedAppAdsEnabled","isMranDeprecated","goalToTypeMap","current","scrollIntoView","behavior","block","invalidate","isCTV","isDisplayPlus","isCTVAndDealToDisplayPlusEnabled","CTVAndDealToDisplayPlus","isUnifiedAppAds","set","DisplayPlusCampaignType","XandrVideoCampaignType","xandrVideoCtv","UnifiedAppCampaignAdType","done","isFunction","shouldRenderCustomComonentEvaluvator","navigateToCampaignCreateWizard","useCallback","findWhere","setDealToVideoMediaDealConfig","navigateToVideoMediaDealCampaignCreateWizard","NetflixDealContinueToWizard","handleTCSaveError","error","notificationApi","showWarning","navigateToNetflixDealCampaignCreateWizard","catch","activity","ContinueClick","getFACData","FeatureAdoptionCoupon","findAll","coupons","isArray","Status","FeatureId","parseInt","SHOPPING_CAMPAIGN","RecommendationAdoptionStatus","NotInProgess","Active","formatCurrency","onDealSelection","deal","renderPageSectionTwo","renderAdTypesSelection","adTypeMap","v","findIndex","renderAdTypesPageSection","getSectionsWithoutAdTypeSelectionRef","refs","indexOfAdTypeSelectionRef","ref","newSectionRefs","splice","previousRefs","renderNetflixDealsPageSection","DelayedNetflixDeals","onTcAcceptanceChange","agreement","renderContinueButton","PrimaryButton","allowDisabledFocus","disabled","pageContainer","root","Item","grow","align","goalSelected","campaignTypeSectionContainer","CampaignOnboardingV2","withSiteMap","withCcJsData","withPreference","withPermissions","withScope","Scenario","Activity","rowGap","minHeight","scrollMarginTop","campaignTypeSectionContainerTitleText","flexWrap","gridTemplateColumns","adTypePageSectionContainer","adTypeCardHover","buttonContainer","ScopeContext","navigateToFBImportPage","preventDefault","continueToWizard","ContinueToFaceBookImport","GoalToStoreMap","PerfMaxStoreSelector","cid","uid","storeSelector","columnGap","headerSection","startCampaignButton","storeIcon","storeDropdown","alert","showStoreSelector","setShowStoreSelector","storeSelectorRef","useRef","selectedStoreResult","setSelectedStoreResult","ShoppingAlertText","HelpLink","query","role","onValidate","result","alertMessage","setClarityTag","ValidationGroup","validationProps","campaign","data","campaignObjective","Alert","level","dismissible","FontIcon","iconName","message","isValid","ProviderId","SalesCountry","LocalInventoryAdsEnabled","FeedLabel","IsFeedFiltered","url","history","pathname","search","location","FeedLabelBlockList","TitleColors","CampaignGoalType","CampaignGoalTypeBoost","CampaignGoalTypeBoostV2","Acquisition","CampaignGoal","CampaignGoalTitleBoostCampaign","CampaignGoalDescriptionText","CampaignGoalDescriptionTextBoostCampaign","CampaignGoalPageTwoText","primary","CampaignType","CampaignTypeTitle","CampaignTypeWithGoalDescriptionTextShort","CampaignTypeWithGoalDescriptionTextExtended","CampaignTypeWithNoGoalDescriptionText","CampaignTypeTooltipIds","CampaignOptionTypes","AdTypes","DummyAdTypesMap","AdTypeTitles","AudienceAndSearch","AdTypeTooltipIds","AdTypesSelectionHeaderText","ObjectiveIDs","LocationVisits","PhoneCalls","SmartCampaign","MediaPackageCampaign","LocalStorageKeys","CampaignAdTypes","getCampaignAdTypes","filteredMap","adTypes","xandrVideoCampaignTypes","xandrVideoWeb","adImpressionsCampaignTypes","nativeAds","displayAds","sponsoredProductCampaignTypes","spa","spb","CampaignGoalsToCampaignTypesMap","getCampaignGoalToCampaignTypeMap","CustomSectionConfig","ActivityName","campaignTypeToURLMap","navigateToWizard","SearchCampaignCreationRevamp","navigateToFBImport","AdTypeSelectionPage","children"],"sourceRoot":""}