{"version":3,"file":"static/js/application.async.landing~23b15c1b.e8491bdb.chunk.js","mappings":"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","sources":["../../../node_modules/@bingads-webui-campaign-react/step-wizard-controls/src/use-impulse.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-controls/src/use-is-mounted.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-controls/src/validated-budget.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-controls/src/validated-conversion-goals.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-controls/src/validated-conversion-goals-selector.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-controls/src/validated-fabric-controls.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-controls/src/validated-listing-groups.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-controls/src/validated-location-target-setting.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-controls/src/location-target-setting-panel.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-controls/src/audience-signal-panel.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-controls/src/server-validated-url-options-parameters.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-controls/src/video-panel.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-layout/src/styles/step-base-layout-footer-styles.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-layout/src/step-base-layout-footer.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-layout/src/styles/step-base-layout-styles.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-layout/src/step-base-layout.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-layout/src/styles/step-base-modal-footer-styles.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-layout/src/step-base-modal-footer.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-layout/src/styles/step-base-modal-layout-styles.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-layout/src/step-base-modal-layout.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-logger/src/helper.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-logger/src/constants.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-logger/src/step-flow-provider-with-context.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-logger/src/basic-step-logger.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-logger/src/step-logger.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-logger/src/wizard-step-logger.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-logger/src/single-step-logger.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-machine/src/wizard-events.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-machine/src/step-events.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-machine/src/debug.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-machine/src/wizard-state-machine.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-machine/src/step-state-machine.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard-machine-capi/index.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard/src/styles/wizard-styles.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard/src/shared/use-is-mounted.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard/src/shared/step-repository.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard/src/wizard/use-wizard-state.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard/src/styles/get-step-progress-item-glyphicon.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard/src/styles/footer-style-overrides.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard/src/wizard/multi-step-layout.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard/src/wizard/single-step-layout.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard/src/wizard/wizard.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard/src/shared/use-navigation-confirmation-prompt.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard/src/shared/use-exit-without-saving-confirmation.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard/src/shared/use-window-confirm.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard/src/shared/step-loading-shell.js","../../../node_modules/@bingads-webui-campaign-react/step-wizard/src/shared/no-data-step-repository.js","../../../node_modules/@bingads-webui-campaign-react/stock-image-filter/src/shutter-stock/shutter-stock-filter.js","../../../node_modules/@bingads-webui-campaign-react/stock-image-filter/src/shutter-stock/shutter-stock-filter-schema.js","../../../node_modules/@bingads-webui-campaign-react/stock-image-filter/src/stock-filter.js","../../../node_modules/@bingads-webui-campaign-react/store-select/styles/get-store-style.js","../../../node_modules/@bingads-webui-campaign-react/store-select/src/store-select-view.js","../../../node_modules/@bingads-webui-campaign-react/store-select/src/store-select-creation.js","../../../node_modules/@bingads-webui-campaign-react/store-select/src/utils.js","../../../node_modules/@bingads-webui-campaign-react/store-select/src/store-select-loading.js","../../../node_modules/@bingads-webui-campaign-react/store-select/src/store-select-container.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/ad-creation-preview.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/store.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/product-collections.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/local-inventory.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/products.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/feeds.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/location-targeting.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/age-range-targeting.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/gender-targeting.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/ad-schedule.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/ad-schedule-with-bid-adjustments.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/common-targeting.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/audience.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/interest.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/predictive-targeting.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/start-end-dates.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/ad-distribution.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/keywords.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/genre.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/disclaimer.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/company-name-targeting.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/job-function-targeting.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/industry-targeting.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/conversion-goals.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/budget.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/bid-strategy.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/bid-value.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/languages.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/audience-signal.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/images.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/store-info.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/auto-gen-assets.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/url-options.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/bid-target.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/final-url-expansions.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/search-themes.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/cost-per-sale.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/url-rules.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/new-customer-acquisition.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/videos.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/summary-page-component-types.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/ad-creation.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/text-asset-summary.js","../../../node_modules/@bingads-webui-campaign-react/summary-page/src/components/properties/listing-group.js","../../../node_modules/@bingads-webui-campaign-react/table-page-container/src/virtual-scrollbar.js","../../../node_modules/@bingads-webui-campaign-react/table-page-container/src/scrollbar.js","../../../node_modules/@bingads-webui-campaign-react/table-page-container/src/table-page-container.js","../../../node_modules/@bingads-webui-campaign-react/table-page-state-manager/src/index.js","../../../node_modules/@bingads-webui-campaign-react/third-party-measurement/src/view/third-party-measurement.js","../../../node_modules/@bingads-webui-campaign-react/third-party-measurement/src/view/third-party-measurement-V2.js","../../../node_modules/@bingads-webui-campaign-react/third-party-measurement/src/view/third-party-measurement-container.js","../../../node_modules/@bingads-webui-campaign-react/third-party-measurement/src/view/third-party-measurement-backbone-view.js","../../../node_modules/@bingads-webui-campaign-react/third-party-measurement/src/model/campaign-third-party-vendor-setting.js","../../../node_modules/@bingads-webui-campaign-react/third-party-measurement/src/styles/third-party-measurement-setting-styles.js","../../../node_modules/@bingads-webui-campaign-react/third-party-measurement/src/view/component/warning-message.js","../../../node_modules/@bingads-webui-campaign-react/third-party-measurement/src/view/component/account-linked-status-label.js","../../../node_modules/@bingads-webui-campaign-react/third-party-measurement/src/view/component/custom-config.js","../../../node_modules/@bingads-webui-campaign-react/third-party-measurement/src/view/component/third-party-vendor-setting.js","../../../node_modules/@bingads-webui-campaign-react/third-party-measurement/src/view/component/third-party-measurement-remove-all-button.js","../../../node_modules/@bingads-webui-campaign-react/third-party-measurement/src/view/third-party-measurement-V3.js","../../../node_modules/@bingads-webui-campaign-react/third-party-measurement/src/view/component/use-account-property-repository.js","../../../node_modules/@bingads-webui-campaign-react/third-party-measurement/src/model/verified-tracking-setting.js","../../../node_modules/@bingads-webui-campaign-react/thumbs-up-down/src/styles/thumbs-up-down.js","../../../node_modules/@bingads-webui-campaign-react/thumbs-up-down/src/styles/feedback-form.js","../../../node_modules/@bingads-webui-campaign-react/thumbs-up-down/src/feedback-form.js","../../../node_modules/@bingads-webui-campaign-react/thumbs-up-down/src/styles/thank-you-icon.js","../../../node_modules/@bingads-webui-campaign-react/thumbs-up-down/src/thank-you-content.js","../../../node_modules/@bingads-webui-campaign-react/thumbs-up-down/src/ocv-data-source.js","../../../node_modules/@bingads-webui-campaign-react/thumbs-up-down/src/thumbs-up-down.js","../../../node_modules/@bingads-webui-campaign-react/toolbar-plugin/src/plugin.js","../../../node_modules/@bingads-webui-campaign-react/summary-diagnostic/src/constants.ts","../../../node_modules/@bingads-webui-campaign-react/summary-diagnostic/src/diagnostic-bar.tsx","../../../node_modules/@bingads-webui-campaign-react/summary-diagnostic/src/summary-diagnostic.tsx","../../../node_modules/@bingads-webui-campaign-react/target-cpa-warning-banner/src/utils.ts","../../../node_modules/@bingads-webui-campaign-react/target-cpa-warning-banner/src/log-target-cpa-check-on-save.tsx","../../../node_modules/@bingads-webui-campaign-react/target-cpa-warning-banner/src/target-cpa-warning-banner.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\r\n\r\nexport const useImpulse = (activate) => {\r\n const [isActive, setIsActive] = useState(false);\r\n const [isRestarting, setIsRestarting] = useState(false);\r\n\r\n if (activate) {\r\n if (isActive && !isRestarting) {\r\n setIsRestarting(true);\r\n setIsActive(false);\r\n } else if (!isActive) {\r\n setIsActive(true);\r\n }\r\n }\r\n useEffect(() => {\r\n if (isRestarting && !isActive) {\r\n setIsActive(true);\r\n setIsRestarting(false);\r\n }\r\n }, [isActive, isRestarting]);\r\n\r\n return isActive;\r\n};\r\n","import { useEffect, useRef } from 'react';\r\n\r\nexport const useIsMounted = () => {\r\n const isMountedRef = useRef(false);\r\n useEffect(() => {\r\n isMountedRef.current = true;\r\n return () => {\r\n isMountedRef.current = false;\r\n };\r\n }, []);\r\n\r\n return isMountedRef;\r\n};\r\n","import _ from 'underscore';\r\nimport React, { useCallback, useContext, useState, useEffect, useMemo } from 'react';\r\nimport { Text } from '@fluentui/react';\r\nimport { HelpPopup } from '@bingads-webui-react/help-popup';\r\nimport PropTypes from 'prop-types';\r\nimport { withCustomValidation } from '@bingads-webui-react/validation';\r\nimport { ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { LegacyBudget } from '@bingads-webui-campaign-react/legacy-budget';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { BudgetSuggestionDialog, useBudgetSuggestionRepository, MODE } from '@bingads-webui-campaign-react/budget-suggestion-v2';\r\nimport { CampaignTypes } from '@bingads-webui-campaign-react/constants';\r\n// eslint-disable-next-line\r\nimport _bingads_webui_static_legacy_page_context from '@bingads-webui-static-legacy/page-context';\r\n// eslint-disable-next-line\r\nconst { BudgetRange } = _bingads_webui_static_legacy_page_context;\r\n\r\nconst LegacyBudgetWithCustomValidation = ({\r\n campaignId, showBudgetSuggestion, isCampaignSetting, currency, validationProps, updateValidation, campaign, isPremiumStreaming, ...restProps\r\n}) => {\r\n const { data } = validationProps;\r\n const i18n = useContext(I18nContext);\r\n\r\n const activity = useContext(ActivityContext);\r\n\r\n const { DailyRange } = BudgetRange || {};\r\n\r\n const budgetSuggestion = useMemo(() => ({\r\n Currency: currency,\r\n GlobalMaximumBudget: { DailyBudget: DailyRange.CeilingValue ? DailyRange.CeilingValue : 3000000 },\r\n GlobalMinimumBudget: { DailyBudget: DailyRange.FloorValue ? DailyRange.FloorValue : 0.05 },\r\n }), [currency, DailyRange.CeilingValue, DailyRange.FloorValue]);\r\n\r\n const onChange = useCallback((newData, newIsValid) => {\r\n updateValidation(newIsValid ? [] : [i18n.getString(_TL_('Legacy Budget has validation errors'))], { Budget: newData });\r\n if (activity) {\r\n // signal activity to parent\r\n activity.signal(`onLegacyBudgetChange - ${JSON.stringify(newData.Amount)} - isValid: ${newIsValid}}`);\r\n }\r\n }, [i18n, updateValidation, activity]);\r\n\r\n const [budgetSuggestionData, setBudgetSuggestionData] = useState(null);\r\n const {\r\n loadBudget,\r\n } = useBudgetSuggestionRepository({\r\n campaignId,\r\n mode: MODE.EDITING,\r\n campaignType: CampaignTypes.PerformanceMax,\r\n currency,\r\n });\r\n\r\n\r\n useEffect(() => {\r\n if (showBudgetSuggestion && isCampaignSetting) {\r\n loadBudget({ campaign: {}, assetGroup: {} }).then((datas) => {\r\n setBudgetSuggestionData(datas);\r\n }).finally(() => {\r\n });\r\n }\r\n }, [isCampaignSetting, loadBudget, showBudgetSuggestion]);\r\n\r\n return (\r\n
\r\n
\r\n {i18n.getString(_TL_('Daily budget'))}\r\n \r\n
\r\n \r\n\r\n {/* will check Delivery Status in campaign when MT added */}\r\n {/* {showBudgetSuggestion && (data.DeliveryStatus === 'BudgetSuggestions' || 'BudgetSuggestions' in data.DeliveryStatusDetails) && isCampaignSetting && */}\r\n {showBudgetSuggestion &&\r\n isCampaignSetting &&\r\n !_.isEmpty(budgetSuggestionData) &&\r\n \r\n }\r\n
\r\n\r\n );\r\n};\r\n\r\nLegacyBudgetWithCustomValidation.propTypes = {\r\n campaignId: PropTypes.string.isRequired,\r\n validationProps: PropTypes.shape({\r\n data: PropTypes.shape({\r\n Budget: PropTypes.shape({\r\n Amount: PropTypes.number,\r\n }),\r\n DeliveryStatus: PropTypes.string,\r\n DeliveryStatusDetails: PropTypes.arrayOf(PropTypes.string),\r\n }),\r\n }).isRequired,\r\n updateValidation: PropTypes.func.isRequired,\r\n showBudgetSuggestion: PropTypes.bool,\r\n isCampaignSetting: PropTypes.bool,\r\n isPremiumStreaming: PropTypes.bool,\r\n currency: PropTypes.string,\r\n campaign: PropTypes.shape({\r\n data: PropTypes.shape({\r\n }),\r\n }),\r\n};\r\n\r\nLegacyBudgetWithCustomValidation.defaultProps = {\r\n showBudgetSuggestion: false,\r\n isCampaignSetting: false,\r\n isPremiumStreaming: false,\r\n currency: 'USD',\r\n campaign: {\r\n data: {},\r\n },\r\n};\r\n\r\nexport const ValidatedLegacyBudget = withCustomValidation(LegacyBudgetWithCustomValidation);\r\n\r\n","import { isEqual } from 'underscore';\r\nimport React, { useCallback, useContext, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@fluentui/react';\r\nimport { buildLegacyI18n } from '@bingads-webui/build-legacy-i18n';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { withCustomValidation } from '@bingads-webui-react/validation';\r\nimport { useP$DaterangeDefault, ConversionGoalKeyToStringMapping } from '@bingads-webui-campaign-react/wizard-shared-components';\r\nimport {\r\n ConversionGoalSelector,\r\n} from '@bingads-webui-campaign-react/goal-selector';\r\nimport { LearnMoreLink } from '@bingads-webui-campaign-react/help';\r\nimport { ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { paginationStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nexport const getConversionGoalStyles = (_, theme) => ({\r\n ConversionGoalSelectorContainer: {\r\n ...paginationStyle(theme),\r\n '& .list-selector-container': {\r\n width: 468,\r\n },\r\n },\r\n});\r\n\r\nconst ConversionGoalsWithCustomValidation = ({ validationProps, updateValidation, ...restProps }) => {\r\n const { data: conversionGoalsData } = validationProps;\r\n const { conversionGoals = {} } = conversionGoalsData;\r\n const i18n = useContext(I18nContext);\r\n\r\n const classes = useDefaultStyles(getConversionGoalStyles);\r\n\r\n const activity = useContext(ActivityContext);\r\n\r\n const legacyI18n = useMemo(() => buildLegacyI18n(\r\n i18n,\r\n [ConversionGoalKeyToStringMapping]\r\n ), [i18n]);\r\n const $dataRange = useP$DaterangeDefault();\r\n\r\n const onChange = useCallback((changedData) => {\r\n const newData = {\r\n conversionGoals: {\r\n ...conversionGoalsData.conversionGoals,\r\n ...changedData,\r\n },\r\n };\r\n\r\n updateValidation([], isEqual(newData, conversionGoalsData) ? conversionGoalsData : newData);\r\n\r\n if (activity) {\r\n activity.signal(`onConversionGoalsChange - ${JSON.stringify(newData)}`);\r\n }\r\n }, [conversionGoalsData, updateValidation, activity]);\r\n const campaignConversionGoal = useMemo(() => ({\r\n Goals: conversionGoals.originalConversionGoals,\r\n }), [conversionGoals.originalConversionGoals]);\r\n\r\n return (conversionGoals && conversionGoals.goalScopeSelection ?\r\n
\r\n
\r\n {i18n.getString(_TL_('Select which conversions are included in the Conversion columns for this campaign and used for optimizing your bid strategy. Updating this setting will override the “Include in conversions” setting made at the account level.'))}\r\n \r\n
\r\n \r\n
: null\r\n );\r\n};\r\n\r\nConversionGoalsWithCustomValidation.propTypes = {\r\n validationProps: PropTypes.shape({\r\n data: PropTypes.shape({\r\n conversionGoals: PropTypes.shape({\r\n goalSelection: PropTypes.arrayOf(PropTypes.shape({})),\r\n goalScopeSelection: PropTypes.string,\r\n originalConversionGoals: PropTypes.arrayOf(PropTypes.shape({})),\r\n }),\r\n }),\r\n }).isRequired,\r\n updateValidation: PropTypes.func.isRequired,\r\n showTrackingStatusIcon: PropTypes.bool, // included in restProps\r\n};\r\n\r\nConversionGoalsWithCustomValidation.defaultProps = {\r\n showTrackingStatusIcon: false,\r\n};\r\n\r\nexport const ValidatedConversionGoals = withCustomValidation(ConversionGoalsWithCustomValidation);\r\n","import { isEqual } from 'underscore';\r\nimport React, { useCallback, useContext, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { withCustomValidation } from '@bingads-webui-react/validation';\r\nimport { GoalSelector } from '@bingads-webui-campaign-react/goal-selector-v3';\r\nimport { ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nimport { getConversionGoalStyles } from './validated-conversion-goals';\r\n\r\nconst ConversionGoalsWithCustomValidation = ({\r\n validationProps, updateValidation, cid, aid, ...restProps\r\n}) => {\r\n const { data: conversionGoalsData } = validationProps;\r\n const { conversionGoals = {} } = conversionGoalsData;\r\n const i18n = useContext(I18nContext);\r\n const classes = useDefaultStyles(getConversionGoalStyles);\r\n\r\n const activity = useContext(ActivityContext);\r\n\r\n const onChange = useCallback((changedData) => {\r\n const newData = {\r\n conversionGoals: {\r\n ...conversionGoalsData.conversionGoals,\r\n ...changedData,\r\n },\r\n };\r\n\r\n updateValidation([], isEqual(newData, conversionGoalsData) ? conversionGoalsData : newData);\r\n\r\n if (activity) {\r\n activity.signal(`onConversionGoalsChange - ${JSON.stringify(newData)}`);\r\n }\r\n }, [conversionGoalsData, updateValidation, activity]);\r\n\r\n const campaignConversionGoal = useMemo(() => ({\r\n Goals: conversionGoals.originalConversionGoals,\r\n }), [conversionGoals.originalConversionGoals]);\r\n\r\n return (conversionGoals && conversionGoals.goalScopeSelection ?\r\n
\r\n \r\n
: null\r\n );\r\n};\r\n\r\nConversionGoalsWithCustomValidation.propTypes = {\r\n validationProps: PropTypes.shape({\r\n data: PropTypes.shape({\r\n conversionGoals: PropTypes.shape({\r\n goalSelection: PropTypes.arrayOf(PropTypes.shape({})),\r\n goalScopeSelection: PropTypes.string,\r\n originalConversionGoals: PropTypes.arrayOf(PropTypes.shape({})),\r\n }),\r\n }),\r\n }).isRequired,\r\n updateValidation: PropTypes.func.isRequired,\r\n isCreationWorkflow: PropTypes.bool,\r\n cid: PropTypes.number.isRequired,\r\n aid: PropTypes.number.isRequired,\r\n};\r\n\r\nConversionGoalsWithCustomValidation.defaultProps = {\r\n isCreationWorkflow: false,\r\n};\r\n\r\nexport const ValidatedConversionGoalsScopeSelector = withCustomValidation(ConversionGoalsWithCustomValidation);\r\n","import { withValidation, withError } from '@bingads-webui-react/validation';\r\nimport { TextField } from '@bingads-webui-react/fabric-control';\r\n\r\nexport const ValidatedTextField = withError(withValidation(TextField));\r\n","import { identity, pluck } from 'underscore';\r\nimport React, { useCallback, useMemo, useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { DefaultButton, ChoiceGroup, Text, Stack } from '@fluentui/react';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\nimport { Glyphicon } from '@bingads-webui-react/primitive';\r\nimport { withCustomValidation } from '@bingads-webui-react/validation';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getRoutePathById, withCampaignSiteMap } from '@bingads-webui-react/with-site-map';\r\nimport { PanelSelector, useTreeViewPanelSelector, fillDataToBulkAddedItem, useAPIsOfListingGroup } from '@bingads-webui-campaign-react/listing-groups-page';\r\nimport { SelectedItem } from '@bingads-webui-campaign-react/pill-item-components';\r\nimport { withStoreFromProviderId } from '@bingads-webui-campaign-react/with-store-details';\r\nimport { useDateRange } from '@bingads-webui-campaign-react/wizard-shared-components';\r\nimport { siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { HelpPopup } from '@bingads-webui-react/help-popup';\r\n\r\nexport const getStyles = (_, { palette = {} }) => ({\r\n productOptions: {\r\n '& label': {\r\n padding: 0,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n buttonContainer: {\r\n marginTop: 10,\r\n '& .iconba': {\r\n fontSize: '16px',\r\n color: palette.themePrimary,\r\n marginRight: '8px',\r\n paddingBottom: '5px', // align to link\r\n },\r\n },\r\n merchantCenterAccountContainer: {\r\n marginBottom: 12,\r\n },\r\n productFilterEditContainer: {\r\n marginBottom: 12,\r\n },\r\n});\r\n\r\nconst stackContainerToken = {\r\n childrenGap: 8,\r\n};\r\n\r\nconst ListingGroupsWithCustomValidation = (props) => {\r\n const {\r\n scope, campaignId, i18n, updateValidation, campaignSettings, siteMap, listingGroup, storeDetails, assetGroupId, onClickNavigateToListingGroups,\r\n } = props;\r\n const classes = useDefaultStyles(getStyles);\r\n const {\r\n isTreeViewSelectorOpen,\r\n setIsTreeViewSelectorOpen,\r\n treeViewSelectorColumns,\r\n treeViewSelectorDimensions,\r\n treeViewSelectorInitialSelectedItems,\r\n treeViewSelectorItems,\r\n treeViewSelectorHeaderText,\r\n onTreeViewCancel,\r\n onTreeViewSelectedDimensionChangeWithoutStatistics,\r\n isTreeViewShimmerEnabled,\r\n onFilterProduct,\r\n } = useTreeViewPanelSelector({\r\n i18n,\r\n setAllRowRawData: identity,\r\n scope,\r\n currentCampaign: {\r\n Id: campaignId,\r\n CampaignSettings: [campaignSettings],\r\n },\r\n refreshGridData: identity,\r\n getArguemntsOfUpdateGridDataByCurrentState: identity,\r\n });\r\n const { listingGroupGridData } = useAPIsOfListingGroup();\r\n const options = useMemo(() => [\r\n {\r\n key: 'all-products',\r\n text: i18n.getString(_TL_('All products')),\r\n },\r\n {\r\n key: 'filter-products',\r\n text: (\r\n
\r\n {i18n.getString(_TL_('Filtered products'))}\r\n \r\n
\r\n ),\r\n },\r\n ], [i18n]);\r\n const isEditing = useMemo(() => !!scope.values.assetGroupId || assetGroupId, [assetGroupId, scope.values.assetGroupId]);\r\n const [selectedOption, setSelectedOption] = useState(listingGroup && listingGroup.items && listingGroup.items.length > 0 ? options[1] : options[0]);\r\n const [selectedProducts, setSelectedProducts] = useState(listingGroup && listingGroup.items);\r\n const [selectedOperand, setSelectedOperand] = useState(listingGroup && listingGroup.operand);\r\n const [productFilter, setProductFilter] = useState(null);\r\n\r\n const onChange = useCallback((newData, selectedDimension) => {\r\n newData.forEach((selectedItem) => {\r\n fillDataToBulkAddedItem(selectedItem);\r\n });\r\n setSelectedProducts(newData);\r\n setSelectedOperand(selectedDimension);\r\n setIsTreeViewSelectorOpen(false);\r\n updateValidation([], {\r\n listingGroup: {\r\n items: newData,\r\n operand: selectedDimension.data.operand,\r\n },\r\n });\r\n }, [setIsTreeViewSelectorOpen, updateValidation]);\r\n const onOpenPanel = useCallback(() => {\r\n onFilterProduct();\r\n }, [onFilterProduct]);\r\n const onDeleteProduct = useCallback((index) => {\r\n selectedProducts.splice(index, 1);\r\n setSelectedProducts([...selectedProducts]);\r\n updateValidation([], {\r\n listingGroup: {\r\n items: [...selectedProducts],\r\n operand: selectedOperand.data.operand,\r\n },\r\n });\r\n }, [selectedOperand, selectedProducts, updateValidation]);\r\n const navigateToListingGroupPage = useCallback(() => {\r\n if (onClickNavigateToListingGroups) {\r\n onClickNavigateToListingGroups();\r\n } else {\r\n scope.save(getRoutePathById(siteMap, 'listing-groups'));\r\n }\r\n }, [onClickNavigateToListingGroups, scope, siteMap]);\r\n const onChangeOptions = useCallback((_, option) => {\r\n setSelectedOption(option);\r\n\r\n const hasSelectedProducts = selectedProducts && selectedProducts.length > 0;\r\n const hasSelectedOperand = selectedOperand && selectedOperand.data && selectedOperand.data.operand;\r\n\r\n const updatedListingGroup = option.key === 'all-products' || !hasSelectedProducts || !hasSelectedOperand ?\r\n null : { items: selectedProducts, operand: selectedOperand.data.operand };\r\n\r\n updateValidation([], { listingGroup: updatedListingGroup });\r\n }, [selectedOperand, selectedProducts, updateValidation]);\r\n\r\n const dataRange = useDateRange();\r\n\r\n useEffect(() => {\r\n if (isEditing) {\r\n listingGroupGridData({\r\n queryOptions: {\r\n $top: 2,\r\n },\r\n entityPath: {\r\n accountId: scope.values.aid,\r\n campaignId: scope.values.campaignId || campaignId,\r\n customerId: scope.values.cid,\r\n assetGroupId: scope.values.assetGroupId || assetGroupId,\r\n },\r\n payload: {\r\n gridDataParameters: {\r\n DateRange: {\r\n StartDate: dataRange.StartDate,\r\n EndDate: dataRange.EndDate,\r\n },\r\n },\r\n },\r\n }).then(({ value }) => {\r\n if (value.length === 1) {\r\n setProductFilter(i18n.getString('ProductsGrid_Column_All'));\r\n updateValidation([], {\r\n productFilter: i18n.getString('ProductsGrid_Column_All'),\r\n });\r\n } else if (value.length === 2) {\r\n setProductFilter(i18n.getString(`ProductsGrid_Column_${value[1].Condition.Operand}`));\r\n updateValidation([], {\r\n productFilter: i18n.getString(`ProductsGrid_Column_${value[1].Condition.Operand}`),\r\n });\r\n }\r\n });\r\n }\r\n // Remove the functions from dependency to reduce duplicate calls\r\n }, [scope.values.cid, scope.values.aid, scope.values.uid, dataRange.StartDate, dataRange.EndDate, scope.values.campaignId, scope.values.assetGroupId, isEditing, campaignId, assetGroupId]);\r\n\r\n return (\r\n
\r\n {storeDetails && storeDetails.text &&\r\n
\r\n \r\n {i18n.getString(_TL_('Merchant Center account: '))}\r\n \r\n \r\n {storeDetails.text}\r\n \r\n
\r\n }\r\n {isEditing && productFilter &&\r\n
\r\n
\r\n \r\n {i18n.getString(_TL_('Products:'))}\r\n \r\n \r\n {`${i18n.getString(_TL_(' Filtered by '))}${productFilter}`}\r\n \r\n
\r\n
\r\n \r\n {i18n.getString(_TL_('Go to listing groups'))}\r\n \r\n
\r\n
\r\n }\r\n {\r\n !isEditing &&\r\n \r\n }\r\n {!isEditing && selectedOption.key === 'filter-products' &&\r\n
\r\n
\r\n \r\n {pluck(selectedProducts, 'primary').map((item, index) => (\r\n \r\n ))}\r\n \r\n
\r\n
\r\n \r\n \r\n {i18n.getString(_TL_('Add filter'))}\r\n \r\n
\r\n
\r\n }\r\n {isTreeViewSelectorOpen && []}// TO DO SIMXU update to real error handling\r\n isOpen={isTreeViewSelectorOpen}\r\n columns={treeViewSelectorColumns}\r\n dimensions={treeViewSelectorDimensions}\r\n headerText={treeViewSelectorHeaderText}\r\n initialSelectedItems={treeViewSelectorInitialSelectedItems}\r\n items={treeViewSelectorItems}\r\n onCancel={onTreeViewCancel}\r\n onSave={onChange}\r\n onSelectedDimensionChange={onTreeViewSelectedDimensionChangeWithoutStatistics}\r\n enableShimmer={isTreeViewShimmerEnabled}\r\n keyOfItem={item => item.key}\r\n isBulkAddEnabledForDimension={d => d.data.isBulkAddEnabled}\r\n />}\r\n
\r\n );\r\n};\r\n\r\nListingGroupsWithCustomValidation.propTypes = {\r\n validationProps: PropTypes.shape({\r\n data: PropTypes.shape({\r\n locationTargets: PropTypes.shape({}),\r\n }),\r\n }).isRequired,\r\n scope: PropTypes.shape({\r\n values: PropTypes.shape({\r\n cid: PropTypes.number.isRequired,\r\n aid: PropTypes.number.isRequired,\r\n uid: PropTypes.number.isRequired,\r\n campaignId: PropTypes.number.isRequired,\r\n assetGroupId: PropTypes.number,\r\n }).isRequired,\r\n save: PropTypes.func.isRequired,\r\n }).isRequired,\r\n campaignId: PropTypes.number.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n updateValidation: PropTypes.func.isRequired,\r\n campaignSettings: PropTypes.arrayOf(PropTypes.shape({})),\r\n siteMap: siteMapPropType.isRequired,\r\n listingGroup: PropTypes.shape({\r\n items: PropTypes.arrayOf(PropTypes.shape({\r\n key: PropTypes.string,\r\n })),\r\n operand: PropTypes.string,\r\n }),\r\n storeDetails: PropTypes.shape({\r\n text: PropTypes.string,\r\n }),\r\n assetGroupId: PropTypes.number,\r\n onClickNavigateToListingGroups: PropTypes.func,\r\n};\r\n\r\nListingGroupsWithCustomValidation.defaultProps = {\r\n campaignSettings: [],\r\n listingGroup: {},\r\n storeDetails: undefined,\r\n assetGroupId: undefined,\r\n onClickNavigateToListingGroups: undefined,\r\n};\r\n\r\nexport const ValidatedListingGroups = withCampaignSiteMap(withScope(withCustomValidation(withStoreFromProviderId(ListingGroupsWithCustomValidation))));\r\n","import React, { useCallback, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { withCustomValidation } from '@bingads-webui-react/validation';\r\nimport { ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport {\r\n LocationTargetSetting,\r\n isLocationValid,\r\n} from '@bingads-webui-campaign/hotel-common-targets';\r\n\r\nconst LocationTargetSettingWithCustomValidation = ({\r\n validationProps, updateValidation, skipValidation, allowBidAdjustment, dealInfo, ...restProps\r\n}) => {\r\n const { data: locationTargets } = validationProps;\r\n const i18n = useContext(I18nContext);\r\n const activity = useContext(ActivityContext);\r\n\r\n const onChange = useCallback((newData) => {\r\n let errors = [];\r\n\r\n if (!skipValidation) {\r\n errors = isLocationValid(newData) ? [] : [i18n.getString(_TL_('Location target has validation errors'))];\r\n }\r\n\r\n const isForDeal = _.get(dealInfo, 'isForDeal', false);\r\n if (isForDeal) {\r\n errors = isLocationValid(newData, 'placeholder', dealInfo) ? [] : [i18n.getString(_TL_('Location target has validation errors.'))];\r\n }\r\n\r\n updateValidation(errors, { locationTargets: newData });\r\n\r\n if (activity) {\r\n // signal activity to parent\r\n activity.signal(`onLocationTargettingChange - ${JSON.stringify(newData)}`);\r\n }\r\n }, [skipValidation, updateValidation, activity, i18n, dealInfo]);\r\n\r\n return (locationTargets ?\r\n :
\r\n );\r\n};\r\n\r\nLocationTargetSettingWithCustomValidation.propTypes = {\r\n validationProps: PropTypes.shape({\r\n data: PropTypes.shape({\r\n locationTargets: PropTypes.shape({}),\r\n }),\r\n }).isRequired,\r\n updateValidation: PropTypes.func.isRequired,\r\n skipValidation: PropTypes.bool,\r\n allowBidAdjustment: PropTypes.bool,\r\n dealInfo: PropTypes.shape({\r\n isForDeal: PropTypes.bool,\r\n dealCountryCode: PropTypes.string,\r\n dealSupportedLocationType: PropTypes.arrayOf(PropTypes.string),\r\n }),\r\n};\r\n\r\nLocationTargetSettingWithCustomValidation.defaultProps = {\r\n skipValidation: true,\r\n allowBidAdjustment: false,\r\n dealInfo: {},\r\n};\r\n\r\nexport const ValidatedLocationTargetSetting = withCustomValidation(LocationTargetSettingWithCustomValidation);\r\n","import React, { useContext, } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withUnvalidatedControlErrors, withControlErrorHandling } from '@bingads-webui-campaign-react/error-handling';\r\nimport {\r\n entityIs,\r\n anyComp,\r\n} from '@bingads-webui-campaign-react/form-error';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getLocationTargetingStyles } from '@bingads-webui-campaign-react/location-targeting';\r\nimport {\r\n TextTitle,\r\n ValidatedPanel,\r\n getPanelErrorProps\r\n} from '@bingads-webui-campaign/wizard-jumbo-card';\r\nimport { SectionShimmer, getLocationTargetTitleDetails, ERROR_ENTITY } from '@bingads-webui-campaign-react/wizard-shared-components';\r\n\r\nimport { LocationImg } from './media';\r\nimport { ValidatedLocationTargetSetting } from './validated-location-target-setting';\r\n\r\nconst getTargetingStyles = () => ({\r\n container: {\r\n maxWidth: 680,\r\n '& .title-item': {\r\n width: 'unset !important',\r\n },\r\n '& .specific-location-targets-editor': {\r\n marginLeft: '-25px !important',\r\n },\r\n '& .intent-target ul': {\r\n paddingLeft: '20px',\r\n },\r\n },\r\n header: {\r\n marginBottom: 20,\r\n },\r\n ...getLocationTargetingStyles(),\r\n});\r\n\r\nconst campaignLocationCriterions = anyComp(\r\n entityIs(ERROR_ENTITY.CampaignLocation),\r\n entityIs(ERROR_ENTITY.CampaignRadius),\r\n entityIs(ERROR_ENTITY.CampaignNegativeLocation),\r\n entityIs(ERROR_ENTITY.CampaignLocationIntent)\r\n);\r\n\r\nconst ServerValidatedLocationTargetSetting = withControlErrorHandling(withUnvalidatedControlErrors(\r\n ValidatedLocationTargetSetting,\r\n { filter: campaignLocationCriterions }\r\n));\r\n\r\nexport const LocationTargetingSettingPanel = (props) => {\r\n const { scope } = useContext(ScopeContext) || {};\r\n const i18n = useContext(I18nContext);\r\n const classes = useDefaultStyles(getTargetingStyles);\r\n\r\n const {\r\n key,\r\n isLoading,\r\n options,\r\n expand,\r\n data = {},\r\n topicKey,\r\n ...rest\r\n } = props;\r\n\r\n\r\n return (\r\n }\r\n attentionBeaconProps={{ getExtraProps: getPanelErrorProps }}\r\n actuationProps={{\r\n expand,\r\n expandKey: key,\r\n }}\r\n {...rest}\r\n >\r\n {\r\n isLoading ?\r\n :\r\n
\r\n \r\n
\r\n }\r\n \r\n );\r\n};\r\n\r\nLocationTargetingSettingPanel.propTypes = {\r\n key: PropTypes.string.isRequired,\r\n isLoading: PropTypes.bool,\r\n options: PropTypes.shape({\r\n bundleCountries: PropTypes.arrayOf(PropTypes.shape({})),\r\n bundleLocationCriterions: PropTypes.arrayOf(PropTypes.shape({})),\r\n }),\r\n expand: PropTypes.func.isRequired,\r\n data: PropTypes.shape({}),\r\n topicKey: PropTypes.string,\r\n};\r\n\r\nLocationTargetingSettingPanel.defaultProps = {\r\n isLoading: false,\r\n options: {},\r\n data: {},\r\n topicKey: null,\r\n};\r\n","import React, { useContext, useMemo } 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 { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { AudienceWizard } from '@bingads-webui-campaign-react/audience-signals';\r\nimport {\r\n TextTitle,\r\n getPanelErrorProps,\r\n ValidatedFixedPanel,\r\n} from '@bingads-webui-campaign/wizard-jumbo-card';\r\n\r\nimport { AudienceSignalShimmer, withShimmer } from '@bingads-webui-campaign-react/wizard-shared-components';\r\nimport { AudienceImg } from './media';\r\n\r\nconst AudienceWizardWithShimmer = withShimmer(AudienceWizard, AudienceSignalShimmer);\r\n\r\nexport const AudienceSignalPanel = (props) => {\r\n const i18n = useContext(I18nContext);\r\n const { scope } = useContext(ScopeContext) || {};\r\n const serverContext = useContext(ServerContext);\r\n\r\n const {\r\n DynamicPermissions,\r\n Permissions,\r\n } = serverContext;\r\n\r\n const { aid, cid } = scope.values;\r\n\r\n const permissions = useMemo(\r\n () => ({ dynamic: { ...DynamicPermissions }, ...Permissions }),\r\n [DynamicPermissions, Permissions]\r\n );\r\n\r\n const isReadOnlyUser = useMemo(\r\n () => permissions.IsReadOnlyUser || serverContext.CurrentAccount.Status === 32, // 32 is InActive\r\n [permissions.IsReadOnlyUser, serverContext.CurrentAccount.Status]\r\n );\r\n\r\n const {\r\n key,\r\n isLoading,\r\n options,\r\n expand,\r\n data = {},\r\n ...rest\r\n } = props;\r\n\r\n const {\r\n AudienceGroup,\r\n OriginalAudienceGroup,\r\n } = data;\r\n\r\n return (\r\n }\r\n attentionBeaconProps={{ getExtraProps: getPanelErrorProps }}\r\n actuationProps={{\r\n expand,\r\n expandKey: key,\r\n }}\r\n {...rest}\r\n >\r\n \r\n \r\n );\r\n};\r\n\r\nAudienceSignalPanel.propTypes = {\r\n key: PropTypes.string.isRequired,\r\n isLoading: PropTypes.bool,\r\n options: PropTypes.shape({\r\n wizardPerfMarker: PropTypes.shape({}),\r\n }),\r\n expand: PropTypes.func,\r\n wizardPerfMarker: PropTypes.shape({}).isRequired,\r\n data: PropTypes.shape({}),\r\n};\r\n\r\nAudienceSignalPanel.defaultProps = {\r\n isLoading: false,\r\n options: {},\r\n data: {},\r\n expand: () => {},\r\n};\r\n","import _, { compose, partial } from 'underscore';\r\nimport { withProps } from '@bingads-webui-react/with-props';\r\nimport { withControlErrorHandling, withUnvalidatedControlErrors } from '@bingads-webui-campaign-react/error-handling';\r\nimport { propertyIs, StandardControlAdapter } from '@bingads-webui-campaign-react/form-error';\r\nimport { ValidatedUrlOptionsParameters } from '@bingads-webui-campaign-react/url-options';\r\n\r\nconst campaignTrackingUrlTemplate = propertyIs('TrackingUrlTemplate');\r\nconst campaignFinalUrlSuffix = propertyIs('FinalUrlSuffix');\r\nconst campaignUrlCustomParameters = propertyIs('UrlCustomParameters');\r\nconst trackingUrlTemplateControlsWrapper = compose(\r\n withControlErrorHandling,\r\n partial(withUnvalidatedControlErrors, _, { filter: campaignTrackingUrlTemplate, Adapter: StandardControlAdapter() })\r\n);\r\nconst finalUrlSuffixControlsWrapper = compose(\r\n withControlErrorHandling,\r\n partial(withUnvalidatedControlErrors, _, { filter: campaignFinalUrlSuffix, Adapter: StandardControlAdapter() })\r\n);\r\nconst urlCustomParametersControlsWrapper = compose(\r\n withControlErrorHandling,\r\n partial(withUnvalidatedControlErrors, _, { filter: campaignUrlCustomParameters, Adapter: StandardControlAdapter({ functionsToInject: ['onCustomParameterKeyChange', 'onCustomParameterValueChange', 'onRemoveUrlParameter', 'onAddUrlParameter'] }) })\r\n);\r\n\r\nexport const ServerValidatedUrlOptionsParameters = withControlErrorHandling(withProps({\r\n trackingUrlTemplateControlsWrapper,\r\n finalUrlSuffixControlsWrapper,\r\n urlCustomParametersControlsWrapper,\r\n}, ValidatedUrlOptionsParameters));\r\n","import React, { useMemo, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { noop } from 'underscore';\r\nimport {\r\n TextTitle,\r\n ValidatedPanel,\r\n getPanelErrorProps,\r\n} from '@bingads-webui-campaign/wizard-jumbo-card';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { ValidatedVideoExperience, getODataConfig } from '@bingads-webui-campaign-react/xandr-video-campaign-shared-components';\r\nimport { PermissionsContext } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport {\r\n ImageListSummaryCardDetails,\r\n} from '@bingads-webui-campaign-react/pmax-image-experience';\r\n\r\nimport { PANEL_KEYS } from '@bingads-webui-campaign-react/wizard-shared-components';\r\n\r\nconst DisplayPlusMaxVideoCount = 5;\r\n\r\nexport const VideoPanel = ({\r\n perfMarker,\r\n mergedI18n,\r\n videos,\r\n setSelectedVideoId = noop,\r\n selectedVideoId,\r\n icon,\r\n allAssetsExpand,\r\n isVideoRequired,\r\n topicKey,\r\n skipQualityValidation,\r\n ...rest\r\n}) => {\r\n const permissions = useContext(PermissionsContext);\r\n\r\n const serverContext = useContext(ServerContext);\r\n\r\n const i18n = useContext(I18nContext);\r\n\r\n const oDataConfig = useMemo(() => getODataConfig(serverContext), [serverContext]);\r\n\r\n const { scope } = useContext(ScopeContext);\r\n\r\n const { cid, aid } = scope.values;\r\n\r\n const videoTypesWithOrder = useMemo(() => (['VideoMedia16X9']), []);\r\n\r\n const videosContainer = useMemo(() => {\r\n const videoAd = { videos: videos || [] };\r\n\r\n return (\r\n \r\n );\r\n }, [videos, mergedI18n, perfMarker, permissions, videoTypesWithOrder, selectedVideoId, oDataConfig, cid, aid, setSelectedVideoId, isVideoRequired, skipQualityValidation]);\r\n\r\n return (\r\n }\r\n />}\r\n attentionBeaconProps={{ getExtraProps: getPanelErrorProps }}\r\n actuationProps={{\r\n expand: allAssetsExpand,\r\n expandKey: PANEL_KEYS.VIDEOS,\r\n }}\r\n {...rest}\r\n >\r\n {i18n.getString(_TL_('You can add up to {{limit}} videos to your ad.'), { limit: DisplayPlusMaxVideoCount })}\r\n
\r\n {videosContainer}\r\n
\r\n \r\n );\r\n};\r\n\r\nVideoPanel.propTypes = {\r\n perfMarker: PropTypes.string.isRequired,\r\n mergedI18n: PropTypes.shape({}).isRequired,\r\n videos: PropTypes.shape([]).isRequired,\r\n setSelectedVideoId: PropTypes.func,\r\n selectedVideoId: PropTypes.number.isRequired,\r\n skipQualityValidation: PropTypes.bool,\r\n icon: PropTypes.node.isRequired,\r\n allAssetsExpand: PropTypes.func.isRequired,\r\n isVideoRequired: PropTypes.bool,\r\n topicKey: PropTypes.string,\r\n};\r\n\r\nVideoPanel.defaultProps = {\r\n isVideoRequired: false,\r\n topicKey: null,\r\n skipQualityValidation: false,\r\n};\r\n","import { getTheme } from '@fluentui/react';\r\nimport { merge } from '@bingads-webui-universal/primitive-utilities';\r\n\r\nconst { palette } = getTheme();\r\n\r\nexport const getStepBaseLayoutFooterStyles = (styleOverrides = {}) => () => merge({\r\n footerContainer: {\r\n clear: 'both',\r\n borderTop: `1px solid ${palette.neutralLight}`,\r\n paddingLeft: '24px',\r\n paddingTop: '16px',\r\n paddingBottom: '16px',\r\n },\r\n previousButton: {\r\n marginRight: '8px',\r\n },\r\n previousButtonOnTheRightOfNext: {\r\n marginLeft: '12px',\r\n },\r\n cancelButton: {\r\n marginLeft: '33px',\r\n },\r\n skippingLink: {\r\n marginLeft: '41px',\r\n textDecoration: 'underline',\r\n },\r\n}, styleOverrides);\r\n\r\nexport const baseLayoutFooterStyles = {\r\n stepProgress: {\r\n root: {\r\n color: palette.neutralPrimary,\r\n paddingTop: 5,\r\n paddingLeft: 16,\r\n },\r\n },\r\n};\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport _ from 'underscore';\r\nimport React, { useContext } from 'react';\r\nimport classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { DefaultButton, PrimaryButton, Link } from '@bingads-webui-react/fabric-with-signal';\r\nimport { Text } from '@fluentui/react';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nimport { getStepBaseLayoutFooterStyles, baseLayoutFooterStyles } from './styles/step-base-layout-footer-styles';\r\n\r\nexport function StepFooter(props) {\r\n const {\r\n onCancelClick,\r\n onPreviousClick,\r\n onNextClick,\r\n nextButtonText,\r\n previousButtonAfterNext,\r\n previousButtonText,\r\n cancelButtonText,\r\n onSkippingLinkClick,\r\n skippingLinkTitle,\r\n onRenderFooterNote,\r\n isPreviousClickDisabled,\r\n isNextClickDisabled,\r\n isSkipLinkDisabled,\r\n stepProgressContent,\r\n className,\r\n styleOverrides,\r\n } = props;\r\n const classes = useDefaultStyles(getStepBaseLayoutFooterStyles(styleOverrides));\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n
\r\n {\r\n _.isFunction(onRenderFooterNote) && onRenderFooterNote()\r\n }\r\n {!previousButtonAfterNext &&\r\n _.isFunction(onPreviousClick) &&\r\n \r\n {previousButtonText || i18n.getString(_TL_('Previous'))}\r\n \r\n }\r\n\r\n \r\n {nextButtonText || i18n.getString(_TL_('Next'))}\r\n \r\n\r\n {previousButtonAfterNext &&\r\n _.isFunction(onPreviousClick) &&\r\n \r\n {previousButtonText || i18n.getString(_TL_('Previous'))}\r\n \r\n }\r\n\r\n {\r\n _.isFunction(onCancelClick) &&\r\n \r\n {cancelButtonText || i18n.getString(_TL_('Cancel'))}\r\n \r\n }\r\n\r\n {\r\n stepProgressContent &&\r\n
\r\n \r\n {stepProgressContent}\r\n \r\n
\r\n }\r\n\r\n {\r\n _.isFunction(onSkippingLinkClick) &&\r\n \r\n {skippingLinkTitle || i18n.getString(_TL_('Skip campaign creation'))}\r\n \r\n }\r\n
\r\n );\r\n}\r\n\r\nStepFooter.propTypes = {\r\n onCancelClick: PropTypes.func,\r\n onPreviousClick: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\r\n onNextClick: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\r\n onSkippingLinkClick: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\r\n skippingLinkTitle: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\r\n\r\n onRenderFooterNote: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\r\n\r\n previousButtonAfterNext: PropTypes.bool,\r\n previousButtonText: PropTypes.string,\r\n nextButtonText: PropTypes.string,\r\n cancelButtonText: PropTypes.string,\r\n isPreviousClickDisabled: PropTypes.bool,\r\n isNextClickDisabled: PropTypes.bool,\r\n isSkipLinkDisabled: PropTypes.bool,\r\n className: PropTypes.string,\r\n styleOverrides: PropTypes.shape({}),\r\n stepProgressContent: PropTypes.string,\r\n};\r\n\r\nStepFooter.defaultProps = {\r\n previousButtonAfterNext: false,\r\n previousButtonText: null,\r\n nextButtonText: null,\r\n cancelButtonText: null,\r\n onPreviousClick: null,\r\n onNextClick: null,\r\n onCancelClick: null,\r\n onSkippingLinkClick: null,\r\n skippingLinkTitle: null,\r\n onRenderFooterNote: null,\r\n\r\n isPreviousClickDisabled: false,\r\n isNextClickDisabled: false,\r\n isSkipLinkDisabled: false,\r\n className: '',\r\n styleOverrides: undefined,\r\n stepProgressContent: '',\r\n};\r\n","import { getTheme } from '@fluentui/react';\r\n\r\nconst { palette } = getTheme();\r\n\r\nexport const getBaseStepLayoutStyles = () => ({\r\n stepContainer: {\r\n height: '100%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n\r\n stepContentContainer: {\r\n overflowY: 'hidden',\r\n display: 'table-column',\r\n height: '100%',\r\n backgroundColor: palette.neutralLighterAlt,\r\n },\r\n\r\n mainSide: {\r\n width: '100%',\r\n height: '100%',\r\n paddingLeft: '32px',\r\n display: 'table-cell',\r\n },\r\n});\r\n","import _ from 'underscore';\r\nimport classNames from 'classnames';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nimport { getBaseStepLayoutStyles } from './styles/step-base-layout-styles';\r\nimport { StepFooter } from './step-base-layout-footer';\r\n\r\n/**\r\n * Base layout for wizard steps. Includes header and footer.\r\n * @param {*} props - See propTypes definition.\r\n * @returns {ReactNode} - Base layout component.\r\n */\r\nexport function StepBaseLayout(props) {\r\n const {\r\n children,\r\n className,\r\n stepContainerClassName,\r\n stepContentContainerClassName,\r\n mainSideClassName,\r\n nextButtonText,\r\n previousButtonText,\r\n cancelButtonText,\r\n onCancelClick,\r\n onNextClick,\r\n onPreviousClick,\r\n onSkippingLinkClick,\r\n skippingLinkTitle,\r\n title,\r\n onRenderFooterNote,\r\n onRenderRightSide,\r\n isPreviousClickDisabled,\r\n isNextClickDisabled,\r\n isSkipLinkDisabled,\r\n isHideFooter,\r\n } = props;\r\n\r\n const classes = useDefaultStyles(getBaseStepLayoutStyles);\r\n return (\r\n
\r\n
\r\n
\r\n {title &&

{title}

}\r\n\r\n
\r\n {children}\r\n
\r\n
\r\n\r\n {\r\n _.isFunction(onRenderRightSide) && onRenderRightSide()\r\n }\r\n
\r\n\r\n {!isHideFooter && }\r\n
\r\n );\r\n}\r\n\r\nStepBaseLayout.propTypes = {\r\n children: PropTypes.oneOfType([\r\n PropTypes.node,\r\n PropTypes.arrayOf(PropTypes.node),\r\n ]),\r\n className: PropTypes.string,\r\n stepContainerClassName: PropTypes.string,\r\n stepContentContainerClassName: PropTypes.string,\r\n mainSideClassName: PropTypes.string,\r\n\r\n onPreviousClick: PropTypes.func,\r\n onNextClick: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\r\n onCancelClick: PropTypes.func,\r\n onSkippingLinkClick: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\r\n skippingLinkTitle: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\r\n onRenderFooterNote: PropTypes.func,\r\n\r\n cancelButtonText: PropTypes.string,\r\n previousButtonText: PropTypes.string,\r\n nextButtonText: PropTypes.string,\r\n isPreviousClickDisabled: PropTypes.bool,\r\n isNextClickDisabled: PropTypes.bool,\r\n isSkipLinkDisabled: PropTypes.bool,\r\n\r\n title: PropTypes.string,\r\n onRenderRightSide: PropTypes.func,\r\n isHideFooter: PropTypes.bool,\r\n};\r\n\r\nStepBaseLayout.defaultProps = {\r\n children: null,\r\n className: null,\r\n stepContainerClassName: undefined,\r\n stepContentContainerClassName: undefined,\r\n mainSideClassName: undefined,\r\n\r\n title: null,\r\n onRenderRightSide: null,\r\n\r\n skippingLinkTitle: null,\r\n onPreviousClick: null,\r\n onNextClick: null,\r\n onCancelClick: null,\r\n onSkippingLinkClick: null,\r\n onRenderFooterNote: null,\r\n\r\n cancelButtonText: null,\r\n previousButtonText: null,\r\n nextButtonText: null,\r\n isPreviousClickDisabled: false,\r\n isNextClickDisabled: false,\r\n isSkipLinkDisabled: false,\r\n isHideFooter: false,\r\n};\r\n","import { getTheme } from '@fluentui/react';\r\n\r\nconst { palette } = getTheme();\r\n\r\nexport const getBaseModalFooterStyles = () => ({\r\n stepModalFooterContainer: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n position: 'absolute',\r\n bottom: 16,\r\n width: '100%',\r\n },\r\n actionsContainer: {\r\n display: 'flex',\r\n paddingLeft: 16,\r\n },\r\n defaultButton: {\r\n marginRight: 8,\r\n },\r\n skipLink: {\r\n textDecoration: 'underline',\r\n },\r\n stepProgressContainer: {\r\n marginLeft: 'auto',\r\n },\r\n});\r\n\r\nexport const baseModalFooterStyles = {\r\n stepProgress: {\r\n root: {\r\n color: palette.neutralPrimary,\r\n paddingTop: 5,\r\n },\r\n },\r\n};\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport _ from 'underscore';\r\nimport React, { useContext } from 'react';\r\nimport classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { DefaultButton, PrimaryButton, Link, Text } from '@fluentui/react';\r\n\r\nimport { getBaseModalFooterStyles, baseModalFooterStyles } from './styles/step-base-modal-footer-styles';\r\n\r\nexport function StepModalFooter(props) {\r\n const {\r\n onPreviousClick,\r\n onNextClick,\r\n onSkippingLinkClick,\r\n skippingLinkTitle,\r\n nextButtonText,\r\n previousButtonText,\r\n stepProgressContent,\r\n isPreviousDisabled,\r\n } = props;\r\n const classes = useDefaultStyles(getBaseModalFooterStyles);\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n
\r\n {\r\n _.isFunction(onSkippingLinkClick) && (\r\n
\r\n \r\n {skippingLinkTitle || i18n.getString(_TL_('Skip campaign creation')) }\r\n \r\n
\r\n )\r\n }\r\n\r\n {\r\n stepProgressContent &&\r\n
\r\n \r\n {stepProgressContent}\r\n \r\n
\r\n }\r\n\r\n
\r\n {\r\n _.isFunction(onPreviousClick) &&\r\n \r\n {previousButtonText || i18n.getString(_TL_('Previous'))}\r\n \r\n }\r\n {\r\n _.isFunction(onNextClick) &&\r\n \r\n {nextButtonText || i18n.getString(_TL_('Next'))}\r\n \r\n }\r\n
\r\n\r\n
\r\n );\r\n}\r\n\r\nStepModalFooter.propTypes = {\r\n nextButtonText: PropTypes.string,\r\n onPreviousClick: PropTypes.func,\r\n onNextClick: PropTypes.func,\r\n onSkippingLinkClick: PropTypes.func,\r\n skippingLinkTitle: PropTypes.string,\r\n previousButtonText: PropTypes.string,\r\n stepProgressContent: PropTypes.string,\r\n isPreviousDisabled: PropTypes.bool,\r\n};\r\n\r\nStepModalFooter.defaultProps = {\r\n nextButtonText: null,\r\n onPreviousClick: null,\r\n onNextClick: null,\r\n onSkippingLinkClick: null,\r\n skippingLinkTitle: null,\r\n previousButtonText: null,\r\n stepProgressContent: null,\r\n isPreviousDisabled: false,\r\n};\r\n","import { getTheme } from '@fluentui/react';\r\n\r\nconst { palette } = getTheme();\r\n\r\nexport const getStepBaseModalLayoutStyles = () => ({\r\n stepModalHeader: {\r\n display: 'flex',\r\n paddingTop: '21px',\r\n justifyContent: 'space-between',\r\n },\r\n stepModalIndex: {\r\n marginLeft: 'auto',\r\n alignSelf: 'center',\r\n fontSize: '20px',\r\n color: palette.neutralPrimary,\r\n },\r\n stepModalContainer: {\r\n width: 632,\r\n height: 616,\r\n margin: '0 24px',\r\n position: 'relative',\r\n },\r\n stepModalContentContainer: {\r\n marginTop: '7px',\r\n '& .error': {\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n color: '#a80000',\r\n },\r\n },\r\n modalContainer: {\r\n display: 'flex',\r\n },\r\n});\r\n\r\nexport const stepBaseModalStyles = {\r\n cancelButtonStyles: {\r\n root: {\r\n color: palette.neutralPrimary,\r\n },\r\n rootHovered: {\r\n color: palette.neutralDark,\r\n },\r\n },\r\n};\r\n","import React, { useContext, useState, useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport _ from 'underscore';\r\n\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { Modal, IconButton, Text } from '@fluentui/react';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { UiBlocker } from '@bingads-webui-react/ui-blocker';\r\n\r\nimport { getStepBaseModalLayoutStyles } from './styles/step-base-modal-layout-styles';\r\nimport { StepModalFooter } from './step-base-modal-footer';\r\n\r\nexport function StepBaseModalLayout(props) {\r\n const {\r\n modalClassName,\r\n modalStyles,\r\n isLoading,\r\n\r\n onCancelClick,\r\n onPreviousClick,\r\n onNextClick,\r\n skippingLinkTitle,\r\n onSkippingLinkClick,\r\n\r\n nextButtonText,\r\n previousButtonText,\r\n title,\r\n stepProgressContent,\r\n\r\n isCloseDisabled,\r\n isPreviousDisabled,\r\n\r\n children,\r\n } = props;\r\n const classes = useDefaultStyles(getStepBaseModalLayoutStyles);\r\n const i18n = useContext(I18nContext);\r\n\r\n const [isModalOpen, setShowModal] = useState(true);\r\n const onCloseClick = useCallback(() => {\r\n onCancelClick();\r\n setShowModal(false);\r\n }, [onCancelClick]);\r\n\r\n return (\r\n \r\n \r\n
\r\n
\r\n {\r\n title &&\r\n \r\n {title}\r\n \r\n }\r\n \r\n
\r\n
\r\n
\r\n {children}\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n );\r\n}\r\n\r\nStepBaseModalLayout.propTypes = {\r\n modalClassName: PropTypes.string,\r\n modalStyles: PropTypes.shape({}),\r\n isLoading: PropTypes.bool,\r\n\r\n onCancelClick: PropTypes.func,\r\n onNextClick: PropTypes.func,\r\n onPreviousClick: PropTypes.func,\r\n skippingLinkTitle: PropTypes.string,\r\n onSkippingLinkClick: PropTypes.func,\r\n\r\n title: PropTypes.string,\r\n stepProgressContent: PropTypes.string,\r\n nextButtonText: PropTypes.string,\r\n previousButtonText: PropTypes.string,\r\n isCloseDisabled: PropTypes.bool,\r\n isPreviousDisabled: PropTypes.bool,\r\n\r\n children: PropTypes.oneOfType([\r\n PropTypes.node,\r\n PropTypes.arrayOf(PropTypes.node),\r\n ]),\r\n};\r\n\r\nStepBaseModalLayout.defaultProps = {\r\n modalClassName: '',\r\n modalStyles: null,\r\n isLoading: false,\r\n\r\n onNextClick: null,\r\n onPreviousClick: null,\r\n skippingLinkTitle: null,\r\n onSkippingLinkClick: null,\r\n onCancelClick: _.noop,\r\n\r\n nextButtonText: null,\r\n previousButtonText: null,\r\n\r\n children: null,\r\n title: null,\r\n stepProgressContent: null,\r\n\r\n isCloseDisabled: false,\r\n isPreviousDisabled: false,\r\n};\r\n","import { useEffect, useState } from 'react';\r\n\r\nexport function useOnceEffect(callFn) {\r\n const [called, setCalled] = useState(false);\r\n\r\n useEffect(() => {\r\n if (!called && callFn()) {\r\n setCalled(true);\r\n }\r\n }, [callFn, called]);\r\n}\r\n","import { STEP_STATES } from '@bingads-webui-react/wizard-core';\r\n\r\n/**\r\n * Define this file to simplify later logging mapping in consumer side.\r\n */\r\nexport const WIZARD_EVENT_PREFIX = 'WizardStepFlow:';\r\n\r\nexport const WIZARD_STEP_EVENT = {\r\n APP_LOAD: 'AppLoad',\r\n START_FLOW: 'StartedFlow',\r\n SWITCH_FLOW: 'SwitchedFlow',\r\n ENTER_PAGE: 'EnteredPage',\r\n COMPLETE: 'WizardComplete',\r\n};\r\n\r\nexport const SINGLE_STEP_EVENT = {\r\n LOADING: 'Loading',\r\n SAVING_SUCCEEDED: 'SavingSucceeded',\r\n SAVING_FAILED: 'SavingFailed',\r\n};\r\n\r\nexport const USER_TRIGGER_STEP_EVENT = {\r\n [STEP_STATES.GOING_NEXT]: 'SaveAndGoNext',\r\n [STEP_STATES.GOING_BACK]: 'SaveAndGoBack',\r\n [STEP_STATES.EXITING]: 'SaveAndExit',\r\n};\r\n\r\nexport const USER_TRIGGER_STEP_EVENT_KEYS = Object.keys(USER_TRIGGER_STEP_EVENT);\r\n","import _ from 'underscore';\r\nimport React, { useCallback, useEffect, useState, useRef, useContext, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { InstrumentationContext } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { useOnceEffect } from './helper';\r\nimport { WIZARD_EVENT_PREFIX, WIZARD_STEP_EVENT } from './constants';\r\n\r\nconst NoOpContext = {\r\n logComplete: _.noop,\r\n changedChannel: _.noop,\r\n enteredPage: _.noop,\r\n};\r\n\r\nexport const StepFlowContext = React.createContext(NoOpContext);\r\nconst DEFAULT_EVENT_VALUE = '';\r\n\r\nexport function useLogEnteredPage({\r\n Flow,\r\n SubFlow = DEFAULT_EVENT_VALUE,\r\n Page,\r\n}) {\r\n const { enteredPage } = useContext(StepFlowContext);\r\n useEffect(() => {\r\n if (Page) {\r\n enteredPage({ Flow, SubFlow, Page });\r\n }\r\n }, [Flow, Page, SubFlow, enteredPage]);\r\n}\r\n\r\nfunction useStateWithPrevious(initialValue) {\r\n const [state, setState] = useState(initialValue);\r\n const cache = useRef({});\r\n\r\n const updateState = useCallback((newValue) => {\r\n const value = {\r\n Flow: newValue.Flow || DEFAULT_EVENT_VALUE,\r\n SubFlow: newValue.SubFlow || DEFAULT_EVENT_VALUE,\r\n Page: newValue.Page || DEFAULT_EVENT_VALUE,\r\n };\r\n setState((prev) => {\r\n if (!_.isEqual(prev, value)) {\r\n cache.current = prev;\r\n return value;\r\n }\r\n return prev;\r\n });\r\n }, []);\r\n\r\n return [state, updateState, cache.current];\r\n}\r\n\r\nexport function StepFlowProvider({ children, shouldPost, postEventLog }) {\r\n const serverContext = useContext(ServerContext);\r\n const instrumentation = useContext(InstrumentationContext);\r\n\r\n const activity = useMemo(() => {\r\n if (instrumentation && instrumentation.stepFlowScenario) {\r\n const scenario = instrumentation.stepFlowScenario.create();\r\n return scenario.stepFlow.create();\r\n }\r\n return { trace: _.noop, error: _.noop };\r\n }, [instrumentation]);\r\n\r\n const triggerPostEventLog = postEventLog(serverContext, activity.trace);\r\n const shouldPostLog = shouldPost && _.isFunction(activity.trace) && _.isFunction(triggerPostEventLog);\r\n\r\n const [{\r\n Flow,\r\n SubFlow,\r\n Page,\r\n }, setContext, prevContext] = useStateWithPrevious({\r\n Flow: DEFAULT_EVENT_VALUE,\r\n SubFlow: DEFAULT_EVENT_VALUE,\r\n Page: DEFAULT_EVENT_VALUE,\r\n });\r\n\r\n const eventValues = useRef({});\r\n const postEventLogRef = useRef({});\r\n postEventLogRef.current = {\r\n postEvent: (EventName, EventValue) => triggerPostEventLog({\r\n EventName: `${WIZARD_EVENT_PREFIX}${EventName}`,\r\n EventValue,\r\n }),\r\n logValidationError: (error) => {\r\n const message = `WizardStepFlow validation error: ${error}`;\r\n activity.trace(message);\r\n },\r\n };\r\n\r\n useOnceEffect(() => {\r\n if (shouldPostLog) {\r\n postEventLogRef.current.postEvent(WIZARD_STEP_EVENT.APP_LOAD, {\r\n ...eventValues.current,\r\n });\r\n return true;\r\n }\r\n return false;\r\n });\r\n\r\n useOnceEffect(() => {\r\n if (shouldPostLog && Flow !== DEFAULT_EVENT_VALUE) {\r\n postEventLogRef.current.postEvent(WIZARD_STEP_EVENT.START_FLOW, {\r\n ...eventValues.current,\r\n Flow,\r\n });\r\n return true;\r\n }\r\n return false;\r\n });\r\n\r\n const logComplete = useCallback(() => {\r\n postEventLogRef.current.postEvent(WIZARD_STEP_EVENT.COMPLETE, {\r\n ...eventValues.current,\r\n Flow,\r\n SubFlow,\r\n Page,\r\n Complete: true,\r\n });\r\n }, [Flow, SubFlow, Page]);\r\n\r\n\r\n useEffect(() => {\r\n if (!shouldPost || Flow === DEFAULT_EVENT_VALUE) {\r\n return;\r\n }\r\n\r\n if (\r\n (prevContext.Flow !== Flow || prevContext.SubFlow !== SubFlow || prevContext.Page !== Page) &&\r\n Page !== DEFAULT_EVENT_VALUE\r\n ) {\r\n postEventLogRef.current.postEvent(WIZARD_STEP_EVENT.ENTER_PAGE, {\r\n ...eventValues.current,\r\n Flow,\r\n SubFlow,\r\n Page,\r\n });\r\n }\r\n\r\n if (prevContext.Flow !== Flow && prevContext.Flow !== DEFAULT_EVENT_VALUE) {\r\n if (prevContext.Page === Page) {\r\n postEventLogRef.current.logValidationError('page should have been modified when flow changed');\r\n }\r\n\r\n postEventLogRef.current.postEvent(WIZARD_STEP_EVENT.SWITCH_FLOW, {\r\n CID: eventValues.current.CID,\r\n AID: eventValues.current.AID,\r\n FromFlow: prevContext.Flow,\r\n ToFlow: Flow,\r\n FromPage: prevContext.Page || null,\r\n ToPage: Page || null,\r\n });\r\n }\r\n }, [Flow, Page, SubFlow, prevContext.Flow, prevContext.Page, prevContext.SubFlow, shouldPost]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nStepFlowProvider.propTypes = {\r\n shouldPost: PropTypes.bool,\r\n postEventLog: PropTypes.func.isRequired,\r\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)]).isRequired,\r\n serverContext: PropTypes.shape({}),\r\n};\r\n\r\nStepFlowProvider.defaultProps = {\r\n shouldPost: true,\r\n serverContext: undefined,\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport { useLogEnteredPage } from './step-flow-provider-with-context';\r\n\r\nexport const BasicStepLogger = ({\r\n flow, subflow, Page,\r\n}) => {\r\n useLogEnteredPage({ Flow: flow, SubFlow: subflow, Page: Page || 'unknown step' });\r\n return null;\r\n};\r\n\r\nBasicStepLogger.propTypes = {\r\n flow: PropTypes.string.isRequired,\r\n Page: PropTypes.string.isRequired,\r\n subflow: PropTypes.string,\r\n};\r\nBasicStepLogger.defaultProps = {\r\n subflow: '',\r\n};\r\n","import _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { useContext, useMemo } from 'react';\r\nimport { useWizardService, getCurrentStepId } from '@bingads-webui-react/wizard-core';\r\nimport { InstrumentationContext } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { useLogEnteredPage } from './step-flow-provider-with-context';\r\n\r\nexport const StepLogger = ({\r\n flow, subflow, stepToPage,\r\n}) => {\r\n const { state } = useWizardService();\r\n const currentStepId = getCurrentStepId(state);\r\n const instrumentation = useContext(InstrumentationContext);\r\n const activity = useMemo(() => {\r\n if (instrumentation && instrumentation.stepFlowScenario) {\r\n const scenario = instrumentation.stepFlowScenario.create();\r\n return scenario.stepFlow.create();\r\n }\r\n return { trace: _.noop, error: _.noop };\r\n }, [instrumentation]);\r\n\r\n if (!stepToPage[currentStepId]) {\r\n activity.error(`Cannot find the step name from stepToPage: ${currentStepId}`);\r\n }\r\n\r\n useLogEnteredPage({ Flow: flow, SubFlow: subflow, Page: stepToPage[currentStepId] || 'unknown step' });\r\n\r\n return null;\r\n};\r\n\r\nStepLogger.propTypes = {\r\n flow: PropTypes.string.isRequired,\r\n stepToPage: PropTypes.shape({}).isRequired,\r\n subflow: PropTypes.string.isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { StepFlowProvider } from './step-flow-provider-with-context';\r\nimport { StepLogger } from './step-logger';\r\n\r\nexport const WizardStepLogger = ({\r\n children,\r\n writeLog,\r\n shouldPost,\r\n flow,\r\n subflow,\r\n stepToPage,\r\n}) => (\r\n writeLog}\r\n shouldPost={shouldPost}\r\n >\r\n {children}\r\n \r\n \r\n);\r\n\r\nWizardStepLogger.propTypes = {\r\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)]).isRequired,\r\n writeLog: PropTypes.func.isRequired,\r\n shouldPost: PropTypes.bool,\r\n flow: PropTypes.string.isRequired,\r\n subflow: PropTypes.string.isRequired,\r\n stepToPage: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nWizardStepLogger.defaultProps = {\r\n shouldPost: true,\r\n};\r\n","import _ from 'underscore';\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useFormService, FORM_STATES } from '@bingads-webui-react/form-core';\r\nimport { useWizardService } from '@bingads-webui-react/wizard-core';\r\nimport { SINGLE_STEP_EVENT, USER_TRIGGER_STEP_EVENT, USER_TRIGGER_STEP_EVENT_KEYS } from './constants';\r\n\r\nconst matchStepSubState = (wizardState, stepSubState) => {\r\n const stateArr = wizardState.toStrings();\r\n const fullState = stateArr[stateArr.length - 1];\r\n return fullState.includes(stepSubState);\r\n};\r\n\r\n/**\r\n * This component logs the single step, which needs to be put under the FormService.\r\n * @param {writeLog} write log function, e.g., API call or aria logging\r\n * @returns {void}\r\n */\r\nexport const SingleStepLogger = ({ writeLog }) => {\r\n const [startTime, setStartTime] = useState(Date.now());\r\n const { state } = useFormService();\r\n const isLoading = state.matches(FORM_STATES.LOADING);\r\n const isSaveSucceeded = state.matches(FORM_STATES.SAVING_SUCCEEDED);\r\n const isSaveFailed = state.matches(FORM_STATES.SAVING_FAILED);\r\n\r\n const { state: wizardState } = useWizardService();\r\n const [trigger, setTrigger] = useState(null);\r\n\r\n useEffect(() => {\r\n if (_.some(USER_TRIGGER_STEP_EVENT_KEYS, key => matchStepSubState(wizardState, key))) {\r\n const triggerKey = _.find(USER_TRIGGER_STEP_EVENT_KEYS, key => matchStepSubState(wizardState, key));\r\n setTrigger(USER_TRIGGER_STEP_EVENT[triggerKey]);\r\n }\r\n }, [wizardState]);\r\n\r\n const triggerWriteLog = useCallback((EventName, EventValue) => {\r\n writeLog({\r\n EventName,\r\n EventValue,\r\n });\r\n }, [writeLog]);\r\n\r\n useEffect(() => {\r\n if (isLoading) {\r\n setStartTime(Date.now());\r\n triggerWriteLog(SINGLE_STEP_EVENT.LOADING);\r\n }\r\n }, [isLoading, triggerWriteLog]);\r\n\r\n useEffect(() => {\r\n if (isSaveSucceeded) {\r\n const duration = Date.now() - startTime;\r\n triggerWriteLog(SINGLE_STEP_EVENT.SAVING_SUCCEEDED, {\r\n duration,\r\n trigger,\r\n });\r\n }\r\n }, [trigger, isSaveSucceeded, startTime, triggerWriteLog]);\r\n\r\n useEffect(() => {\r\n if (isSaveFailed) {\r\n triggerWriteLog(SINGLE_STEP_EVENT.SAVING_FAILED, {\r\n trigger,\r\n });\r\n }\r\n }, [trigger, isSaveFailed, triggerWriteLog, writeLog]);\r\n\r\n return null;\r\n};\r\n\r\nSingleStepLogger.propTypes = {\r\n writeLog: PropTypes.func.isRequired,\r\n};\r\n","export const WizardEvents = {\r\n STEP_LOADING: 'STEP_LOADING',\r\n STEP_SAVING: 'STEP_SAVING',\r\n STEP_DONE_LOADING: 'STEP_DONE_LOADING',\r\n STEP_DONE_SAVING: 'STEP_DONE_SAVING',\r\n STEP_DONE_CANCELING: 'STEP_DONE_CANCELING',\r\n STEP_FAILED_LOADING: 'STEP_FAILED_LOADING',\r\n STEP_ABORTED_SAVING: 'STEP_ABORTED_SAVING',\r\n STEP_ABORTED_CANCELING: 'STEP_ABORTED_CANCELING',\r\n STEP_STOPPED: 'STEP_STOPPED',\r\n\r\n\r\n NAVIGATE_BACK: 'NAVIGATE_BACK',\r\n NAVIGATE_NEXT: 'NAVIGATE_NEXT',\r\n CANCEL: 'CANCEL',\r\n EXIT: 'EXIT',\r\n};\r\n","export const StepEvents = {\r\n SAVE: 'SAVE',\r\n DONE_SAVING: 'DONE_SAVING',\r\n FAILED_SAVING: 'DAILED_SAVING',\r\n DONE_LOADING: 'DONE_LOADING',\r\n FAILED_LOADING: 'FAILED_LOADING',\r\n CANCEL: 'CANCEL',\r\n ACTIVATE: 'ACTIVATE',\r\n DEACTIVATE: 'DEACTIVATE',\r\n UPDATE_VALIDATION: 'UPDATE_VALIDATION',\r\n STOP: 'STOP',\r\n DONE_STOPPING: 'DONE_STOPPING',\r\n\r\n OVERRIDE_ACTIONS: 'OVERRIDE_ACTIONS',\r\n OVERRIDE_GUARDS: 'OVERRIDE_GUARDS',\r\n};\r\n","import { noop } from 'underscore';\r\n\r\nconst isDebugLoggingEnabled = true;\r\n\r\nconst jsonArgsSerializer = (...args) => args.map(JSON.stringify);\r\nconst identityArgsSerializer = (...args) => args;\r\n\r\nconst logF = argsSerializer => (isDebugLoggingEnabled ?\r\n (msg, ...args) => {\r\n // eslint-disable-next-line\r\n console.log(`[DWD] ${msg}`, ...(argsSerializer(...args)));\r\n } :\r\n noop\r\n);\r\n\r\nexport const log = logF(identityArgsSerializer);\r\nexport const logJson = logF(jsonArgsSerializer);\r\n\r\nexport const logWrapper = (tag, func, toJson) => {\r\n const logg = toJson ? logJson : log;\r\n\r\n return (...args) => {\r\n logg(`${tag}.ENTER: args=_`, ...args);\r\n let ret;\r\n try {\r\n ret = func(...args);\r\n return ret;\r\n } finally {\r\n // logg(`${tag}.EXIT: ret=_`, ret);\r\n }\r\n };\r\n};\r\n\r\nexport const logAction = (msg, ...args) =>\r\n (context, event) =>\r\n log(`${(context && context.id) || 'UNKNOWN'}: ${msg}`, ...args, context, event);\r\n\r\nexport const stateLoggingListener = (state) => {\r\n // subscribes to state changes\r\n log(`${state && state.machine && state.machine.id}: state=_`, state);\r\n};\r\n","import { isFunction, isNumber, noop } from 'underscore';\r\nimport { createMachine, assign, spawn, send } from 'xstate';\r\nimport { logAction } from './debug';\r\nimport { StepEvents } from './step-events';\r\nimport { WizardEvents } from './wizard-events';\r\n\r\nconst WizardStates = {\r\n INIT: 'INIT',\r\n STEP_ACTIVE: 'STEP_ACTIVE',\r\n STEP_LOADING: 'STEP_LOADING',\r\n STEP_SAVING: 'STEP_SAVING',\r\n STEP_FAILED: 'STEP_FAILED',\r\n STEP_CANCELING: 'STEP_CANCELING',\r\n DONE: 'DONE',\r\n FIN: 'FIN',\r\n};\r\n\r\n// Public state selectors\r\nexport const stepListSelector = state => state.context.stepList;\r\nexport const stepIndexSelector = state => state.context.stepIndex;\r\nexport const stepServicesCacheSelector = state => state.context.stepServicesCache;\r\nexport const isBusySelector = state => state.matches(WizardStates.STEP_LOADING) || state.matches(WizardStates.STEP_SAVING) || state.matches(WizardStates.STEP_CANCELING) || state.matches(WizardStates.DONE) || state.matches(WizardStates.FIN);\r\nexport const wasSavingSelector = state => state.matches(WizardStates.STEP_SAVING);\r\nexport const wasWaitingForConfirmationSelector = state => state.matches(WizardStates.STEP_CANCELING);\r\nexport const wasStoppingSelector = state => state.matches(WizardStates.DONE) || state.matches(WizardStates.FIN);\r\n\r\n\r\n// Derived state accessors\r\nconst getStepInfo = context => context.stepList[context.stepIndex];\r\nconst getStepServiceRef = context => context.stepServicesCache[getStepInfo(context).id];\r\n\r\n// Guards\r\nconst doesServiceNeedActivation = context => context.stepServiceNeedsActivation;\r\nconst isNotNavigating = context => !isNumber(context.navigatingTo) && !context.isExiting;\r\nconst isExiting = context => context.isExiting || (isNumber(context.navigatingTo) && context.navigatingTo >= context.stepList.length);\r\nconst isFirstStep = context => context.stepIndex - 1 < 0;\r\nconst canNavigateBackWithoutSaving = context => getStepInfo(context).canNavigateBackWithoutSaving;\r\n\r\n// Actions\r\nconst acquireStepService = assign((context) => {\r\n const stepInfo = getStepInfo(context);\r\n let stepService = getStepServiceRef(context);\r\n if (stepService) {\r\n return {\r\n ...context,\r\n stepService,\r\n stepServiceNeedsActivation: true,\r\n };\r\n }\r\n\r\n const extendedStepMachine = stepInfo\r\n .StepMachine(stepInfo.StepMachineOptions(stepInfo, context.stepsData));\r\n stepService = spawn(extendedStepMachine);\r\n\r\n return {\r\n ...context,\r\n stepServicesCache: {\r\n ...context.stepServicesCache,\r\n [stepInfo.id]: stepService,\r\n },\r\n stepService,\r\n stepServiceNeedsActivation: false,\r\n };\r\n});\r\n\r\nconst stopStep = send(StepEvents.STOP, { to: getStepServiceRef });\r\n\r\nconst activateStep = send(\r\n context => ({\r\n type: StepEvents.ACTIVATE,\r\n stepsData: context.stepsData,\r\n }),\r\n { to: getStepServiceRef }\r\n);\r\nconst deactivateStep = send(StepEvents.DEACTIVATE, { to: getStepServiceRef });\r\nconst notifyStepToSave = send(StepEvents.SAVE, { to: getStepServiceRef });\r\nconst notifyStepToCancel = send(StepEvents.CANCEL, { to: getStepServiceRef });\r\nconst setNavigatingForward = assign({\r\n navigatingTo: context => context.stepIndex + 1,\r\n});\r\nconst setNavigatingBack = assign({\r\n navigatingTo: context => context.stepIndex - 1,\r\n});\r\nconst setExiting = assign({\r\n isExiting: () => true,\r\n});\r\nconst applyNavigation = assign({\r\n stepIndex: context => context.navigatingTo,\r\n navigatingTo: () => null,\r\n});\r\nconst resetNavigation = assign({\r\n navigatingTo: () => null,\r\n isExiting: () => false,\r\n});\r\nconst notifyDone = (context) => {\r\n if (isFunction(context.onDone)) {\r\n context.onDone(context.stepsData);\r\n }\r\n};\r\nconst patchStepsData = assign({\r\n stepsData: (context, event) => ({\r\n ...context.stepsData,\r\n ...event.stepsData,\r\n }),\r\n});\r\n\r\nconst defaultActions = {\r\n acquireStepService,\r\n stopStep,\r\n activateStep,\r\n deactivateStep,\r\n notifyStepToSave,\r\n notifyStepToCancel,\r\n setNavigatingForward,\r\n setNavigatingBack,\r\n setExiting,\r\n applyNavigation,\r\n resetNavigation,\r\n notifyDone,\r\n patchStepsData,\r\n};\r\n\r\nconst defaultServices = {\r\n};\r\n\r\nconst defaultGuards = {\r\n isFirstStep,\r\n isNotNavigating,\r\n isExiting,\r\n doesServiceNeedActivation,\r\n canNavigateBackWithoutSaving,\r\n};\r\n\r\nconst getStartingState = (machineId, wizardOptions) => {\r\n const {\r\n stepList, stepsData, onDone = noop,\r\n } = wizardOptions;\r\n const stepIndex = 0;\r\n return {\r\n id: machineId,\r\n stepList,\r\n stepIndex,\r\n stepServicesCache: {},\r\n\r\n stepsData,\r\n\r\n navigatingTo: null, // pending navigation direction\r\n isExiting: false, // pending exit\r\n\r\n onDone,\r\n };\r\n};\r\n\r\n/**\r\n * Creates a new instance of the wizard state machine.\r\n * The xstate-based wizard state machine must be created only once per the lifetime of the hosting React component.\r\n * If props' changes need to be reflected in the state machine, the state machine must provide\r\n * event-based API to communicate such changes.\r\n * @param {object} options - wizard options\r\n * @returns {object} xstate machine\r\n */\r\nexport const wizardStateMachine = ({\r\n machineId = 'WizardStateMachine',\r\n wizardOptions,\r\n actions = defaultActions,\r\n services = defaultServices,\r\n guards = defaultGuards,\r\n} = {}) => createMachine({\r\n preserveActionOrder: true,\r\n predictableActionArguments: true,\r\n strict: true,\r\n\r\n id: machineId,\r\n context: getStartingState(machineId, wizardOptions),\r\n initial: WizardStates.INIT,\r\n states: {\r\n [WizardStates.INIT]: {\r\n entry: ['acquireStepService'],\r\n always: [\r\n {\r\n target: WizardStates.STEP_ACTIVE,\r\n cond: 'doesServiceNeedActivation',\r\n actions: 'activateStep',\r\n },\r\n {\r\n target: WizardStates.STEP_ACTIVE,\r\n },\r\n ],\r\n },\r\n [WizardStates.STEP_ACTIVE]: {\r\n on: {\r\n [WizardEvents.STEP_LOADING]: [WizardStates.STEP_LOADING],\r\n [WizardEvents.CANCEL]: [\r\n {\r\n target: WizardStates.STEP_CANCELING,\r\n actions: ['setExiting', 'notifyStepToCancel'],\r\n },\r\n ],\r\n [WizardEvents.EXIT]: [\r\n {\r\n target: WizardStates.STEP_SAVING,\r\n actions: ['setExiting', 'notifyStepToSave'],\r\n },\r\n ],\r\n [WizardEvents.NAVIGATE_NEXT]: [\r\n {\r\n target: WizardStates.STEP_SAVING,\r\n actions: ['setNavigatingForward', 'notifyStepToSave'],\r\n },\r\n ],\r\n [WizardEvents.NAVIGATE_BACK]: [\r\n {\r\n // Gracefully handling of navigating back at 1st step\r\n cond: 'isFirstStep',\r\n },\r\n {\r\n target: WizardStates.INIT,\r\n cond: 'canNavigateBackWithoutSaving',\r\n actions: ['deactivateStep', 'setNavigatingBack', 'applyNavigation'],\r\n },\r\n {\r\n target: WizardStates.STEP_SAVING,\r\n actions: ['setNavigatingBack', 'notifyStepToSave'],\r\n },\r\n ],\r\n },\r\n },\r\n [WizardStates.STEP_LOADING]: {\r\n on: {\r\n [WizardEvents.STEP_DONE_LOADING]: [\r\n {\r\n target: WizardStates.STEP_ACTIVE,\r\n },\r\n ],\r\n [WizardEvents.STEP_FAILED_LOADING]: [\r\n {\r\n target: WizardStates.STEP_FAILED,\r\n },\r\n ],\r\n },\r\n },\r\n [WizardStates.STEP_SAVING]: {\r\n on: {\r\n [WizardEvents.STEP_DONE_SAVING]: [\r\n // Save and stay on the same step\r\n {\r\n target: WizardStates.STEP_ACTIVE,\r\n cond: 'isNotNavigating',\r\n actions: [logAction('STEP_SAVING: STEP_DONE_SAVING -> STEP_ACTIVE'), 'patchStepsData'],\r\n },\r\n // Save and exit\r\n {\r\n target: WizardStates.DONE,\r\n cond: 'isExiting',\r\n actions: [logAction('STEP_SAVING: STEP_DONE_SAVING -> done'), 'patchStepsData'],\r\n },\r\n // Save and navigate\r\n {\r\n target: WizardStates.INIT,\r\n actions: [logAction('STEP_SAVING: STEP_DONE_SAVING -> INIT'), 'patchStepsData', 'deactivateStep', 'applyNavigation'],\r\n },\r\n ],\r\n [WizardEvents.STEP_ABORTED_SAVING]: [\r\n {\r\n target: WizardStates.STEP_ACTIVE,\r\n actions: [logAction('STEP_SAVING: STEP_ABORTED_SAVING -> STEP_ACTIVE'), 'resetNavigation'],\r\n },\r\n ],\r\n },\r\n },\r\n [WizardStates.STEP_CANCELING]: {\r\n on: {\r\n [WizardEvents.STEP_SAVING]: [WizardStates.STEP_SAVING],\r\n [WizardEvents.STEP_ABORTED_CANCELING]: [\r\n {\r\n target: WizardStates.STEP_ACTIVE,\r\n actions: ['resetNavigation'],\r\n },\r\n ],\r\n [WizardEvents.STEP_DONE_CANCELING]: [WizardStates.DONE],\r\n },\r\n },\r\n [WizardStates.STEP_FAILED]: {},\r\n\r\n [WizardStates.DONE]: {\r\n entry: ['stopStep'],\r\n on: {\r\n [WizardEvents.STEP_STOPPED]: [\r\n { target: WizardStates.FIN, actions: [logAction('DONE: STEP_STOPPED -> FIN')] },\r\n ],\r\n },\r\n },\r\n\r\n [WizardStates.FIN]: { entry: [logAction('calling notifyDone'), 'notifyDone'] },\r\n },\r\n}, {\r\n actions: {\r\n ...defaultActions,\r\n ...actions,\r\n },\r\n services: {\r\n ...defaultServices,\r\n ...services,\r\n },\r\n guards: {\r\n ...defaultGuards,\r\n ...guards,\r\n },\r\n});\r\n","import { isFunction, delay } from 'underscore';\r\nimport { createMachine, assign, sendParent } from 'xstate';\r\nimport { StepEvents } from './step-events';\r\nimport { WizardEvents } from './wizard-events';\r\n\r\nconst StepStates = {\r\n INIT: 'INIT',\r\n FAILED_INIT: 'FAILED_INIT',\r\n LOADING: 'LOADING',\r\n SAVING: 'SAVING',\r\n CANCELING: 'CANCELING',\r\n VALIDATING: 'VALIDATING',\r\n VALID: 'VALID',\r\n INVALID: 'INVALID',\r\n INACTIVE: 'INACTIVE',\r\n STOPPING: 'STOPPING',\r\n FIN: 'FIN',\r\n};\r\n\r\n// Public state selectors\r\nexport const isCanceling = state => state.matches(StepStates.CANCELING);\r\nexport const isStopping = state => state.matches(StepStates.STOPPING);\r\nexport const isFin = state => state.matches(StepStates.FIN);\r\nexport const isFailedInit = state => state.matches(StepStates.FAILED_INIT);\r\nexport const isActive = state => state.matches(StepStates.VALID) || state.matches(StepStates.INVALID);\r\nexport const isLoading = state => state.matches(StepStates.LOADING);\r\nexport const isSaving = state => state.matches(StepStates.SAVING);\r\n\r\nexport const contextSelector = state => state.context;\r\n\r\nconst defaultInitialContext = {\r\n stepsData: {},\r\n actionsOverride: {},\r\n guardsOverride: {},\r\n data: {\r\n data: {},\r\n isValid: true,\r\n isDirty: false,\r\n },\r\n invalidSaveAttempt: 0,\r\n};\r\n\r\n// Derived state accessors\r\nconst needsLoading = () => false;\r\nconst hasIncomingSystemError = () => false;\r\nconst isValid = context => context.data.isValid;\r\nconst isDirty = context => context.data.isDirty;\r\nconst needsSaving = isDirty;\r\nconst needsStopping = (context) => {\r\n if (isFunction(context.guardsOverride.needsStopping)) {\r\n return context.guardsOverride.needsStopping(context);\r\n }\r\n return false;\r\n};\r\n// State \"assigners\"\r\nconst replaceData = assign({\r\n data: (_, event) => event.data,\r\n});\r\nconst patchStepsData = assign({\r\n stepsData: (context, event) => ({\r\n ...context.stepsData,\r\n ...event.stepsData,\r\n }),\r\n});\r\nconst replaceStepsData = assign({\r\n stepsData: (_, event) => event.stepsData,\r\n});\r\nconst patchData = assign({\r\n data: (context, event) => ({\r\n ...context.data,\r\n ...event.data,\r\n }),\r\n});\r\nconst clearErrors = () => { };\r\nconst onInvalidSaveAttempt = assign({\r\n // eslint-disable-next-line no-bitwise\r\n invalidSaveAttempt: context => (context.invalidSaveAttempt | 0) + 1,\r\n});\r\nconst overrideActions = assign({\r\n actionsOverride: (context, event) => ({\r\n ...context.actionsOverride,\r\n ...event.data,\r\n }),\r\n});\r\nconst overrideGuards = assign({\r\n guardsOverride: (context, event) => ({\r\n ...context.guardsOverride,\r\n ...event.data,\r\n }),\r\n});\r\n\r\nconst notifyLoading = sendParent(WizardEvents.STEP_LOADING);\r\nconst notifyDoneLoading = sendParent(WizardEvents.STEP_DONE_LOADING);\r\n// non-recoverable step failure\r\nconst notifyFailedLoading = sendParent(WizardEvents.STEP_FAILED_LOADING);\r\n\r\nconst notifySaving = sendParent(WizardEvents.STEP_SAVING);\r\nconst notifyDoneSaving = sendParent((context/* , event */) => ({\r\n type: WizardEvents.STEP_DONE_SAVING,\r\n stepsData: context.stepsData,\r\n}));\r\nconst notifyDoneCanceling = sendParent({ type: WizardEvents.STEP_DONE_CANCELING });\r\nconst notifyAbortedSaving = sendParent(WizardEvents.STEP_ABORTED_SAVING);\r\nconst notifyAbortedCanceling = sendParent(WizardEvents.STEP_ABORTED_CANCELING);\r\nconst notifyStopped = sendParent({ type: WizardEvents.STEP_STOPPED });\r\nconst requestConfirmation = context => new Promise((resolve, reject) => {\r\n delay(() => {\r\n const response = { aborted: false };\r\n if (isFunction(context.actionsOverride.confirmCancel)) {\r\n if (!context.actionsOverride.confirmCancel()) {\r\n response.aborted = true;\r\n }\r\n }\r\n if (response.aborted) {\r\n reject();\r\n } else {\r\n resolve();\r\n }\r\n }, 200);\r\n});\r\n\r\n\r\nconst defaultActions = {\r\n notifyLoading,\r\n notifySaving,\r\n notifyAbortedSaving,\r\n notifyAbortedCanceling,\r\n notifyFailedLoading,\r\n notifyDoneLoading,\r\n notifyDoneSaving,\r\n notifyDoneCanceling,\r\n notifyStopped,\r\n\r\n replaceData,\r\n patchData,\r\n replaceStepsData,\r\n patchStepsData,\r\n\r\n clearErrors,\r\n onInvalidSaveAttempt,\r\n\r\n overrideActions,\r\n overrideGuards,\r\n};\r\n\r\nconst defaultServices = {\r\n requestConfirmation,\r\n};\r\n\r\nconst defaultGuards = {\r\n needsLoading,\r\n isValid,\r\n needsSaving,\r\n needsStopping,\r\n};\r\n\r\n\r\nexport const stepStateMachine = ({\r\n machineId = 'StepStateMachine',\r\n initialContext = defaultInitialContext,\r\n actions = defaultActions,\r\n services = defaultServices,\r\n guards = defaultGuards,\r\n} = {}) => createMachine({\r\n preserveActionOrder: true,\r\n predictableActionArguments: true,\r\n strict: true,\r\n\r\n id: machineId,\r\n context: {\r\n ...defaultInitialContext,\r\n ...initialContext,\r\n },\r\n initial: StepStates.INIT,\r\n on: {\r\n [StepEvents.OVERRIDE_ACTIONS]: [\r\n { actions: 'overrideActions' },\r\n ],\r\n [StepEvents.OVERRIDE_GUARDS]: [\r\n { actions: 'overrideGuards' },\r\n ],\r\n [StepEvents.STOP]: [\r\n { target: StepStates.STOPPING, cond: 'needsStopping' },\r\n StepStates.FIN,\r\n ],\r\n },\r\n states: {\r\n [StepStates.INIT]: {\r\n always: [\r\n { target: StepStates.LOADING, cond: 'needsLoading' },\r\n { target: StepStates.VALIDATING },\r\n ],\r\n },\r\n [StepStates.LOADING]: {\r\n entry: ['notifyLoading'],\r\n on: {\r\n [StepEvents.DONE_LOADING]: {\r\n target: StepStates.VALIDATING,\r\n actions: [\r\n 'replaceData',\r\n 'patchStepsData',\r\n 'notifyDoneLoading',\r\n ],\r\n },\r\n [StepEvents.FAILED_LOADING]: [\r\n {\r\n target: StepStates.FAILED_INIT,\r\n cond: hasIncomingSystemError,\r\n actions: [\r\n 'replaceData',\r\n 'patchStepsData',\r\n 'notifyFailedLoading',\r\n ],\r\n },\r\n {\r\n target: StepStates.VALIDATING,\r\n actions: [\r\n 'replaceData',\r\n 'patchStepsData',\r\n 'notifyDoneLoading',\r\n ],\r\n },\r\n ],\r\n },\r\n },\r\n [StepStates.FAILED_INIT]: {},\r\n [StepStates.SAVING]: {\r\n entry: ['clearErrors', 'notifySaving'],\r\n on: {\r\n [StepEvents.DONE_SAVING]: {\r\n target: StepStates.VALIDATING,\r\n actions: [\r\n 'replaceData',\r\n 'patchStepsData',\r\n 'notifyDoneSaving',\r\n ],\r\n },\r\n [StepEvents.FAILED_SAVING]: {\r\n target: StepStates.VALIDATING,\r\n actions: [\r\n 'replaceData',\r\n 'patchStepsData',\r\n 'onInvalidSaveAttempt',\r\n 'notifyAbortedSaving',\r\n ],\r\n },\r\n },\r\n },\r\n [StepStates.CANCELING]: {\r\n invoke: {\r\n id: 'requestConfirmationCallback',\r\n src: 'requestConfirmation',\r\n onDone: {\r\n target: StepStates.VALIDATING,\r\n actions: ['notifyDoneCanceling'],\r\n },\r\n onError: {\r\n target: StepStates.VALIDATING,\r\n actions: ['notifyAbortedCanceling'],\r\n },\r\n },\r\n },\r\n [StepStates.STOPPING]: {\r\n on: {\r\n [StepEvents.DONE_STOPPING]: [StepStates.FIN],\r\n },\r\n },\r\n [StepStates.VALIDATING]: {\r\n always: [\r\n { target: StepStates.VALID, cond: 'isValid' },\r\n { target: StepStates.INVALID },\r\n ],\r\n },\r\n [StepStates.VALID]: {\r\n on: {\r\n [StepEvents.UPDATE_VALIDATION]: [\r\n {\r\n target: StepStates.VALIDATING,\r\n actions: ['patchData'],\r\n },\r\n ],\r\n [StepEvents.CANCEL]: [\r\n { target: StepStates.CANCELING, cond: 'needsSaving' },\r\n { actions: ['notifyDoneCanceling'] },\r\n ],\r\n [StepEvents.SAVE]: [\r\n { target: StepStates.SAVING, cond: 'needsSaving' },\r\n { actions: ['notifyDoneSaving'] },\r\n ],\r\n [StepEvents.DEACTIVATE]: StepStates.INACTIVE,\r\n },\r\n },\r\n [StepStates.INVALID]: {\r\n on: {\r\n [StepEvents.UPDATE_VALIDATION]: [\r\n {\r\n target: StepStates.VALIDATING,\r\n actions: ['patchData'],\r\n },\r\n ],\r\n [StepEvents.CANCEL]: [\r\n { target: StepStates.CANCELING, cond: 'needsSaving' },\r\n { actions: ['notifyDoneCanceling'] },\r\n ],\r\n [StepEvents.SAVE]: {\r\n actions: ['onInvalidSaveAttempt', 'notifyAbortedSaving'],\r\n },\r\n [StepEvents.DEACTIVATE]: StepStates.INACTIVE,\r\n },\r\n },\r\n [StepStates.INACTIVE]: {\r\n on: {\r\n [StepEvents.ACTIVATE]: [\r\n { target: StepStates.LOADING, cond: 'needsLoading', actions: ['replaceStepsData'] },\r\n { target: StepStates.VALIDATING, actions: ['replaceStepsData'] },\r\n ],\r\n },\r\n },\r\n [StepStates.FIN]: {\r\n entry: ['notifyStopped'],\r\n },\r\n },\r\n}, {\r\n actions: {\r\n ...defaultActions,\r\n ...actions,\r\n },\r\n services: {\r\n ...defaultServices,\r\n ...services,\r\n },\r\n guards: {\r\n ...defaultGuards,\r\n ...guards,\r\n },\r\n});\r\n","import PropTypes from 'prop-types';\r\n\r\nexport const xstateStateMachine = PropTypes.oneOfType([\r\n PropTypes.shape({}),\r\n PropTypes.func,\r\n]);\r\n\r\nexport const stepListProp = PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.string.isRequired,\r\n title: PropTypes.string.isRequired,\r\n StepMachine: xstateStateMachine.isRequired,\r\n StepMachineOptions: PropTypes.func.isRequired,\r\n StepComponent: PropTypes.elementType.isRequired,\r\n}));\r\n","import { mergeStyles, convertToLocalStyle, glyphIconStyle }\r\n from '@bingads-webui-campaign-react/common-styles';\r\n\r\nconst borderWidth = '2px';\r\n\r\nconst formStyle = ({ palette = {} }) => ({\r\n '.error': {\r\n color: '#A80000',\r\n },\r\n\r\n 'input.error, select.error, textarea.error, input.campaign-error-row, select.campaign-error-row, textarea.campaign-error-row': {\r\n border: '1px solid @input-error-border !important',\r\n color: palette.neutralPrimary,\r\n },\r\n});\r\n\r\nexport const getWizardStyles = (components, theme = {}) => ({\r\n '@global': {\r\n ...components.spinnerKeyframe, // FIXME: UINext must load this, or '@bingads-webui-react/ui-blocker' must properly style itself\r\n },\r\n hidden: {\r\n display: 'none',\r\n },\r\n show: {\r\n display: 'flex',\r\n },\r\n uiBlockerAdapter: {\r\n ...mergeStyles(\r\n { theme },\r\n components.reactUIBlockerStyle(theme.palette, 'rgba(255, 255, 255, 0.4)'),\r\n {\r\n '& .react-block-ui-none, & .react-block-ui': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n flexGrow: 1,\r\n overflowY: 'hidden', // to not extend to the content, but shrink to flex-parent\r\n },\r\n },\r\n {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n flexGrow: 1,\r\n overflowY: 'hidden',\r\n }\r\n ),\r\n },\r\n wizardContainer: {\r\n ...mergeStyles(\r\n { theme },\r\n convertToLocalStyle(components.helpbuttonStyle(theme)),\r\n convertToLocalStyle(glyphIconStyle(theme)),\r\n {\r\n display: 'flex',\r\n flexGrow: 1,\r\n overflowY: 'hidden',\r\n }\r\n ),\r\n },\r\n // StepProgressList on left side\r\n wizardListContainer: {\r\n width: '228px',\r\n minWidth: '228px',\r\n borderRight: `1px solid ${theme.palette.neutralQuaternaryAlt}`,\r\n paddingLeft: '32px',\r\n paddingTop: '32px',\r\n paddingBottom: '32px',\r\n overflow: 'hidden auto',\r\n\r\n '& ol': {\r\n margin: 0,\r\n padding: 0,\r\n listStyle: 'none',\r\n },\r\n\r\n // Styles for drawing the vertical line\r\n '& .step-progress-list-item': {\r\n borderLeft: `${borderWidth} solid ${theme.palette.blue}`,\r\n '&.step-progress-list-item-ahead': { borderLeftColor: '#ebebeb' },\r\n },\r\n\r\n '& .step-progress-list-item-title': {\r\n position: 'absolute',\r\n float: 'right',\r\n maxWidth: 165,\r\n },\r\n\r\n // top level list items\r\n '& ol.step-progress-list>.step-progress-list-item': {\r\n paddingTop: 39,\r\n position: 'relative',\r\n\r\n '&:first-child': { borderLeftColor: theme.palette.white, paddingTop: 0 },\r\n\r\n '&>.step-progress-list-item-glyphicon': {\r\n marginLeft: '-8px',\r\n marginRight: '8px',\r\n background: theme.palette.white,\r\n paddingTop: '5px',\r\n paddingBottom: '4px',\r\n },\r\n\r\n '&>.step-progress-list-item-glyphicon.iconba-RadioBullet2': {\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n transform: 'scale(1.52)',\r\n },\r\n },\r\n\r\n // nested list items\r\n '& ol.step-progress-list-item-list>.step-progress-list-item': {\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n paddingTop: '24px',\r\n marginLeft: `-${borderWidth}`,\r\n\r\n '&>.step-progress-list-item-glyphicon': {\r\n marginLeft: '-8px',\r\n marginRight: '12px',\r\n white: theme.palette.white,\r\n paddingBottom: '1px',\r\n },\r\n },\r\n\r\n '& .step-progress-list-item-selected, & .step-progress-list-item-contains-selected': { fontWeight: '600' },\r\n\r\n // glyphicon colors\r\n '& .step-progress-list-item-behind .step-progress-list-item-glyphicon': {\r\n color: theme.palette.blue,\r\n },\r\n '& .step-progress-list-item-selected .step-progress-list-item-glyphicon, & .step-progress-list-item-contains-selected>.step-progress-list-item-glyphicon': {\r\n color: '#c0def6',\r\n },\r\n '& .step-progress-list-item-ahead .step-progress-list-item-glyphicon': {\r\n color: theme.palette.neutralLight,\r\n },\r\n },\r\n wizardMainContainer: {\r\n backgroundColor: theme.palette.neutralLighterAlt,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n flexGrow: 1,\r\n },\r\n wizardStepContainer: {\r\n display: 'flex',\r\n overflowY: 'auto',\r\n },\r\n wizardSingleStepLayoutStepScrollingContainer: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n overflowY: 'auto',\r\n },\r\n wizardSingleStepLayoutCenteredStepContainer: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n },\r\n wizardSingleStepLayoutStepContainer: {\r\n display: 'flex',\r\n },\r\n wizardStep: {\r\n ...mergeStyles(\r\n { theme },\r\n convertToLocalStyle(formStyle(theme)),\r\n {\r\n display: 'flex',\r\n flexBasis: '1px',\r\n flexDirection: 'column',\r\n paddingLeft: 32,\r\n paddingRight: 32,\r\n }\r\n ),\r\n },\r\n wizardFooter: {\r\n marginTop: 'auto', // to expand as flex-item\r\n backgroundColor: theme.palette.white,\r\n },\r\n mobileNavContainer: {\r\n position: 'fixed',\r\n display: 'none',\r\n height: 60,\r\n width: '100%',\r\n background: theme.palette.white,\r\n zIndex: 2,\r\n boxShadow: '0px 3.2px 7.2px rgba(0, 0, 0, 0.132), 0px 0.6px 1.8px rgba(0, 0, 0, 0.108)',\r\n },\r\n});\r\n","import { useEffect, useRef } from 'react';\r\n\r\nexport const useIsMounted = () => {\r\n const isMountedRef = useRef(false);\r\n useEffect(() => {\r\n isMountedRef.current = true;\r\n return () => {\r\n isMountedRef.current = false;\r\n };\r\n }, []);\r\n\r\n return isMountedRef;\r\n};\r\n","import { useEffect, useRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useSelector } from '@xstate/react';\r\nimport { createAsyncToken } from '@bingads-webui-universal/primitive-utilities';\r\nimport {\r\n isLoading as isLoadingSelector,\r\n isSaving as isSavingSelector, contextSelector,\r\n StepEvents,\r\n log,\r\n} from '@bingads-webui-campaign-react/step-wizard-machine';\r\nimport { useIsMounted } from './use-is-mounted';\r\n\r\n/**\r\n * Loads step's data asynchronously. The returned promise must resolve\r\n * into a single object, opaque to the step, which will be saved\r\n * in the context under the `data` property, completely replacing\r\n * the current value.\r\n *\r\n * The function is called when the wizard enters the step.\r\n * The wizard and the step will be blocked until the promise resolves.\r\n *\r\n * If promise is rejected, the step will:\r\n * - transition to `FAILED_INIT` state if `hasIncomingSystemError` returns true;\r\n * - transition through `VALIDATING -> (VALID | INVALID)`.\r\n * @callback loadData\r\n * @param {Object} context - the current context\r\n * @returns {Promise} a promise that must resolve\r\n * into a single object, opaque to the step, which will be saved\r\n * in the context under the `data` property, completely replacing\r\n * the current value.\r\n */\r\n\r\n/**\r\n * Saves step's data asynchronously. The returned promise must resolve\r\n * into a single object, opaque to the step, which will be saved\r\n * in the context under the `data` property, completely replacing\r\n * the current value.\r\n *\r\n * The function is called when the wizard attempts to leave the step.\r\n * The wizard and the step will be blocked until the promise resolves.\r\n *\r\n * If promise is rejected, the step will transition through `VALIDATING -> (VALID | INVALID)`.\r\n * @callback saveData\r\n * @param {Object} context - the current context\r\n * @returns {Promise} a promise that must resolve\r\n * into a single object, opaque to the step, which will be saved\r\n * in the context under the `data` property, completely replacing\r\n * the current value.\r\n */\r\n\r\n\r\n/**\r\n * Default step repository React component.\r\n * @param {Object} props the component's props\r\n * @param {Object} props.stepService an instance of the step's state machine\r\n * @param {loadData} props.loadData a callback which loads data\r\n * @param {saveData} props.saveData a callback which saves data\r\n * @returns {Element} an empty VDOM\r\n */\r\nexport const StepRepository = ({\r\n stepService,\r\n loadData,\r\n saveData,\r\n}) => {\r\n const isMountedRef = useIsMounted();\r\n\r\n const isLoading = useSelector(stepService, isLoadingSelector);\r\n const isSaving = useSelector(stepService, isSavingSelector);\r\n const context = useSelector(stepService, contextSelector);\r\n const contextRef = useRef(context);\r\n contextRef.current = context;\r\n const asyncTokenRef = useRef();\r\n\r\n useEffect(() => {\r\n if (isLoading) {\r\n log('StepRepository loading data with loadData');\r\n if (asyncTokenRef.current) {\r\n asyncTokenRef.current.cancel();\r\n asyncTokenRef.current = null;\r\n }\r\n asyncTokenRef.current = createAsyncToken(loadData(contextRef.current))\r\n .on({\r\n onSuccess: (arg0) => {\r\n if (isMountedRef.current) {\r\n log('StepRepository sending DONE_LOADING');\r\n stepService.send({ type: StepEvents.DONE_LOADING, data: arg0 });\r\n } else {\r\n log('StepRepository ignoring sending DONE_LOADING due to unmount');\r\n }\r\n },\r\n onError: (arg0) => {\r\n if (isMountedRef.current) {\r\n log('StepRepository sending FAILED_LOADING');\r\n stepService.send({ type: StepEvents.FAILED_LOADING, data: arg0 });\r\n } else {\r\n log('StepRepository ignoring sending FAILED_LOADING due to unmount');\r\n }\r\n },\r\n });\r\n } else if (isSaving) {\r\n log('StepRepository saving data with saveData');\r\n if (asyncTokenRef.current) {\r\n asyncTokenRef.current.cancel();\r\n asyncTokenRef.current = null;\r\n }\r\n asyncTokenRef.current = createAsyncToken(saveData(contextRef.current))\r\n .on({\r\n onSuccess: (arg0) => {\r\n if (isMountedRef.current) {\r\n log('StepRepository sending DONE_SAVING');\r\n stepService.send({ type: StepEvents.DONE_SAVING, data: arg0 });\r\n } else {\r\n log('StepRepository ignoring sending DONE_SAVING due to unmount');\r\n }\r\n },\r\n onError: (arg0) => {\r\n if (isMountedRef.current) {\r\n log('StepRepository sending FAILED_SAVING');\r\n stepService.send({ type: StepEvents.FAILED_SAVING, data: arg0 });\r\n } else {\r\n log('StepRepository ignoring sending FAILED_SAVING due to unmount');\r\n }\r\n },\r\n });\r\n }\r\n }, [stepService, loadData, saveData, isLoading, isSaving, isMountedRef]);\r\n\r\n log('StepRepository.render: isLoading=_, isSaving=_', isLoading, isSaving);\r\n\r\n return null;\r\n};\r\n\r\nStepRepository.propTypes = {\r\n stepService: PropTypes.shape({\r\n subscribe: PropTypes.func.isRequired,\r\n send: PropTypes.func,\r\n }).isRequired,\r\n loadData: PropTypes.func.isRequired,\r\n saveData: PropTypes.func.isRequired,\r\n};\r\n","import { isEmpty } from 'underscore';\r\nimport { useCallback, useContext, useMemo, useRef, useEffect } from 'react';\r\nimport { useInterpret, useSelector } from '@xstate/react';\r\nimport { withProps } from '@bingads-webui-react/with-props';\r\nimport { useRefInit } from '@bingads-webui-campaign-react/common-generic-hooks';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { setClarityTag } from '@bingads-webui-universal/clarity';\r\nimport {\r\n wizardStateMachine, WizardEvents,\r\n isBusySelector, stepIndexSelector, stepServicesCacheSelector,\r\n wasSavingSelector, wasWaitingForConfirmationSelector, wasStoppingSelector, stateLoggingListener,\r\n} from '@bingads-webui-campaign-react/step-wizard-machine';\r\nimport { StepRepository } from '../shared/step-repository';\r\n\r\nconst getStepRepository = stepInfo => (!stepInfo.stepRepositoryConfig && !stepInfo.StepRepository ?\r\n undefined :\r\n withProps(\r\n stepInfo.stepRepositoryConfig || {},\r\n stepInfo.StepRepository || StepRepository\r\n ));\r\n\r\nexport const useWizardState = (props) => {\r\n const {\r\n routeToNavigateToWhenDone,\r\n scopeToRemoveWhenDone,\r\n scope,\r\n instrumentation,\r\n permissions,\r\n extraStepsData = {},\r\n wizardScenario: {\r\n scenarioName, isCenteredLayout, isEditing, stepList, withContentFooter,\r\n },\r\n machineId = 'StepWizard',\r\n } = props;\r\n const { scenario, activity } = useMemo(() => instrumentation.createScenarioAndActivity({\r\n scenarioName, // TODO: consider '...ForRetail' and '...ForSearch\r\n activityName: isEditing ? 'Settings' : 'Creation',\r\n }), [instrumentation, isEditing, scenarioName]);\r\n\r\n useEffect(() => {\r\n setClarityTag({ StepWizardScenario: scenarioName });\r\n }, [scenarioName]);\r\n\r\n const i18n = useContext(I18nContext);\r\n const serverContext = useContext(ServerContext);\r\n\r\n const scopeRef = useRef(scope);\r\n scopeRef.current = scope;\r\n const onDone = useCallback(() => {\r\n if (!isEmpty(scopeToRemoveWhenDone)) {\r\n scopeRef.current.remove(scopeToRemoveWhenDone);\r\n }\r\n scopeRef.current.save(routeToNavigateToWhenDone);\r\n }, [routeToNavigateToWhenDone, scopeToRemoveWhenDone]);\r\n\r\n // The xstate-based wizard state machine must be created only once per the lifetime of the component.\r\n // If props' changes need to be reflected in the state machine, the state machine must provide\r\n // event-based API to communicate such changes.\r\n const wizardMachineRef = useRefInit(() => wizardStateMachine({\r\n machineId,\r\n wizardOptions: {\r\n stepList,\r\n onDone,\r\n stepsData: {\r\n permissions,\r\n isEditing,\r\n scenarioName,\r\n scenario,\r\n activity,\r\n i18n,\r\n serverContext,\r\n scope,\r\n ...scope.values,\r\n ...extraStepsData,\r\n },\r\n },\r\n }));\r\n const wizardMachine = wizardMachineRef.current;\r\n const service = useInterpret(wizardMachine, undefined, stateLoggingListener);\r\n const { send } = service;\r\n\r\n const stepServicesCache = useSelector(service, stepServicesCacheSelector);\r\n const stepListWithServiceInfo = useMemo(() => stepList.map(stepInfo2 => ({\r\n stepInfo: stepInfo2,\r\n stepService: stepServicesCache[stepInfo2.id],\r\n StepRepository: getStepRepository(stepInfo2),\r\n })), [stepList, stepServicesCache]);\r\n\r\n const stepIndex = useSelector(service, stepIndexSelector);\r\n const isBusy = useSelector(service, isBusySelector);\r\n const wasSaving = useSelector(service, wasSavingSelector);\r\n const wasWaitingForConfirmation = useSelector(service, wasWaitingForConfirmationSelector);\r\n const wasStopping = useSelector(service, wasStoppingSelector);\r\n\r\n const stepInfo = useMemo(() => stepList[stepIndex], [stepIndex, stepList]);\r\n\r\n const isReadOnlyUser = useMemo(() => permissions.IsReadOnlyUser || serverContext.CurrentAccount.Status === 32, [permissions.IsReadOnlyUser, serverContext.CurrentAccount.Status]); // 32 is InActive\r\n\r\n const state = {\r\n isReadOnlyUser,\r\n isCenteredLayout,\r\n withContentFooter,\r\n i18n,\r\n scenarioName,\r\n scenario,\r\n activity,\r\n\r\n stepListWithServiceInfo,\r\n stepIndex,\r\n stepInfo,\r\n isBusy,\r\n wasSaving,\r\n wasWaitingForConfirmation,\r\n wasStopping,\r\n };\r\n\r\n\r\n const saveAndNavigateNext = useCallback(() => {\r\n send(WizardEvents.NAVIGATE_NEXT);\r\n }, [send]);\r\n const saveAndNavigateBack = useCallback(() => {\r\n send(WizardEvents.NAVIGATE_BACK);\r\n }, [send]);\r\n const cancelAndExit = useCallback(() => {\r\n send(WizardEvents.CANCEL);\r\n }, [send]);\r\n const saveAndExit = useCallback(() => {\r\n send(WizardEvents.EXIT);\r\n }, [send]);\r\n\r\n useEffect(() => {\r\n window.addEventListener('popstate', cancelAndExit);\r\n\r\n return () => {\r\n window.removeEventListener('popstate', cancelAndExit);\r\n };\r\n }, [cancelAndExit]);\r\n\r\n const api = {\r\n saveAndNavigateNext, saveAndNavigateBack, cancelAndExit, saveAndExit,\r\n };\r\n\r\n return [state, api];\r\n};\r\n","export const getStepProgressItemGlyphicon = (step) => {\r\n // sub steps\r\n if (step.path.indexOf('.') >= 0) {\r\n return 'ba-RadioBullet';\r\n }\r\n\r\n if (step.isSelected || step.containsSelected) {\r\n return 'ba-RadioBullet2'; // current step\r\n } else if (step.isBehind) {\r\n return 'ba-CompletedSolid';\r\n }\r\n\r\n // default\r\n return 'ba-RadioBtnOff';\r\n};\r\n","export const footerStyleOverrides = {\r\n skippingLink: {\r\n marginLeft: 28,\r\n },\r\n cancelButton: {\r\n marginLeft: 12,\r\n },\r\n};\r\n","import { last } from 'underscore';\r\nimport React, { useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { VerticalSeparatedLayout } from '@bingads-webui-react/steps';\r\nimport { StepFooter } from '@bingads-webui-campaign-react/step-wizard-layout';\r\nimport { getStepProgressItemGlyphicon } from '../styles/get-step-progress-item-glyphicon';\r\nimport { footerStyleOverrides } from '../styles/footer-style-overrides';\r\n\r\nconst {\r\n StepsContextProvider,\r\n StepContainer,\r\n StepProgressList,\r\n} = VerticalSeparatedLayout;\r\n\r\n// Navigation buttons scenarios:\r\n// - 1st step:\r\n// - Before campaign is created:\r\n// - Next button: \"Save & go to the next step\"\r\n// - Cancel button: \"Cancel\"\r\n// - After campaign is created:\r\n// - Next button: \"Save & go to the next step\"\r\n// - Exit button: \"Save & exit\"\r\n// - [2nd..last) steps:\r\n// - Next button: \"Save & go to the next step\"\r\n// - Back button: \"Back\"\r\n// - Exit button: \"Save & exit\"\r\n// - last step (with data entry):\r\n// - Next/Exit button: \"Save\"\r\n// - Back button: \"Back\"\r\n// - last step (read-only):\r\n// - Next/Exit button: \"Done\"\r\n// - Back button: \"Back\"\r\n\r\nexport const MultiStepLayout = React.memo(({\r\n children,\r\n wizardState: {\r\n i18n, stepInfo, isBusy, stepIndex, stepListWithServiceInfo,\r\n },\r\n wizardActions: {\r\n saveAndNavigateNext, saveAndNavigateBack, cancelAndExit, saveAndExit,\r\n },\r\n classes,\r\n}) => {\r\n const stepFooter = useMemo(() => {\r\n const beforeLastStepNextButtonText = i18n.getString(_TL_('Save & go to next step'));\r\n const saveAndExitButtonText = i18n.getString(_TL_('Save & exit'));\r\n const previousButtonText = i18n.getString(_TL_('Back'));\r\n if (stepIndex === 0) {\r\n // 1st step\r\n // will use the presence of 2nd step's stepService\r\n // as the fact that campaign has been saved\r\n if (stepListWithServiceInfo[1].stepService) {\r\n // After campaign is created\r\n return (\r\n \r\n );\r\n }\r\n // Before campaign is created\r\n return (\r\n \r\n );\r\n }\r\n if (stepIndex < stepListWithServiceInfo.length - 1) {\r\n // [2nd..last) steps\r\n return (\r\n \r\n );\r\n }\r\n // last step\r\n const lastStepInfo = last(stepListWithServiceInfo);\r\n if (lastStepInfo.isReadOnly) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n );\r\n }, [\r\n stepIndex, classes.wizardFooter, i18n, stepListWithServiceInfo,\r\n saveAndNavigateNext, saveAndNavigateBack, saveAndExit, cancelAndExit, isBusy,\r\n ]);\r\n\r\n return (\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n {children}\r\n \r\n {stepFooter}\r\n
\r\n
\r\n
\r\n );\r\n});\r\n\r\nMultiStepLayout.propTypes = {\r\n children: PropTypes.oneOfType([\r\n PropTypes.arrayOf(PropTypes.node),\r\n PropTypes.node,\r\n ]).isRequired,\r\n wizardState: PropTypes.shape({\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n stepInfo: PropTypes.shape({\r\n id: PropTypes.string.isRequired,\r\n }),\r\n stepIndex: PropTypes.number.isRequired,\r\n stepListWithServiceInfo: PropTypes.arrayOf(PropTypes.shape({\r\n stepService: PropTypes.shape({}),\r\n })).isRequired,\r\n isBusy: PropTypes.bool.isRequired,\r\n }).isRequired,\r\n wizardActions: PropTypes.shape({\r\n saveAndNavigateNext: PropTypes.func.isRequired,\r\n saveAndNavigateBack: PropTypes.func.isRequired,\r\n cancelAndExit: PropTypes.func.isRequired,\r\n saveAndExit: PropTypes.func.isRequired,\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n wizardContainer: PropTypes.string.isRequired,\r\n wizardListContainer: PropTypes.string.isRequired,\r\n wizardMainContainer: PropTypes.string.isRequired,\r\n wizardStepContainer: PropTypes.string.isRequired,\r\n wizardFooter: PropTypes.string.isRequired,\r\n }).isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { VerticalSeparatedLayout } from '@bingads-webui-react/steps';\r\nimport { StepFooter } from '@bingads-webui-campaign-react/step-wizard-layout';\r\nimport { footerStyleOverrides } from '../styles/footer-style-overrides';\r\n\r\nconst {\r\n StepsContextProvider,\r\n StepContainer,\r\n} = VerticalSeparatedLayout;\r\n\r\nexport const SingleStepLayout = React.memo(({\r\n children,\r\n wizardState: {\r\n i18n,\r\n stepInfo,\r\n isBusy,\r\n isReadOnlyUser,\r\n },\r\n wizardActions: {\r\n saveAndNavigateNext,\r\n cancelAndExit,\r\n },\r\n isCenteredLayout, classes,\r\n}) => (\r\n \r\n
\r\n
\r\n \r\n {children}\r\n \r\n
\r\n \r\n
\r\n
\r\n));\r\n\r\nSingleStepLayout.propTypes = {\r\n children: PropTypes.oneOfType([\r\n PropTypes.arrayOf(PropTypes.node),\r\n PropTypes.node,\r\n ]).isRequired,\r\n wizardState: PropTypes.shape({\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n stepInfo: PropTypes.shape({\r\n id: PropTypes.string.isRequired,\r\n }),\r\n isBusy: PropTypes.bool.isRequired,\r\n isReadOnlyUser: PropTypes.bool.isRequired,\r\n }).isRequired,\r\n wizardActions: PropTypes.shape({\r\n saveAndNavigateNext: PropTypes.func.isRequired,\r\n cancelAndExit: PropTypes.func.isRequired,\r\n }).isRequired,\r\n isCenteredLayout: PropTypes.bool,\r\n classes: PropTypes.shape({\r\n wizardContainer: PropTypes.string.isRequired,\r\n wizardMainContainer: PropTypes.string.isRequired,\r\n wizardSingleStepLayoutStepScrollingContainer: PropTypes.string.isRequired,\r\n wizardSingleStepLayoutCenteredStepContainer: PropTypes.string.isRequired,\r\n wizardSingleStepLayoutStepContainer: PropTypes.string.isRequired,\r\n wizardFooter: PropTypes.string.isRequired,\r\n }).isRequired,\r\n};\r\n\r\nSingleStepLayout.defaultProps = {\r\n isCenteredLayout: false,\r\n};\r\n","import React, { useEffect, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { ContentFooter } from '@bingads-webui-campaign-react/content-footer';\r\nimport { UiBlocker } from '@bingads-webui-react/ui-blocker';\r\nimport { InstrumentationContext, withInstrumentation } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { Scenario, Activity } from '@bingads-webui-react/hoc-with-signal';\r\nimport { log } from '@bingads-webui-campaign-react/step-wizard-machine';\r\nimport { stepListProp } from '@bingads-webui-campaign-react/step-wizard-machine-capi';\r\nimport { VerticalSeparatedLayout } from '@bingads-webui-react/steps';\r\nimport { getWizardStyles } from '../styles/wizard-styles';\r\nimport { useWizardState } from './use-wizard-state';\r\nimport { MultiStepLayout } from './multi-step-layout';\r\nimport { SingleStepLayout } from './single-step-layout';\r\n\r\nconst { Step } = VerticalSeparatedLayout;\r\n\r\nconst StepWizardImpl = ({\r\n wizardScenario, instrumentation, extraStepsData, permissions, scope, routeToNavigateToWhenDone, scopeToRemoveWhenDone, perfMarker,\r\n}) => {\r\n useEffect(() => {\r\n log('StepWizard mounted');\r\n return () => {\r\n log('StepWizard unmounted');\r\n };\r\n }, []);\r\n\r\n const classes = useDefaultStyles(getWizardStyles);\r\n\r\n const [wizardState, wizardActions] = useWizardState({\r\n permissions,\r\n wizardScenario,\r\n scope,\r\n routeToNavigateToWhenDone,\r\n scopeToRemoveWhenDone,\r\n instrumentation,\r\n extraStepsData,\r\n perfMarker,\r\n });\r\n\r\n const {\r\n isCenteredLayout,\r\n withContentFooter = true,\r\n i18n,\r\n scenarioName,\r\n scenario,\r\n stepListWithServiceInfo,\r\n isBusy,\r\n wasSaving,\r\n wasWaitingForConfirmation,\r\n wasStopping,\r\n } = wizardState;\r\n\r\n const Layout = useMemo(\r\n () => (wizardScenario.stepList.length > 1 ? MultiStepLayout : SingleStepLayout),\r\n [wizardScenario.stepList.length]\r\n );\r\n\r\n const loadingText = useMemo(\r\n () => {\r\n if (wasWaitingForConfirmation) {\r\n return i18n.getString(_TL_('Waiting for confirmation...'));\r\n }\r\n if (wasStopping) {\r\n return i18n.getString(_TL_('Finishing...'));\r\n }\r\n return wasSaving ? i18n.getString(_TL_('Saving...')) : i18n.getString(_TL_('Loading...'));\r\n },\r\n [wasWaitingForConfirmation, wasSaving, wasStopping, i18n]\r\n );\r\n\r\n const steps = useMemo(() => stepListWithServiceInfo\r\n .map(({ stepInfo: stepInfo2, stepService, StepRepository }) => (\r\n \r\n \r\n {stepService && stepService.initialized &&\r\n <>\r\n {StepRepository &&\r\n \r\n }\r\n \r\n \r\n }\r\n {/* the below element is there because StepContainer complains if Step.children is null,\r\n even though it is not going to render them. It is a bug in Step component. It scans the React VDOM tree to\r\n extract meta-information about steps, nested steps and so on. */}\r\n {!stepService &&\r\n

Loading...

\r\n }\r\n
\r\n \r\n )), [stepListWithServiceInfo, classes.wizardStep, i18n, wizardActions, perfMarker]);\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n \r\n \r\n {steps}\r\n \r\n {withContentFooter && }\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nStepWizardImpl.propTypes = {\r\n permissions: PropTypes.shape({}).isRequired,\r\n wizardScenario: PropTypes.shape({\r\n scenarioName: PropTypes.string.isRequired,\r\n stepList: stepListProp.isRequired,\r\n }).isRequired,\r\n scope: PropTypes.shape({\r\n values: PropTypes.shape({\r\n cid: PropTypes.number.isRequired,\r\n aid: PropTypes.number.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n routeToNavigateToWhenDone: PropTypes.string.isRequired,\r\n scopeToRemoveWhenDone: PropTypes.arrayOf(PropTypes.string),\r\n instrumentation: PropTypes.shape({}).isRequired,\r\n extraStepsData: PropTypes.shape({}),\r\n perfMarker: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nStepWizardImpl.defaultProps = {\r\n extraStepsData: {},\r\n scopeToRemoveWhenDone: [],\r\n};\r\n\r\nexport const StepWizard = withInstrumentation(withScope(StepWizardImpl));\r\n","import { isFunction } from 'underscore';\r\nimport React, { useCallback, useEffect, useMemo } from 'react';\r\nimport { Prompt } from 'react-router-dom';\r\n\r\nexport const useNavigationConfirmationPrompt = (needsConfirmation, confirmationMessage) => {\r\n const onUserNavigation = useCallback((location, action) => {\r\n if ((isFunction(needsConfirmation) && needsConfirmation(location, action)) || needsConfirmation) {\r\n return confirmationMessage;\r\n }\r\n return true;\r\n }, [needsConfirmation, confirmationMessage]);\r\n\r\n const navigationConfirmationPrompt = useMemo(() => (\r\n \r\n ), [onUserNavigation]);\r\n\r\n const beforeUnloadListener = useCallback((event) => {\r\n event.preventDefault();\r\n // eslint-disable-next-line no-param-reassign\r\n event.returnValue = confirmationMessage;\r\n return confirmationMessage;\r\n }, [confirmationMessage]);\r\n useEffect(() => {\r\n if (needsConfirmation) {\r\n addEventListener('beforeunload', beforeUnloadListener, { capture: true });\r\n } else {\r\n removeEventListener('beforeunload', beforeUnloadListener, { capture: true });\r\n }\r\n\r\n return () => {\r\n removeEventListener('beforeunload', beforeUnloadListener, { capture: true });\r\n };\r\n }, [needsConfirmation, beforeUnloadListener]);\r\n\r\n return navigationConfirmationPrompt;\r\n};\r\n","import { useEffect, useMemo } from 'react';\r\nimport { StepEvents } from '@bingads-webui-campaign-react/step-wizard-machine';\r\nimport { useNavigationConfirmationPrompt } from './use-navigation-confirmation-prompt';\r\nimport { useWindowConfirm } from './use-window-confirm';\r\n\r\nconst EXIT_WITHOUT_SAVING_MESSAGE_KEY = _TL_('Your latest changes have not been saved. Do you want to continue without saving changes?');\r\n\r\nexport const useExitWithoutSavingConfirmation = (needsConfirmation, stepService, i18n, confirmationMessage = undefined) => {\r\n // Browser and router navigation cancelation must be synchronous, so cannot be handled by wizard-state-machine\r\n // because wizard-state-machine doesn't have enough information on whether an individual step can\r\n // navigate away or not, and would need to delegate this to the step-state-machine.\r\n // Wizard's navigation button based existing/canceling can be asynchronous and, again, will be\r\n // delegated to the current step as the step has necessary information.\r\n const exitConfirmationMessage = useMemo(() => confirmationMessage || i18n.getString(EXIT_WITHOUT_SAVING_MESSAGE_KEY), [i18n, confirmationMessage]);\r\n const navigationConfirmationPrompt = useNavigationConfirmationPrompt(needsConfirmation, exitConfirmationMessage);\r\n const confirmCancel = useWindowConfirm(exitConfirmationMessage);\r\n useEffect(() => {\r\n stepService.send({ type: StepEvents.OVERRIDE_ACTIONS, data: { confirmCancel } });\r\n }, [stepService, confirmCancel]);\r\n\r\n return [navigationConfirmationPrompt];\r\n};\r\n","import { useCallback } from 'react';\r\n\r\nexport const useWindowConfirm = message =>\r\n // eslint-disable-next-line no-alert\r\n useCallback(() => window.confirm(message), [message]);\r\n","import { constant } from 'underscore';\r\nimport React, { useEffect, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useSelector } from '@xstate/react';\r\nimport hoistNonReactStatics from 'hoist-non-react-statics';\r\nimport { getDisplayName } from '@bingads-webui-react/hoc-utils';\r\nimport { ProgressiveLoadingBlock } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport {\r\n StepEvents,\r\n isLoading as isLoadingSelector,\r\n isFailedInit as isFailedInitSelector,\r\n isFin as isFinSelector,\r\n isStopping as sharedIsStoppingSelector,\r\n log,\r\n stateLoggingListener,\r\n} from '@bingads-webui-campaign-react/step-wizard-machine';\r\nimport { useUpdateChildPerfMarker } from '@bingads-webui-campaign-react/performance-marker-provider';\r\n\r\nexport const StepLoadingStatus = {\r\n loading: 'loading',\r\n ready: 'ready',\r\n failed: 'failed',\r\n};\r\n\r\nexport const defaultLoadingStatusSelector = (state) => {\r\n if (isFailedInitSelector(state)) {\r\n return StepLoadingStatus.failed;\r\n }\r\n\r\n if (isLoadingSelector(state)) {\r\n return StepLoadingStatus.loading;\r\n }\r\n\r\n return StepLoadingStatus.ready;\r\n};\r\n\r\nexport const defaultIsStoppingSelector = state => sharedIsStoppingSelector(state) || isFinSelector(state);\r\n\r\nexport const defaultFallback = () => ();\r\n\r\n/**\r\n * The step state machine-aware higher-order React component for wrapping an actual step UI component.\r\n * The HOC will render the provided fallback UI until the step has loaded initial data\r\n * required for it to render.\r\n */\r\nconst StepLoadingShell = React.memo(({\r\n stepService,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n loadingStatusSelector,\r\n isStoppingSelector,\r\n stepComponent: StepComponent,\r\n fallback: Fallback,\r\n wizardPerfMarker,\r\n stepPerfMarkerName,\r\n ...restProps\r\n}) => {\r\n useEffect(() => {\r\n const subscription = stepService.subscribe(stateLoggingListener);\r\n log('StepLoadingShell mounted');\r\n return () => {\r\n log('StepLoadingShell unmounted');\r\n subscription.unsubscribe();\r\n };\r\n }, [stepService]);\r\n\r\n const isLoading = useSelector(stepService, isLoadingSelector);\r\n const isStopping = useSelector(stepService, isStoppingSelector);\r\n const perfmarker = useMemo(\r\n () => {\r\n const child = wizardPerfMarker.createChild(stepPerfMarkerName, { autoEnd: false });\r\n child.willInit();\r\n return child;\r\n },\r\n [wizardPerfMarker, stepPerfMarkerName]\r\n );\r\n\r\n useUpdateChildPerfMarker(perfmarker, isLoading);\r\n\r\n useEffect(() => {\r\n stepService.send({ type: StepEvents.OVERRIDE_GUARDS, data: { needsStopping: constant(true) } });\r\n }, [stepService]);\r\n\r\n useEffect(() => {\r\n if (isStopping) {\r\n log('StepLoadingShell sending DONE_STOPPING');\r\n stepService.send({ type: StepEvents.DONE_STOPPING });\r\n }\r\n }, [stepService, isStopping]);\r\n\r\n log('StepLoadingShell.render: isLoading, isStopping', isLoading, isStopping);\r\n\r\n if (isLoading) {\r\n return ;\r\n } else if (!isStopping) {\r\n return ;\r\n }\r\n return null;\r\n});\r\n\r\nStepLoadingShell.propTypes = {\r\n stepService: PropTypes.shape({\r\n subscribe: PropTypes.func.isRequired,\r\n send: PropTypes.func,\r\n }).isRequired,\r\n stepComponent: PropTypes.elementType.isRequired,\r\n loadingStatusSelector: PropTypes.func,\r\n isStoppingSelector: PropTypes.func,\r\n fallback: PropTypes.elementType,\r\n wizardPerfMarker: PropTypes.shape({\r\n createChild: PropTypes.func.isRequired,\r\n }).isRequired,\r\n stepPerfMarkerName: PropTypes.string.isRequired,\r\n};\r\n\r\nStepLoadingShell.defaultProps = {\r\n loadingStatusSelector: defaultLoadingStatusSelector,\r\n isStoppingSelector: defaultIsStoppingSelector,\r\n fallback: defaultFallback,\r\n};\r\n\r\nexport const withStepLoadingShell = (\r\n StepComponent,\r\n {\r\n loadingStatusSelector: staticLoadingStatusSelector,\r\n isStoppingSelector: staticIsStoppingSelector,\r\n fallback: staticFallback,\r\n } = {}\r\n) => {\r\n const HOC = ({\r\n stepService, loadingStatusSelector, isStoppingSelector, fallback, wizardPerfMarker, stepPerfMarkerName, ...restProps\r\n }) => (\r\n \r\n );\r\n\r\n HOC.propTypes = {\r\n stepService: PropTypes.shape({}).isRequired,\r\n loadingStatusSelector: PropTypes.func,\r\n isStoppingSelector: PropTypes.func,\r\n fallback: PropTypes.elementType,\r\n wizardPerfMarker: PropTypes.shape({\r\n createChild: PropTypes.func.isRequired,\r\n }).isRequired,\r\n stepPerfMarkerName: PropTypes.string.isRequired,\r\n };\r\n\r\n HOC.defaultProps = {\r\n loadingStatusSelector: undefined,\r\n isStoppingSelector: undefined,\r\n fallback: undefined,\r\n };\r\n\r\n HOC.displayName = `withStepLoadingShell(${getDisplayName(StepComponent)})`;\r\n hoistNonReactStatics(HOC, StepComponent);\r\n\r\n return HOC;\r\n};\r\n","import { useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useSelector } from '@xstate/react';\r\nimport {\r\n isLoading as isLoadingSelector,\r\n isSaving as isSavingSelector,\r\n StepEvents,\r\n log,\r\n} from '@bingads-webui-campaign-react/step-wizard-machine';\r\nimport { useIsMounted } from './use-is-mounted';\r\n\r\n/**\r\n * A step repository React component for steps that neither load, nor save any data.\r\n * @param {Object} props the component's props\r\n * @param {Object} props.stepService an instance of the step's state machine\r\n * @returns {Element} an empty VDOM\r\n */\r\nexport const NoDataStepRepository = ({ stepService }) => {\r\n const isMountedRef = useIsMounted();\r\n\r\n const isLoading = useSelector(stepService, isLoadingSelector);\r\n const isSaving = useSelector(stepService, isSavingSelector);\r\n\r\n useEffect(() => {\r\n if (isLoading) {\r\n log('NoDataStepRepository loading data with loadData');\r\n if (isMountedRef.current) {\r\n log('NoDataStepRepository sending DONE_LOADING');\r\n stepService.send({ type: StepEvents.DONE_LOADING, data: {} });\r\n }\r\n } else if (isSaving) {\r\n log('NoDataStepRepository saving data with saveData');\r\n if (isMountedRef.current) {\r\n log('NoDataStepRepository sending DONE_SAVING');\r\n stepService.send({ type: StepEvents.DONE_SAVING, data: {} });\r\n }\r\n }\r\n }, [stepService, isLoading, isSaving, isMountedRef]);\r\n\r\n log('NoDataStepRepository.render: isLoading=_, isSaving=_', isLoading, isSaving);\r\n\r\n return null;\r\n};\r\n\r\nNoDataStepRepository.propTypes = {\r\n stepService: PropTypes.shape({\r\n subscribe: PropTypes.func.isRequired,\r\n send: PropTypes.func,\r\n }).isRequired,\r\n};\r\n","import React from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { FilterEntity } from '@bingads-webui/filter-entity';\r\nimport { PredicateList } from '@bingads-webui/predicate-list-react';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getStockPhotoFilterStyle } from '@bingads-webui-campaign/shared-image-experience-styles';\r\n\r\nimport { getShutterStockFilterSchema } from './shutter-stock-filter-schema';\r\n\r\nconst isPlainObject = value => _.isObject(value) && !_.isArray(value);\r\n\r\n/* istanbul ignore next */\r\nconst queryToPredicates = (query) => {\r\n if (!isPlainObject(query) || _.isEmpty(query)) {\r\n return [];\r\n }\r\n if (query.$and) {\r\n return query.$and;\r\n }\r\n return [query];\r\n};\r\n\r\n/* istanbul ignore next */\r\nconst predicatesToQuery = (predicates) => {\r\n if (!_.isArray(predicates) || _.isEmpty(predicates)) {\r\n return {};\r\n }\r\n if (predicates.length === 1) {\r\n return predicates[0];\r\n }\r\n return {\r\n $and: predicates,\r\n };\r\n};\r\n\r\nclass ShutterStockFilterInternal extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n const { i18nLegacy } = props;\r\n\r\n this.filterSchema = getShutterStockFilterSchema(i18nLegacy);\r\n\r\n this.editableFilter = new FilterEntity({}, {\r\n entitySchema: this.filterSchema,\r\n });\r\n }\r\n\r\n onQueryChange = (query) => {\r\n const {\r\n data: prevData,\r\n setData,\r\n } = this.props;\r\n const currData = {\r\n predicates: queryToPredicates(query),\r\n };\r\n\r\n /* istanbul ignore else */\r\n if (!_.isEqual(prevData, currData)) {\r\n setData(currData);\r\n }\r\n }\r\n\r\n render() {\r\n const {\r\n classes,\r\n data: {\r\n predicates,\r\n },\r\n popoverContainer,\r\n } = this.props;\r\n\r\n const query = predicatesToQuery(predicates);\r\n this.editableFilter.updateQuery(query);\r\n\r\n return (\r\n
\r\n \r\n {i18n => (\r\n \r\n )}\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nShutterStockFilterInternal.propTypes = {\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n setData: PropTypes.func.isRequired,\r\n data: PropTypes.objectOf(PropTypes.any),\r\n i18nLegacy: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }),\r\n popoverContainer: PropTypes.shape(),\r\n};\r\n\r\nShutterStockFilterInternal.defaultProps = {\r\n data: null,\r\n i18n: {\r\n getString: _.identity,\r\n },\r\n popoverContainer: {},\r\n};\r\n\r\nconst ShutterStockFilter = withDefaultStyles(ShutterStockFilterInternal, getStockPhotoFilterStyle);\r\nexport { ShutterStockFilter };\r\n\r\n","const getShutterStockFilterSchema = (i18n) => {\r\n const filterSchema = {\r\n properties: {\r\n people_model_released: {\r\n name: 'People Model Released',\r\n filterable: true,\r\n title: i18n.getString('ShutterStock_Filter_People_Model_Released'),\r\n type: 'string',\r\n property: 'people_model_released',\r\n enum: [\r\n 'true',\r\n 'false',\r\n ],\r\n localized: {\r\n true: i18n.getString('ShutterStock_Filter_People_Model_Released_True'),\r\n false: i18n.getString('ShutterStock_Filter_People_Model_Released_False'),\r\n },\r\n operatorDisplayNameMap: {\r\n eq: i18n.getString('ShutterStock_Filter_Operator_Eq'),\r\n },\r\n operators: [\r\n 'eq',\r\n ],\r\n chooseType: 'radio',\r\n },\r\n people_ethnicity: {\r\n name: 'People Ethnicity',\r\n filterable: true,\r\n title: i18n.getString('ShutterStock_Filter_People_Ethnicity'),\r\n type: 'string',\r\n property: 'people_ethnicity',\r\n enum: [\r\n 'african',\r\n 'african_american',\r\n 'black',\r\n 'brazilian',\r\n 'chinese',\r\n 'caucasian',\r\n 'east_asian',\r\n 'hispanic',\r\n 'japanese',\r\n 'middle_eastern',\r\n 'native_american',\r\n 'pacific_islander',\r\n 'south_asian',\r\n 'southeast_asian',\r\n 'other',\r\n ],\r\n localized: {\r\n african: i18n.getString('ShutterStock_Filter_People_Ethnicity_African'),\r\n african_american: i18n.getString('ShutterStock_Filter_People_Ethnicity_African_American'),\r\n black: i18n.getString('ShutterStock_Filter_People_Ethnicity_Black'),\r\n brazilian: i18n.getString('ShutterStock_Filter_People_Ethnicity_Brazilian'),\r\n chinese: i18n.getString('ShutterStock_Filter_People_Ethnicity_Chinese'),\r\n caucasian: i18n.getString('ShutterStock_Filter_People_Ethnicity_Caucasian'),\r\n east_asian: i18n.getString('ShutterStock_Filter_People_Ethnicity_East_Asian'),\r\n hispanic: i18n.getString('ShutterStock_Filter_People_Ethnicity_Hispanic'),\r\n japanese: i18n.getString('ShutterStock_Filter_People_Ethnicity_Japanese'),\r\n middle_eastern: i18n.getString('ShutterStock_Filter_People_Ethnicity_Middle_Eastern'),\r\n native_american: i18n.getString('ShutterStock_Filter_People_Ethnicity_Native_American'),\r\n pacific_islander: i18n.getString('ShutterStock_Filter_People_Ethnicity_Pacific_Islander'),\r\n south_asian: i18n.getString('ShutterStock_Filter_People_Ethnicity_South_Asian'),\r\n southeast_asian: i18n.getString('ShutterStock_Filter_People_Ethnicity_Southeast_Asian'),\r\n other: i18n.getString('ShutterStock_Filter_People_Ethnicity_Other'),\r\n },\r\n operatorDisplayNameMap: {\r\n eq: i18n.getString('ShutterStock_Filter_Operator_Eq'),\r\n },\r\n operators: [\r\n 'eq',\r\n ],\r\n chooseType: 'checkbox',\r\n },\r\n people_gender: {\r\n name: 'People Gender',\r\n filterable: true,\r\n title: i18n.getString('ShutterStock_Filter_People_Gender'),\r\n type: 'string',\r\n property: 'people_gender',\r\n enum: [\r\n 'male',\r\n 'female',\r\n 'both',\r\n ],\r\n localized: {\r\n male: i18n.getString('ShutterStock_Filter_People_Male'),\r\n female: i18n.getString('ShutterStock_Filter_People_Female'),\r\n both: i18n.getString('ShutterStock_Filter_People_Both'),\r\n },\r\n operatorDisplayNameMap: {\r\n eq: i18n.getString('ShutterStock_Filter_Operator_Eq'),\r\n },\r\n operators: [\r\n 'eq',\r\n ],\r\n chooseType: 'radio',\r\n },\r\n people_age: {\r\n name: 'People Age',\r\n filterable: true,\r\n title: i18n.getString('ShutterStock_Filter_People_Age'),\r\n type: 'string',\r\n property: 'people_model_age',\r\n enum: [\r\n 'infants',\r\n 'children',\r\n 'teenagers',\r\n '20s',\r\n '30s',\r\n '40s',\r\n '50s',\r\n '60s',\r\n 'older',\r\n ],\r\n localized: {\r\n infants: i18n.getString('ShutterStock_Filter_People_Age_Infants'),\r\n children: i18n.getString('ShutterStock_Filter_People_Age_Children'),\r\n teenagers: i18n.getString('ShutterStock_Filter_People_Age_Teenagers'),\r\n '20s': i18n.getString('ShutterStock_Filter_People_Age_20s'),\r\n '30s': i18n.getString('ShutterStock_Filter_People_Age_30s'),\r\n '40s': i18n.getString('ShutterStock_Filter_People_Age_40s'),\r\n '50s': i18n.getString('ShutterStock_Filter_People_Age_50s'),\r\n '60s': i18n.getString('ShutterStock_Filter_People_Age_60s'),\r\n older: i18n.getString('ShutterStock_Filter_People_Age_Older'),\r\n },\r\n operatorDisplayNameMap: {\r\n eq: i18n.getString('ShutterStock_Filter_Operator_Eq'),\r\n },\r\n operators: [\r\n 'eq',\r\n ],\r\n chooseType: 'radio',\r\n },\r\n people_number: {\r\n name: 'People Number',\r\n filterable: true,\r\n title: i18n.getString('ShutterStock_Filter_People_Number'),\r\n type: 'string',\r\n property: 'people_number',\r\n enum: [\r\n '1',\r\n '2',\r\n '3',\r\n '4',\r\n ],\r\n localized: {\r\n 1: '1',\r\n 2: '2',\r\n 3: '3',\r\n 4: '4+',\r\n },\r\n operatorDisplayNameMap: {\r\n eq: i18n.getString('ShutterStock_Filter_Operator_Eq'),\r\n },\r\n operators: [\r\n 'eq',\r\n ],\r\n chooseType: 'radio',\r\n },\r\n },\r\n // work-around to have the noDuplicateValidation. Will remove once predicate supports it\r\n name: 'ShutterStockPeopleFilterSchema',\r\n type: 'object',\r\n };\r\n\r\n return filterSchema;\r\n};\r\n\r\nexport { getShutterStockFilterSchema };\r\n","import React, { useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { ShutterStockFilter } from './shutter-stock/shutter-stock-filter';\r\n\r\nexport const StockImageFilter = (props) => {\r\n const {\r\n i18nLegacy,\r\n onFilterQueryChange,\r\n popoverContainer,\r\n } = props;\r\n\r\n const [data, setData] = useState({});\r\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\r\n const [filterQuery, setFilterQuery] = useState({});\r\n\r\n useEffect(() => {\r\n if (data.predicates) {\r\n const keyValueQueryPairs = _.reduce(\r\n data.predicates,\r\n (memo, predicate) => {\r\n // there is only one key per predicate\r\n const [key] = _.keys(predicate);\r\n const addedKeyValue = {};\r\n const [valuesArray] = _.values(_.values(predicate)[0]);\r\n\r\n // As we support multi-selection, we format the array in the following way\r\n // key[0]=value, key[1]=value\r\n /* istanbul ignore next */\r\n if (valuesArray.length > 1) {\r\n valuesArray.forEach((value, index) => {\r\n addedKeyValue[`${key}[${index}]`] = value;\r\n });\r\n } else {\r\n [addedKeyValue[key]] = valuesArray;\r\n }\r\n\r\n return _.extend(memo, addedKeyValue);\r\n }, {}\r\n );\r\n\r\n setFilterQuery(keyValueQueryPairs);\r\n\r\n /* istanbul ignore else */\r\n onFilterQueryChange(keyValueQueryPairs);\r\n }\r\n }, [data, onFilterQueryChange]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nStockImageFilter.propTypes = {\r\n onFilterQueryChange: PropTypes.func.isRequired,\r\n i18nLegacy: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n popoverContainer: PropTypes.shape(),\r\n};\r\n\r\nStockImageFilter.defaultProps = {\r\n popoverContainer: null,\r\n};\r\n","export const getStoreStyles = () => ({\r\n storeSettings: {\r\n '& .alert': {\r\n alignItems: 'center',\r\n padding: [4, 16, 4, 12],\r\n\r\n '& .alert-image:before': {\r\n lineHeight: '32px',\r\n },\r\n\r\n '& .alert__content': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n flexGrow: 1,\r\n alignItems: 'center',\r\n },\r\n\r\n '& .alert__action': {\r\n marginLeft: 'auto',\r\n marginTop: 'unset',\r\n },\r\n },\r\n },\r\n storeSettingsLoading: {\r\n minHeight: 64, // for spinner\r\n },\r\n select_store_link: {\r\n border: '1px solid #8A8886',\r\n display: 'inline-block',\r\n background: '#FFF',\r\n borderRadius: '2px',\r\n color: '#323130',\r\n padding: '2px 20px',\r\n cursor: 'pointer',\r\n float: 'right',\r\n },\r\n warning_no_store: {\r\n '& .alert': {\r\n marginTop: 12,\r\n },\r\n },\r\n errorIcon_no_store: {\r\n padding: '8px 8px 8px 12px',\r\n },\r\n select_store_no_store_message: {\r\n padding: '8px 8px 8px 0px',\r\n },\r\n select: {\r\n width: '252px',\r\n height: '32px',\r\n border: '1px solid #605E5C',\r\n borderRadius: '2px',\r\n },\r\n control_title: {\r\n fontWeight: 600,\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n },\r\n control: {\r\n '&:not(:last-child)': {\r\n marginBottom: 16,\r\n },\r\n },\r\n title_text: {\r\n margin: '8px 0 8px 0',\r\n },\r\n select_label: {\r\n marginBottom: '4px',\r\n },\r\n storeSelectContent: {\r\n '& div[role=\"alert\"] .error:first-child': {\r\n paddingTop: '12px',\r\n },\r\n },\r\n});\r\n","import { pairs } from 'underscore';\r\nimport React, { useContext, useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { Text, Label, Checkbox } from '@fluentui/react';\r\nimport { useId } from '@fluentui/react-hooks';\r\nimport { withCustomValidation, withError } from '@bingads-webui-react/validation';\r\nimport { HelpPopup } from '@bingads-webui-react/help-popup';\r\nimport { withUnvalidatedControlErrors, withControlErrorHandling } from '@bingads-webui-campaign-react/error-handling';\r\nimport { Alert } from '@bingads-webui-react/alert';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { FeedFilterPicker } from '@bingads-webui-campaign-react/feed-filter';\r\nimport { getStoreStyles } from '../styles/get-store-style';\r\n\r\nconst validate = (i18n, data) => {\r\n const validationErrors = [];\r\n\r\n if (data.IsFeedFiltered && !data.FeedLabel && !data.SalesCountry) {\r\n validationErrors.push(i18n.getString(_TL_('Either feed label or country/region of sale needs to be selected with the filter enabled. If you want to disable the filter, please click \"Use all products\" button.')));\r\n }\r\n\r\n return validationErrors;\r\n};\r\n\r\nfunction StoreSelectView(props) {\r\n const {\r\n stores,\r\n countries,\r\n validationProps,\r\n updateValidation,\r\n permissions,\r\n } = props;\r\n\r\n const { data } = validationProps;\r\n const {\r\n dynamic: {\r\n FeedLabel: feedLabelEnabled,\r\n FeedLabelBlockList: feedLabelBlockListEnabled,\r\n },\r\n } = permissions;\r\n const isFeedLabelEnabled = feedLabelEnabled && !feedLabelBlockListEnabled;\r\n\r\n const i18n = useContext(I18nContext);\r\n const classes = useDefaultStyles(getStoreStyles);\r\n\r\n const onLocalChecked = useCallback((event) => {\r\n const isChecked = event.target.checked;\r\n const newData = {\r\n ...data,\r\n LocalInventoryAdsEnabled: isChecked,\r\n };\r\n\r\n updateValidation([], newData);\r\n }, [updateValidation, data]);\r\n\r\n const onDataChange = useCallback((dataPatch) => {\r\n const newData = {\r\n ...data,\r\n ...dataPatch,\r\n };\r\n const validationErrors = validate(i18n, newData);\r\n\r\n updateValidation(validationErrors, newData);\r\n }, [data, i18n, updateValidation]);\r\n\r\n const onIsFeedFilteredChange = useCallback((isFeedFiltered) => {\r\n onDataChange({\r\n IsFeedFiltered: isFeedFiltered,\r\n SalesCountry: isFeedFiltered ? data.SalesCountry : null,\r\n FeedLabel: isFeedFiltered ? data.FeedLabel : null,\r\n });\r\n }, [data.FeedLabel, data.SalesCountry, onDataChange]);\r\n\r\n const onSelectedFeedLabelChangeByValue = useCallback((value) => {\r\n onDataChange({\r\n FeedLabel: value,\r\n });\r\n }, [onDataChange]);\r\n\r\n const onSelectedSaleCountryChangeByValue = useCallback((value) => {\r\n onDataChange({\r\n SalesCountry: value,\r\n });\r\n }, [onDataChange]);\r\n\r\n const selectedStoreId = data.ProviderId;\r\n const selectedCountry = data.SalesCountry;\r\n\r\n const storeFieldId = useId('storeText');\r\n const countryFieldId = useId('countryText');\r\n const localInventoryFieldId = useId('localInventoryInput');\r\n\r\n return (\r\n
\r\n
\r\n {selectedStoreId &&\r\n
\r\n
\r\n {i18n.getString(_TL_('You will use this Merchant Center account to advertise products on your website.'))}\r\n
\r\n \r\n
\r\n \r\n {/* If store has been deleted, or if the set store is a draft store, we show its ID without any additional info or formatting. The same as in the legacy shopping campaigns */}\r\n {(stores[selectedStoreId] && stores[selectedStoreId].text) || selectedStoreId}\r\n \r\n
\r\n {isFeedLabelEnabled ? (\r\n ({ key, text }))}\r\n selectedFeedLabel={data.FeedLabel}\r\n onSelectedFeedLabelChange={onSelectedFeedLabelChangeByValue}\r\n selectedSaleCountry={data.SalesCountry}\r\n onSelectedSaleCountryChange={onSelectedSaleCountryChangeByValue}\r\n storeId={selectedStoreId}\r\n />\r\n ) : (\r\n <>\r\n \r\n
\r\n \r\n {countries[selectedCountry].text}\r\n \r\n
\r\n \r\n )}\r\n \r\n \r\n
\r\n }\r\n\r\n {/* user doesn’t select store, then comes back to this step\r\n *View-only state for settings that can’t change */}\r\n {!selectedStoreId &&\r\n
\r\n )}\r\n dismissible={false}\r\n />\r\n
\r\n }\r\n
\r\n
\r\n );\r\n}\r\n\r\nStoreSelectView.propTypes = {\r\n stores: PropTypes.shape({}).isRequired,\r\n countries: PropTypes.shape({\r\n text: PropTypes.string,\r\n }).isRequired,\r\n updateValidation: PropTypes.func.isRequired,\r\n validationProps: PropTypes.shape({\r\n data: PropTypes.shape({\r\n IsFeedFiltered: PropTypes.bool,\r\n FeedLabel: PropTypes.string,\r\n SalesCountry: PropTypes.string,\r\n LocalInventoryAdsEnabled: PropTypes.bool,\r\n ProviderId: PropTypes.string,\r\n }).isRequired,\r\n alwaysShowError: PropTypes.bool,\r\n }).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 const ValidatedStoreView = withError(withControlErrorHandling(withUnvalidatedControlErrors(withCustomValidation(withPermissions(StoreSelectView)))));\r\n","import _ from 'underscore';\r\nimport React, { useContext, useEffect, useCallback } from 'react';\r\nimport classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport { withCustomValidation, withError } from '@bingads-webui-react/validation';\r\nimport { withUnvalidatedControlErrors, withControlErrorHandling } from '@bingads-webui-campaign-react/error-handling';\r\nimport { Alert } from '@bingads-webui-react/alert';\r\nimport { Text, Label, Checkbox } from '@fluentui/react';\r\nimport { useId } from '@fluentui/react-hooks';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { HelpPopup } from '@bingads-webui-react/help-popup';\r\nimport { Select } from '@bingads-webui-react/primitive';\r\nimport { getRouterDep } from '@bingads-webui-campaign-react/legacy-router-dep';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\nimport { withSiteMap } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { FeedFilterPicker } from '@bingads-webui-campaign-react/feed-filter';\r\nimport { getStoreStyles } from '../styles/get-store-style';\r\n\r\nconst validate = (i18n, campaignObjective, data) => {\r\n const validationErrors = campaignObjective === 'ShoppingCampaign' && !data.ProviderId ?\r\n [i18n.getString(_TL_('At least one store needs to be selected.'))] : [];\r\n\r\n if (campaignObjective === 'ShoppingCampaign' && data.IsFeedFiltered && !data.FeedLabel && !data.SalesCountry) {\r\n validationErrors.push(i18n.getString(_TL_('Either feed label or country/region of sale needs to be selected with the filter enabled. If you want to disable the filter, please click \"Use all products\" button.')));\r\n }\r\n\r\n return validationErrors;\r\n};\r\n\r\nfunction StoreSelectCreation(props) {\r\n const {\r\n hasStores,\r\n stores,\r\n countries,\r\n campaignObjective,\r\n updateValidation,\r\n scope,\r\n siteMap,\r\n permissions,\r\n validationProps,\r\n showProductCollections,\r\n hideFeedLabelAndCountry,\r\n } = props;\r\n\r\n const { data } = validationProps;\r\n const {\r\n dynamic: {\r\n FeedLabel: feedLabelEnabled,\r\n FeedLabelBlockList: feedLabelBlockListEnabled,\r\n },\r\n } = permissions;\r\n const isFeedLabelEnabled = feedLabelEnabled && !feedLabelBlockListEnabled;\r\n\r\n const i18n = useContext(I18nContext);\r\n const classes = useDefaultStyles(getStoreStyles);\r\n\r\n const onDataChange = useCallback((dataPatch) => {\r\n const newData = {\r\n ...data,\r\n ...dataPatch,\r\n };\r\n const validationErrors = validate(i18n, campaignObjective, newData);\r\n\r\n updateValidation(validationErrors, newData);\r\n }, [i18n, campaignObjective, updateValidation, data]);\r\n\r\n const onSelectedStoreChange = useCallback((event) => {\r\n const storeId = event.target.value;\r\n\r\n onDataChange({\r\n ProviderId: storeId,\r\n });\r\n }, [onDataChange]);\r\n\r\n useEffect(() => {\r\n let newData = data;\r\n if (campaignObjective === 'ShoppingCampaign' && _.keys(stores).length === 1) {\r\n const preSelectedStoreId = Object.keys(stores)[0];\r\n newData = {\r\n ...data,\r\n ProviderId: preSelectedStoreId,\r\n };\r\n }\r\n if (isFeedLabelEnabled) {\r\n newData = {\r\n ...newData,\r\n FeedLabel: null,\r\n SalesCountry: null,\r\n };\r\n } else {\r\n newData = {\r\n ...newData,\r\n FeedLabel: null,\r\n SalesCountry: 'US',\r\n };\r\n }\r\n const validationErrors = validate(i18n, campaignObjective, newData);\r\n updateValidation(validationErrors, newData, false);\r\n\r\n // Ignoring deps to fire only once this store pre-select logic\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const onSelectedCountryChange = useCallback((event) => {\r\n const countryId = event.target.value;\r\n onDataChange({\r\n SalesCountry: countryId,\r\n });\r\n }, [onDataChange]);\r\n\r\n const onIsFeedFilteredChange = useCallback((isFeedFiltered) => {\r\n onDataChange({\r\n IsFeedFiltered: isFeedFiltered,\r\n SalesCountry: isFeedFiltered ? data.SalesCountry : null,\r\n FeedLabel: isFeedFiltered ? data.FeedLabel : null,\r\n });\r\n }, [data.FeedLabel, data.SalesCountry, onDataChange]);\r\n\r\n const onSelectedFeedLabelChangeByValue = useCallback((value) => {\r\n onDataChange({\r\n FeedLabel: value,\r\n });\r\n }, [onDataChange]);\r\n\r\n const onSelectedSaleCountryChangeByValue = useCallback((value) => {\r\n onDataChange({\r\n SalesCountry: value,\r\n });\r\n }, [onDataChange]);\r\n\r\n const goToBMC = () => {\r\n const router = getRouterDep(scope, siteMap);\r\n router.navigateToRoute('bing_merchant_center');\r\n };\r\n\r\n const onLocalChecked = useCallback((event) => {\r\n const isChecked = event.target.checked;\r\n onDataChange({\r\n LocalInventoryAdsEnabled: isChecked,\r\n });\r\n }, [onDataChange]);\r\n\r\n const onProductCollectionChecked = useCallback((event) => {\r\n const isChecked = event.target.checked;\r\n onDataChange({\r\n ProductCollectionsEnabled: isChecked,\r\n });\r\n }, [onDataChange]);\r\n\r\n const storeFieldId = useId('storeInput');\r\n const countryFieldId = useId('countryInput');\r\n const localInventoryFieldId = useId('localInventoryInput');\r\n const productCollectionFieldId = useId('productCollectionInput');\r\n\r\n return (\r\n
\r\n
\r\n {/* user doesn’t have store */}\r\n {!hasStores ?\r\n
\r\n )}\r\n dismissible={false}\r\n action={{\r\n callback: goToBMC,\r\n message: i18n.getString(_TL_('Create a store')),\r\n }}\r\n />\r\n
\r\n :\r\n
\r\n {/* user has store + selects \"sell products from catalog\" + not selects \"sell products from catalog\" */}\r\n
\r\n {i18n.getString(_TL_('Select a Merchant Center store to advertise your products.'))}\r\n
\r\n \r\n \r\n \r\n {_.pairs(stores).map(([key, { text }]) =>\r\n (\r\n \r\n ))}\r\n \r\n\r\n {(campaignObjective === 'ShoppingCampaign' || data.ProviderId) &&\r\n (!hideFeedLabelAndCountry)\r\n &&\r\n <>\r\n {isFeedLabelEnabled ? (\r\n ({ key, text }))}\r\n selectedFeedLabel={data.FeedLabel}\r\n onSelectedFeedLabelChange={onSelectedFeedLabelChangeByValue}\r\n selectedSaleCountry={data.SalesCountry}\r\n onSelectedSaleCountryChange={onSelectedSaleCountryChangeByValue}\r\n storeId={data.ProviderId}\r\n />\r\n ) : (\r\n <>\r\n \r\n \r\n {_.pairs(countries).map(([key, { text }]) =>\r\n (\r\n \r\n ))}\r\n \r\n \r\n )}\r\n \r\n \r\n {/* TODO: should also add this field to edit page when setting page finalized. for now. add this to creation page first. */}\r\n {showProductCollections &&\r\n <>\r\n \r\n \r\n \r\n }\r\n\r\n {/* Scenario: customers link a store and we want to tell them the link can’t be changed once they go to the next step */}\r\n
\r\n )}\r\n dismissible={false}\r\n />\r\n
\r\n \r\n }\r\n\r\n {(campaignObjective !== 'ShoppingCampaign' && !data.ProviderId) && !hideFeedLabelAndCountry &&\r\n
\r\n )}\r\n dismissible={false}\r\n />\r\n
\r\n }\r\n
\r\n }\r\n
\r\n
\r\n );\r\n}\r\n\r\nStoreSelectCreation.propTypes = {\r\n hasStores: PropTypes.bool.isRequired,\r\n stores: PropTypes.shape({\r\n StoreId: PropTypes.string,\r\n Name: PropTypes.string,\r\n }).isRequired,\r\n countries: PropTypes.shape({\r\n name: PropTypes.string,\r\n }).isRequired,\r\n campaignObjective: PropTypes.string.isRequired,\r\n siteMap: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.string,\r\n })).isRequired,\r\n scope: 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 updateValidation: PropTypes.func.isRequired,\r\n validationProps: PropTypes.shape({\r\n data: PropTypes.shape({\r\n IsFeedFiltered: PropTypes.bool,\r\n FeedLabel: PropTypes.string,\r\n SalesCountry: PropTypes.string,\r\n LocalInventoryAdsEnabled: PropTypes.bool,\r\n ProviderId: PropTypes.string,\r\n ProductCollectionsEnabled: PropTypes.bool,\r\n }).isRequired,\r\n alwaysShowError: PropTypes.bool,\r\n }).isRequired,\r\n showProductCollections: PropTypes.bool,\r\n hideFeedLabelAndCountry: PropTypes.bool,\r\n};\r\n\r\nStoreSelectCreation.defaultProps = {\r\n showProductCollections: false,\r\n hideFeedLabelAndCountry: false,\r\n};\r\n\r\nexport const ValidatedStoreCreation = withError(withControlErrorHandling(withUnvalidatedControlErrors(withCustomValidation(withScope(withSiteMap(withPermissions(StoreSelectCreation)))))));\r\n","import _ from 'underscore';\r\nimport { trim } from 'underscore.string';\r\nimport { queryify } from '@bingads-webui/url-util';\r\nimport { createAsyncToken } from '@bingads-webui-universal/primitive-utilities';\r\nimport jsData from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport { getProductScopeData, mergeData } from '@bingads-webui-campaign-react/product-services';\r\nimport { withDFMCache, getDFMCache, setDFMCache } from '@bingads-webui/dfm-cache';\r\n\r\nexport const getProductData = (cid, aid, uid) => {\r\n const url = queryify('/Campaign/NewCampaign/GetProductScope', {\r\n aid,\r\n cid,\r\n uid,\r\n });\r\n\r\n const params = {\r\n url,\r\n adapter: 'legacy',\r\n bypassCache: false,\r\n cacheResponse: true,\r\n };\r\n\r\n return createAsyncToken(jsData.Product.find('MetaData', params))\r\n // .chain((...args) => new Promise((resolve) => {\r\n // setTimeout(() => resolve(...args), 5000);\r\n // }))\r\n // .chain((...args) => new Promise((resolve, reject) => {\r\n // setTimeout(() => reject(new Error('Failed loading stores', ...args)), 5000);\r\n // }))\r\n .chain((data) => {\r\n // Filtering out Co-Op Store\r\n // eslint-disable-next-line no-param-reassign\r\n data.ProductCollectionAccounts =\r\n _.filter(data.ProductCollectionAccounts, store => !store.IsCoOpStore && !store.IsGlobalStore);\r\n\r\n return data;\r\n });\r\n};\r\n\r\nexport const getProductScopeFromOData = (serverContext) => {\r\n const options = {\r\n dataName: 'MetaData',\r\n bypassCache: false,\r\n cacheResponse: true,\r\n getSalesCountryCollection: true,\r\n };\r\n\r\n const p$GetProductData = () => getProductScopeData(null, serverContext, options);\r\n const cacheKey = 'getPmaxProductScopeDFM';\r\n const getProductDataWithCache = withDFMCache(p$GetProductData, cacheKey, {}, false);\r\n\r\n return createAsyncToken(getProductDataWithCache())\r\n .chain((data) => {\r\n if (!getDFMCache(cacheKey)) {\r\n setDFMCache(cacheKey, new Promise((resolve) => { resolve(data) }));\r\n }\r\n\r\n // Filtering out Co-Op Store\r\n const mergedData = mergeData(data)\r\n\r\n mergedData.ProductCollectionAccounts = _.filter(mergedData.ProductCollectionAccounts, store => !store.IsCoOpStore && !store.IsGlobalStore);\r\n\r\n return mergedData;\r\n });\r\n}\r\n\r\nconst parseStoreName = (storeText) => {\r\n const nameComponentIndex = storeText.indexOf(',');\r\n const nameComponent = storeText.substring(nameComponentIndex + 1);\r\n const nameIndex = nameComponent.indexOf(':');\r\n const name = trim(nameComponent.substring(nameIndex + 1));\r\n return name;\r\n};\r\n\r\nexport const getStoreFromProductCollectionAccount = productCollectionAccount => ({\r\n id: productCollectionAccount.Value,\r\n text: productCollectionAccount.Text,\r\n name: parseStoreName(productCollectionAccount.Text),\r\n});\r\n\r\nexport const getCountryFromSalesCountryCollection = legacyI18n => salesCountry => ({\r\n id: salesCountry.Value,\r\n text: legacyI18n.getString(`UserCountry_${salesCountry.Value}`),\r\n});\r\n\r\nexport const getStores = ({ productData }) => {\r\n const stores = (productData && productData.ProductCollectionAccounts\r\n .map(getStoreFromProductCollectionAccount)\r\n .reduce((memo, store) => {\r\n // eslint-disable-next-line no-param-reassign\r\n memo[store.id] = store;\r\n return memo;\r\n }, {})) || [];\r\n return stores;\r\n};\r\n\r\nexport const getCountries = ({ productData, IsDomesticSimplifiedChineseEnabled, legacyI18n }) => {\r\n const countries = (productData && productData.SalesCountryCollection\r\n .filter((salesCountry) => {\r\n const id = salesCountry.Value;\r\n let result = true;\r\n\r\n if (IsDomesticSimplifiedChineseEnabled) {\r\n result = result && (id === 'CN');\r\n }\r\n\r\n return result;\r\n })\r\n .map(getCountryFromSalesCountryCollection(legacyI18n))\r\n .reduce((memo, country) => {\r\n // eslint-disable-next-line no-param-reassign\r\n memo[country.id] = country;\r\n return memo;\r\n }, {})) || [];\r\n return countries;\r\n};\r\n\r\n","import { isEmpty, isFunction, get } from 'underscore';\r\nimport React, { useEffect, useRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\nimport { Alert } from '@bingads-webui-react/alert';\r\nimport { Loading } from '@bingads-webui-campaign-react/loading';\r\nimport { withCustomValidation } from '@bingads-webui-react/validation';\r\nimport { withUnvalidatedControlErrors, withControlErrorHandling } from '@bingads-webui-campaign-react/error-handling';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { withServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { withActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getProductData, getProductScopeFromOData, getStores, getCountries } from './utils';\r\nimport { getStoreStyles } from '../styles/get-store-style';\r\n\r\nexport const StoreSelectLoading = ({\r\n i18n, legacyI18n, scope, campaignObjective, updateValidation,\r\n validationProps: { data, alwaysShowError },\r\n isLoading, onLoadingDone, onLoadingError, loadingErrors, permissions, onRenderCustomLoadingComponent, serverContext, activity,\r\n}) => {\r\n const asyncTokenRef = useRef();\r\n const {\r\n IsDomesticSimplifiedChineseEnabled,\r\n } = permissions || {};\r\n const isOdataGetProductScopeEnabled = get(serverContext, ['DynamicPermissions', 'OdataGetProductScope'], false);\r\n\r\n const isUnmounted = useRef(false);\r\n useEffect(() => () => {\r\n isUnmounted.current = true;\r\n if (asyncTokenRef.current) {\r\n asyncTokenRef.current.cancel();\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n const errors = [\r\n ...isLoading && campaignObjective === 'ShoppingCampaign' ?\r\n [i18n.getString(_TL_('Cannot continue until stores are loaded.'))] : [],\r\n ...!isEmpty(loadingErrors) && campaignObjective === 'ShoppingCampaign' ?\r\n [i18n.getString(_TL_('Cannot continue because stores failed to load. Please try again or contact the customer support.'))] : [],\r\n ];\r\n updateValidation(errors, data);\r\n }, [i18n, campaignObjective, updateValidation, data, isLoading, loadingErrors]);\r\n\r\n useEffect(() => {\r\n if (!isLoading) {\r\n return;\r\n }\r\n\r\n if (asyncTokenRef.current) {\r\n asyncTokenRef.current.cancel();\r\n }\r\n const { cid, aid, uid } = scope.values;\r\n const getProductDataCall = isOdataGetProductScopeEnabled ? () => getProductScopeFromOData(serverContext) : () => getProductData(cid, aid, uid);\r\n const callStartTime = Date.now();\r\n\r\n asyncTokenRef.current = getProductDataCall()\r\n .on({\r\n onSuccess: (productData) => {\r\n const deltaTime = Date.now() - callStartTime;\r\n if (isOdataGetProductScopeEnabled) {\r\n activity.trace(`[PmaxStoreSelect][OdataGetProductScope] GetProductDataCallTime: ${deltaTime}`);\r\n } else {\r\n activity.trace(`[PmaxStoreSelect] GetProductDataCallTime: ${deltaTime}`);\r\n }\r\n\r\n if (!isUnmounted.current) {\r\n const stores = getStores({ productData });\r\n const countries = getCountries({ productData, legacyI18n, IsDomesticSimplifiedChineseEnabled });\r\n if (isFunction(onLoadingDone)) {\r\n onLoadingDone({ stores, countries });\r\n }\r\n }\r\n },\r\n onError: (err) => {\r\n if (!isUnmounted.current) {\r\n if (isFunction(onLoadingError)) {\r\n onLoadingError(err);\r\n }\r\n }\r\n },\r\n });\r\n }, [i18n, legacyI18n, scope.values, isLoading, onLoadingDone, onLoadingError, IsDomesticSimplifiedChineseEnabled, isOdataGetProductScopeEnabled, serverContext]);\r\n\r\n const classes = useDefaultStyles(getStoreStyles);\r\n\r\n return (\r\n
\r\n {isEmpty(loadingErrors) &&\r\n <>\r\n { onRenderCustomLoadingComponent ? onRenderCustomLoadingComponent() : }\r\n {alwaysShowError && campaignObjective === 'ShoppingCampaign' &&\r\n )}\r\n dismissible={false}\r\n />\r\n }\r\n \r\n }\r\n {!isEmpty(loadingErrors) &&\r\n )}\r\n dismissible={false}\r\n />\r\n }\r\n
\r\n );\r\n};\r\n\r\nStoreSelectLoading.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n legacyI18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n scope: PropTypes.shape({\r\n values: PropTypes.shape({\r\n cid: PropTypes.number.isRequired,\r\n aid: PropTypes.number.isRequired,\r\n uid: PropTypes.number.isRequired,\r\n }),\r\n }).isRequired,\r\n permissions: PropTypes.shape({\r\n IsDomesticSimplifiedChineseEnabled: PropTypes.bool,\r\n }).isRequired,\r\n campaignObjective: PropTypes.string.isRequired,\r\n updateValidation: PropTypes.func.isRequired,\r\n validationProps: PropTypes.shape({\r\n data: PropTypes.shape({}).isRequired,\r\n alwaysShowError: PropTypes.bool,\r\n }).isRequired,\r\n isLoading: PropTypes.bool.isRequired,\r\n serverContext: PropTypes.shape({\r\n CurrentAccount: PropTypes.shape({\r\n TimeZone: PropTypes.number.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n activity: PropTypes.shape({\r\n trace: PropTypes.func,\r\n }),\r\n onLoadingDone: PropTypes.func,\r\n onLoadingError: PropTypes.func,\r\n loadingErrors: PropTypes.arrayOf({}),\r\n onRenderCustomLoadingComponent: PropTypes.func,\r\n};\r\n\r\nStoreSelectLoading.defaultProps = {\r\n onLoadingDone: undefined,\r\n onLoadingError: undefined,\r\n loadingErrors: [],\r\n onRenderCustomLoadingComponent: null,\r\n activity: null,\r\n};\r\n\r\nexport const ValidatedStoreSelectLoading = withControlErrorHandling(withUnvalidatedControlErrors(withCustomValidation(withPermissions(withScope(withServerContext(withActivityContext(StoreSelectLoading)))))));\r\n","import _ from 'underscore';\r\nimport React, { useContext, useState, useCallback, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { getStoreStyles } from '../styles/get-store-style';\r\nimport { ValidatedStoreView } from './store-select-view';\r\nimport { ValidatedStoreCreation } from './store-select-creation';\r\nimport { ValidatedStoreSelectLoading } from './store-select-loading';\r\n\r\nexport function StoreSelectContainer(props) {\r\n const {\r\n campaign,\r\n campaignObjective,\r\n data,\r\n onStoreDataLoaded,\r\n showProductCollections,\r\n hideFeedLabelAndCountry,\r\n onRenderCustomLoadingComponent,\r\n } = props;\r\n\r\n const i18n = useContext(I18nContext);\r\n const legacyI18n = useMemo(() => window.globalLegacyI18n.get('$/i18n!legacy/global'), []);\r\n const classes = useDefaultStyles(getStoreStyles);\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [stores, setStores] = useState({});\r\n const [countries, setCountries] = useState({});\r\n const hasStores = _.keys(stores).length > 0;\r\n const campaignSaved = campaign.data.Id && campaign.data.Id > 0;\r\n\r\n const onStoresLoadingDone = useCallback(({ stores: newStores, countries: newCountries }) => {\r\n setStores(newStores);\r\n setCountries(newCountries);\r\n setIsLoading(false);\r\n if (_.isFunction(onStoreDataLoaded)) {\r\n onStoreDataLoaded({ stores: newStores, countries: newCountries });\r\n }\r\n }, [onStoreDataLoaded]);\r\n\r\n const [storesLoadingErrors, setStoresLoadingErrors] = useState([]);\r\n const onStoresLoadingError = useCallback((error) => {\r\n setStoresLoadingErrors([error]);\r\n setIsLoading(false);\r\n if (_.isFunction(onStoreDataLoaded)) {\r\n onStoreDataLoaded({ error });\r\n }\r\n }, [onStoreDataLoaded]);\r\n\r\n return (\r\n
\r\n
\r\n {isLoading || !_.isEmpty(storesLoadingErrors) ?\r\n false, // TODO: map store-related server errors\r\n }}\r\n onRenderCustomLoadingComponent={onRenderCustomLoadingComponent}\r\n />\r\n :\r\n
\r\n {campaignSaved ?\r\n false, // TODO: map store-related server errors\r\n }}\r\n showProductCollections={showProductCollections}\r\n />\r\n :\r\n false, // TODO: map store-related server errors\r\n }}\r\n showProductCollections={showProductCollections}\r\n hideFeedLabelAndCountry={hideFeedLabelAndCountry}\r\n />}\r\n
\r\n }\r\n
\r\n
\r\n );\r\n}\r\n\r\nStoreSelectContainer.propTypes = {\r\n campaign: PropTypes.shape({\r\n data: PropTypes.shape({\r\n Id: PropTypes.number,\r\n }),\r\n }).isRequired,\r\n campaignObjective: PropTypes.string.isRequired,\r\n data: PropTypes.shape({}).isRequired,\r\n onStoreDataLoaded: PropTypes.func,\r\n showProductCollections: PropTypes.bool,\r\n hideFeedLabelAndCountry: PropTypes.bool,\r\n onRenderCustomLoadingComponent: PropTypes.func,\r\n};\r\n\r\nStoreSelectContainer.defaultProps = {\r\n onStoreDataLoaded: undefined,\r\n showProductCollections: false,\r\n hideFeedLabelAndCountry: false,\r\n onRenderCustomLoadingComponent: null,\r\n};\r\n","/* eslint-disable jsx-a11y/img-redundant-alt */\r\n/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport _ from 'underscore';\r\nimport React, { useCallback, useContext, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { Link } from '@bingads-webui-react/fabric-with-signal';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getTitlePreview, getDescPreview } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { getExpandedTextAdDisplayUrl } from '@bingads-webui-campaign-legacy/crud-ad/service/displayUrl';\r\nimport { originalActionTextMapper } from '@bingads-webui-campaign-legacy/adextension-actionlink/model/language-type-translator';\r\n\r\nconst getAdCreationPreviewStyle = () => ({\r\n AdCreationPreviewContainer: {\r\n whiteSpace: 'normal',\r\n '& .ad-preview-content-container': {\r\n width: '338px',\r\n border: '1px solid rgba(151, 151, 151, 1)',\r\n borderRadius: '2px',\r\n padding: '16px',\r\n '& .ad-title-preview': {\r\n fontSize: '18px',\r\n lineHeight: '22px',\r\n color: '#1A0DAB',\r\n },\r\n '& .url-line': {\r\n alignItems: 'baseline',\r\n },\r\n '& .ad-url-preview': {\r\n fontSize: '14px',\r\n fontWeight: '700',\r\n lineHeight: '20px',\r\n color: '#006621',\r\n },\r\n '& .ad-description-preview': {\r\n '& .ad-slug': {\r\n color: '#666',\r\n lineHeight: '24px',\r\n border: '1px solid #ddd',\r\n padding: '0 2px',\r\n fontSize: '11px',\r\n marginRight: '4px',\r\n borderRadius: '6px',\r\n },\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n color: '#666666',\r\n marginTop: '6px',\r\n },\r\n },\r\n '& .responsive-ad-preview-content-container': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n position: 'relative',\r\n borderRadius: '10px',\r\n width: '260px',\r\n overflow: 'hidden',\r\n cursor: 'pointer',\r\n textDecoration: 'none',\r\n boxShadow: '0px 4px 4px 0px rgba(0, 0, 0, 0.15)',\r\n '&:active:hover': {\r\n textDecoration: 'none',\r\n },\r\n '& .ad-label': {\r\n color: '#ddddd',\r\n opacity: '0.9',\r\n margin: '5px',\r\n position: 'absolute',\r\n fontSize: '8px',\r\n borderRadius: '2px',\r\n backgroundColor: 'white',\r\n width: '18px',\r\n height: '13px',\r\n textAlign: 'center',\r\n verticalAlign: 'middle',\r\n },\r\n '& .ad-preview-image': {\r\n width: '100%',\r\n height: '136px',\r\n objectFit: 'cover',\r\n objectPosition: 'top',\r\n },\r\n '& .mma-text-content-container': {\r\n padding: '12px 0 16px 16px',\r\n fontWeight: '600',\r\n wordWrap: 'break-word',\r\n '& .mma-short-headline': {\r\n fontSize: '16px',\r\n color: '#323130',\r\n },\r\n '& .mma-display-url': {\r\n fontSize: '8px',\r\n lineHeight: '12px',\r\n color: '#459D64',\r\n },\r\n '& .mma-description': {\r\n fontSize: '10px',\r\n lineHeight: '16px',\r\n color: '#323130',\r\n maxWidth: '160px',\r\n wordWrap: 'break-word',\r\n },\r\n\r\n },\r\n '& .mma-callToAction': {\r\n color: 'white',\r\n right: '12px',\r\n border: 'none',\r\n bottom: '12px',\r\n position: 'absolute',\r\n fontSize: '11px',\r\n lineHeight: '24px',\r\n fontWeight: '600',\r\n borderRadius: '20px',\r\n opacity: '0.9',\r\n backgroundColor: '#A0A0A0',\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst ResponsiveSearchAdPreview = ({ data }) => { // for RSA\r\n const i18n = useContext(I18nContext);\r\n const handleRSAData = useCallback(() => {\r\n const convertedFinalUrl = _.first(data.FinalUrls);\r\n const headlineList = _.map(data.Headlines, i => ({\r\n Text: i.Asset && i.Asset.Text,\r\n PinnedField: i.PinnedField,\r\n }));\r\n const descriptionList = _.map(data.Descriptions, i => ({\r\n Text: i.Asset && i.Asset.Text,\r\n PinnedField: i.PinnedField,\r\n }));\r\n const convertedTitle = getTitlePreview(headlineList);\r\n const convertedText = getDescPreview(descriptionList);\r\n const convertedDisplayUrl = getExpandedTextAdDisplayUrl(_.first(data.FinalUrls), data.DisplayUrl, data.Path1, data.Path2);\r\n const resultData = {\r\n convertedFinalUrl,\r\n convertedTitle,\r\n convertedText,\r\n convertedDisplayUrl,\r\n };\r\n return resultData;\r\n }, [data]);\r\n\r\n const resultData = useMemo(handleRSAData, [data]);\r\n return (\r\n
\r\n \r\n {resultData.convertedTitle}\r\n \r\n \r\n {resultData.convertedDisplayUrl}\r\n \r\n \r\n {i18n.getString(_TL_('Ad'))}{resultData.convertedText}\r\n \r\n
\r\n );\r\n};\r\nResponsiveSearchAdPreview.propTypes = {\r\n data: PropTypes.shape({\r\n FinalUrls: PropTypes.arrayOf(PropTypes.string),\r\n Headlines: PropTypes.arrayOf(PropTypes.shape({\r\n Asset: PropTypes.shape({\r\n Text: PropTypes.string,\r\n }),\r\n PinnedField: PropTypes.string,\r\n })),\r\n Descriptions: PropTypes.arrayOf(PropTypes.shape({\r\n Asset: PropTypes.shape({\r\n Text: PropTypes.string,\r\n }),\r\n PinnedField: PropTypes.string,\r\n })),\r\n DisplayUrl: PropTypes.string,\r\n Path1: PropTypes.string,\r\n Path2: PropTypes.string,\r\n }),\r\n};\r\nResponsiveSearchAdPreview.defaultProps = {\r\n data: {\r\n FinalUrls: [],\r\n Headlines: [],\r\n Descriptions: [],\r\n DisplayUrl: '',\r\n Path1: '',\r\n Path2: '',\r\n },\r\n};\r\n\r\nconst ResponsiveAdPreview = ({ data }) => { // for MMA\r\n const i18n = useContext(I18nContext);\r\n const { LandscapeImageMediaUrl } = data;\r\n const convertedFinalUrl = _.first(data.FinalUrls);\r\n const callToAction = originalActionTextMapper[data.CallToActionLanguage] && originalActionTextMapper[data.CallToActionLanguage][data.CallToAction];\r\n return (\r\n \r\n
\r\n
{i18n.getString(_TL_('Ad'))}
\r\n {LandscapeImageMediaUrl && \"Ad}\r\n
\r\n
\r\n
{data.Headline}
\r\n
{data.DisplayUrl}
\r\n
{data.Text}
\r\n
\r\n {callToAction && }\r\n \r\n );\r\n};\r\n\r\nResponsiveAdPreview.propTypes = {\r\n data: PropTypes.shape({\r\n Headline: PropTypes.string,\r\n Text: PropTypes.string,\r\n LandscapeImageMediaUrl: PropTypes.string,\r\n DisplayUrl: PropTypes.string,\r\n CallToActionLanguage: PropTypes.string,\r\n CallToAction: PropTypes.string,\r\n }),\r\n};\r\nResponsiveAdPreview.defaultProps = {\r\n data: {\r\n Headline: '',\r\n Text: '',\r\n LandscapeImageMediaUrl: '',\r\n DisplayUrl: '',\r\n CallToActionLanguage: '',\r\n CallToAction: '',\r\n },\r\n};\r\n\r\nexport const AdCreationPreview = ({ data }) => {\r\n const i18n = useContext(I18nContext);\r\n const classes = useDefaultStyles(getAdCreationPreviewStyle);\r\n\r\n const getAdContent = useCallback(() => {\r\n if (_.isEmpty(data)) {\r\n return i18n.getString(_TL_('No Ad'));\r\n } else if (data.Type === 'ResponsiveSearch') {\r\n return
;\r\n } else if (data.Type === 'Responsive') {\r\n return
;\r\n }\r\n return i18n.getString(_TL_('1 Ad'));\r\n }, [data, classes, i18n]);\r\n\r\n return (\r\n \r\n {getAdContent()}\r\n \r\n );\r\n};\r\n\r\nAdCreationPreview.propTypes = {\r\n data: PropTypes.shape({\r\n Type: PropTypes.string.isRequired,\r\n }),\r\n};\r\n\r\nAdCreationPreview.defaultProps = {\r\n data: PropTypes.shape({\r\n }),\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\n\r\nexport const Store = ({ storeName }) => (\r\n \r\n {storeName}\r\n \r\n);\r\n\r\nStore.propTypes = {\r\n storeName: PropTypes.string,\r\n};\r\n\r\nStore.defaultProps = {\r\n storeName: null,\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\n\r\nexport const ProductCollections = ({ isProductCollectionsEnabled }) => {\r\n const i18n = useContext(I18nContext);\r\n const productCollectionsText = isProductCollectionsEnabled ? i18n.getString(_TL_('Enabled')) : i18n.getString(_TL_('Not enabled'));\r\n\r\n return (\r\n \r\n {productCollectionsText}\r\n \r\n );\r\n};\r\n\r\nProductCollections.propTypes = {\r\n isProductCollectionsEnabled: PropTypes.bool,\r\n};\r\n\r\nProductCollections.defaultProps = {\r\n isProductCollectionsEnabled: false,\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\n\r\nexport const LocalInventory = ({ isLocalInventoryEnabled }) => {\r\n const i18n = useContext(I18nContext);\r\n const localInventoryText = isLocalInventoryEnabled ? i18n.getString(_TL_('Enabled')) : i18n.getString(_TL_('Not enabled'));\r\n\r\n return (\r\n \r\n {localInventoryText}\r\n \r\n );\r\n};\r\n\r\nLocalInventory.propTypes = {\r\n isLocalInventoryEnabled: PropTypes.bool,\r\n};\r\n\r\nLocalInventory.defaultProps = {\r\n isLocalInventoryEnabled: false,\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { isEmpty } from 'underscore';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\nimport { SelectedItem } from '@bingads-webui-campaign-react/pill-item-components';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nconst getProductsStyle = () => ({\r\n productFilterItem: {\r\n marginBottom: 5,\r\n },\r\n});\r\n\r\nexport const Products = ({ productFilters, useSelectedItem }) => {\r\n const i18n = useContext(I18nContext);\r\n const classes = useDefaultStyles(getProductsStyle);\r\n\r\n let productsText = '';\r\n\r\n if (isEmpty(productFilters)) {\r\n productsText = i18n.getString(_TL_('All products'));\r\n } else if (!useSelectedItem) {\r\n productsText = productFilters.join(' & ');\r\n }\r\n\r\n return (\r\n \r\n {useSelectedItem && !isEmpty(productFilters) ?\r\n productFilters.map((filter, index) => (\r\n
\r\n \r\n
)) :\r\n ({productsText})}\r\n
\r\n );\r\n};\r\n\r\nProducts.propTypes = {\r\n productFilters: PropTypes.arrayOf(PropTypes.string),\r\n useSelectedItem: PropTypes.bool,\r\n};\r\n\r\nProducts.defaultProps = {\r\n productFilters: [],\r\n useSelectedItem: false,\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\n\r\nexport const Feeds = ({ feedLabel }) => {\r\n const i18n = useContext(I18nContext);\r\n const feedLabelsText = i18n.getString(_TL_('Filter by feed label: {{feedLabel}}'), { feedLabel });\r\n\r\n return (\r\n \r\n {feedLabelsText}\r\n \r\n );\r\n};\r\n\r\nFeeds.propTypes = {\r\n feedLabel: PropTypes.string.isRequired,\r\n};\r\n","import React, { useContext, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\n\r\nexport const LocationTargeting = ({ locations, targetOption }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n const explicitLocations = useMemo(() => {\r\n const numLocations = locations.length;\r\n\r\n if (targetOption === 'everywhere') {\r\n return i18n.getString(_TL_('Everywhere'));\r\n }\r\n\r\n if (numLocations === 1) {\r\n return locations[0];\r\n } else if (numLocations === 2) {\r\n return `${locations[0]}, ${locations[1]}`;\r\n } else if (numLocations >= 3) {\r\n const moreThan2LocationsTemplate = _TL_('{0} +{1} more', 'The {0} placeholder represents the first location. The {1} placeholder represents the number of remaining locations');\r\n return i18n.getString(moreThan2LocationsTemplate).replace('{0}', locations[0]).replace('{1}', numLocations - 1);\r\n }\r\n return null;\r\n }, [i18n, locations, targetOption]);\r\n\r\n return (\r\n \r\n {explicitLocations}\r\n \r\n );\r\n};\r\n\r\nLocationTargeting.propTypes = {\r\n locations: PropTypes.arrayOf(PropTypes.string),\r\n targetOption: PropTypes.string,\r\n};\r\n\r\nLocationTargeting.defaultProps = {\r\n locations: [],\r\n targetOption: null,\r\n};\r\n","import React, { useContext } from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\n\r\nexport const AgeRanges = {\r\n EighteenToTwentyFive: _TL_('18-24'),\r\n TwentyFiveToThirtyFive: _TL_('25-34'),\r\n ThirtyFiveToFifty: _TL_('35-49'),\r\n FiftyToSixtyFive: _TL_('50-64'),\r\n SixtyFiveAndAbove: _TL_('65+'),\r\n Unknown: _TL_('Unknown'),\r\n // LinkedIn specific\r\n ThirtyFiveToFiftyFive: _TL_('35-54'),\r\n FiftyFiveAndAbove: _TL_('55+'),\r\n};\r\n\r\nconst sortAgeRanges = ageRanges => _.sortBy(ageRanges, ageRange => AgeRanges[ageRange]);\r\n\r\nexport const formatAgeRange = (ageRange, i18n) => (AgeRanges[ageRange] ? i18n.getString(AgeRanges[ageRange]) : ageRange);\r\n\r\nexport const formatAgeRanges = (ageRanges, i18n) => _.chain(sortAgeRanges(ageRanges))\r\n .map(ageRange => formatAgeRange(ageRange, i18n))\r\n .join(i18n.getString(_TL_(', ')))\r\n .value();\r\n\r\nexport const AgeRangeTargeting = ({ ageRanges }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n \r\n {formatAgeRanges(ageRanges, i18n)}\r\n \r\n );\r\n};\r\n\r\nAgeRangeTargeting.propTypes = {\r\n ageRanges: PropTypes.arrayOf(PropTypes.string),\r\n};\r\n\r\nAgeRangeTargeting.defaultProps = {\r\n ageRanges: [],\r\n};\r\n","import React, { useContext } from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\n\r\nexport const Genders = {\r\n Female: _TL_('Female'),\r\n Male: _TL_('Male'),\r\n Unknown: _TL_('Unknown'),\r\n};\r\n\r\nconst sortGenders = genders => _.sortBy(genders, gender => Genders[gender]);\r\n\r\nexport const formatGender = (gender, i18n) => (Genders[gender] ? i18n.getString(Genders[gender]) : gender);\r\n\r\nexport const formatGenders = (genders, i18n) => _.chain(sortGenders(genders))\r\n .map(gender => formatGender(gender, i18n))\r\n .join(i18n.getString(_TL_(', ')))\r\n .value();\r\n\r\nexport const GenderTargeting = ({ genders }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n \r\n {formatGenders(genders, i18n)}\r\n \r\n );\r\n};\r\n\r\nGenderTargeting.propTypes = {\r\n genders: PropTypes.arrayOf(PropTypes.string),\r\n};\r\n\r\nGenderTargeting.defaultProps = {\r\n genders: [],\r\n};\r\n","import React, { useContext, useMemo } from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\nimport { getDay, getMin, getTime, minuteToSaveMap } from '@bingads-webui-campaign-react/wizard-shared-components';\r\nimport { getDateSettingDetails } from '@bingads-webui-campaign/date-setting';\r\n\r\nexport const getDayTimeDetails = (i18n, dayTime, is12) => {\r\n const startHour = dayTime.StartHour;\r\n const endHour = dayTime.EndHour;\r\n const startMin = getMin(minuteToSaveMap[dayTime.StartMinute]);\r\n const endMin = getMin(minuteToSaveMap[dayTime.EndMinute]);\r\n const dateTimePart = `${i18n.getString(getDay(dayTime.Day))} ${i18n.getString(_TL_('from {{from}} to {{to}}'), {\r\n from: i18n.getString(getTime(startHour, is12), { min: startMin }),\r\n to: i18n.getString(getTime(endHour, is12), { min: endMin }),\r\n })}`;\r\n\r\n return dateTimePart;\r\n};\r\n\r\nconst getAdScheduleDetails = (i18n, adSchedules, timeDisplayType, useSearcherTimeZone) => {\r\n let details = '';\r\n\r\n const is12 = timeDisplayType === '12-hour';\r\n const len = adSchedules.length;\r\n\r\n if (len === 0) {\r\n const defaultSchedule = {\r\n Id: '',\r\n Day: 'Alldays',\r\n StartHour: 0,\r\n StartMinute: 'ZERO',\r\n EndHour: 24,\r\n EndMinute: 'ZERO',\r\n BidAdjustmentType: 1,\r\n BidAdjustmentAmount: 0,\r\n CashbackPercent: null,\r\n };\r\n\r\n details += getDayTimeDetails(i18n, defaultSchedule, is12);\r\n } else {\r\n _.forEach(adSchedules, (schedule, index) => {\r\n details += getDayTimeDetails(i18n, schedule, is12);\r\n if (details && index < len - 1) {\r\n details += ', ';\r\n }\r\n });\r\n }\r\n\r\n if (useSearcherTimeZone) {\r\n details += ` ${i18n.getString(_TL_('In Ad viewer\\'s time zone'))}`;\r\n } else {\r\n details += ` ${i18n.getString(_TL_('In Your account\\'s time zone'))}`;\r\n }\r\n\r\n return details;\r\n};\r\n\r\nexport const AdSchedule = ({\r\n startDate, endDate, adSchedules, useSearcherTimeZone, timeDisplayType, includeStartEnd,\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n const dateSettings = useMemo(() => (includeStartEnd ? getDateSettingDetails(i18n, startDate, endDate) : ''), [endDate, i18n, includeStartEnd, startDate]);\r\n const adScheduleSettings = useMemo(\r\n () => (adSchedules ?\r\n getAdScheduleDetails(i18n, adSchedules, timeDisplayType, useSearcherTimeZone) : '')\r\n , [adSchedules, i18n, timeDisplayType, useSearcherTimeZone]\r\n );\r\n\r\n return (\r\n \r\n {includeStartEnd ? `${dateSettings}${adScheduleSettings && `: ${adScheduleSettings}`}` : adScheduleSettings}\r\n \r\n );\r\n};\r\n\r\nAdSchedule.propTypes = {\r\n startDate: PropTypes.string.isRequired,\r\n endDate: PropTypes.string,\r\n adSchedules: PropTypes.arrayOf(PropTypes.shape({})),\r\n useSearcherTimeZone: PropTypes.bool,\r\n timeDisplayType: PropTypes.string,\r\n includeStartEnd: PropTypes.bool,\r\n};\r\n\r\nAdSchedule.defaultProps = {\r\n endDate: null,\r\n adSchedules: null,\r\n useSearcherTimeZone: false,\r\n timeDisplayType: '12-hour',\r\n includeStartEnd: true,\r\n};\r\n","/* eslint-disable react/no-array-index-key */\r\nimport React, { useContext, useMemo } from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\nimport { getDay, getMin, getTime, minuteToSaveMap, } from '@bingads-webui-campaign-react/wizard-shared-components';\r\n\r\nexport const getDayTimeDetails = (i18n, dayTime, is12) => {\r\n const startHour = dayTime.StartHour;\r\n const endHour = dayTime.EndHour;\r\n const startMin = getMin(minuteToSaveMap[dayTime.StartMinute]);\r\n const endMin = getMin(minuteToSaveMap[dayTime.EndMinute]);\r\n const dateTimePart = `${i18n.getString(getDay(dayTime.Day))}, ${i18n.getString(_TL_('{{from}} - {{to}}'), {\r\n from: i18n.getString(getTime(startHour, is12), { min: startMin }),\r\n to: i18n.getString(getTime(endHour, is12), { min: endMin }),\r\n })}`;\r\n\r\n return `${dateTimePart}: ${dayTime.BidAdjustmentType > 0 ? i18n.getString(_TL_('Increase by')) : i18n.getString(_TL_('Decrease by'))}\r\n ${dayTime.BidAdjustmentAmount || 0}%`;\r\n};\r\n\r\nconst getAdScheduleDetails = (i18n, adSchedules, timeDisplayType, useSearcherTimeZone) => {\r\n const details = [];\r\n\r\n const is12 = timeDisplayType === '12-hour';\r\n const len = (adSchedules && adSchedules.length) || 0;\r\n\r\n if (len === 0) {\r\n const defaultSchedule = {\r\n Id: '',\r\n Day: 'Alldays',\r\n StartHour: 0,\r\n StartMinute: 'ZERO',\r\n EndHour: 24,\r\n EndMinute: 'ZERO',\r\n BidAdjustmentType: 1,\r\n BidAdjustmentAmount: 0,\r\n CashbackPercent: null,\r\n };\r\n\r\n details.push(getDayTimeDetails(i18n, defaultSchedule, is12));\r\n } else {\r\n _.forEach(adSchedules, (schedule) => {\r\n details.push(getDayTimeDetails(i18n, schedule, is12));\r\n });\r\n }\r\n\r\n if (useSearcherTimeZone) {\r\n details.push(i18n.getString(_TL_('In ad viewer\\'s time zone')));\r\n } else {\r\n details.push(i18n.getString(_TL_('In your account\\'s time zone')));\r\n }\r\n\r\n return details;\r\n};\r\n\r\nexport const AdScheduleWithBidAdjustments = ({\r\n adSchedules, useSearcherTimeZone, timeDisplayType,\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n const adScheduleSettings = useMemo(\r\n () => (getAdScheduleDetails(i18n, adSchedules, timeDisplayType, useSearcherTimeZone))\r\n , [adSchedules, i18n, timeDisplayType, useSearcherTimeZone]\r\n );\r\n\r\n return (\r\n \r\n {adScheduleSettings.map((schedule, index) => (\r\n {schedule}\r\n ))}\r\n \r\n );\r\n};\r\n\r\nAdScheduleWithBidAdjustments.propTypes = {\r\n adSchedules: PropTypes.arrayOf(PropTypes.shape({})),\r\n useSearcherTimeZone: PropTypes.bool,\r\n timeDisplayType: PropTypes.string,\r\n};\r\n\r\nAdScheduleWithBidAdjustments.defaultProps = {\r\n adSchedules: null,\r\n useSearcherTimeZone: false,\r\n timeDisplayType: '12-hour',\r\n};\r\n","import React, { useContext } from 'react';\r\nimport { isEmpty } from 'underscore'\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\n\r\nexport const formatTargets = ({ data, includedData, excludedData, i18n, singularText, pluralText }) => {\r\n if ((!data || !data.length) && (isEmpty(includedData) && isEmpty(excludedData))) {\r\n return i18n.getString(_TL_('Targeting: No {{singularText}} segments selected.'), { singularText });\r\n }\r\n\r\n const targetedCriterions = includedData || data.filter(({ Status }) => Status === 'Active');\r\n const excludedCriterions = excludedData || data.filter(({ Status }) => Status === 'Excluded');\r\n\r\n let targetedCriterionDetails = '';\r\n let excludedCriterionDetails = '';\r\n\r\n if (targetedCriterions.length === 1) {\r\n targetedCriterionDetails = i18n.getString(_TL_('Targeted: 1 {{singularText}}'), { singularText });\r\n } else if (targetedCriterions.length > 1) {\r\n targetedCriterionDetails = i18n.getString(_TL_('Targeted: {{count}} {{pluralText}}'), { count: (targetedCriterions.length), pluralText });\r\n }\r\n\r\n if (excludedCriterions.length === 1) {\r\n excludedCriterionDetails = i18n.getString(_TL_('Excluded: 1 {{singularText}}'), { singularText });\r\n } else if (excludedCriterions.length > 1) {\r\n excludedCriterionDetails = i18n.getString(_TL_('Excluded: {{count}} {{pluralText}}'), { count: (excludedCriterions.length), pluralText });\r\n }\r\n\r\n return `${targetedCriterionDetails}${targetedCriterionDetails && excludedCriterionDetails && '. '}${excludedCriterionDetails}`;\r\n};\r\n\r\nexport const CommonTarget = ({ data, label, singularText, pluralText, includedData, excludedData }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n \r\n {formatTargets({ data, i18n, singularText, pluralText, includedData, excludedData })}\r\n \r\n );\r\n};\r\n\r\nCommonTarget.propTypes = {\r\n data: PropTypes.arrayOf(PropTypes.shape({})),\r\n label: PropTypes.string,\r\n includedData: PropTypes.arrayOf(PropTypes.shape({})),\r\n excludedData: PropTypes.arrayOf(PropTypes.shape({})),\r\n singularText: PropTypes.string,\r\n pluralText: PropTypes.string,\r\n};\r\n\r\nCommonTarget.defaultProps = {\r\n data: [],\r\n label: '',\r\n includedData: null,\r\n excludedData: null,\r\n singularText: '',\r\n pluralText: '',\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { CommonTarget } from './common-targeting';\r\n\r\nexport const Audience = ({ audiences }) => (\r\n \r\n);\r\n\r\nAudience.propTypes = {\r\n audiences: PropTypes.arrayOf(PropTypes.shape({})),\r\n};\r\n\r\nAudience.defaultProps = {\r\n audiences: [],\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { CommonTarget } from './common-targeting';\r\n\r\nexport const Interest = ({ interests }) => (\r\n \r\n);\r\n\r\nInterest.propTypes = {\r\n interests: PropTypes.arrayOf(PropTypes.shape({})),\r\n};\r\n\r\nInterest.defaultProps = {\r\n interests: [],\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\n\r\nconst predictiveTargetingMessageTemplate = _TL_('Predictive targeting is {0}', \"The placeholder will display either 'on' or 'off'.\");\r\nconst predictiveTargetingOn = _TL_('on');\r\nconst predictiveTargetingOff = _TL_('off');\r\n\r\nexport const PredictiveTargeting = ({ isPredictiveTargetingEnabled }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n const predictiveTargetingText = i18n.getString(predictiveTargetingMessageTemplate).replace('{0}', isPredictiveTargetingEnabled ? predictiveTargetingOn : predictiveTargetingOff);\r\n\r\n return (\r\n \r\n {predictiveTargetingText}\r\n \r\n );\r\n};\r\n\r\nPredictiveTargeting.propTypes = {\r\n isPredictiveTargetingEnabled: PropTypes.bool,\r\n};\r\n\r\nPredictiveTargeting.defaultProps = {\r\n isPredictiveTargetingEnabled: false,\r\n};\r\n","import React, { useContext, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\nimport { getDateSettingDetails } from '@bingads-webui-campaign/date-setting';\r\n\r\nexport const StartEndDates = ({\r\n startDate, endDate, isUseCampaignLevelDates, isDateLevelDisplayed,\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n const dateSettings = useMemo(\r\n () => getDateSettingDetails(i18n, startDate, endDate, isUseCampaignLevelDates, isDateLevelDisplayed),\r\n [i18n, startDate, endDate, isUseCampaignLevelDates, isDateLevelDisplayed]\r\n );\r\n\r\n return (\r\n \r\n {dateSettings}\r\n \r\n );\r\n};\r\n\r\nStartEndDates.propTypes = {\r\n startDate: PropTypes.string.isRequired,\r\n endDate: PropTypes.string,\r\n isUseCampaignLevelDates: PropTypes.bool,\r\n isDateLevelDisplayed: PropTypes.bool,\r\n};\r\n\r\nStartEndDates.defaultProps = {\r\n endDate: null,\r\n isUseCampaignLevelDates: false,\r\n isDateLevelDisplayed: false,\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { syndEnum } from '@bingads-webui-campaign-react/constants';\r\n\r\n// Does not support campaign type specific localization\r\nconst getLocalizationMapping = (adDistribution) => {\r\n switch (adDistribution) {\r\n case syndEnum.BingYahooOnly:\r\n return _TL_('Microsoft sites and select traffic');\r\n case syndEnum.SearchPartnersOnly:\r\n return _TL_('Only partner traffic');\r\n case syndEnum.BingYahooAndSearchPartners:\r\n default:\r\n return _TL_('The entire Microsoft Advertising Network (recommended)');\r\n }\r\n};\r\n\r\nexport const AdDistribution = ({ adDistribution }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n \r\n {i18n.getString(getLocalizationMapping(adDistribution))}\r\n \r\n );\r\n};\r\n\r\nAdDistribution.propTypes = {\r\n adDistribution: PropTypes.string.isRequired,\r\n};\r\n","import _ from 'underscore';\r\nimport React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\n\r\nconst formatKeywords = ({ i18n, data, showLength }) => {\r\n if (_.isEmpty(data) || data.total === 0 || _.isEmpty(data.value)) {\r\n return i18n.getString(_TL_('No keyword'));\r\n }\r\n const len = data.total;\r\n if (len > showLength) {\r\n let detail = data.value.slice(0, showLength).map(keyword => keyword.Text).join(i18n.getString(_TL_(', ')));\r\n detail += i18n.getString(_TL_('... +{{count}} more'), { count: len - showLength });\r\n return detail;\r\n }\r\n return data.value.map(keyword => keyword.Text).join(i18n.getString(_TL_(', ')));\r\n};\r\n\r\nexport const Keywords = ({ data, showLength }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n \r\n {formatKeywords({ i18n, data, showLength })}\r\n \r\n );\r\n};\r\n\r\nKeywords.propTypes = {\r\n data: PropTypes.shape({\r\n value: PropTypes.arrayOf(PropTypes.shape({\r\n Text: PropTypes.string,\r\n })),\r\n total: PropTypes.number,\r\n }),\r\n showLength: PropTypes.number,\r\n};\r\n\r\nKeywords.defaultProps = {\r\n data: {},\r\n showLength: 10,\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\n\r\nconst formatText = ({ data, i18n }) => {\r\n if (!data || data.length === 0) {\r\n return i18n.getString(_TL_('All genres'));\r\n }\r\n\r\n if (data.length === 1) {\r\n return i18n.getString(_TL_('1 genre'));\r\n }\r\n\r\n return i18n.getString(_TL_('{{count}} genres'), { count: data.length });\r\n};\r\n\r\nexport const Genre = ({ genreTargets }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n \r\n {formatText({ data: genreTargets, i18n })}\r\n \r\n );\r\n};\r\n\r\nGenre.propTypes = {\r\n genreTargets: PropTypes.arrayOf(PropTypes.shape({})),\r\n};\r\n\r\nGenre.defaultProps = {\r\n genreTargets: [],\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\n\r\nexport const Disclaimer = ({ data }) => {\r\n const i18n = useContext(I18nContext);\r\n const disclaimerName = data?.Name || '';\r\n const disclaimerText = disclaimerName.length > 0 ? i18n.getString(_TL_('{{disclaimerName}}'), { disclaimerName }) : i18n.getString(_TL_('No disclaimer selected'));\r\n\r\n return (\r\n \r\n {disclaimerText}\r\n \r\n );\r\n};\r\n\r\nDisclaimer.propTypes = {\r\n data: PropTypes.shape({\r\n Name: PropTypes.string,\r\n }),\r\n};\r\n\r\nDisclaimer.defaultProps = {\r\n data: {\r\n Name: '',\r\n },\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { CommonTarget } from './common-targeting';\r\n\r\nexport const CompanyName = ({ companyTargets, negativeCompanyTargets }) => (\r\n \r\n);\r\n\r\nCompanyName.propTypes = {\r\n companyTargets: PropTypes.arrayOf(PropTypes.shape({})),\r\n negativeCompanyTargets: PropTypes.arrayOf(PropTypes.shape({})),\r\n};\r\n\r\nCompanyName.defaultProps = {\r\n companyTargets: [],\r\n negativeCompanyTargets: [],\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { CommonTarget } from './common-targeting';\r\n\r\nexport const JobFunction = ({ jobTargets, negativeJobTargets }) => (\r\n \r\n);\r\n\r\nJobFunction.propTypes = {\r\n jobTargets: PropTypes.arrayOf(PropTypes.shape({})),\r\n negativeJobTargets: PropTypes.arrayOf(PropTypes.shape({})),\r\n};\r\n\r\nJobFunction.defaultProps = {\r\n jobTargets: [],\r\n negativeJobTargets: [],\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { CommonTarget } from './common-targeting';\r\n\r\nexport const Industry = ({ industryTargets, negativeIndustryTargets }) => (\r\n \r\n);\r\n\r\nIndustry.propTypes = {\r\n industryTargets: PropTypes.arrayOf(PropTypes.shape({})),\r\n negativeIndustryTargets: PropTypes.arrayOf(PropTypes.shape({})),\r\n};\r\n\r\nIndustry.defaultProps = {\r\n industryTargets: [],\r\n negativeIndustryTargets: [],\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\n\r\nexport const formatConversionGoals = (i18n, conversionGoals) => {\r\n if (conversionGoals && conversionGoals.goalScopeSelection === 'account-scope') {\r\n return i18n.getString(_TL_('Account level conversion goals'));\r\n }\r\n\r\n const goalSelection = (conversionGoals && conversionGoals.goalSelection) || [];\r\n\r\n if (goalSelection.length === 1) {\r\n return i18n.getString(_TL_('1 conversion goal'));\r\n } else if (goalSelection.length > 1) {\r\n return i18n.getString(_TL_('{{count}} conversion goals'), { count: goalSelection.length });\r\n }\r\n\r\n return i18n.getString(_TL_('No conversion goals'));\r\n};\r\n\r\nexport const ConversionGoals = ({ conversionGoals }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n \r\n {formatConversionGoals(i18n, conversionGoals)}\r\n \r\n );\r\n};\r\n\r\nConversionGoals.propTypes = {\r\n conversionGoals: PropTypes.shape({}),\r\n};\r\n\r\nConversionGoals.defaultProps = {\r\n conversionGoals: null,\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\n\r\nexport const BudgetTypes = {\r\n DailyStandard: 'DailyStandard',\r\n LifetimeBudgetStandard: 'LifetimeBudgetStandard',\r\n};\r\n\r\n\r\nconst formatBudget = (i18n, data, currencyCode) => {\r\n if (!data) {\r\n return i18n.getString(_TL_('No budget'));\r\n }\r\n\r\n const { Amount, Id, Type } = data;\r\n\r\n if (Id) {\r\n return i18n.getString(_TL_('Budget applied from shared library'));\r\n }\r\n\r\n const currencySymbol = i18n.getCurrencySymbol(currencyCode);\r\n\r\n if (Type === BudgetTypes.LifetimeBudgetStandard) {\r\n return `${currencySymbol}${Amount} ${i18n.getString(_TL_('campaign total'))}`;\r\n }\r\n\r\n return `${currencySymbol}${Amount}/${i18n.getString(_TL_('day'))}`;\r\n};\r\n\r\nexport const Budget = ({ data, currencyCode }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n \r\n {formatBudget(i18n, data, currencyCode)}\r\n \r\n );\r\n};\r\n\r\nBudget.propTypes = {\r\n data: PropTypes.shape({}),\r\n currencyCode: PropTypes.string,\r\n};\r\n\r\nBudget.defaultProps = {\r\n data: null,\r\n currencyCode: 'USD',\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\nimport { getBidTitleDetails } from '@bingads-webui-campaign-react/wizard-shared-components';\r\n\r\nconst formatBidStrategy = (i18n, data) => getBidTitleDetails(i18n, data);\r\n\r\n\r\nexport const BidStrategy = ({ data }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n \r\n {formatBidStrategy(i18n, data)}\r\n \r\n );\r\n};\r\n\r\nBidStrategy.propTypes = {\r\n data: PropTypes.shape({}),\r\n};\r\n\r\nBidStrategy.defaultProps = {\r\n data: {},\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\n\r\nexport const formatBidValue = (i18n, data, currencyCode) => {\r\n if (!data) {\r\n return i18n.getString(_TL_('No bid value'));\r\n }\r\n\r\n return `${i18n.getCurrencySymbol(currencyCode)}${data} ${currencyCode}`;\r\n};\r\n\r\nexport const BidValue = ({ data, currencyCode }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n \r\n {formatBidValue(i18n, data, currencyCode)}\r\n \r\n );\r\n};\r\n\r\nBidValue.propTypes = {\r\n data: PropTypes.string,\r\n currencyCode: PropTypes.string,\r\n};\r\n\r\nBidValue.defaultProps = {\r\n data: '',\r\n currencyCode: 'USD',\r\n};\r\n","import React, { useContext, useMemo } from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\nimport { campaignLanguageStrings } from '@bingads-webui-campaign-react/language-target';\r\n\r\nexport const Languages = ({ data }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n // format languages\r\n const formattedLanguages = useMemo(() => _.map(data, language => i18n.getString(campaignLanguageStrings[language] || language)).toString(), [i18n, data]);\r\n\r\n return (\r\n \r\n {formattedLanguages}\r\n \r\n );\r\n};\r\n\r\nLanguages.propTypes = {\r\n data: PropTypes.arrayOf(PropTypes.string),\r\n};\r\n\r\nLanguages.defaultProps = {\r\n data: [],\r\n};\r\n","import React, { useContext, useMemo } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\n\r\nexport const AudienceSignal = ({ data }) => {\r\n const i18n = useContext(I18nContext);\r\n // get audience signal name\r\n const audienceSignalName = useMemo(() => data && data.Name, [data]);\r\n\r\n return (\r\n \r\n {audienceSignalName || i18n.getString(_TL_('No audience signal'))}\r\n \r\n );\r\n};\r\n\r\nAudienceSignal.propTypes = {\r\n data: PropTypes.arrayOf(PropTypes.string),\r\n};\r\n\r\nAudienceSignal.defaultProps = {\r\n data: [],\r\n};\r\n","import React, { useContext, useEffect, useState } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport PropTypes from 'prop-types';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\nimport { Shimmer } from '@fluentui/react';\r\nimport { ImageListSummaryCardDetails, processImageListModelToViewModel } from '@bingads-webui-campaign-react/pmax-image-experience';\r\n\r\nexport const Images = ({\r\n data,\r\n shouldFetchFromMT,\r\n cid,\r\n aid,\r\n isLogo,\r\n label,\r\n}) => {\r\n // get images\r\n const i18n = useContext(I18nContext);\r\n\r\n const [images, setImages] = useState({});\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n if (shouldFetchFromMT) {\r\n setIsLoading(true);\r\n // fetch images from MT\r\n processImageListModelToViewModel(data.ImageAssets, cid, aid).on({\r\n onSuccess: (loadedImageList) => {\r\n setImages({\r\n ImageList: loadedImageList,\r\n });\r\n setIsLoading(false);\r\n },\r\n onError: () => {\r\n setImages({});\r\n setIsLoading(false);\r\n },\r\n });\r\n }\r\n }, [aid, cid, data.ImageAssets, shouldFetchFromMT]);\r\n\r\n return (\r\n \r\n {\r\n isLoading\r\n ? \r\n : \r\n }\r\n \r\n );\r\n};\r\n\r\nImages.propTypes = {\r\n data: PropTypes.shape({\r\n ImageAssets: PropTypes.arrayOf(PropTypes.shape({})),\r\n }),\r\n shouldFetchFromMT: PropTypes.bool,\r\n aid: PropTypes.string,\r\n cid: PropTypes.string,\r\n isLogo: PropTypes.bool,\r\n label: PropTypes.string,\r\n};\r\n\r\nImages.defaultProps = {\r\n data: {},\r\n shouldFetchFromMT: false,\r\n aid: null,\r\n cid: null,\r\n isLogo: false,\r\n label: _TL_('Images'),\r\n};\r\n","import React, { useContext, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { getStoreTitleDetails } from '@bingads-webui-campaign-react/wizard-shared-components';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nconst getStoreInfoStyle = () => ({\r\n storeTitleDetails: {\r\n whiteSpace: 'normal',\r\n },\r\n});\r\n\r\nexport const StoreInfo = ({ data }) => {\r\n const i18n = useContext(I18nContext);\r\n const classes = useDefaultStyles(getStoreInfoStyle);\r\n\r\n const {\r\n ProviderId,\r\n IsFeedFiltered,\r\n SalesCountry,\r\n FeedLabel,\r\n LocalInventoryAdsEnabled,\r\n storesData,\r\n } = data || {};\r\n\r\n const storeContainerData = useMemo(() => ({\r\n ProviderId,\r\n IsFeedFiltered,\r\n SalesCountry,\r\n FeedLabel,\r\n LocalInventoryAdsEnabled,\r\n }), [ProviderId, IsFeedFiltered, SalesCountry, FeedLabel, LocalInventoryAdsEnabled]);\r\n\r\n return (\r\n \r\n
{storesData && getStoreTitleDetails(i18n, storesData, storeContainerData)}
\r\n
\r\n );\r\n};\r\n\r\nStoreInfo.propTypes = {\r\n data: PropTypes.shape({\r\n ProviderId: PropTypes.string,\r\n IsFeedFiltered: PropTypes.bool,\r\n SalesCountry: PropTypes.string,\r\n FeedLabel: PropTypes.string,\r\n LocalInventoryAdsEnabled: PropTypes.bool,\r\n }).isRequired,\r\n};\r\n","import React, { useContext, useMemo } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\n\r\nexport const AutoGeneratedAssets = ({ data }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n const {\r\n autoGeneratedTextOptOut,\r\n autoGeneratedImageOptOut,\r\n finalUrlExpansionOptOut,\r\n } = data || {};\r\n\r\n const autoGenAssetsSummary = useMemo(() => {\r\n if (finalUrlExpansionOptOut && autoGeneratedTextOptOut && autoGeneratedImageOptOut) {\r\n return i18n.getString(_TL_('Off: Do not use autogenerated assets in ads.'));\r\n }\r\n return i18n.getString(_TL_('On: You’ve enabled autogenerated assets for your ads.'));\r\n }, [i18n, finalUrlExpansionOptOut, autoGeneratedTextOptOut, autoGeneratedImageOptOut]);\r\n\r\n return (\r\n \r\n {autoGenAssetsSummary}\r\n \r\n );\r\n};\r\n\r\nAutoGeneratedAssets.propTypes = {\r\n data: PropTypes.shape({\r\n autoGeneratedTextOptOut: PropTypes.bool,\r\n autoGeneratedImageOptOut: PropTypes.bool,\r\n finalUrlExpansionOptOut: PropTypes.bool,\r\n finalUrlExpansions: PropTypes.arrayOf(PropTypes.string),\r\n }),\r\n};\r\n\r\nAutoGeneratedAssets.defaultProps = {\r\n data: {},\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\nimport { getUrlOptionsDetails } from '@bingads-webui-campaign-react/url-options';\r\n\r\nexport const UrlOptions = ({ data }) => {\r\n const i18n = useContext(I18nContext);\r\n const urlOptionsDetails = getUrlOptionsDetails(i18n, data);\r\n\r\n return (\r\n \r\n {urlOptionsDetails}\r\n \r\n );\r\n};\r\n\r\nUrlOptions.propTypes = {\r\n data: PropTypes.shape({\r\n TrackingUrlTemplate: PropTypes.string,\r\n FinalUrlSuffix: PropTypes.string,\r\n UrlCustomParameters: PropTypes.arrayOf(PropTypes.shape({\r\n Key: PropTypes.string,\r\n Value: PropTypes.string,\r\n })),\r\n }),\r\n};\r\n\r\nUrlOptions.defaultProps = {\r\n data: {\r\n TrackingUrlTemplate: '',\r\n FinalUrlSuffix: '',\r\n UrlCustomParameters: [],\r\n },\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\n\r\nconst formatBidValue = (i18n, targetCpa, currencyCode) => {\r\n if (!targetCpa) {\r\n return i18n.getString(_TL_('No bid value'));\r\n }\r\n return `${i18n.getCurrencySymbol(currencyCode)}${targetCpa} ${currencyCode}`;\r\n};\r\n\r\nconst formatRoasValue = (i18n, targetRoas) => {\r\n if (!targetRoas) {\r\n return i18n.getString(_TL_('No bid value'));\r\n }\r\n return `${targetRoas * 100} %`;\r\n};\r\n\r\nexport const BidTarget = ({ data, currencyCode }) => {\r\n const i18n = useContext(I18nContext);\r\n const {\r\n Type,\r\n TargetRoas,\r\n TargetCpa,\r\n } = data || {};\r\n\r\n let label = null;\r\n let targetValue = null;\r\n if (Type === 'MaxConversions') {\r\n label = _TL_('Target CPA');\r\n targetValue = formatBidValue(i18n, TargetCpa, currencyCode);\r\n } else {\r\n label = _TL_('Target ROAS');\r\n targetValue = formatRoasValue(i18n, TargetRoas);\r\n }\r\n\r\n return (\r\n \r\n {targetValue}\r\n \r\n );\r\n};\r\n\r\nBidTarget.propTypes = {\r\n data: PropTypes.shape({\r\n Type: PropTypes.string,\r\n TargetRoas: PropTypes.number,\r\n TargetCpa: PropTypes.number,\r\n }),\r\n currencyCode: PropTypes.string,\r\n};\r\n\r\nBidTarget.defaultProps = {\r\n data: {\r\n Type: '',\r\n TargetRoas: null,\r\n TargetCpa: null,\r\n },\r\n currencyCode: 'USD',\r\n};\r\n","import React, { useContext } from 'react';\r\nimport _ from 'underscore';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\n\r\nconst getExpansionsSummary = (i18n, finalUrlExpansions) => {\r\n const exactUrls = [];\r\n const rules = [];\r\n\r\n _.each(finalUrlExpansions, (target) => {\r\n const conditions = target.Criterion.WebPage.Parameter.Conditions;\r\n _.each(conditions, (condition) => {\r\n if (condition.Operator === 'Equals') {\r\n exactUrls.push(condition.ArgumentOperand);\r\n } else {\r\n rules.push(`URL contains ${condition.ArgumentOperand}`);\r\n }\r\n });\r\n });\r\n\r\n const exactUrlsDetails = exactUrls.length > 0 ? `${i18n.getString(_TL_('Excluded URLs: '))}${exactUrls.join(', ')}` : null;\r\n const rulesDetails = rules.length > 0 ? `${i18n.getString(_TL_('Exclusion rules: '))}${rules.join(', ')}`:null;\r\n\r\n if (exactUrlsDetails && rulesDetails) {\r\n return `${exactUrlsDetails}; ${rulesDetails}`;\r\n }\r\n return exactUrlsDetails || rulesDetails || i18n.getString(_TL_('You’ve disabled Final URL expansion'));\r\n};\r\n\r\nexport const FinalURLExpansions = ({ data }) => {\r\n const i18n = useContext(I18nContext);\r\n const { finalUrlExpansions } = data || {};\r\n\r\n return (\r\n \r\n {getExpansionsSummary(i18n, finalUrlExpansions)}\r\n \r\n );\r\n};\r\n\r\nFinalURLExpansions.propTypes = {\r\n data: PropTypes.shape({\r\n finalUrlExpansions: PropTypes.arrayOf(PropTypes.string),\r\n }),\r\n};\r\n\r\nFinalURLExpansions.defaultProps = {\r\n data: {},\r\n};\r\n","import React, { useContext } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\n\r\nexport const getSearchThemeDetails = (i18n, searchThemes) => {\r\n if (searchThemes && searchThemes.length > 0) {\r\n return searchThemes.map(item => item.SearchTheme).join(', ');\r\n }\r\n return i18n.getString(_TL_('No search themes added'));\r\n};\r\n\r\nexport const SearchThemes = ({ data }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n \r\n {getSearchThemeDetails(i18n, data)}\r\n \r\n );\r\n};\r\n\r\nSearchThemes.propTypes = {\r\n data: PropTypes.arrayOf(PropTypes.string),\r\n};\r\n\r\nSearchThemes.defaultProps = {\r\n data: [],\r\n};\r\n","import React, { useContext, useMemo } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\n\r\nexport const CostPerSale = ({ data }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n const { costPerSaleOptOut } = data || {};\r\n\r\n const costPerSaleSummary = useMemo(() => {\r\n if (costPerSaleOptOut) {\r\n return i18n.getString(_TL_('Off'));\r\n }\r\n return i18n.getString(_TL_('On'));\r\n }, [i18n, costPerSaleOptOut]);\r\n\r\n return (\r\n \r\n {costPerSaleSummary}\r\n \r\n );\r\n};\r\n\r\nCostPerSale.propTypes = {\r\n data: PropTypes.shape({\r\n costPerSaleOptOut: PropTypes.bool,\r\n }),\r\n};\r\n\r\nCostPerSale.defaultProps = {\r\n data: {},\r\n};\r\n","import React, { useContext } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport PropTypes from 'prop-types';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\nimport { UrlOptionsDetailsWithRules } from '@bingads-webui-campaign-react/url-rules';\r\n\r\nexport const UrlRules = ({ data }) => {\r\n const i18n = useContext(I18nContext);\r\n const {\r\n finalUrls, path1, path2, mobileFinalUrls, urlRules,\r\n } = data || {};\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nUrlRules.propTypes = {\r\n data: PropTypes.shape({\r\n finalUrls: PropTypes.arrayOf(PropTypes.string),\r\n path1: PropTypes.string,\r\n path2: PropTypes.string,\r\n mobileFinalUrls: PropTypes.arrayOf(PropTypes.string),\r\n urlRules: PropTypes.arrayOf(PropTypes.shape({})),\r\n }),\r\n};\r\n\r\nUrlRules.defaultProps = {\r\n data: {\r\n finalUrls: [],\r\n path1: '',\r\n path2: '',\r\n mobileFinalUrls: [],\r\n urlRules: [],\r\n },\r\n};\r\n","import React, { useContext, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { get } from 'underscore';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\n\r\nexport const NewCustomerAcquisition = ({ data, currencyCode }) => {\r\n const i18n = useContext(I18nContext);\r\n const { newCustomerAcquisitionOptOut, newCustomerAcquisition } = data || {};\r\n const { campaignSettings, accountSettings } = newCustomerAcquisition || {};\r\n\r\n const summary = useMemo(() => {\r\n let summaryText = newCustomerAcquisitionOptOut ? i18n.getString(_TL_('Off')) : i18n.getString(_TL_('On'));\r\n\r\n if (!newCustomerAcquisitionOptOut) {\r\n const bidOnlyMode = get(campaignSettings, 'bidOnlyMode', false);\r\n const campaignAdditionalValue = get(campaignSettings, 'additionalConversionValue', 0) || 0;\r\n const accountAdditionalValue = get(accountSettings, 'additionalConversionValue', 0) || 0;\r\n\r\n if (!bidOnlyMode) {\r\n if (campaignAdditionalValue !== 0) {\r\n summaryText += i18n.getString(_TL_('; Bid higher for new customers; Additional conversion value'));\r\n summaryText += ` ${i18n.formatCurrency(campaignAdditionalValue, currencyCode)}`;\r\n } else {\r\n summaryText += i18n.getString(_TL_('; Bid higher for new customers; Additional conversion value (account level setting)'));\r\n summaryText += ` ${i18n.formatCurrency(accountAdditionalValue, currencyCode)}`;\r\n }\r\n } else {\r\n summaryText += i18n.getString(_TL_('; Bid only for new customers'));\r\n }\r\n }\r\n\r\n return summaryText;\r\n }, [accountSettings, campaignSettings, currencyCode, i18n, newCustomerAcquisitionOptOut]);\r\n\r\n return (\r\n \r\n {summary}\r\n \r\n );\r\n};\r\n\r\nNewCustomerAcquisition.propTypes = {\r\n data: PropTypes.shape({\r\n newCustomerAcquisitionOptOut: PropTypes.bool,\r\n newCustomerAcquisition: PropTypes.shape({\r\n campaignSettings: PropTypes.shape({}),\r\n accountSettings: PropTypes.shape({}),\r\n }),\r\n }),\r\n currencyCode: PropTypes.string,\r\n};\r\n\r\nNewCustomerAcquisition.defaultProps = {\r\n data: {\r\n newCustomerAcquisitionOptOut: true,\r\n newCustomerAcquisition: {\r\n campaignSettings: {},\r\n accountSettings: {},\r\n },\r\n },\r\n currencyCode: '',\r\n};\r\n","import React, { useContext } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport PropTypes from 'prop-types';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\nimport { ImageListSummaryCardDetails } from '@bingads-webui-campaign-react/pmax-image-experience';\r\n\r\nexport const Videos = ({\r\n data,\r\n label,\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nVideos.propTypes = {\r\n data: PropTypes.arrayOf(PropTypes.shape({})),\r\n label: PropTypes.string,\r\n};\r\n\r\nVideos.defaultProps = {\r\n data: [],\r\n label: _TL_('Videos'),\r\n};\r\n","import {\r\n AdCreation,\r\n AdCreationPreview,\r\n Store,\r\n ProductCollections,\r\n LocalInventory,\r\n Products,\r\n Feeds,\r\n LocationTargeting,\r\n AgeRangeTargeting,\r\n GenderTargeting,\r\n AdSchedule,\r\n AdScheduleWithBidAdjustments,\r\n StartEndDates,\r\n AdDistribution,\r\n Audience,\r\n Interest,\r\n PredictiveTargeting,\r\n CompanyName,\r\n JobFunction,\r\n Industry,\r\n ConversionGoals,\r\n Budget,\r\n BidStrategy,\r\n BidValue,\r\n Languages,\r\n AudienceSignal,\r\n Images,\r\n LongHeadlinesSummary,\r\n DescriptionsSummary,\r\n HeadlinesSummary,\r\n StoreInfo,\r\n ListingGroup,\r\n AutoGeneratedAssets,\r\n UrlOptions,\r\n BidTarget,\r\n FinalURLExpansions,\r\n Keywords,\r\n SearchThemes,\r\n CostPerSale,\r\n UrlRules,\r\n Genre,\r\n NewCustomerAcquisition,\r\n Videos,\r\n Disclaimer,\r\n} from './components';\r\n\r\nexport const summaryPageComponentTypes = {\r\n 'ad-creation': AdCreation,\r\n 'ad-creation-preview': AdCreationPreview,\r\n store: Store,\r\n 'product-collections': ProductCollections,\r\n 'local-inventory': LocalInventory,\r\n feeds: Feeds,\r\n products: Products,\r\n 'location-targeting': LocationTargeting,\r\n 'age-range-targeting': AgeRangeTargeting,\r\n 'gender-targeting': GenderTargeting,\r\n 'genre-targeting': Genre,\r\n 'ad-schedule': AdSchedule,\r\n 'ad-schedule-with-bid-adjustments': AdScheduleWithBidAdjustments,\r\n 'start-end-dates': StartEndDates,\r\n 'ad-distribution': AdDistribution,\r\n interest: Interest,\r\n audience: Audience,\r\n company: CompanyName,\r\n industry: Industry,\r\n 'job-function': JobFunction,\r\n 'predictive-targeting': PredictiveTargeting,\r\n 'conversion-goals': ConversionGoals,\r\n budget: Budget,\r\n 'bid-strategy': BidStrategy,\r\n 'bid-value': BidValue,\r\n languages: Languages,\r\n 'audience-signal': AudienceSignal,\r\n images: Images,\r\n 'long-headlines': LongHeadlinesSummary,\r\n descriptions: DescriptionsSummary,\r\n headlines: HeadlinesSummary,\r\n 'store-info': StoreInfo,\r\n 'listing-group': ListingGroup,\r\n 'auto-generated-assets': AutoGeneratedAssets,\r\n 'url-options': UrlOptions,\r\n 'bid-target': BidTarget,\r\n 'final-url-expansions': FinalURLExpansions,\r\n keywords: Keywords,\r\n 'search-themes': SearchThemes,\r\n 'cost-per-sale': CostPerSale,\r\n 'url-rules': UrlRules,\r\n 'new-customer-acquisition': NewCustomerAcquisition,\r\n videos: Videos,\r\n disclaimer: Disclaimer,\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\n\r\nexport const AdCreation = ({ numAds }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n \r\n {`${numAds} ${numAds === 1 ? i18n.getString(_TL_('Ad')) : i18n.getString(_TL_('Ads'))}`}\r\n \r\n );\r\n};\r\n\r\nAdCreation.propTypes = {\r\n numAds: PropTypes.number.isRequired,\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { getHeadlinesCardSummaryDetails, getLongHeadlinesCardSummaryDetails, getDescriptionsCardSummaryDetails } from '@bingads-webui-campaign-react/validated-text-collection';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\n\r\nexport const HeadlinesSummary = ({\r\n data: headlines,\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n \r\n \r\n {getHeadlinesCardSummaryDetails(i18n, headlines)}\r\n \r\n \r\n );\r\n};\r\n\r\nHeadlinesSummary.propTypes = {\r\n data: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n};\r\n\r\n\r\nexport const LongHeadlinesSummary = ({\r\n data: longHeadlines,\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n \r\n \r\n {getLongHeadlinesCardSummaryDetails(i18n, longHeadlines)}\r\n \r\n \r\n );\r\n};\r\n\r\nLongHeadlinesSummary.propTypes = {\r\n data: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n};\r\n\r\nexport const DescriptionsSummary = ({\r\n data: descriptions,\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n \r\n \r\n {getDescriptionsCardSummaryDetails(i18n, descriptions)}\r\n \r\n \r\n );\r\n};\r\n\r\nDescriptionsSummary.propTypes = {\r\n data: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n};\r\n","import React, { useContext, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { getListingGroupDetails } from '@bingads-webui-campaign-react/wizard-shared-components';\r\nimport { PropertyRow } from '@bingads-webui-campaign-react/ui-generator';\r\n\r\nexport const ListingGroup = ({ data }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n const {\r\n productFilter,\r\n listingGroup,\r\n } = data || {};\r\n\r\n const listingGroupDetails = useMemo(() => getListingGroupDetails(\r\n i18n,\r\n !!productFilter,\r\n {\r\n productFilter,\r\n listingGroup,\r\n }\r\n ), [i18n, listingGroup, productFilter]);\r\n\r\n return (\r\n \r\n
{listingGroupDetails}
\r\n
\r\n );\r\n};\r\n\r\nListingGroup.propTypes = {\r\n data: PropTypes.shape({\r\n listingGroup: PropTypes.shape({}),\r\n productFilter: PropTypes.shape({}),\r\n }).isRequired,\r\n};\r\n","/* eslint-disable no-unused-expressions */\r\n/* eslint-disable jsx-a11y/no-static-element-interactions */\r\nimport React from 'react';\r\nimport { result } from 'underscore';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst setTranslateX = (el, value) => {\r\n // eslint-disable-next-line no-param-reassign\r\n el && el.style && (el.style.transform = `matrix(1, 0, 0, 1, ${value}, 0)`);\r\n};\r\nconst getTranslateX = (el) => {\r\n const matrix = el.style.transform.replace(/\\s/g, '');\r\n const arr = matrix.split(',');\r\n const translateX = result(arr, 4, '0');\r\n return parseInt(translateX, 10);\r\n};\r\n\r\nexport class VirtualScrollbar extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.view = React.createRef();\r\n this.child = React.createRef();\r\n this.isDown = false;\r\n this.prev = 0;\r\n }\r\n\r\n componentDidMount() {\r\n this.view.current.addEventListener('scroll', this.onViewScroll);\r\n document.addEventListener('mousemove', this.onMouseMove);\r\n document.addEventListener('mouseup', this.onMouseUp);\r\n }\r\n\r\n componentWillUnmount() {\r\n this.view.current.removeEventListener('scroll', this.onViewScroll);\r\n document.removeEventListener('mousemove', this.onMouseMove);\r\n document.removeEventListener('mouseup', this.onMouseUp);\r\n }\r\n\r\n onMouseUp = () => {\r\n this.isDown = false;\r\n }\r\n\r\n onMouseDown = (e) => {\r\n this.isDown = true;\r\n\r\n let offsetLeft;\r\n if (this.child.current.style.transform) {\r\n offsetLeft = getTranslateX(this.child.current);\r\n } else {\r\n offsetLeft = 0;\r\n }\r\n this.prev = offsetLeft - e.clientX;\r\n }\r\n\r\n onMouseMove = (e) => {\r\n if (this.isDown) {\r\n let offsetX = e.clientX + this.prev;\r\n const thumbWidth = (this.props.width * this.props.width) / this.props.viewWidth;\r\n\r\n // set virtual bar\r\n if (offsetX < 0) {\r\n offsetX = 0;\r\n } else if (offsetX > this.props.width - thumbWidth) {\r\n offsetX = this.props.width - thumbWidth;\r\n }\r\n setTranslateX(this.child.current, offsetX);\r\n\r\n // set physical bar\r\n const viewOffsetX = (offsetX / this.props.width) * this.props.viewWidth;\r\n this.view.current.scrollLeft = viewOffsetX;\r\n }\r\n }\r\n\r\n onViewScroll = (e) => {\r\n const viewOffsetX = e.target.scrollLeft;\r\n const offsetX = (viewOffsetX / this.props.viewWidth) * this.props.width;\r\n setTranslateX(this.child.current, offsetX);\r\n }\r\n\r\n render() {\r\n const parentStyle = {\r\n ...this.props.style,\r\n width: this.props.width,\r\n height: this.props.height,\r\n };\r\n\r\n const childStyle = {\r\n width: (this.props.width * this.props.width) / this.props.viewWidth,\r\n height: this.props.height,\r\n userSelect: 'none',\r\n };\r\n\r\n return (\r\n
\r\n
{React.cloneElement(this.props.children, { ref: this.view })}
\r\n \r\n \r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nVirtualScrollbar.propTypes = {\r\n height: PropTypes.number,\r\n width: PropTypes.number.isRequired,\r\n viewWidth: PropTypes.number.isRequired,\r\n children: PropTypes.element.isRequired,\r\n // eslint-disable-next-line react/forbid-prop-types\r\n style: PropTypes.object,\r\n};\r\n\r\nVirtualScrollbar.defaultProps = {\r\n height: 15,\r\n style: {},\r\n};\r\n","/* eslint-disable no-nested-ternary */\r\n/* eslint-disable react/forbid-prop-types */\r\n/* eslint-disable no-underscore-dangle */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { extend, defaults, delay } from 'underscore';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { VirtualScrollbar } from './virtual-scrollbar';\r\n\r\nconst SCROLLBAR_HEIGHT = 17;\r\nconst MARGIN_RIGHT = 17;\r\nconst VIRTUAL_SCROLLBAR_HEIGHT = 14;\r\n\r\nconst getTablePageStyles = () => extend({\r\n scrollBarView: {\r\n marginRight: MARGIN_RIGHT,\r\n overflow: 'auto',\r\n scrollbarWidth: 'none',\r\n '&::-webkit-scrollbar': {\r\n display: 'none',\r\n },\r\n },\r\n});\r\n\r\nclass UnStyledScrollbar extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.unmounted = false;\r\n this.pgridView = props.pgridView;\r\n this.state = { bottom: '0', positionStatic: false };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.unmounted = true;\r\n }\r\n\r\n render() {\r\n if (this.props.pgridView) {\r\n const $table = this.props.pgridView.$el.find('.table-container');\r\n if ($table.length > 0) {\r\n delay(() => {\r\n if (this.unmounted) {\r\n return;\r\n }\r\n\r\n let bottom;\r\n let positionStatic;\r\n const $tfoot = $table.find('tfoot');\r\n\r\n if ($tfoot && $tfoot.offset().top !== 0) { // if tfoot visible\r\n bottom = $tfoot.height() - VIRTUAL_SCROLLBAR_HEIGHT;\r\n } else {\r\n bottom = 'auto';\r\n }\r\n if ($tfoot.children().length === 0) { // if tfoot has no child\r\n positionStatic = 'static';\r\n }\r\n\r\n if (bottom !== this.state.bottom || this.state.positionStatic !== positionStatic) {\r\n this.setState({ bottom, positionStatic });\r\n }\r\n }, 100);\r\n }\r\n }\r\n\r\n const fixedBottomOffset = this.props.containerOverflowX ? SCROLLBAR_HEIGHT : 0;\r\n\r\n const parentStyle = defaults(\r\n { display: this.props.shouldDisplay ? 'block' : 'none' },\r\n { position: this.props.positionFixed ? 'fixed' : this.state.positionStatic ? 'static' : 'absolute' },\r\n { bottom: this.props.positionFixed ? fixedBottomOffset : this.state.bottom },\r\n { width: this.props.width }\r\n );\r\n\r\n return (\r\n \r\n
\r\n {this.props.children}\r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nUnStyledScrollbar.propTypes = {\r\n children: PropTypes.object.isRequired,\r\n pgridView: PropTypes.object,\r\n classes: PropTypes.object.isRequired,\r\n shouldDisplay: PropTypes.bool,\r\n positionFixed: PropTypes.bool,\r\n gridViewWidth: PropTypes.number,\r\n width: PropTypes.number,\r\n containerOverflowX: PropTypes.bool,\r\n gridPaddingLeft: PropTypes.number,\r\n};\r\n\r\nUnStyledScrollbar.defaultProps = {\r\n pgridView: null,\r\n shouldDisplay: false,\r\n positionFixed: false,\r\n gridViewWidth: 0,\r\n width: 0,\r\n containerOverflowX: false,\r\n gridPaddingLeft: 32,\r\n};\r\n\r\nexport const Scrollbar = withDefaultStyles(UnStyledScrollbar, getTablePageStyles);\r\n","/* eslint-disable react/sort-comp,react/forbid-prop-types */\r\nimport classNames from 'classnames';\r\nimport React, { Fragment } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n result,\r\n chain,\r\n reduce,\r\n extend,\r\n max,\r\n throttle,\r\n map,\r\n contains,\r\n keys,\r\n isEmpty,\r\n isString,\r\n} from 'underscore';\r\nimport $ from 'jquery';\r\nimport { ResizeObserver as ResizeObserverPollyFill } from '@juggle/resize-observer';\r\n\r\nimport { Constants } from '@bingads-webui-theme-2018/theme-fluent';\r\nimport { DisclaimerBanner } from '@bingads-webui-campaign-react/help';\r\nimport { ContentFooter } from '@bingads-webui-campaign-react/content-footer';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getBidLandscapeStyle } from '@bingads-webui-campaign/bid-landscape-style';\r\nimport { getBudgetSuggestionPopupStyle } from '@bingads-webui-campaign/budget-suggestion-popup-style';\r\nimport { getInlineOpportunityStyle } from '@bingads-webui-campaign/inline-opportunity-style';\r\nimport { helpbuttonStyle, uiblockerStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport { gridPaddingLeft } from '@bingads-webui-campaign-react/grid-view-wrapper';\r\nimport { getHeightIncludeAbsolutePositionedElements } from '@bingads-webui-campaign-react/virtual-scrollbar-recalculate-trigger';\r\nimport { Scrollbar } from './scrollbar';\r\n\r\nconst SCROLLBAR_WIDTH = 17;\r\n\r\nconst getShadowWidthOutofYBorder = ($el) => {\r\n const boxShadow = $el.css('box-shadow');\r\n if (boxShadow === 'none') {\r\n return 0;\r\n }\r\n\r\n const pixels = map(boxShadow.match(/([+-.0-9]+)(?=px)/g), v => Number(v));\r\n // only handle one shadow\r\n // offset-y + blur radius + spread radius\r\n return pixels[1] + pixels[2] + pixels[3];\r\n};\r\n\r\nconst getTableView = (props) => {\r\n const p$gridViewContainer = props.backboneGridView || props.pgridView;\r\n const tableView = result(p$gridViewContainer, '_tableView') ||\r\n chain(p$gridViewContainer)\r\n .result('grid')\r\n .result('gridView')\r\n .result('_tableView')\r\n .value() ||\r\n chain(p$gridViewContainer)\r\n .result('grid')\r\n .result('grid')\r\n .result('gridView')\r\n .result('_tableView')\r\n .value();\r\n\r\n return tableView;\r\n};\r\n\r\nconst getTableWidth = ($table) => {\r\n const tableWidth = reduce(\r\n $table.find('.column-header').toArray(),\r\n (memo, i) => memo + i.getBoundingClientRect().width,\r\n 0\r\n );\r\n return tableWidth;\r\n};\r\n\r\nconst getTablePageStyles = (_, { palette = {} }) => extend(\r\n {\r\n pageContainer: {\r\n display: 'flex',\r\n flex: '1 0 1px',\r\n flexDirection: 'column',\r\n overflow: 'auto',\r\n },\r\n gridContainer: {\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n },\r\n gridViewContainer: {\r\n marginRight: 15,\r\n },\r\n contentFooter: {\r\n display: 'flex',\r\n flexDirection: 'column-reverse',\r\n width: '100%',\r\n position: 'static',\r\n marginTop: 'auto',\r\n },\r\n resizeMarker: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n bottom: 0,\r\n right: 0,\r\n zIndex: '-1',\r\n visibility: 'hidden',\r\n },\r\n },\r\n {\r\n '@global': extend(\r\n uiblockerStyle({ palette }),\r\n getBidLandscapeStyle(palette),\r\n getBudgetSuggestionPopupStyle(palette),\r\n getInlineOpportunityStyle(palette),\r\n helpbuttonStyle({ palette }),\r\n {\r\n // [TODO] Move to theme-fluent/src/components/grid-shared/global.js\r\n '.grid-noresult, .grid-noresult-empty, .noresult': {\r\n display: 'none',\r\n },\r\n '.virtual-scrollbar-container': {\r\n '& .parent-bar': {\r\n backgroundColor: '#f1f1f1',\r\n },\r\n '& .child-bar': {\r\n backgroundColor: '#c1c1c1',\r\n '&:hover': {\r\n backgroundColor: '#a8a8a8',\r\n },\r\n },\r\n },\r\n }\r\n ),\r\n }\r\n);\r\n\r\nclass TablePageContainer extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n gridPopupHeight: -1,\r\n gridViewWidth: -1,\r\n\r\n // In case of no IntersectionObserver support on browser, use this\r\n // default virtualscrollbar state, position: fixed, bottom: 0\r\n virtualScrollbarFixed: true,\r\n virtualScrollbarInView: true,\r\n\r\n containerOverflowX: false,\r\n };\r\n\r\n this.gridEventMap = {};\r\n this.lastVirtualScrollLeft = 0;\r\n this.letPopUpScrollHorizontal = false;\r\n\r\n this.viewport = React.createRef();\r\n this.gridAndStickyContainer = React.createRef();\r\n this.topOfGridContainer = React.createRef();\r\n this.stickyContainer = React.createRef();\r\n this.gridAndDisclaimContainer = React.createRef();\r\n\r\n // Use the feature of 'IntersectionObserver' to update the horizontal virtual scrollbar\r\n this.topMarker = { el: null, isInView: null };\r\n this.bottomMarker = { el: null, isInView: null, isHiddenInView: null };\r\n\r\n if (window && 'IntersectionObserver' in window) {\r\n this.intersectionObserver = new IntersectionObserver(this.handleIntersectionChange.bind(this), {\r\n root: null,\r\n rootMargin: '0px',\r\n threshold: [0, 1],\r\n });\r\n } else {\r\n // All supported browsers are providing this feature, this is a fallback for backword compatibility\r\n this.intersectionObserver = null;\r\n }\r\n\r\n this.resizeMarker = React.createRef();\r\n this.lastResizerWidth = 0;\r\n if (window && 'ResizeObserver' in window) {\r\n this.resizeObserver = new ResizeObserver(throttle(this.handleResizeChange.bind(this), 250));\r\n } else {\r\n // All supported browsers are providing this feature, if not, switch to polly fill\r\n this.resizeObserver = new ResizeObserverPollyFill(throttle(this.handleResizeChange.bind(this), 250));\r\n }\r\n\r\n const SMALL_PADDING_LEFT_CLASS = 'small-padding-left';\r\n let shouldUseSmallPadding = false;\r\n if (isString(this.props.customClasses.tablePageContainer)) {\r\n shouldUseSmallPadding = this.props.customClasses.tablePageContainer.includes(SMALL_PADDING_LEFT_CLASS);\r\n } else {\r\n shouldUseSmallPadding = contains(this.props.customClasses.tablePageContainer, SMALL_PADDING_LEFT_CLASS);\r\n }\r\n\r\n this.paddingLeft = shouldUseSmallPadding ? 0 : gridPaddingLeft;\r\n }\r\n\r\n getChildBarScrollLeftValue() {\r\n if (this.state.gridViewWidth === -1) {\r\n return 0;\r\n }\r\n const childBar = $('.child-bar');\r\n // align with scrollbar;\r\n const viewWidth = this.state.gridViewWidth + this.paddingLeft + SCROLLBAR_WIDTH;\r\n\r\n if (childBar) {\r\n const parentWidth = this.state.stickyTopOfGridWidth;\r\n const childOffset = childBar.position().left;\r\n return (childOffset / parentWidth) * viewWidth;\r\n }\r\n return 0;\r\n }\r\n\r\n handleResizeChange(entries) {\r\n // For now, we only observe one entry and we only compare one threshold.\r\n const entry = entries[0];\r\n const threshold = this.props.tablePageMinWidth;\r\n\r\n // Decide whether to adjust virtual scrollbar\r\n const { width } = entry.contentRect;\r\n if ((this.lastResizerWidth === 0 || this.lastResizerWidth >= threshold) && width < threshold) {\r\n this.setState({\r\n containerOverflowX: true,\r\n });\r\n }\r\n\r\n if (this.lastResizerWidth < threshold && width >= threshold) {\r\n this.setState({\r\n containerOverflowX: false,\r\n });\r\n }\r\n\r\n this.lastResizerWidth = width;\r\n\r\n // notify gridView\r\n // FIXME: the below logic is also used by inline chart, we should have other ways to trigger the grid re-render\r\n const p$gridViewContainer = this.props.backboneGridView || this.props.pgridView;\r\n if (p$gridViewContainer) {\r\n const tableView = getTableView(this.props);\r\n if (tableView) {\r\n tableView.trigger('didChangeBound'); // eslint-disable-line no-underscore-dangle\r\n }\r\n }\r\n\r\n if (this.viewport && this.viewport.current) {\r\n let event;\r\n const eventName = 'scroll';\r\n if (typeof Event === 'function') {\r\n event = new Event(eventName);\r\n } else {\r\n // IE 11 patch\r\n event = document.createEvent('Event');\r\n event.initEvent(eventName, false, false);\r\n }\r\n\r\n this.viewport.current.dispatchEvent(event);\r\n }\r\n }\r\n\r\n handleIntersectionChange(entries) {\r\n let handleScrollbar = false;\r\n\r\n entries.forEach((entry) => {\r\n if (entry.target && entry.target === this.topMarker.el) {\r\n // Sometimes the top marker (the thead) has zero intersection height, which will cause the intersectionRation to be 0\r\n this.topMarker.isInView = entry.isIntersecting; // (entry.intersectionRatio !== 0);\r\n\r\n handleScrollbar = true;\r\n }\r\n if (entry.target && entry.target === this.bottomMarker.el) {\r\n this.bottomMarker.isInView = (entry.intersectionRatio !== 0);\r\n this.bottomMarker.isHiddenInView = false;\r\n\r\n handleScrollbar = true;\r\n }\r\n });\r\n\r\n if (handleScrollbar) {\r\n this.handleScrollbar();\r\n }\r\n }\r\n\r\n handleScrollbar() {\r\n if (this.bottomMarker.isInView) {\r\n // Append the scrollbar at the end of the table\r\n this.setState({\r\n virtualScrollbarFixed: false,\r\n virtualScrollbarInView: true,\r\n });\r\n } else if (this.topMarker.isInView) {\r\n // Detach the scrollbar and make it fixed, with bottom: 0\r\n this.setState({\r\n virtualScrollbarFixed: true,\r\n virtualScrollbarInView: true,\r\n });\r\n } else {\r\n // The grid is completely pushed out of viewport by top of grid panel, hide scrollbar.\r\n // Note: it is also possible that the bottom marker element is hidden (display: none)\r\n // we will get a chance to evaluate that again before rendering.\r\n this.setState({\r\n virtualScrollbarInView: false,\r\n });\r\n }\r\n }\r\n\r\n handlePopup(prevPopupHeight) {\r\n const popupHeight = this.getInlineEditPopupHeight();\r\n if (!prevPopupHeight || popupHeight !== prevPopupHeight) {\r\n this.setState({ gridPopupHeight: popupHeight });\r\n }\r\n if (this.letPopUpScrollHorizontal) {\r\n this.onScrollbarsViewUpdate();\r\n }\r\n }\r\n\r\n handleScroll(prevState = {}) {\r\n const p$gridViewContainer = this.props.backboneGridView || this.props.pgridView;\r\n if (p$gridViewContainer) {\r\n // when parentElement is null, grid view is not in dom yet.\r\n // Calling getBoundingClientRect will cause unspecified error in IE.\r\n // no need to handle scroll at this moment.\r\n if (p$gridViewContainer.$el.get(0).parentElement === null) {\r\n return;\r\n }\r\n\r\n const viewportRect = this.viewport.current.getBoundingClientRect();\r\n const topOfGridRect = this.topOfGridContainer.current.getBoundingClientRect();\r\n const gridAndStickyRect = this.gridAndStickyContainer.current.getBoundingClientRect();\r\n const stickyContainer = this.stickyContainer.current.getBoundingClientRect();\r\n\r\n // we have two different modes for positioning sticky top of grid content depending on scroll position\r\n // check here if the sticky top of grid content would have already been visible in the viewport without\r\n // sticky behavior (just based on element placement)\r\n const shouldAdjustStickyTopOfGrid = gridAndStickyRect.top < viewportRect.top;\r\n\r\n\r\n // only display virtual scrollbar if grid has horizontal overflow and...\r\n const tableWidth = getTableWidth(p$gridViewContainer.$('table')); // Sovle the Mac Safari issue\r\n const gridViewHasHorizontalOverflow = Math.round(tableWidth) > Math.round(viewportRect.width) - this.paddingLeft;\r\n let emptyHeight = Math.round(viewportRect.height) - Math.round(gridAndStickyRect.height) - Math.round(topOfGridRect.height);\r\n emptyHeight = shouldAdjustStickyTopOfGrid ? emptyHeight + stickyContainer.height : emptyHeight;\r\n const gridViewHasVerticalOverflow = emptyHeight < 0;\r\n\r\n const newState = {\r\n stickyTopOfGridTopOffset: shouldAdjustStickyTopOfGrid ? viewportRect.top : 0,\r\n stickyTopOfGridPosition: shouldAdjustStickyTopOfGrid ? 'fixed' : 'relative',\r\n stickyTopOfGridWidth: Math.floor(viewportRect.width - (gridViewHasVerticalOverflow ? SCROLLBAR_WIDTH : 0)),\r\n stickyTopOfGridHeight: stickyContainer.height,\r\n gridViewHasHorizontalOverflow,\r\n gridViewHasVerticalOverflow,\r\n shouldAdjustStickyTopOfGrid,\r\n };\r\n\r\n const scrollStateKeys = keys(newState);\r\n\r\n const modifiedState = reduce(scrollStateKeys, (memo, stateKey) => {\r\n if (prevState[stateKey] !== newState[stateKey]) {\r\n memo[stateKey] = newState[stateKey]; // eslint-disable-line no-param-reassign\r\n }\r\n\r\n return memo;\r\n }, {});\r\n\r\n if (!isEmpty(modifiedState)) {\r\n this.setState(modifiedState);\r\n }\r\n }\r\n\r\n // Also adjust the grid+disclaimer height based on popupheight.\r\n this.handlePopup(prevState.gridPopupHeight);\r\n }\r\n\r\n componentDidMount() {\r\n if (this.resizeObserver && this.resizeMarker && this.resizeMarker.current) {\r\n this.resizeObserver.observe(this.resizeMarker.current);\r\n }\r\n this.setScrollPosition();\r\n this.handleScroll();\r\n $(this.viewport.current).on('resizeContainerBasedOnPopupHeight', (event, options) => {\r\n // Assume here is the reset,\r\n this.letPopUpScrollHorizontal = options ? options.letPopUpScrollHorizontal : false;\r\n if (this.letPopUpScrollHorizontal) {\r\n this.lastVirtualScrollLeft = this.getChildBarScrollLeftValue();\r\n }\r\n this.handlePopup();\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n const p$gridView = (this.props.backboneGridView && this.props.backboneGridView.grid && this.props.backboneGridView.grid.gridView) || this.props.pgridView;\r\n if (p$gridView) {\r\n p$gridView.off('didUpdate');\r\n }\r\n\r\n if (this.intersectionObserver) {\r\n if (this.topMarker.el) {\r\n this.intersectionObserver.unobserve(this.topMarker.el);\r\n }\r\n\r\n if (this.bottomMarker.el) {\r\n this.intersectionObserver.unobserve(this.bottomMarker.el);\r\n }\r\n\r\n this.intersectionObserver = null;\r\n }\r\n\r\n if (this.resizeObserver && this.resizeMarker && this.resizeMarker.current) {\r\n this.resizeObserver.unobserve(this.resizeMarker.current);\r\n }\r\n\r\n $(this.viewport.current).off('resizeContainerBasedOnPopupHeight');\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (this.state.stickyTopOfGridPosition === 'fixed' && prevState.stickyTopOfGridPosition !== 'fixed') {\r\n const stickyContainer = this.stickyContainer.current.getBoundingClientRect();\r\n this.shiftThePopUp(stickyContainer.height);\r\n } else if (this.state.stickyTopOfGridPosition !== 'fixed' && prevState.stickyTopOfGridPosition === 'fixed') {\r\n const stickyContainer = this.stickyContainer.current.getBoundingClientRect();\r\n this.shiftThePopUp(-stickyContainer.height);\r\n }\r\n this.setScrollPosition(prevProps);\r\n this.handleScroll(prevState);\r\n }\r\n\r\n onScrollbarsViewUpdate() {\r\n const $popup = $(this.props.inlineEditPopupSelector);\r\n const currentLeft = this.getChildBarScrollLeftValue();\r\n if ($popup.length) {\r\n const cssLeft = parseFloat($popup.css('left'));\r\n const newLeft = cssLeft - (currentLeft - this.lastVirtualScrollLeft);\r\n $popup.css('left', `${newLeft}px`);\r\n }\r\n this.lastVirtualScrollLeft = currentLeft;\r\n }\r\n\r\n shiftThePopUp(height) {\r\n let $popup = $(this.props.inlineEditPopupSelector);\r\n if (!$popup.attr('style')) {\r\n $popup = $(this.props.inlineEditPopupSelector).closest('[style*=\"absolute\"]');\r\n }\r\n if ($popup.length) {\r\n const cssTop = parseFloat($popup.css('top'));\r\n const newTop = cssTop + height;\r\n $popup.css('top', `${newTop}px`);\r\n }\r\n }\r\n\r\n setScrollPosition(prevProps) {\r\n if (this.props.forceResetScrollFlag !== (prevProps && prevProps.forceResetScrollFlag)) {\r\n this.viewport.current.scrollTop = 0;\r\n }\r\n }\r\n\r\n getInlineEditPopupHeight() {\r\n // TODO: should also check filter editor popup\r\n const popup = document.querySelector(this.props.inlineEditPopupSelector);\r\n const popupHeight = getHeightIncludeAbsolutePositionedElements(popup);\r\n\r\n if (popupHeight) {\r\n const popupTop = $(popup).offset().top - $('.grid-and-disclaim-container').offset().top;\r\n return popupTop + popupHeight + getShadowWidthOutofYBorder($(popup));\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n render() {\r\n const p$gridView = (this.props.backboneGridView && this.props.backboneGridView.grid && this.props.backboneGridView.grid.gridView) || this.props.pgridView;\r\n\r\n if (p$gridView && this.intersectionObserver) {\r\n // Find a chance to initiate the intersection observing\r\n const thead = p$gridView.$('thead').get(0);\r\n if (thead && thead !== this.topMarker.el) {\r\n if (this.topMarker.el) {\r\n this.intersectionObserver.unobserve(this.topMarker.el);\r\n }\r\n this.topMarker.el = thead;\r\n this.intersectionObserver.observe(this.topMarker.el);\r\n }\r\n\r\n const tfoot = p$gridView.$('tfoot').get(0);\r\n if (tfoot && tfoot !== this.bottomMarker.el) {\r\n if (this.bottomMarker.el) {\r\n this.intersectionObserver.unobserve(this.bottomMarker.el);\r\n }\r\n this.bottomMarker.el = tfoot;\r\n this.intersectionObserver.observe(this.bottomMarker.el);\r\n }\r\n }\r\n\r\n if (p$gridView && !this.gridEventMap[p$gridView.cid]) {\r\n p$gridView.on('didUpdate', () => {\r\n const tableWidth = getTableWidth(p$gridView.$el.find('table'));\r\n // // only for safari. The root cause is we should set a width for the fixed-layout table\r\n // window.safari && p$gridView.$el.find('table').css('min-width', tableWidth);\r\n\r\n this.setState({\r\n // get notified when grid width changed by column-resize plugin\r\n gridViewWidth: tableWidth,\r\n });\r\n });\r\n\r\n this.gridEventMap[p$gridView.cid] = true;\r\n }\r\n\r\n const CustomDisclaimerBanner = this.props.CustomDisclaimerBanner || DisclaimerBanner;\r\n\r\n const stickyStyle = { position: this.state.stickyTopOfGridPosition, top: this.state.stickyTopOfGridTopOffset, zIndex: Constants.ZIndexContentComponents.GridToolbar + 1 };\r\n\r\n // Do the final adjustment before rendering the virtual scrollbar\r\n let { virtualScrollbarFixed, virtualScrollbarInView } = this.state;\r\n\r\n if (this.state.shouldAdjustStickyTopOfGrid) {\r\n stickyStyle.width = this.state.stickyTopOfGridWidth;\r\n }\r\n\r\n if (this.intersectionObserver) {\r\n if (!this.bottomMarker.isInView && this.bottomMarker.el) {\r\n // By the time when we handle intersection change, the client rect is not always updated\r\n const bottomMarkerRect = this.bottomMarker.el.getBoundingClientRect();\r\n if (bottomMarkerRect.top === 0 && bottomMarkerRect.height === 0) {\r\n // The 'tfoot' is hidden, no-result is shown\r\n this.bottomMarker.isHiddenInView = true;\r\n\r\n virtualScrollbarFixed = false;\r\n virtualScrollbarInView = true;\r\n }\r\n }\r\n }\r\n\r\n const gridAndDisclaimContainerHeight = this.gridAndDisclaimContainer.current ? this.gridAndDisclaimContainer.current.getBoundingClientRect().height : 0;\r\n\r\n return (\r\n \r\n
\r\n this.handleScroll()}\r\n style={{ minWidth: this.props.tablePageMinWidth }}\r\n >\r\n
\r\n {this.props.topOfGridContent}\r\n
\r\n
\r\n {/* Scrollbar container (of whom grid view is a descendant) is position:relative to allow offseting the virtual scrollbars.\r\n Normal stacking order causes elements who are position:relative to be stacked in the order in which they appear in the DOM, so toolbar will always be\r\n hidden behind the scrollbar container. Setting a z-index here to prevent scrollbar container (i.e. the grid view) from occluding the sticky toolbar */}\r\n
\r\n {this.props.stickyTopOfGridContent}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {this.props.gridView}\r\n
\r\n \r\n
\r\n
\r\n
\r\n {\r\n // customer-scope grids don't have timeZone info\r\n // Disclaimer banner will show if either timeZone or CustomDisclaimerBanner valid in props\r\n (this.props.timeZone || this.props.CustomDisclaimerBanner) && (\r\n
\r\n \r\n
\r\n )\r\n }\r\n
\r\n
\r\n {!this.props.disableFooter &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nTablePageContainer.propTypes = {\r\n topOfGridContent: PropTypes.node,\r\n stickyTopOfGridContent: PropTypes.node,\r\n classes: PropTypes.object.isRequired,\r\n customClasses: PropTypes.object,\r\n timeZone: PropTypes.number,\r\n gridView: PropTypes.object.isRequired,\r\n backboneGridView: PropTypes.object,\r\n pgridView: PropTypes.object,\r\n forceResetScrollFlag: PropTypes.bool,\r\n tablePageMinWidth: PropTypes.number,\r\n disableFooter: PropTypes.bool,\r\n CustomDisclaimerBanner: PropTypes.elementType,\r\n inlineEditPopupSelector: PropTypes.string,\r\n};\r\n\r\nTablePageContainer.defaultProps = {\r\n customClasses: {},\r\n topOfGridContent: null,\r\n backboneGridView: null,\r\n pgridView: null,\r\n forceResetScrollFlag: false,\r\n tablePageMinWidth: 1032,\r\n timeZone: null,\r\n disableFooter: false,\r\n CustomDisclaimerBanner: null,\r\n inlineEditPopupSelector: '.grid-and-disclaim-container [role=dialog]',\r\n stickyTopOfGridContent: null,\r\n};\r\n\r\n\r\nexport const StyledTablePageContainer = withDefaultStyles(TablePageContainer, getTablePageStyles);\r\n","import { isFunction, isUndefined, has, defer, isEmpty, extend } from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Promise from 'bluebird';\r\n\r\nimport { getToolbarPlugin } from '@bingads-webui-campaign-react/toolbar-plugin';\r\nimport { ToolbarContainer } from '@bingads-webui-campaign-react/toolbar-container';\r\nimport { getCrossPageSelectPlugin } from '@bingads-webui-campaign-react/cross-page-select-plugin';\r\n/* global Map */\r\n// Ad-hoc synchronization\r\nclass Latch {\r\n constructor() {\r\n this.onInitialized = new Promise((resolve) => {\r\n this.resolveOnInitialized = () => {\r\n this.isInitialized = true;\r\n resolve();\r\n };\r\n });\r\n this.isInitialized = false;\r\n this.isScheduled = {};\r\n }\r\n\r\n release() {\r\n return this.resolveOnInitialized();\r\n }\r\n\r\n schedule(callback) {\r\n if (this.isInitialized) return callback();\r\n if (has(this.isScheduled, callback)) return null;\r\n\r\n this.isScheduled[callback] = true;\r\n\r\n return this.onInitialized.then(() => defer(callback));\r\n }\r\n}\r\n\r\nexport const withTablePageStateManager = ({ getToolbarConfig }) =>\r\n (WrappedComponent) => {\r\n class GridPageStateManager extends React.PureComponent {\r\n static propTypes = {\r\n permissions: PropTypes.shape({}).isRequired,\r\n scope: PropTypes.shape({\r\n values: PropTypes.shape({}),\r\n location: PropTypes.shape({\r\n pathname: PropTypes.string,\r\n }),\r\n }).isRequired,\r\n siteMap: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.string,\r\n })).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.initial(props);\r\n this.unmounted = false;\r\n }\r\n\r\n componentWillUnmount() {\r\n this.unmounted = true;\r\n }\r\n\r\n onGridInjected = ({ deselectAll, ...rest }) => {\r\n this.deselectAll = deselectAll;\r\n this.lazyInjected = rest;\r\n\r\n this.lazyInjected.backboneGridView.once('willReload', () => {\r\n this.onInitialized.release();\r\n });\r\n };\r\n\r\n onClearSelection = () => {\r\n this.setState({\r\n showToolbarSelected: false,\r\n showToolbarUnselected: true,\r\n });\r\n\r\n if (isFunction(this.deselectAll)) {\r\n this.deselectAll();\r\n }\r\n };\r\n\r\n initial(props) {\r\n const { scope } = props;\r\n const crossPageSelectPlugin = getCrossPageSelectPlugin({\r\n updateGridSelectionState: this.updateGridSelectionState,\r\n });\r\n let isOpenCreatePanel = false;\r\n isOpenCreatePanel = !!scope.values.isOpenCreatePanel;\r\n if (isOpenCreatePanel) {\r\n delete scope.values.isOpenCreatePanel;\r\n scope.history.replace({\r\n pathname: scope.history.location.pathname,\r\n search: scope.stringify(),\r\n });\r\n }\r\n const { onSelectCrossPage } = crossPageSelectPlugin;\r\n const { toolbarSelectedConfig, toolbarUnselectedConfig, toolbarDynamicSelectedConfigCallback } = getToolbarConfig({\r\n ...props,\r\n isOpenCreatePanel,\r\n updateGridOptions: this.updateGridOptions.bind(this),\r\n onSelectCrossPage,\r\n showTopOfGridPanel: this.showTopOfGridPanel,\r\n lazyInject: () => this.lazyInjected, // call back to get lazy created dependencies, such as backboneGridView, filterService\r\n });\r\n\r\n this.crossPageSelectPlugin = crossPageSelectPlugin;\r\n this.toolbarSelectedConfig = toolbarSelectedConfig;\r\n this.toolbarUnselectedConfig = toolbarUnselectedConfig;\r\n this.toolbarDynamicSelectedConfigCallback = toolbarDynamicSelectedConfigCallback;\r\n this.toolbarDynamicSelectedConfig = new Map();\r\n this.initialSetGridNum = true;\r\n if (!this.state) {\r\n this.state = {\r\n isOpenCreatePanel,\r\n forceHideInlineChart: false,\r\n forceHideToolbar: false,\r\n panelView: null,\r\n showInlineChart: true,\r\n showToolbarSelected: false,\r\n showToolbarUnselected: true,\r\n showTopGridPanel: false,\r\n toolbarSelectedConfig: this.toolbarSelectedConfig,\r\n toolbarUnselectedConfig: this.toolbarUnselectedConfig,\r\n forceResetScrollFlag: false,\r\n selectionCount: 0,\r\n totalCount: 0,\r\n isMultiPage: false,\r\n isSinglePageAllSelected: false,\r\n isCrossPageAllSelected: false,\r\n };\r\n } else {\r\n this.setState({\r\n toolbarSelectedConfig: this.toolbarSelectedConfig,\r\n toolbarUnselectedConfig: this.toolbarUnselectedConfig,\r\n });\r\n }\r\n this.createToolbar();\r\n }\r\n\r\n updateGridOptions(gridOptions) {\r\n this.setState({\r\n gridOptions,\r\n });\r\n }\r\n\r\n createToolbar() {\r\n this.toolbarPlugin = getToolbarPlugin({\r\n overrideWith: this.showTopOfGridPanel,\r\n resetVisibility: ({ forceHideToolbar }) => {\r\n this.setState({\r\n forceHideToolbar,\r\n showTopGridPanel: forceHideToolbar,\r\n });\r\n },\r\n resetGraphVisibility: () => {\r\n this.setState({\r\n forceHideInlineChart: false,\r\n });\r\n },\r\n resetToolbarMode: ({ showToolbarSelected, showToolbarUnselected }) => {\r\n this.setState({\r\n showToolbarSelected,\r\n showToolbarUnselected,\r\n });\r\n },\r\n toolbarConfig: {\r\n toolbarSelectedConfig: this.state.toolbarSelectedConfig,\r\n // this.toolbarDynamicSelectedConfigCallback can mute so trigger it as lambda expression from here to ensure newest function is always used\r\n toolbarDynamicSelectedConfigCallback: isFunction(this.toolbarDynamicSelectedConfigCallback) && (params => this.toolbarDynamicSelectedConfigCallback(params)),\r\n toolbarUnselectedConfig: this.state.toolbarUnselectedConfig,\r\n },\r\n updateToolbarDynamicSelectedConfig: ({ dynamicSelectedConfig }) => {\r\n this.toolbarDynamicSelectedConfig = dynamicSelectedConfig;\r\n this.updateToolbar();\r\n },\r\n updateToolbar: this.updateToolbar,\r\n });\r\n\r\n this.onInitialized = new Latch();\r\n }\r\n\r\n updateToolbar = () => {\r\n const doUpdate = () => {\r\n if (this.unmounted) {\r\n return;\r\n }\r\n\r\n // Merge the selected config with the dynamic selected config. Map.set() adds or updates an element so it will\r\n // respect the order of elements if the key existed previously from selected config, otherwise add it to the end.\r\n const toolbarSelectedConfigMerged = new Map();\r\n this.toolbarSelectedConfig.forEach((value, key) => toolbarSelectedConfigMerged.set(key, value));\r\n this.toolbarDynamicSelectedConfig.forEach((dynamicValue, key) => {\r\n const mergedValue = extend({}, toolbarSelectedConfigMerged.get(key), dynamicValue);\r\n toolbarSelectedConfigMerged.set(key, mergedValue);\r\n });\r\n\r\n const toolbarSelectedConfig = new Map();\r\n const toolbarUnselectedConfig = new Map();\r\n toolbarSelectedConfigMerged.forEach((value, key) => {\r\n if (!isEmpty(value)) {\r\n toolbarSelectedConfig.set(key, value);\r\n }\r\n });\r\n this.toolbarUnselectedConfig.forEach((value, key) => toolbarUnselectedConfig.set(key, value));\r\n this.setState({\r\n toolbarSelectedConfig,\r\n toolbarUnselectedConfig,\r\n });\r\n };\r\n\r\n this.onInitialized.schedule(doUpdate);\r\n };\r\n\r\n resetToolbarVisibility = ({ forceHideToolbar }) => {\r\n this.setState({ forceHideToolbar });\r\n };\r\n\r\n showTopOfGridPanel = (viewInstance, config = {}) => {\r\n if (viewInstance) {\r\n this.setState(prevState => ({\r\n panelView: viewInstance,\r\n showTopGridPanel: true,\r\n forceHideInlineChart: true,\r\n forceHideToolbar: config.forceHideToolbar !== undefined ? config.forceHideToolbar : true,\r\n forceResetScrollFlag: config.forceResetScrollFlag !== undefined ? config.forceResetScrollFlag : !prevState.forceResetScrollFlag,\r\n showTopGridPanelAndContent: config.showTopGridPanelAndContent !== undefined ? config.showTopGridPanelAndContent : false,\r\n }));\r\n } else {\r\n this.setState(prevState => ({\r\n panelView: null,\r\n showTopGridPanel: false,\r\n forceHideInlineChart: false,\r\n forceHideToolbar: false,\r\n forceResetScrollFlag: config.forceResetScrollFlag !== undefined ? config.forceResetScrollFlag : !prevState.forceResetScrollFlag,\r\n showTopGridPanelAndContent: false,\r\n }));\r\n }\r\n };\r\n\r\n showInlineChartView = () => {\r\n this.setState({ showInlineChart: true });\r\n };\r\n\r\n updateGridSelectionState = ({\r\n selectionCount,\r\n totalCount,\r\n isMultiPage,\r\n isSinglePageAllSelected,\r\n isCrossPageAllSelected,\r\n }) => {\r\n const doUpdate = () => {\r\n if (this.unmounted) {\r\n return;\r\n }\r\n\r\n // for performance consideration, we do not need to update totalCount if no rows is selected\r\n const newTotal = selectionCount === 0 && this.initialSetGridNum ? 0 : totalCount;\r\n if (selectionCount || totalCount) {\r\n this.initialSetGridNum = false;\r\n }\r\n this.setState({\r\n selectionCount,\r\n totalCount: newTotal,\r\n isMultiPage,\r\n isSinglePageAllSelected,\r\n isCrossPageAllSelected,\r\n });\r\n };\r\n\r\n this.onInitialized.schedule(doUpdate);\r\n };\r\n\r\n updateSelectedToolbarConfig = (newSelectedConfig) => {\r\n this.toolbarSelectedConfig = newSelectedConfig;\r\n this.updateToolbar();\r\n };\r\n\r\n updateUnselectedToolbarConfig = (newUnselectedConfig) => {\r\n this.toolbarUnselectedConfig = newUnselectedConfig;\r\n this.updateToolbar();\r\n };\r\n\r\n /**\r\n * This will force all the config toolbar (selected/unselected/dynamicSelectedCallback) to get updated by\r\n * passing the page newest props in parameter of the getToolbarConfig function and reload current configuration.\r\n * @param {object} newProps It can also accept some object to merge to current props so getToolbarConfig(context) is more rich\r\n * @return {void}\r\n */\r\n forceInitToolbarConfig = (newProps = {}) => {\r\n this.initial({ ...this.props, ...newProps });\r\n this.updateToolbar();\r\n };\r\n\r\n renderToolbarContainer = (options = {}) => {\r\n const {\r\n forceHideToolbar,\r\n isCrossPageAllSelected,\r\n isMultiPage,\r\n isSinglePageAllSelected,\r\n selectionCount,\r\n showToolbarSelected,\r\n showToolbarUnselected,\r\n toolbarSelectedConfig,\r\n toolbarUnselectedConfig,\r\n totalCount,\r\n } = this.state;\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n render() {\r\n const {\r\n showInlineChart,\r\n forceHideInlineChart,\r\n showTopGridPanel,\r\n showTopGridPanelAndContent,\r\n } = this.state;\r\n\r\n return (\r\n \r\n );\r\n }\r\n }\r\n\r\n return GridPageStateManager;\r\n };\r\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\n\r\nimport { Button, Dropdown, Icon, Label, Stack, TextField } from '@bingads-webui-react/fabric-control';\r\nimport { HelpPopupInline } from '@bingads-webui-react/help-popup';\r\nimport { withCustomValidation, withError } from '@bingads-webui-react/validation';\r\nimport { withControlErrorHandling, withUnvalidatedControlErrors } from '@bingads-webui-campaign-react/error-handling';\r\n\r\nconst defaultLabelStyle = options => ({\r\n label: {\r\n color: options.success ? '#0A610A' : '#A80000',\r\n backgroundColor: options.success ? '#DFF6DD' : '#FDE7E9',\r\n fontWeight: 600,\r\n fontSize: 12,\r\n border: 4,\r\n paddingInline: 5,\r\n paddingTop: 2,\r\n paddingBottom: 2,\r\n verticalAlign: 'middle',\r\n borderRadius: 4,\r\n marginLeft: 8,\r\n },\r\n labelIcon: {\r\n fontSize: 14,\r\n height: 14,\r\n width: 14,\r\n fontWeight: 400,\r\n marginLeft: 4,\r\n marginRight: 5,\r\n verticalAlign: '-2.5px',\r\n },\r\n});\r\n\r\nconst defaultStyles = {\r\n disconnectedStatusTile: {\r\n root: {\r\n marginLeft: 22,\r\n },\r\n },\r\n connectedStatusTile: {\r\n root: {\r\n marginLeft: 22,\r\n },\r\n },\r\n connectedStatusLabel: {\r\n root: {\r\n color: '#0C5E0C',\r\n fontWeight: 600,\r\n fontSize: 12,\r\n lineHeight: 'normal',\r\n },\r\n },\r\n saveButton: {\r\n root: {\r\n width: 68,\r\n },\r\n },\r\n removeButton: {\r\n root: {\r\n width: 89,\r\n },\r\n },\r\n};\r\n\r\nconst VerifiedTrackingSettingKey = 'VerifiedTrackingSettings';\r\nconst vendorNameKey = 'vendorName';\r\nconst advertiserEntityIdKey = 'advertiserEntityId';\r\nconst publisherEntityIdKey = 'publisherEntityId';\r\nconst regexMappping = {\r\n video: [/v2\\/(\\d*)\\/(\\d*)/],\r\n display: [/rjss\\/st\\/(\\d*)\\/(\\d*)/, /rfw\\/st\\/(\\d*)\\/(\\d*)/],\r\n native: [/rjss\\/st\\/(\\d*)\\/(\\d*)/, /rfw\\/st\\/(\\d*)\\/(\\d*)/],\r\n};\r\n\r\nconst ThirdPartyMeasurementNameMap = {\r\n [advertiserEntityIdKey]: _TL_('Advertiser ID: '),\r\n [publisherEntityIdKey]: _TL_('Publisher ID: '),\r\n [vendorNameKey]: _TL_('Vendor Name: '),\r\n};\r\n\r\nexport const formatThirdPartyMeasurementSetting = (verifiedTrackingSettings, i18n) => {\r\n const verifiedTrackingSetting = _.first(verifiedTrackingSettings);\r\n const vendorName = _.get(verifiedTrackingSetting, vendorNameKey, '');\r\n const advertiserEntityId = _.get(verifiedTrackingSetting, advertiserEntityIdKey, '');\r\n const publisherEntityId = _.get(verifiedTrackingSetting, publisherEntityIdKey, '');\r\n\r\n const settingEmpty = _.isEmpty(vendorName) || _.isEmpty(advertiserEntityId) || _.isEmpty(publisherEntityId);\r\n\r\n const getVerifiedTrackingComponent = (key, value) =>\r\n (
{i18n.getString(ThirdPartyMeasurementNameMap[key]) + value}
);\r\n\r\n return (\r\n
\r\n {\r\n settingEmpty ?\r\n i18n.getString(_TL_('None')) :\r\n (\r\n
\r\n {getVerifiedTrackingComponent(vendorNameKey, vendorName)}\r\n {getVerifiedTrackingComponent(publisherEntityIdKey, publisherEntityId)}\r\n {getVerifiedTrackingComponent(advertiserEntityIdKey, advertiserEntityId)}\r\n
\r\n )\r\n }\r\n
\r\n );\r\n};\r\n\r\nexport const extractIdsFromIASInput = ({ value, adType }) => {\r\n const regexStrArr = regexMappping[adType];\r\n let result = [];\r\n _.each(regexStrArr, (regexStr) => {\r\n const regex = new RegExp(regexStr);\r\n const currentRes = regex.exec(value);\r\n if (currentRes && currentRes.length >= 3) {\r\n result = currentRes;\r\n }\r\n });\r\n\r\n if (result.length >= 3) {\r\n return [result[1], result[2]];\r\n }\r\n\r\n return [];\r\n};\r\n\r\nconst errorMessages = {\r\n advertiserEntityId: 'advertiserEntityId',\r\n publisherEntityId: 'publisherEntityId',\r\n};\r\n\r\nconst createVerifiedTrackingSettingViewModel = value => ({\r\n [VerifiedTrackingSettingKey]: _.isEmpty(value) ? [] : [value],\r\n});\r\n\r\nconst StatusLabel = ({\r\n value, i18n, success, type,\r\n}) => {\r\n let statusMessage = i18n.getString(_TL_('Unknown status'));\r\n if (type === advertiserEntityIdKey) {\r\n statusMessage = success ? i18n.getString(_TL_('IAS Advertiser ID: {0}')).replace('{0}', value) : i18n.getString(_TL_('IAS Advertiser ID'));\r\n } else if (type === publisherEntityIdKey) {\r\n statusMessage = success ? i18n.getString(_TL_('IAS Publisher ID: {0}')).replace('{0}', value) : i18n.getString(_TL_('IAS Publisher ID'));\r\n }\r\n\r\n const statusStyle = useMemo(() => defaultLabelStyle({ success }), [success]);\r\n\r\n return (\r\n \r\n \r\n {statusMessage}\r\n \r\n );\r\n};\r\n\r\nexport const ThirdPartyMeasurement = (props) => {\r\n const {\r\n i18n,\r\n updateValidation,\r\n validationProps,\r\n adType = 'video',\r\n overrideStyles = {},\r\n } = props;\r\n\r\n const { data } = validationProps;\r\n const verifiedTrackingData = useMemo(\r\n () => _.result(data, [VerifiedTrackingSettingKey, 0], {})\r\n , [data]\r\n );\r\n const styles = useMemo(() => ({\r\n ...defaultStyles,\r\n ...overrideStyles,\r\n }), [overrideStyles]);\r\n\r\n const [connected, setConnected] = useState(false);\r\n const [verifiedTrackingSettingRaw, setVerifiedTrackingSettingRaw] = useState('');\r\n const [tagUrlErrors, setTagErrors] = useState([]);\r\n\r\n const options = useMemo(() => [\r\n { key: 'IAS', text: i18n.getString(_TL_('Integral Ad Science (IAS)')) },\r\n ], [i18n]);\r\n\r\n useEffect(() => {\r\n if (\r\n !!verifiedTrackingData &&\r\n !!verifiedTrackingData[vendorNameKey] &&\r\n !!verifiedTrackingData[advertiserEntityIdKey] &&\r\n !!verifiedTrackingData[publisherEntityIdKey]) {\r\n setConnected(true);\r\n } else {\r\n setConnected(false);\r\n }\r\n }, [verifiedTrackingData]);\r\n\r\n const validateUrl = useCallback((value) => {\r\n const ids = extractIdsFromIASInput({ value, adType });\r\n let result = true;\r\n const verifiedTrackingSettingToAdd = {};\r\n if (ids.length === 2) {\r\n const advertiserEntityId = ids[0];\r\n const publisherEntityId = ids[1];\r\n const errors = [];\r\n if (_.isEmpty(advertiserEntityId)) {\r\n errors.push(errorMessages.advertiserEntityId);\r\n result = false;\r\n } else {\r\n verifiedTrackingSettingToAdd[advertiserEntityIdKey] = advertiserEntityId;\r\n }\r\n\r\n if (_.isEmpty(publisherEntityId)) {\r\n errors.push(errorMessages.publisherEntityId);\r\n result = false;\r\n } else {\r\n verifiedTrackingSettingToAdd[publisherEntityIdKey] = publisherEntityId;\r\n }\r\n\r\n setTagErrors(errors);\r\n } else {\r\n setTagErrors([errorMessages.advertiserEntityId, errorMessages.publisherEntityId]);\r\n result = false;\r\n }\r\n\r\n return { result, verifiedTrackingSettingToAdd };\r\n }, [adType]);\r\n\r\n const save = useCallback(() => {\r\n const { result, verifiedTrackingSettingToAdd } = validateUrl(verifiedTrackingSettingRaw);\r\n if (result\r\n && verifiedTrackingSettingToAdd[advertiserEntityIdKey]\r\n && verifiedTrackingSettingToAdd[publisherEntityIdKey]) {\r\n const value = {\r\n [vendorNameKey]: options[0].key,\r\n [advertiserEntityIdKey]: verifiedTrackingSettingToAdd[advertiserEntityIdKey],\r\n [publisherEntityIdKey]: verifiedTrackingSettingToAdd[publisherEntityIdKey],\r\n };\r\n // We will just pass the value to the Validate Group.\r\n updateValidation([], createVerifiedTrackingSettingViewModel(value));\r\n }\r\n }, [\r\n options,\r\n validateUrl,\r\n verifiedTrackingSettingRaw,\r\n updateValidation,\r\n ]);\r\n\r\n const remove = () => {\r\n updateValidation([], createVerifiedTrackingSettingViewModel());\r\n };\r\n\r\n const onRenderLabelDropDown = () => (\r\n \r\n \r\n \r\n \r\n );\r\n\r\n const onRenderLabelTextField = () => (\r\n \r\n \r\n \r\n \r\n );\r\n\r\n const onTagUrlChange = useCallback((event, value) => {\r\n // remove the error message when the user is typing.\r\n setTagErrors([]);\r\n setVerifiedTrackingSettingRaw(value);\r\n }, []);\r\n\r\n const tagErrorMessage = useMemo(() => {\r\n if (!_.isEmpty(tagUrlErrors)) {\r\n return (\r\n \r\n {i18n.getString(_TL_('Cannot detect:'))}\r\n {\r\n _.map(tagUrlErrors, error => (\r\n \r\n ))\r\n }\r\n \r\n );\r\n }\r\n return '';\r\n }, [tagUrlErrors, i18n]);\r\n\r\n return (\r\n
\r\n {(\r\n !connected ?\r\n (\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nThirdPartyMeasurement.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n updateValidation: PropTypes.func.isRequired,\r\n validationProps: PropTypes.shape({\r\n data: PropTypes.shape({\r\n VerifiedTrackingSettings: PropTypes.arrayOf(PropTypes.shape({})),\r\n }),\r\n }).isRequired,\r\n adType: PropTypes.string,\r\n overrideStyles: PropTypes.shape({}),\r\n};\r\n\r\nThirdPartyMeasurement.defaultProps = {\r\n adType: 'video',\r\n overrideStyles: {},\r\n};\r\n\r\nStatusLabel.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n type: PropTypes.string.isRequired,\r\n success: PropTypes.bool.isRequired,\r\n value: PropTypes.string,\r\n};\r\n\r\nStatusLabel.defaultProps = {\r\n value: '',\r\n};\r\n\r\nexport const ThirdPartyMeasurementWithValidation = withControlErrorHandling(withUnvalidatedControlErrors(withError(withCustomValidation(ThirdPartyMeasurement))));\r\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\n\r\nimport { Icon, Label, Stack, TextField, Checkbox } from '@bingads-webui-react/fabric-control';\r\nimport { HelpPopupInline } from '@bingads-webui-react/help-popup';\r\nimport { withCustomValidation, withError } from '@bingads-webui-react/validation';\r\nimport { withControlErrorHandling, withUnvalidatedControlErrors } from '@bingads-webui-campaign-react/error-handling';\r\n\r\nconst defaultLabelStyle = options => ({\r\n label: {\r\n color: options.success ? '#0A610A' : '#A80000',\r\n backgroundColor: options.success ? '#DFF6DD' : '#FDE7E9',\r\n fontWeight: 600,\r\n fontSize: 12,\r\n border: 4,\r\n paddingInline: 5,\r\n paddingTop: 2,\r\n paddingBottom: 2,\r\n verticalAlign: 'middle',\r\n borderRadius: 4,\r\n marginLeft: 8,\r\n },\r\n labelIcon: {\r\n fontSize: 14,\r\n height: 14,\r\n width: 14,\r\n fontWeight: 400,\r\n marginLeft: 4,\r\n marginRight: 5,\r\n verticalAlign: '-2.5px',\r\n },\r\n});\r\n\r\nconst defaultStyles = {\r\n disconnectedStatusTile: {\r\n root: {\r\n },\r\n },\r\n connectedStatusTile: {\r\n root: {\r\n marginLeft: 22,\r\n },\r\n },\r\n connectedStatusLabel: {\r\n root: {\r\n color: '#0C5E0C',\r\n fontWeight: 600,\r\n fontSize: 12,\r\n lineHeight: 'normal',\r\n },\r\n },\r\n saveButton: {\r\n root: {\r\n width: 68,\r\n },\r\n },\r\n removeButton: {\r\n root: {\r\n width: 89,\r\n },\r\n },\r\n};\r\n\r\nconst VerifiedTrackingSettingKey = 'VerifiedTrackingSettings';\r\nconst vendorNameKey = 'vendorName';\r\nconst advertiserEntityIdKey = 'advertiserEntityId';\r\nconst publisherEntityIdKey = 'publisherEntityId';\r\n\r\nconst StatusLabel = ({\r\n value, i18n, success, type,\r\n}) => {\r\n let statusMessage = i18n.getString(_TL_('Unknown status'));\r\n if (type === advertiserEntityIdKey) {\r\n statusMessage = success ? i18n.getString(_TL_('IAS Advertiser ID: {0}')).replace('{0}', value) : i18n.getString(_TL_('Invalid Advertiser ID'));\r\n } else if (type === publisherEntityIdKey) {\r\n statusMessage = success ? i18n.getString(_TL_('IAS Publisher ID: {0}')).replace('{0}', value) : i18n.getString(_TL_('Invalid Publisher ID'));\r\n }\r\n\r\n const statusStyle = useMemo(() => defaultLabelStyle({ success }), [success]);\r\n\r\n return (\r\n \r\n \r\n {statusMessage}\r\n \r\n );\r\n};\r\n\r\nconst createVerifiedTrackingSettingViewModel = value => ({\r\n [VerifiedTrackingSettingKey]: value,\r\n});\r\n\r\nconst getCheckStatus = (settings, vendor) => {\r\n if (_.isEmpty(settings) || !settings[vendor]) {\r\n return false;\r\n }\r\n\r\n return settings[vendor].enabled;\r\n};\r\n\r\nexport const ThirdPartyMeasurementV2 = (props) => {\r\n const {\r\n i18n,\r\n updateValidation,\r\n validationProps,\r\n overrideStyles = {},\r\n } = props;\r\n\r\n const { data } = validationProps;\r\n const [settings, setSettings] = useState({});\r\n const [errors, setErrors] = useState({});\r\n\r\n const verifiedTrackingDatas = useMemo(\r\n () => _.result(data, [VerifiedTrackingSettingKey], [])\r\n , [data]\r\n );\r\n const styles = useMemo(() => ({\r\n ...defaultStyles,\r\n ...overrideStyles,\r\n }), [overrideStyles]);\r\n\r\n useEffect(() => {\r\n const settingsToUpdate = {};\r\n if (verifiedTrackingDatas.length > 0) {\r\n const iasData = verifiedTrackingDatas.find(setting =>\r\n setting.vendorName === 'IAS');\r\n const moatData = verifiedTrackingDatas.find(setting =>\r\n setting.vendorName === 'MOAT');\r\n\r\n if (!_.isEmpty(iasData)) {\r\n settingsToUpdate.IAS = {\r\n enabled: true,\r\n ...iasData,\r\n };\r\n } else {\r\n settingsToUpdate.IAS = {\r\n enabled: false,\r\n };\r\n }\r\n\r\n if (!_.isEmpty(moatData)) {\r\n settingsToUpdate.MOAT = {\r\n enabled: true,\r\n ...moatData,\r\n };\r\n } else {\r\n settingsToUpdate.MOAT = {\r\n enabled: false,\r\n };\r\n }\r\n\r\n setSettings(settingsToUpdate);\r\n } else {\r\n settingsToUpdate.IAS = { enabled: false };\r\n settingsToUpdate.MOAT = { enabled: false };\r\n setSettings(settingsToUpdate);\r\n }\r\n }, [verifiedTrackingDatas]);\r\n\r\n useEffect(() => {\r\n if (_.isEmpty(settings)) {\r\n return;\r\n }\r\n // Validate IAS\r\n let iasSettingsToUpdate = { [vendorNameKey]: 'IAS' };\r\n const iasEnabled = _.get(settings, ['IAS', 'enabled'], false);\r\n if (iasEnabled) {\r\n const advertiserEntityId = _.get(settings, ['IAS', advertiserEntityIdKey], '');\r\n const publisherEntityId = _.get(settings, ['IAS', publisherEntityIdKey], '');\r\n const numericPattern = /^\\d+$/;\r\n const errorsToUpdate = {};\r\n if (!numericPattern.test(advertiserEntityId)) {\r\n errorsToUpdate[advertiserEntityIdKey] = advertiserEntityIdKey;\r\n }\r\n\r\n if (!numericPattern.test(publisherEntityId)) {\r\n errorsToUpdate[publisherEntityIdKey] = publisherEntityIdKey;\r\n }\r\n if (!_.isEmpty(errorsToUpdate)) {\r\n setErrors(errorsToUpdate);\r\n } else {\r\n setErrors({});\r\n }\r\n iasSettingsToUpdate = {\r\n ...iasSettingsToUpdate,\r\n enabled: true,\r\n advertiserEntityId,\r\n publisherEntityId,\r\n };\r\n } else {\r\n iasSettingsToUpdate.enabled = false;\r\n }\r\n\r\n // validate MOAT\r\n const moatSettingsToUpdate = {\r\n enabled: _.get(settings, ['MOAT', 'enabled'], false),\r\n [vendorNameKey]: 'MOAT',\r\n };\r\n\r\n // update validation\r\n updateValidation([], createVerifiedTrackingSettingViewModel([iasSettingsToUpdate, moatSettingsToUpdate]));\r\n }, [settings, updateValidation]);\r\n\r\n const onRenderadvertiserIdTextField = useCallback(() => (\r\n \r\n \r\n \r\n \r\n ), [i18n]);\r\n\r\n const onRenderpublisherIdTextField = useCallback(() => (\r\n \r\n \r\n \r\n \r\n ), [i18n]);\r\n\r\n const onAdvertiserIdChange = useCallback((event, value) => {\r\n if (!_.isEmpty(settings.IAS) && !!settings.IAS.enabled) {\r\n setSettings({\r\n ...settings,\r\n IAS: {\r\n ...settings.IAS,\r\n advertiserEntityId: value,\r\n },\r\n });\r\n }\r\n }, [settings]);\r\n\r\n const onPublisherIdChange = useCallback((event, value) => {\r\n if (!_.isEmpty(settings.IAS) && !!settings.IAS.enabled) {\r\n setSettings({\r\n ...settings,\r\n IAS: {\r\n ...settings.IAS,\r\n publisherEntityId: value,\r\n },\r\n });\r\n }\r\n }, [settings]);\r\n\r\n const onCheckStatusChangeGenerator = useCallback(vendor => (event, checked) => {\r\n setSettings((originalSettings) => {\r\n const newSettings = { ...originalSettings };\r\n if (_.isEmpty(newSettings[vendor])) {\r\n newSettings[vendor] = {\r\n enabled: checked,\r\n };\r\n } else {\r\n newSettings[vendor].enabled = checked;\r\n }\r\n return newSettings;\r\n });\r\n }, []);\r\n\r\n const tagErrorMessage = useCallback((errorType) => {\r\n if (!_.isEmpty(errors) && !!errors[errorType]) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n return '';\r\n }, [errors, i18n]);\r\n\r\n const onRenderIASLabel = useCallback(() => (\r\n \r\n ), [i18n]);\r\n\r\n const onRenderMOATLabel = useCallback(() => (\r\n \r\n ), [i18n]);\r\n\r\n const onRenderIASCheckbox = useCallback(() => (\r\n \r\n \r\n \r\n \r\n \r\n ), [styles.disconnectedStatusTile.root, onCheckStatusChangeGenerator, onRenderIASLabel, settings, onRenderadvertiserIdTextField, onAdvertiserIdChange, tagErrorMessage, onRenderpublisherIdTextField, onPublisherIdChange]);\r\n\r\n return (\r\n
\r\n \r\n {onRenderIASCheckbox()}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nThirdPartyMeasurementV2.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n updateValidation: PropTypes.func.isRequired,\r\n validationProps: PropTypes.shape({\r\n data: PropTypes.shape({\r\n VerifiedTrackingSettings: PropTypes.arrayOf(PropTypes.shape({})),\r\n }),\r\n }).isRequired,\r\n overrideStyles: PropTypes.shape({}),\r\n};\r\n\r\nThirdPartyMeasurementV2.defaultProps = {\r\n overrideStyles: {},\r\n};\r\n\r\nStatusLabel.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n type: PropTypes.string.isRequired,\r\n success: PropTypes.bool.isRequired,\r\n value: PropTypes.string,\r\n};\r\n\r\nStatusLabel.defaultProps = {\r\n value: '',\r\n};\r\n\r\nexport const ThirdPartyMeasurementV2WithValidation = withControlErrorHandling(withUnvalidatedControlErrors(withError(withCustomValidation(ThirdPartyMeasurementV2))));\r\n","import React, { useMemo, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\n\r\nimport { CommandButton, Stack } from '@bingads-webui-react/fabric-control';\r\nimport { HelpPopupInline } from '@bingads-webui-react/help-popup';\r\nimport { withCustomValidation, withError } from '@bingads-webui-react/validation';\r\nimport { withControlErrorHandling, withUnvalidatedControlErrors } from '@bingads-webui-campaign-react/error-handling';\r\nimport { ThirdPartyMeasurement, formatThirdPartyMeasurementSetting } from './third-party-measurement';\r\nimport { ThirdPartyMeasurementV2 } from './third-party-measurement-V2';\r\n\r\n\r\nconst defaultStyles = {\r\n thirdPartyMeasurementFolderButton: {\r\n label: { color: '#0078D4', fontWeight: 600 },\r\n icon: { fontSize: 14, fontWeight: 400 },\r\n root: { verticalAlign: 'middle' },\r\n },\r\n};\r\n\r\nexport const ThirdPartyMeasurementCardContainer = (props) => {\r\n const {\r\n i18n,\r\n updateValidation,\r\n validationProps,\r\n adType = 'video',\r\n overrideStyles = {},\r\n showSimpleMessage,\r\n isForDeal,\r\n dealLoaded,\r\n isMOATEnabled,\r\n } = props;\r\n\r\n const initialFolded = !_.isEmpty(_.get(validationProps, ['data', 'VerifiedTrackingSettings'], {}));\r\n const [folded, setFolded] = useState(initialFolded);\r\n\r\n const foldedIconProps = useMemo(() => {\r\n const iconName = folded ? 'ChevronDown' : 'ChevronRight';\r\n return { iconName };\r\n }, [folded]);\r\n\r\n const styles = useMemo(() => ({\r\n ...defaultStyles,\r\n ...overrideStyles,\r\n }), [overrideStyles]);\r\n\r\n if (!dealLoaded || isForDeal) return null;\r\n\r\n const ThirdPartyMeasurementComponent = isMOATEnabled ? ThirdPartyMeasurementV2: ThirdPartyMeasurement;\r\n\r\n return (\r\n
\r\n \r\n setFolded(!folded)}\r\n iconProps={foldedIconProps}\r\n styles={\r\n styles.thirdPartyMeasurementFolderButton\r\n }\r\n />\r\n \r\n \r\n {folded ? (\r\n \r\n ) : (showSimpleMessage && formatThirdPartyMeasurementSetting(validationProps.data.VerifiedTrackingSettings, i18n))}\r\n
\r\n );\r\n};\r\n\r\nThirdPartyMeasurementCardContainer.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n updateValidation: PropTypes.func.isRequired,\r\n validationProps: PropTypes.shape({\r\n data: PropTypes.shape({\r\n VerifiedTrackingSettings: PropTypes.arrayOf(PropTypes.shape({})),\r\n }),\r\n }).isRequired,\r\n adType: PropTypes.string,\r\n showSimpleMessage: PropTypes.bool,\r\n overrideStyles: PropTypes.shape({}),\r\n isForDeal: PropTypes.bool,\r\n dealLoaded: PropTypes.bool,\r\n isMOATEnabled: PropTypes.bool,\r\n};\r\n\r\nThirdPartyMeasurementCardContainer.defaultProps = {\r\n adType: 'video',\r\n showSimpleMessage: false,\r\n overrideStyles: {},\r\n isForDeal: false,\r\n dealLoaded: true,\r\n isMOATEnabled: false,\r\n};\r\n\r\nexport const ThirdPartyMeasurementContainerWithValidation = withControlErrorHandling(withUnvalidatedControlErrors(withError(withCustomValidation(ThirdPartyMeasurementCardContainer))));\r\n","import { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport Backbone from 'backbone';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\n\r\nimport { ThirdPartyMeasurementCardContainer } from './third-party-measurement-container';\r\n\r\n\r\nconst overrideStyles = {\r\n thirdPartyMeasurementFolderButton: {\r\n label: { color: '#0078D4', fontWeight: 600 },\r\n icon: {\r\n fontSize: 14, fontWeight: 600, marginLeft: 0, marginRight: 4,\r\n },\r\n root: { verticalAlign: 'middle' },\r\n },\r\n disconnectedStatusTile: {\r\n root: {\r\n marginLeft: 0,\r\n },\r\n },\r\n connectedStatusTile: {\r\n root: {\r\n marginLeft: 0,\r\n },\r\n },\r\n};\r\n\r\nexport class ThirdPartyMeasurementBackboneView extends Backbone.View {\r\n initialize({\r\n i18n,\r\n initialThirdPartyMeasurement,\r\n isMOATEnabled = false,\r\n }) {\r\n this.i18n = i18n;\r\n this.validationProps = {\r\n data: {\r\n VerifiedTrackingSettings: initialThirdPartyMeasurement,\r\n },\r\n };\r\n this.isMOATEnabled = isMOATEnabled;\r\n this.saveVerifiedTrackingSetting = this.saveVerifiedTrackingSetting.bind(this);\r\n return this;\r\n }\r\n\r\n // We need to make this func fit for ThirdPartyMeasurementCardContainer\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n saveVerifiedTrackingSetting(dummyErrorArr = [], VerifiedTrackingObj) {\r\n const verifiedTrackingSettings = VerifiedTrackingObj.VerifiedTrackingSettings;\r\n\r\n this.trigger('InputChange', verifiedTrackingSettings);\r\n }\r\n\r\n renderWithInput(verifiedTrackingObj) {\r\n this.validationProps = {\r\n data: {\r\n VerifiedTrackingSettings: verifiedTrackingObj,\r\n },\r\n };\r\n this.render();\r\n }\r\n\r\n render() {\r\n ReactDOM.render(\r\n \r\n \r\n \r\n , this.el\r\n );\r\n return this;\r\n }\r\n}\r\n\r\n","import _ from 'underscore';\r\n\r\nexport const campaignThirdPartyVendors = {\r\n ISPOT: 'ISPOT',\r\n DV: 'DV',\r\n};\r\n\r\nexport const reachVendors = [\r\n campaignThirdPartyVendors.ISPOT,\r\n];\r\n\r\nexport const verificationVendors = [\r\n campaignThirdPartyVendors.DV,\r\n];\r\n\r\nexport const campaignThirdPartyVendorNames = {\r\n ISPOT: _TL_('iSPOT'),\r\n DV: _TL_('DoubleVerify'),\r\n};\r\n\r\nexport const thirdPartyMeasurementTrackingVendorHeader = {\r\n ISPOT: _TL_('Reach vendor'),\r\n DV: _TL_('Verification vendor'),\r\n};\r\n\r\nexport const thirdPartyVendorHeaderPopupTopic = {\r\n ISPOT: 'pop_BA_Measurement_Reach',\r\n DV: 'pop_BA_Measurement_Verification',\r\n};\r\n\r\nexport const thirdPartyMeasurementTrackingVendorField = {\r\n ISPOT_brandId: 'brandId',\r\n ThirdPartyMeasurement_setting: 'setting',\r\n};\r\n\r\nconst thirdPartySettingError = {\r\n ISPOT_brandId_shouldNotBeEmpty: _TL_('iSpot Brand ID is required'),\r\n ISPOT_brandId_shouldBeNumeric: _TL_('iSpot Brand ID should be numeric'),\r\n ISPOT_brandId_brandIdTooLong: _TL_('iSpot Brand ID should be no more than 7 characters'),\r\n};\r\n\r\nexport const vendorNameKey = 'vendorName';\r\nexport const settingEnabledKey = 'enabled';\r\nconst numericPattern = /^\\d+$/;\r\nconst maxBrandIdLength = 7;\r\nexport const VerifiedTrackingSettingKey = 'VerifiedTrackingSettings';\r\n\r\nconst ispotValidator = ({ setting, i18n }) => {\r\n const errors = [];\r\n const brandId = _.get(setting, [thirdPartyMeasurementTrackingVendorField.ISPOT_brandId]);\r\n if (_.isEmpty(brandId)) {\r\n errors.push(i18n.getString(thirdPartySettingError.ISPOT_brandId_shouldNotBeEmpty));\r\n return errors;\r\n }\r\n\r\n if (numericPattern.test(brandId) === false) {\r\n errors.push(i18n.getString(thirdPartySettingError.ISPOT_brandId_shouldBeNumeric));\r\n return errors;\r\n }\r\n\r\n if (brandId.length > maxBrandIdLength) {\r\n errors.push(i18n.getString(thirdPartySettingError.ISPOT_brandId_brandIdTooLong));\r\n }\r\n return errors;\r\n};\r\n\r\nexport const isVendorSelectedInSetting = (settings, vendorName) => {\r\n const foundSetting = _.find(settings, setting => setting[vendorNameKey] === vendorName);\r\n if (foundSetting) {\r\n return _.get(foundSetting, settingEnabledKey, false);\r\n }\r\n return false;\r\n};\r\n\r\nexport const thirdPartySettingValidatorMap = {\r\n ISPOT: ispotValidator,\r\n};\r\n\r\nexport const createVerifiedTrackingSettingViewModel = value => ({\r\n [VerifiedTrackingSettingKey]: value,\r\n});\r\n\r\n","export const thridPartyMeasurementTrackingStyles = {\r\n thirdPartyMeasurementGuide: {\r\n root: {\r\n ' .ms-Label': {\r\n fontSize: 14,\r\n fontWeight: 400,\r\n },\r\n lineHeight: 20,\r\n },\r\n },\r\n\r\n thirdPartyMeasurementRemoveAllStack: {\r\n root: {\r\n height: 0,\r\n },\r\n },\r\n\r\n thirdPartyMeasurementRemoveAllButton: {\r\n label: { color: '#424242', fontWeight: 600 },\r\n root: {\r\n marginTop: 16,\r\n height: 31,\r\n // Fix the focus wrapping un-complete issue in desert mode\r\n '@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)': {\r\n '&:focus::after': {\r\n inset: '0px !important',\r\n },\r\n },\r\n },\r\n },\r\n\r\n thirdPartyMeasurementAddButton: {\r\n label: { color: '#0078D4', fontWeight: 600 },\r\n icon: { fontSize: 14, fontWeight: 400 },\r\n root: {\r\n verticalAlign: 'middle',\r\n // Fix the focus wrapping un-complete issue in desert mode\r\n '@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)': {\r\n '&:focus::after': {\r\n inset: '0px !important',\r\n },\r\n },\r\n },\r\n dropdown: {\r\n root: {\r\n width: 312,\r\n ' .ms-ContextualMenu-header': {\r\n paddingLeft: 8,\r\n fontSize: 12,\r\n fontWeight: 600,\r\n color: '#616161',\r\n },\r\n ' .ms-ContextualMenu-link': {\r\n paddingLeft: 28,\r\n fontSize: 14,\r\n fontWeight: 400,\r\n lineHeight: 20,\r\n },\r\n },\r\n },\r\n },\r\n\r\n thirdPartyMeasurementVendorSettings: {\r\n root: {\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n ' .vendor-settings': {\r\n ' .third-party-measurement-vendor': {\r\n marginLeft: 10,\r\n marginRight: 10,\r\n paddingTop: 31,\r\n ' .ms-TextField-field': {\r\n width: 215,\r\n height: 32,\r\n },\r\n ' label': {\r\n fontWeight: 400,\r\n },\r\n },\r\n\r\n ' .ispot-brand-id': {\r\n marginLeft: 10,\r\n marginRight: 10,\r\n ' .ms-TextField-field': {\r\n width: 215,\r\n height: 32,\r\n },\r\n ' label': {\r\n fontWeight: 400,\r\n },\r\n },\r\n ' .account-linked-status': {\r\n paddingTop: 30,\r\n },\r\n },\r\n ' .third-party-measurement-remove-button': {\r\n paddingTop: 30,\r\n },\r\n },\r\n },\r\n\r\n thirdPartyMeasurementRemoveButton: {\r\n icon: { fontSize: 14, fontWeight: 400, color: '#424242' },\r\n root: { verticalAlign: 'middle', marginRight: 27 },\r\n },\r\n\r\n warningMessageContainer: {\r\n root: {\r\n marginTop: 16,\r\n padding: 8,\r\n },\r\n },\r\n\r\n warningMessage: {\r\n backgroundColor: '#F5F5F5',\r\n border: '1px solid',\r\n paddingInline: 12,\r\n verticalAlign: 'middle',\r\n borderRadius: 4,\r\n borderColor: '#D1D1D1',\r\n gap: 8,\r\n height: 36,\r\n icon: {\r\n color: '#616161',\r\n fontSize: 20,\r\n height: 20,\r\n width: 20,\r\n fontWeight: 400,\r\n marginTop: 2,\r\n },\r\n },\r\n\r\n warningMessageText: {\r\n root: {\r\n fontWeight: 400,\r\n },\r\n },\r\n\r\n label: options => ({\r\n color: options.linked ? '#115EA3' : '#8A3707',\r\n backgroundColor: options.linked ? '#EBF3FC' : '#FDCFB4',\r\n borderColor: options.linked ? '#B4D6FA' : '#FFF9F5',\r\n fontWeight: 600,\r\n fontSize: 12,\r\n border: '1px solid',\r\n verticalAlign: 'middle',\r\n borderRadius: 99,\r\n height: 20,\r\n minWidth: 24,\r\n paddingInline: 5,\r\n paddingTop: 1,\r\n paddingBottom: 3,\r\n marginLeft: 8,\r\n marginRight: 8,\r\n }),\r\n};\r\n","import React, { useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { Stack, Label, Icon } from '@bingads-webui-react/fabric-control';\r\nimport { thridPartyMeasurementTrackingStyles } from '../../styles/third-party-measurement-setting-styles';\r\n\r\nconst warningMessageDefaultSettings = {\r\n iconName: 'InfoSolid',\r\n tagName: _TL_('Note'),\r\n};\r\n\r\nexport const WarningMessage = (props) => {\r\n const {\r\n i18n,\r\n message,\r\n customSettings,\r\n overrideStyles,\r\n } = props;\r\n\r\n const styles = useMemo(() => ({\r\n ...thridPartyMeasurementTrackingStyles,\r\n ...overrideStyles,\r\n }), [overrideStyles]);\r\n\r\n const settings = {\r\n ...warningMessageDefaultSettings,\r\n ...customSettings,\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nWarningMessage.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n message: PropTypes.string.isRequired,\r\n customSettings: PropTypes.shape({}),\r\n overrideStyles: PropTypes.shape({}),\r\n};\r\n\r\nWarningMessage.defaultProps = {\r\n customSettings: {},\r\n overrideStyles: {},\r\n};\r\n\r\n","import React, { useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { Label } from '@bingads-webui-react/fabric-control';\r\nimport { thridPartyMeasurementTrackingStyles } from '../../styles/third-party-measurement-setting-styles';\r\n\r\nexport const AccountLinkedStatusLabel = ({ doubleVerifyLinkEstablished, i18n, overrideStyle }) => {\r\n let statusMessage = i18n.getString(_TL_('Unknown status'));\r\n if (!doubleVerifyLinkEstablished) {\r\n statusMessage = i18n.getString(_TL_('Not activated'));\r\n } else {\r\n statusMessage = i18n.getString(_TL_('Activated'));\r\n }\r\n const style = useMemo(() => ({\r\n ...thridPartyMeasurementTrackingStyles.label({ linked: doubleVerifyLinkEstablished }),\r\n ...overrideStyle,\r\n }), [overrideStyle, doubleVerifyLinkEstablished]);\r\n\r\n return (\r\n \r\n {statusMessage}\r\n \r\n );\r\n};\r\n\r\nAccountLinkedStatusLabel.propTypes = {\r\n doubleVerifyLinkEstablished: PropTypes.bool.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n overrideStyle: PropTypes.shape({}),\r\n};\r\n\r\nAccountLinkedStatusLabel.defaultProps = {\r\n overrideStyle: {},\r\n};\r\n\r\n","import React from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { TextField, Stack, Label } from '@bingads-webui-react/fabric-control';\r\nimport { HelpPopupInline } from '@bingads-webui-react/help-popup';\r\nimport {\r\n thirdPartyMeasurementTrackingVendorField,\r\n} from '../../model/campaign-third-party-vendor-setting';\r\nimport { AccountLinkedStatusLabel } from './account-linked-status-label';\r\n\r\nconst ISPOTConfig = ({ setting, i18n, setSetting }) => {\r\n const onChangeBrandId = (e, value) => {\r\n const updatedSetting = {\r\n ..._.omit(setting, 'indexInSettings'),\r\n [thirdPartyMeasurementTrackingVendorField.ISPOT_brandId]: value,\r\n };\r\n setSetting(updatedSetting);\r\n };\r\n\r\n const onRenderLabel = () => (\r\n \r\n \r\n \r\n \r\n );\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst DVConfig = ({ i18n, doubleVerifyLinkEstablished }) => (\r\n \r\n \r\n { doubleVerifyLinkEstablished ?\r\n i18n.getString(_TL_('This measurement provider is activated for your account.'))\r\n : i18n.getString(_TL_('This measurement provider isn’t activated for your account.'))\r\n }\r\n \r\n);\r\n\r\nexport const customVendorConfigs = {\r\n ISPOT: ISPOTConfig,\r\n DV: DVConfig,\r\n};\r\n\r\nISPOTConfig.propTypes = {\r\n setting: PropTypes.shape({}).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n setSetting: PropTypes.func.isRequired,\r\n};\r\n\r\nDVConfig.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n doubleVerifyLinkEstablished: PropTypes.bool.isRequired,\r\n};\r\n\r\n","import React, { useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { Stack, CommandButton, TextField } from '@bingads-webui-react/fabric-control';\r\n\r\nimport {\r\n vendorNameKey,\r\n campaignThirdPartyVendorNames,\r\n campaignThirdPartyVendors,\r\n} from '../../model/campaign-third-party-vendor-setting';\r\nimport { thridPartyMeasurementTrackingStyles } from '../../styles/third-party-measurement-setting-styles';\r\nimport { WarningMessage } from './warning-message';\r\nimport { customVendorConfigs } from './custom-config';\r\n\r\nexport const ThirdPartyTrackingSetting = (props) => {\r\n const {\r\n i18n,\r\n setting,\r\n setSetting,\r\n removeSetting,\r\n overrideStyles,\r\n doubleVerifyLinkEstablished,\r\n } = props;\r\n\r\n const styles = useMemo(() => ({\r\n ...thridPartyMeasurementTrackingStyles,\r\n ...overrideStyles,\r\n }), [overrideStyles]);\r\n\r\n const VendorConfig = customVendorConfigs[setting[vendorNameKey]];\r\n const isiSPOTSetting = setting[vendorNameKey] === campaignThirdPartyVendors.ISPOT;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n {VendorConfig &&\r\n }\r\n \r\n \r\n \r\n {isiSPOTSetting &&\r\n \r\n \r\n \r\n }\r\n
\r\n );\r\n};\r\n\r\nThirdPartyTrackingSetting.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n setting: PropTypes.shape({\r\n [vendorNameKey]: PropTypes.string,\r\n }).isRequired,\r\n setSetting: PropTypes.func.isRequired,\r\n removeSetting: PropTypes.func.isRequired,\r\n overrideStyles: PropTypes.shape({}),\r\n doubleVerifyLinkEstablished: PropTypes.bool,\r\n};\r\n\r\nThirdPartyTrackingSetting.defaultProps = {\r\n overrideStyles: {},\r\n doubleVerifyLinkEstablished: false,\r\n};\r\n\r\n","import React, { useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { Stack, CommandButton } from '@bingads-webui-react/fabric-control';\r\n\r\nimport { thridPartyMeasurementTrackingStyles } from '../../styles/third-party-measurement-setting-styles';\r\n\r\n\r\nexport const ThirdPartyTrackingRemoveAllButton = (props) => {\r\n const {\r\n i18n,\r\n removeAllVendorSettings,\r\n overrideStyles,\r\n } = props;\r\n\r\n const styles = useMemo(() => ({\r\n ...thridPartyMeasurementTrackingStyles,\r\n ...overrideStyles,\r\n }), [overrideStyles]);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nThirdPartyTrackingRemoveAllButton.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n removeAllVendorSettings: PropTypes.func.isRequired,\r\n overrideStyles: PropTypes.shape({}),\r\n};\r\n\r\nThirdPartyTrackingRemoveAllButton.defaultProps = {\r\n overrideStyles: {},\r\n};\r\n","import React, { useState, useMemo, useEffect, useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\n\r\nimport { HelpPopupInline } from '@bingads-webui-react/help-popup';\r\nimport { Stack, Label, CommandButton } from '@bingads-webui-react/fabric-control';\r\nimport {\r\n ContextualMenuItemType,\r\n} from '@fluentui/react/lib/ContextualMenu';\r\nimport { withCustomValidation, withError } from '@bingads-webui-react/validation';\r\nimport { withControlErrorHandling, withUnvalidatedControlErrors } from '@bingads-webui-campaign-react/error-handling';\r\nimport { useAccountPropertyRepository } from './component/use-account-property-repository';\r\n\r\nimport {\r\n campaignThirdPartyVendors,\r\n vendorNameKey,\r\n settingEnabledKey,\r\n thirdPartySettingValidatorMap,\r\n createVerifiedTrackingSettingViewModel,\r\n reachVendors,\r\n verificationVendors,\r\n campaignThirdPartyVendorNames,\r\n VerifiedTrackingSettingKey,\r\n isVendorSelectedInSetting,\r\n} from '../model/campaign-third-party-vendor-setting';\r\n\r\nimport { ThirdPartyTrackingSetting } from './component/third-party-vendor-setting';\r\nimport { ThirdPartyTrackingRemoveAllButton } from './component/third-party-measurement-remove-all-button';\r\nimport { thridPartyMeasurementTrackingStyles } from '../styles/third-party-measurement-setting-styles';\r\n\r\nexport const formatVendorSettings = ({ verifiedTrackingSettingsValidationProps, i18n }) => {\r\n const verifiedTrackingSettings = _.result(verifiedTrackingSettingsValidationProps, ['data', VerifiedTrackingSettingKey], []);\r\n const isSettingsAllDisabled = settings => _.every(settings, setting => !_.get(setting, [settingEnabledKey], true));\r\n const settingEmpty = _.isEmpty(verifiedTrackingSettings) || isSettingsAllDisabled(verifiedTrackingSettings);\r\n\r\n const getVendorNames = (settings) => {\r\n const validSettings = _.filter(settings, setting => _.get(setting, [settingEnabledKey], true));\r\n const selectedVendors = _.map(validSettings, setting => _.get(setting, [vendorNameKey], ''));\r\n const vendorNameArr = _.map(selectedVendors, vendor => i18n.getString(campaignThirdPartyVendorNames[vendor]));\r\n return vendorNameArr.join(', ');\r\n };\r\n\r\n return (\r\n
\r\n {\r\n settingEmpty ?\r\n i18n.getString(_TL_('No third-party vendor selected')) :\r\n (\r\n
\r\n {i18n.getString(_TL_('Added: ')) + getVendorNames(verifiedTrackingSettings)}\r\n
\r\n )\r\n }\r\n
\r\n );\r\n};\r\n\r\nexport const ThirdPartyMeasurementV3 = (props) => {\r\n const {\r\n i18n,\r\n updateValidation,\r\n validationProps,\r\n overrideStyles,\r\n IsMSANISPOTEnabled,\r\n EnableDoubleVerify,\r\n cid,\r\n aid,\r\n } = props;\r\n\r\n const [doubleVerifyLinkEstablished] = useAccountPropertyRepository({ cid, aid });\r\n\r\n const [settings, setSettings] = useState([]);\r\n const styles = useMemo(() => ({\r\n ...thridPartyMeasurementTrackingStyles,\r\n ...overrideStyles,\r\n }), [overrideStyles]);\r\n const verifiedTrackingData = useMemo(\r\n () => {\r\n const data = _.result(validationProps, ['data'], null);\r\n if (_.isNull(data)) {\r\n return null;\r\n }\r\n return _.result(validationProps, ['data', VerifiedTrackingSettingKey], []);\r\n }\r\n , [validationProps]\r\n );\r\n\r\n // Set settings on initailization\r\n useEffect(() => {\r\n if (_.isNull(verifiedTrackingData) || _.isUndefined(verifiedTrackingData)) return;\r\n const settingsToUpdate = [];\r\n _.each(campaignThirdPartyVendors, (vendor) => {\r\n const vendorData = verifiedTrackingData.find(setting => setting[vendorNameKey] === vendor);\r\n if (!_.isEmpty(vendorData)) {\r\n settingsToUpdate.push({\r\n [settingEnabledKey]: true,\r\n ...vendorData,\r\n });\r\n } else {\r\n settingsToUpdate.push({\r\n [settingEnabledKey]: false,\r\n [vendorNameKey]: vendor,\r\n });\r\n }\r\n });\r\n setSettings(settingsToUpdate);\r\n }, [verifiedTrackingData]);\r\n\r\n // Update to outside when settings change and valiate\r\n useEffect(() => {\r\n if (_.isEmpty(settings)) {\r\n return;\r\n }\r\n // Validate each vendor settings\r\n const errorsToUpdate = [];\r\n const validatedSettingsArray = [];\r\n _.each(settings, (setting) => {\r\n const vendor = setting[vendorNameKey];\r\n if (_.isEmpty(vendor)) {\r\n return;\r\n }\r\n let validatedVendorSetting = { [vendorNameKey]: vendor };\r\n const settingEnabled = _.get(setting, [settingEnabledKey], false);\r\n if (settingEnabled) {\r\n // Validate each setting\r\n if (_.isFunction(thirdPartySettingValidatorMap[vendor])) {\r\n const currentVendorErrors = thirdPartySettingValidatorMap[vendor]({ setting, i18n });\r\n if (!_.isEmpty(currentVendorErrors)) {\r\n errorsToUpdate.push(...currentVendorErrors);\r\n }\r\n }\r\n validatedVendorSetting = {\r\n ...validatedVendorSetting,\r\n ...setting,\r\n [settingEnabledKey]: true,\r\n };\r\n } else {\r\n validatedVendorSetting[settingEnabledKey] = false;\r\n }\r\n validatedSettingsArray.push(validatedVendorSetting);\r\n });\r\n // TODO: flatten the errors\r\n updateValidation(errorsToUpdate, createVerifiedTrackingSettingViewModel(validatedSettingsArray));\r\n }, [settings, updateValidation, i18n]);\r\n\r\n const addSetting = useCallback((vendorName) => {\r\n setSettings((originalSettings) => {\r\n const updatedSettings = [];\r\n let vendorFound = false;\r\n _.each(originalSettings, (setting) => {\r\n if (_.get(setting, [vendorNameKey], '') !== vendorName) {\r\n updatedSettings.push({ ...setting });\r\n } else {\r\n // If already existing a vendor setting, enable it\r\n updatedSettings.push({\r\n ...setting,\r\n [settingEnabledKey]: true,\r\n });\r\n vendorFound = true;\r\n }\r\n });\r\n\r\n return vendorFound ? updatedSettings : [\r\n ...updatedSettings,\r\n {\r\n [vendorNameKey]: vendorName,\r\n [settingEnabledKey]: true,\r\n },\r\n ];\r\n });\r\n }, [setSettings]);\r\n\r\n const removeSetting = useCallback((index) => {\r\n setSettings((originalSettings) => {\r\n const newSettings = [];\r\n _.each(originalSettings, (setting, i) => {\r\n if (i === index) {\r\n newSettings.push({\r\n ...setting,\r\n [settingEnabledKey]: false,\r\n });\r\n } else {\r\n newSettings.push({ ...setting });\r\n }\r\n });\r\n return newSettings;\r\n });\r\n }, [setSettings]);\r\n\r\n const removeAllVendorSettings = useCallback((vendorNameArr) => {\r\n setSettings((originalSettings) => {\r\n const newSettings = [];\r\n _.each(originalSettings, (setting) => {\r\n const currentVendorName = _.get(setting, [vendorNameKey], '');\r\n if (_.includes(vendorNameArr, currentVendorName)) {\r\n newSettings.push({\r\n ...setting,\r\n [settingEnabledKey]: false,\r\n });\r\n } else {\r\n newSettings.push({ ...setting });\r\n }\r\n });\r\n return newSettings;\r\n });\r\n }, []);\r\n\r\n const setSetting = useCallback((index, updatedSetting) => {\r\n setSettings(oldSettings => _.map(oldSettings, (s, i) => (i === index ? updatedSetting : s)));\r\n }, [setSettings]);\r\n\r\n const onRenderReachSettings = useCallback(() => {\r\n const reachSettings = [];\r\n _.each(settings, (setting, index) => {\r\n if (_.get(setting, [settingEnabledKey], false) && _.contains(reachVendors, _.get(setting, [vendorNameKey], ''))) {\r\n reachSettings.push({\r\n ...setting,\r\n indexInSettings: index,\r\n });\r\n }\r\n });\r\n\r\n if (_.isEmpty(reachSettings)) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n removeAllVendorSettings(reachVendors)}\r\n />\r\n {reachSettings.map(setting => (\r\n setSetting(setting.indexInSettings, updatedSetting)}\r\n removeSetting={() => removeSetting(setting.indexInSettings)}\r\n />\r\n ))}\r\n
\r\n );\r\n }, [settings, i18n, setSetting, removeSetting, removeAllVendorSettings]);\r\n\r\n const onRenderVerificationSettings = useCallback(() => {\r\n const verificationSettings = [];\r\n _.each(settings, (setting, index) => {\r\n if (_.get(setting, [settingEnabledKey], false) && _.contains(verificationVendors, _.get(setting, [vendorNameKey], ''))) {\r\n verificationSettings.push({\r\n ...setting,\r\n indexInSettings: index,\r\n });\r\n }\r\n });\r\n\r\n if (_.isEmpty(verificationSettings)) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n removeAllVendorSettings(reachVendors)}\r\n />\r\n {verificationSettings.map(setting => (\r\n setSetting(setting.indexInSettings, updatedSetting)}\r\n removeSetting={() => removeSetting(setting.indexInSettings)}\r\n doubleVerifyLinkEstablished={doubleVerifyLinkEstablished}\r\n />\r\n ))}\r\n
\r\n );\r\n }, [settings, i18n, setSetting, removeSetting, removeAllVendorSettings, doubleVerifyLinkEstablished]);\r\n\r\n const addVendorMenuProps = useMemo(() => {\r\n const itemsToPush = [];\r\n if (IsMSANISPOTEnabled) {\r\n itemsToPush.push({ key: 'ReachAndIncrementalityHeader', text: i18n.getString(_TL_('Reach vendor')), itemType: ContextualMenuItemType.Header });\r\n const ispotSelected = isVendorSelectedInSetting(settings, campaignThirdPartyVendors.ISPOT);\r\n itemsToPush.push({\r\n key: 'ISPOT', text: i18n.getString(_TL_('iSpot.tv')), onClick: () => addSetting(campaignThirdPartyVendors.ISPOT), disabled: ispotSelected,\r\n });\r\n }\r\n if (IsMSANISPOTEnabled && EnableDoubleVerify) {\r\n itemsToPush.push({ key: 'divider1', text: '-', itemType: ContextualMenuItemType.Divider });\r\n }\r\n if (EnableDoubleVerify) {\r\n itemsToPush.push({ key: 'VerificationHeader', text: i18n.getString(_TL_('Verification vendor')), itemType: ContextualMenuItemType.Header });\r\n const DVSelected = isVendorSelectedInSetting(settings, campaignThirdPartyVendors.DV);\r\n itemsToPush.push({\r\n key: 'DV', text: i18n.getString(_TL_('DoubleVerify')), onClick: () => addSetting(campaignThirdPartyVendors.DV), disabled: DVSelected,\r\n });\r\n }\r\n return {\r\n items: itemsToPush,\r\n styles: styles.thirdPartyMeasurementAddButton.dropdown,\r\n className: 'third-party-measurement-vendor-dropdown',\r\n };\r\n }, [i18n, addSetting, styles.thirdPartyMeasurementAddButton, IsMSANISPOTEnabled, EnableDoubleVerify, settings]);\r\n\r\n return (\r\n
\r\n {onRenderReachSettings()}\r\n {onRenderVerificationSettings()}\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nThirdPartyMeasurementV3.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n updateValidation: PropTypes.func.isRequired,\r\n validationProps: PropTypes.shape({\r\n data: PropTypes.shape({\r\n VerifiedTrackingSettings: PropTypes.arrayOf(PropTypes.shape({})),\r\n }),\r\n }).isRequired,\r\n overrideStyles: PropTypes.shape({}),\r\n IsMSANISPOTEnabled: PropTypes.bool,\r\n EnableDoubleVerify: PropTypes.bool,\r\n cid: PropTypes.string.isRequired,\r\n aid: PropTypes.string.isRequired,\r\n};\r\n\r\nThirdPartyMeasurementV3.defaultProps = {\r\n overrideStyles: {},\r\n IsMSANISPOTEnabled: false,\r\n EnableDoubleVerify: false,\r\n};\r\n\r\nexport const ThirdPartyMeasurementV3WithValidation = withControlErrorHandling(withUnvalidatedControlErrors(withError(withCustomValidation(ThirdPartyMeasurementV3))));\r\n","import { useCallback, useEffect, useState } from 'react';\r\nimport { edmCampaign } from '@bingads-webui/edm-campaign';\r\n\r\nfunction useAccountPropertyRepository({ cid, aid }) {\r\n const [enableDoubleVerifyForAllCampaigns, setEnableDoubleVerifyForAllCampaigns] = useState(false);\r\n const [doubleVerifyLinkEstablished, setDoubleVerifyLinkEstablished] = useState(false);\r\n\r\n const readAccount = useCallback(() => edmCampaign\r\n .Customers.$withKey(cid)\r\n .Accounts.$withKey(aid)\r\n .get({ select: ['EnableDoubleVerifyForAllCampaigns,DoubleVerifyLinkEstablished'] })\r\n .toPromise(), [aid, cid]);\r\n\r\n useEffect(() => {\r\n readAccount().then((account) => {\r\n setEnableDoubleVerifyForAllCampaigns(account.EnableDoubleVerifyForAllCampaigns === 'true');\r\n setDoubleVerifyLinkEstablished(account.DoubleVerifyLinkEstablished === '1');\r\n }).catch((e) => {\r\n throw e;\r\n });\r\n }, [readAccount]);\r\n\r\n return [doubleVerifyLinkEstablished, enableDoubleVerifyForAllCampaigns];\r\n}\r\n\r\nexport { useAccountPropertyRepository };\r\n","import _ from 'underscore';\r\n\r\nexport const getVerifiedTrackingSettingWrite = (verifiedTrackingSettings = null) => {\r\n if (_.isNull(verifiedTrackingSettings)) {\r\n return {};\r\n }\r\n\r\n if (_.isEmpty(verifiedTrackingSettings)) {\r\n return { VerifiedTrackingData: '' };\r\n }\r\n\r\n const results = [];\r\n _.each(verifiedTrackingSettings, (setting) => {\r\n const result = [];\r\n if (setting.vendorName === 'DV') {\r\n result.push({ Key: 'vendorName', Value: 'DV' });\r\n if (setting.enabled === true) {\r\n result.push({ Key: 'settings', Value: '' });\r\n } else {\r\n result.push({ Key: 'enabled', Value: 'false' });\r\n }\r\n } else {\r\n _.mapObject(setting, (value, key) => {\r\n result.push({ Key: key, Value: value });\r\n });\r\n }\r\n\r\n results.push(result);\r\n });\r\n\r\n return { VerifiedTrackingData: JSON.stringify(results) };\r\n};\r\n\r\nexport const getVerifiedTrackingSettingsRead = (model, customKey = null) => {\r\n const verifiedTrackingSettings = _.get(model, 'VerifiedTrackingSettings');\r\n\r\n if (!verifiedTrackingSettings || verifiedTrackingSettings.length === 0) {\r\n return {};\r\n }\r\n const results = [];\r\n\r\n verifiedTrackingSettings.forEach((setting) => {\r\n const vendor = _.get(setting, 'VerifiedTrackingVendor');\r\n\r\n if (!_.isString(vendor)) {\r\n return;\r\n }\r\n\r\n if (!_.isEqual(vendor, 'IAS') && !_.isEqual(vendor, 'DV') && !_.isEqual(vendor, 'ISPOT')) {\r\n return;\r\n }\r\n\r\n const result = {};\r\n\r\n result.vendorName = vendor;\r\n if (_.isEqual(vendor, 'MOAT')) {\r\n results.push(result);\r\n return;\r\n }\r\n\r\n const data = _.get(setting, ['VerifiedTrackingData', 0, 'Data']);\r\n\r\n if (!_.isObject(data) || _.isEmpty(data)) {\r\n return;\r\n }\r\n\r\n const keys = _.get(data, 'Keys');\r\n\r\n if (!_.isArray(keys) || _.isEmpty(keys)) {\r\n return;\r\n }\r\n\r\n const values = _.get(data, 'Values');\r\n\r\n if (!_.isArray(values) || _.isEmpty(values)) {\r\n return;\r\n }\r\n\r\n const keyMap = {\r\n IAS_advertiserEntityId: 'advertiserEntityId',\r\n IAS_publisherEntityId: 'publisherEntityId',\r\n ISPOT_brandId: 'brandId',\r\n };\r\n\r\n _.each(keys, (key, index) => {\r\n if (keyMap[key]) {\r\n result[keyMap[key]] = values[index];\r\n }\r\n });\r\n results.push(result);\r\n });\r\n\r\n if (!_.isEmpty(customKey)) {\r\n return { [customKey]: results };\r\n }\r\n\r\n return { VerifiedTrackingSettings: results };\r\n};\r\n\r\nexport const thirdPartyMeasurementStringToViewModel = (verifiedTrackingDataString = '') => {\r\n if (_.isEmpty(verifiedTrackingDataString)) {\r\n return [];\r\n }\r\n\r\n let thirdPartyMeasurementFromBulkModel = {};\r\n try {\r\n thirdPartyMeasurementFromBulkModel = JSON.parse(verifiedTrackingDataString);\r\n } catch (e) {\r\n console.log(e);\r\n return [];\r\n }\r\n\r\n if (!_.isArray(thirdPartyMeasurementFromBulkModel) || thirdPartyMeasurementFromBulkModel.length === 0) {\r\n return [];\r\n }\r\n\r\n const results = [];\r\n thirdPartyMeasurementFromBulkModel.forEach((thirdPartyMeasurementSetting) => {\r\n if (!_.isArray(thirdPartyMeasurementSetting)) {\r\n return;\r\n }\r\n const result = {};\r\n _.each(thirdPartyMeasurementSetting, (setting) => {\r\n result[setting.Key] = setting.Value;\r\n });\r\n\r\n results.push(result);\r\n });\r\n\r\n return results;\r\n};\r\n","import { ComponentSettings } from '@bingads-webui-theme-2018/theme-fluent';\r\n\r\nexport const getThumbsUpDownStyles = (components, { palette = {} } = {}) => ({ // eslint-disable-line no-unused-vars, max-len\r\n thumbsUpDown: {\r\n display: 'inline-block',\r\n position: 'absolute',\r\n right: 24,\r\n bottom: 16,\r\n },\r\n thumbsUpDownAddImage: {\r\n display: 'inline-block',\r\n position: 'absolute',\r\n bottom: 16,\r\n right: (window.innerWidth) - 1059,\r\n // 1059 is hardcoded width of add-image panel in image-experience\r\n },\r\n label: {\r\n marginRight: 8,\r\n display: 'inline-block',\r\n },\r\n calloutRoot: {\r\n '& .blocker-image': {\r\n ...ComponentSettings.getBlockerStyle(14, palette),\r\n display: 'inline-block',\r\n },\r\n '& .blocker-text': {\r\n display: 'inline-block',\r\n },\r\n },\r\n});\r\n","export const getFeedbackFormStyles = (components, { palette = {} } = {}) => ({ // eslint-disable-line no-unused-vars, max-len\r\n checkboxOptions: {\r\n marginBottom: 19,\r\n },\r\n feedbackAction: {\r\n float: 'right',\r\n },\r\n feedbackFormRoot: {\r\n overflow: 'hidden',\r\n },\r\n});\r\n","import React, { useState, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport _ from 'underscore';\r\n\r\nimport {\r\n Text,\r\n Checkbox,\r\n TextField,\r\n DefaultButton,\r\n PrimaryButton,\r\n Link,\r\n} from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { ReactTemplate } from '@bingads-webui-react/react-template';\r\nimport { Glyphicon } from '@bingads-webui-react/primitive';\r\n\r\nimport { getFeedbackFormStyles } from './styles/feedback-form';\r\n\r\nexport const FeedbackForm = ({\r\n onSubmit,\r\n onDismiss,\r\n options,\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n const initialOptionsState = _.reduce(options, (memo, { key }) => ({\r\n ...memo,\r\n [key]: false,\r\n }), {});\r\n const [optionsState, setOptionsState] = useState(initialOptionsState);\r\n const [screenshotState, setScreenshotState] = useState(false);\r\n const [commentState, setCommentState] = useState('');\r\n const [enableSubmit, setEnableSubmit] = useState(false);\r\n const classes = useDefaultStyles(getFeedbackFormStyles);\r\n\r\n return (\r\n
\r\n \r\n {i18n.getString(_TL_('Feedback to Microsoft'))}\r\n \r\n \r\n {i18n.getString(_TL_('Please select from the below possible issues if applicable'))}\r\n \r\n
\r\n {\r\n _.map(options, ({ label, key }) => (\r\n {\r\n setOptionsState(prev => ({\r\n ...prev,\r\n [key]: checked,\r\n }));\r\n\r\n if (checked) {\r\n if (!enableSubmit) {\r\n setEnableSubmit(true);\r\n }\r\n } else {\r\n const otherValues = _.values(_.omit(optionsState, key));\r\n\r\n if (!_.some(otherValues, _.identity)) {\r\n setEnableSubmit(false);\r\n }\r\n }\r\n }}\r\n />\r\n ))\r\n }\r\n
\r\n setCommentState(newValue)}\r\n multiline\r\n styles={{\r\n root: {\r\n marginBottom: 24,\r\n },\r\n }}\r\n placeholder={i18n.getString(_TL_('Add a comment'))}\r\n />\r\n setScreenshotState(checked)}\r\n styles={{\r\n root: {\r\n marginBottom: 20,\r\n },\r\n }}\r\n />\r\n\r\n \r\n (\r\n \r\n {`${text} `}\r\n \r\n \r\n ),\r\n }}\r\n template={\r\n i18n.getString(_TL_('To improve service we\\'ll receive some information about your account and device. For more details, please refer to the {{a}}Microsoft privacy statement{{/a}}.'))\r\n }\r\n />\r\n \r\n\r\n
\r\n onSubmit({\r\n options: optionsState,\r\n comments: commentState,\r\n takeScreenshot: screenshotState,\r\n })}\r\n disabled={!enableSubmit || !commentState}\r\n styles={{\r\n root: {\r\n marginRight: 8,\r\n },\r\n }}\r\n />\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nFeedbackForm.propTypes = {\r\n onSubmit: PropTypes.func.isRequired,\r\n onDismiss: PropTypes.func.isRequired,\r\n options: PropTypes.arrayOf(PropTypes.shape({\r\n label: PropTypes.string,\r\n key: PropTypes.string,\r\n })).isRequired,\r\n};\r\n\r\nFeedbackForm.defaultProps = {\r\n};\r\n","import React from 'react';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nconst getIconStyles = () => ({\r\n icon: {\r\n marginBottom: 8,\r\n '& svg': {\r\n display: 'block',\r\n margin: 'auto',\r\n },\r\n },\r\n});\r\n\r\nexport const ThankYouIcon = () => {\r\n const classes = useDefaultStyles(getIconStyles);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport {\r\n Text,\r\n DefaultButton,\r\n} from '@bingads-webui-react/fabric-control';\r\n\r\nimport { ThankYouIcon } from './styles/thank-you-icon';\r\n\r\nexport const ThankYouContent = ({\r\n onDismiss,\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n
\r\n \r\n \r\n {i18n.getString(_TL_('Thanks!'))}\r\n \r\n \r\n {i18n.getString(_TL_('We appreciate your feedback.'))}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nThankYouContent.propTypes = {\r\n onDismiss: PropTypes.func.isRequired,\r\n};\r\nThankYouContent.defaultProps = {\r\n\r\n};\r\n","import html2canvas from 'html2canvas';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { stringifySync } from '@bingads-webui/safe-json';\r\nimport { OCVDataService } from '@bingads-webui-react/feedback-panel';\r\n\r\nclass ThumbsUpDownOCVDataService extends OCVDataService {\r\n checkCompliance() {\r\n return true;\r\n }\r\n}\r\n\r\nconst defaultTestAppId = 50025;\r\nconst defaultAppId = 2482;\r\n\r\nconst serializeComments = ({ comments, options }) => `UserComments:${comments};;FormOptions:${stringifySync(options)}`;\r\n\r\nexport const sendFeedbackInternal = ({\r\n formOptions,\r\n featureArea,\r\n onFinishTakeScreenshot,\r\n onFinishSendRequest,\r\n isTestEnv,\r\n dataService,\r\n}) => {\r\n const clientFeedbackId = uuidv4();\r\n const serializedComments = serializeComments(formOptions);\r\n\r\n const feedback = {\r\n type: 'Frown',\r\n comment: serializedComments,\r\n complianceChecks: {\r\n authenticationType: 'MSA',\r\n ageGroup: 'Adult',\r\n },\r\n };\r\n\r\n const telemetry = {\r\n featureArea,\r\n };\r\n\r\n let screenshotGenerationPromise;\r\n\r\n if (formOptions.takeScreenshot) {\r\n screenshotGenerationPromise = html2canvas(document.body, {\r\n foreignObjectRendering: true,\r\n logging: false,\r\n })\r\n .then(canvas => canvas.toDataURL('image/jpeg'))\r\n .then((data) => {\r\n onFinishTakeScreenshot();\r\n return data;\r\n });\r\n }\r\n\r\n dataService.sendFeedback({\r\n feedback,\r\n telemetry,\r\n screenshotGenerationPromise,\r\n onSuccess: onFinishSendRequest,\r\n onError: onFinishSendRequest,\r\n appId: isTestEnv ? defaultTestAppId : defaultAppId,\r\n clientFeedbackId,\r\n isTestEnv,\r\n });\r\n};\r\n\r\n\r\nexport const sendFeedback = ({\r\n formOptions,\r\n featureArea,\r\n onFinishTakeScreenshot,\r\n onFinishSendRequest,\r\n isTestEnv,\r\n}) => {\r\n const dataService = new ThumbsUpDownOCVDataService();\r\n\r\n sendFeedbackInternal({\r\n formOptions,\r\n featureArea,\r\n onFinishTakeScreenshot,\r\n onFinishSendRequest,\r\n isTestEnv,\r\n dataService,\r\n });\r\n};\r\n","import React, { useState, useContext, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport _ from 'underscore';\r\n\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { Callout, IconButton, DirectionalHint } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { UiBlocker } from '@bingads-webui-react/ui-blocker';\r\n\r\nimport { getThumbsUpDownStyles } from './styles/thumbs-up-down';\r\nimport { FeedbackForm } from './feedback-form';\r\nimport { ThankYouContent } from './thank-you-content';\r\nimport { sendFeedback } from './ocv-data-source';\r\n\r\nexport const ThumbsUpDown = ({\r\n onThumbsUpSignal,\r\n onThumbsDownSignal,\r\n featureArea,\r\n isTestEnv,\r\n containerName,\r\n}) => {\r\n const classes = useDefaultStyles(getThumbsUpDownStyles);\r\n const i18n = useContext(I18nContext);\r\n\r\n const [thumbsUpSelected, setThumbsUpSelected] = useState(false);\r\n const [thumbsDownSelected, setThumbsDownSelected] = useState(false);\r\n const [showFeedback, setShowFeedback] = useState(true);\r\n const [showThumbsUpThankYouContent, setShowThumbsUpThankYouContent] = useState(false);\r\n const [showThumbsDownThankYouContent, setShowThumbsDownThankYouContent] = useState(false);\r\n const [showBlocker, setShowBlocker] = useState(false);\r\n const [blockerText, setBlockerText] = useState(i18n.getString(_TL_('Loading...')));\r\n const [formOptionsInternal, setFormOptionsInternal] = useState(null);\r\n const [hasOngoingRequest, setHasOngoingRequest] = useState(false);\r\n\r\n\r\n const options = [{\r\n label: i18n.getString(_TL_('Issues with images extracted from my website')),\r\n key: 'websiteImages',\r\n }, {\r\n label: i18n.getString(_TL_('Issues with smart effects & cropping')),\r\n key: 'smartEffects',\r\n }, {\r\n label: i18n.getString(_TL_('Other')),\r\n key: 'other',\r\n }];\r\n\r\n useEffect(() => {\r\n if (showBlocker && !hasOngoingRequest) {\r\n setHasOngoingRequest(true);\r\n\r\n sendFeedback({\r\n formOptions: formOptionsInternal,\r\n featureArea,\r\n onFinishTakeScreenshot: () => {\r\n setBlockerText(i18n.getString(_TL_('Loading...')));\r\n },\r\n onFinishSendRequest: () => {\r\n setShowBlocker(false);\r\n setShowFeedback(false);\r\n setHasOngoingRequest(false);\r\n setFormOptionsInternal(null);\r\n setShowThumbsDownThankYouContent(true);\r\n },\r\n isTestEnv,\r\n });\r\n }\r\n }, [\r\n setHasOngoingRequest,\r\n showBlocker,\r\n setShowBlocker,\r\n setShowFeedback,\r\n hasOngoingRequest,\r\n setFormOptionsInternal,\r\n setShowThumbsUpThankYouContent,\r\n featureArea,\r\n isTestEnv,\r\n formOptionsInternal,\r\n setBlockerText,\r\n i18n,\r\n ]);\r\n\r\n return (\r\n
\r\n
\r\n {i18n.getString(_TL_('Leave feedback'))}\r\n
\r\n {\r\n const newThumbsUpState = !thumbsUpSelected;\r\n\r\n setThumbsUpSelected(newThumbsUpState);\r\n setShowThumbsUpThankYouContent(newThumbsUpState);\r\n setThumbsDownSelected(false);\r\n\r\n if (newThumbsUpState === true) {\r\n onThumbsUpSignal();\r\n }\r\n }}\r\n >\r\n {\r\n showThumbsUpThankYouContent && (\r\n \r\n setShowThumbsUpThankYouContent(false)}\r\n />\r\n \r\n )\r\n }\r\n \r\n {\r\n const newThumbsDownState = !thumbsDownSelected;\r\n\r\n setThumbsDownSelected(newThumbsDownState);\r\n setThumbsUpSelected(false);\r\n setShowFeedback(newThumbsDownState);\r\n setShowThumbsUpThankYouContent(false);\r\n if (newThumbsDownState === true) {\r\n onThumbsDownSignal();\r\n } else {\r\n setShowThumbsDownThankYouContent(false);\r\n }\r\n }}\r\n >\r\n {\r\n thumbsDownSelected && (showFeedback || showThumbsDownThankYouContent) && (\r\n \r\n \r\n {\r\n showFeedback ? (\r\n {\r\n setShowBlocker(true);\r\n setFormOptionsInternal(formOptions);\r\n\r\n if (formOptions.takeScreenshot) {\r\n setBlockerText(i18n.getString(_TL_('Taking screenshot...')));\r\n }\r\n }}\r\n options={options}\r\n onDismiss={() => {\r\n setShowFeedback(false);\r\n setShowThumbsDownThankYouContent(false);\r\n }}\r\n />\r\n ) : (\r\n setShowThumbsDownThankYouContent(false)}\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\nThumbsUpDown.propTypes = {\r\n featureArea: PropTypes.string.isRequired,\r\n isTestEnv: PropTypes.bool.isRequired,\r\n onThumbsUpSignal: PropTypes.func,\r\n onThumbsDownSignal: PropTypes.func,\r\n containerName: PropTypes.string,\r\n};\r\n\r\nThumbsUpDown.defaultProps = {\r\n onThumbsUpSignal: _.noop,\r\n onThumbsDownSignal: _.noop,\r\n containerName: 'thumbsUpDown',\r\n};\r\n","import _, { each, extend, find, isFunction, noop } from 'underscore';\r\nimport $ from 'jquery';\r\n\r\nfunction findIdInToolbarSubMenu(id, toolbarItem) {\r\n return find(toolbarItem.menu && toolbarItem.menu.items, menuItem => id === menuItem.id);\r\n}\r\n\r\n// toolbar item may appear in both selected & unselected, such as inline chart\r\nclass ToolbarEditor {\r\n constructor(options) {\r\n const { overrideWith, toolbarConfig, updateToolbar } = options;\r\n\r\n extend(this, {\r\n overrideWith,\r\n toolbarConfig,\r\n updateToolbar,\r\n $,\r\n });\r\n }\r\n\r\n update = (value) => {\r\n const toolbarConfigs = ['toolbarSelectedConfig', 'toolbarUnselectedConfig'];\r\n const { id } = value;\r\n\r\n let hasAnyToolbarBeenUpdated = false;\r\n\r\n each(toolbarConfigs, (configName) => {\r\n let hasBeenUpdated = false;\r\n const toolbarConfig = this.toolbarConfig[configName];\r\n if (!toolbarConfig) {\r\n return;\r\n }\r\n\r\n if (toolbarConfig.has(id)) {\r\n toolbarConfig.set(id, extend(toolbarConfig.get(id), value));\r\n hasBeenUpdated = true;\r\n }\r\n\r\n if (!hasBeenUpdated) {\r\n toolbarConfig.forEach((config, key) => {\r\n const subMenu = findIdInToolbarSubMenu(id, config);\r\n\r\n if (subMenu) {\r\n extend(subMenu, value);\r\n toolbarConfig.set(key, extend({}, config));\r\n hasBeenUpdated = true;\r\n }\r\n });\r\n }\r\n\r\n hasAnyToolbarBeenUpdated = hasBeenUpdated || hasAnyToolbarBeenUpdated;\r\n });\r\n\r\n if (hasAnyToolbarBeenUpdated && isFunction(this.updateToolbar)) {\r\n this.updateToolbar();\r\n }\r\n }\r\n\r\n get(id) {\r\n const toolbarConfigs = ['toolbarSelectedConfig', 'toolbarUnselectedConfig'];\r\n let foundConfig = null;\r\n\r\n each(toolbarConfigs, (configName) => {\r\n if (!foundConfig) {\r\n if (this.toolbarConfig[configName].has(id)) {\r\n foundConfig = this.toolbarConfig[configName].get(id);\r\n }\r\n\r\n if (!foundConfig) {\r\n this.toolbarConfig[configName].forEach((config) => {\r\n const subMenu = findIdInToolbarSubMenu(id, config);\r\n if (subMenu) {\r\n foundConfig = subMenu;\r\n }\r\n });\r\n }\r\n }\r\n });\r\n\r\n return foundConfig;\r\n }\r\n\r\n overrideWith(view) {\r\n if (this.overrideWith) {\r\n // pass plugin form view to tab wrapper\r\n this.overrideWith(view);\r\n }\r\n }\r\n\r\n set(id, value) {\r\n this.update(_.defaults({ id }, value));\r\n }\r\n\r\n restoreToolbar() {\r\n noop();\r\n }\r\n}\r\n\r\nexport function getToolbarEditor({ overrideWith, toolbarConfig, updateToolbar }) {\r\n return new ToolbarEditor({\r\n overrideWith,\r\n toolbarConfig,\r\n updateToolbar,\r\n });\r\n}\r\n\r\nexport function getToolbarPlugin({\r\n overrideWith,\r\n resetVisibility,\r\n toolbarConfig,\r\n resetGraphVisibility,\r\n resetToolbarMode,\r\n updateToolbarDynamicSelectedConfig,\r\n updateToolbar,\r\n}) {\r\n return {\r\n plugin: definePlugin => definePlugin('toolbar', ['gridView'], (gridView) => {\r\n gridView.on('didSelect', () => {\r\n const selectedRowCount = gridView.selectedItems().length;\r\n const showToolbarSelected = selectedRowCount > 0;\r\n const showToolbarUnselected = selectedRowCount === 0;\r\n resetToolbarMode({\r\n showToolbarSelected,\r\n showToolbarUnselected,\r\n });\r\n if (showToolbarSelected && isFunction(toolbarConfig.toolbarDynamicSelectedConfigCallback)) {\r\n const dynamicSelectedConfig = toolbarConfig.toolbarDynamicSelectedConfigCallback({ gridView });\r\n updateToolbarDynamicSelectedConfig({\r\n dynamicSelectedConfig,\r\n });\r\n }\r\n });\r\n\r\n const resetVisibilityAndTriggerUpdate = (...options) => {\r\n resetVisibility(...options);\r\n gridView.trigger('didUpdate');\r\n };\r\n\r\n const toolbarEditor = getToolbarEditor({ overrideWith, toolbarConfig, updateToolbar });\r\n\r\n return {\r\n gridToolbarGroup: {\r\n toolbarNames: () => [],\r\n toolbarWithItem: () => toolbarEditor,\r\n toolbarWithName: () => toolbarEditor,\r\n hideAllToolbars: () => {\r\n resetVisibilityAndTriggerUpdate({\r\n forceHideToolbar: true,\r\n });\r\n },\r\n showAllToolbars: () => {\r\n resetVisibilityAndTriggerUpdate({\r\n forceHideToolbar: false,\r\n });\r\n\r\n if (_.isFunction(resetGraphVisibility)) {\r\n resetGraphVisibility();\r\n }\r\n },\r\n updateGridView: noop,\r\n remove: noop,\r\n },\r\n };\r\n }),\r\n };\r\n}\r\n","export const DiagnosticsTypes = {\r\n Issue: 'Issue',\r\n Recommendation: 'Recommendation',\r\n};\r\n","import React, { useCallback, useContext } from 'react';\r\nimport {\r\n Button,\r\n Link,\r\n Text,\r\n makeStyles,\r\n mergeClasses,\r\n tokens,\r\n shorthands,\r\n} from '@fluentui/react-components';\r\nimport { MessageBar, MessageBarActions, MessageBarBody, MessageBarTitle } from '@fluentui/react-message-bar';\r\nimport { LightbulbFilamentFilled, WarningFilled } from '@fluentui/react-icons';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\n\r\nimport { DiagnosticsTypes } from './constants';\r\nimport { DiagnosticBarProps } from './types';\r\n\r\nconst useDiagnosticsBarStyles = makeStyles({\r\n messageBar: {\r\n marginTop: '8px',\r\n '&.recommendation-bar': {\r\n backgroundColor: tokens.colorBrandBackground2,\r\n ...shorthands.borderColor(tokens.colorBrandBackground2Pressed),\r\n },\r\n },\r\n messageBarBody: {\r\n whiteSpace: 'normal',\r\n paddingTop: '8px',\r\n paddingBottom: '8px',\r\n '& > span': {\r\n marginRight: '8px',\r\n },\r\n },\r\n messageBarAction: {\r\n alignSelf: 'center',\r\n },\r\n iconIssue: {\r\n color: tokens.colorStatusWarningForeground1,\r\n },\r\n iconRecommendation: {\r\n color: tokens.colorNeutralForeground2BrandHover,\r\n },\r\n});\r\n\r\nexport function DiagnosticBar({ itemList, type, onActionClick }: DiagnosticBarProps) {\r\n const classes = useDiagnosticsBarStyles();\r\n const i18n = useContext(I18nContext) as any;\r\n\r\n const renderActions = useCallback((item) => {\r\n if (!item.actions) return null;\r\n const actionButtons = item.actions.map((action) => {\r\n const onButtonClick = () => onActionClick({ action, item });\r\n return (\r\n \r\n );\r\n });\r\n return actionButtons;\r\n }, [onActionClick, i18n]);\r\n\r\n return (\r\n <>\r\n {itemList.map(item => (\r\n \r\n : \r\n }\r\n intent={type === DiagnosticsTypes.Recommendation ? 'info' : 'warning'}\r\n layout=\"singleline\"\r\n >\r\n \r\n {i18n.getString(item.title)}\r\n {i18n.getString(item.description)}\r\n {item.link && {i18n.getString(item.link.text)}}\r\n \r\n \r\n {renderActions(item)}\r\n \r\n \r\n ))}\r\n \r\n );\r\n}\r\n\r\nDiagnosticBar.defaultProps = {\r\n itemList: [],\r\n type: DiagnosticsTypes.Issue,\r\n};\r\n","import _ from 'underscore';\r\nimport React, { useContext, useMemo } from 'react';\r\nimport { Badge, Text, makeStyles, shorthands, mergeClasses } from '@fluentui/react-components';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { Collapse, ValidatedPanel, collapseExpander, getPanelErrorProps, useCollapseState } from '@bingads-webui-campaign/wizard-jumbo-card';\r\nimport { DiagnosticsTypes } from './constants';\r\nimport { DiagnosticBar } from './diagnostic-bar';\r\nimport { SummaryDiagnosticProps } from './types';\r\n\r\nconst useDiagnosticsSectionStyles = makeStyles({\r\n diagnosticsSection: {\r\n maxWidth: '928px',\r\n '& .collapse-panel': {\r\n ...shorthands.borderRadius('6px'),\r\n },\r\n '& .collapse-title-bar': {\r\n minHeight: 'fit-content',\r\n ...shorthands.padding('12px', '0px'),\r\n },\r\n },\r\n header: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n ...shorthands.gap('8px'),\r\n alignItems: 'center',\r\n },\r\n});\r\n\r\nexport function SummaryDiagnostic({ issues, recommendations, onActionClick }: SummaryDiagnosticProps) {\r\n const classes = useDiagnosticsSectionStyles();\r\n const i18n = useContext(I18nContext) as any;\r\n\r\n const [\r\n diagnosticsSection,\r\n diagnosticsExpandedSection,\r\n setDiagnosticsExpandedSection,\r\n ] = useCollapseState(\r\n ['issues', 'recommendations'] /* all sections */,\r\n ['issues', 'recommendations'] /* initially expanded sections */\r\n );\r\n const diagnosticsSectionExpand = useMemo(\r\n () => collapseExpander({ setActiveKeys: setDiagnosticsExpandedSection }),\r\n [setDiagnosticsExpandedSection]\r\n );\r\n\r\n return (\r\n \r\n {issues.length > 0 && (\r\n \r\n {i18n.getString(_TL_('Campaign issues'))}\r\n \r\n {issues.length === 1 ? i18n.getString(_TL_('1 issue')) : i18n.getString(_TL_('{{count}} issues'), { count: `${issues.length}` })}\r\n \r\n
\r\n }\r\n attentionBeaconProps={{ getExtraProps: getPanelErrorProps }}\r\n actuationProps={{\r\n expand: diagnosticsSectionExpand,\r\n expandKey: 'issues',\r\n }}\r\n >\r\n {i18n.getString(_TL_('Fix the issues that are preventing your campaign from running smoothly.'))}\r\n \r\n \r\n )}\r\n {recommendations.length > 0 && (\r\n \r\n {i18n.getString(_TL_('Recommendations'))}\r\n \r\n {recommendations.length === 1 ? i18n.getString(_TL_('1 recommendation')) : i18n.getString(_TL_('{{count}} recommendations'), { count: `${recommendations.length}` })}\r\n \r\n
\r\n }\r\n attentionBeaconProps={{ getExtraProps: getPanelErrorProps }}\r\n actuationProps={{\r\n expand: diagnosticsSectionExpand,\r\n expandKey: 'recommendations',\r\n }}\r\n >\r\n {i18n.getString(_TL_(\"Improve your campaign's performance by adopting these recommendations.\"))}\r\n \r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nSummaryDiagnostic.defaultProps = {\r\n issues: [],\r\n recommendations: [],\r\n onActionClick: _.noop,\r\n};\r\n","export const isTagetCpaHigherThanBudget = (i18n, budgetAmount, cpa) => cpa && budgetAmount && i18n && i18n.parseDecimal(String(budgetAmount)) < cpa;\r\n\r\nexport const getLogString = (checkValue, budgetAmount, cpa, scenario, onSave) => `[TargetCpaValueCheck][${scenario}] TargetCpaValue warning, flow: ${onSave ? 'OnSave' : 'OnEdit'} checkValue: ${checkValue}, budget: ${budgetAmount}, cpa: ${cpa}`;\r\n","import { isTagetCpaHigherThanBudget, getLogString } from './utils';\r\n\r\nexport const LogTargetCpaCheckOnSave = (i18n, permissions, budgetAmount, cpa, activity, scenario) => {\r\n if (permissions?.dynamic?.TargetCpaValueCheck) {\r\n const checkValue = isTagetCpaHigherThanBudget(i18n, budgetAmount, cpa);\r\n activity.trace(getLogString(checkValue, budgetAmount, cpa, scenario, true));\r\n }\r\n};\r\n","import React, { useContext, useMemo } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { MessageBar, MessageBarBody } from '@fluentui/react-message-bar';\r\n\r\nimport { isTagetCpaHigherThanBudget, getLogString } from './utils';\r\n\r\nexport const TargetCpaWarningBannerInternal = ({\r\n budgetAmount,\r\n cpa,\r\n activity,\r\n scenario,\r\n permissions,\r\n isSignup, // Remove this prop once TargetCpaValueCheck pilot check is cleaned up\r\n}: {\r\n budgetAmount: number,\r\n cpa: number,\r\n activity: { trace: Function },\r\n scenario: string,\r\n permissions: { dynamic: { TargetCpaValueCheck: boolean } },\r\n isSignup?: boolean,\r\n}) => {\r\n const i18n: any = useContext(I18nContext);\r\n\r\n const tcpaCheckEnabled = permissions?.dynamic?.TargetCpaValueCheck || isSignup;\r\n\r\n const shouldShowBanner = useMemo(() => {\r\n const checkValue = isTagetCpaHigherThanBudget(i18n, budgetAmount, cpa);\r\n activity.trace(getLogString(checkValue, budgetAmount, cpa, scenario, false));\r\n return checkValue;\r\n }, [activity, budgetAmount, cpa, i18n, scenario]);\r\n\r\n return (\r\n tcpaCheckEnabled && shouldShowBanner ? (\r\n \r\n \r\n {i18n.getString(_TL_('Your campaign\\'s total cost per acquisition is higher than the daily budget, which could prevent you from receiving any conversions. Please consider lowering your total cost per acquisition or raising your daily budget.'))}\r\n \r\n \r\n ) : null\r\n );\r\n};\r\n\r\nTargetCpaWarningBannerInternal.defaultProps = {\r\n isSignup: false,\r\n};\r\n\r\nexport const TargetCpaWarningBanner = withPermissions(TargetCpaWarningBannerInternal);\r\n"],"names":["useImpulse","activate","_useState","useState","_useState2","_slicedToArray","isActive","setIsActive","_useState3","_useState4","isRestarting","setIsRestarting","useEffect","useIsMounted","isMountedRef","useRef","current","BudgetRange","_bingads_webui_static_legacy_page_context","LegacyBudgetWithCustomValidation","_ref","campaignId","showBudgetSuggestion","isCampaignSetting","currency","validationProps","updateValidation","campaign","isPremiumStreaming","restProps","_objectWithoutProperties","_excluded","data","i18n","useContext","I18nContext","activity","ActivityContext","DailyRange","budgetSuggestion","useMemo","Currency","GlobalMaximumBudget","DailyBudget","CeilingValue","GlobalMinimumBudget","FloorValue","onChange","useCallback","newData","newIsValid","getString","_TL_","Budget","signal","concat","JSON","stringify","Amount","budgetSuggestionData","setBudgetSuggestionData","loadBudget","useBudgetSuggestionRepository","mode","MODE","EDITING","campaignType","CampaignTypes","PerformanceMax","assetGroup","then","datas","finally","_jsxs","children","className","style","marginBottom","fontWeight","_jsx","Text","HelpPopup","topic","item","LegacyBudget","_objectSpread","level","budget","_","BudgetSuggestionDialog","onBudgetChange","minBudget","maxBudget","defaultProps","ValidatedLegacyBudget","withCustomValidation","getConversionGoalStyles","theme","ConversionGoalSelectorContainer","paginationStyle","width","ConversionGoalsWithCustomValidation","conversionGoalsData","_conversionGoalsData$","conversionGoals","classes","useDefaultStyles","legacyI18n","buildLegacyI18n","ConversionGoalKeyToStringMapping","$dataRange","useP$DaterangeDefault","changedData","isEqual","campaignConversionGoal","Goals","originalConversionGoals","goalScopeSelection","LearnMoreLink","linkText","ConversionGoalSelector","isSelectorEnabled","pageSize","isMultiMode","isHideSaveBar","goalSelection","activityLogger","showTrackingStatusIcon","ValidatedConversionGoals","cid","aid","GoalSelector","open","value","isCreationWorkflow","ValidatedConversionGoalsScopeSelector","withError","withValidation","TextField","getStyles","_ref$palette","palette","productOptions","padding","buttonContainer","marginTop","fontSize","color","themePrimary","marginRight","paddingBottom","merchantCenterAccountContainer","productFilterEditContainer","stackContainerToken","childrenGap","ListingGroupsWithCustomValidation","props","scope","campaignSettings","siteMap","listingGroup","storeDetails","assetGroupId","onClickNavigateToListingGroups","_useTreeViewPanelSele","useTreeViewPanelSelector","setAllRowRawData","identity","currentCampaign","Id","CampaignSettings","refreshGridData","getArguemntsOfUpdateGridDataByCurrentState","isTreeViewSelectorOpen","setIsTreeViewSelectorOpen","treeViewSelectorColumns","treeViewSelectorDimensions","treeViewSelectorInitialSelectedItems","treeViewSelectorItems","treeViewSelectorHeaderText","onTreeViewCancel","onTreeViewSelectedDimensionChangeWithoutStatistics","isTreeViewShimmerEnabled","onFilterProduct","listingGroupGridData","useAPIsOfListingGroup","options","key","text","isEditing","values","items","length","selectedOption","setSelectedOption","selectedProducts","setSelectedProducts","_useState5","operand","_useState6","selectedOperand","setSelectedOperand","_useState7","_useState8","productFilter","setProductFilter","selectedDimension","forEach","selectedItem","fillDataToBulkAddedItem","onOpenPanel","onDeleteProduct","index","splice","_toConsumableArray","navigateToListingGroupPage","save","getRoutePathById","onChangeOptions","option","hasSelectedProducts","hasSelectedOperand","updatedListingGroup","dataRange","useDateRange","queryOptions","$top","entityPath","accountId","customerId","payload","gridDataParameters","DateRange","StartDate","EndDate","_ref2","Condition","Operand","uid","classNames","DefaultButton","onClick","ChoiceGroup","selectedKey","ariaLabel","filterProductsPreview","Stack","horizontal","wrap","disableShrink","tokens","pluck","map","SelectedItem","itemText","itemIndex","onDelete","Glyphicon","glyph","PanelSelector","getErrors","isOpen","columns","dimensions","headerText","initialSelectedItems","onCancel","onSave","onSelectedDimensionChange","enableShimmer","keyOfItem","isBulkAddEnabledForDimension","d","isBulkAddEnabled","undefined","ValidatedListingGroups","withCampaignSiteMap","withScope","withStoreFromProviderId","LocationTargetSettingWithCustomValidation","skipValidation","allowBidAdjustment","dealInfo","locationTargets","errors","isLocationValid","LocationTargetSetting","setData","ValidatedLocationTargetSetting","getTargetingStyles","container","maxWidth","marginLeft","paddingLeft","header","getLocationTargetingStyles","campaignLocationCriterions","anyComp","entityIs","ERROR_ENTITY","CampaignLocation","CampaignRadius","CampaignNegativeLocation","CampaignLocationIntent","ServerValidatedLocationTargetSetting","withControlErrorHandling","withUnvalidatedControlErrors","filter","LocationTargetingSettingPanel","ScopeContext","isLoading","expand","_props$data","topicKey","rest","ValidatedPanel","title","TextTitle","titleKey","icon","LocationImg","details","getLocationTargetTitleDetails","BiddingScheme","Type","attentionBeaconProps","getExtraProps","getPanelErrorProps","actuationProps","expandKey","SectionShimmer","LocationTargeting","bidStrategyType","DisplayBiddingStrategyType","AudienceWizardWithShimmer","withShimmer","AudienceWizard","AudienceSignalShimmer","AudienceSignalPanel","serverContext","ServerContext","DynamicPermissions","Permissions","_scope$values","permissions","dynamic","isReadOnlyUser","IsReadOnlyUser","CurrentAccount","Status","AudienceGroup","OriginalAudienceGroup","ValidatedFixedPanel","AudienceImg","showShimmer","audienceGroup","originalAudienceGroup","campaignTrackingUrlTemplate","propertyIs","campaignFinalUrlSuffix","campaignUrlCustomParameters","trackingUrlTemplateControlsWrapper","compose","partial","Adapter","StandardControlAdapter","finalUrlSuffixControlsWrapper","urlCustomParametersControlsWrapper","functionsToInject","withProps","ValidatedUrlOptionsParameters","VideoPanel","perfMarker","mergedI18n","videos","_ref$setSelectedVideo","setSelectedVideoId","noop","selectedVideoId","allAssetsExpand","isVideoRequired","skipQualityValidation","PermissionsContext","oDataConfig","getODataConfig","videoTypesWithOrder","videosContainer","videoAd","ValidatedVideoExperience","multiVideoMode","allowedVideoSizes","disableRemoveAll","hideRatioLabel","videoExperienceCircleUploadType","disableUploadTextField","videoPickerContainerHeight","setSelectedVideoIdx","selectedVideoIdx","copilotEnabled","iconAltText","ImageListSummaryCardDetails","isLogos","isVideos","PANEL_KEYS","VIDEOS","limit","getTheme","getStepBaseLayoutFooterStyles","styleOverrides","arguments","merge","footerContainer","clear","borderTop","neutralLight","paddingTop","previousButton","previousButtonOnTheRightOfNext","cancelButton","skippingLink","textDecoration","baseLayoutFooterStyles","stepProgress","root","neutralPrimary","StepFooter","onCancelClick","onPreviousClick","onNextClick","nextButtonText","previousButtonAfterNext","previousButtonText","cancelButtonText","onSkippingLinkClick","skippingLinkTitle","onRenderFooterNote","isPreviousClickDisabled","isNextClickDisabled","isSkipLinkDisabled","stepProgressContent","disabled","PrimaryButton","stepProgressContainer","variant","block","styles","Link","getBaseStepLayoutStyles","stepContainer","height","display","flexDirection","stepContentContainer","overflowY","backgroundColor","neutralLighterAlt","mainSide","StepBaseLayout","stepContainerClassName","stepContentContainerClassName","mainSideClassName","onRenderRightSide","isHideFooter","getBaseModalFooterStyles","stepModalFooterContainer","justifyContent","position","bottom","actionsContainer","defaultButton","skipLink","baseModalFooterStyles","StepModalFooter","isPreviousDisabled","primaryButton","neutralDark","useOnceEffect","callFn","called","setCalled","WIZARD_EVENT_PREFIX","WIZARD_STEP_EVENT","APP_LOAD","START_FLOW","SWITCH_FLOW","ENTER_PAGE","COMPLETE","SINGLE_STEP_EVENT","USER_TRIGGER_STEP_EVENT","_defineProperty","STEP_STATES","GOING_NEXT","GOING_BACK","EXITING","USER_TRIGGER_STEP_EVENT_KEYS","Object","keys","NoOpContext","logComplete","changedChannel","enteredPage","StepFlowContext","React","DEFAULT_EVENT_VALUE","useLogEnteredPage","Flow","_ref$SubFlow","SubFlow","Page","StepFlowProvider","shouldPost","postEventLog","instrumentation","InstrumentationContext","stepFlowScenario","create","stepFlow","trace","error","triggerPostEventLog","shouldPostLog","_useStateWithPrevious","initialValue","state","setState","cache","newValue","prev","useStateWithPrevious","_useStateWithPrevious2","_useStateWithPrevious3","setContext","prevContext","eventValues","postEventLogRef","postEvent","EventName","EventValue","logValidationError","message","Complete","CID","AID","FromFlow","ToFlow","FromPage","ToPage","Provider","BasicStepLogger","flow","subflow","propTypes","PropTypes","isRequired","StepLogger","stepToPage","useWizardService","currentStepId","getCurrentStepId","WizardStepLogger","writeLog","matchStepSubState","wizardState","stepSubState","stateArr","toStrings","includes","SingleStepLogger","Date","now","startTime","setStartTime","useFormService","matches","FORM_STATES","LOADING","isSaveSucceeded","SAVING_SUCCEEDED","isSaveFailed","SAVING_FAILED","trigger","setTrigger","triggerKey","triggerWriteLog","duration","WizardEvents","STEP_LOADING","STEP_SAVING","STEP_DONE_LOADING","STEP_DONE_SAVING","STEP_DONE_CANCELING","STEP_FAILED_LOADING","STEP_ABORTED_SAVING","STEP_ABORTED_CANCELING","STEP_STOPPED","NAVIGATE_BACK","NAVIGATE_NEXT","CANCEL","EXIT","StepEvents","SAVE","DONE_SAVING","FAILED_SAVING","DONE_LOADING","FAILED_LOADING","ACTIVATE","DEACTIVATE","UPDATE_VALIDATION","STOP","DONE_STOPPING","OVERRIDE_ACTIONS","OVERRIDE_GUARDS","logF","argsSerializer","msg","_console","_len3","args","Array","_key3","console","log","apply","_len2","_key2","logAction","_len","_key","_len5","_key5","context","event","id","stateLoggingListener","machine","WizardStates","stepIndexSelector","stepIndex","stepServicesCacheSelector","stepServicesCache","isBusySelector","wasSavingSelector","wasWaitingForConfirmationSelector","wasStoppingSelector","getStepInfo","stepList","getStepServiceRef","defaultActions","acquireStepService","assign","stepInfo","stepService","stepServiceNeedsActivation","extendedStepMachine","StepMachine","StepMachineOptions","stepsData","spawn","stopStep","send","to","activateStep","type","deactivateStep","notifyStepToSave","notifyStepToCancel","setNavigatingForward","navigatingTo","setNavigatingBack","setExiting","isExiting","applyNavigation","resetNavigation","notifyDone","isFunction","onDone","patchStepsData","defaultServices","defaultGuards","isFirstStep","isNotNavigating","isNumber","doesServiceNeedActivation","canNavigateBackWithoutSaving","getStartingState","machineId","wizardOptions","_wizardOptions$onDone","wizardStateMachine","_ref$machineId","_ref$actions","actions","_ref$services","services","_ref$guards","guards","createMachine","preserveActionOrder","predictableActionArguments","strict","initial","states","entry","always","target","cond","on","StepStates","isCanceling","isStopping","isFin","isFailedInit","isSaving","contextSelector","defaultInitialContext","actionsOverride","guardsOverride","isValid","isDirty","invalidSaveAttempt","hasIncomingSystemError","needsSaving","replaceData","replaceStepsData","patchData","onInvalidSaveAttempt","overrideActions","overrideGuards","notifyLoading","sendParent","notifyDoneLoading","notifyFailedLoading","notifySaving","notifyDoneSaving","notifyDoneCanceling","notifyAbortedSaving","notifyAbortedCanceling","notifyStopped","clearErrors","requestConfirmation","Promise","resolve","reject","delay","response","aborted","confirmCancel","needsLoading","needsStopping","stepStateMachine","_states","_ref$initialContext","initialContext","invoke","src","onError","xstateStateMachine","StepComponent","formStyle","border","getWizardStyles","components","spinnerKeyframe","hidden","show","uiBlockerAdapter","mergeStyles","reactUIBlockerStyle","flexGrow","wizardContainer","convertToLocalStyle","helpbuttonStyle","glyphIconStyle","wizardListContainer","minWidth","borderRight","neutralQuaternaryAlt","overflow","margin","listStyle","borderLeft","blue","borderLeftColor","float","white","background","transform","lineHeight","wizardMainContainer","wizardStepContainer","wizardSingleStepLayoutStepScrollingContainer","wizardSingleStepLayoutCenteredStepContainer","wizardSingleStepLayoutStepContainer","wizardStep","flexBasis","paddingRight","wizardFooter","mobileNavContainer","zIndex","boxShadow","StepRepository","loadData","saveData","useSelector","isLoadingSelector","isSavingSelector","contextRef","asyncTokenRef","cancel","createAsyncToken","onSuccess","arg0","subscribe","getStepRepository","stepRepositoryConfig","getStepProgressItemGlyphicon","step","path","indexOf","isSelected","containsSelected","isBehind","footerStyleOverrides","StepsContextProvider","VerticalSeparatedLayout","StepContainer","StepProgressList","MultiStepLayout","_ref$wizardState","isBusy","stepListWithServiceInfo","_ref$wizardActions","wizardActions","saveAndNavigateNext","saveAndNavigateBack","cancelAndExit","saveAndExit","stepFooter","beforeLastStepNextButtonText","saveAndExitButtonText","last","isReadOnly","currentPath","getItemGlyphicon","SingleStepLayout","isCenteredLayout","Step","StepWizardImpl","wizardScenario","extraStepsData","routeToNavigateToWhenDone","scopeToRemoveWhenDone","_useWizardState","_props$extraStepsData","_props$wizardScenario","scenarioName","withContentFooter","_props$machineId","_useMemo","createScenarioAndActivity","activityName","scenario","setClarityTag","StepWizardScenario","scopeRef","isEmpty","remove","wizardMachine","useRefInit","service","useInterpret","stepInfo2","wasSaving","wasWaitingForConfirmation","wasStopping","window","addEventListener","removeEventListener","useWizardState","_useWizardState2","_wizardState$withCont","Layout","loadingText","steps","enabled","enableRenderingLog","Activity","name","initialized","_Fragment","wizardPerfMarker","stepPerfMarkerName","Scenario","toLowerCase","UiBlocker","blocking","ContentFooter","StepWizard","withInstrumentation","useNavigationConfirmationPrompt","needsConfirmation","confirmationMessage","onUserNavigation","location","action","navigationConfirmationPrompt","Prompt","beforeUnloadListener","preventDefault","returnValue","capture","useExitWithoutSavingConfirmation","exitConfirmationMessage","confirm","StepLoadingStatus","StepLoadingShell","isStoppingSelector","loadingStatusSelector","stepComponent","Fallback","fallback","subscription","unsubscribe","perfmarker","child","createChild","autoEnd","willInit","useUpdateChildPerfMarker","constant","isFailedInitSelector","sharedIsStoppingSelector","isFinSelector","ProgressiveLoadingBlock","withStepLoadingShell","staticLoadingStatusSelector","staticIsStoppingSelector","staticFallback","HOC","_ref3","_excluded2","displayName","getDisplayName","hoistNonReactStatics","queryToPredicates","query","$and","ShutterStockFilterInternal","_React$Component","_this","_classCallCheck","_callSuper","onQueryChange","_this$props","prevData","currData","predicates","i18nLegacy","filterSchema","properties","people_model_released","filterable","property","enum","localized","true","false","operatorDisplayNameMap","eq","operators","chooseType","people_ethnicity","african","african_american","black","brazilian","chinese","caucasian","east_asian","hispanic","japanese","middle_eastern","native_american","pacific_islander","south_asian","southeast_asian","other","people_gender","male","female","both","people_age","infants","teenagers","older","people_number","editableFilter","FilterEntity","entitySchema","_inherits","_createClass","_this2","_this$props2","this","popoverContainer","predicatesToQuery","updateQuery","filterContainer","Consumer","PredicateList","onApplySavedFilter","onDeleteFilters","selector","selectableFilter","onEditableFilterUpdate","onSelectableFilterUpdate","disallowDuplicateFilters","ShutterStockFilter","withDefaultStyles","getStockPhotoFilterStyle","StockImageFilter","onFilterQueryChange","setFilterQuery","keyValueQueryPairs","memo","predicate","_$keys","addedKeyValue","_$values","valuesArray","_valuesArray","getStoreStyles","storeSettings","alignItems","storeSettingsLoading","minHeight","select_store_link","borderRadius","cursor","warning_no_store","errorIcon_no_store","select_store_no_store_message","select","control_title","control","title_text","select_label","storeSelectContent","ValidatedStoreView","withPermissions","stores","countries","_permissions$dynamic","feedLabelEnabled","FeedLabel","feedLabelBlockListEnabled","FeedLabelBlockList","isFeedLabelEnabled","onLocalChecked","isChecked","checked","LocalInventoryAdsEnabled","onDataChange","dataPatch","validationErrors","IsFeedFiltered","SalesCountry","push","validate","onIsFeedFilteredChange","isFeedFiltered","onSelectedFeedLabelChangeByValue","onSelectedSaleCountryChangeByValue","selectedStoreId","ProviderId","selectedCountry","storeFieldId","useId","countryFieldId","localInventoryFieldId","preSelectedItemsStyle","Label","htmlFor","FeedFilterPicker","isEditMode","saleCountries","pairs","selectedFeedLabel","onSelectedFeedLabelChange","selectedSaleCountry","onSelectedSaleCountryChange","storeId","Checkbox","label","warning_panel_bottom","Alert","dismissible","campaignObjective","StoreSelectCreation","hasStores","showProductCollections","hideFeedLabelAndCountry","onSelectedStoreChange","preSelectedStoreId","onSelectedCountryChange","countryId","onProductCollectionChecked","ProductCollectionsEnabled","productCollectionFieldId","preselectedStoreIdItemsStyle","Select","_ref4","_ref5","_ref6","callback","getRouterDep","navigateToRoute","ValidatedStoreCreation","withSiteMap","parseStoreName","storeText","nameComponentIndex","nameComponent","substring","nameIndex","trim","getStoreFromProductCollectionAccount","productCollectionAccount","Value","getStores","productData","ProductCollectionAccounts","reduce","store","getCountries","IsDomesticSimplifiedChineseEnabled","SalesCountryCollection","salesCountry","result","getCountryFromSalesCountryCollection","country","StoreSelectLoading","_ref$validationProps","alwaysShowError","onLoadingDone","onLoadingError","loadingErrors","onRenderCustomLoadingComponent","isOdataGetProductScopeEnabled","get","isUnmounted","getProductDataCall","dataName","bypassCache","cacheResponse","getSalesCountryCollection","cacheKey","getProductDataWithCache","withDFMCache","getProductScopeData","chain","getDFMCache","setDFMCache","mergedData","mergeData","IsCoOpStore","IsGlobalStore","getProductScopeFromOData","params","url","queryify","adapter","jsData","Product","find","getProductData","callStartTime","deltaTime","err","Loading","isVisible","ValidatedStoreSelectLoading","withServerContext","withActivityContext","StoreSelectContainer","onStoreDataLoaded","globalLegacyI18n","setIsLoading","setStores","setCountries","campaignSaved","onStoresLoadingDone","newStores","newCountries","storesLoadingErrors","setStoresLoadingErrors","onStoresLoadingError","intentTarget","formErrorProps","getAdCreationPreviewStyle","AdCreationPreviewContainer","whiteSpace","opacity","textAlign","verticalAlign","objectFit","objectPosition","wordWrap","right","ResponsiveSearchAdPreview","handleRSAData","convertedFinalUrl","FinalUrls","headlineList","Headlines","i","Asset","PinnedField","descriptionList","Descriptions","convertedTitle","getTitlePreview","convertedText","getDescPreview","convertedDisplayUrl","getExpandedTextAdDisplayUrl","DisplayUrl","Path1","Path2","resultData","href","nowrap","ResponsiveAdPreview","LandscapeImageMediaUrl","callToAction","originalActionTextMapper","CallToActionLanguage","CallToAction","align","alt","Headline","AdCreationPreview","getAdContent","PropertyRow","propertyLabel","Store","storeName","ProductCollections","isProductCollectionsEnabled","productCollectionsText","LocalInventory","isLocalInventoryEnabled","localInventoryText","getProductsStyle","productFilterItem","Products","productFilters","useSelectedItem","productsText","join","maxContentWidth","locations","targetOption","explicitLocations","numLocations","replace","AgeRanges","EighteenToTwentyFive","TwentyFiveToThirtyFive","ThirtyFiveToFifty","FiftyToSixtyFive","SixtyFiveAndAbove","Unknown","ThirtyFiveToFiftyFive","FiftyFiveAndAbove","formatAgeRanges","ageRanges","ageRange","sortAgeRanges","formatAgeRange","AgeRangeTargeting","Genders","Female","Male","formatGenders","genders","gender","sortGenders","formatGender","GenderTargeting","getDayTimeDetails","dayTime","is12","startHour","StartHour","endHour","EndHour","startMin","getMin","minuteToSaveMap","StartMinute","endMin","EndMinute","getDay","Day","from","getTime","min","AdSchedule","startDate","endDate","adSchedules","useSearcherTimeZone","timeDisplayType","includeStartEnd","dateSettings","getDateSettingDetails","adScheduleSettings","len","BidAdjustmentType","BidAdjustmentAmount","CashbackPercent","schedule","getAdScheduleDetails","dateTimePart","AdScheduleWithBidAdjustments","formatTargets","includedData","excludedData","singularText","pluralText","targetedCriterions","excludedCriterions","targetedCriterionDetails","excludedCriterionDetails","count","CommonTarget","Audience","audiences","Interest","interests","PredictiveTargeting","isPredictiveTargetingEnabled","predictiveTargetingText","StartEndDates","isUseCampaignLevelDates","isDateLevelDisplayed","getLocalizationMapping","adDistribution","syndEnum","BingYahooOnly","SearchPartnersOnly","BingYahooAndSearchPartners","formatKeywords","showLength","total","detail","slice","keyword","Keywords","formatText","Genre","genreTargets","Disclaimer","disclaimerName","Name","disclaimerText","CompanyName","companyTargets","negativeCompanyTargets","JobFunction","jobTargets","negativeJobTargets","Industry","industryTargets","negativeIndustryTargets","formatConversionGoals","ConversionGoals","BudgetTypes","formatBudget","currencyCode","currencySymbol","getCurrencySymbol","formatBidStrategy","getBidTitleDetails","BidStrategy","formatBidValue","BidValue","Languages","formattedLanguages","language","campaignLanguageStrings","toString","AudienceSignal","audienceSignalName","Images","shouldFetchFromMT","isLogo","images","setImages","processImageListModelToViewModel","ImageAssets","loadedImageList","ImageList","Shimmer","getStoreInfoStyle","storeTitleDetails","AutoGeneratedAssets","autoGeneratedTextOptOut","autoGeneratedImageOptOut","finalUrlExpansionOptOut","autoGenAssetsSummary","UrlOptions","urlOptionsDetails","getUrlOptionsDetails","TrackingUrlTemplate","FinalUrlSuffix","UrlCustomParameters","BidTarget","TargetRoas","TargetCpa","targetValue","targetCpa","targetRoas","formatRoasValue","getExpansionsSummary","finalUrlExpansions","exactUrls","rules","conditions","Criterion","WebPage","Parameter","Conditions","condition","Operator","ArgumentOperand","exactUrlsDetails","rulesDetails","FinalURLExpansions","getSearchThemeDetails","searchThemes","SearchTheme","SearchThemes","CostPerSale","costPerSaleOptOut","costPerSaleSummary","UrlRules","finalUrls","path1","path2","mobileFinalUrls","urlRules","UrlOptionsDetailsWithRules","NewCustomerAcquisition","newCustomerAcquisitionOptOut","newCustomerAcquisition","accountSettings","summary","summaryText","bidOnlyMode","campaignAdditionalValue","accountAdditionalValue","formatCurrency","Videos","summaryPageComponentTypes","numAds","feeds","feedLabel","feedLabelsText","products","interest","audience","company","industry","languages","longHeadlines","getLongHeadlinesCardSummaryDetails","descriptions","getDescriptionsCardSummaryDetails","headlines","getHeadlinesCardSummaryDetails","storesData","storeContainerData","getStoreTitleDetails","listingGroupDetails","getListingGroupDetails","keywords","disclaimer","setTranslateX","el","VirtualScrollbar","_React$PureComponent","onMouseUp","isDown","onMouseDown","e","offsetLeft","arr","split","translateX","parseInt","getTranslateX","clientX","onMouseMove","offsetX","thumbWidth","viewWidth","viewOffsetX","view","scrollLeft","onViewScroll","document","parentStyle","childStyle","userSelect","ref","UnStyledScrollbar","unmounted","pgridView","positionStatic","$table","$el","$tfoot","offset","top","fixedBottomOffset","containerOverflowX","defaults","shouldDisplay","positionFixed","gridViewWidth","gridPaddingLeft","scrollBarView","Scrollbar","extend","scrollbarWidth","getTableWidth","toArray","getBoundingClientRect","TablePageContainer","gridPopupHeight","virtualScrollbarFixed","virtualScrollbarInView","gridEventMap","lastVirtualScrollLeft","letPopUpScrollHorizontal","viewport","gridAndStickyContainer","topOfGridContainer","stickyContainer","gridAndDisclaimContainer","topMarker","isInView","bottomMarker","isHiddenInView","intersectionObserver","IntersectionObserver","handleIntersectionChange","bind","rootMargin","threshold","resizeMarker","lastResizerWidth","resizeObserver","ResizeObserver","throttle","handleResizeChange","ResizeObserverPollyFill","SMALL_PADDING_LEFT_CLASS","shouldUseSmallPadding","isString","customClasses","tablePageContainer","contains","childBar","$","parentWidth","stickyTopOfGridWidth","left","entries","tablePageMinWidth","contentRect","backboneGridView","tableView","p$gridViewContainer","getTableView","eventName","Event","createEvent","initEvent","dispatchEvent","handleScrollbar","isIntersecting","intersectionRatio","prevPopupHeight","popupHeight","getInlineEditPopupHeight","onScrollbarsViewUpdate","prevState","parentElement","viewportRect","topOfGridRect","gridAndStickyRect","shouldAdjustStickyTopOfGrid","tableWidth","gridViewHasHorizontalOverflow","Math","round","emptyHeight","gridViewHasVerticalOverflow","newState","stickyTopOfGridTopOffset","stickyTopOfGridPosition","floor","stickyTopOfGridHeight","scrollStateKeys","modifiedState","stateKey","handlePopup","_this3","observe","setScrollPosition","handleScroll","getChildBarScrollLeftValue","p$gridView","grid","gridView","off","unobserve","prevProps","shiftThePopUp","$popup","inlineEditPopupSelector","currentLeft","newLeft","parseFloat","css","attr","closest","newTop","forceResetScrollFlag","scrollTop","popup","querySelector","getHeightIncludeAbsolutePositionedElements","pixels","match","v","Number","getShadowWidthOutofYBorder","_this4","thead","tfoot","CustomDisclaimerBanner","DisclaimerBanner","stickyStyle","Constants","ZIndexContentComponents","GridToolbar","_this$state","bottomMarkerRect","gridAndDisclaimContainerHeight","Fragment","pageContainer","onScroll","topOfGridContent","stickyTopOfGridContent","max","gridContainer","gridViewContainer","noResultSelector","timeZone","timezone","disableFooter","contentFooter","StyledTablePageContainer","flex","overflowX","visibility","uiblockerStyle","getBidLandscapeStyle","getBudgetSuggestionPopupStyle","getInlineOpportunityStyle","Latch","onInitialized","resolveOnInitialized","isInitialized","isScheduled","has","defer","withTablePageStateManager","getToolbarConfig","WrappedComponent","GridPageStateManager","onGridInjected","deselectAll","lazyInjected","once","release","onClearSelection","showToolbarSelected","showToolbarUnselected","updateToolbar","toolbarSelectedConfigMerged","Map","toolbarSelectedConfig","set","toolbarDynamicSelectedConfig","dynamicValue","mergedValue","toolbarUnselectedConfig","resetToolbarVisibility","forceHideToolbar","showTopOfGridPanel","viewInstance","config","panelView","showTopGridPanel","forceHideInlineChart","showTopGridPanelAndContent","showInlineChartView","showInlineChart","updateGridSelectionState","selectionCount","totalCount","isMultiPage","isSinglePageAllSelected","isCrossPageAllSelected","newTotal","initialSetGridNum","updateSelectedToolbarConfig","newSelectedConfig","updateUnselectedToolbarConfig","newUnselectedConfig","forceInitToolbarConfig","newProps","renderToolbarContainer","_this2$state","ToolbarContainer","isUndefined","onClear","isOpenCreatePanel","crossPageSelectPlugin","getCrossPageSelectPlugin","history","pathname","search","onSelectCrossPage","_getToolbarConfig","updateGridOptions","lazyInject","toolbarDynamicSelectedConfigCallback","createToolbar","gridOptions","toolbarPlugin","getToolbarPlugin","overrideWith","resetVisibility","resetGraphVisibility","resetToolbarMode","toolbarConfig","updateToolbarDynamicSelectedConfig","_ref7","dynamicSelectedConfig","defaultStyles","disconnectedStatusTile","connectedStatusTile","connectedStatusLabel","saveButton","removeButton","VerifiedTrackingSettingKey","vendorNameKey","advertiserEntityIdKey","publisherEntityIdKey","regexMappping","video","native","ThirdPartyMeasurementNameMap","formatThirdPartyMeasurementSetting","verifiedTrackingSettings","verifiedTrackingSetting","vendorName","advertiserEntityId","publisherEntityId","settingEmpty","getVerifiedTrackingComponent","errorMessages","createVerifiedTrackingSettingViewModel","StatusLabel","success","statusMessage","statusStyle","paddingInline","labelIcon","Icon","iconName","ThirdPartyMeasurement","_props$adType","adType","_props$overrideStyles","overrideStyles","verifiedTrackingData","connected","setConnected","verifiedTrackingSettingRaw","setVerifiedTrackingSettingRaw","tagUrlErrors","setTagErrors","validateUrl","ids","regexStrArr","regexStr","currentRes","RegExp","exec","extractIdsFromIASInput","verifiedTrackingSettingToAdd","_validateUrl","onTagUrlChange","tagErrorMessage","Button","Dropdown","defaultSelectedKey","onRenderLabel","HelpPopupInline","multiline","autoAdjustHeight","errorMessage","ThirdPartyMeasurementWithValidation","getCheckStatus","settings","vendor","ThirdPartyMeasurementV2","setSettings","setErrors","verifiedTrackingDatas","settingsToUpdate","iasData","setting","moatData","IAS","MOAT","iasSettingsToUpdate","numericPattern","errorsToUpdate","test","moatSettingsToUpdate","onRenderadvertiserIdTextField","onRenderpublisherIdTextField","onAdvertiserIdChange","onPublisherIdChange","onCheckStatusChangeGenerator","originalSettings","newSettings","errorType","onRenderIASLabel","onRenderMOATLabel","onRenderIASCheckbox","ThirdPartyMeasurementV2WithValidation","thirdPartyMeasurementFolderButton","ThirdPartyMeasurementCardContainer","showSimpleMessage","isForDeal","dealLoaded","isMOATEnabled","initialFolded","folded","setFolded","foldedIconProps","ThirdPartyMeasurementComponent","CommandButton","iconProps","VerifiedTrackingSettings","ThirdPartyMeasurementContainerWithValidation","ThirdPartyMeasurementBackboneView","_Backbone$View","initialThirdPartyMeasurement","_ref$isMOATEnabled","saveVerifiedTrackingSetting","verifiedTrackingObj","render","ReactDOM","Backbone","campaignThirdPartyVendors","ISPOT","DV","reachVendors","verificationVendors","campaignThirdPartyVendorNames","thirdPartyMeasurementTrackingVendorField","thirdPartySettingError","settingEnabledKey","isVendorSelectedInSetting","foundSetting","thirdPartySettingValidatorMap","brandId","thridPartyMeasurementTrackingStyles","thirdPartyMeasurementGuide","thirdPartyMeasurementRemoveAllStack","thirdPartyMeasurementRemoveAllButton","inset","thirdPartyMeasurementAddButton","dropdown","thirdPartyMeasurementVendorSettings","thirdPartyMeasurementRemoveButton","warningMessageContainer","warningMessage","borderColor","gap","warningMessageText","linked","warningMessageDefaultSettings","tagName","WarningMessage","customSettings","horizontalAlign","AccountLinkedStatusLabel","doubleVerifyLinkEstablished","overrideStyle","customVendorConfigs","setSetting","updatedSetting","ThirdPartyTrackingSetting","removeSetting","VendorConfig","isiSPOTSetting","readOnly","defaultValue","ThirdPartyTrackingRemoveAllButton","removeAllVendorSettings","formatVendorSettings","verifiedTrackingSettingsValidationProps","validSettings","selectedVendors","getVendorNames","ThirdPartyMeasurementV3","IsMSANISPOTEnabled","EnableDoubleVerify","_useAccountPropertyRe","enableDoubleVerifyForAllCampaigns","setEnableDoubleVerifyForAllCampaigns","setDoubleVerifyLinkEstablished","readAccount","edmCampaign","Customers","$withKey","Accounts","toPromise","account","EnableDoubleVerifyForAllCampaigns","DoubleVerifyLinkEstablished","catch","useAccountPropertyRepository","vendorData","validatedSettingsArray","validatedVendorSetting","currentVendorErrors","addSetting","updatedSettings","vendorFound","vendorNameArr","currentVendorName","oldSettings","s","onRenderReachSettings","reachSettings","indexInSettings","onRenderVerificationSettings","verificationSettings","addVendorMenuProps","itemsToPush","itemType","ContextualMenuItemType","Header","ispotSelected","Divider","DVSelected","menuProps","ThirdPartyMeasurementV3WithValidation","getVerifiedTrackingSettingWrite","VerifiedTrackingData","results","Key","getVerifiedTrackingSettingsRead","model","customKey","keyMap","IAS_advertiserEntityId","IAS_publisherEntityId","ISPOT_brandId","thirdPartyMeasurementStringToViewModel","verifiedTrackingDataString","thirdPartyMeasurementFromBulkModel","parse","thirdPartyMeasurementSetting","getThumbsUpDownStyles","thumbsUpDown","thumbsUpDownAddImage","innerWidth","calloutRoot","ComponentSettings","getBlockerStyle","getFeedbackFormStyles","checkboxOptions","feedbackAction","feedbackFormRoot","FeedbackForm","onSubmit","onDismiss","initialOptionsState","optionsState","setOptionsState","screenshotState","setScreenshotState","commentState","setCommentState","enableSubmit","setEnableSubmit","classnames","otherValues","placeholder","ReactTemplate","a","infoText","template","comments","takeScreenshot","getIconStyles","ThankYouIcon","viewBox","fill","xmlns","fillRule","clipRule","x1","y1","x2","y2","gradientUnits","stopColor","ThankYouContent","ThumbsUpDownOCVDataService","_OCVDataService","OCVDataService","sendFeedbackInternal","screenshotGenerationPromise","formOptions","featureArea","onFinishTakeScreenshot","onFinishSendRequest","isTestEnv","dataService","clientFeedbackId","uuidv4","feedback","comment","stringifySync","serializeComments","complianceChecks","authenticationType","ageGroup","telemetry","html2canvas","body","foreignObjectRendering","logging","canvas","toDataURL","sendFeedback","appId","ThumbsUpDown","onThumbsUpSignal","onThumbsDownSignal","containerName","thumbsUpSelected","setThumbsUpSelected","thumbsDownSelected","setThumbsDownSelected","showFeedback","setShowFeedback","showThumbsUpThankYouContent","setShowThumbsUpThankYouContent","_useState9","_useState10","showThumbsDownThankYouContent","setShowThumbsDownThankYouContent","_useState11","_useState12","showBlocker","setShowBlocker","_useState13","_useState14","blockerText","setBlockerText","_useState15","_useState16","formOptionsInternal","setFormOptionsInternal","_useState17","_useState18","hasOngoingRequest","setHasOngoingRequest","IconButton","rootHovered","iconHovered","newThumbsUpState","Callout","directionalHint","DirectionalHint","bottomRightEdge","calloutMain","newThumbsDownState","findIdInToolbarSubMenu","toolbarItem","menu","menuItem","ToolbarEditor","update","hasAnyToolbarBeenUpdated","each","configName","hasBeenUpdated","subMenu","foundConfig","getToolbarEditor","plugin","definePlugin","selectedRowCount","selectedItems","resetVisibilityAndTriggerUpdate","toolbarEditor","gridToolbarGroup","toolbarNames","toolbarWithItem","toolbarWithName","hideAllToolbars","showAllToolbars","updateGridView","DiagnosticsTypes","Issue","Recommendation","useDiagnosticsBarStyles","messageBar","colorBrandBackground2","colorBrandBackground2Pressed","messageBarBody","messageBarAction","alignSelf","iconIssue","colorStatusWarningForeground1","iconRecommendation","colorNeutralForeground2BrandHover","DiagnosticBar","itemList","onActionClick","renderActions","size","weight","MessageBar","locator","intent","layout","MessageBarBody","MessageBarTitle","description","link","MessageBarActions","useDiagnosticsSectionStyles","diagnosticsSection","SummaryDiagnostic","issues","recommendations","diagnosticsExpandedSection","setDiagnosticsExpandedSection","diagnosticsSectionExpand","setActiveKeys","allPanelItems","checkItems","skipItemsTypeCheck","activeKeys","Badge","shape","appearance","isTagetCpaHigherThanBudget","budgetAmount","cpa","parseDecimal","String","getLogString","checkValue","LogTargetCpaCheckOnSave","TargetCpaValueCheck","TargetCpaWarningBannerInternal","isSignup","tcpaCheckEnabled","shouldShowBanner","wordBreak","TargetCpaWarningBanner"],"sourceRoot":""}