{"version":3,"file":"static/js/application.async.landing~6a29c73e.91cabdc2.chunk.js","mappings":"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","sources":["../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/schemaMapper.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/viewmodel/adEditor.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/maxLengthExtension.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/textAd.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adsPreview/DisclaimerPopUpView.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adsPreview/panel.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsPreview/container.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adsPreview/container.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsPreview/textAd.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsPreview/mobileDecorator.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/longAdTitle.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsPreview/longAdTitleDecorator.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adsPreview/textAd.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/upgradedUrl.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/upgradedUrl.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/textAd.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/appInstallAd.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/appInstallAd.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/dynamicSearchAd.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsPreview/dynamicSearchAd.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adsPreview/dynamicSearchAd.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/adCustomizersPicker.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/adCustomizersCountdownEditor.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/feedsEditor.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/adCustomizersHelpers.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/dynamicSearchAd.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/productAd.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/productAd.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/expandedTextAd.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adsPreview/expandedTextAd.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/expandedTextAd.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/responsiveSearchAd.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsPreview/responsiveTextAd.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adsPreview/responsiveTextAd.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adsStrength/responsiveSearchAd.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/responsiveSearchAd.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/ResponsiveSearchAdEditor.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/xandrVideoAd.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/xandrDisplayAd.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/displayPlusDisplayAd.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/components/display-plus-native-form.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/components/display-plus-native.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/displayPlusNativeAd.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/lengthExceededErrorCodes.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adEditor.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/viewmodel/adGroupAdsEditor.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adGroupAdsEditor.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/ResponsiveAd.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/positionExtension.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/responsiveListField.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/responsiveListField.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/adsPanel.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/viewmodel/create.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/view/create.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/dynamicTextExtension.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/parsedTextMaxLengthExtension.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/share/instrumentKeywordAdGroup.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/view/landingPage.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/view/create-keyword-adgroup-decorator.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/viewmodel/create.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/view/create.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/share/errorExtractor.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/viewmodel/keywordPlanner.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/viewmodel/keywordPlannerAdvanced.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/viewmodel/keywordPlannerCreateOptions.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/share/getSearchRange.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/view/keywordPlannerAdvanced.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/keywordPlannerSort.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/view/keywordPlanner.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/view/update-autotarget-adgroup-decorator.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/viewmodel/mixed-mode-create.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/view/mixed-mode-create.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/view/create-autotarget-adgroup-decorator.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/view/update-keyword-adgroup-decorator.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/viewmodel/update.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/view/update.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-campaign/viewmodel/copy-campaign-settings.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-campaign/view/copy-campaign-settings.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-campaign/viewmodel/create.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-campaign/view/create.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-keywords/viewmodel/keyword.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-keywords/viewmodel/parser.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-keywords/view/create.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-keywords/viewmodel/section-wrapper.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-keywords/view/section-wrapper.js","../../../node_modules/@bingads-webui-campaign-legacy/dsa-settings/viewmodel/dsa-settings.js","../../../node_modules/@bingads-webui-campaign-legacy/dsa-settings/view/dsa-settings.js","../../../node_modules/@bingads-webui-campaign-legacy/editorial-appeal/view/inline.js","../../../node_modules/@bingads-webui-campaign-legacy/editorial-appeal/view/bulk.js","../../../node_modules/@bingads-webui-campaign-legacy/editorial-appeal/view/single.js","../../../node_modules/@bingads-webui-campaign-legacy/editorial-appeal/aggregator.js","../../../node_modules/@bingads-webui-campaign-legacy/editorial-appeal/utilities.js","../../../node_modules/@bingads-webui-campaign-legacy/editorial-appeal/viewmodel/editor.js","../../../node_modules/@bingads-webui-campaign-legacy/editorial-appeal/view/editor.js","../../../node_modules/@bingads-webui-campaign-legacy/editorial-appeal/view/inline-error.js","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/template/adEditor.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/template/adGroupAdsEditor.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/template/adList.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/template/adPreview.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/template/adsEditor/adCustomizersCountdownDatePicker.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/template/adsEditor/adCustomizersCountdownEditor.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/template/adsEditor/adCustomizersPicker.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/template/adsEditor/appInstallAd.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/template/adsEditor/descriptions.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/template/adsEditor/dynamicSearchAd.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/template/adsEditor/editorTemplateWithAdCustomizer.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/template/adsEditor/expandedTextAd.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/template/adsEditor/headlines.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/template/adsEditor/popoverTemplate.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/template/adsEditor/responsiveSearchAd.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/template/adsEditor/responsiveSearchAdHeadlineDescriptionOnly.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/template/adsEditor/textAd.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/template/adsEditor/upgradedUrl.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/template/adsPreview/AdPreviewBody.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/template/adsPreview/DisclaimerPopUpView.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/template/adsPreview/container.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/template/adsPreview/mobile.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/template/adsPreview/native.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/template/adsPreview/sidebar.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/template/adsPreview/top.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/template/create.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-ad/template/improveMMAAdEditor.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/template/create.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/template/keywordPlanner.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/template/keywordPlannerAdgroupNameColumnTemplate.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/template/keywordPlannerAdgroupSeeMoreColumnTemplate.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/template/keywordPlannerAdvanced.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/template/landingPage.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/template/learn-more.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/template/mixed-mode-create.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-adgroup/template/update.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-campaign/template/copy-campaign-settings.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-campaign/template/create.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-keywords/template/create.pug","../../../node_modules/@bingads-webui-campaign-legacy/crud-keywords/template/section-wrapper.pug","../../../node_modules/@bingads-webui-campaign-legacy/dsa-settings/template/dsa-settings.pug","../../../node_modules/@bingads-webui-campaign-legacy/editorial-appeal/template/bulk.pug","../../../node_modules/@bingads-webui-campaign-legacy/editorial-appeal/template/button-panel.pug","../../../node_modules/@bingads-webui-campaign-legacy/editorial-appeal/template/cancel-button.pug","../../../node_modules/@bingads-webui-campaign-legacy/editorial-appeal/template/editor.pug","../../../node_modules/@bingads-webui-campaign-legacy/editorial-appeal/template/inline-error.pug","../../../node_modules/@bingads-webui-campaign-legacy/editorial-appeal/template/inline-form.pug","../../../node_modules/@bingads-webui-campaign-legacy/editorial-appeal/template/not-appealable.pug","../../../node_modules/@bingads-webui-campaign-legacy/editorial-appeal/template/reasons.pug"],"sourcesContent":["import _ from 'underscore';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\n\r\nconst permissions = config.get('Permissions') || {};\r\n\r\nexport const Text = _.constant([\r\n 'Text', 'Title', 'DisplayUrl', 'DestinationUrl', 'DevicePreference', 'FinalUrls', 'MobileFinalUrls', 'TrackingUrlTemplate', 'UrlCustomParameters', 'FinalUrlSuffix', 'NativePreference',\r\n]);\r\n\r\nexport const AppInstall = _.constant([\r\n 'AppPlatform', 'AppStoreId', 'Title', 'Text', 'FinalUrls', 'DevicePreference', 'TrackingUrlTemplate', 'UrlCustomParameters', 'FinalUrlSuffix', 'DestinationUrl', 'AltText', 'MediaUrl', 'DeviceType',\r\n]);\r\n\r\nexport const DynamicSearch = _.constant([\r\n 'Text', 'TextPart2', 'Path1', 'Path2', 'DevicePreference', 'TrackingUrlTemplate', 'UrlCustomParameters', 'FinalUrlSuffix',\r\n]);\r\n\r\nexport const Product = _.constant([\r\n 'PromotionalText',\r\n]);\r\n\r\nconst expandedTextFields = ['TitlePart1', 'TitlePart2', 'Text', 'Path1', 'Path2', 'FinalUrls', 'TrackingUrlTemplate', 'UrlCustomParameters', 'FinalUrlSuffix', 'MobileFinalUrls', 'NativePreference'];\r\n\r\nif (permissions.IsVanityUrlEnabled) {\r\n expandedTextFields.push('DisplayUrl');\r\n}\r\n\r\nif (permissions.IsExpandedTextAdV2Enabled) {\r\n expandedTextFields.push('TitlePart3', 'TextPart2');\r\n}\r\n\r\nexport const ExpandedText = _.constant(expandedTextFields);\r\n\r\nconst responsiveSearchFields = [\r\n 'Path1',\r\n 'Path2',\r\n 'Headlines',\r\n 'Descriptions',\r\n 'FinalUrls',\r\n 'TrackingUrlTemplate',\r\n 'UrlCustomParameters',\r\n 'FinalUrlSuffix',\r\n 'MobileFinalUrls',\r\n 'NativePreference',\r\n];\r\n\r\nif (permissions.IsVanityUrlEnabled) {\r\n responsiveSearchFields.push('DisplayUrl');\r\n}\r\n\r\nexport const ResponsiveSearch = _.constant(responsiveSearchFields);\r\n\r\nconst responsiveFields = [\r\n 'Headline',\r\n 'Headlines',\r\n 'LongHeadline',\r\n 'LongHeadlines',\r\n 'Text',\r\n 'Descriptions',\r\n 'BusinessName',\r\n 'Images',\r\n 'FinalUrls',\r\n 'FinalUrlSuffix',\r\n 'TrackingUrlTemplate',\r\n 'UrlCustomParameters',\r\n 'MobileFinalUrls',\r\n 'CallToAction',\r\n 'CallToActionLanguage',\r\n];\r\n\r\nexport const Responsive = _.constant(responsiveFields);\r\n","/*eslint new-cap:0 */\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport { Ad } from '@bingads-webui-campaign/campaign-ui-schemas';\r\nimport koSchema from '@bingads-webui-component-legacy/ko-schema/index';\r\nimport { types as campaignTypes } from '@bingads-webui-campaign-legacy/adgroup-create-advanced/util/campaignType';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport { isAudienceNativeAdsCampaign, isAudienceCampaign } from '@bingads-webui-campaign-react/constants';\r\nimport { AdFormat } from '@bingads-webui-campaign-react/display-plus-native-ads';\r\nimport { setClarityTag } from '@bingads-webui-universal/clarity';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nconst adGroupTypeEnum = {\r\n SearchStandard: 'SearchStandard',\r\n SearchDynamic: 'SearchDynamic',\r\n};\r\n\r\nconst adTypeEnum = {\r\n text: 'Text',\r\n dynamicSearch: 'DynamicSearch',\r\n appInstall: 'AppInstall',\r\n product: 'Product',\r\n expandedText: 'ExpandedText',\r\n responsive: 'Responsive',\r\n responsiveSearch: 'ResponsiveSearch',\r\n};\r\n\r\nconst defaultAdType = _.object(\r\n [\r\n campaignTypes.search,\r\n campaignTypes.shopping,\r\n campaignTypes.audience,\r\n campaignTypes.hotel,\r\n ],\r\n [\r\n ({\r\n isRSAAsDefaultTypeEnabled,\r\n }) => {\r\n if (config.get('CampaignObjective') === 'AppInstalls') {\r\n return adTypeEnum.appInstall;\r\n }\r\n\r\n if (isRSAAsDefaultTypeEnabled) {\r\n return adTypeEnum.responsiveSearch;\r\n }\r\n\r\n return adTypeEnum.expandedText;\r\n },\r\n _.constant(adTypeEnum.product),\r\n _.constant(adTypeEnum.responsive),\r\n _.constant(null),\r\n ],\r\n);\r\n\r\nconst campaignAdTypesMapping = _.object(\r\n [\r\n campaignTypes.search,\r\n campaignTypes.shopping,\r\n campaignTypes.audience,\r\n campaignTypes.hotel,\r\n ],\r\n [\r\n ({\r\n appInstallAdsAllowed,\r\n isSTADisabled,\r\n isRSAAsDefaultTypeEnabled,\r\n isForVNext,\r\n }) => {\r\n\r\n let base = [];\r\n\r\n if (!isSTADisabled) {\r\n base.push(adTypeEnum.text);\r\n }\r\n\r\n if (appInstallAdsAllowed) {\r\n base.push(adTypeEnum.appInstall);\r\n }\r\n\r\n if (isForVNext && pageContext.Permissions.IsMultiMediaAdsEnabled &&\r\n !pageContext.Permissions.IsAdultAdsEnabled &&\r\n (!pageContext.Permissions.IsDomesticSimplifiedChineseEnabled || (pageContext.Permissions.IsDomesticSimplifiedChineseEnabled && pageContext.Permissions.dynamic.MMAForCN))\r\n ) {\r\n // Under a search campaign, responsive ad represents multimedia ad\r\n base.push(adTypeEnum.responsive);\r\n }\r\n\r\n if (pageContext.Permissions.IsWhiteListEXTAEnabled) {\r\n base = _.union([adTypeEnum.expandedText], base);\r\n }\r\n if (isRSAAsDefaultTypeEnabled) {\r\n base.unshift(adTypeEnum.responsiveSearch);\r\n } else {\r\n base.push(adTypeEnum.responsiveSearch);\r\n }\r\n\r\n return base;\r\n },\r\n _.constant([adTypeEnum.product]),\r\n _.constant([adTypeEnum.responsive]),\r\n _.constant([]),\r\n ],\r\n);\r\n\r\nconst permissions = config.get('Permissions');\r\nconst { IsResponsiveAdForSSCEnabled } = permissions;\r\nconst campaignSubTypeAdTypesMapping = _.object(\r\n [\r\n 'ShoppingSmartAds',\r\n ],\r\n [\r\n _.constant(IsResponsiveAdForSSCEnabled ? [adTypeEnum.product, adTypeEnum.responsive] : [adTypeEnum.product]),\r\n ],\r\n);\r\n\r\nexport default class ViewModel {\r\n constructor({\r\n model = null,\r\n campaignId = null,\r\n adGroupId = null,\r\n adGroupType = null,\r\n campaignType = null,\r\n campaignSubType = null,\r\n isFeedBasedCampaign = null,\r\n showInline = false,\r\n appInstallAdsAllowed = false,\r\n campaignDomain = '',\r\n isDynamicDescriptionEnabled = false,\r\n isMigratingToEXTA = false,\r\n isSTADisabled = false,\r\n isRSAAsDefaultTypeEnabled = false,\r\n isResponsiveAdEnabled = false,\r\n isMMAInDSAEnabled = false,\r\n isForVNext = false,\r\n adsCountMap = {},\r\n isAdgroupCreation = false,\r\n selectedAdFormat = undefined,\r\n } = {}) {\r\n this.model = model;\r\n this.showInline = showInline;\r\n this.appInstallAdsAllowed = appInstallAdsAllowed;\r\n this.isMigratingToEXTA = isMigratingToEXTA;\r\n this.isSTADisabled = isSTADisabled;\r\n this.isRSAAsDefaultTypeEnabled = isRSAAsDefaultTypeEnabled;\r\n this.isResponsiveAdEnabled = isResponsiveAdEnabled;\r\n this.isMMAInDSAEnabled = isMMAInDSAEnabled;\r\n this.isForVNext = isForVNext;\r\n this.isAdgroupCreation = isAdgroupCreation;\r\n this.campaignType = campaignType;\r\n this.campaignSubType = campaignSubType;\r\n this.selectedAdFormat = ko.observable(selectedAdFormat);\r\n\r\n if (!this.isResponsiveAdEnabled && campaignAdTypesMapping[campaignTypes.audience]) {\r\n delete campaignAdTypesMapping[campaignTypes.audience];\r\n }\r\n\r\n this.scope = ko.observable({\r\n campaignId,\r\n adGroupId,\r\n adGroupType,\r\n campaignType,\r\n campaignSubType,\r\n campaignDomain,\r\n isDynamicDescriptionEnabled,\r\n isFeedBasedCampaign,\r\n adsCountMap,\r\n scenario: 'ads-create',\r\n });\r\n\r\n if (!this.showInline) {\r\n this.hasWebsiteImageOptedInObservable = ko.observable(true);\r\n }\r\n\r\n this.type = ko.computed(() => {\r\n let type = null;\r\n\r\n if (_.isEmpty(model)) {\r\n if (this.scope().campaignType) {\r\n type = defaultAdType[this.scope().campaignType]({\r\n isRSAAsDefaultTypeEnabled: this.isRSAAsDefaultTypeEnabled,\r\n });\r\n } else if (isRSAAsDefaultTypeEnabled) {\r\n type = adTypeEnum.responsiveSearch;\r\n } else {\r\n type = adTypeEnum.expandedText;\r\n }\r\n } else {\r\n type = model.Type;\r\n if (isMigratingToEXTA && model.Type === adTypeEnum.text) {\r\n type = adTypeEnum.expandedText;\r\n }\r\n }\r\n\r\n return type;\r\n });\r\n\r\n koSchema.properties(this, Ad, ['Type'], {\r\n Type: this.type,\r\n });\r\n\r\n this.adGroupType = ko.computed(() => {\r\n return this.scope().adGroupType || adGroupType;\r\n });\r\n\r\n this.availableAdTypes = this.getAvailableAdTypes();\r\n\r\n this.adTypesRegisterForLanguageChange = _.intersection(this.availableAdTypes, [adTypeEnum.text, adTypeEnum.expandedText]);\r\n\r\n this.adTypeOptions = ko.computed(() => {\r\n let adTypes = [];\r\n\r\n if (!_.isEmpty(this.model)) {\r\n adTypes = this.getTypesFromExistingModel(this.model);\r\n } else if (this.isSmartShoppingCampaign()) {\r\n adTypes = campaignSubTypeAdTypesMapping.ShoppingSmartAds();\r\n } else if (this.scope().campaignType) {\r\n adTypes = campaignAdTypesMapping[this.scope().campaignType]({\r\n appInstallAdsAllowed: this.appInstallAdsAllowed,\r\n isSTADisabled: this.isSTADisabled,\r\n isRSAAsDefaultTypeEnabled: this.isRSAAsDefaultTypeEnabled,\r\n isForVNext: this.isForVNext,\r\n });\r\n }\r\n\r\n if (this.isSmartShoppingCampaign() && this.scope().adsCountMap) {\r\n // filter ad type which already exists under SSC ad group\r\n adTypes = _.filter(adTypes, (adType) => !this.scope().adsCountMap[this.scope().adGroupId] || !this.scope().adsCountMap[this.scope().adGroupId][`${adType}`]);\r\n }\r\n\r\n if (this.isDynamicAdGroupAdCreation()) {\r\n adTypes = this.getDynamicSearchAdTypes();\r\n }\r\n\r\n return _.map(adTypes, (adType) => {\r\n return {\r\n Name: adType === adTypeEnum.responsive && this.scope().campaignType === 1 ?\r\n i18n.get('AdTypeOption_Multimedia') : i18n.get(`AdType_${adType}Ad`),\r\n Value: adType,\r\n };\r\n });\r\n });\r\n\r\n this.showAdType = ko.computed(() => {\r\n return _.size(this.adTypeOptions()) > 1;\r\n });\r\n\r\n this.showAdTypeWithErrors = ko.computed(() => {\r\n return this.showAdType() || (!showInline && this.errors().length > 0);\r\n });\r\n\r\n this.errors.isAppealable = ko.observable(false);\r\n this.disableAdType = ko.observable(!_.isEmpty(model));\r\n\r\n this.showMigrationAlertForEXTA = ko.computed(() => {\r\n return isMigratingToEXTA && (this.Type() === adTypeEnum.expandedText);\r\n });\r\n this.showMigrationAlertForSTA = ko.computed(() => {\r\n return isMigratingToEXTA && (this.Type() === adTypeEnum.text);\r\n });\r\n this.showSTAEndWarning = ko.computed(() => {\r\n return !isMigratingToEXTA && (this.Type() === adTypeEnum.text && showInline);\r\n });\r\n\r\n this.isDisplayPlusNativeEdit = ko.observable(\r\n this.campaignType && this.campaignSubType && this.scope().adGroupId ?\r\n isAudienceCampaign(this.campaignType) && isAudienceNativeAdsCampaign(this.campaignSubType) && permissions.dynamic && permissions.dynamic.DisplayPlusEdit :\r\n false);\r\n\r\n if (this.isDisplayPlusNativeEdit()) {\r\n setClarityTag({\r\n IsDisplayPlusAudienceNative: true,\r\n CampaignSubType: this.campaignSubType,\r\n });\r\n }\r\n\r\n this.containerClass = ko.computed(() => {\r\n return this.isDisplayPlusNativeEdit() ? 'display-plus-ad-editor-form__container' : 'ad-editor-form__container';\r\n });\r\n\r\n this.hideFooter = ko.computed(() => {\r\n return this.selectedAdFormat() === AdFormat.Display || this.selectedAdFormat() === AdFormat.Video;\r\n });\r\n\r\n this.showAdFormatOptions = ko.computed(() => {\r\n return permissions.dynamic && permissions.dynamic.DisplayPlusEdit && permissions.dynamic.MultiAdFormat && isAudienceNativeAdsCampaign(this.scope().campaignSubType || this.campaignSubType);\r\n });\r\n\r\n return this;\r\n }\r\n\r\n isDynamicAdGroupAdCreation() {\r\n const isDSAMixedModeCampaignEnabled = _.result(config.get('Permissions'), 'IsDSAMixedModeCampaignEnabled', false);\r\n\r\n return isDSAMixedModeCampaignEnabled &&\r\n this.scope().campaignType === campaignTypes.search &&\r\n this.adGroupType() === adGroupTypeEnum.SearchDynamic;\r\n }\r\n\r\n getDynamicSearchAdTypes() {\r\n let base = [adTypeEnum.dynamicSearch];\r\n\r\n if (this.isMMAInDSAEnabled && !this.isAdgroupCreation) {\r\n base.push(adTypeEnum.responsive);\r\n }\r\n return base;\r\n }\r\n\r\n getAvailableAdTypes() {\r\n if (!_.isEmpty(this.model)) {\r\n return this.getTypesFromExistingModel(this.model);\r\n }\r\n\r\n let adTypes = [];\r\n\r\n if (this.isDynamicAdGroupAdCreation()) {\r\n return this.getDynamicSearchAdTypes();\r\n }\r\n\r\n if (this.showInline) {\r\n _.each(campaignAdTypesMapping, (value) => {\r\n adTypes = _.union(adTypes, value({\r\n appInstallAdsAllowed: this.appInstallAdsAllowed,\r\n isSTADisabled: this.isSTADisabled,\r\n isForVNext: this.isForVNext,\r\n }));\r\n });\r\n\r\n _.each(campaignSubTypeAdTypesMapping, (value) => {\r\n adTypes = _.union(adTypes, value());\r\n });\r\n\r\n // when the adgroup type is not selected, need to add DSA to ad types\r\n if (this.adGroupType() !== adGroupTypeEnum.SearchStandard) {\r\n adTypes = _.union(adTypes, this.getDynamicSearchAdTypes());\r\n }\r\n\r\n return adTypes;\r\n }\r\n\r\n return campaignAdTypesMapping[this.scope().campaignType || campaignTypes.search]({\r\n appInstallAdsAllowed: this.appInstallAdsAllowed,\r\n isForVNext: this.isForVNext,\r\n });\r\n }\r\n\r\n getTypesFromExistingModel(model) {\r\n return (this.isMigratingToEXTA ? [adTypeEnum.expandedText] : []).concat(model.Type);\r\n }\r\n\r\n isSmartShoppingCampaign() {\r\n const checkCampaignSubType = this.scope().campaignSubType === 'ShoppingSmartAds' || this.scope().campaignSubType === 12;\r\n\r\n return pageContext.Permissions.IsSmartShoppingCampaignEnabled && checkCampaignSubType;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport ko from 'knockout';\r\n\r\nexport default function extend(schema, viewModel, isTraditionalChinese, keys) {\r\n viewModel.isTraditionalChinese = ko.observable(isTraditionalChinese);\r\n\r\n ko.computed(() => {\r\n _.each(keys, (key) => {\r\n let maxLength = viewModel.isTraditionalChinese() ? schema.properties[key].traditionalChineseMaxLength : schema.properties[key].maxLength;\r\n\r\n viewModel[key].maxLength(maxLength);\r\n });\r\n });\r\n}\r\n","import ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport { TextAd } from '@bingads-webui-campaign/campaign-ui-schemas';\r\nimport dynamicTextExtension from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/dynamicTextExtension';\r\nimport maxLengthExtension from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/maxLengthExtension';\r\nimport koSchema from '@bingads-webui-component-legacy/ko-schema/index';\r\n\r\nfunction applyFieldRules(opt2fields, options, original) {\r\n let base = original;\r\n\r\n _.each(opt2fields, (value, key) => {\r\n if (options[key]) {\r\n base = _.union(base, value.include || []);\r\n base = _.difference(base, value.exclude || []);\r\n }\r\n });\r\n\r\n return base;\r\n}\r\n\r\nfunction getFields(options) {\r\n const base = ['Text', 'Title', 'DisplayUrl', 'DevicePreference', 'FinalUrls',\r\n 'TrackingUrlTemplate', 'UrlCustomParameters', 'MobileFinalUrls'];\r\n\r\n const opt2fields = {\r\n isNativeAdsEnabled: {\r\n include: ['NativePreference'],\r\n },\r\n };\r\n\r\n return applyFieldRules(opt2fields, options, base);\r\n}\r\n\r\nexport default class {\r\n constructor({\r\n model = null,\r\n isNativeAdsEnabled = false,\r\n isTraditionalChinese = false,\r\n } = {}) {\r\n this.model = model;\r\n this.isNativeAdsEnabled = isNativeAdsEnabled;\r\n\r\n this.upgradedUrlFields = ['FinalUrls', 'TrackingUrlTemplate', 'UrlCustomParameters', 'MobileFinalUrls'];\r\n\r\n koSchema.properties(this, TextAd, getFields({ isNativeAdsEnabled }), _.defaults(model,\r\n isNativeAdsEnabled ? { NativePreference: 'NativePreference' } : {}));\r\n\r\n dynamicTextExtension.extend(this, ['Title', 'Text']);\r\n\r\n this.isFinal = ko.observable(true);\r\n this.url = ko.observable('');\r\n this.mobileUrl = ko.observable('');\r\n\r\n maxLengthExtension(TextAd, this, isTraditionalChinese, ['Title', 'Text']);\r\n }\r\n\r\n initPreviewTab() {\r\n this.showNativeAdPreview = ko.computed(() => {\r\n if (this.isNativeAdsEnabled) {\r\n return this.NativePreference.isNativePreference();\r\n }\r\n\r\n return false;\r\n });\r\n\r\n let defaultPreviewType = 'top';\r\n\r\n if (_.isObject(this.model)) {\r\n if (this.showNativeAdPreview()) {\r\n defaultPreviewType = 'native';\r\n } else if (this.DevicePreference.isMobile()) {\r\n defaultPreviewType = 'mobile';\r\n }\r\n }\r\n\r\n return defaultPreviewType;\r\n }\r\n}\r\n","import Backbone from 'backbone';\r\nimport template from '@bingads-webui-campaign-legacy/crud-ad/template/adsPreview/DisclaimerPopUpView.pug';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nexport class DisclaimerPopUpView extends Backbone.View {\r\n initialize({\r\n viewModel,\r\n } = {}) {\r\n this.viewModel = viewModel;\r\n }\r\n render() {\r\n this.$el.html(template({ i18n }));\r\n\r\n return this;\r\n }\r\n}\r\n","import Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport { result } from 'underscore';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport { DisclaimerPopUpView } from '@bingads-webui-campaign-legacy/crud-ad/view/adsPreview/DisclaimerPopUpView';\r\n\r\nconst {\r\n IsDisclaimerAdsEnabled,\r\n} = config.get('Permissions') || {};\r\n\r\nexport default class Panel extends Backbone.View {\r\n initialize({\r\n template,\r\n viewModel,\r\n i18n,\r\n adType = '',\r\n } = {}) {\r\n this.template = template;\r\n this.viewModel = viewModel;\r\n this.i18n = i18n;\r\n this.adType = adType;\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .disclaimer-popup-link': 'displayPopupClicked',\r\n 'click .disclaimer-popup-close': 'closePopupClicked',\r\n };\r\n }\r\n\r\n displayPopupClicked() {\r\n if (IsDisclaimerAdsEnabled && !result(this.viewModel, 'IsDisclaimerPopupHintVisible')) {\r\n this.viewModel.IsDisclaimerPopupHintVisible(true); //eslint-disable-line\r\n }\r\n }\r\n\r\n closePopupClicked() {\r\n if (IsDisclaimerAdsEnabled && result(this.viewModel, 'IsDisclaimerPopupHintVisible')) {\r\n this.viewModel.IsDisclaimerPopupHintVisible(false); //eslint-disable-line\r\n }\r\n }\r\n\r\n render() {\r\n let showDisclaimer = false;\r\n\r\n if (IsDisclaimerAdsEnabled && result(this.viewModel, 'ShowDisclaimer')) {\r\n showDisclaimer = true;\r\n }\r\n\r\n this.$el.html(this.template({\r\n i18n: this.i18n,\r\n showDisclaimer,\r\n adType: this.adType,\r\n }));\r\n\r\n let disclaimer = new DisclaimerPopUpView({viewModel: this.viewModel});\r\n\r\n this.$('.disclaimer-placeholder').empty().append(disclaimer.render().$el);\r\n\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n return this;\r\n }\r\n}\r\n","import ko from 'knockout';\r\nimport _ from 'underscore';\r\n\r\nexport default class {\r\n constructor({\r\n tabs = [],\r\n } = {}) {\r\n this.selectedPanel = ko.observable();\r\n this.tabGroups = _.map(tabs, (tab) => {\r\n return _.map(tab, ({ title }, name) => {\r\n if (!this.selectedPanel()) {\r\n this.selectedPanel(name);\r\n }\r\n\r\n return {\r\n name,\r\n title,\r\n };\r\n });\r\n });\r\n }\r\n\r\n isTabGroupVisible(tabGroup) {\r\n return _.find(tabGroup, {\r\n name: this.selectedPanel(),\r\n });\r\n }\r\n}\r\n","import Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport template from '@bingads-webui-campaign-legacy/crud-ad/template/adsPreview/container.pug';\r\nimport Panel from '@bingads-webui-campaign-legacy/crud-ad/view/adsPreview/panel';\r\nimport ViewModel from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsPreview/container';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport uuid from '@bingads-webui-component-legacy/uuid/index';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nconst {\r\n IsDisclaimerAdsEnabled,\r\n} = config.get('Permissions') || {};\r\n\r\nexport default class AdsPreviewContainer extends Backbone.View {\r\n initialize({\r\n tabs = [],\r\n } = {}) {\r\n this.viewModel = new ViewModel({\r\n tabs,\r\n });\r\n\r\n this.tabGroups = _.map(tabs, (tab) => {\r\n return _.mapObject(tab, (subTab) => {\r\n return subTab.title;\r\n });\r\n });\r\n\r\n if (IsDisclaimerAdsEnabled) {\r\n this.tab = tabs[0];\r\n }\r\n\r\n this.panels = _.mapObject(_.extend.apply(this, tabs),\r\n (tab) => {\r\n return new Panel({\r\n template: tab.template,\r\n viewModel: tab.viewModel,\r\n title: tab.title,\r\n i18n: tab.i18n || i18n,\r\n adType: tab.adType,\r\n });\r\n });\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click a.preview-tab': 'switchTab',\r\n };\r\n }\r\n\r\n render() {\r\n this.$el.html(template({\r\n i18n,\r\n tabGroups: this.tabGroups,\r\n panels: this.panels,\r\n uuid,\r\n }));\r\n\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n _.each(this.panels, (panel, name) => {\r\n this.$(`.preview-${name}`).empty().append(panel.render().el);\r\n });\r\n\r\n return this;\r\n }\r\n\r\n switchTab(target) {\r\n const selected = target.currentTarget.dataset.target;\r\n\r\n this.viewModel.selectedPanel(selected);\r\n\r\n if (IsDisclaimerAdsEnabled) {\r\n if (this.tab[selected].viewModel.IsDisclaimerPopupHintVisible) {\r\n this.tab[selected].viewModel.IsDisclaimerPopupHintVisible(false);//eslint-disable-line\r\n }\r\n }\r\n }\r\n\r\n selectedPanel(panel) {\r\n this.viewModel.selectedPanel(panel);\r\n }\r\n}\r\n","/*eslint new-cap:0 */\r\nimport ko from 'knockout';\r\n\r\nexport default class ViewModel {\r\n constructor(adViewModel = {}) {\r\n this.Text = adViewModel.Text;\r\n this.Title = adViewModel.Title;\r\n this.DisplayUrl = adViewModel.DisplayUrl;\r\n\r\n this.DestinationUrl = ko.computed(() => {\r\n return adViewModel.url();\r\n });\r\n\r\n this.adViewModel = adViewModel;\r\n }\r\n}\r\n","/*eslint new-cap:0 */\r\nimport ko from 'knockout';\r\n\r\nexport default class ViewModel {\r\n constructor(previewModel = {}) {\r\n const adViewModel = previewModel.adViewModel;\r\n\r\n this.Text = previewModel.Text;\r\n this.Title = previewModel.Title;\r\n this.DisplayUrl = previewModel.DisplayUrl;\r\n\r\n this.DestinationUrl = ko.computed(() => {\r\n let useFinalUrl = adViewModel.DevicePreference.isMobile() || !adViewModel.isFinal();\r\n\r\n return useFinalUrl ? adViewModel.url() : adViewModel.mobileUrl();\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { TextAd } from '@bingads-webui-campaign/campaign-ui-schemas';\r\n\r\nconst displayUrlSeparator = ' | ';\r\nconst descriptionSeparator = ' - ';\r\nconst tokenisersWithSpaces = ['2e', '3f', '21'];\r\nconst tokenisersWithNoSpaces = [];\r\n\r\nconst longAdTitleDetails = _.pick(TextAd.properties.Title, 'AdTitleWithDescriptionMaxLimit', 'AdTitleWithDisplayUrlMaxLimit');\r\n\r\n/*\r\n\r\n input : displayUrl = https://www.bing.com\r\n title = Hotel\r\n details = {\r\n 'AdTitleWithDisplayUrlMaxLimit' : 62,\r\n }\r\n output : Hotel | bing.com\r\n\r\n\r\n input : displayUrl = https://www.bing.com/search1/search2\r\n title = Hotel\r\n details = {\r\n 'AdTitleWithDisplayUrlMaxLimit' : 62,\r\n }\r\n output : Hotel | bing.com\r\n\r\n*/\r\nfunction generateTitleUsingDisplayUrl (displayUrl, title, details) {\r\n if (_.isEmpty(displayUrl.trim())) {\r\n return title;\r\n }\r\n\r\n let displayUrlInTitle = displayUrl.replace(/(http(s)*|ftp):\\/\\//i, '');\r\n\r\n const firstSlashIndex = displayUrlInTitle.indexOf('/');\r\n\r\n if (firstSlashIndex !== -1) {\r\n displayUrlInTitle = displayUrlInTitle.substring(0, firstSlashIndex);\r\n }\r\n\r\n if (displayUrlInTitle.substring(0, 4) === 'www.') {\r\n displayUrlInTitle = displayUrlInTitle.substring(4);\r\n }\r\n\r\n if (title && title.indexOf(displayUrlInTitle) > -1) {\r\n return title;\r\n }\r\n\r\n const newTitle = title + displayUrlSeparator + displayUrlInTitle;\r\n\r\n if (details && newTitle.length > details.AdTitleWithDisplayUrlMaxLimit) {\r\n return title;\r\n }\r\n\r\n return newTitle;\r\n}\r\n\r\n/*\r\n\r\n @input : description = This is a great hotel. I like it.\r\n title = Hotel\r\n details = {\r\n 'AdTitleWithDescriptionMaxLimit' : 62\r\n }\r\n @output: description = I like it.\r\n title = Hotel - This is a great hotel.\r\n isLongAdTitle = true\r\n\r\n\r\n @input : description = This is a great hotel.\r\n title = Hotel\r\n details = {\r\n 'AdTitleWithDescriptionMaxLimit' : 62\r\n }\r\n @output: description = This is a great hotel.\r\n title = Hotel\r\n isLongAdTitle = false\r\n\r\n*/\r\nfunction generateTitleUsingDescription(description, title, details) {\r\n let isLongAdTitle = false;\r\n let resultDescription = description;\r\n let resultTitle = title;\r\n\r\n if (!_.isEmpty(details)) {\r\n const maxLimit = details.AdTitleWithDescriptionMaxLimit;\r\n const originalLength = description.length;\r\n const inputChars = description.split('');\r\n const startPosition = originalLength - 1;\r\n\r\n for (let i = startPosition; i > 0; i--) {\r\n const character = description.charCodeAt(i).toString(16);\r\n\r\n if (_.contains(tokenisersWithNoSpaces, character) || (_.contains(tokenisersWithSpaces, character) && (i === startPosition || inputChars[i + 1] === ' '))) {\r\n const extendedTitle = description.substring(0, i + 1);\r\n const newTitle = title + descriptionSeparator + extendedTitle;\r\n\r\n if (newTitle.length < maxLimit) {\r\n resultDescription = description.substring(i + 1);\r\n resultTitle = newTitle;\r\n isLongAdTitle = true;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return {\r\n title: resultTitle,\r\n description: resultDescription,\r\n isLongAdTitle,\r\n };\r\n}\r\n\r\nexport default {\r\n generate(description, displayUrl, title) {\r\n const results = generateTitleUsingDescription(description, title, longAdTitleDetails);\r\n\r\n if (results.isLongAdTitle) {\r\n return {\r\n title: results.title,\r\n description: results.description,\r\n };\r\n } else {\r\n return {\r\n title: generateTitleUsingDisplayUrl(displayUrl, title, longAdTitleDetails),\r\n description,\r\n };\r\n }\r\n },\r\n};\r\n","/*eslint new-cap:0 */\r\nimport ko from 'knockout';\r\nimport longAdTitle from '@bingads-webui-campaign-legacy/crud-ad/longAdTitle';\r\n\r\nexport default class ViewModel {\r\n constructor(previewModel = {}) {\r\n this.previewTitleAndText = ko.computed(() => {\r\n return longAdTitle.generate(previewModel.Text(), previewModel.DisplayUrl(), previewModel.Title());\r\n });\r\n\r\n //mainline title\r\n this.Title = ko.computed(() => {\r\n return this.previewTitleAndText().title;\r\n });\r\n\r\n //mainline text\r\n this.Text = ko.computed(() => {\r\n return this.previewTitleAndText().description;\r\n });\r\n\r\n this.DisplayUrl = previewModel.DisplayUrl;\r\n this.DestinationUrl = previewModel.DestinationUrl;\r\n\r\n this.adViewModel = previewModel.adViewModel;\r\n }\r\n}\r\n","import PreviewContainer from '@bingads-webui-campaign-legacy/crud-ad/view/adsPreview/container';\r\nimport topTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adsPreview/top.pug';\r\nimport sidebarTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adsPreview/sidebar.pug';\r\nimport mobileTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adsPreview/mobile.pug';\r\nimport nativeTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adsPreview/native.pug';\r\nimport PreviewViewModel from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsPreview/textAd';\r\nimport MobileDecorator from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsPreview/mobileDecorator';\r\nimport LongAdTitleDecorator from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsPreview/longAdTitleDecorator';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nexport default {\r\n buildPreview(viewModel) {\r\n return new PreviewContainer({\r\n contentClass: '.Text .preview-container',\r\n tabs: [{\r\n top: {\r\n template: topTemplate,\r\n viewModel: new LongAdTitleDecorator(new PreviewViewModel(viewModel)),\r\n title: i18n.get('Ad_TopView'),\r\n },\r\n sidebar: {\r\n template: sidebarTemplate,\r\n viewModel: new PreviewViewModel(viewModel),\r\n title: i18n.get('Ad_SideView'),\r\n },\r\n mobile: {\r\n template: mobileTemplate,\r\n viewModel: new MobileDecorator(new LongAdTitleDecorator(new PreviewViewModel(viewModel))),\r\n title: i18n.get('Ad_MobileView'),\r\n },\r\n }, {\r\n native: {\r\n template: nativeTemplate,\r\n viewModel: new PreviewViewModel(viewModel),\r\n title: i18n.get('Ad_NativeView'),\r\n },\r\n }],\r\n });\r\n },\r\n};\r\n","export default class ViewModel {\r\n constructor() {\r\n this.upgradedUrlFields = ['FinalUrls', 'TrackingUrlTemplate', 'UrlCustomParameters', 'MobileFinalUrls'];\r\n }\r\n}\r\n","import Backbone from 'backbone';\r\nimport _ from 'underscore';\r\nimport ko from 'knockout';\r\nimport ViewModel from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/upgradedUrl';\r\nimport template from '@bingads-webui-campaign-legacy/crud-ad/template/adsEditor/upgradedUrl.pug';\r\nimport UpgradedUrl from '@bingads-webui-component-legacy/upgraded-url/view/index';\r\n\r\nexport default class View extends Backbone.View {\r\n initialize({\r\n placeholders = {},\r\n adViewModel,\r\n showOnlyFinalUrl = false,\r\n api = null,\r\n editMode = false,\r\n urlOptionsEnabled = false,\r\n defaultLandingPageUrl = '',\r\n placeholderEnabled = true,\r\n ariaPrefix = '',\r\n } = {}) {\r\n this.adViewModel = adViewModel;\r\n this.placeholders = placeholders;\r\n this.showOnlyFinalUrl = showOnlyFinalUrl;\r\n this.api = api;\r\n this.editMode = editMode;\r\n this.urlOptionsEnabled = urlOptionsEnabled;\r\n this.defaultLandingPageUrl = defaultLandingPageUrl;\r\n this.placeholderEnabled = placeholderEnabled;\r\n this.ariaPrefix = ariaPrefix;\r\n\r\n this.viewModel = new ViewModel();\r\n }\r\n\r\n render() {\r\n this.$el.empty().append(template({}));\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n let defaultOptions = {\r\n urlOptionsEnabled: this.urlOptionsEnabled,\r\n isMobilePreferred: _.isFunction(this.adViewModel.DevicePreference) ? this.adViewModel.DevicePreference.isMobile() : false,\r\n entityType: 'Ad',\r\n placeholderEnabled: this.placeholderEnabled,\r\n placeholders: this.placeholders,\r\n showOnlyFinalUrl: this.showOnlyFinalUrl,\r\n landingPageUrlRequired: true,\r\n highLightModeInError: true,\r\n };\r\n\r\n if (_.isObject(this.model)) {\r\n let isFinalUrl = _.isArray(this.model.FinalUrls) && !_.isEmpty(this.model.FinalUrls),\r\n url = isFinalUrl ? this.model.FinalUrls[0] : this.model.DestinationUrl,\r\n mobileUrl = _.isArray(this.model.MobileFinalUrls) && !_.isEmpty(this.model.MobileFinalUrls) ? this.model.MobileFinalUrls[0] : undefined;\r\n\r\n this.upgradedUrlView = new UpgradedUrl(_.extend(defaultOptions, {\r\n url,\r\n isFinal: isFinalUrl,\r\n finalMobileUrl: mobileUrl,\r\n trackingTemplate: _.result(this.model, 'TrackingUrlTemplate'),\r\n customParameters: _.isEmpty(this.model.UrlCustomParameters) ? undefined : _.clone(this.model.UrlCustomParameters), // eslint-disable-line\r\n editMode: true,\r\n ariaPrefix: this.ariaPrefix,\r\n }));\r\n\r\n this.adViewModel.isFinal(isFinalUrl);\r\n this.adViewModel.url(url);\r\n this.adViewModel.mobileUrl(mobileUrl);\r\n } else {\r\n this.upgradedUrlView = new UpgradedUrl(_.defaults(defaultOptions, {\r\n url: this.defaultLandingPageUrl,\r\n ariaPrefix: this.ariaPrefix,\r\n }));\r\n }\r\n\r\n this.$('.upgraded-url__container').empty().append(this.upgradedUrlView.render().el);\r\n this.upgradedUrlView.on('finalUrlChanged', this.urlInputChanged, this);\r\n this.upgradedUrlView.on('mobileUrlChanged', this.mobileUrlChanged, this);\r\n this.upgradedUrlView.on('finalUrlSelected', () => {\r\n this.adViewModel.isFinal(true);\r\n });\r\n this.upgradedUrlView.on('destinationUrlSelected', () => {\r\n this.adViewModel.isFinal(false);\r\n });\r\n\r\n return this;\r\n }\r\n\r\n validate() {\r\n return this.upgradedUrlView.isValid();\r\n }\r\n\r\n urlInputChanged() {\r\n let url = this.upgradedUrlView.getValues().finalUrl.url;\r\n\r\n this.adViewModel.url(url);\r\n }\r\n\r\n mobileUrlChanged() {\r\n let url = this.upgradedUrlView.getValues().mobileUrl;\r\n\r\n this.adViewModel.mobileUrl(url);\r\n }\r\n\r\n devicePreferenceChanged(event) {\r\n this.upgradedUrlView.devicePreferenceChanged(event);\r\n }\r\n\r\n toObject() {\r\n let arrayEmptyValue = this.api === 'odata' ? [] : null;\r\n let stringEmptyValue = this.api === 'odata' ? '' : null;\r\n\r\n let uulModel = this.upgradedUrlView.toObject();\r\n\r\n if (this.editMode) {\r\n if (!this.adViewModel.isFinal() && !_.isEmpty(this.model.FinalUrls)) {\r\n // if update to use destinationUrl, then reset final url fields\r\n uulModel.FinalUrls = arrayEmptyValue;\r\n uulModel.MobileFinalUrls = arrayEmptyValue;\r\n uulModel.TrackingUrlTemplate = stringEmptyValue;\r\n uulModel.UrlCustomParameters = arrayEmptyValue;\r\n } else if (this.adViewModel.isFinal() && !_.isEmpty(this.model.DestinationUrl)) {\r\n //if update to use final url, then reset destination url field\r\n uulModel.DestinationUrl = stringEmptyValue;\r\n } else if (!this.adViewModel.isFinal()) {\r\n // if still destinationUrl\r\n if (_.isEmpty(uulModel.DestinationUrl)) {\r\n uulModel.DestinationUrl = stringEmptyValue;\r\n }\r\n } else if (this.adViewModel.isFinal()) {\r\n // if still finalUrl\r\n if (_.isEmpty(uulModel.FinalUrls)) {\r\n uulModel.FinalUrls = arrayEmptyValue;\r\n }\r\n if (_.isEmpty(uulModel.MobileFinalUrls)) {\r\n uulModel.MobileFinalUrls = arrayEmptyValue;\r\n }\r\n if (_.isEmpty(uulModel.TrackingUrlTemplate)) {\r\n uulModel.TrackingUrlTemplate = stringEmptyValue;\r\n }\r\n if (_.isEmpty(uulModel.UrlCustomParameters)) {\r\n uulModel.UrlCustomParameters = arrayEmptyValue;\r\n }\r\n }\r\n }\r\n\r\n return uulModel;\r\n }\r\n\r\n handleApiErrors() {\r\n let errorObject = _.object(this.viewModel.upgradedUrlFields, _.map(this.viewModel.upgradedUrlFields, (key) => {\r\n return _.isFunction(this.adViewModel[key].errors) ? this.adViewModel[key].errors() : [];\r\n }));\r\n\r\n this.upgradedUrlView.handleApiErrors(errorObject);\r\n }\r\n\r\n clearApiErrors() {\r\n this.upgradedUrlView.clearApiErrors();\r\n }\r\n}\r\n","import Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport ViewModel from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/textAd';\r\nimport editorTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adsEditor/textAd.pug';\r\nimport previewBuilder from '@bingads-webui-campaign-legacy/crud-ad/view/adsPreview/textAd';\r\nimport UpgradedUrl from '@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/upgradedUrl';\r\nimport { isCampaignApiError } from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\nimport uuid from '@bingads-webui-component-legacy/uuid/index';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nconst placeholders = {\r\n Text: i18n.get('Ad_Placeholder_Text'),\r\n Title: i18n.get('Ad_Placeholder_Title'),\r\n DisplayUrl: i18n.get('Ad_Placeholder_DisplayUrl'),\r\n DestinationUrl: i18n.get('Ad_Placeholder_DestinationUrl'),\r\n};\r\n\r\nexport default class TextAdEditor extends Backbone.View {\r\n initialize({\r\n showAdType = false,\r\n isNativeAdsEnabled = false,\r\n model = null,\r\n showInline = false,\r\n editMode = false,\r\n isTraditionalChinese = false,\r\n defaultLandingPageUrl = '',\r\n } = {}) {\r\n this.showAdType = showAdType;\r\n this.isNativeAdsEnabled = isNativeAdsEnabled;\r\n this.model = model;\r\n this.showInline = showInline;\r\n this.editMode = editMode;\r\n this.defaultLandingPageUrl = defaultLandingPageUrl;\r\n\r\n this.viewModel = new ViewModel({\r\n model,\r\n isNativeAdsEnabled,\r\n isTraditionalChinese,\r\n });\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .prefer-native-format': 'preferNativeAdFormat',\r\n 'click .prefer-mobile-device': 'devicePreferenceChanged',\r\n };\r\n }\r\n\r\n render() {\r\n this.$el.html(editorTemplate({\r\n i18n,\r\n uuid,\r\n isNativeAdsEnabled: this.isNativeAdsEnabled,\r\n placeholders,\r\n showAdType: this.showAdType,\r\n }));\r\n\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n this.upgradedUrlView = new UpgradedUrl({\r\n model: this.model,\r\n adViewModel: this.viewModel,\r\n api: this.showInline ? 'odata' : 'bulk',\r\n editMode: this.editMode,\r\n urlOptionsEnabled: this.showInline,\r\n defaultLandingPageUrl: this.defaultLandingPageUrl,\r\n ariaPrefix: 'textAd',\r\n });\r\n\r\n this.$('.upgraded-url').empty().append(this.upgradedUrlView.render().el);\r\n\r\n this.previewContainer = previewBuilder.buildPreview(this.viewModel);\r\n this.$('.preview-container').empty().append(this.previewContainer.render().el);\r\n this.previewContainer.selectedPanel(this.viewModel.initPreviewTab());\r\n\r\n return this;\r\n }\r\n\r\n resetEditMode(mode) {\r\n this.upgradedUrlView.editMode = mode;\r\n }\r\n\r\n preferNativeAdFormat() {\r\n let type = 'top';\r\n\r\n if (this.viewModel.showNativeAdPreview()) {\r\n type = 'native';\r\n } else if (this.viewModel.DevicePreference.isMobile()) {\r\n type = 'mobile';\r\n }\r\n\r\n this.previewContainer.selectedPanel(type);\r\n }\r\n\r\n devicePreferenceChanged(event) {\r\n if (!this.viewModel.showNativeAdPreview()) {\r\n if (this.viewModel.DevicePreference.isMobile()) {\r\n this.previewContainer.selectedPanel('mobile');\r\n } else {\r\n this.previewContainer.selectedPanel('top');\r\n }\r\n }\r\n\r\n this.upgradedUrlView.devicePreferenceChanged(event);\r\n }\r\n\r\n validate() {\r\n const upgradedUrlValid = this.upgradedUrlView.validate();\r\n\r\n return this.viewModel.validate() && upgradedUrlValid;\r\n }\r\n\r\n toObject() {\r\n const model = this.viewModel.toObject();\r\n\r\n return _.extend(_.omit(model, this.viewModel.upgradedUrlFields), this.upgradedUrlView.toObject());\r\n }\r\n\r\n handleApiErrors(errors) {\r\n _.each(errors, (error) => {\r\n if (_.result(error, 'property') === 'DestinationUrl') {\r\n error.property = 'FinalUrls';\r\n }\r\n });\r\n this.viewModel.errors.add(errors);\r\n\r\n if (!_.isEmpty(errors)) {\r\n this.upgradedUrlView.handleApiErrors();\r\n }\r\n }\r\n\r\n clearApiErrors() {\r\n this.viewModel.errors.clear(isCampaignApiError);\r\n this.upgradedUrlView.clearApiErrors();\r\n }\r\n}\r\n","import ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport { AppInstallAd } from '@bingads-webui-campaign/campaign-ui-schemas';\r\nimport * as schemaMapper from '@bingads-webui-campaign-legacy/crud-ad/schemaMapper';\r\nimport koSchema from '@bingads-webui-component-legacy/ko-schema/index';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nconst appPlatformKeys = {\r\n 'Android': i18n.get('AppInstall_Platform_Android'),\r\n 'iOS': i18n.get('AppInstall_Platform_iOS'),\r\n 'Windows Phone': i18n.get('AppInstall_Platform_WinPhone'),\r\n 'Windows': i18n.get('AppInstall_Platform_Windows'),\r\n};\r\n\r\nconst previewTabItems = {\r\n Mobile: 'MobileView',\r\n Tablet: 'TabletView',\r\n};\r\n\r\nexport default class {\r\n constructor({\r\n model = null,\r\n appLookupDisabled = false,\r\n developerName = '',\r\n defaultLandingPageUrl = '',\r\n activityLogger,\r\n } = {}) {\r\n this.tabItems = previewTabItems;\r\n this.upgradedUrlFields = _.compact(['FinalUrls', 'TrackingUrlTemplate', 'UrlCustomParameters', 'FinalUrlSuffix']);\r\n this.schemaFields = schemaMapper.AppInstall(); // eslint-disable-line\r\n this.activityLogger = activityLogger;\r\n\r\n const customValidations = {\r\n AppStoreId: {\r\n isValid: (value) => {\r\n if (ko.unwrap(this.AppPlatform) === 'iOS' && value) {\r\n return (/^\\d+$/i).test(value);\r\n }\r\n\r\n return true;\r\n },\r\n message: i18n.get('AppInstall_Validation_Digit_Only'),\r\n },\r\n };\r\n\r\n this.fields = _.difference(this.schemaFields, ['DestinationUrl']);\r\n\r\n koSchema.properties(this, AppInstallAd, this.fields, _.defaults(model || {}, { DestinationUrl: defaultLandingPageUrl }), customValidations);\r\n\r\n const appPlatformsEnum = AppInstallAd.properties.AppPlatform.enum;\r\n\r\n this.appPlatforms = _.map(appPlatformsEnum, (key) => {\r\n return {\r\n Name: appPlatformKeys[key],\r\n Value: key,\r\n };\r\n });\r\n\r\n this.editMode = ko.observable(!_.isEmpty(model));\r\n this.appLookupDisabled = ko.observable(appLookupDisabled);\r\n this.developerName = ko.observable(developerName);\r\n this.appSelected = ko.observable(this.editMode());\r\n this.previewType = ko.observable(this.tabItems.Mobile);\r\n\r\n this.manualApp = ko.computed(() => {\r\n return this.AppStoreId() && !(this.AltText() || this.MediaUrl()); // eslint-disable-line\r\n });\r\n\r\n this.appIdPlaceholderText = ko.computed(() => {\r\n return this.manualApp() ? this.AppStoreId() : i18n.get('AppLookup_SearchBoxPlaceHolderTerm'); // eslint-disable-line\r\n });\r\n\r\n this.appIdName = ko.computed(() => {\r\n if(this.AppPlatform() === 'Android') { // eslint-disable-line\r\n return i18n.get('AppInstall_Package_Name');\r\n }\r\n\r\n return i18n.get('AppInstall_App_Id');\r\n });\r\n\r\n this.appStoreIdPlaceholderText = ko.computed(() => {\r\n if(this.AppPlatform() === 'Android') { // eslint-disable-line\r\n return i18n.get('AppInstallAd_Placeholder_PackageName_Android');\r\n } else if (this.AppPlatform() === 'iOS') { // eslint-disable-line\r\n return i18n.get('AppInstallAd_Placeholder_PackageName_iOS');\r\n }\r\n\r\n return i18n.get('AppInstallAd_Placeholder_PackageName_Windows');\r\n });\r\n\r\n this.adTitlePreview = ko.computed(() => {\r\n return !_.isEmpty(this.Title()) ? this.Title() : i18n.get('AppInstall_Title'); // eslint-disable-line\r\n });\r\n\r\n this.appStorePreview = ko.computed(() => {\r\n var appStoreName = this.AppPlatform() && this.AppStoreId() ? i18n.get('AppInstall_AppStore_' + this.AppPlatform().replace(' ', '_')) : ''; // eslint-disable-line\r\n return appStoreName ? i18n.get('AppInstall_Preview_AppStore_New', { name: appStoreName }) : i18n.get('Ad_Preview_Default');\r\n });\r\n\r\n this.adTextPreview = ko.computed(() => {\r\n return !_.isEmpty(this.Text())? this.Text() : i18n.get('AppInstall_Text'); // eslint-disable-line\r\n });\r\n\r\n this.previewUrl = ko.computed(() => {\r\n return _.first(this.FinalUrls()); // eslint-disable-line\r\n });\r\n\r\n _.each(this.fields, (field) => {\r\n // log once per field.\r\n const logChange = _.once(() => {\r\n if (this.activityLogger) {\r\n this.activityLogger.signal(`ad field change: ${field}`, 'app install ad editor');\r\n }\r\n });\r\n\r\n this[field].subscribe(() => {\r\n logChange();\r\n });\r\n });\r\n }\r\n\r\n previewTabSelected(type) {\r\n return this.previewType() === type ? 'ui-tabs-selected' : 'preview-tabs-unselected';\r\n }\r\n}\r\n","import ko from 'knockout';\r\nimport Backbone from 'backbone';\r\nimport _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport ViewModel from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/appInstallAd';\r\nimport tmpl from '@bingads-webui-campaign-legacy/crud-ad/template/adsEditor/appInstallAd.pug';\r\nimport popoverTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adsEditor/popoverTemplate.pug';\r\nimport AppLookupView from '@bingads-webui-campaign-legacy/adextension-shared/view/appLookup';\r\nimport { isCampaignApiError } from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\nimport popoverExtender from '@bingads-webui-component-legacy/extension/bootstrap/popover';\r\nimport UpgradedUrl from '@bingads-webui-component-legacy/upgraded-url/view/index';\r\nimport instrumentation from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport constants from '@bingads-webui-static-legacy/instrumentation/constants';\r\nimport { focusLockInstanceDecorator } from '@bingads-webui/focus-lock-decorator';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nconst placeholders = {\r\n Text: i18n.get('Ad_Placeholder_Text'),\r\n Title: i18n.get('Ad_Placeholder_Title'),\r\n FinalUrls: i18n.get('Ad_Placeholder_FinalUrls'),\r\n TrackingUrlTemplate: i18n.get('Ad_Placeholder_TrackingUrlTemplate'),\r\n};\r\n\r\nexport default class AppInstallAdEditor extends Backbone.View {\r\n initialize({\r\n model = null,\r\n appLookupDisabled = false,\r\n developerName = '',\r\n defaultLandingPageUrl = '',\r\n isForVNext = false,\r\n activityLogger,\r\n } = {}) {\r\n this.isForVNext = isForVNext;\r\n this.defaultLandingPageUrl = defaultLandingPageUrl;\r\n this.activityLogger = activityLogger;\r\n\r\n this.viewModel = new ViewModel({\r\n model,\r\n appLookupDisabled,\r\n developerName,\r\n defaultLandingPageUrl,\r\n activityLogger,\r\n });\r\n\r\n this.appeal = false;\r\n this.applookupRendered = false;\r\n this.applookupView = null;\r\n this.focusLockAppLookupPopupEditor = null;\r\n this.applookupLoggingInformation = '';\r\n this.on('created', this.handleCreated);\r\n this.on('cancel', this.handleCancel);\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click a.preview-tab': 'switchPreviewTab',\r\n 'click .changeapp': 'changeApp',\r\n };\r\n }\r\n\r\n render() {\r\n this.$el.html(tmpl({\r\n i18n,\r\n placeholders,\r\n tabItems: this.viewModel.tabItems,\r\n isForVNext: this.isForVNext,\r\n }));\r\n\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n const isFinal = true; //!!this.upgradedUrl,\r\n const url = isFinal ? _.first(_.result(this.model, 'FinalUrls')) : _.result(this.model, 'DestinationUrl');\r\n const customParameters = _.result(this.model, 'UrlCustomParameters');\r\n\r\n this.upgradedUrlView = new UpgradedUrl({\r\n url: url || this.defaultLandingPageUrl,\r\n isFinal,\r\n trackingTemplate: _.result(this.model, 'TrackingUrlTemplate'),\r\n finalUrlSuffix: _.result(this.model, 'FinalUrlSuffix'),\r\n customParameters: _.isEmpty(customParameters) ? undefined : _.clone(customParameters), // eslint-disable-line\r\n urlOptionsEnabled: true,\r\n showUurlTestTool: true,\r\n isMobilePreferred: true,\r\n entityType: 'Ad',\r\n isHorizontal: true,\r\n editMode: true,\r\n placeholderEnabled: true,\r\n popupHelpKeyAdLandingPage: 'pop_BA_AppInstall_LandingPage',\r\n popupHelpKeyAdTrackTemplate: 'pop_BA_AppInstall_TrackingTemplate',\r\n popupHelpKeyAdParameters: 'pop_BA_AppInstall_CustomParam',\r\n ariaPrefix: 'appInstallAd',\r\n isForVNext: this.isForVNext,\r\n activityLogger: this.activityLogger,\r\n });\r\n\r\n this.upgradedUrlView.on('finalUrlChanged', this.urlInputChanged, this);\r\n this.$('.app-upgraded-url').append(this.upgradedUrlView.render().el);\r\n\r\n this.upgradedUrlView.on('testUurl', (fn, originalView) => {\r\n this.trigger('testUurl', fn, originalView);\r\n });\r\n\r\n //START - remove when down stream systems are ready for DURL\r\n const uurlControl = this.$('.final-url');\r\n\r\n uurlControl.find('.radio:last').hide();\r\n uurlControl.find('.radio:first label').text(i18n.get('AppInstall_FinalUrl'));\r\n uurlControl.find('.radio:first label').css('cursor', 'default');\r\n uurlControl.find('.radio:first').css('padding-left', '0px');\r\n uurlControl.closest('.form-group').css('margin-bottom', '0px');\r\n //END\r\n\r\n return this;\r\n }\r\n\r\n resetEditMode() {\r\n this.viewModel.editMode(false);\r\n }\r\n\r\n changeApp() {\r\n if (this.viewModel.editMode()) {\r\n return;\r\n }\r\n\r\n this.showPopover();\r\n }\r\n\r\n showPopover() {\r\n const $popoverContainer = this.$el.find('.dropdownContainer:not(.fixed)');\r\n let flag = false;\r\n let tempEl = null;\r\n\r\n $popoverContainer\r\n .popover({\r\n container: $popoverContainer,\r\n trigger: 'manual',\r\n placement: 'bottom',\r\n html: true,\r\n template: popoverTemplate({ appSelected: this.viewModel.appSelected }),\r\n content: () => {\r\n if (flag === false) {\r\n this.applookupView = new AppLookupView({\r\n appPlatform: this.viewModel.AppPlatform() // eslint-disable-line\r\n });\r\n this.applookupView.render();\r\n flag = true;\r\n this.applookupRendered = true;\r\n const FocusLockAppLookupPopupEditor = focusLockInstanceDecorator(this.applookupView, {\r\n onExit: () => this.removePopover(),\r\n focusFirstItemOnMount: true,\r\n }, {\r\n managed: true,\r\n });\r\n\r\n this.focusLockAppLookupPopupEditor = new FocusLockAppLookupPopupEditor();\r\n tempEl = this.focusLockAppLookupPopupEditor.render().el;\r\n }\r\n\r\n return tempEl;\r\n },\r\n });\r\n\r\n popoverExtender.decorate($popoverContainer,\r\n this.excludeCb,\r\n _.bind(this.clickCb, this),\r\n _.bind(this.hiddenCb, this, null));\r\n\r\n $popoverContainer.popover('show');\r\n this.applookupView.open();\r\n this.applookupView.on('AppSelected', (data) => {\r\n this.setSelectedApp(data);\r\n this.removePopover();\r\n });\r\n }\r\n\r\n removePopover() {\r\n if (this.applookupView) {\r\n const $popoverContainer = this.$el.find('.dropdownContainer:not(.fixed)');\r\n\r\n $popoverContainer.popover('destroy');\r\n this.applookupView.clearApp();\r\n this.applookupView.remove();\r\n this.focusLockAppLookupPopupEditor.remove();\r\n this.applookupView = null;\r\n this.focusLockAppLookupPopupEditor = null;\r\n }\r\n }\r\n\r\n excludeCb($container, e) {\r\n const $target = $(e.target);\r\n\r\n const clikedInsideControl = $target.hasClass('dropDownSelect') ||\r\n $target.parents().hasClass('dropDownSelect') ||\r\n $.contains($container.children('.popover')[0], e.target) ||\r\n $container.children('.popover').find(e.target).length > 0 ||\r\n $target.hasClass('applookup') ||\r\n $target.parents().hasClass('applookup');\r\n\r\n const offset = 1;\r\n const newTop = $('.appinfo-table').height() + offset;\r\n\r\n $('.applookup-selected-popover .popover').css('top', `${newTop}px`);\r\n\r\n return Boolean(clikedInsideControl);\r\n }\r\n\r\n clickCb() {\r\n this.removePopover();\r\n }\r\n\r\n hiddenCb() {\r\n _.noop();\r\n }\r\n\r\n setSelectedApp(data) {\r\n // TODO: [zhbliu] give koSchema ability to bulk update model\r\n this.viewModel.AppPlatform(data.AppPlatform); // eslint-disable-line\r\n this.viewModel.AppStoreId(data.AppStoreId); // eslint-disable-line\r\n this.viewModel.AltText(data.AppTitle); // eslint-disable-line\r\n this.viewModel.MediaUrl(data.IconUrl); // eslint-disable-line\r\n this.viewModel.DeviceType(data.DeviceType); // eslint-disable-line\r\n\r\n this.viewModel.developerName(data.DeveloperName);\r\n this.viewModel.appSelected(true);\r\n\r\n this.upgradedUrlView.urlEditor.ko_model.fullUrl(data.AppUrl);\r\n\r\n this.applookupLoggingInformation = data.ApplookupLoggingInformation;\r\n }\r\n\r\n switchPreviewTab(target) {\r\n const previewType = target.currentTarget.dataset.target;\r\n\r\n this.viewModel.previewType(previewType);\r\n }\r\n\r\n toObject() {\r\n const model = this.viewModel.toObject();\r\n\r\n return _.extend(_.omit(model, this.viewModel.upgradedUrlFields), this.upgradedUrlView.toObject());\r\n }\r\n\r\n urlInputChanged() {\r\n const url = this.upgradedUrlView.urlEditor.ko_model.fullUrl();\r\n\r\n this.viewModel.FinalUrls(!_.isEmpty(url) ? [url] : []); // eslint-disable-line\r\n }\r\n\r\n validateViewModel() {\r\n const isValid = this.viewModel.validate();\r\n\r\n if (!isValid) {\r\n _.each(this.viewModel.fields, (field) => {\r\n if (!this.viewModel[field].isValid()) {\r\n if (this.activityLogger) {\r\n this.activityLogger.signal(`ad field invalid: ${field}`, 'app install ad editor');\r\n }\r\n }\r\n });\r\n }\r\n return isValid;\r\n }\r\n\r\n validate() {\r\n const isValid = _.reduce([\r\n this.upgradedUrlView.isValid(),\r\n this.validateViewModel(),\r\n ], (prev, next) => {\r\n return prev && next;\r\n }, true);\r\n\r\n const errorMessages = [];\r\n\r\n if (!this.upgradedUrlView.getValues().finalUrl.url) {\r\n errorMessages.push(i18n.get('Ad_AppInstall_FinalUrl_Required_Validation'));\r\n }\r\n\r\n this.upgradedUrlView.ko_model.landingPageUrlErrorMessages(errorMessages);\r\n\r\n return isValid;\r\n }\r\n\r\n handleApiErrors(errors) {\r\n this.viewModel.errors.add(errors);\r\n\r\n if (!_.isEmpty(errors)) {\r\n const errorObject = _.object(this.viewModel.upgradedUrlFields, _.map(this.viewModel.upgradedUrlFields, (key) => {\r\n return this.viewModel[key].errors();\r\n }));\r\n\r\n this.upgradedUrlView.handleApiErrors(errorObject);\r\n }\r\n }\r\n\r\n clearApiErrors() {\r\n this.viewModel.errors.clear(isCampaignApiError);\r\n this.upgradedUrlView.clearApiErrors();\r\n }\r\n\r\n handleCreated() {\r\n this.logAppLookupInformation('AppInstallAd/Save');\r\n }\r\n\r\n handleCancel() {\r\n this.logAppLookupInformation('AppInstallAd/Cancel');\r\n }\r\n\r\n logAppLookupInformation(actionName) {\r\n if (actionName && this.applookupLoggingInformation) {\r\n instrumentation.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, actionName, this.applookupLoggingInformation);\r\n }\r\n }\r\n}\r\n","import ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport URI from 'urijs';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport { DynamicSearchAd, DisclaimerAdExtension } from '@bingads-webui-campaign/campaign-ui-schemas';\r\nimport dynamicTextExtension from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/dynamicTextExtension';\r\nimport koSchema from '@bingads-webui-component-legacy/ko-schema/index';\r\nimport getDomain from '@bingads-webui-campaign-legacy/crud-ad/service/getDomain';\r\nimport maxLengthExtension from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/maxLengthExtension';\r\nimport parsedTextMaxLengthExtension from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/parsedTextMaxLengthExtension';\r\nimport edmCampaign from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport jsDataCampaign from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport SharedRepository from '@bingads-webui-campaign-legacy/adextension-shared/service/repository';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nconst permissions = config.get('Permissions') || {};\r\n\r\nexport default class ViewModel {\r\n constructor({\r\n model = null,\r\n useUpgradedUrl = false,\r\n isTraditionalChinese = false,\r\n scope = null,\r\n activityLogger,\r\n } = {}) {\r\n this.upgradedUrlFields = _.compact(['TrackingUrlTemplate', 'UrlCustomParameters', 'FinalUrlSuffix']);\r\n this.activityLogger = activityLogger;\r\n this.fields = [\r\n 'Text',\r\n 'TextPart2',\r\n 'Path1',\r\n 'Path2',\r\n ...useUpgradedUrl ? this.upgradedUrlFields : [],\r\n ];\r\n this.scope = scope;\r\n\r\n const customValidation = {\r\n Path2: {\r\n isValid: (value) => {\r\n return _.isEmpty(value) || !_.isEmpty(_.result(this, 'Path1'));\r\n },\r\n message: i18n.get('ExpandedTextAd_Path1RequiredWhenUsingPath2'),\r\n },\r\n };\r\n\r\n koSchema.properties(this, DynamicSearchAd, this.fields, model, customValidation);\r\n\r\n this.domain = ko.computed(() => {\r\n let domain = _.result(model, 'DisplayUrl') || scope().campaignDomain;\r\n\r\n return getDomain(domain || '');\r\n });\r\n\r\n this.protocol = ko.computed(() => {\r\n const uri = new URI(_.result(model, 'DisplayUrl') || '');\r\n\r\n return uri.protocol() || 'https';\r\n });\r\n\r\n this.isDynamicDescriptionEnabled = ko.computed(() => {\r\n return _.result(permissions.dynamic, 'DSADynamicDescriptionPhase1', false) && scope().isDynamicDescriptionEnabled;\r\n });\r\n\r\n this.isAllowDisclaimer = ko.computed(() => {\r\n return scope().isDynamicDescriptionEnabled;\r\n });\r\n this.disclaimerInfo = ko.observable({});\r\n this.scope.subscribe((data) => {\r\n if (data.campaignId ) {\r\n this.computeDisclaimerAsync(data.campaignId);\r\n }\r\n });\r\n\r\n this.extensionsSharedRepos = new SharedRepository({\r\n schema: DisclaimerAdExtension,\r\n afterChangeComitted: _.noop,\r\n });\r\n\r\n let disclaimerCampaignId = 0;\r\n\r\n if (Number(scope().campaignId) > 0) {\r\n disclaimerCampaignId = Number(scope().campaignId);\r\n } else if (pageContext.CurrentCampaign && Number(pageContext.CurrentCampaign.Id) > 0) {\r\n disclaimerCampaignId = Number(pageContext.CurrentCampaign.Id);\r\n }\r\n\r\n if (disclaimerCampaignId > 0 ) {\r\n this.computeDisclaimerAsync(disclaimerCampaignId);\r\n }\r\n\r\n this.showDisclaimer = ko.computed(() => {\r\n if (this.disclaimerInfo().Id) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n\r\n this.adDisclaimerHint = ko.computed(() => {\r\n if (this.disclaimerInfo().Id ) {\r\n if (this.disclaimerInfo().DisclaimerLayout === 'AdditionalLine') {\r\n return i18n.getString('Disclaimer_Ad_AdditionalLine_Hint');\r\n } else if (this.disclaimerInfo().DisclaimerLayout === 'Popup') {\r\n return i18n.getString('Disclaimer_Ad_Popup_Hint');\r\n }\r\n }\r\n\r\n return '';\r\n });\r\n\r\n this.Path1.subscribe(() => {\r\n this.Path2.validate();\r\n });\r\n\r\n const lengthExtensionProperties = ['Text', 'TextPart2'];\r\n\r\n dynamicTextExtension.extend(this, lengthExtensionProperties);\r\n\r\n maxLengthExtension(DynamicSearchAd, this, isTraditionalChinese, lengthExtensionProperties);\r\n\r\n if (permissions.IsIffCountdownForDSAEnabled) {\r\n const fieldsThatUseAdCustomizers = [\r\n 'Text',\r\n 'TextPart2',\r\n 'Path1',\r\n 'Path2',\r\n ];\r\n\r\n parsedTextMaxLengthExtension.extend(this, fieldsThatUseAdCustomizers, 'DynamicSearchAd');\r\n }\r\n\r\n _.each(this.fields, (field) => {\r\n // log once per field.\r\n const logChange = _.once(() => {\r\n if (this.activityLogger) {\r\n this.activityLogger.signal(`ad field change: ${field}`, 'dynamic search ad editor');\r\n }\r\n });\r\n\r\n this[field].subscribe(() => {\r\n logChange();\r\n });\r\n });\r\n }\r\n\r\n computeDisclaimerAsync(disclaimerCampaignId) {\r\n let params = {\r\n queryParameters: {\r\n entitySet: edmCampaign.currentAccount.Campaigns,\r\n },\r\n bypassCache: true,\r\n };\r\n\r\n jsDataCampaign.Campaign.find(disclaimerCampaignId, params)\r\n .then((data) => {\r\n const hasDisclaimer = _.result(_.find(data.CampaignSettings, (setting) => {\r\n return setting['@odata.type'] === '#Model.DisclaimerSetting';\r\n }),\r\n 'DisclaimerAdsEnabled');\r\n\r\n if (hasDisclaimer) {\r\n const scope = Object.create({\r\n campaignId: disclaimerCampaignId,\r\n });\r\n\r\n this.extensionsSharedRepos.association.findAll({\r\n where: scope,\r\n }).then((disclaimerdata) => {\r\n\r\n if (disclaimerdata && disclaimerdata.length > 0) {\r\n this.disclaimerInfo(disclaimerdata[0]);\r\n }\r\n });\r\n }\r\n });\r\n // TODO : catch and finally\r\n }\r\n}\r\n","/*eslint new-cap:0 */\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport URI from 'urijs';\r\nimport { evaluateAdCustomizers as newEvaluateAdCustomizers } from '@bingads-webui-campaign/ad-customizers';\r\nimport { evaluateAdCustomizers as legacyEvaluateAdCustomizers } from '@bingads-webui-campaign-legacy/crud-ad/service/adCustomizersUtils';\r\nimport instrumentation from '@bingads-webui-campaign-legacy/instrumentation/index';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport edmCampaign from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport jsDataCampaign from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport { i18nDummy } from '@bingads-webui-campaign-legacy/crud-ad/service/utils/i18n-dummy-vnext';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\nconst i18nAdCustomizers = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/ad-customizers');\r\n\r\nconst permissions = config.get('Permissions') || {};\r\n\r\nconst {\r\n IsNewAdsAdCustomizerEditorEnabled,\r\n IsIfFunctionMilestone1Enabled,\r\n} = permissions;\r\n\r\nconst withNewAdCustomizerEditor = IsNewAdsAdCustomizerEditorEnabled ||\r\n IsIfFunctionMilestone1Enabled;\r\n\r\nconst evaluateAdCustomizers = (text) => {\r\n if (withNewAdCustomizerEditor) {\r\n return newEvaluateAdCustomizers({\r\n text,\r\n deps: {\r\n config,\r\n i18n: i18nAdCustomizers,\r\n countdownI18nDummy: i18nDummy,\r\n instrumentation,\r\n jsDataCampaign,\r\n edmCampaign,\r\n },\r\n adType: 'DynamicSearchAd',\r\n });\r\n }\r\n return legacyEvaluateAdCustomizers(text);\r\n};\r\n\r\nconst combineText = (textPart1, textPart2) => {\r\n if (!textPart1 && !textPart2) {\r\n return '';\r\n } else if (_.isEmpty(textPart2)) {\r\n return textPart1;\r\n } else if (_.isEmpty(textPart1)) {\r\n return textPart2;\r\n }\r\n\r\n // If text1 does not end with any of separators [. ? !], use a period and space between text1 and text2 while stitching.\r\n // If text1 ends with one of those separators, use only a space.\r\n if ('.?!'.indexOf(textPart1.slice(-1)) > -1) {\r\n return `${textPart1} ${textPart2}`;\r\n } else {\r\n return `${textPart1}. ${textPart2}`;\r\n }\r\n};\r\n\r\nexport default class {\r\n constructor(adViewModel, placeholders) {\r\n // this.Text = ko.computed(() => {\r\n // return adViewModel.Text() || placeholders.Text;\r\n // });\r\n const self = this;\r\n const fields = ['Text', 'TextPart2'];\r\n\r\n _.each(fields, (fieldName) => {\r\n self.createField(`Parsed${fieldName}`, adViewModel[fieldName]);\r\n });\r\n\r\n this.Text = ko.computed(() => {\r\n const textPart1 = self.ParsedText();\r\n\r\n // All space is not allowed\r\n const textPart2 = self.ParsedTextPart2() !== null && self.ParsedTextPart2().trim() === '' ? '' : self.ParsedTextPart2();\r\n\r\n if (_.isEmpty(textPart1) && _.isEmpty(textPart2)) {\r\n return placeholders.Text;\r\n }\r\n return combineText(textPart1, textPart2);\r\n });\r\n\r\n this.Title = ko.observable(`{${i18n.get('Ad_DSA_Title')}}`);\r\n\r\n let combinedUrl = ko.computed(() => {\r\n let result = adViewModel.domain();\r\n\r\n let addPath = (path) => {\r\n if (!_.isEmpty(path)) {\r\n result += `/${path}`;\r\n }\r\n };\r\n\r\n addPath(adViewModel.Path1());\r\n addPath(adViewModel.Path2());\r\n\r\n return result;\r\n });\r\n\r\n this.DisplayUrl = combinedUrl;\r\n this.DestinationUrl = ko.computed(() => {\r\n let protocol = adViewModel.protocol();\r\n let uri = new URI(combinedUrl());\r\n\r\n return uri.protocol(protocol).toString();\r\n });\r\n this.DisclaimerLineText = ko.computed(() => {\r\n return adViewModel.disclaimerInfo().LineText || '';\r\n });\r\n\r\n this.ShowDisclaimer = ko.computed(() => {\r\n return true;\r\n });\r\n\r\n this.IsDisclaimerPopupHintVisible = ko.observable(false);\r\n\r\n this.DisclaimerFinalUrl = ko.computed(() => {\r\n if (self.ShowDisclaimer() && _.size(adViewModel.disclaimerInfo().FinalUrls)) {\r\n return adViewModel.disclaimerInfo().FinalUrls[0];\r\n }\r\n\r\n return '';\r\n });\r\n\r\n this.IsAdditionalLineLayout = ko.computed(() => {\r\n if (self.ShowDisclaimer() && adViewModel.disclaimerInfo().DisclaimerLayout === 'AdditionalLine') {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n\r\n this.IsPopupLayout = ko.computed(() => {\r\n if (self.ShowDisclaimer() && adViewModel.disclaimerInfo().DisclaimerLayout === 'Popup') {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n\r\n this.DisclaimerPopHint = ko.computed(() => {\r\n if (self.ShowDisclaimer() && adViewModel.disclaimerInfo().DisclaimerLayout === 'Popup') {\r\n return adViewModel.disclaimerInfo().Title;\r\n }\r\n\r\n return '';\r\n });\r\n\r\n this.DisclaimerPopupText = ko.computed(() => {\r\n if (self.ShowDisclaimer() && adViewModel.disclaimerInfo().DisclaimerLayout === 'Popup') {\r\n return adViewModel.disclaimerInfo().PopupText;\r\n }\r\n\r\n return '';\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Adds a property to this that holds parsed value of passed dependency\r\n * @param {string} fieldName - new property's name\r\n * @param {Object} dependency - observable that contains the raw value to be parsed for preview\r\n * @returns {undefined}\r\n */\r\n createField(fieldName, dependency) {\r\n const self = this;\r\n\r\n this[fieldName] = ko.observable('');\r\n evaluateAdCustomizers(dependency()).then((value) => {\r\n self[fieldName](value);\r\n });\r\n\r\n // We cannot directly use computedObservables because evaluateAdCustomizers is async\r\n dependency.subscribe(() => {\r\n evaluateAdCustomizers(dependency()).then((value) => {\r\n self[fieldName](value);\r\n });\r\n });\r\n }\r\n}\r\n","import PreviewContainer from '@bingads-webui-campaign-legacy/crud-ad/view/adsPreview/container';\r\nimport topTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adsPreview/top.pug';\r\nimport sidebarTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adsPreview/sidebar.pug';\r\nimport mobileTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adsPreview/mobile.pug';\r\nimport PreviewViewModel from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsPreview/dynamicSearchAd';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nexport default function buildPreview(adViewModel, placeholders) {\r\n let viewModel = new PreviewViewModel(adViewModel, placeholders);\r\n let adType = 'DynamicSearchAd';\r\n\r\n return new PreviewContainer({\r\n tabs: [{\r\n top: {\r\n template: topTemplate,\r\n viewModel,\r\n title: i18n.get('Ad_TopView'),\r\n adType,\r\n },\r\n sidebar: {\r\n template: sidebarTemplate,\r\n viewModel,\r\n title: i18n.get('Ad_SideView'),\r\n adType,\r\n },\r\n mobile: {\r\n template: mobileTemplate,\r\n viewModel,\r\n title: i18n.get('Ad_MobileView'),\r\n adType,\r\n },\r\n }],\r\n });\r\n}\r\n","import Backbone from 'backbone';\r\nimport $ from 'jquery';\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport adCustomizersPickerTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adsEditor/adCustomizersPicker.pug';\r\n\r\nclass AdCustomizersPicker extends Backbone.View {\r\n initialize({\r\n target,\r\n options}) {\r\n\r\n this.target = target;\r\n this.items = ko.observableArray();\r\n this.populate(options);\r\n\r\n return this;\r\n }\r\n\r\n render() {\r\n let $target = $(this.target);\r\n let position = $target.offset();\r\n\r\n position.top = position.top + $target.outerHeight();\r\n\r\n this.$el.html(adCustomizersPickerTemplate({\r\n items: this.items,\r\n position,\r\n }));\r\n\r\n // Clicking on elements having this class won't hide currently visible helper\r\n this.$el.addClass('ac-helper-area open');\r\n\r\n ko.applyBindings({ items: this.items }, this.el);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Populates the picker\r\n * @param {object} options - contains item models and text replacement properties\r\n * @returns {undefined}\r\n */\r\n populate(options) {\r\n let target = this.target;\r\n\r\n // Clicking on a picker item will replace a portion of the text in the attached text field\r\n _.each(options.items, (item) => {\r\n item.action = () => {\r\n let beginning = target.value.substring(0, options.startIndex);\r\n let end = target.value.substring(options.endIndex);\r\n\r\n options.updateAction(beginning + item.insert + end);\r\n let cursorPosition = beginning.length + item.cursorPosition;\r\n\r\n target.setSelectionRange(cursorPosition, cursorPosition);\r\n target.isSelectedByUser = true;\r\n // focus itself will trigger the selection event\r\n target.focus();\r\n //target.click();\r\n\r\n hide(); // eslint-disable-line no-use-before-define\r\n };\r\n });\r\n\r\n this.items(options.items);\r\n this.activateItemAt(undefined);\r\n }\r\n\r\n /**\r\n * Highlights item at given index\r\n * @param {integer} index - item index\r\n * @returns {undefined}\r\n */\r\n activateItemAt(index) {\r\n if (this.activeItemIndex !== undefined) {\r\n this.$el.find(`li:eq(${this.activeItemIndex})`).removeClass('active');\r\n }\r\n\r\n this.activeItemIndex = index;\r\n\r\n if (this.activeItemIndex !== undefined) {\r\n this.$el.find(`li:eq(${this.activeItemIndex})`).addClass('active');\r\n }\r\n }\r\n\r\n /**\r\n * Highlights the item above currently highlighted one. If none highlighted or first item is highlighted, highlights the last item.\r\n * @returns {undefined}\r\n */\r\n activatePrevItem() {\r\n if (this.activeItemIndex === undefined) {\r\n this.activateItemAt(this.items().length - 1);\r\n } else {\r\n this.activateItemAt((this.items().length + this.activeItemIndex - 1) % this.items().length);\r\n }\r\n }\r\n\r\n /**\r\n * Highlights the item below currently highlighted one. If none highlighted or last item is highlighted, highlights the first item.\r\n * @returns {undefined}\r\n */\r\n activateNextItem() {\r\n if (this.activeItemIndex === undefined) {\r\n this.activateItemAt(0);\r\n } else {\r\n this.activateItemAt((this.activeItemIndex + 1) % this.items().length);\r\n }\r\n }\r\n\r\n /**\r\n * Executes action for currently selected item.\r\n * @returns {undefined}\r\n */\r\n pickActiveItem() {\r\n if (this.activeItemIndex !== undefined) {\r\n this.items()[this.activeItemIndex].action();\r\n }\r\n }\r\n}\r\n\r\n/*\r\n * Picker instance (used by hide() and show() to update, register/deregister events and change visibility)\r\n */\r\nlet picker = null;\r\n\r\n/**\r\n * Hides picker when user clicks outside of ad customizer helper areas\r\n * @param {object} event - click event\r\n * @returns {undefined}\r\n */\r\nfunction clickedAway(event) {\r\n let target = $(event.target);\r\n\r\n if (target.closest('.ac-helper-area').length === 0) {\r\n hide(); // eslint-disable-line no-use-before-define\r\n }\r\n}\r\n\r\n/**\r\n * Handles key down events.\r\n * Either prevents default event from happening to keep current cursor position\r\n * or hides the picker.\r\n * @param {object} event - click event\r\n * @returns {undefined}\r\n */\r\nfunction keydown(event) {\r\n switch (event.key) {\r\n case 'ArrowDown':\r\n case 'ArrowUp':\r\n case 'Enter':\r\n event.preventDefault();\r\n break;\r\n case 'Escape':\r\n hide(); // eslint-disable-line no-use-before-define\r\n break;\r\n default:\r\n break;\r\n }\r\n}\r\n\r\n/**\r\n * Handles key down events.\r\n * Either updates picker selection or executes selected item's action.\r\n * @param {object} event - click event\r\n * @returns {undefined}\r\n */\r\nfunction keyup(event) {\r\n switch (event.key) {\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n event.data.picker.activateNextItem();\r\n break;\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n event.data.picker.activatePrevItem();\r\n break;\r\n case 'Enter':\r\n event.preventDefault();\r\n event.data.picker.pickActiveItem();\r\n break;\r\n default:\r\n break;\r\n }\r\n}\r\n\r\n/**\r\n * Hides picker and deregisters key and click events.\r\n * @returns {undefined}\r\n */\r\nexport function hide() {\r\n if (picker) {\r\n $(picker.target).off('keyup', keyup);\r\n $(picker.target).off('keydown', keydown);\r\n $(window).off('click', clickedAway);\r\n picker.remove();\r\n picker = null;\r\n }\r\n}\r\n\r\n/**\r\n * Shows picker and registers for events.\r\n * @param {object} target - element the picker will be attached to.\r\n * @param {object} options - picker item models and cursor position info\r\n * @param {string} key - name of the key that triggered this call\r\n * @returns {undefined}\r\n */\r\nexport function show(target, options, key) {\r\n // Update instead of re-render if target hasn't changed\r\n if (picker && picker.target === target) {\r\n // Ignore if keys are used to navigate picker items or select an item\r\n if (key === undefined || _.indexOf(['ArrowDown', 'ArrowUp', 'Enter'], key) === -1) {\r\n picker.populate(options);\r\n }\r\n return;\r\n }\r\n\r\n hide();\r\n\r\n picker = new AdCustomizersPicker({ target, options });\r\n $('body').append(picker.render().el);\r\n $(window).on('click', clickedAway);\r\n $(target).on('keydown', keydown);\r\n $(target).on('keyup', { picker }, keyup);\r\n}\r\n\r\n/**\r\n * Checks whether ad customizer picker is visible\r\n * @returns {bool} true if visible\r\n */\r\nexport function isVisible() {\r\n return picker !== null;\r\n}\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport editorTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adsEditor/adCustomizersCountdownEditor.pug';\r\nimport editorTemplateWithAdCustomizer from '@bingads-webui-campaign-legacy/crud-ad/template/adsEditor/editorTemplateWithAdCustomizer.pug';\r\nimport { getSupportedLanguages, getLanguageCode } from '@bingads-webui-campaign/ad-customizers';\r\nimport Backbone from 'backbone';\r\nimport SimpleForm from '@bingads-webui-component-legacy/form/view/simple-form';\r\nimport kendo from '@bingads-webui/kendo/kendo.datepicker';\r\nimport datePickerTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adsEditor/adCustomizersCountdownDatePicker.pug';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport timeZoneMapper from '@bingads-webui-component-legacy/timezonemapper/index';\r\n\r\nconst i18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/ad-customizers');\r\nconst i18nAdCustomizers = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/ad-customizers');\r\n\r\n/**\r\n * Date picker view that is specialized for countdown editor\r\n */\r\nclass DatePicker extends Backbone.View {\r\n initialize( {observable} ) {\r\n this.observable = observable;\r\n }\r\n\r\n render() {\r\n this.$el.html(datePickerTemplate());\r\n let parameters = {\r\n culture: config.get('culture') || 'en-US',\r\n format: 'yyyy/MM/dd',\r\n min: new Date(),\r\n animation: false,\r\n footer: false,\r\n value: this.observable(),\r\n };\r\n\r\n let elementDatePicker = this.$('#countdowndatepicker');\r\n\r\n elementDatePicker.kendoDatePicker(parameters);\r\n\r\n let datePicker = elementDatePicker.data('kendoDatePicker');\r\n\r\n elementDatePicker.click(() => {\r\n datePicker.open();\r\n });\r\n\r\n datePicker.bind('change', () => {\r\n let value = kendo.toString(datePicker.value(), parameters.format);\r\n\r\n this.observable(value);\r\n });\r\n\r\n elementDatePicker.addClass('form-control');\r\n\r\n return this;\r\n }\r\n}\r\n\r\n/**\r\n * Countdown editor form schema\r\n */\r\nconst schema = {\r\n name: 'Countdown',\r\n type: 'object',\r\n properties: {\r\n date: {\r\n type: 'string',\r\n pattern: '^[0-9]{4}/([1-9]|0[1-9]|1[0-2])/([1-9]|0[1-9]|[1-2][0-9]|3[0-1])$',\r\n },\r\n time: {\r\n type: 'string',\r\n pattern: '^(?:((?:[0-1][0-9]|2[0-3]):(?:[0-5][0-9]):(?:[0-5][0-9]))|)$',\r\n },\r\n days: {\r\n type: 'integer',\r\n minimum: 1,\r\n maximum: 999,\r\n },\r\n isGlobal: {\r\n type: 'boolean',\r\n },\r\n language: {\r\n type: 'string',\r\n enum: getSupportedLanguages(i18nAdCustomizers, config),\r\n },\r\n },\r\n required: ['date', 'days', 'language'],\r\n};\r\n\r\n/**\r\n * Countdown editor form fields\r\n */\r\nconst fields = [\r\n {\r\n property: 'date',\r\n placeholder: 'yyyy/MM/dd',\r\n label: i18n.getString('CountdownEditor_CountdownEnds_Label'),\r\n control: DatePicker,\r\n validators: {\r\n pattern: {\r\n message: i18n.getString('CountdownEditor_CountdownEnds_PatternValidationMessage'),\r\n },\r\n required: {\r\n message: i18n.getString('CountdownEditor_CountdownEnds_RequiredValidationMessage'),\r\n },\r\n },\r\n },\r\n {\r\n property: 'time',\r\n placeholder: 'HH:mm:ss',\r\n label: i18n.getString('CountdownEditor_CountdownEndsTime_Label'),\r\n showLabel: false,\r\n validators: {\r\n pattern: {\r\n message: i18n.getString('CountdownEditor_CountdownEndsTime_PatternValidationMessage'),\r\n },\r\n },\r\n },\r\n {\r\n property: 'days',\r\n label: i18n.getString('CountdownEditor_CountdownStarts_Label'),\r\n validators: {\r\n type: {\r\n message: i18n.getString('CountdownEditor_CountdownStarts_TypeValidationMessage'),\r\n },\r\n range: {\r\n message: i18n.getString('CountdownEditor_CountdownStarts_RangeValidationMessage'),\r\n },\r\n required: {\r\n message: i18n.getString('CountdownEditor_CountdownStarts_RequiredValidationMessage'),\r\n },\r\n },\r\n },\r\n {\r\n property: 'isGlobal',\r\n control: 'radios',\r\n valueMessages: {\r\n true: `${i18n.getString('CountdownEditor_AccountTimeZone_Label')} ${timeZoneMapper.getTimeZoneText(config.get('AccountTimeZone'))}`,\r\n false: i18n.getString('CountdownEditor_AdViewersTimeZone_Label'),\r\n },\r\n label: i18n.getString('CountdownEditor_TimeZone_Label'),\r\n },\r\n {\r\n property: 'language',\r\n label: i18n.getString('CountdownEditor_Language_Label'),\r\n },\r\n];\r\n\r\n/**\r\n * Wraps template function to use localization and syntax info\r\n * @param {function} template - editor template function\r\n * @param {string} syntax - text for header of the editor where we display valid syntax\r\n * @returns {function} template function\r\n */\r\nfunction prepareTemplate(template, syntax) {\r\n return _.wrap(template, (func, params) => func(_.defaults(params, {i18n, syntax})));\r\n}\r\n\r\n/**\r\n * Creates a string that contains a countdown definition\r\n * @param {string} prefix - text to be concatenated in front of countdown definition (optional)\r\n * @param {string} type - countdown type\r\n * @param {string} date - countdown end date (optional, defaults to 'yyyy/MM/dd')\r\n * @param {string} time - countdown end time (optional, defaults to 'HH:mm:ss')\r\n * @param {string} language - countdown language\r\n * @param {string} days - duration of countdown in days\r\n * @param {string} suffix - text to be concatenated at the end of countdown definition (optional)\r\n * @returns {string} formatted string\r\n */\r\nfunction formatCountdown(prefix, type, date, time, language, days, suffix) {\r\n let ret = '{prefix}{={type}(\"{date} {time}\", \"{language}\", {days})}{suffix}';\r\n\r\n ret = ret.replace('{prefix}', prefix ? prefix : '');\r\n ret = ret.replace('{type}', type);\r\n ret = ret.replace('{date}', date ? date : 'yyyy/MM/dd');\r\n ret = ret.replace('{time}', time ? time : 'HH:mm:ss');\r\n ret = ret.replace('{language}', language);\r\n ret = ret.replace('{days}', days);\r\n ret = ret.replace('{suffix}', suffix ? suffix : '');\r\n\r\n return ret;\r\n}\r\n\r\n/**\r\n * Countdown editor view\r\n */\r\nclass CountdownEditor extends Backbone.View {\r\n initialize({\r\n target,\r\n options}) {\r\n\r\n this.target = target;\r\n\r\n const model = {\r\n date: options.date,\r\n time: options.time,\r\n days: options.days,\r\n isGlobal: options.type === 'global_countdown',\r\n language: options.language.displayName,\r\n };\r\n\r\n this.includeAdCustomizerFeed = options.includeAdCustomizerFeed;\r\n\r\n this.syntax = formatCountdown(\r\n `${i18n.getString('AdCustomizers_Editor_Syntax_Prefix_Label')} `,\r\n options.type,\r\n null,\r\n null,\r\n i18n.getString('CountdownEditor_Syntax_Language_Label'),\r\n i18n.getString('CountdownEditor_Syntax_DaysBefore_Label'),\r\n null);\r\n\r\n if (!this.includeAdCustomizerFeed) {\r\n this.form = new SimpleForm({\r\n schema,\r\n fields,\r\n model,\r\n template: prepareTemplate(editorTemplate, this.syntax),\r\n saveButtonText: i18n.getString('AdCustomizers_Editor_Set_Button'),\r\n });\r\n\r\n this.form.on('save', (newModel) => {\r\n let prefix = target.value.substring(0, options.startIndex);\r\n let suffix = target.value.substring(options.endIndex);\r\n\r\n let newValue = formatCountdown(\r\n prefix,\r\n newModel.isGlobal ? 'global_countdown' : 'countdown',\r\n newModel.date,\r\n newModel.time.length === 0 ? '00:00:00' : newModel.time,\r\n getLanguageCode(newModel.language, i18nAdCustomizers, config),\r\n newModel.days,\r\n suffix);\r\n\r\n let cursorPosition = newValue.length - suffix.length;\r\n\r\n options.updateAction(newValue);\r\n target.setSelectionRange(cursorPosition, cursorPosition);\r\n target.focus();\r\n\r\n hide(); // eslint-disable-line no-use-before-define\r\n });\r\n\r\n this.form.on('cancel', () => hide()); // eslint-disable-line no-use-before-define\r\n }\r\n this.$el.attr('role', 'dialog');\r\n\r\n return this;\r\n }\r\n\r\n render() {\r\n let $target = $(this.target);\r\n let position = $target.offset();\r\n\r\n position.top = position.top + $target.outerHeight();\r\n\r\n this.$el.css({\r\n position: 'absolute',\r\n visibility: 'visible',\r\n left: position.left,\r\n top: position.top,\r\n });\r\n\r\n if (this.includeAdCustomizerFeed) {\r\n this.$el.html(editorTemplateWithAdCustomizer({syntax: this.syntax, i18n}));\r\n } else {\r\n this.$el.append(this.form.render().el);\r\n }\r\n\r\n // Clicking on elements having 'ac-helper-area' class won't hide currently visible helper\r\n this.$el.addClass('ac-helper-area adCustomizersEditor');\r\n\r\n return this;\r\n }\r\n}\r\n\r\n/*\r\n * Editor instance (used by hide() and show() to update, register/deregister events and change visibility)\r\n */\r\nlet editor = null;\r\n\r\n/**\r\n * Hides countdown editor when user clicks outside of ad customizer helper areas and date picker areas\r\n * @param {object} event - click event\r\n * @returns {undefined}\r\n */\r\nfunction clickedAway(event) {\r\n let target = $(event.target);\r\n\r\n if (target.closest('.ac-helper-area').length === 0 &&\r\n target.closest('#countdowndatepicker_dateview').length === 0 &&\r\n target.closest('.k-calendar-container').length === 0 &&\r\n target.closest('.k-content').length === 0) {\r\n hide(); // eslint-disable-line no-use-before-define\r\n }\r\n}\r\n\r\n/**\r\n * Handles key down events.\r\n * Hides editor when user hits escape.\r\n * @param {object} event - click event\r\n * @returns {undefined}\r\n */\r\nfunction keydown(event) {\r\n switch (event.key) {\r\n case 'Escape':\r\n hide(); // eslint-disable-line no-use-before-define\r\n break;\r\n default:\r\n break;\r\n }\r\n}\r\n\r\n/**\r\n * Hides countdown editor and deregisters clickaway event.\r\n * @returns {undefined}\r\n */\r\nexport function hide() {\r\n if (editor) {\r\n $(editor.target).off('keydown', keydown);\r\n $(window).off('click', clickedAway);\r\n editor.remove();\r\n editor = null;\r\n }\r\n}\r\n\r\n/**\r\n * Shows countdown editor and registers to global click events.\r\n * @param {object} target - element the editor will be attached to.\r\n * @param {object} options - editor model and cursor position info.\r\n * @returns {undefined}\r\n */\r\nexport function show(target, options) {\r\n hide();\r\n\r\n editor = new CountdownEditor({ target, options });\r\n $('body').append(editor.render().el);\r\n $(window).on('click', clickedAway);\r\n $(target).on('keydown', keydown);\r\n}\r\n\r\n/**\r\n * Checks whether countdown editor is visible\r\n * @returns {bool} true if visible\r\n */\r\nexport function isVisible() {\r\n return editor !== null;\r\n}\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { withLastPromise } from '@bingads-webui-universal/primitive-utilities';\r\nimport Backbone from 'backbone';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { FeedAndAttributeSelectorView } from '@bingads-webui-campaign-react/feed-and-attribute-selector';\r\nimport { queryFeedsByName, cloneFeed, pickerCountdownInsert, keysForCountDown } from '../../service/utils/index';\r\n\r\nconst i18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/ad-customizers');\r\n\r\n// todo: merge the picker logic with feedsEditor here\r\n\r\nconst COUNTDOWN_ID = -1;\r\n\r\n/**\r\n * Feeds editor view\r\n */\r\nclass FeedsEditorView extends Backbone.View {\r\n initialize({\r\n target,\r\n options,\r\n remainingCountCallBack }) {\r\n\r\n this.target = target;\r\n this.showSyntax = true;\r\n this.remainingCountCallBack = remainingCountCallBack;\r\n this.fetchDataAndShow = withLastPromise({\r\n promiseFactory: queryFeedsByName,\r\n finish: (result) => {\r\n this.feeds = result;\r\n\r\n this.render();\r\n },\r\n });\r\n this.onSelectionUpdated(options);\r\n }\r\n\r\n onSelectionUpdated(options, remainingCountCallBack) {\r\n if (remainingCountCallBack) {\r\n this.remainingCountCallBack = remainingCountCallBack;\r\n }\r\n\r\n this.options = options || {};\r\n const { feed, attribute, feeds, specificFeedName, defaultText, isItemSelected, specificAttributeName } = options;\r\n\r\n if (this.specificFeedName === specificFeedName &&\r\n this.specificAttributeName === specificAttributeName &&\r\n this.selectedFeedName === feed &&\r\n this.selectedAttributeName === attribute &&\r\n this.defaultText === defaultText ) {\r\n return;\r\n }\r\n\r\n // whether user has specified feed name\r\n this.specificFeedName = specificFeedName;\r\n this.specificAttributeName = specificAttributeName;\r\n\r\n this.defaultText = defaultText;\r\n this.isItemSelected = isItemSelected;\r\n this.selectedFeedName = feed;\r\n this.selectedAttributeName = attribute;\r\n\r\n this.feeds = feeds || [];\r\n\r\n if (_.isEmpty(this.feeds)) {\r\n this.fetchDataAndShowToken = this.fetchDataAndShow(feed, this.el);\r\n } else {\r\n this.render();\r\n }\r\n }\r\n\r\n formatAdCustomizerFeed(prefix, suffix) {\r\n const escapeFeedName = (value) => {\r\n return value ? value.replace(/\\./g, '\\\\.') : '';\r\n };\r\n const escapeAttrbuteName = (value) => {\r\n return value ? value.replace(/:/g, '\\\\:') : '';\r\n };\r\n\r\n const selectedAttributeNamePart = this.selectedAttributeName ? `.${escapeAttrbuteName(this.selectedAttributeName)}` : '';\r\n const defaultTextSelectedPart = this.defaultText && this.defaultText.length > 0 ? `:${this.defaultText.trim()}` : '';\r\n\r\n return `${prefix}{=${escapeFeedName(this.selectedFeedName)}${selectedAttributeNamePart}${defaultTextSelectedPart}}${suffix}`;\r\n }\r\n\r\n getSelectedFeed() {\r\n let feed = null;\r\n\r\n if (this.specificFeedName) {\r\n const feedName = this.selectedFeedName.toLowerCase();\r\n\r\n if (!_.isEmpty(this.feeds) && !_.isEmpty(feedName)) {\r\n // filter feeds by name\r\n const feeds = _.filter(this.feeds, (fe) => {\r\n return fe.Name.toLowerCase() === feedName;\r\n });\r\n\r\n if (!_.isEmpty(feeds)) {\r\n // generate a new feed, without interfering original data\r\n feed = cloneFeed(feeds[0]);\r\n }\r\n // update the feed attribute names based on user input\r\n // and make selectedAttribute name null when nothing matched\r\n if (feed && this.selectedAttributeName) {\r\n const attributeName = this.selectedAttributeName.toLowerCase();\r\n\r\n feed.AttributeNames = _.filter(feed.AttributeNames, (attribute) => {\r\n return attribute.toLowerCase().indexOf(attributeName) === 0;\r\n });\r\n\r\n if (!this.specificAttributeName &&\r\n ((_.isEmpty(feed.AttributeNames) ||\r\n feed.AttributeNames.length > 1 ||\r\n feed.AttributeNames[0].toLowerCase() !== attributeName))\r\n ) {\r\n this.selectedAttributeName = '';\r\n }\r\n }\r\n }\r\n }\r\n return feed;\r\n }\r\n\r\n updateTargetOnUserSelectionUpdate(userSelection, event) {\r\n let prefix = this.target.value.substring(0, this.options.startIndex);\r\n let endPart = this.target.value.substring(this.options.startIndex);\r\n let endPos = endPart.indexOf('}');\r\n let suffix = endPos > 0 ? endPart.substring(endPos + 1) : '';\r\n let newValue = '';\r\n let cursorPosition = 2;\r\n\r\n // when user select countdown\r\n if (userSelection.Id === COUNTDOWN_ID) {\r\n newValue = `${prefix}${pickerCountdownInsert}${suffix}`;\r\n cursorPosition = this.options.startIndex + 2;\r\n } else {\r\n const { selectedFeedName, selectedAttributeName, defaultText } = userSelection;\r\n\r\n this.selectedFeedName = selectedFeedName;\r\n this.selectedAttributeName = selectedAttributeName;\r\n this.defaultText = defaultText;\r\n\r\n newValue = this.formatAdCustomizerFeed(prefix, suffix);\r\n cursorPosition = newValue.length - suffix.length;\r\n }\r\n\r\n this.options.updateAction(newValue);\r\n this.target.setSelectionRange(cursorPosition, cursorPosition);\r\n\r\n // when user select countdown, update target value, trigger ('click')\r\n //\r\n if (userSelection.Id === COUNTDOWN_ID) {\r\n // eslint-disable-next-line no-use-before-define\r\n hide();\r\n this.target.focus();\r\n $(this.target).trigger('click');\r\n\r\n // so that other events for the feedsEditor will be stopped (such as clickAway)\r\n event.stopPropagation();\r\n return false;\r\n }\r\n\r\n this.specificFeedName = true;\r\n\r\n // when there is no syntax perviously, we need to redraw the editor\r\n if (!this.showSyntax) {\r\n this.showSyntax = true;\r\n this.render();\r\n return true;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n onFeedAttributeSelected(userSelection, event) {\r\n if (this.updateTargetOnUserSelectionUpdate(userSelection, event)) {\r\n this.target.focus();\r\n hide(); // eslint-disable-line no-use-before-define\r\n }\r\n }\r\n\r\n getFeedsToRender() {\r\n const shouldIncludeCountDownRule = !this.isItemSelected &&\r\n (!this.selectedFeedName || _.any(keysForCountDown, (ck) => {\r\n // after {=\r\n return ck.substring(2).indexOf(this.selectedFeedName.toLowerCase()) === 0;\r\n }));\r\n\r\n if (shouldIncludeCountDownRule) {\r\n this.feeds.unshift({\r\n Name: i18n.getString('Picker_Countdown_Label'),\r\n Description: i18n.getString('Picker_Countdown_Description'),\r\n Id: COUNTDOWN_ID,\r\n });\r\n }\r\n\r\n this.showSyntax = !shouldIncludeCountDownRule;\r\n\r\n return this.feeds;\r\n }\r\n\r\n render() {\r\n let $target = $(this.target);\r\n let position = $target.offset();\r\n\r\n position.top = position.top + $target.outerHeight();\r\n\r\n this.$el.css({\r\n position: 'absolute',\r\n visibility: 'visible',\r\n left: position.left,\r\n top: position.top,\r\n });\r\n\r\n // Clicking on elements having 'ac-helper-area' class won't hide currently visible helper\r\n this.$el.addClass('ac-helper-area adCustomizersEditor feeds-editor');\r\n const options = {\r\n feeds: this.getFeedsToRender(),\r\n selectedFeed: this.getSelectedFeed(),\r\n defaultText: this.defaultText,\r\n selectedAttribute: this.selectedAttributeName,\r\n showSyntax: this.showSyntax,\r\n onUserActionCompleted: (result, event) => {\r\n this.onFeedAttributeSelected(result, event);\r\n },\r\n onUserSelectionUpdated: (result, event) => {\r\n this.updateTargetOnUserSelectionUpdate(result, event);\r\n },\r\n i18n,\r\n };\r\n\r\n // total max length for default\r\n if (this.remainingCountCallBack) {\r\n options.maxLength = this.remainingCountCallBack() +\r\n (this.defaultText ? this.defaultText.length : 1);\r\n }\r\n\r\n ReactDOM.render(React.createElement(FeedAndAttributeSelectorView, options), this.el);\r\n return this;\r\n }\r\n\r\n remove() {\r\n if (this.fetchDataAndShowToken) {\r\n this.fetchDataAndShowToken.cancel();\r\n this.fetchDataAndShowToken = null;\r\n }\r\n\r\n return super.remove();\r\n }\r\n}\r\n\r\n/*\r\n * Editor instance (used by hide() and show() to update, register/deregister events and change visibility)\r\n */\r\nlet editor = null;\r\n\r\nfunction clickedAway(event) {\r\n let target = $(event.target);\r\n\r\n if (target.closest('.ac-helper-area').length === 0 &&\r\n target.closest('.feed-and-attribute-selector').length === 0 &&\r\n target.closest('.feed-selector').length === 0 &&\r\n target.closest('.feed-attribute-selector').length === 0) {\r\n hide(); // eslint-disable-line no-use-before-define\r\n }\r\n}\r\n\r\n/**\r\n * Checks whether feeds editor is visible\r\n * @returns {bool} true if visible\r\n */\r\nexport function isVisible() {\r\n return editor !== null;\r\n}\r\n\r\n/**\r\n * Handles key down events.\r\n * Hides editor when user hits escape.\r\n * @param {object} event - click event\r\n * @returns {undefined}\r\n */\r\nfunction keydown(event) {\r\n switch (event.key) {\r\n case 'Escape':\r\n hide(); // eslint-disable-line no-use-before-define\r\n break;\r\n default:\r\n break;\r\n }\r\n}\r\n\r\n/**\r\n * Hides feeds editor and deregisters clickaway event.\r\n * @returns {undefined}\r\n */\r\nexport function hide() {\r\n if (editor) {\r\n $(editor.target).off('keydown', keydown);\r\n $(window).off('click', clickedAway);\r\n editor.remove();\r\n editor = null;\r\n }\r\n}\r\n\r\n/**\r\n * Shows feeds editor and registers to global click events.\r\n * @param {object} target - element the editor will be attached to.\r\n * @param {object} options - editor model and cursor position info.\r\n * @param {function} remainingCountCallBack - callback function used to get the remainingcount\r\n * @returns {undefined}\r\n\r\n */\r\nexport function show(target, options, remainingCountCallBack) {\r\n // if already showing editor, update it\r\n if (isVisible()) {\r\n editor.onSelectionUpdated(options, remainingCountCallBack);\r\n return;\r\n }\r\n hide();\r\n\r\n editor = new FeedsEditorView({ target, options, remainingCountCallBack });\r\n\r\n $('body').append(editor.render().el);\r\n $(window).on('click', clickedAway);\r\n $(target).on('keydown', keydown);\r\n}\r\n","import _ from 'underscore';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport { attachAdCustomizersHelpers as newAttachAdCustomizersHelpers } from '@bingads-webui-campaign/ad-customizers';\r\n\r\nimport { i18nDummy } from '@bingads-webui-campaign-legacy/crud-ad/service/utils/i18n-dummy-vnext';\r\nimport instrumentation from '@bingads-webui-campaign-legacy/instrumentation/index';\r\nimport edmCampaign from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport jsDataCampaign from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport { getHelperProperties } from '@bingads-webui-campaign-legacy/crud-ad/service/adCustomizersUtils';\r\nimport { show as showAdCustomizersPicker, hide as hideAdCustomizersPicker, isVisible as isAdCustomizersPickerVisible } from '@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/adCustomizersPicker';\r\nimport { show as showCountdownEditor, hide as hideCountdownEditor, isVisible as isCountdownEditorVisible } from '@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/adCustomizersCountdownEditor';\r\nimport { show as showFeedEditor, hide as hideFeedEditor, isVisible as isFeedEditorVisible } from '@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/feedsEditor';\r\nimport { showKeywordEditor, hideKeywordEditor, isKeywordEditorVisible } from '@bingads-webui-campaign/adcustomizers';\r\nimport { ADCUSTOMIZER_HELPER_PROPERTY_NAME, PICKER_HELPER_PROPERTY_NAME, KEYWORD_HELPER_PROPERTY_NAME, COUNTDOWN_HELPER_PROPERTY_NAME } from '@bingads-webui-campaign-legacy/crud-ad/service/utils/index';\r\nimport constants from '@bingads-webui-static-legacy/instrumentation/constants';\r\nimport logger from '@bingads-webui-static-legacy/instrumentation/index';\r\n\r\nconst i18nAdCustomizers = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/ad-customizers');\r\n\r\nconst dynamicAttachAdCustomizersHelpers = ({ container, element, updateAction, remainingCountCallBack, adType, field, perfMarker }) =>\r\n newAttachAdCustomizersHelpers({\r\n container,\r\n element,\r\n updateAction,\r\n remainingCountCallBack,\r\n deps: {\r\n i18n: i18nAdCustomizers,\r\n countdownI18nDummy: i18nDummy,\r\n config,\r\n instrumentation,\r\n edmCampaign,\r\n jsDataCampaign,\r\n perfMarker,\r\n },\r\n adType,\r\n field,\r\n });\r\n/**\r\n * Logs message\r\n * @param {string} helper - helper associated with this log\r\n * @param {string} message - message to log\r\n * @returns {undefined}\r\n */\r\n\r\nfunction log(helper, message) {\r\n logger.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, helper, message);\r\n}\r\n\r\nfunction hidePickers(selectedPropertyType) {\r\n const hideFunctionMap = {\r\n [PICKER_HELPER_PROPERTY_NAME]: hideAdCustomizersPicker,\r\n [ADCUSTOMIZER_HELPER_PROPERTY_NAME]: hideFeedEditor,\r\n [COUNTDOWN_HELPER_PROPERTY_NAME]: hideCountdownEditor,\r\n [KEYWORD_HELPER_PROPERTY_NAME]: hideKeywordEditor,\r\n };\r\n\r\n const functinsToUse = _.omit(hideFunctionMap, selectedPropertyType);\r\n\r\n _.each(functinsToUse, (hideFunc) => {\r\n hideFunc();\r\n });\r\n}\r\n\r\n/**\r\n * Registers for click, focus, input and keyup events of given element to show appropriate ad customizer helpers\r\n * @param {object} element - element the helpers will be attaching to\r\n * @param {function} updateAction - callback function used to update the field helpers are attaching to\r\n * @param {function} remainingCountCallBack - callback function used to get the remainingcount\r\n * @returns {undefined}\r\n */\r\nexport function attachAdCustomizersHelpers(element, updateAction, remainingCountCallBack) {\r\n\r\n let isItemSelected = false;\r\n\r\n // Clicking on elements having this class won't hide currently visible helper\r\n element.addClass('ac-helper-area');\r\n\r\n // keyup is to catch typing, pasting with Ctrl+V, tab navigation, and cursor movement.\r\n // click is to catch all click events (including focus by clicking)\r\n // input is to catch paste with right click\r\n // focus is to catch programmatic focus\r\n element.on('input keyup focus click', (event) => {\r\n isItemSelected = event.target.isSelectedByUser;\r\n event.target.isSelectedByUser = false;\r\n // Ignore if any text is selected, we are only interested in the cursor\r\n if (event.target.selectionStart !== event.target.selectionEnd) {\r\n return;\r\n }\r\n\r\n // Ignore escape key up since it shouldn't prompt any helper\r\n if (event.type === 'keyup' && event.key === 'Escape') {\r\n return;\r\n }\r\n\r\n getHelperProperties(event.target.value, event.target.selectionEnd, isItemSelected).then((helperProperties) => {\r\n const selectdPropertyType = helperProperties == null ? '' : helperProperties.type;\r\n\r\n // hide the non-selected pickers\r\n hidePickers(selectdPropertyType);\r\n\r\n // updateaction when selectedPropertyType is not empty\r\n if (selectdPropertyType) {\r\n helperProperties.options.updateAction = _.wrap(updateAction, (func, param) => {\r\n log('AdCustomizersPicker', `${selectdPropertyType} item selected. Updating field value from \"${event.target.value}\" to \"${param}\"`);\r\n func(param);\r\n });\r\n }\r\n\r\n switch (selectdPropertyType) {\r\n case ADCUSTOMIZER_HELPER_PROPERTY_NAME:\r\n if (!isFeedEditorVisible()) {\r\n log('AdCustomizersPicker', `Showing feed for value: \"${event.target.value}\" and cursor position: ${event.target.selectionEnd}`);\r\n }\r\n showFeedEditor(event.target, helperProperties.options, remainingCountCallBack);\r\n break;\r\n\r\n case PICKER_HELPER_PROPERTY_NAME:\r\n if (!isAdCustomizersPickerVisible()) {\r\n log('AdCustomizersPicker', `Showing picker for value: \"${event.target.value}\" and cursor position: ${event.target.selectionEnd}`);\r\n }\r\n showAdCustomizersPicker(event.target, helperProperties.options, event.type === 'keyup' ? event.key : undefined);\r\n break;\r\n\r\n case COUNTDOWN_HELPER_PROPERTY_NAME:\r\n if (!isCountdownEditorVisible()) {\r\n log('AdCustomizersCountdownEditor', `Showing countdown editor for value: \"${event.target.value}\" and cursor position: ${event.target.selectionEnd}`);\r\n }\r\n showCountdownEditor(event.target, helperProperties.options);\r\n break;\r\n\r\n case KEYWORD_HELPER_PROPERTY_NAME:\r\n if (!isKeywordEditorVisible()) {\r\n log('AdCustomizersKeywordEditor', `Showing keyword editor for value: \"${event.target.value}\" and cursor position: ${event.target.selectionEnd}`);\r\n }\r\n showKeywordEditor(event.target, helperProperties.options, i18nAdCustomizers);\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n });\r\n}\r\n\r\nexport const enableAdCustomizersHelpers = (view, customizableFields, nameAttrs, adType, container) => {\r\n _.each(customizableFields, (field) => {\r\n const property = view.viewModel[field];\r\n const element = view.$(`.form-control[name=\"${nameAttrs[field]}\"]`);\r\n\r\n dynamicAttachAdCustomizersHelpers(_.extend({\r\n element,\r\n updateAction: (text) => property(text),\r\n remainingCountCallBack: () => property.remaining(),\r\n adType,\r\n field,\r\n perfMarker: view.perfMarker,\r\n }, view.isForVNext ? { container: container ? container : view.$('> .ac-container') } : {}));\r\n });\r\n};\r\n","import Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport ViewModel from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/dynamicSearchAd';\r\nimport editorTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adsEditor/dynamicSearchAd.pug';\r\nimport buildPreview from '@bingads-webui-campaign-legacy/crud-ad/view/adsPreview/dynamicSearchAd';\r\nimport { isCampaignApiError } from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\nimport UrlOptions from '@bingads-webui-component-legacy/upgraded-url/view/advancedSettingsUrlOptions';\r\nimport uuid from '@bingads-webui-component-legacy/uuid/index';\r\nimport { enableAdCustomizersHelpers } from './adCustomizersHelpers';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nconst permissions = config.get('Permissions') || {};\r\n\r\nconst nameAttrs = {\r\n 'Text': 'Ad.ExpandedTextAd.AdDescription',\r\n 'TextPart2': 'Ad.ExpandedTextAd.AdDescription2',\r\n 'Path1': 'Ad.ExpandedTextAd.Path1',\r\n 'Path2': 'Ad.ExpandedTextAd.Path2',\r\n};\r\n\r\nconst fieldsWithLabel = ['Path1', 'Path2'];\r\nconst labels = _.object(fieldsWithLabel, _.map(fieldsWithLabel, (field) => {\r\n return i18n.get(`DynamicSearchAd_Label_${field}`);\r\n}));\r\n\r\nexport default class DynamicSearchAdEditor extends Backbone.View {\r\n initialize({\r\n model = null,\r\n isForVNext = false,\r\n showAdType = false,\r\n isTraditionalChinese = false,\r\n scope = null,\r\n activityLogger,\r\n } = {}) {\r\n this.showAdType = showAdType;\r\n this.isForVNext = isForVNext;\r\n this.useUpgradedUrl = true;\r\n this.activityLogger = activityLogger;\r\n this.viewModel = new ViewModel({\r\n model,\r\n useUpgradedUrl: this.useUpgradedUrl,\r\n isTraditionalChinese,\r\n scope,\r\n activityLogger,\r\n });\r\n }\r\n\r\n render() {\r\n this.$el.html(editorTemplate({\r\n i18n,\r\n uuid,\r\n useUpgradedUrl: this.useUpgradedUrl,\r\n labels,\r\n placeholders: {},\r\n showAdType: this.showAdType,\r\n nameAttrs,\r\n allowDisclaimerAds: true,\r\n }));\r\n\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n if (this.useUpgradedUrl) {\r\n if (_.isObject(this.model)) {\r\n this.urlOptions = new UrlOptions({\r\n editMode: true,\r\n smallContainer: true,\r\n trackingTemplate: _.result(this.model, 'TrackingUrlTemplate'),\r\n finalUrlSuffix: _.result(this.model, 'FinalUrlSuffix'),\r\n customParameters: _.isEmpty(this.model.UrlCustomParameters) ? undefined : _.clone(this.model.UrlCustomParameters), // eslint-disable-line\r\n entityType: 'Ad',\r\n activityLogger: this.activityLogger,\r\n }).render();\r\n } else {\r\n this.urlOptions = new UrlOptions({\r\n smallContainer: true,\r\n entityType: 'Ad',\r\n activityLogger: this.activityLogger,\r\n }).render();\r\n }\r\n this.$el.find('.advanced-options').html(this.urlOptions.$el);\r\n }\r\n\r\n this.previewContainer = buildPreview(this.viewModel, {});\r\n this.$('.preview-container').empty().append(this.previewContainer.render().el);\r\n\r\n this.enableAdCustomizersHelpersForDSA();\r\n return this;\r\n }\r\n\r\n validateViewModel() {\r\n const isValid = this.viewModel.validate();\r\n\r\n if (!isValid) {\r\n _.each(this.viewModel.fields, (field) => {\r\n if (!this.viewModel[field].isValid()) {\r\n if (this.activityLogger) {\r\n this.activityLogger.signal(`ad field invalid: ${field}`, 'dynamic search ad editor');\r\n }\r\n }\r\n });\r\n }\r\n return isValid;\r\n }\r\n\r\n validate() {\r\n return this.validateViewModel() && (!this.useUpgradedUrl || this.urlOptions.isValid());\r\n }\r\n\r\n toObject() {\r\n const model = this.viewModel.toObject();\r\n\r\n if (!this.useUpgradedUrl) {\r\n return model;\r\n }\r\n\r\n return _.extend(_.omit(model, this.viewModel.upgradedUrlFields), {\r\n TrackingUrlTemplate: this.urlOptions.getTrackingTemplate(),\r\n UrlCustomParameters: this.urlOptions.getUrlCustomParameters(true),\r\n FinalUrlSuffix: this.urlOptions.getFinalUrlSuffix(),\r\n });\r\n }\r\n\r\n handleApiErrors(errors) {\r\n this.viewModel.errors.add(errors);\r\n\r\n if (this.useUpgradedUrl) {\r\n let errorObject = _.object(this.viewModel.upgradedUrlFields, _.map(this.viewModel.upgradedUrlFields, (key) => {\r\n return _.result(this.viewModel[key], 'errors', []);\r\n }));\r\n\r\n this.urlOptions.handleApiErrors(errorObject);\r\n }\r\n }\r\n\r\n clearApiErrors() {\r\n this.viewModel.errors.clear(isCampaignApiError);\r\n if (this.useUpgradedUrl) {\r\n this.urlOptions.clearApiErrors();\r\n }\r\n }\r\n\r\n enableAdCustomizersHelpersForDSA() {\r\n const customizableFields = [\r\n 'Text',\r\n ...permissions.IsExpandedDsaPhase2Enabled ? ['TextPart2'] : [], 'Path1', 'Path2'];\r\n\r\n enableAdCustomizersHelpers(this, customizableFields, nameAttrs, 'DynamicSearchAd');\r\n }\r\n}\r\n","import { ProductAd } from '@bingads-webui-campaign/campaign-ui-schemas';\r\nimport KoSchema from '@bingads-webui-component-legacy/ko-schema/index';\r\n\r\nexport default class ViewModel {\r\n constructor({ model = null }) {\r\n KoSchema.properties(this, ProductAd, [], model);\r\n }\r\n}\r\n","import Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport ViewModel from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/productAd';\r\nimport { getODataErrors, isCampaignApiError } from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\n\r\nexport default class View extends Backbone.View {\r\n initialize(options = {}) {\r\n this.options = options;\r\n\r\n this.viewModel = new ViewModel(this.options);\r\n }\r\n\r\n render() {\r\n ko.applyBindings(this.viewModel, this.el);\r\n }\r\n\r\n validate() {\r\n return true;\r\n }\r\n\r\n toObject() {\r\n return {};\r\n }\r\n\r\n handleApiErrors(response) {\r\n this.viewModel.errors.add(_.isEmpty(response) ? undefined : getODataErrors(response.errors));\r\n }\r\n\r\n clearApiErrors() {\r\n this.viewModel.errors.clear(isCampaignApiError);\r\n }\r\n}\r\n","/*eslint new-cap:0 */\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport { ExpandedTextAd, DisclaimerAdExtension } from '@bingads-webui-campaign/campaign-ui-schemas';\r\nimport dynamicTextExtension from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/dynamicTextExtension';\r\nimport KoSchema from '@bingads-webui-component-legacy/ko-schema/index';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport parsedTextMaxLengthExtension from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/parsedTextMaxLengthExtension';\r\nimport { getFinalUrlDomain } from '@bingads-webui-campaign-legacy/crud-ad/service/displayUrl';\r\nimport edmCampaign from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport jsDataCampaign from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport SharedRepository from '@bingads-webui-campaign-legacy/adextension-shared/service/repository';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nconst permissions = config.get('Permissions') || {};\r\nconst {\r\n IsDisclaimerAdsEnabled,\r\n} = permissions;\r\n\r\nexport default class ViewModel {\r\n constructor({\r\n model = null,\r\n isNativeAdsEnabled = false,\r\n isVanityUrlEnabled = false,\r\n IsExpandedTextAdV2Enabled = false,\r\n placeholders = {},\r\n scope = null,\r\n activityLogger,\r\n perfMarker,\r\n } = {}) {\r\n // Babel would understand the intent and do this behind the curtain but it is better not to rely on it.\r\n const self = this;\r\n\r\n this.model = model;\r\n this.placeholders = placeholders; // preview uses this\r\n this.IsExpandedTextAdV2Enabled = IsExpandedTextAdV2Enabled;\r\n this.scope = scope;\r\n this.activityLogger = activityLogger;\r\n this.perfMarker = perfMarker;\r\n\r\n const lengthCheckFields = ['TitlePart1', 'TitlePart2', 'Text', 'Path1', 'Path2'];\r\n\r\n this.fields = _.compact(['TitlePart1', 'TitlePart2', 'Text', 'Path1', 'Path2', 'FinalUrls', 'TrackingUrlTemplate', 'UrlCustomParameters', 'MobileFinalUrls', 'FinalUrlSuffix']);\r\n\r\n if (this.IsExpandedTextAdV2Enabled) {\r\n lengthCheckFields.push('TitlePart3', 'TextPart2');\r\n this.fields.push('TitlePart3', 'TextPart2');\r\n }\r\n\r\n if (isNativeAdsEnabled) {\r\n this.fields.push('NativePreference');\r\n }\r\n\r\n this.isVanityUrlEnabled = isVanityUrlEnabled;\r\n if (isVanityUrlEnabled) {\r\n this.fields.push('DisplayUrl');\r\n }\r\n\r\n KoSchema.properties(this, ExpandedTextAd, this.fields, _.defaults(model, {\r\n FinalUrls: [],\r\n }, isNativeAdsEnabled ? {\r\n NativePreference: 'NativePreference',\r\n } : {}));\r\n\r\n dynamicTextExtension.extend(this, lengthCheckFields);\r\n\r\n parsedTextMaxLengthExtension.extend(this, lengthCheckFields);\r\n\r\n this.showNativeAdPreview = ko.computed(() => {\r\n if (isNativeAdsEnabled) {\r\n return self.NativePreference.isNativePreference();\r\n }\r\n\r\n return false;\r\n }, this);\r\n\r\n if (!isVanityUrlEnabled) {\r\n this.DisplayUrl = ko.computed(() => {\r\n return getFinalUrlDomain(_.first(self.FinalUrls()));\r\n });\r\n }\r\n\r\n if (IsDisclaimerAdsEnabled) {\r\n this.disclaimerInfo = ko.observable({});\r\n\r\n this.extensionsSharedRepos = new SharedRepository({\r\n schema: DisclaimerAdExtension,\r\n afterChangeComitted: _.noop,\r\n });\r\n\r\n let disclaimerCampaignId = 0;\r\n\r\n if (Number(this.scope().campaignId) > 0) {\r\n disclaimerCampaignId = Number(this.scope().campaignId);\r\n } else if (pageContext.CurrentCampaign && Number(pageContext.CurrentCampaign.Id) > 0) {\r\n disclaimerCampaignId = Number(pageContext.CurrentCampaign.Id);\r\n }\r\n\r\n if (disclaimerCampaignId > 0) {\r\n this.computeDisclaimerAsync(disclaimerCampaignId);\r\n }\r\n\r\n this.scope.subscribe((data) => {\r\n if (data.campaignId) {\r\n this.computeDisclaimerAsync(data.campaignId);\r\n }\r\n });\r\n\r\n this.showDisclaimer = ko.computed(() => {\r\n if (this.disclaimerInfo().Id) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n\r\n this.adDisclaimerHint = ko.computed(() => {\r\n if (this.disclaimerInfo().Id) {\r\n if (this.disclaimerInfo().DisclaimerLayout === 'AdditionalLine') {\r\n return i18n.getString('Disclaimer_Ad_AdditionalLine_Hint');\r\n } else if (this.disclaimerInfo().DisclaimerLayout === 'Popup') {\r\n return i18n.getString('Disclaimer_Ad_Popup_Hint');\r\n }\r\n }\r\n\r\n return '';\r\n });\r\n }\r\n\r\n this.errorMessage = ko.computed(() => {\r\n if (_.isEmpty(_.result(self.Path1(), 'trim')) && !_.isEmpty(self.Path2())) {\r\n return i18n.get('ExpandedTextAd_Path1RequiredWhenUsingPath2');\r\n }\r\n\r\n return '';\r\n });\r\n\r\n _.each(this.fields, (field) => {\r\n // log once per field.\r\n const logChange = _.once(() => {\r\n if (this.activityLogger) {\r\n this.activityLogger.signal(`ad field change: ${field}`, 'expanded text ad editor');\r\n }\r\n });\r\n\r\n this[field].subscribe(() => {\r\n logChange();\r\n }, this);\r\n });\r\n }\r\n\r\n computeDisclaimerAsync(disclaimerCampaignId) {\r\n let params = {\r\n queryParameters: {\r\n entitySet: edmCampaign.currentAccount.Campaigns,\r\n },\r\n bypassCache: true,\r\n };\r\n\r\n jsDataCampaign.Campaign.find(disclaimerCampaignId, params)\r\n .then((data) => {\r\n const hasDisclaimer = _.result(_.find(data.CampaignSettings, (setting) => {\r\n return setting['@odata.type'] === '#Model.DisclaimerSetting';\r\n }),\r\n 'DisclaimerAdsEnabled');\r\n\r\n if (hasDisclaimer) {\r\n const scope = Object.create({\r\n campaignId: disclaimerCampaignId,\r\n });\r\n\r\n this.extensionsSharedRepos.association.findAll({\r\n where: scope,\r\n }).then((disclaimerdata) => {\r\n\r\n if (disclaimerdata && disclaimerdata.length > 0) {\r\n this.disclaimerInfo(disclaimerdata[0]);\r\n }\r\n });\r\n }\r\n });\r\n // TODO : catch and finally\r\n }\r\n\r\n initPreviewTab() {\r\n let defaultPreviewType = 'top';\r\n\r\n if (this.showNativeAdPreview()) {\r\n defaultPreviewType = 'native';\r\n }\r\n\r\n return defaultPreviewType;\r\n }\r\n}\r\n","import PreviewContainer from '@bingads-webui-campaign-legacy/crud-ad/view/adsPreview/container';\r\nimport topTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adsPreview/top.pug';\r\nimport sidebarTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adsPreview/sidebar.pug';\r\nimport mobileTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adsPreview/mobile.pug';\r\nimport nativeTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adsPreview/native.pug';\r\nimport PreviewViewModel from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsPreview/expandedTextAd';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nexport default function buildPreview (viewModel) {\r\n let previewViewModel = new PreviewViewModel(viewModel);\r\n\r\n return new PreviewContainer({\r\n contentClass: '.Text .preview-container',\r\n tabs: [{\r\n top: {\r\n template: topTemplate,\r\n viewModel: previewViewModel,\r\n title: i18n.get('Ad_TopView'),\r\n },\r\n sidebar: {\r\n template: sidebarTemplate,\r\n viewModel: previewViewModel,\r\n title: i18n.get('Ad_SideView'),\r\n },\r\n mobile: {\r\n template: mobileTemplate,\r\n viewModel: previewViewModel,\r\n title: i18n.get('Ad_MobileView'),\r\n },\r\n }, {\r\n native: {\r\n template: nativeTemplate,\r\n viewModel: previewViewModel,\r\n title: i18n.get('Ad_NativeView'),\r\n },\r\n }],\r\n });\r\n}\r\n","/*eslint new-cap:0 */\r\nimport Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\n\r\nimport ViewModel from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/expandedTextAd';\r\nimport editorTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adsEditor/expandedTextAd.pug';\r\nimport { isCampaignEditorialError, isCampaignApiError } from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\nimport CampaignEditorialError from '@bingads-webui-component-legacy/api-errors-campaign/editorial-error';\r\nimport buildPreview from '@bingads-webui-campaign-legacy/crud-ad/view/adsPreview/expandedTextAd';\r\nimport uuid from '@bingads-webui-component-legacy/uuid/index';\r\nimport UrlEditor from '@bingads-webui-component-legacy/url-input/view/url-input';\r\nimport UrlOptions from '@bingads-webui-component-legacy/upgraded-url/view/urlOptionsV2';\r\nimport legacyInstru from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport constants from '@bingads-webui-static-legacy/instrumentation/constants';\r\nimport { enableAdCustomizersHelpers } from './adCustomizersHelpers';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nconst permissions = config.get('Permissions') || {};\r\n\r\nconst fieldsWithPlaceHolder = ['TitlePart1', 'TitlePart2', 'TitlePart3', 'Text', 'Path1', 'Path2', 'FinalUrls', 'MobileFinalUrls']\r\n .concat(permissions.IsVanityUrlEnabled ? ['DisplayUrl'] : []);\r\nconst placeholders = _.object(fieldsWithPlaceHolder, _.map(fieldsWithPlaceHolder, (field) => {\r\n return i18n.get(`ExpandedTextAd_Placeholder_${field}`);\r\n}));\r\nconst fieldsWithLabel = ['Path1', 'Path2'];\r\nconst labels = _.object(fieldsWithLabel, _.map(fieldsWithLabel, (field) => {\r\n return i18n.get(`ExpandedTextAd_Label_${field}`);\r\n}));\r\nconst {\r\n IsExpandedTextAdV2Enabled,\r\n IsDisclaimerAdsEnabled,\r\n IsEXTAMigrationNotificationEnabled,\r\n} = permissions;\r\n\r\n\r\n/*For initial stage, MT converts the expanded text ad to standard text ad and passes it to editorial.\r\n So editorial will still return adtitle instead of titlepart1/titlepart2 as it doesn't know anything about EXTA.\r\n Once editorial is on boarded, will remove following mapping,\r\n*/\r\nconst fieldMapping = {\r\n 'Title': 'TitlePart1',\r\n 'DisplayUrl': 'Path1',\r\n 'DestinationUrl': 'FinalUrls',\r\n};\r\n\r\nconst nameAttrs = {\r\n 'TitlePart1': 'Ad.ExpandedTextAd.TitlePart1',\r\n 'TitlePart2': 'Ad.ExpandedTextAd.TitlePart2',\r\n 'TitlePart3': 'Ad.ExpandedTextAd.TitlePart3',\r\n 'Text': 'Ad.ExpandedTextAd.AdDescription',\r\n 'TextPart2': 'Ad.ExpandedTextAd.AdDescription2',\r\n 'Path1': 'Ad.ExpandedTextAd.Path1',\r\n 'Path2': 'Ad.ExpandedTextAd.Path2',\r\n 'NativePreference': 'Ad.ExpandedTextAd.IsNativeNetworkPreferred',\r\n};\r\n\r\nexport default class View extends Backbone.View {\r\n initialize({\r\n showInline = false,\r\n editMode = false,\r\n model = null,\r\n isForVNext = false,\r\n isNativeAdsEnabled = permissions.IsNativeAdsAllowed,\r\n isVanityUrlEnabled = permissions.IsVanityUrlEnabled,\r\n isTraditionalChinese = false,\r\n defaultLandingPageUrl = '',\r\n activityLogger,\r\n scope = null,\r\n perfMarker,\r\n } = {}) {\r\n this.isForVNext = isForVNext;\r\n this.showInline = showInline;\r\n this.editMode = editMode;\r\n this.isNativeAdsEnabled = isNativeAdsEnabled;\r\n this.isVanityUrlEnabled = isVanityUrlEnabled;\r\n this.isNativeAdsRebrandingEnabled = permissions.IsNativeAdsRebrandingEnabled;\r\n this.defaultLandingPageUrl = defaultLandingPageUrl;\r\n this.activityLogger = activityLogger;\r\n if (perfMarker) {\r\n this.perfMarker = perfMarker.createChild('Load_Audience_List');\r\n }\r\n this.viewModel = new ViewModel({\r\n model,\r\n isNativeAdsEnabled,\r\n isVanityUrlEnabled,\r\n isTraditionalChinese,\r\n placeholders,\r\n defaultLandingPageUrl,\r\n IsExpandedTextAdV2Enabled,\r\n scope,\r\n activityLogger,\r\n perfMarker: this.perfMarker,\r\n });\r\n\r\n this.finalUrlEditor = new UrlEditor({\r\n url: _.first(_.result(this.model, 'FinalUrls')),\r\n ariaLabelledby: 'extaFinalUrlLabel',\r\n ariaId: 'extaFinalUrl',\r\n required: true,\r\n });\r\n this.mobileUrlEditor = new UrlEditor({\r\n url: _.first(_.result(this.model, 'MobileFinalUrls')),\r\n ariaLabelledby: 'extaMobileUrlLabel',\r\n ariaId: 'extaMobileUrl',\r\n });\r\n\r\n this.finalUrlEditor.on('urlChanged', (url) => {\r\n this.viewModel.FinalUrls(url ? [url] : []);\r\n });\r\n this.mobileUrlEditor.on('urlChanged', (url) => {\r\n this.viewModel.MobileFinalUrls(url ? [url] : []);\r\n });\r\n\r\n this.viewModel.FinalUrls.errors.subscribe((value) => {\r\n this.finalUrlEditor.hasErrors(!_.isEmpty(value));\r\n });\r\n\r\n this.viewModel.MobileFinalUrls.errors.subscribe((value) => {\r\n this.mobileUrlEditor.hasErrors(!_.isEmpty(value));\r\n });\r\n\r\n this.urlOptions = new UrlOptions({\r\n isForVNext,\r\n placeholderEnabled: true,\r\n showUurlTestTool: true,\r\n trackingTemplate: _.result(this.model, 'TrackingUrlTemplate'),\r\n finalUrlSuffix: _.result(this.model, 'FinalUrlSuffix'),\r\n customParameters: _.isEmpty(_.result(this.model, 'UrlCustomParameters')) ? undefined : _.clone(this.model.UrlCustomParameters),\r\n activityLogger,\r\n });\r\n\r\n this.urlOptions.on('testUurl', (fn, originalView) => {\r\n this.trigger('testUurl', fn, originalView);\r\n });\r\n\r\n return this;\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .prefer-native-format': 'preferNativeAdFormat',\r\n };\r\n }\r\n\r\n render() {\r\n this.$el.html(editorTemplate({\r\n i18n,\r\n uuid,\r\n isNativeAdsEnabled: this.isNativeAdsEnabled,\r\n isVanityUrlEnabled: this.isVanityUrlEnabled,\r\n isNativeAdsRebrandingEnabled: this.isNativeAdsRebrandingEnabled,\r\n nameAttrs,\r\n labels,\r\n placeholders: {},\r\n domainWatermark: placeholders.FinalUrls,\r\n IsExpandedTextAdV2Enabled,\r\n IsDisclaimerAdsEnabled,\r\n IsEXTAMigrationNotificationEnabled,\r\n }));\r\n\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n this.$('.final-url').empty().append(this.finalUrlEditor.render().el);\r\n this.$('.mobile-url').empty().append(this.mobileUrlEditor.render().el);\r\n this.$('.ext-ad-url-options').empty().append(this.urlOptions.render().el);\r\n\r\n this.$('.final-url input.url-field').attr('name', 'FinalUrls');\r\n this.$('.mobile-url input.url-field').attr('name', 'MobileFinalUrls');\r\n\r\n this.previewContainer = buildPreview(this.viewModel);\r\n this.$('.preview-container').empty().append(this.previewContainer.render().el);\r\n this.previewContainer.selectedPanel(this.viewModel.initPreviewTab());\r\n\r\n this.enableAdCustomizersHelpersForEXTA();\r\n return this;\r\n }\r\n\r\n preferNativeAdFormat() {\r\n this.previewContainer.selectedPanel(this.viewModel.showNativeAdPreview() ? 'native' : 'top');\r\n }\r\n\r\n validateViewModel() {\r\n const isValid = this.viewModel.validate();\r\n\r\n if (!isValid) {\r\n _.each(this.viewModel.fields, (field) => {\r\n if (!this.viewModel[field].isValid()) {\r\n if (this.activityLogger) {\r\n this.activityLogger.signal(`ad field invalid: ${field}`, 'expanded text ad editor');\r\n }\r\n }\r\n });\r\n }\r\n return isValid;\r\n }\r\n\r\n validate() {\r\n return _.reduce([\r\n this.validateViewModel(),\r\n _.isEmpty(this.viewModel.errorMessage()),\r\n this.urlOptions ? this.urlOptions.isValid() : true,\r\n ], (prev, next) => {\r\n return prev && next;\r\n }, true);\r\n }\r\n\r\n resetEditMode(mode) {\r\n this.editMode = mode;\r\n }\r\n\r\n toObject() {\r\n const params = _.omit(_.extend(this.viewModel.toObject(), this.urlOptions ? this.urlOptions.toObject() : {}),\r\n this.isVanityUrlEnabled ? [] : ['DisplayUrl']);\r\n\r\n const api = this.showInline ? 'odata' : 'bulk';\r\n const arrayEmptyValue = api === 'odata' ? [] : null;\r\n const stringEmptyValue = api === 'odata' ? '' : null;\r\n\r\n /* 1.Replace all line breaks with spaces 2. Remove whitespace from both sides */\r\n const regex = /(?:\\r\\n|\\r|\\n)/g;\r\n\r\n params.Text = params.Text.replace(regex, ' ').trim();\r\n if (IsExpandedTextAdV2Enabled && params.TextPart2) {\r\n params.TextPart2 = params.TextPart2.replace(regex, ' ').trim();\r\n }\r\n\r\n if (params.TextPart2 === undefined || params.TextPart2 === null) {\r\n legacyInstru.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO,\r\n 'crud-ad/view/adEditor',\r\n `IsExpandedTextAdV2Enabled: ${IsExpandedTextAdV2Enabled},\r\n TextPart2: ${this.viewModel.TextPart2 ? this.viewModel.TextPart2() : 'Not in viewModel'},\r\n model: ${this.model ? this.model.TextPart2 : 'model is not set'}`);\r\n }\r\n\r\n //bulk API needs use 'delete_vlaue' to indicate deleting a value, in jsdata bulk adapter, we will replace null with 'delete_value' to remove value\r\n if (this.editMode) {\r\n const nullableArrayFields = [\r\n 'FinalUrls',\r\n 'MobileFinalUrls',\r\n 'UrlCustomParameters',\r\n ];\r\n\r\n const nullableStringFields = _.compact([\r\n 'TrackingUrlTemplate',\r\n 'FinalUrlSuffix',\r\n 'Path1',\r\n 'Path2',\r\n ]);\r\n\r\n _.each(nullableArrayFields, (prop) => {\r\n if (_.isEmpty(params[prop])) {\r\n params[prop] = arrayEmptyValue;\r\n }\r\n });\r\n\r\n _.each(nullableStringFields, (prop) => {\r\n if (_.isEmpty(params[prop])) {\r\n params[prop] = stringEmptyValue;\r\n }\r\n });\r\n }\r\n\r\n return params;\r\n }\r\n\r\n handleApiErrors(errors) {\r\n const title1 = this.viewModel.TitlePart1();\r\n const title2 = this.viewModel.TitlePart2();\r\n const title3 = IsExpandedTextAdV2Enabled ? this.viewModel.TitlePart3() : '';\r\n\r\n const parsedErrors = _.reduce(errors, (memo, error) => {\r\n if (_.has(error, 'property') && isCampaignEditorialError(error)) {\r\n const disapproved = _.result(error, 'disapprovedText', '');\r\n\r\n if (error.property === 'Title') {\r\n let isTitle1HaveErrors = title1.indexOf(disapproved) > -1;\r\n let isTitle2HaveErrors = title2.indexOf(disapproved) > -1;\r\n const { message, property, code, disapprovedText, isAppealable } = error;\r\n\r\n if (IsExpandedTextAdV2Enabled && title3) {\r\n let isTitle3HaveErrors = title3.indexOf(disapproved) > -1;\r\n\r\n if (!isTitle1HaveErrors && !isTitle2HaveErrors && !isTitle3HaveErrors) {\r\n if (`${title1} ${title2}`.indexOf(disapproved) > -1) {\r\n // error in (title1 + title2)\r\n isTitle1HaveErrors = true;\r\n isTitle2HaveErrors = true;\r\n } else if (`${title2} ${title3}`.indexOf(disapproved) > -1) {\r\n // error in (title2 + title3)\r\n isTitle2HaveErrors = true;\r\n isTitle3HaveErrors = true;\r\n } else {\r\n // If (title1 + title2 + title3) contain disapproved text, show errors on all fields.\r\n isTitle1HaveErrors = true;\r\n isTitle2HaveErrors = true;\r\n isTitle3HaveErrors = true;\r\n }\r\n }\r\n\r\n const returnError = [...memo];\r\n\r\n if (isTitle1HaveErrors) {\r\n returnError.push(_.extend(error, { property: 'TitlePart1' }));\r\n }\r\n\r\n if (isTitle2HaveErrors) {\r\n returnError.push(_.extend(new CampaignEditorialError(message, property, code, disapprovedText, isAppealable), { property: 'TitlePart2' }));\r\n }\r\n\r\n if (isTitle3HaveErrors) {\r\n returnError.push(_.extend(new CampaignEditorialError(message, property, code, disapprovedText, isAppealable), { property: 'TitlePart3' }));\r\n }\r\n return returnError;\r\n } else if ((isTitle1HaveErrors && isTitle2HaveErrors) || (!isTitle1HaveErrors && !isTitle2HaveErrors)) {\r\n // Both title1 and title2 contain disapprovedText, or (title1 + title2) contain disapprovedText, show errors\r\n // on both fields\r\n return [...memo, _.extend(error, {\r\n property: 'TitlePart1',\r\n }), _.extend(new CampaignEditorialError(message, property, code, disapprovedText, isAppealable), {\r\n property: 'TitlePart2',\r\n })];\r\n } else {\r\n return [...memo, _.extend(error, {\r\n property: isTitle2HaveErrors ? 'TitlePart2' : 'TitlePart1',\r\n })];\r\n }\r\n } else if (error.property === 'Text' && IsExpandedTextAdV2Enabled) {\r\n const text1 = this.viewModel.Text();\r\n const text2 = this.viewModel.TextPart2();\r\n\r\n if (text2) {\r\n let isText1HaveErrors = text1.indexOf(disapproved) > -1;\r\n let isText2HaveErrors = text2.indexOf(disapproved) > -1;\r\n\r\n if (!isText1HaveErrors && !isText2HaveErrors) {\r\n // if (text1 + text2 contain disapproved text), show errors on all fields.\r\n isText1HaveErrors = true;\r\n isText2HaveErrors = true;\r\n }\r\n\r\n if (isText2HaveErrors) {\r\n if (isText1HaveErrors) {\r\n const { message, property, code, disapprovedText, isAppealable } = error;\r\n\r\n // If (text1 + text2) contain disapproved text, show errors on all fields.\r\n return [...memo, error, _.extend(new CampaignEditorialError(message, property, code, disapprovedText, isAppealable), { property: 'TextPart2' })];\r\n } else {\r\n // only have error in text2.\r\n error.property = 'TextPart2';\r\n }\r\n }\r\n }\r\n }\r\n\r\n // This mapping is for editorial errors. Once editorial is on boarded, will remove following mapping. See bug 576573.\r\n error.property = fieldMapping[error.property] || error.property;\r\n return [...memo, error];\r\n }\r\n return [...memo, error];\r\n }, []);\r\n\r\n this.viewModel.errors.add(parsedErrors);\r\n const errorFields = _.compact(['TrackingUrlTemplate', 'UrlCustomParameters', 'FinalUrlSuffix']);\r\n let errorObject = _.object(errorFields, _.map(errorFields, (key) => {\r\n return this.viewModel[key].errors();\r\n }));\r\n\r\n this.urlOptions.handleApiErrors(errorObject);\r\n }\r\n\r\n clearApiErrors() {\r\n this.viewModel.errors.clear(isCampaignApiError);\r\n this.urlOptions.clearApiErrors();\r\n }\r\n\r\n /**\r\n * Registers ad customizers helpers to listen for key/mouse events on a number of form fields to pop themselves up when applicable\r\n * @returns {undefined}\r\n */\r\n enableAdCustomizersHelpersForEXTA() {\r\n const customizableFields = ['TitlePart1', 'TitlePart2', 'Path1', 'Path2', 'Text'];\r\n\r\n if (IsExpandedTextAdV2Enabled) {\r\n customizableFields.push('TitlePart3', 'TextPart2');\r\n }\r\n enableAdCustomizersHelpers(this, customizableFields, nameAttrs, 'ExpandedTextAd');\r\n }\r\n}\r\n","/*eslint new-cap:0 */\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport { ResponsiveSearchAd } from '@bingads-webui-campaign/campaign-ui-schemas';\r\nimport dynamicTextExtension from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/dynamicTextExtension';\r\nimport KoSchema from '@bingads-webui-component-legacy/ko-schema/index';\r\nimport parsedTextMaxLengthExtension from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/parsedTextMaxLengthExtension';\r\nimport { getFinalUrlDomain } from '@bingads-webui-campaign-legacy/crud-ad/service/displayUrl';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nexport default class ViewModel {\r\n constructor({\r\n model = null,\r\n isNativeAdsEnabled = false,\r\n isVanityUrlEnabled = false,\r\n IsExpandedTextAdV2Enabled = false,\r\n placeholders = {},\r\n scope = null,\r\n activityLogger,\r\n } = {}) {\r\n // Babel would understand the intent and do this behind the curtain but it is better not to rely on it.\r\n const self = this;\r\n\r\n this.model = model;\r\n this.placeholders = placeholders; // preview uses this\r\n this.IsExpandedTextAdV2Enabled = IsExpandedTextAdV2Enabled;\r\n this.scope = scope;\r\n this.activityLogger = activityLogger;\r\n\r\n const lengthCheckFields = [\r\n 'Path1',\r\n 'Path2',\r\n ];\r\n\r\n this.fields = _.compact([\r\n 'Path1',\r\n 'Path2',\r\n 'FinalUrls',\r\n 'TrackingUrlTemplate',\r\n 'UrlCustomParameters',\r\n 'FinalUrlSuffix',\r\n 'MobileFinalUrls',\r\n ]);\r\n\r\n if (isNativeAdsEnabled) {\r\n this.fields.push('NativePreference');\r\n }\r\n\r\n this.isVanityUrlEnabled = isVanityUrlEnabled;\r\n if (isVanityUrlEnabled) {\r\n this.fields.push('DisplayUrl');\r\n }\r\n\r\n KoSchema.properties(this, ResponsiveSearchAd, this.fields, _.defaults(model, {\r\n FinalUrls: [],\r\n }));\r\n\r\n dynamicTextExtension.extend(this, lengthCheckFields);\r\n parsedTextMaxLengthExtension.extend(this, lengthCheckFields, 'ResponsiveSearchAd');\r\n\r\n this.showNativeAdPreview = ko.computed(() => {\r\n if (isNativeAdsEnabled) {\r\n return self.NativePreference.isNativePreference();\r\n }\r\n\r\n return false;\r\n }, this);\r\n\r\n if (!isVanityUrlEnabled) {\r\n this.DisplayUrl = ko.computed(() => {\r\n return getFinalUrlDomain(_.first(self.FinalUrls()));\r\n });\r\n }\r\n\r\n this.errorMessage = ko.computed(() => {\r\n if (_.isEmpty(_.result(self.Path1(), 'trim')) && !_.isEmpty(self.Path2())) {\r\n return i18n.get('ExpandedTextAd_Path1RequiredWhenUsingPath2');\r\n }\r\n\r\n return '';\r\n });\r\n\r\n _.each(this.fields, (field) => {\r\n const logChange = _.once(() => {\r\n if (this.activityLogger) {\r\n this.activityLogger.signal(`ad field change: ${field}`, 'responsive search ad editor');\r\n }\r\n });\r\n\r\n this[field].subscribe(() => {\r\n logChange();\r\n }, this);\r\n });\r\n }\r\n\r\n initPreviewTab() {\r\n let defaultPreviewType = 'top';\r\n\r\n if (this.showNativeAdPreview()) {\r\n defaultPreviewType = 'native';\r\n }\r\n\r\n return defaultPreviewType;\r\n }\r\n}\r\n","/*eslint new-cap:0 */\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport {\r\n getTitlePreview,\r\n getDescPreview,\r\n combineDescriptions,\r\n} from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { evaluateAdCustomizers as newEvaluateAdCustomizers } from '@bingads-webui-campaign/ad-customizers';\r\nimport { evaluateAdCustomizers as legacyEvaluateAdCustomizers } from '@bingads-webui-campaign-legacy/crud-ad/service/adCustomizersUtils';\r\nimport { getExpandedTextAdDisplayUrl } from '@bingads-webui-campaign-legacy/crud-ad/service/displayUrl';\r\nimport instrumentation from '@bingads-webui-campaign-legacy/instrumentation/index';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport edmCampaign from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport jsDataCampaign from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport { i18nDummy } from '@bingads-webui-campaign-legacy/crud-ad/service/utils/i18n-dummy-vnext';\r\n\r\nconst i18nAdCustomizers = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/ad-customizers');\r\n\r\nconst {\r\n IsNewAdsAdCustomizerEditorEnabled,\r\n IsIfFunctionMilestone1Enabled,\r\n} = config.get('Permissions') || {};\r\n\r\nconst withNewAdCustomizerEditor = IsNewAdsAdCustomizerEditorEnabled ||\r\n IsIfFunctionMilestone1Enabled;\r\n\r\nconst evaluateAdCustomizers = (text, fieldName) => {\r\n if (withNewAdCustomizerEditor) {\r\n return newEvaluateAdCustomizers({\r\n text,\r\n field: fieldName,\r\n deps: {\r\n config,\r\n i18n: i18nAdCustomizers,\r\n countdownI18nDummy: i18nDummy,\r\n instrumentation,\r\n jsDataCampaign,\r\n edmCampaign,\r\n },\r\n adType: 'ResponsiveSearchAd',\r\n });\r\n }\r\n return legacyEvaluateAdCustomizers(text);\r\n};\r\n\r\n\r\nfunction getFormattedField(fields, model) {\r\n return _.chain(fields)\r\n .filter((field) => !_.isEmpty(_.result(model[`Parsed${field}`](), 'trim')))\r\n .map((field) => ({\r\n Text: model[`Parsed${field}`]().trim(),\r\n PinnedField: model[`Parsed${field}Position`](),\r\n }))\r\n .value();\r\n}\r\nexport default class ViewModel {\r\n constructor(adViewModel = {}) {\r\n const headlineFields = config.get('headlineFields');\r\n const descriptionFields = config.get('descriptionFields');\r\n const self = this;\r\n const fields = [\r\n 'Path1',\r\n 'Path2',\r\n ...headlineFields,\r\n ...descriptionFields,\r\n ..._.map(headlineFields, (i) => `${i}Position`),\r\n ..._.map(descriptionFields, (i) => `${i}Position`),\r\n ];\r\n\r\n this.placeHolders = adViewModel.placeholders;\r\n\r\n _.each(fields, (fieldName) => {\r\n self.createField(`Parsed${fieldName}`, adViewModel[fieldName]);\r\n });\r\n\r\n this.Text = ko.computed(() => {\r\n const descriptions = getFormattedField(descriptionFields, self);\r\n const descriptionText = getDescPreview(descriptions);\r\n\r\n return _.isEmpty(descriptionText) ? combineDescriptions(self.placeHolders.Description1, self.placeHolders.Description2) : descriptionText;\r\n });\r\n\r\n this.Title = ko.computed(() => {\r\n const headlines = getFormattedField(headlineFields, self);\r\n const headlinesText = getTitlePreview(headlines);\r\n\r\n return _.isEmpty(headlinesText) ? [\r\n self.placeHolders.Headline1,\r\n self.placeHolders.Headline2,\r\n self.placeHolders.Headline3,\r\n ].join(' | ') : headlinesText;\r\n });\r\n\r\n this.DisplayUrl = ko.computed(() => {\r\n return getExpandedTextAdDisplayUrl(_.first(adViewModel.FinalUrls()), adViewModel.DisplayUrl(), self.ParsedPath1(), self.ParsedPath2(), true);\r\n });\r\n\r\n this.DestinationUrl = ko.computed(() => {\r\n return adViewModel.FinalUrls();\r\n });\r\n }\r\n\r\n /**\r\n * Adds a property to this that holds parsed value of passed dependency\r\n * @param {string} fieldName - new property's name\r\n * @param {Object} dependency - observable that contains the raw value to be parsed for preview\r\n * @returns {undefined}\r\n */\r\n createField(fieldName, dependency) {\r\n const self = this;\r\n\r\n this[fieldName] = ko.observable(dependency());\r\n evaluateAdCustomizers(dependency(), fieldName).then((value) => {\r\n self[fieldName](value);\r\n });\r\n\r\n // We cannot directly use computedObservables because evaluateAdCustomizers is async\r\n dependency.subscribe(() => {\r\n evaluateAdCustomizers(dependency(), fieldName).then((value) => {\r\n self[fieldName](value);\r\n });\r\n });\r\n }\r\n}\r\n","import PreviewContainer from '@bingads-webui-campaign-legacy/crud-ad/view/adsPreview/container';\r\nimport topTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adsPreview/top.pug';\r\nimport sidebarTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adsPreview/sidebar.pug';\r\nimport mobileTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adsPreview/mobile.pug';\r\nimport nativeTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adsPreview/native.pug';\r\nimport PreviewViewModel from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsPreview/responsiveTextAd';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nexport default function buildPreview (viewModel) {\r\n let previewViewModel = new PreviewViewModel(viewModel);\r\n\r\n return new PreviewContainer({\r\n contentClass: '.Text .preview-container',\r\n tabs: [{\r\n top: {\r\n template: topTemplate,\r\n viewModel: previewViewModel,\r\n title: i18n.get('Ad_TopView'),\r\n },\r\n sidebar: {\r\n template: sidebarTemplate,\r\n viewModel: previewViewModel,\r\n title: i18n.get('Ad_SideView'),\r\n },\r\n mobile: {\r\n template: mobileTemplate,\r\n viewModel: previewViewModel,\r\n title: i18n.get('Ad_MobileView'),\r\n },\r\n }, {\r\n native: {\r\n template: nativeTemplate,\r\n viewModel: previewViewModel,\r\n title: i18n.get('Ad_NativeView'),\r\n },\r\n }],\r\n });\r\n}\r\n\r\n","import edm from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport jsdata from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport { ResponsiveSearchAdStrengthView } from '@bingads-webui-campaign/responsive-search-ad-strength';\r\nimport appState from '@bingads-webui-component-legacy/state/index';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\n\r\nconst i18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/responsive-search-ad');\r\n\r\nexport default function buildAdStrength(adId, viewModel, isForVNext = false, inlineSuggestionsEnabled = false) {\r\n return new ResponsiveSearchAdStrengthView({\r\n adId,\r\n edm,\r\n i18n,\r\n jsdata,\r\n viewModel,\r\n isForVNext,\r\n inlineSuggestionsEnabled,\r\n appState,\r\n token: pageContext.Token,\r\n odataPath: pageContext.BingAdsAdInsightWebApiUri,\r\n });\r\n}\r\n","/* eslint new-cap:0 */\r\nimport Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport {\r\n attachAIGenAssetContextualAttribute,\r\n} from '@bingads-webui-campaign/responsive-search-ad-strength';\r\nimport ViewModel from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/responsiveSearchAd';\r\nimport editorTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adsEditor/responsiveSearchAd.pug';\r\nimport editorHeadlineDescriptionOnlyTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adsEditor/responsiveSearchAdHeadlineDescriptionOnly.pug';\r\nimport { isCampaignEditorialError, isCampaignApiError } from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\nimport buildPreview from '@bingads-webui-campaign-legacy/crud-ad/view/adsPreview/responsiveTextAd';\r\nimport buildAdStrength from '@bingads-webui-campaign-legacy/crud-ad/view/adsStrength/responsiveSearchAd';\r\nimport uuid from '@bingads-webui-component-legacy/uuid/index';\r\nimport UrlEditor from '@bingads-webui-component-legacy/url-input/view/url-input';\r\nimport UrlOptions from '@bingads-webui-component-legacy/upgraded-url/view/urlOptionsV2';\r\nimport { HeadlinesView, DescriptionsView } from '@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/responsiveListField';\r\nimport { enableAdCustomizersHelpers } from './adCustomizersHelpers';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nconst permissions = config.get('Permissions') || {};\r\nconst fieldsWithPlaceHolder = [\r\n 'Path1',\r\n 'Path2',\r\n 'FinalUrls',\r\n 'MobileFinalUrls',\r\n 'Headline1',\r\n 'Headline2',\r\n 'Headline3',\r\n 'Description1',\r\n 'Description2',\r\n].concat(permissions.IsVanityUrlEnabled ? ['DisplayUrl'] : []);\r\nconst placeholders = _.object(fieldsWithPlaceHolder, _.map(fieldsWithPlaceHolder, (field) => {\r\n return i18n.get(`ResponsiveSearchAd_Placeholder_${field}`);\r\n}));\r\nconst fieldsWithLabel = ['Path1', 'Path2'];\r\nconst labels = _.object(fieldsWithLabel, _.map(fieldsWithLabel, (field) => {\r\n return i18n.get(`ResponsiveSearchAd_Label_${field}`);\r\n}));\r\nconst {\r\n IsExpandedTextAdV2Enabled,\r\n} = permissions;\r\n\r\n/*For initial stage, MT converts the expanded text ad to standard text ad and passes it to editorial.\r\n So editorial will still return adtitle instead of titlepart1/titlepart2 as it doesn't know anything about EXTA.\r\n Once editorial is on boarded, will remove following mapping,\r\n*/\r\n\r\n// [TODO] need update\r\nconst fieldMapping = {\r\n 'DisplayUrl': 'Path1',\r\n 'DestinationUrl': 'FinalUrls',\r\n};\r\n\r\nconst nameAttrs = {\r\n 'Headline0': 'Headline0',\r\n 'Headline1': 'Headline1',\r\n 'Headline2': 'Headline2',\r\n 'Headline3': 'Headline3',\r\n 'Headline4': 'Headline4',\r\n 'Headline5': 'Headline5',\r\n 'Headline6': 'Headline6',\r\n 'Headline7': 'Headline7',\r\n 'Headline8': 'Headline8',\r\n 'Headline9': 'Headline9',\r\n 'Headline10': 'Headline10',\r\n 'Headline11': 'Headline11',\r\n 'Headline12': 'Headline12',\r\n 'Headline13': 'Headline13',\r\n 'Headline14': 'Headline14',\r\n 'Description0': 'Description0',\r\n 'Description1': 'Description1',\r\n 'Description2': 'Description2',\r\n 'Description3': 'Description3',\r\n 'Path1': 'Ad.ExpandedTextAd.Path1',\r\n 'Path2': 'Ad.ExpandedTextAd.Path2',\r\n};\r\n\r\nexport default class View extends Backbone.View {\r\n initialize({\r\n showInline = false,\r\n editMode = false,\r\n model = null,\r\n // isNativeAdsEnabled = permissions.IsNativeAdsAllowed,\r\n isVanityUrlEnabled = permissions.IsVanityUrlEnabled,\r\n isTraditionalChinese = false,\r\n defaultLandingPageUrl = '',\r\n isForVNext = false,\r\n inlineSuggestionsEnabled = false,\r\n showLightbulb = false,\r\n scope = null,\r\n activityLogger,\r\n isImproveRSA = false,\r\n accountId = null,\r\n } = {}) {\r\n this.isForVNext = isForVNext;\r\n this.showInline = showInline;\r\n this.editMode = editMode;\r\n this.isNativeAdsEnabled = false; // TODO: enable when MT supports native ads for RSA\r\n this.isVanityUrlEnabled = isVanityUrlEnabled;\r\n this.isNativeAdsRebrandingEnabled = permissions.IsNativeAdsRebrandingEnabled;\r\n this.defaultLandingPageUrl = defaultLandingPageUrl;\r\n this.inlineSuggestionsEnabled = inlineSuggestionsEnabled;\r\n this.showLightbulb = showLightbulb;\r\n this.activityLogger = activityLogger;\r\n this.isImproveRSA = isImproveRSA;\r\n\r\n this.viewModel = new ViewModel({\r\n model,\r\n isNativeAdsEnabled: this.isNativeAdsEnabled,\r\n isVanityUrlEnabled,\r\n isTraditionalChinese,\r\n placeholders,\r\n defaultLandingPageUrl,\r\n IsExpandedTextAdV2Enabled,\r\n scope,\r\n activityLogger,\r\n });\r\n\r\n this.finalUrlEditor = new UrlEditor({\r\n url: _.first(_.result(this.model, 'FinalUrls')),\r\n ariaLabelledby: 'rsaFinalUrlLabel',\r\n ariaId: 'rsaFinalUrl',\r\n required: true,\r\n });\r\n this.mobileUrlEditor = new UrlEditor({\r\n url: _.first(_.result(this.model, 'MobileFinalUrls')),\r\n ariaLabelledby: 'rsaMobileUrlLabel',\r\n ariaId: 'rsaMobileUrl',\r\n });\r\n\r\n this.finalUrlEditor.on('urlChanged', (url) => {\r\n this.viewModel.FinalUrls(url ? [url] : []);\r\n });\r\n this.mobileUrlEditor.on('urlChanged', (url) => {\r\n this.viewModel.MobileFinalUrls(url ? [url] : []);\r\n });\r\n\r\n this.viewModel.FinalUrls.errors.subscribe((value) => {\r\n this.finalUrlEditor.hasErrors(!_.isEmpty(value));\r\n });\r\n\r\n this.viewModel.MobileFinalUrls.errors.subscribe((value) => {\r\n this.mobileUrlEditor.hasErrors(!_.isEmpty(value));\r\n });\r\n\r\n this.headlinesView = new HeadlinesView({ model: this.model ? this.model.Headlines : null, isForVNext, activityLogger, showLightbulb });\r\n this.descriptionsView = new DescriptionsView({ model: this.model ? this.model.Descriptions : null, isForVNext, activityLogger, showLightbulb });\r\n\r\n this.urlOptions = new UrlOptions({\r\n placeholderEnabled: true,\r\n showUurlTestTool: true,\r\n isForVNext,\r\n trackingTemplate: _.result(this.model, 'TrackingUrlTemplate'),\r\n finalUrlSuffix: _.result(this.model, 'FinalUrlSuffix'),\r\n customParameters: _.isEmpty(_.result(this.model, 'UrlCustomParameters')) ? undefined : _.clone(this.model.UrlCustomParameters),\r\n activityLogger,\r\n });\r\n\r\n this.urlOptions.on('testUurl', (fn, originalView) => {\r\n this.trigger('testUurl', fn, originalView);\r\n });\r\n\r\n this.previewContainer = buildPreview(_.extend({}, this.viewModel, this.headlinesView.viewModel, this.descriptionsView.viewModel));\r\n this.adStrengthContainer = buildAdStrength(this.editMode && this.viewModel.model ? this.viewModel.model.Id : undefined,\r\n _.extend({}, this.viewModel, this.headlinesView.viewModel, this.descriptionsView.viewModel, {accountId}),\r\n isForVNext, inlineSuggestionsEnabled);\r\n\r\n return this;\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .prefer-native-format': 'preferNativeAdFormat',\r\n };\r\n }\r\n\r\n render() {\r\n if (this.isImproveRSA === false) {\r\n this.$el.html(editorTemplate({\r\n i18n,\r\n uuid,\r\n isNativeAdsEnabled: this.isNativeAdsEnabled,\r\n isVanityUrlEnabled: this.isVanityUrlEnabled,\r\n isNativeAdsRebrandingEnabled: this.isNativeAdsRebrandingEnabled,\r\n nameAttrs,\r\n labels,\r\n placeholders: {},\r\n domainWatermark: placeholders.FinalUrls,\r\n }));\r\n } else {\r\n this.$el.html(editorHeadlineDescriptionOnlyTemplate({\r\n i18n,\r\n }));\r\n }\r\n\r\n // [TODO] delete this debug line\r\n window.rv = this.viewModel;\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n this.$('.final-url').empty().append(this.finalUrlEditor.render().el);\r\n this.$('.mobile-url').empty().append(this.mobileUrlEditor.render().el);\r\n this.$('.headlines-container').empty().append(this.headlinesView.render().el);\r\n this.$('.descriptions-container').empty().append(this.descriptionsView.render().el);\r\n this.$('.ext-ad-url-options').empty().append(this.urlOptions.render().el);\r\n\r\n this.$('.final-url input.url-field').attr('name', 'FinalUrls');\r\n this.$('.mobile-url input.url-field').attr('name', 'MobileFinalUrls');\r\n\r\n this.$('.preview-container').empty().append(this.previewContainer.render().el);\r\n this.previewContainer.selectedPanel(this.viewModel.initPreviewTab());\r\n\r\n this.$('.ad-strength-container').empty().append(this.adStrengthContainer.el);\r\n\r\n\r\n if (this.showLightbulb) {\r\n this.enableAIGenAssetContextualAttribute();\r\n }\r\n\r\n this.enableAdCustomizersHelpersForRSA();\r\n\r\n return this;\r\n }\r\n\r\n remove() {\r\n if (this.urlOptions) {\r\n this.urlOptions.remove();\r\n }\r\n this.finalUrlEditor.remove();\r\n this.mobileUrlEditor.remove();\r\n this.headlinesView.remove();\r\n this.descriptionsView.remove();\r\n this.previewContainer.remove();\r\n this.adStrengthContainer.remove();\r\n super.remove();\r\n }\r\n\r\n preferNativeAdFormat() {\r\n this.previewContainer.selectedPanel(this.viewModel.showNativeAdPreview() ? 'native' : 'top');\r\n }\r\n\r\n validateViewModel() {\r\n const isValid = this.viewModel.validate();\r\n\r\n if (!isValid) {\r\n _.each(this.viewModel.fields, (field) => {\r\n if (!this.viewModel[field].isValid()) {\r\n if (this.activityLogger) {\r\n this.activityLogger.signal(`ad field invalid: ${field}`, 'responsive search ad editor');\r\n }\r\n }\r\n });\r\n }\r\n\r\n return isValid;\r\n }\r\n\r\n validate() {\r\n return _.reduce([\r\n this.validateViewModel(),\r\n this.headlinesView.validate(),\r\n this.descriptionsView.validate(),\r\n _.isEmpty(this.viewModel.errorMessage()),\r\n this.urlOptions ? this.urlOptions.isValid() : true,\r\n ], (prev, next) => {\r\n return prev && next;\r\n }, true);\r\n }\r\n\r\n resetEditMode(mode) {\r\n this.editMode = mode;\r\n }\r\n\r\n toObject() {\r\n let params = _.omit(\r\n _.extend(this.viewModel.toObject(), this.urlOptions ? this.urlOptions.toObject() : {}),\r\n this.isVanityUrlEnabled ? [] : ['DisplayUrl'],\r\n );\r\n\r\n params.Headlines = this.headlinesView.toObject();\r\n params.Descriptions = this.descriptionsView.toObject();\r\n\r\n const api = this.showInline ? 'odata' : 'bulk';\r\n const arrayEmptyValue = api === 'odata' ? [] : null;\r\n const stringEmptyValue = api === 'odata' ? '' : null;\r\n\r\n //bulk API needs use 'delete_vlaue' to indicate deleting a value, in jsdata bulk adapter, we will replace null with 'delete_value' to remove value\r\n if (this.editMode) {\r\n const nullableArrayFields = [\r\n 'FinalUrls',\r\n 'MobileFinalUrls',\r\n 'UrlCustomParameters',\r\n ];\r\n\r\n const nullableStringFields = _.compact([\r\n 'TrackingUrlTemplate',\r\n 'FinalUrlSuffix',\r\n 'Path1',\r\n 'Path2',\r\n ]);\r\n\r\n _.each(nullableArrayFields, (prop) => {\r\n if (_.isEmpty(params[prop])) {\r\n params[prop] = arrayEmptyValue;\r\n }\r\n });\r\n\r\n _.each(nullableStringFields, (prop) => {\r\n if (_.isEmpty(params[prop])) {\r\n params[prop] = stringEmptyValue;\r\n }\r\n });\r\n }\r\n\r\n return params;\r\n }\r\n\r\n // [TODO] need update\r\n handleApiErrors(errors) {\r\n const parsedErrors = _.reduce(errors, (memo, error) => {\r\n if (_.has(error, 'property') && isCampaignEditorialError(error)) {\r\n // This mapping is for editorial errors. Once editorial is on boarded, will remove following mapping. See bug 576573.\r\n error.property = fieldMapping[error.property] || error.property;\r\n return [...memo, error];\r\n }\r\n return [...memo, error];\r\n }, []);\r\n\r\n this.viewModel.errors.add(parsedErrors);\r\n this.headlinesView.viewModel.errors.add(parsedErrors);\r\n this.descriptionsView.viewModel.errors.add(parsedErrors);\r\n if (this.headlinesView.viewModel.errors().length === 0 || this.descriptionsView.viewModel.errors().length === 0) {\r\n this.viewModel.errors.clear(isCampaignApiError);\r\n }\r\n const errorFields = _.compact(['TrackingUrlTemplate', 'UrlCustomParameters', 'FinalUrlSuffix']);\r\n let errorObject = _.object(errorFields, _.map(errorFields, (key) => {\r\n return this.viewModel[key].errors();\r\n }));\r\n\r\n this.urlOptions.handleApiErrors(errorObject);\r\n }\r\n\r\n clearApiErrors() {\r\n this.viewModel.errors.clear(isCampaignApiError);\r\n this.urlOptions.clearApiErrors();\r\n }\r\n\r\n /**\r\n * Registers AI generated asset contextual attribute popup to listen for key/mouse events\r\n * @returns {undefined}\r\n */\r\n enableAIGenAssetContextualAttribute() {\r\n let self = this;\r\n\r\n _.each(_.range(15), (i) => {\r\n const element = self.$(`.iconba.iconba-Lightbulb.Headline${i}-AIGeneratedAsset`);\r\n\r\n attachAIGenAssetContextualAttribute(_.extend({\r\n element,\r\n i18n,\r\n isAIGeneratedAsset: !this.isImproveRSA,\r\n }));\r\n });\r\n\r\n _.each(_.range(4), (i) => {\r\n const element = self.$(`.iconba.iconba-Lightbulb.Description${i}-AIGeneratedAsset`);\r\n\r\n attachAIGenAssetContextualAttribute(_.extend({\r\n element,\r\n i18n,\r\n isAIGeneratedAsset: !this.isImproveRSA,\r\n }));\r\n });\r\n }\r\n\r\n /**\r\n * Registers ad customizers helpers to listen for key/mouse events on a number of form fields to pop themselves up when applicable\r\n * @returns {undefined}\r\n */\r\n enableAdCustomizersHelpersForRSA() {\r\n const customizableHeadlineFields = ['Headline0', 'Headline1', 'Headline2', 'Headline3', 'Headline4', 'Headline5', 'Headline6', 'Headline7', 'Headline8', 'Headline9', 'Headline10', 'Headline11', 'Headline12', 'Headline13', 'Headline14'];\r\n const customizableDescriptionFields = ['Description0', 'Description1', 'Description2', 'Description3'];\r\n const customizableFields = ['Path1', 'Path2'];\r\n\r\n enableAdCustomizersHelpers(this.headlinesView, customizableHeadlineFields, nameAttrs, 'ResponsiveSearchAd', this.$('> .ac-container'));\r\n enableAdCustomizersHelpers(this.descriptionsView, customizableDescriptionFields, nameAttrs, 'ResponsiveSearchAd', this.$('> .ac-container'));\r\n enableAdCustomizersHelpers(this, customizableFields, nameAttrs, 'ResponsiveSearchAd');\r\n }\r\n}\r\n","/* eslint-disable no-invalid-this */\r\n/* eslint-disable no-unused-vars */\r\n/* global _TL_ */\r\nimport Backbone from 'backbone';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { ThemeProvider } from 'react-jss';\r\nimport edm from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport jsdata from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport SharedRepository from '@bingads-webui-campaign-legacy/adextension-shared/service/repository';\r\nimport dataModelUtil from '@bingads-webui-campaign-legacy/adextension-image/util/dataModelConvert';\r\nimport { DisclaimerAdExtension } from '@bingads-webui-campaign/campaign-ui-schemas';\r\nimport { isCampaignEditorialError } from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport summaryDataContextManager from '@bingads-webui-static-legacy/summary/SummaryDataContextManager';\r\nimport { Repository } from '@bingads-webui-campaign-legacy/adextension-image/service/repository';\r\nimport { ResponsiveSearchAdEditor, formatRSAObject } from '@bingads-webui-campaign-react/responsive-search-ad-editor';\r\nimport { AdStrengthRepository } from '@bingads-webui-campaign-react/responsive-search-ad-suggestion';\r\nimport { ImageExtensionsPane } from '@bingads-webui-campaign-react/image-extensions-pane';\r\nimport { instrumentationScenarios } from '@bingads-webui-campaign/ad-creator-tools-instrumentation';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { InstrumentationContext } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { PreferenceContext } from '@bingads-webui-react/preference-context';\r\nimport { cloneDeep } from '@bingads-webui-universal/primitive-utilities';\r\nimport { notificationApi } from '@bingads-webui-campaign/notification-center';\r\nimport { mergeI18n } from '@bingads-webui-campaign-react/i18n-merger';\r\nimport { PreferenceService } from '@bingads-webui/preference-service';\r\nimport { getTabbableNodes } from '@bingads-webui-react/focus-lock';\r\n\r\n// [TODO] need update\r\nconst fieldMapping = {\r\n 'DisplayUrl': 'Path1',\r\n 'DestinationUrl': 'FinalUrls',\r\n};\r\n\r\nconst inlineErrorFields = [\r\n 'Headlines',\r\n 'Descriptions',\r\n 'FinalUrls',\r\n 'DisplayUrl',\r\n 'Path1',\r\n 'Path2',\r\n 'MobileFinalUrls',\r\n 'TrackingUrlTemplate',\r\n 'FinalUrlSuffix',\r\n 'UrlCustomParameters',\r\n 'Headline0',\r\n 'Headline1',\r\n 'Headline2',\r\n 'Headline3',\r\n 'Headline4',\r\n 'Headline5',\r\n 'Headline6',\r\n 'Headline7',\r\n 'Headline8',\r\n 'Headline9',\r\n 'Headline10',\r\n 'Headline11',\r\n 'Headline12',\r\n 'Headline13',\r\n 'Headline14',\r\n 'Description0',\r\n 'Description1',\r\n 'Description2',\r\n 'Description3',\r\n];\r\n\r\nexport default class View extends Backbone.View {\r\n /**\r\n * Initialize ad editor to create ad.\r\n *\r\n * @param {Object} options - options with data to initialize the editor.\r\n *\r\n * @param {Object} options.model - Backbone.Model with the model information of an existing ad,\r\n * used get the data to edit existing ad.\r\n *\r\n * @param {function} options.scope - gets the scope, used to get the campaign and adgroup ids.\r\n *\r\n * @return {Promise} - Promise of save request.\r\n */\r\n initialize({\r\n scope,\r\n editMode = false,\r\n model = {},\r\n showInline = false,\r\n instrumentation,\r\n perfMarker,\r\n timeZone,\r\n permissions,\r\n serverContext,\r\n logActivity = _.noop,\r\n activityLogger,\r\n externalCachedImageExtensionChanges,\r\n onCachedImageExtensionChanged,\r\n showImgExtWithoutAdGroupID = false,\r\n preferenceService,\r\n }) {\r\n this.preferenceService = preferenceService;\r\n this.ad = { data: cloneDeep(model) || {} };\r\n this.editMode = editMode;\r\n this.showInitialErrors = !_.isEmpty(model);\r\n this.showInline = showInline;\r\n this.cachedAd = {};\r\n this.apiErrors = [];\r\n this.viewModel = {\r\n errors: () => this.apiErrors,\r\n };\r\n this.showImgExtWithoutAdGroupID = !!permissions.dynamic.RSAImageExtInAdGroupCreation && showImgExtWithoutAdGroupID;\r\n this.adStrengthRepository = new AdStrengthRepository({ edm, jsdata });\r\n\r\n this.instrumentation = instrumentation;\r\n this.onCachedImageExtensionChanged = onCachedImageExtensionChanged;\r\n\r\n if (perfMarker) {\r\n this.perfMarker = perfMarker.createChild('ResponsiveSearchAdEditor', { autoEnd: true });\r\n }\r\n\r\n this.timeZone = timeZone;\r\n this.permissions = permissions;\r\n this.logActivity = logActivity;\r\n this.scope = scope;\r\n this.returnSuggestionIds = [];\r\n this.applySuggestionIds = [];\r\n this.viewSuggestionIds = [];\r\n this.logAppliedSuggestionsFunc = _.noop;\r\n this.assetLibraryEventHandler = {};\r\n this.clickViewIdeas = [];\r\n this.serverContext = serverContext;\r\n this.extensionsSharedRepos = new SharedRepository({\r\n schema: DisclaimerAdExtension,\r\n afterChangeComitted: _.noop,\r\n });\r\n this.scope.subscribe(() => {\r\n if (this.scope().adGroupId != null) {\r\n this.render();\r\n }\r\n }, this);\r\n this.activityLogger = activityLogger;\r\n\r\n this.enableRSAExpansion =\r\n !!permissions.dynamic.RSAImageExtInAdGroupCreation ||\r\n !!permissions.dynamic.RSAImageExtInCampaignCreation ||\r\n this.showInline;\r\n\r\n this.cid = config.get('CurrentAccount') ? config.get('CurrentAccount').AdvertiserCustomerID : config.get('advertiserCustomerID');\r\n this.aid = _.result(config.get('CurrentAccount'), 'Id');\r\n this.adContext = {\r\n advertiserCustomerId: this.cid,\r\n accountId: this.aid,\r\n };\r\n\r\n if (this.enableRSAExpansion) {\r\n this.imageExtRepository = new Repository({\r\n schema: window.globalLegacySchema.get('ImageAdExtension'),\r\n afterChangeComitted: () => {\r\n summaryDataContextManager.updateContext(['AdGroupAdExtensionsGrid']);\r\n },\r\n });\r\n this.imageExtRepository.association.createRequestFactory('adgroup');\r\n // AddImage component is using both new i18n and old i18n resource data, so need to merge.\r\n this.legacyI18n = mergeI18n(\r\n window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/audience-campaign'),\r\n this.options.newI18n,\r\n );\r\n\r\n this.theme = config.get('theme');\r\n\r\n this.oDataConfig = {\r\n odataRootUrl: config.get('CampaignAzureDomain'),\r\n odataPath: config.get('odata.url') + config.get('odata.path'),\r\n odataToken: config.get('odata.token'),\r\n };\r\n\r\n this.cachedImageExtensionChanges = externalCachedImageExtensionChanges ? externalCachedImageExtensionChanges : {\r\n current: [],\r\n added: [],\r\n removed: [],\r\n updated: [],\r\n };\r\n\r\n this.maxImageExtensionsPerAdGroup = config.get('Feature').AdExtension.MaxSelectedImagesPerAdGroupOrCampaignForV2;\r\n this.dateFormat = _.get(pageContext, ['CurrentUser', 'CultureDateTimeFormat', 'ShortDatePattern']);\r\n this.timeZone = _.get(pageContext, ['CurrentAccount', 'TimeZone']);\r\n }\r\n }\r\n\r\n updateSuggestionMeasurement({\r\n returnSuggestionIds,\r\n applySuggestionIds,\r\n viewSuggestionIds,\r\n clickViewIdeas,\r\n }) {\r\n if (returnSuggestionIds && returnSuggestionIds.length > 0) {\r\n this.returnSuggestionIds = _.uniq(this.returnSuggestionIds.concat(returnSuggestionIds));\r\n }\r\n if (applySuggestionIds && applySuggestionIds.length > 0) {\r\n this.applySuggestionIds = _.uniq(this.applySuggestionIds.concat(applySuggestionIds));\r\n }\r\n if (viewSuggestionIds && viewSuggestionIds.length > 0) {\r\n this.viewSuggestionIds = _.uniq(this.viewSuggestionIds.concat(viewSuggestionIds));\r\n }\r\n if (clickViewIdeas && clickViewIdeas.length > 0) {\r\n this.clickViewIdeas = _.uniq(this.clickViewIdeas.concat(clickViewIdeas));\r\n }\r\n }\r\n\r\n saveLogAppliedSuggestionsFunc(func) {\r\n this.logAppliedSuggestionsFunc = func;\r\n }\r\n\r\n saveAssetLibraryEventHandler(eventHandler) {\r\n this.assetLibraryEventHandler = eventHandler;\r\n }\r\n\r\n fetchAdStrengthV2(ad, campaignId, adGroupId) {\r\n return this.adStrengthRepository.fetchAdStrengthV2(ad, campaignId, adGroupId);\r\n }\r\n\r\n fetchDisclaimerInfo() {\r\n if (this.scope().campaignId != null && this.scope().adGroupId !== null && this.permissions.IsDisclaimerForRSAEnabled) {\r\n let params = {\r\n queryParameters: {\r\n entitySet: edm.currentAccount.Campaigns,\r\n },\r\n bypassCache: true,\r\n };\r\n\r\n return jsdata.Campaign.find(this.scope().campaignId, params)\r\n .then((data) => {\r\n const hasDisclaimer = _.result(_.find(data.CampaignSettings, (setting) => {\r\n return setting['@odata.type'] === '#Model.DisclaimerSetting';\r\n }), 'DisclaimerAdsEnabled');\r\n\r\n if (hasDisclaimer) {\r\n const scope = Object.create({\r\n campaignId: this.scope().campaignId,\r\n });\r\n\r\n return this.extensionsSharedRepos.association.findAll({\r\n where: scope,\r\n }).then((disclaimerdata) => {\r\n if (disclaimerdata && disclaimerdata.length > 0) {\r\n return {\r\n hasDisclaimer: true,\r\n disclaimerData: disclaimerdata[0],\r\n };\r\n }\r\n return { hasDisclaimer: false };\r\n });\r\n }\r\n return { hasDisclaimer: false };\r\n });\r\n // TODO : catch and finally\r\n }\r\n return Promise.resolve({ hasDisclaimer: false });\r\n }\r\n\r\n focusErrorFocusableElement(targetError) {\r\n const panel = targetError.closest('.collapse-panel');\r\n\r\n if (!panel) {\r\n return;\r\n }\r\n\r\n const focusableElements = getTabbableNodes(panel);\r\n\r\n if (focusableElements && focusableElements.length > 0) {\r\n focusableElements[0].focus();\r\n }\r\n }\r\n\r\n validate() {\r\n this.showInitialErrors = true;\r\n if (!_.isEmpty(this.cachedAd.data) && !this.cachedAd.incomplete && _.filter(this.cachedAd.errorFields, (errorField) => _.includes(inlineErrorFields, errorField)).length === 0) {\r\n return true;\r\n }\r\n\r\n // this.render({ onFirstErrorHandler: this.focusErrorFocusableElement });\r\n this.render();\r\n\r\n this.logActivity(JSON.stringify(this.cachedAd.errors), 'responsive search ad editor');\r\n return false;\r\n }\r\n\r\n resetEditMode(mode) {\r\n this.editMode = mode;\r\n this.showInitialErrors = this.editMode;\r\n }\r\n\r\n toObject() {\r\n const params = _.omit(formatRSAObject(this.cachedAd.data), this.permissions.IsVanityUrlEnabled ? [] : ['DisplayUrl']);\r\n const api = this.showInline ? 'odata' : 'bulk';\r\n const arrayEmptyValue = api === 'odata' ? [] : null;\r\n const stringEmptyValue = api === 'odata' ? '' : null;\r\n\r\n // bulk API needs use 'delete_vlaue' to indicate deleting a value, in jsdata bulk adapter, we will replace null with 'delete_value' to remove value\r\n if (this.editMode) {\r\n const nullableArrayFields = [\r\n 'FinalUrls',\r\n 'MobileFinalUrls',\r\n 'UrlCustomParameters',\r\n ];\r\n\r\n const nullableStringFields = _.compact([\r\n 'TrackingUrlTemplate',\r\n 'FinalUrlSuffix',\r\n 'Path1',\r\n 'Path2',\r\n ]);\r\n\r\n _.each(nullableArrayFields, (prop) => {\r\n if (_.isEmpty(params[prop])) {\r\n params[prop] = arrayEmptyValue;\r\n }\r\n });\r\n\r\n _.each(nullableStringFields, (prop) => {\r\n if (_.isEmpty(params[prop])) {\r\n params[prop] = stringEmptyValue;\r\n }\r\n });\r\n }\r\n\r\n return params;\r\n }\r\n\r\n // [TODO] need update\r\n handleApiErrors(errors) {\r\n const parsedErrors = _.map(errors, (error) => {\r\n if (_.has(error, 'property') && isCampaignEditorialError(error)) {\r\n // This mapping is for editorial errors. Once editorial is on boarded, will remove following mapping. See bug 576573.\r\n error.property = fieldMapping[error.property] || error.property;\r\n }\r\n return _.extend(error, {\r\n Property: error.property,\r\n Message: error.message,\r\n Code: error.code,\r\n });\r\n });\r\n\r\n this.apiErrors.push(...parsedErrors);\r\n this.render();\r\n }\r\n\r\n clearApiErrors() {\r\n this.apiErrors = [];\r\n }\r\n\r\n onChanged(ad) {\r\n this.cachedAd = ad;\r\n }\r\n\r\n triggerTestUurl() {\r\n return (fn, originalView) => this.trigger('testUurl', fn, originalView);\r\n }\r\n\r\n // Forcing the view to re-render with isSaving set to true and then false\r\n triggerSaving() {\r\n this.isSaving = true;\r\n this.render();\r\n this.isSaving = false;\r\n this.render();\r\n }\r\n\r\n triggerCanceling() {\r\n this.isCanceling = true;\r\n this.render();\r\n this.isCanceling = false;\r\n this.render();\r\n }\r\n\r\n /**\r\n * Render the view.\r\n * @return {View} This object.\r\n */\r\n render({ onFirstErrorHandler } = { onFirstErrorHandler: _.noop}) {\r\n // campaign id, ad group id will be changed when using campaign/adgroup selector\r\n this.adContext = {\r\n ...this.adContext,\r\n adGroupId: this.scope().adGroupId,\r\n campaignId: this.scope().campaignId,\r\n };\r\n\r\n ReactDOM.render(\r\n // eslint-disable-next-line no-extra-parens\r\n (\r\n \r\n \r\n \r\n \r\n {\r\n this.setPreviewImageCallback = cb;\r\n }}\r\n activityLogger={this.activityLogger}\r\n perfMarker={this.perfMarker}\r\n scope={this.scope()}\r\n serverContext={this.serverContext}\r\n editMode={this.editMode}\r\n isSaving={this.isSaving}\r\n isCanceling={this.isCanceling}\r\n onFirstErrorHandler={onFirstErrorHandler}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n ),\r\n this.el,\r\n );\r\n\r\n return this;\r\n }\r\n\r\n onPreviewImageChanged = (imageUrl) => {\r\n if (this.setPreviewImageCallback) {\r\n this.setPreviewImageCallback(imageUrl);\r\n }\r\n };\r\n\r\n onImageExtensionChanged = (changes) => {\r\n if (this.showImgExtWithoutAdGroupID && this.onCachedImageExtensionChanged) {\r\n this.onCachedImageExtensionChanged(changes);\r\n }\r\n this.cachedImageExtensionChanges = changes;\r\n };\r\n\r\n logImageExtensionUpdates({\r\n scope = {},\r\n adId,\r\n currentItems,\r\n createdExtModels,\r\n removedExtModels,\r\n updatedExtModels,\r\n }) {\r\n const createdImageExtensionsIds = _.pluck(createdExtModels, 'Id');\r\n const removedImageExtensionsIds = _.pluck(removedExtModels, 'Id');\r\n const updatedImageExtensionsIds = _.filter(updatedExtModels, (ext) => ext.Id);\r\n let msgsArr = [\r\n `SavedAdId:${adId}`,\r\n `AdGroupId:${scope.adGroupId}`,\r\n ];\r\n\r\n let hasDisabledImages = false;\r\n const usedImagesSources = {};\r\n let previousExistingImgExtsCount = 0;\r\n\r\n for (let i = 0; i < _.size(currentItems); i += 1) {\r\n const item = currentItems[i];\r\n\r\n if (item.Id) {\r\n previousExistingImgExtsCount += 1;\r\n } else if (item.disabled) {\r\n hasDisabledImages = true;\r\n } else {\r\n usedImagesSources[item.source] = true;\r\n }\r\n }\r\n\r\n msgsArr.push(\r\n ...[\r\n `ExistingImgExtsCount:${previousExistingImgExtsCount + _.size(removedImageExtensionsIds)}`,\r\n `CreatedImgExtsIds:${createdImageExtensionsIds.join('-')}`,\r\n `RemovedImgExtsIds:${removedImageExtensionsIds.join('-')}`,\r\n `UpdatedImgExtsIds:${updatedImageExtensionsIds.join('-')}`,\r\n ],\r\n );\r\n\r\n _.each(usedImagesSources, (val, key) => {\r\n msgsArr.push(`UsedImageFrom${key}`);\r\n });\r\n\r\n msgsArr = _.compact(msgsArr.concat([\r\n hasDisabledImages && 'UsedImageFromDisabled',\r\n ]));\r\n\r\n this.logActivity(`${msgsArr.join(';')};`);\r\n }\r\n\r\n saveImageExtensionsToServer({ adId, perfMarker }) {\r\n const { newI18n } = this.options;\r\n\r\n this.logActivity('Check image extensions');\r\n\r\n const defaultParams = {\r\n where: {\r\n adGroupId: this.scope().adGroupId,\r\n adGroupName: this.scope().adGroupName,\r\n campaignId: this.scope().campaignId,\r\n campaignName: this.scope().campaignName,\r\n },\r\n };\r\n\r\n if (_.isEmpty(this.cachedImageExtensionChanges.added) &&\r\n _.isEmpty(this.cachedImageExtensionChanges.removed) && _.isEmpty(this.cachedImageExtensionChanges.updated)) {\r\n return Promise.resolve(true);\r\n }\r\n\r\n const saveImgsExtPerfMarker = perfMarker.createChild('Process_ImageExtensions_Success');\r\n\r\n saveImgsExtPerfMarker.willInit();\r\n\r\n const createImageExtensionsPromise = _.map(this.cachedImageExtensionChanges.added, (ext) => {\r\n return this.imageExtRepository.extension.create(ext);\r\n });\r\n\r\n return Promise.all(createImageExtensionsPromise)\r\n .then((newExtensions) => {\r\n const newExtIds = _.pluck(newExtensions, 'Id');\r\n\r\n _.each(this.cachedImageExtensionChanges.added, (item, index) => {\r\n item.Id = newExtIds[index];\r\n });\r\n\r\n let deletePromise = Promise.resolve(true);\r\n\r\n if (!_.isEmpty(this.cachedImageExtensionChanges.removed)) {\r\n deletePromise =\r\n this.imageExtRepository.association.destroyAll({\r\n where: {\r\n id: { in: _.pluck(this.cachedImageExtensionChanges.removed, 'Id') },\r\n ...defaultParams.where,\r\n },\r\n });\r\n }\r\n\r\n return deletePromise\r\n .then(() => {\r\n const params = {\r\n where: {\r\n id: { in: newExtIds },\r\n ...defaultParams.where,\r\n },\r\n };\r\n const updatePromise = _.map(this.cachedImageExtensionChanges.updated, (ext) => {\r\n return this.imageExtRepository.extension.update(ext);\r\n });\r\n\r\n return Promise.all(updatePromise).then(() => {\r\n return this.imageExtRepository.association.updateAll(null, params);\r\n });\r\n });\r\n })\r\n .then(() => {\r\n this.logActivity('Updated image extension successfully');\r\n saveImgsExtPerfMarker.done();\r\n })\r\n .catch((err) => {\r\n // do nothing, so that this is non-blocking\r\n this.logActivity(`Updated image extension with failures, err: ${JSON.stringify(err)}`);\r\n\r\n const pageName = `${newI18n.getString(_TL_('Ads & extensions'))}`;\r\n\r\n notificationApi.showWarning(newI18n.getString(\r\n _TL_('There were errors when processing your image extension updates. To ensure that all changes are up to date or to manually create a new image extension, review your image extensions in the {{page}} page.'),\r\n {\r\n page: pageName,\r\n }));\r\n })\r\n .finally(() => {\r\n this.logImageExtensionUpdates({\r\n adId,\r\n currentItems: this.cachedImageExtensionChanges.current,\r\n createdExtModels: this.cachedImageExtensionChanges.added,\r\n removedExtModels: this.cachedImageExtensionChanges.removed,\r\n updatedExtModels: this.cachedImageExtensionChanges.updated,\r\n scope: defaultParams.where,\r\n });\r\n });\r\n }\r\n\r\n renderImageExtension(extraInfo) {\r\n if (this.adContext.adGroupId || this.showImgExtWithoutAdGroupID) {\r\n const imagePathFromConfig = config.get('imagePath');\r\n\r\n return this.enableRSAExpansion && ;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n remove() {\r\n ReactDOM.unmountComponentAtNode(this.el);\r\n return super.remove();\r\n }\r\n}\r\n","/* eslint-disable no-unused-vars */\r\n/* global _TL_ */\r\nimport Backbone from 'backbone';\r\nimport _ from 'underscore';\r\nimport { ThemeProvider } from 'react-jss';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { PermissionsContext } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { InstrumentationContext } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { AdEditor } from '@bingads-webui-campaign-react/xandr-video-campaign-shared-components';\r\nimport { getVerifiedTrackingSettings } from '@bingads-webui-campaign-react/xandr-display-ads-campaign-shared-components';\r\nimport { Scenario, Activity } from '@bingads-webui-react/hoc-with-signal';\r\nimport { newVideoFromGridObject } from '@bingads-webui-campaign-react/image-experience-video-part';\r\nimport { PreferenceContext } from '@bingads-webui-react/preference-context';\r\nimport { isXandrServing } from '@bingads-webui-campaign-react/constants';\r\n\r\nexport default class View extends Backbone.View {\r\n initialize({\r\n scope,\r\n editMode = false,\r\n model = {},\r\n showInline = false,\r\n instrumentation,\r\n perfMarker,\r\n timeZone,\r\n permissions,\r\n logActivity = _.noop,\r\n activityLogger,\r\n campaignId,\r\n adGroupId,\r\n serverContext,\r\n preferenceService,\r\n biddingStrategyType = '', // bidding scheme from the page when users select the exact campaign or adgroup\r\n triggerCancel,\r\n triggerClose,\r\n handleSave,\r\n isMultiAdFormatAd,\r\n }) {\r\n this.scope = scope;\r\n this.editMode = editMode;\r\n this.showInline = showInline;\r\n this.perfMarker = perfMarker;\r\n this.instrumentation = instrumentation;\r\n this.model = model;\r\n this.apiErrors = [];\r\n this.campaignId = campaignId || this.scope().campaignId;\r\n this.adGroupId = adGroupId || this.scope().adGroupId;\r\n this.activityLogger = activityLogger;\r\n this.resetFields = false;\r\n this.permissions = permissions;\r\n this.serverErrors = null;\r\n this.serverContext = serverContext;\r\n this.allowedVideoTypes = ['VideoMedia16X9'];\r\n this.preferenceService = preferenceService;\r\n this.savedAdVideo = (model && model.Videos && this.getVideoAdModel(model.Videos)) || null;\r\n this.verifiedTrackingSetting = this.editMode ? getVerifiedTrackingSettings(model) : {};\r\n this.triggerCancel = triggerCancel;\r\n this.triggerClose = triggerClose;\r\n this.handleSave = handleSave;\r\n this.scenario = 'Edit-VideoAds';\r\n this.biddingScheme = this.getBiddingScheme({ model, editMode, directBiddingStrategyType: biddingStrategyType });\r\n this.campaignSettings = this.getCampaignSettings({ model, editMode });\r\n this.campaignSubType = this.getCampaignSubType({ model, editMode });\r\n this.isXandrServingCampaign = isXandrServing(\r\n this.campaignSubType,\r\n this.campaignSettings);\r\n this.savedAdModel = {\r\n isValid: true,\r\n isDirty: false,\r\n data: [{\r\n isDirty: false,\r\n isValid: true,\r\n data: {\r\n FinalUrls: this.editMode ? model && model.FinalUrls : [],\r\n TrackingUrlTemplate: this.editMode ? model && model.TrackingUrlTemplate : '',\r\n FinalUrlSuffix: this.editMode ? model && model.FinalUrlSuffix : '',\r\n UrlCustomParameters: this.editMode ? model && model.UrlCustomParameters : {},\r\n ImpressionTrackingUrls: this.editMode ? model && model.ImpressionTrackingUrls : [],\r\n video: this.editMode ? newVideoFromGridObject(this.savedAdVideo) : null,\r\n ...this.verifiedTrackingSetting,\r\n },\r\n uid: Math.random(),\r\n Id: this.editMode ? model.Id : null,\r\n }],\r\n currentPageIndex: 1,\r\n };\r\n\r\n this.isMultiAdFormatAd = isMultiAdFormatAd;\r\n\r\n this.scenario = 'Edit-BrandAwarnessVideoAds'// eslint-disable-line\r\n\r\n this.updatedAdModel = this.savedAdModel;\r\n\r\n this.oDataConfig = {\r\n odataRootUrl: config.get('CampaignAzureDomain'),\r\n odataPath: config.get('odata.url') + config.get('odata.path'),\r\n odataToken: config.get('odata.token'),\r\n oDataToken: config.get('odata.token'),\r\n oDataPath: config.get('odata.url') + config.get('odata.path'),\r\n };\r\n\r\n this.theme = config.get('theme');\r\n this.aid = _.result(config.get('CurrentAccount'), 'Id');\r\n this.cid = _.result(config.get('CurrentCustomer'), 'Id');\r\n }\r\n\r\n getBiddingScheme({ model, editMode, directBiddingStrategyType = '' }) {\r\n if (editMode) {\r\n return _.get(model, 'BiddingScheme');\r\n }\r\n\r\n // ad panel is from ad page with exact campaign or campaign with adgroup\r\n if (!_.isEmpty(directBiddingStrategyType)) {\r\n return { Type: directBiddingStrategyType };\r\n }\r\n\r\n const biddingStrategyType = _.get(this.scope(), 'biddingStrategyType');\r\n\r\n return _.isString(biddingStrategyType) && !_.isEmpty(biddingStrategyType) ? { Type: biddingStrategyType } : {};\r\n }\r\n\r\n getCampaignSubType({ model, editMode }) {\r\n if (editMode) {\r\n return _.get(model, ['Campaign', 'CampaignSubType'], '');\r\n }\r\n\r\n const campaignSubType = _.get(this.scope(), 'campaignSubType');\r\n\r\n if (_.isEmpty(campaignSubType)) {\r\n return '';\r\n }\r\n\r\n return campaignSubType;\r\n }\r\n\r\n getCampaignSettings({ model, editMode }) {\r\n if (editMode) {\r\n return _.get(model, ['Campaign', 'CampaignSettings'], []);\r\n }\r\n\r\n const campaignSettings = _.get(this.scope(), 'campaignSettings');\r\n\r\n if (_.isEmpty(campaignSettings)) {\r\n return [];\r\n }\r\n\r\n return campaignSettings;\r\n }\r\n\r\n getVideoAdModel(videos) {\r\n if (!videos) {\r\n return null;\r\n }\r\n\r\n const parsedVideos = _.filter(videos, (video) => {\r\n return this.allowedVideoTypes.includes(video.Asset.SubType);\r\n });\r\n\r\n return parsedVideos.length > 0 ? parsedVideos[0].Asset : null;\r\n }\r\n\r\n onAdsValidation(result) {\r\n this.savedAdModel = { ...result };\r\n this.render();\r\n }\r\n\r\n validate() {\r\n return this.savedAdModel.isValid;\r\n }\r\n\r\n toObject() {\r\n const params = { Videos: this.savedAdModel.data[0].data.video, FinalUrls: this.savedAdModel.data[0].data.FinalUrls };\r\n\r\n return params;\r\n }\r\n\r\n clearApiErrors() {\r\n this.apiErrors = [];\r\n }\r\n\r\n clearFields() {\r\n this.editMode = false;\r\n this.model = {};\r\n this.resetFields = !this.resetFields;\r\n this.savedAdModel = {\r\n isValid: true,\r\n isDirty: false,\r\n data: [{\r\n isDirty: false,\r\n isValid: true,\r\n data: {\r\n FinalUrls: [],\r\n video: null,\r\n },\r\n Id: null,\r\n }],\r\n currentPageIndex: 1,\r\n };\r\n\r\n this.render();\r\n }\r\n\r\n onSave(result) {\r\n this.triggerClose();\r\n return this.handleSave(result.ads.data[0], result.ads.data[0].Id, 'Responsive');\r\n }\r\n\r\n onSaveAndCreateAnother(result) {\r\n ReactDOM.unmountComponentAtNode(this.el);\r\n this.clearFields();\r\n\r\n this.render();\r\n return this.handleSave(result.ads.data[0], result.ads.data[0].Id, 'Responsive');\r\n\r\n }\r\n\r\n remove() {\r\n ReactDOM.unmountComponentAtNode(this.el);\r\n return super.remove();\r\n }\r\n\r\n cancel() {\r\n this.triggerCancel();\r\n this.triggerClose();\r\n }\r\n\r\n render() {\r\n const scenarioName = 'XandrVideoAdsAdEditing';\r\n const activityName = 'Ad';\r\n\r\n ReactDOM.render(\r\n // eslint-disable-next-line no-extra-parens\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 this.el,\r\n );\r\n\r\n return this;\r\n\r\n }\r\n}\r\n","/* global _TL_ */\r\nimport Backbone from 'backbone';\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { InstrumentationContext } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { saveAds } from '@bingads-webui-campaign-react/xandr-video-campaign-shared-components';\r\nimport { AdEditor, imagePlacementsToImage, getVerifiedTrackingSettings } from '@bingads-webui-campaign-react/xandr-display-ads-campaign-shared-components';\r\nimport { Scenario, Activity } from '@bingads-webui-react/hoc-with-signal';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { ImageRepository } from '@bingads-webui-campaign-react/image-experience';\r\nimport { constants, newImageFromMTObject } from '@bingads-webui-campaign-react/image-experience-model';\r\nimport { getAutoCroppedImages } from '@bingads-webui-campaign/image-experience-utils';\r\nimport { PreferenceContext } from '@bingads-webui-react/preference-context';\r\nimport { UiBlocker } from '@bingads-webui-react/ui-blocker';\r\n\r\nexport default class View extends Backbone.View {\r\n initialize({\r\n scope,\r\n editMode = false,\r\n model = {},\r\n showInline = false,\r\n instrumentation,\r\n perfMarker,\r\n permissions,\r\n activityLogger,\r\n campaignId,\r\n adGroupId,\r\n serverContext,\r\n preferenceService,\r\n }) {\r\n this.aid = _.get(serverContext, ['CurrentAccount', 'Id']);\r\n this.cid = _.get(serverContext, ['CurrentCustomer', 'Id']);\r\n this.advertiserCustomerId = _.get(serverContext, ['CurrentAccount', 'AdvertiserCustomerID']);\r\n this.scope = scope;\r\n this.editMode = editMode;\r\n this.showInline = showInline;\r\n this.perfMarker = perfMarker;\r\n this.instrumentation = instrumentation;\r\n this.model = model;\r\n this.apiErrors = [];\r\n this.campaignId = campaignId || this.scope().campaignId;\r\n this.adGroupId = adGroupId || this.scope().adGroupId;\r\n this.activityLogger = activityLogger;\r\n this.resetFields = false;\r\n this.permissions = permissions;\r\n this.serverErrors = null;\r\n this.serverContext = serverContext;\r\n this.preferenceService = preferenceService;\r\n this.verifiedTrackingSetting = this.editMode ? getVerifiedTrackingSettings(model) : {};\r\n this.savedAdModel = {\r\n isValid: true,\r\n isDirty: false,\r\n data: [{\r\n isDirty: false,\r\n isValid: true,\r\n data: {\r\n TrackingUrlTemplate: model && model.TrackingUrlTemplate,\r\n FinalUrlSuffix: model && model.FinalUrlSuffix,\r\n UrlCustomParameters: model && model.UrlCustomParameters,\r\n ImpressionTrackingUrls: this.editMode ? model && model.ImpressionTrackingUrls : [],\r\n FinalUrls: this.editMode ? model && model.FinalUrls : [],\r\n image: null,\r\n ...this.verifiedTrackingSetting,\r\n },\r\n uid: Math.random(),\r\n Id: this.editMode ? model.Id : null,\r\n }],\r\n currentPageIndex: 1,\r\n };\r\n\r\n this.scenario = 'Edit-DisplayAds';\r\n\r\n this.oDataConfig = {\r\n odataRootUrl: config.get('CampaignAzureDomain'),\r\n odataPath: config.get('odata.url') + config.get('odata.path'),\r\n odataToken: config.get('odata.token'),\r\n oDataToken: config.get('odata.token'),\r\n oDataPath: config.get('odata.url') + config.get('odata.path'),\r\n };\r\n\r\n this.imageRepository = new ImageRepository(this.advertiserCustomerId, this.aid, this.oDataConfig);\r\n if (model && model.Images && model.Images.length > 0) {\r\n const imageAsset = model.Images[0].Asset;\r\n\r\n this.isLoading = true;\r\n\r\n this.imagePromise = this.imageRepository.getImageByIdAsync(imageAsset.IdString)\r\n .then((imgObjMT) => {\r\n const imageObject = newImageFromMTObject(imgObjMT, constants.imageSources.Existing);\r\n const croppedImagePlacements = getAutoCroppedImages({\r\n originalImageToCrop: imageObject,\r\n isMultimediaAd: false,\r\n isMultimediaAdinMSANEnabled: false,\r\n imageOption: constants.defaultImageOption,\r\n aspectRatioOption: constants.defaultAspectRatioOption,\r\n isDisplayAds: true,\r\n });\r\n const imageData = imagePlacementsToImage({crops: croppedImagePlacements,\r\n selected: {\r\n TargetWidth: imageAsset.TargetWidth,\r\n TargetHeight: imageAsset.TargetHeight,\r\n CropWidth: imageAsset.CropWidth,\r\n CropHeight: imageAsset.CropHeight,\r\n CropX: imageAsset.CropX,\r\n CropY: imageAsset.CropY,\r\n }});\r\n\r\n this.savedAdModel.data[0].data = {...this.savedAdModel.data[0].data, ...imageData.data};\r\n this.isLoading = false;\r\n this.render();\r\n });\r\n }\r\n }\r\n\r\n onAdsValidation(result) {\r\n this.savedAdModel = { ...result };\r\n this.render();\r\n }\r\n\r\n validate() {\r\n return this.savedAdModel.isValid;\r\n }\r\n\r\n toObject() {\r\n const params = { Images: this.savedAdModel.data[0].data.image, FinalUrls: this.savedAdModel.data[0].data.FinalUrls };\r\n\r\n return params;\r\n }\r\n\r\n clearApiErrors() {\r\n this.apiErrors = [];\r\n }\r\n\r\n saveAdAsync(updateGrid) {\r\n if (!this.validate()) {\r\n return Promise.resolve(false);\r\n }\r\n\r\n return saveAds({\r\n ads: this.savedAdModel,\r\n campaign: { Id: this.campaignId },\r\n adGroup: { Id: this.adGroupId },\r\n activity: this.activityLogger,\r\n }, { scenario: this.scenario, i18n: this.options.newI18n, activityLogger: this.activityLogger }).then((result) => {\r\n if (result && result.ads && result.ads.data) {\r\n return updateGrid(result.ads.data[0], result.ads.data[0].Id, 'Responsive');\r\n }\r\n return result.ads.data[0];\r\n }).catch((result) => {\r\n this.serverErrors = result.serverErrors;\r\n this.render();\r\n });\r\n }\r\n\r\n clearFields() {\r\n this.editMode = false;\r\n this.model = {};\r\n this.resetFields = !this.resetFields;\r\n this.savedAdModel = {\r\n isValid: true,\r\n isDirty: false,\r\n data: [{\r\n isDirty: false,\r\n isValid: true,\r\n data: {\r\n FinalUrls: [],\r\n image: null,\r\n },\r\n Id: null,\r\n }],\r\n currentPageIndex: 1,\r\n };\r\n\r\n this.render();\r\n }\r\n\r\n remove() {\r\n ReactDOM.unmountComponentAtNode(this.el);\r\n return super.remove();\r\n }\r\n\r\n saveAndCreateAnotherAsync(updateGrid) {\r\n if (!this.validate()) {\r\n return Promise.resolve(false);\r\n }\r\n\r\n return saveAds({\r\n ads: this.savedAdModel,\r\n campaign: { Id: this.campaignId },\r\n adGroup: { Id: this.adGroupId },\r\n }, { scenario: this.scenario, i18n: this.options.newI18n, activityLogger: this.activityLogger })\r\n .then((result) => {\r\n if (result && result.ads && result.ads.data) {\r\n this.clearFields();\r\n this.render();\r\n return updateGrid(result.ads.data[0], result.ads.data[0].Id, 'Responsive');\r\n }\r\n return result.ads.data[0];\r\n }).catch((result) => {\r\n this.serverErrors = result.serverErrors;\r\n this.render();\r\n });\r\n }\r\n\r\n render() {\r\n const scenarioName = 'XandrDisplayAdsAdEditing';\r\n const activityName = 'Ad';\r\n\r\n ReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n { this.isLoading ?\r\n :\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n this.el,\r\n );\r\n\r\n return this;\r\n\r\n }\r\n}\r\n","/* global _TL_ */\r\nimport Backbone from 'backbone';\r\nimport _ from 'underscore';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { ThemeProvider } from 'react-jss';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { InstrumentationContext } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { ComponentSettings, ThemeFluent } from '@bingads-webui-theme-2018/theme-fluent';\r\nimport { EditDisplayAdWizard, getVerifiedTrackingSettings } from '@bingads-webui-campaign-react/xandr-display-ads-campaign-shared-components';\r\nimport { Scenario, Activity } from '@bingads-webui-react/hoc-with-signal';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { PreferenceContext } from '@bingads-webui-react/preference-context';\r\nimport { UiBlocker } from '@bingads-webui-react/ui-blocker';\r\nimport { PermissionsContext } from '@bingads-webui-react/hoc-with-permissions';\r\n\r\nexport default class View extends Backbone.View {\r\n initialize({\r\n scope,\r\n editMode = false,\r\n model = {},\r\n showInline = false,\r\n instrumentation,\r\n perfMarker,\r\n permissions,\r\n activityLogger,\r\n campaignId,\r\n adGroupId,\r\n serverContext,\r\n preferenceService,\r\n triggerCancel,\r\n triggerClose,\r\n handleSave,\r\n isMultiAdFormatAd,\r\n }) {\r\n this.aid = _.get(serverContext, ['CurrentAccount', 'Id']);\r\n this.cid = _.get(serverContext, ['CurrentCustomer', 'Id']);\r\n this.advertiserCustomerId = _.get(serverContext, ['CurrentAccount', 'AdvertiserCustomerID']);\r\n this.scope = scope;\r\n this.editMode = editMode;\r\n this.showInline = showInline;\r\n this.perfMarker = perfMarker;\r\n this.instrumentation = instrumentation;\r\n this.model = model;\r\n this.apiErrors = [];\r\n this.campaignId = campaignId;\r\n this.adGroupId = adGroupId;\r\n this.activityLogger = activityLogger;\r\n this.resetFields = false;\r\n this.permissions = permissions;\r\n this.serverErrors = null;\r\n this.serverContext = serverContext;\r\n this.preferenceService = preferenceService;\r\n this.verifiedTrackingSetting = this.editMode ? getVerifiedTrackingSettings(model) : {};\r\n this.triggerCancel = triggerCancel;\r\n this.triggerClose = triggerClose;\r\n this.handleSave = handleSave;\r\n this.scenario = 'Edit-DisplayAds';\r\n this.isMultiAdFormatAd = isMultiAdFormatAd;\r\n\r\n this.parentRemove = super.remove;\r\n\r\n this.render();\r\n }\r\n\r\n onSave(result) {\r\n return this.handleSave(result.ads.data[0], result.ads.data[0].Id, 'Responsive');\r\n }\r\n\r\n onSaveAndCreateAnother(result) {\r\n ReactDOM.unmountComponentAtNode(this.el);\r\n this.model = null;\r\n\r\n this.render();\r\n return this.handleSave(result.ads.data[0], result.ads.data[0].Id, 'Responsive');\r\n\r\n }\r\n\r\n\r\n remove() {\r\n ReactDOM.unmountComponentAtNode(this.el);\r\n return super.remove();\r\n }\r\n\r\n cancel() {\r\n this.triggerCancel();\r\n this.triggerClose();\r\n }\r\n\r\n render() {\r\n const scenarioName = 'XandrDisplayAdsAdEditing';\r\n const activityName = 'Ad';\r\n\r\n ReactDOM.render(\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 this.el,\r\n );\r\n\r\n return this;\r\n\r\n }\r\n}\r\n","import React, { useMemo, useCallback, useContext } from 'react';\r\nimport _ from 'underscore';\r\nimport { DisplayPlusNativeAds } from '@bingads-webui-campaign-react/display-plus-native-ads';\r\nimport { ActuationGroup } from '@bingads-webui-campaign-react/actuator';\r\nimport { AttentionBeaconGroup } from '@bingads-webui-campaign-react/attention-beacon';\r\nimport { FormErrorGroup, UnmappedFormErrors } from '@bingads-webui-campaign-react/form-error';\r\nimport { ValidationGroup } from '@bingads-webui-react/validation';\r\nimport { AssetGroup } from '@bingads-webui/campaign-odata-schemas';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { withRecommendationContext } from '@bingads-webui-campaign-react/perf-max-recommendation';\r\n\r\nconst DisplayPlusNativeFormInternal = (props) => {\r\n const {\r\n data,\r\n onDataChange,\r\n perfMarker,\r\n biddingScheme,\r\n instrumentation,\r\n scope,\r\n isSaving,\r\n isCanceling,\r\n errors,\r\n setAds,\r\n supportImageFitting,\r\n } = props;\r\n const i18n = useContext(I18nContext);\r\n\r\n const didServerReturnErrors = useMemo(() => errors && _.isArray(errors) && errors.length > 0, [errors]);\r\n\r\n const onValidate = useCallback((result) => {\r\n const dataPatch = {\r\n ...data,\r\n ...result.data,\r\n isValid: result.isValid,\r\n };\r\n\r\n onDataChange(dataPatch);\r\n setAds(dataPatch);\r\n }, [data, onDataChange, setAds, data]);\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\nexport const DisplayPlusNativeForm = withRecommendationContext(DisplayPlusNativeFormInternal);\r\n","import React, { useState, useEffect} from 'react';\r\nimport _ from 'underscore';\r\nimport odata from '@bingads-webui-component-legacy/http/channel/odata';\r\nimport { convertFromAdModel, getMultiImagesFromMTAssetsAsync } from '@bingads-webui-campaign-react/responsive-ad-editor-utils';\r\nimport { DisplayPlusNativeForm } from './display-plus-native-form';\r\nimport { edmCampaign } from '@bingads-webui/edm-campaign';\r\n\r\nconst getCampaignBiddingScheme = (cid, aid, campaignId) =>\r\n edmCampaign\r\n .Customers.$withKey(cid)\r\n .Accounts.$withKey(aid)\r\n .Campaigns.$withKey(campaignId)\r\n .get({\r\n select: ['BiddingScheme'],\r\n })\r\n .toPromise();\r\n\r\nconst modelToViewModel = (ad, campaignId, adGroupId) => {\r\n const Id = _.get(ad, ['Id'], '');\r\n\r\n const Campaign = {\r\n Id: campaignId,\r\n };\r\n\r\n const AdGroup = {\r\n Id: adGroupId,\r\n };\r\n\r\n return {\r\n ...convertFromAdModel(ad, false),\r\n Campaign,\r\n AdGroup,\r\n Id: Id.toString(),\r\n };\r\n};\r\n\r\nexport const DisplayPlusNative = (props) => {\r\n const {\r\n data: mtData,\r\n isCleaning,\r\n onCleaningComplete,\r\n campaignId,\r\n adGroupId,\r\n cid,\r\n aid,\r\n permissions,\r\n supportImageFitting,\r\n } = props;\r\n\r\n\r\n const [data, setData] = useState(mtData && mtData.Id ? modelToViewModel(mtData, campaignId, adGroupId) : mtData);\r\n const [biddingScheme, setBiddingScheme] = useState(null);\r\n\r\n const isBoostCampaign = permissions.dynamic.DisplayPlusAmplify && permissions.IsAmplifyEnabled;\r\n\r\n useEffect(() => {\r\n if (data && data.Images && _.isArray(data.Images)) {\r\n const isLegacyResponsiveAd = data && data.LegacyResponsiveAd;\r\n const fetchImagesPromise = getMultiImagesFromMTAssetsAsync(\r\n odata,\r\n `/Customers(${cid})/Accounts(${aid})/`,\r\n data.Images,\r\n true, // isAdCreatorEnabled,\r\n true, // isImproveMMA,\r\n !isBoostCampaign, // isMMAV2Enabled,\r\n isBoostCampaign, // isBoostPortraitImageEnabled,\r\n false, // isBoost200x100ImageEnabled\r\n false, // isBoostNewAspectRatioSupportEnabled\r\n supportImageFitting && !isBoostCampaign && !isLegacyResponsiveAd, // isImageFittingEnabled\r\n );\r\n\r\n fetchImagesPromise.then((images) => {\r\n _.each(images, (image) => {\r\n _.each(image, (i) => {\r\n if (i.Id) {\r\n i.idString = i.Id.toString();\r\n }\r\n });\r\n });\r\n\r\n setData((prevData) => ({\r\n ...prevData,\r\n Images: {\r\n ImageList: images,\r\n },\r\n }));\r\n });\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (isCleaning) {\r\n setData({\r\n isValid: false,\r\n isDirty: false,\r\n currentPageIndex: 1,\r\n });\r\n\r\n onCleaningComplete();\r\n }\r\n }, [isCleaning]);\r\n\r\n useEffect(() => {\r\n if (cid && aid && campaignId && !biddingScheme) {\r\n getCampaignBiddingScheme(cid, aid, campaignId)\r\n .then((campaign) => {\r\n setBiddingScheme(campaign.BiddingScheme.Type);\r\n });\r\n }\r\n }, [cid, aid, campaignId]);\r\n\r\n return (\r\n <>\r\n {!isCleaning &&\r\n \r\n }\r\n >\r\n );\r\n};\r\n","/* global _TL_ */\r\nimport Backbone from 'backbone';\r\nimport _ from 'underscore';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport Promise from 'bluebird';\r\nimport { ThemeProvider } from 'react-jss';\r\nimport { ComponentSettings, ThemeFluent } from '@bingads-webui-theme-2018/theme-fluent';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { InstrumentationContext } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { saveAds, saveAdsWithMetadata } from '@bingads-webui-campaign-react/display-plus-native-ads';\r\nimport { Scenario, Activity } from '@bingads-webui-react/hoc-with-signal';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { PreferenceContext } from '@bingads-webui-react/preference-context';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { UiBlocker } from '@bingads-webui-react/ui-blocker';\r\nimport { PermissionsContext } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { PerformanceMarkerContext } from '@bingads-webui-campaign-react/performance-marker-provider';\r\nimport { getVerifiedTrackingSettings } from '@bingads-webui-campaign-react/xandr-display-ads-campaign-shared-components';\r\nimport { getODataConfig } from '@bingads-webui-campaign-react/xandr-video-campaign-shared-components';\r\nimport { ImageOData } from '@bingads-webui-campaign/image-odata';\r\nimport { DisplayPlusNative } from '../../components';\r\n\r\nexport default class View extends Backbone.View {\r\n initialize({\r\n scope,\r\n editMode = false,\r\n model = {},\r\n showInline = false,\r\n instrumentation,\r\n perfMarker,\r\n permissions,\r\n activityLogger,\r\n campaignId,\r\n adGroupId,\r\n serverContext,\r\n preferenceService,\r\n }) {\r\n this.aid = _.get(serverContext, ['CurrentAccount', 'Id']);\r\n this.cid = _.get(serverContext, ['CurrentCustomer', 'Id']);\r\n this.advertiserCustomerId = _.get(serverContext, ['CurrentAccount', 'AdvertiserCustomerID']);\r\n this.scope = scope;\r\n this.editMode = editMode;\r\n this.showInline = showInline;\r\n this.perfMarker = perfMarker;\r\n this.instrumentation = instrumentation;\r\n this.model = model;\r\n this.apiErrors = [];\r\n this.campaignId = campaignId;\r\n this.adGroupId = adGroupId;\r\n this.activityLogger = activityLogger;\r\n this.resetFields = false;\r\n this.permissions = permissions;\r\n this.serverErrors = null;\r\n this.serverContext = serverContext;\r\n this.preferenceService = preferenceService;\r\n this.verifiedTrackingSetting = this.editMode ? getVerifiedTrackingSettings(model) : {};\r\n this.model = {\r\n ...this.model,\r\n ...this.verifiedTrackingSetting,\r\n };\r\n this.isLoading = false;\r\n this.isSaving = false;\r\n this.isCanceling = false;\r\n this.saveFailed = false;\r\n this.isCleaning = false;\r\n\r\n this.oDataConfig = getODataConfig(serverContext);\r\n\r\n this.imageOdata = new ImageOData(this.cid, this.aid, this.oDataConfig);\r\n\r\n this.scenario = 'Edit-DisplayPlusNativeAds';\r\n\r\n this.savedAdModel = {\r\n ...this.translateHotspots(this.model),\r\n isValid: true,\r\n isDirty: false,\r\n currentPageIndex: 1,\r\n };\r\n\r\n this.isVideoAsAnAssetEnabled = this.permissions && this.permissions.dynamic.VideoAsAnAsset && !this.permissions.IsAmplifyEnabled;\r\n this.isImageFittingEnabled = _.result(permissions.dynamic, 'ImageFittingMVP', false) &&\r\n !_.result(permissions.dynamic, 'ImageFittingExlcudeMAE', true) &&\r\n _.result(permissions.dynamic, 'ImageFittingUnifiedImageROI', false);\r\n }\r\n\r\n translateHotspots(model) {\r\n if (model && model.HotSpots) {\r\n const hotspots = model.HotSpots.map((hotspot) => ({\r\n glyph: hotspot.Asset.Glyph,\r\n actionText: hotspot.Asset.ActionText,\r\n assetSource: hotspot.Asset.AssetSource,\r\n id: hotspot.Asset.Id,\r\n desc: hotspot.Asset.Description,\r\n placement: hotspot.Asset.Placement,\r\n title: hotspot.Asset.Title,\r\n uri: hotspot.Asset.Uri,\r\n }));\r\n\r\n return {\r\n ...model,\r\n hotspots,\r\n };\r\n }\r\n\r\n return {\r\n ...model,\r\n };\r\n }\r\n\r\n onAdsValidation(result) {\r\n this.savedAdModel = { ...result };\r\n this.render();\r\n }\r\n\r\n validate() {\r\n return this.savedAdModel.isValid;\r\n }\r\n\r\n toObject() {\r\n return this.savedAdModel;\r\n }\r\n\r\n clearApiErrors() {\r\n this.apiErrors = [];\r\n }\r\n\r\n clearFields() {\r\n this.editMode = false;\r\n this.model = {};\r\n this.resetFields = !this.resetFields;\r\n this.savedAdModel = {\r\n isValid: false,\r\n isDirty: false,\r\n data: {\r\n data: [],\r\n },\r\n currentPageIndex: 1,\r\n };\r\n\r\n this.serverErrors = null;\r\n\r\n this.isCleaning = true;\r\n this.render();\r\n }\r\n\r\n onCleaningComplete() {\r\n this.isCleaning = false;\r\n this.render();\r\n }\r\n\r\n remove() {\r\n ReactDOM.unmountComponentAtNode(this.el);\r\n return super.remove();\r\n }\r\n\r\n setSavingState() {\r\n this.isSaving = true;\r\n this.saveFailed = false;\r\n this.render();\r\n }\r\n\r\n buildSaveAdsPayload() {\r\n return {\r\n ads: { data: this.savedAdModel },\r\n oldAdsModel: { data: this.savedAdModel },\r\n campaign: { Id: this.scope().adGroupId },\r\n adGroup: { Id: this.scope().adGroupId },\r\n activity: this.activityLogger,\r\n imageOdata: this.imageOdata,\r\n permissions: this.permissions,\r\n };\r\n }\r\n\r\n onSaveAdsSuccess(updateGrid) {\r\n return (result) => {\r\n if (result && result.ads && result.ads.data) {\r\n this.clearFields();\r\n return updateGrid(result.ads.data, result.ads.data.Id, 'Responsive');\r\n }\r\n return result;\r\n };\r\n }\r\n\r\n onSaveAdsFailed(result) {\r\n this.serverErrors = result.serverErrors || result;\r\n this.saveFailed = true;\r\n }\r\n\r\n onSaveAdsFinally() {\r\n this.isSaving = false;\r\n this.render();\r\n }\r\n\r\n saveAdAction(updateGrid) {\r\n const saveAdsAction = this.isVideoAsAnAssetEnabled ? saveAdsWithMetadata : saveAds;\r\n\r\n const saveAdsPayload = this.buildSaveAdsPayload();\r\n\r\n return saveAdsAction(saveAdsPayload, { scenario: this.scenario, i18n: this.options.newI18n, serverContext: this.serverContext, activityLogger: this.activityLogger }, { isImageFittingEnabled: this.isImageFittingEnabled })\r\n .then(this.onSaveAdsSuccess(updateGrid))\r\n .catch(this.onSaveAdsFailed.bind(this))\r\n .finally(this.onSaveAdsFinally.bind(this));\r\n }\r\n\r\n saveAdAsync(updateGrid) {\r\n if (!this.validate()) {\r\n return Promise.resolve();\r\n }\r\n\r\n this.setSavingState();\r\n return this.saveAdAction(updateGrid);\r\n }\r\n\r\n saveAndCreateAnotherAsync(updateGrid) {\r\n if (!this.validate()) {\r\n return Promise.resolve();\r\n }\r\n\r\n this.setSavingState();\r\n return this.saveAdAction(updateGrid);\r\n }\r\n\r\n render() {\r\n const scenarioName = 'DisplayPlusNativeAdsAdEditing';\r\n const activityName = 'Ad';\r\n\r\n ReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.isLoading ?\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 this.el,\r\n );\r\n\r\n return this;\r\n\r\n }\r\n}\r\n","export const lengthExceededErrorCodes = [\r\n //OData Error Codes\r\n 'EditorialTooMuchAdTextInTitle',\r\n 'EditorialTooMuchAdTextInText',\r\n 'EditorialTooMuchAdTextInDisplayUrl',\r\n 'EditorialTooMuchAdTextInDestinationUrl',\r\n 'EditorialDefaultAdTooMuchAdTextInText',\r\n 'EditorialTooMuchAdTextInTextAcrossAllAssociations',\r\n 'EditorialTooMuchAdTextInTitleAcrossAllAssociations',\r\n 'EditorialTooMuchAdTextInDisplayUrlAcrossAllAssociations',\r\n\r\n //Bulk Error Codes\r\n 'CampaignServiceTooMuchAdTextInTitle',\r\n 'CampaignServiceTooMuchAdTextInText',\r\n 'CampaignServiceTooMuchAdTextInDisplayUrl',\r\n 'CampaignServiceTooMuchAdTextInDestinationUrl',\r\n 'CampaignServiceDefaultAdTooMuchTextInText',\r\n 'CampaignServiceTooMuchTextInTextAcrossAllAssociations',\r\n 'CampaignServiceTooMuchTextInTitleAcrossAllAssociations',\r\n 'CampaignServiceTooMuchTextInDisplayUrlAcrossAllAssociations',\r\n];\r\n","import Backbone from 'backbone';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport ViewModel from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adEditor';\r\nimport editorTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adEditor.pug';\r\nimport improveMMAAdEditor from '@bingads-webui-campaign-legacy/crud-ad/template/improveMMAAdEditor.pug';\r\nimport TextAdView from '@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/textAd';\r\nimport AppInstallAdView from '@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/appInstallAd';\r\nimport DynamicSearchAdView from '@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/dynamicSearchAd';\r\nimport ProductAdView from '@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/productAd';\r\nimport ExpandedTextAdView from '@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/expandedTextAd';\r\nimport ResponsiveAdView from '@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/ResponsiveAd';\r\nimport ResponsiveSearchAdView from '@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/responsiveSearchAd';\r\nimport ResponsiveSearchAdEditor from '@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/ResponsiveSearchAdEditor';\r\nimport XandrVideoAd from '@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/xandrVideoAd';\r\nimport XandrDisplayAd from '@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/xandrDisplayAd';\r\nimport DisplayPlusDisplayAd from '@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/displayPlusDisplayAd';\r\nimport DisplayPlusNativeAd from '@bingads-webui-campaign-legacy/crud-ad/view/adsEditor/displayPlusNativeAd';\r\nimport * as schemaMapper from '@bingads-webui-campaign-legacy/crud-ad/schemaMapper';\r\nimport { lengthExceededErrorCodes } from '@bingads-webui-campaign-legacy/crud-ad/lengthExceededErrorCodes';\r\nimport { getAppealableErrors, getODataErrors, getBulkApiErrors } from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\nimport jsdata from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport withUiBlock from '@bingads-webui-component-legacy/uiblocker/index';\r\nimport uuid from '@bingads-webui-component-legacy/uuid/index';\r\nimport edmCampaign from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport EditorialAppealView from '@bingads-webui-component-legacy/editorial-appeal/view/index';\r\nimport legacyInstru from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport constants from '@bingads-webui-static-legacy/instrumentation/constants';\r\nimport { getPath1AndPath2 } from '@bingads-webui-campaign-legacy/crud-ad/service/displayUrl';\r\nimport instrumentation from '@bingads-webui-campaign-legacy/instrumentation/index';\r\nimport { testUurl, uurlLevels } from '@bingads-webui-component-legacy/upgraded-url/service/testUurl';\r\nimport { getUtcTime } from '@bingads-webui-universal/primitive-utilities';\r\nimport { AdFormatOption, AdFormat } from '@bingads-webui-campaign-react/display-plus-native-ads';\r\nimport { setClarityTag } from '@bingads-webui-universal/clarity';\r\nimport { isXandrDisplayAdsCampaign, isXandrVideoAdsCampaign, isAudienceNativeAdsCampaign, isAudienceCampaign } from '@bingads-webui-campaign-react/constants';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\nconst i18nGlobal = window.globalLegacyI18n.get('component/i18n/loader!legacy/global');\r\n\r\nconst permissions = config.get('Permissions') || {};\r\n\r\nconst adTypeMapper = {\r\n Text: TextAdView,\r\n AppInstall: AppInstallAdView,\r\n DynamicSearch: DynamicSearchAdView,\r\n Product: ProductAdView,\r\n ExpandedText: ExpandedTextAdView,\r\n Responsive: ResponsiveAdView,\r\n};\r\n\r\nconst adTypeSchema = {\r\n Text: 'TextAd',\r\n AppInstall: 'AppInstallAd',\r\n DynamicSearch: 'DynamicSearchAd',\r\n Product: 'ProductAd',\r\n ExpandedText: 'ExpandedTextAd',\r\n ResponsiveSearch: 'ResponsiveSearchAd',\r\n Responsive: 'ResponsiveAd',\r\n};\r\n\r\nconst adTypeEnum = {\r\n text: 'Text',\r\n dynamicSearch: 'DynamicSearch',\r\n appInstall: 'AppInstall',\r\n product: 'Product',\r\n expandedText: 'ExpandedText',\r\n responsive: 'Responsive',\r\n responsiveSearch: 'ResponsiveSearch',\r\n};\r\n\r\nexport default class AdEditor extends Backbone.View {\r\n initialize({\r\n newI18n,\r\n model = null,\r\n externalCachedImageExtensionChanges = null,\r\n onCachedImageExtensionChanged,\r\n accountId = null,\r\n campaignId = null,\r\n adGroupId = null,\r\n adGroupType = null,\r\n campaignType = null,\r\n campaignSubType = null,\r\n biddingStrategyType = '',\r\n isFeedBasedCampaign = null,\r\n isSaveToServer = true, // whether or not saving the ad to server when user clicks save button\r\n showInline = false, // is current ad editor shown under ads tab, true means showing under ads tab and use OData API, false will use Bulk Upload API\r\n showSaveAndCreateAnother = true, // whether show button for save and create another ad\r\n appInstallAdsAllowed = permissions.IsUserAppInstallAdsAllowed,\r\n isNativeAdsEnabled = permissions.IsNativeAdsAllowed,\r\n isVanityUrlEnabled = permissions.IsVanityUrlEnabled,\r\n isSTADisabled = permissions.IsSTADisabled,\r\n isRSAAsDefaultTypeEnabled = permissions.IsRSAAsDefaultType,\r\n isResponsiveAdEnabled = permissions.IsAIMCampaignEnabled,\r\n isMultiMediaAdsEnabled = permissions.IsMultiMediaAdsEnabled,\r\n isMMAInDSAEnabled = permissions.IsMMAInDSAEnabled,\r\n isTraditionalChinese = false, // is current adgroup with traditional chinese\r\n appLookupDisabled = false,\r\n developerName = '',\r\n campaignDomain = '',\r\n isDynamicDescriptionEnabled = false,\r\n defaultLandingPageUrl = '',\r\n firstTextAdModel = {},\r\n firstExpandedTextAdModel = {},\r\n firstResponsiveSearchAdModel = {},\r\n perfMarker = null,\r\n isForVNext = false,\r\n inlineSuggestionsEnabled = false,\r\n showLightbulb = false,\r\n isRecommendation = false,\r\n adsCountMap = {},\r\n activityLogger,\r\n isImpressionTrackingUrlsEnabled = permissions.IsImpressionTrackingUrlsEnabled,\r\n isOpenCreatePanel = false, // whether the editor is opened from the link in delivery status column\r\n hasWebsiteImageOptedInObservable, // pass to responsive-ad-editor to update enable/disable ad button state for showInline scenario\r\n isAdgroupCreation = false,\r\n isImproveRSA = false,\r\n isImproveMMA = false,\r\n serverContext = {},\r\n preferenceService,\r\n } = {}) {\r\n if (perfMarker) {\r\n this.perfMarker = perfMarker;\r\n this.perfMarkerRender = perfMarker.createChild('Ad_Editor_Show');\r\n this.perfMarkerRender.willInit();\r\n }\r\n this.isSaveToServer = isSaveToServer;\r\n this.newI18n = newI18n;\r\n this.showInline = showInline;\r\n this.campaignType = campaignType;\r\n this.campaignSubType = campaignSubType;\r\n this.showSaveAndCreateAnother = showSaveAndCreateAnother;\r\n this.editMode = !_.isEmpty(this.model) && (showInline || this.model.isSaved); //edit ad which was already saved to server\r\n this.activityLogger = activityLogger;\r\n this.isMigratingToEXTA = !_.isEmpty(this.model) && showInline && this.model.Type === adTypeEnum.text; // show migration UI only in ads tab\r\n this.isSTADisabled = isSTADisabled;\r\n this.isRSAAsDefaultTypeEnabled = isRSAAsDefaultTypeEnabled;\r\n this.isMultiMediaAdsEnabled = isMultiMediaAdsEnabled;\r\n this.isOpenCreatePanel = isOpenCreatePanel;\r\n this.isImproveMMA = isImproveMMA;\r\n this.serverContext = serverContext;\r\n this.isDisplayPlusNativeEdit = permissions.dynamic.DisplayPlusEdit && this.isAudienceNativeCampaign(this.campaignType, this.campaignSubType);\r\n this.isMultiAdFormatEnabled = permissions.dynamic && permissions.dynamic.MultiAdFormat && this.isDisplayPlusNativeEdit && !permissions.IsAmplifyEnabled;\r\n\r\n if (permissions.dynamic && permissions.dynamic.EnableNewResponsiveSearchAdEditor && !isRecommendation) {\r\n adTypeMapper.ResponsiveSearch = ResponsiveSearchAdEditor;\r\n } else {\r\n adTypeMapper.ResponsiveSearch = ResponsiveSearchAdView;\r\n }\r\n\r\n if (permissions.dynamic.XandrVideoCampaigns && isXandrVideoAdsCampaign(this.campaignSubType)) {\r\n adTypeMapper.Responsive = XandrVideoAd;\r\n this.isXandrVideoAd = true;\r\n } else if (permissions.dynamic.XandrDisplayAdsCampaigns && isXandrDisplayAdsCampaign(this.campaignSubType)) {\r\n if (permissions.dynamic.DisplayPlusCopilotAssetGeneration) {\r\n adTypeMapper.Responsive = DisplayPlusDisplayAd;\r\n } else {\r\n adTypeMapper.Responsive = XandrDisplayAd;\r\n }\r\n } else if (this.isDisplayPlusNativeEdit) {\r\n setClarityTag({\r\n IsDisplayPlusAudienceNative: true,\r\n CampaignSubType: this.campaignSubType,\r\n });\r\n\r\n adTypeMapper.Responsive = DisplayPlusNativeAd;\r\n\r\n if (this.isMultiAdFormatEnabled && this.isDisplayAdUnderNativeCampaign(model)) {\r\n adTypeMapper.Responsive = DisplayPlusDisplayAd;\r\n } else if (this.isMultiAdFormatEnabled && this.isVideoAdUnderNativeCampaign(model)) {\r\n adTypeMapper.Responsive = XandrVideoAd;\r\n }\r\n } else {\r\n adTypeMapper.Responsive = ResponsiveAdView;\r\n }\r\n\r\n let defaultSelectedAdFormat = AdFormat.Native;\r\n\r\n if (this.isMultiAdFormatEnabled && this.isMultiAdFormatDisplayAd) {\r\n defaultSelectedAdFormat = AdFormat.Display;\r\n } else if (this.isMultiAdFormatEnabled && this.isMultiAdFormatVideoAd) {\r\n defaultSelectedAdFormat = AdFormat.Video;\r\n }\r\n\r\n this.viewModel = new ViewModel({\r\n model,\r\n campaignId,\r\n adGroupId,\r\n adGroupType,\r\n campaignType,\r\n campaignSubType,\r\n showInline,\r\n appInstallAdsAllowed,\r\n campaignDomain,\r\n isDynamicDescriptionEnabled,\r\n isFeedBasedCampaign,\r\n isMigratingToEXTA: this.isMigratingToEXTA,\r\n isSTADisabled,\r\n isRSAAsDefaultTypeEnabled,\r\n isResponsiveAdEnabled,\r\n isMMAInDSAEnabled,\r\n isForVNext,\r\n adsCountMap,\r\n perfMarker,\r\n isAdgroupCreation,\r\n selectedAdFormat: defaultSelectedAdFormat,\r\n });\r\n\r\n if (showInline) {\r\n this.hasWebsiteImageOptedInObservable = hasWebsiteImageOptedInObservable;\r\n } else {\r\n this.hasWebsiteImageOptedInObservable = this.viewModel.hasWebsiteImageOptedInObservable;\r\n }\r\n\r\n let scenario = instrumentation[`ad${this.editMode ? 'Edit' : 'Creation'}${this.viewModel.Type()}`].create();// eslint-disable-line\r\n\r\n this.activity = scenario[`ad${this.editMode ? 'Edit' : 'Creation'}`].create();\r\n this.activity.start();\r\n\r\n this.applyActivity = instrumentation.inContextRepairRecommendation.create().applyDeliveryStatus.create();\r\n this.adTypeViews = {};\r\n\r\n this.firstModelMap = {};\r\n this.firstModelMap[adTypeEnum.text] = firstTextAdModel;\r\n this.firstModelMap[adTypeEnum.expandedText] = firstExpandedTextAdModel;\r\n this.firstModelMap[adTypeEnum.responsiveSearch] = firstResponsiveSearchAdModel;\r\n\r\n _.each(this.viewModel.availableAdTypes, (type) => {\r\n let fillModel = model;\r\n\r\n if (this.isMigratingToEXTA && type === adTypeEnum.expandedText) {\r\n fillModel = this.mapSTAToEXTA(this.model);\r\n } else if (_.contains([\r\n adTypeEnum.text,\r\n adTypeEnum.expandedText,\r\n adTypeEnum.responsiveSearch,\r\n ], type) && _.isEmpty(this.model) && showInline) {\r\n fillModel = this.firstModelMap[type];\r\n\r\n // Clean NativePreference flag for RSA\r\n if (adTypeEnum.responsiveSearch === type) {\r\n fillModel = _.omit(fillModel, 'NativePreference');\r\n }\r\n }\r\n\r\n this.adViewOption = {\r\n campaignId,\r\n adGroupId,\r\n biddingStrategyType,\r\n permissions,\r\n perfMarker,\r\n timeZone: config.get('AccountTimeZone'),\r\n instrumentation,\r\n newI18n,\r\n editMode: this.editMode,\r\n isNativeAdsEnabled,\r\n isVanityUrlEnabled,\r\n showInline,\r\n model: fillModel,\r\n appLookupDisabled,\r\n developerName,\r\n isTraditionalChinese,\r\n scope: this.viewModel.scope,\r\n defaultLandingPageUrl,\r\n isForVNext,\r\n inlineSuggestionsEnabled,\r\n showLightbulb,\r\n activityLogger: this.activityLogger || this.activity,\r\n isMobileUrlEnabled: campaignSubType !== 'ShoppingSmartAds' && campaignSubType !== 12,\r\n isImpressionTrackingUrlsEnabled,\r\n isVideo: campaignSubType === 'AudienceVideoAds' || isXandrVideoAdsCampaign(campaignSubType),\r\n isMultimediaAd: type === adTypeEnum.responsive && (campaignType === 'Default' || campaignType === 1),\r\n isPlaceholderMMA: type === adTypeEnum.responsive && this.viewModel.isDynamicAdGroupAdCreation(),\r\n hasWebsiteImageOptedInObservable: this.hasWebsiteImageOptedInObservable,\r\n isRecommendation,\r\n campaignDomain,\r\n logActivity: this.logActivity.bind(this),\r\n edm: edmCampaign,\r\n externalCachedImageExtensionChanges,\r\n onCachedImageExtensionChanged,\r\n showImgExtWithoutAdGroupID: this.isSaveToServer === false && isAdgroupCreation === true && adGroupType === 'SearchStandard',\r\n jsdata,\r\n isImproveRSA,\r\n accountId,\r\n isImproveMMA,\r\n serverContext,\r\n preferenceService,\r\n triggerCancel: this.cancel.bind(this),\r\n triggerClose: this.triggerClose.bind(this),\r\n handleSave: this.handleSave.bind(this),\r\n isMultiAdFormatAd: this.isMultiAdFormatEnabled && (this.isDisplayAdUnderNativeCampaign(model) || this.isVideoAdUnderNativeCampaign(model)),\r\n };\r\n\r\n this.adTypeViews[type] = new adTypeMapper[type](this.adViewOption);\r\n\r\n const testUurlAdTypes = [adTypeEnum.expandedText, adTypeEnum.responsiveSearch, adTypeEnum.appInstall];\r\n\r\n if (_.contains(testUurlAdTypes, type)) {\r\n this.adTypeViews[type].on('testUurl', (fn, originalView) => {\r\n if (!this.validate(this._type)) {\r\n fn.call(originalView, null); // to stop the loading spinner\r\n return;\r\n }\r\n\r\n originalView.isInline = false;\r\n originalView.level = uurlLevels.Ad;\r\n const params = this.adTypeViews[type].toObject();\r\n const context = {\r\n customerId: _.result(config.get('CurrentCustomer'), 'Id'),\r\n userId: _.result(config.get('CurrentUser'), 'Id'),\r\n accountId: _.result(config.get('CurrentAccount'), 'Id'),\r\n campaignId: _.result(config.get('CurrentCampaign'), 'Id') || this.viewModel.scope().campaignId || 0,\r\n adGroupId: _.result(config.get('CurrentAdGroup'), 'Id') || this.viewModel.scope().adGroupId || 0,\r\n entityId: this.model && this.model.Id && _.isNumber(this.model.Id) ? this.model.Id : '',\r\n };\r\n const options = {\r\n apiInLog: 'adEditor/uurlTest',\r\n };\r\n\r\n testUurl(fn, originalView, params, context, options);\r\n });\r\n }\r\n });\r\n\r\n this.prevScope = {};\r\n\r\n this.viewModel.scope.subscribe((scope) => {\r\n this.prevScope = scope;\r\n }, this, 'beforeChange');\r\n\r\n this.viewModel.scope.subscribe((scope) => {\r\n this.isDisplayPlusNativeEdit = permissions.dynamic.DisplayPlusEdit && this.isAudienceNativeCampaign(scope.campaignType, scope.campaignSubType) && !permissions.IsAmplifyEnabled;\r\n this.isMultiAdFormatEnabled = permissions.dynamic && permissions.dynamic.MultiAdFormat && this.isDisplayPlusNativeEdit && !permissions.IsAmplifyEnabled;\r\n\r\n if (this.isDisplayPlusNativeEdit) {\r\n setClarityTag({\r\n IsDisplayPlusAudienceNative: true,\r\n CampaignSubType: scope.campaignSubType,\r\n });\r\n }\r\n\r\n const adFormat = this.viewModel.selectedAdFormat();\r\n\r\n _.each(this.viewModel.adTypesRegisterForLanguageChange, (adType) => {\r\n const viewModel = this.adTypeViews[adType].viewModel;\r\n\r\n if (viewModel.isTraditionalChinese) {\r\n viewModel.isTraditionalChinese(scope.isTraditionalChinese);\r\n }\r\n });\r\n\r\n if (this.viewModel.scope().adGroupId) {\r\n if (this._type === 'Responsive' && this.prevScope.campaignType !== scope.campaignType) {\r\n this.logActivity(`campaign type changed from ${this.prevScope.campaignType} to ${scope.campaignType}`);\r\n this.refreshResponsiveAdEditor(scope, adFormat);\r\n }\r\n\r\n if (this._type === 'Responsive' && this.prevScope.adGroupType !== scope.adGroupType) {\r\n this.refreshResponsiveAdEditor(scope, adFormat);\r\n }\r\n\r\n this.logActivity('ad editor rendered');\r\n }\r\n }, this);\r\n\r\n this.viewModel.Type.subscribe((type) => {\r\n this.trigger('type', type);\r\n const scope = this.viewModel.scope();\r\n const adFormat = this.viewModel.selectedAdFormat();\r\n\r\n if (type === 'Responsive' && campaignSubType !== 12 && campaignSubType !== 'ShoppingSmartAds') {\r\n this.refreshResponsiveAdEditor(scope, adFormat);\r\n }\r\n scenario = instrumentation[`ad${this.editMode ? 'Edit' : 'Creation'}${type}`].create();\r\n\r\n this.activity = scenario[`ad${this.editMode ? 'Edit' : 'Creation'}`].create();\r\n this.activity.start();\r\n this.logActivity(`ad type change: ${type}`);\r\n if (type === 'Responsive') {\r\n setClarityTag({ NewSearchMMAEditor: 'true' });\r\n }\r\n }, this);\r\n\r\n this.viewModel.selectedAdFormat.subscribe((adFormat) => {\r\n const scope = this.viewModel.scope();\r\n\r\n this.refreshResponsiveAdEditor(scope, adFormat);\r\n }, this);\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .appEditor-save-container .save': 'save',\r\n 'click .appEditor-save-container .cancel': 'cancel',\r\n 'click .save-create-another': 'saveAndCreateAnother',\r\n 'click .switchBackToSTA': 'switchBackToSTA',\r\n 'click .switchBackToEXTA': 'switchBackToEXTA',\r\n };\r\n }\r\n\r\n isRSANewCopilotScenario() {\r\n return this._type === adTypeEnum.responsiveSearch &&\r\n this.adViewOption.inlineSuggestionsEnabled;\r\n }\r\n\r\n isAudienceNativeCampaign(campaignType, campaignSubType) {\r\n return isAudienceCampaign(campaignType) && isAudienceNativeAdsCampaign(campaignSubType);\r\n }\r\n\r\n isDisplayAdUnderNativeCampaign(model) {\r\n this.isMultiAdFormatDisplayAd = isAudienceNativeAdsCampaign(this.campaignSubType) && model && model.AdSubType === 'Display';\r\n return this.isMultiAdFormatDisplayAd;\r\n }\r\n\r\n isVideoAdUnderNativeCampaign(model) {\r\n this.isMultiAdFormatVideoAd = isAudienceNativeAdsCampaign(this.campaignSubType) && model && model.AdSubType === 'Video';\r\n return this.isMultiAdFormatVideoAd;\r\n }\r\n\r\n logActivity(message, api = 'ad editor') {\r\n api = `${this.activity.value} | ${this.viewModel.Type()} | campaignType: ${this.viewModel.scope().campaignType} | adGroupType: ${this.viewModel.scope().adGroupType} | ${api}`; // eslint-disable-line no-param-reassign, new-cap\r\n if (this.activityLogger) {\r\n this.activityLogger.signal(message, api);\r\n } else {\r\n legacyInstru.logMessage(\r\n [constants.LOGCATEGORY.SUBSTRATE],\r\n constants.LOGLEVEL.INFO,\r\n api,\r\n message,\r\n );\r\n }\r\n }\r\n\r\n onAdFormatChange(adFormat) {\r\n this.viewModel.selectedAdFormat(adFormat);\r\n }\r\n\r\n logCopilotRSAAssetSuggestionAdoption() {\r\n const data = this.adTypeViews.ResponsiveSearch;\r\n const cachedAd = data ? data.cachedAd : null;\r\n const cachedAdExtension = data ? data.cachedImageExtensionChanges : null;\r\n\r\n if (cachedAd && cachedAd.data) {\r\n const headlines = cachedAd.data.Headlines || [];\r\n const descriptions = cachedAd.data.Descriptions || [];\r\n const entityId = this.model ? this.model.Id : this.lastClientModelId;\r\n const currentAdExtension = (cachedAdExtension && cachedAdExtension.current) || [];\r\n const suggestedAdExtensions = _.filter(currentAdExtension, (ext) => ext.source === 'CopilotRecommendation');\r\n\r\n data.logAppliedSuggestionsFunc({\r\n headlines: headlines.map((t) => t.Asset.Text),\r\n descriptions: descriptions.map((t) => t.Asset.Text),\r\n entityId,\r\n suggestedAdExtensions,\r\n });\r\n }\r\n }\r\n\r\n logRSAAssetSuggestionAdoption() {\r\n let data = null;\r\n\r\n if (permissions.dynamic && permissions.dynamic.EnableNewResponsiveSearchAdEditor) {\r\n data = this.adTypeViews.ResponsiveSearch;\r\n } else if (this.model === null || !this.adTypeViews.ResponsiveSearch.adStrengthContainer) {\r\n return;\r\n } else {\r\n data = this.adTypeViews.ResponsiveSearch.adStrengthContainer.options.viewModel;\r\n }\r\n\r\n const message = JSON.stringify({\r\n Scenario: this.activity.value,\r\n TimeStamp: getUtcTime(),\r\n AcceptInfo: {\r\n ReturnSuggestionIds: data.returnSuggestionIds,\r\n ViewSuggestionIds: data.viewSuggestionIds,\r\n ApplySuggestionIds: data.applySuggestionIds,\r\n ClickViewIdeas: data.clickViewIdeas,\r\n },\r\n AdId: this.model.Id,\r\n Channel: 'bingadsweb[incontextrecommendation]',\r\n Feature: 'RSA_V2',\r\n Action: 'Accept',\r\n UserId: _.result(config.get('CurrentUser'), 'Id'),\r\n });\r\n\r\n this.logActivity(JSON.stringify(this.model), 'ad editor model when save rsa with suggestion');\r\n this.logActivity(message, 'rsa asset suggestion adoption');\r\n }\r\n\r\n logDeliveryStatusRecommendationAdoption() {\r\n const mes = { CampaignId: this.viewModel.scope().campaignId, AdGroupId: this.viewModel.scope().adGroupId, DeliveryStatusType: 'NoEligibleAds' };\r\n\r\n this.applyActivity.trace(JSON.stringify(mes));\r\n }\r\n\r\n refreshResponsiveAdEditor(scope, selectedAdFormat) {\r\n const originalResponsiveAdEditorView = this.adTypeViews.Responsive;\r\n const newOption = _.extend({}, this.adViewOption, {\r\n isMobileUrlEnabled: scope.campaignSubType !== 'ShoppingSmartAds' && scope.campaignSubType !== 12,\r\n isVideo: scope.campaignSubType === 'AudienceVideoAds' || isXandrVideoAdsCampaign(scope.campaignSubType),\r\n isMultimediaAd: scope.campaignType === 'Default' || scope.campaignType === 1,\r\n isPlaceholderMMA: this.viewModel.isDynamicAdGroupAdCreation(),\r\n hasWebsiteImageOptedInObservable: this.hasWebsiteImageOptedInObservable,\r\n campaignDomain: scope.campaignDomain,\r\n biddingStrategyType: scope.biddingStrategyType,\r\n jsdata,\r\n isMultiAdFormatAd: this.isMultiAdFormatEnabled, // Check sub type function,\r\n });\r\n\r\n originalResponsiveAdEditorView.remove();\r\n\r\n this.adTypeViews.Responsive = new ResponsiveAdView(newOption);\r\n\r\n if (isXandrVideoAdsCampaign(scope.campaignSubType)) {\r\n this.adTypeViews.Responsive = new XandrVideoAd(newOption);\r\n }\r\n\r\n if (isXandrDisplayAdsCampaign(scope.campaignSubType)) {\r\n if (permissions.dynamic.DisplayPlusCopilotAssetGeneration) {\r\n this.adTypeViews.Responsive = new DisplayPlusDisplayAd(newOption);\r\n } else {\r\n this.adTypeViews.Responsive = new XandrDisplayAd(newOption);\r\n }\r\n }\r\n\r\n if (permissions.dynamic.DisplayPlusEdit && this.isAudienceNativeCampaign(scope.campaignType, scope.campaignSubType)) {\r\n setClarityTag({\r\n IsDisplayPlusAudienceNative: true,\r\n CampaignSubType: scope.campaignSubType,\r\n });\r\n\r\n this.adTypeViews.Responsive = new DisplayPlusNativeAd(newOption);\r\n\r\n if (this.isMultiAdFormatEnabled && selectedAdFormat === AdFormat.Display) {\r\n this.adTypeViews.Responsive = new DisplayPlusDisplayAd(newOption);\r\n } else if (this.isMultiAdFormatEnabled && selectedAdFormat === AdFormat.Video) {\r\n this.adTypeViews.Responsive = new XandrVideoAd(newOption);\r\n }\r\n }\r\n\r\n this.$('[data-type=Responsive]').empty().prepend(this.adTypeViews.Responsive.render().el);\r\n\r\n this.renderAdFormatOption();\r\n }\r\n\r\n render() {\r\n if (this.perfMarkerRender) {\r\n this.perfMarkerRender.willRender();\r\n }\r\n if (this.isImproveMMA) {\r\n this.$el.html(improveMMAAdEditor({\r\n i18n,\r\n i18nGlobal,\r\n permissions,\r\n showInline: this.showInline,\r\n editMode: !_.isEmpty(this.model),\r\n isMigratingToEXTA: this.isMigratingToEXTA,\r\n adTypeEnum,\r\n isSTADisabled: this.isSTADisabled,\r\n showSaveAndCreateAnother: this.showSaveAndCreateAnother,\r\n isDisplayPlusNativeEdit: this.isDisplayPlusNativeEdit,\r\n isDisplayPlusDisplayAd: permissions.dynamic.DisplayPlusCopilotAssetGeneration && isXandrDisplayAdsCampaign(this.campaignSubType),\r\n }));\r\n } else {\r\n this.$el.html(editorTemplate({\r\n i18n,\r\n i18nGlobal,\r\n permissions,\r\n showInline: this.showInline,\r\n editMode: !_.isEmpty(this.model),\r\n isMigratingToEXTA: this.isMigratingToEXTA,\r\n adTypeEnum,\r\n isSTADisabled: this.isSTADisabled,\r\n showSaveAndCreateAnother: this.showSaveAndCreateAnother,\r\n isDisplayPlusNativeEdit: this.isDisplayPlusNativeEdit,\r\n isDisplayPlusDisplayAd: permissions.dynamic.DisplayPlusCopilotAssetGeneration && isXandrDisplayAdsCampaign(this.campaignSubType),\r\n isXandrVideoAd: this.isXandrVideoAd,\r\n isMultiAdFormatDisplayAd: this.isMultiAdFormatDisplayAd,\r\n isMultiAdFormatVideoAd: this.isMultiAdFormatVideoAd,\r\n }));\r\n }\r\n\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n _.each(this.adTypeViews, (subView, key) => {\r\n subView.render();\r\n this.$(`[data-type=${key}]`).prepend(subView.el);\r\n });\r\n\r\n this.editorialAppeal = new EditorialAppealView();\r\n this.$('.editorial-appeal-panel').append(this.editorialAppeal.render().el);\r\n\r\n if (!_.isEmpty(this.model) && !this.model.hasError && !this.isMigratingToEXTA) {\r\n // In adgroup creation page, when changing from single byte market to double byte market, need do validation in case exceeding max length\r\n // In Sta to Exta Migration UI (which is only under ads tab), shouldn't do validate before user click save\r\n this.validate(this._type);\r\n }\r\n\r\n this.setErrorsIfExist();\r\n\r\n this.on('saving', () => {\r\n if (this.isRSANewCopilotScenario()) {\r\n this.adTypeViews[this._type].triggerSaving();\r\n }\r\n });\r\n\r\n this.on('canceling', () => {\r\n if (this.isRSANewCopilotScenario()) {\r\n this.adTypeViews[this._type].triggerCanceling();\r\n }\r\n });\r\n\r\n this.on('cancel', () => {\r\n if (this.isMigratingToEXTA) {\r\n legacyInstru.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, 'crud-ad/view/adEditor', 'extaMigration-cancel');\r\n }\r\n this.adTypeViews[this._type].trigger('cancel');\r\n // Trigger survey in ads page when RSA editor is cancelled\r\n if (this._type === adTypeEnum.responsiveSearch && window.survey && window.survey.surveyManager) {\r\n window.survey.surveyManager.trigger({ checkIfSurveyIsOpen: true });\r\n }\r\n });\r\n\r\n if (this.perfMarkerRender) {\r\n this.perfMarkerRender.done();\r\n }\r\n\r\n if (this.viewModel.scope().adGroupId != null) {\r\n this.logActivity('ad editor rendered');\r\n }\r\n\r\n this.renderAdFormatOption();\r\n\r\n return this;\r\n }\r\n\r\n renderAdFormatOption() {\r\n if (this.isMultiAdFormatEnabled) {\r\n ReactDOM.render(\r\n ,\r\n this.el.querySelector('.ad-format-option-container'),\r\n );\r\n }\r\n }\r\n\r\n remove() {\r\n if (!this.closingAfterSave) {\r\n this.logActivity('ad editor dismissed');\r\n }\r\n this.editorialAppeal.remove();\r\n _.each(this.adTypeViews, (subView) => {\r\n subView.remove();\r\n });\r\n super.remove();\r\n }\r\n\r\n setErrorsIfExist() {\r\n if (!_.isEmpty(this.model) && this.model.hasError) {\r\n this.handleApiErrors(this.model.errors);\r\n }\r\n }\r\n\r\n save() {\r\n this.logActivity('ad editor click save');\r\n this.trigger('saving');\r\n\r\n if (this.perfMarker) {\r\n this.perfMarkerSave = this.perfMarker.createChild('Create_Ad_Save');\r\n this.perfMarkerSave.willInit();\r\n }\r\n let saveAdPromise = null;\r\n\r\n // Special case for Responsive ad, since we are consuming existing component for ad creation. Which does not match the structure of the existing views.\r\n if (this._type === 'Responsive') {\r\n const adEditorView = this.adTypeViews[this._type];\r\n\r\n saveAdPromise = this.isSaveToServer ?\r\n adEditorView.saveAdAsync((data, adId, type) => this.handleSave(data, adId, type)) :\r\n adEditorView.saveToClient((data, adId, type) => this.handleSave(data, adId, type));\r\n } else {\r\n saveAdPromise = Promise.resolve(this.isSaveToServer ? this.saveToServer() : this.saveToClient());\r\n }\r\n\r\n saveAdPromise.then((success = false) => {\r\n if (success) {\r\n this.closingAfterSave = true;\r\n this.trigger('close');\r\n if (this.perfMarkerSave) {\r\n this.perfMarkerSave.done();\r\n }\r\n if (this._type === adTypeEnum.responsiveSearch && this.adViewOption.inlineSuggestionsEnabled) {\r\n this.logCopilotRSAAssetSuggestionAdoption();\r\n if (this.isSaveToServer) {\r\n this.logRSAAssetSuggestionAdoption();\r\n }\r\n }\r\n this.logActivity('ad editor save success');\r\n\r\n if (this.isOpenCreatePanel) {\r\n this.logDeliveryStatusRecommendationAdoption();\r\n }\r\n\r\n } else {\r\n const $errors = this.$el.closest('.panel-body-ad').find('[role=alert]:visible').not('[aria-hidden=true]');\r\n\r\n if ($errors.exists()) {\r\n $errors[0].scrollIntoView({ block: 'center' });\r\n }\r\n this.logActivity('ad editor save failed');\r\n }\r\n // Trigger survey in ads page when RSA editor is saved\r\n if (this._type === adTypeEnum.responsiveSearch && window.survey && window.survey.surveyManager) {\r\n window.survey.surveyManager.trigger();\r\n }\r\n });\r\n }\r\n\r\n saveAndCreateAnother() {\r\n this.logActivity('ad editor click save and create another');\r\n this.trigger('saving');\r\n\r\n // Special case for Responsive ad, since we are consuming existing component for ad creation. Which does not match the structure of the existing views.\r\n if (this._type === 'Responsive') {\r\n const adEditorView = this.adTypeViews[this._type];\r\n const saveAndCreateAnotherFunc = this.isSaveToServer ? 'saveAndCreateAnotherAsync' : 'saveToClientAndCreateAnother';\r\n\r\n adEditorView[saveAndCreateAnotherFunc]((data, adId, type) => {\r\n this.handleSave(data, adId, type);\r\n if (this.isOpenCreatePanel) {\r\n this.logDeliveryStatusRecommendationAdoption();\r\n }\r\n this.resetViewToCreateAnother();\r\n });\r\n\r\n return;\r\n }\r\n\r\n Promise.resolve(this.isSaveToServer ? this.saveToServer() : this.saveToClient())\r\n .then((success = false) => {\r\n if (success) {\r\n if (this._type === adTypeEnum.responsiveSearch && this.adViewOption.inlineSuggestionsEnabled) {\r\n this.logCopilotRSAAssetSuggestionAdoption();\r\n if (this.isSaveToServer) {\r\n this.logRSAAssetSuggestionAdoption();\r\n }\r\n }\r\n if (this.isOpenCreatePanel) {\r\n this.logDeliveryStatusRecommendationAdoption();\r\n }\r\n this.resetViewToCreateAnother();\r\n }\r\n });\r\n }\r\n\r\n resetViewToCreateAnother() {\r\n //this prop is used in save function to indicate edit mode\r\n this.editMode = false;\r\n //shouldn't assign empty object to model, hasChange function needs it.\r\n this.model = _.omit(this.model, 'Id');\r\n this.model.isSaved = false;\r\n //hide appeal panel\r\n this.viewModel.errors.isAppealable(false);\r\n //reset editMode in subview\r\n _.each(this.adTypeViews, (subView) => {\r\n if (_.isFunction(subView.resetEditMode)) {\r\n subView.resetEditMode(false);\r\n }\r\n });\r\n\r\n this.logActivity('ad editor save and create another successful');\r\n this.closingAfterSave = false;\r\n }\r\n\r\n switchBackToSTA() {\r\n this.viewModel.Type(adTypeEnum.text); // eslint-disable-line\r\n }\r\n\r\n switchBackToEXTA() {\r\n this.viewModel.Type(adTypeEnum.expandedText); // eslint-disable-line\r\n }\r\n\r\n validate(type) {\r\n // Responsive uses an existing componenet which already takes care of the validation before saving\r\n let isValid = type === 'Responsive' ? true : this.adTypeViews[type].validate();\r\n\r\n if (this.viewModel.errors.isAppealable()) {\r\n isValid = this.editorialAppeal.validate() && isValid;\r\n }\r\n\r\n return isValid;\r\n }\r\n\r\n saveToServer() {\r\n const type = this._type;\r\n\r\n if (!this.validate(type)) {\r\n this.logActivity('Validated ad failed and will not save this ad to server');\r\n return false;\r\n }\r\n\r\n this.clearApiErrors();\r\n\r\n const params = this.adTypeViews[type].toObject();\r\n const campaignId = Number(this.viewModel.scope().campaignId);\r\n const adGroupId = Number(this.viewModel.scope().adGroupId);\r\n\r\n // Path1, Path2, TextPart2 and TitlePart3 allow space, but doesn't allow ONLY space\r\n if (params.Path1 && params.Path1.trim() === '') {\r\n params.Path1 = '';\r\n }\r\n if (params.Path2 && params.Path2.trim() === '') {\r\n params.Path2 = '';\r\n }\r\n if (params.TextPart2 && params.TextPart2.trim() === '') {\r\n params.TextPart2 = '';\r\n }\r\n if (params.TitlePart3 && params.TitlePart3.trim() === '') {\r\n params.TitlePart3 = '';\r\n }\r\n\r\n const scope = this.showInline ? {\r\n entitySet: edmCampaign.currentAccount.Campaigns.$withKey(campaignId).AdGroups.$withKey(adGroupId).Ads,\r\n cacheResponse: false,\r\n scenario: 'ads-grid',\r\n } : { adapter: 'bulk', cacheResponse: false };\r\n\r\n _.extend(params, {\r\n Campaign: { Id: campaignId },\r\n AdGroup: { Id: adGroupId },\r\n Type: type,\r\n });\r\n\r\n // Create New if it's migrating to EXTA from STA\r\n if (this.editMode && !(this.isMigratingToEXTA && type === adTypeEnum.expandedText)) {\r\n params.Id = this.model.Id;\r\n }\r\n\r\n if (this.viewModel.errors.isAppealable() && this.editorialAppeal.ko_model.provideJustification()) {\r\n _.extend(params, this.editorialAppeal.toObject());\r\n }\r\n\r\n //In new campaign creation, if user didn't make any change, show alert message.\r\n if (!this.hasChange(params, type) && !this.showInline) {\r\n this.viewModel.errors([i18n.get('Ad_Edit_NoChange_AlertMessage')]);\r\n return false;\r\n }\r\n\r\n let cachedSavedresult;\r\n\r\n return jsdata[adTypeSchema[type]]\r\n .create(params, scope)\r\n .then(({ value, Id }) => {\r\n this.logActivity(JSON.stringify({\r\n value,\r\n Id,\r\n showInline: this.showInline,\r\n }), 'save ad to server succeeded with suggestion');\r\n\r\n let adId = this.showInline ? value : Id;\r\n\r\n // MT could return adId as 0, in case of this situaion, we don't update viewmodel adId\r\n if (adId === 0) {\r\n adId = this.model.Id;\r\n }\r\n\r\n return this.handleSave(params, adId, type);\r\n })\r\n .catch(({ entity: { Id } = {}, errors } = {}) => {\r\n if (this._type === adTypeEnum.responsiveSearch && this.adViewOption.inlineSuggestionsEnabled) {\r\n this.logActivity(JSON.stringify({\r\n Id,\r\n showInline: this.showInline,\r\n }), 'save ad to server failed with suggestion');\r\n }\r\n\r\n if ((_.isEmpty(this.model) || !this.model.isSaved) && Id) {\r\n //if the errors are editorial appealable errors, bulk API will return Id back, we'll consider the ad is saved successfully\r\n return this.handleSave(params, Id, type);\r\n }\r\n\r\n _.chain(errors).map((error) => error.Error || error.Code).uniq().each((error) => {\r\n this.logActivity(error, 'ad creation api error');\r\n });\r\n\r\n return this.handleApiErrors(this.showInline ? getODataErrors(errors, permissions) : getBulkApiErrors(errors, undefined, permissions));\r\n })\r\n .then((success = false) => {\r\n cachedSavedresult = success;\r\n\r\n // saveImageExtensionsToServer is non-blocking, but we need to ensure that promise is fulfilled before closing editor\r\n if (success && this.adTypeViews[type].enableRSAExpansion) {\r\n return this.adTypeViews[type].saveImageExtensionsToServer({\r\n adId: this.model.Id,\r\n perfMarker: this.perfMarkerSave,\r\n });\r\n }\r\n\r\n return true;\r\n })\r\n .then(() => {\r\n return cachedSavedresult;\r\n })\r\n .finally(withUiBlock(this.$el));\r\n }\r\n\r\n handleSave(data, adId, type) {\r\n const logging = `${type}Ad${this.showInline ? ' under ads tab' : ''}`;\r\n\r\n const params = _.pick(data, _.negate(_.isNull));\r\n\r\n params.Id = adId;\r\n params.isSaved = this.isSaveToServer;\r\n\r\n if (_.isEmpty(this.model) || !this.model.Id || (this.isMigratingToEXTA && this.model.Id !== adId)) {\r\n // create a new ad, trigger 'created' event\r\n this.trigger('created', params);\r\n this.adTypeViews[type].trigger('created');\r\n legacyInstru.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, `create${logging}`, 1);\r\n this.logActivity(1, `createAd: ${type}`);\r\n } else if (this.model.isSaved) {\r\n // update the ad\r\n this.trigger('updated', params);\r\n legacyInstru.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, `update${logging}`, 1);\r\n this.logActivity(1, `updateAd: ${type}`);\r\n } else {\r\n // create the copied ad, trigger 'updated' event\r\n this.trigger('updated', params);\r\n legacyInstru.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, `create${logging}`, 1);\r\n this.logActivity(1, `createAd: ${type}`);\r\n }\r\n\r\n if (this.isMigratingToEXTA) {\r\n let message = this.model.Id === adId ? 'staEdited' : 'extaCreated';\r\n\r\n legacyInstru.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, 'crud-ad/view/adEditor', `extaMigration-${message}`);\r\n }\r\n\r\n this.model = params;\r\n\r\n this.activity.stop();\r\n return true;\r\n }\r\n\r\n prepareErrorMessage(errors) {\r\n const type = this._type;\r\n\r\n _.each(errors, (err) => {\r\n if (_.has(err, 'property') && _.has(this.adTypeViews[type].viewModel, err.property) && _.contains(lengthExceededErrorCodes, err.code)) {\r\n const length = this.adTypeViews[type].viewModel[err.property].maxLength();\r\n\r\n if (err.message && (err.message.indexOf('{1}') > -1)) {\r\n err.message = err.message.replace('{1}', length);\r\n }\r\n }\r\n });\r\n }\r\n\r\n saveToClient() {\r\n const type = this._type;\r\n\r\n if (!this.adTypeViews[type].validate()) {\r\n return false;\r\n }\r\n\r\n const model = this.adTypeViews[type].toObject();\r\n\r\n model.Type = this._type;\r\n\r\n if (_.isEmpty(this.model) || !this.model.Id) {\r\n model.Id = uuid.v4();\r\n this.trigger('created', model);\r\n this.adTypeViews[type].trigger('created');\r\n } else {\r\n model.isSaved = this.model.isSaved;\r\n model.Id = this.model.Id;\r\n this.trigger('updated', model);\r\n }\r\n\r\n this.lastClientModelId = model.Id;\r\n\r\n return true;\r\n }\r\n\r\n hasChange(params, type) {\r\n let current = _.pick(params, schemaMapper[type]());\r\n let original = _.pick(this.model, schemaMapper[type]());\r\n\r\n current = _.pick(current, _.negate(_.isEmpty));\r\n original = _.pick(original, _.negate(_.isEmpty));\r\n\r\n return !_.isEqual(_.omit(current, 'Id'), _.omit(original, 'Id'));\r\n }\r\n\r\n handleApiErrors(errors) {\r\n const type = this._type;\r\n\r\n this.prepareErrorMessage(errors);\r\n\r\n if (type !== 'Responsive') {\r\n // MMA will handle in its view\r\n this.adTypeViews[type].handleApiErrors(errors);\r\n this.viewModel.errors(this.adTypeViews[type].viewModel.errors());\r\n }\r\n\r\n const appealableErrors = getAppealableErrors(errors);\r\n\r\n this.viewModel.errors.isAppealable(appealableErrors.isAppealable);\r\n if (this.viewModel.errors.isAppealable()) {\r\n this.editorialAppeal.setRejectedInfos(appealableErrors);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n clearApiErrors() {\r\n const type = this._type;\r\n\r\n this.adTypeViews[type].clearApiErrors();\r\n\r\n this.viewModel.errors([]);\r\n }\r\n\r\n cancel() {\r\n this.trigger('canceling');\r\n this.trigger('cancel');\r\n }\r\n\r\n triggerClose() {\r\n this.trigger('close');\r\n }\r\n\r\n get _type() {\r\n return this.viewModel.Type(); // eslint-disable-line\r\n }\r\n\r\n mapSTAToEXTA(model) {\r\n const paths = getPath1AndPath2(model.DisplayUrl);\r\n\r\n return {\r\n DisplayUrl: '',\r\n FinalUrls: _.isEmpty(model.FinalUrls) ? [(/^https?:\\/\\//i).test(model.DestinationUrl) ? model.DestinationUrl : `https://${model.DestinationUrl}`] : model.FinalUrls,\r\n MobileFinalUrls: model.MobileFinalUrls,\r\n NativePreference: model.NativePreference,\r\n Path1: paths.path1,\r\n Path2: paths.path2,\r\n Text: model.Text,\r\n TitlePart1: model.Title,\r\n TitlePart2: '',\r\n TrackingUrlTemplate: model.TrackingUrlTemplate,\r\n Type: adTypeEnum.expandedText,\r\n UrlCustomParameters: model.UrlCustomParameters,\r\n };\r\n }\r\n}\r\n","import ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport uuid from '@bingads-webui-component-legacy/uuid/index';\r\nimport * as schemaMapper from '@bingads-webui-campaign-legacy/crud-ad/schemaMapper';\r\nimport { MMAAssetConfigs } from '@bingads-webui-campaign-react/responsive-ad-editor-utils';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\nconst MAX_HEADLINES = MMAAssetConfigs.MAX_HEADLINES;\r\nconst MAX_LONGHEADLINES = MMAAssetConfigs.MAX_LONGHEADLINES;\r\nconst MAX_DESCRIPTIONS = MMAAssetConfigs.MAX_DESCRIPTIONS;\r\n\r\nexport default class {\r\n constructor({\r\n idField = 'Id',\r\n maxAdsCount = 50,\r\n adGroupId = '',\r\n adGroups = [],\r\n isMixedModeCampaignCreation = false,\r\n } = {}) {\r\n this.idField = idField;\r\n this.maxAdsCount = maxAdsCount;\r\n this.adGroupId = adGroupId;\r\n this.isMixedModeCampaignCreation = isMixedModeCampaignCreation;\r\n\r\n this.adGroup = ko.observable();\r\n this.externalCachedImageExtensionChanges = ko.observable();\r\n this.firstTwoKeywords = ko.observableArray([]);\r\n this.allAdGroupsInfo = ko.observableArray([]);\r\n this.hasMultiAdgroups = ko.computed(() => {\r\n return this.allAdGroupsInfo().length > 1;\r\n });\r\n\r\n this.defaultAds = _.constant([\r\n { action: 'create' },\r\n { action: 'dash' },\r\n ]);\r\n\r\n this.ads = _.clone(this.defaultAds());\r\n\r\n this.deletedAdIds = [];\r\n\r\n this.alertMessage = ko.observable();\r\n this.duplicateAlertMessage = ko.observable();\r\n\r\n this.refresh(adGroups);\r\n }\r\n\r\n getAds() {\r\n return this.ads.slice(0, -2);\r\n }\r\n\r\n //when back to adgroup step, then go next to this step, need to refresh adgroup name and keywords list\r\n refresh(adGroups) {\r\n const adGroup = _.find(adGroups, { [this.idField]: this.adGroupId });\r\n let allAdGroups = adGroups;\r\n\r\n this.adGroup(adGroup);\r\n // for mixed mode campaign creation\r\n // only ad groups of the same type should be displayed in the \"copy to ad group\" menu\r\n if (this.isMixedModeCampaignCreation) {\r\n allAdGroups = _.filter(adGroups, (adg) => adg.AdGroupType === adGroup.AdGroupType);\r\n }\r\n\r\n this.allAdGroupsInfo(_.map(allAdGroups, ({ Name, [this.idField]: id }) => {\r\n return {\r\n Name,\r\n [this.idField]: id,\r\n };\r\n }));\r\n\r\n this._generateKeywordInfo();\r\n\r\n if (!this.isEmpty()) {\r\n this.slb.refreshSource();\r\n }\r\n }\r\n\r\n _generateKeywordInfo() {\r\n const Two = 2;\r\n const keywords = _.pluck(this.adGroup().Keywords, 'Text');\r\n\r\n this.firstTwoKeywords(_.first(keywords, Two));\r\n\r\n if (_.size(this.adGroup().Keywords) > Two) {\r\n this.firstTwoKeywords.push(i18n.get('Ad_MoreKeywords', {\r\n length: this.adGroup().Keywords.length - Two,\r\n }));\r\n }\r\n }\r\n\r\n isEmpty() {\r\n return this.ads.length === this.defaultAds().length;\r\n }\r\n\r\n totalCounts() {\r\n return this.ads.length - this.defaultAds().length;\r\n }\r\n\r\n isFull() {\r\n return this.ads.length === this.defaultAds().length + this.maxAdsCount;\r\n }\r\n\r\n _pushAdToArray(ad) {\r\n this.ads.splice(this.ads.length - 2, 0, ad);\r\n }\r\n\r\n onDelete(ad) {\r\n const index = _.findIndex(this.ads, {\r\n [this.idField]: ad[this.idField],\r\n });\r\n\r\n this.ads.splice(index, 1);\r\n this.slb.refreshSource();\r\n\r\n if (ad.isSaved) {\r\n // this ad had been saved to MT server.\r\n this.deletedAdIds.push({ Id: ad[this.idField], Type: ad.Type });\r\n }\r\n\r\n if (this.isEmpty()) {\r\n this.externalCachedImageExtensionChanges(null);\r\n }\r\n\r\n //clear reach maxLength alert message\r\n this.alertMessage('');\r\n\r\n this.refreshDuplicateMessage();\r\n }\r\n\r\n refreshDuplicateMessage() {\r\n const hasDuplicate = _.some(this.ads, (entity) => {\r\n return entity.isDuplicated;\r\n });\r\n\r\n this.duplicateAlertMessage(hasDuplicate ?\r\n i18n.get('AdGroup_Validation_DuplicateAds_AlertMessage') : '');\r\n }\r\n\r\n updateMMAfields(ad) {\r\n if (!_.isEmpty(ad.Headlines) && typeof ad.Headlines === 'string') {\r\n ad.Headlines = JSON.parse(ad.Headlines);\r\n ad.Headline = _.first(ad.Headlines).Text;\r\n _.each(ad.Headlines, (val, key) => {\r\n ad[`Headline${key}`] = val.Text;\r\n });\r\n for (let i = ad.Headlines.length; i < MAX_HEADLINES; i++) {\r\n delete ad[`Headline${i}`];\r\n }\r\n }\r\n if (!_.isEmpty(ad.LongHeadlines) && typeof ad.LongHeadlines === 'string') {\r\n ad.LongHeadlines = JSON.parse(ad.LongHeadlines);\r\n ad.LongHeadline = _.first(ad.LongHeadlines).Text;\r\n _.each(ad.LongHeadlines, (val, key) => {\r\n ad[`LongHeadline${key}`] = val.Text;\r\n });\r\n for (let i = ad.LongHeadlines.length; i < MAX_LONGHEADLINES; i++) {\r\n delete ad[`LongHeadline${i}`];\r\n }\r\n }\r\n if (!_.isEmpty(ad.Descriptions) && typeof ad.Descriptions === 'string') {\r\n ad.Descriptions = JSON.parse(ad.Descriptions);\r\n ad.Text = _.first(ad.Descriptions).Text;\r\n _.each(ad.Descriptions, (val, key) => {\r\n ad[`Description${key}`] = val.Text;\r\n });\r\n for (let i = ad.Descriptions.length; i < MAX_DESCRIPTIONS; i++) {\r\n delete ad[`Description${i}`];\r\n }\r\n }\r\n }\r\n\r\n syncTheExtension(changes) {\r\n this.externalCachedImageExtensionChanges(changes);\r\n }\r\n\r\n onUpdate(newAd, originalAd) {\r\n this.updateMMAfields(newAd);\r\n const index = _.findIndex(this.ads, {\r\n [this.idField]: originalAd[this.idField],\r\n });\r\n\r\n if (!originalAd.isSaved && this.checkIfExist(newAd)) {\r\n this.ads.splice(index, 1);\r\n } else {\r\n this.ads[index] = newAd;\r\n }\r\n\r\n this.slb.refreshSource();\r\n\r\n this.refreshDuplicateMessage();\r\n }\r\n\r\n onCreate(ad) {\r\n this.updateMMAfields(ad);\r\n if (this.checkIfExist(ad)) {\r\n return;\r\n }\r\n\r\n this._pushAdToArray(ad);\r\n this.slb.refreshSource();\r\n\r\n //clear empty adgroup alert message\r\n this.alertMessage('');\r\n }\r\n\r\n onCopy(ad) {\r\n const copiedAd = _.clone(ad);\r\n\r\n copiedAd.isDuplicated = false;\r\n copiedAd[this.idField] = uuid.v4();\r\n copiedAd.isSaved = false;\r\n\r\n this._pushAdToArray(copiedAd);\r\n this.slb.refreshSource();\r\n }\r\n\r\n checkIfExist(ad) {\r\n const savedAdsIds = _.pluck(_.where(this.ads, { isSaved: true } ), 'Id');\r\n\r\n return _.contains(savedAdsIds, ad.Id);\r\n }\r\n\r\n changes() {\r\n return {\r\n addedAds: _.chain(this.ads)\r\n .filter((ad) => {\r\n return !ad.isSaved && ad.Type;\r\n })\r\n .map((ad) => {\r\n ad.AdGroup = { Id: this.adGroupId };\r\n return ad;\r\n })\r\n .value(),\r\n removedAdIds: _.map(this.deletedAdIds, (deleted) => {\r\n return _.defaults(deleted, { AdGroup: { Id: this.adGroupId } });\r\n }),\r\n };\r\n }\r\n\r\n hasDuplicateAds() {\r\n //TODO [lizho] refacter to be more efficient. The ads array can't be sorted firstly, otherwise the panel will be different.\r\n _.each(this.ads, (ad) => {\r\n ad.isDuplicated = false;\r\n });\r\n\r\n let hasDuplicate = false;\r\n\r\n for (let index = 0; index < this.totalCounts(); index++) {\r\n if (this.ads[index].isDuplicated) {\r\n continue; // eslint-disable-line\r\n }\r\n\r\n const sourceAd = _.pick(this.ads[index], schemaMapper[this.ads[index].Type]());\r\n\r\n for (let j = index + 1; j < this.totalCounts(); j++) {\r\n if (_.isEqual(sourceAd, _.pick(this.ads[j], schemaMapper[this.ads[j].Type]()))) {\r\n this.ads[j].isDuplicated = true;\r\n hasDuplicate = true;\r\n }\r\n }\r\n }\r\n\r\n this.slb.refreshSource();\r\n this.refreshDuplicateMessage();\r\n\r\n return hasDuplicate;\r\n }\r\n\r\n getCachedImageExtensionChanges() {\r\n return this.externalCachedImageExtensionChanges();\r\n }\r\n\r\n findAd(id) {\r\n return _.find(this.ads, { [this.idField]: id });\r\n }\r\n}\r\n","/* eslint-disable no-undef */\r\nimport Backbone from 'backbone';\r\nimport $ from 'jquery';\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport ViewModel from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adGroupAdsEditor';\r\nimport EditorView from '@bingads-webui-campaign-legacy/crud-ad/view/adEditor';\r\nimport createTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adGroupAdsEditor.pug';\r\nimport adListTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adList.pug';\r\nimport adPreviewTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adPreview.pug';\r\nimport {combineText } from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsPreview/expandedTextAd';\r\nimport SingleListBox from '@bingads-webui-component-legacy/single-list-box/view/singleListBox';\r\nimport dialogDecorator from '@bingads-webui-component-legacy/dialog/dialogDecorator';\r\nimport popup from '@bingads-webui-component-legacy/dialog/popup';\r\nimport getDomain from '@bingads-webui-campaign-legacy/crud-ad/service/getDomain';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport {types as campaignTypes} from '@bingads-webui-campaign-legacy/adgroup-create-advanced/util/campaignType';\r\nimport { getExpandedTextAdDisplayUrl, getDynamicSearchAdDisplayUrl } from '@bingads-webui-campaign-legacy/crud-ad/service/displayUrl';\r\nimport { getTitlePreview, getDescPreview } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { panelDecorator } from '@bingads-webui-campaign-react/panel-decorator';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nconst EditorForm = dialogDecorator.decorate(EditorView, {\r\n position: 'center',\r\n maxWidth: 2000,\r\n popupFront: '.navbar-fixed-top',\r\n});\r\n\r\nconst EditorPanel = panelDecorator(EditorView, {\r\n panelClassName: 'ad-editor-panel',\r\n i18n,\r\n panelReadyAriaLabel: i18n.getString('Ad editor side panel opened'),\r\n});\r\n\r\nconst DefaultPageSize = 9;\r\nconst DefaultMaxAdsCount = 50;\r\n\r\nexport default class AdGroupAdsEditor extends Backbone.View {\r\n initialize({\r\n adGroups = [{Id: '', Name: '', Keywords: []}],\r\n adGroupId = '',\r\n Campaign: { Id: campaignId = '', DomainName: campaignDomain = '', DynamicDescriptionEnabled: isDynamicDescriptionEnabled = false } = {},\r\n idField = 'Id',\r\n pageSize = DefaultPageSize,\r\n maxAdsCount = DefaultMaxAdsCount,\r\n showAdGroupInfo = true,\r\n isSaveToServer = true,\r\n Language: language = null,\r\n Languages: languages = [],\r\n campaignType = 'search',\r\n defaultLandingPageUrl = '',\r\n usePanel = false,\r\n isForVNext = false,\r\n activityLogger,\r\n adGroupType = null,\r\n isMixedModeCampaignCreation = false,\r\n newI18n,\r\n perfMarker,\r\n serverContext,\r\n } = {}) {\r\n this.showAdGroupInfo = showAdGroupInfo;\r\n this.adGroupId = adGroupId;\r\n this.adGroup = _.find(adGroups, (adg) => String(adg.Id) === String(adGroupId)) || {};\r\n this.idField = idField;\r\n this.maxAdsCount = maxAdsCount;\r\n this.campaignId = campaignId;\r\n this.isSaveToServer = isSaveToServer;\r\n this.language = language;\r\n this.languages = languages || [];\r\n this.pageSize = pageSize;\r\n this.campaignType = campaignType;\r\n this.defaultLandingPageUrl = defaultLandingPageUrl;\r\n this.campaignDomain = _.result(_.first(_.result(pageContext.CurrentCampaign, 'CampaignSettings')), 'DomainName', campaignDomain);\r\n this.isDynamicDescriptionEnabled = _.result(_.first(_.result(pageContext.CurrentCampaign, 'CampaignSettings')), 'DynamicDescriptionEnabled', isDynamicDescriptionEnabled);\r\n this.isVanityUrlEnabled = pageContext.Permissions.IsVanityUrlEnabled;\r\n this.usePanel = usePanel;\r\n this.activityLogger = activityLogger;\r\n this.isForVNext = isForVNext;\r\n this.adGroupType = adGroupType;\r\n this.inlineSuggestionsEnabled = pageContext.Permissions.IsRSASuggestionCMUIEnabled;\r\n this.newI18n = newI18n;\r\n this.adEditorListContainer = '.ad-editor-list-group';\r\n this.perfMarker = perfMarker;\r\n this.serverContext = serverContext;\r\n\r\n const map = {\r\n copy: this._copyAd,\r\n edit: this._editAd,\r\n remove: this._deleteAd,\r\n copyToSome: this._copyAdToSomeAdGroups,\r\n copyToOthers: this._copyAdToAllOtherAdGroups,\r\n };\r\n\r\n this.itemActions = _.reduce(map, (memo, value, key) => {\r\n memo[key] = {\r\n callback: _.bind(value, this),\r\n };\r\n\r\n return memo;\r\n }, {}, this);\r\n\r\n this.viewModel = new ViewModel({\r\n idField,\r\n maxAdsCount,\r\n adGroupId,\r\n adGroups,\r\n isMixedModeCampaignCreation,\r\n });\r\n\r\n this.on('update:domainName', (DomainName) => {\r\n this.campaignDomain = DomainName;\r\n });\r\n this.on('update:dynamicDescriptionEnabled', (dynamicDescriptionEnabled) => {\r\n this.isDynamicDescriptionEnabled = dynamicDescriptionEnabled;\r\n });\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .create-ad': '_createAd',\r\n };\r\n }\r\n\r\n render() {\r\n this.$el.html(createTemplate({\r\n i18: i18n,\r\n showAdGroupInfo: this.showAdGroupInfo,\r\n }));\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n this._initializeListView();\r\n\r\n return this;\r\n }\r\n\r\n remove() {\r\n if (this.editor) {\r\n this.editor.remove();\r\n delete this.editor;\r\n }\r\n super.remove();\r\n }\r\n\r\n getAds() {\r\n return this.viewModel.getAds();\r\n }\r\n\r\n logActivity(message) {\r\n if (this.activityLogger) {\r\n this.activityLogger.signal(message, 'ad group ads editor');\r\n }\r\n }\r\n\r\n _getData() {\r\n return (options, cb) => {\r\n cb(null, {\r\n items: this.viewModel.ads,\r\n total: this.viewModel.ads.length,\r\n });\r\n };\r\n }\r\n\r\n _processItem(item/*, id*/) {\r\n if (item.action) {\r\n item.isFirst = this.viewModel.isEmpty();\r\n } else {\r\n const type = _.result(item, 'Type');\r\n\r\n item.adGroups = this.viewModel.allAdGroupsInfo();\r\n if (type === 'ExpandedText') {\r\n item.title = `${item.TitlePart1} | ${item.TitlePart2}`;\r\n\r\n if (item.TitlePart3) {\r\n item.title = `${item.title} | ${item.TitlePart3}`;\r\n }\r\n\r\n item.displayUrl = getExpandedTextAdDisplayUrl(_.first(item.FinalUrls), item.DisplayUrl, item.Path1, item.Path2);\r\n if (item.TextPart2) {\r\n item.text = combineText(item.Text, item.TextPart2);\r\n } else {\r\n item.text = item.Text;\r\n }\r\n } else if (type === 'ResponsiveSearch') {\r\n item.text = getDescPreview(_.map(item.Descriptions, (i) => ({\r\n Text: i.Asset.Text,\r\n PinnedField: i.PinnedField,\r\n })));\r\n item.title = getTitlePreview(_.map(item.Headlines, (i) => ({\r\n Text: i.Asset.Text,\r\n PinnedField: i.PinnedField,\r\n })));\r\n item.displayUrl = getExpandedTextAdDisplayUrl(_.first(item.FinalUrls), item.DisplayUrl, item.Path1, item.Path2);\r\n } else if (type === 'DynamicSearch') {\r\n item.displayUrl = getDynamicSearchAdDisplayUrl(getDomain(this.campaignDomain), item.Path1, item.Path2);\r\n if (item.TextPart2) {\r\n item.text = combineText(item.Text, item.TextPart2);\r\n } else {\r\n item.text = item.Text;\r\n }\r\n }\r\n }\r\n\r\n item.hasMultiAdgroups = this.viewModel.hasMultiAdgroups();\r\n this.updateAttributeForListItem(this.adEditorListContainer);\r\n\r\n return item;\r\n }\r\n\r\n _initializeListView() {\r\n this.viewModel.slb = new SingleListBox({\r\n el: this.$el.find('.ads-creative'),\r\n itemActions: this.itemActions,\r\n processItem: _.bind(this._processItem, this),\r\n data: {\r\n sourceItems: _.bind(this._getData(), this),\r\n useCallbackForFetchOnly: true,\r\n itemIdField: this.idField,\r\n pageSize: this.pageSize,\r\n },\r\n templates: {\r\n layoutTemplate: adListTemplate({ i18n }),\r\n itemLayoutTemplate: adPreviewTemplate({\r\n i18n,\r\n isForVNext: this.isForVNext,\r\n adGroupId: this.adGroupId,\r\n }),\r\n listContainerSelector: this.adEditorListContainer,\r\n },\r\n }).render();\r\n\r\n // The following code to is used to fix accessibility on ad panel.\r\n _.defer(() => {\r\n $(this.adEditorListContainer).attr('role', 'list');\r\n $(this.adEditorListContainer).on('focus', () => {\r\n $(this.adEditorListContainer).removeAttr('aria-activedescendant tabindex');\r\n });\r\n this.updateAttributeForListItem(this.adEditorListContainer);\r\n });\r\n }\r\n\r\n copyAdFromOtherAdGroup(ad) {\r\n this._copyAd(ad);\r\n }\r\n\r\n isEmpty() {\r\n const empty = this.viewModel.isEmpty();\r\n\r\n this.viewModel.alertMessage(empty ? i18n.get('AdGroup_Validation_NoCreatedAd') : '');\r\n return empty;\r\n }\r\n\r\n changes() {\r\n return this.viewModel.changes();\r\n }\r\n\r\n _copyAdToAllOtherAdGroups(ad) {\r\n this.logActivity('click copy ad to all other ad groups');\r\n this.trigger('copyToOthers', {\r\n ad,\r\n sourceId: this.adGroupId,\r\n });\r\n\r\n this.trigger('ads:changed');\r\n }\r\n\r\n _copyAdToSomeAdGroups(ad) {\r\n this.logActivity('click copy ad to some ad groups');\r\n const targetAdGroupIds = this.$(`.copyToSome[data-id=${ad[this.idField]}] input:checked`).map(function () {\r\n return this.dataset.adgroupid; //eslint-disable-line\r\n }).get();\r\n\r\n if (_.isEmpty(targetAdGroupIds)) {\r\n popup.alert(i18n.get('AdGroup_Validation_NoOneSelected'));\r\n } else {\r\n this.trigger('copyToSome', {\r\n targetAdGroupIds,\r\n ad,\r\n });\r\n\r\n this.trigger('ads:changed');\r\n }\r\n }\r\n\r\n _deleteAd(ad) {\r\n this.logActivity('remove ad clicked');\r\n if (popup.confirm(i18n.get('Ad_Delete_Warning'))) {\r\n this.viewModel.onDelete(ad);\r\n\r\n this.trigger('ads:changed');\r\n this.logActivity('ad removed');\r\n\r\n this.updateAttributeForListItem(this.adEditorListContainer);\r\n if (window.App.views.alertCenter) {\r\n window.App.views.alertCenter.showConfirmation(this.newI18n.getString(_TL_('Ad removed successfully.')));\r\n }\r\n }\r\n }\r\n\r\n _createAd() {\r\n if (!this._hasMaxAds()) {\r\n this._editAd(null);\r\n }\r\n this.updateAttributeForListItem(this.adEditorListContainer);\r\n }\r\n\r\n _hasMaxAds() {\r\n if (this.viewModel.isFull()) {\r\n this.viewModel.alertMessage(i18n.get('AdGroup_Validation_MaxCreatedAds', {\r\n name: _.property('Name')(this.viewModel.adGroup()),\r\n count: this.maxAdsCount,\r\n }));\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n _copyAd(ad) {\r\n const focusId = $(document.activeElement).parents('.adEditor-listitem').attr('data-id');\r\n\r\n this.logActivity('copy ad clicked');\r\n if (!this._hasMaxAds()) {\r\n this.viewModel.onCopy(ad);\r\n\r\n this.trigger('ads:changed');\r\n this.updateAttributeForListItem(this.adEditorListContainer);\r\n\r\n if (window.App.views.alertCenter) {\r\n window.App.views.alertCenter.showConfirmation(this.newI18n.getString(_TL_('Ad copied successfully.')));\r\n if (focusId) { // Focus on the copy button after the copy action\r\n $(`.adEditor-listitem[data-id=${focusId}]`).find('.itemAction-copy').trigger('focus');\r\n }\r\n }\r\n }\r\n }\r\n\r\n _onClose() {\r\n if (this.editor) {\r\n this.editor.remove();\r\n delete this.editor;\r\n }\r\n this.updateAttributeForListItem(this.adEditorListContainer);\r\n }\r\n\r\n _handleCreatedAd(ext) {\r\n this.viewModel.onCreate(ext);\r\n this.trigger('ads:changed');\r\n this.updateAttributeForListItem(this.adEditorListContainer);\r\n }\r\n\r\n _handleUpdatedAd(ext, ad) {\r\n this.viewModel.onUpdate(ext, ad);\r\n this.trigger('ads:changed');\r\n this.updateAttributeForListItem(this.adEditorListContainer);\r\n }\r\n\r\n _editAd(ad) {\r\n if (_.isEmpty(ad)) {\r\n this.logActivity('create ad clicked');\r\n } else {\r\n this.logActivity('edit ad clicked');\r\n }\r\n\r\n if (this.editor) {\r\n this.editor.remove();\r\n }\r\n\r\n const campaignType = _.result(pageContext.CurrentCampaign, 'CampaignType') || campaignTypes[this.campaignType];\r\n\r\n if (this.usePanel) {\r\n this.editor = new EditorPanel({\r\n newI18n: this.newI18n,\r\n model: _.isEmpty(ad) ? ad : this.viewModel.findAd(ad.Id),\r\n externalCachedImageExtensionChanges: this.viewModel.getCachedImageExtensionChanges(),\r\n onCachedImageExtensionChanged: this.viewModel.syncTheExtension.bind(this.viewModel),\r\n campaignId: Number(this.campaignId),\r\n adGroupId: Number(this.adGroupId),\r\n adGroupType: this.adGroupType || this.adGroup.AdGroupType,\r\n campaignType,\r\n isForVNext: this.isForVNext,\r\n title: i18n.get(ad ? 'Ad_EditAd' : 'Ad_CreateAd'),\r\n isSaveToServer: this.isSaveToServer,\r\n isTraditionalChinese: this.language === 'TraditionalChinese' || _.contains(this.languages, 'All') || _.contains(this.languages, 'TraditionalChinese'),\r\n inlineSuggestionsEnabled: this.inlineSuggestionsEnabled,\r\n defaultLandingPageUrl: this.defaultLandingPageUrl,\r\n campaignDomain: this.campaignDomain,\r\n isDynamicDescriptionEnabled: this.isDynamicDescriptionEnabled,\r\n activityLogger: this.activityLogger,\r\n eventsToActions: [{\r\n event: 'cancel close',\r\n action: this._onClose.bind(this),\r\n }, {\r\n event: 'created',\r\n action: (ext) => this._handleCreatedAd(ext),\r\n }, {\r\n event: 'updated',\r\n action: (ext) => this._handleUpdatedAd(ext, ad),\r\n }],\r\n onClose: this._onClose.bind(this),\r\n isAdgroupCreation: true,\r\n perfMarker: this.perfMarker,\r\n serverContext: this.serverContext,\r\n }).render();\r\n } else {\r\n this.editor = new EditorForm({\r\n newI18n: this.newI18n,\r\n model: _.isEmpty(ad) ? ad : this.viewModel.findAd(ad.Id),\r\n campaignId: Number(this.campaignId),\r\n adGroupId: Number(this.adGroupId),\r\n adGroupType: this.adGroupType || this.adGroup.AdGroupType,\r\n campaignType,\r\n isForVNext: this.isForVNext,\r\n title: i18n.get(ad ? 'Ad_EditAd' : 'Ad_CreateAd'),\r\n isSaveToServer: this.isSaveToServer,\r\n isTraditionalChinese: this.language === 'TraditionalChinese' || _.contains(this.languages, 'All') || _.contains(this.languages, 'TraditionalChinese'),\r\n inlineSuggestionsEnabled: this.inlineSuggestionsEnabled,\r\n defaultLandingPageUrl: this.defaultLandingPageUrl,\r\n campaignDomain: this.campaignDomain,\r\n activityLogger: this.activityLogger,\r\n isAdgroupCreation: true,\r\n perfMarker: this.perfMarker,\r\n }).render();\r\n\r\n this.editor.on('created', (ext) => this._handleCreatedAd(ext));\r\n\r\n this.editor.on('updated', (ext) => this._handleUpdatedAd(ext, ad));\r\n\r\n this.editor.on('cancel close', this._onClose.bind(this));\r\n }\r\n this.updateAttributeForListItem(this.adEditorListContainer);\r\n }\r\n\r\n clearAlertMessages() {\r\n this.viewModel.alertMessage('');\r\n this.viewModel.duplicateAlertMessage('');\r\n }\r\n\r\n updateAttributeForListItem(listContainer) {\r\n $(listContainer).removeAttr('aria-activedescendant');\r\n let items = $(listContainer).children();\r\n\r\n _.each(items, (item) => {\r\n $(item).attr('role', 'listitem');\r\n $(item).removeAttr('aria-selected');\r\n });\r\n }\r\n}\r\n","import Backbone from 'backbone';\r\nimport uuid from '@bingads-webui-component-legacy/uuid/index';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport { schema } from '@bingads-webui-campaign/audience-campaign-shared';\r\nimport instrumentation from '@bingads-webui-campaign-legacy/instrumentation/index';\r\nimport { PerfMarkerFactory } from '@bingads-webui/performance-marker';\r\nimport parsedTextMaxLengthExtension from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/parsedTextMaxLengthExtension';\r\nimport { loadResponsiveAdEditorAsync } from '@bingads-webui-campaign-legacy/audience-campaign/responsive-ad-editor-loader';\r\n\r\nexport default class View extends Backbone.View {\r\n /**\r\n * Initialize ad editor to create ad.\r\n *\r\n * @param {Object} options - options with data to initialize the editor.\r\n *\r\n * @param {Object} options.model - Backbone.Model with the model information of an existing ad,\r\n * used get the data to edit existing ad.\r\n *\r\n * @param {function} options.scope - gets the scope, used to get the campaign and adgroup ids.\r\n *\r\n * @return {Promise} - Promise of save request.\r\n */\r\n initialize(options = {}) {\r\n instrumentation.addScenario(schema);\r\n const logScenario = options.model ? instrumentation.aimAdEdit.create() : instrumentation.aimAdCreation.create();\r\n\r\n const initializeOptions = {\r\n logScenario,\r\n isGridDisplay: true,\r\n viewContext: {\r\n currentAdGroup: {\r\n get Id() {\r\n return options.scope().adGroupId;\r\n },\r\n },\r\n currentCampaign: {\r\n Id: options.scope().campaignId,\r\n CampaignType: options.scope().campaignType,\r\n CampaignSubType: options.scope().campaignSubType,\r\n },\r\n },\r\n isForVNext: options.isForVNext,\r\n isMultimediaAd: options.isMultimediaAd || false,\r\n isPlaceholderMMA: options.isPlaceholderMMA || false,\r\n isVideo: options.isVideo,\r\n isMobileUrlEnabled: options.isMobileUrlEnabled,\r\n isImpressionTrackingUrlsEnabled: options.isImpressionTrackingUrlsEnabled,\r\n newI18n: options.newI18n,\r\n serverContext: options.serverContext,\r\n pageContext,\r\n hasWebsiteImageOptedInObservable: options.hasWebsiteImageOptedInObservable,\r\n parsedTextMaxLengthExtension,\r\n isRecommendation: options.isRecommendation,\r\n campaignDomain: options.campaignDomain,\r\n edm: options.edm,\r\n jsdata: options.jsdata,\r\n isImproveMMA: options.isImproveMMA,\r\n biddingScheme: { Type: options.biddingStrategyType },\r\n };\r\n\r\n if (options.model) {\r\n initializeOptions.isUpdate = true;\r\n initializeOptions.ad = options.model;\r\n }\r\n\r\n if (options.perfMarker) {\r\n initializeOptions.perfMarker = options.perfMarker.createChild('CrudAudienceAdNew', { autoEnd: true });\r\n } else {\r\n initializeOptions.perfMarker = PerfMarkerFactory.createMarker('CrudAudienceAdNew', { autoEnd: true });\r\n }\r\n\r\n this.loadAdEditorPromise = loadResponsiveAdEditorAsync().then((ResponsiveAdEditor) => {\r\n this.audienceAd = new ResponsiveAdEditor(initializeOptions);\r\n });\r\n }\r\n\r\n remove() {\r\n if (this.audienceAd) {\r\n this.audienceAd.remove();\r\n }\r\n super.remove();\r\n }\r\n\r\n /**\r\n * Render the view.\r\n * @return {View} This object.\r\n */\r\n render() {\r\n this.loadAdEditorPromise.then(() => {\r\n this.$el.html(this.audienceAd.render().el);\r\n });\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Saves ad.\r\n *\r\n * @param {function} updateGrid - function to be called in order to update the grid once the ad has been saved.\r\n *\r\n * @return {Promise} - Promise of save request.\r\n */\r\n saveAdAsync(updateGrid) {\r\n return this.loadAdEditorPromise.then(() => {\r\n return this.audienceAd.saveAdAsync().then((data) => {\r\n if (data) {\r\n return updateGrid(data, data.Id, 'Responsive');\r\n }\r\n return data;\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Saves ad and open up a new editor to create another.\r\n *\r\n * @param {function} updateGrid - function to be called in order to update the grid once the ad has been saved.\r\n *\r\n * @return {Promise} - Promise of save request.\r\n */\r\n saveAndCreateAnotherAsync(updateGrid) {\r\n return this.loadAdEditorPromise.then(() => {\r\n return this.audienceAd.saveAdAsync().then((data) => {\r\n if (data) {\r\n this.audienceAd.onCreateAnother();\r\n return updateGrid(data, data.Id, 'Responsive');\r\n }\r\n return data;\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Saves ad to client.\r\n *\r\n * @param {function} updateGrid - function to be called in order to update the grid once the ad has been saved.\r\n *\r\n * @return {Promise} - Promise of save request.\r\n */\r\n saveToClient(updateGrid) {\r\n return this.loadAdEditorPromise.then(() => {\r\n return this.audienceAd.saveToClient().then((data) => {\r\n if (data) {\r\n if (!data.Id) {\r\n data.Id = uuid.v4();\r\n }\r\n return updateGrid(data, data.Id, 'Responsive');\r\n }\r\n return data;\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Saves ad to client and open up a new editor to create another.\r\n *\r\n * @param {function} updateGrid - function to be called in order to update the grid once the ad has been saved.\r\n *\r\n * @return {Promise} - Promise of save request.\r\n */\r\n saveToClientAndCreateAnother(updateGrid) {\r\n return this.loadAdEditorPromise.then(() => {\r\n return this.audienceAd.saveToClient().then((data) => {\r\n if (data) {\r\n this.audienceAd.onCreateAnother();\r\n if (!data.Id) {\r\n data.Id = uuid.v4();\r\n }\r\n return updateGrid(data, data.Id, 'Responsive');\r\n }\r\n return data;\r\n });\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nlet headlinePositionMenu = [\r\n { text: i18n.get('Ad_Headline_PinToPosition_0'), value: 'None' },\r\n { text: i18n.get('Ad_Headline_PinToPosition_1'), value: 'Headline1' },\r\n { text: i18n.get('Ad_Headline_PinToPosition_2'), value: 'Headline2' },\r\n { text: i18n.get('Ad_Headline_PinToPosition_3'), value: 'Headline3' },\r\n];\r\n\r\nlet descriptionPositionMenu = [\r\n { text: i18n.get('Ad_Description_PinToPosition_0'), value: 'None' },\r\n { text: i18n.get('Ad_Description_PinToPosition_1'), value: 'Description1' },\r\n { text: i18n.get('Ad_Description_PinToPosition_2'), value: 'Description2' },\r\n];\r\n\r\nexport default {\r\n extendHeadlines(viewModel) {\r\n const headlineFields = config.get('headlineFields');\r\n\r\n _.each(headlineFields, (field) => {\r\n const property = viewModel[field];\r\n\r\n property.selectPosition = (data) => {\r\n viewModel[`${field}Position`](data.value);\r\n };\r\n property.positionMenu = headlinePositionMenu;\r\n });\r\n },\r\n\r\n extendDescriptions(viewModel) {\r\n const descriptionFields = config.get('descriptionFields');\r\n\r\n _.each(descriptionFields, (field) => {\r\n const property = viewModel[field];\r\n\r\n property.selectPosition = (data) => {\r\n viewModel[`${field}Position`](data.value);\r\n };\r\n property.positionMenu = descriptionPositionMenu;\r\n });\r\n },\r\n};\r\n","import $ from 'jquery';\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport { ResponsiveSearchAd } from '@bingads-webui-campaign/campaign-ui-schemas';\r\nimport dynamicTextExtension from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/dynamicTextExtension';\r\nimport positionExtension from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/positionExtension';\r\nimport KoSchema from '@bingads-webui-component-legacy/ko-schema/index';\r\nimport parsedTextMaxLengthExtension from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/parsedTextMaxLengthExtension';\r\nimport { getPreviewList } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport instrumentation from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport constants from '@bingads-webui-static-legacy/instrumentation/constants';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\nconst i18nErrors = window.globalLegacyI18n.get('component/i18n/loader!component/api-errors-campaign');\r\n\r\nconst headlinePositionFields = ['Headline1', 'Headline2', 'Headline3', 'None'];\r\nconst descriptionPositionFields = ['Description1', 'Description2', 'None'];\r\n\r\nconst headlineErrorMap = {\r\n lessMinRequire: i18nErrors.get('Error_Campaign_API_ResponsiveSearchAdsHeadlinesLessThanMinRequired'),\r\n duplicate: i18nErrors.get('Error_Campaign_API_ResponsiveSearchAdsDuplicateHeadlines'),\r\n lessPosition: i18nErrors.get('Error_Campaign_API_ResponsiveSearchAdNotEnoughHeadlinesForPositions'),\r\n};\r\n\r\nconst descriptionErrorMap = {\r\n lessMinRequire: i18nErrors.get('Error_Campaign_API_ResponsiveSearchAdsDescriptionsLessThanMinRequired'),\r\n duplicate: i18nErrors.get('Error_Campaign_API_ResponsiveSearchAdsDescriptionsDuplication'),\r\n lessPosition: i18nErrors.get('Error_Campaign_API_ResponsiveSearchAdNotEnoughDescriptionsForPositions'),\r\n};\r\n\r\n// Doesn't validate when init the view.\r\n// When user's input pass the validation or submit the view, do validation.\r\nfunction validate(model, miniRequire, fields, positionFields, errorMap) {\r\n let error;\r\n const list = _.chain(fields)\r\n .filter((field) => !_.isEmpty(model[field]().trim()))\r\n .map((field) => ({\r\n Text: model[field]().trim(),\r\n PinnedField: model[`${field}Position`](),\r\n })).value();\r\n\r\n if (_.size(list) < miniRequire) {\r\n error = errorMap.lessMinRequire;\r\n } else if (_.size(_.uniq(list, 'Text')) < _.size(list)) {\r\n error = errorMap.duplicate;\r\n } else if (_.size(getPreviewList(list, positionFields)) < miniRequire) {\r\n error = errorMap.lessPosition;\r\n }\r\n if (_.isEmpty(error)) {\r\n model.needValication(true);\r\n }\r\n return model.needValication() ? error : '';\r\n}\r\n\r\nexport class HeadlinesViewModel {\r\n constructor({\r\n defaultCount,\r\n maxCount,\r\n model = null,\r\n miniRequire,\r\n isForVNext = false,\r\n activityLogger,\r\n } = {}) {\r\n const headlineFields = config.get('headlineFields');\r\n\r\n this.activityLogger = activityLogger;\r\n this.model = model;\r\n this.positionFieldMap = (key) => _.result({ 'None': isForVNext ? i18n.get('Ad_Pin') : '', 'Headline1': '1', 'Headline2': '2', 'Headline3': '3' }, key);\r\n _.each(headlineFields, (key) => {\r\n ResponsiveSearchAd.properties[key] = _.clone(ResponsiveSearchAd.properties.Headline);\r\n });\r\n KoSchema.properties(this, ResponsiveSearchAd, headlineFields);\r\n dynamicTextExtension.extend(this, headlineFields);\r\n parsedTextMaxLengthExtension.extend(this, headlineFields, 'ResponsiveSearchAd');\r\n positionExtension.extendHeadlines(this);\r\n\r\n const initHeadlines = _.result(this, 'model');\r\n\r\n _.each(headlineFields, (field, index) => {\r\n this[`${field}Position`] = ko.observable(\r\n _.chain(initHeadlines).result(index).result('PinnedField', 'None').value()\r\n );\r\n this[`${field}IsAIGeneratedAsset`] = ko.observable(\r\n _.chain(initHeadlines).result(index).result('IsAlgoGeneratedAsset', false).value()\r\n );\r\n const fieldText = _.chain(initHeadlines).result(index).result('Asset').result('Text', '').value();\r\n\r\n this[field](_.isNull(fieldText) ? '' : fieldText);\r\n const logChange = _.once(() => {\r\n // Clean up AI-generated asset light bulb when content is changed.\r\n const aiGeneratedAssetContainer = $(`.${field}-AIGeneratedAsset`);\r\n\r\n if (!_.isEmpty(aiGeneratedAssetContainer) && aiGeneratedAssetContainer.length > 0) {\r\n _.first(aiGeneratedAssetContainer).style.display = 'none';\r\n }\r\n\r\n if (this.activityLogger) {\r\n this.activityLogger.signal(`ad field change: ${field}`, 'responsive search ad editor');\r\n } else {\r\n instrumentation.logMessage(\r\n [constants.LOGCATEGORY.SUBSTRATE],\r\n constants.LOGLEVEL.INFO,\r\n 'responsive search ad editor',\r\n `ad field change: ${field}`\r\n );\r\n }\r\n });\r\n\r\n this[field].subscribe(() => {\r\n logChange();\r\n }, this);\r\n });\r\n\r\n this.showHeadlineCount = ko.observable(Math.max(defaultCount, _.size(initHeadlines)));\r\n this.maxCount = maxCount;\r\n\r\n this.needValication = ko.observable(false);\r\n this.errorMessage = ko.computed(() => {\r\n return validate(this, miniRequire, headlineFields, headlinePositionFields, headlineErrorMap);\r\n });\r\n }\r\n}\r\n\r\nexport class DescriptionsViewModel {\r\n constructor({\r\n model = null,\r\n defaultCount,\r\n maxCount,\r\n miniRequire,\r\n isForVNext = false,\r\n activityLogger,\r\n } = {}) {\r\n const descriptionFields = config.get('descriptionFields');\r\n\r\n this.activityLogger = activityLogger;\r\n this.model = model;\r\n this.positionFieldMap = (key) => _.result({ 'None': isForVNext ? i18n.get('Ad_Pin') : '', 'Description1': '1', 'Description2': '2' }, key);\r\n _.each(descriptionFields, (key) => {\r\n ResponsiveSearchAd.properties[key] = _.clone(ResponsiveSearchAd.properties.Description);\r\n });\r\n\r\n KoSchema.properties(this, ResponsiveSearchAd, descriptionFields);\r\n dynamicTextExtension.extend(this, descriptionFields);\r\n parsedTextMaxLengthExtension.extend(this, descriptionFields, 'ResponsiveSearchAd');\r\n positionExtension.extendDescriptions(this);\r\n\r\n const initDescriptions = _.result(this, 'model');\r\n\r\n _.each(descriptionFields, (field, index) => {\r\n this[`${field}Position`] = ko.observable(\r\n _.chain(initDescriptions).result(index).result('PinnedField', 'None').value()\r\n );\r\n this[`${field}IsAIGeneratedAsset`] = ko.observable(\r\n _.chain(initDescriptions).result(index).result('IsAlgoGeneratedAsset', false).value()\r\n );\r\n const fieldText = _.chain(initDescriptions).result(index).result('Asset').result('Text', '').value();\r\n\r\n this[field](_.isNull(fieldText) ? '' : fieldText);\r\n const logChange = _.once(() => {\r\n // Clean up AI-generated asset light bulb when content is changed.\r\n const aiGeneratedAssetContainer = $(`.${field}-AIGeneratedAsset`);\r\n\r\n if (!_.isEmpty(aiGeneratedAssetContainer) && aiGeneratedAssetContainer.length > 0) {\r\n _.first(aiGeneratedAssetContainer).style.display = 'none';\r\n }\r\n\r\n if (this.activityLogger) {\r\n this.activityLogger.signal(`ad field change: ${field}`, 'responsive search ad editor');\r\n } else {\r\n instrumentation.logMessage(\r\n [constants.LOGCATEGORY.SUBSTRATE],\r\n constants.LOGLEVEL.INFO,\r\n 'responsive search ad editor',\r\n `ad field change: ${field}`\r\n );\r\n }\r\n });\r\n\r\n this[field].subscribe(() => {\r\n logChange();\r\n }, this);\r\n });\r\n\r\n this.showDescriptionCount = ko.observable(Math.max(defaultCount, _.size(initDescriptions)));\r\n this.maxCount = maxCount;\r\n\r\n this.needValication = ko.observable(false);\r\n this.errorMessage = ko.computed(() => {\r\n return validate(this, miniRequire, descriptionFields, descriptionPositionFields, descriptionErrorMap);\r\n });\r\n }\r\n}\r\n","import Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport { HeadlinesViewModel, DescriptionsViewModel } from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsEditor/responsiveListField';\r\nimport headlinesTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adsEditor/headlines.pug';\r\nimport desciptionsTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/adsEditor/descriptions.pug';\r\nimport uuid from '@bingads-webui-component-legacy/uuid/index';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nclass RSAListView extends Backbone.View {\r\n validateViewModel() {\r\n const isValid = this.viewModel.validate();\r\n\r\n if (!isValid) {\r\n _.each(this.fields, (field) => {\r\n if (!this.viewModel[field].isValid()) {\r\n if (this.activityLogger) {\r\n this.activityLogger.signal(`ad field invalid: ${field}`, 'responsive search ad editor');\r\n }\r\n }\r\n });\r\n }\r\n\r\n return isValid;\r\n }\r\n\r\n validate() {\r\n this.viewModel.needValication(true);\r\n return _.reduce([\r\n this.validateViewModel(),\r\n _.isEmpty(this.viewModel.errorMessage()),\r\n ], (prev, next) => {\r\n return prev && next;\r\n }, true);\r\n }\r\n\r\n toObject() {\r\n const params = this.viewModel.toObject();\r\n const fieldsValue = _.chain(this.fields)\r\n .filter((field) => !_.isEmpty(params[field].trim()))\r\n .map((field) => ({\r\n 'Asset': {\r\n '@odata.type': '#Model.TextAsset',\r\n 'AssetType': 'Text',\r\n 'Name': null,\r\n 'Text': params[field].trim(),\r\n },\r\n 'PinnedField': this.viewModel[`${field}Position`](),\r\n 'IsAIGeneratedAsset': this.viewModel[`${field}IsAIGeneratedAsset`](),\r\n })).value();\r\n\r\n return fieldsValue;\r\n }\r\n\r\n // [TODO] Will update the parameters base on the interface\r\n toBulkEditObject() {\r\n let fieldsValue = _.chain(this.fields)\r\n .filter((field) => !_.isEmpty(this.viewModel[field]().trim()))\r\n .map((field) => ({\r\n 'Text': this.viewModel[field]().trim(),\r\n 'PinnedField': this.viewModel[`${field}Position`](),\r\n })).value();\r\n\r\n fieldsValue = _.map(fieldsValue, (value) => {\r\n return JSON.stringify(value);\r\n });\r\n\r\n return fieldsValue;\r\n }\r\n}\r\n\r\nexport class HeadlinesView extends RSAListView {\r\n initialize({\r\n model = null,\r\n defaultCount = 5,\r\n maxCount = 15,\r\n miniRequire = 3,\r\n isForVNext = false,\r\n activityLogger,\r\n showLightbulb = false,\r\n isMMA = false,\r\n } = {}) {\r\n this.isForVNext = isForVNext;\r\n this.fields = _.map(_.range(maxCount), (i) => `Headline${i}`);\r\n config.set('headlineFields', this.fields);\r\n this.template = headlinesTemplate;\r\n this.activityLogger = activityLogger;\r\n this.viewModel = new HeadlinesViewModel({ model, maxCount, defaultCount, miniRequire, isForVNext, activityLogger });\r\n this.showLightbulb = showLightbulb;\r\n this.isMMA = isMMA;\r\n this.maxCount = maxCount;\r\n return this;\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .ad-rsa-add-headline': 'addHeadline',\r\n };\r\n }\r\n\r\n render() {\r\n this.$el.html(this.template({\r\n i18n,\r\n uuid,\r\n fields: this.fields,\r\n showLightbulb: this.showLightbulb,\r\n isMMA: this.isMMA,\r\n }));\r\n ko.applyBindings(this.viewModel, this.el);\r\n return this;\r\n }\r\n\r\n addHeadline() {\r\n if (this.viewModel.showHeadlineCount() < this.maxCount) {\r\n this.viewModel.showHeadlineCount(this.viewModel.showHeadlineCount() + 1);\r\n }\r\n }\r\n}\r\n\r\nexport class DescriptionsView extends RSAListView {\r\n initialize({\r\n model = null,\r\n defaultCount = 2,\r\n maxCount = 4,\r\n miniRequire = 2,\r\n isForVNext = false,\r\n activityLogger,\r\n showLightbulb = false,\r\n isMMA = false,\r\n } = {}) {\r\n this.isForVNext = isForVNext;\r\n this.fields = _.map(_.range(maxCount), (i) => `Description${i}`);\r\n config.set('descriptionFields', this.fields);\r\n this.template = desciptionsTemplate;\r\n this.activityLogger = activityLogger;\r\n this.viewModel = new DescriptionsViewModel({ model, maxCount, defaultCount, miniRequire, isForVNext, activityLogger });\r\n this.showLightbulb = showLightbulb;\r\n this.isMMA = isMMA;\r\n this.maxCount = maxCount;\r\n return this;\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .ad-rsa-add-description': 'addDescription',\r\n };\r\n }\r\n\r\n render() {\r\n this.$el.html(this.template({\r\n i18n,\r\n uuid,\r\n fields: this.fields,\r\n showLightbulb: this.showLightbulb,\r\n isMMA: this.isMMA,\r\n }));\r\n ko.applyBindings(this.viewModel, this.el);\r\n return this;\r\n }\r\n\r\n addDescription() {\r\n if (this.viewModel.showDescriptionCount() < this.maxCount) {\r\n this.viewModel.showDescriptionCount(this.viewModel.showDescriptionCount() + 1);\r\n }\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport AdsCreateView from '@bingads-webui-campaign-legacy/crud-ad/view/adGroupAdsEditor';\r\nimport * as schemaMapper from '@bingads-webui-campaign-legacy/crud-ad/schemaMapper';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nconst availableAdTypes = [\r\n 'Text',\r\n 'AppInstall',\r\n 'DynamicSearch',\r\n 'ExpandedText',\r\n 'ResponsiveSearch',\r\n 'Responsive',\r\n];\r\n\r\nexport default class View extends AdsCreateView {\r\n initialize(options = {}) {\r\n super.initialize({\r\n showAdGroupInfo: false,\r\n isSaveToServer: false,\r\n usePanel: options.usePanel,\r\n isForVNext: options.isForVNext,\r\n Campaign: options.Campaign,\r\n activityLogger: options.activityLogger,\r\n adGroupType: options.adGroupType,\r\n newI18n: options.newI18n,\r\n perfMarker: options.perfMarker,\r\n serverContext: options.serverContext,\r\n });\r\n\r\n this.allAppealableErrors = false;\r\n }\r\n\r\n logActivity(message) {\r\n if (this.activityLogger) {\r\n this.activityLogger.signal(message, 'ads panel');\r\n }\r\n }\r\n\r\n validate() {\r\n this.clearAlertMessages();\r\n\r\n let hasAds = !this.isEmpty();\r\n let hasUniqAds = !this.viewModel.hasDuplicateAds();\r\n\r\n if (!hasAds) {\r\n this.logActivity('invalid: has no ads');\r\n }\r\n\r\n if (!hasUniqAds) {\r\n this.logActivity('invalid: has duplicate ads');\r\n }\r\n\r\n return hasAds && hasUniqAds;\r\n }\r\n\r\n handleAdsError(response) {\r\n let allAds = this.viewModel.getAds();\r\n\r\n this._clearAdsErrors(allAds);\r\n\r\n _.each(availableAdTypes, (type) => {\r\n let ads = _.where(allAds, { Type: type });\r\n\r\n _.each(response[`${type}Ads`], (entity, index) => {\r\n if (_.isFinite(entity.Id) && !ads[index].isSaved) {\r\n ads[index].Id = entity.Id;\r\n ads[index].isSaved = true;\r\n } else if (!_.isEmpty(entity.errors)) {\r\n ads[index].hasError = true;\r\n ads[index].errors = entity.errors;\r\n }\r\n }, this);\r\n });\r\n\r\n this.viewModel.slb.refreshSource();\r\n\r\n if (this._hasApiErrors(allAds)) {\r\n this.viewModel.alertMessage(i18n.get('CreateAdGroup_AdsApiError_FixErrorNote'));\r\n this.allAppealableErrors = false;\r\n } else {\r\n this.viewModel.alertMessage('');\r\n this.allAppealableErrors = true;\r\n }\r\n }\r\n\r\n getDeletedItems(adgroupId) {\r\n return _.map(this.viewModel.deletedAdIds, (ad) => {\r\n return _.defaults(ad, {\r\n resourceName: 'Ad',\r\n parentId: adgroupId,\r\n });\r\n });\r\n }\r\n\r\n updateLanguage(language) {\r\n this.language = language;\r\n }\r\n\r\n emptyDeletedItems() {\r\n this.viewModel.deletedAdIds = [];\r\n }\r\n\r\n getValues(adGroupName, campaignName, adgroupId) {\r\n let ads = this.viewModel.getAds();\r\n let models = {};\r\n\r\n _.each(availableAdTypes, (type) => {\r\n models[`${type}Ads`] = _.map(_.where(ads, { Type: type }), (ad) => {\r\n const formatedAd = this._formatAd(ad, { AdGroupName: adGroupName, CampaignName: campaignName });\r\n\r\n if (adgroupId) {\r\n formatedAd.AdGroup = { Id: adgroupId };\r\n }\r\n\r\n return formatedAd;\r\n });\r\n });\r\n\r\n return models;\r\n }\r\n\r\n getCachedImageExtensionChanges() {\r\n return this.viewModel.getCachedImageExtensionChanges();\r\n }\r\n\r\n _formatAd(ad, base) {\r\n let fields = ad.isSaved ? _.union(schemaMapper[ad.Type](), ['Id']) : schemaMapper[ad.Type]();\r\n\r\n return _.extend(_.pick(ad, fields), base);\r\n }\r\n\r\n _hasApiErrors(allAds) {\r\n return _.some(allAds, (ad) => {\r\n return ad.hasError;\r\n });\r\n }\r\n\r\n _clearAdsErrors(ads) {\r\n _.each(ads, (ad) => {\r\n ad.hasError = false;\r\n ad.errors = [];\r\n });\r\n }\r\n}\r\n","import ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport koSchema from '@bingads-webui-component-legacy/ko-schema/index';\r\nimport { adGroupTypeEnum } from '@bingads-webui-campaign-legacy/adgroup-create-advanced/util/adGroupTypeEnum';\r\n\r\nexport default class {\r\n constructor({\r\n availableExtensions = [],\r\n adExtensionsDynamicFeatures,\r\n adExtensionsStaticFeatures,\r\n } = {}) {\r\n koSchema.properties(this);\r\n\r\n this.adGroups = ko.observableArray([]);\r\n\r\n this.adExtensionDynamicFeatures = {};\r\n this.adExtensionStaticFeatures = {};\r\n _.each(availableExtensions, (type) => {\r\n this[type] = ko.observableArray([]);\r\n if (adExtensionsDynamicFeatures) {\r\n // Resolving dynamic features here in view-model,\r\n // so the template and Knockout bindings don't have to\r\n this.adExtensionDynamicFeatures[type] = adExtensionsDynamicFeatures(type);\r\n }\r\n if (adExtensionsStaticFeatures) {\r\n // Resolving static features here in view-model,\r\n // so the template and Knockout bindings don't have to\r\n this.adExtensionStaticFeatures[type] = adExtensionsStaticFeatures[type];\r\n }\r\n }, this);\r\n\r\n this.dynamicAdGroups = ko.computed(() => {\r\n return _.filter(this.adGroups(), (adGroup) => adGroup.AdGroupType === adGroupTypeEnum.SearchDynamic);\r\n });\r\n this.standardAdGroups = ko.computed(() => {\r\n return _.filter(this.adGroups(), (adGroup) => adGroup.AdGroupType === adGroupTypeEnum.SearchStandard);\r\n });\r\n\r\n this.isDynamicSectionExpanded = ko.observable(true);\r\n this.isStandardSectionExpanded = ko.observable(true);\r\n\r\n this.isAdExtensionExpanded = ko.observable(true);\r\n\r\n this.hasChanges = ko.observable(false);\r\n }\r\n}\r\n","import Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport ViewModel from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/create';\r\nimport AdGroupAdsEditor from '@bingads-webui-campaign-legacy/crud-ad/view/adGroupAdsEditor';\r\nimport createTemplate from '@bingads-webui-campaign-legacy/crud-ad/template/create.pug';\r\nimport appAssociationsEditor from '@bingads-webui-campaign-legacy/adextension-app/view/associationsEditor';\r\nimport locationAssociationsEditor from '@bingads-webui-campaign-legacy/adextension-location/view/associationsEditor';\r\nimport sitelinkAssociationsEditor from '@bingads-webui-campaign-legacy/adextension-sitelink/view/associationsEditor';\r\nimport callAssociationsEditor from '@bingads-webui-campaign-legacy/adextension-call/view/associationsEditor';\r\nimport calloutAssociationsEditor from '@bingads-webui-campaign-legacy/adextension-callout/view/associationsEditor';\r\nimport reviewAssociationsEditor from '@bingads-webui-campaign-legacy/adextension-review/view/associationsEditor';\r\nimport structuredsnippetAssociationsEditor from '@bingads-webui-campaign-legacy/adextension-structuredsnippet/view/associationsEditor';\r\nimport priceAssociationsEditor from '@bingads-webui-campaign-legacy/adextension-price/view/associationsEditor';\r\nimport promotionAssociationsEditor from '@bingads-webui-campaign-legacy/adextension-promotion/view/associationsEditor';\r\nimport filterLinkAssociationsEditor from '@bingads-webui-campaign-legacy/adextension-filter-link/view/associationsEditor';\r\nimport flyerAssociationsEditor from '@bingads-webui-campaign-legacy/adextension-flyer/view/associationsEditor';\r\nimport actionlinkAssociationsEditor from '@bingads-webui-campaign-legacy/adextension-actionlink/view/associationsEditor';\r\nimport { universalItemTemplate as actionUniversalItemTemplate } from '@bingads-webui-campaign-legacy/adextension-actionlink/template';\r\nimport * as schemaMapper from '@bingads-webui-campaign-legacy/crud-ad/schemaMapper';\r\nimport { getODataErrors, getBulkApiErrors, isCampaignApiError } from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\nimport withUiBlock from '@bingads-webui-component-legacy/uiblocker/index';\r\nimport toggleDecorator from '@bingads-webui-component-legacy/dialog/toggleDecorator';\r\nimport { appendLearnMoreLink } from '@bingads-webui-component-legacy/help/index';\r\nimport jsdata from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport * as scrollUtil from '@bingads-webui-component-legacy/extension/scrollTo';\r\nimport instrumentation from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport constants from '@bingads-webui-static-legacy/instrumentation/constants';\r\nimport { adGroupTypeEnum } from '@bingads-webui-campaign-legacy/adgroup-create-advanced/util/adGroupTypeEnum';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nconst availableAdTypes = ['Text', 'AppInstall', 'DynamicSearch', 'ExpandedText', 'ResponsiveSearch'];\r\n\r\nfunction splitAds(change, action) {\r\n return _.chain(change)\r\n .pluck(action)\r\n .flatten()\r\n .groupBy('Type')\r\n .value();\r\n}\r\n\r\nfunction changes(viewList, adGroups) {\r\n const change = _.map(adGroups, (adGroup) => {\r\n return viewList[adGroup.Id].changes();\r\n });\r\n\r\n const added = splitAds(change, 'addedAds');\r\n const removed = splitAds(change, 'removedAdIds');\r\n\r\n return {\r\n added,\r\n removed,\r\n empty: _.isEmpty(_.flatten(_.values(added))) && _.isEmpty(_.flatten(_.values(removed))),\r\n };\r\n}\r\n\r\nconst editorViewMapper = {\r\n App: appAssociationsEditor,\r\n Call: callAssociationsEditor,\r\n Callout: calloutAssociationsEditor,\r\n Location: locationAssociationsEditor,\r\n Review: reviewAssociationsEditor,\r\n SiteLink: sitelinkAssociationsEditor,\r\n StructuredSnippet: structuredsnippetAssociationsEditor,\r\n Price: priceAssociationsEditor,\r\n Promotion: promotionAssociationsEditor,\r\n FilterLink: filterLinkAssociationsEditor,\r\n Flyer: flyerAssociationsEditor,\r\n Action: actionlinkAssociationsEditor,\r\n};\r\n\r\nconst permissions = config.get('Permissions') || {};\r\n\r\nexport default class CreateView extends Backbone.View {\r\n initialize({\r\n context = null,\r\n Campaign: campaign = null,\r\n campaignType = 'search',\r\n perfMarker = null,\r\n usePanel = false,\r\n isForVNext = false,\r\n newI18n,\r\n adExtensionsDynamicFeatures,\r\n activityLogger,\r\n serverContext,\r\n }) {\r\n this.context = context;\r\n this.campaign = campaign;\r\n this.campaignType = campaignType;\r\n this.perfMarker = perfMarker;\r\n this.usePanel = usePanel;\r\n this.isForVNext = isForVNext;\r\n this.newI18n = newI18n;\r\n this.activityLogger = activityLogger;\r\n this.serverContext = serverContext;\r\n\r\n if (this.perfMarker) {\r\n this.showAdAndExtensionMarker = this.perfMarker.createChild('Show_Ad_And_Extension', {\r\n autoEnd: true,\r\n });\r\n this.showAdAndExtensionMarker.willInit();\r\n }\r\n\r\n // order is required\r\n this.availableExtensions = _.chain([\r\n ['Action', permissions.IsActionLinkExtensionAllowed],\r\n ['Price', permissions.IsPriceExtensionAllowed && !permissions.IsDomesticSimplifiedChineseEnabled],\r\n ['Location', permissions.IsLocationExtensionAllowed && !permissions.IsDomesticSimplifiedChineseEnabled],\r\n ['App', permissions.IsAppExtensionAllowed && !permissions.IsDomesticSimplifiedChineseEnabled],\r\n ['SiteLink', permissions.IsSiteLinkExtensionsAllowed],\r\n ['Call', permissions.IsCallExtensionAllowed && !permissions.IsDomesticSimplifiedChineseEnabled],\r\n ['Callout', permissions.IsCalloutExtensionAllowed && !permissions.IsDomesticSimplifiedChineseEnabled],\r\n ['Review', permissions.IsReviewExtensionAllowed && !permissions.IsDomesticSimplifiedChineseEnabled],\r\n ['StructuredSnippet', permissions.IsStructuredSnippetExtensionAllowed && !permissions.IsDomesticSimplifiedChineseEnabled],\r\n ['Promotion', this.isForVNext && permissions.IsPromotionAdExtensionEnabled],\r\n ['FilterLink', this.isForVNext && permissions.IsFilterLinkAdExtensionEnabled],\r\n ['Flyer', this.isForVNext && permissions.IsFlyerAdExtensionEnabled && !permissions.IsDomesticSimplifiedChineseEnabled],\r\n ]).filter(([, allowed]) => allowed).map(([name]) => name).value();\r\n\r\n const adExtensionsStaticFeatures = {\r\n Action: {\r\n universalItemTemplate: actionUniversalItemTemplate,\r\n },\r\n };\r\n\r\n this.viewModel = new ViewModel({\r\n availableExtensions: this.availableExtensions,\r\n adExtensionsDynamicFeatures,\r\n adExtensionsStaticFeatures,\r\n });\r\n\r\n this.viewList = {};\r\n this.objective = config.get('CampaignObjective');\r\n this.suggestedExtensions = [];\r\n this.openedExtEditor = [];\r\n\r\n this.excuteObjective('initialize');\r\n }\r\n\r\n excuteObjective(method) {\r\n _\r\n .chain(this.objectiveActions)\r\n .result(this.objective)\r\n .result(method);\r\n\r\n return _.result(this.objectiveActions.All, method);\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .create-extension': 'createExtension',\r\n 'click .edit-extension': 'editExtension',\r\n 'show.bs.collapse': 'toggleExpander',\r\n 'hide.bs.collapse': 'toggleExpander',\r\n };\r\n }\r\n\r\n logActivities(message, api = 'ad creation') {\r\n if (this.activityLogger) {\r\n this.activityLogger.signal(message, api);\r\n }\r\n }\r\n\r\n get objectiveActions() {\r\n return {\r\n 'WebsiteVisits': {\r\n initialize: () => {\r\n this.suggestedExtensions = ['SiteLink', 'Action', 'Callout', 'Promotion'];\r\n this.otherExtensions = ['Price', 'StructuredSnippet', 'FilterLink', 'Review', 'Call', 'Location', 'Flyer'];\r\n },\r\n },\r\n 'LocationVisits': {\r\n initialize: () => {\r\n this.suggestedExtensions = ['Location', 'Call', 'Action', 'Promotion'];\r\n this.otherExtensions = ['Review', 'Callout', 'StructuredSnippet', 'FilterLink', 'Price', 'SiteLink', 'Flyer'];\r\n },\r\n },\r\n 'WebsiteConversions': {\r\n initialize: () => {\r\n this.suggestedExtensions = ['Action', 'Price', 'Promotion', 'SiteLink'];\r\n this.otherExtensions = ['Callout', 'StructuredSnippet', 'FilterLink', 'Review', 'Location', 'Call', 'Flyer'];\r\n },\r\n },\r\n 'PhoneCalls': {\r\n initialize: () => {\r\n this.suggestedExtensions = ['Call', 'Callout', 'Review', 'SiteLink'];\r\n this.otherExtensions = ['StructuredSnippet', 'FilterLink', 'Price', 'Promotion', 'Action', 'Flyer'];\r\n },\r\n },\r\n 'AppInstalls': {\r\n initialize: () => {\r\n this.suggestedExtensions = ['App', 'Review'];\r\n this.otherExtensions = _.difference(this.availableExtensions, this.suggestedExtensions);\r\n },\r\n },\r\n 'All': {\r\n initialize: () => {\r\n // keep order of suggested and \"other\" extensions\r\n this.suggestedExtensions = _.intersection(this.suggestedExtensions, this.availableExtensions);\r\n this.otherExtensions = _.intersection(this.otherExtensions, this.availableExtensions);\r\n },\r\n willShow: () => {\r\n _.each(this.suggestedExtensions, (ext) => {\r\n this.openExtensionPanel(ext);\r\n });\r\n },\r\n },\r\n };\r\n }\r\n\r\n toggleExpander(evt) {\r\n const { target } = evt;\r\n const { id } = target;\r\n\r\n if (id === 'dynamicAdGroupAdEditorSection') {\r\n this.viewModel.isDynamicSectionExpanded(!this.viewModel.isDynamicSectionExpanded());\r\n } else if (id === 'standardAdGroupAdEditorSection') {\r\n this.viewModel.isStandardSectionExpanded(!this.viewModel.isStandardSectionExpanded());\r\n } else {\r\n this.viewModel.isAdExtensionExpanded(!this.viewModel.isAdExtensionExpanded());\r\n }\r\n }\r\n\r\n willShow() {\r\n\r\n window.scrollTo(0, 0);\r\n\r\n this.campaign = this.context.get('Campaign');\r\n this.defaultLandingPageUrl = this.context.get('LandingPageUrl') || '';\r\n this.viewModel.hasChanges(false);\r\n\r\n const dynamicDescriptionEnabled = !_.isEmpty(this.campaign) && this.campaign.DynamicDescriptionEnabled;\r\n\r\n if (_.isUndefined(this.dynamicDescriptionEnabled) && !_.isUndefined(dynamicDescriptionEnabled)) {\r\n // campaign has dsa settings, initialize the value of dynamicDescriptionEnabled\r\n this.dynamicDescriptionEnabled = dynamicDescriptionEnabled;\r\n } else if (dynamicDescriptionEnabled !== this.dynamicDescriptionEnabled) {\r\n // dynamic description changed, trigger the update to existing ad views\r\n _.each(this.viewList, (view) => {\r\n view.trigger('update:dynamicDescriptionEnabled', dynamicDescriptionEnabled);\r\n });\r\n this.dynamicDescriptionEnabled = dynamicDescriptionEnabled;\r\n }\r\n\r\n if (!_.isEmpty(this.campaign)) {\r\n const adGroups = this.context.get('AdGroups');\r\n\r\n this.excuteObjective('willShow');\r\n\r\n\r\n if (!_.isEmpty(adGroups)) {\r\n const originalIds = _.pluck(this.viewModel.adGroups(), 'Id');\r\n const newIds = _.pluck(adGroups, 'Id');\r\n\r\n const added = _.difference(newIds, originalIds);\r\n const removed = _.difference(originalIds, newIds);\r\n\r\n _.each(adGroups, (adgroup) => {\r\n if (_.contains(added, adgroup.Id)) {\r\n //add the adgroup which was created in previous step\r\n this.viewModel.adGroups.push(adgroup);\r\n } else if (!_.contains(removed, adgroup.Id)) {\r\n //refresh the adgroup which exist (keywords, name)\r\n this.viewList[adgroup.Id].viewModel.refresh(adGroups);\r\n }\r\n });\r\n\r\n if (!_.isEmpty(added)) {\r\n this.initializeAdGroupEditorView(added);\r\n }\r\n\r\n if (!_.isEmpty(removed)) {\r\n //remove the removed adgroups' backbone and view instance\r\n _.each(removed, (id) => {\r\n const removedAdGroup = _.findWhere(this.viewModel.adGroups(), { Id: id });\r\n\r\n this.viewModel.adGroups.remove(removedAdGroup);\r\n this.viewList[id].remove();\r\n delete this.viewList[id];\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n hasChanges() {\r\n return this.viewModel.hasChanges();\r\n }\r\n\r\n isMixedModeCampaignCreation() {\r\n const isDSAMixedModeCampaignEnabled = _.result(config.get('Permissions'), 'IsDSAMixedModeCampaignEnabled', false);\r\n\r\n return isDSAMixedModeCampaignEnabled && this.campaignType === 'search';\r\n }\r\n\r\n initializeAdGroupEditorView(adGroups) {\r\n _.each(adGroups, (id) => {\r\n this.viewList[id] = new AdGroupAdsEditor({\r\n newI18n: this.newI18n,\r\n adGroups: this.viewModel.adGroups(),\r\n adGroupId: id,\r\n Campaign: this.campaign,\r\n el: this.$el.find(`.adgroup-creative[data-id=${id}]`).find('.adgroup-ads-creative'),\r\n Language: this.campaign.Language,\r\n Languages: this.campaign.Languages,\r\n campaignType: this.campaignType,\r\n defaultLandingPageUrl: this.defaultLandingPageUrl,\r\n usePanel: this.usePanel,\r\n activityLogger: this.activityLogger,\r\n isForVNext: this.isForVNext,\r\n isMixedModeCampaignCreation: this.isMixedModeCampaignCreation(),\r\n perfMarker: this.perfMarker,\r\n serverContext: this.serverContext,\r\n }).render();\r\n\r\n this.viewList[id].on('copyToOthers', ({ sourceId, ad }) => {\r\n let adgroupsToPaste = this.viewModel.adGroups();\r\n const fromAdGroup = _.find(adgroupsToPaste, (adg) => adg.Id === sourceId);\r\n\r\n if (this.isMixedModeCampaignCreation()) {\r\n const dynamicAdGroups = this.viewModel.dynamicAdGroups();\r\n const standardAdGroups = this.viewModel.standardAdGroups();\r\n const { AdGroupType } = fromAdGroup;\r\n\r\n if (AdGroupType === adGroupTypeEnum.SearchStandard) {\r\n adgroupsToPaste = standardAdGroups;\r\n } else {\r\n adgroupsToPaste = dynamicAdGroups;\r\n }\r\n }\r\n\r\n _.each(adgroupsToPaste, (adgroup) => {\r\n const { Id } = adgroup;\r\n\r\n if (Id !== sourceId) {\r\n this.viewList[Id].copyAdFromOtherAdGroup(ad);\r\n }\r\n });\r\n });\r\n\r\n this.viewList[id].on('copyToSome', ({ ad, targetAdGroupIds }) => {\r\n _.each(targetAdGroupIds, (adGroupId) => {\r\n this.viewList[adGroupId].copyAdFromOtherAdGroup(ad);\r\n });\r\n });\r\n\r\n this.viewList[id].on('ads:changed', () => {\r\n this.viewModel.hasChanges(true);\r\n });\r\n });\r\n }\r\n\r\n render() {\r\n const isDSAMixedModeCampaignEnabled = _.result(config.get('Permissions'), 'IsDSAMixedModeCampaignEnabled', false);\r\n\r\n this.$el.html(createTemplate({\r\n appendLearnMoreLink,\r\n i18n,\r\n objective: this.objective,\r\n suggestedExtensions: this.suggestedExtensions,\r\n otherExtensions: this.otherExtensions,\r\n adExtensionDynamicFeatures: this.viewModel.adExtensionDynamicFeatures,\r\n adExtensionStaticFeatures: this.viewModel.adExtensionStaticFeatures,\r\n isDSAMixedModeCampaignEnabled,\r\n }));\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n this.initializeAdGroupEditorView(_.pluck(this.viewModel.adGroups(), 'Id'));\r\n\r\n return this;\r\n }\r\n\r\n validate() {\r\n //check if there is any empty adgroups\r\n return _.chain(this.viewList)\r\n .map((view) => {\r\n view.clearAlertMessages();\r\n const hasAds = !view.isEmpty();\r\n const hasUniqAds = !view.viewModel.hasDuplicateAds();\r\n\r\n if (!hasAds) {\r\n this.logActivities('invalid: has no ads');\r\n }\r\n if (!hasUniqAds && this.activityLogger) {\r\n this.logActivities('invalid: has duplicate ads');\r\n }\r\n\r\n return hasAds && hasUniqAds;\r\n })\r\n .every()\r\n .value();\r\n }\r\n\r\n shouldCancel() {\r\n return this.save();\r\n }\r\n\r\n shouldNext() {\r\n return this.save();\r\n }\r\n\r\n shouldBack() {\r\n return true;\r\n }\r\n\r\n errorElements() {\r\n return this.$('.adgroup-ads__container .error, .adgroup-ads__container .alert-danger').filter(':visible');\r\n }\r\n\r\n save() {\r\n if (!this.validate()) {\r\n scrollUtil.scrollAndCenter(this.errorElements());\r\n\r\n const isDSAMixedModeCampaignEnabled = _.result(config.get('Permissions'), 'IsDSAMixedModeCampaignEnabled', false);\r\n\r\n if (isDSAMixedModeCampaignEnabled) {\r\n const $dynamicAdGroupSection = this.$('#dynamicAdGroupAdEditorSection');\r\n const $standardAdGroupSection = this.$('#standardAdGroupAdEditorSection');\r\n\r\n if ($dynamicAdGroupSection) {\r\n $dynamicAdGroupSection.collapse('show');\r\n }\r\n if ($standardAdGroupSection) {\r\n $standardAdGroupSection.collapse('show');\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n if (this.perfMarker) {\r\n this.saveAdAndExtensionMarker = this.perfMarker.createChild('Save_Ad_And_Extension');\r\n this.saveAdAndExtensionMarker.willInit();\r\n }\r\n\r\n this.viewModel.errors.clear(isCampaignApiError);\r\n\r\n const results = changes.call(this, this.viewList, this.viewModel.adGroups());\r\n\r\n if (results.empty) {\r\n return true;\r\n } else {\r\n const adsToCreate = {\r\n Id: this.campaign.Id,\r\n Name: this.campaign.Name,\r\n };\r\n\r\n _.each(results.added, (value, key) => {\r\n adsToCreate[`${key}Ads`] = _.map(value, (ad) => {\r\n return _.pick(ad, schemaMapper[key](), 'AdGroup');\r\n });\r\n });\r\n\r\n return Promise.join(\r\n _.each(_.flatten(_.values(results.removed)), ({ Id, AdGroup: { Id: adGroupId } }) => {\r\n jsdata.Ad.destroy(Id, { adapter: 'bulk', parentId: adGroupId });\r\n }),\r\n ).then(() => {\r\n _.each(results.removed, (value, key) => {\r\n const count = _.size(value);\r\n\r\n if (count > 0) {\r\n instrumentation.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, `delete${key}Ad`, count);\r\n }\r\n });\r\n\r\n return jsdata.Campaign.update(this.campaign.Id, adsToCreate, { adapter: 'bulk', cacheResponse: false })\r\n .then((response) => {\r\n return this.handleSave(response, results.added);\r\n })\r\n .catch((response) => {\r\n _.chain(response.errors).map((error) => error.Error).uniq().each((error) => {\r\n this.logActivities(error, 'ad creation api error');\r\n });\r\n\r\n if (response.errors && !response.entity) {\r\n //Ajax error [400] - RowCountExceeded\r\n this.viewModel.errors.add(getODataErrors(response.errors));\r\n return false;\r\n }\r\n\r\n const requestResult = this.handleSave(response.entity, results.added);\r\n\r\n if (!requestResult) {\r\n scrollUtil.scrollAndCenter(this.errorElements());\r\n }\r\n return requestResult;\r\n });\r\n })\r\n .catch(({ errors }) => {\r\n this.viewModel.errors.add(getBulkApiErrors(errors));\r\n\r\n scrollUtil.scrollAndCenter(this.errorElements());\r\n\r\n _.chain(errors).map((error) => error.Error).uniq().each((error) => {\r\n this.logActivities(error, 'ad creation api error');\r\n });\r\n\r\n return false;\r\n })\r\n .finally(withUiBlock());\r\n }\r\n }\r\n\r\n handleSave(response, original) {\r\n let count = 0;\r\n\r\n _.each(availableAdTypes, (type) => {\r\n _.each(original[type], (ad, index) => {\r\n ad.Id = Number(response[`${type}Ads`][index].Id);\r\n ad.isSaved = true;\r\n });\r\n\r\n count = _.size(response[`${type}Ads`]);\r\n\r\n if (count > 0) {\r\n instrumentation.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, `create${type}Ad`, count);\r\n this.logActivities(count, `createAd: ${type}`);\r\n }\r\n });\r\n\r\n _.each(this.viewList, (view) => {\r\n //refresh main panel\r\n view.viewModel.slb.refreshSource();\r\n // empty the array of deletedAdIds\r\n view.viewModel.deletedAdIds = [];\r\n });\r\n\r\n if (this.saveAdAndExtensionMarker) {\r\n this.saveAdAndExtensionMarker.done();\r\n }\r\n return true;\r\n }\r\n\r\n editExtension(target) {\r\n const type = target.currentTarget.dataset.target;\r\n\r\n this.logActivities(`edit extension button clicked: ${type}`);\r\n this.openExtensionPanel(type, true);\r\n }\r\n\r\n createExtension(target) {\r\n const type = target.currentTarget.dataset.target;\r\n\r\n this.logActivities(`add extension button clicked: ${type}`);\r\n this.openExtensionPanel(type);\r\n }\r\n\r\n openExtensionPanel(type, isEdit = false) {\r\n if ((!_.contains(this.openedExtEditor, type) && _.result(this.viewModel, type).length === 0) || isEdit) {\r\n this.openedExtEditor.push(type);\r\n\r\n const EditorCtor = toggleDecorator.decorate(\r\n editorViewMapper[type],\r\n {\r\n getToggleEl: () => this.$(`.associations__container[data-type=${type}] .create-extension, .associations__container[data-type=${type}] .campaign-adextension-list`),\r\n containerCss: 'panel',\r\n },\r\n );\r\n\r\n const editor = new EditorCtor({\r\n campaignId: this.campaign.Id,\r\n campaignName: this.campaign.Name,\r\n entityType: 'campaign',\r\n hasSubTitle: true,\r\n showErrorsInline: true,\r\n popupFront: '.navbar-fixed-top',\r\n perfMarker: this.showAdAndExtensionMarker,\r\n usePanel: this.usePanel,\r\n isForVNext: this.isForVNext,\r\n vnextContext: {\r\n dynamicFeatures: this.viewModel.adExtensionDynamicFeatures[type],\r\n },\r\n activityLogger: this.activityLogger,\r\n }).render();\r\n\r\n editor.on('save', (ext) => {\r\n this.viewModel[type](ext);\r\n editor.remove();\r\n this.openedExtEditor = _.without(this.openedExtEditor, type);\r\n });\r\n\r\n editor.on('cancel', () => {\r\n editor.remove();\r\n this.openedExtEditor = _.without(this.openedExtEditor, type);\r\n });\r\n\r\n editor.on('extensions:changed', () => {\r\n this.viewModel.hasChanges(true);\r\n });\r\n }\r\n }\r\n\r\n remove() {\r\n _.each(this.viewList, (view) => {\r\n view.remove();\r\n });\r\n super.remove();\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nlet dynamicTextMenu = [\r\n { text: i18n.get('Ad_DynamicMenuParam1'), value: '{param1}' },\r\n { text: i18n.get('Ad_DynamicMenuParam2'), value: '{param2}' },\r\n { text: i18n.get('Ad_DynamicMenuParam3'), value: '{param3}' },\r\n];\r\n\r\nexport default {\r\n extend(viewModel, propertyNames) {\r\n _.each(propertyNames, (name) => {\r\n const property = viewModel[name];\r\n\r\n property.appendDynamicText = (data) => {\r\n const originalValue = property();\r\n\r\n property(originalValue + data.value);\r\n };\r\n\r\n property.dynamicTextMenu = dynamicTextMenu;\r\n });\r\n },\r\n};\r\n","import _ from 'underscore';\r\nimport ko from 'knockout';\r\nimport { getCharCountExcludingAdCustomizers as newGetCharCountExcludingAdCustomizers } from '@bingads-webui-campaign/ad-customizers';\r\nimport { getCharCountExcludingAdCustomizers as legacyGetCharCountExcludingAdCustomizers } from '@bingads-webui-campaign-legacy/crud-ad/service/adCustomizersUtils';\r\nimport instrumentation from '@bingads-webui-campaign-legacy/instrumentation/index';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport edmCampaign from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport jsDataCampaign from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport { i18nDummy } from '@bingads-webui-campaign-legacy/crud-ad/service/utils/i18n-dummy-vnext';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\nconst i18nAdCustomizers = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/ad-customizers');\r\n\r\nconst {\r\n IsNewAdsAdCustomizerEditorEnabled,\r\n IsIfFunctionMilestone1Enabled,\r\n} = config.get('Permissions') || {};\r\n\r\nconst withNewAdCustomizerEditor = IsNewAdsAdCustomizerEditorEnabled ||\r\n IsIfFunctionMilestone1Enabled;\r\n\r\nconst getCharCountExcludingAdCustomizers = (value, name, adType = 'ExpandedTextAd', perfMarker) => {\r\n if (withNewAdCustomizerEditor) {\r\n return newGetCharCountExcludingAdCustomizers({\r\n text: value,\r\n field: name,\r\n deps: {\r\n i18n: i18nAdCustomizers,\r\n countdownI18nDummy: i18nDummy,\r\n config,\r\n instrumentation,\r\n edmCampaign,\r\n jsDataCampaign,\r\n perfMarker,\r\n },\r\n adType,\r\n });\r\n }\r\n\r\n return legacyGetCharCountExcludingAdCustomizers(value);\r\n};\r\n\r\nexport default {\r\n extend(viewModel, propertyNames, adType = 'ExpandedTextAd') {\r\n const inputLimit = 4000;\r\n const perfMarker = viewModel.perfMarker;\r\n\r\n _.each(propertyNames, (name) => {\r\n const property = viewModel[name];\r\n\r\n // We need to force trigger a change notification to get property.strRemaining to be re-evaluated\r\n // using above override instead of the one from 'component\\ko-schema-string\\js\\extension'\r\n if (typeof property === 'function') {\r\n // We don't use cjkRemaining for this form. So it's ok to only override this.\r\n property.remaining = ko.computed(() => {\r\n return property.maxLength() - getCharCountExcludingAdCustomizers(property(), name, adType, perfMarker);\r\n });\r\n property(property());\r\n } else {\r\n property.countCharCountExcludingAdCustomizers = () => {\r\n return getCharCountExcludingAdCustomizers(property.entity.get(name), name, adType, perfMarker);\r\n };\r\n }\r\n\r\n const lengthValidator = _.result(property.validators, 'maxLength') ||\r\n _.result(viewModel, ['model', 'validator', 'fieldValidators', name, 'validators', 'maxLength']);\r\n\r\n if (lengthValidator) {\r\n lengthValidator.isValid = (value) => {\r\n if (!value && lengthValidator.nullable) {\r\n return true;\r\n }\r\n\r\n if (_.isNull(value) || _.isUndefined(value)) {\r\n return false;\r\n }\r\n\r\n if (value.length > inputLimit) {\r\n return false;\r\n }\r\n\r\n return getCharCountExcludingAdCustomizers(value, name, adType, perfMarker) <= property.maxLength();\r\n };\r\n\r\n lengthValidator.message = function () {\r\n return i18n.get(`Ad_Validation_${name}LengthExceeded_New`, {\r\n count: property.maxLength(),\r\n });\r\n };\r\n\r\n lengthValidator.blockInput = false;\r\n lengthValidator.process = null;\r\n }\r\n });\r\n },\r\n};\r\n","import _ from 'underscore';\r\nimport instrumentation from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport constants from '@bingads-webui-static-legacy/instrumentation/constants';\r\n\r\nexport function instrument(operation, data) {\r\n switch (operation) {\r\n case 'create': {\r\n instrumentation.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, 'createAdgroup', '1');\r\n instrumentation.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, 'createKeyword', _.size(data.Keywords));\r\n break;\r\n }\r\n case 'update': {\r\n instrumentation.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, 'updateAdgroup', '1');\r\n const deletedKeywordsCount = _.size(_.where(data.Keywords, {Status: 'Deleted'}));\r\n const createdKeywordsCount = _.size(data.Keywords) - deletedKeywordsCount;\r\n\r\n if (deletedKeywordsCount > 0) {\r\n instrumentation.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, 'deleteKeyword', deletedKeywordsCount);\r\n }\r\n if (createdKeywordsCount > 0) {\r\n instrumentation.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, 'createKeyword', createdKeywordsCount);\r\n }\r\n break;\r\n }\r\n case 'delete': {\r\n instrumentation.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, 'deleteAdgroup', '1');\r\n break;\r\n }\r\n case 'save': {\r\n const deletedKeywordsCount = _.size(_.where(data.Keywords, {Status: 'Deleted'}));\r\n const createdKeywordsCount = _.size(data.Keywords) - deletedKeywordsCount;\r\n\r\n if (deletedKeywordsCount > 0) {\r\n instrumentation.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, 'deleteKeyword', deletedKeywordsCount);\r\n }\r\n if (createdKeywordsCount > 0) {\r\n instrumentation.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, 'createKeyword', createdKeywordsCount);\r\n }\r\n break;\r\n }\r\n default:\r\n }\r\n}\r\n","import Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport landingPage from '@bingads-webui-campaign-legacy/crud-adgroup/template/landingPage.pug';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nexport default class View extends Backbone.View {\r\n initialize(options = {}) {\r\n this.options = options;\r\n\r\n this.viewmodel = {\r\n url: ko.observable(''),\r\n isNotReady: ko.observable(false),\r\n };\r\n\r\n this.viewmodel.url.subscribe(this.urlEntered.bind(this));\r\n this.viewmodel.isNotReady.subscribe(() => {\r\n if (this.options.activityLogger) {\r\n this.options.activityLogger.signal('website not ready clicked');\r\n }\r\n });\r\n }\r\n\r\n get events() {\r\n return {\r\n 'keyup input.form-control': 'checkForEnter',\r\n };\r\n }\r\n\r\n urlEntered() {\r\n if (this.options.activityLogger) {\r\n this.options.activityLogger.signal('url change');\r\n }\r\n this.trigger('urlEntered', this.viewmodel.url());\r\n }\r\n\r\n render() {\r\n this.$el.html(\r\n landingPage({\r\n i18n,\r\n isForVNext: this.options.isForVNext,\r\n })\r\n );\r\n ko.applyBindings(this.viewmodel, this.el);\r\n\r\n return this;\r\n }\r\n\r\n checkForEnter(e) {\r\n if (e.keyCode === 13) {\r\n this.trigger('urlEntered', this.viewmodel.url());\r\n }\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport 'backbone';\r\nimport KeywordPlannerView from '@bingads-webui-campaign-legacy/crud-adgroup/view/keywordPlanner';\r\nimport LandingPageView from '@bingads-webui-campaign-legacy/crud-adgroup/view/landingPage';\r\n\r\nexport function decorate(view) {\r\n return view.extend({\r\n initialize(options = {}) {\r\n this.options = options;\r\n _.bind(view.prototype.initialize, this, options)();\r\n this.keywordPlannerView = new KeywordPlannerView({\r\n scenario: 'campaign creation',\r\n isCampaignCreation: true,\r\n usePanel: options && options.usePanel,\r\n activityLogger: options && options.activityLogger,\r\n });\r\n this.keywordPlannerTimeout = 500;\r\n this.keywordPlannerView.on({\r\n 'addAdgroup': (data) => {\r\n this.addSuggestion(data);\r\n },\r\n });\r\n\r\n this.landingPageView = new LandingPageView({\r\n activityLogger: options && options.activityLogger,\r\n isForVNext: options && options.isForVNext,\r\n });\r\n this.landingPageView.on({\r\n 'urlEntered': (url) => {\r\n this.keywordPlannerView.onSearch({url});\r\n this.options.context.set({'LandingPageUrl': url});\r\n },\r\n });\r\n },\r\n\r\n willShow(shouldNotCreateDefaultEditor, shouldNotRenderWhenThereIsNoAdGroup) {\r\n _.bind(view.prototype.willShow, this)(shouldNotCreateDefaultEditor, shouldNotRenderWhenThereIsNoAdGroup);\r\n\r\n if (_.isObject(this.campaign)) {\r\n this.checkKeywordPlannerSupport();\r\n }\r\n\r\n const showLandingPage = this.ko_model.isKeywordPlannerEnabled() && !this.keywordPlannerView.viewmodel.allLocationsUnsupported();\r\n\r\n this.updateLandingPageStatus(showLandingPage);\r\n },\r\n\r\n render(shouldNotCreateDefaultEditor = false) {\r\n _.bind(view.prototype.render, this)();\r\n if (!_.isUndefined(this.campaign)) {\r\n this.ko_model.adGroups.subscribe((valueArray) => {\r\n this.keywordPlannerView.updateAdgroupsList(_.map(valueArray, (value) => {\r\n return {\r\n 'id': value.ko_model.Id(),//eslint-disable-line\r\n 'name': value.ko_model.Name,\r\n 'index': value.ko_model.options.index,\r\n };\r\n }));\r\n });\r\n this.landingPageView.render();\r\n this.$('.landing-page-container').append(this.landingPageView.el);\r\n\r\n if (!shouldNotCreateDefaultEditor) {\r\n this.create();\r\n }\r\n\r\n this.keywordPlannerView.render();\r\n this.$('.keyword-planner-container').append(this.keywordPlannerView.el);\r\n }\r\n return this;\r\n },\r\n\r\n updateLandingPageStatus(show) {\r\n this.ko_model.showLandingPage(show);\r\n },\r\n\r\n checkKeywordPlannerSupport() {\r\n const isLanguagesSupported = KeywordPlannerView.isLanguageSupported(this.campaign.Languages);\r\n\r\n this.ko_model.isKeywordPlannerEnabled(isLanguagesSupported);\r\n this.keywordPlannerView.setLanguages(this.campaign.Languages);\r\n\r\n if (this.ko_model.isKeywordPlannerEnabled()) {\r\n this.keywordPlannerView.setLocationTargetingByCampaign();\r\n }\r\n },\r\n\r\n create() {\r\n _.bind(view.prototype.create, this)();\r\n\r\n const updateView = _.last(this.ko_model.adGroups());\r\n\r\n updateView.on({\r\n 'delete': () => {\r\n setTimeout(this.moveKeywordPlanner.bind(this), this.keywordPlannerTimeout);\r\n },\r\n 'seedKeywordsEntered': (seedKeywords) => {\r\n if (_.isArray(seedKeywords) && seedKeywords.length > 0) {\r\n this.keywordPlannerView.onSearch({\r\n keywords: seedKeywords,\r\n });\r\n }\r\n },\r\n 'selectThisAdGroup': (adGroup) => {\r\n if (_.isNull(this.selectedAdGroup) || this.selectedAdGroup.options.index !== adGroup.options.index) {\r\n this.moveKeywordPlanner();\r\n }\r\n },\r\n });\r\n },\r\n\r\n moveKeywordPlanner() {\r\n const keywordPlannerTop = _.isNull(this.selectedAdGroup) ? 0 : this.selectedAdGroup.$el.position().top;\r\n\r\n this.ko_model.keywordPlannerTopValue(keywordPlannerTop);\r\n },\r\n\r\n changeSelectedAdGroup(newSelected) {\r\n _.bind(view.prototype.changeSelectedAdGroup, this, newSelected)();\r\n setTimeout(this.moveKeywordPlanner.bind(this), this.keywordPlannerTimeout);\r\n },\r\n\r\n addSuggestion(data) {\r\n const name = this.ko_model.getUniqueName(data.data.Name);\r\n const keywords = _.pluck(data.data.Suggestions, 'Keyword');\r\n\r\n switch (data.mode) {\r\n case 'AddToAllAdGroups': {\r\n const targets = this.ko_model.adGroups();\r\n\r\n _.each(targets, (target) => {\r\n target.addSuggestion(keywords, undefined, undefined, data.sourceReqId);\r\n });\r\n this.save(true);\r\n break;\r\n }\r\n\r\n case 'AddToSelectedAdGroups': {\r\n if (_.isArray(data.selectedAdgroups) && data.selectedAdgroups.length > 0) {\r\n const targets = _.pluck(data.selectedAdgroups, 'index');\r\n\r\n _.each(this.ko_model.adGroups(), (adGroup) => {\r\n if (_.contains(targets, adGroup.ko_model.options.index)) {\r\n adGroup.addSuggestion(keywords, undefined, undefined, data.sourceReqId);\r\n }\r\n });\r\n this.save(true);\r\n }\r\n break;\r\n }\r\n\r\n default: {\r\n const suggestedAvgCpc = _.result(data.data && data.data.AggregateMetric, 'AverageCPC');\r\n\r\n if (_.isObject(this.selectedAdGroup) && this.selectedAdGroup.subView.isEmpty()) {\r\n this.selectedAdGroup.addSuggestion(keywords, name, suggestedAvgCpc, data.sourceReqId);\r\n return;\r\n }\r\n this.create();\r\n this.selectedAdGroup.addSuggestion(keywords, name, suggestedAvgCpc, data.sourceReqId);\r\n\r\n break;\r\n }\r\n }\r\n },\r\n });\r\n}\r\n","/* eslint-disable */\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport ko_schema from '@bingads-webui-component-legacy/ko-schema/index';\r\nvar i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\nvar viewModel = function (options) {\r\n var self = this;\r\n self.options = options || ({});\r\n ko_schema.properties(self);\r\n self.adGroups = ko.observableArray([]);\r\n self.numCreated = 0;\r\n self.maxAdGroups = _.isFinite(options.maxAdGroups) ? options.maxAdGroups : 100;\r\n self.isValid = ko.observable(true);\r\n self.isKeywordPlannerEnabled = ko.observable(false);\r\n self.isMixedModeCampaignCreation = options.isMixedModeCampaignCreation;\r\n self.isForVNext = options.isForVNext;\r\n self.hasChanges = ko.observable(false);\r\n self.hasMaxAdGroups = ko.computed(function () {\r\n return self.adGroups().length >= self.maxAdGroups;\r\n });\r\n self.showAdGroupLimitError = ko.computed(function () {\r\n return self.hasMaxAdGroups() && self.maxAdGroups > 1;\r\n });\r\n self.isDuplicateName = function (name, index) {\r\n var isDuplicate = false;\r\n if (_.size(name.trim()) > 0) {\r\n _.each(self.adGroups(), function (adGroup) {\r\n var comparisonName = adGroup.ko_model.Name().toLowerCase();\r\n if (_.isString(comparisonName) && comparisonName === name.toLowerCase() && adGroup.options.index !== index) {\r\n isDuplicate = true;\r\n }\r\n });\r\n }\r\n return isDuplicate;\r\n };\r\n self.checkDuplicates = function () {\r\n _.each(self.adGroups(), function (adGroup) {\r\n var isDuplicated = self.isDuplicateName(adGroup.ko_model.Name(), adGroup.options.index);\r\n adGroup.ko_model.isNameDuplicate(isDuplicated);\r\n });\r\n };\r\n self.getUniqueName = function (name) {\r\n var uniqueName = name;\r\n var index = 1;\r\n while (self.isDuplicateName(uniqueName, -1) && index <= self.maxAdGroups) {\r\n index++;\r\n uniqueName = name + ' ' + index;\r\n }\r\n return uniqueName;\r\n };\r\n self.removeAdGroup = function (toRemove) {\r\n self.adGroups.remove(toRemove);\r\n };\r\n self.addAdGroup = function (toAdd) {\r\n self.adGroups.push(toAdd);\r\n };\r\n self.showLandingPage = ko.observable(true);\r\n self.keywordPlannerTopValue = ko.observable();\r\n self.keywordPlannerTopValuePixel = ko.computed(function () {\r\n var offset;\r\n if (self.isMixedModeCampaignCreation && self.isForVNext) {\r\n offset = 160;\r\n } else if (self.showLandingPage()) {\r\n offset = 100;\r\n } else {\r\n offset = 25;\r\n }\r\n return self.keywordPlannerTopValue() + offset + 'px';\r\n });\r\n self.isWaitingForSaveResponse = ko.computed(function () {\r\n return _.every(self.adGroups(), function (adGroup) {\r\n return !adGroup.ko_model.isWaitingForSaveResponse();\r\n });\r\n });\r\n self.hasOneAdGroup = ko.computed(function () {\r\n return _.size(self.adGroups()) <= 1;\r\n });\r\n};\r\nexport default viewModel;\r\n\r\n","/* eslint-disable */\r\nimport Backbone from 'backbone';\r\nimport _ from 'underscore';\r\nimport ko from 'knockout';\r\nimport bootstrap from 'bootstrap';\r\nimport jsdata from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport tmpl from '@bingads-webui-campaign-legacy/crud-adgroup/template/create.pug';\r\nimport CreateViewModel from '@bingads-webui-campaign-legacy/crud-adgroup/viewmodel/create';\r\nimport withUiBlock from '@bingads-webui-component-legacy/uiblocker/index';\r\nimport * as i18nErrors from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\nimport * as scrollUtil from '@bingads-webui-component-legacy/extension/scrollTo';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport * as errorExtractor from '@bingads-webui-campaign-legacy/crud-adgroup/share/errorExtractor';\r\nimport instrumentation from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport constants from '@bingads-webui-static-legacy/instrumentation/constants';\r\nvar i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\nvar View = Backbone.View.extend({\r\n events: {\r\n 'click .btn-create-adgroup': 'createAndRefocus'\r\n },\r\n initialize: function (options) {\r\n var self = this;\r\n self.options = _.defaults({}, options, {\r\n maxAdGroups: 100,\r\n isOptional: false,\r\n checkAdGroupNameDuplicates: null\r\n });\r\n self.adapter = {\r\n adapter: self.options.adapter || 'bulk'\r\n };\r\n self.ko_model = new CreateViewModel({\r\n maxAdGroups: this.options.maxAdGroups,\r\n campaignType: this.options.campaignType,\r\n isMixedModeCampaignCreation: options.isMixedModeCampaignCreation,\r\n isForVNext: options.isForVNext\r\n });\r\n self.existError = false;\r\n this.updateViews = [];\r\n },\r\n willShow: function (shouldNotCreateDefaultEditor, shouldNotRenderWhenThereIsNoAdGroup) {\r\n window.scrollTo(0, 0);\r\n var self = this;\r\n if (self.options.context instanceof Backbone.Model) {\r\n self.campaign = self.options.context.get('Campaign');\r\n if (self.ko_model.adGroups().length === 0 && !shouldNotRenderWhenThereIsNoAdGroup) {\r\n self.render(shouldNotCreateDefaultEditor);\r\n } else {\r\n _.each(self.ko_model.adGroups(), function (adGroup) {\r\n adGroup.updateCampaign();\r\n });\r\n _.invoke(self.ko_model.adGroups(), 'updateOnVisible');\r\n }\r\n }\r\n self.ko_model.hasChanges(false);\r\n },\r\n hasChanges: function () {\r\n return this.ko_model.hasChanges();\r\n },\r\n shouldNext: function () {\r\n return this.save(true);\r\n },\r\n shouldBack: function () {\r\n if (this.validate()) {\r\n this.save(false);\r\n }\r\n return true;\r\n },\r\n shouldCancel: function () {\r\n return this.save(true);\r\n },\r\n getUpdates: function (shouldValidate) {\r\n var self = this;\r\n var updates = {\r\n Id: self.campaign.Id,\r\n AdGroups: []\r\n };\r\n if (shouldValidate) {\r\n if (!self.validate()) {\r\n return false;\r\n }\r\n self.existError = false;\r\n }\r\n _.each(self.ko_model.adGroups(), function (adGroup, index) {\r\n var changes = adGroup.getChanges();\r\n if (!_.isNull(changes)) {\r\n changes.AdScheduleUseSearcherTimeZone = false;\r\n updates.AdGroups.push(changes);\r\n }\r\n });\r\n return updates;\r\n },\r\n errorElements: function () {\r\n return this.$('.adgroups-keywords__container .error, .adgroups-keywords__container .alert-danger').filter(':visible');\r\n },\r\n showErrorElements: function () {\r\n this.selectedAdGroup = null;\r\n _.each(this.ko_model.adGroups(), function (adGroup) {\r\n if (!adGroup.ko_model.isOpen()) {\r\n adGroup.collapse('show');\r\n }\r\n });\r\n setTimeout((function () {\r\n scrollUtil.scrollAndCenter(this.errorElements());\r\n }).bind(this), 500);\r\n },\r\n save: function (shouldValidate) {\r\n var self = this;\r\n var updates = self.getUpdates(shouldValidate);\r\n var saveAdGroupKeywordMarker = null;\r\n if (updates === false) {\r\n self.showErrorElements();\r\n return false;\r\n }\r\n if (_.size(updates.AdGroups) === 0) {\r\n if (self.existError) {\r\n return false;\r\n }\r\n self.updateContext();\r\n return true;\r\n }\r\n if (this.options && this.options.perfMarker) {\r\n saveAdGroupKeywordMarker = this.options.perfMarker.createChild('Save_AdGroup_Keyword');\r\n saveAdGroupKeywordMarker.willInit();\r\n }\r\n var updatedAdgroupsCount = _.size(_.filter(updates.AdGroups, function (ag) {\r\n return _.has(ag, 'Id');\r\n }));\r\n var createdAdgroupsCount = _.size(updates.AdGroups) - updatedAdgroupsCount;\r\n var adgroupType = _.result(_.first(updates.AdGroups), 'AdGroupType');\r\n self.existError = false;\r\n return jsdata.Campaign.update(self.campaign.Id, updates, self.adapter).then(function (data) {\r\n if (updatedAdgroupsCount > 0) {\r\n instrumentation.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, `updateAdgroup | type: ${adgroupType}`, updatedAdgroupsCount);\r\n }\r\n if (createdAdgroupsCount > 0) {\r\n instrumentation.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, `createAdgroup | type: ${adgroupType}`, createdAdgroupsCount);\r\n }\r\n _.each(data.AdGroups, function (adGroup) {\r\n var toUpdate = _.find(self.ko_model.adGroups(), function (adGroupView) {\r\n return adGroupView.ko_model.options.index === parseInt(adGroup['Client Id']);\r\n }, self);\r\n if (toUpdate) {\r\n toUpdate.updateViewModels(adGroup);\r\n }\r\n if (self.options.instrumentation) {\r\n self.options.instrumentation.instrument('save', adGroup);\r\n }\r\n });\r\n self.updateContext(createdAdgroupsCount, updatedAdgroupsCount, adgroupType);\r\n if (saveAdGroupKeywordMarker) {\r\n saveAdGroupKeywordMarker.done();\r\n }\r\n return true;\r\n }).catch(function (errors) {\r\n self.existError = true;\r\n if (self.options.activityLogger && errors && errors.errors) {\r\n _.chain(errors.errors).map(function (error) {\r\n return error.Error;\r\n }).uniq().each(function (error) {\r\n self.options.activityLogger.signal(error, 'adgroup creation api error');\r\n });\r\n }\r\n if (!_.isObject(errors) || !_.isObject(errors.entity)) {\r\n self.showErrorElements();\r\n if (errors && errors.errors) {\r\n self.ko_model.errors.add(i18nErrors.getODataErrors(errors.errors));\r\n }\r\n return false;\r\n }\r\n var hasErrors = _.map(errors.entity.AdGroups, function (adGroup) {\r\n var errorList = _.where(errors.errors, {\r\n 'Client Id': adGroup['Client Id']\r\n });\r\n var subEntity = self.options.isAutoTargetCampaign ? 'DsaTargets' : 'Keywords';\r\n var canEdit = self.options.isAutoTargetCampaign;\r\n errorExtractor.extract(adGroup, errors, errorList, subEntity, canEdit);\r\n var toUpdate = _.find(self.ko_model.adGroups(), function (adGroupView) {\r\n return adGroupView.ko_model.options.index === parseInt(adGroup['Client Id']);\r\n });\r\n if (toUpdate) {\r\n if (_.isEmpty(errorList)) {\r\n toUpdate.updateViewModels(adGroup);\r\n } else {\r\n toUpdate.updateViewModelsOnError({\r\n entity: adGroup,\r\n errors: errorList\r\n }, subEntity);\r\n }\r\n }\r\n return !_.isEmpty(errorList);\r\n });\r\n if (_.some(hasErrors)) {\r\n self.showErrorElements();\r\n return false;\r\n } else {\r\n self.updateContext(createdAdgroupsCount, updatedAdgroupsCount, adgroupType);\r\n self.existError = false;\r\n return true;\r\n }\r\n }).finally(withUiBlock());\r\n },\r\n validate: function () {\r\n var isValid = _.chain(this.ko_model.adGroups()).map(function (adGroup) {\r\n return adGroup.validate();\r\n }).every().value();\r\n this.ko_model.isValid(isValid);\r\n return isValid;\r\n },\r\n updateContext: function (createdAdgroupsCount, updatedAdgroupsCount, adgroupType) {\r\n if (this.options.activityLogger && createdAdgroupsCount > 0) {\r\n this.options.activityLogger.signal(createdAdgroupsCount, `create adgroup | type: ${adgroupType}`);\r\n }\r\n if (this.options.activityLogger && updatedAdgroupsCount > 0) {\r\n this.options.activityLogger.signal(updatedAdgroupsCount, `update adgroup | type: ${adgroupType}`);\r\n }\r\n var contextAdGroups = [];\r\n _.each(this.ko_model.adGroups(), function (adGroup, index) {\r\n contextAdGroups.push(adGroup.getContextObject());\r\n });\r\n this.options.context.set({\r\n 'AdGroups': contextAdGroups\r\n });\r\n },\r\n render: function () {\r\n if (!_.isUndefined(this.campaign)) {\r\n this.$el.html(tmpl({\r\n isAutoTargetCampaign: this.options.isAutoTargetCampaign,\r\n i18n: i18n,\r\n maxAdGroupsError: i18n.get('AdGroup_Message_MaxAdGroups').replace('{0}', this.ko_model.maxAdGroups)\r\n }));\r\n ko.applyBindings(this.ko_model, this.el);\r\n this.$('.ad-group-list-container')[0].addEventListener('change', (function () {\r\n this.ko_model.hasChanges(true);\r\n }).bind(this), false);\r\n }\r\n return this;\r\n },\r\n create: function () {\r\n var self = this;\r\n if (self.ko_model.hasMaxAdGroups()) {\r\n return;\r\n }\r\n self.ko_model.numCreated++;\r\n var updateView = new self.options.UpdateView(_.extend({}, self.options, {\r\n index: self.ko_model.numCreated,\r\n context: self.options.context,\r\n adapter: self.options.adapter,\r\n showErrorsInline: true,\r\n instrumentation: self.options.instrumentation,\r\n defaultBid: self.options.defaultBid,\r\n activityLogger: self.options.activityLogger,\r\n isForVNext: self.options.isForVNext,\r\n hideHeader: self.options.hideHeader\r\n })).render();\r\n this.updateViews.push(updateView);\r\n self.ko_model.addAdGroup(updateView);\r\n self.trigger('createAdGroupEditorView', updateView);\r\n if (_.size(self.ko_model.adGroups()) <= 1) {\r\n if (!self.options.isOptional) {\r\n updateView.ko_model.isOnlyAdGroup(true);\r\n }\r\n } else if (_.size(self.ko_model.adGroups()) >= 2) {\r\n self.ko_model.adGroups()[0].ko_model.isOnlyAdGroup(false);\r\n }\r\n if (_.isObject(self.selectedAdGroup) && self.selectedAdGroup.ko_model.isOpen()) {\r\n self.selectedAdGroup.validate();\r\n }\r\n self.changeSelectedAdGroup(updateView);\r\n var isDuplicated = self.ko_model.isDuplicateName(updateView.ko_model.Name(), updateView.options.index);\r\n updateView.ko_model.isNameDuplicate(isDuplicated);\r\n var logNameChange = _.once(function () {\r\n if (self.options.activityLogger) {\r\n self.options.activityLogger.signal('adgroup name change');\r\n }\r\n });\r\n updateView.on({\r\n 'show': function (newSelected, e) {\r\n self.changeSelectedAdGroup(newSelected);\r\n },\r\n 'delete': function (deletedAdGroup) {\r\n self.updateViews = self.updateViews.filter(function (view) {\r\n return view !== updateView;\r\n });\r\n if (self.options.activityLogger) {\r\n self.options.activityLogger.signal('remove adgroup clicked');\r\n }\r\n self.ko_model.hasChanges(true);\r\n self.ko_model.removeAdGroup(deletedAdGroup);\r\n if (self.lastDeleted && self.lastDeleted.$('.deletedConfirmation')) {\r\n self.lastDeleted.$el.hide();\r\n }\r\n self.lastDeleted = deletedAdGroup;\r\n if (_.isEqual(self.selectedAdGroup, deletedAdGroup)) {\r\n self.selectedAdGroup = null;\r\n }\r\n if (!self.options.checkAdGroupNameDuplicates) {\r\n self.ko_model.checkDuplicates();\r\n } else {\r\n self.options.checkAdGroupNameDuplicates();\r\n }\r\n if (_.size(self.ko_model.adGroups()) === 1) {\r\n var onlyAdGroup = self.ko_model.adGroups()[0];\r\n if (!self.options.isOptional) {\r\n onlyAdGroup.ko_model.isOnlyAdGroup(true);\r\n if (!onlyAdGroup.ko_model.isOpen()) {\r\n onlyAdGroup.collapse('show');\r\n }\r\n }\r\n }\r\n },\r\n 'nameChanged': function (adGroup) {\r\n logNameChange();\r\n if (!self.options.checkAdGroupNameDuplicates) {\r\n var isDuplicated = self.ko_model.isDuplicateName(adGroup.ko_model.Name(), adGroup.options.index);\r\n adGroup.ko_model.isNameDuplicate(isDuplicated);\r\n self.ko_model.checkDuplicates();\r\n } else {\r\n self.options.checkAdGroupNameDuplicates();\r\n }\r\n },\r\n 'selectThisAdGroup': function (adGroup) {\r\n if (_.isNull(self.selectedAdGroup) || self.selectedAdGroup.options.index !== adGroup.options.index) {\r\n self.changeSelectedAdGroup(adGroup);\r\n }\r\n }\r\n });\r\n self.$('.ad-group-list').append(updateView.el);\r\n self.ko_model.hasChanges(true);\r\n },\r\n createAndRefocus: function () {\r\n if (this.options.activityLogger) {\r\n this.options.activityLogger.signal('add new adgroup clicked');\r\n }\r\n this.create();\r\n _.last(this.$('.adgroup-name')).focus();\r\n },\r\n changeSelectedAdGroup: function (newSelected) {\r\n if (_.isObject(this.selectedAdGroup) && this.selectedAdGroup.ko_model.isOpen() && !this.selectedAdGroup.ko_model.isOnlyAdGroup()) {\r\n this.selectedAdGroup.collapse('hide');\r\n }\r\n this.selectedAdGroup = newSelected;\r\n }\r\n});\r\nexport default View;\r\n\r\n","import _ from 'underscore';\r\n\r\nexport function extract(adGroup, errors, errorList, subEntity, canEdit) {\r\n if (_.isArray(adGroup[subEntity])) {\r\n _.each(adGroup[subEntity], (item) => {\r\n if (item['Client Id'] && (canEdit || (!canEdit && !item.Id))) {\r\n const errorsOfThisItem = _.where(errors.errors, { 'Client Id': item['Client Id'] });\r\n\r\n Array.prototype.push.apply(errorList, errorsOfThisItem);\r\n }\r\n });\r\n }\r\n}\r\n","import ko from 'knockout';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nexport default function ViewModel(options) {\r\n this.options = options || {};\r\n this.gridData = ko.observableArray([]);\r\n this.adgroups = [];\r\n\r\n this.locations = ko.observableArray([]);\r\n this.tire2Locations = ko.observableArray([]);\r\n this.languages = ko.observableArray([]);\r\n this.numLocationsTargeted = ko.observable(0);\r\n this.countryLocationInfo = ko.observable([]);\r\n\r\n\r\n this.noSuggestionNote = ko.observable(false);\r\n\r\n this.allLocationsUnsupported = ko.computed(() => {\r\n return this.locations().length === 0 && this.numLocationsTargeted() > 0;\r\n });\r\n\r\n this.onlytire2LocationSupported = ko.computed(() => {\r\n return this.tire2Locations().length === this.locations().length;\r\n });\r\n this.excludedLocationsWarning = ko.computed(() => {\r\n if (this.locations().length !== this.numLocationsTargeted()) {\r\n if (this.allLocationsUnsupported()) {\r\n return i18n.get('KeywordPlanner_NoSuggestions_Warning');\r\n }\r\n\r\n if (this.gridData().length > 0) {\r\n return i18n.get('KeywordPlanner_UnsupportedLocations_Warning')\r\n .replace('{0}', this.locations().length)\r\n .replace('{1}', this.numLocationsTargeted());\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n\r\n this.selectMultiIdeasText = ko.observable('');\r\n\r\n this.recentUserActionPrompt = ko.observable('');\r\n\r\n this.isKeywordPlannerVisible = ko.computed(() => {\r\n return this.gridData().length > 0;\r\n });\r\n}\r\n","import ko from 'knockout';\r\n\r\nexport default function ViewModel(options = {}) {\r\n this.suggestedAdgroup = options.SuggestedAdGroup;\r\n this.gridData = options.SuggestedAdGroup.Suggestions;\r\n this.adgroups = ko.observableArray(options.AdGroups);\r\n}\r\n","export const AddToNewAdGroup = 'AddToNewAdGroup';\r\nexport const AddToAllAdGroups = 'AddToAllAdGroups';\r\nexport const AddToSelectedAdGroups = 'AddToSelectedAdGroups';\r\n","const options = {\r\n compact: 'short',\r\n minimumFractionDigits: 0,\r\n maximumFractionDigits: 0,\r\n};\r\n\r\nexport function getSearchRange(value) {\r\n const base = Math.pow(10, Math.floor(Math.log10(value)));\r\n\r\n return {\r\n ceil: base * 10,\r\n floor: base < 10 ? 0 : base,\r\n };\r\n}\r\n\r\nexport function getSearchRangeString(value, i18n) {\r\n const range = getSearchRange(value);\r\n\r\n if (range.ceil === 0) {\r\n return '-';\r\n }\r\n return `${i18n.formatDecimal(range.floor, options)} - ${i18n.formatDecimal(range.ceil, options)}`;\r\n}\r\n","import Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport ViewModel from '@bingads-webui-campaign-legacy/crud-adgroup/viewmodel/keywordPlannerAdvanced';\r\nimport tmpl from '@bingads-webui-campaign-legacy/crud-adgroup/template/keywordPlannerAdvanced.pug';\r\nimport * as keywordPlannerCreateOptions from '@bingads-webui-campaign-legacy/crud-adgroup/viewmodel/keywordPlannerCreateOptions';\r\nimport pgrid from '@bingads-webui-component-legacy/github/modules/projection-grid/module/projection-grid';\r\nimport { bingadsGridColumn } from '@bingads-webui-component-legacy/bingads-grid/shared/column';\r\nimport popup from '@bingads-webui-component-legacy/dialog/popup';\r\nimport { getSearchRangeString } from '../share/getSearchRange';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nexport default class View extends Backbone.View {\r\n initialize(options = {}) {\r\n this.options = options;\r\n\r\n if (!_.isUndefined(options.AdGroups)) {\r\n let unnameCounter = 0;\r\n\r\n options.AdGroups = _.map(options.AdGroups, (ag) => {\r\n const isUnnamed = ag.name() === '';\r\n\r\n return _.extend({}, ag, {\r\n checked: ko.observable(false),\r\n isUnnamed,\r\n defaultName: ko.observable(isUnnamed ? `${i18n.get('KeywordPlanner_NoNameAdgroup_DefaultName')} ${++unnameCounter}` : ''),\r\n });\r\n });\r\n }\r\n\r\n this.viewmodel = new ViewModel(options);\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .apply-to-adgroups': 'applyToAdgroups',\r\n 'click .add-to-new-adgroup': 'addToNewAdgroup',\r\n 'click .add-to-all-adgroups': 'addToAllAdgroups',\r\n 'click .add-to-some-adgroups': 'addToSomeAdgroups',\r\n 'click .cancel-panel': 'cancelPanel',\r\n };\r\n }\r\n\r\n render() {\r\n this.$el.html(tmpl({\r\n i18n,\r\n }));\r\n\r\n ko.applyBindings(this.viewmodel, this.el);\r\n\r\n this.grid = pgrid.factory({ vnext: true })\r\n .create({\r\n tableClasses: ['table', 'table-hover', 'grid', 'grid-table'],\r\n dataSource: {\r\n type: 'memory',\r\n data: this.viewmodel.gridData,\r\n },\r\n rows: {\r\n bodyRows: [{\r\n type: 'data-rows',\r\n classes: ['table__row--keyword-planner'],\r\n }],\r\n },\r\n columns: this.getColumns(),\r\n selection: {\r\n enabled: true,\r\n a11y: {\r\n selectAllLabel: i18n.getString('KeywordPlanner_GridColumn_SelectAll'),\r\n },\r\n },\r\n });\r\n\r\n this.grid.gridView.render();\r\n this.$('.grid-container').append(this.grid.gridView.el);\r\n return this;\r\n }\r\n\r\n getColumns() {\r\n return _.map([\r\n {\r\n name: 'name',\r\n title: i18n.getString('KeywordPlanner_GridColumn_Suggestions'),\r\n type: 'string',\r\n sortable: true,\r\n property: (item) => item.Keyword,\r\n },\r\n {\r\n name: 'searchCount',\r\n title: i18n.getString('KeywordPlanner_GridColumn_MonthlySearches'),\r\n helpId: 'pop_BA_CampaignCreate_Keywords_MonthlySearches',\r\n type: 'string',\r\n sortable: true,\r\n headClasses: ['text-right'],\r\n bodyClasses: ['text-right'],\r\n property: (item) => getSearchRangeString(item.AggregateMetric.AverageSearchVolume, i18n.realI18n),\r\n },\r\n {\r\n name: 'averageCPC',\r\n title: i18n.getString('KeywordPlanner_GridColumn_AverageCPC'),\r\n helpId: 'pop_BA_CampaignCreate_Keywords_AvgCPC',\r\n type: 'number',\r\n sortable: true,\r\n headClasses: ['text-right'],\r\n bodyClasses: ['text-right'],\r\n property: (item) => item.AggregateMetric.AverageCPC,\r\n },\r\n {\r\n name: 'competition',\r\n title: i18n.getString('KeywordPlanner_GridColumn_Competition'),\r\n helpId: 'pop_BA_CampaignCreate_Keywords_Competition',\r\n type: 'string',\r\n sortable: true,\r\n headClasses: ['text-right'],\r\n bodyClasses: ['text-right'],\r\n property: (item) => i18n.get(`CompetitionLevel_${item.AggregateMetric.CompetitionLevel}`),\r\n },\r\n ], bingadsGridColumn);\r\n }\r\n\r\n get selectedKeywords() {\r\n const checkedRowIds = _.pluck(this.grid.gridView.selectedItems(), 'Keyword');\r\n const checkedKeywords = [];\r\n\r\n _.each(checkedRowIds, (id) => {\r\n checkedKeywords.push(_.find(this.viewmodel.gridData, (kw) => {\r\n return kw.Keyword === id;\r\n }));\r\n });\r\n\r\n return checkedKeywords;\r\n }\r\n\r\n applyToAdgroups(event) {\r\n if (this.selectedKeywords.length === 0) {\r\n this.noRowSelected(event);\r\n }\r\n }\r\n\r\n addToNewAdgroup() {\r\n this.viewmodel.suggestedAdgroup.Suggestions = this.selectedKeywords;\r\n this.trigger('addAdgroup', {\r\n sourceReqId: this.options.sourceReqId,\r\n data: this.viewmodel.suggestedAdgroup,\r\n mode: keywordPlannerCreateOptions.AddToNewAdGroup,\r\n });\r\n }\r\n\r\n addToAllAdgroups() {\r\n this.viewmodel.suggestedAdgroup.Suggestions = this.selectedKeywords;\r\n this.trigger('addAdgroup', {\r\n sourceReqId: this.options.sourceReqId,\r\n data: this.viewmodel.suggestedAdgroup,\r\n mode: keywordPlannerCreateOptions.AddToAllAdGroups,\r\n });\r\n }\r\n\r\n addToSomeAdgroups(event) {\r\n this.viewmodel.suggestedAdgroup.Suggestions = this.selectedKeywords;\r\n let selectedAdgroups = _.filter(this.viewmodel.adgroups(), (ag) => {\r\n return ag.checked() === true;\r\n });\r\n\r\n if (selectedAdgroups.length === 0) {\r\n this.noRowSelected(event);\r\n return;\r\n }\r\n this.trigger('addAdgroup', {\r\n sourceReqId: this.options.sourceReqId,\r\n data: this.viewmodel.suggestedAdgroup,\r\n mode: keywordPlannerCreateOptions.AddToSelectedAdGroups,\r\n selectedAdgroups: _.map(selectedAdgroups, (ag) => {\r\n return _.omit(ag, ['checked', 'isUnnamed', 'defaultName']);\r\n }),\r\n });\r\n }\r\n\r\n cancelPanel() {\r\n this.trigger('cancel');\r\n }\r\n\r\n noRowSelected(event) {\r\n event.stopPropagation();\r\n popup.alert(i18n.get('Grid_RowSelectionRequired'));\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nfunction getCompareFunction(prop) {\r\n if (prop === 'Name' || prop === 'Keyword') {\r\n return function compare(a, b) {\r\n let aProp = a[prop],\r\n bProp = b[prop];\r\n\r\n if (aProp > bProp) {\r\n return 1;\r\n } else if (aProp < bProp) {\r\n return -1;\r\n }\r\n return 0;\r\n };\r\n } else {\r\n return function compare(a, b) {\r\n let aProp = a.AggregateMetric[prop],\r\n bProp = b.AggregateMetric[prop];\r\n\r\n if (aProp > bProp) {\r\n return 1;\r\n } else if (aProp < bProp) {\r\n return -1;\r\n }\r\n return 0;\r\n };\r\n }\r\n}\r\n\r\nexport function keywordPlannerSortFunc(args) {\r\n let input = args.input,\r\n direction = args.direction,\r\n prop = args.prop;\r\n\r\n _.each(input, (ag) => {\r\n if (!_.isUndefined(ag.Suggestions) && !_.isNull(ag.Suggestions) && _.isArray(ag.Suggestions)) {\r\n ag.Suggestions = _.sortByOrder(ag.Suggestions, getCompareFunction(prop), direction);\r\n }\r\n });\r\n input = _.sortByOrder(input, getCompareFunction(prop), direction);\r\n\r\n return input;\r\n}\r\n","/*eslint camelcase:0 */\r\nimport Backbone from 'backbone';\r\nimport _ from 'underscore';\r\nimport ko from 'knockout';\r\nimport Grid from '@bingads-webui-component-legacy/grid/index';\r\nimport tmpl from '@bingads-webui-campaign-legacy/crud-adgroup/template/keywordPlanner.pug';\r\nimport keywordPlannerAdgroupNameColumnTemplate from '@bingads-webui-campaign-legacy/crud-adgroup/template/keywordPlannerAdgroupNameColumnTemplate.pug';\r\nimport keywordPlannerAdgroupSeeMoreColumnTemplate from '@bingads-webui-campaign-legacy/crud-adgroup/template/keywordPlannerAdgroupSeeMoreColumnTemplate.pug';\r\nimport SourceProjection from '@bingads-webui-component-legacy/grid/projection/sink';\r\nimport PropertyTemplateProjection from '@bingads-webui-component-legacy/grid/projection/property-template';\r\nimport MemorySortProjection from '@bingads-webui-component-legacy/grid/projection/memory-sort';\r\nimport MemoryPageProjection from '@bingads-webui-component-legacy/grid/projection/memory-page';\r\nimport MapProjection from '@bingads-webui-component-legacy/grid/projection/map';\r\nimport PageProjection from '@bingads-webui-component-legacy/grid/projection/page';\r\nimport TableLayout from '@bingads-webui-component-legacy/grid/layout/table';\r\nimport tableTmplJade from '@bingads-webui-component-legacy/grid/layout/template/table.alt.pug';\r\nimport Pagination from '@bingads-webui-component-legacy/pagination/index';\r\nimport PaginationTmpl from '@bingads-webui-component-legacy/pagination/layout/simple.pug';\r\nimport Searchbox from '@bingads-webui-component-legacy/searchbox/view/searchbox';\r\nimport ViewModel from '@bingads-webui-campaign-legacy/crud-adgroup/viewmodel/keywordPlanner';\r\nimport odata from '@bingads-webui-component-legacy/http/channel/odata';\r\nimport KeywordPlannerAdvancedView from '@bingads-webui-campaign-legacy/crud-adgroup/view/keywordPlannerAdvanced';\r\nimport dialogDecorator from '@bingads-webui-component-legacy/dialog/dialogDecorator';\r\nimport * as keywordPlannerCreateOptions from '@bingads-webui-campaign-legacy/crud-adgroup/viewmodel/keywordPlannerCreateOptions';\r\nimport decimalFormatter from '@bingads-webui-component-legacy/humanize/decimal';\r\nimport withUiBlock from '@bingads-webui-component-legacy/uiblocker/index';\r\nimport PaginationConnector from '@bingads-webui-component-legacy/connectors/grid.pagination';\r\nimport { keywordPlannerSortFunc } from '@bingads-webui-campaign-legacy/crud-adgroup/keywordPlannerSort';\r\nimport * as locationFilters from '@bingads-webui-campaign-legacy/location-targets/util/filters';\r\nimport { keywordPlannerSupportedCountries, keywordPlannerSupportedLanguages, isSelectedLanguagesOnlyTire2ForKeywordPlanner, getKeywordPlannerSupportedLanguagesByLocationIds, getKeywordPlannerSupportedLocationIdsByLangauges } from '@bingads-webui-campaign-legacy/location-targets/util/constants';\r\nimport * as languageBundle from '@bingads-webui-campaign-legacy/location-targets/util/languageBundle';\r\nimport jsdata from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport learnMoreTemplate from '@bingads-webui-campaign-legacy/crud-adgroup/template/learn-more.pug';\r\nimport { panelDecorator } from '@bingads-webui-campaign-react/panel-decorator';\r\nimport constants from '@bingads-webui-static-legacy/instrumentation/constants';\r\nimport instrumentation from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport { getSearchRangeString } from '../share/getSearchRange';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nconst languagesAllNumber = 1000;\r\nconst popupIds = {\r\n GetKeywordIdeas: 'pop_BA_CampaignCreate_Keywords_GetKeywordIdeas',\r\n MonthlySearches: 'pop_BA_CampaignCreate_Keywords_MonthlySearches',\r\n AvgCPC: 'pop_BA_CampaignCreate_Keywords_AvgCPC',\r\n Competition: 'pop_BA_CampaignCreate_Keywords_Competition',\r\n GetAdGroupIdeas: 'pop_BA_CampaignCreate_Keywords_GetAdGroupIdeas',\r\n};\r\nconst keywordLikePrefix = 'Keyword Like: ';\r\n\r\nexport default class View extends Backbone.View {\r\n get events() {\r\n return {\r\n 'click .keyword-planner-search-button': this.onSearch.bind(this),\r\n 'click a.select-all-on-page': 'addKeywordsInPage',\r\n };\r\n }\r\n\r\n initialize(options = {}) {\r\n this.options = options;\r\n this.currentSourceReqId = '';\r\n this.popupIds = _.defaults({}, this.options.popupIds, popupIds);\r\n this.viewmodel = new ViewModel();\r\n this.pageSize = this.options.mode === 'keywordsOnly' ? 9 : 5;\r\n this.usePanel = options && options.usePanel;\r\n\r\n this.searchboxKeywords = new Searchbox({ defaultText: i18n.get('KeywordPlanner_SearchPlaceholderKeywords'), searchButtonAriaLabel: i18n.get('KeywordPlanner_SearchKeywordsButton') });\r\n this.searchboxKeywords.on('search', (value) => {\r\n this.onSearch({ keywords: value });\r\n });\r\n\r\n this.searchboxUrl = new Searchbox({ defaultText: i18n.get('KeywordPlanner_SearchPlaceholderUrl'), searchButtonAriaLabel: i18n.get('KeywordPlanner_SearchWebsiteURLButton') });\r\n this.searchboxUrl.on('search', (value) => {\r\n this.onSearch({ url: value });\r\n });\r\n\r\n if (this.usePanel) {\r\n this.AdvancedView = panelDecorator(KeywordPlannerAdvancedView, {\r\n i18n,\r\n panelReadyAriaLabel: i18n.getString('Keyword planner side panel opened'),\r\n });\r\n } else {\r\n this.AdvancedView = dialogDecorator.decorate(KeywordPlannerAdvancedView, { position: 'center', maxWidth: 2000, popupFront: '.navbar-fixed-top' });\r\n }\r\n }\r\n\r\n static get odataLimits() {\r\n return {\r\n url: 2000,\r\n location: 100,\r\n keywordLength: 100,\r\n };\r\n }\r\n\r\n static get keywordPlannerSupportedLanguagesIdValueMap() {\r\n return _.invert(keywordPlannerSupportedLanguages);\r\n }\r\n\r\n static isLanguageSupported(language) {\r\n const languagesToCheck = _.isArray(language) ? language : [language];\r\n\r\n if (_.contains(languagesToCheck, 'All') || _.contains(languagesToCheck, languagesAllNumber)) {\r\n return true;\r\n }\r\n\r\n return _.any(languagesToCheck, (lang) => {\r\n if (_.isNumber(lang)) {\r\n return _.contains(_.values(keywordPlannerSupportedLanguages), lang);\r\n }\r\n\r\n return _.contains(_.keys(keywordPlannerSupportedLanguages), lang);\r\n });\r\n }\r\n\r\n /* input: languages, an array of language selected by user\r\n only accept strings here\r\n it will remove the unsupported language, only set the supported ones to viewmodel (used in parameter)\r\n */\r\n setLanguages(languages) {\r\n this.originalLanguages = languages; // for AdInsight log\r\n if (_.contains(languages, 'All') || _.contains(languages, languagesAllNumber)) {\r\n this.viewmodel.languages(_.keys(keywordPlannerSupportedLanguages));\r\n } else {\r\n // convert numbers to string\r\n const languages2Use = _.chain(languages)\r\n .map((lang) => {\r\n if (_.isNumber(lang)) {\r\n return View.keywordPlannerSupportedLanguagesIdValueMap[lang]; // undefined if not supported\r\n } else {\r\n return lang;\r\n }\r\n }).compact().value();\r\n\r\n this.viewmodel.languages(_.intersection(languages2Use, _.keys(keywordPlannerSupportedLanguages)));\r\n }\r\n }\r\n\r\n getLanguagesSupportedByLocations(useTireTwoMarkets = false) {\r\n const locationSupportedLanguages =\r\n getKeywordPlannerSupportedLanguagesByLocationIds(this.viewmodel.locations(), useTireTwoMarkets);\r\n\r\n return _.intersection(this.viewmodel.languages(), locationSupportedLanguages);\r\n }\r\n\r\n onlyTire2LangaugesSelected(crossCheckWithTargets = false) {\r\n const languagesCanUse = crossCheckWithTargets ?\r\n this.getLanguagesSupportedByLocations(true) :\r\n this.viewmodel.languages();\r\n\r\n return !_.isEmpty(languagesCanUse) && isSelectedLanguagesOnlyTire2ForKeywordPlanner(languagesCanUse);\r\n }\r\n\r\n /* input: targets, an array of RadiusCriterion and LocationCriterion objects.\r\n output: an array of the LocationIds that are within the supported countries & will be used for targeting\r\n */\r\n setLocationTargeting(includedTargets) {\r\n this.viewmodel.locations([]);\r\n this.viewmodel.numLocationsTargeted(0);\r\n this.viewmodel.countryLocationInfo([]);\r\n\r\n if (_.isArray(includedTargets) && !_.isEmpty(includedTargets)) {\r\n let locationTargets = _.filter(includedTargets, (criterion) => {\r\n return criterion.Type === 'Location' || criterion.Type === 'Radius';\r\n });\r\n const supportedCountries = _.values(keywordPlannerSupportedCountries);\r\n const supportedCountryCodes = _.pluck(supportedCountries, 'Code');\r\n const supportedTire2CountryCodes = _.pluck(_.select(supportedCountries,\r\n (country) => {\r\n return !country.SupportKeywordSearch;\r\n }), 'Code');\r\n const countryLocationInfo = [];\r\n\r\n _.each(locationTargets, (target) => {\r\n if (target.Type === 'Location') {\r\n const countryCode = target.CountryCode;\r\n\r\n if (_.contains(supportedCountryCodes, countryCode)) {\r\n const locationId = target.LocationType === 'PostalCode' ?\r\n languageBundle.getPublisherCountryByCode(countryCode).LocationId :\r\n target.LocationId;\r\n\r\n if (!_.contains(this.viewmodel.locations(), locationId)) {\r\n this.viewmodel.locations.push(locationId);\r\n countryLocationInfo.push({\r\n locationId,\r\n countryLocationId: languageBundle.getPublisherCountryByCode(countryCode).LocationId,\r\n });\r\n }\r\n\r\n if (_.contains(supportedTire2CountryCodes, countryCode) &&\r\n !_.contains(this.viewmodel.tire2Locations(), locationId)) {\r\n this.viewmodel.tire2Locations.push(locationId);\r\n }\r\n }\r\n }\r\n });\r\n\r\n this.viewmodel.countryLocationInfo(countryLocationInfo);\r\n this.viewmodel.numLocationsTargeted(_.size(includedTargets));\r\n } else if (this.onlyTire2LangaugesSelected()) {\r\n const tire2SupportedCountryIds = getKeywordPlannerSupportedLocationIdsByLangauges(this.viewmodel.languages());\r\n\r\n this.viewmodel.tire2Locations(tire2SupportedCountryIds);\r\n this.viewmodel.locations(tire2SupportedCountryIds);\r\n this.viewmodel.numLocationsTargeted(_.size(tire2SupportedCountryIds));\r\n const countryLocationInfo = [];\r\n\r\n _.each(tire2SupportedCountryIds, (Id) => {\r\n countryLocationInfo.push({\r\n locationId: Id,\r\n countryLocationId: Id,\r\n });\r\n });\r\n this.viewmodel.countryLocationInfo(countryLocationInfo);\r\n } else {\r\n const supportedCountryIds = getKeywordPlannerSupportedLocationIdsByLangauges(this.viewmodel.languages());\r\n const countryLocationInfo = [];\r\n\r\n this.viewmodel.locations(supportedCountryIds);\r\n this.viewmodel.numLocationsTargeted(_.size(supportedCountryIds));\r\n _.each(supportedCountryIds, (Id) => {\r\n countryLocationInfo.push({\r\n locationId: Id,\r\n countryLocationId: Id,\r\n });\r\n });\r\n this.viewmodel.countryLocationInfo(countryLocationInfo);\r\n }\r\n\r\n this._updateStatusByLocations();\r\n\r\n return this.viewmodel.locations();\r\n }\r\n\r\n setLocationTargetingByCampaign() {\r\n const locationsObj = locationFilters.getSupportedLocationIds(jsdata.Intermediate.getAll('CampaignCriterion'), true);\r\n\r\n this.viewmodel.locations(locationsObj.items);\r\n this.viewmodel.numLocationsTargeted(locationsObj.totalCount);\r\n this.viewmodel.countryLocationInfo(locationsObj.countryLocationInfo);\r\n\r\n this._updateStatusByLocations();\r\n }\r\n\r\n _updateStatusByLocations() {\r\n // if no tire-1 langauge supported, then see tire 2\r\n if (this.viewmodel.allLocationsUnsupported()) {\r\n this.searchboxUrl.disable();\r\n this.searchboxKeywords.disable();\r\n } else if (this.onlyTire2LangaugesSelected(true)) {\r\n this.searchboxUrl.enable();\r\n this.searchboxKeywords.disable();\r\n } else {\r\n // if any of tire 1 language/location supported, show both\r\n this.searchboxUrl.enable();\r\n this.searchboxKeywords.enable();\r\n }\r\n }\r\n\r\n _updateSelectMultiIdeasText() {\r\n this.viewmodel.selectMultiIdeasText(i18n.get('KeywordPlanner_Select_All_In_Page', {\r\n count: Math.min(this.viewmodel.gridData().length - (this.paginationView.ko_model.page_number() * this.paginationView.ko_model.page_size()), this.paginationView.ko_model.page_size()),\r\n }));\r\n }\r\n\r\n updatePagination(resetPageNumber) {\r\n if (!_.isUndefined(resetPageNumber)) {\r\n this.paginationView.ko_model.page_number(0);\r\n }\r\n this.paginationView.ko_model.item_count(this.viewmodel.gridData().length);\r\n\r\n const pageCount = Math.ceil(this.viewmodel.gridData().length / this.paginationView.ko_model.page_size());\r\n\r\n if (pageCount > 0 && pageCount <= this.paginationView.ko_model.page_number()) {\r\n this.grid.projection.set('page.number', pageCount - 1);\r\n this.paginationView.ko_model.page_number(pageCount - 1);\r\n }\r\n\r\n this._updateSelectMultiIdeasText();\r\n }\r\n\r\n get uri() {\r\n return 'Customers(:advertisercustomer_id)/Accounts(:account_id)/Default.AdGroupSuggestions?$expand=Suggestions';\r\n }\r\n\r\n requestData(value) {\r\n let req = {\r\n 'criteria': [],\r\n };\r\n\r\n let hasOnlyKeyword = true;\r\n\r\n if (value.url) {\r\n hasOnlyKeyword = false;\r\n // KeywordPlanner has a url length limit\r\n // This url is solely for keyword suggestion purpose and\r\n // not saved or used by other feature\r\n let requestUrl = value.url.substr(0, View.odataLimits.url);\r\n\r\n req.criteria.push({\r\n '@odata.type': '#Model.Suggestions.UrlSuggestionCriterion',\r\n 'Url': requestUrl,\r\n });\r\n }\r\n\r\n if (value.keywords) {\r\n let keywordsArray = _.isArray(value.keywords) ? value.keywords : [value.keywords];\r\n\r\n _.each(keywordsArray, (keyword) => {\r\n req.criteria.push({\r\n '@odata.type': '#Model.Suggestions.SeedKeywordSuggestionCriterion',\r\n 'Keyword': keyword.substr(0, View.odataLimits.keywordLength),\r\n });\r\n });\r\n }\r\n\r\n let languagesToUse = getKeywordPlannerSupportedLanguagesByLocationIds(_.pluck(this.viewmodel.countryLocationInfo(), 'countryLocationId'), !hasOnlyKeyword);\r\n // add parameter when keyword planner support more than one language in multi-language pilot\r\n\r\n if (!_.isEmpty(this.viewmodel.languages())) {\r\n\r\n // keyword only mode only support one langue for now, will update this after they fix the bug\r\n if (hasOnlyKeyword && languagesToUse.length > 1) {\r\n languagesToUse = [_.first(languagesToUse)];\r\n } else if (!hasOnlyKeyword && languagesToUse.length > 3) {\r\n // url only support 3 for now, will udpate this after they fix the bug\r\n languagesToUse = _.first(languagesToUse, 3);\r\n }\r\n _.each(languagesToUse, (language) => {\r\n if (language) {\r\n req.criteria.push({\r\n '@odata.type': '#Model.Suggestions.LanguageSuggestionCriterion',\r\n 'Language': language,\r\n });\r\n }\r\n });\r\n }\r\n\r\n if (_.isArray(this.viewmodel.locations())) {\r\n // KeywordPlanner OData has a location count limit\r\n const languageSupportedLoations = _.isEmpty(languagesToUse) ?\r\n this.viewmodel.locations() :\r\n getKeywordPlannerSupportedLocationIdsByLangauges(languagesToUse, !hasOnlyKeyword);\r\n\r\n const locationIdsSupportedByLanguage = _.compact(_.map(this.viewmodel.countryLocationInfo(), (item) => {\r\n if (_.contains(languageSupportedLoations, item.countryLocationId)) {\r\n return item.locationId;\r\n }\r\n return 0;\r\n }));\r\n\r\n let requestLocations = _.first(\r\n locationIdsSupportedByLanguage,\r\n View.odataLimits.location);\r\n\r\n _.each(requestLocations, (locationId) => {\r\n if (locationId) {\r\n req.criteria.push({\r\n '@odata.type': '#Model.Suggestions.LocationSuggestionCriterion',\r\n 'LocationId': locationId,\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n return req;\r\n }\r\n\r\n getPropTempl() {\r\n if (this.options.mode === 'keywordsOnly') {\r\n return new PropertyTemplateProjection({\r\n 'property.template': {\r\n name(local) {\r\n if (local.model.$metadata.type === 'keyword') {\r\n return keywordPlannerAdgroupNameColumnTemplate({ value: local.model[local.property] });\r\n }\r\n return null;\r\n },\r\n },\r\n });\r\n } else {\r\n return new PropertyTemplateProjection({\r\n 'property.template': {\r\n name(local) {\r\n if (local.model.$metadata.type === 'adgroup') {\r\n return keywordPlannerAdgroupNameColumnTemplate({ value: local.model[local.property] });\r\n } if (local.model.$metadata.type === 'see-more') {\r\n // the template is added for fixing a11y bug.\r\n return keywordPlannerAdgroupSeeMoreColumnTemplate({ value: local.model[local.property] });\r\n } else {\r\n return local.model[local.property];\r\n }\r\n },\r\n },\r\n });\r\n }\r\n }\r\n\r\n getMap() {\r\n if (this.options.mode === 'keywordsOnly') {\r\n return new MapProjection({\r\n map(item) {\r\n return {\r\n name: item.Keyword,\r\n searchCount: getSearchRangeString(item.AggregateMetric.AverageSearchVolume, i18n.realI18n),\r\n averageCPC: decimalFormatter.fromFloatToString(item.AggregateMetric.AverageCPC, 2),\r\n competition: i18n.get(`CompetitionLevel_${item.AggregateMetric.CompetitionLevel}`),\r\n '$metadata': {\r\n 'attr': { 'class': 'table__row--keyword-planner table__row--keywords-only' },\r\n 'type': 'keyword',\r\n },\r\n };\r\n },\r\n });\r\n } else {\r\n return new MapProjection({\r\n map(item) {\r\n let ret = [];\r\n\r\n let adgroupItem = {\r\n name: item.DisplayName,\r\n searchCount: getSearchRangeString(item.AggregateMetric.AverageSearchVolume, i18n.realI18n),\r\n averageCPC: decimalFormatter.fromFloatToString(item.AggregateMetric.AverageCPC, 2),\r\n competition: i18n.get(`CompetitionLevel_${item.AggregateMetric.CompetitionLevel}`),\r\n '$metadata': {\r\n 'attr': { 'class': 'table__row--keyword-planner table__row--adgroup' },\r\n 'type': 'adgroup',\r\n },\r\n };\r\n\r\n ret.push(adgroupItem);\r\n\r\n let numRowsToShow = Math.min(2, item.Suggestions.length);\r\n\r\n for (let i = 0; i < numRowsToShow; i++) {\r\n let kwd = item.Suggestions[i];\r\n\r\n ret.push({\r\n name: kwd.Keyword,\r\n searchCount: getSearchRangeString(kwd.AggregateMetric.AverageSearchVolume, i18n.realI18n),\r\n averageCPC: decimalFormatter.fromFloatToString(kwd.AggregateMetric.AverageCPC, 2),\r\n competition: i18n.get(`CompetitionLevel_${kwd.AggregateMetric.CompetitionLevel}`),\r\n '$metadata': {\r\n 'attr': { 'class': 'table__row--keyword-planner table__row--indent' },\r\n 'type': 'keyword',\r\n '$parent': adgroupItem,\r\n },\r\n });\r\n }\r\n\r\n if (item.Suggestions.length > 2) {\r\n ret.push({\r\n name: i18n.get('KeywordSuggestion_AddMore_Keywords').replace('{0}', item.Suggestions.length - 2),\r\n searchCount: '',\r\n averageCPC: '',\r\n competition: '',\r\n '$metadata': {\r\n 'attr': {\r\n 'class': 'table__row--keyword-planner table__row--indent table__row--see-more',\r\n 'role': 'presentation',\r\n },\r\n 'type': 'see-more',\r\n 'adgroupName': item.Name,\r\n '$parent': adgroupItem,\r\n },\r\n });\r\n }\r\n\r\n return ret;\r\n },\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n this.$el.html(tmpl({\r\n i18n,\r\n title: this.options.isCampaignCreation ? i18n.get('KeywordPlanner_Campaign_Creation_Title') : i18n.get('KeywordPlanner_Title'),\r\n helpId: this.options.isCampaignCreation ? popupIds.GetAdGroupIdeas : popupIds.GetKeywordIdeas,\r\n showSelectAllOnPage: !this.options.isCampaignCreation,\r\n }));\r\n\r\n ko.applyBindings(this.viewmodel, this.el);\r\n\r\n this.searchboxKeywords.render();\r\n this.$('.searchbox.keywords').append(this.searchboxKeywords.$el);\r\n\r\n this.searchboxUrl.render();\r\n this.$('.searchbox.url').append(this.searchboxUrl.$el);\r\n\r\n this.paginationView = new Pagination({\r\n el: this.$('.pagination_host'),\r\n template: PaginationTmpl,\r\n page_size: this.pageSize,\r\n }).render();\r\n\r\n let sourceData = new SourceProjection({ seed: this.viewmodel.gridData() });\r\n let proptmpl = this.getPropTempl();\r\n\r\n let suggestionPropName = this.options.mode === 'keywordsOnly' ? 'Keyword' : 'Name';\r\n\r\n let sortableCols = {\r\n searchCount(input, direction) {\r\n return keywordPlannerSortFunc({ input, direction, prop: 'AverageSearchVolume' });\r\n },\r\n averageCPC(input, direction) {\r\n return keywordPlannerSortFunc({ input, direction, prop: 'AverageCPC' });\r\n },\r\n competition(input, direction) {\r\n return keywordPlannerSortFunc({ input, direction, prop: 'CompetitionLevel' });\r\n },\r\n name(input, direction) {\r\n return keywordPlannerSortFunc({ input, direction, prop: suggestionPropName });\r\n },\r\n };\r\n\r\n let memorySort = new MemorySortProjection({\r\n 'column.sortable': sortableCols,\r\n });\r\n\r\n let memoryPage = new MemoryPageProjection({});\r\n let map = this.getMap();\r\n\r\n let page = new PageProjection({\r\n 'page.size': this.pageSize,\r\n 'page.number': 0,\r\n });\r\n\r\n let src = sourceData.pipe(memorySort).pipe(memoryPage).pipe(map).pipe(page).pipe(proptmpl);\r\n\r\n this.grid = new Grid({\r\n el: this.$('.grid'),\r\n projection: src,\r\n layout: TableLayout.partial({\r\n '$metadata': {\r\n class: ['table--no-border'],\r\n },\r\n template: tableTmplJade,\r\n columns: {\r\n 'name': {\r\n '$metadata': {\r\n 'attr.head': { 'width': '34%', 'aria-label': i18n.getString('KeywordPlanner_GridColumn_Suggestions')},\r\n },\r\n '$text': i18n.getString('KeywordPlanner_GridColumn_Suggestions'),\r\n sortable: true,\r\n },\r\n 'searchCount': {\r\n '$metadata': {\r\n 'attr.body': { 'class': ['text-right'] },\r\n 'attr.head': { 'class': ['text-right'], 'width': '25%', 'aria-label': i18n.getString('KeywordPlanner_GridColumn_MonthlySearches') },\r\n },\r\n '$text': i18n.getString('KeywordPlanner_GridColumn_MonthlySearches'),\r\n sortable: true,\r\n popupTopicId: this.popupIds.MonthlySearches,\r\n },\r\n 'averageCPC': {\r\n '$metadata': {\r\n 'attr.body': { 'class': ['text-right'] },\r\n 'attr.head': { 'class': ['text-right'], 'aria-label': i18n.getString('KeywordPlanner_GridColumn_AverageCPC') },\r\n },\r\n '$text': i18n.getString('KeywordPlanner_GridColumn_AverageCPC'),\r\n sortable: true,\r\n popupTopicId: this.popupIds.AvgCPC,\r\n },\r\n 'competition': {\r\n '$metadata': {\r\n 'attr.body': { 'class': ['text-right'] },\r\n 'attr.head': { 'class': ['text-right'], 'aria-label': i18n.getString('KeywordPlanner_GridColumn_Competition')/*, 'width': '25%'*/ },\r\n },\r\n '$text': i18n.getString('KeywordPlanner_GridColumn_Competition'),\r\n sortable: true,\r\n popupTopicId: this.popupIds.Competition,\r\n },\r\n },\r\n }),\r\n });\r\n\r\n this.grid.on('layout:click:cell', this.gridClicked.bind(this));\r\n\r\n this.grid.render({ fetch: true });\r\n\r\n new PaginationConnector(this.grid, this.paginationView).connect();\r\n\r\n this.paginationView.on('click:next click:previous', this._updateSelectMultiIdeasText.bind(this));\r\n\r\n return this;\r\n }\r\n\r\n emptySearchTeams() {\r\n this.searchboxKeywords.ko_model.value('');\r\n this.searchboxUrl.ko_model.value('');\r\n }\r\n\r\n onSearch(value) {\r\n if (this.viewmodel.allLocationsUnsupported()) {\r\n return;\r\n }\r\n\r\n if (value && value.keywords) {\r\n this.searchboxKeywords.ko_model.value(value.keywords);\r\n }\r\n\r\n if (value && value.url) {\r\n this.searchboxUrl.ko_model.value(value.url);\r\n }\r\n\r\n const keywords = this.searchboxKeywords.ko_model.value();\r\n const url = this.searchboxUrl.ko_model.value();\r\n\r\n if (!keywords && !url) {\r\n return;\r\n }\r\n\r\n const requestData = this.requestData({ keywords, url });\r\n\r\n if (_.isEmpty(requestData.criteria)) {\r\n return;\r\n }\r\n\r\n odata.post(this.uri, {\r\n path: 'AdInsight/V2/',\r\n data: requestData,\r\n customHeader: {\r\n name: 'scenario',\r\n value: this.options.scenario,\r\n },\r\n }, (dummy, response, textStatus, xhr) => {\r\n this.currentSourceReqId = (xhr && xhr.getResponseHeader('x-ms-requestid')) || '';\r\n })\r\n .then((res) => {\r\n if (this.options.mode === 'keywordsOnly') {\r\n let data = _.pluck(res.value, 'Suggestions');\r\n\r\n data = _.union.apply(this, data);\r\n this.viewmodel.gridData(data);\r\n this.showNoSuggestionsMessage(data);\r\n } else {\r\n // update ad group name as required\r\n _.each(res.value, (item) => {\r\n item.AdgroupName = item.Name.replace(keywordLikePrefix, '');\r\n item.DisplayName = `${item.AdgroupName} ${i18n.get('KeywordPlanner_AdGroupSuffix')}`;\r\n });\r\n this.viewmodel.gridData(res.value);\r\n this.showNoSuggestionsMessage(res.value);\r\n }\r\n\r\n this.grid.projection.set({\r\n 'orderby': [{ 'searchCount': -1 }],\r\n 'page.number': 0,\r\n });\r\n\r\n this.updatePagination(true);\r\n this.refreshGridSource(this.viewmodel.gridData());\r\n\r\n // Language log for AdInsight\r\n instrumentation.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, 'keywordplanner/selectedlanaguage', {\r\n requestId: this.currentSourceReqId,\r\n userSelectedLanguages: this.originalLanguages,\r\n });\r\n })\r\n .finally(withUiBlock(this.$el.parent()));\r\n }\r\n\r\n showNoSuggestionsMessage(suggestions) {\r\n if (suggestions.length === 0) {\r\n this.viewmodel.noSuggestionNote(i18n.get('KeywordPlanner_NoSuggestionsReturned_Note_Html', {\r\n learnMoreLink: learnMoreTemplate({\r\n i18n,\r\n helpId: '56794',\r\n }),\r\n }));\r\n } else {\r\n this.viewmodel.noSuggestionNote(false);\r\n }\r\n }\r\n\r\n refreshGridSource(source) {\r\n this.grid.projection.set({\r\n 'seed': source,\r\n });\r\n }\r\n\r\n onClose() {\r\n if (this.editor) {\r\n this.editor.remove();\r\n delete this.editor;\r\n }\r\n }\r\n\r\n logInteraction(message) {\r\n if (this.options.activityLogger) {\r\n this.options.activityLogger.signal(message, 'keyword planner');\r\n }\r\n }\r\n\r\n addAddGroup(args) {\r\n this.trigger('addAdgroup', args);\r\n this.logInteraction('add ad group');\r\n }\r\n\r\n handleAddGroup(args) {\r\n this.editor.remove();\r\n this.addAddGroup(args);\r\n this.removeAdgroupFromSource(args.data.Name);\r\n }\r\n\r\n gridClicked(e, data) {\r\n let name = data.model.name.valueOf();\r\n\r\n if (_.isUndefined(data.model.$metadata)) {\r\n return;\r\n }\r\n\r\n if (data.model.$metadata.type === 'see-more' && data.column.property === 'name') {\r\n let adgroupName = data.model.$metadata.adgroupName;\r\n let adgroups = this.viewmodel.gridData();\r\n let adgroup = _.find(adgroups, (ag) => {\r\n return ag.Name === adgroupName;\r\n });\r\n\r\n if (this.usePanel) {\r\n this.editor = new this.AdvancedView({\r\n SuggestedAdGroup: adgroup,\r\n AdGroups: this.viewmodel.adgroups,\r\n sourceReqId: this.currentSourceReqId,\r\n title: `${i18n.get('KeywordPlanner_AdvancedPopup_Title')} ${adgroup.AdgroupName}`,\r\n eventsToActions: [{\r\n event: 'cancel',\r\n action: this.onClose.bind(this),\r\n }, {\r\n event: 'addAdgroup',\r\n action: (args) => this.handleAddGroup(args),\r\n }],\r\n onClose: this.onClose.bind(this),\r\n }).render();\r\n } else {\r\n this.editor = new this.AdvancedView({\r\n SuggestedAdGroup: adgroup,\r\n AdGroups: this.viewmodel.adgroups,\r\n sourceReqId: this.currentSourceReqId,\r\n title: `${i18n.get('KeywordPlanner_AdvancedPopup_Title')} ${adgroup.AdgroupName}`,\r\n }).render();\r\n this.editor.on('addAdgroup', (args) => this.handleAddGroup(args));\r\n this.editor.on('cancel', this.onClose.bind(this));\r\n }\r\n } else if (data.model.$metadata.type === 'adgroup') {\r\n let adgroup = _.find(this.viewmodel.gridData(), (ag) => {\r\n return ag.DisplayName === name;\r\n });\r\n\r\n this.addAddGroup({\r\n sourceReqId: this.currentSourceReqId, // for AdInsight log purpose\r\n data: _.extend({}, adgroup, { Name: adgroup.AdgroupName }),\r\n mode: keywordPlannerCreateOptions.AddToNewAdGroup,\r\n });\r\n this.viewmodel.recentUserActionPrompt(i18n.get('KeywordPlanner_LiveRegion_Text', { name }));\r\n this.removeAdgroupFromSource(adgroup.Name);\r\n } else if (this.options.mode === 'keywordsOnly' && data.model.$metadata.type === 'keyword') {\r\n this.trigger(\r\n 'addKeyword',\r\n name,\r\n this.currentSourceReqId, // for AdInsight log purpose\r\n );\r\n this.logInteraction('add a keyword');\r\n\r\n this.viewmodel.gridData(_.filter(this.viewmodel.gridData(), (kw) => {\r\n return kw.Keyword !== name;\r\n }));\r\n this.viewmodel.recentUserActionPrompt(i18n.get('KeywordPlanner_LiveRegion_Text', { name }));\r\n this.updatePagination();\r\n this.refreshGridSource(this.viewmodel.gridData());\r\n }\r\n }\r\n\r\n addKeywordsInPage() {\r\n const data = this.viewmodel.gridData();\r\n const start = this.paginationView.ko_model.page_number() * this.paginationView.ko_model.page_size();\r\n const end = start + this.paginationView.ko_model.page_size();\r\n const newData = data.slice(0, start).concat(data.slice(end));\r\n\r\n _.each(data.slice(start, end), (kw) => this.trigger('addKeyword', kw.Keyword, this.currentSourceReqId));\r\n\r\n this.logInteraction('add keywords in page');\r\n\r\n this.viewmodel.gridData(newData);\r\n this.updatePagination();\r\n this.refreshGridSource(this.viewmodel.gridData());\r\n }\r\n\r\n removeAdgroupFromSource(adgroupName) {\r\n this.viewmodel.gridData(_.filter(this.viewmodel.gridData(), (ag) => {\r\n return ag.Name !== adgroupName;\r\n }));\r\n this.updatePagination();\r\n this.refreshGridSource(this.viewmodel.gridData());\r\n }\r\n\r\n updateAdgroupsList(adgroupArray) {\r\n this.viewmodel.adgroups = adgroupArray;\r\n }\r\n}\r\n","/*eslint new-cap:0 */\r\n\r\nimport _ from 'underscore';\r\nimport 'backbone';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport AutoTargetView from '@bingads-webui-campaign-legacy/auto-targets/view/create/index';\r\nimport { adGroupTypeEnum } from '@bingads-webui-campaign-legacy/adgroup-create-advanced/util/adGroupTypeEnum';\r\n\r\nconst isDSAMixedModeCampaignEnabled = _.result(config.get('Permissions'), 'IsDSAMixedModeCampaignEnabled', false);\r\n\r\nexport function decorate(view) {\r\n return view.extend({\r\n initialize(options = {}) {\r\n _.bind(view.prototype.initialize, this, options)();\r\n this.subView = new AutoTargetView(_.extend(options, {\r\n showHeader: !options.hideHeader,\r\n defaultBid: options.defaultBid,\r\n setting: { // TODO [ericwa]: will add other campaign setting like target source in setting\r\n DomainName: options.context.get('Campaign').DomainName,\r\n Language: options.context.get('Campaign').DomainLanguage,\r\n Source: options.context.get('Campaign').TargetingSource,\r\n },\r\n isForVNext: options.isForVNext,\r\n }));\r\n this.changes = [];\r\n\r\n if (isDSAMixedModeCampaignEnabled) {\r\n this.ko_model.AdGroupType(adGroupTypeEnum.SearchDynamic);\r\n }\r\n\r\n this.on('updateAutoTargetEditorSetting', (setting) => {\r\n this.setAutoTargetsViewSetting(setting);\r\n });\r\n },\r\n\r\n setAutoTargetsViewSetting (setting) {\r\n this.subView.trigger('update:setting', setting, true);\r\n },\r\n\r\n getChanges() {\r\n if (this.hasChanges || this.subView.hasChanges()) {\r\n const serializedAdGroup = this.ko_model.toObject();\r\n const adGroupId = _.isNaN(serializedAdGroup.Id) || serializedAdGroup.Id < 1 ? null : serializedAdGroup.Id;\r\n\r\n const autoTargets = this.subView.getChanges();\r\n\r\n _.each(autoTargets, (target) => {\r\n if (serializedAdGroup.Id > 0) {\r\n target.AdGroup = {\r\n Id: adGroupId,\r\n };\r\n } else {\r\n target.AdGroupName = serializedAdGroup.Name;\r\n target.CampaignName = serializedAdGroup.CampaignName;\r\n }\r\n });\r\n\r\n serializedAdGroup.DsaTargets = autoTargets;\r\n serializedAdGroup['Client Id'] = `${this.ko_model.options.index}`;\r\n\r\n if (_.isNull(adGroupId)) {\r\n const keys = ['Client Id', 'Name', 'Campaign', 'Language', 'DsaTargets', 'PricingModel', 'Medium'];\r\n\r\n if (isDSAMixedModeCampaignEnabled) {\r\n keys.push('AdGroupType');\r\n }\r\n\r\n return _.pick(serializedAdGroup, keys);\r\n } else {\r\n return _.pick(serializedAdGroup, 'Client Id', 'Id', 'Name', 'Campaign', 'DsaTargets');\r\n }\r\n }\r\n return null;\r\n },\r\n\r\n getContextObject() {\r\n const adGroupsStored = this.options && this.options.context && this.options.context.get('AdGroups');\r\n const currentId = this.ko_model.Id();\r\n\r\n let object = {\r\n Id: currentId,//eslint-disable-line\r\n Name: this.ko_model.Name(),//eslint-disable-line\r\n };\r\n\r\n if (adGroupsStored) {\r\n object.Bid = _.chain(adGroupsStored).where({Id: currentId}).first().result('Bid').value();\r\n }\r\n\r\n if (isDSAMixedModeCampaignEnabled) {\r\n object.AdGroupType = adGroupTypeEnum.SearchDynamic;\r\n }\r\n\r\n return object;\r\n },\r\n\r\n updateViewModels(data) {\r\n _.bind(view.prototype.updateViewModels, this, data)();\r\n this.subView.updateViewModels(data.DsaTargets);\r\n },\r\n\r\n updateViewModelsOnError(response) {\r\n _.bind(view.prototype.updateViewModelsOnError, this, response, 'DsaTargets')();\r\n\r\n if (_.isEmpty(response.entity.errors)) {\r\n this.subView.updateViewModels(response.entity.DsaTargets);\r\n }\r\n },\r\n\r\n updateOnVisible() {\r\n const adGroupBid = _.result(this.getContextObject(), 'Bid', this.options.defaultBid);\r\n\r\n this.subView.trigger('update:bid', adGroupBid);\r\n this.subView.trigger('update:setting', {\r\n DomainName: this.options.context.get('Campaign').DomainName,\r\n Language: this.options.context.get('Campaign').DomainLanguage,\r\n Source: this.options.context.get('Campaign').TargetingSource,\r\n }, true);\r\n },\r\n });\r\n}\r\n","import ko from 'knockout';\r\n\r\nexport default class ViewModel {\r\n constructor() {\r\n this.isDynamicAdGroupSectionExpanded = ko.observable(true);\r\n this.isStandardAdGroupSectionExpanded = ko.observable(true);\r\n this.hasDSASettings = ko.observable(false);\r\n this.hasDisclaimerSettings = ko.observable(false);\r\n this.isDomesticSimplifiedChineseEnabled = ko.observable(false);\r\n this.errors = ko.observable([]);\r\n this.allowDisclaimer = ko.observable(false);\r\n }\r\n}\r\n","import Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport tmpl from '@bingads-webui-campaign-legacy/crud-adgroup/template/mixed-mode-create.pug';\r\nimport AdGroupView from '@bingads-webui-campaign-legacy/crud-adgroup/view/create';\r\nimport AdGroupUpdateView from '@bingads-webui-campaign-legacy/crud-adgroup/view/update';\r\nimport jsdata from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport * as i18nErrors from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\nimport * as keywordAdGroupCreateDecorator from '@bingads-webui-campaign-legacy/crud-adgroup/view/create-keyword-adgroup-decorator';\r\nimport * as keywordAdGroupUpdateDecorator from '@bingads-webui-campaign-legacy/crud-adgroup/view/update-keyword-adgroup-decorator';\r\nimport * as autoTargetAdGroupCreateDecorator from '@bingads-webui-campaign-legacy/crud-adgroup/view/create-autotarget-adgroup-decorator';\r\nimport * as autoTargetAdGroupUpdateDecorator from '@bingads-webui-campaign-legacy/crud-adgroup/view/update-autotarget-adgroup-decorator';\r\nimport DSASettingsView from '@bingads-webui-campaign-legacy/dsa-settings/view/dsa-settings';\r\nimport ViewModel from '@bingads-webui-campaign-legacy/crud-adgroup/viewmodel/mixed-mode-create';\r\nimport * as scrollUtil from '@bingads-webui-component-legacy/extension/scrollTo';\r\nimport withUiBlock from '@bingads-webui-component-legacy/uiblocker/index';\r\nimport { adGroupTypeEnum } from '@bingads-webui-campaign-legacy/adgroup-create-advanced/util/adGroupTypeEnum';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nexport default class MixedModeAdGroupCreate extends Backbone.View {\r\n initialize(options) {\r\n this.options = options;\r\n if (this.options && this.options.perfMarker) {\r\n this.showAdGroupKeywordMarker = this.options.perfMarker.createChild('Show_AdGroup_Keyword');\r\n this.showAdGroupKeywordMarker.willInit();\r\n }\r\n\r\n this.viewModel = new ViewModel();\r\n this.initializeAutoTargetAdGroupCreateView();\r\n this.initializeKeywordAdGroupCreateView();\r\n this.initializeDSASettings();\r\n this.modified = false;\r\n this.mounted = false;\r\n }\r\n\r\n get events() {\r\n return {\r\n 'show.bs.collapse': 'onToggleSection',\r\n 'hide.bs.collapse': 'onToggleSection',\r\n };\r\n }\r\n\r\n checkAdGroupNameDuplicates(adGroup) {\r\n const adGroupName = adGroup.ko_model.Name(); // eslint-disable-line\r\n const adGroupType = adGroup.ko_model.AdGroupType(); // eslint-disable-line\r\n const dynamicAdGroupSectionViewModel = this.autoTargetAdGroupCreateView.ko_model;\r\n const standardAdGroupSectionViewModel = this.keywordAdGroupCreateView.ko_model;\r\n const dynamicAdGroups = dynamicAdGroupSectionViewModel.adGroups();\r\n const standardAdGroups = standardAdGroupSectionViewModel.adGroups();\r\n\r\n let isDuplicate = false;\r\n\r\n _.chain(dynamicAdGroups.concat(standardAdGroups))\r\n .filter((adg) => adg !== adGroup)\r\n .each((adg) => {\r\n const name = adg.ko_model.Name().toLowerCase(); // eslint-disable-line\r\n\r\n if (_.isString(name) && name === adGroupName.toLowerCase() && adGroupName !== '') {\r\n isDuplicate = true;\r\n }\r\n });\r\n\r\n return isDuplicate;\r\n }\r\n\r\n checkAllAdGroupNameDuplicate() {\r\n const dynamicAdGroupSectionViewModel = this.autoTargetAdGroupCreateView.ko_model;\r\n const standardAdGroupSectionViewModel = this.keywordAdGroupCreateView.ko_model;\r\n const dynamicAdGroups = dynamicAdGroupSectionViewModel.adGroups();\r\n const standardAdGroups = standardAdGroupSectionViewModel.adGroups();\r\n const $dynamicAdGroupSection = this.$('#dynamicAdGroupSection');\r\n const $standardAdGroupSection = this.$('#standardAdGroupSection');\r\n\r\n _.each(dynamicAdGroups.concat(standardAdGroups), (adg) => {\r\n const isDuplicate = this.checkAdGroupNameDuplicates(adg);\r\n\r\n adg.ko_model.isNameDuplicate(isDuplicate);\r\n\r\n if (isDuplicate) {\r\n if (adg.ko_model.AdGroupType() === adGroupTypeEnum.SearchStandard) { // eslint-disable-line\r\n $standardAdGroupSection.collapse('show');\r\n this.removeStandardAdGroupSectionAriaExpandedAttribute();\r\n } else {\r\n $dynamicAdGroupSection.collapse('show');\r\n }\r\n }\r\n });\r\n }\r\n\r\n hasDSASettingsInCampaignSettings() {\r\n const campaign = this.options.context.get('Campaign');\r\n const hasDSASettings = campaign && campaign.DomainName != null;\r\n\r\n return hasDSASettings;\r\n }\r\n\r\n hasDisclaimerSettings() {\r\n const disclaimerSettings = this.options.context.get('Draft.Disclaimer');\r\n\r\n return !_.isEmpty(disclaimerSettings);\r\n }\r\n\r\n willShow() {\r\n this.autoTargetAdGroupCreateView.willShow(!this.hasDSASettingsInCampaignSettings(), this.mounted);\r\n this.keywordAdGroupCreateView.willShow(this.hasDSASettingsInCampaignSettings(), this.mounted);\r\n this.adjustSectionOrder();\r\n this.toggleDSASettings();\r\n this.mounted = true;\r\n\r\n if (this.showAdGroupKeywordMarker) {\r\n this.showAdGroupKeywordMarker.done();\r\n }\r\n }\r\n\r\n saveTargetingSource(id) {\r\n const retPromise = id && this.dsaSettingsView && this.dsaSettingsView.targetingSource ?\r\n this.dsaSettingsView.targetingSource.save(id) : Promise.resolve();\r\n\r\n return retPromise.then((result) => {\r\n if (_.result(pageContext.CurrentCampaign, 'Id') === id) {\r\n if (_.size(pageContext.CurrentCampaign.CampaignSettings) > 0 && this.targetingSource) {\r\n pageContext.CurrentCampaign.CampaignSettings[0].Source = this.targetingSource.koModel.source();\r\n }\r\n }\r\n return result;\r\n });\r\n }\r\n\r\n scrollToDSAError() {\r\n scrollUtil.scrollAndCenter(this.$('.dsa-settings-container .error'));\r\n }\r\n\r\n saveDSASettings() {\r\n if (!this.dsaSettingsView.validate()) {\r\n return Promise.resolve(false);\r\n }\r\n\r\n if (!this.modified) {\r\n return Promise.resolve(true);\r\n }\r\n\r\n const { context } = this.options;\r\n const campaignContext = context.get('Campaign');\r\n const campaignParams = context.get('CampaignParams');\r\n const params = _.extend({}, campaignParams, this.dsaSettingsView.getValues());\r\n\r\n return jsdata.Campaign\r\n .create(params, { adapter: 'bulk', cacheResponse: false })\r\n .then(() => {\r\n const newCampaignContext = _.extend({}, campaignContext, this.dsaSettingsView.getValues(true));\r\n\r\n context.set(_.extend({}, context, {\r\n Campaign: newCampaignContext,\r\n CampaignParams: params,\r\n }));\r\n this.dsaSettingsView.setValues({\r\n disabled: true,\r\n });\r\n this.saveTargetingSource(context.get('Campaign').Id);\r\n this.modified = false;\r\n return true;\r\n })\r\n .catch((response) => {\r\n const hasErrors = response && !_.isUndefined(response.errors);\r\n\r\n if (hasErrors) {\r\n const campaignErrors = _.filter(response.errors, (error) => {\r\n return error.Type === 'Campaign Error';\r\n });\r\n\r\n if (campaignErrors.length) {\r\n const errors = i18nErrors.getBulkApiErrors(campaignErrors);\r\n\r\n this.dsaSettingsView.handleApiErrors(errors);\r\n this.scrollToDSAError();\r\n }\r\n\r\n const { updateViews } = this.autoTargetAdGroupCreateView;\r\n\r\n // no ad group will be created if dsa settings is not set correctly\r\n // we need to mark all editors with \"hasChange = true\" so that when user clicks \"save & next\"\r\n // UI will submit all unsaved adgroups\r\n updateViews.forEach((view) => {\r\n view.hasChanges = true;\r\n });\r\n }\r\n return false;\r\n })\r\n .finally(withUiBlock());\r\n }\r\n\r\n initializeAutoTargetAdGroupCreateView() {\r\n const AutoTargetAdGroupCreateView = autoTargetAdGroupCreateDecorator.decorate(AdGroupView);\r\n const AutoTargetAdGroupUpdateView = autoTargetAdGroupUpdateDecorator.decorate(AdGroupUpdateView);\r\n\r\n this.autoTargetAdGroupCreateView = new AutoTargetAdGroupCreateView(_.extend({}, this.options, {\r\n UpdateView: AutoTargetAdGroupUpdateView,\r\n submitDSASettings: () => {\r\n if (this.viewModel.hasDSASettings()) {\r\n return this.saveDSASettings();\r\n }\r\n return Promise.resolve(true);\r\n },\r\n validateDSASettings: () => {\r\n if (this.viewModel.hasDSASettings()) {\r\n if (!this.dsaSettingsView.validate()) {\r\n this.scrollToDSAError();\r\n return false;\r\n }\r\n return true;\r\n }\r\n return true;\r\n },\r\n isOptional: true,\r\n checkAdGroupNameDuplicates: this.checkAllAdGroupNameDuplicate.bind(this),\r\n isAutoTargetCampaign: true,\r\n }));\r\n\r\n this.autoTargetAdGroupCreateView.on('createAdGroupEditorView', (view) => {\r\n const hasDSASettings = this.hasDSASettingsInCampaignSettings();\r\n\r\n const dsaSettings = hasDSASettings ? {\r\n DomainName: this.options.context.get('Campaign').DomainName,\r\n Language: this.options.context.get('Campaign').DomainLanguage,\r\n Source: this.options.context.get('Campaign').TargetingSource,\r\n } : this.dsaSettingsView.getValues();\r\n\r\n view.setAutoTargetsViewSetting({\r\n Language: dsaSettings.LanguageCode,\r\n DomainName: dsaSettings.DomainName,\r\n Source: dsaSettings.Source,\r\n });\r\n });\r\n }\r\n\r\n initializeKeywordAdGroupCreateView() {\r\n const KeywordAdGroupCreateView = keywordAdGroupCreateDecorator.decorate(AdGroupView);\r\n const KeywordAdGroupUpdateView = keywordAdGroupUpdateDecorator.decorate(AdGroupUpdateView);\r\n\r\n this.keywordAdGroupCreateView = new KeywordAdGroupCreateView(_.extend({}, this.options, {\r\n UpdateView: KeywordAdGroupUpdateView,\r\n isOptional: true,\r\n checkAdGroupNameDuplicates: this.checkAllAdGroupNameDuplicate.bind(this),\r\n isMixedModeCampaignCreation: true,\r\n }));\r\n }\r\n\r\n updateSubViewDSASettings() {\r\n const dsaSettings = this.dsaSettingsView.getValues();\r\n\r\n if (this.autoTargetAdGroupCreateView) {\r\n this.autoTargetAdGroupCreateView.trigger('updateAutoTargetEditorSetting', {\r\n Language: dsaSettings.LanguageCode,\r\n DomainName: dsaSettings.DomainName,\r\n Source: dsaSettings.Source,\r\n });\r\n }\r\n }\r\n\r\n initializeDSASettings() {\r\n this.dsaSettingsView = new DSASettingsView();\r\n\r\n this.dsaSettingsView.on('change', () => {\r\n this.updateSubViewDSASettings();\r\n this.modified = true;\r\n });\r\n }\r\n\r\n toggleDSASettings() {\r\n this.viewModel.hasDSASettings(!this.hasDSASettingsInCampaignSettings());\r\n }\r\n\r\n adjustSectionOrder() {\r\n if (!this.mounted) {\r\n const hasDSASettings = this.hasDSASettingsInCampaignSettings();\r\n const $sectionRoot = this.$('.mixed-mode-adgroup-create');\r\n const $dynamicAdGroupSection = this.$('#dynamicAdGroupSection');\r\n const $standardAdGroupSection = this.$('#standardAdGroupSection');\r\n const $standardAdGroupSectionContainer = this.$('.standard-adgroup-creation-section-container');\r\n const $dynamicAdGroupSectionContainer = this.$('.dynamic-adgroup-creation-section-container');\r\n\r\n if (hasDSASettings) {\r\n // put standard ad group section to the end\r\n $sectionRoot.append($standardAdGroupSectionContainer);\r\n $dynamicAdGroupSection.collapse('show');\r\n $standardAdGroupSection.collapse('hide');\r\n this.removeStandardAdGroupSectionAriaExpandedAttribute();\r\n this.viewModel.isDynamicAdGroupSectionExpanded(true);\r\n this.viewModel.isStandardAdGroupSectionExpanded(false);\r\n } else {\r\n // put dynamic ad group section to the end\r\n $sectionRoot.append($dynamicAdGroupSectionContainer);\r\n $standardAdGroupSection.collapse('show');\r\n this.removeStandardAdGroupSectionAriaExpandedAttribute();\r\n $dynamicAdGroupSection.collapse('hide');\r\n this.viewModel.isStandardAdGroupSectionExpanded(true);\r\n this.viewModel.isDynamicAdGroupSectionExpanded(false);\r\n }\r\n }\r\n\r\n const hasDisclaimerSettings = this.hasDisclaimerSettings();\r\n\r\n this.viewModel.hasDisclaimerSettings(hasDisclaimerSettings);\r\n this.viewModel.isDomesticSimplifiedChineseEnabled(pageContext.Permissions && pageContext.Permissions.IsDomesticSimplifiedChineseEnabled);\r\n this.viewModel.allowDisclaimer(true);\r\n }\r\n\r\n onToggleSection(evt) {\r\n const { target } = evt;\r\n const { id } = target;\r\n\r\n if (id === 'dynamicAdGroupSection') {\r\n this.viewModel.isDynamicAdGroupSectionExpanded(!this.viewModel.isDynamicAdGroupSectionExpanded());\r\n } else if (id === 'standardAdGroupSection') {\r\n this.viewModel.isStandardAdGroupSectionExpanded(!this.viewModel.isStandardAdGroupSectionExpanded());\r\n }\r\n\r\n this.removeStandardAdGroupSectionAriaExpandedAttribute();\r\n }\r\n\r\n render() {\r\n this.$el.empty().append(tmpl({\r\n i18n,\r\n }));\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n this.$('#dynamicAdGroupSection .dynamic-ad-group-create-view-container').empty().append(this.autoTargetAdGroupCreateView.render().$el);\r\n this.$('#standardAdGroupSection .standard-ad-group-create-view-container').empty().append(this.keywordAdGroupCreateView.render().$el);\r\n this.$('#dynamicAdGroupSection .dsa-settings-container').empty().append(this.dsaSettingsView.render().$el);\r\n return this;\r\n }\r\n\r\n remove() {\r\n if (this.dsaSettingsView) {\r\n this.dsaSettingsView.remove();\r\n }\r\n\r\n if (this.autoTargetAdGroupCreateView) {\r\n this.autoTargetAdGroupCreateView.remove();\r\n }\r\n\r\n if (this.keywordAdGroupCreateView) {\r\n this.keywordAdGroupCreateView.remove();\r\n }\r\n\r\n super.remove();\r\n }\r\n\r\n updateContext() {\r\n const standardAdGroups = this.keywordAdGroupCreateView.ko_model.adGroups();\r\n const dynamicAdGroups = this.autoTargetAdGroupCreateView.ko_model.adGroups();\r\n\r\n const contextAdGroups = _.map(standardAdGroups.concat(dynamicAdGroups), (adGroup) => {\r\n return adGroup.getContextObject();\r\n });\r\n\r\n this.options.context.set({ 'AdGroups': contextAdGroups });\r\n }\r\n\r\n validateIfThereIsAtLeast1AdGroup() {\r\n this.viewModel.errors([]);\r\n const standardAdGroups = this.keywordAdGroupCreateView.ko_model.adGroups();\r\n const dynamicAdGroups = this.autoTargetAdGroupCreateView.ko_model.adGroups();\r\n\r\n if (standardAdGroups.length === 0 && dynamicAdGroups.length === 0) {\r\n this.viewModel.errors([i18n.getString('MixedMode_AdGroupCreation_Warning_At_Least_1_AdGroup')]);\r\n scrollUtil.scrollAndCenter(this.$('ul.alert.alert-danger'));\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n removeStandardAdGroupSectionAriaExpandedAttribute() {\r\n // We are using Bootstrap v3 collapse to show/hide the sections, and it is adding the incorrect aria-expanded attribute to non interactive elements.\r\n // So we need to manually remove it.\r\n setTimeout(() => {\r\n this.$('#standardAdGroupSection').removeAttr('aria-expanded');\r\n });\r\n }\r\n\r\n shouldNext() {\r\n if (this.validateIfThereIsAtLeast1AdGroup()) {\r\n return Promise.all([\r\n this.keywordAdGroupCreateView.save(true),\r\n this.autoTargetAdGroupCreateView.save(true),\r\n ])\r\n .then(([keywordAdGroupCreationResult, dynamicAdGroupCreationResult]) => {\r\n const $dynamicAdGroupSection = this.$('#dynamicAdGroupSection');\r\n const $standardAdGroupSection = this.$('#standardAdGroupSection');\r\n\r\n if (!keywordAdGroupCreationResult) {\r\n $standardAdGroupSection.collapse('show');\r\n this.removeStandardAdGroupSectionAriaExpandedAttribute();\r\n }\r\n\r\n if (!dynamicAdGroupCreationResult) {\r\n $dynamicAdGroupSection.collapse('show');\r\n }\r\n\r\n return keywordAdGroupCreationResult && dynamicAdGroupCreationResult;\r\n })\r\n .then((result) => {\r\n if (result) {\r\n this.updateContext();\r\n }\r\n return result;\r\n });\r\n }\r\n\r\n return Promise.resolve(false);\r\n }\r\n\r\n shouldCancel() {\r\n if (this.validateIfThereIsAtLeast1AdGroup()) {\r\n return Promise.all([\r\n this.keywordAdGroupCreateView.shouldCancel(),\r\n this.autoTargetAdGroupCreateView.shouldCancel(),\r\n ]).then(([standardAdGroupCreateResult, dynamicAdGroupCreateResult]) => {\r\n return standardAdGroupCreateResult && dynamicAdGroupCreateResult;\r\n });\r\n }\r\n return Promise.resolve(false);\r\n }\r\n}\r\n","import 'backbone';\r\nimport _ from 'underscore';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\n\r\nexport function decorate(view) {\r\n return view.extend({\r\n initialize(...args) {\r\n view.prototype.initialize(...args);\r\n this.on('updateAutoTargetEditorSetting', (setting) => {\r\n this.updateViews.forEach((updateView) => {\r\n updateView.trigger('updateAutoTargetEditorSetting', setting);\r\n });\r\n });\r\n },\r\n\r\n render(shouldNotCreateDefaultEditor = false) {\r\n _.bind(view.prototype.render, this)();\r\n if (!_.isUndefined(this.campaign) && !shouldNotCreateDefaultEditor) {\r\n this.create();\r\n }\r\n return this;\r\n },\r\n\r\n createAndRefocus(shouldValidate) {\r\n const isDSAMixedModeCampaignEnabled = _.result(config.get('Permissions'), 'IsDSAMixedModeCampaignEnabled', false);\r\n const originalCreateAndRefocus = _.bind(view.prototype.createAndRefocus, this);\r\n\r\n if (isDSAMixedModeCampaignEnabled && this.options.submitDSASettings) {\r\n return this.options.submitDSASettings()\r\n .then((result) => {\r\n if (result) {\r\n originalCreateAndRefocus(shouldValidate);\r\n }\r\n });\r\n }\r\n\r\n return originalCreateAndRefocus(shouldValidate);\r\n },\r\n });\r\n}\r\n","/*eslint new-cap:0 */\r\n\r\nimport _ from 'underscore';\r\nimport 'backbone';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport KeywordsView from '@bingads-webui-campaign-legacy/crud-keywords/view/create';\r\nimport { adGroupTypeEnum } from '@bingads-webui-campaign-legacy/adgroup-create-advanced/util/adGroupTypeEnum';\r\n\r\nconst isDSAMixedModeCampaignEnabled = _.result(config.get('Permissions'), 'IsDSAMixedModeCampaignEnabled', false);\r\n\r\nexport function decorate(view) {\r\n return view.extend({\r\n initialize(options = {}) {\r\n const self = this;\r\n\r\n _.bind(view.prototype.initialize, this, options)();\r\n self.subView = new KeywordsView(self.options);\r\n self.subView.on({\r\n 'seedKeywordsEntered': (seedKeywords) => {\r\n if (_.isArray(seedKeywords) && seedKeywords.length > 0) {\r\n self.trigger('seedKeywordsEntered', seedKeywords);\r\n }\r\n },\r\n 'keywords:selected': () => {\r\n if (_.isFunction(self.selectThisAdGroup)) {\r\n self.selectThisAdGroup();\r\n }\r\n },\r\n });\r\n\r\n\r\n if (isDSAMixedModeCampaignEnabled) {\r\n this.ko_model.AdGroupType(adGroupTypeEnum.SearchStandard);\r\n }\r\n },\r\n\r\n addSuggestion(addedKeywords, name, suggestedAvgCpc, sourceReqId) {\r\n // Use the suggested ad group's name, unless the user already renamed this ad group\r\n if (_.isString(name)) {\r\n if (_.isEmpty(this.ko_model.Name())) {//eslint-disable-line\r\n this.ko_model.Name(name);//eslint-disable-line\r\n this.ko_model.suggestedAvgCpc(suggestedAvgCpc);\r\n\r\n this.hasChanges = true;\r\n }\r\n }\r\n\r\n this.subView.addSuggestion(addedKeywords, sourceReqId);\r\n },\r\n\r\n getChanges() {\r\n if (this.hasChanges || this.subView.hasChanges) {\r\n const serializedAdGroup = this.ko_model.toObject();\r\n const adGroupId = _.isNaN(serializedAdGroup.Id) || serializedAdGroup.Id < 1 ? null : serializedAdGroup.Id;\r\n\r\n const keywords = this.subView.getChangedKeywords({\r\n Id: adGroupId,\r\n Name: this.ko_model.Name(),//eslint-disable-line\r\n });\r\n\r\n serializedAdGroup.Keywords = keywords;\r\n serializedAdGroup['Client Id'] = `${this.ko_model.options.index}`;\r\n\r\n if (_.isNull(adGroupId)) {\r\n const keys = ['Client Id', 'Name', 'Campaign', 'Language', 'Keywords', 'PricingModel', 'Medium'];\r\n\r\n if (isDSAMixedModeCampaignEnabled) {\r\n keys.push('AdGroupType');\r\n }\r\n\r\n return _.pick(serializedAdGroup, keys);\r\n } else {\r\n const result = _.pick(serializedAdGroup, ['Client Id', 'Id', 'Name', 'Campaign', 'Keywords']);\r\n\r\n if (result.Keywords.length === 0) {\r\n if (this.hasChanges) {\r\n delete result.Keywords;\r\n } else {\r\n this.subView.hasChanges = false;\r\n return null;\r\n }\r\n }\r\n return result;\r\n }\r\n }\r\n return null;\r\n },\r\n\r\n getContextObject() {\r\n const adGroupsStored = this.options && this.options.context && this.options.context.get('AdGroups');\r\n const currentId = this.ko_model.Id();\r\n const currentAdGroup = _.chain(adGroupsStored).where({ Id: currentId }).first().value();\r\n\r\n let object = {\r\n Id: currentId,\r\n Name: this.ko_model.Name(),\r\n Keywords: this.subView.getContextObjects(),\r\n suggestedAvgCpc: this.ko_model.suggestedAvgCpc(),\r\n };\r\n\r\n if (currentAdGroup) {\r\n object.Bid = _.result(currentAdGroup, 'Bid');\r\n }\r\n\r\n if (isDSAMixedModeCampaignEnabled) {\r\n object.AdGroupType = adGroupTypeEnum.SearchStandard;\r\n }\r\n\r\n return object;\r\n },\r\n\r\n updateViewModels(data) {\r\n // BackFill adgroup's Id since it is saved\r\n _.bind(view.prototype.updateViewModels, this, data)();\r\n _.each(data.Keywords, (keyword) => {\r\n keyword.AdGroup = { Id: data.Id };\r\n keyword.Campaign = { Id: data.Campaign.Id };\r\n });\r\n\r\n if (data.Keywords) {\r\n //BackFill keywords' Ids\r\n const keywordObjects = this.subView.updateViewModels({\r\n keywords: data.Keywords,\r\n campaignId: data.Campaign.Id,\r\n adGroupId: data.Id,\r\n });\r\n\r\n this.ko_model.Keywords(keywordObjects);//eslint-disable-line\r\n }\r\n },\r\n\r\n updateViewModelsOnError(response) {\r\n if (response && response.errors && !response.entity) {\r\n //Ajax error [400] - RowCountExceeded\r\n view.prototype.showErrors(response.errors);\r\n return;\r\n }\r\n\r\n // BackFill adgroup's Id if it was saved, or show adgroup's errors if it was failed\r\n _.bind(view.prototype.updateViewModelsOnError, this, response, 'Keywords')();\r\n\r\n if (_.isEmpty(response.entity.errors)) {\r\n // If adgroup was saved, then some keywords may be failed to be saved\r\n const entity = response.entity;\r\n\r\n // If we tried to make keyword changes, we need to check if any succeeded and update the keyword viewmodels. Otherwise, we're done.\r\n if (entity.Keywords && entity.Keywords.length > 0) {\r\n _.each(entity.Keywords, (keyword) => {\r\n keyword.AdGroup = { Id: entity.Id };\r\n keyword.Campaign = { Id: entity.Campaign.Id };\r\n });\r\n\r\n //the second param indicates whether or not check if the keyword is saved (according to Id)\r\n const keywordObjects = this.subView.updateViewModels({\r\n keywords: entity.Keywords,\r\n hasErrors: true,\r\n });\r\n\r\n this.ko_model.Keywords(keywordObjects);//eslint-disable-line\r\n }\r\n } else {\r\n this.subView.clearErrors();\r\n }\r\n },\r\n });\r\n}\r\n","/* eslint-disable */\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport ko_schema from '@bingads-webui-component-legacy/ko-schema/index';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nvar i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\nvar s$AdGroup = window.globalLegacySchema.get('AdGroup');\r\nvar viewModel = function (options) {\r\n var self = this;\r\n self.options = options || ({});\r\n self.properties = _.keys(s$AdGroup.properties);\r\n ko_schema.properties(self, s$AdGroup, self.properties);\r\n var campaign = self.options.context.get('Campaign');\r\n self.isOpen = ko.observable(true);\r\n self.isOnlyAdGroup = ko.observable(false);\r\n self.Name('');\r\n self.Campaign({\r\n Id: campaign.Id\r\n });\r\n self.CampaignName(campaign.Name);\r\n self.Language(campaign.Language);\r\n self.StartDate(campaign.StartDate);\r\n self.EndDate(campaign.EndDate);\r\n self.isWaitingForSaveResponse = ko.observable(false);\r\n self.isNameDuplicate = ko.observable(false);\r\n self.shouldValidateName = ko.observable(false);\r\n self.isDeleted = ko.observable(false);\r\n self.suggestedAvgCpc = ko.observable();\r\n self.deletedConfirmationMessage = ko.computed(function () {\r\n if (self.isDeleted()) {\r\n return i18n.get('AdGroup_Message_DeletedConfirmation') + ' ' + self.Name();\r\n }\r\n return '';\r\n });\r\n self.removeButtonLabel = ko.computed(function () {\r\n return i18n.get('AdGroup_Label_RemoveButton') + ' ' + self.Name();\r\n });\r\n};\r\nexport default viewModel;\r\n\r\n","/* eslint-disable */\r\nimport Backbone from 'backbone';\r\nimport _ from 'underscore';\r\nimport ko from 'knockout';\r\nimport $ from 'jquery';\r\nimport promise from 'bluebird';\r\nimport * as i18nErrors from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\nimport uuid from '@bingads-webui-component-legacy/uuid/index';\r\nimport jsdata from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport withUiBlock from '@bingads-webui-component-legacy/uiblocker/index';\r\nimport ViewModel from '@bingads-webui-campaign-legacy/crud-adgroup/viewmodel/update';\r\nimport tmpl from '@bingads-webui-campaign-legacy/crud-adgroup/template/update.pug';\r\nvar i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\nvar View = Backbone.View.extend({\r\n events: {\r\n 'click .glyphicon.glyphicon-remove': 'delete',\r\n 'show.bs.collapse': 'show',\r\n 'hide.bs.collapse': 'hide',\r\n 'click .adgroup-name': 'selectThisAdGroup'\r\n },\r\n className: 'row',\r\n initialize: function (options) {\r\n var self = this;\r\n self.options = options || ({});\r\n self.adapter = {\r\n adapter: self.options.adapter || 'bulk'\r\n };\r\n self.ko_model = new ViewModel(self.options);\r\n self.hasChanges = true;\r\n self.ko_model.Name.subscribe(function () {\r\n self.hasChanges = true;\r\n self.ko_model.shouldValidateName(true);\r\n self.trigger('nameChanged', self);\r\n });\r\n self.deletedConfirmationTimeout = 3000;\r\n },\r\n selectThisAdGroup: function () {\r\n this.trigger('selectThisAdGroup', this);\r\n },\r\n show: function (e) {\r\n this.ko_model.isOpen(true);\r\n this.trigger('show', this, e);\r\n },\r\n hide: function (e) {\r\n if (!this.validate() || this.ko_model.isOnlyAdGroup()) {\r\n e.preventDefault();\r\n return false;\r\n }\r\n this.save();\r\n this.ko_model.isOpen(false);\r\n return true;\r\n },\r\n collapse: function (operation) {\r\n this.$('.ad-group-collapsible').collapse(operation);\r\n },\r\n render: function () {\r\n this.$el.html(tmpl({\r\n i18n: i18n,\r\n uuid: uuid\r\n }));\r\n ko.applyBindings(this.ko_model, this.el);\r\n this.subView.render();\r\n this.$('.ad-group-collapsible').append(this.subView.el);\r\n return this;\r\n },\r\n create: function (newAdGroup) {\r\n var self = this;\r\n self.ko_model.errors.clear(i18nErrors.isCampaignApiError);\r\n self.ko_model.isWaitingForSaveResponse(true);\r\n var blocker = withUiBlock();\r\n return jsdata.AdGroup.create(newAdGroup, self.adapter).then(function (data) {\r\n if (!_.isEmpty(data.Id)) {\r\n self.updateViewModels(data);\r\n if (self.options.instrumentation) {\r\n self.options.instrumentation.instrument('create', data);\r\n }\r\n if (self.options.activityLogger) {\r\n self.options.activityLogger.signal('1', `create adgroup | type: ${_.result(newAdGroup, 'AdGroupType')}`);\r\n }\r\n }\r\n }).catch(function (errors) {\r\n self.updateViewModelsOnError(errors);\r\n }).finally(function () {\r\n blocker();\r\n self.ko_model.isWaitingForSaveResponse(false);\r\n });\r\n },\r\n showErrors: function (errors) {\r\n self.ko_model.errors.add(i18nErrors.getODataErrors(errors));\r\n },\r\n update: function (adGroupToUpdate) {\r\n var self = this;\r\n self.ko_model.errors.clear(i18nErrors.isCampaignApiError);\r\n self.ko_model.isWaitingForSaveResponse(true);\r\n return jsdata.AdGroup.update(self.ko_model.Id(), adGroupToUpdate, self.adapter).then(function (data) {\r\n self.updateViewModels(data);\r\n if (self.options.instrumentation) {\r\n self.options.instrumentation.instrument('update', data);\r\n }\r\n if (self.options.activityLogger) {\r\n self.options.activityLogger.signal('1', `update adgroup | type: ${_.result(adGroupToUpdate, 'AdGroupType')}`);\r\n }\r\n }).catch(function (errors) {\r\n self.updateViewModelsOnError(errors);\r\n }).finally(function () {\r\n self.ko_model.isWaitingForSaveResponse(false);\r\n });\r\n },\r\n delete: function () {\r\n var self = this;\r\n self.ko_model.errors.clear(i18nErrors.isCampaignApiError);\r\n self.ko_model.isWaitingForSaveResponse(true);\r\n if (_.isNaN(self.ko_model.Id()) || self.ko_model.Id() < 1) {\r\n self.confirmDelete(self);\r\n return promise.resolve({\r\n 'success': true\r\n });\r\n } else {\r\n self.ko_model.isWaitingForSaveResponse(true);\r\n var deleteParams = _.extend(self.adapter, {\r\n parentId: self.ko_model.Campaign().Id\r\n });\r\n var blocker = withUiBlock(this.$el);\r\n return jsdata.AdGroup.destroy(self.ko_model.Id(), deleteParams).then(function (data) {\r\n self.confirmDelete(self);\r\n if (self.options.instrumentation) {\r\n self.options.instrumentation.instrument('delete', data);\r\n }\r\n if (self.options.activityLogger) {\r\n self.options.activityLogger.signal('1', 'delete adgroup');\r\n }\r\n }).catch(function (response) {\r\n self.ko_model.errors.add(i18nErrors.getBulkApiErrors(response.errors));\r\n }).finally(function () {\r\n self.ko_model.isWaitingForSaveResponse(false);\r\n blocker();\r\n });\r\n }\r\n },\r\n confirmDelete: function (self) {\r\n self.trigger('delete', self);\r\n self.ko_model.isDeleted(true);\r\n setTimeout(self.remove.bind(self), self.deletedConfirmationTimeout);\r\n },\r\n save: function () {\r\n if (!this.validate()) {\r\n return promise.resolve({\r\n isValid: false,\r\n success: true\r\n });\r\n }\r\n var changes = this.getChanges();\r\n if (!_.isNull(changes)) {\r\n if (_.isNaN(this.ko_model.Id()) || this.ko_model.Id() < 1) {\r\n return this.create(changes);\r\n } else {\r\n return this.update(changes);\r\n }\r\n }\r\n return promise.resolve({\r\n isValid: true,\r\n success: true\r\n });\r\n },\r\n updateCampaign: function () {\r\n var editableFields = ['StartDate', 'EndDate'];\r\n var contextCampaign = this.options.context.get('Campaign');\r\n _.each(editableFields, function (field) {\r\n if (this.ko_model[field]() !== contextCampaign[field]) {\r\n this.ko_model[field](contextCampaign[field]);\r\n this.hasChanges = true;\r\n }\r\n }, this);\r\n },\r\n validateViewModel: function () {\r\n var isValid = this.ko_model.validate();\r\n if (!isValid) {\r\n _.each(this.ko_model.properties, function (field) {\r\n if (!this.ko_model[field].isValid()) {\r\n if (this.options.activityLogger) {\r\n this.options.activityLogger.signal('ad group field invalid: ' + field, 'create ad group');\r\n }\r\n }\r\n }, this);\r\n }\r\n return isValid;\r\n },\r\n validate: function () {\r\n var viewHasChanges = this.hasChanges;\r\n this.ko_model.shouldValidateName(true);\r\n var hasDuplicateNames = this.ko_model.isNameDuplicate();\r\n if (hasDuplicateNames && this.options.activityLogger) {\r\n this.options.activityLogger.signal('ad group field invalid: has duplicate names', 'create ad group');\r\n }\r\n var isValid = this.validateViewModel() && !hasDuplicateNames;\r\n isValid = this.subView.validate() && isValid;\r\n this.hasChanges = viewHasChanges;\r\n return isValid;\r\n },\r\n updateViewModels: function (data) {\r\n this.ko_model.errors.clear(i18nErrors.isCampaignApiError);\r\n if (_.isNaN(this.ko_model.Id()) || this.ko_model.Id() < 1) {\r\n this.ko_model.Id(Number(data.Id));\r\n }\r\n this.hasChanges = false;\r\n },\r\n updateViewModelsOnError: function (response, subEntity) {\r\n this.ko_model.errors.clear(i18nErrors.isCampaignApiError);\r\n i18nErrors.getPartial(response, [subEntity]);\r\n if (this.options.activityLogger && response && response.errors) {\r\n _.chain(response.errors).map(function (error) {\r\n return error.Error;\r\n }).uniq().each(function (error) {\r\n this.options.activityLogger.signal(error, 'adgroup creation api error');\r\n }, this);\r\n }\r\n if (!_.isEmpty(response.entity.errors)) {\r\n this.ko_model.errors.add(response.entity.errors);\r\n } else {\r\n this.hasChanges = false;\r\n }\r\n if (_.isUndefined(response.entity.Id)) {\r\n return;\r\n }\r\n if (_.isNaN(this.ko_model.Id()) || this.ko_model.Id() < 1) {\r\n this.ko_model.Id(Number(response.entity.Id));\r\n }\r\n }\r\n});\r\nexport default View;\r\n\r\n","import ko from 'knockout';\r\n\r\nexport default class ViewModel {\r\n constructor({\r\n scenario,\r\n activityLogger,\r\n } = {}) {\r\n this.selectedCampaigns = ko.observable();\r\n this.selectedAdgroups = ko.observable();\r\n\r\n this.copySetting = ko.observable(false);\r\n this.hide = ko.observable(false);\r\n\r\n this.copySetting.subscribe((value) => {\r\n if (activityLogger) {\r\n activityLogger.signal(`copy campaign settings value change: ${value}`, scenario);\r\n }\r\n });\r\n }\r\n}\r\n","import Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport ViewModel from '@bingads-webui-campaign-legacy/crud-campaign/viewmodel/copy-campaign-settings';\r\nimport template from '@bingads-webui-campaign-legacy/crud-campaign/template/copy-campaign-settings.pug';\r\nimport jsdata from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport edmCampaign from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport { getODataErrors } from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\nimport * as criterionLoader from '@bingads-webui-campaign-legacy/base-targets/util/criterionLoader';\r\nimport withUiBlock from '@bingads-webui-component-legacy/uiblocker/index';\r\nimport CampaignSelectorProxy from '@bingads-webui-campaign-legacy/crud-campaign/view/campaign-selector-proxy';\r\nimport { DisclaimerAdExtension } from '@bingads-webui-campaign/campaign-ui-schemas';\r\nimport SharedRepository from '@bingads-webui-campaign-legacy/adextension-shared/service/repository';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nexport default class View extends Backbone.View {\r\n initialize({\r\n scenario = 'copy-campaign-setttings',\r\n activityLogger,\r\n } = {}) {\r\n this.viewModel = new ViewModel({ scenario, activityLogger });\r\n this.scenario = scenario;\r\n this.activityLogger = activityLogger;\r\n this.campaignSelectorProxy = new CampaignSelectorProxy({\r\n onEventTrigger: (key, selectedItem) => {\r\n this.onCampaignSelectorEventTrigger(key, selectedItem);\r\n },\r\n });\r\n this.campaignSelector = this.campaignSelectorProxy.getCampaignSelectorView();\r\n }\r\n\r\n onCampaignSelectorEventTrigger(key, selectedItem) {\r\n if (_.isEqual(key, 'selected-campaign') && _.has(selectedItem, 'Id')) {\r\n this.loadCampaignAndTargets(selectedItem.Id);\r\n }\r\n }\r\n\r\n render() {\r\n this.$el.empty().append(template({ i18n }));\r\n this.$('.copy-settings').empty().append(this.campaignSelector.render().$el);\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n return this;\r\n }\r\n\r\n loadCampaignAndTargets(id) {\r\n const params = {\r\n queryParameters: {\r\n entitySet: edmCampaign.currentAccount.Campaigns,\r\n expand: ['Budget'],\r\n },\r\n bypassCache: true,\r\n };\r\n\r\n const disclaimerRepository = new SharedRepository({\r\n schema: DisclaimerAdExtension,\r\n skipExtensionCache: true,\r\n });\r\n\r\n Promise.join(\r\n jsdata.Campaign.find(id, params),\r\n criterionLoader.load(id, '', ['LocationCriterion', 'RadiusCriterion', 'LocationIntentCriterion']),\r\n disclaimerRepository.association.findAll({\r\n where: {\r\n campaignId: id,\r\n },\r\n })\r\n ).then((result) => {\r\n this.trigger('copy.campaign', result);\r\n if (this.activityLogger) {\r\n this.activityLogger.signal('select campaign to copy campaign settings', this.scenario);\r\n }\r\n })\r\n .catch(({ errors }) => {\r\n this.trigger('copy.errors', getODataErrors(errors));\r\n if (this.activityLogger) {\r\n _.each(errors, (error) => {\r\n if (error && error.Code) {\r\n this.activityLogger.signal(`copy campaign settings error ${error.Code}`, this.scenario);\r\n }\r\n });\r\n }\r\n })\r\n .finally(withUiBlock());\r\n }\r\n\r\n hide() {\r\n this.viewModel.hide(true);\r\n }\r\n}\r\n","/* eslint-disable */\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport * as schemas from '@bingads-webui-campaign/campaign-ui-schemas';\r\nimport ko_schema from '@bingads-webui-component-legacy/ko-schema/index';\r\nimport timeZoneMapper from '@bingads-webui-component-legacy/timezonemapper/index';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport localStorage from '@bingads-webui-component-legacy/storage/localStorage';\r\nimport * as campaignType from '@bingads-webui-campaign-legacy/adgroup-create-advanced/util/campaignType';\r\nimport instrumentation from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport constants from '@bingads-webui-static-legacy/instrumentation/constants';\r\nimport PageContext from '@bingads-webui-static-legacy/page-context';\r\nvar i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\nvar viewModel = function (options) {\r\n this.shouldShowCashbackSettings = options.shouldShowCashbackSettings;\r\n this.shouldShowSponsoredCampaignCashbackOptIn = options.shouldShowSponsoredCampaignCashbackOptIn;\r\n this.isSponsoredCampaignCashbackOptedIn = ko.observable(options.isSponsoredCampaignCashbackOptedIn);\r\n this.isSponsoredCampaignCashbackOptInReadonly = options.isSponsoredCampaignCashbackOptInReadonly;\r\n this.isExperiment = options.isExperiment || (function () {\r\n return false;\r\n });\r\n this.isDisclaimerAdsEnabled = options.isDisclaimerAdsEnabled || (function () {\r\n return false;\r\n });\r\n this.isMixedDSACampaignRecommendation = options.isMixedDSACampaignRecommendation;\r\n this.isMixedDSACampaignCreate = ko.computed((function () {\r\n var currentCampaignType = campaignType.default();\r\n var isDSAMixedModeCampaignEnabled = _.result(config.get('Permissions'), 'IsDSAMixedModeCampaignEnabled', false);\r\n var isDisclaimerAllow = true;\r\n return (currentCampaignType === 'search' || options.campaignType === 'search') && isDSAMixedModeCampaignEnabled && !this.isExperiment() && (isDisclaimerAllow || !this.isDisclaimerAdsEnabled());\r\n }).bind(this));\r\n this.isAudienceCampaignCreate = ko.computed(function () {\r\n var currentCampaignType = campaignType.default();\r\n if (_.isString(currentCampaignType) && currentCampaignType !== 'audience') {\r\n return false;\r\n }\r\n return currentCampaignType === 'audience' || options.campaignType === 'audience';\r\n });\r\n this.campaignProps = ['Name', 'TimeZone'];\r\n ko_schema.properties(this, schemas.Campaign, this.campaignProps, _.defaults(options, {\r\n TimeZone: options.TimeZone || timeZoneMapper.getAccountTimeZone()\r\n }));\r\n if (options.scenario === 'signup-creation-workflow') {\r\n this.Name(i18n.getString('Campaigns_SearchCampaign') + ' 1');\r\n }\r\n this.Id = ko.observable(options.Id);\r\n this.languageError = ko.observable('');\r\n this.timeZoneText = i18n.get('TimeZone_' + this.TimeZone()).replace(/\\{0\\}\\s*\\{1\\}\\s*/, '');\r\n this.isAfterSave = ko.computed((function () {\r\n return !_.isUndefined(this.Id());\r\n }).bind(this));\r\n this.showTimeZoneText = ko.computed(function () {\r\n return options.scenario === 'campaign-settings';\r\n });\r\n this.hasChanges = ko.observable(false);\r\n this.enableMixedModeDSASettings = ko.observable(true);\r\n this.isMixedModeDSASettingsChecked = ko.observable(false);\r\n this.hasRsaAutoAssets = ko.observable(false);\r\n this.isRsaAutoAssetsSettingChecked = ko.observable(false);\r\n this.theme = config.get('theme');\r\n this.hasBroadOnlySetting = ko.observable(false);\r\n this.isBroadOnlySettingChecked = ko.observable(false);\r\n this.selectedBrandLists = ko.observableArray([]);\r\n this.deletedBrandListIds = ko.observableArray([]);\r\n this.addedBrandListIds = ko.observableArray([]);\r\n this.savedBrandListIds = ko.observableArray([]);\r\n this.showVanityUrlSettings = ko.observable(false);\r\n this.vanityUrlSettings = ko.observable({\r\n DisplayUrlMode: 'ManufacturerWebsiteUrl',\r\n WebsiteDescription: 'Unspecified'\r\n });\r\n this.campaignGoalText = _.result(_.find(options.CampaignSettings, i => _.has(i, 'CampaignObjectiveSettingType')), 'CampaignObjectiveSettingType');\r\n this.showCampaignGoal = ko.computed((function () {\r\n var isAmplifyEnabled = _.result(config.get('Permissions'), 'IsAmplifyEnabled', false);\r\n return !_.isEmpty(this.campaignGoalText) && isAmplifyEnabled;\r\n }).bind(this));\r\n};\r\nviewModel.prototype.getValues = function () {\r\n var context = {\r\n Name: this.Name(),\r\n TimeZone: this.TimeZone()\r\n };\r\n return context;\r\n};\r\nexport default viewModel;\r\n\r\n","/* eslint-disable */\r\nimport Backbone from 'backbone';\r\nimport Promise from 'bluebird';\r\nimport _ from 'underscore';\r\nimport ko from 'knockout';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport summaryDataContextManager from '@bingads-webui-static-legacy/summary/SummaryDataContextManager';\r\nimport ViewModel from '@bingads-webui-campaign-legacy/crud-campaign/viewmodel/create';\r\nimport tmpl from '@bingads-webui-campaign-legacy/crud-campaign/template/create.pug';\r\nimport Budget from '@bingads-webui-campaign-legacy/budget/view/budget';\r\nimport * as _LocationTargetsView from '@bingads-webui-campaign-legacy/location-targets/view/locationTargets';\r\nimport * as _CashbackSettings from '@bingads-webui-campaign/cashback-settings';\r\nimport * as personalizedOfferUtils from '@bingads-webui-campaign/personalized-offer-shared';\r\nimport * as i18nErrors from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\nimport jsdata from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport * as _edm from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport * as scrollUtil from '@bingads-webui-component-legacy/extension/scrollTo';\r\nimport withUiBlock from '@bingads-webui-component-legacy/uiblocker/index';\r\nimport * as _Language from '@bingads-webui-component-legacy/language-selector/view/index';\r\nimport * as defaultLanguage from '@bingads-webui-component-legacy/language-selector/util/defaultLanguage';\r\nimport * as _AppEventDelegator from '@bingads-webui-component-legacy/app-event-delegator/index';\r\nimport * as _MultiLanguage from '@bingads-webui-campaign/multi-language-selector';\r\nimport * as _AdsCampaignDisclaimers from '@bingads-webui-campaign-react/ads-campaign-disclaimers';\r\nimport instrumentation from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport constants from '@bingads-webui-static-legacy/instrumentation/constants';\r\nimport * as _SharedBudgetView from '@bingads-webui-campaign-legacy/shared-budget/view/shared-budget-switch-editor';\r\nimport * as _CopySettings from '@bingads-webui-campaign-legacy/crud-campaign/view/copy-campaign-settings';\r\nimport * as _BiddingStrategyView from '@bingads-webui-campaign-legacy/bidding-strategy/view/setting';\r\nimport * as campaignType from '@bingads-webui-campaign-legacy/adgroup-create-advanced/util/campaignType';\r\nimport * as _ExperimentBudgetAlert from '@bingads-webui-campaign-legacy/experiments-tab/experiment-budget-alert-loader';\r\nimport * as schemas from '@bingads-webui-campaign/campaign-ui-schemas';\r\nimport * as _SharedRepository from '@bingads-webui-campaign-legacy/adextension-shared/service/repository';\r\nimport BiddingStrategyType from '@bingads-webui-campaign-legacy/bidding-strategy/bidding-strategy-type';\r\nimport * as _DSASettingsView from '@bingads-webui-campaign-legacy/dsa-settings/view/dsa-settings';\r\nimport localStorage from '@bingads-webui-component-legacy/storage/localStorage';\r\nimport decimal from '@bingads-webui-component-legacy/humanize/decimal';\r\nimport * as _AudienceCampaignShared from '@bingads-webui-campaign/audience-campaign-shared';\r\nimport * as _LoadMap from '@bingads-webui-campaign-legacy/dashboard-page/service/load-map';\r\nimport * as _physicalIntentOptions from '@bingads-webui-campaign-legacy/location-targets/viewmodel/physicalIntentOptions';\r\nimport * as _AudienceCampaignCrud from '@bingads-webui-campaign/crud-audience-campaign';\r\nimport * as SponsoredCampaignShared from '@bingads-webui-campaign/sponsored-campaign-shared';\r\nimport * as _BrandListsComponents from '@bingads-webui-campaign-react/brand-lists-components';\r\nimport * as _VanityUrlOption from '@bingads-webui-campaign-react/vanity-url-option';\r\nimport * as _preferencesService from '@bingads-webui-component-legacy/preference/service/index';\r\nvar i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\nvar newI18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/campaign-creation-advanced');\r\nvar s$AdGroup = schemas.AdGroup;\r\nvar s$CampaignCriterion = schemas.CampaignCriterion;\r\nvar s$DisclaimerAdExtension = schemas.DisclaimerAdExtension;\r\nvar AppEventDelegator = _AppEventDelegator.default;\r\nvar edm = _edm.default;\r\nvar Language = _Language.default;\r\nvar LocationTargetsView = _LocationTargetsView.default;\r\nvar CopySettings = _CopySettings.default;\r\nvar BiddingStrategyView = _BiddingStrategyView.default;\r\nvar SharedBudgetView = _SharedBudgetView.default;\r\nvar MultiLanguage = _MultiLanguage.MultiLanguageSelector;\r\nvar AdsCampaignDisclaimers = _AdsCampaignDisclaimers.AdsCampaignDisclaimers;\r\nvar ExperimentBudgetAlert = _ExperimentBudgetAlert.ExperimentBudgetAlert;\r\nvar SharedRepository = _SharedRepository.default;\r\nvar DSASettingsView = _DSASettingsView.default;\r\nvar CashbackSettingsView = _CashbackSettings.CashbackSettings;\r\nvar loadMap = _LoadMap.loadMap;\r\nvar ImpressionTrackingView = _AudienceCampaignShared.ImpressionTrackingUrlOptions;\r\nvar {isSponsoredCampaignCashbackOptInAvailable} = SponsoredCampaignShared;\r\nvar BroadOnlySetting = _BrandListsComponents.WrappedBroadOnlySetting;\r\nvar defaultPopupIds = {\r\n 'CampaignName': 'pop_BA_CampaignCreate_Settings_CampaignName',\r\n 'Language': 'pop_BA_CampaignCreate_Settings_AdLanguage',\r\n 'MultiLanguage': 'pop_BA_CampaignCreate_Settings_LanguageTargeting',\r\n TargetingSource: 'pop_BA_DSA_TargetingSource',\r\n Budget: 'pop_BA_CampaignCreate_Budget_SharedBudget'\r\n};\r\nvar physicalIntentOptions = _physicalIntentOptions.default;\r\nvar VanityUrlOption = _VanityUrlOption.VanityUrlOption;\r\nvar preferencesService = _preferencesService.default || _preferencesService;\r\nvar View = Backbone.View.extend({\r\n initialize: function (options) {\r\n this.options = _.defaults({}, options, {\r\n scenario: 'creation-workflow',\r\n showLanguage: true,\r\n Languages: [],\r\n showInitialUiBlocker: true,\r\n hideBidStrategy: false,\r\n deps: {},\r\n IsAdsGlobalizationPhase1Enabled: pageContext.Permissions.IsAdsGlobalizationPhase1Enabled,\r\n IsAdsGlobalizationPhase2Enabled: pageContext.Permissions.IsAdsGlobalizationPhase2Enabled,\r\n IsAdsGlobalizationPhase6Enabled: pageContext.Permissions.IsAdsGlobalizationPhase6Enabled,\r\n IsAdsGlobalizationPhase2JapanEnabled: pageContext.Permissions.IsAdsGlobalizationPhase2JapanEnabled,\r\n IsAdsGlobalizationPhase9Enabled: pageContext.Permissions.IsAdsGlobalizationPhase9Enabled,\r\n IsAdsGlobalizationPhase9VIEnabled: pageContext.Permissions.IsAdsGlobalizationPhase9VIEnabled\r\n });\r\n if (this.options && this.options.perfMarker) {\r\n this.showCampaignSettingMarker = this.options.perfMarker.createChild('Show_Campaign_Setting', {\r\n autoEnd: true\r\n });\r\n this.showCampaignSettingMarker.willInit();\r\n }\r\n if (this.options && this.options.activityLogger) {\r\n this.logActivity('display campaign settings step');\r\n }\r\n this.popupIds = _.defaults({}, this.options.popupIds, defaultPopupIds);\r\n this.shouldShowCashbackSettings = personalizedOfferUtils.isPersonalizedOfferAvailable(pageContext.Permissions, this.options.campaignType, this.options.campaignSubType);\r\n const shouldShowSponsoredCampaignCashbackOptIn = isSponsoredCampaignCashbackOptInAvailable(pageContext.Permissions, this.options.campaignType, this.options.campaignSubType, this.options.isMSStoreAdsGAWorkflow);\r\n this.isAudienceCampaign = this.options.campaignType === 'Audience';\r\n this.isAudienceVideoAdsCampaign = this.options.campaignSubType === 'AudienceVideoAds';\r\n this.isEnabledForVerifiedImpressionTracking = this.isAudienceCampaign && this.isAudienceVideoAdsCampaign && pageContext.Permissions.IsEnabledForVerifiedImpressionTrackingAtCampaignLevel;\r\n this.isSignUpPage = this.options.scenario === 'signup-creation-workflow';\r\n this.isWindowsStoreAdsEnabled = this.options.isMSStoreAdsGAWorkflow;\r\n this.isWindowsStoreAdsManualCPAEnabled = Boolean(_.result(pageContext.Permissions.dynamic, 'WindowsStoreAdsManualCPA', false));\r\n this.isSupportMaxConversionsForSscEnabled = Boolean(_.result(pageContext.Permissions.dynamic, 'SupportMaxConversionsForSsc', false));\r\n this.eventDelegator = _.result(this.options.deps, 'eventDelegator', new AppEventDelegator());\r\n this.ko_model = new ViewModel(_.extend({}, this.options, {\r\n isExperiment: this.isExperiment,\r\n isDisclaimerAdsEnabled: this.isDisclaimerAdsEnabled.bind(this),\r\n shouldShowCashbackSettings: this.shouldShowCashbackSettings,\r\n shouldShowSponsoredCampaignCashbackOptIn\r\n }));\r\n this.ko_model.isSponsoredCampaignCashbackOptedIn.subscribe(value => this.trigger('change:isSponsoredCampaignCashbackOptedIn', value));\r\n this.isVideo = this.options.CampaignSubType === 'AudienceVideoAds';\r\n this.autoTargetingSettings = _.find(this.options.CampaignSettings, setting => setting['@odata.type'] === '#Model.PredictiveTargetingSetting') || ({});\r\n if (this.options.scenario === 'campaign-settings') {\r\n if (_.contains(['search'], campaignType.default())) {\r\n this.biddingStrategyView = new BiddingStrategyView({\r\n entityType: 'Campaign',\r\n biddingStrategyType: this.options.BiddingScheme.Type,\r\n bidStrategyName: this.options.BidStrategyName,\r\n maxCpc: this.options.BiddingScheme.MaxCpc ? this.options.BiddingScheme.MaxCpc.Amount : null,\r\n targetCpa: this.options.BiddingScheme.TargetCpa,\r\n targetRoas: this.options.BiddingScheme.TargetRoas,\r\n targetAdPosition: this.options.BiddingScheme.TargetAdPosition,\r\n targetImpressionShare: this.options.BiddingScheme.TargetImpressionShare,\r\n campaignType: campaignType.default(),\r\n activityLogger: this.options.activityLogger,\r\n i18nNewDesign: this.options.deps.i18nNewDesign,\r\n shouldSupportCashbackSettings: personalizedOfferUtils.shouldSupportCashbackSettings(this.options, pageContext.Permissions),\r\n autoTargetingEnabled: this.autoTargetingSettings.PredictiveTargetingEnabled || false,\r\n ccJsData: this.options.ccJsData,\r\n isBroadMatchOnlyCampaign: this.ko_model.isBroadOnlySettingChecked()\r\n });\r\n } else if (_.contains(['shopping'], campaignType.default())) {\r\n this.biddingStrategyView = new BiddingStrategyView(_.extend({\r\n entityType: 'Campaign',\r\n biddingStrategyType: this.options.BiddingScheme.Type,\r\n bidStrategyName: this.options.BidStrategyName,\r\n maxCpc: this.options.BiddingScheme.MaxCpc ? this.options.BiddingScheme.MaxCpc.Amount : null,\r\n targetCpa: this.options.BiddingScheme.TargetCpa,\r\n targetRoas: this.options.BiddingScheme.TargetRoas,\r\n costPerSale: this.options.BiddingScheme.TargetCostPerSale,\r\n validateWithBudget: true,\r\n campaignType: 'shopping',\r\n isAfterSave: this.ko_model.isAfterSave(),\r\n activityLogger: this.options.activityLogger,\r\n i18nNewDesign: this.options.deps.i18nNewDesign,\r\n shouldSupportCashbackSettings: personalizedOfferUtils.shouldSupportCashbackSettings(this.options, pageContext.Permissions),\r\n shouldShowSponsoredCampaignCashback: shouldShowSponsoredCampaignCashbackOptIn,\r\n isSponsoredCampaignCashbackOptedIn: this.options.isSponsoredCampaignCashbackOptedIn,\r\n isMSStoreAdsGAWorkflow: this.options.isMSStoreAdsGAWorkflow,\r\n popupIds: {\r\n BidStrategy: this.popupIds.BidStrategy\r\n },\r\n ccJsData: this.options.ccJsData\r\n }, pageContext.Permissions.IsManualBiddingDeprecationEnabled ? {\r\n campaignSubType: this.options.CampaignSubType\r\n } : {}));\r\n } else if (_.contains(['audience'], campaignType.default())) {\r\n if (pageContext.Permissions.IsManualCpmEnabled || pageContext.Permissions.IsAudienceCampaignAutoBiddingV2Enabled) {\r\n this.biddingStrategyView = new BiddingStrategyView({\r\n entityType: 'Campaign',\r\n biddingStrategyType: this.options.BiddingScheme.Type,\r\n bidStrategyName: this.options.BidStrategyName,\r\n campaignSubType: this.options.CampaignSubType,\r\n campaignType: campaignType.default(),\r\n maxCpc: this.options.BiddingScheme.MaxCpc ? this.options.BiddingScheme.MaxCpc.Amount : null,\r\n targetCpa: this.options.BiddingScheme.TargetCpa,\r\n activityLogger: this.options.activityLogger,\r\n i18nNewDesign: this.options.deps.i18nNewDesign,\r\n shouldSupportCashbackSettings: personalizedOfferUtils.shouldSupportCashbackSettings(this.options, pageContext.Permissions),\r\n ccJsData: this.options.ccJsData\r\n });\r\n }\r\n if (this.isEnabledForVerifiedImpressionTracking) {\r\n var initialIASImpressionTrackingUrlValue = '';\r\n if (_.isArray(this.options.CampaignSettings) && this.options.CampaignSettings.length > 0 && _.isArray(this.options.CampaignSettings[0].VerifiedTrackingSettings) && this.options.CampaignSettings[0].VerifiedTrackingSettings.length > 0 && _.isArray(this.options.CampaignSettings[0].VerifiedTrackingSettings[0].VerifiedTrackingData) && this.options.CampaignSettings[0].VerifiedTrackingSettings[0].VerifiedTrackingData.length > 0) {\r\n initialIASImpressionTrackingUrlValue = this.options.CampaignSettings[0].VerifiedTrackingSettings[0].VerifiedTrackingData[0].Data.Values;\r\n }\r\n const showIASOption = false;\r\n if (showIASOption) {\r\n this.ImpressionTrackingView = new ImpressionTrackingView({\r\n i18n: i18n,\r\n isEnabledForVerifiedImpressionTrackingAtCampaignLevel: this.isEnabledForVerifiedImpressionTracking,\r\n initialIASImpressionTrackingUrlValue: initialIASImpressionTrackingUrlValue,\r\n isImpressionTrackingUrlSectionVisible: false\r\n });\r\n }\r\n var _this = this;\r\n this.ImpressionTrackingView && this.ImpressionTrackingView.on('IASInputChange', function (value) {\r\n if (value === null || _.isString(value) && value.length === 0) {\r\n _this.IASTrackingInfo = 'delete_value';\r\n return;\r\n }\r\n _this.IASTrackingInfo = value;\r\n });\r\n }\r\n }\r\n } else if (this.options.scenario === 'shopping-creation-workflow') {\r\n this.biddingStrategyView = new BiddingStrategyView(_.extend({\r\n entityType: 'Campaign',\r\n isInitialize: true,\r\n isCreation: true,\r\n isAfterSave: this.ko_model.isAfterSave(),\r\n campaignType: 'shopping',\r\n validateWithBudget: true,\r\n campaignSubType: this.options.campaignSubType,\r\n activityLogger: this.options.activityLogger,\r\n i18nNewDesign: this.options.deps.i18nNewDesign,\r\n shouldSupportCashbackSettings: personalizedOfferUtils.shouldSupportCashbackSettings(this.options, pageContext.Permissions),\r\n shouldShowSponsoredCampaignCashback: shouldShowSponsoredCampaignCashbackOptIn,\r\n isMSStoreAdsGAWorkflow: this.options.isMSStoreAdsGAWorkflow,\r\n popupIds: {\r\n BidStrategy: this.popupIds.BidStrategy\r\n },\r\n ccJsData: this.options.ccJsData\r\n }, this.options.hideBidStrategy ? {} : {\r\n biddingStrategyType: BiddingStrategyType.enhancedCPC\r\n }));\r\n } else if (this.options.scenario === 'smart-shopping-campaign-creation-workflow') {\r\n var BiddingScheme = this.options.BiddingScheme || ({});\r\n this.biddingStrategyView = new BiddingStrategyView({\r\n entityType: 'Campaign',\r\n maxCpc: BiddingScheme.MaxCpc ? BiddingScheme.MaxCpc.Amount : null,\r\n targetCpa: BiddingScheme.TargetCpa,\r\n targetRoas: BiddingScheme.TargetRoas,\r\n isInitialize: true,\r\n isCreation: true,\r\n campaignType: 'shopping',\r\n campaignSubType: 'ShoppingSmartAds',\r\n biddingStrategyType: this.isSupportMaxConversionsForSscEnabled ? BiddingScheme.Type : BiddingStrategyType.maxConversionValue,\r\n activityLogger: this.options.activityLogger,\r\n shouldSupportCashbackSettings: personalizedOfferUtils.shouldSupportCashbackSettings(this.options, pageContext.Permissions),\r\n isAfterSave: this.ko_model.isAfterSave(),\r\n ccJsData: this.options.ccJsData\r\n });\r\n }\r\n if (!this.isSignUpPage && this.options.scenario !== 'creation-workflow') {\r\n this.initBudgetView(this.options.Budget);\r\n }\r\n this.initDSASettingsView();\r\n this.initCashbackSettings();\r\n this.initRSASettingsView();\r\n this.initBroadOnlyView();\r\n if (this.isMultipleLanguageEnabledIncampaign()) {\r\n this.initMultiLangaugeSelector();\r\n } else {\r\n this.language = new Language(_.pick(this.options, 'i18nStrings', 'enableAdsGlobalizationPhase1'));\r\n }\r\n ko.computed(function () {\r\n if (!this.isMultipleLanguageEnabledIncampaign) {\r\n this.language.koModel.disabled(this.ko_model.isAfterSave());\r\n }\r\n if (this.dsaSettingsView) {\r\n this.dsaSettingsView.setValues({\r\n campaignId: this.ko_model.Id()\r\n });\r\n }\r\n }, this);\r\n if (this.isCreationScenario() && !this.isSignUpPage && this.options.scenario !== 'smart-shopping-campaign-creation-workflow') {\r\n this.copySettings = new CopySettings({\r\n scenario: this.options.scenario,\r\n activityLogger: this.options.activityLogger\r\n });\r\n this.copySettings.on('copy.campaign', this.copyFromCampaign.bind(this));\r\n this.copySettings.on('copy.errors', (function (errors) {\r\n ko.observableArray.fn.push.apply(this.ko_model.errors, errors);\r\n }).bind(this));\r\n }\r\n if (this.hasDisclaimer()) {\r\n this.disclaimerRepository = new SharedRepository({\r\n schema: s$DisclaimerAdExtension,\r\n skipExtensionCache: true\r\n });\r\n this.disclaimer = React.createRef();\r\n this.disclaimerProps = {\r\n ref: this.disclaimer,\r\n i18n: newI18n,\r\n campaignId: 0,\r\n DisclaimerAdsEnabled: true,\r\n AllowDisclaimerEnabled: true,\r\n schema: s$DisclaimerAdExtension,\r\n repository: this.disclaimerRepository,\r\n permissions: pageContext.Permissions,\r\n resetSelectedDisclaimer: (function () {\r\n delete this.disclaimerProps.selectedDisclaimer;\r\n this.renderDisclaimerUI();\r\n }).bind(this),\r\n usePanel: options && options.usePanel\r\n };\r\n }\r\n if (this.hasBroadOnlySetting()) {\r\n this.preferencesService = preferencesService;\r\n this.preferencesService.initialize();\r\n }\r\n },\r\n inCampaignEditing: function () {\r\n return this.options.Id > 0;\r\n },\r\n isExperiment: function () {\r\n return _.result(pageContext.CurrentCampaign, 'ExperimentId') > 0;\r\n },\r\n isMultipleLanguageEnabledIncampaign: function () {\r\n return this.options.showLanguage && !_.contains(['shopping'], campaignType.default());\r\n },\r\n hasDisclaimer: function () {\r\n const searchCondition = pageContext.Permissions.IsDisclaimerAdsEnabled && (this.options.scenario === 'creation-workflow' && this.options.campaignType === 'search' || this.options.scenario === 'campaign-settings' && campaignType.default() === 'search' && !this.isExperiment());\r\n const audienceCondition = pageContext.Permissions.IsDisclaimerAdsEnabled && pageContext.Permissions.IsMSANDisclaimerEnabled && (this.options.scenario === 'creation-workflow' && this.options.campaignType === 'Audience' && this.options.campaignSubType === 'AudienceStatic' || this.options.scenario === 'campaign-settings' && this.options.campaignType === 'Audience' && this.options.campaignSubType === 'AudienceStatic');\r\n return searchCondition || audienceCondition;\r\n },\r\n hasRsaAutoAssets: function () {\r\n return this.options.scenario === 'creation-workflow' && this.options.campaignType === 'search' || this.options.scenario === 'campaign-settings' && campaignType.default() === 'search';\r\n },\r\n hasBroadOnlySetting: function () {\r\n return Boolean(_.result(pageContext.Permissions.dynamic, 'BroadOnly', false)) && !Boolean(_.result(pageContext.Permissions.dynamic, 'PredictiveMatching', false)) && (this.options.scenario === 'creation-workflow' && this.options.campaignType === 'search' || this.options.scenario === 'campaign-settings' && campaignType.default() === 'search');\r\n },\r\n showVanityUrlSettings: function () {\r\n return pageContext.Permissions.IsVanityUrlEnabled && pageContext.Permissions.dynamic.VanityUrlWebsiteDescription && (this.options.scenario === 'creation-workflow' && this.options.campaignType === 'search');\r\n },\r\n getAssociatedDisclaimer: function (campaignId) {\r\n return campaignId ? this.disclaimerRepository.association.findAll({\r\n where: {\r\n campaignId: campaignId\r\n }\r\n }).then(function (disclaimerdata) {\r\n if (disclaimerdata && disclaimerdata.length > 0) {\r\n return disclaimerdata[0];\r\n } else {\r\n return null;\r\n }\r\n }) : Promise.resolve(null);\r\n },\r\n renderDisclaimerUI: function () {\r\n ReactDOM.render(React.createElement(AdsCampaignDisclaimers, this.disclaimerProps), this.$('.disclaimer__container')[0]);\r\n },\r\n toggleDisclaimerUI: function (disabled) {\r\n if (this.disclaimerProps != null) {\r\n this.disclaimerProps = _.extend({}, this.disclaimerProps, {\r\n DisclaimerAdsEnabled: disabled ? false : undefined,\r\n isDisclaimerCheckboxDisabled: disabled\r\n });\r\n this.renderDisclaimerUI();\r\n }\r\n },\r\n isDisclaimerAdsEnabled: function () {\r\n return _.isObject(this.options.context) && _.result(this.options.context.get('Draft.Disclaimer'), 'DisclaimerAdsEnabled', false) || _.result(_.find(this.options.CampaignSettings, function (setting) {\r\n return setting['@odata.type'] === '#Model.DisclaimerSetting';\r\n }), 'DisclaimerAdsEnabled', false);\r\n },\r\n initDisclaimerUI: function () {\r\n if (this.hasDisclaimer()) {\r\n this.disclaimerProps.campaignId = this.ko_model.Id() || 0;\r\n this.disclaimerProps.DisclaimerAdsEnabled = this.isDisclaimerAdsEnabled();\r\n this.disclaimerProps.isNativeAd = this.options.campaignType === 'Audience' && this.options.campaignSubType === 'AudienceStatic';\r\n this.disclaimerProps.onDisclaimerCheckboxChange = (function (disclaimerAdsEnabled) {\r\n this.disclaimerProps.DisclaimerAdsEnabled = disclaimerAdsEnabled;\r\n this.dsaSettingsView && this.dsaSettingsView.setValues({\r\n disclaimerAdsEnabled: disclaimerAdsEnabled\r\n });\r\n this.logActivity(`disclaimer changed: ${disclaimerAdsEnabled ? 'enabled' : 'disabled'}`);\r\n }).bind(this);\r\n this.getAssociatedDisclaimer(this.disclaimerProps.campaignId).then((function (data) {\r\n if (data) {\r\n this.disclaimerProps.selectedDisclaimer = data;\r\n }\r\n this.renderDisclaimerUI();\r\n }).bind(this));\r\n } else {\r\n this.$('.disclaimer__container').empty();\r\n }\r\n },\r\n initAutoAssetsUI: function () {\r\n if (this.hasRsaAutoAssets()) {\r\n this.ko_model.hasRsaAutoAssets(true);\r\n this.ko_model.isRsaAutoAssetsSettingChecked.subscribe((function (checked) {\r\n this.logActivity(`RSA auto assets setting changed: ${checked ? 'enabled' : 'disabled'}`);\r\n }).bind(this));\r\n }\r\n },\r\n initBroadOnlyUI: function () {\r\n if (this.hasBroadOnlySetting()) {\r\n this.ko_model.hasBroadOnlySetting(true);\r\n this.renderBroadOnlySetting();\r\n if (this.biddingStrategyView) {\r\n this.ko_model.isBroadOnlySettingChecked.subscribe((function (checked) {\r\n this.logActivity('broad only setting changed: ' + checked);\r\n this.biddingStrategyView.viewModel.isBroadMatchOnlyCampaign(checked);\r\n }).bind(this));\r\n }\r\n }\r\n },\r\n renderBroadOnlySetting: function () {\r\n ReactDOM.unmountComponentAtNode(this.$('.broad-only-setting').get(0));\r\n const props = {\r\n theme: this.ko_model.theme,\r\n i18n: this.options.deps.i18nNewDesign,\r\n serverContext: this.options.serverContext,\r\n scope: this.options.scope,\r\n permissions: pageContext.Permissions,\r\n preferenceService: this.preferencesService,\r\n campaignId: pageContext.CurrentCampaign && pageContext.CurrentCampaign.Id,\r\n isBroadMatchOnly: this.ko_model.isBroadOnlySettingChecked(),\r\n setIsBroadMatchOnly: value => this.ko_model.isBroadOnlySettingChecked(value),\r\n onBrandListsChange: (selectedBrandLists, [deletedBrandListIds, addedBrandListIds]) => {\r\n this.ko_model.selectedBrandLists(selectedBrandLists);\r\n this.ko_model.deletedBrandListIds(deletedBrandListIds);\r\n this.ko_model.addedBrandListIds(addedBrandListIds);\r\n },\r\n cid: pageContext.CurrentAccount.AdvertiserCustomerID,\r\n aid: pageContext.CurrentAccount.Id\r\n };\r\n ReactDOM.render(React.createElement(BroadOnlySetting, props, null), this.$('.broad-only-setting')[0]);\r\n },\r\n initVanityUrlSettings: function () {\r\n if (this.showVanityUrlSettings()) {\r\n this.ko_model.showVanityUrlSettings(true);\r\n this.renderVanityUrlSettings();\r\n }\r\n },\r\n renderVanityUrlSettings: function () {\r\n ReactDOM.unmountComponentAtNode(this.$('.vanity-url-option').get(0));\r\n const props = {\r\n i18n: this.options.deps.i18nNewDesign,\r\n vanityUrlSettings: this.ko_model.vanityUrlSettings(),\r\n onChange: settings => this.ko_model.vanityUrlSettings(settings)\r\n };\r\n ReactDOM.render(React.createElement(VanityUrlOption, props, null), this.$('.vanity-url-option').get(0));\r\n },\r\n setBidStrategyForPersonalizedOffersV2: function (enabled) {\r\n personalizedOfferUtils.setBidStrategyForPersonalizedOffers.bind(this)(enabled);\r\n },\r\n initCashbackSettings: function () {\r\n if (this.shouldShowCashbackSettings) {\r\n var cashBackSettings = _.result(this.options, 'CampaignCashback') || ({});\r\n this.cashbackSettingsView = new CashbackSettingsView({\r\n PersonalizedOffersEnabled: cashBackSettings.PersonalizedOffersEnabled,\r\n CashbackMonthlyBudget: cashBackSettings.MonthlyBudget,\r\n CashbackPercent: cashBackSettings.Percent,\r\n CashbackScope: cashBackSettings.Scope,\r\n CouponsEnabled: cashBackSettings.CouponsEnabled,\r\n isCashbackScopeReadonly: this.options.campaignType !== 'shopping',\r\n deps: {\r\n i18n: i18n,\r\n pageContext: pageContext,\r\n decimal: decimal\r\n },\r\n showCoupon: this.options.campaignType === 'shopping' && this.options.isNotAudienceCampaign,\r\n isCreationScenario: this.isCreationScenario(),\r\n isReadOnly: personalizedOfferUtils.shouldPersonalizedOffersReadOnly(this.ko_model.isAfterSave(), this.biddingStrategyView)\r\n });\r\n personalizedOfferUtils.setupCommonCashbackObserver(this);\r\n if (pageContext.Permissions.IsCostPerSaleEnabled && this.biddingStrategyView && this.options.campaignType === 'shopping') {\r\n this.ko_model.isAfterSave.subscribe(isAfterSave => {\r\n this.biddingStrategyView.viewModel.isAfterSave(isAfterSave);\r\n if (this.cashbackSettingsView) {\r\n this.cashbackSettingsView.viewModel.isReadOnly(personalizedOfferUtils.shouldPersonalizedOffersReadOnly(isAfterSave, this.biddingStrategyView));\r\n }\r\n if (this.cashbackSettingsView.viewModel.isEnablePersonalizedOffersChecked() && isAfterSave) {\r\n this.setBidStrategyForPersonalizedOffersV2(true);\r\n }\r\n });\r\n }\r\n }\r\n },\r\n setupBudgetValidationForCostPerSale: function () {\r\n if (this.budget && this.biddingStrategyView) {\r\n this.budget.viewModel.isCPSSelected(this.biddingStrategyView.viewModel.selectedBidStrategy() === BiddingStrategyType.costPerSale);\r\n this.budget.viewModel.sharedBudgetIsNotAllowedWarning(i18n.getString('CPS_NotAllowedSharedBudget') || 'Shared budget is not allowed if CPS is selected');\r\n this.biddingStrategyView.viewModel.selectedBidStrategy.subscribe(strategy => {\r\n this.budget.viewModel.isCPSSelected(strategy === BiddingStrategyType.costPerSale);\r\n this.budget.viewModel.sharedBudgetIsNotAllowedWarning(i18n.getString('CPS_NotAllowedSharedBudget') || 'Shared budget is not allowed if CPS is selected');\r\n });\r\n this.biddingStrategyView.viewModel.budgetAmount = this.budget.budgetView.ko_model.Amount();\r\n this.budget.budgetView.ko_model.Amount.subscribe(amount => {\r\n this.biddingStrategyView.viewModel.budgetAmount = amount;\r\n });\r\n }\r\n },\r\n validateMultipleLanguage: function () {\r\n var isValidate = true;\r\n if (this.inCampaignEditing()) {\r\n isValidate = _.isEmpty(this.options.Languages) || !_.isEmpty(this.language.getSelectedLanguages());\r\n } else {\r\n isValidate = !_.isEmpty(this.language.getSelectedLanguages());\r\n }\r\n this.updateLanguageErrorMessage(isValidate);\r\n return isValidate;\r\n },\r\n updateLanguageErrorMessage: function (isValidate) {\r\n if (isValidate) {\r\n this.ko_model.languageError('');\r\n } else {\r\n this.ko_model.languageError(i18n.getString('Campaign_Validation_LanguageSelectionRequired'));\r\n }\r\n },\r\n logActivity: function (message, api) {\r\n api = api || this.options.scenario;\r\n if (this.options.activityLogger) {\r\n this.options.activityLogger.signal(message, api);\r\n }\r\n },\r\n initMultiLangaugeSelector: function () {\r\n var languageOptions = {\r\n languages: _.sortBy(_.without(s$AdGroup.properties.Language.enum, 'None')),\r\n inEditMode: true,\r\n selectedLanguages: [defaultLanguage.get()],\r\n i18n: i18n\r\n };\r\n if (!pageContext.Permissions.IsSimplifiedChineseLanguageEnabledInMultipleLanguage) {\r\n languageOptions.languages = _.without(languageOptions.languages, 'SimplifiedChinese');\r\n }\r\n if (!pageContext.Permissions.IsAdsGlobalizationPhase1Enabled) {\r\n languageOptions.languages = _.without(languageOptions.languages, 'Greek', 'Polish', 'Bulgarian', 'Croatian', 'Czech', 'Estonian', 'Hungarian', 'Latvian', 'Lithuanian', 'Maltese', 'Romanian', 'Slovak', 'Slovenian');\r\n }\r\n if (!pageContext.Permissions.IsAdsGlobalizationPhase2Enabled) {\r\n languageOptions.languages = _.without(languageOptions.languages, 'Turkish', 'Serbian', 'Bosnian', 'Albanian', 'Macedonian', 'Icelandic');\r\n }\r\n if (!pageContext.Permissions.IsAdsGlobalizationPhase6Enabled) {\r\n languageOptions.languages = _.without(languageOptions.languages, 'Hebrew', 'Arabic', 'Russian');\r\n }\r\n if (!pageContext.Permissions.IsAdsGlobalizationPhase2JapanEnabled) {\r\n languageOptions.languages = _.without(languageOptions.languages, 'Japanese');\r\n }\r\n if (!pageContext.Permissions.IsAdsGlobalizationPhase9Enabled) {\r\n languageOptions.languages = _.without(languageOptions.languages, 'Hindi', 'Malay', 'Thai', 'Indonesian', 'Tagalog');\r\n }\r\n if (!pageContext.Permissions.IsAdsGlobalizationPhase9VIEnabled) {\r\n languageOptions.languages = _.without(languageOptions.languages, 'Vietnamese');\r\n }\r\n if (pageContext.Permissions.IsDomesticSimplifiedChineseEnabled) {\r\n languageOptions.languages = ['SimplifiedChinese'];\r\n }\r\n if (this.inCampaignEditing()) {\r\n languageOptions.selectedLanguages = this.options.Languages || [];\r\n }\r\n languageOptions.activityLogger = this.options.activityLogger;\r\n languageOptions.scenario = this.options.scenario;\r\n this.language = new MultiLanguage(languageOptions);\r\n this.language.on('selectedLanguages:changed', function () {\r\n this.validateMultipleLanguage();\r\n }, this);\r\n },\r\n instantiateLocationTargetsView: function () {\r\n const isWindowsStoreAd = this.options.campaignSubType == 'ShoppingSponsoredProductAd' && this.isWindowsStoreAdsEnabled;\r\n var options = {\r\n scenario: this.options.scenario,\r\n campaignId: Number(this.options.Id),\r\n hideAudience: this.ko_model.isAudienceCampaignCreate(),\r\n popupIds: this.popupIds,\r\n campaign: this.options,\r\n showInitialUiBlocker: this.options.showInitialUiBlocker,\r\n activityLogger: this.options.activityLogger,\r\n deps: {\r\n eventDelegator: this.eventDelegator\r\n },\r\n physicalIntent: isWindowsStoreAd ? physicalIntentOptions.PeopleIn : undefined,\r\n isForVNext: this.options.isForVNext,\r\n supportCashbackSettings: personalizedOfferUtils.shouldSupportCashbackSettings(this.options, pageContext.Permissions),\r\n showPhysicalIntentView: !isWindowsStoreAd\r\n };\r\n if (!this.isMultipleLanguageEnabledIncampaign()) {\r\n options.campaignLanguage = this.language.koModel.language();\r\n } else {\r\n options.languageSelector = this.language;\r\n }\r\n this.locationTargetsView = new LocationTargetsView(options);\r\n },\r\n willShow: function () {\r\n window.scrollTo(0, 0);\r\n var context = this.options.context.get('Campaign');\r\n if (!_.isEmpty(context)) {\r\n this.ko_model.Id(context.Id);\r\n }\r\n var budgetDraft = this.options.context.get('Draft.Budget');\r\n this.initBudgetView(_.isEmpty(budgetDraft) ? this.options.Budget : budgetDraft);\r\n if (this.budget) {\r\n this.$('.budget').empty().append(this.budget.render().$el);\r\n this.setupBudgetValidationForCostPerSale();\r\n }\r\n if (!_.isEmpty(budgetDraft)) {\r\n this.budget && this.budget.update(budgetDraft);\r\n }\r\n this.initDisclaimerUI();\r\n this.ko_model.hasChanges(false);\r\n var hasDSASettings = context && context.DomainName;\r\n if (hasDSASettings && this.dsaSettingsView) {\r\n this.ko_model.enableMixedModeDSASettings(false);\r\n this.ko_model.isMixedModeDSASettingsChecked(true);\r\n this.dsaSettingsView.setValues({\r\n disabled: true,\r\n DomainLanguage: _.result(context, 'Language'),\r\n DomainName: _.result(context, 'DomainName'),\r\n Source: _.result(context, 'Source'),\r\n campaignId: context.Id,\r\n targetingSourceCampaignId: context.Id,\r\n dynamicDescriptionEnabled: _.result(context, 'DynamicDescriptionEnabled', false)\r\n });\r\n }\r\n },\r\n isNotAudienceCampaign: function () {\r\n return _.contains(['campaign-settings', 'shopping-creation-workflow'], this.options.scenario) && campaignType.default() !== 'audience';\r\n },\r\n greyOutBudgetIfExperiment: function () {\r\n if (this.options.scenario !== 'campaign-settings') {\r\n return;\r\n }\r\n if (_.result(pageContext.CurrentCampaign, 'ExperimentId')) {\r\n this.$('.budget input').attr('disabled', true);\r\n this.experimentBudgetAlert = new ExperimentBudgetAlert({\r\n experimentId: pageContext.CurrentCampaign.ExperimentId\r\n });\r\n this.$('.budget-alert').html(this.experimentBudgetAlert.el);\r\n } else if (pageContext.Permissions.IsExperimentsEnabled && campaignType.default() === 'search') {\r\n jsdata.Experiment.findAll({\r\n query: {\r\n $select: 'Id',\r\n $filter: '(Status eq Enum.ExperimentStatus\\'Active\\' or Status eq Enum.ExperimentStatus\\'Scheduled\\')',\r\n $top: 1,\r\n $count: true\r\n }\r\n }, {\r\n entitySet: edm.currentCampaign.Experiments\r\n }).then((function (response) {\r\n if (response.totalCount) {\r\n this.experimentBudgetAlert = new ExperimentBudgetAlert({\r\n campaignId: pageContext.CurrentCampaign.Id\r\n });\r\n this.$('.budget-alert').html(this.experimentBudgetAlert.el);\r\n }\r\n }).bind(this));\r\n }\r\n },\r\n initDSASettingsView: function () {\r\n if (this.ko_model.isMixedDSACampaignCreate() || this.ko_model.isMixedDSACampaignRecommendation) {\r\n var dsaSettings = _.find(this.options.CampaignSettings, setting => setting['@odata.type'] === '#Model.DynamicSearchAdsSetting') || _.first(this.options.CampaignSettings);\r\n var hasDSASettings = dsaSettings ? !!dsaSettings.DomainName : false;\r\n var defaultDSADomainName = localStorage.get('DSACampaignDefaultWebsite') || '';\r\n this.dsaSettingsView = new DSASettingsView({\r\n DomainLanguage: _.result(dsaSettings, 'Language', 'English'),\r\n DomainName: _.result(dsaSettings, 'DomainName', defaultDSADomainName),\r\n Source: _.result(dsaSettings, 'Source', 'SystemIndex'),\r\n campaignId: this.ko_model.Id(),\r\n logActivity: this.logActivity.bind(this),\r\n popupIds: this.popupIds,\r\n disabled: !this.ko_model.isMixedDSACampaignRecommendation && hasDSASettings,\r\n isCampaignSettingsScenario: this.options.scenario === 'campaign-settings',\r\n dynamicDescriptionEnabled: hasDSASettings ? _.result(dsaSettings, 'DynamicDescriptionEnabled', false) : true,\r\n isMixedDSACampaignRecommendation: this.ko_model.isMixedDSACampaignRecommendation\r\n });\r\n this.ko_model.enableMixedModeDSASettings(!hasDSASettings);\r\n this.ko_model.isMixedModeDSASettingsChecked(hasDSASettings);\r\n this.ko_model.isMixedModeDSASettingsChecked.subscribe((function (checked) {\r\n this.logActivity(`DSA settings changed: ${checked ? 'enabled' : 'disabled'}`);\r\n }).bind(this));\r\n }\r\n },\r\n initRSASettingsView: function () {\r\n if (this.hasRsaAutoAssets()) {\r\n this.rsaSettings = _.find(this.options.CampaignSettings, setting => setting['@odata.type'] === '#Model.ResponsiveSearchAdsSetting');\r\n var isRsaAutoAssetsSettingChecked = this.rsaSettings ? !!this.rsaSettings.AutoGeneratedAssetsEnabled : false;\r\n this.ko_model.isRsaAutoAssetsSettingChecked(isRsaAutoAssetsSettingChecked);\r\n }\r\n },\r\n initBroadOnlyView: function () {\r\n if (this.hasBroadOnlySetting()) {\r\n const isBroadMatchOnlyCampaign = _.result(this.options, 'IsBroadMatchOnlyCampaign', false);\r\n this.isBroadMatchOnlyCampaign = isBroadMatchOnlyCampaign;\r\n this.ko_model.isBroadOnlySettingChecked(isBroadMatchOnlyCampaign);\r\n if (this.biddingStrategyView) {\r\n this.biddingStrategyView.viewModel.isBroadMatchOnlyCampaign(isBroadMatchOnlyCampaign);\r\n }\r\n }\r\n },\r\n render: function () {\r\n this.$el.html(tmpl({\r\n i18n: i18n,\r\n isSignUpPage: this.isSignUpPage,\r\n showLanguage: this.options.showLanguage,\r\n isOppotunityCampaignLevel: this.options.isOppotunityCampaignLevel,\r\n IsCampaignMultipleLanguageEnabled: this.isMultipleLanguageEnabledIncampaign(),\r\n isExperiment: this.isExperiment(),\r\n popupIds: this.popupIds,\r\n IsDomesticSimplifiedChineseEnabled: this.options.IsDomesticSimplifiedChineseEnabled\r\n }));\r\n ko.applyBindings(this.ko_model, this.el);\r\n if (this.budget) {\r\n this.$('.budget').empty().append(this.budget.render().$el);\r\n this.setupBudgetValidationForCostPerSale();\r\n }\r\n if (this.dsaSettingsView) {\r\n if (this.ko_model.isMixedDSACampaignCreate()) {\r\n this.$('.dsa-settings-container').empty().append(this.dsaSettingsView.render().$el);\r\n } else {\r\n this.$('.dsa-container').empty().append(this.dsaSettingsView.render().$el);\r\n }\r\n }\r\n if (this.cashbackSettingsView) {\r\n this.$('.cashback-settings-container').empty().append(this.cashbackSettingsView.render().$el);\r\n }\r\n if (this.ImpressionTrackingView) {\r\n this.$('.audienceSettings__container').empty().append(this.ImpressionTrackingView.render().$el);\r\n }\r\n this.greyOutBudgetIfExperiment();\r\n this.$('.language-setting').empty().html(this.language.render().el);\r\n if (this.biddingStrategyView && !this.options.hideBidStrategy) {\r\n this.$('.bidding-strategy__container').empty().html(this.biddingStrategyView.render().el);\r\n }\r\n if (this.options.scenario !== 'smart-shopping-campaign-creation-workflow') {\r\n this.locationTargetsPromise = jsdata.Intermediate.refresh('CampaignCriterion', []).then((function () {\r\n this.instantiateLocationTargetsView();\r\n if (!this.isNotAudienceCampaign()) {\r\n this.$('.location-targets').empty().append(this.locationTargetsView.render().$el);\r\n }\r\n }).bind(this));\r\n }\r\n if (this.copySettings) {\r\n this.$('.copy-campaign-settings').empty().append(this.copySettings.render().$el);\r\n }\r\n this.$('.campaign-settings__container')[0].addEventListener('change', (function () {\r\n this.ko_model.hasChanges(true);\r\n }).bind(this), false);\r\n jsdata.Intermediate.subscribe('CampaignCriterion', (function () {\r\n this.ko_model.hasChanges(true);\r\n }).bind(this));\r\n this.initDisclaimerUI();\r\n this.initAutoAssetsUI();\r\n this.initBroadOnlyUI();\r\n this.initVanityUrlSettings();\r\n this.trigger('didMount');\r\n return this;\r\n },\r\n hasChanges: function () {\r\n return this.ko_model.hasChanges();\r\n },\r\n copyFromCampaign: function (source) {\r\n if (!_.isArray(source)) {\r\n return;\r\n }\r\n const isWindowsStoreAd = this.options.campaignSubType == 'ShoppingSponsoredProductAd' && this.isWindowsStoreAdsEnabled;\r\n if (!_.isEmpty(source[0])) {\r\n var campaign = source[0];\r\n if ((campaign.Budget.Type === 'DailyStandard' || campaign.Budget.Type === 'DailyAccelerated' || campaign.Budget.Id > 0) && !(campaign.Budget.Id > 0 && isWindowsStoreAd)) {\r\n this.budget && this.budget.update(campaign.Budget);\r\n }\r\n this.BiddingScheme = campaign.BiddingScheme;\r\n this.trigger('copy.campaign', campaign);\r\n if (this.ko_model.isMixedDSACampaignCreate()) {\r\n var dsaSettings = _.find(campaign.CampaignSettings, setting => setting['@odata.type'] === '#Model.DynamicSearchAdsSetting');\r\n var domainName = _.result(dsaSettings, 'DomainName', null);\r\n var domainLanguage = _.result(dsaSettings, 'Language', null);\r\n var dsaSource = _.result(dsaSettings, 'Source', null);\r\n var dynamicDescriptionEnabled = _.result(dsaSettings, 'DynamicDescriptionEnabled', false);\r\n if (this.dsaSettingsView && (this.ko_model.isMixedDSACampaignCreate() && this.ko_model.enableMixedModeDSASettings())) {\r\n if (domainName) {\r\n this.ko_model.isMixedModeDSASettingsChecked(true);\r\n this.dsaSettingsView.setValues({\r\n DomainName: domainName,\r\n DomainLanguage: domainLanguage,\r\n Source: dsaSource,\r\n dynamicDescriptionEnabled,\r\n targetingSourceCampaignId: campaign.Id\r\n });\r\n } else {\r\n this.ko_model.isMixedModeDSASettingsChecked(false);\r\n }\r\n }\r\n }\r\n if (this.hasRsaAutoAssets()) {\r\n var rsaSettings = _.find(campaign.CampaignSettings, setting => setting['@odata.type'] === '#Model.ResponsiveSearchAdsSetting');\r\n var isRsaAutoAssetsSettingChecked = _.result(rsaSettings, 'AutoGeneratedAssetsEnabled', false);\r\n this.ko_model.isRsaAutoAssetsSettingChecked(isRsaAutoAssetsSettingChecked);\r\n }\r\n if (this.hasBroadOnlySetting()) {\r\n var isBroadMatchOnlyCampaign = _.result(campaign, 'IsBroadMatchOnlyCampaign', false);\r\n this.ko_model.isBroadOnlySettingChecked(isBroadMatchOnlyCampaign);\r\n }\r\n if (this.isMultipleLanguageEnabledIncampaign() && !_.isEmpty(campaign.Languages)) {\r\n this.language.koModel.selectedLanguages(campaign.Languages);\r\n }\r\n if (this.hasDisclaimer()) {\r\n this.disclaimerProps.DisclaimerAdsEnabled = _.result(_.find(campaign.CampaignSettings, function (setting) {\r\n return setting['@odata.type'] === '#Model.DisclaimerSetting';\r\n }), 'DisclaimerAdsEnabled', false);\r\n }\r\n if (this.cashbackSettingsView) {\r\n var CashbackPercent = _.chain(campaign).result('CampaignCashback').result('Percent').value();\r\n var CashbackScope = _.chain(campaign).result('CampaignCashback').result('Scope').value();\r\n var CashbackMonthlyBudget = _.chain(campaign).result('CampaignCashback').result('MonthlyBudget').value();\r\n var PersonalizedOffersEnabled = _.chain(campaign).result('CampaignCashback').result('PersonalizedOffersEnabled').value();\r\n var CouponsEnabled = _.chain(campaign).result('CampaignCashback').result('CouponsEnabled').value();\r\n this.cashbackSettingsView.setValues({\r\n PersonalizedOffersEnabled: PersonalizedOffersEnabled,\r\n CashbackPercent: CashbackPercent,\r\n CashbackScope: CashbackScope,\r\n CashbackMonthlyBudget: CashbackMonthlyBudget,\r\n CouponsEnabled: CouponsEnabled\r\n });\r\n }\r\n var isPromotionsForBrands = _.chain(campaign).result('CampaignCashback').result('IsPromotionsForBrands').value();\r\n this.ko_model.isSponsoredCampaignCashbackOptedIn(isPromotionsForBrands === true);\r\n }\r\n if (!_.isEmpty(source[1]) && _.isArray(source[1]) && !isWindowsStoreAd) {\r\n var criterions = source[1];\r\n criterions = _.map(criterions, function (criterion) {\r\n return _.omit(criterion, 'Id', 'Campaign');\r\n });\r\n this.locationTargetsView.setLocationData(criterions, 'campaign', true, true);\r\n }\r\n if (this.hasDisclaimer() && !_.isEmpty(source[2]) && _.isArray(source[2]) && source[2].length > 0) {\r\n this.disclaimerProps.selectedDisclaimer = source[2][0];\r\n }\r\n if (this.hasDisclaimer()) {\r\n this.renderDisclaimerUI();\r\n }\r\n },\r\n isCreationScenario: function () {\r\n return this.options.scenario === 'creation-workflow' || this.options.scenario === 'shopping-creation-workflow';\r\n },\r\n validateViewModel: function () {\r\n var isValid = this.ko_model.validate();\r\n if (!isValid) {\r\n _.each(this.ko_model.campaignProps, function (field) {\r\n if (!this.ko_model[field].isValid()) {\r\n this.logActivity('campaign field invalid: ' + field);\r\n }\r\n }, this);\r\n }\r\n return isValid;\r\n },\r\n isDSASettingsAvailable: function () {\r\n return this.dsaSettingsView && (this.ko_model.isMixedDSACampaignRecommendation || this.ko_model.isMixedDSACampaignCreate() && this.ko_model.isMixedModeDSASettingsChecked());\r\n },\r\n validate: function () {\r\n return _.reduce([this.validateViewModel(), this.isDSASettingsAvailable() ? this.dsaSettingsView.validate() : true, this.budget && !this.options.isOppotunityCampaignLevel ? this.budget.validate() : true, this.locationTargetsView && !this.options.isOppotunityCampaignLevel ? this.locationTargetsView.validate() : true, this.biddingStrategyView ? this.biddingStrategyView.validate() : true, this.isMultipleLanguageEnabledIncampaign() ? this.validateMultipleLanguage() : true, this.disclaimer ? this.disclaimer.current.validate() : true, this.cashbackSettingsView ? this.cashbackSettingsView.validate() : true, this.validateVerifiedImpressionTracking()], function (prev, next) {\r\n return prev && next;\r\n }, true);\r\n },\r\n shouldCancel: function () {\r\n return this.save();\r\n },\r\n shouldNext: function () {\r\n return this.save();\r\n },\r\n getPropertyValidationErrors: function () {\r\n var model = this.ko_model;\r\n var campaignProps = model.campaignProps;\r\n var propErrors = {};\r\n campaignProps.forEach(function (prop) {\r\n var errorsOfPropery = model[prop] && model[prop].errors ? model[prop].errors() : [];\r\n propErrors[prop] = errorsOfPropery;\r\n });\r\n if (this.budget && !this.budget.validate()) {\r\n propErrors = _.defaults({}, propErrors, {\r\n budget: ['Budget invalid']\r\n });\r\n }\r\n if (this.biddingStrategyView && !this.biddingStrategyView.validate()) {\r\n propErrors = _.defaults({}, propErrors, this.biddingStrategyView.getErrorMessages());\r\n }\r\n return propErrors;\r\n },\r\n getAllLocations: function () {\r\n if (!this.locationTargetsView) return null;\r\n var modelInfo = this.ko_model.toObject();\r\n var allLocationTargets = this.locationTargetsView.getValues({}, {\r\n keepAllLocations: true,\r\n populateParentField: true,\r\n removeNegativeId: true,\r\n campaignId: this.ko_model.Id() || modelInfo.Id,\r\n campaignName: modelInfo.Name\r\n });\r\n return allLocationTargets.locations.concat(allLocationTargets.intent || []);\r\n },\r\n getData: function () {\r\n if (this.ImpressionTrackingView) {\r\n this.ImpressionTrackingView.IASInputChange();\r\n }\r\n if (!this.validate()) {\r\n return false;\r\n }\r\n this.ko_model.errors.clear(i18nErrors.isCampaignApiError);\r\n var params = this.ko_model.toObject();\r\n var dsaSettings = this.isDSASettingsAvailable() ? this.dsaSettingsView.getValues() : {};\r\n params = _.extend(params, dsaSettings);\r\n if (this.hasRsaAutoAssets()) {\r\n const originAutoGeneratedAsset = _.result(this.rsaSettings, 'AutoGeneratedAssetsEnabled', false);\r\n const isAutoGeneratedAssetsChanged = this.options.scenario === 'creation-workflow' || this.ko_model.isRsaAutoAssetsSettingChecked() !== originAutoGeneratedAsset && this.options.scenario === 'campaign-settings';\r\n var rsaAutoGeneratedAssetsSettings = isAutoGeneratedAssetsChanged ? {\r\n AutoGeneratedAssetsEnabled: this.ko_model.isRsaAutoAssetsSettingChecked()\r\n } : {};\r\n params = _.extend({}, params, rsaAutoGeneratedAssetsSettings);\r\n }\r\n if (this.hasBroadOnlySetting()) {\r\n const isBroadMatchOnlyCampaign = this.ko_model.isBroadOnlySettingChecked();\r\n const originBroadOnly = this.isBroadMatchOnlyCampaign;\r\n const isBroadMatchOnlyCampaignChanged = this.options.scenario === 'creation-workflow' || isBroadMatchOnlyCampaign !== originBroadOnly && this.options.scenario === 'campaign-settings';\r\n const broadOnlySetting = isBroadMatchOnlyCampaignChanged ? {\r\n IsBroadMatchOnlyCampaign: isBroadMatchOnlyCampaign\r\n } : {};\r\n if (isBroadMatchOnlyCampaign) {\r\n const associations = [], campaignId = pageContext.CurrentCampaign && pageContext.CurrentCampaign.Id, campaignName = params.Name;\r\n const savedBrandListIds = this.ko_model.savedBrandListIds();\r\n this.ko_model.addedBrandListIds().forEach(id => {\r\n if (!savedBrandListIds.filter(v => v.Status === 'Active').map(v => v.id).includes(id)) {\r\n associations.push({\r\n SharedEntityId: id,\r\n EntityId: campaignId,\r\n CampaignName: campaignName,\r\n Status: 'Active'\r\n });\r\n }\r\n });\r\n this.ko_model.deletedBrandListIds().forEach(id => {\r\n if (!savedBrandListIds.filter(v => v.Status === 'Deleted').map(v => v.id).includes(id)) {\r\n associations.push({\r\n SharedEntityId: id,\r\n EntityId: campaignId,\r\n CampaignName: campaignName,\r\n Status: 'Deleted'\r\n });\r\n }\r\n });\r\n broadOnlySetting.BrandListsAssociations = associations;\r\n }\r\n params = _.extend({}, params, broadOnlySetting);\r\n }\r\n if (this.budget) {\r\n params.Budget = this.budget.getValues(params);\r\n }\r\n if (this.ko_model.Id()) {\r\n params.Id = this.ko_model.Id();\r\n }\r\n if (this.options.scenario === 'campaign-settings' || this.options.scenario === 'smart-shopping-campaign-creation-workflow') {\r\n params = _.omit(params, 'TimeZone', 'Language');\r\n if (this.biddingStrategyView) {\r\n const biddingSchema = this.biddingStrategyView.getValues();\r\n params.BiddingScheme = biddingSchema;\r\n const autoTargetingDefault = this.autoTargetingSettings.PredictiveTargetingEnabled || false;\r\n if (pageContext.Permissions.dynamic.RSABidStrategyAutoTargeting && !pageContext.Permissions.dynamic.PredictiveMatching && campaignType.default() === 'search' && !!biddingSchema.AutoTargetingEnabled !== autoTargetingDefault) {\r\n params.AutoTargetingEnabled = biddingSchema.AutoTargetingEnabled || false;\r\n }\r\n }\r\n } else if (this.options.scenario === 'creation-workflow') {\r\n params.AdScheduleUseSearcherTimeZone = false;\r\n }\r\n if (this.isMultipleLanguageEnabledIncampaign()) {\r\n params.Languages = this.language.getSelectedLanguages();\r\n }\r\n if (this.targetingSource) {\r\n params.Source = this.ko_model.TargetingSourceSetting().Source;\r\n }\r\n if (this.locationTargetsView) {\r\n var targets = this.locationTargetsView.getValues({}, {\r\n populateParentField: true,\r\n removeNegativeId: true,\r\n campaignId: params.Id,\r\n campaignName: params.Name\r\n });\r\n params.CampaignCriterions = campaignType.default() !== 'audience' ? targets.deletedLocations.concat(targets.locations).concat(targets.intent) : targets.deletedLocations.concat(targets.locations);\r\n params.CampaignCriterions = _.map(params.CampaignCriterions, function (criterion) {\r\n return _.pick(criterion, _.keys(s$CampaignCriterion.properties));\r\n });\r\n }\r\n if (this.disclaimer) {\r\n var disclaimerSettings = this.disclaimer.current.getValues(params.Name);\r\n const disclaimerDefaultSettings = _.find(this.options.CampaignSettings, function (setting) {\r\n return setting['@odata.type'] === '#Model.DisclaimerSetting';\r\n });\r\n const createScenario = this.options.scenario === 'creation-workflow';\r\n if (createScenario) {\r\n _.defaults(params, disclaimerSettings);\r\n if (this.disclaimerProps.selectedDisclaimer) {\r\n params.DisclaimerAdsEnabled = !!this.disclaimerProps.DisclaimerAdsEnabled;\r\n }\r\n } else {\r\n const originalDisclaimerSetting = _.result(disclaimerDefaultSettings, 'DisclaimerAdsEnabled', false);\r\n const selectedDisclaimerId = _.result(this.disclaimer.current.state.selectedDisclaimer, 'Id', null);\r\n const originalDisclaimerId = _.result(this.disclaimerProps.selectedDisclaimer, 'Id', null);\r\n const isSelectedDisclaimerChanged = disclaimerSettings.DisclaimerAdsEnabled && selectedDisclaimerId && originalDisclaimerId !== selectedDisclaimerId;\r\n if (originalDisclaimerSetting !== disclaimerSettings.DisclaimerAdsEnabled || isSelectedDisclaimerChanged) {\r\n _.defaults(params, disclaimerSettings);\r\n params.DisclaimerAdsEnabled = !!this.disclaimerProps.DisclaimerAdsEnabled;\r\n }\r\n }\r\n if (disclaimerSettings.AdExtensionAssociations && disclaimerSettings.AdExtensionAssociations.length > 0) {\r\n this.ko_model.hasChanges(true);\r\n }\r\n }\r\n if (this.cashbackSettingsView) {\r\n params = _.extend(params, this.cashbackSettingsView.getValues());\r\n if ((pageContext.Permissions.IsPersonalizedOffersV2Enabled || pageContext.Permissions.IsPersonalizedOffersV3Enabled) && !this.biddingStrategyView && this.cashbackSettingsView.viewModel.isEnablePersonalizedOffersChecked()) {\r\n params.BiddingScheme = {\r\n Type: personalizedOfferUtils.getBidStrategyByCampaignTypeWhenPersonalizedOffersEnabled({\r\n campaignType: this.options.campaignType,\r\n i18n: i18n\r\n }).targetBidStrategy\r\n };\r\n }\r\n }\r\n if (this.ImpressionTrackingView) {\r\n params = _.extend(params, {\r\n VerifiedTrackingData: this.IASTrackingInfo\r\n });\r\n }\r\n if (this.showVanityUrlSettings()) {\r\n params = _.extend(params, this.ko_model.vanityUrlSettings());\r\n }\r\n return params;\r\n },\r\n getLocationRecommendationsStatus: function () {\r\n if (this.locationTargetsView) {\r\n return this.locationTargetsView.getLocationRecommendationsStatus();\r\n }\r\n return {};\r\n },\r\n handleCampaignResponse: function (data, hasLocationErrors, params) {\r\n this.ko_model.Id(data.Id);\r\n this.setContext(data.Id, params);\r\n var targetToCountMapping = {};\r\n _.each(data.CampaignCriterions, function (criterion) {\r\n if (criterion.CriterionType !== 'LocationIntentCriterion' && criterion.Id > 0) {\r\n var targetKey = (criterion.Status === 'Active' ? 'create' : 'delete') + criterion.SelectionStatus + criterion.CriterionType + 'Targets';\r\n var count = targetToCountMapping[targetKey];\r\n targetToCountMapping[targetKey] = (_.isUndefined(count) ? 0 : count) + 1;\r\n }\r\n });\r\n for (var target in targetToCountMapping) {\r\n var count = targetToCountMapping[target];\r\n if (count > 0) {\r\n instrumentation.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, target, count);\r\n }\r\n }\r\n if (this.copySettings) {\r\n this.copySettings.hide();\r\n }\r\n if (this.locationTargetsView) {\r\n if (!hasLocationErrors) {\r\n this.locationTargetsView.clearAllErrors();\r\n }\r\n this.locationTargetsView.setCampaignId(data.Id);\r\n var updateLocation = this.locationTargetsView.refreshLocationData().then((function () {\r\n this.locationTargetsView.clearDeletedLocationsList();\r\n return true;\r\n }).bind(this));\r\n }\r\n var updateTargetingSource = this.saveTargetingSource(data.Id);\r\n return Promise.all([updateLocation, updateTargetingSource]).then((function () {\r\n if (this.saveCampaignMarker) {\r\n this.saveCampaignMarker.done();\r\n }\r\n return _.constant(true);\r\n }).bind(this));\r\n },\r\n errorElements: function () {\r\n return this.$('.campaign-settings__container .error, .campaign-settings__container .alert-danger').filter(':visible');\r\n },\r\n validationErrorNode: function () {\r\n return document.querySelector('.validation-error');\r\n },\r\n saveTargetingSource: function (id) {\r\n var retPromise = id && this.dsaSettingsView && this.dsaSettingsView.targetingSource ? this.dsaSettingsView.targetingSource.save(id) : Promise.resolve();\r\n return retPromise.then((function (result) {\r\n if (_.result(pageContext.CurrentCampaign, 'Id') === id) {\r\n var dsaSettings = _.find(pageContext.CurrentCampaign.CampaignSettings, setting => setting['@odata.type'] === '#Model.DynamicSearchAdsSetting');\r\n if (dsaSettings && this.targetingSource) {\r\n dsaSettings.Source = this.targetingSource.koModel.source();\r\n }\r\n }\r\n return result;\r\n }).bind(this));\r\n },\r\n validateVerifiedImpressionTracking: function () {\r\n if (this.isEnabledForVerifiedImpressionTracking) {\r\n if (this.IASTrackingInfo === 'error') {\r\n this.ImpressionTrackingView && this.ImpressionTrackingView.setErrors([i18n.getString('IASImpressionTracking_Invalid')], 'VerifiedImpressionTracking_IAS');\r\n return false;\r\n }\r\n return true;\r\n }\r\n return true;\r\n },\r\n setSavedBrandLists: function (brandListError = {}) {\r\n const savedBrandLists = [];\r\n const shouldFilterErrorCodes = ['CampaignServiceSharedEntityAssociationDoesNotExist', 'CampaignServiceSharedListIdInvalid', 'CampaignServiceFutureFeatureCode'];\r\n this.ko_model.addedBrandListIds().forEach(id => {\r\n if (!brandListError[id] || shouldFilterErrorCodes.includes(brandListError[id])) {\r\n savedBrandLists.push({\r\n id,\r\n Status: 'Active'\r\n });\r\n }\r\n });\r\n this.ko_model.deletedBrandListIds().forEach(id => {\r\n if (!brandListError[id] || shouldFilterErrorCodes.includes(brandListError[id])) {\r\n savedBrandLists.push({\r\n id,\r\n Status: 'Deleted'\r\n });\r\n }\r\n });\r\n this.ko_model.savedBrandListIds(savedBrandLists);\r\n },\r\n save: function () {\r\n var params = this.getData();\r\n if (!params) {\r\n scrollUtil.scrollAndCenter(this.errorElements());\r\n const node = this.validationErrorNode();\r\n if (node) {\r\n node.focus();\r\n }\r\n return false;\r\n }\r\n if (this.options && this.options.perfMarker) {\r\n this.saveCampaignMarker = this.options.perfMarker.createChild('Save_Campaign');\r\n this.saveCampaignMarker.willInit();\r\n }\r\n return jsdata.Campaign.create(params, {\r\n adapter: 'bulk',\r\n cacheResponse: false\r\n }).then((function (data) {\r\n if (_.isFinite(data.Id)) {\r\n var isCreate = this.isCreationScenario() && !this.ko_model.isAfterSave();\r\n var message = isCreate ? 'createCampaign' : 'updateCampaign';\r\n instrumentation.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, isCreate ? 'createCampaign' : 'updateCampaign', '1');\r\n this.logActivity(message);\r\n personalizedOfferUtils.logCampaignPersonalizedOffers(this.shouldShowCashbackSettings, this.logActivity.bind(this), data, `${message}.`);\r\n summaryDataContextManager.getContext('/campaign/NewCampaign/Create?');\r\n this.eventDelegator && this.eventDelegator.trigger('campaignReload');\r\n this.setSavedBrandLists();\r\n return this.handleCampaignResponse(data, false, params);\r\n } else {\r\n this.handleApiErrors();\r\n scrollUtil.scrollAndCenter(this.errorElements());\r\n return false;\r\n }\r\n }).bind(this)).catch((function (response) {\r\n if (response && response.entity) {\r\n var errorsByEntity = {};\r\n var hasErrors = response && !_.isUndefined(response.errors);\r\n var hasLocationErrors = false;\r\n var hasEntityCreated = response && response.entity && !_.isUndefined(response.entity.Id);\r\n if (hasErrors) {\r\n errorsByEntity = this.separateErrors(response.errors);\r\n hasLocationErrors = errorsByEntity.location.length > 0;\r\n }\r\n if (hasEntityCreated) {\r\n this.handleCampaignResponse(response.entity, hasLocationErrors);\r\n }\r\n if (hasErrors) {\r\n if (errorsByEntity.campaign.length) {\r\n this.getAndHandleApiErrors(errorsByEntity.campaign);\r\n } else {\r\n this.locationTargetsView.handleApiErrors(errorsByEntity.location);\r\n }\r\n if (errorsByEntity.brandlist.length) {\r\n this.getAndHandleApiErrors(errorsByEntity.brandlist);\r\n const errMap = errorsByEntity.brandlist.reduce((acc, err) => {\r\n acc[err.Id] = acc[err.Error];\r\n return acc;\r\n }, {});\r\n this.setSavedBrandLists(errMap);\r\n }\r\n } else {\r\n this.handleApiErrors();\r\n }\r\n } else {\r\n this.ko_model.errors.add(response ? i18nErrors.getODataErrors(response.errors) : undefined);\r\n }\r\n this.scrollToErrors();\r\n return false;\r\n }).bind(this)).finally(withUiBlock());\r\n },\r\n setContext: function (campaignId, params) {\r\n var contextCampaign = this.ko_model.getValues();\r\n var dsaSettings = this.isDSASettingsAvailable() ? this.dsaSettingsView.getValues(true) : {};\r\n _.extend(contextCampaign, {\r\n Id: campaignId\r\n }, dsaSettings);\r\n if (_.isUndefined(contextCampaign.Language)) {\r\n if (!this.isMultipleLanguageEnabledIncampaign()) {\r\n _.extend(contextCampaign, {\r\n Language: this.language.koModel.language()\r\n });\r\n }\r\n }\r\n if (this.isMultipleLanguageEnabledIncampaign()) {\r\n _.extend(contextCampaign, {\r\n Languages: this.language.getSelectedLanguages()\r\n });\r\n }\r\n if (this.budget) {\r\n contextCampaign.Budget = this.budget.getValues(contextCampaign);\r\n }\r\n if (this.BiddingScheme) {\r\n contextCampaign.BiddingScheme = this.BiddingScheme;\r\n }\r\n if (_.isObject(this.options.context)) {\r\n var context = {\r\n Campaign: contextCampaign,\r\n CampaignParams: params\r\n };\r\n if (this.budget) {\r\n context['Draft.Budget'] = _.extend({}, contextCampaign.Budget);\r\n }\r\n if (this.disclaimer) {\r\n context['Draft.Disclaimer'] = _.pick(this.disclaimer.current.getValues(contextCampaign.Name), 'DisclaimerAdsEnabled');\r\n } else {\r\n delete context['Draft.Disclaimer'];\r\n }\r\n this.options.context.set(context);\r\n }\r\n if (this.cashbackSettingsView) {\r\n var cashbackSettings = this.cashbackSettingsView.getValues();\r\n contextCampaign['CampaignCashback'] = {\r\n Percent: cashbackSettings.CashbackPercent === -1 ? null : cashbackSettings.CashbackPercent,\r\n MonthlyBudget: cashbackSettings.CashbackMonthlyBudget,\r\n Scope: cashbackSettings.CashbackScope,\r\n PersonalizedOffersEnabled: cashbackSettings.PersonalizedOffersEnabled,\r\n CouponsEnabled: cashbackSettings.CouponsEnabled\r\n };\r\n }\r\n },\r\n separateErrors: function (errors) {\r\n const errMap = {\r\n campaign: [],\r\n location: [],\r\n brandlist: []\r\n };\r\n errors.forEach(err => {\r\n if (err.Type === 'Campaign Error') {\r\n errMap.campaign.push(err);\r\n return;\r\n }\r\n if (err.Type === 'Campaign Brand List Association Error') {\r\n errMap.brandlist.push(err);\r\n return;\r\n }\r\n errMap.location.push(err);\r\n });\r\n return errMap;\r\n },\r\n handleApiErrors: function (errors) {\r\n if (this.dsaSettingsView) {\r\n const domainNameError = _.filter(errors, function (err) {\r\n return err.property === 'DomainName';\r\n });\r\n errors = _.filter(errors, function (err) {\r\n return err.property !== 'DomainName';\r\n });\r\n this.dsaSettingsView.handleApiErrors(domainNameError);\r\n }\r\n this.ko_model.errors.add(errors);\r\n if (this.ko_model.isAfterSave()) {\r\n if (this.locationTargetsView) {\r\n this.locationTargetsView.setCampaignId(this.ko_model.Id());\r\n this.locationTargetsView.handleApiErrorsForCampaignLevel().then((function () {\r\n this.locationTargetsView.clearDeletedLocationsList();\r\n }).bind(this));\r\n }\r\n }\r\n },\r\n getBulkApiErrors: function (errors) {\r\n return i18nErrors.getBulkApiErrors(errors);\r\n },\r\n getAndHandleApiErrors: function (errors) {\r\n this.handleApiErrors(this.getBulkApiErrors(errors));\r\n _.chain(errors).map(function (error) {\r\n return error.Error;\r\n }).uniq().each(function (error) {\r\n this.logActivity(error, 'campaign creation api errors');\r\n }, this);\r\n },\r\n scrollToErrors: function () {\r\n scrollUtil.scrollAndCenter(this.errorElements());\r\n },\r\n clearApiErrors: function () {\r\n this.ko_model.errors.clear(i18nErrors.isCampaignApiError);\r\n },\r\n remove: function () {\r\n if (this.locationTargetsView) {\r\n this.locationTargetsView.remove();\r\n }\r\n if (this.targetingSource) {\r\n this.targetingSource.remove();\r\n }\r\n if (this.experimentBudgetAlert) {\r\n this.experimentBudgetAlert.remove();\r\n }\r\n if (this.disclaimer) {\r\n ReactDOM.unmountComponentAtNode(this.$('.disclaimer__container').get(0));\r\n this.disclaimer = null;\r\n }\r\n if (this.showVanityUrlSettings()) {\r\n ReactDOM.unmountComponentAtNode(this.$('.vanity-url-option').get(0));\r\n }\r\n Backbone.View.prototype.remove.apply(this, arguments);\r\n },\r\n disableLanguage: function () {\r\n if (!this.isMultipleLanguageEnabledIncampaign()) {\r\n this.language.koModel.disabled(true);\r\n }\r\n },\r\n events: {\r\n 'change input.name': 'campaignNameChange'\r\n },\r\n campaignNameChange: function () {\r\n this.logActivity('crud campaign campaign name change.');\r\n },\r\n initBudgetView: function (model) {\r\n var budgetFactory = SharedBudgetView.newFactory(Budget);\r\n var BCCBudgetImprovementEnabled = pageContext.Permissions && pageContext.Permissions.dynamic && pageContext.Permissions.dynamic.BCCBudgetImprovementEnabled;\r\n var showBudgetMinRecommend = BCCBudgetImprovementEnabled && (this.options.scenario === 'campaign-settings' || this.options.scenario === 'smart-shopping-campaign-creation-workflow' && this.options.Budget);\r\n var minimumBudget = model && model.Amount ? model.Amount * 0.5 : undefined;\r\n var currencySymbol = this.options.deps && this.options.deps.i18nNewDesign ? this.options.deps.i18nNewDesign.getCurrencySymbol(pageContext.AccountCurrencyCode) : pageContext.AccountCurrencyCode;\r\n this.budget = budgetFactory({\r\n model: model,\r\n accountCurrencyCode: pageContext.AccountCurrencyCode,\r\n showBudgetMinRecommend,\r\n minimumBudget,\r\n currencySymbol,\r\n showInitialUiBlocker: this.options.showInitialUiBlocker,\r\n perfMarker: this.showCampaignSettingMarker,\r\n noApplyBudgetFromSharedLibrary: this.options.scenario === 'smart-shopping-campaign-creation-workflow' || this.options.campaignSubType == 'ShoppingSponsoredProductAd' && this.isWindowsStoreAdsEnabled,\r\n hideDailyBudgetOptions: this.options.campaignSubType == 'ShoppingSponsoredProductAd' && this.isWindowsStoreAdsEnabled && this.isWindowsStoreAdsManualCPAEnabled,\r\n activityLogger: this.options.activityLogger\r\n });\r\n },\r\n updateBidStrategy: function (isCoOpCampaign) {\r\n if (this.biddingStrategyView) {\r\n if (!isCoOpCampaign && this.cashbackSettingsView && this.cashbackSettingsView.viewModel.isEnablePersonalizedOffersChecked()) {\r\n this.setBidStrategyForPersonalizedOffersV2({\r\n enabled: true\r\n });\r\n return;\r\n }\r\n this.biddingStrategyView.updateBidStrategy(isCoOpCampaign);\r\n }\r\n }\r\n});\r\nexport default View;\r\n\r\n","/*eslint new-cap:0 */\r\n/*eslint no-useless-escape:0 */\r\nimport _ from 'underscore';\r\nimport koSchema from '@bingads-webui-component-legacy/ko-schema/index';\r\n\r\nconst s$Keyword = window.globalLegacySchema.get('Keyword');\r\n\r\nexport const parseKeyword = (text) => {\r\n let matchType = '';\r\n let keyword = text;\r\n\r\n if (/^\".*\"$/.test(text)) {\r\n keyword = text.replace(/\\\"/g, '');\r\n matchType = 'Phrase';\r\n } else if (/^\\[.*\\]$/.test(text)) {\r\n keyword = text.replace(/(\\[|\\])/g, '');\r\n matchType = 'Exact';\r\n } else {\r\n matchType = 'Broad';\r\n }\r\n\r\n return {\r\n Text: keyword,\r\n MatchType: matchType,\r\n };\r\n};\r\n\r\nexport class ViewModel {\r\n constructor(options = {}) {\r\n this.properties = _.keys(s$Keyword.properties);\r\n\r\n koSchema.properties(this, s$Keyword, this.properties);\r\n\r\n if (_.isEmpty(options.properties)) {\r\n const parsedKeyword = parseKeyword(options.text);\r\n\r\n this.Text(parsedKeyword.Text);\r\n this.MatchType(parsedKeyword.MatchType);\r\n\r\n this.AdGroup({ Id: options.adGroup.Id });\r\n this.AdGroupName(options.adGroup.Name);\r\n\r\n const campaign = options.context ? options.context.get('Campaign') : { };\r\n\r\n this.Campaign({ 'Id': campaign.Id });\r\n this.CampaignName(campaign.Name);\r\n } else {\r\n _.each(options.properties, (value, key) => {\r\n if (_.indexOf(this.properties, key) !== -1) {\r\n this[key](value);\r\n }\r\n });\r\n }\r\n }\r\n}\r\n\r\n","/* eslint-disable */\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport ko_schema from '@bingads-webui-component-legacy/ko-schema/index';\r\nimport instrumentation from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport constants from '@bingads-webui-static-legacy/instrumentation/constants';\r\nvar i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\nvar maxKeywordLength = 100;\r\nvar viewModel = function (isNegativeKeyword, isBmmBlockEnabled = false) {\r\n var self = this;\r\n self.parserSchema = {\r\n properties: {\r\n keywordsTextareaVal: {\r\n type: 'string'\r\n }\r\n }\r\n };\r\n self.isNegativeKeyword = isNegativeKeyword;\r\n self.isBmmBlockEnabled = isBmmBlockEnabled;\r\n self.isAfterFirstInteraction = ko.observable(false);\r\n self.showBmmWarningAlert = ko.observable(false);\r\n self.showMutableKeywordMatchTypAlert = ko.observable(false);\r\n self.showBmmBlockAlert = ko.observable(false);\r\n self.maxKeywords = 1000;\r\n self.numSeedKeywords = 3;\r\n self.seedKeywordTimeout = 2000;\r\n self.seedKeywords = ko.observable();\r\n self.parsedKeywords = ko.observable([]);\r\n self.uniqueParsedKeywords = ko.observable([]);\r\n self.parseKeywords = function (data, e) {\r\n self.isAfterFirstInteraction(true);\r\n var newKeywords = self.peekKeywords();\r\n self.parsedKeywords(newKeywords);\r\n if (_.size(newKeywords) > 0) {\r\n self.uniqueParsedKeywords(_.unique(newKeywords, false, function (keyword) {\r\n return keyword.toLowerCase();\r\n }));\r\n } else {\r\n self.uniqueParsedKeywords([]);\r\n }\r\n self.validate();\r\n return true;\r\n };\r\n self.peekKeywords = function () {\r\n var newKeywords = self.keywordsTextareaVal();\r\n if (!_.isString(newKeywords) || _.isEmpty(newKeywords) || _.isEmpty(newKeywords.replace(/[,\\s]+/, ''))) {\r\n return [];\r\n }\r\n var splitChar = ',';\r\n newKeywords = newKeywords.replace(/((^[,\\s]+)|([,\\s]+$))/g, '');\r\n if (self.isNegativeKeyword) {\r\n newKeywords = newKeywords.replace(',', '%2C');\r\n } else if (newKeywords.indexOf(',') >= 0) {\r\n instrumentation.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, 'createKeyword/parser', 'User has comma in keywords input. Input: ' + newKeywords);\r\n }\r\n newKeywords = newKeywords.replace(/([,\\s]*[\\n\\r\\,]+[,\\s]*)/g, splitChar);\r\n newKeywords = newKeywords.replace(/[\\t ]+(?=\\]|\\)|\\\")/g, '');\r\n newKeywords = newKeywords.replace(/(\\[|\\(|\\\")[\\t ]+/g, '$1');\r\n newKeywords = newKeywords.replace(/\\s+/g, ' ');\r\n var keywords = newKeywords.split(splitChar);\r\n if (self.isNegativeKeyword) {\r\n keywords = _.map(keywords, function (keyword) {\r\n return keyword.replace('%2C', ',');\r\n });\r\n }\r\n return keywords;\r\n };\r\n self.isBmmExist = function (keywords) {\r\n const target = keywords.find(keyword => {\r\n const wordsArr = keyword.split(' ');\r\n return wordsArr.find(words => (/^\\++[^\\+]/i).test(words));\r\n });\r\n return target !== undefined;\r\n };\r\n self.isKeywordsValid = _.partial(function (parser) {\r\n var keywords = parser.parsedKeywords();\r\n if (parser.isAfterFirstInteraction() && !keywords.length > 0) {\r\n this.message = i18n.get('Keyword_Message_NoKeywords');\r\n return false;\r\n }\r\n if (keywords.length > parser.maxKeywords) {\r\n this.message = i18n.get('Keyword_Message_MaxKeywords').replace('{0}', parser.maxKeywords);\r\n return false;\r\n }\r\n this.message = [];\r\n _.each(keywords, function (keyword) {\r\n var text = keyword;\r\n if ((/^\".*\"$/).test(text)) {\r\n text = text.replace(/\\\"/g, '');\r\n } else if ((/^\\[.*\\]$/).test(text)) {\r\n text = text.replace(/(\\[|\\])/g, '');\r\n } else if ((/^\\(.*\\)$/).test(text)) {\r\n text = text.replace(/\\(|\\)/g, '');\r\n }\r\n if (_.size(text) > maxKeywordLength) {\r\n this.message.push(i18n.getString('Keywords_And_Errors_seperator', _.escape(text.substring(0, 100) + '...'), i18n.getString('Keywords_Validation_KeywordTextLengthExceeded', maxKeywordLength)));\r\n }\r\n }, this);\r\n if (_.isArray(this.message) && _.size(this.message) > 0) {\r\n return false;\r\n }\r\n if (!self.isNegativeKeyword && self.isBmmBlockEnabled && self.isBmmExist(keywords)) {\r\n this.message.push(i18n.getString('Keywords_And_Errors_BroadMatchError'));\r\n return false;\r\n }\r\n return true;\r\n }, self);\r\n ko_schema.properties(self, self.parserSchema, ['keywordsTextareaVal'], {}, {\r\n 'keywordsTextareaVal': {\r\n isValid: self.isKeywordsValid,\r\n message: i18n.get('AdGroup_Message_DuplicateKeywords')\r\n }\r\n });\r\n self.reset = function () {\r\n self.keywordsTextareaVal('');\r\n self.parsedKeywords([]);\r\n self.uniqueParsedKeywords([]);\r\n self.seedKeywords(null);\r\n self.isAfterFirstInteraction(false);\r\n self.isKeywordsValid(true);\r\n self.showBmmWarningAlert(false);\r\n self.showMutableKeywordMatchTypAlert(false);\r\n self.showBmmBlockAlert(false);\r\n };\r\n};\r\nexport default viewModel;\r\n\r\n","/* eslint-disable */\r\nimport Backbone from 'backbone';\r\nimport _ from 'underscore';\r\nimport ko from 'knockout';\r\nimport * as i18nErrors from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\nimport * as help from '@bingads-webui-component-legacy/help/index';\r\nimport tmpl from '@bingads-webui-campaign-legacy/crud-keywords/template/create.pug';\r\nimport * as _KeywordViewModel from '@bingads-webui-campaign-legacy/crud-keywords/viewmodel/keyword';\r\nimport parserViewModel from '@bingads-webui-campaign-legacy/crud-keywords/viewmodel/parser';\r\nimport uuid from '@bingads-webui-component-legacy/uuid/index';\r\nimport instrumentation from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport constants from '@bingads-webui-static-legacy/instrumentation/constants';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nvar i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\nvar s$TextAd = window.globalLegacySchema.get('TextAd');\r\nvar notEnoughText = '20000';\r\nvar tooMuchText = '20001';\r\nvar defaultPopupIds = {\r\n 'EnterKeywords': 'pop_BA_CampaignCreate_Keywords_EnterKeywords'\r\n};\r\nvar defaultScenario = 'create keyword';\r\nvar KeywordViewModel = _KeywordViewModel.ViewModel;\r\nvar parseKeyword = _KeywordViewModel.parseKeyword;\r\nvar View = Backbone.View.extend({\r\n events: {\r\n 'keyup textarea.form-control': 'getSeedKeywords',\r\n 'paste textarea.form-control': 'getSeedKeywords',\r\n 'change textarea.form-control': 'keywordsChanged',\r\n 'click .keyword-textarea': 'selectThisAdGroup',\r\n 'focusout textarea.keyword-textarea.form-control': 'outTextArea'\r\n },\r\n initialize: function (options) {\r\n var self = this;\r\n self.options = _.defaults({}, options, {\r\n scenario: defaultScenario\r\n });\r\n self.isNegativeKeyword = options.isNegativeKeyword;\r\n self.popupIds = _.defaults({}, self.options.popupIds, defaultPopupIds);\r\n self.isBmmBlockEnabled = pageContext.DynamicPermissions && pageContext.DynamicPermissions.KeywordBmmSignupP2 || pageContext.Permissions && pageContext.Permissions.dynamic && pageContext.Permissions.dynamic.KeywordBmmPhase2;\r\n self.isBmmWarningEnabled = self.isBmmBlockEnabled ? false : pageContext.DynamicPermissions && pageContext.DynamicPermissions.KeywordBmmAlert || pageContext.Permissions && pageContext.Permissions.dynamic && pageContext.Permissions.dynamic.KeywordBmmWarning;\r\n self.isMutableKeywordMatchTypeEnabled = self.isBmmBlockEnabled || self.isBmmWarningEnabled ? false : pageContext.Permissions && pageContext.Permissions.dynamic && pageContext.Permissions.dynamic.BMMBehaviorUpdate;\r\n self.keywords = ko.observable({});\r\n self.parser = new parserViewModel(options.isNegativeKeyword, self.isBmmBlockEnabled);\r\n self.hasChanges = true;\r\n self.parser.keywordsTextareaVal.subscribe(function (value) {\r\n self.hasChanges = true;\r\n });\r\n self.keywordSuggestionsAdded = [];\r\n },\r\n render: function () {\r\n this.$el.html(tmpl({\r\n appendLearnMoreLink: help.appendLearnMoreLink,\r\n i18n: i18n,\r\n uuid: uuid,\r\n popupIds: this.popupIds,\r\n isNegativeKeyword: this.isNegativeKeyword,\r\n isForVNext: this.options.isForVNext\r\n }));\r\n ko.applyBindings(this.parser, this.el);\r\n return this;\r\n },\r\n getKeys: function () {\r\n return _.keys(this.keywords());\r\n },\r\n getKeywords: function () {\r\n return _.values(this.keywords());\r\n },\r\n isEmpty: function () {\r\n return _.size(this.parser.keywordsTextareaVal()) === 0;\r\n },\r\n isBmmExist: function () {\r\n var keywords = this.parser.peekKeywords();\r\n return this.parser.isBmmExist(keywords);\r\n },\r\n isBmmWarning: function () {\r\n return this.isBmmWarningEnabled && this.isBmmExist();\r\n },\r\n isMutableKeywordMatchTypeWarning: function () {\r\n return this.isMutableKeywordMatchTypeEnabled && this.isBmmExist();\r\n },\r\n isBmmBlock: function () {\r\n return this.isBmmBlockEnabled && this.isBmmExist();\r\n },\r\n logInteraction: function (message) {\r\n if (this.options.activityLogger) {\r\n this.options.activityLogger.signal(message, this.options.scenario);\r\n }\r\n },\r\n validate: function () {\r\n this.parser.isAfterFirstInteraction(true);\r\n var isValid = this.parser.validate();\r\n if (!isValid) {\r\n this.logInteraction('keyword is not valid');\r\n }\r\n return isValid;\r\n },\r\n selectThisAdGroup: function () {\r\n this.trigger('keywords:selected');\r\n },\r\n getSeedKeywords: function (e) {\r\n this.parser.showBmmWarningAlert(this.isBmmWarning());\r\n this.parser.showBmmBlockAlert(this.isBmmBlock());\r\n this.parser.showMutableKeywordMatchTypAlert(this.isMutableKeywordMatchTypeWarning());\r\n var self = this;\r\n if (_.size(self.parser.seedKeywords()) >= self.parser.numSeedKeywords) {\r\n return;\r\n }\r\n this.trigger('keywords:updated');\r\n if (e.keyCode === 13 || e.keyCode === 188 || e.type === 'paste') {\r\n if (!self.parser.seedKeywords()) {\r\n self.parser.seedKeywords([]);\r\n setTimeout(function () {\r\n if (_.size(self.parser.seedKeywords()) > 0) {\r\n self.trigger('seedKeywordsEntered', self.parser.seedKeywords());\r\n }\r\n }, self.parser.seedKeywordTimeout);\r\n }\r\n setTimeout(function () {\r\n var keywords = self.parser.peekKeywords();\r\n if (keywords.length > 0) {\r\n var endIndex = Math.min(keywords.length, self.parser.numSeedKeywords);\r\n self.parser.seedKeywords(keywords.slice(0, endIndex));\r\n }\r\n }, 5);\r\n }\r\n self.parser.parseKeywords();\r\n },\r\n keywordsChanged: function () {\r\n this.logInteraction('keywords change');\r\n },\r\n outTextArea: function (e) {\r\n this.parser.parseKeywords();\r\n this.trigger('keywords:outTextArea');\r\n },\r\n addSuggestion: function (addedKeywords, sourceReqId) {\r\n var newKeywords = _.difference(addedKeywords, this.parser.parsedKeywords());\r\n if (newKeywords.length === 0) {\r\n return;\r\n }\r\n this.keywordSuggestionsAdded = this.keywordSuggestionsAdded.concat(_.map(newKeywords, function (newKeyword) {\r\n return {\r\n keyword: newKeyword,\r\n sourceReqId: sourceReqId\r\n };\r\n }));\r\n var textareaValue = this.parser.keywordsTextareaVal();\r\n textareaValue = textareaValue.replace(/([,\\s]+$)/g, '');\r\n var added = newKeywords.join('\\n');\r\n if (_.size(textareaValue) === 0) {\r\n textareaValue = added;\r\n } else {\r\n textareaValue = textareaValue + '\\n' + added;\r\n }\r\n this.parser.keywordsTextareaVal(textareaValue);\r\n this.parser.isAfterFirstInteraction(true);\r\n this.parser.parseKeywords();\r\n this.hasChanges = true;\r\n this.trigger('keywords:addSuggestion');\r\n },\r\n getContextObjects: function () {\r\n return _.map(this.getKeywords(), function (keyword, index) {\r\n return {\r\n Id: keyword.Id(),\r\n Text: keyword.Text(),\r\n MatchType: keyword.MatchType()\r\n };\r\n });\r\n },\r\n getKeyFromKeyword: function (keyword) {\r\n switch (keyword.MatchType) {\r\n case 'Broad':\r\n return keyword.Text;\r\n case 'Phrase':\r\n return '\"' + keyword.Text + '\"';\r\n case 'Exact':\r\n return '[' + keyword.Text + ']';\r\n }\r\n return null;\r\n },\r\n getChangedKeywords: function (adGroup) {\r\n if (!this.hasChanges) {\r\n return [];\r\n }\r\n var oldKeywords = this.getKeys();\r\n var newKeywords = this.parser.uniqueParsedKeywords();\r\n var changedKeywords = _.union(this.serializeToCreate(_.difference(newKeywords, oldKeywords), adGroup), this.serializeToDelete(_.difference(oldKeywords, newKeywords)));\r\n return changedKeywords;\r\n },\r\n getCurKeywords: function () {\r\n var newKeywords = this.parser.uniqueParsedKeywords();\r\n return _.map(newKeywords, function (keyword) {\r\n return parseKeyword(keyword);\r\n });\r\n },\r\n serializeToCreate: function (toCreate, adGroup) {\r\n var self = this;\r\n var serializedKeywords = [];\r\n if (toCreate.length > 0) {\r\n var options = _.extend({}, self.options, {\r\n 'adGroup': adGroup\r\n });\r\n _.each(toCreate, function (keyword, index) {\r\n options.text = keyword;\r\n var serializedKeyword = new KeywordViewModel(options).toObject();\r\n serializedKeywords[index] = _.isNaN(adGroup.Id) || adGroup.Id < 1 ? _.pick(serializedKeyword, 'Text', 'MatchType', 'AdGroupName', 'CampaignName', 'Bid') : _.pick(serializedKeyword, 'Text', 'MatchType', 'AdGroup', 'Bid');\r\n });\r\n }\r\n return serializedKeywords;\r\n },\r\n serializeToDelete: function (toDelete) {\r\n var serializedKeywords = [];\r\n if (toDelete.length > 0) {\r\n var self = this;\r\n _.each(toDelete, function (keyword, index) {\r\n var serializedKeyword = self.keywords()[keyword].toObject();\r\n serializedKeyword.Status = 'Deleted';\r\n serializedKeywords[index] = _.pick(serializedKeyword, 'Id', 'AdGroup', 'Status', 'Text', 'MatchType');\r\n });\r\n }\r\n return serializedKeywords;\r\n },\r\n getNameAndLengthForProperty: function (property) {\r\n return {\r\n name: i18n.get('ColumnName_' + property),\r\n length: s$TextAd.properties[property].maxLength\r\n };\r\n },\r\n addErrors: function (errors) {\r\n self.parser.errors.add(i18nErrors.getODataErrors(errors));\r\n },\r\n escapeHtml: function (text) {\r\n return text.replace(//g, '>');\r\n },\r\n handleApiErrors: function (keywords) {\r\n var self = this;\r\n var errors = [];\r\n _.each(keywords, function (keyword) {\r\n _.each(keyword.errors, function (err) {\r\n var errorFromAd = _.contains(['Title', 'Text', 'DestinationUrl'], err.property);\r\n if (errorFromAd && err.code === tooMuchText && err.message.indexOf('{0}') > -1 && err.message.indexOf('{1}') > -1) {\r\n var pairs = self.getNameAndLengthForProperty(err.property);\r\n err.message = err.message.replace('{0}', pairs.name).replace('{1}', pairs.length);\r\n }\r\n if (errorFromAd && err.code === notEnoughText && err.message.indexOf('{0}') > -1) {\r\n err.message = err.message.replace('{0}', self.getNameAndLengthForProperty(err.property).name);\r\n }\r\n err.message = i18n.getString('Keywords_And_Errors_seperator', self.escapeHtml(self.getKeyFromKeyword(keyword)), err.message);\r\n errors.push(err);\r\n });\r\n });\r\n self.parser.errors.add(errors);\r\n },\r\n clearErrors: function () {\r\n this.parser.errors.clear(i18nErrors.isCampaignApiError);\r\n },\r\n updateViewModels: function (input) {\r\n var keywords = input.keywords;\r\n var campaignId = input.campaignId;\r\n var adGroupId = input.adGroupId;\r\n var hasErrors = input.hasErrors;\r\n this.clearErrors();\r\n var successfulKeywords = [];\r\n var keywordsWithErrors = [];\r\n if (hasErrors) {\r\n _.each(keywords, function (keyword) {\r\n if (keyword.errors && !keyword.Id) {\r\n keywordsWithErrors.push(keyword);\r\n } else {\r\n successfulKeywords.push(keyword);\r\n }\r\n });\r\n } else {\r\n successfulKeywords = keywords;\r\n }\r\n if (!_.isEmpty(keywordsWithErrors)) {\r\n this.handleApiErrors(keywordsWithErrors);\r\n }\r\n if (successfulKeywords.length === keywords.length) {\r\n this.hasChanges = false;\r\n }\r\n var newlyCreatedKeywords = [];\r\n _.each(successfulKeywords, (function (keyword) {\r\n var key = this.getKeyFromKeyword(keyword);\r\n if (keyword.Status === 'Deleted') {\r\n delete this.keywords()[key];\r\n } else {\r\n this.keywords()[key] = new KeywordViewModel({\r\n properties: keyword\r\n });\r\n newlyCreatedKeywords.push(keyword.Text);\r\n }\r\n }).bind(this));\r\n var numberOfCreatedKeywords = _.size(newlyCreatedKeywords);\r\n if (numberOfCreatedKeywords > 0) {\r\n var keywordsImportedFromPlanner = _.filter(this.keywordSuggestionsAdded, function (suggestedKeyword) {\r\n return _.indexOf(newlyCreatedKeywords, suggestedKeyword.keyword) !== -1;\r\n });\r\n instrumentation.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, 'createKeyword/updateViewModels', JSON.stringify({\r\n keywordsCreated: numberOfCreatedKeywords,\r\n campaignId: campaignId,\r\n adGroupId: adGroupId,\r\n suggestionsUsed: _.size(keywordsImportedFromPlanner),\r\n detailedSuggestionsUsed: _.chain(keywordsImportedFromPlanner).groupBy(function (keyword) {\r\n return keyword.sourceReqId;\r\n }).mapObject(function (reqGroup) {\r\n return _.pluck(reqGroup, 'keyword');\r\n }).value()\r\n }));\r\n this.keywordSuggestionsAdded = [];\r\n }\r\n return this.getContextObjects();\r\n }\r\n});\r\nexport default View;\r\n\r\n","import ko from 'knockout';\r\nimport koSchema from '@bingads-webui-component-legacy/ko-schema/index';\r\n\r\nconst s$AdGroup = window.globalLegacySchema.get('AdGroup');\r\n\r\nexport default class ViewModel {\r\n constructor({\r\n Name = '',\r\n } = {}) {\r\n this.fields = ['Name', 'Language'];\r\n koSchema.properties(this, s$AdGroup, this.fields, { Name });\r\n this.showKeywordPlanner = ko.observable(false);\r\n }\r\n}\r\n","/*eslint new-cap:0 */\r\nimport _ from 'underscore';\r\nimport ko from 'knockout';\r\nimport Backbone from 'backbone';\r\nimport template from '@bingads-webui-campaign-legacy/crud-keywords/template/section-wrapper.pug';\r\nimport CreateView from '@bingads-webui-campaign-legacy/crud-keywords/view/create';\r\nimport KeywordPlannerView from '@bingads-webui-campaign-legacy/crud-adgroup/view/keywordPlanner';\r\nimport ViewModel from '@bingads-webui-campaign-legacy/crud-keywords/viewmodel/section-wrapper';\r\nimport { isCampaignApiError } from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\nimport * as LocationTargetTypes from '@bingads-webui-campaign-legacy/location-targets/util/locationTargetTypes';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nexport default class View extends Backbone.View {\r\n initialize(options = {}) {\r\n this.options = options;\r\n this.showOnlyKeywords = this.options.showOnlyKeywords || false;\r\n this.popupIds = _.defaults({}, this.options.popupIds, {\r\n 'AdGroupName': 'pop_BA_CampaignCreate_Keywords_AdGroupName',\r\n });\r\n this.isSignUp = this.options.scenario === 'signup';\r\n\r\n this.viewmodel = new ViewModel({\r\n Name: this.isSignUp ? `${i18n.getString('Entity_Adgroup')} 1` : '',\r\n });\r\n this.createView = new CreateView(options);\r\n this.keywordPlannerView = new KeywordPlannerView({\r\n mode: 'keywordsOnly',\r\n scenario: options.scenario,\r\n popupIds: this.options.popupIds,\r\n activityLogger: options.activityLogger,\r\n });\r\n\r\n this.keywordPlannerView.on({\r\n 'addKeyword': (newKeyword, sourceReqId) => {\r\n this.createView.addSuggestion([newKeyword], sourceReqId);\r\n },\r\n });\r\n }\r\n\r\n render() {\r\n this.$el.html(template({\r\n i18n,\r\n isSignUp: this.isSignUp,\r\n showOnlyKeywords: this.showOnlyKeywords,\r\n popupIds: this.popupIds,\r\n }));\r\n ko.applyBindings(this.viewmodel, this.el);\r\n\r\n this.createView.render();\r\n this.$('.parser').append(this.createView.el);\r\n this.createView.parser.isAfterFirstInteraction(false);\r\n this.keywordPlannerView.render();\r\n this.$('.keyword-planner-container').append(this.keywordPlannerView.el);\r\n\r\n this.createView.on('keywords:updated', () => {\r\n this.trigger('keywords:updated');\r\n });\r\n\r\n this.createView.on('keywords:outTextArea', () => {\r\n this.trigger('keywords:outTextArea');\r\n });\r\n\r\n this.createView.on('keywords:addSuggestion', () => {\r\n this.trigger('keywords:addSuggestion');\r\n });\r\n\r\n this.createView.on('seedKeywordsEntered', (seedKeywords) => {\r\n if (_.isArray(seedKeywords) && _.size(seedKeywords) > 0 && this.createView.parser.isKeywordsValid()) {\r\n this.keywordPlannerView.onSearch({\r\n keywords: seedKeywords,\r\n });\r\n }\r\n });\r\n\r\n return this;\r\n }\r\n\r\n logActivity(message) {\r\n if (this.options.activityLogger) {\r\n this.options.activityLogger.signal(message, this.options.scenario);\r\n }\r\n }\r\n\r\n onLanguageLocationChanged(showKeywordPlanner, locations, language) {\r\n this.viewmodel.showKeywordPlanner(showKeywordPlanner);\r\n\r\n const includedLocations = _.filter(locations, (location) => location.SelectionStatus === LocationTargetTypes.Included);\r\n const includedCriterions = _.map(includedLocations, (location) => location.Criterion.LocationCriterion || location.Criterion.RadiusCriterion);\r\n\r\n if (language) {\r\n this.keywordPlannerView.setLanguages(_.isArray(language) ? language : [language]);\r\n }\r\n this.keywordPlannerView.setLocationTargeting(includedCriterions);\r\n\r\n // only trigger keyword planner search when we need it (when it shows)\r\n if (showKeywordPlanner) {\r\n this.keywordPlannerView.onSearch();\r\n }\r\n }\r\n\r\n onAdsUrlUpdated(url) {\r\n this.keywordPlannerView.onSearch({url});\r\n }\r\n\r\n clearApiErrors() {\r\n this.viewmodel.errors.clear(isCampaignApiError);\r\n this.createView.clearErrors();\r\n }\r\n\r\n validateViewModel() {\r\n if (this.showOnlyKeywords) {\r\n return true;\r\n }\r\n\r\n const isValid = this.viewmodel.validate();\r\n\r\n if (!isValid) {\r\n _.each(this.viewmodel.fields, (field) => {\r\n if (!this.viewmodel[field].isValid()) {\r\n this.logActivity(`ad group field invalid: ${field}`);\r\n }\r\n });\r\n }\r\n\r\n return isValid;\r\n }\r\n\r\n validate() {\r\n return _.every([\r\n this.createView.validate(),\r\n this.validateViewModel(),\r\n ]);\r\n }\r\n\r\n updateViewModels({keywords, campaignId, adGroupId, hasErrors}) {\r\n return this.createView.updateViewModels({keywords, campaignId, adGroupId, hasErrors});\r\n }\r\n\r\n hasChanges() {\r\n return this.createView.hasChanges;\r\n }\r\n\r\n getValues(adGroupName, campaignName, adGroupId) {\r\n const keywords = this.createView.getChangedKeywords({\r\n Id: adGroupId || 0,\r\n Name: adGroupName,\r\n });\r\n\r\n return {\r\n Keywords: _.map(keywords, (keyword) => {\r\n return _.defaults({}, keyword, { CampaignName: campaignName } );\r\n }),\r\n };\r\n }\r\n\r\n getCurKeywords() {\r\n return this.createView.getCurKeywords();\r\n }\r\n\r\n getAdGroup(adGroupId) {\r\n const adgroup = {\r\n Name: this.viewmodel.Name(),\r\n Medium: 'Search',\r\n PricingModel: 'CPC',\r\n };\r\n\r\n if (adGroupId) {\r\n adgroup.Id = adGroupId;\r\n }\r\n\r\n return adgroup;\r\n }\r\n\r\n adGroupNameChange() {\r\n this.logActivity('crud keywords adgroup name change.');\r\n }\r\n\r\n get events() {\r\n return {\r\n 'change input.name': 'adGroupNameChange',\r\n };\r\n }\r\n}\r\n","/* eslint-disable new-cap */\r\n/* eslint-disable camelcase */\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport schemas from '@bingads-webui-campaign/campaign-ui-schemas';\r\n// import i18n from '$/i18n!campaignui/campaign-creation-advanced';\r\nimport ko_schema from '@bingads-webui-component-legacy/ko-schema/index';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\n\r\nexport default class ViewModel {\r\n constructor({\r\n campaignId = null,\r\n DomainName = '',\r\n DomainLanguage = '',\r\n Source = '',\r\n disabled = false,\r\n dynamicDescriptionEnabled = true,\r\n isMixedDSACampaignRecommendation = false,\r\n }) {\r\n\r\n const permissions = config.get('Permissions');\r\n\r\n this.isTargetingSourceEnabled = ko.computed(() => {\r\n return _.result(permissions, 'IsDynamicSearchAdsPageFeedEnabled');\r\n }, this);\r\n\r\n this.isDynamicDescriptionPhase1Enabled = ko.computed(() => {\r\n return _.result(permissions.dynamic, 'DSADynamicDescriptionPhase1') && !isMixedDSACampaignRecommendation;\r\n }, this);\r\n\r\n this.TargetingSourceSetting = ko.observable();\r\n\r\n this.DomainName = ko.observable(DomainName);\r\n this.LanguageCode = ko.observable(DomainLanguage);\r\n\r\n if (this.isTargetingSourceEnabled()) {\r\n this.TargetingSourceSetting({ // eslint-disable-line\r\n Source: Source || 'SystemIndex',\r\n });\r\n }\r\n\r\n this.Id = ko.observable(campaignId);\r\n\r\n this.disabled = ko.observable(disabled);\r\n\r\n if (this.isDynamicDescriptionPhase1Enabled()) {\r\n this.isDynamicDescriptionChecked = ko.observable(dynamicDescriptionEnabled);\r\n }\r\n\r\n this.campaignProps = ['DomainName', 'LanguageCode', 'Source'];\r\n ko_schema.properties(this, schemas.Campaign, this.campaignProps, {\r\n Source,\r\n DomainName,\r\n LanguageCode: DomainLanguage,\r\n });\r\n }\r\n}\r\n","/* eslint-disable new-cap */\r\nimport Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport ViewModel from '@bingads-webui-campaign-legacy/dsa-settings/viewmodel/dsa-settings';\r\nimport Language from '@bingads-webui-component-legacy/language-selector/view/index';\r\nimport TargetingSourceView from '@bingads-webui-campaign-legacy/auto-targets/view/pagefeed/targeting-source';\r\nimport tmpl from '@bingads-webui-campaign-legacy/dsa-settings/template/dsa-settings.pug';\r\n\r\nconst i18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/campaign-creation-advanced');\r\nconst isDomesticSimplifiedChineseEnabled = _.result(config.get('permissions'), 'IsDomesticSimplifiedChineseEnabled');\r\nconst defaultLanguage = isDomesticSimplifiedChineseEnabled ? 'SimplifiedChinese' : 'English';\r\n\r\nexport default class DSASettings extends Backbone.View {\r\n initialize({\r\n campaignId = null,\r\n DomainName = '',\r\n DomainLanguage = defaultLanguage,\r\n Source = 'SystemIndex',\r\n logActivity = _.noop,\r\n popupIds = {\r\n CampaignName: 'pop_BA_CampaignCreate_Settings_CampaignName',\r\n Language: 'pop_BA_CampaignCreate_Settings_AdLanguage',\r\n MultiLanguage: 'pop_BA_CampaignCreate_Settings_LanguageTargeting',\r\n TargetingSource: 'pop_BA_DSA_TargetingSource',\r\n },\r\n disabled = false,\r\n dynamicDescriptionEnabled = true,\r\n isMixedDSACampaignRecommendation = false,\r\n } = {}) {\r\n this.popupIds = popupIds;\r\n this.viewModel = new ViewModel({\r\n campaignId,\r\n DomainName,\r\n DomainLanguage,\r\n Source,\r\n disabled,\r\n dynamicDescriptionEnabled,\r\n isMixedDSACampaignRecommendation,\r\n });\r\n this.logActivity = logActivity;\r\n this.campaignId = campaignId;\r\n\r\n this.viewModel.DomainName.subscribe(() => {\r\n this.trigger('change');\r\n });\r\n this.viewModel.LanguageCode.subscribe(() => {\r\n this.trigger('change');\r\n });\r\n this.viewModel.TargetingSourceSetting.subscribe(() => {\r\n this.trigger('change');\r\n });\r\n if (this.viewModel.isDynamicDescriptionPhase1Enabled()) {\r\n this.viewModel.isDynamicDescriptionChecked.subscribe(() => {\r\n this.trigger('change');\r\n });\r\n }\r\n }\r\n\r\n get events() {\r\n return {\r\n 'blur .dsa-domainname-input': 'onDomainNameChange',\r\n };\r\n }\r\n\r\n onDomainNameChange() {\r\n this.trigger('change.domainName', this.viewModel.DomainName());\r\n }\r\n\r\n onLanguageChange() {\r\n this.trigger('change.language', this.viewModel.LanguageCode());\r\n }\r\n\r\n handleApiErrors(errors) {\r\n this.viewModel.errors.add(errors);\r\n }\r\n\r\n setValues({\r\n DomainName,\r\n DomainLanguage,\r\n Source,\r\n campaignId,\r\n targetingSourceCampaignId,\r\n disabled,\r\n dynamicDescriptionEnabled,\r\n }) {\r\n if (campaignId != null) {\r\n this.viewModel.Id(campaignId);\r\n }\r\n\r\n if (disabled != null) {\r\n this.viewModel.disabled(disabled);\r\n if (this.webSiteLanguage) {\r\n this.webSiteLanguage.koModel.disabled(disabled);\r\n }\r\n }\r\n\r\n if (DomainName != null) {\r\n this.viewModel.DomainName(DomainName);\r\n }\r\n\r\n if (DomainLanguage != null) {\r\n this.viewModel.LanguageCode(DomainLanguage);\r\n if (this.webSiteLanguage) {\r\n this.webSiteLanguage.trigger('language:set', this.viewModel.LanguageCode());\r\n }\r\n }\r\n\r\n if (Source != null) {\r\n this.viewModel.TargetingSourceSetting({\r\n Source,\r\n });\r\n if (this.targetingSource) {\r\n this.targetingSource.trigger('set', {\r\n source: Source,\r\n campaignId: targetingSourceCampaignId,\r\n });\r\n }\r\n\r\n if (this.viewModel.isDynamicDescriptionPhase1Enabled()) {\r\n this.viewModel.isDynamicDescriptionChecked(dynamicDescriptionEnabled);\r\n }\r\n }\r\n }\r\n\r\n initWebSiteLanguage() {\r\n const DSAEnableInFrenchGerman = _.result(config.get('permissions'), 'IsDynamicSearchAdsV1EnabledInFRAndDE');\r\n const IsEnabledForDSAInCHandNLandITandESandSE = _.result(config.get('permissions'), 'IsEnabledForDSAInCHandNLandITandESandSE');\r\n const DSAEnabledInPLandPTandTRandGR = _.result(config.get('permissions'), 'IsDSAEnabledInPLandPTandTRandGR');\r\n const DSAEnabledInDKandFIandNO = _.result(config.get('permissions'), 'IsDSAEnabledInDKandFIandNO');\r\n const DSAEUPhase2 = _.result(config.get('permissions'), 'dynamic', {}).DSAEUPhase2;\r\n const DSAEnabledInJapanese = _.result(config.get('permissions'), 'IsDynamicSearchAdsGlobalizationJapanEnabled');\r\n const IsAdsGlobalizationPhase6Enabled = _.result(config.get('permissions'), 'IsAdsGlobalizationPhase6Enabled');\r\n const IsSimplifiedChineseLanguageEnabledInMultipleLanguage = _.result(config.get('permissions'), 'IsSimplifiedChineseLanguageEnabledInMultipleLanguage');\r\n const IsDomesticSimplifiedChineseEnabled = _.result(config.get('permissions'), 'IsDomesticSimplifiedChineseEnabled');\r\n const IsAdsGlobalizationPhase9DSAEnabled = _.result(config.get('permissions'), 'dynamic', {}).AdsGlobalizationPhase9DSA;\r\n const IsAdsGlobalizationPhase9Enabled = _.result(config.get('permissions'), 'IsAdsGlobalizationPhase9Enabled');\r\n const IsAdsGlobalizationPhase9VIEnabled = _.result(config.get('permissions'), 'IsAdsGlobalizationPhase9VIEnabled');\r\n const isDSASupportMultipleLanguages = DSAEnableInFrenchGerman ||\r\n IsEnabledForDSAInCHandNLandITandESandSE ||\r\n DSAEnabledInPLandPTandTRandGR ||\r\n DSAEnabledInDKandFIandNO ||\r\n DSAEUPhase2 ||\r\n DSAEnabledInJapanese ||\r\n IsAdsGlobalizationPhase6Enabled ||\r\n IsSimplifiedChineseLanguageEnabledInMultipleLanguage ||\r\n IsAdsGlobalizationPhase9Enabled ||\r\n IsAdsGlobalizationPhase9DSAEnabled ||\r\n IsAdsGlobalizationPhase9VIEnabled;\r\n\r\n if (isDSASupportMultipleLanguages) {\r\n let languages = ['English'];\r\n\r\n if (DSAEnableInFrenchGerman) {\r\n languages = languages.concat(['French', 'German']);\r\n }\r\n\r\n if (IsEnabledForDSAInCHandNLandITandESandSE) {\r\n languages = languages.concat(['Spanish', 'Italian', 'Dutch', 'Swedish']);\r\n }\r\n\r\n if (DSAEnabledInPLandPTandTRandGR) {\r\n // Now only PL is supported for now, will add others later\r\n languages = languages.concat([\r\n 'Polish',\r\n 'Portuguese',\r\n 'Czech',\r\n 'Romanian',\r\n 'Hungarian',\r\n 'Greek',\r\n 'Slovak',\r\n 'Bulgarian',\r\n 'Croatian',\r\n 'Lithuanian',\r\n 'Slovenian',\r\n 'Estonian',\r\n 'Latvian',\r\n 'Maltese',\r\n ]);\r\n }\r\n\r\n if (DSAEnabledInDKandFIandNO) {\r\n languages = languages.concat(['Danish', 'Finnish', 'Norwegian']);\r\n }\r\n\r\n if (DSAEUPhase2) {\r\n languages = languages.concat(['Turkish', 'Serbian', 'Bosnian', 'Albanian', 'Macedonian', 'Icelandic']);\r\n }\r\n\r\n if (DSAEnabledInJapanese) {\r\n languages = languages.concat(['Japanese']);\r\n }\r\n\r\n if (IsSimplifiedChineseLanguageEnabledInMultipleLanguage) {\r\n languages = languages.concat(['SimplifiedChinese']);\r\n }\r\n\r\n if (IsAdsGlobalizationPhase6Enabled) {\r\n languages = languages.concat(['Hebrew', 'Arabic', 'Russian', 'TraditionalChinese']);\r\n }\r\n\r\n if (IsAdsGlobalizationPhase9DSAEnabled) {\r\n languages = languages.concat(['Hindi', 'Malay', 'Thai', 'Indonesian', 'Tagalog']);\r\n }\r\n\r\n if (IsAdsGlobalizationPhase9VIEnabled) {\r\n languages = languages.concat(['Vietnamese']);\r\n }\r\n\r\n if (IsDomesticSimplifiedChineseEnabled) {\r\n languages = ['SimplifiedChinese'];\r\n }\r\n\r\n this.webSiteLanguage = new Language({\r\n i18nStrings: {\r\n Description: '',\r\n SaveWarning: '',\r\n },\r\n language: this.viewModel.LanguageCode(),\r\n languages,\r\n IsAdsGlobalizationPhase1Enabled: _.result(config.get('permissions'), 'IsAdsGlobalizationPhase1Enabled'),\r\n IsAdsGlobalizationPhase2Enabled: _.result(config.get('permissions'), 'IsAdsGlobalizationPhase2Enabled'),\r\n IsAdsGlobalizationPhase6Enabled,\r\n IsAdsGlobalizationPhase2JapanEnabled: _.result(config.get('permissions'), 'IsAdsGlobalizationPhase2JapanEnabled'),\r\n enableSimplifiedChinese: IsSimplifiedChineseLanguageEnabledInMultipleLanguage || IsDomesticSimplifiedChineseEnabled,\r\n IsAdsGlobalizationPhase9Enabled,\r\n IsAdsGlobalizationPhase9DSAEnabled,\r\n IsAdsGlobalizationPhase9VIEnabled,\r\n // TO DO\r\n });\r\n this.webSiteLanguage.on('language:changed', (language) => {\r\n this.viewModel.LanguageCode(language);\r\n this.logActivity('website language changed');\r\n this.onLanguageChange();\r\n }, this);\r\n }\r\n }\r\n\r\n initTargetSource() {\r\n if (this.targetingSource) {\r\n this.targetingSource.remove();\r\n this.targetingSource = null;\r\n }\r\n\r\n if (this.viewModel.isTargetingSourceEnabled()) {\r\n this.targetingSource = new TargetingSourceView({\r\n source: this.viewModel.TargetingSourceSetting().Source,\r\n campaignId: this.campaignId,\r\n activityLogger: this.options.activityLogger,\r\n });\r\n this.targetingSource.on('update', (value) => {\r\n this.viewModel.TargetingSourceSetting({\r\n Source: value.source,\r\n });\r\n }, this);\r\n }\r\n }\r\n\r\n validate() {\r\n const isTargetingSourceValid = this.targetingSource ? this.targetingSource.validate() : true;\r\n\r\n return this.viewModel.validate() && isTargetingSourceValid;\r\n }\r\n\r\n render() {\r\n this.$el.html(tmpl({\r\n i18n,\r\n popupIds: this.popupIds,\r\n isDomesticSimplifiedChineseEnabled,\r\n }));\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n this.initWebSiteLanguage();\r\n this.initTargetSource();\r\n\r\n const DSAEnableInFrenchGerman = _.result(config.get('permissions'), 'IsDynamicSearchAdsV1EnabledInFRAndDE');\r\n const IsEnabledForDSAInCHandNLandITandESandSE = _.result(config.get('permissions'), 'IsEnabledForDSAInCHandNLandITandESandSE');\r\n const DSAEnabledInPLandPTandTRandGR = _.result(config.get('permissions'), 'IsDSAEnabledInPLandPTandTRandGR');\r\n const DSAEnabledInDKandFIandNO = _.result(config.get('permissions'), 'IsDSAEnabledInDKandFIandNO');\r\n const DSAEnabledInJapanese = _.result(config.get('permissions'), 'IsDynamicSearchAdsGlobalizationJapanEnabled');\r\n const IsSimplifiedChineseLanguageEnabledInMultipleLanguage = _.result(config.get('permissions'), 'IsSimplifiedChineseLanguageEnabledInMultipleLanguage');\r\n\r\n const isDSASupportMultipleLanguages = DSAEnableInFrenchGerman || IsEnabledForDSAInCHandNLandITandESandSE || DSAEnabledInPLandPTandTRandGR || DSAEnabledInDKandFIandNO || DSAEnabledInJapanese || IsSimplifiedChineseLanguageEnabledInMultipleLanguage;\r\n\r\n if (this.campaignId != null && this.options.isCampaignSettingsScenario && this.options.DomainName) {\r\n const lang = i18n.getString(`Language_${this.viewModel.LanguageCode()}`) || this.viewModel.LanguageCode();\r\n\r\n this.$('.website-language-setting').empty().append(lang);\r\n } else if (isDSASupportMultipleLanguages) {\r\n this.$('.website-language-setting').empty().append(this.webSiteLanguage.render().el);\r\n } // if not in editing and not enable DSA in French and German, it will show English by default\r\n\r\n if (this.viewModel.isTargetingSourceEnabled()) {\r\n this.$('.dsa-targeting-source').empty().append(this.targetingSource.render().el);\r\n }\r\n return this;\r\n }\r\n\r\n getValues(trimDomainName = false) {\r\n if (!trimDomainName) {\r\n return _.extend({}, this.viewModel.toObject(),\r\n this.viewModel.isTargetingSourceEnabled() ? { Source: this.viewModel.TargetingSourceSetting().Source } : {},\r\n this.viewModel.isDynamicDescriptionPhase1Enabled() ? { DynamicDescriptionEnabled: this.viewModel.isDynamicDescriptionChecked()} : {});\r\n }\r\n\r\n const context = {};\r\n\r\n // strip off http(s) and www.\r\n const domainName = this.viewModel.DomainName();\r\n let processedDomainName = domainName.trim().toLowerCase();\r\n\r\n processedDomainName = processedDomainName.replace(new RegExp('^http(s)?://'), '');\r\n processedDomainName = processedDomainName.replace(new RegExp('^w{3}.'), '');\r\n this.viewModel.DomainName(processedDomainName);\r\n context.DomainName = this.viewModel.DomainName();\r\n context.Language = this.viewModel.LanguageCode();\r\n context.DomainLanguage = this.viewModel.LanguageCode();\r\n if (this.viewModel.isTargetingSourceEnabled()) {\r\n context.TargetingSource = this.viewModel.TargetingSourceSetting().Source;\r\n context.Source = this.viewModel.TargetingSourceSetting().Source;\r\n }\r\n\r\n if (this.viewModel.isDynamicDescriptionPhase1Enabled()) {\r\n context.DynamicDescriptionEnabled = this.viewModel.isDynamicDescriptionChecked();\r\n }\r\n\r\n return context;\r\n }\r\n\r\n remove() {\r\n if (this.webSiteLanguage) {\r\n this.webSiteLanguage.remove();\r\n }\r\n\r\n if (this.targetingSource) {\r\n this.targetingSource.remove();\r\n }\r\n\r\n super.remove();\r\n }\r\n}\r\n","import Backbone from 'backbone';\r\nimport $ from 'jquery';\r\nimport * as utilities from '@bingads-webui-campaign-legacy/editorial-appeal/utilities';\r\nimport EditorView from '@bingads-webui-campaign-legacy/editorial-appeal/view/editor';\r\nimport InlineErrorView from '@bingads-webui-campaign-legacy/editorial-appeal/view/inline-error';\r\n\r\nconst legacy$ = $;\r\n\r\nexport default class InlineAppealView extends Backbone.View {\r\n initialize({\r\n grid,\r\n rowId,\r\n controller,\r\n submit,\r\n appealTitle,\r\n disableAppealBtn,\r\n permissions,\r\n }) {\r\n this.grid = grid;\r\n this.rowId = rowId;\r\n this.appealTitle = appealTitle;\r\n this.controller = controller;\r\n this.submit = submit;\r\n this.disableAppealBtn = disableAppealBtn;\r\n this.permissions = permissions;\r\n }\r\n\r\n render() {\r\n utilities.getAppealRejections(\r\n this.controller,\r\n 'GetAppealRejections',\r\n [this.rowId],\r\n {\r\n grid: this.grid,\r\n success: this.onInlineAppealSuccess.bind(this),\r\n error: () => {\r\n this.grid.expandRowDetail(this.rowId, null, true, false);\r\n },\r\n jsonError: () => {\r\n const inlineErrorView = new InlineErrorView({\r\n rowId: this.rowId,\r\n callback: () => {\r\n this.cancelInlineAppeal(this.grid, this.rowId);\r\n },\r\n }).render();\r\n\r\n this.grid.expandRowDetail(this.rowId, inlineErrorView.$el, true, true);\r\n },\r\n permissions: this.permissions,\r\n }\r\n );\r\n\r\n return this;\r\n }\r\n\r\n onInlineAppealSuccess({ appealIds, appealData: [firstAppealData = {}] }) {\r\n if (firstAppealData.IsAppealable) {\r\n this.editor = new EditorView({\r\n appealData: firstAppealData,\r\n controlId: `inlineAppeal_${this.rowId}`,\r\n callback: this.callBackForInlineAppeal.bind(this),\r\n appealTitle: this.appealTitle,\r\n hideAppealCheckBox: true,\r\n });\r\n\r\n this.editor.render();\r\n\r\n this.editor.toInline(appealIds, this.rowId, this.disableAppealBtn, {\r\n appeal: () => {\r\n this.createInlineAppeal(appealIds);\r\n },\r\n cancel: () => {\r\n this.grid.expandRowDetail(this.rowId, null, true, false);\r\n this.grid.cancelInlineUpdates();\r\n },\r\n });\r\n\r\n this.trigger('success');\r\n }\r\n }\r\n\r\n createInlineAppeal(appealIds) {\r\n if (this.editor && legacy$(`#inlineAppealForm_${this.rowId}`).valid()) {\r\n let params = utilities.ids2params(appealIds);\r\n\r\n const appealJson = this.editor.getAppealData();\r\n\r\n if (appealJson) {\r\n params += `&EditorialAppeal.Appeal=${appealJson.Appeal}&EditorialAppeal.EntityType=${appealJson.EntityType}&EditorialAppeal.Justification=${appealJson.Justification}`;\r\n }\r\n\r\n this.grid.bulkAction(\r\n utilities.getInlineBulkAppealUrl(this.controller, this.submit),\r\n params,\r\n null,\r\n this.onCreateAppealSuccess.bind(this),\r\n { grid: this.grid, rowId: this.rowId }\r\n );\r\n }\r\n }\r\n\r\n onCreateAppealSuccess(data, { grid, rowId }) {\r\n if (data) {\r\n this.cancelInlineAppeal(grid, rowId);\r\n }\r\n }\r\n\r\n cancelInlineAppeal(grid, rowId) {\r\n grid.expandRowDetail(rowId, null, true, false);\r\n grid.cancelInlineUpdates();\r\n this.trigger('cancel');\r\n }\r\n\r\n callBackForInlineAppeal(appealHtml) {\r\n this.grid.expandRowDetail(this.rowId, appealHtml, true, true);\r\n this.editor.setElement($(`#EditorialAppeal_Full_${this.editor._elementId}`).parent());\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport Backbone from 'backbone';\r\nimport $ from 'jquery';\r\nimport edmCampaign from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport { edmCampaign as edm } from '@bingads-webui/edm-campaign';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\nimport withUiBlock from '@bingads-webui-component-legacy/uiblocker/index';\r\nimport dateUtil from '@bingads-webui-component-legacy/humanize/date';\r\nimport { getODataErrors } from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\nimport * as utilities from '@bingads-webui-campaign-legacy/editorial-appeal/utilities';\r\nimport EditorView from '@bingads-webui-campaign-legacy/editorial-appeal/view/editor';\r\nimport InlineErrorView from '@bingads-webui-campaign-legacy/editorial-appeal/view/inline-error';\r\nimport template from '@bingads-webui-campaign-legacy/editorial-appeal/template/bulk.pug';\r\nimport jsdata from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport gridHelper from '@bingads-webui-static-legacy/shared/view/gridHelper';\r\nimport { AlertHelper } from '@bingads-webui-campaign/alert-helper';\r\nimport dataContextManager from '@bingads-webui-static-legacy/summary/SummaryDataContextManager';\r\nimport campaignCacheManager from '@bingads-webui-campaign-legacy/cache-manager/index';\r\n\r\nconst legacy$ = $;\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/editorial-appeal');\r\nconst i18nGlobal = window.globalLegacyI18n.get('component/i18n/loader!legacy/global');\r\nconst s$AdGroup = window.globalLegacySchema.get('AdGroup');\r\n\r\nconst MaxEntityInOneAdGroup = _.chain(['Ads', 'Keywords']).map((entity) => {\r\n return s$AdGroup.properties[entity].maxItems;\r\n}).max().value();\r\n\r\nconst formatDate = (date) => dateUtil.format(date, 'M/d/yyyy');\r\nconst alertHelper = new AlertHelper({ i18nGlobal });\r\n\r\nexport default class BulkAppealView extends Backbone.View {\r\n initialize({\r\n grid,\r\n controller,\r\n submit,\r\n appealTitle,\r\n infoMsg,\r\n permissions,\r\n adGroupLevelType = null,\r\n isForVNext = false,\r\n requestExceptionFromPopup = false,\r\n instrumentation = null,\r\n scope,\r\n }) {\r\n this.grid = grid;\r\n this.controller = controller;\r\n this.submit = submit;\r\n this.appealTitle = appealTitle;\r\n this.infoMsg = infoMsg;\r\n this.adGroupLevelType = adGroupLevelType;\r\n this.isForVNext = isForVNext;\r\n this.requestExceptionFromPopup = requestExceptionFromPopup;\r\n\r\n this.editor = null;\r\n this.inlineErrorView = null;\r\n this.permissions = permissions;\r\n this.instrumentation = instrumentation;\r\n this.scope = scope;\r\n }\r\n\r\n fetchIdsForCrossPageSelectionForNewGrid() {\r\n // clone a query so that original query won't be impact\r\n const currentQueryFilter = this.grid.filterService ? this.grid.filterService.getCombinedFilter().clone() : {};\r\n const currentQuery = _.result(currentQueryFilter, 'query');\r\n let deliveryStatusToQuery = ['Enum.DeliveryStatus\\'EditorialRejected\\'', 'Enum.DeliveryStatus\\'EditorialApprovedLimited\\''];\r\n const daterange = state.get('$daterange');\r\n let queryToUse = {};\r\n\r\n if (currentQuery && !_.isEmpty(currentQuery)) {\r\n const currentDeliveryStatusQueryValue = _.chain(currentQuery)\r\n .result('DeliveryStatus')\r\n .result('$in')\r\n .value();\r\n\r\n if (!_.isEmpty(currentDeliveryStatusQueryValue)) {\r\n // to keep current filter, then in delivery status\r\n // we only need to get the ones that both in deliveryStatusToQuery, and current ones\r\n deliveryStatusToQuery = _.intersection(deliveryStatusToQuery, currentDeliveryStatusQueryValue);\r\n\r\n // if there are no intersection (means user want entity in delivery status without those two)\r\n // while we need entity in those two, it's empty result\r\n if (_.isEmpty(deliveryStatusToQuery)) {\r\n return Promise.resolve([]);\r\n }\r\n }\r\n\r\n _.extendOwn(queryToUse, currentQuery);\r\n }\r\n queryToUse.DeliveryStatus = {\r\n $in: deliveryStatusToQuery,\r\n };\r\n\r\n currentQueryFilter.query = queryToUse;\r\n\r\n const jsdataEntity = this.controller.toLowerCase() === 'ads' ? jsdata.Ad : jsdata.Keyword;\r\n\r\n return jsdataEntity.findAll({\r\n where: currentQueryFilter.odataV4(), // provide a translated string here\r\n query: {\r\n $top: 5000,\r\n $expand: 'AdGroup($select=Id)',\r\n startdate: formatDate(daterange.start),\r\n enddate: formatDate(daterange.end),\r\n },\r\n })\r\n .finally(withUiBlock())\r\n .then((items) => {\r\n return _.map(items || [], (item) => {\r\n return {\r\n EntityId: item.Id,\r\n ParentId: item.AdGroup.Id,\r\n };\r\n });\r\n });\r\n }\r\n\r\n fetchIdsForCrossPageSelectionForEditorialGrid(adGroupLevelType) {\r\n const daterange = state.get('$daterange');\r\n const { cid, aid, campaignId, adId, adGroupId } = this.scope && this.scope.values;\r\n // eslint-disable-next-line no-useless-escape\r\n const queryString = `(${adGroupLevelType ? 'Asset/' : ''}EditorialStatus eq Enum.EditorialStatus\\'Rejected\\' or ${adGroupLevelType ? 'Asset/' : ''}EditorialStatus eq Enum.EditorialStatus\\'ApprovedLimited\\')`;\r\n\r\n const edmCommon = edm.Customers.$withKey(cid).Accounts.$withKey(aid).Campaigns.$withKey(campaignId).AdGroups.$withKey(adGroupId);\r\n const edmEntity = adGroupLevelType ? edmCommon.AssetsWithBIData['Default.GridData'] : edmCommon.Ads.$withKey(adId)['Default.GetAssetLinks'];\r\n\r\n return edmEntity.$makeCall({\r\n query: {\r\n top: 5000,\r\n filter: { where: queryString },\r\n },\r\n payload: {\r\n gridDataParameters: {\r\n DateRange: {\r\n StartDate: dateUtil.format(daterange.start, 'yyyy-MM-dd'),\r\n EndDate: dateUtil.format(daterange.end, 'yyyy-MM-dd'),\r\n },\r\n },\r\n },\r\n })\r\n .toPromise()\r\n .finally(withUiBlock())\r\n .then((items) => {\r\n return _.map(items.value || [], (item) => {\r\n return {\r\n EntityId: item.Asset.Id,\r\n EntityType: item.Asset.AssetType,\r\n };\r\n });\r\n });\r\n }\r\n\r\n render() {\r\n this.$el.html(template({ i18n }));\r\n this.hide(false);\r\n $(window).scrollTop(this.$('.editor').scrollTop());\r\n\r\n if (this.controller === 'Asset') {\r\n this.fetchIdsForCrossPageSelectionForEditorialGrid(this.adGroupLevelType).then((Entities) => {\r\n return this.getAppealRejections({ ids: Entities });\r\n });\r\n return this;\r\n }\r\n\r\n const selectedRowIds = gridHelper.getSelectedRowIds(this.grid);\r\n\r\n // adgroup level appeal in menu only exists under ad group level ads/keyword grid\r\n if (this.adGroupLevelType) {\r\n const daterange = state.get('$daterange');\r\n\r\n // from popup, there should be only one row selected\r\n const rowId = _.first(selectedRowIds);\r\n\r\n jsdata[this.adGroupLevelType].findAll({\r\n where: {\r\n DeliveryStatus: {\r\n $in: ['Enum.DeliveryStatus\\'EditorialRejected\\'', 'Enum.DeliveryStatus\\'EditorialApprovedLimited\\''],\r\n },\r\n },\r\n limit: MaxEntityInOneAdGroup,\r\n query: {\r\n startdate: formatDate(daterange.start),\r\n enddate: formatDate(daterange.end),\r\n },\r\n entitySet: this.getEntitySet(rowId).toJSON(),\r\n })\r\n .finally(withUiBlock())\r\n .then(_.partial(_.pluck, _, 'Id'))\r\n .then((ids) => {\r\n return this.getAppealRejections({ids, adgroupId: this.getAdGroupId(rowId)});\r\n });\r\n } else if (this.grid.gridView && gridHelper.allPageSelected(this.grid)) {\r\n this.fetchIdsForCrossPageSelectionForNewGrid()\r\n .then((adgroupEntityIds) => {\r\n return this.getAppealRejections({ adgroupEntityIds });\r\n });\r\n } else {\r\n const data = _.filter(selectedRowIds, (id) => {\r\n if ( this.requestExceptionFromPopup ) {\r\n return true;\r\n } else {\r\n return this.isAppealableStatus(id);\r\n }\r\n });\r\n\r\n this.getAppealRejections({ids: data});\r\n }\r\n\r\n return this;\r\n }\r\n\r\n getAppealRejections({\r\n ids,\r\n adgroupId,\r\n adgroupEntityIds = []}) {\r\n // no ids found which do need to request exception\r\n if ((!ids || ids.length === 0) &&\r\n (!adgroupEntityIds || (adgroupEntityIds.length === 0)) &&\r\n this.grid.gridView) {\r\n // eslint-disable-next-line no-alert\r\n window.alert(i18n.getString('RequestException_No_RelatedRowsSelected'));\r\n\r\n // new grid bulk edit will need sometime to set up, so that hide will be caught\r\n window.setTimeout(() => {\r\n this.hide();\r\n }, 5);\r\n return;\r\n }\r\n\r\n utilities.getAppealRejections(\r\n this.controller,\r\n 'GetBulkAppealRejections',\r\n ids,\r\n {\r\n adgroupEntityIds,\r\n grid: this.grid,\r\n adgroupId,\r\n success: this.onFetchBulkAppealRejections.bind(this),\r\n jsonError: () => {\r\n if (!this.inlineErrorView) {\r\n this.inlineErrorView = new InlineErrorView({ rowId: 'bulk', useKwCss: true }).render();\r\n this.$('.editor').append(this.inlineErrorView.$el);\r\n }\r\n\r\n this.inlineErrorView.removeCancel();\r\n\r\n this.$('.appeal').hide();\r\n this.$('.cancel').unbind('click').click(() => {\r\n this.hide();\r\n });\r\n this.$('form.bulk-appeal').show();\r\n $('#bulkCancelButton').focus();\r\n },\r\n permissions: this.permissions,\r\n scope: this.scope,\r\n },\r\n );\r\n }\r\n\r\n static getInlineBulkAppealUrl(controller, action) {\r\n return utilities.getInlineBulkAppealUrl(controller, action);\r\n }\r\n\r\n isAppealableStatus(rowId) {\r\n const colValue = gridHelper.getColumnValue(this.grid, rowId, 'DeliveryStatus');\r\n\r\n return utilities.isAppealableStatus(colValue);\r\n }\r\n\r\n getEntitySet(rowId) {\r\n return edmCampaign\r\n .currentAccount\r\n // we cannot get Ads by Account.AdGroups().Ads(), this is a OData Server bug\r\n .Campaigns\r\n .$withKey(Number(this.getCampaignId(rowId)))\r\n .AdGroups\r\n .$withKey(Number(this.getAdGroupId(rowId)))[`${this.adGroupLevelType}s`];\r\n }\r\n\r\n getCampaignId(rowId) {\r\n // Campaign & AdGroup level Keyword Grid has no column CampaignId\r\n if (this.grid.gridView) {\r\n const currentRow = this.grid.gridView.itemWithKey(rowId);\r\n\r\n return currentRow.Campaign && currentRow.Campaign.Id ? currentRow.Campaign.Id : state.get('campaign_id');\r\n }\r\n return gridHelper.getColumnValue(this.grid, rowId, 'CampaignId') || state.get('campaign_id');\r\n }\r\n\r\n getAdGroupId(rowId) {\r\n if (this.grid.gridView) {\r\n const currentRow = this.grid.gridView.itemWithKey(rowId);\r\n\r\n return currentRow.AdGroup ? currentRow.AdGroup.Id : state.get('adgroup_id');\r\n }\r\n // AdGroup level Keyword Grid has no column AdGroupId\r\n return gridHelper.getColumnValue(this.grid, rowId, 'AdGroupId') || state.get('adgroup_id');\r\n }\r\n\r\n hide(showToolbar = true) {\r\n if (this.editor) {\r\n this.editor.remove();\r\n this.editor = null;\r\n }\r\n\r\n this.reset();\r\n\r\n if (showToolbar) {\r\n if (this.grid.gridView) {\r\n this.trigger('hide');\r\n } else {\r\n legacy$('body').trigger('showToolbar');\r\n }\r\n }\r\n }\r\n\r\n hideForm() {\r\n this.$('form.bulk-appeal').hide();\r\n }\r\n\r\n reset() {\r\n this.hideForm();\r\n\r\n if (!this.isForVNext) {\r\n const legacy$Form = legacy$(this.$('form.bulk-appeal'));\r\n\r\n if (legacy$Form.length > 0) {\r\n legacy$Form.validate().resetForm();\r\n }\r\n }\r\n }\r\n\r\n disableButtons() {\r\n this.$('.appeal, .cancel').attr('disabled', 'disabled');\r\n }\r\n\r\n onAppeal = _.debounce((appealIds, adgroupId, Entities) => {\r\n let isValid;\r\n\r\n if (this.isForVNext) {\r\n isValid = this.editor && this.editor.viewModel.validate();\r\n } else {\r\n isValid = this.editor && legacy$(this.$('form.bulk-appeal')).valid();\r\n }\r\n\r\n if (isValid) {\r\n const activity = this.instrumentation && this.instrumentation.editorial && this.instrumentation.editorial.create().submitRequestException.create();\r\n\r\n if (activity && activity.trace) {\r\n activity.trace(`submit appeal: adgroupId: ${adgroupId}, appealIds: ${JSON.stringify(appealIds)}`);\r\n }\r\n\r\n const appealJson = this.editor.getAppealData();\r\n\r\n if (this.grid.gridView) {\r\n utilities.requestExceptionOdata(this.grid, this.controller, adgroupId, appealIds, appealJson, Entities, () => {\r\n this.onBulkCreateAppealSuccess({}, { grid: this.grid });\r\n }, (response) => {\r\n const errorMessages = _.pluck(getODataErrors(response.errors), 'message');\r\n\r\n if (!_.isEmpty(errorMessages)) {\r\n alertHelper.showAlert(errorMessages.join(';\\n'));\r\n }\r\n }, withUiBlock());\r\n } else {\r\n let params = utilities.ids2params(appealIds);\r\n\r\n if (appealJson) {\r\n params += `&EditorialAppeal.Appeal=${appealJson.Appeal}&EditorialAppeal.EntityType=${appealJson.EntityType}&EditorialAppeal.Justification=${appealJson.Justification}`;\r\n }\r\n\r\n this.grid.bulkAction(\r\n utilities.getInlineBulkAppealUrl(this.controller, this.submit),\r\n params,\r\n null,\r\n this.onBulkCreateAppealSuccess.bind(this),\r\n { grid: this.grid },\r\n );\r\n }\r\n }\r\n }, 500, true);\r\n\r\n onFetchBulkAppealRejections({ appealIds = [], appealData: [firstAppealData = {}], Entities = {}}, adgroupId) {\r\n if (firstAppealData.IsAppealable) {\r\n this.$('form.bulk-appeal').show();\r\n\r\n this.editor = new EditorView({\r\n appealData: firstAppealData,\r\n controlId: 'bulkAppeal',\r\n appealTitle: this.appealTitle,\r\n infoMsg: this.infoMsg,\r\n hideAppealCheckBox: true,\r\n el: this.$('.editor')[0],\r\n isForVNext: this.isForVNext,\r\n }).render();\r\n\r\n if (!this.isForVNext) {\r\n legacy$(this.$('form.bulk-appeal')).validate(this.editor.getValidateParams());\r\n }\r\n\r\n this.$('.cancel').unbind('click').click(() => {\r\n this.hide();\r\n });\r\n\r\n this.editor.toBulk(appealIds);\r\n\r\n if (_.isEmpty(appealIds)) {\r\n this.$('.appeal').removeClass('button-highlighted').hide();\r\n this.$('.cancel').addClass('button-highlighted');\r\n } else {\r\n this.$('.appeal').addClass('button-highlighted').show();\r\n this.$('.cancel').removeClass('button-highlighted');\r\n }\r\n\r\n this.$('.appeal').unbind('click').click(_.partial(this.onAppeal, appealIds, adgroupId, Entities));\r\n }\r\n }\r\n\r\n onBulkCreateAppealSuccess({ Errors }, { grid }) {\r\n if (!Errors) {\r\n this.hide();\r\n // update context to trigger force refresh\r\n\r\n const controller = this.controller.toLowerCase();\r\n\r\n if (controller === 'extension') {\r\n const { type } = this.scope || {};\r\n\r\n if (type === 'disclaimer') {\r\n dataContextManager.updateContext(['CampaignsGrid', 'AdGrid']);\r\n } else {\r\n dataContextManager.updateContext(['AccountAdExtensionsGrid', 'CampaignAdExtensionsGrid', 'AdGroupAdExtensionsGrid']);\r\n }\r\n } else if (controller === 'asset') {\r\n campaignCacheManager.invalidate('AssetLink');\r\n campaignCacheManager.invalidate('AssetWithBIData');\r\n } else {\r\n const contextToUpdate = controller === 'ads' ? ['AdGrid'] : ['KeywordGrid'];\r\n\r\n dataContextManager.updateContext(contextToUpdate);\r\n }\r\n\r\n if (grid && controller !== 'asset') {\r\n gridHelper.deselectAll(grid);\r\n }\r\n if (grid.gridView) {\r\n gridHelper.refresh(grid);\r\n }\r\n }\r\n }\r\n}\r\n\r\n","import _ from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport $ from 'jquery';\r\nimport odata from '@bingads-webui-static-legacy/communication/channel/odata';\r\nimport { getODataErrors } from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\nimport EditorView from '@bingads-webui-campaign-legacy/editorial-appeal/view/editor';\r\nimport InlineErrorView from '@bingads-webui-campaign-legacy/editorial-appeal/view/inline-error';\r\nimport template from '@bingads-webui-campaign-legacy/editorial-appeal/template/bulk.pug';\r\nimport { AlertHelper } from '@bingads-webui-campaign/alert-helper';\r\nimport dataContextManager from '@bingads-webui-static-legacy/summary/SummaryDataContextManager';\r\nimport {processRejectReasonsFromOdata} from '../utilities';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/editorial-appeal');\r\nconst i18nGlobal = window.globalLegacyI18n.get('component/i18n/loader!legacy/global');\r\n\r\nconst alertHelper = new AlertHelper({ i18nGlobal });\r\n\r\nexport default class SingleAppealView extends Backbone.View {\r\n initialize({\r\n id,\r\n parentId,\r\n grid,\r\n controller,\r\n submit,\r\n appealTitle,\r\n infoMsg,\r\n permissions,\r\n }) {\r\n this.id = id;\r\n this.parentId = parentId;\r\n this.grid = grid;\r\n this.controller = controller;\r\n this.submit = submit;\r\n this.appealTitle = appealTitle;\r\n this.infoMsg = infoMsg;\r\n\r\n this.editor = null;\r\n this.inlineErrorView = null;\r\n this.permissions = permissions;\r\n }\r\n\r\n render() {\r\n this.$el.html(template({ i18n }));\r\n this.hide(false);\r\n $(window).scrollTop(this.$('.editor').scrollTop());\r\n this.getAppealRejections();\r\n return this;\r\n }\r\n\r\n getAppealRejections() {\r\n const url = 'Advertiser/Customers()/Accounts()/Ads/Default.EditorialReasons';\r\n\r\n odata.post(url, {\r\n EntityIdsParentIds: [{ EntityId: this.id, ParentId: this.parentId }],\r\n }).then((data) => {\r\n if (data && !data.Errors) {\r\n const processedData = processRejectReasonsFromOdata(data, this.controller, this.permissions);\r\n\r\n this.onFetchBulkAppealRejections(processedData);\r\n } else {\r\n if (!this.inlineErrorView) {\r\n this.inlineErrorView = new InlineErrorView({ rowId: 'bulk', useKwCss: true }).render();\r\n this.$('.editor').append(this.inlineErrorView.$el);\r\n }\r\n\r\n this.inlineErrorView.removeCancel();\r\n\r\n this.$('.appeal').hide();\r\n this.$('.cancel').unbind('click').click(() => {\r\n this.hide();\r\n });\r\n this.$('form.bulk-appeal').show();\r\n $('#bulkCancelButton').focus();\r\n }\r\n })\r\n .catch(() => {\r\n if (!this.inlineErrorView) {\r\n this.inlineErrorView = new InlineErrorView({ rowId: 'bulk', useKwCss: true }).render();\r\n this.$('.editor').append(this.inlineErrorView.$el);\r\n }\r\n\r\n this.inlineErrorView.removeCancel();\r\n\r\n this.$('.appeal').hide();\r\n this.$('.cancel').unbind('click').click(() => {\r\n this.hide();\r\n });\r\n this.$('form.bulk-appeal').show();\r\n $('#bulkCancelButton').focus();\r\n });\r\n }\r\n\r\n hide(showToolbar = true) {\r\n if (this.editor) {\r\n this.editor.remove();\r\n this.editor = null;\r\n }\r\n\r\n this.$('form.bulk-appeal').hide();\r\n\r\n if (showToolbar) {\r\n this.grid.grid.toolbar.gridToolbarGroup.showAllToolbars();\r\n }\r\n }\r\n\r\n disableButtons() {\r\n this.$('.appeal, .cancel').attr('disabled', 'disabled');\r\n }\r\n\r\n onAppeal = _.debounce((appealIds) => {\r\n const isValid = this.editor && this.editor.viewModel.validate();\r\n\r\n if (isValid) {\r\n const appealJson = this.editor.getAppealData();\r\n const odataUrl = 'Advertiser/Customers()/Accounts()/Ads/Default.CreateAppeals';\r\n\r\n odata.post(odataUrl, {\r\n 'EntityIds': appealIds,\r\n JustificationText: appealJson.Justification,\r\n }).then(() => {\r\n this.hide();\r\n dataContextManager.updateContext(['AdGrid']);\r\n this.grid.grid.showAdStrength.refreshAdItem();\r\n this.grid.view.refresh(true);\r\n })\r\n .catch((response) => {\r\n const errorMessages = _.pluck(getODataErrors(response.errors), 'message');\r\n\r\n if (!_.isEmpty(errorMessages)) {\r\n alertHelper.showAlert(errorMessages.join(';\\n'));\r\n }\r\n });\r\n }\r\n });\r\n\r\n\r\n onFetchBulkAppealRejections({ appealIds = [], appealData: [firstAppealData = {}]}) {\r\n if (firstAppealData.IsAppealable) {\r\n this.$('form.bulk-appeal').show();\r\n\r\n this.editor = new EditorView({\r\n appealData: firstAppealData,\r\n controlId: 'bulkAppeal',\r\n appealTitle: this.appealTitle,\r\n infoMsg: this.infoMsg,\r\n hideAppealCheckBox: true,\r\n el: this.$('.editor')[0],\r\n isForVNext: true,\r\n }).render();\r\n\r\n this.$('.cancel').unbind('click').click(() => {\r\n this.hide();\r\n });\r\n\r\n this.editor.toBulk(appealIds);\r\n\r\n if (_.isEmpty(appealIds)) {\r\n this.$('.appeal').removeClass('button-highlighted').hide();\r\n this.$('.cancel').addClass('button-highlighted');\r\n } else {\r\n this.$('.appeal').addClass('button-highlighted').show();\r\n this.$('.cancel').removeClass('button-highlighted');\r\n }\r\n\r\n this.$('.appeal').unbind('click').click(_.partial(this.onAppeal, appealIds));\r\n }\r\n }\r\n\r\n\r\n}\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport InlineAppealView from '@bingads-webui-campaign-legacy/editorial-appeal/view/inline';\r\nimport BulkAppealEditor from '@bingads-webui-campaign-legacy/editorial-appeal/view/bulk';\r\nimport SingleAppealView from '@bingads-webui-campaign-legacy/editorial-appeal/view/single';\r\nimport { setClarityTag } from '@bingads-webui-universal/clarity';\r\n\r\nfunction menuIsDisabled(grid, menu) {\r\n return grid.gridView ?\r\n $(`#${menu}`).is(':disabled') :\r\n grid.getMenu(menu).is(':disabled');\r\n}\r\n\r\nfunction hideinlineEditors(ids, grid) {\r\n if (grid) {\r\n _.each(ids, (id) => {\r\n if (grid.getExpandedRowDetail(id).is(':visible')) {\r\n grid.expandRowDetail(id, null, true);\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default class AppealAggregator {\r\n constructor({\r\n grid,\r\n controller,\r\n submit,\r\n menuToFollow,\r\n permissions,\r\n requestExceptionFromPopup = false,\r\n instrumentation = null,\r\n disableAppealBtn = false,\r\n }) {\r\n this.grid = grid;\r\n this.controller = controller;\r\n this.submit = submit;\r\n this.menuToFollow = menuToFollow;\r\n this.requestExceptionFromPopup = requestExceptionFromPopup;\r\n\r\n this.inlineEditors = {};\r\n this.bulkEditor = null;\r\n this.permissions = permissions;\r\n this.instrumentation = instrumentation;\r\n this.disableAppealBtn = disableAppealBtn;\r\n }\r\n\r\n openInlineEditor(rowId, appealTitle) {\r\n hideinlineEditors(_.chain(this.inlineEditors).keys().without(rowId).value(), this.grid);\r\n\r\n if (this.bulkEditor) {\r\n this.bulkEditor.hideForm();\r\n }\r\n\r\n if (this.grid.hasExpandedRowDetail(rowId)) {\r\n this.grid.expandRowDetail(rowId, null, true, false);\r\n this.grid.cancelInlineUpdates();\r\n\r\n return;\r\n }\r\n\r\n const inlineEditor = new InlineAppealView({\r\n grid: this.grid,\r\n rowId,\r\n controller: this.controller,\r\n submit: this.submit,\r\n appealTitle,\r\n disableAppealBtn: menuIsDisabled(this.grid, this.menuToFollow),\r\n permissions: this.permissions,\r\n }).render();\r\n\r\n inlineEditor.on('success', () => {\r\n this.inlineEditors[rowId] = inlineEditor;\r\n });\r\n\r\n inlineEditor.on('cancel', () => {\r\n delete this.inlineEditors[rowId];\r\n });\r\n }\r\n\r\n openBulkEditor(appealTitle, el, adGroupLevelType, render = false, infoMsg, scope) {\r\n setClarityTag({ openBulkAppealEditor: 'true' });\r\n\r\n this.bulkEditor = new BulkAppealEditor({\r\n grid: this.grid,\r\n controller: this.controller,\r\n submit: this.submit,\r\n appealTitle,\r\n infoMsg,\r\n el,\r\n adGroupLevelType,\r\n isForVNext: true,\r\n requestExceptionFromPopup: this.requestExceptionFromPopup,\r\n permissions: this.permissions,\r\n instrumentation: this.instrumentation,\r\n scope,\r\n });\r\n\r\n if (render || !this.grid.gridView) {\r\n this.bulkEditor.render();\r\n }\r\n\r\n if (this.disableAppealBtn || menuIsDisabled(this.grid, this.menuToFollow)) {\r\n this.bulkEditor.disableButtons();\r\n }\r\n\r\n hideinlineEditors(_.keys(this.inlineEditors), this.grid);\r\n }\r\n\r\n openSingleEditor(id, parentId, appealTitle, infoMsg) {\r\n this.singleEditor = new SingleAppealView({\r\n id,\r\n parentId,\r\n grid: this.grid,\r\n controller: this.controller,\r\n submit: this.submit,\r\n appealTitle,\r\n infoMsg,\r\n permissions: this.permissions,\r\n });\r\n\r\n if ($(`#${this.menuToFollow}`).is(':disabled')) {\r\n this.singleEditor.disableButtons();\r\n }\r\n\r\n hideinlineEditors(_.keys(this.inlineEditors), this.grid);\r\n }\r\n\r\n resetBulkEditor() {\r\n if (this.bulkEditor) {\r\n this.bulkEditor.reset();\r\n }\r\n }\r\n\r\n removeBulkEditor() {\r\n if (this.bulkEditor) {\r\n this.bulkEditor.remove();\r\n this.bulkEditor = null;\r\n }\r\n }\r\n}\r\n\r\n","/* eslint-disable no-param-reassign */\r\n/* eslint-disable no-case-declarations */\r\nimport _ from 'underscore';\r\nimport legacy$ from 'jquery';\r\nimport { http } from '@bingads-webui/http-util';\r\nimport odata from '@bingads-webui-component-legacy/http/channel/odata';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\nimport { queryify } from '@bingads-webui/url-util';\r\nimport { getFwdLinkId } from '@bingads-webui-component-legacy/api-errors-campaign/map/editorialRejectionFwdLinkId';\r\nimport logger from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport constants from '@bingads-webui-static-legacy/instrumentation/constants';\r\nimport { getLocationString } from '@bingads-webui-campaign/delivery-status-popup-factory';\r\nimport SharedRepository from '@bingads-webui-campaign-legacy/adextension-shared/service/repository';\r\nimport { DisclaimerAdExtension } from '@bingads-webui-campaign/campaign-ui-schemas';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!legacy/global');\r\nconst i18nCommon = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/ads-tab/common');\r\n\r\nconst EditorialRejected = 70;\r\nconst EditorialApprovedLimited = 200;\r\nconst AppealableStatus = [EditorialRejected, EditorialApprovedLimited, 'EditorialRejected', 'EditorialApprovedLimited'];\r\n\r\nfunction getEditorialErrorMessage(reaonsCode, permissions) {\r\n let message = i18n.getString(`Error_Editorial_Raw_${reaonsCode}`) ||\r\n i18n.getString(`Editorial_RejectionReason_${reaonsCode}`);\r\n\r\n if (!message) {\r\n logger.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, 'getEditorialErrorMessageForEditorialAppeal',\r\n `Missed Editorial message mapping for code: ${reaonsCode}, use default`);\r\n message = i18n.getString('EditorialReasons_Default');\r\n }\r\n\r\n const fwLinkId = getFwdLinkId(reaonsCode);\r\n let fwlink = `http://go.microsoft.com/fwlink?LinkId=${fwLinkId}`;\r\n\r\n if (permissions && permissions.IsDomesticSimplifiedChineseEnabled) {\r\n fwlink = 'https://about.ads.microsoft.com/zh-cn/pilotpolicy.pdf';\r\n }\r\n\r\n return `${message}`;\r\n}\r\n\r\nexport function isAppealableStatus(status) {\r\n return _.contains(AppealableStatus, status);\r\n}\r\n\r\nexport function getInlineBulkAppealUrl(controller, action) {\r\n return queryify(`/Campaign/${controller}/${action}`, _.pick({\r\n cid: state.get('customer_id'),\r\n aid: state.get('account_id'),\r\n cmpid: state.get('campaign_id'),\r\n adgId: state.get('adgroup_id'),\r\n }, Boolean));\r\n}\r\n\r\n\r\nexport function ids2params(ids) {\r\n return _.map(ids, (id, index) => {\r\n return `ids[${index}]=${id}`;\r\n }).join('&');\r\n}\r\n\r\nconst getEntityTypeFromController = (controller) => {\r\n switch (controller) {\r\n case 'Ads':\r\n return 'Ad';\r\n case 'AssetGroup':\r\n return 'AssetGroup';\r\n case 'Extension':\r\n return 'Extension';\r\n case 'Keywords':\r\n default:\r\n return 'Keyword';\r\n }\r\n};\r\n\r\nexport const generateExtensionUrl = (url, adextension, scope) => {\r\n let type = scope.type;\r\n\r\n if (type === 'sitelink') {\r\n type = 'Sitelink2';\r\n } else if (type === 'businessinfo') {\r\n type = 'logo';\r\n }\r\n\r\n let args = _.extend({\r\n aid: scope.aid,\r\n cid: scope.cid,\r\n cmpid: scope.campaignId,\r\n type: type.replace('AdExtension', ''),\r\n adExtensionId: adextension && adextension.AdExtension && adextension.AdExtension.Id,\r\n campaignId: scope.campaignId || (adextension.Campaign && adextension.Campaign.Id),\r\n version: adextension && adextension.AdExtension && adextension.AdExtension.Version,\r\n });\r\n\r\n if ( type !== 'disclaimer') {\r\n args = _.extend(args, {\r\n adgid: scope.adGroupId,\r\n adGroupId: scope.adGroupId || (adextension.AdGroup && adextension.AdGroup.Id),\r\n });\r\n }\r\n\r\n return queryify(url, args);\r\n};\r\n\r\nexport function processRejectReasonsFromOdata(resultData, controller, permissions, Entities) {\r\n const appealIds = [];\r\n const rejectedReasons = [];\r\n const rejectedTerms = [];\r\n const resultValues = _.result(resultData, 'value') || resultData;\r\n\r\n // process each reason and generate reason string\r\n // as the user only need reasons, merge it here\r\n const reasonsAndPublisherCountriesMap = {};\r\n\r\n\r\n _.each(resultValues, ({EntityId, Reasons, IsAppealable}) => {\r\n if (IsAppealable) {\r\n appealIds.push(EntityId);\r\n\r\n _.each(Reasons, ({ReasonCode, Term, Location, LanguageToCountries, RejectionCountries}) => {\r\n const rejectedCountries = RejectionCountries || _.uniq(_.flatten(_.pluck(LanguageToCountries, 'PublisherCountries')));\r\n\r\n let reasonString = getEditorialErrorMessage(ReasonCode, permissions);\r\n // merge the reason & publishercountries\r\n\r\n if (reasonsAndPublisherCountriesMap[reasonString]) {\r\n reasonsAndPublisherCountriesMap[reasonString] =\r\n _.union(reasonsAndPublisherCountriesMap[reasonString], rejectedCountries);\r\n } else {\r\n reasonsAndPublisherCountriesMap[reasonString] = rejectedCountries;\r\n }\r\n\r\n let termString = Term;\r\n let locationStrings = typeof Location === 'string' ? Location : getLocationString({location: Location, commonI18n: i18nCommon});\r\n\r\n if (locationStrings) {\r\n termString = `${termString}(${i18n.getString('LblLocationString')}${locationStrings})`;\r\n }\r\n rejectedTerms.push(termString);\r\n });\r\n }\r\n });\r\n\r\n _.each(reasonsAndPublisherCountriesMap, (countries, reasonString) => {\r\n let rejectionReasonString = reasonString;\r\n const rejectedCountryStrings = _.map(countries, (country) => {\r\n return controller === 'Extension' ? country : i18n.getString(`PublisherCountry_${country}`);\r\n });\r\n\r\n if (!_.isEmpty(rejectedCountryStrings)) {\r\n rejectionReasonString = `${reasonString} (${rejectedCountryStrings.join(', ')})`;\r\n }\r\n rejectedReasons.push(rejectionReasonString);\r\n });\r\n\r\n const entityType = getEntityTypeFromController(controller);\r\n\r\n return {\r\n appealIds,\r\n appealData: [{\r\n Appeal: false,\r\n Justification: null,\r\n IsAppealable: true,\r\n RejectedReasons: rejectedReasons,\r\n RejectedTerms: rejectedTerms,\r\n EntityType: entityType,\r\n }],\r\n Entities,\r\n };\r\n}\r\n\r\nfunction getAppealRejectionsOdataNew(controller, _action, {\r\n adgroupEntityIds = [],\r\n ids,\r\n adgroupId,\r\n grid,\r\n success,\r\n jsonError,\r\n permissions,\r\n}) {\r\n const op = {};\r\n let Entities = {};\r\n\r\n if (controller === 'Asset') {\r\n _.each(ids, (id) => {\r\n Entities[id.EntityId] = id.EntityType;\r\n });\r\n op.data = {\r\n Entities: JSON.stringify(Entities),\r\n };\r\n } else if (adgroupEntityIds && !_.isEmpty(adgroupEntityIds)) {\r\n op.data = {\r\n 'EntityIdsParentIds': adgroupEntityIds,\r\n };\r\n } else if (!adgroupId) {\r\n op.data = {\r\n 'EntityIdsParentIds': _.map(ids, (id) => {\r\n const rowItem = grid.gridView.itemWithKey(id);\r\n const {Id: EntityId, AdGroup: adgroup } = rowItem;\r\n\r\n return {\r\n EntityId,\r\n ParentId: adgroup.Id,\r\n };\r\n }),\r\n };\r\n }\r\n\r\n const adgroupIdParameter = adgroupId ? `/AdGroups(${adgroupId})` : '';\r\n\r\n let odataUrl = '';\r\n\r\n switch (controller) {\r\n case 'Ads':\r\n odataUrl = `/Customers()/Accounts()${adgroupIdParameter}/Ads/Default.EditorialReasons`;\r\n break;\r\n\r\n case 'Keyword':\r\n odataUrl = `/Customers()/Accounts()${adgroupIdParameter}/Keywords/Default.EditorialReasons`;\r\n break;\r\n\r\n case 'Asset':\r\n odataUrl = '/Customers()/Accounts()/Assets/GetEditorialReasons';\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n return odata.post(odataUrl, op)\r\n .then((data) => {\r\n if (data && !data.Errors) {\r\n const processedData = processRejectReasonsFromOdata(data, controller, permissions, Entities);\r\n\r\n success(processedData, adgroupId);\r\n } else {\r\n jsonError();\r\n }\r\n })\r\n .catch(() => {\r\n jsonError();\r\n });\r\n}\r\nfunction requestExtensionRejectReason({\r\n url,\r\n EntityId,\r\n controller,\r\n success,\r\n jsonError,\r\n permissions,\r\n}) {\r\n return http.post({\r\n url,\r\n data: { __RequestVerificationToken: legacy$('input[name=\"__RequestVerificationToken\"]').val()},\r\n contentType: 'application/x-www-form-urlencoded',\r\n }).then((data) => {\r\n if (data && !data.Errors) {\r\n const processedData = processRejectReasonsFromOdata({\r\n value: [{\r\n EntityId,\r\n Reasons: data.RejectionReasons,\r\n IsAppealable: data.IsAppealable,\r\n }],\r\n }, controller, permissions);\r\n\r\n success(processedData);\r\n } else {\r\n jsonError();\r\n }\r\n },\r\n ).catch(() => {\r\n jsonError();\r\n });\r\n}\r\n\r\nfunction getExtensionAppealRejections({\r\n ids,\r\n controller,\r\n grid,\r\n success,\r\n jsonError,\r\n permissions,\r\n scope,\r\n}) {\r\n let url = '/campaign/AdExtensions.m/GetRejectionReasonData';\r\n\r\n if (scope.type === 'disclaimer') {\r\n const disclaimerRepos = new SharedRepository({\r\n schema: DisclaimerAdExtension,\r\n afterChangeComitted: _.noop,\r\n });\r\n let campaignId = ids[0];\r\n\r\n if (grid && grid.config && grid.config.name === 'summary_tab_ad') {\r\n const rowItem = grid.gridView.itemWithKey(ids[0]);\r\n\r\n campaignId = rowItem.Campaign.Id;\r\n }\r\n\r\n return disclaimerRepos.association.findAll({\r\n where: {\r\n campaignId,\r\n },\r\n }).then((adextension) => {\r\n url = generateExtensionUrl(url, {AdExtension: adextension && adextension[0], Campaign: {Id: campaignId}}, scope);\r\n return requestExtensionRejectReason({\r\n url,\r\n EntityId: adextension && adextension[0] && adextension[0].Id,\r\n controller,\r\n success,\r\n jsonError,\r\n permissions,\r\n });\r\n });\r\n }\r\n\r\n const adextension = grid.gridView.itemWithKey(ids[0]);\r\n\r\n url = generateExtensionUrl(url, adextension, scope);\r\n return requestExtensionRejectReason({\r\n url,\r\n EntityId: adextension && adextension.AdExtension && adextension.AdExtension.Id,\r\n controller,\r\n success,\r\n jsonError,\r\n permissions,\r\n });\r\n}\r\n\r\n\r\nexport function getAppealRejections(controller, action, ids, {\r\n grid,\r\n adgroupEntityIds,\r\n adgroupId,\r\n rowId,\r\n success,\r\n jsonError,\r\n permissions,\r\n scope,\r\n error = _.noop,\r\n}) {\r\n if (grid && grid.gridView) {\r\n if (controller === 'Extension') {\r\n return getExtensionAppealRejections({\r\n ids,\r\n controller,\r\n success,\r\n grid,\r\n permissions,\r\n jsonError,\r\n error,\r\n scope});\r\n } else {\r\n return getAppealRejectionsOdataNew(controller, action, {\r\n ids,\r\n adgroupEntityIds,\r\n success,\r\n grid,\r\n adgroupId,\r\n rowId,\r\n permissions,\r\n jsonError});\r\n }\r\n } else {\r\n return legacy$.advertiser.ajaxPost({\r\n url: getInlineBulkAppealUrl(controller, action),\r\n data: ids2params(ids),\r\n onSuccess: (data) => {\r\n if (data && !data.Errors) {\r\n success(data);\r\n }\r\n },\r\n onError: error,\r\n onJsonError: jsonError,\r\n });\r\n }\r\n}\r\n\r\nexport function requestExceptionOdata(grid,\r\n controller,\r\n scopeId,\r\n appealIds,\r\n appealData,\r\n Entities,\r\n successCallBack,\r\n exceptionCalLBack,\r\n finallyCallBack,\r\n) {\r\n if (grid.gridView) {\r\n const adgroupId = state.get('adgroup_id') || scopeId;\r\n let op = {\r\n data: {\r\n 'EntityIds': scopeId ? null : appealIds,\r\n JustificationText: appealData.Justification,\r\n },\r\n };\r\n\r\n if (controller === 'Asset') {\r\n op.data = {\r\n Entities: JSON.stringify(Entities),\r\n JustificationText: appealData.Justification,\r\n };\r\n }\r\n\r\n let odataUrl = adgroupId ?\r\n `/Customers()/Accounts()/AdGroups(${adgroupId})/Ads/Default.CreateAppeals` :\r\n '/Customers()/Accounts()/Ads/Default.CreateAppeals';\r\n\r\n switch (controller) {\r\n case 'Keyword':\r\n odataUrl = adgroupId ?\r\n `/Customers()/Accounts()/AdGroups(${adgroupId})/Keywords/Default.CreateAppeals` :\r\n '/Customers()/Accounts()/Keywords/Default.CreateAppeals';\r\n break;\r\n case 'Extension':\r\n odataUrl = '/Customers()/Accounts()/AdExtensions/Default.CreateAppeals';\r\n break;\r\n case 'Asset':\r\n odataUrl = '/Customers()/Accounts()/Assets/CreateAppeals';\r\n break;\r\n\r\n default:\r\n case 'Ads':\r\n break;\r\n }\r\n\r\n odata.post(odataUrl, op)\r\n .then(() => {\r\n successCallBack();\r\n })\r\n .catch((response) => {\r\n exceptionCalLBack(response);\r\n })\r\n .finally(() => {\r\n if (finallyCallBack) {\r\n finallyCallBack();\r\n }\r\n });\r\n }\r\n}\r\n","import ko from 'knockout';\r\nimport koSchema from '@bingads-webui-component-legacy/ko-schema/index';\r\n\r\nexport default class AppealEditorViewModel {\r\n constructor({\r\n i18n,\r\n isForVNext = false,\r\n }) {\r\n if (isForVNext) {\r\n const schema = {\r\n properties: {\r\n justification: {\r\n type: 'string',\r\n required: true,\r\n maxLength: 1000,\r\n },\r\n },\r\n };\r\n\r\n koSchema.properties(this, schema, ['justification']);\r\n\r\n this.justification.validators.required.set({\r\n message: i18n.get('EditorialAppeal_JustificationRequired'),\r\n });\r\n } else {\r\n this.justification = ko.observable('');\r\n }\r\n\r\n this.appealed = ko.observable(true);\r\n this.appealedVisible = ko.observable(true);\r\n this.justificationPanelVisible = ko.observable(true);\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport $ from 'jquery';\r\nimport ViewModel from '@bingads-webui-campaign-legacy/editorial-appeal/viewmodel/editor';\r\nimport template from '@bingads-webui-campaign-legacy/editorial-appeal/template/editor.pug';\r\nimport reasonsTemplate from '@bingads-webui-campaign-legacy/editorial-appeal/template/reasons.pug';\r\nimport inlineFormTemplate from '@bingads-webui-campaign-legacy/editorial-appeal/template/inline-form.pug';\r\nimport notAppealableTemplate from '@bingads-webui-campaign-legacy/editorial-appeal/template/not-appealable.pug';\r\nimport cancelButtonTemplate from '@bingads-webui-campaign-legacy/editorial-appeal/template/cancel-button.pug';\r\nimport buttonPanelTemplate from '@bingads-webui-campaign-legacy/editorial-appeal/template/button-panel.pug';\r\n\r\nconst legacy$ = $;\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/editorial-appeal');\r\n\r\nfunction removeDotAtTail(str) {\r\n if (_.last(str) === '.') {\r\n return _.initial(str).join('');\r\n }\r\n\r\n return str;\r\n}\r\n\r\nexport default class AppealView extends Backbone.View {\r\n initialize({\r\n controlId = 'control',\r\n appealData: {\r\n EntityType = 'entity',\r\n RejectedReasons = [],\r\n } = {},\r\n hideAppealCheckBox = false,\r\n appealTitle = i18n.get('EditorialAppeal_AppealTitle'),\r\n infoMsg,\r\n callback = null,\r\n appealIds,\r\n containerSelector,\r\n isForVNext = false,\r\n withRealTimeUpdates = false,\r\n }) {\r\n this.hideAppealCheckBox = hideAppealCheckBox;\r\n this.controlId = controlId;\r\n this.entityType = removeDotAtTail(EntityType);\r\n this.appealTitle = appealTitle;\r\n this.infoMsg = infoMsg;\r\n this.reasons = RejectedReasons;\r\n this.callback = callback;\r\n this.appealIds = appealIds;\r\n this.containerSelector = containerSelector;\r\n this.isForVNext = isForVNext;\r\n this.withRealTimeUpdates = withRealTimeUpdates;\r\n\r\n this._elementId = `${controlId}_${this.entityType}`;\r\n\r\n this.viewModel = new ViewModel({\r\n i18n,\r\n isForVNext: this.isForVNext,\r\n });\r\n\r\n if (this.withRealTimeUpdates) {\r\n this.subscribeForRealTimeUpdates('justification');\r\n this.subscribeForRealTimeUpdates('appealed');\r\n }\r\n }\r\n\r\n subscribeForRealTimeUpdates(source) {\r\n const observable = this.viewModel[source];\r\n\r\n observable.subscribe((newValue) => {\r\n this.triggerChangeEvent(source, newValue);\r\n }, undefined, 'change');\r\n }\r\n\r\n triggerChangeEvent(/* source, newValue */) {\r\n if (this.withRealTimeUpdates) {\r\n this.trigger('change', this.getAppealData(), this.validate());\r\n }\r\n }\r\n\r\n validate() {\r\n return this.viewModel.validate();\r\n }\r\n\r\n render() {\r\n this.$el.html(template({\r\n controlId: this._elementId,\r\n i18n,\r\n isForVNext: this.isForVNext,\r\n infoMsg: this.infoMsg,\r\n }));\r\n\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n this._create();\r\n this._init();\r\n\r\n return this;\r\n }\r\n\r\n getAppealParams() {\r\n const userAppealed = this.viewModel.appealed();\r\n\r\n const params = {\r\n 'EditorialAppeal.Appeal': userAppealed.toString(),\r\n 'EditorialAppeal.EntityType': this.entityType,\r\n };\r\n\r\n if (userAppealed) {\r\n params['EditorialAppeal.Justification'] = this.viewModel.justification();\r\n }\r\n\r\n return params;\r\n }\r\n\r\n getAppealData() {\r\n const userAppealed = this.viewModel.appealed();\r\n\r\n if (userAppealed) {\r\n const appealModel = {\r\n Prefix: 'EditorialAppeal',\r\n Appeal: userAppealed.toString(),\r\n EntityType: this.entityType,\r\n Justification: this.viewModel.justification(),\r\n };\r\n\r\n return appealModel;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n getValidateParams() {\r\n // TODO: [zhbliu] this is DOM id/name\r\n const textAreaId = this.getAppealJustificationName();\r\n\r\n return {\r\n rules: {\r\n [textAreaId]: { required: true },\r\n },\r\n messages: {\r\n [textAreaId]: { required: i18n.get('EditorialAppeal_JustificationRequired') },\r\n },\r\n errorElement: 'div',\r\n errorPlacement(error, element) {\r\n element.parent().append(error);\r\n },\r\n };\r\n }\r\n\r\n getAppealIds() {\r\n return this.appealIds;\r\n }\r\n\r\n toInline(appealIds, rowId, disableAppealBtn, { appeal, cancel }) {\r\n if (_.isEmpty(appealIds)) {\r\n this.$('.details').after(notAppealableTemplate({ i18n }));\r\n this.$('.details').parent().append(cancelButtonTemplate({ rowId, i18n }));\r\n\r\n this.viewModel.justificationPanelVisible(false);\r\n this.$('.details .non-appeal-msg-panel').show();\r\n this.$(`.appeal[data-rowid=${rowId}]`).hide();\r\n } else {\r\n this.$('.details').parent().append(buttonPanelTemplate({ rowId, i18n }));\r\n }\r\n\r\n this.$('.root').wrap(inlineFormTemplate({ rowId }));\r\n\r\n legacy$(this.$(`form.inline[data-rowid=${rowId}]`)).validate(this.getValidateParams());\r\n\r\n this.$(`.cancel[data-rowid=${rowId}]`).click(cancel);\r\n\r\n if (disableAppealBtn) {\r\n this.$(`.appeal[data-rowid=${rowId}]`).attr('disabled', 'disabled');\r\n } else {\r\n this.$(`.appeal[data-rowid=${rowId}]`).click(appeal);\r\n }\r\n\r\n }\r\n\r\n toBulk(appealIds) {\r\n const $noAppealMessagePanel = this.$('.details .non-appeal-msg-panel');\r\n const emptyLength = 0;\r\n\r\n if (_.isEmpty(appealIds)) {\r\n if ($noAppealMessagePanel.length === emptyLength) {\r\n this.$('.details').after(notAppealableTemplate({ i18n }));\r\n }\r\n\r\n this.viewModel.justificationPanelVisible(false);\r\n $noAppealMessagePanel.show();\r\n } else {\r\n this.viewModel.justificationPanelVisible(true);\r\n $noAppealMessagePanel.hide();\r\n }\r\n }\r\n\r\n getAppealJustificationName() {\r\n return this.$('.justification').attr('name');\r\n }\r\n\r\n _create() {\r\n if (this.callback) {\r\n this.callback(this.$el);\r\n this.$('.details').addClass('appeal-kw-details').parent();\r\n } else {\r\n $(this.containerSelector).append(this.$el);\r\n if (!this.isForVNext) {\r\n legacy$(this.$('.justification').closest('form')).validate().settings.messages[this.$('.justification').attr('name')] = {\r\n required: i18n.get('EditorialAppeal_JustificationRequired'),\r\n };\r\n }\r\n }\r\n }\r\n\r\n _init() {\r\n if (this.appealTitle) {\r\n this.$('.title').text(this.appealTitle);\r\n }\r\n\r\n if (_.isArray(this.reasons)) {\r\n const data = {\r\n reasons: _.uniq(this.reasons),\r\n };\r\n\r\n this.$('.reasons').html(reasonsTemplate(data));\r\n }\r\n\r\n if (!this.isForVNext) {\r\n legacy$(this.$('.justification')).counter(i18n.get('Ad_CharacterRemaning'), null, i18n.get('Counter_CharacterExceeded'));\r\n }\r\n\r\n this.$('.root').show();\r\n this.viewModel.justification('');\r\n\r\n if (this.hideAppealCheckBox) {\r\n this.viewModel.appealedVisible(false);\r\n this.viewModel.appealed(true);\r\n } else {\r\n this.viewModel.appealedVisible(true);\r\n this.viewModel.appealed(false);\r\n }\r\n\r\n if (this.controlId === 'adAppeal') {\r\n this.$('.ad-info').show();\r\n } else {\r\n this.$('.ad-info').hide();\r\n }\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport inlineErrorTemplate from '@bingads-webui-campaign-legacy/editorial-appeal/template/inline-error.pug';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/editorial-appeal');\r\n\r\nexport default class InlineErrorView extends Backbone.View {\r\n get events() {\r\n return {\r\n '.button': this.onCancel,\r\n };\r\n }\r\n\r\n initialize({\r\n rowId,\r\n callback = _.noop,\r\n useKwCss = false,\r\n }) {\r\n this.rowId = rowId;\r\n this.callback = callback;\r\n this.useKwCss = useKwCss;\r\n }\r\n\r\n render() {\r\n this.$el.html(inlineErrorTemplate({ rowId: this.rowId, useKwCss: this.useKwCss, i18n }));\r\n\r\n return this;\r\n }\r\n\r\n onCancel() {\r\n this.callback(this.rowId);\r\n }\r\n\r\n removeCancel() {\r\n this.$('.button').remove();\r\n }\r\n}\r\n","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (editMode, i18n, i18nGlobal, isDisplayPlusDisplayAd, isMultiAdFormatDisplayAd, isMultiAdFormatVideoAd, isSTADisabled, isXandrVideoAd, permissions, showInline, showSaveAndCreateAnother) {\n\n\n\npug_mixins[\"koErrors\"] = pug_interp = function(id, cssClass){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"class\", pug.classes([cssClass ? cssClass : 'alert alert-danger'], [true]), false, true)+\" data-bind=\\\"visible: errors().length > 0, foreach: errors, attr: {"aria-hidden": errors().length == 0}\\\"\"+pug.attr(\"id\", id ? id : 'KoErrors', true, true)) + \"\\u003E\\u003Cli\\u003E\\u003Cdiv data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_mixins[\"fwLink\"] = pug_interp = function(linkId, displayText, ariaLabelContext){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Ca\" + (pug.attr(\"href\", 'https://go.microsoft.com/fwlink/?linkid=' + linkId, true, true)+\" target=\\\"_blank\\\"\"+pug.attr(\"aria-label\", (ariaLabelContext || '') + ' ' + displayText, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = displayText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n};\npug_mixins[\"fwLink\"] = pug_interp = function(linkId, displayText, ariaLabelContext){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Ca\" + (pug.attr(\"href\", 'https://go.microsoft.com/fwlink/?linkid=' + linkId, true, true)+\" target=\\\"_blank\\\"\"+pug.attr(\"aria-label\", (ariaLabelContext || '') + ' ' + displayText, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = displayText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n};\npug_mixins[\"migrationWarning\"] = pug_interp = function(){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"col-sm-12 form-group\\\" data-bind=\\\"visible: showMigrationAlertForEXTA() || showMigrationAlertForSTA() || showSTAEndWarning()\\\"\\u003E\\u003Cdiv class=\\\"alert alert-warning form-group\\\" data-bind=\\\"visible: showMigrationAlertForEXTA()\\\"\\u003E\\u003Cdiv class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (!isSTADisabled) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"alert-info-inline\\\"\\u003E\" + (pug.escape(null == (pug_interp = (i18n.get('ExpandedTextAd_Migration') + ' ')) ? \"\" : pug_interp)) + \"\\u003Ca class=\\\"switchBackToSTA form-control-static\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('ExpandedTextAd_Migration_SwitchBackToSTA')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cspan\\u003E | \\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"HelpTopic\\\" query=\\\"help:app54537\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('LearnMoreLinkText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"alert-info-inline\\\"\\u003E\" + (pug.escape(null == (pug_interp = (i18n.get('ExpandedTextAd_Migration_EndSupport') + ' ')) ? \"\" : pug_interp)) + \"\\u003Ca class=\\\"HelpTopic\\\" query=\\\"help:app54537\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('LearnMoreLinkText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert alert-warning form-group\\\" data-bind=\\\"visible: showMigrationAlertForSTA()\\\"\\u003E\\u003Cdiv class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert-info-inline\\\"\\u003E\" + (pug.escape(null == (pug_interp = (i18n.get('ExpandedTextAd_Migration_Consider') + ' ')) ? \"\" : pug_interp)) + \"\\u003Ca class=\\\"switchBackToEXTA form-control-static\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('ExpandedTextAd_Migration_SwitchBackToEXTA')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cspan\\u003E | \\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"HelpTopic\\\" query=\\\"help:app54538\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('LearnMoreLinkText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert alert-warning form-group\\\" data-bind=\\\"visible: showSTAEndWarning()\\\"\\u003E\\u003Cdiv class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert-info-inline\\\"\\u003E\" + (pug.escape(null == (pug_interp = (i18n.get('STA_End_Warning') + ' ')) ? \"\" : pug_interp)) + \"\\u003Cspan\\u003E | \\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"HelpTopic\\\" query=\\\"help:app54537\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('LearnMoreLinkText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"form-horizontal\",showInline ? '' : 'adEditor-container'], [false,true]), false, true)) + \"\\u003E\\u003Cdiv data-bind=\\\"attr:{class: containerClass}\\\"\\u003E\";\nif (!showInline) {\npug_html = pug_html + \"\\u003Ch5\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_Create_Description')) ? \"\" : pug_interp)) + \"\\u003Cspan\\u003E \";\npug_mixins[\"fwLink\"]('832330', i18n.get('Ad_Create_Description_Tip'), i18n.get('Ad_Create_Description'));\npug_html = pug_html + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fh5\\u003E\";\n}\npug_mixins[\"migrationWarning\"]();\npug_html = pug_html + \"\\u003Cdiv class=\\\"row\\\" data-bind=\\\"visible: showAdTypeWithErrors()\\\"\\u003E\";\nif (!showInline) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\";\npug_mixins[\"koErrors\"]();\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"col-sm-6\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\" data-bind=\\\"visible: showAdType()\\\"\\u003E\\u003Cdiv class=\\\"col-sm-4 control-label\\\"\\u003E\\u003Clabel id=\\\"adTypeLabel\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_Type')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_NewAdCreate_AdType', i18n.get('Ad_Type'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-8\\\"\\u003E\\u003C!--ko if: adTypeOptions().length--\\u003E\\u003Cselect class=\\\"ad-types form-control\\\" data-bind=\\\"options: adTypeOptions, optionsText: "Name", optionsValue: "Value", value: Type, disable: disableAdType\\\" aria-labelledby=\\\"adTypeLabel\\\"\\u003E\\u003C\\u002Fselect\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C!--ko if: Type() === 'ResponsiveSearch'--\\u003E\";\nif (permissions.IsRSAAsDefaultType) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"alert alert-info form-group\\\"\\u003E\\u003Cdiv class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert-info-inline\\\"\\u003E\" + (pug.escape(null == (pug_interp = (i18n.get('RSA_As_Default_Type') + ' ')) ? \"\" : pug_interp)) + \"\\u003Ca\" + (\" class=\\\"HelpTopic\\\"\"+\" query=\\\"app54667\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", (i18n.getString('Click to learn more about {{item}}')).replace('{{item}}', i18n.getString('RSA_As_Default_Type')), true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('LearnMoreLinkText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"ad-format-option-container\\\" data-bind=\\\"visible: showAdFormatOptions()\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!--ko foreach: availableAdTypes--\\u003E\\u003Cdiv data-bind=\\\"attr: { "data-type": $data }, visible: $root.Type() === $data\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003Cdiv class=\\\"form-group\\\" data-bind=\\\"visible: errors.isAppealable()\\\"\\u003E\\u003Cdiv class=\\\"col-sm-offset-2 col-sm-8\\\"\\u003E\\u003Cdiv class=\\\"editorial-appeal-panel\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\nvar infoStyle = isXandrVideoAd ? 'margin-bottom: 16px' : '';\npug_html = pug_html + (\"\\u003Cdiv\" + (\" class=\\\"alert alert-info form-group\\\"\"+pug.attr(\"style\", pug.style(infoStyle), true, true)) + \"\\u003E\\u003Cdiv class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert-info-inline\\\"\\u003E\" + (pug.escape(null == (pug_interp = ((editMode ? i18n.get('Ads_Edited_Latency') : i18n.get('Ads_Created_Latency')) + ' ')) ? \"\" : pug_interp)));\npug_mixins[\"fwLink\"]('832333', i18n.get('LearnMoreLinkText'), editMode ? i18n.get('Ads_Edited_Latency') : i18n.get('Ads_Created_Latency'));\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (!showInline && !isDisplayPlusDisplayAd && !isXandrVideoAd && !isMultiAdFormatDisplayAd && !isMultiAdFormatVideoAd) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"save-bar form-group appEditor-save-container\\\"\\u003E\\u003Cinput\" + (\" class=\\\"save btn btn-primary\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", i18nGlobal.get('Button_Save'), true, true)+\" data-bind=\\\"enable: hasWebsiteImageOptedInObservable\\\"\") + \"\\u003E\";\nif (showSaveAndCreateAnother) {\npug_html = pug_html + \"\\u003Cinput\" + (\" class=\\\"save-create-another btn btn-default\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", i18n.get('Ad_SaveCreate'), true, true)+\" data-bind=\\\"enable: hasWebsiteImageOptedInObservable\\\"\") + \"\\u003E\";\n}\npug_html = pug_html + \"\\u003Cinput\" + (\" class=\\\"cancel btn btn-default\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", i18nGlobal.get('Button_Cancel'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"editMode\" in locals_for_with?locals_for_with.editMode:typeof editMode!==\"undefined\"?editMode:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"i18nGlobal\" in locals_for_with?locals_for_with.i18nGlobal:typeof i18nGlobal!==\"undefined\"?i18nGlobal:undefined,\"isDisplayPlusDisplayAd\" in locals_for_with?locals_for_with.isDisplayPlusDisplayAd:typeof isDisplayPlusDisplayAd!==\"undefined\"?isDisplayPlusDisplayAd:undefined,\"isMultiAdFormatDisplayAd\" in locals_for_with?locals_for_with.isMultiAdFormatDisplayAd:typeof isMultiAdFormatDisplayAd!==\"undefined\"?isMultiAdFormatDisplayAd:undefined,\"isMultiAdFormatVideoAd\" in locals_for_with?locals_for_with.isMultiAdFormatVideoAd:typeof isMultiAdFormatVideoAd!==\"undefined\"?isMultiAdFormatVideoAd:undefined,\"isSTADisabled\" in locals_for_with?locals_for_with.isSTADisabled:typeof isSTADisabled!==\"undefined\"?isSTADisabled:undefined,\"isXandrVideoAd\" in locals_for_with?locals_for_with.isXandrVideoAd:typeof isXandrVideoAd!==\"undefined\"?isXandrVideoAd:undefined,\"permissions\" in locals_for_with?locals_for_with.permissions:typeof permissions!==\"undefined\"?permissions:undefined,\"showInline\" in locals_for_with?locals_for_with.showInline:typeof showInline!==\"undefined\"?showInline:undefined,\"showSaveAndCreateAnother\" in locals_for_with?locals_for_with.showSaveAndCreateAnother:typeof showSaveAndCreateAnother!==\"undefined\"?showSaveAndCreateAnother:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (showAdGroupInfo) {pug_html = pug_html + \"\\u003Cdiv class=\\\"row\\\" data-bind=\\\"visible: alertMessage\\\"\\u003E\\u003Cdiv class=\\\"alert alert-danger col-sm-12\\\" data-bind=\\\"text: alertMessage, attr: {id: "AdGroupAlert-" + adGroup().Id, "aria-hidden": !alertMessage}\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"row\\\" data-bind=\\\"visible: duplicateAlertMessage\\\"\\u003E\\u003Cdiv class=\\\"alert alert-danger col-sm-12\\\" data-bind=\\\"text: duplicateAlertMessage, attr: {id: "AdGroupDuplicateAlert-" + adGroup().Id, "aria-hidden": !duplicateAlertMessage}\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"row\\\" data-bind=\\\"attr: {"aria-describedby": "AdGroupBriefing-" + adGroup().Id + " AdGroupAlert-" + adGroup().Id + " AdGroupDuplicateAlert-" + adGroup().Id}\\\"\\u003E\";\nif (showAdGroupInfo) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"adgroup-display col-sm-2\\\" data-bind=\\\"attr: {id: "AdGroupBriefing-" + adGroup().Id}\\\"\\u003E\\u003Cdiv class=\\\"adgroup-display-title\\\"\\u003E\\u003Cspan data-bind=\\\"text: adGroup().Name\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- ko foreach: firstTwoKeywords--\\u003E\\u003Cdiv class=\\\"adgroup-display-keyword\\\"\\u003E\\u003Cspan data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"ads-creative col-sm-10\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"showAdGroupInfo\" in locals_for_with?locals_for_with.showAdGroupInfo:typeof showAdGroupInfo!==\"undefined\"?showAdGroupInfo:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n) {pug_html = pug_html + \"\\u003Cdiv\" + (\" class=\\\"ad-editor-list-group\\\"\"+pug.attr(\"aria-label\", i18n.get('CrudAd_AdGroupAdsEditor_AdEditorListGroup_Label'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"row col-sm-offset-9 col-sm-3\\\"\\u003E\\u003Cdiv class=\\\"pager-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (adGroupId, data, i18n, isForVNext) {pug_mixins[\"toolbar\"] = pug_interp = function(data){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"adEditor-toolbar\\\"\\u003E\\u003Cdiv class=\\\"btn-group\\\"\\u003E# if (data.hasMultiAdgroups) { #\\u003Cbutton class=\\\"btn btn-default dropdown-toggle a11y-k-listview-button\\\" data-toggle=\\\"dropdown\\\" tabindex=\\\"-1\\\" aria-haspopup=\\\"true\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_Copy')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"caret\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fbutton\\u003E\\u003Cul class=\\\"dropdown-menu\\\" role=\\\"menu\\\"\\u003E\\u003Cli role=\\\"presentation\\\"\\u003E\\u003Cbutton class=\\\"btn btn-default itemAction-copy\\\" role=\\\"menuitem\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_Copy')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fli\\u003E\\u003Cli role=\\\"presentation\\\"\\u003E\\u003Cbutton class=\\\"btn btn-default itemAction-copyToOthers\\\" role=\\\"menuitem\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_Copy_To_OtherAdGroups')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fli\\u003E\\u003Cli class=\\\"dropdown-submenu\\\" role=\\\"presentation\\\"\\u003E\\u003Cbutton class=\\\"btn btn-default copy-to-some\\\" role=\\\"menuitem\\\" aria-haspopup=\\\"true\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_Copy_To_Some')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"caret\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fbutton\\u003E\\u003Cul class=\\\"dropdown-menu copyToSome\\\" data-id=\\\"#:data.Id#\\\" role=\\\"menu\\\"\\u003E# for (var i = 0; i \\u003C data.adGroups.length; i++) { #\\u003Cli role=\\\"presentation\\\"\\u003E\\u003Ca class=\\\"text-left a11y-k-listview-button\\\" onclick=\\\"event.stopPropagation();\\\" onmousedown=\\\"event.stopPropagation();\\\" href=\\\"javascript:void(0);\\\" tabindex=\\\"-1\\\" role=\\\"menuitem\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput type=\\\"checkbox\\\" data-adgroupid=\\\"#: data.adGroups[i].Id #\\\"\\u003E\\u003Cspan\\u003E #= data.adGroups[i].Name #\\u003C\\u002Fspan\\u003E\\u003C\\u002Flabel\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fli\\u003E# } #\\u003Cli class=\\\"divider\\\" role=\\\"presentation\\\"\\u003E\\u003C\\u002Fli\\u003E\\u003Cli role=\\\"presentation\\\"\\u003E\\u003Cbutton class=\\\"btn btn-default itemAction-copyToSome\\\" role=\\\"menuitem\\\" onmousedown=\\\"event.stopPropagation();\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Button_Apply')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E# } else { #\\u003Cbutton class=\\\"btn btn-default a11y-k-listview-button itemAction-copy\\\" role=\\\"button\\\" tabindex=\\\"0\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_Copy')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fbutton\\u003E# } #\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"btn-group\\\"\\u003E\\u003Cbutton class=\\\"btn btn-default a11y-k-listview-button itemAction-edit\\\" role=\\\"button\\\" tabindex=\\\"0\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Edit')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"btn-group\\\"\\u003E\\u003Cbutton class=\\\"btn btn-default a11y-k-listview-button itemAction-remove\\\" role=\\\"button\\\" tabindex=\\\"0\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Remove')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"textAdPreview\"] = pug_interp = function(data){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv\\u003E\\u003Ca class=\\\"previewTitleAd a11y-k-listview-button\\\" target=\\\"_blank\\\" href=\\\"#: data.DestinationUrl #\\\"\\u003E\\u003Cdiv class=\\\"truncated\\\"\\u003E\\u003Cspan\\u003E#: data.Title #\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"truncated\\\"\\u003E\\u003Cspan class=\\\"preview-ad-slug\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Entity_Ads')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan\\u003E \\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"previewUrlAd a11y-k-listview-button\\\" href=\\\"javascript:void(0);\\\"\\u003E\\u003Cspan\\u003E#: data.DisplayUrl #\\u003C\\u002Fspan\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"previewtext truncated\\\"\\u003E\\u003Cspan\\u003E#: data.Text #\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"appInstallAdPreview\"] = pug_interp = function(data){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv\\u003E\\u003Ca class=\\\"previewTitleAd a11y-k-listview-button\\\" target=\\\"_blank\\\" href=\\\"#: data.FinalUrls[0] #\\\" tabindex=\\\"-1\\\"\\u003E\\u003Cdiv class=\\\"truncated\\\"\\u003E\\u003Cspan\\u003E#: data.Title #\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"truncated\\\"\\u003E\\u003Cspan class=\\\"preview-ad-slug\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Entity_Ads')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan\\u003E \\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"previewUrlAd a11y-k-listview-button\\\" href=\\\"javascript:void(0);\\\" tabindex=\\\"-1\\\"\\u003E\\u003Cspan\\u003E#: data.AppPlatform #\\u003C\\u002Fspan\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"previewtext truncated\\\"\\u003E\\u003Cspan\\u003E#: data.Text #\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"expandedTextAdPreview\"] = pug_interp = function(data){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv\\u003E\\u003Ca class=\\\"previewTitleAd a11y-k-listview-button\\\" target=\\\"_blank\\\" href=\\\"#: data.FinalUrls[0] #\\\" tabindex=\\\"-1\\\"\\u003E\\u003Cdiv class=\\\"truncated\\\"\\u003E\\u003Cspan\\u003E#: data.title #\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"truncated\\\"\\u003E\\u003Cspan class=\\\"preview-ad-slug\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Entity_Ads')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan\\u003E \\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"previewUrlAd a11y-k-listview-button\\\" href=\\\"javascript:void(0);\\\" tabindex=\\\"-1\\\"\\u003E\\u003Cspan\\u003E#: data.displayUrl #\\u003C\\u002Fspan\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"previewtext truncated\\\"\\u003E\\u003Cspan\\u003E#: data.text #\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"responsiveAdPreview\"] = pug_interp = function(data){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"responsive-ad-preview-shared-template\\\"\\u003E\\u003Cimg src=\\\"#: data.ThumbnailForAdList #\\\" align=\\\"left\\\" alt=\\\"\\\"\\u003E\\u003Cdiv class=\\\"truncated\\\"\\u003E#: data.Headline #\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"truncated\\\"\\u003E#: data.LongHeadline #\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"truncated\\\"\\u003E#: data.Text #\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"truncated\\\"\\u003E#: data.BusinessName #\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"responsiveSearchAdPreview\"] = pug_interp = function(data){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv\\u003E\\u003Ca class=\\\"previewTitleAd a11y-k-listview-button\\\" target=\\\"_blank\\\" href=\\\"#: data.FinalUrls[0] #\\\"\\u003E\\u003Cdiv class=\\\"truncated\\\"\\u003E\\u003Cspan\\u003E#: data.title #\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"truncated\\\"\\u003E\\u003Cspan class=\\\"preview-ad-slug\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Entity_Ads')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan\\u003E \\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"previewUrlAd a11y-k-listview-button\\\" href=\\\"javascript:void(0);\\\"\\u003E\\u003Cspan\\u003E#: data.displayUrl #\\u003C\\u002Fspan\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"previewtext truncated\\\"\\u003E\\u003Cspan\\u003E#: data.text #\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"dynamicSearchAdPreview\"] = pug_interp = function(data){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv\\u003E\\u003Cspan class=\\\"previewTitleAd a11y-k-listview-button\\\"\\u003E\" + (pug.escape(null == (pug_interp = '{' + i18n.get('Ad_DSA_Title') + '}') ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"truncated\\\"\\u003E\\u003Cspan class=\\\"preview-ad-slug\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Entity_Ads')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan\\u003E \\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"previewUrlAd a11y-k-listview-button\\\" href=\\\"javascript:void(0);\\\"\\u003E\\u003Cspan\\u003E#: data.displayUrl #\\u003C\\u002Fspan\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"previewtext truncated\\\"\\u003E\\u003Cspan\\u003E#: data.text #\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"actionbox\"] = pug_interp = function(data, isForVNext){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"# if (data.action === 'create') { #\\u003Cdiv class=\\\"create-ad #if (data.isFirst) {# adgroup-createBox-sm #} else {# adgroup-createBox-lg #}#\\\"\\u003E\\u003Ca class=\\\"create-ad-link\\\" href=\\\"javascript:void(0);\\\" tabindex=\\\"0\\\"\\u003E\\u003Cspan class=\\\"glyphicon glyphicon-plus\\\"\\u003E\\u003C\\u002Fspan\\u003E\" + (null == (pug_interp = i18n.get('Ad_Create')) ? \"\" : pug_interp) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E# } else if (data.action === 'dash') { #\";\nif (!isForVNext) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"#if (data.isFirst) {# adgroup-dashedBox-sm #} else {# adgroup-dashedBox-lg #}#\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"# } #\";\n};\npug_html = pug_html + \"# if (data.action) { #\";\npug_mixins[\"actionbox\"](data, isForVNext, adGroupId);\npug_html = pug_html + \"# } else { #\\u003Cdiv class=\\\"adEditor-listitem dlbItem #if (data.isDuplicated || data.hasError) {# adEditor-error #} #\\\" data-id=\\\"#:data.Id#\\\" id=\\\"crud-ad-ad-preview-#:data.Id#\\\"\\u003E# if (data.Type == 'Text') { #\";\npug_mixins[\"textAdPreview\"](data);\npug_html = pug_html + \"# } else if (data.Type == 'ExpandedText') { #\";\npug_mixins[\"expandedTextAdPreview\"](data);\npug_html = pug_html + \"# } else if (data.Type == 'ResponsiveSearch') { #\";\npug_mixins[\"responsiveSearchAdPreview\"](data);\npug_html = pug_html + \"# } else if (data.Type == 'AppInstall') { #\";\npug_mixins[\"appInstallAdPreview\"](data);\npug_html = pug_html + \"# } else if (data.Type == 'DynamicSearch') { #\";\npug_mixins[\"dynamicSearchAdPreview\"](data);\npug_html = pug_html + \"# } else if (data.Type == 'Responsive') { #\";\npug_mixins[\"responsiveAdPreview\"](data);\npug_html = pug_html + \"# } #\";\npug_mixins[\"toolbar\"](data);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E# } #\";}.call(this,\"adGroupId\" in locals_for_with?locals_for_with.adGroupId:typeof adGroupId!==\"undefined\"?adGroupId:undefined,\"data\" in locals_for_with?locals_for_with.data:typeof data!==\"undefined\"?data:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isForVNext\" in locals_for_with?locals_for_with.isForVNext:typeof isForVNext!==\"undefined\"?isForVNext:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;pug_html = pug_html + \"\\u003Cinput id=\\\"countdowndatepicker\\\"\\u003E\";;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, syntax) {pug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_html = pug_html + (\"\\u003Cspan class=\\\"countdownEditor-syntax\\\"\\u003E\" + (pug.escape(null == (pug_interp = syntax) ? \"\" : pug_interp)));\npug_mixins[\"popupHelp\"]('pop_BA_NewAdCreate_Countdown_Syntax', '', i18n.getString('CountdownEditor_Syntax_Tooltip'));\npug_html = pug_html + \"\\u003C\\u002Fspan\\u003E\\u003Chr\\u003E\\u003Cform class=\\\"form-horizontal form-grid\\\"\\u003E\\u003Cdiv class=\\\"flexible-grid-row-1 form-label control-label\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('CountdownEditor_CountdownEnds_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_NewAdCreate_Countdown_End', i18n.getString('CountdownEditor_CountdownEnds_Tooltip'));\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-input-container flexible-grid-row-1 form-date\\\" data-property=\\\"date\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-input-container flexible-grid-row-1 form-time\\\" data-property=\\\"time\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cspan class=\\\"flexible-grid-row-1 form-time-format countdownEditor-description\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('CountdownEditor_TimeFormat_Description')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cdiv class=\\\"form-validation-container flexible-grid-row-2 form-validation\\\" data-property=\\\"date\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-validation-container flexible-grid-row-3 form-validation\\\" data-property=\\\"time\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"flexible-grid-row-4 form-label control-label\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('CountdownEditor_CountdownStarts_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_NewAdCreate_Countdown_Start', i18n.getString('CountdownEditor_CountdownStarts_Tooltip'));\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-input-container flexible-grid-row-4 form-days\\\" data-property=\\\"days\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cspan class=\\\"flexible-grid-row-4 form-days-description countdownEditor-description\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('CountdownEditor_DaysBefore_Description')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cdiv class=\\\"form-validation-container flexible-grid-row-5 form-validation\\\" data-property=\\\"days\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"flexible-grid-row-6 form-label control-label\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('CountdownEditor_TimeZone_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_NewAdCreate_Countdown_TimeZone', i18n.getString('CountdownEditor_TimeZone_Tooltip'));\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-input-container flexible-grid-row-6 form-time-zone\\\" data-property=\\\"isGlobal\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"flexible-grid-row-7 form-label control-label\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('CountdownEditor_Language_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_NewAdCreate_Countdown_Language', i18n.getString('CountdownEditor_Language_Tooltip'));\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-input-container flexible-grid-row-7 form-language\\\" data-property=\\\"language\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-validation-container flexible-grid-row-8 form-validation\\\" data-property=\\\"$overall\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-input-container flexible-grid-row-9 form-buttons\\\" data-property=\\\"$buttons\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fform\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"syntax\" in locals_for_with?locals_for_with.syntax:typeof syntax!==\"undefined\"?syntax:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (position) {pug_html = pug_html + \"\\u003Cul\" + (\" class=\\\"dropdown-menu\\\"\"+\" data-bind=\\\"foreach: items\\\" role=\\\"menu\\\"\"+pug.attr(\"style\", pug.style('display: block; left: ' + position.left + 'px; top: ' + position.top + 'px'), true, true)) + \"\\u003E\\u003Cli\\u003E\\u003Ca role=\\\"menuitem\\\" data-bind=\\\"click: action, aria-label: description\\\" href=\\\"javascript:void(0);\\\"\\u003E\\u003Cdiv class=\\\"type-bold\\\" data-bind=\\\"text: name\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"type-normal\\\" data-bind=\\\"text: description\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";}.call(this,\"position\" in locals_for_with?locals_for_with.position:typeof position!==\"undefined\"?position:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, isForVNext, tabItems) {pug_mixins[\"koValidationError\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"data-bind\", 'visible: !' + item + '.isValid(), foreach: ' + item + '.errors, attr: {\"aria-hidden\": ' + item + '.isValid()}', true, true)+pug.attr(\"id\", id ? id : item + 'ValidationError', true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003Cli role=\\\"presentation\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_mixins[\"koCharactersRemaining\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"remaining-hint help-block\\\"\\u003E\\u003Cspan\" + (pug.attr(\"data-bind\", 'text:' + item + '.char_rem', true, true)+pug.attr(\"id\", id ? id : item + '_CharactersRemaining', true, true)+\" role=\\\"status\\\" aria-live=\\\"polite\\\"\") + \"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"appInstallAdPreview\"] = pug_interp = function(tabItems, isForVNext){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"col-sm-6\\\"\\u003E\\u003Cdiv class=\\\"ui-tabs preview-nav-pills\\\"\\u003E\\u003Cul class=\\\"ui-tabs-nav btn-group\\\"\\u003E\\u003Cli data-bind=\\\"css: previewTabSelected(tabItems.Mobile)\\\"\\u003E\\u003Ca\" + (\" class=\\\"selected btn preview-tab\\\"\"+pug.attr(\"data-target\", tabItems.Mobile, true, true)+\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('AppInstall_MobileView')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fli\\u003E\\u003Cli data-bind=\\\"css: previewTabSelected(tabItems.Tablet)\\\"\\u003E\\u003Ca\" + (\" class=\\\"selected btn preview-tab\\\"\"+pug.attr(\"data-target\", tabItems.Tablet, true, true)+\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('AppInstall_TabletView')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (isForVNext) {\npug_html = pug_html + \"\\u003Cdiv data-bind=\\\"css: previewType() === tabItems.Mobile ? "app-install__mobile-frame" : "app-install__tablet-frame"\\\"\\u003E\\u003Cdiv class=\\\"app-install__preview-ad\\\"\\u003E\\u003Cdiv class=\\\"app-install__preview\\\"\\u003E\\u003Cdiv class=\\\"preview-app-icon\\\"\\u003E\\u003Cdiv class=\\\"preview-app-placeholder\\\" data-bind=\\\"visible:!appSelected() || manualApp()\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cimg class=\\\"preview-app-image\\\" data-bind=\\\"visible: appSelected() && !manualApp(), attr: { src: MediaUrl, alt: "" }\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"preview-app-description\\\"\\u003E\\u003Ca class=\\\"preview-app-title\\\" data-bind=\\\"text: adTitlePreview, attr: { target:"_blank", href: previewUrl }\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003Cdiv class=\\\"preview-app-details\\\" data-bind=\\\"text: adTextPreview\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"app-install__actions\\\"\\u003E\\u003Ca class=\\\"preview-app-url\\\" data-bind=\\\"text: appStorePreview\\\" href=\\\"javascript:void(0);\\\" tabindex=\\\"-1\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003Cdiv class=\\\"preview-app-actions\\\"\\u003E\\u003Ca data-bind=\\\"attr: { target: "_blank", href: previewUrl, tabindex: "-1" }\\\"\\u003E\\u003Cbutton class=\\\"btn btn-default\\\" type=\\\"button\\\" data-bind=\\\"attr: { tabindex: appSelected() ? "0" : "-1" }\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_AppInstall_PreviewButtonText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv data-bind=\\\"if: previewType() === tabItems.Mobile\\\"\\u003E\\u003Cdiv class=\\\"app-install__mobile-frame\\\"\\u003E\\u003Cdiv class=\\\"app-install__preview-ad\\\"\\u003E\\u003Cdiv\\u003E\\u003Ca class=\\\"previewTitleAd mainline app-preview-title\\\" data-bind=\\\"text: adTitlePreview, attr: { target:"_blank", href: previewUrl }\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_Preview_Prefix')) ? \"\" : pug_interp)) + \"\\u003Ca class=\\\"previewUrlAd mainline appInstallAdPreview\\\" data-bind=\\\"text: appStorePreview\\\" href=\\\"javascript:void(0);\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"app-install-mobile-preview\\\"\\u003E\\u003Ctable\\u003E\\u003Ctbody\\u003E\\u003Ctr\\u003E\\u003Ctd class=\\\"preview-app-icon\\\"\\u003E\\u003Cdiv class=\\\"app-install__app-placeholder\\\" data-bind=\\\"visible:!appSelected() || manualApp()\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cimg class=\\\"applookup-results-image\\\" data-bind=\\\"visible: appSelected() && !manualApp(), attr: { src: MediaUrl }\\\"\\u003E\\u003C\\u002Ftd\\u003E\\u003Ctd class=\\\"preview-app-details\\\"\\u003E\\u003Cdiv class=\\\"preview-wrap-long-text\\\" data-bind=\\\"text: adTextPreview\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Ftd\\u003E\\u003Ctd class=\\\"preview-app-actions\\\"\\u003E\\u003Ca data-bind=\\\"attr: { target:"_blank", href: previewUrl }\\\"\\u003E\\u003Cbutton class=\\\"btn btn-default\\\" type=\\\"button\\\" disabled=\\\"disabled\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_AppInstall_PreviewButtonText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Ftbody\\u003E\\u003C\\u002Ftable\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv data-bind=\\\"if: previewType() === tabItems.Tablet\\\"\\u003E\\u003Cdiv class=\\\"app-install__tablet-frame\\\"\\u003E\\u003Cdiv class=\\\"app-install__preview-ad\\\"\\u003E\\u003Cdiv\\u003E\\u003Ca class=\\\"previewTitleAd mainline app-preview-title\\\" data-bind=\\\"text: adTitlePreview, attr: { href: previewUrl }\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_Preview_Prefix')) ? \"\" : pug_interp)) + \"\\u003Ca class=\\\"previewUrlAd mainline appInstallAdPreview\\\" data-bind=\\\"text: appStorePreview\\\" href=\\\"javascript:void(0);\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"app-install-tablet-preview\\\"\\u003E\\u003Ctable\\u003E\\u003Ctbody\\u003E\\u003Ctr\\u003E\\u003Ctd class=\\\"preview-app-icon\\\"\\u003E\\u003Cdiv class=\\\"app-install__app-placeholder\\\" data-bind=\\\"visible:!appSelected() || manualApp()\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cimg class=\\\"applookup-results-image\\\" data-bind=\\\"visible:appSelected() && !manualApp(), attr: { src: MediaUrl }\\\"\\u003E\\u003C\\u002Ftd\\u003E\\u003Ctd class=\\\"preview-app-details\\\"\\u003E\\u003Cdiv class=\\\"preview-wrap-long-text\\\" data-bind=\\\"text: adTextPreview\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Ftd\\u003E\\u003Ctd class=\\\"preview-app-actions\\\"\\u003E\\u003Ca data-bind=\\\"attr: { target:"_blank", href: previewUrl }\\\"\\u003E\\u003Cbutton class=\\\"btn btn-default\\\" type=\\\"button\\\" disabled=\\\"disabled\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_AppInstall_PreviewButtonText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Ftbody\\u003E\\u003C\\u002Ftable\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n};\npug_html = pug_html + (\"\\u003Cdiv class=\\\"row\\\"\\u003E\\u003Cdiv class=\\\"col-sm-6\\\"\\u003E\\u003Cdiv class=\\\"form-group app-lookup-control\\\" data-bind=\\\"visible: !appLookupDisabled()\\\"\\u003E\\u003Clabel class=\\\"control-label col-sm-4\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('AppInstall_MobileApp')) ? \"\" : pug_interp)));\npug_mixins[\"popupHelp\"]('pop_BA_AppInstall_MobileApp', i18n.get('AppInstall_MobileApp'), i18n);\npug_html = pug_html + \"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"col-sm-8\\\"\\u003E\\u003Cdiv class=\\\"clear\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"dropdownContainer applookup-dropdown\\\" data-bind=\\\"css:appSelected() && !manualApp() ? "applookup-selected-popover" : "applookup-popover"\\\"\\u003E\\u003Cdiv class=\\\"dropDownSelect\\\" rel=\\\"popover\\\"\\u003E\\u003Cdiv class=\\\"form-control changeapp clickable\\\" data-bind=\\\"css: {"validation-error": !AppStoreId.isValid()}, visible:!appSelected() || manualApp(), attr: {"aria-label": appIdPlaceholderText}\\\" tabindex=\\\"0\\\" role=\\\"button\\\"\\u003E\\u003Cspan data-bind=\\\"text:appIdPlaceholderText, css:manualApp() ? "" : "lookup-placeholder"\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan data-bind=\\\"visible: !editMode()\\\"\\u003E\\u003Ca class=\\\"icon edit_icon change-app-edit\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Ctable class=\\\"col-sm-8 appinfo-table\\\" data-bind=\\\"visible: appSelected() && !manualApp()\\\"\\u003E\\u003Ctbody\\u003E\\u003Ctr\\u003E\\u003Ctd class=\\\"app-icon\\\"\\u003E\\u003Cimg class=\\\"applookup-results-image\\\" data-bind=\\\"attr: { src: MediaUrl }\\\" alt=\\\"\\\"\\u003E\\u003C\\u002Ftd\\u003E\\u003Ctd class=\\\"app-details\\\"\\u003E\\u003Cul role=\\\"presentation\\\"\\u003E\\u003Cli class=\\\"wrap-long-text\\\" data-bind=\\\"text: AltText\\\" role=\\\"presentation\\\"\\u003E\\u003C\\u002Fli\\u003E\\u003Cli role=\\\"presentation\\\"\\u003E\\u003Ca class=\\\"wrap-long-text appstoreselector\\\" data-bind=\\\"attr: {href: previewUrl, target:"_blank"}, text: AppStoreId\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003Cspan data-bind=\\\"visible: developerName()\\\"\\u003E - \\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"wrap-long-text\\\" data-bind=\\\"text: developerName\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Ftd\\u003E\\u003Ctd class=\\\"app-actions\\\"\\u003E\\u003Cspan class=\\\"edit-selectedapp\\\" data-bind=\\\"visible: !editMode()\\\"\\u003E\\u003Ca\" + (\" class=\\\"icon edit_icon block-app-icon changeapp clickable\\\"\"+\" href=\\\"javascript:void(0);\\\" role=\\\"button\\\"\"+pug.attr(\"aria-label\", i18n.get('Reselect_Mobile_App'), true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Ftbody\\u003E\\u003C\\u002Ftable\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\npug_mixins[\"koValidationError\"]('AppPlatform', 'LookupEnabledAppPlatformValidationError');\npug_mixins[\"koValidationError\"]('AppStoreId', 'LookupEnabledAppStoreIdValidationError');\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\" data-bind=\\\"visible: appLookupDisabled()\\\"\\u003E\\u003Clabel class=\\\"control-label col-sm-4\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('AppInstall_Platform')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"col-sm-8\\\"\\u003E\\u003Cdiv class=\\\"clear\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cselect class=\\\"form-control\\\" name=\\\"Ad.AppInstallAd.AppPlatform\\\" data-bind=\\\"options: appPlatforms, optionsText: "Name", optionsValue: "Value", value: AppPlatform, disable: editMode\\\"\\u003E\\u003C\\u002Fselect\\u003E\";\npug_mixins[\"koValidationError\"]('AppPlatform', 'LookupDisabledAppPlatformValidationError');\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\" data-bind=\\\"visible: appLookupDisabled()\\\"\\u003E\\u003Clabel class=\\\"control-label col-sm-4\\\"\\u003E\\u003Clabel data-bind=\\\"text: appIdName\\\"\\u003E\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_AppExtensions_PackageName', '', i18n);\npug_html = pug_html + \"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"col-sm-8\\\"\\u003E\\u003Cdiv class=\\\"clear\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cinput class=\\\"form-control\\\" name=\\\"Ad.AppInstallAd.AppStoreId\\\" data-bind=\\\"value: AppStoreId, disable: editMode\\\"\\u003E\";\npug_mixins[\"koValidationError\"]('AppStoreId', 'LookupDisabledAppStoreIdValidationError');\npug_html = pug_html + (\"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Clabel class=\\\"control-label col-sm-4\\\" id=\\\"label-app-install-ad-title\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('AppInstall_Title')) ? \"\" : pug_interp)));\npug_mixins[\"popupHelp\"]('pop_BA_AppInstall_AdTitle', i18n.get('AppInstall_Title'), i18n);\npug_html = pug_html + \"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"col-sm-8\\\"\\u003E\\u003Cdiv class=\\\"clear\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cinput class=\\\"form-control\\\" name=\\\"Ad.AppInstallAd.AdTitle\\\" data-bind=\\\"css: {"validation-error": !Title.isValid()}, value: Title, valueUpdate: "input"\\\" aria-describedby=\\\"Title_CharactersRemaining\\\" aria-labelledby=\\\"label-app-install-ad-title\\\"\\u003E\";\npug_mixins[\"koCharactersRemaining\"]('Title');\npug_mixins[\"koValidationError\"]('Title');\npug_html = pug_html + (\"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Clabel class=\\\"control-label col-sm-4\\\" id=\\\"label-app-install-ad-description\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('AppInstall_Text')) ? \"\" : pug_interp)));\npug_mixins[\"popupHelp\"]('pop_BA_AppInstall_AdText', i18n.get('AppInstall_Text'), i18n);\npug_html = pug_html + \"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"col-sm-8\\\"\\u003E\\u003Cdiv class=\\\"clear\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cinput class=\\\"form-control\\\" name=\\\"Ad.AppInstallAd.AdDescription\\\" data-bind=\\\"css: {"validation-error": !Text.isValid()}, value: Text, valueUpdate: "input"\\\" aria-describedby=\\\"Text_CharactersRemaining\\\" aria-labelledby=\\\"label-app-install-ad-description\\\"\\u003E\";\npug_mixins[\"koCharactersRemaining\"]('Text');\npug_mixins[\"koValidationError\"]('Text');\npug_html = pug_html + (\"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group devicePreference-panel\\\"\\u003E\\u003Clabel class=\\\"control-label col-sm-4\\\" id=\\\"label-preference\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('AppInstall_DevicePreference')) ? \"\" : pug_interp)));\npug_mixins[\"popupHelp\"]('pop_BA_AppInstall_DevicePref', i18n.get('AppInstall_DevicePreference'), i18n);\npug_html = pug_html + \"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"col-sm-8\\\" role=\\\"group\\\" aria-labelledby=\\\"label-preference\\\"\\u003E\\u003Cdiv class=\\\"checkbox\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput name=\\\"Ad.AppInstallAd.TabletExcluded\\\" type=\\\"checkbox\\\" data-bind=\\\"checked: DevicePreference.isMobile, attr: { "aria-checked" : DevicePreference.isMobile() ? "true" : "false" }\\\" role=\\\"checkbox\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('AppInstall_ExcludeTablets')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"koValidationError\"]('DevicePreference');\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"app-upgraded-url\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv data-bind=\\\"stopBinding: true\\\"\\u003E\\u003Cdiv class=\\\"AppealTemplate\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\npug_mixins[\"appInstallAdPreview\"](tabItems, isForVNext);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isForVNext\" in locals_for_with?locals_for_with.isForVNext:typeof isForVNext!==\"undefined\"?isForVNext:undefined,\"tabItems\" in locals_for_with?locals_for_with.tabItems:typeof tabItems!==\"undefined\"?tabItems:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (fields, i18n, isMMA, showLightbulb) {pug_mixins[\"koValidationError\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"data-bind\", 'visible: !' + item + '.isValid(), foreach: ' + item + '.errors, attr: {\"aria-hidden\": ' + item + '.isValid()}', true, true)+pug.attr(\"id\", id ? id : item + 'ValidationError', true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003Cli role=\\\"presentation\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\n\n\n\n\npug_mixins[\"dynamicTextMenu\"] = pug_interp = function(property){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"btn-group\\\"\\u003E\\u003Ca\" + (pug.attr(\"class\", pug.classes([\"dropdown-toggle\",\"legacy-dropdown-toggle\",property + '-dynamicTextLink'], [false,false,true]), false, true)+\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_DynamicText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cul\" + (pug.attr(\"class\", pug.classes([\"dropdown-menu\",\"dropdown-menu-right\",property + '-dynamicTextMenu'], [false,false,true]), false, true)+pug.attr(\"data-bind\", 'foreach:' + property + '.dynamicTextMenu', true, true)+\" role=\\\"menu\\\"\") + \"\\u003E\\u003Cli\\u003E\\u003Ca\" + (\" class=\\\"dynamicText\\\"\"+pug.attr(\"data-bind\", 'text: text, click: $parent.' + property + '.appendDynamicText', true, true)+\" role=\\\"menuitem\\\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"koValidationError\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"data-bind\", 'visible: !' + item + '.isValid(), foreach: ' + item + '.errors, attr: {\"aria-hidden\": ' + item + '.isValid()}', true, true)+pug.attr(\"id\", id ? id : item + 'ValidationError', true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003Cli role=\\\"presentation\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_mixins[\"dynamicTextMenu\"] = pug_interp = function(property){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"btn-group\\\"\\u003E\\u003Ca\" + (pug.attr(\"class\", pug.classes([\"dropdown-toggle\",\"legacy-dropdown-toggle\",property + '-dynamicTextLink'], [false,false,true]), false, true)+\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_DynamicText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cul\" + (pug.attr(\"class\", pug.classes([\"dropdown-menu\",\"dropdown-menu-right\",property + '-dynamicTextMenu'], [false,false,true]), false, true)+pug.attr(\"data-bind\", 'foreach:' + property + '.dynamicTextMenu', true, true)+\" role=\\\"menu\\\"\") + \"\\u003E\\u003Cli\\u003E\\u003Ca\" + (\" class=\\\"dynamicText\\\"\"+pug.attr(\"data-bind\", 'text: text, click: $parent.' + property + '.appendDynamicText', true, true)+\" role=\\\"menuitem\\\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"RSAProperty\"] = pug_interp = function(property, label, ariaLabel, placeholder, helpId, countModelName, index, showLightbulb, isMMA){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv\" + (\" class=\\\"form-group\\\"\"+pug.attr(\"data-bind\", 'visible: ' + index + ' < ' + countModelName + '()', true, true)) + \"\\u003E\\u003Cdiv class=\\\"col-sm-4 control-label\\\"\\u003E\";\nif (index == 0) {\npug_html = pug_html + \"\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = i18n.get(label)) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"](helpId, i18n.get(label), i18n);\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-8 ad-rsa-filed-group\\\"\\u003E\";\nif (showLightbulb) {\npug_html = pug_html + \"\\u003Cspan\" + (pug.attr(\"class\", pug.classes([\"iconba\",\"iconba-Lightbulb\",property + '-AIGeneratedAsset'], [false,false,true]), false, true)+pug.attr(\"data-bind\", 'style: { visibility: ' + property + 'IsAIGeneratedAsset() ? \"visible\" : \"hidden\" }', true, true)+pug.attr(\"aria-label\", i18n.get('Ad_Strength_RSA_AI_Generated_Asset'), true, true)+\" tabindex=\\\"0\\\"\") + \"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003Cinput\" + (pug.attr(\"class\", pug.classes([\"form-control\",\"text\",property], [false,false,true]), false, true)+pug.attr(\"name\", property, true, true)+pug.attr(\"placeholder\", i18n.get(placeholder), true, true)+\" type=\\\"text\\\"\"+pug.attr(\"data-bind\", 'value: ' + property +', valueUpdate: \"input\", attr: {\"aria-invalid\": !' + property + '.isValid()}, css: {\"validation-error\": !' + property + '.isValid()}', true, true)+pug.attr(\"aria-label\", i18n.get(ariaLabel, { index: index + 1 }), true, true)+pug.attr(\"aria-describedby\", 'AdField-' + property + ' ' + property + '_CharactersRemaining' + `_${isMMA ? 'MMA' : 'RSA'}`, true, true)) + \"\\u003E\";\nif (!isMMA) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"btn-group ad-rsa-pin-group\\\"\\u003E\\u003Ca\" + (pug.attr(\"class\", pug.classes([\"ad-field-position\",\"dropdown-toggle\",\"legacy-dropdown-toggle\",property + '-positionLink'], [false,false,false,true]), false, true)+pug.attr(\"data-bind\", 'css: { visible: ' + property + 'Position() !== \"None\"}', true, true)+\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\"\"+pug.attr(\"aria-label\", i18n.get('Ad_PinToPosition'), true, true)+\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\\u003Cspan class=\\\"glyphicon glyphicon-pushpin\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan\" + (\" class=\\\"ad-pinned\\\"\"+pug.attr(\"data-bind\", 'text: positionFieldMap(' + property + 'Position())', true, true)) + \"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fa\\u003E\\u003Cul\" + (pug.attr(\"class\", pug.classes([\"dropdown-menu\",\"dropdown-menu\",property + '-positionMenu'], [false,false,true]), false, true)+pug.attr(\"data-bind\", 'foreach:' + property + '.positionMenu', true, true)+\" role=\\\"menu\\\"\") + \"\\u003E\\u003Cli\\u003E\\u003Ca\" + (\" class=\\\"positionText\\\"\"+pug.attr(\"data-bind\", 'text: text, click: $parent.' + property + '.selectPosition', true, true)+\" role=\\\"menuitem\\\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"clearfix\\\"\\u003E\\u003Cdiv class=\\\"form-hint\\\"\\u003E\\u003Cspan\" + (pug.attr(\"class\", pug.classes([property + '-characters__counter'], [true]), false, true)+pug.attr(\"data-bind\", 'text:' + property + '.char_rem', true, true)+pug.attr(\"id\", property + '_CharactersRemaining' + `_${isMMA ? 'MMA' : 'RSA'}`, true, true)+\" role=\\\"status\\\" aria-live=\\\"polite\\\"\") + \"\\u003E\\u003C\\u002Fspan\\u003E\";\nif (!isMMA) {\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = ' | ') ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\npug_mixins[\"dynamicTextMenu\"](property);\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\npug_mixins[\"koValidationError\"](property, 'AdField-' + property + `_${isMMA ? 'MMA' : 'RSA'}`);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_html = pug_html + \"\\u003C!-- RSA descritions--\\u003E\";\n// iterate fields\n;(function(){\n var $$obj = fields;\n if ('number' == typeof $$obj.length) {\n for (var index = 0, $$l = $$obj.length; index < $$l; index++) {\n var field = $$obj[index];\npug_mixins[\"RSAProperty\"](field, 'Ad_Descriptions', 'Ad_Nth_Description', '', 'pop_BA_RSA_Descriptions', 'showDescriptionCount ', index, showLightbulb, isMMA);\n }\n } else {\n var $$l = 0;\n for (var index in $$obj) {\n $$l++;\n var field = $$obj[index];\npug_mixins[\"RSAProperty\"](field, 'Ad_Descriptions', 'Ad_Nth_Description', '', 'pop_BA_RSA_Descriptions', 'showDescriptionCount ', index, showLightbulb, isMMA);\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\" data-bind=\\\"visible: errorMessage\\\"\\u003E\\u003Cdiv class=\\\"col-sm-4\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-8\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"text: errorMessage\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"ad-rsa-actions\\\"\\u003E\\u003Ca class=\\\"ad-rsa-add-description clickable\\\" data-bind=\\\"css: { disabled: showDescriptionCount() >= maxCount }, attr: { "aria-disabled": showDescriptionCount() >= maxCount ? "true" : "false", tabindex: showDescriptionCount() >= maxCount ? "-1" : "0" }\\\"\\u003E\\u003Cspan class=\\\"glyphicon glyphicon-plus\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_AddDescription')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"fields\" in locals_for_with?locals_for_with.fields:typeof fields!==\"undefined\"?fields:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isMMA\" in locals_for_with?locals_for_with.isMMA:typeof isMMA!==\"undefined\"?isMMA:undefined,\"showLightbulb\" in locals_for_with?locals_for_with.showLightbulb:typeof showLightbulb!==\"undefined\"?showLightbulb:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (allowDisclaimerAds, i18n, labels, nameAttrs, placeholders, useUpgradedUrl, uuid) {pug_mixins[\"koValidationError\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"data-bind\", 'visible: !' + item + '.isValid(), foreach: ' + item + '.errors, attr: {\"aria-hidden\": ' + item + '.isValid()}', true, true)+pug.attr(\"id\", id ? id : item + 'ValidationError', true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003Cli role=\\\"presentation\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\n\n\n\n\npug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_mixins[\"koCharactersRemaining\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"remaining-hint help-block\\\"\\u003E\\u003Cspan\" + (pug.attr(\"data-bind\", 'text:' + item + '.char_rem', true, true)+pug.attr(\"id\", id ? id : item + '_CharactersRemaining', true, true)+\" role=\\\"status\\\" aria-live=\\\"polite\\\"\") + \"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"dynamicTextMenu\"] = pug_interp = function(property){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"btn-group\\\"\\u003E\\u003Ca\" + (pug.attr(\"class\", pug.classes([\"dropdown-toggle\",\"legacy-dropdown-toggle\",property + '-dynamicTextLink'], [false,false,true]), false, true)+\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_DynamicText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cul\" + (pug.attr(\"class\", pug.classes([\"dropdown-menu\",\"dropdown-menu-right\",property + '-dynamicTextMenu'], [false,false,true]), false, true)+pug.attr(\"data-bind\", 'foreach:' + property + '.dynamicTextMenu', true, true)+\" role=\\\"menu\\\"\") + \"\\u003E\\u003Cli\\u003E\\u003Ca\" + (\" class=\\\"dynamicText\\\"\"+pug.attr(\"data-bind\", 'text: text, click: $parent.' + property + '.appendDynamicText', true, true)+\" role=\\\"menuitem\\\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"property\"] = pug_interp = function(property, label, helpId, withDynamicText, useTextArea, hideDynamicText){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar labelId = uuid.v4();\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-4 control-label\\\"\\u003E\\u003Clabel\" + (pug.attr(\"id\", labelId, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get(label)) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\nif (helpId) {\npug_mixins[\"popupHelp\"](helpId, i18n.get(label), i18n);\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-8\\\"\\u003E\";\nvar nameAttribute = nameAttrs ? nameAttrs[property] : '';\nif (withDynamicText) {\nif (useTextArea) {\npug_html = pug_html + \"\\u003Ctextarea\" + (pug.attr(\"class\", pug.classes([\"form-control\",property], [false,true]), false, true)+pug.attr(\"name\", nameAttribute, true, true)+pug.attr(\"placeholder\", placeholders[property], true, true)+\" rows=\\\"2\\\"\"+pug.attr(\"data-bind\", 'textInput: ' + property +', valueUpdate: \"input\", attr: {\"aria-invalid\": !' + property + '.isValid()}, css: {\"validation-error\": !' + property + '.isValid()}', true, true)+pug.attr(\"aria-labelledby\", labelId, true, true)+pug.attr(\"aria-describedby\", 'AdField-' + property + ' ' + property + '_CharactersRemaining', true, true)) + \"\\u003E\\u003C\\u002Ftextarea\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cinput\" + (pug.attr(\"class\", pug.classes([\"form-control\",\"text\",property], [false,false,true]), false, true)+pug.attr(\"name\", nameAttribute, true, true)+pug.attr(\"placeholder\", placeholders[property], true, true)+\" type=\\\"text\\\"\"+pug.attr(\"data-bind\", 'value: ' + property +', valueUpdate: \"input\", attr: {\"aria-invalid\": !' + property + '.isValid()}, css: {\"validation-error\": !' + property + '.isValid()}', true, true)+pug.attr(\"aria-labelledby\", labelId, true, true)+pug.attr(\"aria-describedby\", 'AdField-' + property + ' ' + property + '_CharactersRemaining', true, true)) + \"\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"clearfix\\\"\\u003E\\u003Cdiv class=\\\"form-hint\\\"\\u003E\\u003Cspan\" + (pug.attr(\"class\", pug.classes([property + '-characters__counter'], [true]), false, true)+pug.attr(\"data-bind\", 'text:' + property + '.char_rem', true, true)+pug.attr(\"id\", property + '_CharactersRemaining', true, true)+\" role=\\\"status\\\" aria-live=\\\"polite\\\"\") + \"\\u003E\\u003C\\u002Fspan\\u003E\";\nif (!hideDynamicText) {\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = ' | ') ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\npug_mixins[\"dynamicTextMenu\"](property);\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cinput\" + (pug.attr(\"class\", pug.classes([\"form-control\",\"text\",property], [false,false,true]), false, true)+pug.attr(\"placeholder\", placeholders[property], true, true)+\" type=\\\"text\\\"\"+pug.attr(\"data-bind\", 'value: ' + property +', valueUpdate: \"input\", css: {\"validation-error\": !' + property + '.isValid()}, attr: {\"aria-invalid\": !' + property + '.isValid()}', true, true)+pug.attr(\"aria-labelledby\", labelId, true, true)+pug.attr(\"aria-describedby\", 'AdField-' + property + ' ' + property + '_CharactersRemaining', true, true)) + \"\\u003E\";\npug_mixins[\"koCharactersRemaining\"](property);\n}\npug_mixins[\"koValidationError\"](property, 'AdField-' + property);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"path\"] = pug_interp = function(property){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"ext__displayUrl__separator text-center\\\"\\u003E\\u003Clabel class=\\\"control-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = '/') ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"ext__displayUrl__path\\\"\\u003E\\u003Cinput\" + (\" class=\\\"form-control\\\"\"+pug.attr(\"name\", nameAttrs[property], true, true)+pug.attr(\"placeholder\", placeholders[property], true, true)+pug.attr(\"data-bind\", 'value: ' + property + ', valueUpdate: \"input\", css: {\"validation-error\": !'+ property + '.isValid()}', true, true)+pug.attr(\"aria-label\", labels[property] || placeholders[property], true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!--TODO[lizho] Add remaining characters form hint after having UI mockup--\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"row ac-container\\\"\\u003E\\u003Cdiv class=\\\"col-sm-6\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-4 control-label\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_Title')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_CampaignCreate_Ads_AdTitle', i18n.get('Ad_Title'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-8\\\"\\u003E\\u003Cdiv class=\\\"type-bold form-control-static\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_DSA_Title')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\npug_mixins[\"property\"]('Text', 'Ad_Text', 'pop_BA_NewAdCreate_AdText', true, false, true);\npug_html = pug_html + \"\\u003Cspan data-bind=\\\"visible: isDynamicDescriptionEnabled()\\\"\\u003E\\u003Clabel class=\\\"information-message\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('DynamicDescriptionMessage') + ' ') ? \"\" : pug_interp)) + \"\\u003Ca class=\\\"HelpTopic\\\" query=\\\"app54695\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('LearnMoreLinkText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Flabel\\u003E\\u003C\\u002Fspan\\u003E\";\npug_mixins[\"property\"]('TextPart2', 'Ad_Text2', 'pop_BA_NewAdCreate_AdText2', true, false, true);\npug_html = pug_html + \"\\u003Cspan data-bind=\\\"visible: isDynamicDescriptionEnabled()\\\"\\u003E\\u003Clabel class=\\\"information-message\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('DynamicDescriptionMessage') + ' ') ? \"\" : pug_interp)) + \"\\u003Ca class=\\\"HelpTopic\\\" query=\\\"app54695\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('LearnMoreLinkText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Flabel\\u003E\\u003C\\u002Fspan\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-4 control-label\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_Path')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_NewAdCreate_DSA_Path', i18n.get('Ad_Path'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-8 display-url\\\"\\u003E\\u003Cdiv class=\\\"ext__displayUrl__domain form-control-static\\\"\\u003E\\u003Cspan data-bind=\\\"text: domain\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\npug_mixins[\"path\"]('Path1');\npug_mixins[\"path\"]('Path2');\npug_html = pug_html + \"\\u003Cdiv class=\\\"clearfix\\\"\\u003E\";\npug_mixins[\"koValidationError\"]('Path1');\npug_mixins[\"koValidationError\"]('Path2');\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-4 control-label\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_FinalUrl')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_NewAdCreate_FinalURL', i18n.get('Ad_Title'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-8\\\"\\u003E\\u003Cdiv class=\\\"type-bold form-control-static\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_DSA_URL')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (allowDisclaimerAds) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\" data-bind=\\\"visible: showDisclaimer()\\\"\\u003E\\u003Cdiv class=\\\"col-sm-4 control-label\\\"\\u003E\\u003Clabel id=\\\"label-disclaimer\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_Disclaimer')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_DisclaimerAd', i18n.get('Ad_Disclaimer'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-8 form-control-static\\\"\\u003E\\u003Cp data-bind=\\\"text: adDisclaimerHint()\\\"\\u003E\\u003C\\u002Fp\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nif (useUpgradedUrl) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"advanced-options\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-6\\\"\\u003E\\u003Cdiv class=\\\"preview-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"allowDisclaimerAds\" in locals_for_with?locals_for_with.allowDisclaimerAds:typeof allowDisclaimerAds!==\"undefined\"?allowDisclaimerAds:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"labels\" in locals_for_with?locals_for_with.labels:typeof labels!==\"undefined\"?labels:undefined,\"nameAttrs\" in locals_for_with?locals_for_with.nameAttrs:typeof nameAttrs!==\"undefined\"?nameAttrs:undefined,\"placeholders\" in locals_for_with?locals_for_with.placeholders:typeof placeholders!==\"undefined\"?placeholders:undefined,\"useUpgradedUrl\" in locals_for_with?locals_for_with.useUpgradedUrl:typeof useUpgradedUrl!==\"undefined\"?useUpgradedUrl:undefined,\"uuid\" in locals_for_with?locals_for_with.uuid:typeof uuid!==\"undefined\"?uuid:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, syntax) {pug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_html = pug_html + (\"\\u003Cspan class=\\\"countdownEditor-syntax\\\"\\u003E\" + (pug.escape(null == (pug_interp = syntax) ? \"\" : pug_interp)));\npug_mixins[\"popupHelp\"]('pop_BA_NewAdCreate_Countdown_Syntax',i18n.getString('CountdownEditor_Syntax_Tooltip'));\npug_html = pug_html + \"\\u003C\\u002Fspan\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"syntax\" in locals_for_with?locals_for_with.syntax:typeof syntax!==\"undefined\"?syntax:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (IsDisclaimerAdsEnabled, IsEXTAMigrationNotificationEnabled, IsExpandedTextAdV2Enabled, domainWatermark, i18n, isNativeAdsEnabled, isNativeAdsRebrandingEnabled, isVanityUrlEnabled, labels, nameAttrs, placeholders, uuid) {pug_mixins[\"koValidationError\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"data-bind\", 'visible: !' + item + '.isValid(), foreach: ' + item + '.errors, attr: {\"aria-hidden\": ' + item + '.isValid()}', true, true)+pug.attr(\"id\", id ? id : item + 'ValidationError', true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003Cli role=\\\"presentation\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_mixins[\"koCharactersRemaining\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"remaining-hint help-block\\\"\\u003E\\u003Cspan\" + (pug.attr(\"data-bind\", 'text:' + item + '.char_rem', true, true)+pug.attr(\"id\", id ? id : item + '_CharactersRemaining', true, true)+\" role=\\\"status\\\" aria-live=\\\"polite\\\"\") + \"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"koError\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"data-bind\", 'if: ' + item + '().length > 0, attr: {\"aria-hidden\": ' + item + '().length == 0}', true, true)+pug.attr(\"id\", id ? id : item, true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003Cdiv\" + (\" class=\\\"error\\\"\"+pug.attr(\"data-bind\", 'html: ' + item, true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"dynamicTextMenu\"] = pug_interp = function(property){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"btn-group\\\"\\u003E\\u003Ca\" + (pug.attr(\"class\", pug.classes([\"dropdown-toggle\",\"legacy-dropdown-toggle\",property + '-dynamicTextLink'], [false,false,true]), false, true)+\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_DynamicText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cul\" + (pug.attr(\"class\", pug.classes([\"dropdown-menu\",\"dropdown-menu-right\",property + '-dynamicTextMenu'], [false,false,true]), false, true)+pug.attr(\"data-bind\", 'foreach:' + property + '.dynamicTextMenu', true, true)+\" role=\\\"menu\\\"\") + \"\\u003E\\u003Cli\\u003E\\u003Ca\" + (\" class=\\\"dynamicText\\\"\"+pug.attr(\"data-bind\", 'text: text, click: $parent.' + property + '.appendDynamicText', true, true)+\" role=\\\"menuitem\\\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"property\"] = pug_interp = function(property, label, helpId, withDynamicText, useTextArea, hideDynamicText){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar labelId = uuid.v4();\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-4 control-label\\\"\\u003E\\u003Clabel\" + (pug.attr(\"id\", labelId, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get(label)) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\nif (helpId) {\npug_mixins[\"popupHelp\"](helpId, i18n.get(label), i18n);\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-8\\\"\\u003E\";\nvar nameAttribute = nameAttrs ? nameAttrs[property] : '';\nif (withDynamicText) {\nif (useTextArea) {\npug_html = pug_html + \"\\u003Ctextarea\" + (pug.attr(\"class\", pug.classes([\"form-control\",property], [false,true]), false, true)+pug.attr(\"name\", nameAttribute, true, true)+pug.attr(\"placeholder\", placeholders[property], true, true)+\" rows=\\\"2\\\"\"+pug.attr(\"data-bind\", 'textInput: ' + property +', valueUpdate: \"input\", attr: {\"aria-invalid\": !' + property + '.isValid()}, css: {\"validation-error\": !' + property + '.isValid()}', true, true)+pug.attr(\"aria-labelledby\", labelId, true, true)+pug.attr(\"aria-describedby\", 'AdField-' + property + ' ' + property + '_CharactersRemaining', true, true)) + \"\\u003E\\u003C\\u002Ftextarea\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cinput\" + (pug.attr(\"class\", pug.classes([\"form-control\",\"text\",property], [false,false,true]), false, true)+pug.attr(\"name\", nameAttribute, true, true)+pug.attr(\"placeholder\", placeholders[property], true, true)+\" type=\\\"text\\\"\"+pug.attr(\"data-bind\", 'value: ' + property +', valueUpdate: \"input\", attr: {\"aria-invalid\": !' + property + '.isValid()}, css: {\"validation-error\": !' + property + '.isValid()}', true, true)+pug.attr(\"aria-labelledby\", labelId, true, true)+pug.attr(\"aria-describedby\", 'AdField-' + property + ' ' + property + '_CharactersRemaining', true, true)) + \"\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"clearfix\\\"\\u003E\\u003Cdiv class=\\\"form-hint\\\"\\u003E\\u003Cspan\" + (pug.attr(\"class\", pug.classes([property + '-characters__counter'], [true]), false, true)+pug.attr(\"data-bind\", 'text:' + property + '.char_rem', true, true)+pug.attr(\"id\", property + '_CharactersRemaining', true, true)+\" role=\\\"status\\\" aria-live=\\\"polite\\\"\") + \"\\u003E\\u003C\\u002Fspan\\u003E\";\nif (!hideDynamicText) {\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = ' | ') ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\npug_mixins[\"dynamicTextMenu\"](property);\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cinput\" + (pug.attr(\"class\", pug.classes([\"form-control\",\"text\",property], [false,false,true]), false, true)+pug.attr(\"placeholder\", placeholders[property], true, true)+\" type=\\\"text\\\"\"+pug.attr(\"data-bind\", 'value: ' + property +', valueUpdate: \"input\", css: {\"validation-error\": !' + property + '.isValid()}, attr: {\"aria-invalid\": !' + property + '.isValid()}', true, true)+pug.attr(\"aria-labelledby\", labelId, true, true)+pug.attr(\"aria-describedby\", 'AdField-' + property + ' ' + property + '_CharactersRemaining', true, true)) + \"\\u003E\";\npug_mixins[\"koCharactersRemaining\"](property);\n}\npug_mixins[\"koValidationError\"](property, 'AdField-' + property);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"path\"] = pug_interp = function(property){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"ext__displayUrl__separator text-center\\\"\\u003E\\u003Clabel class=\\\"control-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = '/') ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"ext__displayUrl__path\\\"\\u003E\\u003Cinput\" + (\" class=\\\"form-control\\\"\"+pug.attr(\"name\", nameAttrs[property], true, true)+pug.attr(\"placeholder\", placeholders[property], true, true)+pug.attr(\"data-bind\", 'value: ' + property + ', valueUpdate: \"input\", css: {\"validation-error\": !'+ property + '.isValid()}', true, true)+pug.attr(\"aria-label\", labels[property] || placeholders[property], true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!--TODO[lizho] Add remaining characters form hint after having UI mockup--\\u003E\";\n};\npug_mixins[\"url\"] = pug_interp = function(property, label, helpId, container, labelId){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-4 control-label\\\"\\u003E\\u003Clabel\" + (pug.attr(\"id\", labelId, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get(label)) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"](helpId, i18n.get(label), i18n);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"fieldItemAd col-sm-offset-4\\\"\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([container], [true]), false, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"container-fluid\\\"\\u003E\";\npug_mixins[\"koValidationError\"](property);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"row ac-container\\\"\\u003E\\u003Cdiv class=\\\"col-sm-6\\\"\\u003E\";\nif (IsEXTAMigrationNotificationEnabled) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"col-sm-8\\\"\\u003E\\u003Cdiv class=\\\"warn warn-info form-group\\\"\\u003E\\u003Cdiv class=\\\"warn-image iconba-Warning iconba\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"warn-info-inline\\\"\\u003E\" + (null == (pug_interp = i18n.get('EXTA_Migration_Warning_Updated')) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_mixins[\"url\"]('FinalUrls', 'Ad_FinalUrl', 'pop_BA_NewAdCreate_FinalURL', 'final-url', 'extaFinalUrlLabel');\npug_mixins[\"property\"]('TitlePart1', 'Ad_TitlePart1', 'pop_BA_NewAdCreate_AdTitle1', true);\npug_mixins[\"property\"]('TitlePart2', 'Ad_TitlePart2', 'pop_BA_NewAdCreate_AdTitle2', true);\nif (IsExpandedTextAdV2Enabled) {\npug_mixins[\"property\"]('TitlePart3', 'Ad_TitlePart3', 'pop_BA_NewAdCreate_AdTitle3', true);\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-4 control-label\\\"\\u003E\";\nif (isVanityUrlEnabled) {\npug_html = pug_html + \"\\u003Clabel class=\\\"ext__displayUrl__domain_label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_DisplayUrl')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_NewAdCreate_VanityURL', i18n.get('Ad_DisplayUrl'), i18n);\n}\nelse {\npug_html = pug_html + \"\\u003Clabel class=\\\"ext__displayUrl__domain_label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_Path')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_NewAdCreate_Path', i18n.get('Ad_Path'), i18n);\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-8 display-url\\\"\\u003E\";\nif (isVanityUrlEnabled) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"ext__displayUrl__domain\\\"\\u003E\\u003Cinput\" + (\" class=\\\"form-control\\\"\"+pug.attr(\"name\", nameAttrs['DisplayUrl'], true, true)+pug.attr(\"placeholder\", placeholders['DisplayUrl'], true, true)+\" data-bind=\\\"value: DisplayUrl, valueUpdate: "input", css: {"validation-error": !DisplayUrl.isValid()}\\\"\") + \"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"ext__displayUrl__domain form-control-static\\\"\\u003E\\u003Cspan data-bind=\\\"text: DisplayUrl, visibile: DisplayUrl\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"ext__displayUrl__domain--placeholder\\\" data-bind=\\\"visible: !DisplayUrl()\\\"\\u003E\" + (pug.escape(null == (pug_interp = domainWatermark) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_mixins[\"path\"]('Path1');\npug_mixins[\"path\"]('Path2');\npug_html = pug_html + \"\\u003Cdiv class=\\\"clearfix\\\"\\u003E\";\nif (isVanityUrlEnabled) {\npug_mixins[\"koValidationError\"]('DisplayUrl');\n}\npug_mixins[\"koError\"]('errorMessage');\npug_mixins[\"koValidationError\"]('Path1');\npug_mixins[\"koValidationError\"]('Path2');\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (IsExpandedTextAdV2Enabled) {\npug_mixins[\"property\"]('Text', 'Ad_Text1', 'pop_BA_NewAdCreate_AdText', true, true);\npug_mixins[\"property\"]('TextPart2', 'Ad_Text2', 'pop_BA_NewAdCreate_AdText2', true, true);\n}\nelse {\npug_mixins[\"property\"]('Text', 'Ad_Text', 'pop_BA_NewAdCreate_AdText', true, true);\n}\nif (IsDisclaimerAdsEnabled) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\" data-bind=\\\"visible: showDisclaimer()\\\"\\u003E\\u003Cdiv class=\\\"col-sm-4 control-label\\\"\\u003E\\u003Clabel id=\\\"label-disclaimer\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_Disclaimer')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_DisclaimerAd', i18n.get('Ad_Disclaimer'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-8 form-control-static\\\"\\u003E\\u003Cp data-bind=\\\"text: adDisclaimerHint()\\\"\\u003E\\u003C\\u002Fp\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nif (isNativeAdsEnabled) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-4 control-label\\\"\\u003E\\u003Clabel id=\\\"label-preference\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_Preferences')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_NewAdCreate_NativeAdPreferred', i18n.get('Ad_Preferences'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-8\\\" role=\\\"group\\\" aria-labelledby=\\\"label-preference\\\"\\u003E\\u003Cdiv class=\\\"checkbox\\\"\\u003E\\u003Clabel data-analyticsid=\\\"omniture-msan-preference-checkbox\\\"\\u003E\\u003Cinput\" + (\" class=\\\"prefer-native-format\\\"\"+pug.attr(\"name\", nameAttrs['NativePreference'], true, true)+\" type=\\\"checkbox\\\" data-bind=\\\"checked: NativePreference.isNativePreference, attr: { "aria-checked" : NativePreference.isNativePreference() ? "true" : "false" }\\\" role=\\\"checkbox\\\" data-analyticsid=\\\"omniture-msan-preference-checkbox\\\"\") + \"\\u003E\";\nif (isNativeAdsRebrandingEnabled) {\npug_html = pug_html + (pug.escape(null == (pug_interp = i18n.get('AdPreferences_Audience')) ? \"\" : pug_interp));\n}\nelse {\npug_html = pug_html + (pug.escape(null == (pug_interp = i18n.get('AdPreferences_Native')) ? \"\" : pug_interp));\n}\npug_html = pug_html + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_mixins[\"url\"]('MobileFinalUrls', 'MobileFinalUrl_Label', 'pop_BA_NewCampaignCreate_Ad_MobileURL', 'mobile-url', 'extaMobileUrlLabel');\npug_html = pug_html + \"\\u003Cdiv class=\\\"ext-ad-url-options\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-6\\\"\\u003E\\u003Cdiv class=\\\"preview-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"IsDisclaimerAdsEnabled\" in locals_for_with?locals_for_with.IsDisclaimerAdsEnabled:typeof IsDisclaimerAdsEnabled!==\"undefined\"?IsDisclaimerAdsEnabled:undefined,\"IsEXTAMigrationNotificationEnabled\" in locals_for_with?locals_for_with.IsEXTAMigrationNotificationEnabled:typeof IsEXTAMigrationNotificationEnabled!==\"undefined\"?IsEXTAMigrationNotificationEnabled:undefined,\"IsExpandedTextAdV2Enabled\" in locals_for_with?locals_for_with.IsExpandedTextAdV2Enabled:typeof IsExpandedTextAdV2Enabled!==\"undefined\"?IsExpandedTextAdV2Enabled:undefined,\"domainWatermark\" in locals_for_with?locals_for_with.domainWatermark:typeof domainWatermark!==\"undefined\"?domainWatermark:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isNativeAdsEnabled\" in locals_for_with?locals_for_with.isNativeAdsEnabled:typeof isNativeAdsEnabled!==\"undefined\"?isNativeAdsEnabled:undefined,\"isNativeAdsRebrandingEnabled\" in locals_for_with?locals_for_with.isNativeAdsRebrandingEnabled:typeof isNativeAdsRebrandingEnabled!==\"undefined\"?isNativeAdsRebrandingEnabled:undefined,\"isVanityUrlEnabled\" in locals_for_with?locals_for_with.isVanityUrlEnabled:typeof isVanityUrlEnabled!==\"undefined\"?isVanityUrlEnabled:undefined,\"labels\" in locals_for_with?locals_for_with.labels:typeof labels!==\"undefined\"?labels:undefined,\"nameAttrs\" in locals_for_with?locals_for_with.nameAttrs:typeof nameAttrs!==\"undefined\"?nameAttrs:undefined,\"placeholders\" in locals_for_with?locals_for_with.placeholders:typeof placeholders!==\"undefined\"?placeholders:undefined,\"uuid\" in locals_for_with?locals_for_with.uuid:typeof uuid!==\"undefined\"?uuid:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (fields, i18n, isMMA, showLightbulb) {pug_mixins[\"koValidationError\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"data-bind\", 'visible: !' + item + '.isValid(), foreach: ' + item + '.errors, attr: {\"aria-hidden\": ' + item + '.isValid()}', true, true)+pug.attr(\"id\", id ? id : item + 'ValidationError', true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003Cli role=\\\"presentation\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\n\n\n\n\npug_mixins[\"dynamicTextMenu\"] = pug_interp = function(property){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"btn-group\\\"\\u003E\\u003Ca\" + (pug.attr(\"class\", pug.classes([\"dropdown-toggle\",\"legacy-dropdown-toggle\",property + '-dynamicTextLink'], [false,false,true]), false, true)+\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_DynamicText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cul\" + (pug.attr(\"class\", pug.classes([\"dropdown-menu\",\"dropdown-menu-right\",property + '-dynamicTextMenu'], [false,false,true]), false, true)+pug.attr(\"data-bind\", 'foreach:' + property + '.dynamicTextMenu', true, true)+\" role=\\\"menu\\\"\") + \"\\u003E\\u003Cli\\u003E\\u003Ca\" + (\" class=\\\"dynamicText\\\"\"+pug.attr(\"data-bind\", 'text: text, click: $parent.' + property + '.appendDynamicText', true, true)+\" role=\\\"menuitem\\\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"koValidationError\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"data-bind\", 'visible: !' + item + '.isValid(), foreach: ' + item + '.errors, attr: {\"aria-hidden\": ' + item + '.isValid()}', true, true)+pug.attr(\"id\", id ? id : item + 'ValidationError', true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003Cli role=\\\"presentation\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_mixins[\"dynamicTextMenu\"] = pug_interp = function(property){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"btn-group\\\"\\u003E\\u003Ca\" + (pug.attr(\"class\", pug.classes([\"dropdown-toggle\",\"legacy-dropdown-toggle\",property + '-dynamicTextLink'], [false,false,true]), false, true)+\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_DynamicText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cul\" + (pug.attr(\"class\", pug.classes([\"dropdown-menu\",\"dropdown-menu-right\",property + '-dynamicTextMenu'], [false,false,true]), false, true)+pug.attr(\"data-bind\", 'foreach:' + property + '.dynamicTextMenu', true, true)+\" role=\\\"menu\\\"\") + \"\\u003E\\u003Cli\\u003E\\u003Ca\" + (\" class=\\\"dynamicText\\\"\"+pug.attr(\"data-bind\", 'text: text, click: $parent.' + property + '.appendDynamicText', true, true)+\" role=\\\"menuitem\\\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"RSAProperty\"] = pug_interp = function(property, label, ariaLabel, placeholder, helpId, countModelName, index, showLightbulb, isMMA){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv\" + (\" class=\\\"form-group\\\"\"+pug.attr(\"data-bind\", 'visible: ' + index + ' < ' + countModelName + '()', true, true)) + \"\\u003E\\u003Cdiv class=\\\"col-sm-4 control-label\\\"\\u003E\";\nif (index == 0) {\npug_html = pug_html + \"\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = i18n.get(label)) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"](helpId, i18n.get(label), i18n);\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-8 ad-rsa-filed-group\\\"\\u003E\";\nif (showLightbulb) {\npug_html = pug_html + \"\\u003Cspan\" + (pug.attr(\"class\", pug.classes([\"iconba\",\"iconba-Lightbulb\",property + '-AIGeneratedAsset'], [false,false,true]), false, true)+pug.attr(\"data-bind\", 'style: { visibility: ' + property + 'IsAIGeneratedAsset() ? \"visible\" : \"hidden\" }', true, true)+pug.attr(\"aria-label\", i18n.get('Ad_Strength_RSA_AI_Generated_Asset'), true, true)+\" tabindex=\\\"0\\\"\") + \"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003Cinput\" + (pug.attr(\"class\", pug.classes([\"form-control\",\"text\",property], [false,false,true]), false, true)+pug.attr(\"name\", property, true, true)+pug.attr(\"placeholder\", i18n.get(placeholder), true, true)+\" type=\\\"text\\\"\"+pug.attr(\"data-bind\", 'value: ' + property +', valueUpdate: \"input\", attr: {\"aria-invalid\": !' + property + '.isValid()}, css: {\"validation-error\": !' + property + '.isValid()}', true, true)+pug.attr(\"aria-label\", i18n.get(ariaLabel, { index: index + 1 }), true, true)+pug.attr(\"aria-describedby\", 'AdField-' + property + ' ' + property + '_CharactersRemaining' + `_${isMMA ? 'MMA' : 'RSA'}`, true, true)) + \"\\u003E\";\nif (!isMMA) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"btn-group ad-rsa-pin-group\\\"\\u003E\\u003Ca\" + (pug.attr(\"class\", pug.classes([\"ad-field-position\",\"dropdown-toggle\",\"legacy-dropdown-toggle\",property + '-positionLink'], [false,false,false,true]), false, true)+pug.attr(\"data-bind\", 'css: { visible: ' + property + 'Position() !== \"None\"}', true, true)+\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\"\"+pug.attr(\"aria-label\", i18n.get('Ad_PinToPosition'), true, true)+\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\\u003Cspan class=\\\"glyphicon glyphicon-pushpin\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan\" + (\" class=\\\"ad-pinned\\\"\"+pug.attr(\"data-bind\", 'text: positionFieldMap(' + property + 'Position())', true, true)) + \"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fa\\u003E\\u003Cul\" + (pug.attr(\"class\", pug.classes([\"dropdown-menu\",\"dropdown-menu\",property + '-positionMenu'], [false,false,true]), false, true)+pug.attr(\"data-bind\", 'foreach:' + property + '.positionMenu', true, true)+\" role=\\\"menu\\\"\") + \"\\u003E\\u003Cli\\u003E\\u003Ca\" + (\" class=\\\"positionText\\\"\"+pug.attr(\"data-bind\", 'text: text, click: $parent.' + property + '.selectPosition', true, true)+\" role=\\\"menuitem\\\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"clearfix\\\"\\u003E\\u003Cdiv class=\\\"form-hint\\\"\\u003E\\u003Cspan\" + (pug.attr(\"class\", pug.classes([property + '-characters__counter'], [true]), false, true)+pug.attr(\"data-bind\", 'text:' + property + '.char_rem', true, true)+pug.attr(\"id\", property + '_CharactersRemaining' + `_${isMMA ? 'MMA' : 'RSA'}`, true, true)+\" role=\\\"status\\\" aria-live=\\\"polite\\\"\") + \"\\u003E\\u003C\\u002Fspan\\u003E\";\nif (!isMMA) {\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = ' | ') ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\npug_mixins[\"dynamicTextMenu\"](property);\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\npug_mixins[\"koValidationError\"](property, 'AdField-' + property + `_${isMMA ? 'MMA' : 'RSA'}`);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_html = pug_html + \"\\u003C!-- RSA headlines--\\u003E\";\n// iterate fields\n;(function(){\n var $$obj = fields;\n if ('number' == typeof $$obj.length) {\n for (var index = 0, $$l = $$obj.length; index < $$l; index++) {\n var field = $$obj[index];\npug_mixins[\"RSAProperty\"](field, 'Ad_Headlines', 'Ad_Nth_Headline', '', 'pop_BA_RSA_Headlines', 'showHeadlineCount ', index, showLightbulb, isMMA);\n }\n } else {\n var $$l = 0;\n for (var index in $$obj) {\n $$l++;\n var field = $$obj[index];\npug_mixins[\"RSAProperty\"](field, 'Ad_Headlines', 'Ad_Nth_Headline', '', 'pop_BA_RSA_Headlines', 'showHeadlineCount ', index, showLightbulb, isMMA);\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\" data-bind=\\\"visible: errorMessage\\\"\\u003E\\u003Cdiv class=\\\"col-sm-4\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-8\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"text: errorMessage\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"ad-rsa-actions\\\"\\u003E\\u003Ca class=\\\"ad-rsa-add-headline clickable\\\" data-bind=\\\"css: { disabled: showHeadlineCount() >= maxCount }, attr: { "aria-disabled": showHeadlineCount() >= maxCount ? "true" : "false", tabindex: showHeadlineCount() >= maxCount ? "-1" : "0" }\\\"\\u003E\\u003Cspan class=\\\"glyphicon glyphicon-plus\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_AddHeadline')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"fields\" in locals_for_with?locals_for_with.fields:typeof fields!==\"undefined\"?fields:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isMMA\" in locals_for_with?locals_for_with.isMMA:typeof isMMA!==\"undefined\"?isMMA:undefined,\"showLightbulb\" in locals_for_with?locals_for_with.showLightbulb:typeof showLightbulb!==\"undefined\"?showLightbulb:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;pug_html = pug_html + \"\\u003Cdiv class=\\\"popover row singleSelection\\\" role=\\\"dialog\\\"\\u003E\\u003Cdiv class=\\\"popover-inner\\\"\\u003E\\u003Cdiv class=\\\"popover-content\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (domainWatermark, i18n, isNativeAdsEnabled, isNativeAdsRebrandingEnabled, isVanityUrlEnabled, labels, nameAttrs, placeholders) {pug_mixins[\"koValidationError\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"data-bind\", 'visible: !' + item + '.isValid(), foreach: ' + item + '.errors, attr: {\"aria-hidden\": ' + item + '.isValid()}', true, true)+pug.attr(\"id\", id ? id : item + 'ValidationError', true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003Cli role=\\\"presentation\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_mixins[\"koCharactersRemaining\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"remaining-hint help-block\\\"\\u003E\\u003Cspan\" + (pug.attr(\"data-bind\", 'text:' + item + '.char_rem', true, true)+pug.attr(\"id\", id ? id : item + '_CharactersRemaining', true, true)+\" role=\\\"status\\\" aria-live=\\\"polite\\\"\") + \"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"koError\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"data-bind\", 'if: ' + item + '().length > 0, attr: {\"aria-hidden\": ' + item + '().length == 0}', true, true)+pug.attr(\"id\", id ? id : item, true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003Cdiv\" + (\" class=\\\"error\\\"\"+pug.attr(\"data-bind\", 'html: ' + item, true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"dynamicTextMenu\"] = pug_interp = function(property){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"btn-group\\\"\\u003E\\u003Ca\" + (pug.attr(\"class\", pug.classes([\"dropdown-toggle\",\"legacy-dropdown-toggle\",property + '-dynamicTextLink'], [false,false,true]), false, true)+\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_DynamicText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cul\" + (pug.attr(\"class\", pug.classes([\"dropdown-menu\",\"dropdown-menu-right\",property + '-dynamicTextMenu'], [false,false,true]), false, true)+pug.attr(\"data-bind\", 'foreach:' + property + '.dynamicTextMenu', true, true)+\" role=\\\"menu\\\"\") + \"\\u003E\\u003Cli\\u003E\\u003Ca\" + (\" class=\\\"dynamicText\\\"\"+pug.attr(\"data-bind\", 'text: text, click: $parent.' + property + '.appendDynamicText', true, true)+\" role=\\\"menuitem\\\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\npug_mixins[\"path\"] = pug_interp = function(property){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"ext__displayUrl__separator text-center\\\"\\u003E\\u003Clabel class=\\\"control-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = '/') ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"ext__displayUrl__path\\\"\\u003E\\u003Cinput\" + (\" class=\\\"form-control\\\"\"+pug.attr(\"name\", nameAttrs[property], true, true)+pug.attr(\"placeholder\", placeholders[property], true, true)+pug.attr(\"data-bind\", 'value: ' + property + ', valueUpdate: \"input\", css: {\"validation-error\": !'+ property + '.isValid()}', true, true)+pug.attr(\"aria-label\", labels[property] || placeholders[property], true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!--TODO[lizho] Add remaining characters form hint after having UI mockup--\\u003E\";\n};\npug_mixins[\"koValidationError\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"data-bind\", 'visible: !' + item + '.isValid(), foreach: ' + item + '.errors, attr: {\"aria-hidden\": ' + item + '.isValid()}', true, true)+pug.attr(\"id\", id ? id : item + 'ValidationError', true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003Cli role=\\\"presentation\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_mixins[\"dynamicTextMenu\"] = pug_interp = function(property){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"btn-group\\\"\\u003E\\u003Ca\" + (pug.attr(\"class\", pug.classes([\"dropdown-toggle\",\"legacy-dropdown-toggle\",property + '-dynamicTextLink'], [false,false,true]), false, true)+\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_DynamicText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cul\" + (pug.attr(\"class\", pug.classes([\"dropdown-menu\",\"dropdown-menu-right\",property + '-dynamicTextMenu'], [false,false,true]), false, true)+pug.attr(\"data-bind\", 'foreach:' + property + '.dynamicTextMenu', true, true)+\" role=\\\"menu\\\"\") + \"\\u003E\\u003Cli\\u003E\\u003Ca\" + (\" class=\\\"dynamicText\\\"\"+pug.attr(\"data-bind\", 'text: text, click: $parent.' + property + '.appendDynamicText', true, true)+\" role=\\\"menuitem\\\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\npug_mixins[\"url\"] = pug_interp = function(property, label, helpId, container, labelId){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-4 control-label\\\"\\u003E\\u003Clabel\" + (pug.attr(\"id\", labelId, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get(label)) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"](helpId, i18n.get(label), i18n);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"fieldItemAd col-sm-offset-4\\\"\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([container], [true]), false, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"container-fluid\\\"\\u003E\";\npug_mixins[\"koValidationError\"](property);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"row ac-container\\\"\\u003E\\u003Cdiv class=\\\"col-sm-6\\\"\\u003E\";\npug_mixins[\"url\"]('FinalUrls', 'Ad_FinalUrl', 'pop_BA_NewAdCreate_FinalURL', 'final-url', 'rsaFinalUrlLabel');\npug_html = pug_html + \"\\u003Cdiv class=\\\"headlines-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-4 control-label\\\"\\u003E\";\nif (isVanityUrlEnabled) {\npug_html = pug_html + \"\\u003Clabel class=\\\"ext__displayUrl__domain_label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_DisplayUrl')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_NewAdCreate_VanityURL', i18n.get('Ad_DisplayUrl'), i18n);\n}\nelse {\npug_html = pug_html + \"\\u003Clabel class=\\\"ext__displayUrl__domain_label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_Path')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_NewAdCreate_Path', i18n.get('Ad_Path'), i18n);\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-8 display-url\\\"\\u003E\";\nif (isVanityUrlEnabled) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"ext__displayUrl__domain\\\"\\u003E\\u003Cinput\" + (\" class=\\\"form-control\\\"\"+pug.attr(\"name\", nameAttrs['DisplayUrl'], true, true)+pug.attr(\"placeholder\", placeholders['DisplayUrl'], true, true)+\" data-bind=\\\"value: DisplayUrl, valueUpdate: "input", css: {"validation-error": !DisplayUrl.isValid()}\\\"\") + \"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"ext__displayUrl__domain form-control-static\\\"\\u003E\\u003Cspan data-bind=\\\"text: DisplayUrl, visibile: DisplayUrl\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"ext__displayUrl__domain--placeholder\\\" data-bind=\\\"visible: !DisplayUrl()\\\"\\u003E\" + (pug.escape(null == (pug_interp = domainWatermark) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_mixins[\"path\"]('Path1');\npug_mixins[\"path\"]('Path2');\npug_html = pug_html + \"\\u003Cdiv class=\\\"clearfix\\\"\\u003E\";\nif (isVanityUrlEnabled) {\npug_mixins[\"koValidationError\"]('DisplayUrl');\n}\npug_mixins[\"koError\"]('errorMessage');\npug_mixins[\"koValidationError\"]('Path1');\npug_mixins[\"koValidationError\"]('Path2');\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"descriptions-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (isNativeAdsEnabled) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-4 control-label\\\"\\u003E\\u003Clabel id=\\\"label-preference\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_Preferences')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_NewAdCreate_NativeAdPreferred', i18n.get('Ad_Preferences'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-8\\\" role=\\\"group\\\" aria-labelledby=\\\"label-preference\\\"\\u003E\\u003Cdiv class=\\\"checkbox\\\"\\u003E\\u003Clabel data-analyticsid=\\\"omniture-msan-preference-checkbox\\\"\\u003E\\u003Cinput\" + (\" class=\\\"prefer-native-format\\\"\"+pug.attr(\"name\", nameAttrs['NativePreference'], true, true)+\" type=\\\"checkbox\\\" data-bind=\\\"checked: NativePreference.isNativePreference, attr: { "aria-checked" : NativePreference.isNativePreference() ? "true" : "false" }\\\" role=\\\"checkbox\\\" data-analyticsid=\\\"omniture-msan-preference-checkbox\\\"\") + \"\\u003E\";\nif (isNativeAdsRebrandingEnabled) {\npug_html = pug_html + (pug.escape(null == (pug_interp = i18n.get('AdPreferences_Audience')) ? \"\" : pug_interp));\n}\nelse {\npug_html = pug_html + (pug.escape(null == (pug_interp = i18n.get('AdPreferences_Native')) ? \"\" : pug_interp));\n}\npug_html = pug_html + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_mixins[\"url\"]('MobileFinalUrls', 'MobileFinalUrl_Label', 'pop_BA_NewCampaignCreate_Ad_MobileURL', 'mobile-url', 'rsaMobileUrlLabel');\npug_html = pug_html + \"\\u003Cdiv class=\\\"ext-ad-url-options\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-6\\\"\\u003E\\u003Cdiv class=\\\"ad-strength-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"preview-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"domainWatermark\" in locals_for_with?locals_for_with.domainWatermark:typeof domainWatermark!==\"undefined\"?domainWatermark:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isNativeAdsEnabled\" in locals_for_with?locals_for_with.isNativeAdsEnabled:typeof isNativeAdsEnabled!==\"undefined\"?isNativeAdsEnabled:undefined,\"isNativeAdsRebrandingEnabled\" in locals_for_with?locals_for_with.isNativeAdsRebrandingEnabled:typeof isNativeAdsRebrandingEnabled!==\"undefined\"?isNativeAdsRebrandingEnabled:undefined,\"isVanityUrlEnabled\" in locals_for_with?locals_for_with.isVanityUrlEnabled:typeof isVanityUrlEnabled!==\"undefined\"?isVanityUrlEnabled:undefined,\"labels\" in locals_for_with?locals_for_with.labels:typeof labels!==\"undefined\"?labels:undefined,\"nameAttrs\" in locals_for_with?locals_for_with.nameAttrs:typeof nameAttrs!==\"undefined\"?nameAttrs:undefined,\"placeholders\" in locals_for_with?locals_for_with.placeholders:typeof placeholders!==\"undefined\"?placeholders:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n) {pug_mixins[\"koValidationError\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"data-bind\", 'visible: !' + item + '.isValid(), foreach: ' + item + '.errors, attr: {\"aria-hidden\": ' + item + '.isValid()}', true, true)+pug.attr(\"id\", id ? id : item + 'ValidationError', true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003Cli role=\\\"presentation\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_mixins[\"koCharactersRemaining\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"remaining-hint help-block\\\"\\u003E\\u003Cspan\" + (pug.attr(\"data-bind\", 'text:' + item + '.char_rem', true, true)+pug.attr(\"id\", id ? id : item + '_CharactersRemaining', true, true)+\" role=\\\"status\\\" aria-live=\\\"polite\\\"\") + \"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\n\n\n\n\npug_mixins[\"dynamicTextMenu\"] = pug_interp = function(property){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"btn-group\\\"\\u003E\\u003Ca\" + (pug.attr(\"class\", pug.classes([\"dropdown-toggle\",\"legacy-dropdown-toggle\",property + '-dynamicTextLink'], [false,false,true]), false, true)+\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_DynamicText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cul\" + (pug.attr(\"class\", pug.classes([\"dropdown-menu\",\"dropdown-menu-right\",property + '-dynamicTextMenu'], [false,false,true]), false, true)+pug.attr(\"data-bind\", 'foreach:' + property + '.dynamicTextMenu', true, true)+\" role=\\\"menu\\\"\") + \"\\u003E\\u003Cli\\u003E\\u003Ca\" + (\" class=\\\"dynamicText\\\"\"+pug.attr(\"data-bind\", 'text: text, click: $parent.' + property + '.appendDynamicText', true, true)+\" role=\\\"menuitem\\\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\npug_mixins[\"koValidationError\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"data-bind\", 'visible: !' + item + '.isValid(), foreach: ' + item + '.errors, attr: {\"aria-hidden\": ' + item + '.isValid()}', true, true)+pug.attr(\"id\", id ? id : item + 'ValidationError', true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003Cli role=\\\"presentation\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_mixins[\"dynamicTextMenu\"] = pug_interp = function(property){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"btn-group\\\"\\u003E\\u003Ca\" + (pug.attr(\"class\", pug.classes([\"dropdown-toggle\",\"legacy-dropdown-toggle\",property + '-dynamicTextLink'], [false,false,true]), false, true)+\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_DynamicText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cul\" + (pug.attr(\"class\", pug.classes([\"dropdown-menu\",\"dropdown-menu-right\",property + '-dynamicTextMenu'], [false,false,true]), false, true)+pug.attr(\"data-bind\", 'foreach:' + property + '.dynamicTextMenu', true, true)+\" role=\\\"menu\\\"\") + \"\\u003E\\u003Cli\\u003E\\u003Ca\" + (\" class=\\\"dynamicText\\\"\"+pug.attr(\"data-bind\", 'text: text, click: $parent.' + property + '.appendDynamicText', true, true)+\" role=\\\"menuitem\\\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\npug_html = pug_html + \"\\u003Cdiv class=\\\"row ac-container\\\"\\u003E\\u003Cdiv class=\\\"col-sm-6\\\"\\u003E\\u003Cdiv class=\\\"headlines-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"descriptions-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, isNativeAdsEnabled, nameAttrs, placeholders, uuid) {pug_mixins[\"koValidationError\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"data-bind\", 'visible: !' + item + '.isValid(), foreach: ' + item + '.errors, attr: {\"aria-hidden\": ' + item + '.isValid()}', true, true)+pug.attr(\"id\", id ? id : item + 'ValidationError', true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003Cli role=\\\"presentation\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_mixins[\"koCharactersRemaining\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"remaining-hint help-block\\\"\\u003E\\u003Cspan\" + (pug.attr(\"data-bind\", 'text:' + item + '.char_rem', true, true)+pug.attr(\"id\", id ? id : item + '_CharactersRemaining', true, true)+\" role=\\\"status\\\" aria-live=\\\"polite\\\"\") + \"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"dynamicTextMenu\"] = pug_interp = function(property){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"btn-group\\\"\\u003E\\u003Ca\" + (pug.attr(\"class\", pug.classes([\"dropdown-toggle\",\"legacy-dropdown-toggle\",property + '-dynamicTextLink'], [false,false,true]), false, true)+\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_DynamicText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cul\" + (pug.attr(\"class\", pug.classes([\"dropdown-menu\",\"dropdown-menu-right\",property + '-dynamicTextMenu'], [false,false,true]), false, true)+pug.attr(\"data-bind\", 'foreach:' + property + '.dynamicTextMenu', true, true)+\" role=\\\"menu\\\"\") + \"\\u003E\\u003Cli\\u003E\\u003Ca\" + (\" class=\\\"dynamicText\\\"\"+pug.attr(\"data-bind\", 'text: text, click: $parent.' + property + '.appendDynamicText', true, true)+\" role=\\\"menuitem\\\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"property\"] = pug_interp = function(property, label, helpId, withDynamicText, useTextArea, hideDynamicText){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar labelId = uuid.v4();\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-4 control-label\\\"\\u003E\\u003Clabel\" + (pug.attr(\"id\", labelId, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get(label)) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\nif (helpId) {\npug_mixins[\"popupHelp\"](helpId, i18n.get(label), i18n);\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-8\\\"\\u003E\";\nvar nameAttribute = nameAttrs ? nameAttrs[property] : '';\nif (withDynamicText) {\nif (useTextArea) {\npug_html = pug_html + \"\\u003Ctextarea\" + (pug.attr(\"class\", pug.classes([\"form-control\",property], [false,true]), false, true)+pug.attr(\"name\", nameAttribute, true, true)+pug.attr(\"placeholder\", placeholders[property], true, true)+\" rows=\\\"2\\\"\"+pug.attr(\"data-bind\", 'textInput: ' + property +', valueUpdate: \"input\", attr: {\"aria-invalid\": !' + property + '.isValid()}, css: {\"validation-error\": !' + property + '.isValid()}', true, true)+pug.attr(\"aria-labelledby\", labelId, true, true)+pug.attr(\"aria-describedby\", 'AdField-' + property + ' ' + property + '_CharactersRemaining', true, true)) + \"\\u003E\\u003C\\u002Ftextarea\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cinput\" + (pug.attr(\"class\", pug.classes([\"form-control\",\"text\",property], [false,false,true]), false, true)+pug.attr(\"name\", nameAttribute, true, true)+pug.attr(\"placeholder\", placeholders[property], true, true)+\" type=\\\"text\\\"\"+pug.attr(\"data-bind\", 'value: ' + property +', valueUpdate: \"input\", attr: {\"aria-invalid\": !' + property + '.isValid()}, css: {\"validation-error\": !' + property + '.isValid()}', true, true)+pug.attr(\"aria-labelledby\", labelId, true, true)+pug.attr(\"aria-describedby\", 'AdField-' + property + ' ' + property + '_CharactersRemaining', true, true)) + \"\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"clearfix\\\"\\u003E\\u003Cdiv class=\\\"form-hint\\\"\\u003E\\u003Cspan\" + (pug.attr(\"class\", pug.classes([property + '-characters__counter'], [true]), false, true)+pug.attr(\"data-bind\", 'text:' + property + '.char_rem', true, true)+pug.attr(\"id\", property + '_CharactersRemaining', true, true)+\" role=\\\"status\\\" aria-live=\\\"polite\\\"\") + \"\\u003E\\u003C\\u002Fspan\\u003E\";\nif (!hideDynamicText) {\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = ' | ') ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\npug_mixins[\"dynamicTextMenu\"](property);\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cinput\" + (pug.attr(\"class\", pug.classes([\"form-control\",\"text\",property], [false,false,true]), false, true)+pug.attr(\"placeholder\", placeholders[property], true, true)+\" type=\\\"text\\\"\"+pug.attr(\"data-bind\", 'value: ' + property +', valueUpdate: \"input\", css: {\"validation-error\": !' + property + '.isValid()}, attr: {\"aria-invalid\": !' + property + '.isValid()}', true, true)+pug.attr(\"aria-labelledby\", labelId, true, true)+pug.attr(\"aria-describedby\", 'AdField-' + property + ' ' + property + '_CharactersRemaining', true, true)) + \"\\u003E\";\npug_mixins[\"koCharactersRemaining\"](property);\n}\npug_mixins[\"koValidationError\"](property, 'AdField-' + property);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"row\\\"\\u003E\\u003Cdiv class=\\\"col-sm-6\\\"\\u003E\";\npug_mixins[\"property\"]('Title', 'Ad_Title', 'pop_BA_CampaignCreate_Ads_AdTitle', true);\npug_mixins[\"property\"]('Text', 'Ad_Text', 'pop_BA_NewAdCreate_AdText', true);\npug_mixins[\"property\"]('DisplayUrl', 'Ad_DisplayUrl', 'pop_BA_CampaignCreate_Ads_DisplayURL', false);\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group devicePreference-panel\\\"\\u003E\";\nif (!isNativeAdsEnabled) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"col-sm-4 control-label\\\" id=\\\"label-preference\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_DevicePreference')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_CampaignCreate_Ads_DevicePref', i18n.get('Ad_DevicePreference'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-8\\\" role=\\\"group\\\" aria-labelledby=\\\"label-preference\\\"\\u003E\\u003Cdiv class=\\\"checkbox\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput class=\\\"prefer-mobile-device DevicePreference\\\" type=\\\"checkbox\\\" data-bind=\\\"checked: DevicePreference.isMobile, attr: { "aria-checked" : DevicePreference.isMobile() ? "true" : "false" }\\\" role=\\\"checkbox\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('DevicePreference_Mobile')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"col-sm-4 control-label\\\"\\u003E\\u003Clabel id=\\\"label-preference\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_Preferences')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-8\\\" role=\\\"group\\\" aria-labelledby=\\\"label-preference\\\"\\u003E\\u003Cdiv class=\\\"checkbox\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput class=\\\"prefer-mobile-device DevicePreference\\\" type=\\\"checkbox\\\" data-bind=\\\"checked: DevicePreference.isMobile, attr: { "aria-checked" : DevicePreference.isMobile() ? "true" : "false" }\\\" role=\\\"checkbox\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('AdPreferences_Mobile')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('Page_NewCampaignCreate_Ad_Mobile', i18n.get('AdPreferences_Mobile'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"checkbox\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput class=\\\"prefer-native-format\\\" type=\\\"checkbox\\\" data-bind=\\\"checked: NativePreference.isNativePreference, attr: { "aria-checked" : NativePreference.isNativePreference() ? "true" : "false" }\\\" role=\\\"checkbox\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('AdPreferences_Native')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_NewAdCreate_NativeAdPreferred', i18n.get('AdPreferences_Native'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"upgraded-url\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-6\\\"\\u003E\\u003Cdiv class=\\\"preview-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isNativeAdsEnabled\" in locals_for_with?locals_for_with.isNativeAdsEnabled:typeof isNativeAdsEnabled!==\"undefined\"?isNativeAdsEnabled:undefined,\"nameAttrs\" in locals_for_with?locals_for_with.nameAttrs:typeof nameAttrs!==\"undefined\"?nameAttrs:undefined,\"placeholders\" in locals_for_with?locals_for_with.placeholders:typeof placeholders!==\"undefined\"?placeholders:undefined,\"uuid\" in locals_for_with?locals_for_with.uuid:typeof uuid!==\"undefined\"?uuid:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;pug_html = pug_html + \"\\u003Cdiv class=\\\"upgraded-url__container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, showDisclaimer) {pug_html = pug_html + \"\\u003Cdiv class=\\\"preview-ad__url\\\" data-bind=\\\"visible: DisplayUrl\\\"\\u003E\\u003Cdiv class=\\\"truncated\\\"\\u003E\\u003Cspan class=\\\"preview-ad-slug\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Entity_Ads')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan\\u003E \\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"previewUrlAd\\\" target=\\\"_blank\\\" data-bind=\\\"attr: {href: DestinationUrl}\\\"\\u003E\\u003C!-- ko text: DisplayUrl--\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (showDisclaimer) {\npug_html = pug_html + \"\\u003Cspan\\u003E \\u003C\\u002Fspan\\u003E\\u003Cdiv class=\\\"disclaimer-pinned\\\"\\u003E\\u003Ca class=\\\"btn-create disclaimer-popup-link\\\" data-bind=\\\"text: DisclaimerPopHint(), visible: DisclaimerPopHint\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003Cdiv class=\\\"disclaimer-placeholder\\\" data-bind=\\\"visible: IsDisclaimerPopupHintVisible()\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"preview-ad__description\\\"\\u003E\\u003Cspan data-bind=\\\"text: Text\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\nif (showDisclaimer) {\npug_html = pug_html + \"\\u003Cspan\\u003E \\u003C\\u002Fspan\\u003E\\u003Cspan data-bind=\\\"text: DisclaimerLineText, visible: IsAdditionalLineLayout()\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Ca target=\\\"_blank\\\" style=\\\"margin-left: 10px\\\" data-bind=\\\"attr: {href: DisclaimerFinalUrl()}, visible: IsAdditionalLineLayout()\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Disclaimer_Ad_AdditionalLine_FinalUrlText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"showDisclaimer\" in locals_for_with?locals_for_with.showDisclaimer:typeof showDisclaimer!==\"undefined\"?showDisclaimer:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n) {pug_html = pug_html + \"\\u003Cdiv class=\\\"popover-disclaimer\\\"\\u003E\\u003Cspan class=\\\"preview-ad-title\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Disclaimer_Ad_Popup_Title')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cbutton class=\\\"btn-create disclaimer-popup-close alert-ignore close closeimage\\\"\\u003E\\u003C\\u002Fbutton\\u003E\\u003Cbr\\u003E\\u003Cbr\\u003E\\u003Cp target=\\\"_blank\\\" data-bind=\\\"text:DisclaimerPopupText()\\\"\\u003E\\u003C\\u002Fp\\u003E\\u003Ca target=\\\"_blank\\\" data-bind=\\\"attr: {href: DisclaimerFinalUrl()}, visible: DisclaimerFinalUrl()\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('LearnMoreLinkText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (panels, uuid) {var idSuffix = uuid.v4();\npug_html = pug_html + \"\\u003Cdiv class=\\\"ui-tabs preview-nav-pills\\\" data-bind=\\\"foreach: tabGroups\\\"\\u003E\\u003Cul class=\\\"ui-tabs-nav btn-group\\\" data-bind=\\\"visible: $root.isTabGroupVisible($data), foreach: $data\\\" role=\\\"tablist\\\"\\u003E\\u003Cli data-bind=\\\"css: $root.selectedPanel() === name ? "ui-tabs-selected" : "preview-tabs-unselected"\\\" role=\\\"presentation\\\"\\u003E\\u003Ca\" + (\" class=\\\"selected btn preview-tab\\\"\"+pug.attr(\"data-bind\", 'attr: {\"data-target\": name, \"aria-controls\": \"preview-\" + name + \"-' + idSuffix + '\", \"aria-selected\": $root.selectedPanel() === name ? \"true\" : \"false\", \"tabindex\": $root.selectedPanel() === name ? \"0\" : \"-1\", id: \"tab-\" + name + \"-' + idSuffix + '\"}, text: title', true, true)+\" role=\\\"tab\\\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"previews\\\"\\u003E\";\n// iterate panels\n;(function(){\n var $$obj = panels;\n if ('number' == typeof $$obj.length) {\n for (var name = 0, $$l = $$obj.length; name < $$l; name++) {\n var panel = $$obj[name];\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes(['preview-' + name], [true]), false, true)+pug.attr(\"data-bind\", 'visible: selectedPanel() === \"' + name + '\", attr: {id: \"preview-' + name + '-' + idSuffix + '\", \"aria-labelledby\": \"tab-' + name + '-' + idSuffix + '\"}', true, true)+\" role=\\\"tabpanel\\\"\") + \"\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var name in $$obj) {\n $$l++;\n var panel = $$obj[name];\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes(['preview-' + name], [true]), false, true)+pug.attr(\"data-bind\", 'visible: selectedPanel() === \"' + name + '\", attr: {id: \"preview-' + name + '-' + idSuffix + '\", \"aria-labelledby\": \"tab-' + name + '-' + idSuffix + '\"}', true, true)+\" role=\\\"tabpanel\\\"\") + \"\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"panels\" in locals_for_with?locals_for_with.panels:typeof panels!==\"undefined\"?panels:undefined,\"uuid\" in locals_for_with?locals_for_with.uuid:typeof uuid!==\"undefined\"?uuid:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (adType) {pug_html = pug_html + \"\\u003Cdiv class=\\\"preview-device-Pref\\\"\\u003E\\u003Cdiv class=\\\"previewAd mainline\\\"\\u003E\\u003Cdiv\\u003E\";\nif (adType === 'DynamicSearchAd') {\npug_html = pug_html + \"\\u003Cdiv class=\\\"previewTitleAd\\\" data-bind=\\\" visible: Title\\\"\\u003E\\u003C!-- ko text: Title--\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nif (adType !== 'DynamicSearchAd') {\npug_html = pug_html + \"\\u003Ca class=\\\"previewTitleAd\\\" target=\\\"_blank\\\" data-bind=\\\"attr: {href: DestinationUrl}, visible: Title\\\"\\u003E\\u003C!-- ko text: Title--\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Fa\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\" + (null == (pug_interp = require(\"./AdPreviewBody.pug\").call(this, locals)) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"adType\" in locals_for_with?locals_for_with.adType:typeof adType!==\"undefined\"?adType:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n) {pug_html = pug_html + \"\\u003Cdiv class=\\\"previewAd nativeads native-ad-previewbox\\\"\\u003E\\u003Cdiv class=\\\"media-left\\\"\\u003E\\u003Csvg\" + (\" class=\\\"media-object\\\"\"+pug.attr(\"alt\", i18n.get('NativeAd_Image_Alt'), true, true)+\" xmlns=\\\"http:\\u002F\\u002Fwww.w3.org\\u002F2000\\u002Fsvg\\\" width=\\\"70\\\" height=\\\"60\\\" viewBox=\\\"0 0 24 24\\\" opacity=\\\"0.7\\\"\") + \"\\u003E\\u003Cpath d=\\\"M0 0h24v24H0z\\\" fill=\\\"none\\\"\\u003E\\u003C\\u002Fpath\\u003E\\u003Cpath d=\\\"M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z\\\"\\u003E\\u003C\\u002Fpath\\u003E\\u003C\\u002Fsvg\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"media-body\\\"\\u003E\\u003Cdiv\\u003E\\u003Ca class=\\\"previewTitleAd\\\" target=\\\"_blank\\\" data-bind=\\\"attr: {href: DestinationUrl}\\\"\\u003E\\u003C!-- ko text: Title--\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\" + (null == (pug_interp = require(\"./AdPreviewBody.pug\").call(this, locals)) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (adType) {pug_html = pug_html + \"\\u003Cdiv class=\\\"bing-preview-container\\\"\\u003E\\u003Cdiv\\u003E\";\nif (adType === 'DynamicSearchAd') {\npug_html = pug_html + \"\\u003Cdiv class=\\\"previewTitleAd\\\"\\u003E\\u003C!-- ko text: Title--\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nif (adType !== 'DynamicSearchAd') {\npug_html = pug_html + \"\\u003Ca class=\\\"previewTitleAd\\\" target=\\\"_blank\\\" data-bind=\\\"attr: {href: DestinationUrl}\\\"\\u003E\\u003C!-- ko text: Title--\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Fa\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\" + (null == (pug_interp = require(\"./AdPreviewBody.pug\").call(this, locals)) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"adType\" in locals_for_with?locals_for_with.adType:typeof adType!==\"undefined\"?adType:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (adType) {pug_html = pug_html + \"\\u003Cdiv class=\\\"ad-preview-bing-searchbox-icon\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Col class=\\\"bing-preview-container\\\"\\u003E\\u003Cli class=\\\"bing-preview-answer\\\"\\u003E\\u003Cdiv\\u003E\";\nif (adType === 'DynamicSearchAd') {\npug_html = pug_html + \"\\u003Cdiv class=\\\"previewTitleAd\\\" data-bind=\\\"visible: Title\\\"\\u003E\\u003C!-- ko text: Title--\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nif (adType !== 'DynamicSearchAd') {\npug_html = pug_html + \"\\u003C!-- ko if: !!DestinationUrl() && DestinationUrl().length \\u003E 0--\\u003E\\u003Ca class=\\\"previewTitleAd\\\" target=\\\"_blank\\\" data-bind=\\\"attr: {href: DestinationUrl}, visible: Title\\\"\\u003E\\u003C!-- ko text: Title--\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Fa\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C!-- ko if: !DestinationUrl() || DestinationUrl().length === 0--\\u003E\\u003Ca class=\\\"previewTitleAd\\\" target=\\\"_blank\\\" data-bind=\\\"visible: Title\\\"\\u003E\\u003C!-- ko text: Title--\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Fa\\u003E\\u003C!-- \\u002Fko--\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\" + (null == (pug_interp = require(\"./AdPreviewBody.pug\").call(this, locals)) ? \"\" : pug_interp) + \"\\u003C\\u002Fli\\u003E\\u003C\\u002Fol\\u003E\";}.call(this,\"adType\" in locals_for_with?locals_for_with.adType:typeof adType!==\"undefined\"?adType:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (adExtensionDynamicFeatures, adExtensionStaticFeatures, appendLearnMoreLink, i18n, isDSAMixedModeCampaignEnabled, objective, otherExtensions, suggestedExtensions) {pug_mixins[\"koErrors\"] = pug_interp = function(id, cssClass){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"class\", pug.classes([cssClass ? cssClass : 'alert alert-danger'], [true]), false, true)+\" data-bind=\\\"visible: errors().length > 0, foreach: errors, attr: {"aria-hidden": errors().length == 0}\\\"\"+pug.attr(\"id\", id ? id : 'KoErrors', true, true)) + \"\\u003E\\u003Cli\\u003E\\u003Cdiv data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_mixins[\"baseAdExtension\"] = pug_interp = function(label, helpId, type, i18n, objective){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar labelId = 'Create' + type + 'AdExtensionLabel';\nvar addButtonId = 'associationsAdd' + type;\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-3 text-right\\\"\\u003E\\u003Clabel\" + (pug.attr(\"id\", labelId, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get(label)) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\nif (helpId) {\npug_mixins[\"popupHelp\"](helpId, i18n.get(label), i18n);\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (\" class=\\\"associations__container col-sm-9\\\"\"+pug.attr(\"data-type\", type, true, true)+\" role=\\\"group\\\"\"+pug.attr(\"aria-labelledby\", labelId, true, true)) + \"\\u003E\\u003Cdiv\" + (pug.attr(\"data-bind\", 'if: ' + type + '().length === 0', true, true)) + \"\\u003E\\u003Ca\" + (\" class=\\\"create-extension\\\"\"+pug.attr(\"data-target\", type, true, true)+\" href=\\\"javascript:void(0);\\\" role=\\\"button\\\"\"+pug.attr(\"id\", addButtonId, true, true)+pug.attr(\"aria-labelledby\", addButtonId + ' ' + labelId, true, true)) + \"\\u003E\\u003Cspan class=\\\"glyphicon glyphicon-plus\\\"\\u003E\\u003C\\u002Fspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_AdExtensions_CreateNew')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (pug.attr(\"data-bind\", 'if: ' + type + '().length > 0', true, true)) + \"\\u003E\\u003Cdiv class=\\\"campaign-adextension-list\\\"\\u003E\\u003Ca\" + (\" class=\\\"edit-extension pull-right\\\"\"+pug.attr(\"data-target\", type, true, true)+\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", i18n.get('Edit'), true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Edit')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cdiv\" + (pug.attr(\"data-bind\", 'foreach:' + type, true, true)) + \"\\u003E\\u003Cdiv class=\\\"adExtension-previewbox\\\"\\u003E\";\nif (block) {\nblock && block();\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"Location\"] = pug_interp = function(){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_mixins[\"baseAdExtension\"].call({\nblock: function(){\npug_html = pug_html + \"\\u003Cdiv data-bind=\\\"text: CompanyName\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- ko foreach: display--\\u003E\\u003Cdiv data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003Cdiv data-bind=\\\"text: PhoneNumber\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\n}, 'AdExtensions_Location', 'pop_BA_CampaignCreate_Ads_LocationExtensions', 'Location', i18n, objective);\n};\npug_mixins[\"SiteLink\"] = pug_interp = function(){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_mixins[\"baseAdExtension\"].call({\nblock: function(){\npug_html = pug_html + \"\\u003Cdiv data-bind=\\\"text: DisplayText\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- ko if: Description1.length \\u003E 0--\\u003E\\u003Cdiv data-bind=\\\"text: Description1\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C!-- ko if: Description2.length \\u003E 0--\\u003E\\u003Cdiv data-bind=\\\"text: Description2\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\";\n}\n}, 'AdExtensions_Type_Sitelink', 'pop_BA_CampaignCreate_Ads_SitelinkExtensions', 'SiteLink', i18n, objective);\n};\npug_mixins[\"App\"] = pug_interp = function(){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_mixins[\"baseAdExtension\"].call({\nblock: function(){\npug_html = pug_html + \"\\u003Cdiv data-bind=\\\"text: AppPlatform\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv data-bind=\\\"text: DisplayText\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\n}, 'AdExtensions_Type_App', 'pop_BA_CampaignCreate_Ads_AppExtensions', 'App', i18n, objective);\n};\npug_mixins[\"Call\"] = pug_interp = function(){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_mixins[\"baseAdExtension\"].call({\nblock: function(){\npug_html = pug_html + \"\\u003Cdiv data-bind=\\\"text: PhoneNumber\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\n}, 'AdExtensions_Type_Call', 'pop_BA_CampaignCreate_Ads_CallExtensions', 'Call', i18n, objective);\n};\npug_mixins[\"Callout\"] = pug_interp = function(){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_mixins[\"baseAdExtension\"].call({\nblock: function(){\npug_html = pug_html + \"\\u003Cdiv data-bind=\\\"text: Text\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\n}, 'AdExtensions_Type_Callout', 'pop_BA_CampaignCreate_Ads_CalloutExtensions', 'Callout', i18n, objective);\n};\npug_mixins[\"Review\"] = pug_interp = function(){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_mixins[\"baseAdExtension\"].call({\nblock: function(){\npug_html = pug_html + \"\\u003Cdiv data-bind=\\\"text: Text + " - " + Source\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\n}, 'AdExtensions_Type_Review', 'pop_BA_CampaignCreate_Ads_ReviewExtensions', 'Review', i18n, objective);\n};\npug_mixins[\"StructuredSnippet\"] = pug_interp = function(){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_mixins[\"baseAdExtension\"].call({\nblock: function(){\npug_html = pug_html + \"\\u003Cdiv data-bind=\\\"text: Category + ": " + Texts.join(", ")\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\n}, 'AdExtensions_Type_StructuredSnippet', 'pop_BA_CampaignCreate_Ads_StructuredSnippetExtensions', 'StructuredSnippet', i18n, objective);\n};\npug_mixins[\"Price\"] = pug_interp = function(){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_mixins[\"baseAdExtension\"].call({\nblock: function(){\npug_html = pug_html + \"\\u003Cdiv data-bind=\\\"foreach: TableRows\\\"\\u003E\\u003Cdiv data-bind=\\\"if: $index() < $parent.showItemCount\\\"\\u003E\\u003Ca data-bind=\\\"attr: { href: FinalUrls[0] }, text: Header\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003Cspan\\u003E − \\u003C\\u002Fspan\\u003E\\u003Cspan data-bind=\\\"text: Description\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"price-adextension-price-info\\\" data-bind=\\\"text: PriceInfo\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv data-bind=\\\"if: TableRows.length > showItemCount\\\"\\u003E\\u003Cspan data-bind=\\\"text: AdExtensionMoreInfo\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\n}, 'AdExtensions_Type_Price', 'pop_BA_CampaignCreate_Ads_PriceExtensions', 'Price', i18n, objective);\n};\npug_mixins[\"AdExtensionWithDynamicTemplate\"] = pug_interp = function(type, dynamicTemplateName, hideHelpTooltip){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar helpTooltip = hideHelpTooltip ? undefined : 'pop_BA_CampaignCreate_Ads_' + type + 'Extensions';\npug_mixins[\"baseAdExtension\"].call({\nblock: function(){\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"data-bind\", \"html: $parent.adExtensionDynamicFeatures['\" + type + \"']['\" + dynamicTemplateName + \"']({ data: $data })\", true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\n}, 'AdExtensions_Type_' + type, helpTooltip, type, i18n, objective);\n};\npug_mixins[\"AdExtensionWithStaticTemplate\"] = pug_interp = function(type, staticTemplateName, hideHelpTooltip){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar helpTooltip = hideHelpTooltip ? undefined : 'pop_BA_CampaignCreate_Ads_' + type + 'Extensions';\npug_mixins[\"baseAdExtension\"].call({\nblock: function(){\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"data-bind\", \"html: $parent.adExtensionStaticFeatures['\" + type + \"']['\" + staticTemplateName + \"']({ data: $data })\", true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\n}, 'AdExtensions_Type_' + type, helpTooltip, type, i18n, objective);\n};\npug_mixins[\"extensionList\"] = pug_interp = function(extensions){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\n// iterate extensions\n;(function(){\n var $$obj = extensions;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var ext = $$obj[pug_index0];\nvar dynamicFeatures = adExtensionDynamicFeatures[ext];\nvar dynamicTemplateName = dynamicFeatures && dynamicFeatures.universalItemTemplate && \"universalItemTemplate\";\nvar staticFeatures = adExtensionStaticFeatures[ext];\nvar staticTemplateName = staticFeatures && staticFeatures.universalItemTemplate && \"universalItemTemplate\";\nif (dynamicTemplateName) {\nvar hideHelpTooltip = dynamicFeatures.hideHelpTooltip\npug_mixins[\"AdExtensionWithDynamicTemplate\"](ext, dynamicTemplateName, hideHelpTooltip);\n}\nelse\nif (staticTemplateName) {\nvar hideHelpTooltip = staticFeatures.hideHelpTooltip\npug_mixins[\"AdExtensionWithStaticTemplate\"](ext, staticTemplateName, hideHelpTooltip);\n}\nelse {\npug_mixins[ext]();\n}\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var ext = $$obj[pug_index0];\nvar dynamicFeatures = adExtensionDynamicFeatures[ext];\nvar dynamicTemplateName = dynamicFeatures && dynamicFeatures.universalItemTemplate && \"universalItemTemplate\";\nvar staticFeatures = adExtensionStaticFeatures[ext];\nvar staticTemplateName = staticFeatures && staticFeatures.universalItemTemplate && \"universalItemTemplate\";\nif (dynamicTemplateName) {\nvar hideHelpTooltip = dynamicFeatures.hideHelpTooltip\npug_mixins[\"AdExtensionWithDynamicTemplate\"](ext, dynamicTemplateName, hideHelpTooltip);\n}\nelse\nif (staticTemplateName) {\nvar hideHelpTooltip = staticFeatures.hideHelpTooltip\npug_mixins[\"AdExtensionWithStaticTemplate\"](ext, staticTemplateName, hideHelpTooltip);\n}\nelse {\npug_mixins[ext]();\n}\n }\n }\n}).call(this);\n\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-horizontal container-fluid\\\"\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"adgroup-ads__container\",isDSAMixedModeCampaignEnabled ? 'mixed-mode-campaign-creation' : ''], [false,true]), false, true)) + \"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\";\npug_mixins[\"koErrors\"]();\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\nif (!isDSAMixedModeCampaignEnabled) {\npug_html = pug_html + \"\\u003C!-- ko foreach: adGroups--\\u003E\\u003Cdiv class=\\\"adgroup-creative\\\" data-bind=\\\"attr: { "data-id": Id }\\\"\\u003E\\u003Cdiv class=\\\"adgroup-ads-creative\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"dynamic-adgroup-ad-creation-section-container\\\" data-bind=\\\"visible: dynamicAdGroups().length>0\\\"\\u003E\\u003Ch3 class=\\\"type-bold\\\"\\u003E\\u003Ca class=\\\"col-sm-12\\\" id=\\\"dynamicAdGroupAdEditorSectionTitle\\\" data-toggle=\\\"collapse\\\" data-target=\\\"#dynamicAdGroupAdEditorSection\\\" href=\\\"javascript:void(0);\\\" data-bind=\\\"attr: { "aria-expanded": isDynamicSectionExpanded() ? "true" : "false" }\\\"\\u003E\\u003Cspan class=\\\"bedded-icon-marker spritedimagealign\\\" data-bind=\\\"css: isDynamicSectionExpanded() ? "expandedImage" : "expanderImage"\\\"\\u003E\\u003C\\u002Fspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Dynamic_AdGroups_Title')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fh3\\u003E\\u003Cdiv class=\\\"collapse in\\\" id=\\\"dynamicAdGroupAdEditorSection\\\" data-section=\\\"dynamic\\\" role=\\\"group\\\"\\u003E\\u003C!-- ko foreach: dynamicAdGroups--\\u003E\\u003Cdiv class=\\\"adgroup-creative\\\" data-bind=\\\"attr: { "data-id": Id }\\\"\\u003E\\u003Cdiv class=\\\"adgroup-ads-creative\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"standard-adgroup-ad-creation-section-container\\\" data-bind=\\\"visible: standardAdGroups().length>0\\\"\\u003E\\u003Ch3 class=\\\"type-bold\\\"\\u003E\\u003Ca class=\\\"col-sm-12\\\" id=\\\"standardAdGroupAdEditorSectionTitle\\\" data-toggle=\\\"collapse\\\" data-target=\\\"#standardAdGroupAdEditorSection\\\" href=\\\"javascript:void(0);\\\" data-bind=\\\"attr: { "aria-expanded": isStandardSectionExpanded() ? "true" : "false" }\\\"\\u003E\\u003Cspan class=\\\"bedded-icon-marker spritedimagealign\\\" data-bind=\\\"css: isStandardSectionExpanded() ? "expandedImage" : "expanderImage"\\\"\\u003E\\u003C\\u002Fspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Standard_AdGroups_Title')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fh3\\u003E\\u003Cdiv class=\\\"collapse in\\\" id=\\\"standardAdGroupAdEditorSection\\\" data-section=\\\"standard\\\" role=\\\"group\\\"\\u003E\\u003C!-- ko foreach: standardAdGroups--\\u003E\\u003Cdiv class=\\\"adgroup-creative\\\" data-bind=\\\"attr: { "data-id": Id }\\\"\\u003E\\u003Cdiv class=\\\"adgroup-ads-creative\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Ch3 class=\\\"type-bold\\\"\\u003E\\u003Ca data-toggle=\\\"collapse\\\" data-target=\\\"#createAdExtensions\\\" data-bind=\\\"attr: { "aria-expanded": isAdExtensionExpanded() ? "true" : "false" }\\\" href=\\\"javascript:void(0);\\\"\\u003E\\u003Cspan class=\\\"spritedimage spritedimagealign\\\" data-bind=\\\"css: isAdExtensionExpanded() ? "expandedImage" : "expanderImage"\\\"\\u003E\\u003C\\u002Fspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_AdExtensions_Toggle')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fh3\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"ad-extensions collapse in\\\" id=\\\"createAdExtensions\\\" role=\\\"group\\\"\\u003E\\u003Cp\\u003E\" + (null == (pug_interp = appendLearnMoreLink(i18n.get('Ad_AdExtensions_Description'), 'app54489')) ? \"\" : pug_interp) + \"\\u003C\\u002Fp\\u003E\";\nif (!objective) {\npug_mixins[\"extensionList\"](otherExtensions);\n}\nelse {\npug_html = pug_html + \"\\u003Cp\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('CampaignObjective_SuggestedExtensions_' + objective)) ? \"\" : pug_interp)) + \"\\u003C\\u002Fp\\u003E\";\npug_mixins[\"extensionList\"](suggestedExtensions);\npug_html = pug_html + \"\\u003Cp\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('CampaignObjective_SuggestedExtensions_Others')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fp\\u003E\";\npug_mixins[\"extensionList\"](otherExtensions);\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"adExtensionDynamicFeatures\" in locals_for_with?locals_for_with.adExtensionDynamicFeatures:typeof adExtensionDynamicFeatures!==\"undefined\"?adExtensionDynamicFeatures:undefined,\"adExtensionStaticFeatures\" in locals_for_with?locals_for_with.adExtensionStaticFeatures:typeof adExtensionStaticFeatures!==\"undefined\"?adExtensionStaticFeatures:undefined,\"appendLearnMoreLink\" in locals_for_with?locals_for_with.appendLearnMoreLink:typeof appendLearnMoreLink!==\"undefined\"?appendLearnMoreLink:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isDSAMixedModeCampaignEnabled\" in locals_for_with?locals_for_with.isDSAMixedModeCampaignEnabled:typeof isDSAMixedModeCampaignEnabled!==\"undefined\"?isDSAMixedModeCampaignEnabled:undefined,\"objective\" in locals_for_with?locals_for_with.objective:typeof objective!==\"undefined\"?objective:undefined,\"otherExtensions\" in locals_for_with?locals_for_with.otherExtensions:typeof otherExtensions!==\"undefined\"?otherExtensions:undefined,\"suggestedExtensions\" in locals_for_with?locals_for_with.suggestedExtensions:typeof suggestedExtensions!==\"undefined\"?suggestedExtensions:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (editMode, i18n, i18nGlobal, isDisplayPlusDisplayAd, isSTADisabled, permissions, showInline, showSaveAndCreateAnother) {\n\n\n\npug_mixins[\"koErrors\"] = pug_interp = function(id, cssClass){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"class\", pug.classes([cssClass ? cssClass : 'alert alert-danger'], [true]), false, true)+\" data-bind=\\\"visible: errors().length > 0, foreach: errors, attr: {"aria-hidden": errors().length == 0}\\\"\"+pug.attr(\"id\", id ? id : 'KoErrors', true, true)) + \"\\u003E\\u003Cli\\u003E\\u003Cdiv data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_mixins[\"fwLink\"] = pug_interp = function(linkId, displayText, ariaLabelContext){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Ca\" + (pug.attr(\"href\", 'https://go.microsoft.com/fwlink/?linkid=' + linkId, true, true)+\" target=\\\"_blank\\\"\"+pug.attr(\"aria-label\", (ariaLabelContext || '') + ' ' + displayText, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = displayText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n};\npug_mixins[\"fwLink\"] = pug_interp = function(linkId, displayText, ariaLabelContext){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Ca\" + (pug.attr(\"href\", 'https://go.microsoft.com/fwlink/?linkid=' + linkId, true, true)+\" target=\\\"_blank\\\"\"+pug.attr(\"aria-label\", (ariaLabelContext || '') + ' ' + displayText, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = displayText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n};\npug_mixins[\"migrationWarning\"] = pug_interp = function(){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"col-sm-12 form-group\\\" data-bind=\\\"visible: showMigrationAlertForEXTA() || showMigrationAlertForSTA() || showSTAEndWarning()\\\"\\u003E\\u003Cdiv class=\\\"alert alert-warning form-group\\\" data-bind=\\\"visible: showMigrationAlertForEXTA()\\\"\\u003E\\u003Cdiv class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (!isSTADisabled) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"alert-info-inline\\\"\\u003E\" + (pug.escape(null == (pug_interp = (i18n.get('ExpandedTextAd_Migration') + ' ')) ? \"\" : pug_interp)) + \"\\u003Ca class=\\\"switchBackToSTA form-control-static\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('ExpandedTextAd_Migration_SwitchBackToSTA')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cspan\\u003E | \\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"HelpTopic\\\" query=\\\"help:app54537\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('LearnMoreLinkText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"alert-info-inline\\\"\\u003E\" + (pug.escape(null == (pug_interp = (i18n.get('ExpandedTextAd_Migration_EndSupport') + ' ')) ? \"\" : pug_interp)) + \"\\u003Ca class=\\\"HelpTopic\\\" query=\\\"help:app54537\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('LearnMoreLinkText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert alert-warning form-group\\\" data-bind=\\\"visible: showMigrationAlertForSTA()\\\"\\u003E\\u003Cdiv class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert-info-inline\\\"\\u003E\" + (pug.escape(null == (pug_interp = (i18n.get('ExpandedTextAd_Migration_Consider') + ' ')) ? \"\" : pug_interp)) + \"\\u003Ca class=\\\"switchBackToEXTA form-control-static\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('ExpandedTextAd_Migration_SwitchBackToEXTA')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cspan\\u003E | \\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"HelpTopic\\\" query=\\\"help:app54538\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('LearnMoreLinkText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert alert-warning form-group\\\" data-bind=\\\"visible: showSTAEndWarning()\\\"\\u003E\\u003Cdiv class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert-info-inline\\\"\\u003E\" + (pug.escape(null == (pug_interp = (i18n.get('STA_End_Warning') + ' ')) ? \"\" : pug_interp)) + \"\\u003Cspan\\u003E | \\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"HelpTopic\\\" query=\\\"help:app54537\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('LearnMoreLinkText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"crawlImgAgreementAlert\"] = pug_interp = function(){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"alert alert-info form-group\\\"\\u003E\\u003Cdiv class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert-info-inline\\\"\\u003E\";\nvar link = '' + i18n.getString('SharedLibrary_UrlOptions_CrawlImgLandPage_AlertMessage_Link') + ''\npug_html = pug_html + (null == (pug_interp = i18n.getString('SharedLibrary_UrlOptions_CrawlImgLandPage_AlertMessage_Improve_MMA').replace('{0}', link)) ? \"\" : pug_interp) + \"\\u003Cspan\\u003E \\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"HelpTopic\\\" query=\\\"ext52034\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('LearnMoreLinkText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"form-horizontal\",showInline ? '' : 'adEditor-container'], [false,true]), false, true)) + \"\\u003E\\u003Cdiv data-bind=\\\"attr:{class: containerClass}\\\"\\u003E\";\nif (!showInline) {\npug_html = pug_html + \"\\u003Ch5\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_Create_Description')) ? \"\" : pug_interp)) + \"\\u003Cspan\\u003E \";\npug_mixins[\"fwLink\"]('832330', i18n.get('Ad_Create_Description_Tip'), i18n.get('Ad_Create_Description'));\npug_html = pug_html + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fh5\\u003E\";\n}\npug_mixins[\"migrationWarning\"]();\npug_html = pug_html + \"\\u003Cdiv class=\\\"row\\\" data-bind=\\\"visible: showAdTypeWithErrors()\\\"\\u003E\";\nif (!showInline) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\";\npug_mixins[\"koErrors\"]();\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"col-sm-6\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\" data-bind=\\\"visible: showAdType()\\\"\\u003E\\u003Cdiv class=\\\"col-sm-4 control-label\\\"\\u003E\\u003Clabel id=\\\"adTypeLabel\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_Type')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_NewAdCreate_AdType', i18n.get('Ad_Type'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-8\\\"\\u003E\\u003C!--ko if: adTypeOptions().length--\\u003E\\u003Cselect class=\\\"ad-types form-control\\\" data-bind=\\\"options: adTypeOptions, optionsText: "Name", optionsValue: "Value", value: Type, disable: disableAdType\\\" aria-labelledby=\\\"adTypeLabel\\\"\\u003E\\u003C\\u002Fselect\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C!--ko if: Type() === 'ResponsiveSearch'--\\u003E\";\nif (permissions.IsRSAAsDefaultType) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"alert alert-info form-group\\\"\\u003E\\u003Cdiv class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert-info-inline\\\"\\u003E\" + (pug.escape(null == (pug_interp = (i18n.get('RSA_As_Default_Type') + ' ')) ? \"\" : pug_interp)) + \"\\u003Ca\" + (\" class=\\\"HelpTopic\\\"\"+\" query=\\\"app54667\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", (i18n.getString('Click to learn more about {{item}}')).replace('{{item}}', i18n.getString('RSA_As_Default_Type')), true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('LearnMoreLinkText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + (\"\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!--ko foreach: availableAdTypes--\\u003E\\u003Cdiv data-bind=\\\"attr: { "data-type": $data }, visible: $root.Type() === $data\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003Cdiv class=\\\"form-group\\\" data-bind=\\\"visible: errors.isAppealable()\\\"\\u003E\\u003Cdiv class=\\\"col-sm-offset-2 col-sm-8\\\"\\u003E\\u003Cdiv class=\\\"editorial-appeal-panel\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert alert-info form-group\\\"\\u003E\\u003Cdiv class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert-info-inline\\\"\\u003E\" + (pug.escape(null == (pug_interp = ((editMode ? i18n.get('Ads_Edited_Latency') : i18n.get('Ads_Created_Latency')) + ' ')) ? \"\" : pug_interp)));\npug_mixins[\"fwLink\"]('832333', i18n.get('LearnMoreLinkText'), editMode ? i18n.get('Ads_Edited_Latency') : i18n.get('Ads_Created_Latency'));\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\npug_mixins[\"crawlImgAgreementAlert\"]();\nif (!showInline && !isDisplayPlusDisplayAd) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"save-bar form-group appEditor-save-container\\\"\\u003E\\u003Cinput\" + (\" class=\\\"save btn btn-primary\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", i18nGlobal.get('Button_Save'), true, true)+\" data-bind=\\\"enable: hasWebsiteImageOptedInObservable\\\"\") + \"\\u003E\";\nif (showSaveAndCreateAnother) {\npug_html = pug_html + \"\\u003Cinput\" + (\" class=\\\"save-create-another btn btn-default\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", i18n.get('Ad_SaveCreate'), true, true)+\" data-bind=\\\"enable: hasWebsiteImageOptedInObservable\\\"\") + \"\\u003E\";\n}\npug_html = pug_html + \"\\u003Cinput\" + (\" class=\\\"cancel btn btn-default\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", i18nGlobal.get('Button_Cancel'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"editMode\" in locals_for_with?locals_for_with.editMode:typeof editMode!==\"undefined\"?editMode:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"i18nGlobal\" in locals_for_with?locals_for_with.i18nGlobal:typeof i18nGlobal!==\"undefined\"?i18nGlobal:undefined,\"isDisplayPlusDisplayAd\" in locals_for_with?locals_for_with.isDisplayPlusDisplayAd:typeof isDisplayPlusDisplayAd!==\"undefined\"?isDisplayPlusDisplayAd:undefined,\"isSTADisabled\" in locals_for_with?locals_for_with.isSTADisabled:typeof isSTADisabled!==\"undefined\"?isSTADisabled:undefined,\"permissions\" in locals_for_with?locals_for_with.permissions:typeof permissions!==\"undefined\"?permissions:undefined,\"showInline\" in locals_for_with?locals_for_with.showInline:typeof showInline!==\"undefined\"?showInline:undefined,\"showSaveAndCreateAnother\" in locals_for_with?locals_for_with.showSaveAndCreateAnother:typeof showSaveAndCreateAnother!==\"undefined\"?showSaveAndCreateAnother:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, isAutoTargetCampaign, maxAdGroupsError) {pug_mixins[\"koErrors\"] = pug_interp = function(id, cssClass){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"class\", pug.classes([cssClass ? cssClass : 'alert alert-danger'], [true]), false, true)+\" data-bind=\\\"visible: errors().length > 0, foreach: errors, attr: {"aria-hidden": errors().length == 0}\\\"\"+pug.attr(\"id\", id ? id : 'KoErrors', true, true)) + \"\\u003E\\u003Cli\\u003E\\u003Cdiv data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_mixins[\"koErrors\"]();\npug_html = pug_html + \"\\u003Cdiv class=\\\"row-fluid adgroups-keywords__container\\\"\\u003E\\u003Cdiv class=\\\"ad-group-list-container col-sm-4\\\"\\u003E\\u003Cdiv class=\\\"landing-page-container col-sm-9\\\" data-bind=\\\"visible: showLandingPage, css: { "ad-group--no-toggle": hasOneAdGroup() }\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"ad-group-list pull-left col-sm-12\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"filter-clear\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"alert alert-danger\\\" id=\\\"MaxAdGroupsError\\\" data-bind=\\\"visible: showAdGroupLimitError, attr: {"aria-hidden": !showAdGroupLimitError}\\\" role=\\\"alert\\\"\\u003E\\u003C!-- ko if: showAdGroupLimitError --\\u003E\" + (pug.escape(null == (pug_interp = maxAdGroupsError) ? \"\" : pug_interp)) + \"\\u003C!-- \\u002Fko --\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cinput\" + (\" class=\\\"btn btn-default btn-create-adgroup\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", i18n.get('AdGroup_Label_AddButton'), true, true)+\" data-bind=\\\"visible: !hasMaxAdGroups()\\\" aria-describedby=\\\"MaxAdGroupsError\\\"\") + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (!isAutoTargetCampaign) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"keyword-planner-root container-fluid col-sm-6\\\" data-bind=\\\"style: {marginTop: keywordPlannerTopValuePixel()}, visible: isKeywordPlannerEnabled()\\\"\\u003E\\u003Cdiv class=\\\"keyword-planner-container container-fluid\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"filter-clear\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isAutoTargetCampaign\" in locals_for_with?locals_for_with.isAutoTargetCampaign:typeof isAutoTargetCampaign!==\"undefined\"?isAutoTargetCampaign:undefined,\"maxAdGroupsError\" in locals_for_with?locals_for_with.maxAdGroupsError:typeof maxAdGroupsError!==\"undefined\"?maxAdGroupsError:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (helpId, i18n, showSelectAllOnPage, title) {pug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_html = pug_html + (\"\\u003Cdiv class=\\\"title\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = title) ? \"\" : pug_interp)));\npug_mixins[\"popupHelp\"](helpId, title, i18n);\npug_html = pug_html + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"row\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"searchbox form-horizontal url col-sm-12\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"row\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"searchbox form-horizontal keywords col-sm-11\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-1\\\"\\u003E\\u003Cdiv\" + (\" class=\\\"keyword-planner-search-button btn clickable\\\"\"+\" tabIndex=\\\"0\\\" role=\\\"button\\\"\"+pug.attr(\"aria-label\", i18n.get('KeywordPlanner_SearchTerm'), true, true)+\" data-bind=\\\"attr: { disabled: allLocationsUnsupported() ? "disabled" : null }\\\"\") + \"\\u003E\\u003Cdiv class=\\\"filter_search_icon_small\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group keyword-planner-content\\\"\\u003E\\u003Cdiv area-live=\\\"polite\\\"\\u003E\\u003Cdiv class=\\\"alert alert-warning col-sm-12\\\" data-bind=\\\"visible: excludedLocationsWarning(), text: excludedLocationsWarning()\\\" role=\\\"alert\\\" aria-live=\\\"polite\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert alert-warning no-suggestion-note col-sm-12\\\" data-bind=\\\"visible: noSuggestionNote, html: noSuggestionNote\\\" role=\\\"alert\\\" aria-live=\\\"polite\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid keyword-planner\\\" data-bind=\\\"visible: isKeywordPlannerVisible\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (showSelectAllOnPage) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"suggested-keyword-select-all-on-page\\\" data-bind=\\\"visible: isKeywordPlannerVisible\\\"\\u003E\\u003Ca class=\\\"select-all-on-page\\\" href=\\\"javascript:void(0);\\\"\\u003E\\u003Cspan class=\\\"arrow-back-double\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan data-bind=\\\"text: selectMultiIdeasText\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv data-bind=\\\"visible: isKeywordPlannerVisible\\\"\\u003E\\u003Cdiv class=\\\"pagination_host\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"off-screen\\\" aria-live=\\\"polite\\\" data-bind=\\\"text: recentUserActionPrompt()\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"helpId\" in locals_for_with?locals_for_with.helpId:typeof helpId!==\"undefined\"?helpId:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"showSelectAllOnPage\" in locals_for_with?locals_for_with.showSelectAllOnPage:typeof showSelectAllOnPage!==\"undefined\"?showSelectAllOnPage:undefined,\"title\" in locals_for_with?locals_for_with.title:typeof title!==\"undefined\"?title:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (value) {pug_html = pug_html + \"\\u003Cspan class=\\\"clickable\\\" tabindex=\\\"0\\\" role=\\\"button\\\"\\u003E\\u003Cspan class=\\\"arrow-back-double\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = value) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fspan\\u003E\";}.call(this,\"value\" in locals_for_with?locals_for_with.value:typeof value!==\"undefined\"?value:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (value) {pug_html = pug_html + \"\\u003Cspan class=\\\"clickable\\\" tabindex=\\\"0\\\" role=\\\"button\\\"\\u003E\" + (pug.escape(null == (pug_interp = value) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";}.call(this,\"value\" in locals_for_with?locals_for_with.value:typeof value!==\"undefined\"?value:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (data, i18n) {pug_mixins[\"toolbar\"] = pug_interp = function(data){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"advanced-keyword-planner-toolbar\\\"\\u003E\\u003Cdiv class=\\\"input-group\\\"\\u003E\\u003Cbutton class=\\\"btn btn-primary apply-to-adgroups dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('KeywordPlanner_ApplyToAdGroups')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"caret caret-dropdown\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fbutton\\u003E\\u003Cbutton class=\\\"btn btn-default cancel-panel\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('KeywordPlanner_Close')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fbutton\\u003E\\u003Cul class=\\\"dropdown-menu copy-dropdown\\\" role=\\\"menu\\\"\\u003E\\u003Cli\\u003E\\u003Ca class=\\\"add-to-new-adgroup\\\" href=\\\"javascript:void(0);\\\" tabindex=\\\"-1\\\" role=\\\"menuitem\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('KeywordPlanner_ApplyToNewAdGroup')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fli\\u003E\\u003Cli\\u003E\\u003Ca class=\\\"add-to-all-adgroups\\\" href=\\\"javascript:void(0);\\\" tabindex=\\\"-1\\\" role=\\\"menuitem\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('KeywordPlanner_ApplyToAllAdGroups')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fli\\u003E\\u003Cli class=\\\"grid-submenu-flyout\\\"\\u003E\\u003Ca href=\\\"javascript:void(0);\\\" tabindex=\\\"-1\\\" role=\\\"menuitem\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('KeywordPlanner_ApplyToSelectedAdGroups')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"caret caret-right caret-dropdown\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fa\\u003E\\u003Cul class=\\\"grid-groupmenu dropdown-menu adgroups-list\\\" role=\\\"menu\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\"\\u003E\\u003C!--ko foreach: adgroups--\\u003E\\u003Cli\\u003E\\u003Ca class=\\\"grid-submenu-item\\\" onclick=\\\"event.stopPropagation();\\\" href=\\\"javascript:void(0);\\\" tabindex=\\\"-1\\\" role=\\\"menuitem\\\"\\u003E\\u003Clabel class=\\\"normal-font\\\"\\u003E\\u003Cinput class=\\\"margin-right-little\\\" type=\\\"checkbox\\\" data-bind=\\\"checked: $data.checked\\\"\\u003E\\u003Cspan data-bind=\\\"text: $data.isUnnamed ? $data.defaultName() : $data.name()\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Flabel\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fli\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003Cli class=\\\"divider\\\"\\u003E\\u003C\\u002Fli\\u003E\\u003Cli\\u003E\\u003Ca class=\\\"add-to-some-adgroups\\\" href=\\\"javascript:void(0);\\\" tabindex=\\\"-1\\\" role=\\\"menuitem\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('KeywordPlanner_Button_Add')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"toolbar\"](data);\npug_html = pug_html + \"\\u003Cdiv class=\\\"advanced-keyword-planner bingadsgrid\\\"\\u003E\\u003Cdiv class=\\\"grid-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"data\" in locals_for_with?locals_for_with.data:typeof data!==\"undefined\"?data:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, isForVNext) {pug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"row landing-page-container\\\"\\u003E\\u003Cdiv\\u003E\\u003Cdiv class=\\\"pull-left\\\"\\u003E\\u003Clabel class=\\\"landing-page-container__label\\\" id=\\\"KeywordPlanner_LandingPage_Label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('KeywordPlanner_Label_LandingPage')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_CampaignCreate_Keywords_Website', i18n.get('KeywordPlanner_Label_LandingPage'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\nif (!isForVNext) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"pull-left\\\"\\u003E\\u003Cinput class=\\\"landing-page-container__checkbox\\\" type=\\\"checkbox\\\" data-bind=\\\"checked: isNotReady\\\" aria-labelledby=\\\"KeywordPlanner_LandingNotReady_Label\\\"\\u003E\\u003Cspan id=\\\"KeywordPlanner_LandingNotReady_Label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('KeywordPlanner_Label_LandingNotReady')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv\\u003E\\u003Cinput\" + (\" class=\\\"form-control\\\"\"+\" type=\\\"text\\\" data-bind=\\\"value: url, disable: isNotReady, attr: {"aria-disabled": isNotReady() ? "true" : "false"} \\\"\"+pug.attr(\"placeholder\", i18n.get('KeywordPlanner_LandingPagePlaceholder'), true, true)+\" aria-labelledby=\\\"KeywordPlanner_LandingPage_Label\\\"\") + \"\\u003E\";\nif (isForVNext) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"pull-left\\\"\\u003E\\u003Cinput class=\\\"landing-page-container__checkbox\\\" type=\\\"checkbox\\\" data-bind=\\\"checked: isNotReady\\\" aria-labelledby=\\\"KeywordPlanner_LandingNotReady_Label\\\"\\u003E\\u003Cspan id=\\\"KeywordPlanner_LandingNotReady_Label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('KeywordPlanner_Label_LandingNotReady')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isForVNext\" in locals_for_with?locals_for_with.isForVNext:typeof isForVNext!==\"undefined\"?isForVNext:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (helpId, i18n) {pug_mixins[\"helpLink\"] = pug_interp = function(topic, displayText, ariaLabelContext, fBindContext, fBindQuery, onLinkClickUrl){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nif (onLinkClickUrl) {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"DelegateLink\\\"\"+pug.attr(\"href\", onLinkClickUrl, true, true)+\" target=\\\"_blank\\\"\"+pug.attr(\"aria-label\", (ariaLabelContext || '') + ' ' + displayText, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = displayText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse {\nif (fBindContext) {\nif (fBindQuery) {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"HelpTopic\\\"\"+\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"data-bind\", 'attr: { \"query\": \"help:\" + ' + topic + ', \"aria-label\": ' + ariaLabelContext + '+\" \"+\"' + displayText + '\" }', true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = displayText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"HelpTopic\\\"\"+\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"query\", 'help:' + topic, true, true)+pug.attr(\"data-bind\", 'attr: { \"aria-label\": ' + ariaLabelContext + '+\" \"+\"' + displayText + '\" }', true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = displayText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\n}\nelse {\nif (fBindQuery) {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"HelpTopic\\\"\"+\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"data-bind\", 'attr: { \"query\": \"help:\" + ' + topic + '}', true, true)+pug.attr(\"aria-label\", (ariaLabelContext || '') + ' ' + displayText, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = displayText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"HelpTopic\\\"\"+\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"query\", 'help:' + topic, true, true)+pug.attr(\"aria-label\", (ariaLabelContext || '') + ' ' + displayText, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = displayText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\n}\n}\n};\npug_mixins[\"helpLink\"](helpId, i18n.get('LearnMoreLinkText'));}.call(this,\"helpId\" in locals_for_with?locals_for_with.helpId:typeof helpId!==\"undefined\"?helpId:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n) {pug_mixins[\"koErrors\"] = pug_interp = function(id, cssClass){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"class\", pug.classes([cssClass ? cssClass : 'alert alert-danger'], [true]), false, true)+\" data-bind=\\\"visible: errors().length > 0, foreach: errors, attr: {"aria-hidden": errors().length == 0}\\\"\"+pug.attr(\"id\", id ? id : 'KoErrors', true, true)) + \"\\u003E\\u003Cli\\u003E\\u003Cdiv data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"mixed-mode-adgroup-create\\\"\\u003E\";\npug_mixins[\"koErrors\"]();\npug_html = pug_html + \"\\u003Cdiv class=\\\"dynamic-adgroup-creation-section-container\\\" data-bind=\\\"visible: !hasDisclaimerSettings() || allowDisclaimer()\\\"\\u003E\\u003Ch3 class=\\\"type-bold\\\"\\u003E\\u003Ca class=\\\"col-sm-12\\\" id=\\\"dynamicAdGroupSectionTitle\\\" data-toggle=\\\"collapse\\\" data-target=\\\"#dynamicAdGroupSection\\\" href=\\\"javascript:void(0);\\\" data-bind=\\\"attr: { "aria-expanded": isDynamicAdGroupSectionExpanded() ? "true" : "false" }\\\"\\u003E\\u003Cspan class=\\\"bedded-icon-marker spritedimagealign\\\" data-bind=\\\"css: isDynamicAdGroupSectionExpanded() ? "expandedImage" : "expanderImage"\\\"\\u003E\\u003C\\u002Fspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Dynamic_AdGroups_Title')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fh3\\u003E\\u003Cdiv class=\\\"collapse in\\\" id=\\\"dynamicAdGroupSection\\\" data-section=\\\"dynamic\\\"\\u003E\\u003Cp class=\\\"section-description\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('MixedMode_DynamicAdGroupSection_Description')) ? \"\" : pug_interp)) + \"\\u003Ca class=\\\"HelpTopic\\\" href=\\\"javascript:void(0);\\\" query=\\\"help:56794\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('LearnMoreLinkText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fp\\u003E\\u003Cdiv class=\\\"dsa-settings-container form-horizontal\\\" data-bind=\\\"visible: hasDSASettings\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"dynamic-ad-group-create-view-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"standard-adgroup-creation-section-container\\\"\\u003E\\u003Ch3 class=\\\"type-bold\\\"\\u003E\\u003Ca class=\\\"col-sm-12\\\" id=\\\"standardAdGroupSectionTitle\\\" data-toggle=\\\"collapse\\\" data-target=\\\"#standardAdGroupSection\\\" href=\\\"javascript:void(0);\\\" data-bind=\\\"attr: { "aria-expanded": isStandardAdGroupSectionExpanded() ? "true" : "false" }\\\"\\u003E\\u003Cspan class=\\\"bedded-icon-marker spritedimagealign\\\" data-bind=\\\"css: isStandardAdGroupSectionExpanded() ? "expandedImage" : "expanderImage"\\\"\\u003E\\u003C\\u002Fspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Standard_AdGroups_Title')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fh3\\u003E\\u003Cdiv class=\\\"collapse\\\" id=\\\"standardAdGroupSection\\\" data-section=\\\"standard\\\"\\u003E\\u003Cp class=\\\"section-description\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('MixedMode_StandardAdGroupSection_Description')) ? \"\" : pug_interp)) + \"\\u003Ca class=\\\"HelpTopic\\\" href=\\\"javascript:void(0);\\\" query=\\\"help:app54522\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('LearnMoreLinkText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fp\\u003E\\u003Cdiv class=\\\"standard-ad-group-create-view-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, uuid) {pug_mixins[\"koErrors\"] = pug_interp = function(id, cssClass){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"class\", pug.classes([cssClass ? cssClass : 'alert alert-danger'], [true]), false, true)+\" data-bind=\\\"visible: errors().length > 0, foreach: errors, attr: {"aria-hidden": errors().length == 0}\\\"\"+pug.attr(\"id\", id ? id : 'KoErrors', true, true)) + \"\\u003E\\u003Cli\\u003E\\u003Cdiv data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_mixins[\"koCharactersRemaining\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"remaining-hint help-block\\\"\\u003E\\u003Cspan\" + (pug.attr(\"data-bind\", 'text:' + item + '.char_rem', true, true)+pug.attr(\"id\", id ? id : item + '_CharactersRemaining', true, true)+\" role=\\\"status\\\" aria-live=\\\"polite\\\"\") + \"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"deletedConfirmation\"] = pug_interp = function(message){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv\" + (\" class=\\\"deletedConfirmation alert alert-success\\\"\"+pug.attr(\"data-bind\", 'text: ' + message, true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"koValidationError\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"data-bind\", 'visible: !' + item + '.isValid(), foreach: ' + item + '.errors, attr: {\"aria-hidden\": ' + item + '.isValid()}', true, true)+pug.attr(\"id\", id ? id : item + 'ValidationError', true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003Cli role=\\\"presentation\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\nvar id = uuid.v4();\nvar label_collapse = i18n.get('AdGroup_Label_Collapse');\nvar label_expand = i18n.get('AdGroup_Label_Expand');\npug_html = pug_html + \"\\u003Cdiv data-bind=\\\"visible: !isDeleted()\\\"\\u003E\\u003Cdiv class=\\\"accordion-with-popup-help\\\"\\u003E\\u003Cdiv\" + (\" class=\\\"row accordion-toggle\\\"\"+\" data-toggle=\\\"collapse\\\"\"+pug.attr(\"data-target\", '#'+id, true, true)+pug.attr(\"data-bind\", 'attr: {\"aria-expanded\": isOpen() ? \"true\" : \"false\", \"tabindex\": isOnlyAdGroup() ? \"-1\" : \"0\", \"aria-label\": isOnlyAdGroup() ? \"\" : (isOpen() ? \"' + label_collapse + '\":\"' + label_expand + '\"), \"role\": isOnlyAdGroup() ? \"group\" : \"button\"}, css: { \"clickable\": !isOnlyAdGroup() }', true, true)+pug.attr(\"aria-describedby\", 'AdGroup_Name_Label-'+id, true, true)) + \"\\u003E\\u003Cdiv class=\\\"col-sm-1 ad-group-list__col-sm-1--toggle\\\"\\u003E\\u003Cspan class=\\\"glyphicon ad-group-list__glyphicon\\\" data-bind=\\\"css: {"glyphicon-chevron-down": !isOpen(), "glyphicon-chevron-up": isOpen()}, visible: !isOnlyAdGroup()\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-10 pull-left\\\"\\u003E\\u003Clabel\" + (\" class=\\\"ad-group-list__col-sm-1__label\\\"\"+pug.attr(\"id\", 'AdGroup_Name_Label-'+id, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('AdGroup_Label_Name')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_CampaignCreate_Keywords_AdGroupName', i18n.get('AdGroup_Label_Name'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"row\\\"\\u003E\\u003Cdiv class=\\\"col-sm-1 ad-group-list__col-sm-1--toggle\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-9 pull-left adgroup__body\\\"\\u003E\\u003Cdiv class=\\\"row\\\"\\u003E\\u003Cdiv class=\\\"form-group col-sm-12\\\"\\u003E\\u003Cinput\" + (\" class=\\\"adgroup-name form-control\\\"\"+\" type=\\\"text\\\"\"+pug.attr(\"data-bind\", 'textInput: Name, css: {\"validation-error\": !Name.isValid() || isNameDuplicate()}, attr: {\"aria-invalid\": !Name.isValid(), \"aria-describedby\": \"AdGroupNameError-\" + \"' + id + '\" + (isNameDuplicate() ? \" DuplicateAdGroupNameError-\" + \"' + id + '\" : \"\") + \" Name_CharactersRemaining-\" + \"' + id + '\"}', true, true)+pug.attr(\"aria-labelledby\", 'AdGroup_Name_Label-'+id, true, true)+\" aria-required=\\\"true\\\"\") + \"\\u003E\";\npug_mixins[\"koCharactersRemaining\"]('Name', 'Name_CharactersRemaining-' + id);\npug_html = pug_html + \"\\u003Cdiv class=\\\"row\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\npug_mixins[\"koErrors\"]();\npug_html = pug_html + \"\\u003Cspan data-bind=\\\"visible: shouldValidateName()\\\"\\u003E\";\npug_mixins[\"koValidationError\"]('Name', 'AdGroupNameError-' + id);\npug_html = pug_html + \"\\u003C\\u002Fspan\\u003E\\u003Cdiv\" + (\" class=\\\"error name-duplicate-error\\\"\"+\" data-bind=\\\"visible: isNameDuplicate(), attr: {"aria-hidden": !isNameDuplicate()}\\\"\"+pug.attr(\"id\", 'DuplicateAdGroupNameError-' + id, true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003C!-- ko if: isNameDuplicate --\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('AdGroup_Message_DuplicateAdGroupName')) ? \"\" : pug_interp)) + \"\\u003C!-- \\u002Fko --\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (\" class=\\\"ad-group-collapsible collapse in\\\"\"+pug.attr(\"id\", id, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-1 ad-group-list__col-sm-1--remove\\\"\\u003E\\u003Ca class=\\\"clickable glyphicon glyphicon-remove ad-group-list__glyphicon\\\" data-bind=\\\"visible: !isOnlyAdGroup(), attr: {"aria-label": removeButtonLabel() }\\\" role=\\\"button\\\" tabindex=\\\"0\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Remove')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"row\\\" data-bind=\\\"visible: isDeleted()\\\"\\u003E\\u003Cdiv class=\\\"col-sm-1 ad-group-list__col-sm-1--toggle\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-9\\\"\\u003E\";\npug_mixins[\"deletedConfirmation\"]('deletedConfirmationMessage');\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"uuid\" in locals_for_with?locals_for_with.uuid:typeof uuid!==\"undefined\"?uuid:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n) {pug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv data-bind=\\\"visible: !hide()\\\"\\u003E\\u003Cdiv class=\\\"checkbox checkbox-copy\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput type=\\\"checkbox\\\" data-bind=\\\"checked: copySetting\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Campaign_CopySettings')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_CampaignCreate_Settings_UseAnother', i18n.get('Campaign_CopySettings'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-control-static copy-settings\\\" data-bind=\\\"visible: copySetting\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (IsCampaignMultipleLanguageEnabled, i18n, isExperiment, isOppotunityCampaignLevel, isSignUpPage, popupIds, showLanguage) {pug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_mixins[\"koCharactersRemaining\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"remaining-hint help-block\\\"\\u003E\\u003Cspan\" + (pug.attr(\"data-bind\", 'text:' + item + '.char_rem', true, true)+pug.attr(\"id\", id ? id : item + '_CharactersRemaining', true, true)+\" role=\\\"status\\\" aria-live=\\\"polite\\\"\") + \"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"koErrors\"] = pug_interp = function(id, cssClass){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"class\", pug.classes([cssClass ? cssClass : 'alert alert-danger'], [true]), false, true)+\" data-bind=\\\"visible: errors().length > 0, foreach: errors, attr: {"aria-hidden": errors().length == 0}\\\"\"+pug.attr(\"id\", id ? id : 'KoErrors', true, true)) + \"\\u003E\\u003Cli\\u003E\\u003Cdiv data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\n\n\n\n\npug_mixins[\"koValidationError\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"data-bind\", 'visible: !' + item + '.isValid(), foreach: ' + item + '.errors, attr: {\"aria-hidden\": ' + item + '.isValid()}', true, true)+pug.attr(\"id\", id ? id : item + 'ValidationError', true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003Cli role=\\\"presentation\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-horizontal campaign-settings__container\\\"\\u003E\\u003Cinput id=\\\"CampaignId\\\" type=\\\"hidden\\\" data-bind=\\\"value: Id\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\";\npug_mixins[\"koErrors\"]();\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Ch2 class=\\\"col-sm-2 control-label\\\"\\u003E\\u003Clabel id=\\\"Campaign_Name_Label\\\"\\u003E\" + (pug.escape(null == (pug_interp = isExperiment ? i18n.get('Experiment_Name') : i18n.get('Campaign_Name')) ? \"\" : pug_interp)) + \"\\u003Cspan style=\\\"color:rgb(164, 38, 44);\\\"\\u003E\" + (pug.escape(null == (pug_interp = ' *') ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"](popupIds.CampaignName, i18n.get('Campaign_Name'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fh2\\u003E\\u003Cdiv class=\\\"col-sm-4\\\" role=\\\"presentation\\\"\\u003E\\u003Cinput\" + (\" class=\\\"name form-control\\\"\"+\" data-bind=\\\"value: Name, valueUpdate: "input", attr: {"aria-invalid": !Name.isValid()}, css: {"validation-error": !Name.isValid()}\\\"\"+pug.attr(\"placeholder\", i18n.get('CampaignSetting_Placeholder_Name'), true, true)+\" type=\\\"text\\\" aria-required=\\\"true\\\" aria-describedby=\\\"CampaignNameErrors Name_CharactersRemaining\\\" aria-labelledby=\\\"Campaign_Name_Label\\\"\"+pug.attr(\"disabled\", isOppotunityCampaignLevel, true, true)) + \"\\u003E\";\npug_mixins[\"koCharactersRemaining\"]('Name');\npug_html = pug_html + \"\\u003Cdiv class=\\\"clear\\\"\\u003E\";\npug_mixins[\"koValidationError\"]('Name', 'CampaignNameErrors');\npug_html = pug_html + \"\\u003Cdiv class=\\\"copy-campaign-settings\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv data-bind=\\\"if: showCampaignGoal()\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Ch2 class=\\\"col-sm-2 control-label\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Campaign_Goal')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fh2\\u003E\\u003Cdiv class=\\\"col-sm-4 form-control-static\\\"\\u003E\\u003Cspan data-bind=\\\"text: campaignGoalText\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv data-bind=\\\"if: showTimeZoneText()\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Ch2 class=\\\"col-sm-2 control-label\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Campaign_TimeZone')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_CampaignCreate_Settings_TimeZone', i18n.get('Campaign_TimeZone'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fh2\\u003E\\u003Cdiv class=\\\"col-sm-4 form-control-static\\\"\\u003E\\u003Cspan data-bind=\\\"text: timeZoneText\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (!isSignUpPage && !isOppotunityCampaignLevel) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Ch2 class=\\\"col-sm-2 control-label\\\"\\u003E\";\nif (isExperiment) {\npug_html = pug_html + \"\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Label_Experiment_Budget')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Label_Budget')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"](popupIds.Budget, i18n.get('Label_Budget'), i18n);\n}\npug_html = pug_html + \"\\u003C\\u002Fh2\\u003E\\u003Cdiv class=\\\"col-sm-8\\\"\\u003E\\u003Cdiv class=\\\"budget-alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"budget\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C!-- ko if: isMixedDSACampaignRecommendation--\\u003E\\u003Cdiv class=\\\"dsa-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\";\nif (showLanguage && !IsCampaignMultipleLanguageEnabled) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Ch2 class=\\\"col-sm-2 control-label\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Campaign_Language')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"](popupIds.Language, i18n.get('Campaign_Language'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fh2\\u003E\\u003Cdiv class=\\\"col-sm-4 language-setting\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C!-- ko if: shouldShowSponsoredCampaignCashbackOptIn--\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-2 control-label\\\"\\u003E\\u003Cdiv class=\\\"checkbox\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput class=\\\"sponsored-campaign-cashback--switch\\\" type=\\\"checkbox\\\" data-bind=\\\"checked: isSponsoredCampaignCashbackOptedIn, disable: isSponsoredCampaignCashbackOptInReadonly\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Campaign_Enable_Cashback_Promotions_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003Cdiv class=\\\"bidding-strategy__container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (!isOppotunityCampaignLevel) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"location-targets\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (showLanguage && IsCampaignMultipleLanguageEnabled) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group language-container\\\"\\u003E\\u003Ch2 class=\\\"col-sm-2 control-label\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Campaign_Language')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"](popupIds.MultiLanguage, i18n.get('Campaign_Language'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fh2\\u003E\\u003Cdiv class=\\\"col-sm-8 language-setting\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group language-error-container\\\" data-bind=\\\"css: { hide: !languageError() }\\\"\\u003E\\u003Cdiv class=\\\"col-sm-2\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"error col-sm-8\\\" data-bind=\\\"text: languageError\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"rsa-auto-assets-setting-container\\\" data-bind=\\\"visible: hasRsaAutoAssets\\\"\\u003E\\u003Cdiv class=\\\"form-group rsa-auto-assets-setting-form-group\\\"\\u003E\\u003Ch2 class=\\\"col-sm-2 control-label\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('CampaignSetting_RsaAutoAssets_Name')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_RSA_AutoAssets', i18n.get('CampaignSetting_RsaAutoAssets_Name'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fh2\\u003E\\u003Cdiv class=\\\"col-sm-8 rsa-auto-assets-setting-panel\\\"\\u003E\\u003Cdiv class=\\\"rsa-auto-assets-switch-container\\\"\\u003E\\u003Clabel class=\\\"checkbox-inline\\\"\\u003E\\u003Cinput class=\\\"rsa-auto-assets-switch\\\" type=\\\"checkbox\\\" data-bind=\\\"checked: isRsaAutoAssetsSettingChecked\\\"\\u003E\\u003Cdiv class=\\\"text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('CampaignSetting_RsaAutoAssets_Enable')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"disclaimer__container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- ko if: isMixedDSACampaignCreate--\\u003E\\u003Cdiv class=\\\"mixed-mode-dsa-settings-container\\\"\\u003E\\u003Cdiv class=\\\"form-group mixed-mode-dsa-settings-form-group\\\"\\u003E\\u003Ch2 class=\\\"col-sm-2 control-label\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Campaign_Mixed_Mode_DSA_Settings_Name')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_DSA_DynamicSearchAds', i18n.get('Campaign_Mixed_Mode_DSA_Settings_Name'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fh2\\u003E\\u003Cdiv class=\\\"col-sm-8 mixed-model-dsa-settings-panel\\\"\\u003E\\u003Cdiv class=\\\"dsa-switch-container\\\"\\u003E\\u003Cdiv class=\\\"form-control-static description\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Campaign_Mixed_Mode_DSA_Settings_Text')) ? \"\" : pug_interp)) + \"\\u003Ca class=\\\"HelpTopic\\\" href=\\\"javascript:void(0);\\\" query=\\\"help:56794\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('LearnMoreLinkText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003Clabel class=\\\"checkbox-inline\\\"\\u003E\\u003Cinput class=\\\"dsa-switch\\\" type=\\\"checkbox\\\" data-bind=\\\"checked: isMixedModeDSASettingsChecked, enable: enableMixedModeDSASettings()\\\"\\u003E\\u003Cdiv class=\\\"text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('EnableMixedModeDSASettings')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"dsa-settings-container\\\" data-bind=\\\"visible: isMixedModeDSASettingsChecked\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C!-- ko if: shouldShowCashbackSettings--\\u003E\\u003Cdiv class=\\\"cashback-settings-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003Cdiv class=\\\"audienceSettings__container impression-tracking-urls\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"broad-only-setting-container\\\" data-bind=\\\"visible: hasBroadOnlySetting\\\"\\u003E\\u003Cdiv class=\\\"form-group broad-only-setting-form-group\\\"\\u003E\\u003Ch2 class=\\\"col-sm-2 control-label\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('CampaignSetting_BroadOnly_Title')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_RSA_EnableBroadOnly', i18n.get('CampaignSetting_BroadOnly_Title'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fh2\\u003E\\u003Cdiv class=\\\"col-sm-8 broad-only-setting-panel\\\"\\u003E\\u003Cdiv class=\\\"form-control-static description\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('CampaignSetting_BroadOnly_Description')) ? \"\" : pug_interp)) + \"\\u003Ca class=\\\"HelpTopic\\\" href=\\\"javascript:void(0);\\\" query=\\\"help:app54634\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('CampaignSetting_BroadOnly_LearnMore')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"broad-only-setting\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!--ko if: showVanityUrlSettings()--\\u003E\\u003Cdiv class=\\\"vanity-url-option\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"IsCampaignMultipleLanguageEnabled\" in locals_for_with?locals_for_with.IsCampaignMultipleLanguageEnabled:typeof IsCampaignMultipleLanguageEnabled!==\"undefined\"?IsCampaignMultipleLanguageEnabled:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isExperiment\" in locals_for_with?locals_for_with.isExperiment:typeof isExperiment!==\"undefined\"?isExperiment:undefined,\"isOppotunityCampaignLevel\" in locals_for_with?locals_for_with.isOppotunityCampaignLevel:typeof isOppotunityCampaignLevel!==\"undefined\"?isOppotunityCampaignLevel:undefined,\"isSignUpPage\" in locals_for_with?locals_for_with.isSignUpPage:typeof isSignUpPage!==\"undefined\"?isSignUpPage:undefined,\"popupIds\" in locals_for_with?locals_for_with.popupIds:typeof popupIds!==\"undefined\"?popupIds:undefined,\"showLanguage\" in locals_for_with?locals_for_with.showLanguage:typeof showLanguage!==\"undefined\"?showLanguage:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (appendLearnMoreLink, errId, i18n, isForVNext, isNegativeKeyword, popupIds, uuid) {pug_mixins[\"koErrors\"] = pug_interp = function(id, cssClass){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"class\", pug.classes([cssClass ? cssClass : 'alert alert-danger'], [true]), false, true)+\" data-bind=\\\"visible: errors().length > 0, foreach: errors, attr: {"aria-hidden": errors().length == 0}\\\"\"+pug.attr(\"id\", id ? id : 'KoErrors', true, true)) + \"\\u003E\\u003Cli\\u003E\\u003Cdiv data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_mixins[\"koValidationError\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"data-bind\", 'visible: !' + item + '.isValid(), foreach: ' + item + '.errors, attr: {\"aria-hidden\": ' + item + '.isValid()}', true, true)+pug.attr(\"id\", id ? id : item + 'ValidationError', true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003Cli role=\\\"presentation\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\nvar errorId = uuid.v4();\npug_mixins[\"keywordInput\"] = pug_interp = function(i18n, isNegativeKeyword){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar attributes = {};\nattributes.rows = isNegativeKeyword ? 10 : 18;\nif (!isNegativeKeyword) {\nattributes['aria-labelledby'] ='Keyword_EnterKeywords_Label';\nattributes['aria-describedby'] ='keyword_placeholder ' + 'Error-' + errorId;\nattributes['aria-required'] ='true'\n}\npug_html = pug_html + \"\\u003Ctextarea\" + (pug.attrs(pug.merge([{\"class\": \"keyword-textarea form-control\",\"data-bind\": \"textInput: keywordsTextareaVal, css: { error: !validate() && isAfterFirstInteraction() }, attr: { "aria-invalid": !validate() && isAfterFirstInteraction() }\",\"placeholder\": pug.escape((isNegativeKeyword ? '' : i18n.get('Keyword_Label_TextareaDefault')))},attributes]), true)) + \"\\u003E\\u003C\\u002Ftextarea\\u003E\";\n};\npug_mixins[\"keywordInputError\"] = pug_interp = function(errId){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"create-keywords-errors\\\"\\u003E\";\npug_mixins[\"koValidationError\"]('keywordsTextareaVal', 'Error-' + errorId);\npug_html = pug_html + \"\\u003Cdiv class=\\\"create-keywords-panel__errors\\\"\\u003E\";\npug_mixins[\"koErrors\"]();\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\nif (!isNegativeKeyword) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"row\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Clabel id=\\\"Keyword_EnterKeywords_Label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Keyword_Label_EnterKeywords')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"](popupIds.EnterKeywords, i18n.get('Keyword_Label_EnterKeywords'), i18n);\nif (isForVNext) {\npug_html = pug_html + \"\\u003Cp\\u003E\" + (null == (pug_interp = appendLearnMoreLink(i18n.get('Keyword_Label_MatchType'), 'app51021')) ? \"\" : pug_interp) + \"\\u003C\\u002Fp\\u003E\";\n}\npug_html = pug_html + \"\\u003C!--ko if: !keywordsTextareaVal()--\\u003E\\u003Clabel class=\\\"displayNone\\\" id=\\\"keyword_placeholder\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Keyword_Label_TextareaDefault')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C!--\\u002Fko--\\u003E\";\npug_mixins[\"keywordInput\"](i18n, isNegativeKeyword);\npug_mixins[\"keywordInputError\"](errId);\nif (!isForVNext) {\npug_html = pug_html + \"\\u003Cp\\u003E\" + (null == (pug_interp = appendLearnMoreLink(i18n.get('Keyword_Label_MatchType'), 'app51021')) ? \"\" : pug_interp) + \"\\u003C\\u002Fp\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"alert alert-warning form-group\\\" id=\\\"Keyword_Bmm_Warning_Div\\\" data-bind=\\\"visible: showBmmWarningAlert()\\\"\\u003E\\u003Cdiv class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert-info-inline\\\"\\u003E\" + (null == (pug_interp = appendLearnMoreLink(i18n.get('Keyword_Bmm_Warning'), 'app51021')) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert alert-warning form-group\\\" id=\\\"Keyword_Bmm_Warning_Div\\\" data-bind=\\\"visible: showMutableKeywordMatchTypAlert()\\\"\\u003E\\u003Cdiv class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert-info-inline\\\"\\u003E\" + (null == (pug_interp = appendLearnMoreLink(i18n.get('Keyword_Bmm_Match_Type_Mutate_Warning'), '', {}, 'https://help.ads.microsoft.com/#apex/bae/en/14053/1')) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert alert-danger form-group\\\" id=\\\"Keyword_Bmm_Block_Div\\\" data-bind=\\\"visible: showBmmBlockAlert()\\\"\\u003E\\u003Cdiv class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert-info-inline\\\"\\u003E\" + (null == (pug_interp = appendLearnMoreLink(i18n.get('Keyword_Bmm_Block'), 'app51021')) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_mixins[\"keywordInput\"](i18n, isNegativeKeyword);\npug_mixins[\"keywordInputError\"](errId);\n}}.call(this,\"appendLearnMoreLink\" in locals_for_with?locals_for_with.appendLearnMoreLink:typeof appendLearnMoreLink!==\"undefined\"?appendLearnMoreLink:undefined,\"errId\" in locals_for_with?locals_for_with.errId:typeof errId!==\"undefined\"?errId:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isForVNext\" in locals_for_with?locals_for_with.isForVNext:typeof isForVNext!==\"undefined\"?isForVNext:undefined,\"isNegativeKeyword\" in locals_for_with?locals_for_with.isNegativeKeyword:typeof isNegativeKeyword!==\"undefined\"?isNegativeKeyword:undefined,\"popupIds\" in locals_for_with?locals_for_with.popupIds:typeof popupIds!==\"undefined\"?popupIds:undefined,\"uuid\" in locals_for_with?locals_for_with.uuid:typeof uuid!==\"undefined\"?uuid:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, isSignUp, popupIds, showOnlyKeywords) {pug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_mixins[\"koCharactersRemaining\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"remaining-hint help-block\\\"\\u003E\\u003Cspan\" + (pug.attr(\"data-bind\", 'text:' + item + '.char_rem', true, true)+pug.attr(\"id\", id ? id : item + '_CharactersRemaining', true, true)+\" role=\\\"status\\\" aria-live=\\\"polite\\\"\") + \"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"koErrors\"] = pug_interp = function(id, cssClass){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"class\", pug.classes([cssClass ? cssClass : 'alert alert-danger'], [true]), false, true)+\" data-bind=\\\"visible: errors().length > 0, foreach: errors, attr: {"aria-hidden": errors().length == 0}\\\"\"+pug.attr(\"id\", id ? id : 'KoErrors', true, true)) + \"\\u003E\\u003Cli\\u003E\\u003Cdiv data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_mixins[\"koValidationError\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"data-bind\", 'visible: !' + item + '.isValid(), foreach: ' + item + '.errors, attr: {\"aria-hidden\": ' + item + '.isValid()}', true, true)+pug.attr(\"id\", id ? id : item + 'ValidationError', true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003Cli role=\\\"presentation\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\nif (!showOnlyKeywords) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"col-sm-10 row\\\"\\u003E\";\npug_mixins[\"koErrors\"]();\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"row\\\"\\u003E\\u003Cdiv class=\\\"col-sm-10 pull-left\\\"\\u003E\\u003Clabel class=\\\"ad-group-list__col-sm-1__label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('AdGroup_Label_Name')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"](popupIds.AdGroupName, i18n.get('AdGroup_Label_Name'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"row\\\"\\u003E\\u003Cdiv class=\\\"col-sm-4 pull-left\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cinput\" + (\" class=\\\"form-control name\\\"\"+\" type=\\\"text\\\" data-bind=\\\"textInput: Name, css: {"error": !Name.isValid()}\\\"\"+pug.attr(\"placeholder\", i18n.get('AdGroup_NamePlaceholder'), true, true)+\" aria-describedby=\\\"Name_CharactersRemaining\\\"\") + \"\\u003E\";\npug_mixins[\"koCharactersRemaining\"]('Name');\npug_mixins[\"koValidationError\"]('Name');\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"ads-section__container container-fluid\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"add-keywords-root row\\\"\\u003E\\u003Cdiv class=\\\"col-sm-4\\\"\\u003E\\u003Cdiv class=\\\"parser\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (!isSignUp) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"col-sm-1\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"keyword-planner-root\",\"container-fluid\",isSignUp ? 'col-sm-4' : 'col-sm-6'], [false,false,true]), false, true)+\" data-bind=\\\"visible: showKeywordPlanner\\\"\") + \"\\u003E\\u003Cdiv class=\\\"keyword-planner-container container-fluid\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isSignUp\" in locals_for_with?locals_for_with.isSignUp:typeof isSignUp!==\"undefined\"?isSignUp:undefined,\"popupIds\" in locals_for_with?locals_for_with.popupIds:typeof popupIds!==\"undefined\"?popupIds:undefined,\"showOnlyKeywords\" in locals_for_with?locals_for_with.showOnlyKeywords:typeof showOnlyKeywords!==\"undefined\"?showOnlyKeywords:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, isDomesticSimplifiedChineseEnabled, popupIds) {pug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_mixins[\"koValidationError\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"data-bind\", 'visible: !' + item + '.isValid(), foreach: ' + item + '.errors, attr: {\"aria-hidden\": ' + item + '.isValid()}', true, true)+pug.attr(\"id\", id ? id : item + 'ValidationError', true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003Cli role=\\\"presentation\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Ch5 class=\\\"col-sm-2 control-label\\\"\\u003E\\u003Clabel id=\\\"Campaign_DomainName_Label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Campaign_Settings_DomainName')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_CampaignCreate_Settings_DSAWebsite', i18n.getString('Campaign_Settings_DomainName'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fh5\\u003E\\u003Cdiv class=\\\"col-sm-4\\\"\\u003E\\u003Cinput class=\\\"dsa-domainname-input form-control\\\" data-bind=\\\"value:DomainName, disable: disabled\\\" aria-describedby=\\\"Campaign_Website_Tip\\\" aria-labelledby=\\\"Campaign_DomainName_Label\\\"\\u003E\";\npug_mixins[\"koValidationError\"]('DomainName');\npug_html = pug_html + \"\\u003Cdiv class=\\\"pull-left form-hint\\\" id=\\\"Campaign_Website_Tip\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Dsa_Campaign_Website_Tip')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Ch5 class=\\\"col-sm-2 control-label\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Campaign_Settings_DomainLanguage_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_CampaignCreate_Settings_WebsiteLanguage', i18n.getString('Campaign_Settings_DomainLanguage_Label'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fh5\\u003E\";\nif (isDomesticSimplifiedChineseEnabled) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"col-sm-4\\\"\\u003E\\u003Cdiv class=\\\"form-control-static website-language-setting\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Language_SimplifiedChinese')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"col-sm-4\\\"\\u003E\\u003Cdiv class=\\\"form-control-static website-language-setting\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Language_English')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C!--ko if: isTargetingSourceEnabled--\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Ch5 class=\\\"col-sm-2 control-label\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Campaign_TargetingSource')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"](popupIds.TargetingSource, i18n.getString('Campaign_TargetingSource'), i18n);\npug_html = pug_html + (\"\\u003C\\u002Fh5\\u003E\\u003Cdiv class=\\\"col-sm-10 dsa-targeting-source\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C!--ko if: isDynamicDescriptionPhase1Enabled--\\u003E\\u003Clabel class=\\\"checkbox-inline\\\"\\u003E\\u003Cinput class=\\\"dynamic-description-switch\\\" type=\\\"checkbox\\\" data-bind=\\\"checked: isDynamicDescriptionChecked\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('DynamicDescriptionEnabled')) ? \"\" : pug_interp)));\npug_mixins[\"popupHelp\"]('pop_BA_DSA_DynamicDescriptions', i18n.getString('DynamicDescriptionEnabled'), i18n);\npug_html = pug_html + \"\\u003C\\u002Flabel\\u003E\\u003C!-- \\u002Fko--\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isDomesticSimplifiedChineseEnabled\" in locals_for_with?locals_for_with.isDomesticSimplifiedChineseEnabled:typeof isDomesticSimplifiedChineseEnabled!==\"undefined\"?isDomesticSimplifiedChineseEnabled:undefined,\"popupIds\" in locals_for_with?locals_for_with.popupIds:typeof popupIds!==\"undefined\"?popupIds:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n) {pug_html = pug_html + \"\\u003Cform class=\\\"bulk-appeal\\\" id=\\\"bulkAppealForm\\\" style=\\\"display: none;\\\"\\u003E\\u003Cdiv class=\\\"panel\\\"\\u003E\\u003Cdiv class=\\\"panel-heading\\\" role=\\\"heading\\\" aria-level=\\\"2\\\"\\u003E\\u003Cdiv class=\\\"panel-title\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('AppealExceptionButton')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-body\\\"\\u003E\\u003Cdiv class=\\\"editor\\\" id=\\\"bulkAppealContainer\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-footer\\\"\\u003E\\u003Cinput\" + (\" class=\\\"button btn btn-primary appeal\\\"\"+\" id=\\\"bulkAppealButton\\\" type=\\\"button\\\"\"+pug.attr(\"value\", i18n.get('AppealExceptionButton'), true, true)) + \"\\u003E\\u003Cinput\" + (\" class=\\\"button btn btn-default cancel\\\"\"+\" id=\\\"bulkCancelButton\\\" type=\\\"button\\\"\"+pug.attr(\"value\", i18n.get('Cancel'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fform\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, rowId) {pug_html = pug_html + \"\\u003Cdiv class=\\\"appeal-button-panel\\\"\\u003E\\u003Cinput\" + (\" class=\\\"button button-highlighted btn btn-primary appeal\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"data-rowid\", rowId, true, true)+pug.attr(\"id\", 'CreateInlineAppeal_' + rowId, true, true)+pug.attr(\"value\", i18n.get('AppealExceptionButton'), true, true)) + \"\\u003E\\u003Cinput\" + (\" class=\\\"cancel-btn btn btn-default cancel\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"data-rowid\", rowId, true, true)+pug.attr(\"id\", 'CancelInlineAppeal_' + rowId, true, true)+pug.attr(\"value\", i18n.get('BulkEdit_CancelButton'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"rowId\" in locals_for_with?locals_for_with.rowId:typeof rowId!==\"undefined\"?rowId:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, rowId) {pug_html = pug_html + \"\\u003Cdiv\\u003E\\u003Cinput\" + (\" class=\\\"appeal-button-panel btn btn-primary cancel\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"data-rowid\", rowId, true, true)+pug.attr(\"id\", 'CancelInlineAppeal_' + rowId, true, true)+pug.attr(\"value\", i18n.get('BulkEdit_CancelButton'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"rowId\" in locals_for_with?locals_for_with.rowId:typeof rowId!==\"undefined\"?rowId:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (controlId, i18n, infoMsg, isForVNext) {pug_mixins[\"koError\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"data-bind\", 'if: ' + item + '().length > 0, attr: {\"aria-hidden\": ' + item + '().length == 0}', true, true)+pug.attr(\"id\", id ? id : item, true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003Cdiv\" + (\" class=\\\"error\\\"\"+pug.attr(\"data-bind\", 'html: ' + item, true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"koCharactersRemaining\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"remaining-hint help-block\\\"\\u003E\\u003Cspan\" + (pug.attr(\"data-bind\", 'text:' + item + '.char_rem', true, true)+pug.attr(\"id\", id ? id : item + '_CharactersRemaining', true, true)+\" role=\\\"status\\\" aria-live=\\\"polite\\\"\") + \"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv\" + (\" class=\\\"form-horizontal panel\\\"\"+pug.attr(\"id\", 'EditorialAppeal_Full_' + controlId, true, true)) + \"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv\" + (\" class=\\\"col-sm-offset-2 col-sm-10 ad-info\\\"\"+pug.attr(\"id\", 'EditorialAppeal_' + controlId + '_AdInfo', true, true)) + \"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('EditorialAppeal_AdsSummaryText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cul class=\\\"appeal-adinfo\\\"\\u003E\\u003Cli class=\\\"appeal-adinfo-item\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('EditorialAppeal_AdsItem1')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fli\\u003E\\u003Cli class=\\\"appeal-adinfo-item\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('EditorialAppeal_AdsItem2')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (\" class=\\\"col-sm-offset-2 col-sm-10 clearfix root\\\"\"+pug.attr(\"id\", 'EditorialAppeal_' + controlId, true, true)) + \"\\u003E\\u003Clabel\\u003E\\u003Cinput\" + (\" class=\\\"select\\\"\"+pug.attr(\"id\", 'EditorialAppeal_' + controlId + '_Select', true, true)+\" type=\\\"checkbox\\\" data-bind=\\\"checked: appealed, visible: appealedVisible\\\"\") + \"\\u003E\\u003Cspan\" + (\" class=\\\"title\\\"\"+pug.attr(\"id\", 'EditorialAppeal_' + controlId + '_Title', true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('EditorialAppeal_AppealTitle')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Flabel\\u003E\\u003Cdiv\" + (\" class=\\\"row details\\\"\"+pug.attr(\"id\", 'EditorialAppeal_' + controlId + '_Details', true, true)+\" data-bind=\\\"visible: appealed\\\"\") + \"\\u003E\\u003Cdiv class=\\\"col-sm-4\\\"\\u003E\\u003Cdiv class=\\\"appeal-column-title\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('EditorialAppeal_RejectionReasons')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (\" class=\\\"reasons\\\"\"+pug.attr(\"id\", 'EditorialAppeal_' + controlId + '_Reasons', true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-8\\\" data-bind=\\\"visible: justificationPanelVisible\\\"\\u003E\\u003Cdiv class=\\\"appeal-column-title\\\" id=\\\"editorial-appeal-jusification-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('EditorialAppeal_Justification')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Ctextarea\" + (\" class=\\\"appeal-textarea justification\\\"\"+\" cols=\\\"36\\\"\"+pug.attr(\"id\", 'EditorialAppeal_' + controlId + '_Justification', true, true)+pug.attr(\"name\", 'EditorialAppeal_' + controlId + '_Justification', true, true)+\" maxlength=\\\"1000\\\" rows=\\\"4\\\" aria-labelledby=\\\"editorial-appeal-jusification-label\\\" data-bind=\\\"textInput: justification, css: { required: appealed }\\\"\") + \"\\u003E\\u003C\\u002Ftextarea\\u003E\";\nif (isForVNext) {\npug_mixins[\"koCharactersRemaining\"]('justification');\npug_mixins[\"koError\"]('justification.errors');\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (infoMsg) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\";\nif (isForVNext) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"alert alert-info\\\"\\u003E\\u003Cdiv class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert-info-inline\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = infoMsg) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cspan class=\\\"infomark spritedimage\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = infoMsg) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"controlId\" in locals_for_with?locals_for_with.controlId:typeof controlId!==\"undefined\"?controlId:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"infoMsg\" in locals_for_with?locals_for_with.infoMsg:typeof infoMsg!==\"undefined\"?infoMsg:undefined,\"isForVNext\" in locals_for_with?locals_for_with.isForVNext:typeof isForVNext!==\"undefined\"?isForVNext:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, rowId, useKwCss) {pug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([useKwCss ? 'appeal-kw-details' : ''], [true]), false, true)+pug.attr(\"id\", 'InlineAppealError_' + rowId, true, true)) + \"\\u003E\\u003Ctable class=\\\"budgeterror-table\\\" cellpadding=\\\"0\\\" cellspacing=\\\"0\\\" border=\\\"0\\\"\\u003E\\u003Ctr\\u003E\\u003Ctd class=\\\"budget-errorstatus-column\\\"\\u003E\\u003Cdiv class=\\\"status_error\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Ftd\\u003E\\u003Ctd class=\\\"budget-errortext-column\\\"\\u003E\\u003Cdiv class=\\\"budget-error-text\\\" id=\\\"errorText\\\" role=\\\"alert\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('NoRejectionReasonFound')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cbr\\u003E\\u003Cinput\" + (\" class=\\\"button button-highlighted btn btn-primary cancel\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", i18n.get('BulkEdit_CancelButton'), true, true)+pug.attr(\"id\", 'CancelInlineAppeal_' + rowId, true, true)+pug.attr(\"data-rowid\", rowId, true, true)) + \"\\u003E\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Ftable\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"rowId\" in locals_for_with?locals_for_with.rowId:typeof rowId!==\"undefined\"?rowId:undefined,\"useKwCss\" in locals_for_with?locals_for_with.useKwCss:typeof useKwCss!==\"undefined\"?useKwCss:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (rowId) {pug_html = pug_html + \"\\u003Cform\" + (\" class=\\\"inline\\\"\"+pug.attr(\"id\", 'inlineAppealForm_' + rowId, true, true)+pug.attr(\"data-rowid\", rowId, true, true)) + \"\\u003E\\u003C\\u002Fform\\u003E\";}.call(this,\"rowId\" in locals_for_with?locals_for_with.rowId:typeof rowId!==\"undefined\"?rowId:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n) {pug_html = pug_html + \"\\u003Cdiv class=\\\"non-appeal-msg-panel form-group\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('EditorialNotAppealableMessage')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (reasons) {pug_html = pug_html + \"\\u003Cul\\u003E\";\n// iterate reasons\n;(function(){\n var $$obj = reasons;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var reason = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cli\\u003E\" + (null == (pug_interp = reason) ? \"\" : pug_interp) + \"\\u003C\\u002Fli\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var reason = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cli\\u003E\" + (null == (pug_interp = reason) ? \"\" : pug_interp) + \"\\u003C\\u002Fli\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Ful\\u003E\";}.call(this,\"reasons\" in locals_for_with?locals_for_with.reasons:typeof reasons!==\"undefined\"?reasons:undefined));;return pug_html;};\nmodule.exports = template;"],"names":["permissions","config","get","Text","_","AppInstall","DynamicSearch","Product","expandedTextFields","IsVanityUrlEnabled","push","IsExpandedTextAdV2Enabled","ExpandedText","responsiveSearchFields","ResponsiveSearch","Responsive","i18n","window","globalLegacyI18n","adGroupTypeEnum","adTypeEnum","defaultAdType","campaignTypes","search","shopping","audience","hotel","_ref","isRSAAsDefaultTypeEnabled","campaignAdTypesMapping","_ref2","appInstallAdsAllowed","isSTADisabled","isForVNext","base","pageContext","Permissions","IsMultiMediaAdsEnabled","IsAdultAdsEnabled","IsDomesticSimplifiedChineseEnabled","dynamic","MMAForCN","IsWhiteListEXTAEnabled","unshift","IsResponsiveAdForSSCEnabled","campaignSubTypeAdTypesMapping","ViewModel","_createClass","_this","_ref3","arguments","length","undefined","_ref3$model","model","_ref3$campaignId","campaignId","_ref3$adGroupId","adGroupId","_ref3$adGroupType","adGroupType","_ref3$campaignType","campaignType","_ref3$campaignSubType","campaignSubType","_ref3$isFeedBasedCamp","isFeedBasedCampaign","_ref3$showInline","showInline","_ref3$appInstallAdsAl","_ref3$campaignDomain","campaignDomain","_ref3$isDynamicDescri","isDynamicDescriptionEnabled","_ref3$isMigratingToEX","isMigratingToEXTA","_ref3$isSTADisabled","_ref3$isRSAAsDefaultT","_ref3$isResponsiveAdE","isResponsiveAdEnabled","_ref3$isMMAInDSAEnabl","isMMAInDSAEnabled","_ref3$isForVNext","_ref3$adsCountMap","adsCountMap","_ref3$isAdgroupCreati","isAdgroupCreation","_ref3$selectedAdForma","selectedAdFormat","_classCallCheck","this","ko","scope","scenario","hasWebsiteImageOptedInObservable","type","Type","koSchema","properties","Ad","availableAdTypes","getAvailableAdTypes","adTypesRegisterForLanguageChange","adTypeOptions","adTypes","isSmartShoppingCampaign","ShoppingSmartAds","getTypesFromExistingModel","adType","concat","isDynamicAdGroupAdCreation","getDynamicSearchAdTypes","Name","Value","showAdType","showAdTypeWithErrors","errors","isAppealable","disableAdType","showMigrationAlertForEXTA","showMigrationAlertForSTA","showSTAEndWarning","isDisplayPlusNativeEdit","isAudienceCampaign","isAudienceNativeAdsCampaign","DisplayPlusEdit","setClarityTag","IsDisplayPlusAudienceNative","CampaignSubType","containerClass","hideFooter","AdFormat","Display","Video","showAdFormatOptions","MultiAdFormat","key","value","_this2","checkCampaignSubType","IsSmartShoppingCampaignEnabled","extend","schema","viewModel","isTraditionalChinese","keys","maxLength","traditionalChineseMaxLength","getFields","options","opt2fields","original","include","exclude","applyFieldRules","isNativeAdsEnabled","_default","_ref$model","_ref$isNativeAdsEnabl","_ref$isTraditionalChi","upgradedUrlFields","TextAd","NativePreference","dynamicTextExtension","isFinal","url","mobileUrl","maxLengthExtension","showNativeAdPreview","isNativePreference","defaultPreviewType","DevicePreference","isMobile","DisclaimerPopUpView","_Backbone$View","_callSuper","_inherits","$el","html","template","Backbone","IsDisclaimerAdsEnabled","Panel","_ref2$adType","result","IsDisclaimerPopupHintVisible","showDisclaimer","disclaimer","$","empty","append","render","el","_ref$tabs","tabs","selectedPanel","tabGroups","tab","name","title","tabGroup","AdsPreviewContainer","_ref2$tabs","subTab","panels","apply","uuid","panel","target","selected","currentTarget","dataset","adViewModel","Title","DisplayUrl","DestinationUrl","previewModel","tokenisersWithSpaces","tokenisersWithNoSpaces","longAdTitleDetails","generateTitleUsingDisplayUrl","displayUrl","details","trim","displayUrlInTitle","replace","firstSlashIndex","indexOf","substring","newTitle","AdTitleWithDisplayUrlMaxLimit","description","results","isLongAdTitle","resultDescription","resultTitle","maxLimit","AdTitleWithDescriptionMaxLimit","originalLength","inputChars","split","startPosition","i","character","charCodeAt","toString","generateTitleUsingDescription","previewTitleAndText","longAdTitle","PreviewContainer","contentClass","top","topTemplate","LongAdTitleDecorator","PreviewViewModel","sidebar","sidebarTemplate","mobile","mobileTemplate","MobileDecorator","native","nativeTemplate","View","_ref$placeholders","placeholders","_ref$showOnlyFinalUrl","showOnlyFinalUrl","_ref$api","api","_ref$editMode","editMode","_ref$urlOptionsEnable","urlOptionsEnabled","_ref$defaultLandingPa","defaultLandingPageUrl","_ref$placeholderEnabl","placeholderEnabled","_ref$ariaPrefix","ariaPrefix","defaultOptions","isMobilePreferred","entityType","landingPageUrlRequired","highLightModeInError","isFinalUrl","FinalUrls","MobileFinalUrls","upgradedUrlView","UpgradedUrl","finalMobileUrl","trackingTemplate","customParameters","UrlCustomParameters","on","urlInputChanged","mobileUrlChanged","isValid","getValues","finalUrl","event","devicePreferenceChanged","arrayEmptyValue","stringEmptyValue","uulModel","toObject","TrackingUrlTemplate","errorObject","handleApiErrors","clearApiErrors","TextAdEditor","_ref$showAdType","_ref$showInline","editorTemplate","previewContainer","previewBuilder","initPreviewTab","mode","upgradedUrlValid","validate","error","property","add","clear","isCampaignApiError","appPlatformKeys","previewTabItems","Mobile","Tablet","_ref$appLookupDisable","appLookupDisabled","_ref$developerName","developerName","activityLogger","tabItems","schemaFields","schemaMapper","customValidations","AppStoreId","AppPlatform","test","message","fields","AppInstallAd","appPlatformsEnum","enum","appPlatforms","appSelected","previewType","manualApp","AltText","MediaUrl","appIdPlaceholderText","appIdName","appStoreIdPlaceholderText","adTitlePreview","appStorePreview","appStoreName","adTextPreview","previewUrl","field","logChange","signal","subscribe","AppInstallAdEditor","_ref$isForVNext","appeal","applookupRendered","applookupView","focusLockAppLookupPopupEditor","applookupLoggingInformation","handleCreated","handleCancel","tmpl","finalUrlSuffix","showUurlTestTool","isHorizontal","popupHelpKeyAdLandingPage","popupHelpKeyAdTrackTemplate","popupHelpKeyAdParameters","fn","originalView","trigger","uurlControl","find","hide","text","css","closest","showPopover","$popoverContainer","flag","tempEl","popover","container","placement","popoverTemplate","content","AppLookupView","appPlatform","FocusLockAppLookupPopupEditor","focusLockInstanceDecorator","onExit","removePopover","focusFirstItemOnMount","managed","popoverExtender","decorate","excludeCb","clickCb","hiddenCb","open","data","setSelectedApp","clearApp","remove","$container","e","$target","clikedInsideControl","hasClass","parents","children","newTop","height","Boolean","AppTitle","IconUrl","DeviceType","DeveloperName","urlEditor","ko_model","fullUrl","AppUrl","ApplookupLoggingInformation","_this3","validateViewModel","prev","next","errorMessages","landingPageUrlErrorMessages","_this4","logAppLookupInformation","actionName","instrumentation","logMessage","constants","LOGCATEGORY","TRACE","LOGLEVEL","INFO","_ref$useUpgradedUrl","useUpgradedUrl","_ref$scope","_toConsumableArray","customValidation","Path2","DynamicSearchAd","domain","getDomain","protocol","URI","isAllowDisclaimer","disclaimerInfo","computeDisclaimerAsync","extensionsSharedRepos","SharedRepository","DisclaimerAdExtension","afterChangeComitted","disclaimerCampaignId","Number","CurrentCampaign","Id","adDisclaimerHint","DisclaimerLayout","getString","Path1","lengthExtensionProperties","IsIffCountdownForDSAEnabled","parsedTextMaxLengthExtension","params","queryParameters","entitySet","edmCampaign","currentAccount","Campaigns","bypassCache","jsDataCampaign","Campaign","then","CampaignSettings","setting","Object","create","association","findAll","where","disclaimerdata","i18nAdCustomizers","IsNewAdsAdCustomizerEditorEnabled","IsIfFunctionMilestone1Enabled","withNewAdCustomizerEditor","evaluateAdCustomizers","newEvaluateAdCustomizers","deps","countdownI18nDummy","i18nDummy","legacyEvaluateAdCustomizers","self","fieldName","createField","textPart1","ParsedText","textPart2","ParsedTextPart2","slice","combineText","combinedUrl","addPath","path","DisclaimerLineText","LineText","ShowDisclaimer","DisclaimerFinalUrl","IsAdditionalLineLayout","IsPopupLayout","DisclaimerPopHint","DisclaimerPopupText","PopupText","dependency","picker","clickedAway","keydown","preventDefault","keyup","activateNextItem","activatePrevItem","pickActiveItem","off","DatePicker","observable","datePickerTemplate","parameters","culture","format","min","Date","animation","footer","elementDatePicker","kendoDatePicker","datePicker","click","bind","kendo","addClass","date","pattern","time","days","minimum","maximum","isGlobal","language","getSupportedLanguages","required","placeholder","label","control","validators","showLabel","range","valueMessages","true","timeZoneMapper","getTimeZoneText","false","prepareTemplate","syntax","func","formatCountdown","prefix","suffix","ret","editor","enableAdCustomizersHelpers","view","customizableFields","nameAttrs","element","updateAction","remainingCountCallBack","perfMarker","newAttachAdCustomizersHelpers","dynamicAttachAdCustomizersHelpers","remaining","fieldsWithLabel","labels","DynamicSearchAdEditor","allowDisclaimerAds","urlOptions","UrlOptions","smallContainer","buildPreview","enableAdCustomizersHelpersForDSA","getTrackingTemplate","getUrlCustomParameters","FinalUrlSuffix","getFinalUrlSuffix","IsExpandedDsaPhase2Enabled","KoSchema","ProductAd","response","getODataErrors","_ref$isVanityUrlEnabl","isVanityUrlEnabled","_ref$IsExpandedTextAd","lengthCheckFields","ExpandedTextAd","getFinalUrlDomain","errorMessage","fieldsWithPlaceHolder","IsEXTAMigrationNotificationEnabled","fieldMapping","IsNativeAdsAllowed","isNativeAdsRebrandingEnabled","IsNativeAdsRebrandingEnabled","createChild","finalUrlEditor","UrlEditor","ariaLabelledby","ariaId","mobileUrlEditor","hasErrors","domainWatermark","attr","previewViewModel","enableAdCustomizersHelpersForEXTA","regex","TextPart2","legacyInstru","nullableStringFields","prop","title1","TitlePart1","title2","TitlePart2","title3","TitlePart3","parsedErrors","memo","isCampaignEditorialError","disapproved","isTitle1HaveErrors","isTitle2HaveErrors","code","disapprovedText","isTitle3HaveErrors","returnError","CampaignEditorialError","text1","text2","isText1HaveErrors","isText2HaveErrors","errorFields","ResponsiveSearchAd","getFormattedField","filter","map","PinnedField","headlineFields","descriptionFields","placeHolders","descriptions","descriptionText","getDescPreview","combineDescriptions","Description1","Description2","headlines","headlinesText","getTitlePreview","Headline1","Headline2","Headline3","join","getExpandedTextAdDisplayUrl","ParsedPath1","ParsedPath2","_ref$inlineSuggestion","inlineSuggestionsEnabled","_ref$showLightbulb","showLightbulb","_ref$isImproveRSA","isImproveRSA","_ref$accountId","accountId","headlinesView","HeadlinesView","Headlines","descriptionsView","DescriptionsView","Descriptions","adStrengthContainer","adId","ResponsiveSearchAdStrengthView","edm","jsdata","appState","token","Token","odataPath","BingAdsAdInsightWebApiUri","buildAdStrength","editorHeadlineDescriptionOnlyTemplate","rv","enableAIGenAssetContextualAttribute","enableAdCustomizersHelpersForRSA","_superPropGet","attachAIGenAssetContextualAttribute","isAIGeneratedAsset","inlineErrorFields","_len","args","Array","_key","onPreviewImageChanged","imageUrl","setPreviewImageCallback","onImageExtensionChanged","changes","showImgExtWithoutAdGroupID","onCachedImageExtensionChanged","cachedImageExtensionChanges","timeZone","serverContext","_ref$logActivity","logActivity","externalCachedImageExtensionChanges","_ref$showImgExtWithou","preferenceService","ad","cloneDeep","showInitialErrors","cachedAd","apiErrors","RSAImageExtInAdGroupCreation","adStrengthRepository","AdStrengthRepository","autoEnd","returnSuggestionIds","applySuggestionIds","viewSuggestionIds","logAppliedSuggestionsFunc","assetLibraryEventHandler","clickViewIdeas","enableRSAExpansion","RSAImageExtInCampaignCreation","cid","AdvertiserCustomerID","aid","adContext","advertiserCustomerId","imageExtRepository","Repository","globalLegacySchema","summaryDataContextManager","updateContext","createRequestFactory","legacyI18n","mergeI18n","newI18n","theme","oDataConfig","odataRootUrl","odataToken","current","added","removed","updated","maxImageExtensionsPerAdGroup","AdExtension","MaxSelectedImagesPerAdGroupOrCampaignForV2","dateFormat","eventHandler","fetchAdStrengthV2","IsDisclaimerForRSAEnabled","hasDisclaimer","disclaimerData","Promise","targetError","focusableElements","getTabbableNodes","focus","incomplete","errorField","JSON","stringify","formatRSAObject","_this$apiErrors","Property","Message","Code","isSaving","isCanceling","_this5","onFirstErrorHandler","_objectSpread","ReactDOM","_jsx","ThemeProvider","InstrumentationContext","Provider","PreferenceContext","PreferenceService","I18nContext","ResponsiveSearchAdEditor","item","onChanged","onFetchAdStrengthV2","onFetchDisclaimerInfo","fetchDisclaimerInfo","showActionBar","triggerTestUurl","showFinalUrlSuffix","showAdCustomizers","showDynamicTextExtention","isForVnext","updateSuggestionMeasurement","saveLogAppliedSuggestionsFunc","saveAssetLibraryEventHandler","renderImageExtension","injectSetPreviewImage","cb","_ref4","_msgsArr","_ref4$scope","currentItems","createdExtModels","removedExtModels","updatedExtModels","createdImageExtensionsIds","removedImageExtensionsIds","updatedImageExtensionsIds","ext","msgsArr","hasDisabledImages","usedImagesSources","previousExistingImgExtsCount","disabled","source","val","_ref5","_this6","defaultParams","adGroupName","campaignName","saveImgsExtPerfMarker","willInit","createImageExtensionsPromise","extension","newExtensions","newExtIds","index","deletePromise","destroyAll","id","in","updatePromise","update","updateAll","done","catch","err","pageName","_TL_","notificationApi","showWarning","page","finally","logImageExtensionUpdates","extraInfo","imagePathFromConfig","ImageExtensionsPane","dataModelUtil","imagePath","adCreatorScenario","instrumentationScenarios","RSA","isAADUser","IsAADUser","_ref$biddingStrategyT","biddingStrategyType","triggerCancel","triggerClose","handleSave","isMultiAdFormatAd","resetFields","serverErrors","allowedVideoTypes","savedAdVideo","Videos","getVideoAdModel","verifiedTrackingSetting","getVerifiedTrackingSettings","biddingScheme","getBiddingScheme","directBiddingStrategyType","campaignSettings","getCampaignSettings","getCampaignSubType","isXandrServingCampaign","isXandrServing","savedAdModel","isDirty","ImpressionTrackingUrls","video","newVideoFromGridObject","uid","Math","random","currentPageIndex","updatedAdModel","oDataToken","oDataPath","_ref2$directBiddingSt","videos","parsedVideos","includes","Asset","SubType","ads","clearFields","ScopeContext","values","Scenario","Activity","ServerContext","PermissionsContext","AdEditor","onAdsValidation","adsModel","onCancel","cancel","onSave","onSaveAndCreateAnother","image","imageRepository","ImageRepository","Images","imageAsset","isLoading","imagePromise","getImageByIdAsync","IdString","imgObjMT","imageObject","newImageFromMTObject","imageSources","Existing","croppedImagePlacements","getAutoCroppedImages","originalImageToCrop","isMultimediaAd","isMultimediaAdinMSANEnabled","imageOption","defaultImageOption","aspectRatioOption","defaultAspectRatioOption","isDisplayAds","imageData","imagePlacementsToImage","crops","TargetWidth","TargetHeight","CropWidth","CropHeight","CropX","CropY","updateGrid","saveAds","campaign","adGroup","activity","UiBlocker","blocking","loadingText","classes","blockUiContainer","blockerIndicator","style","isLoadingImage","parentRemove","components","ComponentSettings","core","ThemeFluent","EditDisplayAdWizard","gridData","DisplayPlusNativeForm","withRecommendationContext","props","onDataChange","setAds","supportImageFitting","useContext","didServerReturnErrors","useMemo","onValidate","useCallback","dataPatch","ActuationGroup","actuationProps","isActive","AttentionBeaconGroup","FormErrorGroup","formErrorProps","showAllValidationErrors","_jsxs","ValidationGroup","validationProps","AssetGroup","className","UnmappedFormErrors","DisplayPlusNativeAds","DisplayPlusNative","mtData","isCleaning","onCleaningComplete","_useState","useState","AdGroup","convertFromAdModel","modelToViewModel","_useState2","_slicedToArray","setData","_useState3","_useState4","setBiddingScheme","isBoostCampaign","DisplayPlusAmplify","IsAmplifyEnabled","useEffect","isLegacyResponsiveAd","LegacyResponsiveAd","getMultiImagesFromMTAssetsAsync","odata","images","idString","prevData","ImageList","Customers","$withKey","Accounts","select","toPromise","getCampaignBiddingScheme","BiddingScheme","_Fragment","saveFailed","getODataConfig","imageOdata","ImageOData","translateHotspots","isVideoAsAnAssetEnabled","VideoAsAnAsset","isImageFittingEnabled","HotSpots","hotspots","hotspot","glyph","Glyph","actionText","ActionText","assetSource","AssetSource","desc","Description","Placement","uri","Uri","oldAdsModel","saveAdsWithMetadata","buildSaveAdsPayload","onSaveAdsSuccess","onSaveAdsFailed","onSaveAdsFinally","setSavingState","saveAdAction","PerformanceMarkerContext","lengthExceededErrorCodes","i18nGlobal","adTypeMapper","TextAdView","AppInstallAdView","DynamicSearchAdView","ProductAdView","ExpandedTextAdView","ResponsiveAdView","adTypeSchema","dynamicSearch","appInstall","product","expandedText","responsive","responsiveSearch","_ref$externalCachedIm","_ref$campaignId","_ref$adGroupId","_ref$adGroupType","_ref$campaignType","_ref$campaignSubType","_ref$isFeedBasedCampa","_ref$isSaveToServer","isSaveToServer","_ref$showSaveAndCreat","showSaveAndCreateAnother","_ref$appInstallAdsAll","IsUserAppInstallAdsAllowed","_ref$isSTADisabled","IsSTADisabled","_ref$isRSAAsDefaultTy","IsRSAAsDefaultType","_ref$isResponsiveAdEn","IsAIMCampaignEnabled","_ref$isMultiMediaAdsE","isMultiMediaAdsEnabled","_ref$isMMAInDSAEnable","IsMMAInDSAEnabled","_ref$campaignDomain","_ref$isDynamicDescrip","_ref$firstTextAdModel","firstTextAdModel","_ref$firstExpandedTex","firstExpandedTextAdModel","_ref$firstResponsiveS","firstResponsiveSearchAdModel","_ref$perfMarker","_ref$isRecommendation","isRecommendation","_ref$adsCountMap","_ref$isImpressionTrac","isImpressionTrackingUrlsEnabled","IsImpressionTrackingUrlsEnabled","_ref$isOpenCreatePane","isOpenCreatePanel","_ref$isAdgroupCreatio","_ref$isImproveMMA","isImproveMMA","_ref$serverContext","perfMarkerRender","isSaved","isAudienceNativeCampaign","isMultiAdFormatEnabled","EnableNewResponsiveSearchAdEditor","ResponsiveSearchAdView","XandrVideoCampaigns","isXandrVideoAdsCampaign","XandrVideoAd","isXandrVideoAd","XandrDisplayAdsCampaigns","isXandrDisplayAdsCampaign","DisplayPlusCopilotAssetGeneration","DisplayPlusDisplayAd","XandrDisplayAd","DisplayPlusNativeAd","isDisplayAdUnderNativeCampaign","isVideoAdUnderNativeCampaign","defaultSelectedAdFormat","Native","isMultiAdFormatDisplayAd","isMultiAdFormatVideoAd","start","applyActivity","inContextRepairRecommendation","applyDeliveryStatus","adTypeViews","firstModelMap","fillModel","mapSTAToEXTA","adViewOption","isMobileUrlEnabled","isVideo","isPlaceholderMMA","testUurlAdTypes","_type","isInline","level","uurlLevels","context","customerId","userId","entityId","testUurl","apiInLog","call","prevScope","adFormat","refreshResponsiveAdEditor","NewSearchMMAEditor","AdSubType","SUBSTRATE","cachedAdExtension","lastClientModelId","currentAdExtension","suggestedAdExtensions","t","TimeStamp","getUtcTime","AcceptInfo","ReturnSuggestionIds","ViewSuggestionIds","ApplySuggestionIds","ClickViewIdeas","AdId","Channel","Feature","Action","UserId","mes","CampaignId","AdGroupId","DeliveryStatusType","trace","originalResponsiveAdEditorView","newOption","prepend","renderAdFormatOption","willRender","improveMMAAdEditor","isDisplayPlusDisplayAd","subView","editorialAppeal","EditorialAppealView","hasError","setErrorsIfExist","isRSANewCopilotScenario","triggerSaving","triggerCanceling","survey","surveyManager","checkIfSurveyIsOpen","AdFormatOption","showHeader","onChange","onAdFormatChange","querySelector","closingAfterSave","perfMarkerSave","saveAdPromise","adEditorView","saveAdAsync","saveToClient","saveToServer","logCopilotRSAAssetSuggestionAdoption","logRSAAssetSuggestionAdoption","logDeliveryStatusRecommendationAdoption","$errors","not","exists","scrollIntoView","block","resetViewToCreateAnother","resetEditMode","cachedSavedresult","AdGroups","Ads","cacheResponse","adapter","provideJustification","hasChange","_ref3$entity","entity","Error","uniq","each","getBulkApiErrors","success","saveImageExtensionsToServer","withUiBlock","logging","stop","v4","prepareErrorMessage","appealableErrors","getAppealableErrors","setRejectedInfos","paths","getPath1AndPath2","path1","path2","MAX_HEADLINES","MMAAssetConfigs","MAX_LONGHEADLINES","MAX_DESCRIPTIONS","_ref$idField","idField","_ref$maxAdsCount","maxAdsCount","_ref$adGroups","adGroups","_ref$isMixedModeCampa","isMixedModeCampaignCreation","firstTwoKeywords","allAdGroupsInfo","hasMultiAdgroups","defaultAds","action","deletedAdIds","alertMessage","duplicateAlertMessage","refresh","_defineProperty","allAdGroups","adg","AdGroupType","_generateKeywordInfo","isEmpty","slb","refreshSource","keywords","Keywords","splice","refreshDuplicateMessage","hasDuplicate","isDuplicated","parse","Headline","LongHeadlines","LongHeadline","newAd","originalAd","updateMMAfields","checkIfExist","_pushAdToArray","copiedAd","savedAdsIds","addedAds","removedAdIds","deleted","totalCounts","sourceAd","j","EditorForm","dialogDecorator","EditorView","position","maxWidth","popupFront","EditorPanel","panelDecorator","panelClassName","panelReadyAriaLabel","AdGroupAdsEditor","_ref$Campaign","_ref$Campaign2","_ref$Campaign2$Id","_ref$Campaign2$Domain","DomainName","_ref$Campaign2$Dynami","DynamicDescriptionEnabled","_ref$pageSize","pageSize","_ref$showAdGroupInfo","showAdGroupInfo","_ref$Language","Language","_ref$Languages","Languages","languages","_ref$usePanel","usePanel","String","IsRSASuggestionCMUIEnabled","adEditorListContainer","copy","_copyAd","edit","_editAd","_deleteAd","copyToSome","_copyAdToSomeAdGroups","copyToOthers","_copyAdToAllOtherAdGroups","itemActions","callback","dynamicDescriptionEnabled","createTemplate","i18","_initializeListView","getAds","items","total","isFirst","getDynamicSearchAdDisplayUrl","updateAttributeForListItem","SingleListBox","processItem","_processItem","sourceItems","_getData","useCallbackForFetchOnly","itemIdField","templates","layoutTemplate","adListTemplate","itemLayoutTemplate","adPreviewTemplate","listContainerSelector","removeAttr","sourceId","targetAdGroupIds","adgroupid","popup","alert","confirm","onDelete","App","views","alertCenter","showConfirmation","_hasMaxAds","isFull","count","focusId","document","activeElement","onCopy","onCreate","onUpdate","findAd","getCachedImageExtensionChanges","syncTheExtension","eventsToActions","_onClose","_handleCreatedAd","_handleUpdatedAd","onClose","listContainer","addScenario","initializeOptions","logScenario","aimAdEdit","aimAdCreation","isGridDisplay","viewContext","currentAdGroup","currentCampaign","CampaignType","isUpdate","PerfMarkerFactory","createMarker","loadAdEditorPromise","loadResponsiveAdEditorAsync","ResponsiveAdEditor","audienceAd","onCreateAnother","headlinePositionMenu","descriptionPositionMenu","selectPosition","positionMenu","i18nErrors","headlinePositionFields","descriptionPositionFields","headlineErrorMap","lessMinRequire","duplicate","lessPosition","descriptionErrorMap","miniRequire","positionFields","errorMap","list","getPreviewList","needValication","HeadlinesViewModel","defaultCount","maxCount","positionFieldMap","positionExtension","initHeadlines","fieldText","aiGeneratedAssetContainer","display","showHeadlineCount","max","DescriptionsViewModel","_ref2$model","_ref2$isForVNext","initDescriptions","showDescriptionCount","RSAListView","fieldsValue","_RSAListView","_ref$defaultCount","_ref$maxCount","_ref$miniRequire","_ref$isMMA","isMMA","set","headlinesTemplate","_RSAListView2","_ref2$defaultCount","_ref2$maxCount","_ref2$miniRequire","_ref2$showLightbulb","_ref2$isMMA","desciptionsTemplate","_AdsCreateView","allAppealableErrors","clearAlertMessages","hasAds","hasUniqAds","hasDuplicateAds","allAds","_clearAdsErrors","_hasApiErrors","adgroupId","resourceName","parentId","models","formatedAd","_formatAd","AdGroupName","CampaignName","AdsCreateView","_ref$availableExtensi","availableExtensions","adExtensionsDynamicFeatures","adExtensionsStaticFeatures","adExtensionDynamicFeatures","adExtensionStaticFeatures","dynamicAdGroups","SearchDynamic","standardAdGroups","SearchStandard","isDynamicSectionExpanded","isStandardSectionExpanded","isAdExtensionExpanded","hasChanges","splitAds","change","pluck","flatten","groupBy","viewList","editorViewMapper","appAssociationsEditor","Call","callAssociationsEditor","Callout","calloutAssociationsEditor","Location","locationAssociationsEditor","Review","reviewAssociationsEditor","SiteLink","sitelinkAssociationsEditor","StructuredSnippet","structuredsnippetAssociationsEditor","Price","priceAssociationsEditor","Promotion","promotionAssociationsEditor","FilterLink","filterLinkAssociationsEditor","Flyer","flyerAssociationsEditor","actionlinkAssociationsEditor","CreateView","_ref$context","showAdAndExtensionMarker","IsActionLinkExtensionAllowed","IsPriceExtensionAllowed","IsLocationExtensionAllowed","IsAppExtensionAllowed","IsSiteLinkExtensionsAllowed","IsCallExtensionAllowed","IsCalloutExtensionAllowed","IsReviewExtensionAllowed","IsStructuredSnippetExtensionAllowed","IsPromotionAdExtensionEnabled","IsFilterLinkAdExtensionEnabled","IsFlyerAdExtensionEnabled","universalItemTemplate","actionUniversalItemTemplate","objective","suggestedExtensions","openedExtEditor","excuteObjective","method","objectiveActions","All","initialize","otherExtensions","willShow","openExtensionPanel","evt","scrollTo","originalIds","newIds","adgroup","initializeAdGroupEditorView","removedAdGroup","_ref6","adgroupsToPaste","fromAdGroup","copyAdFromOtherAdGroup","_ref7","isDSAMixedModeCampaignEnabled","appendLearnMoreLink","logActivities","every","save","scrollUtil","errorElements","$dynamicAdGroupSection","$standardAdGroupSection","collapse","saveAdAndExtensionMarker","adsToCreate","_ref8","destroy","requestResult","_ref9","_this7","isEdit","toggleDecorator","getToggleEl","containerCss","hasSubTitle","showErrorsInline","vnextContext","dynamicFeatures","dynamicTextMenu","propertyNames","appendDynamicText","originalValue","getCharCountExcludingAdCustomizers","newGetCharCountExcludingAdCustomizers","legacyGetCharCountExcludingAdCustomizers","countCharCountExcludingAdCustomizers","lengthValidator","nullable","blockInput","process","instrument","operation","deletedKeywordsCount","Status","createdKeywordsCount","viewmodel","isNotReady","urlEntered","landingPage","keyCode","prototype","keywordPlannerView","KeywordPlannerView","isCampaignCreation","keywordPlannerTimeout","addSuggestion","landingPageView","LandingPageView","onSearch","shouldNotCreateDefaultEditor","shouldNotRenderWhenThereIsNoAdGroup","checkKeywordPlannerSupport","showLandingPage","isKeywordPlannerEnabled","allLocationsUnsupported","updateLandingPageStatus","valueArray","updateAdgroupsList","show","isLanguagesSupported","isLanguageSupported","setLanguages","setLocationTargetingByCampaign","setTimeout","moveKeywordPlanner","seedKeywords","selectedAdGroup","keywordPlannerTop","keywordPlannerTopValue","changeSelectedAdGroup","newSelected","getUniqueName","Suggestions","targets","sourceReqId","selectedAdgroups","suggestedAvgCpc","AggregateMetric","ko_schema","numCreated","maxAdGroups","hasMaxAdGroups","showAdGroupLimitError","isDuplicateName","isDuplicate","comparisonName","toLowerCase","checkDuplicates","isNameDuplicate","uniqueName","removeAdGroup","toRemove","addAdGroup","toAdd","keywordPlannerTopValuePixel","offset","isWaitingForSaveResponse","hasOneAdGroup","events","isOptional","checkAdGroupNameDuplicates","CreateViewModel","existError","updateViews","updateCampaign","shouldNext","shouldBack","shouldCancel","getUpdates","shouldValidate","updates","getChanges","AdScheduleUseSearcherTimeZone","showErrorElements","isOpen","saveAdGroupKeywordMarker","updatedAdgroupsCount","ag","createdAdgroupsCount","adgroupType","toUpdate","adGroupView","parseInt","updateViewModels","errorList","subEntity","isAutoTargetCampaign","canEdit","errorsOfThisItem","errorExtractor","updateViewModelsOnError","contextAdGroups","getContextObject","maxAdGroupsError","addEventListener","updateView","UpdateView","defaultBid","hideHeader","isOnlyAdGroup","logNameChange","deletedAdGroup","lastDeleted","onlyAdGroup","createAndRefocus","adgroups","locations","tire2Locations","numLocationsTargeted","countryLocationInfo","noSuggestionNote","onlytire2LocationSupported","excludedLocationsWarning","selectMultiIdeasText","recentUserActionPrompt","isKeywordPlannerVisible","suggestedAdgroup","SuggestedAdGroup","AddToNewAdGroup","compact","minimumFractionDigits","maximumFractionDigits","getSearchRangeString","pow","floor","log10","ceil","getSearchRange","formatDecimal","unnameCounter","isUnnamed","checked","defaultName","grid","pgrid","vnext","tableClasses","dataSource","rows","bodyRows","columns","getColumns","selection","enabled","a11y","selectAllLabel","gridView","sortable","Keyword","helpId","headClasses","bodyClasses","AverageSearchVolume","realI18n","AverageCPC","CompetitionLevel","bingadsGridColumn","checkedRowIds","selectedItems","checkedKeywords","kw","selectedKeywords","noRowSelected","keywordPlannerCreateOptions","stopPropagation","getCompareFunction","a","b","aProp","bProp","keywordPlannerSortFunc","input","direction","popupIds","GetKeywordIdeas","MonthlySearches","AvgCPC","Competition","GetAdGroupIdeas","currentSourceReqId","searchboxKeywords","Searchbox","defaultText","searchButtonAriaLabel","searchboxUrl","AdvancedView","KeywordPlannerAdvancedView","originalLanguages","keywordPlannerSupportedLanguages","languages2Use","lang","keywordPlannerSupportedLanguagesIdValueMap","useTireTwoMarkets","locationSupportedLanguages","getKeywordPlannerSupportedLanguagesByLocationIds","languagesCanUse","getLanguagesSupportedByLocations","isSelectedLanguagesOnlyTire2ForKeywordPlanner","includedTargets","locationTargets","criterion","supportedCountries","keywordPlannerSupportedCountries","supportedCountryCodes","supportedTire2CountryCodes","country","SupportKeywordSearch","countryCode","CountryCode","locationId","LocationType","languageBundle","LocationId","countryLocationId","onlyTire2LangaugesSelected","tire2SupportedCountryIds","getKeywordPlannerSupportedLocationIdsByLangauges","supportedCountryIds","_updateStatusByLocations","locationsObj","locationFilters","Intermediate","getAll","totalCount","disable","enable","paginationView","page_number","page_size","resetPageNumber","item_count","pageCount","projection","_updateSelectMultiIdeasText","req","hasOnlyKeyword","requestUrl","substr","odataLimits","criteria","keywordsArray","keyword","keywordLength","languagesToUse","languageSupportedLoations","locationIdsSupportedByLanguage","requestLocations","location","PropertyTemplateProjection","local","$metadata","keywordPlannerAdgroupNameColumnTemplate","keywordPlannerAdgroupSeeMoreColumnTemplate","MapProjection","searchCount","averageCPC","decimalFormatter","fromFloatToString","competition","adgroupItem","DisplayName","numRowsToShow","kwd","showSelectAllOnPage","Pagination","PaginationTmpl","sourceData","SourceProjection","seed","proptmpl","getPropTempl","suggestionPropName","sortableCols","memorySort","MemorySortProjection","memoryPage","MemoryPageProjection","getMap","PageProjection","src","pipe","Grid","layout","TableLayout","partial","class","tableTmplJade","popupTopicId","gridClicked","fetch","PaginationConnector","connect","requestData","post","customHeader","dummy","textStatus","xhr","getResponseHeader","res","showNoSuggestionsMessage","AdgroupName","updatePagination","refreshGridSource","requestId","userSelectedLanguages","parent","suggestions","learnMoreLink","learnMoreTemplate","logInteraction","addAddGroup","removeAdgroupFromSource","valueOf","column","adgroupName","handleAddGroup","end","newData","adgroupArray","languagesToCheck","isDynamicAdGroupSectionExpanded","isStandardAdGroupSectionExpanded","hasDSASettings","hasDisclaimerSettings","isDomesticSimplifiedChineseEnabled","allowDisclaimer","MixedModeAdGroupCreate","showAdGroupKeywordMarker","initializeAutoTargetAdGroupCreateView","initializeKeywordAdGroupCreateView","initializeDSASettings","modified","mounted","dynamicAdGroupSectionViewModel","autoTargetAdGroupCreateView","standardAdGroupSectionViewModel","keywordAdGroupCreateView","removeStandardAdGroupSectionAriaExpandedAttribute","disclaimerSettings","hasDSASettingsInCampaignSettings","adjustSectionOrder","toggleDSASettings","dsaSettingsView","targetingSource","Source","koModel","campaignContext","campaignParams","newCampaignContext","CampaignParams","setValues","saveTargetingSource","campaignErrors","scrollToDSAError","forEach","AutoTargetAdGroupCreateView","AdGroupView","_view$prototype","originalCreateAndRefocus","submitDSASettings","AutoTargetAdGroupUpdateView","AutoTargetView","DomainLanguage","TargetingSource","setAutoTargetsViewSetting","serializedAdGroup","autoTargets","DsaTargets","adGroupsStored","currentId","object","Bid","first","updateOnVisible","adGroupBid","autoTargetAdGroupUpdateDecorator","AdGroupUpdateView","saveDSASettings","validateDSASettings","checkAllAdGroupNameDuplicate","dsaSettings","LanguageCode","KeywordAdGroupCreateView","keywordAdGroupCreateDecorator","KeywordAdGroupUpdateView","keywordAdGroupUpdateDecorator","DSASettingsView","updateSubViewDSASettings","$sectionRoot","$standardAdGroupSectionContainer","$dynamicAdGroupSectionContainer","validateIfThereIsAtLeast1AdGroup","keywordAdGroupCreationResult","dynamicAdGroupCreationResult","standardAdGroupCreateResult","dynamicAdGroupCreateResult","KeywordsView","selectThisAdGroup","addedKeywords","getChangedKeywords","getContextObjects","keywordObjects","showErrors","clearErrors","s$AdGroup","StartDate","EndDate","shouldValidateName","isDeleted","deletedConfirmationMessage","removeButtonLabel","deletedConfirmationTimeout","newAdGroup","blocker","adGroupToUpdate","delete","confirmDelete","promise","deleteParams","contextCampaign","viewHasChanges","hasDuplicateNames","selectedCampaigns","copySetting","_ref$scenario","campaignSelectorProxy","CampaignSelectorProxy","onEventTrigger","selectedItem","onCampaignSelectorEventTrigger","campaignSelector","getCampaignSelectorView","loadCampaignAndTargets","expand","disclaimerRepository","skipExtensionCache","criterionLoader","load","shouldShowCashbackSettings","shouldShowSponsoredCampaignCashbackOptIn","isSponsoredCampaignCashbackOptedIn","isSponsoredCampaignCashbackOptInReadonly","isExperiment","isDisclaimerAdsEnabled","isMixedDSACampaignRecommendation","isMixedDSACampaignCreate","currentCampaignType","isAudienceCampaignCreate","campaignProps","schemas","TimeZone","getAccountTimeZone","languageError","timeZoneText","isAfterSave","showTimeZoneText","enableMixedModeDSASettings","isMixedModeDSASettingsChecked","hasRsaAutoAssets","isRsaAutoAssetsSettingChecked","hasBroadOnlySetting","isBroadOnlySettingChecked","selectedBrandLists","deletedBrandListIds","addedBrandListIds","savedBrandListIds","showVanityUrlSettings","vanityUrlSettings","DisplayUrlMode","WebsiteDescription","campaignGoalText","showCampaignGoal","isAmplifyEnabled","s$CampaignCriterion","s$DisclaimerAdExtension","AppEventDelegator","_AppEventDelegator","_edm","_Language","LocationTargetsView","_LocationTargetsView","CopySettings","_CopySettings","BiddingStrategyView","_BiddingStrategyView","SharedBudgetView","_SharedBudgetView","MultiLanguage","_MultiLanguage","AdsCampaignDisclaimers","_AdsCampaignDisclaimers","ExperimentBudgetAlert","_ExperimentBudgetAlert","_SharedRepository","_DSASettingsView","CashbackSettingsView","_CashbackSettings","isSponsoredCampaignCashbackOptInAvailable","_LoadMap","_AudienceCampaignShared","SponsoredCampaignShared","BroadOnlySetting","_BrandListsComponents","defaultPopupIds","Budget","physicalIntentOptions","_physicalIntentOptions","VanityUrlOption","_VanityUrlOption","preferencesService","_preferencesService","showLanguage","showInitialUiBlocker","hideBidStrategy","IsAdsGlobalizationPhase1Enabled","IsAdsGlobalizationPhase2Enabled","IsAdsGlobalizationPhase6Enabled","IsAdsGlobalizationPhase2JapanEnabled","IsAdsGlobalizationPhase9Enabled","IsAdsGlobalizationPhase9VIEnabled","showCampaignSettingMarker","personalizedOfferUtils","isMSStoreAdsGAWorkflow","isAudienceVideoAdsCampaign","isEnabledForVerifiedImpressionTracking","IsEnabledForVerifiedImpressionTrackingAtCampaignLevel","isSignUpPage","isWindowsStoreAdsEnabled","isWindowsStoreAdsManualCPAEnabled","isSupportMaxConversionsForSscEnabled","eventDelegator","autoTargetingSettings","biddingStrategyView","bidStrategyName","BidStrategyName","maxCpc","MaxCpc","Amount","targetCpa","TargetCpa","targetRoas","TargetRoas","targetAdPosition","TargetAdPosition","targetImpressionShare","TargetImpressionShare","i18nNewDesign","shouldSupportCashbackSettings","autoTargetingEnabled","PredictiveTargetingEnabled","ccJsData","isBroadMatchOnlyCampaign","costPerSale","TargetCostPerSale","validateWithBudget","shouldShowSponsoredCampaignCashback","BidStrategy","IsManualBiddingDeprecationEnabled","IsManualCpmEnabled","IsAudienceCampaignAutoBiddingV2Enabled","VerifiedTrackingSettings","VerifiedTrackingData","Data","Values","ImpressionTrackingView","IASTrackingInfo","isInitialize","isCreation","BiddingStrategyType","enhancedCPC","maxConversionValue","initBudgetView","initDSASettingsView","initCashbackSettings","initRSASettingsView","initBroadOnlyView","isMultipleLanguageEnabledIncampaign","initMultiLangaugeSelector","isCreationScenario","copySettings","copyFromCampaign","React","disclaimerProps","ref","DisclaimerAdsEnabled","AllowDisclaimerEnabled","repository","resetSelectedDisclaimer","selectedDisclaimer","renderDisclaimerUI","inCampaignEditing","searchCondition","audienceCondition","IsMSANDisclaimerEnabled","VanityUrlWebsiteDescription","getAssociatedDisclaimer","toggleDisclaimerUI","isDisclaimerCheckboxDisabled","initDisclaimerUI","isNativeAd","onDisclaimerCheckboxChange","disclaimerAdsEnabled","initAutoAssetsUI","initBroadOnlyUI","renderBroadOnlySetting","isBroadMatchOnly","setIsBroadMatchOnly","onBrandListsChange","CurrentAccount","initVanityUrlSettings","renderVanityUrlSettings","settings","setBidStrategyForPersonalizedOffersV2","cashBackSettings","cashbackSettingsView","PersonalizedOffersEnabled","CashbackMonthlyBudget","MonthlyBudget","CashbackPercent","Percent","CashbackScope","Scope","CouponsEnabled","isCashbackScopeReadonly","decimal","showCoupon","isNotAudienceCampaign","isReadOnly","IsCostPerSaleEnabled","isEnablePersonalizedOffersChecked","setupBudgetValidationForCostPerSale","budget","isCPSSelected","selectedBidStrategy","sharedBudgetIsNotAllowedWarning","strategy","budgetAmount","budgetView","amount","validateMultipleLanguage","isValidate","getSelectedLanguages","updateLanguageErrorMessage","languageOptions","inEditMode","selectedLanguages","defaultLanguage","IsSimplifiedChineseLanguageEnabledInMultipleLanguage","instantiateLocationTargetsView","isWindowsStoreAd","hideAudience","physicalIntent","PeopleIn","supportCashbackSettings","showPhysicalIntentView","languageSelector","campaignLanguage","locationTargetsView","budgetDraft","targetingSourceCampaignId","greyOutBudgetIfExperiment","experimentBudgetAlert","experimentId","ExperimentId","IsExperimentsEnabled","Experiment","query","$select","$filter","$top","$count","Experiments","defaultDSADomainName","localStorage","isCampaignSettingsScenario","rsaSettings","AutoGeneratedAssetsEnabled","isOppotunityCampaignLevel","IsCampaignMultipleLanguageEnabled","locationTargetsPromise","domainName","domainLanguage","dsaSource","isPromotionsForBrands","criterions","setLocationData","isDSASettingsAvailable","validateVerifiedImpressionTracking","getPropertyValidationErrors","propErrors","errorsOfPropery","getErrorMessages","getAllLocations","modelInfo","allLocationTargets","keepAllLocations","populateParentField","removeNegativeId","intent","getData","IASInputChange","originAutoGeneratedAsset","rsaAutoGeneratedAssetsSettings","originBroadOnly","broadOnlySetting","IsBroadMatchOnlyCampaign","associations","v","SharedEntityId","EntityId","BrandListsAssociations","biddingSchema","autoTargetingDefault","RSABidStrategyAutoTargeting","PredictiveMatching","AutoTargetingEnabled","TargetingSourceSetting","CampaignCriterions","deletedLocations","disclaimerDefaultSettings","originalDisclaimerSetting","selectedDisclaimerId","state","originalDisclaimerId","isSelectedDisclaimerChanged","AdExtensionAssociations","IsPersonalizedOffersV2Enabled","IsPersonalizedOffersV3Enabled","targetBidStrategy","getLocationRecommendationsStatus","handleCampaignResponse","hasLocationErrors","setContext","targetToCountMapping","CriterionType","targetKey","SelectionStatus","clearAllErrors","setCampaignId","updateLocation","refreshLocationData","clearDeletedLocationsList","updateTargetingSource","saveCampaignMarker","validationErrorNode","setErrors","setSavedBrandLists","brandListError","savedBrandLists","shouldFilterErrorCodes","node","isCreate","getContext","errorsByEntity","hasEntityCreated","separateErrors","getAndHandleApiErrors","brandlist","errMap","reduce","acc","scrollToErrors","cashbackSettings","domainNameError","handleApiErrorsForCampaignLevel","disableLanguage","campaignNameChange","budgetFactory","newFactory","showBudgetMinRecommend","BCCBudgetImprovementEnabled","minimumBudget","currencySymbol","getCurrencySymbol","AccountCurrencyCode","accountCurrencyCode","noApplyBudgetFromSharedLibrary","hideDailyBudgetOptions","updateBidStrategy","isCoOpCampaign","s$Keyword","parseKeyword","matchType","MatchType","parsedKeyword","isNegativeKeyword","isBmmBlockEnabled","parserSchema","keywordsTextareaVal","isAfterFirstInteraction","showBmmWarningAlert","showMutableKeywordMatchTypAlert","showBmmBlockAlert","maxKeywords","numSeedKeywords","seedKeywordTimeout","parsedKeywords","uniqueParsedKeywords","parseKeywords","newKeywords","peekKeywords","isBmmExist","words","isKeywordsValid","parser","reset","s$TextAd","KeywordViewModel","_KeywordViewModel","DynamicPermissions","KeywordBmmSignupP2","KeywordBmmPhase2","isBmmWarningEnabled","KeywordBmmAlert","KeywordBmmWarning","isMutableKeywordMatchTypeEnabled","BMMBehaviorUpdate","parserViewModel","keywordSuggestionsAdded","help","getKeys","getKeywords","isBmmWarning","isMutableKeywordMatchTypeWarning","isBmmBlock","getSeedKeywords","endIndex","keywordsChanged","outTextArea","newKeyword","textareaValue","getKeyFromKeyword","oldKeywords","serializeToCreate","serializeToDelete","getCurKeywords","toCreate","serializedKeywords","serializedKeyword","toDelete","getNameAndLengthForProperty","addErrors","escapeHtml","errorFromAd","pairs","successfulKeywords","keywordsWithErrors","newlyCreatedKeywords","numberOfCreatedKeywords","keywordsImportedFromPlanner","suggestedKeyword","keywordsCreated","suggestionsUsed","detailedSuggestionsUsed","mapObject","reqGroup","_ref$Name","showKeywordPlanner","showOnlyKeywords","isSignUp","createView","includedLocations","LocationTargetTypes","includedCriterions","Criterion","LocationCriterion","RadiusCriterion","setLocationTargeting","Medium","PricingModel","_ref$DomainName","_ref$DomainLanguage","_ref$Source","_ref$disabled","_ref$dynamicDescripti","_ref$isMixedDSACampai","isTargetingSourceEnabled","isDynamicDescriptionPhase1Enabled","isDynamicDescriptionChecked","DSASettings","_ref$popupIds","webSiteLanguage","DSAEnableInFrenchGerman","IsEnabledForDSAInCHandNLandITandESandSE","DSAEnabledInPLandPTandTRandGR","DSAEnabledInDKandFIandNO","DSAEUPhase2","DSAEnabledInJapanese","IsAdsGlobalizationPhase9DSAEnabled","AdsGlobalizationPhase9DSA","i18nStrings","SaveWarning","enableSimplifiedChinese","onLanguageChange","TargetingSourceView","isTargetingSourceValid","initWebSiteLanguage","initTargetSource","isDSASupportMultipleLanguages","processedDomainName","RegExp","legacy$","InlineAppealView","rowId","controller","submit","appealTitle","disableAppealBtn","utilities","onInlineAppealSuccess","expandRowDetail","jsonError","inlineErrorView","InlineErrorView","cancelInlineAppeal","appealIds","_ref2$appealData$","appealData","firstAppealData","IsAppealable","controlId","callBackForInlineAppeal","hideAppealCheckBox","toInline","createInlineAppeal","cancelInlineUpdates","valid","appealJson","getAppealData","Appeal","EntityType","Justification","bulkAction","onCreateAppealSuccess","appealHtml","setElement","_elementId","MaxEntityInOneAdGroup","maxItems","formatDate","dateUtil","alertHelper","AlertHelper","BulkAppealView","onAppeal","Entities","editorial","submitRequestException","onBulkCreateAppealSuccess","showAlert","infoMsg","_ref$adGroupLevelType","adGroupLevelType","_ref$requestException","requestExceptionFromPopup","_ref$instrumentation","currentQueryFilter","filterService","getCombinedFilter","clone","currentQuery","deliveryStatusToQuery","daterange","queryToUse","currentDeliveryStatusQueryValue","DeliveryStatus","$in","odataV4","$expand","startdate","enddate","ParentId","queryString","edmCommon","AssetsWithBIData","$makeCall","payload","gridDataParameters","DateRange","AssetType","scrollTop","fetchIdsForCrossPageSelectionForEditorialGrid","getAppealRejections","ids","selectedRowIds","gridHelper","getSelectedRowIds","limit","getEntitySet","toJSON","getAdGroupId","allPageSelected","fetchIdsForCrossPageSelectionForNewGrid","adgroupEntityIds","isAppealableStatus","_ref3$adgroupEntityId","onFetchBulkAppealRejections","useKwCss","removeCancel","unbind","colValue","getColumnValue","getCampaignId","currentRow","itemWithKey","showToolbar","hideForm","legacy$Form","resetForm","_ref4$appealIds","_ref4$appealData$","_ref4$Entities","getValidateParams","toBulk","removeClass","Errors","dataContextManager","campaignCacheManager","invalidate","contextToUpdate","deselectAll","SingleAppealView","JustificationText","showAdStrength","refreshAdItem","EntityIdsParentIds","processedData","processRejectReasonsFromOdata","toolbar","gridToolbarGroup","showAllToolbars","_ref2$appealIds","menuIsDisabled","menu","is","getMenu","hideinlineEditors","getExpandedRowDetail","AppealAggregator","menuToFollow","_ref$disableAppealBtn","inlineEditors","bulkEditor","without","hasExpandedRowDetail","inlineEditor","openBulkAppealEditor","BulkAppealEditor","disableButtons","singleEditor","i18nCommon","AppealableStatus","status","getInlineBulkAppealUrl","queryify","cmpid","adgId","ids2params","getEntityTypeFromController","generateExtensionUrl","adextension","adExtensionId","version","Version","adgid","resultData","rejectedReasons","rejectedTerms","resultValues","reasonsAndPublisherCountriesMap","Reasons","ReasonCode","Term","LanguageToCountries","rejectedCountries","RejectionCountries","reasonString","reaonsCode","logger","fwLinkId","getFwdLinkId","fwlink","getEditorialErrorMessage","termString","locationStrings","getLocationString","commonI18n","countries","rejectionReasonString","rejectedCountryStrings","RejectedReasons","RejectedTerms","requestExtensionRejectReason","http","__RequestVerificationToken","contentType","RejectionReasons","_ref6$error","disclaimerRepos","rowItem","getExtensionAppealRejections","_action","op","adgroupIdParameter","odataUrl","getAppealRejectionsOdataNew","ajaxPost","onSuccess","onError","onJsonError","requestExceptionOdata","scopeId","successCallBack","exceptionCalLBack","finallyCallBack","AppealEditorViewModel","justification","appealed","appealedVisible","justificationPanelVisible","AppealView","str","_ref$controlId","_ref$appealData","_ref$appealData2","_ref$appealData2$Enti","_ref$appealData2$Reje","_ref$hideAppealCheckB","_ref$appealTitle","_ref$callback","containerSelector","_ref$withRealTimeUpda","withRealTimeUpdates","reasons","subscribeForRealTimeUpdates","newValue","triggerChangeEvent","_create","_init","userAppealed","Prefix","textAreaId","getAppealJustificationName","rules","messages","errorElement","errorPlacement","after","notAppealableTemplate","cancelButtonTemplate","buttonPanelTemplate","wrap","inlineFormTemplate","$noAppealMessagePanel","reasonsTemplate","counter","_ref$useKwCss","inlineErrorTemplate","pug","module","exports","locals","pug_interp","pug_html","pug_mixins","locals_for_with","cssClass","attributes","popupId","ariaLabelContext","templateString","linkId","displayText","escape","infoStyle","left","ariaLabel","countModelName","$$obj","$$l","withDynamicText","useTextArea","hideDynamicText","labelId","nameAttribute","idSuffix","addButtonId","dynamicTemplateName","hideHelpTooltip","helpTooltip","staticTemplateName","extensions","pug_index0","staticFeatures","link","topic","fBindContext","fBindQuery","onLinkClickUrl","label_collapse","label_expand","errId","errorId","attrs","merge","EnterKeywords","reason"],"sourceRoot":""}