{"version":3,"file":"static/js/application.async.non-landing~515aa192.07faab6c.chunk.js","mappings":"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","sources":["../../../node_modules/@bingads-webui-campaign/ads-grid/demo/mock/dummy-js-data-resource.js","../../../node_modules/@bingads-webui-campaign/ads-grid/demo/mock/dummy-data-source.js","../../../node_modules/@bingads-webui-campaign/ads-grid/demo/mock/schema.js","../../../node_modules/@bingads-webui-campaign/ads-grid/index.js","../../../node_modules/@bingads-webui-campaign/ads-grid/src/ads-editor/initialize-ad-editor.js","../../../node_modules/@bingads-webui-campaign/ads-grid/src/ad-strength/ad-strength-helper.js","../../../node_modules/@bingads-webui-campaign/ads-grid/src/ad-strength/suggestion-popup.js","../../../node_modules/@bingads-webui-campaign/ads-grid/src/instrumentation-schema.js","../../../node_modules/@bingads-webui-campaign/ads-grid/src/editorial-reason/show-rejection-reasons.js","../../../node_modules/@bingads-webui-campaign/ads-grid/src/ads-grid.js","../../../node_modules/@bingads-webui-campaign/ads-grid/src/columns/attributes/status-icon.js","../../../node_modules/@bingads-webui-campaign/ads-grid/src/columns/index.js","../../../node_modules/@bingads-webui-campaign/ads-grid/src/columns/attributes/ad-group.js","../../../node_modules/@bingads-webui-campaign/ads-grid/src/columns/attributes/ad-id.js","../../../node_modules/@bingads-webui-campaign/ads-grid/src/columns/attributes/ad-type.js","../../../node_modules/@bingads-webui-campaign/ads-grid/src/columns/attributes/device-preference.js","../../../node_modules/@bingads-webui-campaign/ads-grid/src/columns/attributes/ad-preview.js","../../../node_modules/@bingads-webui-campaign/ads-grid/src/columns/attributes/ads-by-bing.js","../../../node_modules/@bingads-webui-campaign/ads-grid/src/columns/attributes/ad-strength.js","../../../node_modules/@bingads-webui-campaign/ads-grid/src/grid-config.js","../../../node_modules/@bingads-webui-campaign/ads-bulk-edit/src/plugin.js","../../../node_modules/@bingads-webui-campaign/ads-grid/demo/mock/edm.js","../../../node_modules/@bingads-webui-campaign/ads-grid/src/ads-status.js","../../../node_modules/@bingads-webui-campaign/ads-grid/src/plugins.js","../../../node_modules/@bingads-webui-campaign/ads-grid/src/ads-gridview-factory.js","../../../node_modules/@bingads-webui-campaign/all-settings-grid/src/settings-grid-view.js","../../../node_modules/@bingads-webui-campaign/all-settings-grid/src/settings-bulk-edit.js","../../../node_modules/@bingads-webui-campaign/all-settings-grid/src/columns/inline-editable/save.js","../../../node_modules/@bingads-webui-campaign/all-settings-grid/src/columns/campaign-column.js","../../../node_modules/@bingads-webui-campaign/all-settings-grid/src/columns/inline-editable/prompt.js","../../../node_modules/@bingads-webui-campaign/all-settings-grid/src/columns/locations-column.js","../../../node_modules/@bingads-webui-campaign/all-settings-grid/src/columns/ad-schedule-column.js","../../../node_modules/@bingads-webui-campaign/all-settings-grid/src/columns/devices-column.js","../../../node_modules/@bingads-webui-campaign/all-settings-grid/src/columns/demographic-column.js","../../../node_modules/@bingads-webui-campaign/all-settings-grid/src/columns/status-column.js","../../../node_modules/@bingads-webui-campaign/all-settings-grid/src/settings-grid-column-config.js","../../../node_modules/@bingads-webui-campaign/all-settings-grid/src/settings-repository.js","../../../node_modules/@bingads-webui-campaign/all-settings-grid/src/all-settings-gridview-factory.js","../../../node_modules/@bingads-webui-campaign/all-settings-grid/src/settings-grid-config.js","../../../node_modules/@bingads-webui-campaign/all-settings-grid/src/settings-grid-plugins.js","../../../node_modules/@bingads-webui-campaign/all-settings/src/settings-summary/additional-plugins.js","../../../node_modules/@bingads-webui-campaign/all-settings/src/settings-summary/columns/inline-editable/save.js","../../../node_modules/@bingads-webui-campaign/all-settings/src/settings-summary/columns/campaign-column.js","../../../node_modules/@bingads-webui-campaign/all-settings/src/settings-summary/columns/inline-editable/prompt.js","../../../node_modules/@bingads-webui-campaign/all-settings/src/settings-summary/columns/locations-column.js","../../../node_modules/@bingads-webui-campaign/all-settings/src/settings-summary/columns/ad-schedule-column.js","../../../node_modules/@bingads-webui-campaign/all-settings/src/settings-summary/columns/devices-column.js","../../../node_modules/@bingads-webui-campaign/all-settings/src/settings-summary/columns/demographic-column.js","../../../node_modules/@bingads-webui-campaign/all-settings/src/settings-summary/columns/status-column.js","../../../node_modules/@bingads-webui-campaign/all-settings/src/settings-summary/settings-grid-column-config.js","../../../node_modules/@bingads-webui-campaign/all-settings/src/settings-summary/settings-grid-config.js","../../../node_modules/@bingads-webui-campaign/all-settings/src/settings-summary/settings-repository.js","../../../node_modules/@bingads-webui-campaign/all-settings/src/settings-summary/settings-grid-view.js","../../../node_modules/@bingads-webui-campaign/all-settings/src/settings-summary/settings-bulk-edit.js","../../../node_modules/@bingads-webui-campaign/all-settings/src/settings-summary/index.js","../../../node_modules/@bingads-webui-campaign/all-settings/src/settings-summary/fetch-preference-config.js","../../../node_modules/@bingads-webui-campaign/all-settings/src/edit-campaign.js","../../../node_modules/@bingads-webui-campaign/all-settings/src/edit-adgroup.js","../../../node_modules/@bingads-webui-campaign/all-settings/src/index.js","../../../node_modules/@bingads-webui-campaign/ads-grid/src/columns/attributes/ad-group.pug","../../../node_modules/@bingads-webui-campaign/ads-grid/src/columns/attributes/ad-preview.pug","../../../node_modules/@bingads-webui-campaign/ads-grid/src/columns/attributes/ad-strength.pug","../../../node_modules/@bingads-webui-campaign/ads-grid/src/columns/attributes/ad-type.pug","../../../node_modules/@bingads-webui-campaign/ads-grid/src/columns/attributes/ads-by-bing.pug","../../../node_modules/@bingads-webui-campaign/ads-grid/src/columns/attributes/device-preference.pug","../../../node_modules/@bingads-webui-campaign/all-settings-grid/src/columns/campaign-column.pug","../../../node_modules/@bingads-webui-campaign/all-settings-grid/src/columns/status-column-header.pug","../../../node_modules/@bingads-webui-campaign/all-settings-grid/src/columns/status-column.pug","../../../node_modules/@bingads-webui-campaign/all-settings-grid/src/columns/target.pug","../../../node_modules/@bingads-webui-campaign/all-settings/src/all-settings.pug","../../../node_modules/@bingads-webui-campaign/all-settings/src/settings-summary/columns/campaign-column.pug","../../../node_modules/@bingads-webui-campaign/all-settings/src/settings-summary/columns/status-column-header.pug","../../../node_modules/@bingads-webui-campaign/all-settings/src/settings-summary/columns/status-column.pug","../../../node_modules/@bingads-webui-campaign/all-settings/src/settings-summary/columns/target.pug","../../../node_modules/@bingads-webui-campaign/all-settings/src/settings-summary/index.pug","../../../node_modules/@bingads-webui-campaign/all-settings/src/settings-summary/settings-grid-template.pug"],"sourcesContent":["import _ from 'underscore';\r\nimport { DS } from 'js-data';\r\nimport Promise from 'bluebird';\r\nimport mockData from './dummy-data.json';\r\n\r\nclass CustomerAdapter {\r\n // All of the methods shown here must return a promise\r\n\r\n // \"definition\" is a resource defintion that would\r\n // be returned by DS#defineResource\r\n\r\n // \"options\" would be the options argument that\r\n // was passed into the DS method that is calling\r\n // the adapter method\r\n\r\n findAll(/* definition, params, options */) {\r\n const result = _.clone(mockData.value);\r\n\r\n result.raw = mockData;\r\n result.totalCount = mockData['@odata.count'];\r\n\r\n return Promise.resolve(result);\r\n }\r\n}\r\n\r\nconst store = new DS();\r\n\r\nstore.registerAdapter('ads', new CustomerAdapter(), { default: true });\r\n\r\nexport const Ads = store.defineResource({\r\n name: 'Ads',\r\n idAttribute: 'Id',\r\n});\r\n","import { noop } from 'underscore';\r\nimport { Ads } from './dummy-js-data-resource';\r\nimport { Ad } from './schema';\r\n\r\nexport const dummyDataSource = {\r\n type: 'js-data',\r\n entity: Ads,\r\n primaryKey: 'Id',\r\n schema: Ad,\r\n options: {\r\n entitySet: {\r\n toJSON: noop,\r\n },\r\n },\r\n};\r\n","const PerformanceMetrics = {\r\n name: 'PerformanceMetrics',\r\n type: 'object',\r\n properties: {\r\n Impressions: {\r\n type: 'integer',\r\n nullable: true,\r\n },\r\n Clicks: {\r\n type: 'integer',\r\n nullable: true,\r\n },\r\n CTR: {\r\n type: 'number',\r\n nullable: true,\r\n },\r\n Conversions: {\r\n type: 'integer',\r\n nullable: true,\r\n },\r\n Spend: {\r\n type: 'number',\r\n nullable: true,\r\n },\r\n AverageCPC: {\r\n type: 'number',\r\n nullable: true,\r\n },\r\n AveragePosition: {\r\n type: 'number',\r\n nullable: true,\r\n },\r\n AverageCPM: {\r\n type: 'number',\r\n nullable: true,\r\n },\r\n CPA: {\r\n type: 'number',\r\n nullable: true,\r\n },\r\n WebsiteCoverage: {\r\n type: 'number',\r\n nullable: true,\r\n },\r\n AuctionWonPercent: {\r\n type: 'number',\r\n nullable: true,\r\n },\r\n AuctionLostToBudgetPercent: {\r\n type: 'number',\r\n nullable: true,\r\n },\r\n AuctionLostToRankPercent: {\r\n type: 'number',\r\n nullable: true,\r\n },\r\n AuctionLostToLandingPercent: {\r\n type: 'number',\r\n nullable: true,\r\n },\r\n AuctionLostToAdQualityPercent: {\r\n type: 'number',\r\n nullable: true,\r\n },\r\n AuctionLostToBidPercent: {\r\n type: 'number',\r\n nullable: true,\r\n },\r\n ClickSharePercent: {\r\n type: 'number',\r\n nullable: true,\r\n },\r\n RevenueOnAdSpend: {\r\n type: 'number',\r\n nullable: true,\r\n },\r\n AdvertiserReportedRevenue: {\r\n type: 'number',\r\n nullable: true,\r\n },\r\n ConversionRate: {\r\n type: 'number',\r\n nullable: true,\r\n },\r\n },\r\n};\r\n\r\nexport const Label = {\r\n name: 'Label',\r\n type: 'object',\r\n key: 'Id',\r\n properties: {\r\n Id: {\r\n type: 'integer',\r\n key: true,\r\n nullable: true,\r\n },\r\n Name: {\r\n type: 'string',\r\n maxLength: 80,\r\n required: true,\r\n },\r\n Description: {\r\n type: 'string',\r\n maxLength: 200,\r\n },\r\n ColorCode: {\r\n type: 'integer',\r\n nullable: true,\r\n },\r\n AssociationCounts: {\r\n type: 'object',\r\n $schema: {\r\n name: 'LabelAssociationCounts',\r\n type: 'object',\r\n properties: {\r\n CampaignCount: {\r\n type: 'integer',\r\n },\r\n AdGroupCount: {\r\n type: 'integer',\r\n },\r\n AdCount: {\r\n type: 'integer',\r\n },\r\n KeywordCount: {\r\n type: 'integer',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n};\r\n\r\nexport const CustomParameter = {\r\n name: 'CustomParameter',\r\n type: 'object',\r\n properties: {\r\n Key: {\r\n type: 'string',\r\n },\r\n Value: {\r\n type: 'string',\r\n },\r\n },\r\n};\r\n\r\nexport const AppUrl = {\r\n name: 'AppUrl',\r\n type: 'object',\r\n properties: {\r\n OsType: {\r\n type: 'string',\r\n },\r\n Url: {\r\n type: 'string',\r\n },\r\n },\r\n};\r\n\r\nexport const Appeal = {\r\n name: 'Appeal',\r\n type: 'object',\r\n properties: {\r\n IsAppealable: {\r\n type: 'boolean',\r\n },\r\n JustificationText: {\r\n type: 'string',\r\n },\r\n },\r\n};\r\n\r\nexport const Ad = {\r\n name: 'Ad',\r\n type: 'object',\r\n key: 'Id',\r\n properties: {\r\n Id: {\r\n type: 'integer',\r\n key: true,\r\n filterable: true,\r\n },\r\n Text: {\r\n type: 'string',\r\n filterable: true,\r\n },\r\n Title: {\r\n type: 'string',\r\n filterable: true,\r\n },\r\n DisplayUrl: {\r\n type: 'string',\r\n filterable: true,\r\n },\r\n DestinationUrl: {\r\n type: 'string',\r\n filterable: true,\r\n },\r\n Type: {\r\n type: 'string',\r\n enum: ['Text', 'Mobile', 'Product', 'AppInstall', 'DynamicSearch', 'ExpandedText', 'Responsive'],\r\n filterable: true,\r\n },\r\n DevicePreference: {\r\n type: 'string',\r\n enum: ['All', 'Mobile'],\r\n nullable: true,\r\n filterable: true,\r\n },\r\n Status: {\r\n type: 'string',\r\n filterable: true,\r\n enum: ['Inactive', 'Active', 'Paused', 'Deleted'],\r\n },\r\n DeliveryStatus: {\r\n type: 'string',\r\n filterable: true,\r\n enum: ['CreditCardExpired', 'IOExceeded', 'PaymentInformationMissing', 'InvalidFinancialStatusOther', 'MigrationPaused', 'CampaignDeleted', 'CampaignSuspended', 'CampaignBudgetPaused', 'DomainLanguageNotSupported', 'ShoppingCampaignStoreNotFound', 'ShoppingCampaignNoOffersPresent', 'AdGroupExpired', 'AdGroupDraft', 'AdGroupDeleted', 'CamAssetRejected', 'CamAssetDeleted', 'AdGroupTargetingTooNarrow', 'EditorialRejected', 'EditorialUnderAppeal', 'UrlInvalid', 'ApplicationNotFound', 'ApplicationDestinationUrlMismatch', 'PendingMetadataSync', 'EditorialPending', 'AssociationDeleted', 'CampaignUserPaused', 'AdGroupPrivacyPending', 'AdGroupUserPaused', 'AdUserPaused', 'KeywordMatchTypeAdGroupMediumCombinationInvalid', 'KeywordUserPaused', 'NegativeKeywordConflicts', 'EditorialApprovedLimited', 'LowSupply', 'LowQuality', 'BidBelowFirstPageBid', 'Incomplete', 'BudgetSuggestions', 'InlineOpportunity', 'GeoCodingIncomplete', 'ProductTargetUserPaused', 'AdExtensionNotPresent', 'AdExtensionDeleted', 'AdExtensionAssociationDeleted', 'StoreIdNotAssociated', 'AdGroupAudienceAssociationPaused', 'AdGroupAudienceAssociationExcluded', 'AdNotPresent', 'AdNotActive', 'ApplicationDestinationUrlValidationIncomplete', 'Eligible', 'DisclaimerInfoRejected'],\r\n },\r\n DeliveryStatusDetails: {\r\n type: 'array',\r\n items: {\r\n type: 'string',\r\n },\r\n },\r\n PerformanceMetrics: {\r\n type: 'object',\r\n $schema: PerformanceMetrics,\r\n },\r\n UpdatedOnLastImport: {\r\n type: 'boolean',\r\n },\r\n TrackingUrlTemplate: {\r\n type: 'string',\r\n filterable: true,\r\n },\r\n UrlCustomParameters: {\r\n type: 'array',\r\n items: {\r\n type: 'object',\r\n $schema: CustomParameter,\r\n },\r\n },\r\n FinalUrls: {\r\n type: 'array',\r\n items: {\r\n type: 'string',\r\n },\r\n },\r\n MobileFinalUrls: {\r\n type: 'array',\r\n items: {\r\n type: 'string',\r\n },\r\n },\r\n AppFinalUrls: {\r\n type: 'array',\r\n items: {\r\n type: 'object',\r\n $schema: AppUrl,\r\n },\r\n },\r\n Appeal: {\r\n type: 'object',\r\n $schema: Appeal,\r\n },\r\n Campaign: {\r\n type: 'object',\r\n filterable: ['Name', 'Id'],\r\n schema: {\r\n properties: {\r\n Name: {\r\n type: 'string',\r\n filterable: true,\r\n },\r\n Id: {\r\n type: 'number',\r\n filterable: true,\r\n },\r\n },\r\n },\r\n alias: {\r\n Name: {\r\n legacy: 'CampaignName',\r\n },\r\n Id: {\r\n legacy: 'CampaignId',\r\n },\r\n },\r\n },\r\n AdGroup: {\r\n type: 'object',\r\n filterable: ['Name', 'Id'],\r\n schema: {\r\n properties: {\r\n Name: {\r\n type: 'string',\r\n filterable: true,\r\n },\r\n Id: {\r\n type: 'number',\r\n filterable: true,\r\n },\r\n },\r\n },\r\n alias: {\r\n Name: {\r\n legacy: 'AdAdGroupName',\r\n },\r\n Id: {\r\n legacy: 'AdGroupId',\r\n },\r\n },\r\n },\r\n Properties: {\r\n type: 'array',\r\n items: {\r\n type: 'object',\r\n },\r\n },\r\n Labels: {\r\n type: 'array',\r\n items: {\r\n type: 'object',\r\n $schema: Label,\r\n },\r\n filterable: true,\r\n },\r\n NativePreference: {\r\n type: 'string',\r\n enum: ['None', 'NativePreference'],\r\n nullable: true,\r\n },\r\n TitlePart1: {\r\n type: 'string',\r\n },\r\n TitlePart2: {\r\n type: 'string',\r\n },\r\n Path1: {\r\n type: 'string',\r\n },\r\n Path2: {\r\n type: 'string',\r\n },\r\n },\r\n};\r\n\r\nexport const mockLabelSchema = {\r\n name: 'Label',\r\n type: 'object',\r\n key: 'Id',\r\n properties: {\r\n Id: {\r\n type: 'integer',\r\n key: true,\r\n nullable: true,\r\n },\r\n Name: {\r\n type: 'string',\r\n maxLength: 80,\r\n required: true,\r\n },\r\n Description: {\r\n type: 'string',\r\n maxLength: 200,\r\n },\r\n ColorCode: {\r\n type: 'integer',\r\n nullable: true,\r\n },\r\n AssociationCounts: {\r\n type: 'object',\r\n $schema: {\r\n name: 'LabelAssociationCounts',\r\n type: 'object',\r\n properties: {\r\n CampaignCount: {\r\n type: 'integer',\r\n },\r\n AdGroupCount: {\r\n type: 'integer',\r\n },\r\n AdCount: {\r\n type: 'integer',\r\n },\r\n KeywordCount: {\r\n type: 'integer',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n};\r\n","import Promise from 'bluebird';\r\nimport _, { map, object } from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport pkg from './package.json';\r\n\r\nexport const { version } = pkg;\r\n\r\nexport { dummyDataSource } from './demo/mock/dummy-data-source';\r\n\r\nexport function getAdsGridFactory(initializeGlobalContext = true) {\r\n if (initializeGlobalContext) {\r\n return globalContext.define(\r\n pkg.legacyDependencies,\r\n () => import(/* webpackMode: 'eager' */ './src/ads-gridview-factory')\r\n );\r\n }\r\n return import(/* webpackMode: 'eager' */ './src/ads-gridview-factory');\r\n}\r\n\r\nconst adEditorDependencies = [\r\n 'campaignui/feature/crud-ad/view/index',\r\n 'component/config/index',\r\n 'module/app/layout/index',\r\n 'SummaryDataContextManager',\r\n];\r\nlet adEditorInitializer = null;\r\n\r\nexport function getAdEditorInitializer(initializeGlobalContext = true) {\r\n if (initializeGlobalContext) {\r\n const adEditorPromise = new Promise((resolve) => {\r\n if (adEditorInitializer) {\r\n resolve(adEditorInitializer);\r\n } else {\r\n window.require(adEditorDependencies, () => {\r\n const dependecies = object(\r\n adEditorDependencies,\r\n map(adEditorDependencies, dep => window.require(dep))\r\n );\r\n\r\n globalContext.define(\r\n adEditorDependencies,\r\n () => import(/* webpackMode: 'eager' */ './src/ads-editor/initialize-ad-editor')\r\n )(dependecies).then((result) => {\r\n adEditorInitializer = result;\r\n resolve(result);\r\n });\r\n });\r\n }\r\n });\r\n return adEditorPromise;\r\n }\r\n return import(/* webpackMode: 'eager' */ './src/ads-editor/initialize-ad-editor');\r\n}\r\n\r\nlet adEditorInitializerWebpack = null;\r\n\r\nexport function getAdEditorInitializerWebpack(\r\n initializeGlobalContext = true,\r\n dependecies\r\n) {\r\n if (initializeGlobalContext) {\r\n const adEditorPromise = new Promise((resolve) => {\r\n if (adEditorInitializerWebpack) {\r\n resolve(adEditorInitializerWebpack);\r\n } else {\r\n globalContext.define(\r\n adEditorDependencies,\r\n () => import(/* webpackMode: 'eager' */ './src/ads-editor/initialize-ad-editor')\r\n )(dependecies).then((result) => {\r\n adEditorInitializerWebpack = result;\r\n resolve(result);\r\n });\r\n }\r\n });\r\n return adEditorPromise;\r\n }\r\n return import(/* webpackMode: 'eager' */ './src/ads-editor/initialize-ad-editor');\r\n}\r\n\r\nfunction isSmartShoppingCampaign(permissions, currentCampaign) {\r\n return permissions.IsSmartShoppingCampaignEnabled && currentCampaign\r\n && (currentCampaign.CampaignSubType === 12\r\n || currentCampaign.CampaignSubType === 'ShoppingSmartAds'); // eslint-disable-line\r\n}\r\n\r\nexport function shouldCallAPIToCreatePA(\r\n currentCampaign, currentAdGroup, permissions,\r\n adsCountMap, isNewUI = false\r\n) {\r\n let shouldCall = false;\r\n\r\n if (currentAdGroup) { // check if ad group level\r\n if (isSmartShoppingCampaign(permissions, currentCampaign)) { // if smart shopping campaign\r\n const isResponsiveAdForSSCEnabled = permissions.IsResponsiveAdForSSCEnabled;\r\n const currentAdsCount = adsCountMap[currentAdGroup.Id];\r\n const hasResponsiveAd = _.result(currentAdsCount, 'Responsive', false);\r\n const hasProductAd = _.result(currentAdsCount, 'Product', false);\r\n\r\n if ((isResponsiveAdForSSCEnabled && hasResponsiveAd && !hasProductAd) ||\r\n (!isResponsiveAdForSSCEnabled && !hasProductAd)) {\r\n shouldCall = true;\r\n }\r\n } else if (currentCampaign.CampaignType === 2\r\n || (isNewUI && currentCampaign.CampaignType === 'Shopping')) {\r\n // in newUI, check if CampaignType === 'Shopping'\r\n shouldCall = true;\r\n }\r\n }\r\n return shouldCall;\r\n}\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\n\r\nconst AdsEditorView = globalContext.requireDefault('campaignui/feature/crud-ad/view/index');\r\nconst appConfig = globalContext.require('component/config/index');\r\nconst layout = globalContext.require('module/app/layout/index');\r\nconst SummaryDataContextManager = globalContext.require('SummaryDataContextManager');\r\nconst permissions = appConfig.get('Permissions') || {};\r\nconst {\r\n IsImpressionTrackingUrlsEnabled,\r\n IsAmplifyEnabled,\r\n EnableIASVerifiedImpressionTrackingURLsForBrandAwarenessCampaign,\r\n dynamic = {},\r\n} = permissions;\r\nconst {\r\n XandrDisplayAdsCampaigns,\r\n EnableDisplayAdsIasTracking,\r\n MultiAdFormat,\r\n} = dynamic;\r\n\r\nconst isIASForAdEnabled = EnableIASVerifiedImpressionTrackingURLsForBrandAwarenessCampaign || (XandrDisplayAdsCampaigns && EnableDisplayAdsIasTracking);\r\n\r\nconst currentAdGroup = appConfig.get('CurrentAdGroup');\r\n\r\nfunction getUpgradedUrl(item) {\r\n const {\r\n FinalUrls, Type, MobileFinalUrls, UrlCustomParameters, TrackingUrlTemplate, FinalUrlSuffix,\r\n DestinationUrl,\r\n } = item;\r\n const isFinal = Type === 'DynamicSearch' ?\r\n !_.isEmpty(UrlCustomParameters) || !_.isEmpty(TrackingUrlTemplate) ||\r\n !_.isEmpty(FinalUrlSuffix) :\r\n !_.isEmpty(FinalUrls);\r\n\r\n if (isFinal) {\r\n return {\r\n FinalUrls,\r\n MobileFinalUrls,\r\n TrackingUrlTemplate,\r\n UrlCustomParameters,\r\n FinalUrlSuffix,\r\n };\r\n }\r\n\r\n return {\r\n DestinationUrl,\r\n };\r\n}\r\n\r\nfunction getBiddingScheme(item) {\r\n const biddingStrategyType = _.get(item, 'Campaign.DisplayBiddingStrategyType');\r\n if (!_.isString(biddingStrategyType || _.isEmpty(biddingStrategyType))) {\r\n return {};\r\n }\r\n\r\n return { BiddingScheme: { Type: biddingStrategyType } };\r\n}\r\n\r\nfunction getModelForCreateOrEdit(item) {\r\n const {\r\n Id,\r\n Type,\r\n Text,\r\n TextPart2,\r\n Title,\r\n FinalUrls,\r\n MobileFinalUrls,\r\n NativePreference,\r\n DevicePreference,\r\n DisplayUrl,\r\n PromotionalText,\r\n TitlePart1,\r\n TitlePart2,\r\n TitlePart3,\r\n Path1,\r\n Path2,\r\n AppStoreId,\r\n AppPlatform,\r\n Headline,\r\n LongHeadline,\r\n TrackingUrlTemplate,\r\n FinalUrlSuffix,\r\n UrlCustomParameters,\r\n BusinessName,\r\n LandscapeImageMediaId,\r\n SquareImageMediaId,\r\n LandscapeLogoMediaId,\r\n SquareLogoMediaId,\r\n CallToAction,\r\n CallToActionLanguage,\r\n CallToActionText,\r\n CallToActionAriaText,\r\n MediaUrl,\r\n DeviceType,\r\n AltText,\r\n Headlines,\r\n LongHeadlines,\r\n Descriptions,\r\n Images,\r\n ImpressionTrackingUrls,\r\n VerifiedTrackingSettings,\r\n Videos,\r\n BoostAnchors,\r\n HotSpots,\r\n Campaign,\r\n AdSubType,\r\n LegacyResponsiveAd,\r\n } = item;\r\n switch (Type) {\r\n case 'Text':\r\n return _.extend({\r\n Id,\r\n Type,\r\n Title,\r\n Text,\r\n DisplayUrl,\r\n DevicePreference,\r\n NativePreference,\r\n }, getUpgradedUrl(item));\r\n case 'ExpandedText':\r\n return _.extend({\r\n Id,\r\n Type,\r\n Text,\r\n TextPart2,\r\n TitlePart1,\r\n TitlePart2,\r\n TitlePart3,\r\n Path1,\r\n Path2,\r\n NativePreference,\r\n DisplayUrl,\r\n }, getUpgradedUrl(item));\r\n case 'Product':\r\n return {\r\n Id,\r\n Type,\r\n PromotionalText,\r\n };\r\n case 'AppInstall':\r\n return _.extend({\r\n Id,\r\n Type,\r\n Title,\r\n Text,\r\n AppStoreId,\r\n AppPlatform,\r\n AltText,\r\n DeviceType,\r\n MediaUrl,\r\n DevicePreference,\r\n }, getUpgradedUrl(item));\r\n case 'DynamicSearch':\r\n return _.extend({\r\n Id,\r\n Type,\r\n Text,\r\n TextPart2,\r\n DisplayUrl,\r\n Path1,\r\n Path2,\r\n DevicePreference,\r\n }, getUpgradedUrl(item));\r\n case 'ResponsiveSearch':\r\n return _.extend({\r\n Id,\r\n Type,\r\n Headlines,\r\n Descriptions,\r\n Path1,\r\n Path2,\r\n NativePreference,\r\n DisplayUrl,\r\n }, getUpgradedUrl(item));\r\n case 'Responsive':\r\n default:\r\n return _.extend(\r\n IsAmplifyEnabled ? { HotSpots } : {},\r\n IsAmplifyEnabled ? { BoostAnchors } : {},\r\n {\r\n Id,\r\n FinalUrls,\r\n MobileFinalUrls,\r\n TrackingUrlTemplate,\r\n UrlCustomParameters,\r\n Text,\r\n Type,\r\n BusinessName,\r\n Headline,\r\n LongHeadline,\r\n Headlines,\r\n LongHeadlines,\r\n Descriptions,\r\n LandscapeImageMediaId,\r\n SquareImageMediaId,\r\n LandscapeLogoMediaId,\r\n SquareLogoMediaId,\r\n CallToAction,\r\n CallToActionLanguage,\r\n CallToActionText,\r\n CallToActionAriaText,\r\n Images,\r\n Videos,\r\n FinalUrlSuffix,\r\n Campaign,\r\n LegacyResponsiveAd,\r\n },\r\n getBiddingScheme(item),\r\n IsImpressionTrackingUrlsEnabled ? { ImpressionTrackingUrls } : {},\r\n isIASForAdEnabled ? { VerifiedTrackingSettings } : {},\r\n MultiAdFormat ? { AdSubType } : {}\r\n );\r\n }\r\n}\r\n\r\nexport function initializeAdEditor({\r\n scope,\r\n gridView,\r\n item = {},\r\n firstTextItem = {},\r\n firstExpandedItem = {},\r\n firstResponsiveSearchItem = {},\r\n isForVNext = false,\r\n newI18n,\r\n inlineSuggestionsEnabled = false,\r\n lazyInject,\r\n showSaveAndCreateAnother = true,\r\n isOpenCreatePanel = false,\r\n shouldSendOpportunityLog,\r\n logOpportunity,\r\n perfMarker,\r\n serverContext,\r\n preferenceService,\r\n triggerAdItemRefresh = false,\r\n navigateToSingleAdEditor = _.noop,\r\n}) {\r\n const parameters = _.extend({\r\n className: isForVNext ? 'panel' : '',\r\n isForVNext,\r\n newI18n,\r\n inlineSuggestionsEnabled,\r\n isTraditionalChinese: currentAdGroup && currentAdGroup.Language === 24,\r\n campaignType: item && item.Campaign ? item.Campaign.CampaignType : null,\r\n campaignSubType: item && item.Campaign ? item.Campaign.CampaignSubType : null,\r\n isDynamicDescriptionEnabled: item && item.Campaign && item.Campaign.CampaignSettings ? _.result(_.first(item.Campaign.CampaignSettings), 'DynamicDescriptionEnabled') : null,\r\n showSaveAndCreateAnother,\r\n isOpenCreatePanel,\r\n shouldSendOpportunityLog,\r\n logOpportunity,\r\n parentPerfMarker: perfMarker,\r\n serverContext,\r\n preferenceService,\r\n }, scope);\r\n\r\n if (!_.isEmpty(item)) {\r\n parameters.model = getModelForCreateOrEdit(item);\r\n }\r\n\r\n if (!_.isEmpty(firstTextItem)) {\r\n parameters.firstTextAdModel = getModelForCreateOrEdit(firstTextItem);\r\n }\r\n if (!_.isEmpty(firstExpandedItem)) {\r\n parameters.firstExpandedTextAdModel = getModelForCreateOrEdit(firstExpandedItem);\r\n }\r\n if (!_.isEmpty(firstResponsiveSearchItem)) {\r\n parameters.firstResponsiveSearchAdModel = getModelForCreateOrEdit(firstResponsiveSearchItem);\r\n }\r\n\r\n if (parameters.campaignType === 'LinkedIn') {\r\n navigateToSingleAdEditor({\r\n campaignId: item.Campaign.Id,\r\n adGroupId: item.AdGroup.Id,\r\n adId: item.Id,\r\n });\r\n return;\r\n }\r\n\r\n const adEditor = new AdsEditorView(parameters);\r\n const backboneGridView = lazyInject ? lazyInject().backboneGridView : gridView;\r\n const { gridDidUpdateHandler } = backboneGridView;\r\n\r\n if (isForVNext) {\r\n backboneGridView.overrideWith(adEditor.render());\r\n\r\n adEditor.on('close', () => {\r\n backboneGridView.overrideWith(null);\r\n adEditor.remove();\r\n if (_.isFunction(gridDidUpdateHandler)) {\r\n gridDidUpdateHandler();\r\n }\r\n });\r\n\r\n adEditor.on('adgroup selected', (adGroup) => {\r\n if (_.get(adGroup, 'Campaign.CampaignType') !== 'LinkedIn') { return; }\r\n\r\n navigateToSingleAdEditor({\r\n campaignId: adGroup.Campaign.Id,\r\n adGroupId: adGroup.Id,\r\n });\r\n });\r\n } else {\r\n const editSelector = '#adEditContainer';\r\n const editorContainer = $(editSelector);\r\n\r\n editorContainer.empty().append(adEditor.render().el).show();\r\n const el = editorContainer.find('.form-control:visible:first');\r\n if (el) {\r\n el.focus();\r\n }\r\n\r\n layout.scrollTo(editorContainer);\r\n const { toolbar } = gridView.grid;\r\n const gridContainer = gridView.$el.closest('.bingadsgrid');\r\n const gridToolbar = gridContainer.find('.grid-toolbar');\r\n gridToolbar.hide();\r\n toolbar.gridToolbarGroup.hideAllToolbars();\r\n\r\n adEditor.on('close', () => {\r\n // show toolbar\r\n gridToolbar.show();\r\n editorContainer.hide();\r\n toolbar.gridToolbarGroup.showAllToolbars();\r\n adEditor.remove();\r\n });\r\n }\r\n\r\n adEditor.on('save', () => {\r\n SummaryDataContextManager.updateContext(['AdGrid']);\r\n backboneGridView.view.refresh(true);\r\n if (triggerAdItemRefresh) {\r\n backboneGridView.grid.showAdStrength.refreshAdItem();\r\n }\r\n });\r\n}\r\n","import _ from 'underscore';\r\n\r\nconst StrengthIcon = {\r\n Poor: 'Error',\r\n Average: 'Warning',\r\n Good: 'Completed',\r\n Excellent: 'Completed',\r\n};\r\n\r\nexport function getStrengthIcon(strength) {\r\n return StrengthIcon[strength] || 'Error';\r\n}\r\n\r\nexport function getActionItems({ i18n, actionItems }) {\r\n const actionItemsList = [];\r\n _.each(actionItems, (item) => {\r\n actionItemsList.push(i18n.getString(`Ad_Strength_Suggestion_${item}`));\r\n });\r\n return actionItemsList;\r\n}\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { Label, mergeStyleSets, Callout, DirectionalHint } from '@fluentui/react';\r\nimport { HelpIcon } from '@bingads-webui-campaign-react/help';\r\nimport { PrimaryButton } from '@fluentui/react/lib/Button';\r\nimport { NewAdStrengthScore } from '@bingads-webui-campaign-react/responsive-search-ad-suggestion';\r\nimport { FontIcon } from '@fluentui/react/lib/Icon';\r\n\r\nimport { getAdEditorInitializer, getAdEditorInitializerWebpack } from '../../index';\r\nimport { getActionItems, getStrengthIcon } from './ad-strength-helper';\r\n\r\nfunction showAdEditor({\r\n adStrengthEntity, adsGrid,\r\n}) {\r\n const { Campaign: campaign, AdGroup: adgroup, Type: type } = adStrengthEntity;\r\n const campaignId = (campaign && campaign.Id) || 0;\r\n const adGroupId = (adgroup && adgroup.Id) || 0;\r\n const {\r\n newI18n,\r\n IsRSASuggestionCMUIEnabled,\r\n deps,\r\n shouldSendOpportunityLog,\r\n logOpportunity,\r\n adsTabPerfMarker,\r\n serverContext,\r\n preferenceService,\r\n } = adsGrid;\r\n const initializer = deps\r\n ? () => getAdEditorInitializerWebpack(\r\n true,\r\n deps.adEditorDependencies\r\n )\r\n : getAdEditorInitializer;\r\n const inlineSuggestionsEnabled =\r\n type === 'ResponsiveSearch' ?\r\n IsRSASuggestionCMUIEnabled : false;\r\n ReactDOM.unmountComponentAtNode(document.querySelector('#rejectionContainer'));\r\n initializer().then(({ initializeAdEditor }) => {\r\n initializeAdEditor({\r\n scope: {\r\n campaignId,\r\n adGroupId,\r\n campaignType: _.result(campaign, 'CampaignType'),\r\n },\r\n gridView: adsGrid,\r\n newI18n,\r\n item: adStrengthEntity,\r\n isForVNext: true,\r\n inlineSuggestionsEnabled,\r\n shouldSendOpportunityLog,\r\n logOpportunity,\r\n perfMarker: adsTabPerfMarker,\r\n serverContext,\r\n preferenceService,\r\n });\r\n });\r\n}\r\nexport function renderSuggestionPopup({\r\n i18n, event, containerDOM, adStrengthEntity, adsGrid, closeAdStrengthPopup,\r\n}) {\r\n const {\r\n AdStrength, AdStrengthActionItems, Id, AdGroup, Campaign, FinalUrls,\r\n } = adStrengthEntity;\r\n const { customerId: cid, accountId: aid } = adsGrid.scope;\r\n const actionItemsStrings = getActionItems({ i18n, actionItems: AdStrengthActionItems }) || [];\r\n const iconName = getStrengthIcon(AdStrength);\r\n const styles = mergeStyleSets({\r\n callout: {\r\n width: 'fit-content',\r\n padding: '20px 24px 20px 24px',\r\n fontSize: '12px',\r\n },\r\n pendingcallout: {\r\n width: 320,\r\n padding: '20px 24px',\r\n fontSize: '12px',\r\n },\r\n container: {},\r\n title: {\r\n marginBottom: 12,\r\n '& label': {\r\n fontSize: '20px',\r\n },\r\n },\r\n chart: {\r\n '& .ad-strength-title': {\r\n fontWeight: 600,\r\n fontSize: '14px',\r\n '& .icon': {\r\n fontSize: 10,\r\n marginRight: 4,\r\n height: 20,\r\n width: 20,\r\n lineHeight: '20px',\r\n fontWeight: 600,\r\n textAlign: 'center',\r\n borderRadius: '50%',\r\n },\r\n '& .Poor': {\r\n color: '#BC0505',\r\n background: '#FDE7E9',\r\n },\r\n '& .Average': {\r\n color: '#D83B01',\r\n background: '#FFF4CE',\r\n },\r\n '& .Good': {\r\n color: '#107C10',\r\n background: '#DFF6DD',\r\n },\r\n '& .Excellent': {\r\n color: '#107C10',\r\n background: '#DFF6DD',\r\n },\r\n },\r\n '& .ad-strength-score-vnext': {\r\n marginTop: 8,\r\n },\r\n },\r\n body: {\r\n padding: '10px 0px 0px 0px',\r\n listStylePosition: 'inside',\r\n },\r\n link: {\r\n fontWeight: '700',\r\n },\r\n });\r\n\r\n ReactDOM.render(\r\n (\r\n
\r\n { AdStrength &&\r\n \r\n { AdStrength === 'Pending' ?\r\n
{i18n.getString('Ad_Strength_Pending_Message')}
:\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n {i18n.getString(`Ad_Strength_${AdStrength}_Performance`)}\r\n
\r\n \r\n
\r\n
    \r\n {actionItemsStrings.map(item =>\r\n
  • {item}
  • )}\r\n
\r\n {\r\n adsGrid.activityAdStrengthLogger.signal(`ad strength click improve ad - campaignId:{\"AdId\":\"${Id}\",\"OrderId\":\"${AdGroup.Id}\",\"CampaignId\":\"${Campaign && Campaign.Id}\",\"cid\":\"${cid}\",\"aid\":\"${aid}\",\"FinalUrls\": \"${FinalUrls && FinalUrls.toString()}\",\"adstrength\":\"${AdStrength}\"}`);\r\n showAdEditor({\r\n adsGrid,\r\n adStrengthEntity,\r\n });\r\n }}\r\n > {i18n.getString('Ad_Strength_Improve_ad')}\r\n \r\n
\r\n }\r\n
\r\n }\r\n
\r\n ),\r\n containerDOM\r\n );\r\n}\r\n","export const instrumentationSchema = {\r\n scenario: [\r\n {\r\n name: 'adsGrid',\r\n value: 'Ads Grid',\r\n activity: [\r\n {\r\n name: 'fetchRejectionReason',\r\n value: 'Fetch Rejection Reason',\r\n },\r\n {\r\n name: 'loadRSAAssetReportLink',\r\n value: 'Load RSA Asset Report Link',\r\n },\r\n {\r\n name: 'adStrength',\r\n value: 'RSA ad strength',\r\n },\r\n ],\r\n }],\r\n};\r\n","/* eslint-disable no-bitwise */\r\n/* istanbul ignore file */\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport $ from 'jquery';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { getEditorialTemplates, ENTITY } from '@bingads-webui-campaign/delivery-status-popup-factory';\r\nimport { queryify } from '@bingads-webui/url-util';\r\nimport { http } from '@bingads-webui/http-util';\r\nimport { DisclaimerAdExtension } from '@bingads-webui-campaign/campaign-ui-schemas';\r\n\r\nconst odata = globalContext.require('module/service/communication/channel/odata');\r\nconst SharedRepository = globalContext.require('campaignui/feature/adextension-shared/service/repository');\r\n\r\nfunction fetchRejectionReasons({ scope, ad }) {\r\n const url = `Advertiser/Customers(${scope.customerId})/Accounts(${scope.accountId})/Ads/Default.EditorialReasons`;\r\n return odata.post(url, {\r\n EntityIdsParentIds: [{ EntityId: ad.Id, ParentId: ad.AdGroup.Id }],\r\n });\r\n}\r\n\r\nexport function getReasonTemplates({\r\n ad, scope, errI18n, locationI18n, editorialRejection,\r\n i18n, commonI18n, logScenario, permissions,\r\n}, deliveryStatus) {\r\n return new Promise((resolve) => {\r\n const logActivity = logScenario.fetchRejectionReason.create();\r\n // Log if Ad Id is invalid\r\n if (!ad.Id || !_.isNumber(ad.Id)) {\r\n logActivity.error(`Invalid Ad Id: ${ad.Id}`);\r\n }\r\n const IsForDisclaimer = _.contains(['DisclaimerInfoRejected', 'DisclaimerInfoApprovedLimited', 'DisclaimerInfoRejectedAppealRejected', 'DisclaimerInfoApprovedLimitedAppealRejected'], deliveryStatus);\r\n if (IsForDisclaimer) {\r\n const disclaimerRepos = new SharedRepository({\r\n schema: DisclaimerAdExtension,\r\n afterChangeComitted: _.noop,\r\n });\r\n disclaimerRepos.association.findAll({\r\n where: {\r\n campaignId: ad.Campaign.Id,\r\n },\r\n }).then((disclaimerData) => {\r\n let url = '/campaign/AdExtensions.m/GetRejectionReasonData';\r\n const args = _.extend({\r\n aid: scope.accountId,\r\n cid: scope.customerId,\r\n cmpid: scope.campaignId,\r\n type: 'disclaimer',\r\n adExtensionId: disclaimerData && disclaimerData[0] && disclaimerData[0].Id,\r\n campaignId: scope.campaignId || ad.Campaign.Id,\r\n version: disclaimerData && disclaimerData[0] && disclaimerData[0].Version,\r\n });\r\n url = queryify(url, args);\r\n return http.post({\r\n url,\r\n data: { __RequestVerificationToken: $('input[name=\"__RequestVerificationToken\"]').val() },\r\n contentType: 'application/x-www-form-urlencoded',\r\n }).then(({\r\n RejectionReasons,\r\n IsAppealable,\r\n }) => {\r\n const reasonTemplates = getEditorialTemplates({\r\n reasons: _.map(RejectionReasons, Reason => ({\r\n ReasonCode: Reason.ReasonCode,\r\n Location: Reason.Location,\r\n LanguageToCountries: [{\r\n PublisherCountries: Reason.RejectionCountries,\r\n }],\r\n })),\r\n editorialRejection,\r\n errI18n,\r\n i18n,\r\n locationI18n,\r\n commonI18n,\r\n entity: ENTITY.EXTENSION,\r\n deliveryStatus,\r\n permissions,\r\n isAppealable: IsAppealable,\r\n });\r\n resolve(reasonTemplates);\r\n });\r\n });\r\n } else {\r\n // send request to fetch editorial reasons\r\n fetchRejectionReasons({ scope, ad }).then((data) => {\r\n const { value } = data;\r\n if (!value || _.isEmpty(value) || _.isEmpty(value[0].Reasons)) resolve([i18n.getString('NoRejectionReasonFound')]);\r\n\r\n if (logActivity.signal && !value[0].IsAppealable) {\r\n logActivity.signal(`not appealable ad: ${ad.Id}`);\r\n }\r\n\r\n const options = {\r\n reasons: value[0].Reasons,\r\n editorialRejection,\r\n errI18n,\r\n i18n,\r\n locationI18n,\r\n commonI18n,\r\n logActivity,\r\n entity: ENTITY.AD,\r\n deliveryStatus,\r\n ad,\r\n isAppealable: value[0].IsAppealable,\r\n permissions,\r\n isDetectionRejectionTypeEnabled: permissions && permissions.dynamic && permissions.dynamic.DetectionRejectionType,\r\n };\r\n const reasonTemplates = getEditorialTemplates(options);\r\n\r\n resolve(reasonTemplates);\r\n });\r\n }\r\n });\r\n}\r\n","import _, { chain } from 'underscore';\r\nimport $ from 'jquery';\r\nimport URI from 'urijs';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { mergeStyleSets, Callout, DirectionalHint } from '@fluentui/react';\r\n\r\nimport { DeterministicWrapperView } from '@bingads-webui/deterministic-wrapper-view';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { getFilteredCampaignTypeFromRawFilter } from '@bingads-webui-campaign/campaign-ui-common';\r\nimport { showLabelsPopup, filterOnLabelClick, navigateToManagePage } from '@bingads-webui-campaign/labels';\r\nimport { DeliveryStatusPopupFactory, isDeliveryStatusDisapproved, registerCountryListEvent } from '@bingads-webui-campaign/delivery-status-popup-factory';\r\nimport { updateGridQuery, appendScopeParameter, setUpErrorHandling } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { StyledMMABulkConversionView } from '@bingads-webui-campaign/responsive-ad-editor';\r\nimport { pgridFactory } from '@bingads-webui-campaign/pgrid-factory';\r\nimport { PageReady } from '@bingads-webui/page-ready';\r\nimport { getRoutePathById, allSiteMap } from '@bingads-webui-react/with-site-map';\r\nimport { keyVault } from '@bingads-webui-react/popup-manager';\r\nimport { HelpLink } from '@bingads-webui-react/help-link';\r\n\r\nimport { renderSuggestionPopup } from './ad-strength/suggestion-popup';\r\nimport { instrumentationSchema } from './instrumentation-schema';\r\nimport { getReasonTemplates } from './editorial-reason/show-rejection-reasons';\r\n\r\nconst appConfig = globalContext.require('component/config/index');\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/ads-tab');\r\nconst AppealAggregator = globalContext.requireDefault('campaignui/feature/editorial-appeal/aggregator');\r\n\r\nconst locationI18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/location-targets');\r\nconst commonI18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/ads-tab/common');\r\nconst errI18n = globalContext.require('component/api-errors-campaign/index');\r\nconst editorialRejection = globalContext.require('component/api-errors-campaign/map/editorialRejectionFwdLinkId');\r\nconst { handleSortChange } = globalContext.require('campaignui/feature/bingadsgrid/service/state-manager-helper');\r\nconst instrumentation = globalContext.requireDefault('campaignui/feature/instrumentation/index');\r\nconst Hotkeys = globalContext.require('component/hotkeys/index');\r\nconst CopyPaste = globalContext.require('module/view/bulkEdit/copyPaste');\r\nconst state = globalContext.require('component/state/index');\r\nconst preferenceService = globalContext.requireDefault('component/preference/service/index');\r\nconst popupContentKey = _.uniqueId(`${keyVault.hoveringPopup}-`);\r\n\r\nconst permissions = appConfig.get('Permissions');\r\n\r\nexport class AdsGrid extends DeterministicWrapperView {\r\n viewFactory({\r\n router,\r\n scope,\r\n filterService,\r\n preferenceConfig,\r\n getGridConfig,\r\n getPlugins,\r\n isForVNext = false,\r\n pageName,\r\n preexecuteFlag = false,\r\n campaignContext,\r\n newI18n,\r\n deps,\r\n serverContext,\r\n shouldSendOpportunityLog,\r\n logOpportunity,\r\n adsTabPerfMarker,\r\n }) {\r\n this.isInitialGrid = true;\r\n this.gridRemoved = false;\r\n this.instrumentation = instrumentation;\r\n\r\n const gridConfig = getGridConfig(this);\r\n\r\n this.deps = deps;\r\n this.serverContext = serverContext;\r\n this.preferenceService = preferenceService;\r\n this.shouldSendOpportunityLog = shouldSendOpportunityLog;\r\n this.logOpportunity = logOpportunity;\r\n this.adsTabPerfMarker = adsTabPerfMarker;\r\n this.gridName = gridConfig.name;\r\n this.isForVNext = isForVNext;\r\n this.scope = scope;\r\n this.router = router;\r\n this.newI18n = newI18n;\r\n this.filterService = filterService;\r\n instrumentation.addScenario(instrumentationSchema);\r\n this.logScenario = instrumentation.adsGrid.create();\r\n this.activityLogger = this.logScenario.loadRSAAssetReportLink && this.logScenario.loadRSAAssetReportLink.create();\r\n this.activityAdStrengthLogger = this.logScenario.adStrength && this.logScenario.adStrength.create();\r\n\r\n\r\n this.rejectionPopupContainerSelector = '#rejectionContainer';\r\n this.ExtaDeprecatedPopupContainerSelector = '#deprecatedContainer';\r\n this.popoverId = 'delivery-status-popup-callout';\r\n this.appealAggregator = null;\r\n this.disclaimerAppealAggregator = null;\r\n this.pageName = pageName;\r\n this.preexecuteFlag = preexecuteFlag;\r\n this.campaignContext = campaignContext;\r\n this.isMCCLabelEnabled = permissions ? permissions.IsAccountLabelsEnabled : false;\r\n this.isEditorialCategoryEnabled = permissions && permissions.IsEditorialCategoryEnabled;\r\n this.isEnabledForGoogleImportVideoAd = permissions && permissions.IsGoogleImportVideoAdsEnabled;\r\n\r\n if (!permissions.dynamic.AdsPageDFMV2) {\r\n // If DFMv2 is disabled, we need to add the error handler for dataSource\r\n setUpErrorHandling({\r\n i18n,\r\n scope,\r\n gridView: this,\r\n dataSource: gridConfig.dataSource,\r\n });\r\n }\r\n\r\n const RequestExceptionCallBack =\r\n (adsGrid, isAdGroupLevel, container = null, render = false) => {\r\n if (!this || !this.appealAggregator) {\r\n this.appealAggregator = new AppealAggregator({\r\n grid: adsGrid.grid,\r\n controller: 'Ads',\r\n submit: 'SubmitAppeal',\r\n menuToFollow: 'button-ad-create',\r\n isForVNext: this.isForVNext,\r\n permissions,\r\n instrumentation,\r\n });\r\n }\r\n this.appealAggregator.openBulkEditor(\r\n i18n.getString('bulkAdAppealTitle'),\r\n container, isAdGroupLevel ? 'Ad' : null,\r\n render,\r\n i18n.getString('RequestException_Ads_Info_Message')\r\n );\r\n return this.appealAggregator.bulkEditor;\r\n };\r\n\r\n const RequestDisclaimerExceptionCallBack =\r\n (adsGrid) => {\r\n if (!this || !this.disclaimerAppealAggregator) {\r\n this.disclaimerAppealAggregator = new AppealAggregator({\r\n grid: adsGrid.grid,\r\n controller: 'Extension',\r\n submit: 'SubmitAppeal',\r\n menuToFollow: 'button-ad-create',\r\n isForVNext: this.isForVNext,\r\n permissions,\r\n instrumentation,\r\n requestExceptionFromPopup: true,\r\n });\r\n }\r\n this.disclaimerAppealAggregator.openBulkEditor(\r\n i18n.getString(_TL_('This extension does not meet Microsoft Advertising policies. If you feel your content falls within policy, please submit an appeal and we will happily review the content again. ')),\r\n null, null,\r\n false, null,\r\n _.extend(this.scope.values, { type: 'disclaimer' })\r\n );\r\n return this.disclaimerAppealAggregator.bulkEditor;\r\n };\r\n\r\n\r\n const RequestDisclaimerExceptionCallBackFromPopup = (adsGrid, id) => {\r\n const activity = this.instrumentation && this.instrumentation.editorial && this.instrumentation.editorial.create().clickRequestException.create();\r\n\r\n if (activity && activity.trace) {\r\n activity.trace(`click discliamer request exception for ad: ${id}`);\r\n }\r\n\r\n if (this.isForVNext) {\r\n this.trigger('closeDeliveryStatusPopup');\r\n } else {\r\n $(this.rejectionPopupContainerSelector).hide();\r\n }\r\n\r\n adsGrid.grid.gridView.deselectAll();\r\n adsGrid.grid.gridView.selectRow(id);\r\n const appealView = RequestDisclaimerExceptionCallBack(adsGrid);\r\n adsGrid.overrideWith(appealView.render());\r\n\r\n appealView.on('hide', () => {\r\n adsGrid.overrideWith(null);\r\n appealView.remove();\r\n });\r\n\r\n return appealView;\r\n };\r\n\r\n const RequestExceptionCallBackFromPopup = (adsGrid, isAdGroupLevel, id) => {\r\n const activity = this.instrumentation && this.instrumentation.editorial && this.instrumentation.editorial.create().clickRequestException.create();\r\n\r\n if (activity && activity.trace) {\r\n activity.trace(`click request exception for ad: ${id}, isAdGroupLevel: ${isAdGroupLevel}`);\r\n }\r\n\r\n if (this.isForVNext) {\r\n this.trigger('closeDeliveryStatusPopup');\r\n } else {\r\n $(this.rejectionPopupContainerSelector).hide();\r\n }\r\n\r\n adsGrid.grid.gridView.selectRow(id);\r\n\r\n if (isForVNext) {\r\n const appealView = RequestExceptionCallBack(adsGrid, isAdGroupLevel);\r\n adsGrid.overrideWith(appealView.render());\r\n\r\n appealView.on('hide', () => {\r\n adsGrid.overrideWith(null);\r\n appealView.remove();\r\n });\r\n\r\n return appealView;\r\n }\r\n\r\n return RequestExceptionCallBack(adsGrid, isAdGroupLevel, '.ads-bulk-appeal', true);\r\n };\r\n\r\n this.RequestExceptionCallBack = RequestExceptionCallBack;\r\n this.MMABulkConversion = StyledMMABulkConversionView;\r\n this.RequestExceptionCallBackFromPopup = RequestExceptionCallBackFromPopup;\r\n this.RequestDisclaimerExceptionCallBackFromPopup = RequestDisclaimerExceptionCallBackFromPopup;\r\n\r\n this.grid = pgridFactory({\r\n gridConfig,\r\n plugins: getPlugins(this),\r\n preferenceConfig,\r\n });\r\n\r\n this.grid.gridView.on('willUpdate', (changes) => {\r\n // for the perf issue, should not patch preference when init view\r\n if (this.isInitialGrid) {\r\n this.isInitialGrid = false;\r\n return;\r\n }\r\n const data = this.grid.gridView.dataSource.rawData;\r\n if (data && data.value) {\r\n const rsaList = _.filter(data.value, item => item.Type && item.Type === 'ResponsiveSearch');\r\n if (_.size(rsaList) > 0 && this.activityLogger) {\r\n this.activityLogger.trace('Load RSA in Ads Grid');\r\n }\r\n }\r\n handleSortChange(changes, this.grid.gridView, gridConfig.name);\r\n });\r\n\r\n this.grid.gridView.once('didReload', () => {\r\n this.grid.gridView.once('didRedraw', () => {\r\n PageReady.pageIsReady(this.pageName);\r\n }, this);\r\n });\r\n\r\n const bulkEditGridOptions = {\r\n filterService,\r\n gridView: this.grid.gridView,\r\n pgridPlugins: this.grid,\r\n isForVNext: this.isForVNext,\r\n };\r\n\r\n if (!this.preexecuteFlag && permissions.IsBulkEditCopyPasteEnabled) {\r\n Hotkeys.on('copy', CopyPaste.copy.bind(CopyPaste, 'ad', bulkEditGridOptions));\r\n\r\n if (this.isForVNext) {\r\n Hotkeys.on('paste', this.grid.paste.onClick);\r\n } else {\r\n Hotkeys.on('paste', CopyPaste.paste.bind(CopyPaste, bulkEditGridOptions));\r\n }\r\n Hotkeys.setup();\r\n }\r\n\r\n if (isForVNext) {\r\n this.filterService.on('filter-state-changed', () => {\r\n if (!this.gridRemoved) {\r\n const oldQuery = _.result(this.grid.gridView.get('query'), 'filter');\r\n const newQuery = _.result(this.filterService.getCombinedFilter(), 'query');\r\n // If filter has not changed, do not update grid query\r\n if (!_.isEqual(oldQuery, newQuery)) {\r\n updateGridQuery(\r\n this.grid.gridView,\r\n this.filterService.getCombinedFilter(), true\r\n );\r\n }\r\n }\r\n });\r\n }\r\n\r\n this.grid.gridView.on('didUpdate', () => {\r\n this.gridDidUpdateHandler();\r\n });\r\n\r\n this.grid.pagination.on('change:page-number', (pageNumber) => {\r\n this.setPageNumberToState(pageNumber);\r\n });\r\n\r\n return this.grid.gridView;\r\n }\r\n\r\n gridDidUpdateHandler = () => {\r\n const data = this.grid.gridView.dataSource.rawData;\r\n setTimeout(() => { // wait for toolbar displayed\r\n if (data) {\r\n const count = data['@ns.unfiltered.count'];\r\n this.setCreateBtnDisabled(this.shouldDisableCreateBtn(count));\r\n } else {\r\n this.setCreateBtnDisabled(this.shouldDisableCreateBtn(null));\r\n }\r\n });\r\n };\r\n\r\n remove() {\r\n if (!this.preexecuteFlag && permissions.IsBulkEditCopyPasteEnabled) {\r\n Hotkeys.reset();\r\n }\r\n this.gridRemoved = true;\r\n return super.remove();\r\n }\r\n\r\n setPageNumberToState(number) {\r\n state.set('pgridPageNumber', _.defaults({\r\n [this.gridName]: number,\r\n }, state.get('pgridPageNumber') || {}));\r\n }\r\n\r\n setCreateBtnDisabled(shouldDisableCreateBtn) {\r\n if (shouldDisableCreateBtn) {\r\n $('#button-ad-create').attr('disabled', 'disabled');\r\n } else {\r\n $('#button-ad-create').prop('disabled', false);\r\n }\r\n }\r\n\r\n shouldDisableCreateBtn(count) {\r\n const { waterfallFilters } = this.filterService;\r\n const getCampaignTypeGlobalFilter = () => {\r\n const rawFilter = chain(waterfallFilters).first().value();\r\n return getFilteredCampaignTypeFromRawFilter(rawFilter);\r\n };\r\n\r\n let campaign = appConfig.get('CurrentCampaign');\r\n const CurrentAccount = appConfig.get('CurrentAccount');\r\n if (this.isForVNext && this.campaignContext) {\r\n campaign = this.campaignContext.currentCampaign;\r\n }\r\n const isAudienceFeedBasedCampaignLevel = campaign &&\r\n (campaign.CampaignType === 8 || campaign.CampaignType === 'Audience') &&\r\n _.result(_.first(campaign.CampaignSettings), 'ProviderId');\r\n const { IsReadOnlyUser, IsResponsiveAdForSSCEnabled } = permissions;\r\n\r\n if (campaign && (campaign.CampaignSubType === 'ShoppingSmartAds' || campaign.CampaignSubType === 12)) {\r\n return count >= (IsResponsiveAdForSSCEnabled ? 2 : 1);\r\n }\r\n\r\n // if current campaign is hotel campaign, disable create button.\r\n if (permissions.dynamic && permissions.dynamic.HotelCampaign) {\r\n if (getCampaignTypeGlobalFilter() === 32 || (campaign && (campaign.CampaignType === 32 || campaign.CampaignType === 'Hotel'))) {\r\n return true;\r\n }\r\n }\r\n\r\n return !!((CurrentAccount && CurrentAccount.Status === 32) ||\r\n isAudienceFeedBasedCampaignLevel || IsReadOnlyUser);\r\n }\r\n\r\n renderTrunk() {\r\n if (this.isForVNext) {\r\n this.filterService.refreshSource();\r\n this.filterService.initializeCombinedFilterPromise.then(() => {\r\n if (!this.gridRemoved) {\r\n updateGridQuery(\r\n this.grid.gridView,\r\n this.filterService.getCombinedFilter(), true\r\n );\r\n }\r\n });\r\n }\r\n super.renderTrunk();\r\n }\r\n\r\n getTargetEnity(event) {\r\n const key = this.grid.gridView.keyOfElement(event.target);\r\n\r\n return this.grid.gridView.itemWithKey(key);\r\n }\r\n\r\n onManageLabelsClicked() {\r\n navigateToManagePage(this.router);\r\n }\r\n\r\n onLabelClicked(event) {\r\n const targetEntity = this.getTargetEnity(event);\r\n filterOnLabelClick(\r\n event,\r\n targetEntity.Labels,\r\n this.grid.gridView,\r\n this.filterService,\r\n this.isMCCLabelEnabled\r\n );\r\n }\r\n\r\n onLabelsRowClicked(event) {\r\n const targetEntity = this.getTargetEnity(event);\r\n let entityName;\r\n\r\n if (targetEntity.Type === 'ExpandedText') {\r\n if (permissions.IsExpandedTextAdV2Enabled && targetEntity.TitlePart3) {\r\n entityName = `${targetEntity.TitlePart1} | ${targetEntity.TitlePart2} | ${targetEntity.TitlePart3}`;\r\n } else {\r\n entityName = `${targetEntity.TitlePart1} | ${targetEntity.TitlePart2}`;\r\n }\r\n } else {\r\n entityName = targetEntity.Title || targetEntity.Text;\r\n }\r\n\r\n this.grid.gridView.trigger('willShowLabelsPopup');\r\n\r\n showLabelsPopup({\r\n labels: targetEntity.Labels,\r\n entityType: 'Ad',\r\n entityName,\r\n container: this.isForVNext ? $('.grid-and-disclaim-container') : this.$el,\r\n event,\r\n router: this.router,\r\n i18n,\r\n grid: this.grid,\r\n filterService: this.filterService,\r\n permissions,\r\n isMCCLabelEnabled: this.isMCCLabelEnabled,\r\n });\r\n if (this.isForVNext) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n onLinkToAssets(event) {\r\n const targetEntity = this.getTargetEnity(event);\r\n let adType = targetEntity.Type;\r\n const campaignType = targetEntity.Campaign && targetEntity.Campaign.CampaignType;\r\n const CampaignSubType = targetEntity.Campaign && targetEntity.Campaign.CampaignSubType;\r\n let adSubType = targetEntity.AdSubType;\r\n if (campaignType === 'Audience' && CampaignSubType === 'AudienceStatic' && adSubType === null) {\r\n adSubType = 'native';\r\n }\r\n\r\n if (targetEntity.Type === 'Responsive') {\r\n if (permissions.dynamic && permissions.dynamic.AudienceAssetReport && campaignType === 'Audience') {\r\n adType = 'Responsive';\r\n } else if (_.isEmpty(targetEntity.Headline) && _.isEmpty(targetEntity.Headlines) &&\r\n _.isEmpty(targetEntity.LongHeadline) && _.isEmpty(targetEntity.LongHeadlines) &&\r\n _.isEmpty(targetEntity.Text) && _.isEmpty(targetEntity.Descriptions)) {\r\n adType = 'DynamicResponsive';\r\n }\r\n }\r\n if (this.activityLogger) {\r\n this.activityLogger.trace(`Click Link to Assets:${adType}`);\r\n }\r\n this.router.navigateToRoute('adgroup_ad_assets', Object.assign({\r\n customer_id: state.get('customer_id'),\r\n account_id: state.get('account_id'),\r\n campaign_id: (targetEntity.Campaign && targetEntity.Campaign.Id) || state.get('campaign_id'),\r\n adgroup_id: (targetEntity.AdGroup && targetEntity.AdGroup.Id) || state.get('adgroup_id'),\r\n ad_id: targetEntity.Id,\r\n ad_type: adType,\r\n campaign_type: campaignType,\r\n }, adSubType ? {\r\n ad_sub_type: adSubType,\r\n } : {}));\r\n }\r\n\r\n addEditorialHandler({ ad, popupView }) {\r\n popupView.$('#requestException').on('click', _.partial(this.RequestExceptionCallBackFromPopup, this, false, ad.Id));\r\n popupView.$('#requestExceptionforExtension').on('click', _.partial(this.RequestDisclaimerExceptionCallBackFromPopup, this, ad.Id));\r\n popupView.$('#requestExceptionAdgroupLevel').on('click', _.partial(this.RequestExceptionCallBackFromPopup, this, true, ad.Id));\r\n const activity = this.instrumentation && this.instrumentation.editorial && this.instrumentation.editorial.create().toggleCountryList.create();\r\n registerCountryListEvent(popupView.$el, activity, { id: ad.Id, entity: 'ad' });\r\n }\r\n\r\n // this is only used by new ui\r\n hideRejectionPopup(e) {\r\n if ($(e.relatedTarget).closest(`#${this.popoverId}`).length === 0) {\r\n this.trigger('closeDeliveryStatusPopup');\r\n }\r\n }\r\n\r\n showRejectionReason(event) {\r\n const actionLinks = [];\r\n if (this.isForVNext) {\r\n const entity = this.getTargetEnity(event);\r\n if (entity && entity.DeliveryStatusDetails &&\r\n entity.DeliveryStatusDetails.includes('ShoppingCampaignNoOffersPresent')) {\r\n // use all site map to get merchant center url for different scopes\r\n const url = getRoutePathById(allSiteMap, 'merchant-center');\r\n const uri = new URI(url);\r\n appendScopeParameter(uri, this.scope);\r\n actionLinks.ShoppingCampaignNoOffersPresent = uri.toString();\r\n }\r\n\r\n if (this.isEnabledForGoogleImportVideoAd &&\r\n entity && entity.DeliveryStatusDetails &&\r\n entity.DeliveryStatusDetails.includes('GoogleImportAdVideoNeedRepair')) {\r\n actionLinks.GoogleImportAdVideoNeedRepair = _.get(entity, 'Videos[0].Asset.SourceUrl') || 'Unavailable';\r\n }\r\n }\r\n const factory = new DeliveryStatusPopupFactory({ grid: this.grid, i18n });\r\n const ad = factory.getEventTargetEntity(event);\r\n\r\n factory.showRejectionPopup({\r\n event,\r\n actionLinks,\r\n getCustomTemplate: _.partial(getReasonTemplates, {\r\n event,\r\n scope: this.scope,\r\n errI18n,\r\n locationI18n,\r\n editorialRejection,\r\n i18n,\r\n commonI18n,\r\n ad,\r\n grid: this.grid,\r\n logScenario: this.logScenario,\r\n permissions,\r\n }),\r\n useCustomTemplate: deliveryStatus =>\r\n isDeliveryStatusDisapproved(deliveryStatus) || (permissions && permissions.dynamic.AdExtensionInlineAppeal && _.contains(['DisclaimerInfoRejected', 'DisclaimerInfoApprovedLimited', 'DisclaimerInfoRejectedAppealRejected', 'DisclaimerInfoApprovedLimitedAppealRejected'], deliveryStatus)),\r\n containerSelector: this.rejectionPopupContainerSelector,\r\n view: this,\r\n popoverId: this.popoverId,\r\n instrumentation,\r\n inContextRepairRecommedationType: 'ad',\r\n afterRender: popup => this.addEditorialHandler({ ad, popupView: popup }),\r\n isEditorialCategoryEnabled: this.isEditorialCategoryEnabled,\r\n });\r\n }\r\n\r\n closeAdStrengthPopup() {\r\n if (window.popupManager) {\r\n window.popupManager.releaseLock(popupContentKey);\r\n }\r\n ReactDOM.unmountComponentAtNode(document.querySelector(this.rejectionPopupContainerSelector));\r\n this.adStrengthPopoverShown = false;\r\n }\r\n\r\n /* istanbul ignore next */\r\n hideAdStrengthPopup(e) {\r\n if ($(e.relatedTarget).closest('.ad-adstrength-callout').length === 0) {\r\n this.closeAdStrengthPopup();\r\n }\r\n }\r\n\r\n showAdStrengthPopup(event) {\r\n const { customerId: cid, accountId: aid } = this.scope;\r\n const containerDOM = document.querySelector(this.rejectionPopupContainerSelector);\r\n const adStrengthEntity = this.getTargetEnity(event);\r\n const {\r\n AdStrength, AdStrengthActionItems, Id, Campaign, AdGroup, FinalUrls,\r\n } = adStrengthEntity;\r\n\r\n if (AdStrength !== 'Pending' && (!AdStrengthActionItems || AdStrengthActionItems.length === 0)) {\r\n return;\r\n }\r\n if (window.popupManager) {\r\n window.popupManager.forceAcquireLock(popupContentKey);\r\n }\r\n\r\n this.activityAdStrengthLogger.signal(`ad strength - hover the column :{\"AdId\":\"${Id}\",\"OrderId\":\"${AdGroup.Id}\",\"CampaignId\":\"${Campaign && Campaign.Id}\",\"cid\":\"${cid}\",\"aid\":\"${aid}\",\"FinalUrls\": \"${FinalUrls && FinalUrls.toString()}\",\"adstrength\":\"${AdStrength}\"}`);\r\n renderSuggestionPopup({\r\n i18n, event, containerDOM, adStrengthEntity, adsGrid: this, closeAdStrengthPopup: this.closeAdStrengthPopup.bind(this),\r\n });\r\n\r\n this.adStrengthPopoverShown = true;\r\n }\r\n\r\n /* istanbul ignore next */\r\n showDeprecateReason(event) {\r\n const { customerId: cid, accountId: aid } = this.scope;\r\n const targetEntity = this.getTargetEnity(event);\r\n const campaignId = (targetEntity.Campaign && targetEntity.Campaign.Id) || state.get('campaign_id');\r\n const adgroupId = (targetEntity.AdGroup && targetEntity.AdGroup.Id) || state.get('adgroup_id');\r\n const type = targetEntity.Type;\r\n const containerDOM = document.querySelector(this.rejectionPopupContainerSelector);\r\n const href = `/campaign/vnext/recommendations/All?adGroupId=${adgroupId}&aid=${aid}&campaignId=${campaignId}&cid=${cid}&recommendationType=ResponsiveSearchAdsOpportunity`;\r\n const styles = mergeStyleSets({\r\n callout: {\r\n width: 320,\r\n padding: '20px 24px',\r\n fontSize: '12px',\r\n },\r\n title: { marginBottom: 12 },\r\n body: {},\r\n });\r\n ReactDOM.render(\r\n (\r\n \r\n {type === 'Text' &&\r\n
\r\n {this.newI18n.getString(_TL_('Standard Text ads will stop serving soon. We recommend upgrading your existing Standard Text ads to Responsive Search ads. To upgrade, visit the '))}\r\n {this.newI18n.getString(_TL_('Recommendations'))}\r\n {this.newI18n.getString(_TL_(' page: From the navigation menu on the left, hover over '))}\r\n {this.newI18n.getString(_TL_('Campaigns'))}\r\n {this.newI18n.getString(_TL_(' and select '))}\r\n {this.newI18n.getString(_TL_('Recommendations'))}\r\n {this.newI18n.getString(_TL_('. View and apply our recommendations for automatically creating new Responsive Search ads. '))}\r\n \r\n {this.newI18n.getString(_TL_('Learn more'))}\r\n \r\n
\r\n }\r\n {type === 'ExpandedText' &&\r\n
\r\n {this.newI18n.getString(_TL_('You can no longer create new or edit existing expanded text ads. We recommend upgrading your existing expanded text ads to responsive search ads to optimize performance and drive ROI (return on investment).'))}\r\n
\r\n {this.newI18n.getString(_TL_('Please review your '))} {this.newI18n.getString(_TL_('responsive search ad recommendations'))}{this.newI18n.getString(_TL_(' to make updates. '))}\r\n
\r\n }\r\n
\r\n ),\r\n containerDOM\r\n );\r\n\r\n this.deprecatePopoverShown = true;\r\n }\r\n /* istanbul ignore next */\r\n hideDeprecatePopover(e) {\r\n if ($(e.relatedTarget).closest('.ad-type-callout').length === 0) {\r\n ReactDOM.unmountComponentAtNode(document.querySelector(this.rejectionPopupContainerSelector));\r\n this.deprecatePopoverShown = false;\r\n }\r\n }\r\n\r\n get className() { return 'ads-grid'; }\r\n}\r\n\r\n","import _ from 'underscore';\r\nimport { StatusIconColumn as BaseStatusIconColumn } from '@bingads-webui-campaign/campaignui-common-columns';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { inlineEditSave } from '@bingads-webui-campaign/summary-grid-helper';\r\n\r\nconst jsData = globalContext.require('component/js-data-campaign/index');\r\nconst i18nErrors = globalContext.require('component/api-errors-campaign/index');\r\nconst appConfig = globalContext.require('component/config/index');\r\nconst permissions = appConfig.get('Permissions');\r\nconst enableGridFlexLayout = _.result(permissions.dynamic, 'GridFlexLayout', false);\r\n\r\nfunction resourceForAdType(type) {\r\n if (type === 'LinkedIn') {\r\n return jsData.ResponsiveAd;\r\n }\r\n return jsData[`${type}Ad`] || jsData.Ad;\r\n}\r\n\r\nexport class StatusIconColumn extends BaseStatusIconColumn {\r\n constructor(options) {\r\n super(_.extend(options, {\r\n enableEdit: item => (item.Type !== 'Responsive' ||\r\n item.LandscapeImageMediaUrl !== null ||\r\n this.isPlaceholderMMA(item) ||\r\n _.result(item, 'Videos', []).length > 0),\r\n group: 'freezing',\r\n enableGridFlexLayout,\r\n }));\r\n\r\n this.isForVNext = options.isForVNext;\r\n }\r\n\r\n isPlaceholderMMA(item) {\r\n if (_.isEmpty(item.Headline) && _.isEmpty(item.Headlines) &&\r\n _.isEmpty(item.LongHeadline) && _.isEmpty(item.LongHeadlines) &&\r\n _.isEmpty(item.Text) && _.isEmpty(item.Descriptions)) {\r\n // placeholder MMA under the dynamic ad group\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n updateStatus({ status, item }) {\r\n const additionalPayload = {\r\n AdGroup: {\r\n Id: _.result(item.AdGroup, 'Id', this.view.scope.adGroupId),\r\n },\r\n };\r\n\r\n if (item.Type === 'LinkedIn') {\r\n additionalPayload.AdType = 'LinkedIn';\r\n }\r\n\r\n return inlineEditSave(\r\n {\r\n id: item.Id,\r\n fieldName: 'Status',\r\n updatedItem: _.extend({}, item, { Status: status }),\r\n additionalPayload,\r\n },\r\n {\r\n view: this.view,\r\n resource: resourceForAdType(item.Type),\r\n scenario: 'NewAdsTab',\r\n i18n: this.i18n,\r\n i18nErrors,\r\n customBlockerTarget: this.isForVNext ? '.ads-page' : null,\r\n }\r\n );\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { LabelsColumn } from '@bingads-webui-campaign/labels';\r\nimport { ColumnsConfigBuilder } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { adsMetricCategoriesFactory } from '@bingads-webui/custom-columns-shared-config';\r\n\r\nimport {\r\n CampaignColumn,\r\n DeliveryColumn,\r\n ColumnClicks,\r\n ColumnImpressions,\r\n ColumnCTR,\r\n ColumnAverageCPC,\r\n ColumnSpend,\r\n ColumnAveragePosition,\r\n ColumnConversions,\r\n ColumnConversionsCredit,\r\n ColumnViewThroughConversions,\r\n ColumnViewThroughConversionsCredit,\r\n ColumnTopImpressionRate,\r\n ColumnAbsoluteTopImpressionRate,\r\n} from '@bingads-webui-campaign/campaignui-common-columns';\r\n\r\nimport { StatusIconColumn } from './attributes/status-icon';\r\nimport { AdGroupColumn } from './attributes/ad-group';\r\nimport { AdIdColumn } from './attributes/ad-id';\r\nimport { AdTypeColumn } from './attributes/ad-type';\r\nimport { DevicePreferenceColumn } from './attributes/device-preference';\r\nimport { AdPreviewColumn } from './attributes/ad-preview';\r\nimport { AdsByBingColumn } from './attributes/ads-by-bing';\r\nimport { AdStrengthColumn } from './attributes/ad-strength';\r\n\r\nconst { Columns, SelectedColumns } = globalContext.require('component/bingads-grid/service/column-chooser-preferences');\r\nconst { CustomColumns } = globalContext.require('component/bingads-grid/service/custom-column-preferences');\r\nconst { LegacyColumns, LegacySelectedColumns } = globalContext.require('component/bingads-grid/service/legacy-column-chooser-preferences');\r\nconst { LegacyGridFlag } = globalContext.require('component/bingads-grid/service/legacy-grid-flag-preferences');\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/ads-tab');\r\nconst config = globalContext.require('component/config/index');\r\n\r\nlet builder = null;\r\nlet lastCampaignId;\r\nlet lastAdgroupId;\r\nconst Permissions = config.get('Permissions');\r\nconst {\r\n IsAdsByBingEnabled: showAdsByBingColumn,\r\n IsViewThroughConversionEnabled,\r\n IsCustomColumnsInAdsSupported,\r\n IsAvgPositionDeprecationPhase1Enabled,\r\n IsAvgPositionDeprecationPhase2Enabled,\r\n IsViewThroughConversionsRevenueEnabled,\r\n dynamic = {},\r\n} = Permissions;\r\nconst {\r\n PartialConversions: IsPartialConversionsEnabled,\r\n ColumnConversion: IsColumnConversionEnabled,\r\n ConvValueRules: isConversionValueRuleColumnsEnabled,\r\n AdStrengthTestingNoPanel,\r\n} = dynamic;\r\n\r\nconst usePartialConversions = IsPartialConversionsEnabled && IsColumnConversionEnabled;\r\n\r\nexport function getBuilder({ campaignId, adGroupId }) {\r\n if (builder === null || campaignId !== lastCampaignId || adGroupId !== lastAdgroupId) {\r\n lastAdgroupId = adGroupId;\r\n lastCampaignId = campaignId;\r\n builder = new ColumnsConfigBuilder({ Permissions })\r\n .addCategory('Attribute', category => category.addColumns(_.compact([\r\n AdPreviewColumn,\r\n _.isUndefined(campaignId) && CampaignColumn,\r\n _.isUndefined(adGroupId) && AdGroupColumn,\r\n DeliveryColumn,\r\n AdIdColumn,\r\n AdTypeColumn,\r\n DevicePreferenceColumn,\r\n LabelsColumn,\r\n showAdsByBingColumn && AdsByBingColumn,\r\n !AdStrengthTestingNoPanel && AdStrengthColumn,\r\n ])))\r\n .addPerformanceCategoryForAd({\r\n IsAvgPositionDeprecationPhase2Enabled,\r\n IsAvgPositionDeprecationPhase1Enabled,\r\n })\r\n .addConversionsCategory({\r\n IsViewThroughConversionEnabled,\r\n IsViewThroughConversionsRevenueEnabled,\r\n withPartialConversions: IsPartialConversionsEnabled,\r\n IsColumnConversionEnabled,\r\n isConversionValueRuleColumnsEnabled,\r\n });\r\n\r\n builder\r\n .setLockedColumns(_.compact([\r\n StatusIconColumn,\r\n AdPreviewColumn,\r\n _.isUndefined(campaignId) && CampaignColumn,\r\n _.isUndefined(adGroupId) && AdGroupColumn,\r\n !AdStrengthTestingNoPanel && AdStrengthColumn,\r\n ]))\r\n .setSelectedColumns(_.compact([\r\n DeliveryColumn,\r\n ColumnClicks,\r\n ColumnImpressions,\r\n ColumnCTR,\r\n ColumnAverageCPC,\r\n ColumnSpend,\r\n usePartialConversions && ColumnConversionsCredit,\r\n !usePartialConversions && ColumnConversions,\r\n usePartialConversions && ColumnViewThroughConversionsCredit,\r\n !usePartialConversions && ColumnViewThroughConversions,\r\n !IsAvgPositionDeprecationPhase1Enabled && ColumnAveragePosition,\r\n LabelsColumn,\r\n showAdsByBingColumn && AdsByBingColumn,\r\n IsAvgPositionDeprecationPhase1Enabled && ColumnTopImpressionRate,\r\n IsAvgPositionDeprecationPhase1Enabled && ColumnAbsoluteTopImpressionRate,\r\n !AdStrengthTestingNoPanel && AdStrengthColumn,\r\n ]));\r\n }\r\n return builder;\r\n}\r\n\r\nexport function getColumnsConfig(options) {\r\n return getBuilder(options.scope).getColumnsConfig(options);\r\n}\r\n\r\nconst nameFromLegacy = {\r\n StatusIcon: 'Status',\r\n Preview: 'AdPreview',\r\n AdGroupName: 'AdGroup',\r\n CampaignName: 'Campaign',\r\n DeliveryStatus: 'Delivery',\r\n ID: 'AdID',\r\n ClickCount: 'Clicks',\r\n ImpressionCount: 'Impressions',\r\n ClickThrough: 'CTR',\r\n TotalSpendAmount: 'Spend',\r\n ConversionCount: 'Conversions',\r\n};\r\n\r\nexport function getColumnChooserConfig({\r\n scope,\r\n filterService,\r\n isForVNext = false,\r\n deps,\r\n}) {\r\n let customColumnConfig;\r\n\r\n if (IsCustomColumnsInAdsSupported) {\r\n const { metricCategories, segmentCategories } = adsMetricCategoriesFactory(Permissions);\r\n\r\n customColumnConfig = {\r\n enabled: true,\r\n metricCategories,\r\n segmentCategories,\r\n filterService,\r\n };\r\n }\r\n\r\n return _.defaults(getBuilder(scope).getColumnChooserConfig({\r\n patchQuery: true,\r\n Columns,\r\n SelectedColumns,\r\n LegacyColumns,\r\n LegacySelectedColumns,\r\n LegacyGridFlag,\r\n nameFromLegacy,\r\n i18n,\r\n CustomColumns,\r\n customColumnConfig,\r\n permissions: Permissions,\r\n }), { isForVNext, deps });\r\n}\r\n","import { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\nimport { AdGroupColumn as AdGroupColumnConfig } from '@bingads-webui-campaign/ads-data';\r\nimport adGroupTemplate from './ad-group.pug';\r\n\r\nexport class AdGroupColumn extends CampaignuiBaseColumn {\r\n constructor({\r\n i18n, scope, routeTemplate, isForVNext,\r\n }) {\r\n super({\r\n ...AdGroupColumnConfig,\r\n title: i18n.getString('ColumnName_AdGroup'),\r\n sortable: 'AdGroup/Name',\r\n editable: true,\r\n type: 'string',\r\n bodyClasses: ['grid-column-AdGroup'],\r\n });\r\n\r\n this.i18n = i18n;\r\n this.scope = scope;\r\n this.routeTemplate = routeTemplate;\r\n this.isForVNext = isForVNext;\r\n }\r\n\r\n pickProperty(item) {\r\n const { customerId: cid, accountId: aid } = this.scope;\r\n const {\r\n Campaign: {\r\n Id: cmpid,\r\n } = {},\r\n AdGroup: {\r\n Name: name,\r\n Id: adgid,\r\n } = {},\r\n } = item;\r\n\r\n return {\r\n isForVNext: this.isForVNext,\r\n name,\r\n cmpid,\r\n adgid,\r\n href: this.routeTemplate({\r\n cid,\r\n aid,\r\n cmpid,\r\n adgid,\r\n }),\r\n ariaLabel: this.i18n.getString('Click to scope to ad group {{adGroupName}}', { adGroupName: name }),\r\n };\r\n }\r\n\r\n get template() { return adGroupTemplate; }\r\n}\r\n","import { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\nimport { AdIdColumn as AdIdColumnConfig } from '@bingads-webui-campaign/ads-data';\r\n\r\nexport class AdIdColumn extends CampaignuiBaseColumn {\r\n constructor({ i18n }) {\r\n const title = i18n.getString('ColumnName_AdId');\r\n\r\n super({\r\n ...AdIdColumnConfig,\r\n title,\r\n sortable: 'Id',\r\n type: 'number',\r\n helpId: 'Page_CampaignGrids_AdID',\r\n helpAriaLabel: i18n.getString('Click to learn more about {{item}}', { item: title }),\r\n });\r\n }\r\n}\r\n","import { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\nimport { SchemaI18n } from '@bingads-webui-universal/schema-i18n';\r\nimport { AdTypeColumn as AdTypeColumnConfig } from '@bingads-webui-campaign/ads-data';\r\nimport adTypeTemplate from './ad-type.pug';\r\n\r\nexport class AdTypeColumn extends CampaignuiBaseColumn {\r\n constructor({\r\n i18n, newI18n, permissions,\r\n }) {\r\n const title = i18n.getString('ColumnName_AdType');\r\n super({\r\n ...AdTypeColumnConfig,\r\n title,\r\n sortable: 'Type',\r\n type: 'string',\r\n helpId: 'pop_BA_NewAdCreate_AdType',\r\n helpAriaLabel: i18n.getString('Click to learn more about {{item}}', { item: title }),\r\n });\r\n\r\n this.permissions = permissions;\r\n this.schemaI18n = new SchemaI18n({ i18n });\r\n this.newI18n = newI18n;\r\n }\r\n\r\n template({ value }) {\r\n if (this.permissions.IsMultiMediaAdsEnabled && value === 'Responsive') {\r\n // When enable IsMultiMediaAdsEnabled, show text as \"Responsive ad / Multimedia ad\"\r\n value = 'Multimedia'; // eslint-disable-line no-param-reassign\r\n }\r\n if (this.permissions && this.permissions.dynamic && this.permissions.dynamic.IsRenameHotelToLodgingEnabled && value === 'Hotel') {\r\n // When enable IsRenameHotelToLodgingEnabled, show text as \"Lodging\"\r\n value = 'Lodging'; // eslint-disable-line no-param-reassign\r\n }\r\n const isDisableEXTA = value === 'ExpandedText';\r\n\r\n const isStandardTextAd = value === 'Text';\r\n\r\n return adTypeTemplate({\r\n value, schemaI18n: this.schemaI18n, isDisableEXTA, isStandardTextAd,\r\n });\r\n }\r\n}\r\n","import { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\nimport { SchemaI18n } from '@bingads-webui-universal/schema-i18n';\r\nimport { DevicePreferenceColumn as DevicePreferenceColumnConfig } from '@bingads-webui-campaign/ads-data';\r\nimport devicePreferenceTemplate from './device-preference.pug';\r\n\r\nexport class DevicePreferenceColumn extends CampaignuiBaseColumn {\r\n constructor({ i18n }) {\r\n const title = i18n.getString('ColumnName_DevicePreference');\r\n super({\r\n ...DevicePreferenceColumnConfig,\r\n title,\r\n sortable: 'DevicePreference',\r\n type: 'string',\r\n helpId: 'Page_CampaignGrids_Devices',\r\n helpAriaLabel: i18n.getString('Click to learn more about {{item}}', { item: title }),\r\n });\r\n\r\n this.schemaI18n = new SchemaI18n({ i18n });\r\n }\r\n\r\n template({ value }) {\r\n return devicePreferenceTemplate({ value, schemaI18n: this.schemaI18n });\r\n }\r\n}\r\n","/* eslint-disable camelcase */\r\nimport $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport {\r\n getTitlePreview,\r\n getDescPreview,\r\n getMoreTitleHint,\r\n getMoreDescHint,\r\n} from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { AdPreviewColumn as AdPreviewColumnConfig } from '@bingads-webui-campaign/ads-data';\r\nimport { isXandrCampaign } from '@bingads-webui-campaign-react/constants';\r\nimport adTemplate from './ad-preview.pug';\r\nimport { getAdEditorInitializer, getAdEditorInitializerWebpack } from '../../../index';\r\n\r\nconst appConfig = globalContext.require('component/config/index');\r\nconst adDisplayUrlService = globalContext.require('campaignui/feature/crud-ad/service/displayUrl');\r\nconst { combineText } = globalContext.require('campaignui/feature/crud-ad/viewmodel/adsPreview/expandedTextAd');\r\n\r\nconst responsiveAdThumbnailWidth = 114;\r\nconst responsiveAdThumbnailHeight = 60;\r\nconst resizeQueryString = `&w=${responsiveAdThumbnailWidth}&h=${responsiveAdThumbnailHeight}`;\r\nconst isImpressionTrackingUrlsEnabled = _.result(appConfig.get('Permissions'), 'IsImpressionTrackingUrlsEnabled');\r\nconst isMultiMediaAdsPhase2Enabled = _.result(appConfig.get('Permissions'), 'IsMultiMediaAdsPhase2Enabled');\r\nconst isAudienceCampaignMultiMediaAdsEnabled = _.result(appConfig.get('Permissions'), 'IsAudienceCampaignMultiMediaAdsEnabled');\r\nconst Permissions = appConfig.get('Permissions');\r\nconst isAudienceAssetReportEnabled = _.result(Permissions.dynamic, 'AudienceAssetReport');\r\nconst videoTypesWithOrder = [\r\n 'VideoMedia16X9',\r\n 'VideoMedia5X4',\r\n 'VideoMedia1X1',\r\n 'VideoMedia4X5',\r\n 'VideoMedia9X16',\r\n];\r\n\r\nexport class AdPreviewColumn extends CampaignuiBaseColumn {\r\n constructor({\r\n i18n,\r\n newI18n,\r\n router,\r\n scope,\r\n view,\r\n permissions,\r\n serverContext,\r\n isForVNext,\r\n deps,\r\n shouldSendOpportunityLog,\r\n logOpportunity,\r\n adsTabPerfMarker,\r\n preferenceService,\r\n }) {\r\n const title = i18n.getString('ColumnName_Ad');\r\n const config = {\r\n ...AdPreviewColumnConfig,\r\n title,\r\n editable: true,\r\n enableEdit: (item) => {\r\n if (item.Type === 'ResponsiveSearch') {\r\n return true;\r\n }\r\n if (item.Type === 'Responsive' && item.Campaign.CampaignType === 'Default') {\r\n if (this.isPlaceholderMMA(item)) {\r\n // not allow editing for the placeholder MMA\r\n return false;\r\n }\r\n return isForVNext && _.result(appConfig.get('Permissions'), 'IsMultiMediaAdsEnabled');\r\n }\r\n if (item.Type === 'Responsive' && item.Campaign.CampaignSubType === 'AudienceVideoAds') {\r\n return true;\r\n }\r\n if (item.Type === 'Responsive' && isXandrCampaign(item.Campaign.CampaignSubType)) {\r\n return true;\r\n }\r\n if (item.Type === 'ExpandedText' &&\r\n !_.result(appConfig.get('Permissions'), 'IsWhiteListEXTAEnabled')\r\n ) {\r\n return false;\r\n }\r\n /* istanbul ignore next */\r\n return (((item.Type !== 'Responsive') || this.checkLandscapeImageMediaUrl(item) || this.checkAdSubtypeForMultiAdFormat(item))\r\n && (item.Type !== 'Hotel') && (item.Type !== 'Product') && (item.DeliveryStatus !== 'AdGroupExpired'));\r\n },\r\n type: 'string',\r\n helpId: 'Page_CampaignGrids_AdPreview',\r\n bodyClasses: 'grid-column-AdPreview',\r\n helpAriaLabel: i18n.getString('Click to learn more about {{item}}', { item: title }),\r\n group: 'freezing',\r\n };\r\n\r\n super(config);\r\n\r\n this.i18n = i18n;\r\n this.newI18n = newI18n;\r\n this.router = router;\r\n this.scope = scope;\r\n this.view = view;\r\n this.permissions = permissions;\r\n this.isForVNext = isForVNext;\r\n this.serverContext = serverContext;\r\n this.preferenceService = preferenceService;\r\n this.deps = deps;\r\n this.shouldSendOpportunityLog = shouldSendOpportunityLog;\r\n this.logOpportunity = logOpportunity;\r\n this.adsTabPerfMarker = adsTabPerfMarker;\r\n this.dynamicPermissions = appConfig.get('Permissions').dynamic;\r\n }\r\n\r\n /* istanbul ignore next */\r\n isVideoAdUnderNative(item) {\r\n return item && item.Campaign.CampaignSubType === 'AudienceStatic' && item.AdSubType === 'Video';\r\n }\r\n\r\n /* istanbul ignore next */\r\n isDisplayAdUnderNative(item) {\r\n return item && item.Campaign.CampaignSubType === 'AudienceStatic' && item.AdSubType === 'Display';\r\n }\r\n\r\n isPlaceholderMMA(item) {\r\n /* istanbul ignore next */\r\n if (this.dynamicPermissions && this.dynamicPermissions.MultiAdFormat && (this.isVideoAdUnderNative(item) || this.isDisplayAdUnderNative(item))) {\r\n // Check subtype, video and display will return false, currently use no headline with images or video to determine display ad or video ad\r\n return false;\r\n } else if (_.isEmpty(item.Headline) && _.isEmpty(item.Headlines) &&\r\n _.isEmpty(item.LongHeadline) && _.isEmpty(item.LongHeadlines) &&\r\n _.isEmpty(item.Text) && _.isEmpty(item.Descriptions) &&\r\n !isXandrCampaign(item.Campaign.CampaignSubType)) {\r\n // placeholder MMA under the dynamic ad group\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n checkLandscapeImageMediaUrl(item) {\r\n /* istanbul ignore next */\r\n if (this.permissions && this.permissions.IsMMAV2Enabled && _.isArray(item.Images) && _.some(item.Images, image =>\r\n ((image.Asset.SubType === 'OriginalImage')))) {\r\n return true;\r\n }\r\n return item.LandscapeImageMediaUrl !== null;\r\n }\r\n\r\n /* istanbul ignore next */\r\n checkAdSubtypeForMultiAdFormat(item) {\r\n if (this.dynamicPermissions && this.dynamicPermissions.MultiAdFormat && (this.isDisplayAdUnderNative(item) || this.isVideoAdUnderNative(item))) {\r\n return true;\r\n }\r\n\r\n // check item ad subtype for multi ad format\r\n return false;\r\n }\r\n\r\n pickProperty(item) {\r\n const type = item.Type;\r\n\r\n if (item.$total) return { $total: item.$total };\r\n const urlRegex = new RegExp('http:\\/\\/|https:\\/\\/|\\{param', 'i'); // eslint-disable-line no-useless-escape\r\n\r\n let destinationUrl = item.DestinationUrl;\r\n // add http for destinatioUrl that did not have them.\r\n if (destinationUrl && destinationUrl.search(urlRegex) === -1) {\r\n destinationUrl = `http://${destinationUrl}`;\r\n }\r\n\r\n let result = {\r\n Type: type,\r\n Title: item.Title,\r\n convertedFinalUrl: _.first(item.FinalUrls) || destinationUrl || '',\r\n Text: item.Text,\r\n i18n: this.i18n,\r\n isMultimediaAd: item.Type === 'Responsive' && item.Campaign.CampaignType === 'Default',\r\n isMultimediaAdinMSANEnabled: isAudienceCampaignMultiMediaAdsEnabled &&\r\n item.Type === 'Responsive' &&\r\n (item.Campaign.CampaignType === 'Audience' || item.Campaign.CampaignType === 8),\r\n isLinkedInAd: item.Type === 'LinkedIn' && (item.Campaign.CampaignType === 'LinkedIn' || item.Campaign.CampaignType === 256),\r\n campaignSubType: item.Campaign && item.Campaign.CampaignSubType,\r\n isAudienceAssetReportEnabled,\r\n };\r\n\r\n if (type === 'Text') {\r\n result.convertedDisplayUrl = item.DisplayUrl;\r\n result.computedTitle = item.Title;\r\n } else if (type === 'Hotel') {\r\n if (this.dynamicPermissions.IsRenameHotelToLodgingEnabled) {\r\n result.convertedText = `${this.i18n.getString('AdsSummary_LodgingAdTitle')}`;\r\n } else {\r\n result.convertedText = `${this.i18n.getString('AdsSummary_HotelAdTitle')}`;\r\n }\r\n } else if (type === 'Product') {\r\n result.convertedText = item.PromotionalText && item.PromotionalText.length > 0\r\n ? `${this.i18n.getString('AdsSummary_ProductAdTitle').replace('{0}', ': ')}${item.PromotionalText}`\r\n : `${this.i18n.getString('AdsSummary_ProductAdTitle').replace('{0}', '')}`;\r\n } else if (type === 'AppInstall') {\r\n result.platformText = '';\r\n if (item.AppPlatform) {\r\n const appStoreName = this.i18n.getString(`AppStore_${item.AppPlatform.replace(' ', '_')}`);\r\n\r\n result.platformText = this.i18n.getString('Ad_Preview_AppStore').replace('{0}', appStoreName);\r\n }\r\n } else if (type === 'DynamicSearch') {\r\n result.convertedTitle = `{${this.i18n.getString('Ad_DSA_Title')}}`;\r\n\r\n if (item.TextPart2) {\r\n result.Text = combineText(item.Text, item.TextPart2);\r\n }\r\n\r\n result.convertedDisplayUrl =\r\n adDisplayUrlService.getDynamicSearchAdDisplayUrl(item.DisplayUrl, item.Path1, item.Path2);\r\n } else if (type === 'ExpandedText') {\r\n const IsExpandedTextAdV2Enabled = _.result(appConfig.get('Permissions'), 'IsExpandedTextAdV2Enabled');\r\n\r\n result.convertedTitle = `${item.TitlePart1} | ${item.TitlePart2}`;\r\n if (IsExpandedTextAdV2Enabled) {\r\n if (item.TitlePart3) {\r\n result.convertedTitle = `${result.convertedTitle} | ${item.TitlePart3}`;\r\n }\r\n\r\n if (item.TextPart2) {\r\n result.Text = combineText(item.Text, item.TextPart2);\r\n }\r\n }\r\n result.convertedDisplayUrl =\r\n adDisplayUrlService.getExpandedTextAdDisplayUrl(\r\n result.convertedFinalUrl,\r\n item.DisplayUrl, item.Path1, item.Path2\r\n );\r\n } else if (type === 'LinkedIn') {\r\n result = _.extend(\r\n result,\r\n _.pick(item, 'Headline')\r\n );\r\n\r\n if (item.Images && item.Images.length > 0) {\r\n const imageUrlToUse = _.first(item.Images).Asset.ImageUrl;\r\n result.LandscapeImageMediaUrl = `${imageUrlToUse}${resizeQueryString}`;\r\n }\r\n } else if (type === 'Responsive') {\r\n result.isPlaceholderMMA = this.isPlaceholderMMA(item);\r\n\r\n result = _.extend(\r\n result,\r\n _.pick(item, 'Headline', 'LongHeadline', 'BusinessName')\r\n );\r\n\r\n if ((result.isMultimediaAd && isMultiMediaAdsPhase2Enabled) ||\r\n result.isMultimediaAdinMSANEnabled) {\r\n if (!_.isEmpty(item.Headlines)) {\r\n result.Headline = _.first(item.Headlines).Asset.Text;\r\n }\r\n if (!_.isEmpty(item.LongHeadlines)) {\r\n result.LongHeadline = _.first(item.LongHeadlines).Asset.Text;\r\n }\r\n if (!_.isEmpty(item.Descriptions)) {\r\n result.Text = _.first(item.Descriptions).Asset.Text;\r\n }\r\n\r\n result.HeadlineCount = _.size(item.Headlines);\r\n result.LongHeadlineCount = _.size(item.LongHeadlines);\r\n result.TextCount = _.size(item.Descriptions);\r\n result.imageCount = _.size(item.Images);\r\n }\r\n\r\n if (result.isPlaceholderMMA) {\r\n result.Headline = this.i18n.getString('Ad_Placeholder_MMA_Title');\r\n }\r\n\r\n if (isImpressionTrackingUrlsEnabled) {\r\n result = _.extend(\r\n result,\r\n _.pick(item, 'ImpressionTrackingUrls')\r\n );\r\n }\r\n\r\n if (item.LandscapeImageMediaUrl) {\r\n let imageUrlToUse = item.LandscapeImageMediaUrl;\r\n\r\n // strip off the resizing from MT as we need a smaller resizing\r\n const indexOfResizeInfo = imageUrlToUse.indexOf('&w=');\r\n if (indexOfResizeInfo > 0) {\r\n imageUrlToUse = imageUrlToUse.substr(0, indexOfResizeInfo);\r\n }\r\n\r\n result.LandscapeImageMediaUrl = `${imageUrlToUse}${resizeQueryString}`;\r\n /* istanbul ignore next */\r\n } else if (item.Campaign.CampaignSubType === 'AudienceVideoAds'\r\n || item.Campaign.CampaignSubType === 'BrandAwarenessVideoAds'\r\n || this.isVideoAdUnderNative(item)\r\n ) {\r\n result.isVideo = true;\r\n if (item.Videos &&\r\n item.Videos.length > 0) {\r\n for (let i = 0; i < videoTypesWithOrder.length; i += 1) {\r\n const videoType = videoTypesWithOrder[i];\r\n const videoWithThumbnail = item.Videos.find(v =>\r\n v.Asset &&\r\n v.Asset.ThumbnailUrl &&\r\n v.Asset.SubType === videoType);\r\n if (videoWithThumbnail) {\r\n result.LandscapeImageMediaUrl = videoWithThumbnail.Asset.ThumbnailUrl;\r\n result.IdString = videoWithThumbnail.Asset.IdString;\r\n result.isVerticalVideo = videoWithThumbnail.Asset.Height > videoWithThumbnail.Asset.Width;\r\n break;\r\n }\r\n }\r\n\r\n // add special handling for google import video ad\r\n if (item.Campaign.CampaignSubType === 'BrandAwarenessVideoAds'\r\n && this.permissions && this.permissions.IsGoogleImportVideoAdsEnabled) {\r\n result.shouldShowActionNeededForGoogleImprotVideoAd = _.get(item, 'Videos[0].Asset.SourceType') === 'GoogleImported'\r\n && _.get(item, 'Videos[0].Asset.Status') === 'Failed';\r\n }\r\n }\r\n } else if (item.Images && item.Images.length > 0) {\r\n // for ad without LandscapeImageMediaUrl, pick the image Url from asset\r\n const imageUrlToUse = _.first(item.Images).Asset.ImageUrl;\r\n result.LandscapeImageMediaUrl = `${imageUrlToUse}${resizeQueryString}`;\r\n }\r\n\r\n if (!result.isPlaceholderMMA) {\r\n result.convertedDisplayUrl =\r\n adDisplayUrlService.getExpandedTextAdDisplayUrl(\r\n result.convertedFinalUrl,\r\n item.DisplayUrl, item.Path1, item.Path2\r\n );\r\n }\r\n } else if (type === 'ResponsiveSearch') {\r\n const headlineList = _.map(item.Headlines, i => ({\r\n Text: i.Asset.Text,\r\n PinnedField: i.PinnedField,\r\n }));\r\n const descriptionList = _.map(item.Descriptions, i => ({\r\n Text: i.Asset.Text,\r\n PinnedField: i.PinnedField,\r\n }));\r\n\r\n result.convertedTitle = getTitlePreview(headlineList);\r\n result.moreTitleHint = getMoreTitleHint(headlineList, this.i18n);\r\n result.Text = getDescPreview(descriptionList);\r\n result.moreTextHint = getMoreDescHint(descriptionList, this.i18n);\r\n\r\n result.convertedDisplayUrl =\r\n adDisplayUrlService.getExpandedTextAdDisplayUrl(\r\n result.convertedFinalUrl,\r\n item.DisplayUrl, item.Path1, item.Path2\r\n );\r\n }\r\n\r\n return result;\r\n }\r\n\r\n template({ value }) {\r\n const DSAAssetReport = this.permissions.dynamic && this.permissions.dynamic.DSAAssetReport;\r\n const MMAAssetReport = this.permissions.dynamic && this.permissions.dynamic.MMAAssetReportAccountLevel;\r\n return adTemplate({\r\n value, DSAAssetReport, MMAAssetReport,\r\n });\r\n }\r\n\r\n navigateToSingleAdEditor({ campaignId, adGroupId, adId }) {\r\n this.router.navigateToRoute('single_ad', {\r\n campaign_id: campaignId,\r\n adgroup_id: adGroupId,\r\n ad_id: adId,\r\n });\r\n }\r\n\r\n onPrompt({ event, item }) {\r\n if ($(event.target).hasClass('linkToAssets')) {\r\n // view assets details is already handled by grid\r\n\r\n return;\r\n }\r\n\r\n const { Campaign: campaign, AdGroup: adgroup, Type: type } = item;\r\n let campaignId;\r\n let adGroupId;\r\n\r\n if (this.isForVNext) {\r\n campaignId = campaign ? campaign.Id : this.scope.campaignId || 0;\r\n adGroupId = adgroup ? adgroup.Id : this.scope.adGroupId || 0;\r\n } else {\r\n campaignId = campaign ? campaign.Id : this.i18n.parseDecimal(this.scope.campaignId || '0');\r\n adGroupId = adgroup ? adgroup.Id : this.i18n.parseDecimal(this.scope.adGroupId || '0');\r\n }\r\n\r\n const inlineSuggestionsEnabled =\r\n type === 'ResponsiveSearch' ?\r\n this.permissions.IsRSASuggestionCMUIEnabled : false;\r\n\r\n const initializer = this.isForVNext && this.deps\r\n ? () => getAdEditorInitializerWebpack(\r\n true,\r\n this.deps.adEditorDependencies\r\n )\r\n : getAdEditorInitializer;\r\n\r\n initializer().then(({ initializeAdEditor }) => {\r\n initializeAdEditor({\r\n scope: {\r\n campaignId,\r\n adGroupId,\r\n campaignType: _.result(campaign, 'CampaignType'),\r\n },\r\n gridView: this.view,\r\n newI18n: this.newI18n,\r\n item,\r\n isForVNext: this.isForVNext,\r\n inlineSuggestionsEnabled,\r\n shouldSendOpportunityLog: this.shouldSendOpportunityLog,\r\n logOpportunity: this.logOpportunity,\r\n perfMarker: this.adsTabPerfMarker,\r\n serverContext: this.serverContext,\r\n preferenceService: this.preferenceService,\r\n navigateToSingleAdEditor: this.navigateToSingleAdEditor.bind(this),\r\n });\r\n });\r\n }\r\n}\r\n","import { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\n// import { SchemaI18n } from '@bingads-webui-universal/schema-i18n';\r\nimport { AdsByBingColumn as AdsByBingColumnConfig } from '@bingads-webui-campaign/ads-data';\r\nimport adsByBingTemplate from './ads-by-bing.pug';\r\n\r\nexport class AdsByBingColumn extends CampaignuiBaseColumn {\r\n constructor({ i18n }) {\r\n const title = i18n.getString('ColumnName_AdsByBing');\r\n\r\n super({\r\n ...AdsByBingColumnConfig,\r\n title,\r\n sortable: 'AdsByBing',\r\n type: 'boolean',\r\n helpId: 'pop_BA_Recommendations_AutomatedAds',\r\n helpAriaLabel: i18n.getString('Click to learn more about {{item}}', { item: title }),\r\n });\r\n\r\n this.i18n = i18n;\r\n }\r\n\r\n pickProperty(item) {\r\n // return empty for total rows\r\n if (item.AdsByBing != null) {\r\n return item.AdsByBing ? this.i18n.getString('AdsByBing_True')\r\n : this.i18n.getString('AdsByBing_False');\r\n }\r\n return '';\r\n }\r\n\r\n template({ value }) {\r\n return adsByBingTemplate({ value });\r\n }\r\n}\r\n","import { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\nimport { SchemaI18n } from '@bingads-webui-universal/schema-i18n';\r\nimport { AdStrengthColumn as AdStrengthColumnConfig } from '@bingads-webui-campaign/ads-data';\r\n\r\nimport adStrengthTemplate from './ad-strength.pug';\r\n\r\nexport class AdStrengthColumn extends CampaignuiBaseColumn {\r\n constructor({ i18n, newI18n }) {\r\n super({\r\n ...AdStrengthColumnConfig,\r\n title: i18n.getString('ColumnName_AdStrength'),\r\n sortable: 'AdStrength',\r\n type: 'string',\r\n helpId: 'pop_BA_CampaignGrids_AdStrength',\r\n helpAriaLabel: i18n.getString('Click to learn more about {{item}}', { item: i18n.getString('ColumnName_AdStrength') }),\r\n });\r\n\r\n this.i18n = i18n;\r\n this.SchemaI18n = new SchemaI18n({ i18n });\r\n this.newI18n = newI18n;\r\n }\r\n\r\n pickProperty(item) {\r\n const adStrengthScore = item.Type === 'ResponsiveSearch' ? this.i18n.getString(`Ad_Strength_Score_${item.AdStrength}`) : '-';\r\n return {\r\n adStrength: item.AdStrength || !item.$total ? adStrengthScore : '',\r\n showSuggestion: (item.AdStrengthActionItems && item.AdStrengthActionItems.length > 0) || (item.Type === 'ResponsiveSearch' && item.AdStrength === 'Pending'),\r\n };\r\n }\r\n\r\n template({ value }) {\r\n const { adStrength, showSuggestion } = value;\r\n return adStrengthTemplate({\r\n adStrength,\r\n showSuggestion,\r\n });\r\n }\r\n}\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { helpers } from '@bingads-webui/projection-grid-toolbar';\r\nimport { getGridName } from '@bingads-webui-campaign/inline-download-grids-metadata';\r\nimport { crossPageSelectHeadRow } from '@bingads-webui/projection-grid-cross-page-select-all';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { validateOrder, handleShowRejectionReasonEnter, handleShowRejectionReasonLeave } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { getColumnsConfig } from './columns/index';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/ads-tab');\r\nconst stateManager = globalContext.require('StateManager/CampaignStateManager');\r\nconst preferenceService = globalContext.requireDefault('component/preference/service/index');\r\nconst config = globalContext.require('component/config/index');\r\n\r\nconst { toolbarRow } = helpers;\r\n\r\nexport function getConfig({\r\n dataSource,\r\n scope,\r\n view,\r\n filterService,\r\n preferenceConfig,\r\n router,\r\n isForVNext,\r\n newI18n,\r\n viewport,\r\n customHeaderOffset,\r\n deps,\r\n shouldSendOpportunityLog,\r\n logOpportunity,\r\n adsTabPerfMarker,\r\n serverContext,\r\n isDataFetchManagerSource = false,\r\n}) {\r\n const headRows = isForVNext\r\n ? ['column-header-rows'] : [\r\n toolbarRow('lower-toolbar'),\r\n crossPageSelectHeadRow(),\r\n 'column-header-rows',\r\n ];\r\n\r\n const permissions = config.get('Permissions');\r\n const events = isForVNext ? {\r\n 'click .linkToAssets': view.onLinkToAssets.bind(view),\r\n 'click .labels-cell-container #see-all': view.onLabelsRowClicked.bind(view),\r\n 'click .labels-cell-item': view.onLabelClicked.bind(view),\r\n 'click .manage-labels-button': view.onManageLabelsClicked.bind(view),\r\n 'click .delivery_status_with_reject_reasons': _.debounce(view.showRejectionReason.bind(view), 50),\r\n 'click .ad-strength': _.debounce(view.showAdStrengthPopup.bind(view), 50),\r\n 'mouseenter .ad-strength': _.debounce(view.showAdStrengthPopup.bind(view), 50),\r\n 'mouseenter .delivery_status_with_reject_reasons': permissions.IsDeferredHoveringPopupEnabled ? _.partial(handleShowRejectionReasonEnter, view, view.showRejectionReason) : _.debounce(view.showRejectionReason.bind(view), 50),\r\n 'mouseleave .delivery_status_with_reject_reasons': permissions.IsDeferredHoveringPopupEnabled ? _.partial(handleShowRejectionReasonLeave, null, _.noop) : null,\r\n 'click .ads_type_exta_deprecate_reasons': _.debounce(view.showDeprecateReason.bind(view), 50),\r\n 'mouseenter .ads_type_exta_deprecate_reasons': _.debounce(view.showDeprecateReason.bind(view), 50),\r\n 'click .ads_type_sta_deprecate_reasons': _.debounce(view.showDeprecateReason.bind(view), 50),\r\n 'mouseenter .ads_type_sta_deprecate_reasons': _.debounce(view.showDeprecateReason.bind(view), 50),\r\n 'mouseleave .grid-column-Delivery': _.debounce(view.hideRejectionPopup.bind(view), 50),\r\n 'mouseleave [data-column=\"AdType\"]': _.debounce(view.hideDeprecatePopover.bind(view), 50),\r\n 'mouseleave .ad-strength': _.debounce(view.hideAdStrengthPopup.bind(view), 50),\r\n } : {\r\n 'click .linkToAssets': view.onLinkToAssets.bind(view),\r\n 'click .labels-cell-container a': view.onLabelsRowClicked.bind(view),\r\n 'click .delivery_status_with_reject_reasons': view.showRejectionReason.bind(view),\r\n 'click .ads_type_exta_deprecate_reasons': view.showDeprecateReason.bind(view),\r\n 'click .ads_type_sta_deprecate_reasons': view.showDeprecateReason.bind(view),\r\n };\r\n\r\n const tableName = i18n.getString('EntityType_Ad_Plural');\r\n\r\n const enableGridFlexLayout = _.result(permissions.dynamic, 'GridFlexLayout', false) && isForVNext;\r\n const gridName = getGridName('Ad');\r\n\r\n const gridConfig = {\r\n name: gridName,\r\n legacyGridName: 'AdGrid',\r\n tableClasses: enableGridFlexLayout ? ['table'] : ['table', 'table-bordered'],\r\n tableAttributes: { 'aria-label': newI18n.getString(_TL_('{{tableName}} table'), { tableName }) },\r\n dataSource,\r\n selection: true,\r\n filterService,\r\n rows: {\r\n headRows,\r\n },\r\n columns: getColumnsConfig({\r\n i18n,\r\n newI18n,\r\n scope,\r\n view,\r\n showExperiment: config.get('Permissions').IsExperimentsEnabled,\r\n permissions,\r\n routeTemplate({\r\n cid,\r\n aid,\r\n cmpid,\r\n adgid,\r\n }) {\r\n if (isForVNext) {\r\n return adgid\r\n ? `/campaign/vnext/ads?aid=${aid}&cid=${cid}&campaignId=${cmpid}&adGroupId=${adgid}`\r\n : `/campaign/vnext/ads?aid=${aid}&cid=${cid}&campaignId=${cmpid}`;\r\n }\r\n if (adgid) {\r\n return `#customer/${cid}/account/${aid}/campaign/${cmpid}/adgroup/${adgid}/ad`;\r\n }\r\n return `#customer/${cid}/account/${aid}/campaign/${cmpid}/ad`;\r\n },\r\n router,\r\n isForVNext,\r\n deps,\r\n shouldSendOpportunityLog,\r\n logOpportunity,\r\n adsTabPerfMarker,\r\n serverContext,\r\n preferenceService,\r\n }),\r\n scrolling: {\r\n header: {\r\n type: 'sticky',\r\n offset: customHeaderOffset || (() => $('nav.navbar-default.navbar-fixed-top').height()),\r\n attributes: {\r\n 'aria-label': i18n.getString('{{tableName}} table header', { tableName }),\r\n role: 'rowgroup',\r\n },\r\n },\r\n virtualized: true,\r\n },\r\n stateManager,\r\n preferenceService,\r\n config,\r\n events,\r\n isDataFetchManagerSource,\r\n ...enableGridFlexLayout && { layout: 'flex' },\r\n };\r\n\r\n validateOrder(preferenceConfig, gridConfig.columns, gridName, permissions);\r\n\r\n if (viewport) {\r\n gridConfig.scrolling.viewport = viewport;\r\n }\r\n\r\n return gridConfig;\r\n}\r\n","import _, { chain } from 'underscore';\r\nimport { projectionGridBulkEdit } from '@bingads-webui-campaign/projection-grid-bulk-edit';\r\nimport { getFilteredCampaignTypeFromRawFilter } from '@bingads-webui-campaign/campaign-ui-common';\r\n\r\n/**\r\n * @typedef { Object } adsBulkEditOptions\r\n * @property { Object } status ads status schema.\r\n * @property { Object } ChangeStatusView ads change status view.\r\n * @property { Object } ChangeStatusModel ads change status model.\r\n * @property { Object } ChangeAdsView ads change view.\r\n * @property { Object } ChangeAdsView ads change model.\r\n * @property { Object } ChangeUrlOptionsView ads change url options view.\r\n * @property { Object } ChangeUrlOptionsModel ads change url options model.\r\n * @property { Object } ChangeThirdPartyMeasurementView ads change third-party measurement view.\r\n * @property { Object } ChangeThirdPartyMeasurementModel ads change third-party measurement model.\r\n * @property { Object } ChangeThirdPartyMeasurementViewV2 ads change third-party measurement view.\r\n * @property { Object } RequestExceptionCallBack the call back for request exception.\r\n * @property { Object } CopyPaste CopyPaste ads copy paste\r\n * @property { Object } config config.\r\n * @property { Object } i18n i18n.\r\n * @property { Object } scope - The scope of the Ad Groups entity set\r\n * @property { Bool } isForVNext - true in new UI\r\n */\r\n\r\n/**\r\n * adsBulkEdit\r\n * @param { adsBulkEditOptions } options ads bulk edit options\r\n * @returns { Object } adsBulkEditPlugin adgroup bulk edit plugin\r\n */\r\nfunction adsBulkEdit(options) {\r\n const {\r\n status,\r\n ChangeStatusView,\r\n ChangeStatusModel,\r\n ChangeAdsView,\r\n ChangeAdsModel,\r\n ChangeUrlOptionsView,\r\n ChangeUrlOptionsModel,\r\n ChangeThirdPartyMeasurementView,\r\n ChangeThirdPartyMeasurementModel,\r\n ChangeThirdPartyMeasurementViewV2,\r\n RequestExceptionCallBack,\r\n MMABulkConversion,\r\n CopyPaste,\r\n config,\r\n filterService,\r\n i18n,\r\n scope,\r\n isForVNext,\r\n perfMarker,\r\n } = options;\r\n\r\n const permissions = config.get('Permissions');\r\n const { adGroupId } = scope || {};\r\n\r\n function getChangeAdsView({ viewConfig, selectedRowCount }) {\r\n return new ChangeAdsView(_.defaults({\r\n model: new ChangeAdsModel({\r\n selectedEntityCount: selectedRowCount,\r\n }),\r\n isForVNext,\r\n }, viewConfig));\r\n }\r\n\r\n function getchangeThirdPartyMeasurement({ viewConfig, selectedRowCount }) {\r\n return new ChangeThirdPartyMeasurementView(_.defaults({\r\n model: new ChangeThirdPartyMeasurementModel({\r\n selectedEntityCount: selectedRowCount,\r\n }),\r\n isForVNext,\r\n }, viewConfig));\r\n }\r\n\r\n function getchangeThirdPartyMeasurementV2({ viewConfig, selectedRowCount }) {\r\n return new ChangeThirdPartyMeasurementViewV2(_.defaults({\r\n model: new ChangeThirdPartyMeasurementModel({\r\n selectedEntityCount: selectedRowCount,\r\n }),\r\n isForVNext,\r\n }, viewConfig));\r\n }\r\n\r\n function getRequestExceptionView({ viewConfig, isAdGroupLevel }) {\r\n return RequestExceptionCallBack(viewConfig, isAdGroupLevel);\r\n }\r\n function getIsIncludeRSAAndExTAAds(selectedItems) {\r\n const hasRSAORExTAIndex = _.findIndex(selectedItems, item => item.Type === 'ResponsiveSearch' || item.Type === 'ExpandedText');\r\n return hasRSAORExTAIndex > -1;\r\n }\r\n function getMMABulkConversionView({ selectedRowCount, selectedItems, allPages }) {\r\n const hasRSAorExTA = getIsIncludeRSAAndExTAAds(selectedItems);\r\n return new MMABulkConversion({\r\n ...options, selectedRowCount, selectedItems, hasRSAorExTA, allPages,\r\n });\r\n }\r\n\r\n function getChangeUrlOptionView({ viewConfig, selectedRowCount }) {\r\n return new ChangeUrlOptionsView(_.defaults({\r\n entityType: 'Ad',\r\n model: new ChangeUrlOptionsModel({\r\n selectedEntityCount: selectedRowCount,\r\n }),\r\n isForVNext,\r\n }, viewConfig));\r\n }\r\n\r\n function onCopyClicked({ viewConfig }) {\r\n CopyPaste.copy('ad', Object.assign({}, viewConfig.grid, { perfMarker }));\r\n }\r\n\r\n function onPasteClicked({ viewConfig }) {\r\n CopyPaste.paste(Object.assign({}, viewConfig.grid, { perfMarker }));\r\n }\r\n\r\n let items = [{\r\n text: i18n.getString('Grid_ChangeAds'),\r\n classes: ['bulk-edit-change-ads'],\r\n createView: getChangeAdsView,\r\n },\r\n {\r\n text: i18n.getString('ChangeUrlOptions'),\r\n classes: ['bulk-edit-change-url-option'],\r\n createView: getChangeUrlOptionView,\r\n }];\r\n\r\n if (permissions.dynamic && permissions.dynamic.IASBulkEditsThirdPartyMeasurements) {\r\n if (permissions.IsMOATEnabled) {\r\n items.push({\r\n text: i18n.getString('ChangeThirdPartyMeasurement'),\r\n classes: ['bulk-edit-change-third-party-measurement-V2'],\r\n createView: getchangeThirdPartyMeasurementV2,\r\n });\r\n } else {\r\n items.push({\r\n text: i18n.getString('ChangeThirdPartyMeasurement'),\r\n classes: ['bulk-edit-change-third-party-measurement'],\r\n createView: getchangeThirdPartyMeasurement,\r\n });\r\n }\r\n }\r\n\r\n const inAdGroupLevel = adGroupId && adGroupId > 0;\r\n\r\n // will be a submenu when ad group level for request exception\r\n if (inAdGroupLevel && permissions.IsAdGroupLevelEditorialAppealEnabled) {\r\n items.push({\r\n text: i18n.getString('AppealExceptionButton'),\r\n subItems: [{\r\n text: i18n.getString('EditorialAppeal_SelectedEntityOrEntities').replace('{0}', i18n.getString('EditorialAppeal_Entity_Ad_SingularOrPlural')),\r\n classes: ['bulk-edit-adgroup-level-appeal-for-ads'],\r\n createView: ({ viewConfig }) =>\r\n getRequestExceptionView({ viewConfig, isAdGroupLevel: false }),\r\n },\r\n {\r\n text: i18n.getString('EditorialAppeal_AllEntitiesInThisAdGroup_Capitalized').replace('{0}', i18n.getString('EditorialAppeal_Entity_Ad_Plural')),\r\n classes: ['bulk-edit-adgroup-level-appeal-for-adgroups'],\r\n createView: ({ viewConfig }) =>\r\n getRequestExceptionView({ viewConfig, isAdGroupLevel: true }),\r\n }],\r\n });\r\n } else if (!inAdGroupLevel) {\r\n items.push({\r\n text: i18n.getString('AppealExceptionButton'),\r\n classes: ['request-exception-for-ads'],\r\n createView: ({ viewConfig }) =>\r\n getRequestExceptionView({ viewConfig, isAdGroupLevel: false }),\r\n });\r\n }\r\n\r\n items.push({\r\n text: i18n.getString('Grid_ConvertAdsToMMA'),\r\n classes: ['bulk-convert-ads-to-mma'],\r\n createView: getMMABulkConversionView,\r\n isValid: () => {\r\n // demo page doesn't have filterService\r\n if (!options.filterService) return true;\r\n const { waterfallFilters } = options.filterService;\r\n const getCampaignTypeGlobalFilter = () => {\r\n const rawFilter = chain(waterfallFilters).first().value();\r\n return getFilteredCampaignTypeFromRawFilter(rawFilter);\r\n };\r\n // search campaigns || all campaigns\r\n return getCampaignTypeGlobalFilter() === 65535 || getCampaignTypeGlobalFilter() === 1;\r\n },\r\n });\r\n\r\n let frontItems = [];\r\n if (permissions.IsBulkEditCopyPasteEnabled) {\r\n if (isForVNext) {\r\n frontItems = [{\r\n text: i18n.getString('BulkEdit_CopyMenu'),\r\n classes: ['bulk-edit-ads-copy'],\r\n createView: onCopyClicked,\r\n hotkeys: {\r\n win: 'Ctrl-C',\r\n mac: '\\u2318C',\r\n },\r\n }];\r\n } else {\r\n items = items.concat([\r\n {\r\n text: i18n.getString('BulkEdit_CopyMenu'),\r\n classes: ['bulk-edit-ads-copy'],\r\n createView: onCopyClicked,\r\n Hotkeys: {\r\n Win: 'Ctrl+C',\r\n Mac: '\\u2318C',\r\n },\r\n },\r\n {\r\n text: i18n.getString('BulkEdit_PasteMenu'),\r\n classes: ['bulk-edit-ads-paste'],\r\n createView: onPasteClicked,\r\n noSelectionRequired: true,\r\n Hotkeys: {\r\n Win: 'Ctrl+V',\r\n Mac: '\\u2318V',\r\n },\r\n },\r\n ]);\r\n }\r\n\r\n // will move this logic into grid intialization\r\n /* Hotkeys.on('copy', CopyPaste.copy.bind(CopyPaste, 'ad', AdGrid));\r\n Hotkeys.on('paste', CopyPaste.paste.bind(CopyPaste, AdGrid));\r\n Hotkeys.setup(); */\r\n }\r\n\r\n return projectionGridBulkEdit({\r\n status,\r\n ChangeStatusView,\r\n ChangeStatusModel,\r\n DeleteConfirmation: i18n.getString('P4PAdLibrary_DeleteConfirmation'),\r\n entityType: 'ads',\r\n config,\r\n filterService,\r\n i18n,\r\n items,\r\n frontItems,\r\n isForVNext,\r\n });\r\n}\r\n\r\nexport { adsBulkEdit };\r\n","const navigation = ({\r\n toJSON: () => ({}),\r\n source: {\r\n $call: () => ({\r\n toJSON: () => ({}),\r\n navigation,\r\n }),\r\n },\r\n parameters: {},\r\n});\r\n\r\nexport const mockEdm = {\r\n default: {\r\n root: {\r\n identifyEntitySet: () => ({\r\n toJSON: () => ({}),\r\n navigation,\r\n }),\r\n },\r\n },\r\n currentAccount: {\r\n Campaigns: {\r\n $withKey: id => ({ AdExtensionAssociations: id }),\r\n },\r\n },\r\n};\r\n","export default {\r\n Paused: 'Paused',\r\n Active: 'Active',\r\n Deleted: 'Deleted',\r\n};\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\n\r\nimport { a11yPlugin } from '@bingads-webui/projection-grid-a11y';\r\nimport { adsBulkEdit } from '@bingads-webui-campaign/ads-bulk-edit';\r\nimport { aggregatedRowsPluginBuilder } from '@bingads-webui-campaign/pgrid-aggregated-rows';\r\nimport { assistedSelectionPlugin } from '@bingads-webui/projection-grid-assisted-selection';\r\nimport { automatedRulesPlugin } from '@bingads-webui-campaign/projection-grid-automated-rules';\r\nimport { columnChooserPlugin } from '@bingads-webui-campaign/projection-grid-column-chooser';\r\nimport { dateFilterPlugin } from '@bingads-webui-campaign/projection-grid-date-filter';\r\nimport { editablePlugin } from '@bingads-webui-campaign/projection-grid-editable';\r\nimport { inlineDownloadWithoutFilterstatePlugin } from '@bingads-webui-campaign/projection-grid-inline-download';\r\nimport { inlineErrorPlugin } from '@bingads-webui/projection-grid-inline-error';\r\nimport { jsdataRawDataPlugin as commonJsdataRawDataPlugin } from '@bingads-webui/projection-grid-js-data-raw-data';\r\nimport { labelsPlugin } from '@bingads-webui-campaign/projection-grid-labels';\r\nimport { paginationPlugin } from '@bingads-webui/projection-grid-pagination';\r\nimport { performanceLogPlugin, perfMarkerPlugin } from '@bingads-webui-campaign/pgrid-performance-log';\r\nimport { periodOverPeriodPlugin } from '@bingads-webui-campaign/projection-grid-period-over-period';\r\nimport { segmentPlugin } from '@bingads-webui-campaign/projection-grid-segment';\r\nimport { uiBlockerPlugin } from '@bingads-webui/projection-grid-uiblocker';\r\nimport { Ad, Label } from '@bingads-webui-campaign/campaign-ui-schemas';\r\nimport { getPGridColumnResizePlugin } from '@bingads-webui-campaign/projection-grid-column-resize-helper';\r\nimport { projectionGridFlexColumnResize } from '@bingads-webui-campaign/projection-grid-flex-column-resize';\r\nimport { getGridName } from '@bingads-webui-campaign/inline-download-grids-metadata';\r\n\r\nimport { mockEdm } from '../demo/mock/edm';\r\nimport { getColumnChooserConfig } from './columns/index';\r\nimport adsStatus from './ads-status';\r\n\r\nconst appState = globalContext.require('component/state/index');\r\nconst edm = globalContext.requireDefault('component/edm-campaign/index');\r\nconst appConfig = globalContext.require('component/config/index');\r\nconst { setSegType, getSegType } = globalContext.require('component/bingads-grid/service/segmentation-preferences');\r\nconst { DownloadView } = globalContext.require('campaignui/feature/griddownload/view/adapter');\r\nconst i18nErrors = globalContext.require('component/api-errors-campaign/index');\r\nconst jsdata = globalContext.require('component/js-data-campaign/index');\r\nconst { LabelAssociationView } = globalContext.require('campaignui/feature/common-grid-plugins/label/label-association-view');\r\nconst dataContextManager = globalContext.require('SummaryDataContextManager');\r\nconst cacheService = globalContext.require('Services/CacheService');\r\nconst instrumentation = globalContext.requireDefault('campaignui/feature/instrumentation/index');\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/ads-tab');\r\nconst s$i18n = globalContext.require('$/schema-i18n!campaign');\r\nconst logger = globalContext.require('module/service/instrumentation/index');\r\nconst ChangeStatusView = globalContext.require('module/view/bulkEdit/ad/changeStatus');\r\nconst ChangeStatusModel = globalContext.require('module/model/bulkEdit/ad/changeStatus');\r\nconst ChangeAdsView = globalContext.require('module/view/bulkEdit/ad/changeTextAd');\r\nconst ChangeAdsModel = globalContext.require('module/model/bulkEdit/ad/changeTextAd');\r\nconst ChangeThirdPartyMeasurementView = globalContext.require('module/view/bulkEdit/ad/changeThirdPartyMeasurement');\r\nconst ChangeThirdPartyMeasurementModel = globalContext.require('module/model/bulkEdit/ad/changeThirdPartyMeasurement');\r\nconst ChangeThirdPartyMeasurementViewV2 = globalContext.require('module/view/bulkEdit/ad/changeThirdPartyMeasurementV2');\r\nconst ChangeUrlOptionsModel = globalContext.require('module/model/bulkEdit/shared/changeUrlOptions');\r\nconst ChangeUrlOptionsView = globalContext.require('module/view/bulkEdit/shared/changeUrlOptions');\r\nconst CopyPaste = globalContext.require('module/view/bulkEdit/copyPaste');\r\nconst odata = globalContext.require('module/service/communication/channel/odata');\r\nconst stateManager = globalContext.require('StateManager/CampaignStateManager');\r\nconst preferenceService = globalContext.requireDefault('component/preference/service/index');\r\n\r\nconst permissions = appConfig.get('Permissions');\r\nconst enableGridFlexLayout = _.result(permissions.dynamic, 'GridFlexLayout', false);\r\nconst jsdataRawDataPlugin = commonJsdataRawDataPlugin({\r\n getRawData: _.property('raw'),\r\n rawDataAccessor(ds) {\r\n // eslint-disable-next-line no-underscore-dangle\r\n return ds._rawData || ds.dataSource.dfmRawData;\r\n },\r\n});\r\n\r\nexport function getAdsPlugins({\r\n view,\r\n filterService,\r\n scope,\r\n addDateChangeListener,\r\n p$daterange,\r\n router,\r\n isForVNext,\r\n adsTabPerfMarker,\r\n newI18n,\r\n currentEntity,\r\n CampaignAdgroupSelectorEdmView,\r\n PredicateListReact,\r\n deps,\r\n preexecuteFlag = false,\r\n serverContext,\r\n}) {\r\n const ReportEmailRule = appState.get('$ReportEmailRule');\r\n appState.unset('$ReportEmailRule');\r\n\r\n const columnChooserConfig = getColumnChooserConfig({\r\n scope,\r\n isForVNext,\r\n deps,\r\n filterService,\r\n permissions,\r\n });\r\n\r\n if (isForVNext) {\r\n columnChooserConfig.customToolbarIcon = 'ba-TripleColumnSolid';\r\n }\r\n\r\n const currentCampaign = appConfig.get('CurrentCampaign');\r\n const isAudienceFeedBasedCampaignLevel =\r\n currentCampaign &&\r\n currentCampaign.CampaignType === 8 && // 8 is responsiveAdType\r\n _.result(_.first(currentCampaign.CampaignSettings), 'ProviderId');\r\n\r\n const enableEdit =\r\n !isAudienceFeedBasedCampaignLevel && !appConfig.get('CurrentAccountInActive') && !permissions.IsReadOnlyUser;\r\n\r\n const bulkEditPlugin = adsBulkEdit({\r\n instrumentation,\r\n status: adsStatus,\r\n ChangeStatusView,\r\n ChangeStatusModel,\r\n filterService,\r\n scope,\r\n ChangeAdsView,\r\n ChangeAdsModel,\r\n ChangeUrlOptionsView,\r\n ChangeUrlOptionsModel,\r\n ChangeThirdPartyMeasurementView,\r\n ChangeThirdPartyMeasurementModel,\r\n ChangeThirdPartyMeasurementViewV2,\r\n RequestExceptionCallBack: view.RequestExceptionCallBack.bind(view),\r\n MMABulkConversion: view.MMABulkConversion.bind(view),\r\n CopyPaste,\r\n config: appConfig,\r\n i18n,\r\n newI18n,\r\n isForVNext,\r\n perfMarker: adsTabPerfMarker,\r\n serverContext,\r\n });\r\n const aggregatedRowsPlugin = aggregatedRowsPluginBuilder({\r\n i18n,\r\n keys: {\r\n overallI18nKey: 'AdsSummary_Total_New',\r\n filteredI18nKey: 'AdsSummary_Filtered_Total_New',\r\n waterfallFilterI18nKey: 'AdsSummary_Quickfilter_Total_New',\r\n },\r\n permissions,\r\n filterService,\r\n customConfig: {\r\n showLinkedInRow: true,\r\n },\r\n });\r\n\r\n return _.compact([{\r\n // For accurate grid init latency, PerfMarkerPlugin should be the first plugin to load.\r\n plugin: perfMarkerPlugin,\r\n config: { appConfig, marker: adsTabPerfMarker },\r\n }, {\r\n plugin: aggregatedRowsPlugin,\r\n }, !isAudienceFeedBasedCampaignLevel && {\r\n plugin: automatedRulesPlugin,\r\n config: {\r\n isForVNext,\r\n entityName: 'Ad',\r\n i18n,\r\n router,\r\n instrumentation,\r\n currentUserId: appConfig.get('CurrentUser').Id,\r\n permissions,\r\n scope,\r\n accountTimeZone: appConfig.get('AccountTimeZone'),\r\n accountCurrencyCode: appConfig.get('AccountCurrencyCode'),\r\n state: appState,\r\n odata,\r\n stateMgr: stateManager,\r\n preferenceSvc: preferenceService,\r\n appCfg: appConfig,\r\n newI18n,\r\n CampaignAdgroupSelectorEdmView,\r\n currentEntity,\r\n PredicateListReact,\r\n },\r\n }, {\r\n plugin: assistedSelectionPlugin,\r\n }, {\r\n plugin: a11yPlugin,\r\n config: { i18n },\r\n }, {\r\n plugin: bulkEditPlugin,\r\n }, {\r\n plugin: columnChooserPlugin,\r\n config: columnChooserConfig,\r\n }, {\r\n plugin: dateFilterPlugin,\r\n config: {\r\n state: appState,\r\n isOdataActionSource: true,\r\n edm: preexecuteFlag ? mockEdm.default : edm,\r\n addDateChangeListener,\r\n comparisonColumns: [\r\n 'PeriodPerformanceMetrics',\r\n 'PerformanceMetricsChange',\r\n 'PerformanceMetricsChangePercentage',\r\n ],\r\n p$daterange,\r\n },\r\n }, enableEdit && {\r\n plugin: editablePlugin,\r\n config: { i18n },\r\n }, {\r\n plugin: inlineDownloadWithoutFilterstatePlugin,\r\n config: {\r\n isForVNext,\r\n p$daterange,\r\n\r\n DownloadView,\r\n isAvailable: true,\r\n schema: Ad,\r\n gridId: 'AdGrid',\r\n i18n,\r\n s$i18n,\r\n ReportEmailRule,\r\n processReportRule: (ReportRule) => {\r\n ReportRule.Headers.push('AdStrength Action Items');\r\n return _.defaults({\r\n Selection: _.defaults({\r\n AdId: Number(scope.adId),\r\n QueryString: `${ReportRule.Selection.QueryString}${',AdStrengthActionItems'}`,\r\n }, ReportRule.Selection),\r\n }, ReportRule);\r\n },\r\n },\r\n }, {\r\n plugin: inlineErrorPlugin({\r\n errorIconClasses: ['grid-error'],\r\n }),\r\n }, {\r\n plugin: labelsPlugin,\r\n config: {\r\n isForVNext,\r\n router,\r\n i18n,\r\n i18nErrors,\r\n jsdata,\r\n LabelAssociationView,\r\n dataContextManager,\r\n cacheService,\r\n instrumentation,\r\n s$label: Label,\r\n scope,\r\n edm: preexecuteFlag ? mockEdm.default : edm,\r\n perfMarker: adsTabPerfMarker,\r\n },\r\n }, {\r\n plugin: jsdataRawDataPlugin,\r\n }, {\r\n plugin: performanceLogPlugin,\r\n config: { appConfig, logger },\r\n }, {\r\n plugin: periodOverPeriodPlugin,\r\n config: { i18n },\r\n }, {\r\n plugin: paginationPlugin,\r\n config: {\r\n availablePageSizes: [20, 50, 100, 200],\r\n enableRandomPage: false,\r\n pageNumberLabelText: isForVNext ? '' : i18n.getString('Grid_Page_Number_Label_Text'),\r\n pageSizeText: i18n.getString('Grid_ShowRows'),\r\n totalPageCountText: i18n.getString('Grid_PageOf'),\r\n resetPageNumberOnSort: true,\r\n },\r\n }, {\r\n plugin: segmentPlugin,\r\n config: {\r\n i18n,\r\n permissions,\r\n state: appState,\r\n isOdataActionSource: true,\r\n edm: preexecuteFlag ? mockEdm.default : edm,\r\n setSegType,\r\n getSegType,\r\n cultureShortDatePattern: appConfig.get('CultureDateTimeFormat').ShortDatePattern,\r\n cellTemplates: {\r\n AdPreview: 'default',\r\n },\r\n },\r\n }, {\r\n plugin: uiBlockerPlugin,\r\n config: { el: $(isForVNext ? '.ads-page' : '#child-page') },\r\n },\r\n ...enableGridFlexLayout ? [{\r\n plugin: projectionGridFlexColumnResize,\r\n config: {\r\n gridName: getGridName('Ad'),\r\n softDependencies: ['popColumns'],\r\n preferenceService,\r\n },\r\n }] : [getPGridColumnResizePlugin({\r\n gridName: getGridName('Ad'),\r\n preferenceService,\r\n permissions,\r\n })],\r\n ]);\r\n}\r\n","import { AdsGrid } from './ads-grid';\r\nimport { getConfig } from './grid-config';\r\nimport { getAdsPlugins } from './plugins';\r\n\r\nexport function createAdsGrid({\r\n dataSource,\r\n filterService,\r\n getAdditionalPlugins,\r\n preferenceConfig,\r\n router,\r\n scope,\r\n addDateChangeListener,\r\n p$daterange,\r\n isForVNext = false,\r\n viewport,\r\n adsTabPerfMarker,\r\n customHeaderOffset,\r\n newI18n,\r\n currentEntity,\r\n CampaignAdgroupSelectorEdmView,\r\n PredicateListReact,\r\n pageName,\r\n preexecuteFlag = false,\r\n deps = null,\r\n campaignContext,\r\n shouldSendOpportunityLog,\r\n logOpportunity,\r\n isDataFetchManagerSource,\r\n serverContext,\r\n}) {\r\n return new AdsGrid({\r\n isForVNext,\r\n newI18n,\r\n campaignContext,\r\n filterService,\r\n deps,\r\n serverContext,\r\n shouldSendOpportunityLog,\r\n logOpportunity,\r\n adsTabPerfMarker,\r\n getGridConfig: view => getConfig({\r\n dataSource,\r\n scope,\r\n view,\r\n serverContext,\r\n filterService,\r\n preferenceConfig,\r\n router,\r\n isForVNext,\r\n newI18n,\r\n deps,\r\n viewport,\r\n customHeaderOffset,\r\n shouldSendOpportunityLog,\r\n logOpportunity,\r\n adsTabPerfMarker,\r\n isDataFetchManagerSource,\r\n }),\r\n getPlugins: view => getAdsPlugins({\r\n view,\r\n filterService,\r\n scope,\r\n addDateChangeListener,\r\n p$daterange,\r\n isForVNext,\r\n deps,\r\n router,\r\n adsTabPerfMarker,\r\n newI18n,\r\n currentEntity,\r\n CampaignAdgroupSelectorEdmView,\r\n PredicateListReact,\r\n preexecuteFlag,\r\n serverContext,\r\n }).concat(getAdditionalPlugins(view)),\r\n router,\r\n scope,\r\n preferenceConfig,\r\n pageName,\r\n preexecuteFlag,\r\n });\r\n}\r\n","import $ from 'jquery';\r\nimport { DeterministicWrapperView } from '@bingads-webui/deterministic-wrapper-view';\r\nimport { updateGridQuery } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { TargetingSettingsContext } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport { InlineLocationRecommendationPanel } from '@bingads-webui-campaign/inline-location-recommendation';\r\nimport { pgridFactory } from '@bingads-webui-campaign/pgrid-factory';\r\nimport { BudgetSplitView } from '@bingads-webui-campaign/campaignui-common-columns';\r\nimport { GridCustomizedPopupEditor, getEditorPositionAsideAnchor } from '@bingads-webui-campaign/grid-customized-popup-editor';\r\n\r\nconst EMPTY_TEMPLATE = () => '';\r\n\r\nexport class SettingsGridView extends DeterministicWrapperView {\r\n viewFactory({\r\n router,\r\n preferenceConfig,\r\n getGridConfig,\r\n getGridPlugins,\r\n filterService,\r\n setupDataSourceErrorHandling,\r\n prefetchChunks,\r\n instrumentation,\r\n }) {\r\n setupDataSourceErrorHandling(this);\r\n\r\n const gridConfig = getGridConfig(this);\r\n\r\n this.filterService = filterService;\r\n this.router = router;\r\n this.gridRemoved = false;\r\n\r\n let initialGrid = true;\r\n this.grid = pgridFactory({\r\n gridConfig,\r\n plugins: getGridPlugins(this),\r\n preferenceConfig,\r\n });\r\n\r\n this.instrumentation = instrumentation;\r\n\r\n TargetingSettingsContext.logger.logMessage(\r\n 'ClientTrace',\r\n { name: 'Info', value: 0 },\r\n 'SettingsGridView.buildGridFactory',\r\n 'Settings grid created.'\r\n );\r\n\r\n this.filterService.on('filter-state-changed', () => {\r\n if (!this.gridRemoved) {\r\n updateGridQuery(\r\n this.grid.gridView,\r\n this.filterService.getCombinedFilter(), true\r\n );\r\n }\r\n });\r\n\r\n this.grid.gridView.on('willUpdate', (changes) => {\r\n // skip the preference write for sortable header when initial the grid\r\n // as this value is already read from preference.\r\n if (initialGrid) {\r\n initialGrid = false;\r\n return;\r\n }\r\n TargetingSettingsContext.handleSortChange(changes, this.grid.gridView, gridConfig.name);\r\n });\r\n\r\n this.grid.gridView.once('didReload', () => {\r\n this.grid.gridView.once('didRedraw', () => {\r\n if (typeof prefetchChunks === 'function') {\r\n prefetchChunks();\r\n }\r\n });\r\n });\r\n\r\n return this.grid.gridView;\r\n }\r\n\r\n renderTrunk() {\r\n if (this.gridRemoved) {\r\n return this;\r\n }\r\n\r\n this.filterService.refreshSource();\r\n this.filterService.initializeCombinedFilterPromise.then(() => {\r\n if (!this.gridRemoved) {\r\n updateGridQuery(\r\n this.grid.gridView,\r\n this.filterService.getCombinedFilter(), true\r\n );\r\n }\r\n });\r\n super.renderTrunk();\r\n return this;\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .inline-location-target-recommendation': 'showInlineLocationRecommendation',\r\n 'click .experiment-budget-ellipsis': 'showExperimentBudgetPopup',\r\n };\r\n }\r\n\r\n showExperimentBudgetPopup(event) {\r\n const item = this.grid.gridView.itemOfElement(event.target);\r\n const budgetSplitView = new BudgetSplitView({\r\n item,\r\n i18n: TargetingSettingsContext.i18n,\r\n }).render();\r\n\r\n return new GridCustomizedPopupEditor({\r\n editorView: budgetSplitView,\r\n editorPositionFactory: getEditorPositionAsideAnchor($(event.target)),\r\n renderBelow: false,\r\n className: 'grid-popupeditor experiment-budget-popup',\r\n }).render();\r\n }\r\n\r\n showInlineLocationRecommendation(event) {\r\n const campaign = this.grid.gridView.itemOfElement(event.target);\r\n const InlineLocationRecommendationModal = InlineLocationRecommendationPanel;\r\n this.inlineLocationRecommendationView = new InlineLocationRecommendationModal({\r\n scope: {\r\n customerId: TargetingSettingsContext.state.get('customer_id'),\r\n accountId: TargetingSettingsContext.state.get('account_id'),\r\n campaignId: campaign.Id,\r\n },\r\n deps: TargetingSettingsContext,\r\n }).render();\r\n this.inlineLocationRecommendationView.on('refresh:recommendations', () => this.forceRefreshGrid()); // when invalid recommendations, force refresh grid\r\n }\r\n\r\n forceRefreshGrid() {\r\n TargetingSettingsContext.CampaignCacheManager.invalidate('Campaign');\r\n this.grid.gridView.refresh(true);\r\n }\r\n\r\n get className() { return 'settings-grid-view'; }\r\n\r\n get template() {\r\n return EMPTY_TEMPLATE;\r\n }\r\n\r\n remove() {\r\n if (this.inlineLocationRecommendationView) {\r\n this.inlineLocationRecommendationView.remove();\r\n }\r\n if (this.grid) {\r\n if (this.grid.toolbar && this.grid.toolbar.gridToolbarGroup) {\r\n this.grid.toolbar.gridToolbarGroup.remove();\r\n this.grid.toolbar.gridToolbarGroup = null;\r\n }\r\n\r\n if (this.grid.gridView) {\r\n this.grid.gridView.trigger('willRemove');\r\n this.grid.gridView.remove();\r\n this.grid.gridView = null;\r\n this.view = null;\r\n }\r\n }\r\n this.gridRemoved = true;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { projectionGridBulkEdit } from '@bingads-webui-campaign/projection-grid-bulk-edit';\r\nimport { CampaignType } from '@bingads-webui-campaign/campaign-ui-common';\r\n\r\n/**\r\n * @typedef { Object } settingsBulkEditOptions\r\n * @property { Object } status settings status schema.\r\n * @property { Object } ChangeStatusView settings change status view.\r\n * @property { Object } ChangeStatusModel settings change status model.\r\n * @property { Object } ChangeUrlOptionsView settings change url options view.\r\n * @property { Object } ChangeUrlOptionsModel settings change url options model.\r\n * @property { Object } ChangeRsaAutoAssetsView settings change RSA auto assets view.\r\n * @property { Object } ChangeRsaAutoAssetsModel settings change RSA auto assets model.\r\n * @property { Object } config config.\r\n * @property { Object } i18n i18n.\r\n */\r\n\r\n/**\r\n * settingsBulkEdit\r\n * @param { settingsBulkEditOptions } options settings bulk edit options\r\n * @returns { Object } settingsBulkEditPlugin settings bulk edit plugin\r\n */\r\nfunction settingsBulkEdit(options) {\r\n const {\r\n status,\r\n ChangeStatusView,\r\n ChangeStatusModel,\r\n ChangeUrlOptionsView,\r\n ChangeUrlOptionsModel,\r\n ChangeRsaAutoAssetsView,\r\n ChangeRsaAutoAssetsModel,\r\n getCampaignTypeGlobalFilter,\r\n config,\r\n filterService,\r\n i18n,\r\n importNotificationCallback,\r\n } = options;\r\n\r\n function isFilterByAllCampaigns() {\r\n return getCampaignTypeGlobalFilter() === CampaignType.All;\r\n }\r\n\r\n function isFilterBySearchCampaigns() {\r\n return getCampaignTypeGlobalFilter() === CampaignType.Default;\r\n }\r\n\r\n function getChangeUrlOptionView({ viewConfig, selectedRowCount }) {\r\n return new ChangeUrlOptionsView(_.defaults({\r\n entityType: 'Campaign',\r\n model: new ChangeUrlOptionsModel({\r\n selectedEntityCount: selectedRowCount,\r\n }),\r\n isForVNext: true,\r\n }, viewConfig));\r\n }\r\n\r\n function getChangeRsaAutoAssetsView({ viewConfig, selectedRowCount }) {\r\n return new ChangeRsaAutoAssetsView(_.defaults({\r\n model: new ChangeRsaAutoAssetsModel({\r\n selectedEntityCount: selectedRowCount,\r\n }),\r\n }, viewConfig));\r\n }\r\n\r\n const items = [{\r\n text: i18n.getString('ChangeUrlOptions'),\r\n classes: ['bulk-edit-change-url-option'],\r\n createView: getChangeUrlOptionView,\r\n }];\r\n\r\n if (ChangeRsaAutoAssetsView && ChangeRsaAutoAssetsModel) {\r\n items.push({\r\n text: i18n.getString('Grid_ChangeRsaAutoAssets'),\r\n classes: ['bulk-edit-rsa-auto-assets'],\r\n createView: getChangeRsaAutoAssetsView,\r\n isValid: () => isFilterByAllCampaigns() || isFilterBySearchCampaigns(),\r\n });\r\n }\r\n\r\n return projectionGridBulkEdit({\r\n status,\r\n ChangeStatusView,\r\n ChangeStatusModel,\r\n entityType: 'campaign',\r\n config,\r\n filterService,\r\n i18n,\r\n items,\r\n showDelete: false,\r\n isForVNext: true,\r\n importNotificationCallback,\r\n });\r\n}\r\n\r\nexport { settingsBulkEdit };\r\n","import _ from 'underscore';\r\nimport { AlertHelper } from '@bingads-webui-campaign/alert-helper';\r\nimport { TargetingSettingsContext } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\n\r\nexport function inlineEditableSave({\r\n view,\r\n i18n,\r\n fieldName,\r\n updated,\r\n editorView,\r\n editorViewCallbackAfterUpdate,\r\n importNotificationCallback,\r\n successCallback,\r\n}) {\r\n const toUpdate = _.pick(updated, 'Id', fieldName);\r\n\r\n let blockerContainer;\r\n\r\n if (view.grid.config.plugins.uiBlocker.el) {\r\n blockerContainer = view.grid.config.plugins.uiBlocker.el;\r\n } else {\r\n blockerContainer = view.grid.gridView.$el;\r\n }\r\n\r\n return TargetingSettingsContext.jsDataCampaign.Campaign\r\n .update(updated.Id, toUpdate, { adapter: 'bulk' })\r\n .finally(withUiBlock(blockerContainer))\r\n .then(() => {\r\n if (editorViewCallbackAfterUpdate && _.isFunction(editorViewCallbackAfterUpdate)) {\r\n editorViewCallbackAfterUpdate();\r\n }\r\n // use import notifications callback for campaign status change\r\n if (fieldName === 'Status' && importNotificationCallback && _.isFunction(importNotificationCallback)) {\r\n importNotificationCallback();\r\n }\r\n if (_.isFunction(successCallback)) {\r\n successCallback(updated);\r\n }\r\n\r\n view.grid.gridView.trigger('didEdit', updated);\r\n })\r\n .catch((response) => {\r\n let error;\r\n const unexpectedError = i18n.getString('ErrorNumber_-1');\r\n\r\n if (!response || !response.errors) {\r\n error = unexpectedError;\r\n } else {\r\n const errors = TargetingSettingsContext.i18nErrors.getBulkApiErrors(response.errors);\r\n\r\n if (!errors || !errors[0] || !errors[0].message) {\r\n error = unexpectedError;\r\n } else {\r\n error = errors[0].message;\r\n }\r\n }\r\n\r\n if (editorView && editorView.$el.is(':visible') && _.isFunction(editorView.setErrors)) {\r\n editorView.setErrors({ [fieldName]: error });\r\n } else {\r\n const alertHelper = new AlertHelper({ i18n });\r\n alertHelper.showError(error);\r\n }\r\n });\r\n}\r\n","import _ from 'underscore';\r\nimport { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\nimport { TargetingSettingsContext } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport campaignColumnTemplate from './campaign-column.pug';\r\nimport { InlineEditableColumnPrompt } from './inline-editable/prompt';\r\n\r\nexport class ColumnCampaign extends CampaignuiBaseColumn {\r\n constructor({\r\n i18n,\r\n view,\r\n }) {\r\n super({\r\n name: 'Campaign',\r\n type: 'string',\r\n property: _.compact([\r\n 'Id',\r\n 'Name',\r\n 'BaseCampaignName',\r\n 'CampaignType',\r\n 'DeliveryStatus',\r\n ]),\r\n sortable: 'Name',\r\n title: 'ColumnName_Campaign',\r\n bodyClasses: ['col-CampaignName'],\r\n i18n,\r\n });\r\n\r\n this.i18n = i18n;\r\n this.view = view;\r\n }\r\n\r\n template({ value }) {\r\n const cid = TargetingSettingsContext.state.get('customer_id');\r\n const aid = TargetingSettingsContext.state.get('account_id');\r\n const isSmartCampaign = value.CampaignType === 'Smart';\r\n let link;\r\n\r\n if (isSmartCampaign) {\r\n link = value.DeliveryStatus === 'CampaignInProgress' ?\r\n `/campaign/Smart?cid=${cid}#/CreateCampaign/${value.cmpid}` :\r\n `/campaign/Smart?cid=${cid}#/campaign/${value.cmpid}`;\r\n } else {\r\n link = `/campaign/vnext/settings?aid=${aid}&cid=${cid}&campaignId=${value.cmpid}`;\r\n }\r\n\r\n let ariaLabel = this.i18n.getString('Click to scope to campaign {{campaignName}}', { campaignName: value.name });\r\n let className = '';\r\n\r\n if (value.baseCampaignName) {\r\n ariaLabel = this.i18n.getString('Click to scope to experiment {{experimentName}}', { experimentName: value.name });\r\n className = 'experiment-name';\r\n }\r\n\r\n return campaignColumnTemplate({\r\n link,\r\n name: value.name,\r\n baseCampaignName: value.baseCampaignName,\r\n campaignId: value.cmpid,\r\n skipScopeNavigation: isSmartCampaign,\r\n ariaLabel,\r\n className,\r\n });\r\n }\r\n\r\n get property() {\r\n return {\r\n get: ({\r\n Id, Name, BaseCampaignName, DeliveryStatus, CampaignType,\r\n }) => ({\r\n cmpid: Id,\r\n name: Name,\r\n baseCampaignName: BaseCampaignName,\r\n DeliveryStatus,\r\n CampaignType,\r\n }),\r\n key: this.config.property,\r\n };\r\n }\r\n\r\n onPrompt({\r\n event, item, newPosition,\r\n }) {\r\n if (event.target.tagName.toLowerCase() === 'a') {\r\n return undefined;\r\n }\r\n\r\n // Store current campaign name before updating it\r\n const currentName = item.Name;\r\n\r\n return InlineEditableColumnPrompt({\r\n position: newPosition,\r\n item,\r\n schema: TargetingSettingsContext.CampaignSchema,\r\n view: this.view,\r\n i18n: this.i18n,\r\n fieldName: 'Name',\r\n successCallback: (updated) => {\r\n // Since the currently edited Campaign may also be the BaseCampaign of\r\n // other Experimental Campaigns in this grid, check and update.\r\n _.each(this.view.grid.gridView.itemArray, (rowItem) => {\r\n if (rowItem.BaseCampaignName === currentName) {\r\n const updatedRowItem = _.defaults({\r\n BaseCampaignName: updated.Name,\r\n }, rowItem);\r\n\r\n this.view.grid.gridView.trigger('didEdit', updatedRowItem);\r\n }\r\n });\r\n\r\n // update wunderbar\r\n window.App.trigger('campaignUpdated', { data: [_.pick(updated, 'Id', 'Name')] });\r\n },\r\n });\r\n }\r\n}\r\n","import * as PopupEditor from '@bingads-webui/popup-editor';\r\nimport { inlineEditableSave } from './save';\r\n\r\nexport function InlineEditableColumnPrompt({\r\n position, item, view, i18n, fieldName, schema, successCallback,\r\n}) {\r\n PopupEditor.prompt({\r\n position,\r\n i18n,\r\n schema,\r\n model: item,\r\n fields: [fieldName],\r\n hasLabels: false,\r\n template: 'inline',\r\n parentContainerSelector: '.grid-and-disclaim-container',\r\n saveModel: (updated, editorView) =>\r\n inlineEditableSave({\r\n view,\r\n i18n,\r\n fieldName,\r\n updated,\r\n editorView,\r\n editorViewCallbackAfterUpdate: () => editorView.trigger('save', updated),\r\n successCallback,\r\n }),\r\n });\r\n}\r\n","import _ from 'underscore';\r\nimport { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\nimport {\r\n TargetingSettingsContext,\r\n getNameForRadiusLocation,\r\n} from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport locationsColumnTemplate from './target.pug';\r\n\r\nexport class ColumnLocations extends CampaignuiBaseColumn {\r\n constructor({\r\n i18n,\r\n }) {\r\n const localizedTitle = i18n.getString('CampaignSettingsGrid_ColumnHeader_Locations');\r\n\r\n super({\r\n name: 'Locations',\r\n type: 'string',\r\n property: ['Id', 'CampaignCriterions', 'RecommendationTypes', 'TotalCountOfLocationTargets', 'TotalCountOfExcludedLocationTargets'],\r\n sortable: false,\r\n title: 'CampaignSettingsGrid_ColumnHeader_Locations',\r\n helpId: 'Page_CampaignGrids_Locations',\r\n i18n,\r\n helpAriaLabel: i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n\r\n this.i18n = i18n;\r\n }\r\n\r\n template({ value }) {\r\n const cid = TargetingSettingsContext.state.get('customer_id');\r\n const aid = TargetingSettingsContext.state.get('account_id');\r\n const link = `/campaign/vnext/settings?aid=${aid}&cid=${cid}&campaignId=${value.cmpid}`;\r\n return locationsColumnTemplate({\r\n link,\r\n name: value.locationName,\r\n hasLocationRecommendation: value.hasLocationRecommendation,\r\n i18n: this.i18n,\r\n campaignId: value.cmpid,\r\n });\r\n }\r\n\r\n get property() {\r\n return {\r\n get: ({\r\n Id,\r\n TotalCountOfLocationTargets,\r\n TotalCountOfExcludedLocationTargets,\r\n CampaignCriterions,\r\n RecommendationTypes = [],\r\n }) => {\r\n const criterions = _.chain(CampaignCriterions)\r\n .filter(criterion => criterion.Criterion.Type === 'Location' || criterion.Criterion.Type === 'Radius')\r\n .pluck('Criterion')\r\n .value();\r\n\r\n const names = [];\r\n _.each(criterions, (c) => {\r\n if (_.isEmpty(c.Name)) {\r\n names.push(getNameForRadiusLocation(c.Latitude, c.Longitude));\r\n } else {\r\n names.push(c.Name);\r\n }\r\n });\r\n\r\n let displayName;\r\n if (_.isEmpty(names) || names.length === 0) {\r\n displayName = this.i18n.getString('CampaignImport_AllTargetLocations');\r\n } else {\r\n const combinedName = names.join(', ');\r\n if (TotalCountOfLocationTargets > names.length) {\r\n displayName = `${combinedName} ${this.i18n.getString('CampaignImport_And')} ${TotalCountOfLocationTargets - names.length} ${this.i18n.getString('AllSettings_More')}`;\r\n } else {\r\n displayName = combinedName;\r\n }\r\n }\r\n\r\n if (TotalCountOfExcludedLocationTargets > 0) {\r\n displayName = `${displayName} ${this.i18n.getString('AllSettings_ExcludedCount').replace('{count}', TotalCountOfExcludedLocationTargets)}`;\r\n }\r\n\r\n return {\r\n cmpid: Id,\r\n locationName: displayName,\r\n hasLocationRecommendation: _.contains(RecommendationTypes, 'NewLocationTarget'),\r\n };\r\n },\r\n key: this.config.property,\r\n };\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\nimport { TargetingSettingsContext } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport adScheduleColumnTemplate from './target.pug';\r\n\r\nexport class ColumnAdSchedule extends CampaignuiBaseColumn {\r\n constructor({\r\n i18n,\r\n }) {\r\n const localizedTitle = i18n.getString('ColumnName_AdSchedule');\r\n\r\n super({\r\n name: 'AdSchedule',\r\n type: 'string',\r\n property: ['Id', 'CampaignCriterions'],\r\n sortable: false,\r\n title: 'ColumnName_AdSchedule',\r\n helpId: 'pop_BA_CampaignsGrid_AdSchedule',\r\n i18n,\r\n helpAriaLabel: i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n\r\n this.i18n = i18n;\r\n }\r\n\r\n template({ value }) {\r\n const cid = TargetingSettingsContext.state.get('customer_id');\r\n const aid = TargetingSettingsContext.state.get('account_id');\r\n const link = `/campaign/vnext/settings?aid=${aid}&cid=${cid}&campaignId=${value.cmpid}`;\r\n return adScheduleColumnTemplate({\r\n link,\r\n name: value.adSchduleName,\r\n campaignId: value.cmpid,\r\n });\r\n }\r\n\r\n get property() {\r\n return {\r\n get: ({ Id, CampaignCriterions }) => {\r\n let name;\r\n const adSchedules = _.filter(CampaignCriterions, criterion => criterion.Criterion.Type === 'DayTime');\r\n if (!adSchedules || adSchedules.length === 0) {\r\n name = this.i18n.getString('Grid_AdSchedule_Default');\r\n } else {\r\n const bids = _.chain(adSchedules).pluck('CriterionBid').pluck('Multiplier').value();\r\n name = _.some(bids, b => b > 0) ? this.i18n.getString('Grid_AdSchedule_Custom_Bid') : this.i18n.getString('Grid_AdSchedule_Custom');\r\n }\r\n\r\n return {\r\n cmpid: Id,\r\n adSchduleName: name,\r\n };\r\n },\r\n key: this.config.property,\r\n };\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\nimport { TargetingSettingsContext } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport devicesColumnTemplate from './target.pug';\r\n\r\nconst isCampaignWithNoDeviceTargeting = (campaignType/* , campaignSubType */) => campaignType === 'PerformanceMax';\r\n\r\nexport class ColumnDevices extends CampaignuiBaseColumn {\r\n constructor({\r\n i18n,\r\n }) {\r\n const localizedTitle = i18n.getString('CampaignSettingsGrid_ColumnHeader_Devices');\r\n\r\n super({\r\n name: 'Devices',\r\n type: 'string',\r\n property: ['Id', 'CampaignCriterions'],\r\n sortable: false,\r\n title: 'CampaignSettingsGrid_ColumnHeader_Devices',\r\n helpId: 'Page_CampaignGrids_Devices',\r\n i18n,\r\n helpAriaLabel: i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n\r\n this.i18n = i18n;\r\n }\r\n\r\n template({ value }) {\r\n const cid = TargetingSettingsContext.state.get('customer_id');\r\n const aid = TargetingSettingsContext.state.get('account_id');\r\n const link = `/campaign/vnext/settings?aid=${aid}&cid=${cid}&campaignId=${value.cmpid}`;\r\n return devicesColumnTemplate({\r\n link,\r\n name: value.devicesName,\r\n campaignId: value.cmpid,\r\n isNonClickable: value.isNonClickable,\r\n });\r\n }\r\n\r\n get property() {\r\n return {\r\n get: ({\r\n Id, CampaignCriterions, CampaignType, CampaignSubType,\r\n }) => {\r\n if (!TargetingSettingsContext.pageContext.Permissions.IsOriginalDeviceTargetingEnabled ||\r\n isCampaignWithNoDeviceTargeting(CampaignType, CampaignSubType)) {\r\n return {\r\n cmpid: Id,\r\n devicesName: this.i18n.getString('Targeting_Device_AllDevices'),\r\n isNonClickable: isCampaignWithNoDeviceTargeting(CampaignType, CampaignSubType),\r\n };\r\n }\r\n\r\n const devices = _.filter(CampaignCriterions, criterion => criterion.Criterion.Type === 'Device');\r\n const computers = _.filter(devices, device => device.Criterion.DeviceName === 'Computers');\r\n const smartphones = _.filter(devices, device => device.Criterion.DeviceName === 'Smartphones');\r\n const tablets = _.filter(devices, device => device.Criterion.DeviceName === 'Tablets');\r\n const deviceNames = [];\r\n let computerAllSelected;\r\n let smartphoneAllSelected;\r\n let tabletsAllSelected;\r\n\r\n if (computers && computers.length === 1) {\r\n computerAllSelected = 'All';\r\n }\r\n if (smartphones) {\r\n smartphoneAllSelected = (smartphones.length === 5 || (smartphones.length === 1 && _.isNull(smartphones[0].Criterion.OSName))) ? 'All' : 'Some';\r\n }\r\n if (tablets) {\r\n tabletsAllSelected = (tablets.length === 4 || (tablets.length === 1 && _.isNull(tablets[0].Criterion.OSName))) ? 'All' : 'Some';\r\n }\r\n\r\n if (computerAllSelected === 'All' && smartphoneAllSelected === 'All' && tabletsAllSelected === 'All') {\r\n deviceNames.push(this.i18n.getString('Targeting_Device_AllDevices'));\r\n } else {\r\n deviceNames.push(this.i18n.getString(`Targeting_Device_Computers_OperatingSystems_${computerAllSelected}`));\r\n deviceNames.push(this.i18n.getString(`Targeting_Device_Smartphones_OperatingSystems_${smartphoneAllSelected}`));\r\n deviceNames.push(this.i18n.getString(`Targeting_Device_Tablets_OperatingSystems_${tabletsAllSelected}`));\r\n }\r\n\r\n return {\r\n cmpid: Id,\r\n devicesName: deviceNames.join(', '),\r\n };\r\n },\r\n key: this.config.property,\r\n };\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\n\r\nconst LinkedInAgeRanges = {\r\n EighteenToTwentyFive: _TL_('18 to 24'),\r\n TwentyFiveToThirtyFive: _TL_('25 to 34'),\r\n ThirtyFiveToFiftyFive: _TL_('35 to 54'),\r\n FiftyFiveAndAbove: _TL_('55+'),\r\n};\r\n\r\nconst Genders = {\r\n Female: _TL_('Female'),\r\n Male: _TL_('Male'),\r\n};\r\n\r\nexport class ColumnDemographic extends CampaignuiBaseColumn {\r\n constructor({ i18n }) {\r\n const localizedTitle = i18n.getString('CampaignSettingsGrid_ColumnHeader_Demographics');\r\n\r\n super({\r\n name: 'Demographic',\r\n type: 'string',\r\n property: 'CampaignCriterions',\r\n sortable: false,\r\n title: 'CampaignSettingsGrid_ColumnHeader_Demographics',\r\n helpId: 'Page_CampaignGrids_Demographic',\r\n i18n,\r\n helpAriaLabel: i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n\r\n this.i18n = i18n;\r\n }\r\n\r\n get property() {\r\n return {\r\n get: ({ CampaignCriterions, CampaignType }) => {\r\n if (CampaignType === 'LinkedIn') {\r\n const ages = _.filter(CampaignCriterions, criterion => criterion.Criterion.Type === 'Age')\r\n .map(criterion => LinkedInAgeRanges[criterion.Criterion.AgeRange] || criterion.Criterion.AgeRange);\r\n const genders = _.filter(CampaignCriterions, criterion => criterion.Criterion.Type === 'Gender')\r\n .map(criterion => Genders[criterion.Criterion.GenderType] || criterion.Criterion.GenderType);\r\n const isAllAges = _.isEmpty(ages) || _.size(ages) === _.size(LinkedInAgeRanges);\r\n const isAllGenders = _.isEmpty(genders) || _.size(genders) === _.size(Genders);\r\n\r\n const genderListString = isAllGenders\r\n ? this.i18n.getString(_TL_('Both genders'))\r\n : _.chain(_.sortBy(genders))\r\n .map(gender => this.i18n.getString(gender))\r\n .join(this.i18n.getString(_TL_(', ')))\r\n .value();\r\n\r\n const ageRangesListString = isAllAges\r\n ? this.i18n.getString(_TL_('all ages'))\r\n : _.chain(_.sortBy(ages))\r\n .map(ageRange => this.i18n.getString(ageRange))\r\n .join(this.i18n.getString(_TL_(', ')))\r\n .value();\r\n\r\n if (isAllAges && isAllGenders) {\r\n return this.i18n.getString('Page_PFPCampaignOrder_AllDemogExcerpt');\r\n }\r\n\r\n return [genderListString, ageRangesListString].join(this.i18n.getString(_TL_(', ')));\r\n }\r\n\r\n return this.i18n.getString('Page_PFPCampaignOrder_AllDemogExcerpt');\r\n },\r\n key: this.config.property,\r\n };\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\nimport { showPausedCampaignNotifications } from '@bingads-webui-campaign/import-shared-utils';\r\nimport { renderStatusPopupEditor } from '@bingads-webui-campaign/status-popup-editor';\r\nimport { TargetingSettingsContext } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport statusTemplate from './status-column.pug';\r\nimport headerTemplate from './status-column-header.pug';\r\nimport { inlineEditableSave } from './inline-editable/save';\r\n\r\nconst templateConfig = {\r\n UserPaused: {\r\n statusText: 'Paused',\r\n ariaLabel: 'EntityStatus_Paused',\r\n classes: 'statusPaused_icon',\r\n },\r\n BudgetUserPaused: {\r\n statusText: 'Paused',\r\n ariaLabel: 'EntityStatus_Paused',\r\n classes: 'statusPaused_icon',\r\n },\r\n Deleted: {\r\n statusText: 'Deleted',\r\n ariaLabel: 'EntityStatus_Deleted',\r\n classes: 'statusDeleted_icon',\r\n },\r\n Suspended: {\r\n statusText: 'Suspended',\r\n ariaLabel: 'EntityStatus_Suspended',\r\n classes: 'statusSuspended_icon',\r\n },\r\n};\r\n\r\nconst defaultTemplateConfig = {\r\n statusText: 'Enabled',\r\n ariaLabel: 'EntityStatus_Active',\r\n classes: 'statusEnabled_icon',\r\n};\r\n\r\nfunction getStatusTemplateConfig(status, isExperiment) {\r\n const config = _.clone(_.result(templateConfig, status, defaultTemplateConfig));\r\n\r\n if (isExperiment) {\r\n config.classes = _.result({\r\n Enabled: 'experiment-active-icon',\r\n Paused: 'experiment-paused-icon',\r\n }, config.statusText, config.classes);\r\n }\r\n\r\n return config;\r\n}\r\n\r\nexport class ColumnStatus extends CampaignuiBaseColumn {\r\n constructor({ i18n, view }) {\r\n super({\r\n name: 'Status',\r\n property: ['Status', 'Id', 'ExperimentId', 'ImportProperties'],\r\n title: 'ColumnName_Status',\r\n sortable: 'Status',\r\n type: 'string',\r\n headerTemplate: () => headerTemplate({}),\r\n i18n,\r\n });\r\n\r\n this.i18n = i18n;\r\n this.view = view;\r\n }\r\n\r\n pickProperty(item) {\r\n const {\r\n Status,\r\n Id,\r\n ExperimentId,\r\n } = item;\r\n\r\n return {\r\n Status,\r\n Id,\r\n ExperimentId,\r\n };\r\n }\r\n\r\n template({ value }) {\r\n return statusTemplate(_.extend(\r\n { i18n: this.i18n },\r\n value,\r\n getStatusTemplateConfig(value.Status, !!value.ExperimentId)\r\n ));\r\n }\r\n\r\n onPrompt({ item, newPosition }) {\r\n const statusEditor = renderStatusPopupEditor({\r\n position: newPosition,\r\n i18n: this.i18n,\r\n currentStatus: item.Status,\r\n isForVNext: true,\r\n statusOptions: (() => {\r\n let options = [\r\n { name: 'Enabled', value: 'Active' },\r\n { name: 'Paused', value: 'UserPaused' },\r\n ];\r\n const isExperiment = _.result(item, 'ExperimentId');\r\n\r\n if (isExperiment) {\r\n options = _.map(options, (option) => {\r\n const iconClass = _.result({\r\n Enabled: 'experiment-active-icon',\r\n Paused: 'experiment-paused-icon',\r\n }, option.name);\r\n\r\n return _.defaults({ iconClass }, option);\r\n });\r\n }\r\n\r\n return options;\r\n })(),\r\n });\r\n const { activity: pausedCampaignImportNotificationActivity } = this.view.instrumentation.createScenarioAndActivity({\r\n scenarioName: 'PausedCampaignImportNotification',\r\n activityName: 'SettingsGridStatusColumn',\r\n });\r\n statusEditor.then((status) => {\r\n if (status && status !== item.Status) {\r\n // workaround to fix the bug in bulkupsert api.\r\n // use 'UserPaused' will get success but actually the request take No effect.\r\n const updated = _.defaults({ Status: status === 'UserPaused' ? 'Paused' : status }, item);\r\n inlineEditableSave({\r\n view: this.view,\r\n i18n: this.i18n,\r\n fieldName: 'Status',\r\n updated,\r\n editorViewCallbackAfterUpdate: () => {\r\n const schema = TargetingSettingsContext.campaignStatus;\r\n const response = [{\r\n Id: item.Id,\r\n Status: status === schema.Paused ? schema.EnumPaused : status,\r\n }];\r\n window.App.trigger('campaignUpdated', { data: response });\r\n updated.Status = status; // revert the workaround above\r\n },\r\n importNotificationCallback: () => {\r\n // show paused campaign notifications based on specific conditions\r\n showPausedCampaignNotifications({ campaignItemList: [item], updateStatus: status, activity: pausedCampaignImportNotificationActivity });\r\n },\r\n });\r\n }\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { ColumnsConfigBuilder } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { TargetingSettingsContext } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport { TrackingTemplateColumn, CustomParametersColumn, FinalUrlSuffixColumn } from '@bingads-webui-campaign/tracking-template-columns';\r\nimport { BudgetColumn, BidStrategyNameColumn, LifetimeBudgetColumn, CampaignBidStrategyTypeColumn as BidStrategyTypeColumn } from '@bingads-webui-campaign/campaignui-common-columns';\r\nimport { ColumnCampaign } from './columns/campaign-column';\r\nimport { ColumnLocations } from './columns/locations-column';\r\nimport { ColumnAdSchedule } from './columns/ad-schedule-column';\r\nimport { ColumnDevices } from './columns/devices-column';\r\nimport { ColumnDemographic } from './columns/demographic-column';\r\nimport { ColumnStatus } from './columns/status-column';\r\nimport { inlineEditableSave } from './columns/inline-editable/save';\r\n\r\nexport default class SettingsGridColumnsConfig {\r\n constructor() {\r\n const dynamicPermissions = TargetingSettingsContext.pageContext.Permissions.dynamic || {};\r\n\r\n const {\r\n PortfolioBidStrategy: isPortfolioBidStrategyEnabled,\r\n CampaignLifetimeBudget: isCampaignLifetimeBudgetEnabled,\r\n } = dynamicPermissions;\r\n\r\n this.isPortfolioBidStrategyEnabled = isPortfolioBidStrategyEnabled;\r\n this.isCampaignLifetimeBudgetEnabled = isCampaignLifetimeBudgetEnabled;\r\n\r\n let columns = [\r\n ColumnCampaign,\r\n BudgetColumn,\r\n this.isCampaignLifetimeBudgetEnabled && LifetimeBudgetColumn,\r\n ColumnLocations,\r\n ColumnDevices,\r\n ColumnAdSchedule,\r\n ColumnDemographic,\r\n TrackingTemplateColumn,\r\n CustomParametersColumn,\r\n FinalUrlSuffixColumn,\r\n this.isPortfolioBidStrategyEnabled && BidStrategyTypeColumn,\r\n this.isPortfolioBidStrategyEnabled && BidStrategyNameColumn,\r\n ];\r\n\r\n columns = _.compact(columns);\r\n\r\n this.builder = new ColumnsConfigBuilder()\r\n .addCategory('CampaignSettings', category => category.addColumns(columns));\r\n\r\n this.builder\r\n .setLockedColumns([ColumnStatus, ColumnCampaign])\r\n .setSelectedColumns(columns.concat([ColumnStatus]));\r\n }\r\n\r\n getColumnsConfig({\r\n view,\r\n router,\r\n }) {\r\n const config = {\r\n i18n: TargetingSettingsContext.i18n,\r\n view,\r\n router,\r\n inlineEditableSave,\r\n permissions: TargetingSettingsContext.pageContext.Permissions,\r\n schemaI18n: TargetingSettingsContext.s$i18n,\r\n InlineSharedBudgetEditor: TargetingSettingsContext.InlineSharedBudgetEditor,\r\n InlineBudgetEditor: TargetingSettingsContext.InlineBudgetEditor,\r\n decimal: TargetingSettingsContext.decimal,\r\n isForVNext: true,\r\n };\r\n\r\n if (this.isPortfolioBidStrategyEnabled) {\r\n config.isCampaign = true;\r\n config.isAllSettingsGrid = true;\r\n }\r\n\r\n return this.builder.getColumnsConfig(config);\r\n }\r\n\r\n getColumnChooserConfig() {\r\n return _.defaults(this.builder.getColumnChooserConfig({\r\n i18n: TargetingSettingsContext.i18n,\r\n patchQuery: true,\r\n Columns: TargetingSettingsContext.Columns,\r\n SelectedColumns: TargetingSettingsContext.SelectedColumns,\r\n LegacyColumns: TargetingSettingsContext.LegacyColumns,\r\n LegacySelectedColumns: TargetingSettingsContext.LegacySelectedColumns,\r\n permissions: TargetingSettingsContext.pageContext.Permissions,\r\n }), { isForVNext: true });\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { TargetingSettingsContext } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\n\r\nfunction getRecommendationTypesFilter() {\r\n const recommendationList = [];\r\n recommendationList.push('NewLocationTarget');\r\n // add new types when new recommendation pilot\r\n if (_.size(recommendationList) === 0) {\r\n return 'true';\r\n }\r\n const filters = _.map(recommendationList, type => `RecommendationTypes/any(c:c eq Enum.RecommendationType'${type}')`);\r\n return `(${filters.join(' or ')})`;\r\n}\r\n\r\nexport default class SettingsRepository {\r\n getDataSource() {\r\n return {\r\n type: 'jsdata',\r\n entity: TargetingSettingsContext.jsDataCampaign.Campaign,\r\n primaryKey: 'Id',\r\n options: {\r\n entitySet: TargetingSettingsContext.edmCampaign.currentAccount.Campaigns,\r\n },\r\n };\r\n }\r\n\r\n getQuery() {\r\n return {\r\n query: {\r\n $expand: _.compact([\r\n 'CampaignCriterions',\r\n 'Budget',\r\n 'AssociatedExperiment',\r\n ]).join(', '),\r\n },\r\n options: {\r\n cacheResponse: false,\r\n entitySet: TargetingSettingsContext.edmCampaign.currentAccount.Campaigns,\r\n filterOptions: {\r\n odata: {\r\n custom: {\r\n RecommendationTypes: getRecommendationTypesFilter,\r\n },\r\n },\r\n },\r\n },\r\n };\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { setUpErrorHandling } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { TargetingSettingsContext } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport { SettingsGridView } from './settings-grid-view';\r\nimport { getConfig } from './settings-grid-config';\r\nimport { getPlugins } from './settings-grid-plugins';\r\nimport SettingsGridColumnsConfig from './settings-grid-column-config';\r\nimport SettingsRepository from './settings-repository';\r\n\r\nexport function createAllSettingsGrid({\r\n // New UI options only\r\n filterService,\r\n router,\r\n viewport,\r\n customHeaderOffset,\r\n // common options\r\n preferenceConfig,\r\n dataSource,\r\n gridName,\r\n getAdditionalPlugins,\r\n perfMarker,\r\n prefetchChunks,\r\n getCampaignTypeGlobalFilter,\r\n instrumentation,\r\n}) {\r\n const columnConfig = new SettingsGridColumnsConfig();\r\n const repository = _.isUndefined(dataSource)\r\n ? new SettingsRepository()\r\n : new dataSource.SettingsRepository();\r\n\r\n return new SettingsGridView({\r\n router,\r\n filterService,\r\n preferenceConfig,\r\n getGridConfig: view => getConfig({\r\n repository,\r\n gridName,\r\n view,\r\n filterService,\r\n preferenceConfig,\r\n columnConfig,\r\n router,\r\n viewport,\r\n customHeaderOffset,\r\n i18n: TargetingSettingsContext.i18n,\r\n }),\r\n getGridPlugins: view => getPlugins({\r\n columnConfig,\r\n perfMarker,\r\n getCampaignTypeGlobalFilter,\r\n instrumentation,\r\n }).concat(getAdditionalPlugins(view)),\r\n setupDataSourceErrorHandling: view => setUpErrorHandling({\r\n gridView: view,\r\n scope: {},\r\n dataSource: repository.getDataSource(),\r\n i18n: TargetingSettingsContext.i18n,\r\n }),\r\n prefetchChunks,\r\n instrumentation,\r\n });\r\n}\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { sortableHeaderTemplate, validateOrder } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { TargetingSettingsContext } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\n\r\nexport function getConfig({\r\n repository,\r\n gridName,\r\n view,\r\n preferenceConfig,\r\n filterService,\r\n columnConfig,\r\n router,\r\n viewport,\r\n customHeaderOffset,\r\n i18n,\r\n}) {\r\n const headRows = ['column-header-rows'];\r\n\r\n const tableName = i18n.getString('TargetingSettings_All');\r\n const gridConfig = {\r\n name: gridName,\r\n legacyGridName: 'AllSettingsGrid',\r\n tableClasses: ['table', 'table-bordered'],\r\n tableAttributes: { 'aria-label': tableName },\r\n dataSource: repository.getDataSource(),\r\n query: repository.getQuery(),\r\n rows: {\r\n headRows,\r\n },\r\n columns: columnConfig.getColumnsConfig({\r\n view,\r\n router,\r\n isForVNext: true,\r\n }),\r\n scrolling: {\r\n header: {\r\n type: 'sticky',\r\n offset: customHeaderOffset || (() => $('nav.navbar-default.navbar-fixed-top').height()),\r\n attributes: { 'aria-label': i18n.getString('{{tableName}} table header', { tableName }) },\r\n },\r\n virtualized: true,\r\n },\r\n i18n: TargetingSettingsContext.i18n,\r\n preferenceService: TargetingSettingsContext.preferencesService,\r\n config: TargetingSettingsContext.config,\r\n ...({\r\n selection: true,\r\n filterService,\r\n sortableHeader: {\r\n template: sortableHeaderTemplate,\r\n },\r\n }),\r\n };\r\n\r\n validateOrder(preferenceConfig, gridConfig.columns);\r\n gridConfig.dataSource = _.omit(gridConfig.dataSource, 'query');\r\n gridConfig.scrolling.viewport = viewport;\r\n\r\n return gridConfig;\r\n}\r\n\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\n\r\nimport { a11yPlugin } from '@bingads-webui/projection-grid-a11y';\r\nimport { paginationPlugin } from '@bingads-webui/projection-grid-pagination';\r\nimport { showPausedCampaignNotifications } from '@bingads-webui-campaign/import-shared-utils';\r\nimport { columnChooserPlugin } from '@bingads-webui-campaign/projection-grid-column-chooser';\r\nimport { editablePlugin } from '@bingads-webui-campaign/projection-grid-editable';\r\nimport { inlineErrorPlugin } from '@bingads-webui/projection-grid-inline-error';\r\nimport { uiBlockerPlugin } from '@bingads-webui/projection-grid-uiblocker';\r\nimport { assistedSelectionPlugin } from '@bingads-webui/projection-grid-assisted-selection';\r\nimport { perfMarkerPlugin } from '@bingads-webui-campaign/pgrid-performance-log';\r\nimport { TargetingSettingsContext } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport { settingsBulkEdit } from './settings-bulk-edit';\r\n\r\nexport function getPlugins({\r\n columnConfig,\r\n perfMarker,\r\n getCampaignTypeGlobalFilter,\r\n instrumentation,\r\n}) {\r\n const columnChooserConfig = columnConfig.getColumnChooserConfig(/* isForVNext */ true);\r\n const { i18n } = TargetingSettingsContext;\r\n\r\n columnChooserConfig.customToolbarIcon = 'ba-TripleColumnSolid';\r\n\r\n let pausedCampaignImportNotificationActivity;\r\n if (instrumentation) {\r\n pausedCampaignImportNotificationActivity = instrumentation.createScenarioAndActivity({\r\n scenarioName: 'PausedCampaignImportNotification',\r\n activityName: 'SettingsGridBulkEdit',\r\n }).activity;\r\n }\r\n\r\n return _.compact([{\r\n // For accurate grid init latency, PerfMarkerPlugin should be the first plugin to load.\r\n plugin: perfMarkerPlugin,\r\n config: {\r\n marker: perfMarker,\r\n appConfig: TargetingSettingsContext.config,\r\n },\r\n }, {\r\n plugin: paginationPlugin,\r\n config: {\r\n pageSize: 20,\r\n availablePageSizes: [20, 50, 100, 200],\r\n enableRandomPage: false,\r\n pageNumberLabelText: '',\r\n pageSizeText: i18n.getString('Grid_ShowRows'),\r\n totalPageCountText: i18n.getString('Grid_PageOf'),\r\n },\r\n }, !TargetingSettingsContext.config.get('CurrentAccountInActive') &&\r\n !TargetingSettingsContext.pageContext.Permissions.IsReadOnlyUser && {\r\n plugin: editablePlugin,\r\n config: { i18n },\r\n }, {\r\n plugin: uiBlockerPlugin,\r\n config: { el: $('.all-settings-page') },\r\n }, {\r\n plugin: columnChooserPlugin,\r\n config: columnChooserConfig,\r\n }, {\r\n plugin: inlineErrorPlugin({\r\n errorIconClasses: ['grid-error'],\r\n }),\r\n }, {\r\n plugin: settingsBulkEdit({\r\n status: TargetingSettingsContext.campaignStatus,\r\n ChangeStatusView: TargetingSettingsContext.ChangeStatusView,\r\n ChangeStatusModel: TargetingSettingsContext.ChangeStatusModel,\r\n ChangeUrlOptionsView: TargetingSettingsContext.ChangeUrlOptionsView,\r\n ChangeUrlOptionsModel: TargetingSettingsContext.ChangeUrlOptionsModel,\r\n ChangeRsaAutoAssetsView: TargetingSettingsContext.ChangeRsaAutoAssetsView,\r\n ChangeRsaAutoAssetsModel: TargetingSettingsContext.ChangeRsaAutoAssetsModel,\r\n getCampaignTypeGlobalFilter,\r\n i18n: TargetingSettingsContext.i18n,\r\n config: TargetingSettingsContext.config,\r\n importNotificationCallback: ({ campaignItemList, updateStatus }) => showPausedCampaignNotifications({ campaignItemList, updateStatus, activity: pausedCampaignImportNotificationActivity }), // show paused campaign notifications based on specific conditions\r\n }),\r\n }, {\r\n plugin: assistedSelectionPlugin,\r\n }, {\r\n plugin: a11yPlugin,\r\n config: { i18n: TargetingSettingsContext.i18n },\r\n }]);\r\n}\r\n","import _ from 'underscore';\r\nimport {\r\n TargetingSettingsContext,\r\n TargetingType,\r\n getFilterStateConfig\r\n} from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport { crossPageSelectAllPlugin } from '@bingads-webui/projection-grid-cross-page-select-all';\r\nimport { placeholderPlugin } from '@bingads-webui/projection-grid-placeholder';\r\nimport { toolbarPlugin } from '@bingads-webui/projection-grid-toolbar';\r\n\r\nconst getQuickFilterConfig = () => {\r\n const recommendationFilterItem = {\r\n key: 'recommendation',\r\n text: TargetingSettingsContext.i18n.getString('Filter_Recommendation'),\r\n value: {\r\n query: {\r\n RecommendationTypes: {\r\n $eq: 'NewTargets',\r\n },\r\n },\r\n },\r\n classes: 'quick-filter-all-recommendation',\r\n };\r\n const quickFilter = {\r\n items: [{\r\n key: 'all',\r\n text: TargetingSettingsContext.i18n.getString('Dashboard_AllCampaigns'),\r\n value: {\r\n query: {},\r\n },\r\n classes: 'quick-filter-all',\r\n }, {\r\n key: 'active',\r\n text: TargetingSettingsContext.i18n.getString('Dashboard_AllEnabledCampaigns'),\r\n value: {\r\n query: {\r\n Status: {\r\n $in: [\r\n 'Enum.CampaignStatus\\'Active\\'',\r\n 'Enum.CampaignStatus\\'BudgetPaused\\'',\r\n ],\r\n },\r\n },\r\n },\r\n classes: 'quick-filter-all-active',\r\n }].concat([recommendationFilterItem]),\r\n };\r\n return quickFilter;\r\n};\r\n\r\nconst getLowerToolbarConfig = () => ({\r\n items: [{\r\n type: 'button',\r\n text: TargetingSettingsContext.i18n.getString('Grid_CreateCampaignButtonText'),\r\n classes: ['btn', 'btn-primary'],\r\n onClick: () => {\r\n TargetingSettingsContext.router.navigateToRoute('campaign_create_objective');\r\n },\r\n disabled: TargetingSettingsContext.pageContext.Permissions.IsReadOnlyUser\r\n || TargetingSettingsContext.config.get('CurrentAccountInActive'),\r\n }, {\r\n type: 'dropdown',\r\n id: 'dropdown-edit',\r\n disabled: TargetingSettingsContext.pageContext.Permissions.IsReadOnlyUser\r\n || TargetingSettingsContext.config.get('CurrentAccountInActive'),\r\n }, {\r\n type: 'selector',\r\n id: 'quick-filter',\r\n }, {\r\n type: 'dropdown',\r\n id: 'dropdown-column-chooser',\r\n }],\r\n});\r\n\r\nexport const getAdditionalPlugins = view => [\r\n {\r\n plugin: crossPageSelectAllPlugin,\r\n config: {\r\n i18n: TargetingSettingsContext.i18n,\r\n },\r\n }, {\r\n plugin: placeholderPlugin,\r\n config: {\r\n viewRoot: view.$el,\r\n container: '.noresult-container',\r\n text: TargetingSettingsContext.i18n.getString('Grid_NoRecords'),\r\n filteredContainer: '.noresult-container',\r\n filteredEmptyText: TargetingSettingsContext.i18n.getString('Grid_NoFilteredRecords'),\r\n },\r\n }, {\r\n plugin: toolbarPlugin,\r\n config: {\r\n 'lower-toolbar': getLowerToolbarConfig(),\r\n },\r\n }, {\r\n plugin: TargetingSettingsContext.quickFilterPlugin,\r\n config: getQuickFilterConfig(),\r\n }, {\r\n plugin: TargetingSettingsContext.filterStatePlugin,\r\n config: _.defaults({\r\n container: view.$('.filter-bar'),\r\n }, getFilterStateConfig({ setting: TargetingType.AllSettings })),\r\n },\r\n];\r\n","import _ from 'underscore';\r\nimport { AlertHelper } from '@bingads-webui-campaign/alert-helper';\r\nimport { TargetingSettingsContext } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\n\r\nexport function inlineEditableSave({\r\n view,\r\n i18n,\r\n fieldName,\r\n updated,\r\n editorView,\r\n editorViewCallbackAfterUpdate,\r\n successCallback,\r\n}) {\r\n const toUpdate = _.pick(updated, 'Id', fieldName);\r\n\r\n // TODO: Sync with MT about the format\r\n return TargetingSettingsContext.jsDataCampaign.Campaign\r\n .update(updated.Id, toUpdate, { adapter: 'bulk' })\r\n .finally(withUiBlock(view.grid.gridView.$el))\r\n .then(() => {\r\n if (editorViewCallbackAfterUpdate && _.isFunction(editorViewCallbackAfterUpdate)) {\r\n editorViewCallbackAfterUpdate();\r\n }\r\n if (_.isFunction(successCallback)) {\r\n successCallback(updated);\r\n }\r\n\r\n view.grid.gridView.trigger('didEdit', updated);\r\n })\r\n .catch((response) => {\r\n let error;\r\n const unexpectedError = i18n.getString('ErrorNumber_-1');\r\n\r\n if (!response || !response.errors) {\r\n error = unexpectedError;\r\n } else {\r\n const errors = TargetingSettingsContext.i18nErrors.getBulkApiErrors(response.errors);\r\n\r\n if (!errors || !errors[0] || !errors[0].message) {\r\n error = unexpectedError;\r\n } else {\r\n error = errors[0].message;\r\n }\r\n }\r\n\r\n if (editorView && editorView.$el.is(':visible') && _.isFunction(editorView.setErrors)) {\r\n editorView.setErrors({ [fieldName]: error });\r\n } else {\r\n const alertHelper = new AlertHelper({ i18n });\r\n alertHelper.showError(error);\r\n }\r\n });\r\n}\r\n","import _ from 'underscore';\r\nimport { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\nimport { TargetingSettingsContext } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport campaignColumnTemplate from './campaign-column.pug';\r\nimport { InlineEditableColumnPrompt } from './inline-editable/prompt';\r\n\r\nexport class ColumnCampaign extends CampaignuiBaseColumn {\r\n constructor({ i18n, view }) {\r\n super({\r\n name: 'Campaign',\r\n type: 'string',\r\n property: _.compact([\r\n 'Id',\r\n 'Name',\r\n 'BaseCampaignName',\r\n ]),\r\n sortable: 'Name',\r\n title: 'ColumnName_Campaign',\r\n bodyClasses: ['col-CampaignName'],\r\n i18n,\r\n });\r\n\r\n this.i18n = i18n;\r\n this.view = view;\r\n }\r\n\r\n template({ value }) {\r\n const cid = TargetingSettingsContext.state.get('customer_id');\r\n const aid = TargetingSettingsContext.state.get('account_id');\r\n const link = `#customer/${cid}/account/${aid}/campaign/${value.cmpid}/edit`;\r\n return campaignColumnTemplate({\r\n link,\r\n name: value.name,\r\n baseCampaignName: value.baseCampaignName,\r\n });\r\n }\r\n\r\n get property() {\r\n return {\r\n get: ({ Id, Name, BaseCampaignName }) => ({\r\n cmpid: Id,\r\n name: Name,\r\n baseCampaignName: BaseCampaignName,\r\n }),\r\n key: this.config.property,\r\n };\r\n }\r\n\r\n onPrompt({ event, position, item }) {\r\n if (event.target.tagName.toLowerCase() === 'a') {\r\n return undefined;\r\n }\r\n\r\n // Store current campaign name before updating it\r\n const currentName = item.Name;\r\n\r\n return InlineEditableColumnPrompt({\r\n position,\r\n item,\r\n schema: TargetingSettingsContext.CampaignSchema,\r\n view: this.view,\r\n i18n: this.i18n,\r\n fieldName: 'Name',\r\n successCallback: (updated) => {\r\n // Since the currently edited Campaign may also be the BaseCampaign of\r\n // other Experimental Campaigns in this grid, check and update.\r\n _.each(this.view.grid.gridView.itemArray, (rowItem) => {\r\n if (rowItem.BaseCampaignName === currentName) {\r\n const updatedRowItem = _.defaults({\r\n BaseCampaignName: updated.Name,\r\n }, rowItem);\r\n\r\n this.view.grid.gridView.trigger('didEdit', updatedRowItem);\r\n }\r\n });\r\n\r\n // update wunderbar\r\n window.App.trigger('campaignUpdated', { data: [_.pick(updated, 'Id', 'Name')] });\r\n },\r\n });\r\n }\r\n}\r\n","import * as PopupEditor from '@bingads-webui/popup-editor';\r\nimport { inlineEditableSave } from './save';\r\n\r\nexport function InlineEditableColumnPrompt({\r\n position, item, view, i18n, fieldName, schema, successCallback,\r\n}) {\r\n PopupEditor.prompt({\r\n position,\r\n i18n,\r\n schema,\r\n model: item,\r\n fields: [fieldName],\r\n hasLabels: false,\r\n template: 'inline',\r\n saveModel: (updated, editorView) =>\r\n inlineEditableSave({\r\n view,\r\n i18n,\r\n fieldName,\r\n updated,\r\n editorView,\r\n editorViewCallbackAfterUpdate: () => editorView.trigger('save', updated),\r\n successCallback,\r\n }),\r\n });\r\n}\r\n","import _ from 'underscore';\r\nimport { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\nimport {\r\n TargetingSettingsContext,\r\n getNameForRadiusLocation,\r\n} from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport locationsColumnTemplate from './target.pug';\r\n\r\nexport class ColumnLocations extends CampaignuiBaseColumn {\r\n constructor({ i18n }) {\r\n const localizedTitle = i18n.getString('CampaignSettingsGrid_ColumnHeader_Locations');\r\n\r\n super({\r\n name: 'Locations',\r\n type: 'string',\r\n property: ['Id', 'CampaignCriterions', 'RecommendationTypes', 'TotalCountOfLocationTargets', 'TotalCountOfExcludedLocationTargets'],\r\n sortable: false,\r\n title: 'CampaignSettingsGrid_ColumnHeader_Locations',\r\n helpId: 'Page_CampaignGrids_Locations',\r\n i18n,\r\n helpAriaLabel: i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n\r\n this.i18n = i18n;\r\n }\r\n\r\n template({ value }) {\r\n const cid = TargetingSettingsContext.state.get('customer_id');\r\n const aid = TargetingSettingsContext.state.get('account_id');\r\n const link = `#customer/${cid}/account/${aid}/campaign/${value.cmpid}/edit`;\r\n return locationsColumnTemplate({\r\n link,\r\n name: value.locationName,\r\n hasLocationRecommendation: value.hasLocationRecommendation,\r\n i18n: this.i18n,\r\n });\r\n }\r\n\r\n get property() {\r\n return {\r\n get: ({\r\n Id,\r\n TotalCountOfLocationTargets,\r\n TotalCountOfExcludedLocationTargets,\r\n CampaignCriterions,\r\n RecommendationTypes = [],\r\n }) => {\r\n const criterions = _.chain(CampaignCriterions)\r\n .filter(criterion => criterion.Criterion.Type === 'Location' || criterion.Criterion.Type === 'Radius')\r\n .pluck('Criterion')\r\n .value();\r\n\r\n const names = [];\r\n _.each(criterions, (c) => {\r\n if (_.isEmpty(c.Name)) {\r\n names.push(getNameForRadiusLocation(c.Latitude, c.Longitude));\r\n } else {\r\n names.push(c.Name);\r\n }\r\n });\r\n\r\n let displayName;\r\n if (_.isEmpty(names) || names.length === 0) {\r\n displayName = this.i18n.getString('CampaignImport_AllTargetLocations');\r\n } else {\r\n const combinedName = names.join(', ');\r\n if (TotalCountOfLocationTargets > names.length) {\r\n displayName = `${combinedName} ${this.i18n.getString('CampaignImport_And')} ${TotalCountOfLocationTargets - names.length} ${this.i18n.getString('AllSettings_More')}`;\r\n } else {\r\n displayName = combinedName;\r\n }\r\n }\r\n\r\n if (TotalCountOfExcludedLocationTargets > 0) {\r\n displayName = `${displayName} ${this.i18n.getString('AllSettings_ExcludedCount').replace('{count}', TotalCountOfExcludedLocationTargets)}`;\r\n }\r\n\r\n return {\r\n cmpid: Id,\r\n locationName: displayName,\r\n hasLocationRecommendation: _.contains(RecommendationTypes, 'NewLocationTarget'),\r\n };\r\n },\r\n key: this.config.property,\r\n };\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\nimport { TargetingSettingsContext } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport adScheduleColumnTemplate from './target.pug';\r\n\r\nexport class ColumnAdSchedule extends CampaignuiBaseColumn {\r\n constructor({ i18n }) {\r\n const localizedTitle = i18n.getString('ColumnName_AdSchedule');\r\n\r\n super({\r\n name: 'AdSchedule',\r\n type: 'string',\r\n property: ['Id', 'CampaignCriterions'],\r\n sortable: false,\r\n title: 'ColumnName_AdSchedule',\r\n helpId: 'pop_BA_CampaignsGrid_AdSchedule',\r\n i18n,\r\n helpAriaLabel: i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n\r\n this.i18n = i18n;\r\n }\r\n\r\n template({ value }) {\r\n const cid = TargetingSettingsContext.state.get('customer_id');\r\n const aid = TargetingSettingsContext.state.get('account_id');\r\n const link = `#customer/${cid}/account/${aid}/campaign/${value.cmpid}/edit`;\r\n return adScheduleColumnTemplate({ link, name: value.adSchduleName });\r\n }\r\n\r\n get property() {\r\n return {\r\n get: ({ Id, CampaignCriterions }) => {\r\n let name;\r\n const adSchedules = _.filter(CampaignCriterions, criterion => criterion.Criterion.Type === 'DayTime');\r\n if (!adSchedules || adSchedules.length === 0) {\r\n name = this.i18n.getString('Grid_AdSchedule_Default');\r\n } else {\r\n const bids = _.chain(adSchedules).pluck('CriterionBid').pluck('Multiplier').value();\r\n name = _.some(bids, b => b > 0) ? this.i18n.getString('Grid_AdSchedule_Custom_Bid') : this.i18n.getString('Grid_AdSchedule_Custom');\r\n }\r\n\r\n return {\r\n cmpid: Id,\r\n adSchduleName: name,\r\n };\r\n },\r\n key: this.config.property,\r\n };\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\nimport { TargetingSettingsContext } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport devicesColumnTemplate from './target.pug';\r\n\r\nexport class ColumnDevices extends CampaignuiBaseColumn {\r\n constructor({ i18n }) {\r\n const localizedTitle = i18n.getString('CampaignSettingsGrid_ColumnHeader_Devices');\r\n\r\n super({\r\n name: 'Devices',\r\n type: 'string',\r\n property: ['Id', 'CampaignCriterions'],\r\n sortable: false,\r\n title: 'CampaignSettingsGrid_ColumnHeader_Devices',\r\n helpId: 'Page_CampaignGrids_Devices',\r\n i18n,\r\n helpAriaLabel: i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n\r\n this.i18n = i18n;\r\n }\r\n\r\n template({ value }) {\r\n const cid = TargetingSettingsContext.state.get('customer_id');\r\n const aid = TargetingSettingsContext.state.get('account_id');\r\n const link = `#customer/${cid}/account/${aid}/campaign/${value.cmpid}/edit`;\r\n return devicesColumnTemplate({ link, name: value.devicesName });\r\n }\r\n\r\n get property() {\r\n return {\r\n get: ({ Id, CampaignCriterions }) => {\r\n if (!TargetingSettingsContext.pageContext.Permissions.IsOriginalDeviceTargetingEnabled) {\r\n return {\r\n cmpid: Id,\r\n devicesName: this.i18n.getString('Targeting_Device_AllDevices'),\r\n };\r\n }\r\n\r\n const devices = _.filter(CampaignCriterions, criterion => criterion.Criterion.Type === 'Device');\r\n const computers = _.filter(devices, device => device.Criterion.DeviceName === 'Computers');\r\n const smartphones = _.filter(devices, device => device.Criterion.DeviceName === 'Smartphones');\r\n const tablets = _.filter(devices, device => device.Criterion.DeviceName === 'Tablets');\r\n const deviceNames = [];\r\n let computerAllSelected;\r\n let smartphoneAllSelected;\r\n let tabletsAllSelected;\r\n\r\n if (computers && computers.length === 1) {\r\n computerAllSelected = 'All';\r\n }\r\n if (smartphones) {\r\n smartphoneAllSelected = (smartphones.length === 5 || (smartphones.length === 1 && _.isNull(smartphones[0].Criterion.OSName))) ? 'All' : 'Some';\r\n }\r\n if (tablets) {\r\n tabletsAllSelected = (tablets.length === 4 || (tablets.length === 1 && _.isNull(tablets[0].Criterion.OSName))) ? 'All' : 'Some';\r\n }\r\n\r\n if (computerAllSelected === 'All' && smartphoneAllSelected === 'All' && tabletsAllSelected === 'All') {\r\n deviceNames.push(this.i18n.getString('Targeting_Device_AllDevices'));\r\n } else {\r\n deviceNames.push(this.i18n.getString(`Targeting_Device_Computers_OperatingSystems_${computerAllSelected}`));\r\n deviceNames.push(this.i18n.getString(`Targeting_Device_Smartphones_OperatingSystems_${smartphoneAllSelected}`));\r\n deviceNames.push(this.i18n.getString(`Targeting_Device_Tablets_OperatingSystems_${tabletsAllSelected}`));\r\n }\r\n\r\n return {\r\n cmpid: Id,\r\n devicesName: deviceNames.join(', '),\r\n };\r\n },\r\n key: this.config.property,\r\n };\r\n }\r\n}\r\n","import { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\n\r\nexport class ColumnDemographic extends CampaignuiBaseColumn {\r\n constructor({ i18n }) {\r\n const localizedTitle = i18n.getString('CampaignSettingsGrid_ColumnHeader_Demographics');\r\n\r\n super({\r\n name: 'Demographic',\r\n type: 'string',\r\n property: 'CampaignCriterions',\r\n sortable: false,\r\n title: 'CampaignSettingsGrid_ColumnHeader_Demographics',\r\n helpId: 'Page_CampaignGrids_Demographic',\r\n i18n,\r\n helpAriaLabel: i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n\r\n this.i18n = i18n;\r\n }\r\n\r\n get property() {\r\n return {\r\n get: () => this.i18n.getString('Page_PFPCampaignOrder_AllDemogExcerpt'),\r\n key: this.config.property,\r\n };\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\nimport { renderStatusPopupEditor } from '@bingads-webui-campaign/status-popup-editor';\r\nimport { TargetingSettingsContext } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport statusTemplate from './status-column.pug';\r\nimport headerTemplate from './status-column-header.pug';\r\nimport { inlineEditableSave } from './inline-editable/save';\r\n\r\nconst templateConfig = {\r\n UserPaused: {\r\n statusText: 'Paused',\r\n ariaLabel: 'EntityStatus_Paused',\r\n classes: 'statusPaused_icon',\r\n },\r\n BudgetUserPaused: {\r\n statusText: 'Paused',\r\n ariaLabel: 'EntityStatus_Paused',\r\n classes: 'statusPaused_icon',\r\n },\r\n Deleted: {\r\n statusText: 'Deleted',\r\n ariaLabel: 'EntityStatus_Deleted',\r\n classes: 'statusDeleted_icon',\r\n },\r\n Suspended: {\r\n statusText: 'Suspended',\r\n ariaLabel: 'EntityStatus_Suspended',\r\n classes: 'statusSuspended_icon',\r\n },\r\n};\r\n\r\nconst defaultTemplateConfig = {\r\n statusText: 'Enabled',\r\n ariaLabel: 'EntityStatus_Active',\r\n classes: 'statusEnabled_icon',\r\n};\r\n\r\nfunction getStatusTemplateConfig(status, isExperiment) {\r\n const config = _.clone(_.result(templateConfig, status, defaultTemplateConfig));\r\n\r\n if (isExperiment) {\r\n config.classes = _.result({\r\n Enabled: 'experiment-active-icon',\r\n Paused: 'experiment-paused-icon',\r\n }, config.statusText, config.classes);\r\n }\r\n\r\n return config;\r\n}\r\n\r\nexport class ColumnStatus extends CampaignuiBaseColumn {\r\n constructor({ i18n, view }) {\r\n super({\r\n name: 'Status',\r\n property: ['Status', 'Id', 'ExperimentId'],\r\n title: 'ColumnName_Status',\r\n sortable: 'Status',\r\n type: 'string',\r\n headerTemplate: () => headerTemplate({}),\r\n i18n,\r\n });\r\n\r\n this.i18n = i18n;\r\n this.view = view;\r\n }\r\n\r\n pickProperty(item) {\r\n const {\r\n Status,\r\n Id,\r\n ExperimentId,\r\n } = item;\r\n\r\n return {\r\n Status,\r\n Id,\r\n ExperimentId,\r\n };\r\n }\r\n\r\n template({ value }) {\r\n return statusTemplate(_.extend(\r\n { i18n: this.i18n },\r\n value,\r\n getStatusTemplateConfig(value.Status, !!value.ExperimentId)\r\n ));\r\n }\r\n\r\n onPrompt({ position, item }) {\r\n const statusEditor = renderStatusPopupEditor({\r\n position,\r\n i18n: this.i18n,\r\n currentStatus: item.Status,\r\n statusOptions: (() => {\r\n let options = [\r\n { name: 'Enabled', value: 'Active' },\r\n { name: 'Paused', value: 'UserPaused' },\r\n ];\r\n const isExperiment = _.result(item, 'ExperimentId');\r\n\r\n if (isExperiment) {\r\n options = _.map(options, (option) => {\r\n const iconClass = _.result({\r\n Enabled: 'experiment-active-icon',\r\n Paused: 'experiment-paused-icon',\r\n }, option.name);\r\n\r\n return _.defaults({ iconClass }, option);\r\n });\r\n }\r\n\r\n return options;\r\n })(),\r\n });\r\n\r\n statusEditor.then((status) => {\r\n if (status && status !== item.Status) {\r\n // workaround to fix the bug in bulkupsert api.\r\n // use 'UserPaused' will get success but actually the request take No effect.\r\n const updated = _.defaults({ Status: status === 'UserPaused' ? 'Paused' : status }, item);\r\n inlineEditableSave({\r\n view: this.view,\r\n i18n: this.i18n,\r\n fieldName: 'Status',\r\n updated,\r\n editorViewCallbackAfterUpdate: () => {\r\n const schema = TargetingSettingsContext.campaignStatus;\r\n const response = [{\r\n Id: item.Id,\r\n Status: status === schema.Paused ? schema.EnumPaused : status,\r\n }];\r\n window.App.trigger('campaignUpdated', { data: response });\r\n updated.Status = status; // revert the workaround above\r\n },\r\n });\r\n }\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { ColumnsConfigBuilder } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { TargetingSettingsContext } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport { BudgetColumn } from '@bingads-webui-campaign/campaignui-common-columns';\r\nimport { TrackingTemplateColumn, CustomParametersColumn, FinalUrlSuffixColumn } from '@bingads-webui-campaign/tracking-template-columns';\r\nimport { ColumnCampaign } from './columns/campaign-column';\r\nimport { ColumnLocations } from './columns/locations-column';\r\nimport { ColumnAdSchedule } from './columns/ad-schedule-column';\r\nimport { ColumnDevices } from './columns/devices-column';\r\nimport { ColumnDemographic } from './columns/demographic-column';\r\nimport { ColumnStatus } from './columns/status-column';\r\nimport { inlineEditableSave } from './columns/inline-editable/save';\r\n\r\nexport default class SettingsGridColumnsConfig {\r\n constructor(deps) {\r\n const {\r\n view,\r\n permissions,\r\n } = deps;\r\n let columns = [\r\n ColumnCampaign,\r\n BudgetColumn,\r\n ColumnLocations,\r\n ColumnDevices,\r\n ColumnAdSchedule,\r\n ColumnDemographic,\r\n TrackingTemplateColumn,\r\n CustomParametersColumn,\r\n FinalUrlSuffixColumn,\r\n ];\r\n\r\n this.permissions = permissions;\r\n this.view = view;\r\n columns = _.compact(columns);\r\n\r\n this.builder = new ColumnsConfigBuilder()\r\n .addCategory('CampaignSettings', category => category.addColumns(columns));\r\n\r\n this.builder\r\n .setLockedColumns([ColumnStatus, ColumnCampaign])\r\n .setSelectedColumns(columns.concat([ColumnStatus]));\r\n }\r\n\r\n getColumnsConfig() {\r\n return this.builder.getColumnsConfig({\r\n i18n: TargetingSettingsContext.i18n,\r\n view: this.view,\r\n inlineEditableSave,\r\n permissions: this.permissions,\r\n schemaI18n: TargetingSettingsContext.s$i18n,\r\n InlineSharedBudgetEditor: TargetingSettingsContext.InlineSharedBudgetEditor,\r\n InlineBudgetEditor: TargetingSettingsContext.InlineBudgetEditor,\r\n decimal: TargetingSettingsContext.decimal,\r\n });\r\n }\r\n\r\n getColumnChooserConfig() {\r\n return this.builder.getColumnChooserConfig({\r\n i18n: TargetingSettingsContext.i18n,\r\n patchQuery: true,\r\n Columns: TargetingSettingsContext.Columns,\r\n SelectedColumns: TargetingSettingsContext.SelectedColumns,\r\n LegacyColumns: TargetingSettingsContext.LegacyColumns,\r\n LegacySelectedColumns: TargetingSettingsContext.LegacySelectedColumns,\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport {\r\n pluginConfig,\r\n basicGridConfig,\r\n TargetingSettingsContext\r\n} from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\n\r\nfunction getQuickFilterConfig() {\r\n const recommendationFilterItem = {\r\n key: 'recommendation',\r\n text: TargetingSettingsContext.i18n.getString('Filter_Recommendation'),\r\n value: {\r\n query: {\r\n RecommendationTypes: {\r\n $eq: 'NewTargets',\r\n },\r\n },\r\n },\r\n classes: 'quick-filter-all-recommendation',\r\n };\r\n const quickFilter = {\r\n items: [{\r\n key: 'all',\r\n text: TargetingSettingsContext.i18n.getString('Dashboard_AllCampaigns'),\r\n value: {\r\n query: {},\r\n },\r\n classes: 'quick-filter-all',\r\n }, {\r\n key: 'active',\r\n text: TargetingSettingsContext.i18n.getString('Dashboard_AllEnabledCampaigns'),\r\n value: {\r\n query: {\r\n Status: {\r\n $in: [\r\n 'Enum.CampaignStatus\\'Active\\'',\r\n 'Enum.CampaignStatus\\'BudgetPaused\\'',\r\n ],\r\n },\r\n },\r\n },\r\n classes: 'quick-filter-all-active',\r\n }].concat([recommendationFilterItem]),\r\n };\r\n return quickFilter;\r\n}\r\n\r\nconst pluginsConfig = (view, columnChooser, perfMarker) => {\r\n const lowerToolbar = {\r\n items: [{\r\n type: 'button',\r\n text: TargetingSettingsContext.i18n.getString('Grid_CreateCampaignButtonText'),\r\n classes: ['btn', 'btn-primary'],\r\n onClick: () => {\r\n TargetingSettingsContext.router.navigateToRoute('campaign_create_objective');\r\n },\r\n disabled: TargetingSettingsContext.pageContext.Permissions.IsReadOnlyUser\r\n || TargetingSettingsContext.config.get('CurrentAccountInActive'),\r\n }, {\r\n type: 'dropdown',\r\n id: 'dropdown-edit',\r\n disabled: TargetingSettingsContext.pageContext.Permissions.IsReadOnlyUser\r\n || TargetingSettingsContext.config.get('CurrentAccountInActive'),\r\n }, {\r\n type: 'selector',\r\n id: 'quick-filter',\r\n }, {\r\n type: 'dropdown',\r\n id: 'dropdown-column-chooser',\r\n }],\r\n };\r\n\r\n return _.extend({}, pluginConfig(view, columnChooser), {\r\n a11y: { i18n: TargetingSettingsContext.i18n },\r\n toolbar: {\r\n 'lower-toolbar': lowerToolbar,\r\n },\r\n crossPageSelectAll: {\r\n i18n: TargetingSettingsContext.i18n,\r\n },\r\n quickFilter: getQuickFilterConfig(),\r\n placeholder: {\r\n viewRoot: view.$el,\r\n container: '.noresult-container',\r\n text: TargetingSettingsContext.i18n.getString('Grid_NoRecords'),\r\n filteredContainer: '.noresult-container',\r\n filteredEmptyText: TargetingSettingsContext.i18n.getString('Grid_NoFilteredRecords'),\r\n },\r\n perfMarker: {\r\n marker: perfMarker,\r\n appConfig: TargetingSettingsContext.config,\r\n },\r\n });\r\n};\r\n\r\nexport default class SettingsGridConfig {\r\n constructor(view, columnConfig, repository, perfMarker) {\r\n _.extend(this, basicGridConfig(), {\r\n name: 'settings_settings',\r\n dataSource: repository.getDataSource(),\r\n query: repository.getQuery(),\r\n columns: columnConfig.getColumnsConfig(),\r\n plugins: pluginsConfig(view, columnConfig.getColumnChooserConfig(), perfMarker),\r\n preferenceService: TargetingSettingsContext.preferencesService,\r\n config: TargetingSettingsContext.config,\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { TargetingSettingsContext } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\n\r\nfunction getRecommendationTypesFilter() {\r\n const recommendationList = [];\r\n recommendationList.push('NewLocationTarget');\r\n // add new types when new recommendation pilot\r\n if (_.size(recommendationList) === 0) {\r\n return 'true';\r\n }\r\n const filters = _.map(recommendationList, type => `RecommendationTypes/any(c:c eq Enum.RecommendationType'${type}')`);\r\n return `(${filters.join(' or ')})`;\r\n}\r\n\r\nexport default class SettingsRepository {\r\n getDataSource() {\r\n return {\r\n type: 'jsdata',\r\n entity: TargetingSettingsContext.jsDataCampaign.Campaign,\r\n primaryKey: 'Id',\r\n };\r\n }\r\n\r\n getQuery() {\r\n return {\r\n query: {\r\n $expand: _.compact([\r\n 'CampaignCriterions',\r\n 'Budget',\r\n 'AssociatedExperiment',\r\n ]).join(', '),\r\n },\r\n options: {\r\n cacheResponse: false,\r\n entitySet: TargetingSettingsContext.edmCampaign.currentAccount.Campaigns,\r\n filterOptions: {\r\n odata: {\r\n custom: {\r\n RecommendationTypes: getRecommendationTypesFilter,\r\n },\r\n },\r\n },\r\n },\r\n };\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport projectionGrid from 'projection-grid';\r\nimport { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport { a11yPlugin } from '@bingads-webui/projection-grid-a11y';\r\nimport { assistedSelectionPlugin } from '@bingads-webui/projection-grid-assisted-selection';\r\nimport { crossPageSelectAllPlugin } from '@bingads-webui/projection-grid-cross-page-select-all';\r\nimport { editablePlugin } from '@bingads-webui-campaign/projection-grid-editable';\r\nimport { toolbarPlugin } from '@bingads-webui/projection-grid-toolbar';\r\nimport { paginationPlugin } from '@bingads-webui/projection-grid-pagination';\r\nimport { placeholderPlugin } from '@bingads-webui/projection-grid-placeholder';\r\nimport { uiBlockerPlugin } from '@bingads-webui/projection-grid-uiblocker';\r\nimport { inlineErrorPlugin } from '@bingads-webui/projection-grid-inline-error';\r\nimport { columnChooserPlugin } from '@bingads-webui-campaign/projection-grid-column-chooser';\r\nimport { perfMarkerPlugin } from '@bingads-webui-campaign/pgrid-performance-log';\r\nimport { InlineLocationRecommendationDialog } from '@bingads-webui-campaign/inline-location-recommendation';\r\nimport { BudgetSplitView } from '@bingads-webui-campaign/campaignui-common-columns';\r\nimport { GridCustomizedPopupEditor, getEditorPositionAsideAnchor } from '@bingads-webui-campaign/grid-customized-popup-editor';\r\n\r\nimport {\r\n GridView,\r\n TargetingSettingsContext,\r\n TargetingType,\r\n} from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\n\r\nimport SettingsGridColumnsConfig from './settings-grid-column-config';\r\nimport SettingsGridConfig from './settings-grid-config';\r\nimport settingsGridTemplate from './settings-grid-template.pug';\r\nimport SettingsRepository from './settings-repository';\r\nimport { settingsBulkEdit } from './settings-bulk-edit';\r\n\r\nexport default class SettingsGridView extends DeterministicView {\r\n initialize({\r\n dataSource,\r\n perfMarker,\r\n }) {\r\n super.setState({\r\n dataSource,\r\n setting: TargetingType.AllSettings,\r\n });\r\n\r\n this.perfMarker = perfMarker;\r\n this.buildGrid({ dataSource }).then(() => {\r\n this.grid.gridView.on('didEdit', this.onItemModified, this);\r\n });\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .inline-location-target-recommendation': 'showInlineLocationRecommendation',\r\n 'click .experiment-budget-ellipsis': 'showExperimentBudgetPopup',\r\n };\r\n }\r\n\r\n showExperimentBudgetPopup(event) {\r\n const item = this.grid.gridView.itemOfElement(event.target);\r\n const budgetSplitView = new BudgetSplitView({\r\n item,\r\n i18n: TargetingSettingsContext.i18n,\r\n }).render();\r\n\r\n return new GridCustomizedPopupEditor({\r\n editorView: budgetSplitView,\r\n editorPositionFactory: getEditorPositionAsideAnchor($(event.target)),\r\n renderBelow: false,\r\n className: 'grid-popupeditor experiment-budget-popup',\r\n }).render();\r\n }\r\n\r\n showInlineLocationRecommendation(event) {\r\n const campaign = this.grid.gridView.itemOfElement(event.target);\r\n this.inlineLocationRecommendationView = new InlineLocationRecommendationDialog({\r\n scope: {\r\n customerId: TargetingSettingsContext.state.get('customer_id'),\r\n accountId: TargetingSettingsContext.state.get('account_id'),\r\n campaignId: campaign.Id,\r\n },\r\n deps: TargetingSettingsContext,\r\n }).render();\r\n this.inlineLocationRecommendationView.on('refresh:recommendations', () => this.forceRefreshGrid()); // when invalid recommendations, force refresh grid\r\n }\r\n\r\n forceRefreshGrid() {\r\n TargetingSettingsContext.CampaignCacheManager.invalidate('Campaign');\r\n this.grid.gridView.refresh(true);\r\n }\r\n\r\n buildGrid({ dataSource }) {\r\n let gridFactory = projectionGrid.factory({ vnext: true })\r\n .use(perfMarkerPlugin)\r\n .use(a11yPlugin)\r\n .use(assistedSelectionPlugin)\r\n .use(toolbarPlugin)\r\n .use(paginationPlugin)\r\n .use(crossPageSelectAllPlugin)\r\n .use(TargetingSettingsContext.filterStatePlugin)\r\n .use(uiBlockerPlugin)\r\n .use(placeholderPlugin)\r\n .use(inlineErrorPlugin)\r\n .use(columnChooserPlugin)\r\n .use(TargetingSettingsContext.quickFilterPlugin)\r\n .use(settingsBulkEdit({\r\n status: TargetingSettingsContext.campaignStatus,\r\n ChangeStatusView: TargetingSettingsContext.ChangeStatusView,\r\n ChangeStatusModel: TargetingSettingsContext.ChangeStatusModel,\r\n ChangeUrlOptionsView: TargetingSettingsContext.ChangeUrlOptionsView,\r\n ChangeUrlOptionsModel: TargetingSettingsContext.ChangeUrlOptionsModel,\r\n i18n: TargetingSettingsContext.i18n,\r\n config: TargetingSettingsContext.config,\r\n }));\r\n\r\n if (!TargetingSettingsContext.pageContext.Permissions.IsReadOnlyUser\r\n && !TargetingSettingsContext.config.get('CurrentAccountInActive')) {\r\n gridFactory = gridFactory.use(editablePlugin);\r\n }\r\n\r\n this.repository = _.isUndefined(dataSource)\r\n ? new SettingsRepository()\r\n : new dataSource.SettingsRepository();\r\n\r\n const columnConfig = new SettingsGridColumnsConfig({\r\n view: this,\r\n permissions: TargetingSettingsContext.pageContext.Permissions,\r\n });\r\n const gridConfig = new SettingsGridConfig(\r\n this,\r\n columnConfig,\r\n this.repository,\r\n this.perfMarker\r\n );\r\n\r\n return TargetingSettingsContext.fetchPreferenceConfig(gridConfig).then(() => {\r\n gridConfig.dataSource = _.omit(gridConfig.dataSource, 'query');\r\n this.grid = gridFactory.create(gridConfig);\r\n TargetingSettingsContext.logger.logMessage(\r\n 'ClientTrace',\r\n { name: 'Info', value: 0 },\r\n 'SettingsGridView.buildGrid',\r\n 'Settings grid created.'\r\n );\r\n this.grid.gridView.on('willUpdate', (changes) => {\r\n TargetingSettingsContext.handleSortChange(changes, this.grid.gridView, gridConfig.name);\r\n });\r\n this.setChild('settings-grid', new GridView({ grid: this.grid }));\r\n });\r\n }\r\n\r\n onItemModified() {\r\n }\r\n\r\n remove() {\r\n if (this.inlineLocationRecommendationView) {\r\n this.inlineLocationRecommendationView.remove();\r\n }\r\n if (this.grid) {\r\n if (this.grid.toolbar && this.grid.toolbar.gridToolbarGroup) {\r\n this.grid.toolbar.gridToolbarGroup.remove();\r\n this.grid.toolbar.gridToolbarGroup = null;\r\n }\r\n\r\n if (this.grid.gridView) {\r\n this.grid.gridView.trigger('willRemove');\r\n this.grid.gridView.remove();\r\n this.grid.gridView = null;\r\n }\r\n }\r\n super.remove();\r\n }\r\n\r\n get template() { return settingsGridTemplate; }\r\n\r\n get className() { return 'settings-grid-view'; }\r\n}\r\n","import _ from 'underscore';\r\nimport { projectionGridBulkEdit } from '@bingads-webui-campaign/projection-grid-bulk-edit';\r\n\r\n/**\r\n * @typedef { Object } settingsBulkEditOptions\r\n * @property { Object } status settings status schema.\r\n * @property { Object } ChangeStatusView settings change status view.\r\n * @property { Object } ChangeStatusModel settings change status model.\r\n * @property { Object } ChangeUrlOptionsView settings change url options view.\r\n * @property { Object } ChangeUrlOptionsModel settings change url options model.\r\n * @property { Object } config config.\r\n * @property { Object } i18n i18n.\r\n */\r\n\r\n/**\r\n * settingsBulkEdit\r\n * @param { settingsBulkEditOptions } options settings bulk edit options\r\n * @returns { Object } settingsBulkEditPlugin settings bulk edit plugin\r\n */\r\nfunction settingsBulkEdit(options) {\r\n const {\r\n status,\r\n ChangeStatusView,\r\n ChangeStatusModel,\r\n ChangeUrlOptionsView,\r\n ChangeUrlOptionsModel,\r\n config,\r\n filterService,\r\n i18n,\r\n } = options;\r\n\r\n function getChangeUrlOptionView({ viewConfig, selectedRowCount }) {\r\n return new ChangeUrlOptionsView(_.defaults({\r\n entityType: 'Campaign',\r\n model: new ChangeUrlOptionsModel({\r\n selectedEntityCount: selectedRowCount,\r\n }),\r\n }, viewConfig));\r\n }\r\n\r\n const items = [{\r\n text: i18n.getString('ChangeUrlOptions'),\r\n classes: ['bulk-edit-change-url-option'],\r\n createView: getChangeUrlOptionView,\r\n }];\r\n\r\n return projectionGridBulkEdit({\r\n status,\r\n ChangeStatusView,\r\n ChangeStatusModel,\r\n entityType: 'campaign',\r\n config,\r\n filterService,\r\n i18n,\r\n items,\r\n showDelete: false,\r\n });\r\n}\r\n\r\nexport { settingsBulkEdit };\r\n","import { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport { TargetingType, TargetingSettingsContext } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport { createAllSettingsGrid } from '@bingads-webui-campaign/all-settings-grid';\r\nimport SettingsSummaryTemplate from './index.pug';\r\nimport { getAdditionalPlugins } from './additional-plugins';\r\nimport { fetchPreferenceConfig } from './fetch-preference-config';\r\nimport SettingsGridView from './settings-grid-view';\r\n\r\nexport class SettingsSummaryView extends DeterministicView {\r\n initialize({\r\n dataSource,\r\n perfMarker,\r\n }) {\r\n super.setState({ setting: TargetingType.AllSettings });\r\n const useNewAllSettingsGrid =\r\n TargetingSettingsContext.pageContext.Permissions.IsNewAllSettingsGridComponentUsageEnabled;\r\n if (useNewAllSettingsGrid) {\r\n const gridName = 'settings_settings';\r\n fetchPreferenceConfig(gridName).then((preferenceConfig) => {\r\n const gridView = createAllSettingsGrid({\r\n preferenceConfig,\r\n dataSource,\r\n gridName,\r\n getAdditionalPlugins,\r\n perfMarker,\r\n });\r\n this.setChild('settings-container', gridView);\r\n });\r\n } else {\r\n this.setChild('settings-container', new SettingsGridView({\r\n dataSource,\r\n perfMarker,\r\n }));\r\n }\r\n }\r\n\r\n get className() { return 'settings-summary-view'; }\r\n\r\n get template() { return SettingsSummaryTemplate; }\r\n}\r\n","import Promise from 'bluebird';\r\nimport { omit } from 'underscore';\r\nimport { getGridPreferences } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport {\r\n TargetingSettingsContext,\r\n} from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\n\r\nexport function fetchPreferenceConfig(gridName) {\r\n const {\r\n state, segmentPreference, fetchPaginationConfig, segmentTimeChecker,\r\n } = TargetingSettingsContext;\r\n const {\r\n getSegPreference, getSegType,\r\n } = segmentPreference;\r\n\r\n return new Promise((resolve) => {\r\n getGridPreferences({ // bluebird promise\r\n gridName, // should be the same as the grid config\r\n dateUtil: {\r\n format: value => TargetingSettingsContext.i18n.formatDate(value),\r\n },\r\n state,\r\n getSegPreference,\r\n getSegType,\r\n segmentTimeChecker,\r\n fetchPaginationConfig,\r\n }).then((preferenceConfig) => {\r\n // eslint-disable-next-line no-param-reassign\r\n preferenceConfig.dataSource = omit(preferenceConfig.dataSource, 'query');\r\n resolve(preferenceConfig);\r\n });\r\n });\r\n}\r\n","import { DeterministicWrapperView } from '@bingads-webui/deterministic-wrapper-view';\r\nimport _ from 'underscore';\r\nimport {\r\n TargetingType,\r\n SettingsView,\r\n TargetingSettingsContext\r\n} from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\n\r\nexport class EditCampaignSettingsView extends SettingsView {\r\n initialize({\r\n campaignId,\r\n perfMarker,\r\n ccJsData,\r\n deps,\r\n serverContext,\r\n scopeServiceScope,\r\n }) {\r\n super.initialize({\r\n campaignId,\r\n setting: TargetingType.AllSettings,\r\n serverContext,\r\n scopeServiceScope,\r\n });\r\n\r\n const campaign = TargetingSettingsContext.pageContext.CurrentCampaign;\r\n const id = _.result(campaign, 'Id');\r\n const campaignViewMap = {\r\n default: TargetingSettingsContext.editCampaignPage,\r\n shopping: TargetingSettingsContext.editShoppingCampaignPage,\r\n smartShopping: TargetingSettingsContext.editSmartShoppingCampaignPage,\r\n audienceShopping: TargetingSettingsContext.editShoppingCampaignPage,\r\n };\r\n const EditPage = campaignViewMap[this.getEditPageViewType(campaign)];\r\n\r\n const EditPageWrapper = class extends DeterministicWrapperView {\r\n viewFactory() {\r\n return new EditPage({\r\n campaignId: id,\r\n deps,\r\n perfMarker,\r\n ccJsData,\r\n serverContext,\r\n scope: scopeServiceScope,\r\n });\r\n }\r\n };\r\n\r\n this.setChild('settings-container', new EditPageWrapper());\r\n }\r\n\r\n /**\r\n * Class name of the root element\r\n * @type {string}\r\n * @override\r\n */\r\n get className() { return 'edit-campaign-settings-view'; }\r\n\r\n getEditPageViewType(campaign) {\r\n const providerId = _.result(_.take(campaign.CampaignSettings), 'ProviderId');\r\n const campaignType = _.result(campaign, 'CampaignType');\r\n const campaignSubType = _.result(campaign, 'CampaignSubType');\r\n const isShoppingCampaign = (campaignType === 2);\r\n const isSmartShoppingCampaign = isShoppingCampaign && campaignSubType === 12;\r\n const isAudienceShoppingCampaign = (campaignType === 8) && providerId;\r\n\r\n let resultType = 'default';\r\n if (isShoppingCampaign) {\r\n if (isSmartShoppingCampaign) {\r\n resultType = 'smartShopping';\r\n } else {\r\n resultType = 'shopping';\r\n }\r\n } else if (isAudienceShoppingCampaign) {\r\n resultType = 'audienceShopping';\r\n } else {\r\n resultType = 'default';\r\n }\r\n\r\n return resultType;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport { DeterministicWrapperView } from '@bingads-webui/deterministic-wrapper-view';\r\nimport {\r\n TargetingType,\r\n SettingsView,\r\n TargetingSettingsContext,\r\n} from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\n\r\nexport class EditAdGroupSettingsView extends SettingsView {\r\n initialize({\r\n campaignId,\r\n adgroupId,\r\n perfMarker,\r\n deps,\r\n }) {\r\n super.initialize({\r\n campaignId,\r\n adgroupId,\r\n setting: TargetingType.AllSettings,\r\n });\r\n\r\n const campaign = TargetingSettingsContext.pageContext.CurrentCampaign;\r\n const campaignType = _.result(campaign, 'CampaignType');\r\n\r\n const EditAdGroupPage = TargetingSettingsContext.editAdGroupPage;\r\n const EditAdGroupPageWrapper = class extends DeterministicWrapperView {\r\n viewFactory() {\r\n let settingsPage;\r\n\r\n if (campaignType === 8) {\r\n const reachControlOptions = deps.isNewUI ? {\r\n modifyTarget: () => _.delay(() => {\r\n $('.audience-reach-estimate-container').css('top', `${$('.app-content-container-col').scrollTop()}px`);\r\n }, 500),\r\n threshold: [0.25, 0.5, 0.75, 1.0],\r\n rootMargin: '100px 0px 0px 250px',\r\n } : {};\r\n\r\n settingsPage = new TargetingSettingsContext.AudienceAdgroupSettingsWizard({\r\n viewContext: {\r\n accountCurrencyCode: TargetingSettingsContext.pageContext.AccountCurrencyCode,\r\n currentCampaign: TargetingSettingsContext.pageContext.CurrentCampaign,\r\n currentAdGroup: TargetingSettingsContext.pageContext.CurrentAdGroup,\r\n },\r\n perfMarker: perfMarker.createChild('AdGroupScope_AllSettings_EditAudienceAdGroup'),\r\n deps,\r\n reachControlOptions,\r\n });\r\n } else {\r\n settingsPage = new EditAdGroupPage({\r\n deps,\r\n perfMarker,\r\n });\r\n }\r\n\r\n return settingsPage;\r\n }\r\n };\r\n\r\n this.setChild('settings-container', new EditAdGroupPageWrapper());\r\n }\r\n\r\n /**\r\n * Class name of the root element\r\n * @type {string}\r\n * @override\r\n */\r\n get className() { return 'edit-adgroup-settings-view'; }\r\n}\r\n","import _ from 'underscore';\r\nimport { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport { DeterministicWrapperView } from '@bingads-webui/deterministic-wrapper-view';\r\nimport {\r\n TargetingScope,\r\n getScope\r\n} from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport { SettingsSummaryView } from './settings-summary';\r\nimport { EditCampaignSettingsView } from './edit-campaign';\r\nimport { EditAdGroupSettingsView } from './edit-adgroup';\r\nimport Template from './all-settings.pug';\r\n\r\nexport class AllSettingsView extends DeterministicView {\r\n initialize({\r\n campaignId,\r\n adgroupId,\r\n dataSource,\r\n perfMarker,\r\n ccJsData,\r\n serverContext,\r\n scopeServiceScope,\r\n deps = {},\r\n }) {\r\n const scope = getScope(campaignId, adgroupId);\r\n super.setState(_.extend({}, {\r\n campaignId,\r\n adgroupId,\r\n scope,\r\n dataSource,\r\n serverContext,\r\n scopeServiceScope,\r\n }));\r\n\r\n this.perfMarker = perfMarker;\r\n this.ccJsData = ccJsData;\r\n this.deps = deps;\r\n this.model.on('change', model => this.onModelChange(model));\r\n this.onModelChange(this.model);\r\n }\r\n\r\n /**\r\n * Class name of the root element\r\n * @type {string}\r\n * @override\r\n */\r\n get className() { return 'all-settings-view'; }\r\n\r\n /**\r\n * Template of the AllSettingsView\r\n * @type {TemplateCallback}\r\n * @override\r\n */\r\n get template() { return Template; }\r\n\r\n /**\r\n * Update the inner `PillControl`\r\n * @param {Object} state - The new config of the `PillControl`\r\n * @returns {PillControlWrapperView} - The view itself\r\n */\r\n setState({\r\n campaignId,\r\n adgroupId,\r\n }) {\r\n super.setState({\r\n campaignId,\r\n adgroupId,\r\n scope: getScope(campaignId, adgroupId),\r\n });\r\n }\r\n\r\n onModelChange(model) {\r\n const scope = model.get('scope');\r\n const campaignId = model.get('campaignId');\r\n const adgroupId = model.get('adgroupId');\r\n const dataSource = model.get('dataSource');\r\n const serverContext = model.get('serverContext');\r\n const scopeServiceScope = model.get('scopeServiceScope');\r\n const { perfMarker, ccJsData, deps } = this;\r\n\r\n const SettingsViewWrapper = class extends DeterministicWrapperView {\r\n viewFactory() {\r\n let view;\r\n\r\n switch (scope) {\r\n case TargetingScope.Account:\r\n view = new SettingsSummaryView({\r\n dataSource,\r\n perfMarker,\r\n deps,\r\n });\r\n break;\r\n\r\n case TargetingScope.Campaign:\r\n view = new EditCampaignSettingsView({\r\n campaignId,\r\n perfMarker,\r\n ccJsData,\r\n deps,\r\n serverContext,\r\n scopeServiceScope,\r\n });\r\n break;\r\n\r\n case TargetingScope.AdGroup:\r\n view = new EditAdGroupSettingsView({\r\n campaignId,\r\n adgroupId,\r\n perfMarker,\r\n deps,\r\n });\r\n break;\r\n\r\n default:\r\n throw new Error('Unexpected targeting settings scope!');\r\n }\r\n return view;\r\n }\r\n };\r\n\r\n this.setChild('all-settings-container', new SettingsViewWrapper());\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 (value) {if (value.isForVNext) {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"scope-navigator\\\"\"+pug.attr(\"href\", value.href, true, true)+pug.attr(\"data-campaignid\", value.cmpid, true, true)+pug.attr(\"data-adgroupid\", value.adgid, true, true)+pug.attr(\"aria-label\", value.ariaLabel, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = value.name) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Ca\" + (pug.attr(\"href\", value.href, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = value.name) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}}.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 (DSAAssetReport, MMAAssetReport, value) {pug_mixins[\"responsiveAdPreviewTemplate\"] = pug_interp = function(item, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"responsive-ad-preview-shared-template\\\" style=\\\"display: flex;\\\"\\u003E\";\nif (!item.isVideo && !item.LandscapeImageMediaUrl && !item.isMultimediaAd && (!item.isMultimediaAdinMSANEnabled || !item.LandscapeImageMediaUrl)) {\npug_html = pug_html + \"\\u003Cp\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('AdType_ResponsiveAd')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fp\\u003E\";\n}\nelse {\nif (item.isVideo) {\nif (item.LandscapeImageMediaUrl) {\npug_html = pug_html + \"\\u003Cdiv style=\\\"display: inline-block;float: left;\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (item.isVerticalVideo) {\npug_html = pug_html + \"\\u003Cimg\" + (\" class=\\\"verticalVideoThumbnail\\\"\"+pug.attr(\"src\", item.LandscapeImageMediaUrl, true, true)+\" align=\\\"left\\\" alt=\\\"\\\" width=\\\"34\\\" height=\\\"60\\\"\"+pug.attr(\"data-video-id\", item.IdString, true, true)) + \"\\u003E\\u003Cspan class=\\\"glyphicon glyphicon-play\\\" style=\\\"position: relative; left: -34px; top: 20px;width: 0px; font-size: 18px;display: inline-block;color: white\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cimg\" + (pug.attr(\"src\", item.LandscapeImageMediaUrl, true, true)+\" align=\\\"left\\\" alt=\\\"\\\" width=\\\"114\\\" height=\\\"60\\\"\"+pug.attr(\"data-video-id\", item.IdString, true, true)) + \"\\u003E\\u003Cspan class=\\\"glyphicon glyphicon-play\\\" style=\\\"position: relative; left: -70px; top: 20px;width: 0px; font-size: 24px;display: inline-block;color: white\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\n}\nelse\nif ((item.campaignSubType === 'BrandAwarenessVideoAds' && !item.shouldShowActionNeededForGoogleImprotVideoAd)) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"video-preview-div\\\" style=\\\"float: left;width: 114px;height: 60px;margin-right: 10px;display: flex;align-items: center; border-radius: 6px; justify-content: center; background: #F3F2F1; border: 1px solid;\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Video_Preview_Processing')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"video-preview-div\\\" style=\\\"float: left;width: 114px;height: 60px;margin-right: 10px;display: flex;align-items: center;\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Video_Preview_Unavailable')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n}\n}\nelse\nif (!item.isPlaceholderMMA) {\npug_html = pug_html + \"\\u003Cdiv style=\\\"display: flex; flex-direction: column;\\\"\\u003E\\u003Cimg\" + (pug.attr(\"src\", item.LandscapeImageMediaUrl, true, true)+\" align=\\\"left\\\" alt=\\\"\\\"\") + \"\\u003E\";\nif ((item.imageCount && item.imageCount > 1)) {\npug_html = pug_html + \"\\u003Cspan class=\\\"moreHint\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('RSA_Count_More').replace('{{count}}', item.imageCount - 1)) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv style=\\\"flex: 1; display: flex;flex-direction: column;\\\"\\u003E\";\nif (!item.isPlaceholderMMA) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"previewTitle\\\"\\u003E\\u003Ca\" + (\" class=\\\"previewTitleAd\\\"\"+\" target=\\\"_blank\\\"\"+pug.attr(\"href\", item.convertedFinalUrl, true, true)+\" onclick=\\\"event.stopPropagation();\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = item.Headline) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\nif ((item.HeadlineCount && item.HeadlineCount > 1)) {\npug_html = pug_html + \"\\u003Cspan class=\\\"moreHint\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('RSA_Count_More').replace('{{count}}', item.HeadlineCount - 1)) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv\\u003E\\u003Ca class=\\\"previewUrlAd\\\"\\u003E\" + (pug.escape(null == (pug_interp = item.convertedDisplayUrl) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"previewText\\\"\\u003E\\u003Cspan class=\\\"previewTextAd\\\"\\u003E\" + (pug.escape(null == (pug_interp = item.Text) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\nif ((item.TextCount && item.TextCount > 1)) {\npug_html = pug_html + \"\\u003Cspan class=\\\"moreHint\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('RSA_Count_More').replace('{{count}}', item.TextCount - 1)) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cspan class=\\\"previewTextAd\\\"\\u003E\" + (pug.escape(null == (pug_interp = item.Headline) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"dynamicSearchAdPreviewTemplate\"] = pug_interp = function(item, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"dynamic-search-ad-preview-shared-template\\\"\\u003E\\u003Cdiv\\u003E\\u003Cspan class=\\\"previewTitleAdNoLink\\\"\\u003E\" + (pug.escape(null == (pug_interp = item.convertedTitle) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\\u003E\\u003Ca class=\\\"previewUrlAd\\\"\\u003E\" + (pug.escape(null == (pug_interp = item.convertedDisplayUrl) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"dynamic-search-ad-preview-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = item.Text) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\nif (value.$total) {\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = value.$total.text) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse {\nvar type = value.Type\nvar alertText = value.i18n.getString('AdControl_DynamicURLNotAvailable')\nvar isResponsive = type == 'Responsive'\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"previewAd\",isResponsive ? 'audience-ad-grid-preview +active' : '+active'], [false,true]), false, true)) + \"\\u003E\";\nif (type == 'Text') {\npug_html = pug_html + \"\\u003Cdiv\\u003E\";\nif (value.convertedFinalUrl.indexOf('{') != -1) {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"previewTitleAd noLink\\\"\"+\" target=\\\"_blank\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"onclick\", `javascript:alert('${alertText}'); event.stopPropagation();`, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = value.computedTitle) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse\nif (value.convertedFinalUrl.length === 0) {\npug_html = pug_html + \"\\u003Cspan class=\\\"previewTitleAdNoLink\\\"\\u003E\" + (pug.escape(null == (pug_interp = value.computedTitle) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"previewTitleAd\\\"\"+\" target=\\\"_blank\\\"\"+pug.attr(\"href\", value.convertedFinalUrl, true, true)+\" onclick=\\\"event.stopPropagation();\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = value.Title) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv\\u003E\\u003Ca class=\\\"previewUrlAd\\\"\\u003E\" + (pug.escape(null == (pug_interp = value.convertedDisplayUrl) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"previewTextAd\\\"\\u003E\" + (pug.escape(null == (pug_interp = value.Text) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n}\nelse\nif (type == 'Hotel') {\npug_html = pug_html + \"\\u003Ca class=\\\"HotelAd\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = value.convertedText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse\nif (type == 'Product') {\npug_html = pug_html + \"\\u003Ca class=\\\"productAd\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = value.convertedText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse\nif (type == 'AppInstall') {\npug_html = pug_html + \"\\u003Cdiv\\u003E\\u003Ca\" + (\" class=\\\"previewTitleAd\\\"\"+\" target=\\\"_blank\\\"\"+pug.attr(\"href\", value.convertedFinalUrl, true, true)+\" onclick=\\\"event.stopPropagation();\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = value.Title) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\\u003E\\u003Ca class=\\\"previewUrlAd\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = value.platformText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"previewTextAd\\\"\\u003E\" + (pug.escape(null == (pug_interp = value.Text) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n}\nelse\nif (type == 'DynamicSearch') {\npug_mixins[\"dynamicSearchAdPreviewTemplate\"](value);\nif (DSAAssetReport) {\npug_html = pug_html + \"\\u003Ca class=\\\"linkToAssets\\\" href=\\\"javascript:void(0)\\\"\\u003E\" + (pug.escape(null == (pug_interp = value.i18n.getString('RSA_LinkText_To_Asset')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\n}\nelse\nif (type == 'ExpandedText') {\npug_html = pug_html + \"\\u003Cdiv\\u003E\\u003Ca\" + (\" class=\\\"previewTitleAd\\\"\"+\" target=\\\"_blank\\\"\"+pug.attr(\"href\", value.convertedFinalUrl, true, true)+\" onclick=\\\"event.stopPropagation();\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = value.convertedTitle) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\\u003E\\u003Ca class=\\\"previewUrlAd\\\"\\u003E\" + (pug.escape(null == (pug_interp = value.convertedDisplayUrl) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"previewTextAd\\\"\\u003E\" + (pug.escape(null == (pug_interp = value.Text) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n}\nelse\nif (value.isLinkedInAd) {\npug_html = pug_html + \"\\u003Cdiv style=\\\"display: flex;align-items: center;\\\"\\u003E\\u003Cimg\" + (\" class=\\\"previewImage\\\"\"+pug.attr(\"src\", value.LandscapeImageMediaUrl, true, true)+\" align=\\\"left\\\" alt=\\\"\\\"\") + \"\\u003E\\u003Cdiv style=\\\"margin-left: 8px;\\\"\\u003E\\u003Ca\" + (\" class=\\\"previewTitleAd\\\"\"+\" target=\\\"_blank\\\"\"+pug.attr(\"href\", value.convertedFinalUrl, true, true)+\" onclick=\\\"event.stopPropagation();\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = value.Headline) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cspan class=\\\"previewTextAd\\\" style=\\\"display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;\\\"\\u003E\" + (pug.escape(null == (pug_interp = value.Text) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse\nif (isResponsive) {\npug_mixins[\"responsiveAdPreviewTemplate\"](value, value.i18n);\nif (value.isMultimediaAd && !value.isPlaceholderMMA) {\npug_html = pug_html + \"\\u003Ca class=\\\"linkToAssets\\\" href=\\\"javascript:void(0)\\\"\\u003E\" + (pug.escape(null == (pug_interp = value.i18n.getString('RSA_LinkText_To_Asset')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nif (value.isMultimediaAd && MMAAssetReport && value.isPlaceholderMMA) {\npug_html = pug_html + \"\\u003Ca class=\\\"linkToAssets\\\" href=\\\"javascript:void(0)\\\"\\u003E\" + (pug.escape(null == (pug_interp = value.i18n.getString('RSA_LinkText_To_Asset')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nif (value.isMultimediaAdinMSANEnabled && value.isAudienceAssetReportEnabled && !value.isPlaceholderMMA) {\npug_html = pug_html + \"\\u003Ca class=\\\"linkToAssets\\\" href=\\\"javascript:void(0)\\\"\\u003E\" + (pug.escape(null == (pug_interp = value.i18n.getString('RSA_LinkText_To_Asset')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\n}\nelse\nif (type == 'ResponsiveSearch') {\npug_html = pug_html + \"\\u003Cdiv class=\\\"previewTitle\\\"\\u003E\\u003Ca\" + (\" class=\\\"previewTitleAd\\\"\"+\" target=\\\"_blank\\\"\"+pug.attr(\"href\", value.convertedFinalUrl, true, true)+\" onclick=\\\"event.stopPropagation();\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = value.convertedTitle) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cspan class=\\\"moreHint\\\"\\u003E\" + (pug.escape(null == (pug_interp = value.moreTitleHint) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\\u003E\\u003Ca class=\\\"previewUrlAd\\\"\\u003E\" + (pug.escape(null == (pug_interp = value.convertedDisplayUrl) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"previewText\\\"\\u003E\\u003Cspan class=\\\"previewTextAd\\\"\\u003E\" + (pug.escape(null == (pug_interp = value.Text) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"moreHint\\\"\\u003E\" + (pug.escape(null == (pug_interp = value.moreTextHint) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Ca class=\\\"linkToAssets\\\" href=\\\"javascript:void(0)\\\"\\u003E\" + (pug.escape(null == (pug_interp = value.i18n.getString('RSA_LinkText_To_Asset')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n}}.call(this,\"DSAAssetReport\" in locals_for_with?locals_for_with.DSAAssetReport:typeof DSAAssetReport!==\"undefined\"?DSAAssetReport:undefined,\"MMAAssetReport\" in locals_for_with?locals_for_with.MMAAssetReport:typeof MMAAssetReport!==\"undefined\"?MMAAssetReport:undefined,\"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 (adStrength, showSuggestion) {pug_html = pug_html + \"\\u003Cdiv class=\\\"ad-strength-container\\\"\\u003E\\u003Cspan\" + (pug.attr(\"class\", pug.classes([\"ad-strength-column\",`ad-strength ${showSuggestion ? 'clickable': ''}`], [false,true]), false, true)+pug.attr(\"style\", pug.style(`border-bottom: ${showSuggestion ? '1px dashed #0078D4': 'none'}`), true, true)+\" tabindex=\\\"0\\\"\"+pug.attr(\"role\", `${showSuggestion ? 'button': ''}`, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = adStrength) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"adStrength\" in locals_for_with?locals_for_with.adStrength:typeof adStrength!==\"undefined\"?adStrength:undefined,\"showSuggestion\" in locals_for_with?locals_for_with.showSuggestion:typeof showSuggestion!==\"undefined\"?showSuggestion: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 (isDisableEXTA, isStandardTextAd, schemaI18n, statusTypeClass, value) {if (isDisableEXTA) {\npug_html = pug_html + \"\\u003Cdiv\\u003E\";\nif (value) {\npug_html = pug_html + \"\\u003Cbr\\u003E\\u003Cdiv class=\\\"ad-type trigger-popup\\\"\\u003E\\u003Cspan\" + (pug.attr(\"class\", pug.classes([\"status-column\",\"clickable\",`${statusTypeClass} ads_type_exta_deprecate_reasons`], [false,false,true]), false, true)+\" tabindex=\\\"0\\\" role=\\\"button\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = schemaI18n.enum('AdType', value)) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + (pug.escape(null == (pug_interp = ' ') ? \"\" : pug_interp));\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n}\nelse\nif (isStandardTextAd) {\npug_html = pug_html + \"\\u003Cdiv\\u003E\";\nif (value) {\npug_html = pug_html + \"\\u003Cbr\\u003E\\u003Cdiv class=\\\"ad-type trigger-popup\\\"\\u003E\\u003Cspan\" + (pug.attr(\"class\", pug.classes([\"status-column\",\"clickable\",`${statusTypeClass} ads_type_sta_deprecate_reasons`], [false,false,true]), false, true)+\" tabindex=\\\"0\\\" role=\\\"button\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = schemaI18n.enum('AdType', value)) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + (pug.escape(null == (pug_interp = ' ') ? \"\" : pug_interp));\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\nif (value) {\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = schemaI18n.enum('AdType', value)) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + (pug.escape(null == (pug_interp = ' ') ? \"\" : pug_interp));\n}\n}}.call(this,\"isDisableEXTA\" in locals_for_with?locals_for_with.isDisableEXTA:typeof isDisableEXTA!==\"undefined\"?isDisableEXTA:undefined,\"isStandardTextAd\" in locals_for_with?locals_for_with.isStandardTextAd:typeof isStandardTextAd!==\"undefined\"?isStandardTextAd:undefined,\"schemaI18n\" in locals_for_with?locals_for_with.schemaI18n:typeof schemaI18n!==\"undefined\"?schemaI18n:undefined,\"statusTypeClass\" in locals_for_with?locals_for_with.statusTypeClass:typeof statusTypeClass!==\"undefined\"?statusTypeClass:undefined,\"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\\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 (schemaI18n, value) {if (value) {\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = schemaI18n.enum('DevicePreference', value)) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + (pug.escape(null == (pug_interp = ' ') ? \"\" : pug_interp));\n}}.call(this,\"schemaI18n\" in locals_for_with?locals_for_with.schemaI18n:typeof schemaI18n!==\"undefined\"?schemaI18n:undefined,\"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 (ariaLabel, baseCampaignName, campaignId, className, link, name, skipScopeNavigation) {pug_html = pug_html + \"\\u003Cspan class=\\\"grid-cell-text\\\"\\u003E\";\nif (baseCampaignName) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"base-campaign-name\\\"\\u003E\" + (pug.escape(null == (pug_interp = baseCampaignName) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n}\nvar skipNavigation = skipScopeNavigation ? 'true' : 'false';\npug_html = pug_html + \"\\u003Ca\" + (pug.attr(\"class\", pug.classes([\"scope-navigator\",className], [false,true]), false, true)+pug.attr(\"href\", link, true, true)+pug.attr(\"data-campaignid\", campaignId, true, true)+pug.attr(\"data-skipscopenavigation\", skipNavigation, true, true)+pug.attr(\"aria-label\", ariaLabel, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = name) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fspan\\u003E\";}.call(this,\"ariaLabel\" in locals_for_with?locals_for_with.ariaLabel:typeof ariaLabel!==\"undefined\"?ariaLabel:undefined,\"baseCampaignName\" in locals_for_with?locals_for_with.baseCampaignName:typeof baseCampaignName!==\"undefined\"?baseCampaignName:undefined,\"campaignId\" in locals_for_with?locals_for_with.campaignId:typeof campaignId!==\"undefined\"?campaignId:undefined,\"className\" in locals_for_with?locals_for_with.className:typeof className!==\"undefined\"?className:undefined,\"link\" in locals_for_with?locals_for_with.link:typeof link!==\"undefined\"?link:undefined,\"name\" in locals_for_with?locals_for_with.name:typeof name!==\"undefined\"?name:undefined,\"skipScopeNavigation\" in locals_for_with?locals_for_with.skipScopeNavigation:typeof skipScopeNavigation!==\"undefined\"?skipScopeNavigation: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\\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 (ariaLabel, classes, i18n, statusText) {if (statusText) {\npug_html = pug_html + \"\\u003Cspan\\u003E\\u003Cdiv\" + (\" class=\\\"statuschangetask statusicondisplay statuschangehover clickable\\\"\"+pug.attr(\"data-statusText\", statusText, true, true)+pug.attr(\"aria-label\", i18n.getString(ariaLabel), true, true)+\" tabindex=\\\"0\\\" role=\\\"button\\\"\") + \"\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"status-icon\",classes], [false,true]), false, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + (pug.escape(null == (pug_interp = ' ') ? \"\" : pug_interp));\n}}.call(this,\"ariaLabel\" in locals_for_with?locals_for_with.ariaLabel:typeof ariaLabel!==\"undefined\"?ariaLabel:undefined,\"classes\" in locals_for_with?locals_for_with.classes:typeof classes!==\"undefined\"?classes:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"statusText\" in locals_for_with?locals_for_with.statusText:typeof statusText!==\"undefined\"?statusText: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 (campaignId, hasLocationRecommendation, i18n, isNonClickable, link, name) {pug_html = pug_html + \"\\u003Cspan class=\\\"grid-cell-text\\\"\\u003E\";\nif (isNonClickable) {\npug_html = pug_html + \"\\u003Cspan\" + (pug.attr(\"data-campaignid\", campaignId, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = name) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"scope-navigator\\\"\"+pug.attr(\"href\", link, true, true)+pug.attr(\"data-campaignid\", campaignId, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = name) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nif (hasLocationRecommendation) {\npug_html = pug_html + \"\\u003Cdiv\" + (\" class=\\\"iconba iconba-CustomerInsightsShape inline-recommendation-grid-icon clickable inline-location-target-recommendation\\\"\"+\" style=\\\"margin-left:5px;font-size:10px;\\\"\"+pug.attr(\"title\", i18n.getString('InlineOpportunity_Bubble_TooltipText'), true, true)+pug.attr(\"aria-label\", i18n.getString('InlineOpportunity_Bubble_TooltipText'), true, true)+\" tabindex=\\\"0\\\" role=\\\"button\\\"\") + \"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fspan\\u003E\";}.call(this,\"campaignId\" in locals_for_with?locals_for_with.campaignId:typeof campaignId!==\"undefined\"?campaignId:undefined,\"hasLocationRecommendation\" in locals_for_with?locals_for_with.hasLocationRecommendation:typeof hasLocationRecommendation!==\"undefined\"?hasLocationRecommendation:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isNonClickable\" in locals_for_with?locals_for_with.isNonClickable:typeof isNonClickable!==\"undefined\"?isNonClickable:undefined,\"link\" in locals_for_with?locals_for_with.link:typeof link!==\"undefined\"?link:undefined,\"name\" in locals_for_with?locals_for_with.name:typeof name!==\"undefined\"?name: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 (model) {pug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"railviewid\", model.scope === 0 ? 'Settings_AllSettings' : 'Settings_AllSettings_Settings', true, true)+\" style=\\\"display:none\\\"\") + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"all-settings-view\\\" data-ref=\\\"all-settings-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model: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 (baseCampaignName, link, name) {pug_html = pug_html + \"\\u003Cspan class=\\\"grid-cell-text\\\"\\u003E\";\nif (baseCampaignName) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"base-campaign-name\\\"\\u003E\" + (pug.escape(null == (pug_interp = baseCampaignName) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Ca\" + (pug.attr(\"href\", link, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = name) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fspan\\u003E\";}.call(this,\"baseCampaignName\" in locals_for_with?locals_for_with.baseCampaignName:typeof baseCampaignName!==\"undefined\"?baseCampaignName:undefined,\"link\" in locals_for_with?locals_for_with.link:typeof link!==\"undefined\"?link:undefined,\"name\" in locals_for_with?locals_for_with.name:typeof name!==\"undefined\"?name: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\\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 (ariaLabel, classes, i18n, statusText) {if (statusText) {\npug_html = pug_html + \"\\u003Cspan\\u003E\\u003Cdiv\" + (\" class=\\\"statuschangetask statusicondisplay statuschangehover clickable\\\"\"+pug.attr(\"data-statusText\", statusText, true, true)+pug.attr(\"aria-label\", i18n.getString(ariaLabel), true, true)+\" tabindex=\\\"0\\\" role=\\\"button\\\"\") + \"\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"status-icon\",classes], [false,true]), false, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + (pug.escape(null == (pug_interp = ' ') ? \"\" : pug_interp));\n}}.call(this,\"ariaLabel\" in locals_for_with?locals_for_with.ariaLabel:typeof ariaLabel!==\"undefined\"?ariaLabel:undefined,\"classes\" in locals_for_with?locals_for_with.classes:typeof classes!==\"undefined\"?classes:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"statusText\" in locals_for_with?locals_for_with.statusText:typeof statusText!==\"undefined\"?statusText: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 (hasLocationRecommendation, i18n, link, name) {pug_html = pug_html + \"\\u003Cspan class=\\\"grid-cell-text\\\"\\u003E\\u003Ca\" + (pug.attr(\"href\", link, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = name) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\nif (hasLocationRecommendation) {\npug_html = pug_html + \"\\u003Cdiv\" + (\" class=\\\"inline-recommendation-grid-icon clickable inline-location-target-recommendation\\\"\"+\" style=\\\"margin-left:5px;font-size:10px;\\\"\"+pug.attr(\"title\", i18n.getString('InlineOpportunity_Bubble_TooltipText'), true, true)+pug.attr(\"aria-label\", i18n.getString('InlineOpportunity_Bubble_TooltipText'), true, true)+\" tabindex=\\\"0\\\" role=\\\"button\\\"\") + \"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fspan\\u003E\";}.call(this,\"hasLocationRecommendation\" in locals_for_with?locals_for_with.hasLocationRecommendation:typeof hasLocationRecommendation!==\"undefined\"?hasLocationRecommendation:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"link\" in locals_for_with?locals_for_with.link:typeof link!==\"undefined\"?link:undefined,\"name\" in locals_for_with?locals_for_with.name:typeof name!==\"undefined\"?name: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=\\\"settings-view\\\"\\u003E\\u003Cdiv id=\\\"settings-container\\\" data-ref=\\\"settings-container\\\"\\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;pug_html = pug_html + \"\\u003Cdiv class=\\\"bingadsgrid grid-table\\\"\\u003E\\u003Cdiv class=\\\"editor__container bulkedit-container\\\" id=\\\"bulkEditContainer\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv data-ref=\\\"settings-grid\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"noresult-container grid-nodata-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";;return pug_html;};\nmodule.exports = template;"],"names":["CustomerAdapter","_createClass","_classCallCheck","key","value","result","_","mockData","raw","totalCount","Promise","store","DS","registerAdapter","default","dummyDataSource","type","entity","defineResource","name","idAttribute","primaryKey","schema","properties","Id","filterable","Text","Title","DisplayUrl","DestinationUrl","Type","enum","DevicePreference","nullable","Status","DeliveryStatus","DeliveryStatusDetails","items","PerformanceMetrics","$schema","Impressions","Clicks","CTR","Conversions","Spend","AverageCPC","AveragePosition","AverageCPM","CPA","WebsiteCoverage","AuctionWonPercent","AuctionLostToBudgetPercent","AuctionLostToRankPercent","AuctionLostToLandingPercent","AuctionLostToAdQualityPercent","AuctionLostToBidPercent","ClickSharePercent","RevenueOnAdSpend","AdvertiserReportedRevenue","ConversionRate","UpdatedOnLastImport","TrackingUrlTemplate","UrlCustomParameters","Key","Value","FinalUrls","MobileFinalUrls","AppFinalUrls","OsType","Url","Appeal","IsAppealable","JustificationText","Campaign","Name","alias","legacy","AdGroup","Properties","Labels","maxLength","required","Description","ColorCode","AssociationCounts","CampaignCount","AdGroupCount","AdCount","KeywordCount","NativePreference","TitlePart1","TitlePart2","Path1","Path2","options","entitySet","toJSON","noop","pkg","getAdsGridFactory","arguments","length","undefined","globalContext","define","adEditorDependencies","adEditorInitializer","getAdEditorInitializer","resolve","window","require","dependecies","object","map","dep","then","adEditorInitializerWebpack","getAdEditorInitializerWebpack","shouldCallAPIToCreatePA","currentCampaign","currentAdGroup","permissions","adsCountMap","isNewUI","shouldCall","IsSmartShoppingCampaignEnabled","CampaignSubType","isSmartShoppingCampaign","isResponsiveAdForSSCEnabled","IsResponsiveAdForSSCEnabled","currentAdsCount","hasResponsiveAd","hasProductAd","CampaignType","AdsEditorView","requireDefault","appConfig","layout","SummaryDataContextManager","get","IsImpressionTrackingUrlsEnabled","IsAmplifyEnabled","EnableIASVerifiedImpressionTrackingURLsForBrandAwarenessCampaign","_permissions$dynamic","dynamic","XandrDisplayAdsCampaigns","EnableDisplayAdsIasTracking","MultiAdFormat","isIASForAdEnabled","getUpgradedUrl","item","FinalUrlSuffix","getModelForCreateOrEdit","TextPart2","PromotionalText","TitlePart3","AppStoreId","AppPlatform","Headline","LongHeadline","BusinessName","LandscapeImageMediaId","SquareImageMediaId","LandscapeLogoMediaId","SquareLogoMediaId","CallToAction","CallToActionLanguage","CallToActionText","CallToActionAriaText","MediaUrl","DeviceType","AltText","Headlines","LongHeadlines","Descriptions","Images","ImpressionTrackingUrls","VerifiedTrackingSettings","Videos","BoostAnchors","HotSpots","AdSubType","LegacyResponsiveAd","biddingStrategyType","BiddingScheme","getBiddingScheme","initializeAdEditor","_ref","scope","gridView","_ref$item","_ref$firstTextItem","firstTextItem","_ref$firstExpandedIte","firstExpandedItem","_ref$firstResponsiveS","firstResponsiveSearchItem","_ref$isForVNext","isForVNext","newI18n","_ref$inlineSuggestion","inlineSuggestionsEnabled","lazyInject","_ref$showSaveAndCreat","showSaveAndCreateAnother","_ref$isOpenCreatePane","isOpenCreatePanel","shouldSendOpportunityLog","logOpportunity","perfMarker","serverContext","preferenceService","_ref$triggerAdItemRef","triggerAdItemRefresh","_ref$navigateToSingle","navigateToSingleAdEditor","parameters","className","isTraditionalChinese","Language","campaignType","campaignSubType","isDynamicDescriptionEnabled","CampaignSettings","parentPerfMarker","model","firstTextAdModel","firstExpandedTextAdModel","firstResponsiveSearchAdModel","adEditor","backboneGridView","gridDidUpdateHandler","overrideWith","render","on","remove","adGroup","campaignId","adGroupId","editorContainer","$","empty","append","el","show","find","focus","scrollTo","toolbar","grid","gridToolbar","$el","closest","hide","gridToolbarGroup","hideAllToolbars","showAllToolbars","updateContext","view","refresh","showAdStrength","refreshAdItem","adId","StrengthIcon","Poor","Average","Good","Excellent","renderSuggestionPopup","_ref3","i18n","event","containerDOM","adStrengthEntity","adsGrid","closeAdStrengthPopup","AdStrength","AdStrengthActionItems","_adsGrid$scope","cid","customerId","aid","accountId","actionItemsStrings","actionItems","actionItemsList","push","getString","concat","getActionItems","iconName","styles","mergeStyleSets","callout","width","padding","fontSize","pendingcallout","container","title","marginBottom","chart","fontWeight","marginRight","height","lineHeight","textAlign","borderRadius","color","background","marginTop","body","listStylePosition","link","ReactDOM","_jsx","onMouseLeave","children","Callout","target","directionalHint","DirectionalHint","rightCenter","role","_jsxs","block","variant","Label","HelpIcon","topic","FontIcon","NewAdStrengthScore","strength","style","PrimaryButton","onClick","activityAdStrengthLogger","signal","toString","campaign","adgroup","IsRSASuggestionCMUIEnabled","deps","adsTabPerfMarker","initializer","document","querySelector","_ref2","showAdEditor","instrumentationSchema","scenario","activity","odata","SharedRepository","getReasonTemplates","deliveryStatus","ad","errI18n","locationI18n","editorialRejection","commonI18n","logScenario","logActivity","fetchRejectionReason","create","error","DisclaimerAdExtension","afterChangeComitted","association","findAll","where","disclaimerData","url","args","cmpid","adExtensionId","version","Version","queryify","http","post","data","__RequestVerificationToken","val","contentType","RejectionReasons","reasonTemplates","getEditorialTemplates","reasons","Reason","ReasonCode","Location","LanguageToCountries","PublisherCountries","RejectionCountries","ENTITY","EXTENSION","isAppealable","EntityIdsParentIds","EntityId","ParentId","fetchRejectionReasons","Reasons","AD","isDetectionRejectionTypeEnabled","DetectionRejectionType","AppealAggregator","handleSortChange","instrumentation","Hotkeys","CopyPaste","state","popupContentKey","keyVault","hoveringPopup","AdsGrid","_DeterministicWrapper","_this","_len","Array","_key","_callSuper","dataSource","rawData","setTimeout","count","setCreateBtnDisabled","shouldDisableCreateBtn","_inherits","_this2","router","filterService","preferenceConfig","getGridConfig","getPlugins","pageName","_ref$preexecuteFlag","preexecuteFlag","campaignContext","this","isInitialGrid","gridRemoved","gridConfig","gridName","addScenario","activityLogger","loadRSAAssetReportLink","adStrength","rejectionPopupContainerSelector","ExtaDeprecatedPopupContainerSelector","popoverId","appealAggregator","disclaimerAppealAggregator","isMCCLabelEnabled","IsAccountLabelsEnabled","isEditorialCategoryEnabled","IsEditorialCategoryEnabled","isEnabledForGoogleImportVideoAd","IsGoogleImportVideoAdsEnabled","AdsPageDFMV2","setUpErrorHandling","RequestExceptionCallBack","isAdGroupLevel","controller","submit","menuToFollow","openBulkEditor","bulkEditor","MMABulkConversion","StyledMMABulkConversionView","RequestExceptionCallBackFromPopup","id","editorial","clickRequestException","trace","trigger","selectRow","appealView","RequestDisclaimerExceptionCallBackFromPopup","deselectAll","requestExceptionFromPopup","_TL_","values","RequestDisclaimerExceptionCallBack","pgridFactory","plugins","changes","rsaList","once","PageReady","pageIsReady","bulkEditGridOptions","pgridPlugins","IsBulkEditCopyPasteEnabled","copy","bind","paste","setup","oldQuery","newQuery","getCombinedFilter","updateGridQuery","pagination","pageNumber","setPageNumberToState","reset","_superPropGet","number","set","_defineProperty","attr","prop","waterfallFilters","CurrentAccount","isAudienceFeedBasedCampaignLevel","IsReadOnlyUser","HotelCampaign","rawFilter","chain","first","getFilteredCampaignTypeFromRawFilter","getCampaignTypeGlobalFilter","_this3","refreshSource","initializeCombinedFilterPromise","keyOfElement","itemWithKey","navigateToManagePage","targetEntity","getTargetEnity","filterOnLabelClick","entityName","IsExpandedTextAdV2Enabled","showLabelsPopup","labels","entityType","preventDefault","adType","adSubType","AudienceAssetReport","navigateToRoute","Object","assign","customer_id","account_id","campaign_id","adgroup_id","ad_id","ad_type","campaign_type","ad_sub_type","popupView","toggleCountryList","registerCountryListEvent","e","relatedTarget","_this4","actionLinks","includes","getRoutePathById","allSiteMap","uri","URI","appendScopeParameter","ShoppingCampaignNoOffersPresent","GoogleImportAdVideoNeedRepair","factory","DeliveryStatusPopupFactory","getEventTargetEntity","showRejectionPopup","getCustomTemplate","useCustomTemplate","isDeliveryStatusDisapproved","AdExtensionInlineAppeal","containerSelector","inContextRepairRecommedationType","afterRender","popup","addEditorialHandler","popupManager","releaseLock","adStrengthPopoverShown","_this$scope","forceAcquireLock","_this$scope2","adgroupId","href","topCenter","HelpLink","query","deprecatePopoverShown","DeterministicWrapperView","jsData","i18nErrors","enableGridFlexLayout","lastCampaignId","lastAdgroupId","StatusIconColumn","_BaseStatusIconColumn","enableEdit","LandscapeImageMediaUrl","isPlaceholderMMA","group","status","additionalPayload","AdType","inlineEditSave","fieldName","updatedItem","resource","ResponsiveAd","Ad","customBlockerTarget","BaseStatusIconColumn","AdGroupColumn","_CampaignuiBaseColumn","routeTemplate","_objectSpread","AdGroupColumnConfig","sortable","editable","bodyClasses","_item$Campaign","_item$AdGroup","_item$AdGroup2","adgid","ariaLabel","adGroupName","adGroupTemplate","CampaignuiBaseColumn","AdIdColumn","AdIdColumnConfig","helpId","helpAriaLabel","AdTypeColumn","AdTypeColumnConfig","schemaI18n","SchemaI18n","IsMultiMediaAdsEnabled","IsRenameHotelToLodgingEnabled","isDisableEXTA","isStandardTextAd","adTypeTemplate","DevicePreferenceColumn","DevicePreferenceColumnConfig","devicePreferenceTemplate","adDisplayUrlService","combineText","resizeQueryString","isImpressionTrackingUrlsEnabled","isMultiMediaAdsPhase2Enabled","isAudienceCampaignMultiMediaAdsEnabled","Permissions","isAudienceAssetReportEnabled","videoTypesWithOrder","AdPreviewColumn","config","AdPreviewColumnConfig","isXandrCampaign","checkLandscapeImageMediaUrl","checkAdSubtypeForMultiAdFormat","dynamicPermissions","isVideoAdUnderNative","isDisplayAdUnderNative","IsMMAV2Enabled","image","Asset","SubType","$total","urlRegex","RegExp","destinationUrl","search","convertedFinalUrl","isMultimediaAd","isMultimediaAdinMSANEnabled","isLinkedInAd","convertedDisplayUrl","computedTitle","convertedText","replace","platformText","appStoreName","convertedTitle","getDynamicSearchAdDisplayUrl","getExpandedTextAdDisplayUrl","imageUrlToUse","ImageUrl","HeadlineCount","LongHeadlineCount","TextCount","imageCount","indexOfResizeInfo","indexOf","substr","isVideo","_loop","videoType","i","videoWithThumbnail","v","ThumbnailUrl","IdString","isVerticalVideo","Height","Width","shouldShowActionNeededForGoogleImprotVideoAd","headlineList","PinnedField","descriptionList","getTitlePreview","moreTitleHint","getMoreTitleHint","getDescPreview","moreTextHint","getMoreDescHint","DSAAssetReport","MMAAssetReport","MMAAssetReportAccountLevel","adTemplate","_ref4","hasClass","parseDecimal","_ref5","AdsByBingColumn","AdsByBingColumnConfig","AdsByBing","adsByBingTemplate","AdStrengthColumn","AdStrengthColumnConfig","adStrengthScore","showSuggestion","adStrengthTemplate","_globalContext$requir","Columns","SelectedColumns","CustomColumns","_globalContext$requir3","LegacyColumns","LegacySelectedColumns","LegacyGridFlag","builder","showAdsByBingColumn","IsAdsByBingEnabled","IsViewThroughConversionEnabled","IsCustomColumnsInAdsSupported","IsAvgPositionDeprecationPhase1Enabled","IsAvgPositionDeprecationPhase2Enabled","IsViewThroughConversionsRevenueEnabled","_Permissions$dynamic","IsPartialConversionsEnabled","PartialConversions","IsColumnConversionEnabled","ColumnConversion","isConversionValueRuleColumnsEnabled","ConvValueRules","AdStrengthTestingNoPanel","usePartialConversions","getBuilder","ColumnsConfigBuilder","addCategory","category","addColumns","CampaignColumn","DeliveryColumn","LabelsColumn","addPerformanceCategoryForAd","addConversionsCategory","withPartialConversions","setLockedColumns","setSelectedColumns","ColumnClicks","ColumnImpressions","ColumnCTR","ColumnAverageCPC","ColumnSpend","ColumnConversionsCredit","ColumnConversions","ColumnViewThroughConversionsCredit","ColumnViewThroughConversions","ColumnAveragePosition","ColumnTopImpressionRate","ColumnAbsoluteTopImpressionRate","nameFromLegacy","StatusIcon","Preview","AdGroupName","CampaignName","ID","ClickCount","ImpressionCount","ClickThrough","TotalSpendAmount","ConversionCount","stateManager","toolbarRow","helpers","adsBulkEdit","ChangeStatusView","ChangeStatusModel","ChangeAdsView","ChangeAdsModel","ChangeUrlOptionsView","ChangeUrlOptionsModel","ChangeThirdPartyMeasurementView","ChangeThirdPartyMeasurementModel","ChangeThirdPartyMeasurementViewV2","getRequestExceptionView","viewConfig","onCopyClicked","_ref8","text","classes","createView","selectedRowCount","selectedEntityCount","_ref7","IASBulkEditsThirdPartyMeasurements","IsMOATEnabled","inAdGroupLevel","IsAdGroupLevelEditorialAppealEnabled","subItems","_ref10","_ref11","_ref12","_ref6","selectedItems","allPages","hasRSAorExTA","getIsIncludeRSAAndExTAAds","isValid","frontItems","hotkeys","win","mac","Win","Mac","_ref9","noSelectionRequired","projectionGridBulkEdit","DeleteConfirmation","navigation","source","$call","mockEdm","root","identifyEntitySet","currentAccount","Campaigns","$withKey","AdExtensionAssociations","Paused","Active","Deleted","appState","edm","setSegType","getSegType","DownloadView","jsdata","LabelAssociationView","dataContextManager","cacheService","s$i18n","logger","jsdataRawDataPlugin","commonJsdataRawDataPlugin","getRawData","rawDataAccessor","ds","_rawData","dfmRawData","getAdsPlugins","addDateChangeListener","p$daterange","currentEntity","CampaignAdgroupSelectorEdmView","PredicateListReact","ReportEmailRule","unset","columnChooserConfig","customColumnConfig","_ref2$isForVNext","_adsMetricCategoriesF","adsMetricCategoriesFactory","enabled","metricCategories","segmentCategories","getColumnChooserConfig","patchQuery","customToolbarIcon","bulkEditPlugin","adsStatus","aggregatedRowsPlugin","aggregatedRowsPluginBuilder","keys","overallI18nKey","filteredI18nKey","waterfallFilterI18nKey","customConfig","showLinkedInRow","plugin","perfMarkerPlugin","marker","automatedRulesPlugin","currentUserId","accountTimeZone","accountCurrencyCode","stateMgr","preferenceSvc","appCfg","assistedSelectionPlugin","a11yPlugin","columnChooserPlugin","dateFilterPlugin","isOdataActionSource","comparisonColumns","editablePlugin","inlineDownloadWithoutFilterstatePlugin","isAvailable","gridId","processReportRule","ReportRule","Headers","Selection","AdId","Number","QueryString","inlineErrorPlugin","errorIconClasses","labelsPlugin","s$label","performanceLogPlugin","periodOverPeriodPlugin","paginationPlugin","availablePageSizes","enableRandomPage","pageNumberLabelText","pageSizeText","totalPageCountText","resetPageNumberOnSort","segmentPlugin","cultureShortDatePattern","ShortDatePattern","cellTemplates","AdPreview","uiBlockerPlugin","_toConsumableArray","projectionGridFlexColumnResize","getGridName","softDependencies","getPGridColumnResizePlugin","createAdsGrid","getAdditionalPlugins","viewport","customHeaderOffset","_ref$deps","isDataFetchManagerSource","_ref$isDataFetchManag","headRows","crossPageSelectHeadRow","events","onLinkToAssets","onLabelsRowClicked","onLabelClicked","onManageLabelsClicked","showRejectionReason","showAdStrengthPopup","IsDeferredHoveringPopupEnabled","handleShowRejectionReasonEnter","handleShowRejectionReasonLeave","showDeprecateReason","hideRejectionPopup","hideDeprecatePopover","hideAdStrengthPopup","tableName","legacyGridName","tableClasses","tableAttributes","selection","rows","columns","showExperiment","IsExperimentsEnabled","getColumnsConfig","scrolling","header","offset","attributes","virtualized","validateOrder","getConfig","EMPTY_TEMPLATE","SettingsGridView","getGridPlugins","setupDataSourceErrorHandling","prefetchChunks","initialGrid","TargetingSettingsContext","logMessage","itemOfElement","budgetSplitView","BudgetSplitView","GridCustomizedPopupEditor","editorView","editorPositionFactory","getEditorPositionAsideAnchor","renderBelow","InlineLocationRecommendationModal","InlineLocationRecommendationPanel","inlineLocationRecommendationView","forceRefreshGrid","CampaignCacheManager","invalidate","settingsBulkEdit","ChangeRsaAutoAssetsView","ChangeRsaAutoAssetsModel","importNotificationCallback","All","Default","showDelete","inlineEditableSave","blockerContainer","updated","editorViewCallbackAfterUpdate","successCallback","toUpdate","uiBlocker","jsDataCampaign","update","adapter","finally","withUiBlock","catch","response","unexpectedError","errors","getBulkApiErrors","message","is","setErrors","AlertHelper","showError","ColumnCampaign","property","isSmartCampaign","campaignName","baseCampaignName","experimentName","campaignColumnTemplate","skipScopeNavigation","BaseCampaignName","newPosition","tagName","toLowerCase","currentName","position","PopupEditor","fields","hasLabels","template","parentContainerSelector","saveModel","InlineEditableColumnPrompt","CampaignSchema","itemArray","rowItem","updatedRowItem","App","ColumnLocations","localizedTitle","locationsColumnTemplate","locationName","hasLocationRecommendation","displayName","TotalCountOfLocationTargets","TotalCountOfExcludedLocationTargets","CampaignCriterions","_ref3$RecommendationT","RecommendationTypes","criterions","filter","criterion","Criterion","pluck","names","c","getNameForRadiusLocation","Latitude","Longitude","combinedName","join","ColumnAdSchedule","adScheduleColumnTemplate","adSchduleName","adSchedules","bids","b","isCampaignWithNoDeviceTargeting","ColumnDevices","devicesColumnTemplate","devicesName","isNonClickable","pageContext","IsOriginalDeviceTargetingEnabled","computerAllSelected","smartphoneAllSelected","tabletsAllSelected","devices","computers","device","DeviceName","smartphones","tablets","deviceNames","OSName","LinkedInAgeRanges","EighteenToTwentyFive","TwentyFiveToThirtyFive","ThirtyFiveToFiftyFive","FiftyFiveAndAbove","Genders","Female","Male","ColumnDemographic","ages","AgeRange","genders","GenderType","isAllAges","isAllGenders","genderListString","gender","ageRangesListString","ageRange","templateConfig","UserPaused","statusText","BudgetUserPaused","Suspended","defaultTemplateConfig","ColumnStatus","headerTemplate","ExperimentId","statusTemplate","isExperiment","Enabled","getStatusTemplateConfig","statusEditor","renderStatusPopupEditor","currentStatus","statusOptions","option","iconClass","pausedCampaignImportNotificationActivity","createScenarioAndActivity","scenarioName","activityName","campaignStatus","EnumPaused","showPausedCampaignNotifications","campaignItemList","updateStatus","SettingsGridColumnsConfig","isPortfolioBidStrategyEnabled","PortfolioBidStrategy","isCampaignLifetimeBudgetEnabled","CampaignLifetimeBudget","BudgetColumn","LifetimeBudgetColumn","TrackingTemplateColumn","CustomParametersColumn","FinalUrlSuffixColumn","BidStrategyTypeColumn","BidStrategyNameColumn","InlineSharedBudgetEditor","InlineBudgetEditor","decimal","isCampaign","isAllSettingsGrid","getRecommendationTypesFilter","recommendationList","filters","SettingsRepository","edmCampaign","$expand","cacheResponse","filterOptions","custom","createAllSettingsGrid","columnConfig","repository","getDataSource","getQuery","preferencesService","sortableHeader","sortableHeaderTemplate","pageSize","getQuickFilterConfig","recommendationFilterItem","$eq","$in","crossPageSelectAllPlugin","placeholderPlugin","viewRoot","filteredContainer","filteredEmptyText","toolbarPlugin","disabled","quickFilterPlugin","filterStatePlugin","getFilterStateConfig","setting","TargetingType","AllSettings","pluginsConfig","columnChooser","lowerToolbar","pluginConfig","a11y","crossPageSelectAll","quickFilter","placeholder","SettingsGridConfig","basicGridConfig","_DeterministicView","buildGrid","onItemModified","InlineLocationRecommendationDialog","gridFactory","projectionGrid","vnext","use","fetchPreferenceConfig","setChild","GridView","settingsGridTemplate","DeterministicView","SettingsSummaryView","IsNewAllSettingsGridComponentUsageEnabled","segmentPreference","fetchPaginationConfig","segmentTimeChecker","getSegPreference","getGridPreferences","dateUtil","format","formatDate","omit","SettingsSummaryTemplate","EditCampaignSettingsView","_SettingsView","ccJsData","scopeServiceScope","CurrentCampaign","EditPage","editCampaignPage","shopping","editShoppingCampaignPage","smartShopping","editSmartShoppingCampaignPage","audienceShopping","getEditPageViewType","EditPageWrapper","providerId","isShoppingCampaign","SettingsView","EditAdGroupSettingsView","EditAdGroupPage","editAdGroupPage","EditAdGroupPageWrapper","settingsPage","reachControlOptions","modifyTarget","css","scrollTop","threshold","rootMargin","AudienceAdgroupSettingsWizard","viewContext","AccountCurrencyCode","CurrentAdGroup","createChild","AllSettingsView","getScope","onModelChange","Template","SettingsViewWrapper","TargetingScope","Account","Error","pug","module","exports","locals","pug_interp","pug_html","locals_for_with","escape","call","pug_mixins","alertText","isResponsive","statusTypeClass","skipNavigation"],"sourceRoot":""}