{"version":3,"file":"static/js/application.async.landing~d9e17232.8a6e1434.chunk.js","mappings":"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","sources":["../../../node_modules/@bingads-webui-campaign-react/top-grid-panel/src/bulk-edit-style.js","../../../node_modules/@bingads-webui-campaign-react/top-grid-panel/src/upgraded-url-override-style.js","../../../node_modules/@bingads-webui-campaign-react/top-grid-panel/src/automated-rules-style.js","../../../node_modules/@bingads-webui-campaign-react/top-grid-panel/src/bulk-edit-override-style.js","../../../node_modules/@bingads-webui-campaign-react/top-grid-panel/src/inline-download-style.js","../../../node_modules/@bingads-webui-campaign-react/top-grid-panel/src/paste-style.js","../../../node_modules/@bingads-webui-campaign-react/top-grid-panel/src/panel-styles.js","../../../node_modules/@bingads-webui-campaign-react/top-grid-panel/src/panel.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/components/text.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/components/custom-component/custom-component.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/components/custom-component/with-custom-rendering.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/components/panel/action-button.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/components/panel/header.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/components/panel/panel.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/components/message-bar.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/components/property-row/property-label.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/components/property-row/property-data.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/components/property-row/property-row.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/components/horizontal-divider.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/components/data.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/component-types.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/generate-components.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/generated-ui.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/schemas/default-text-property.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/schemas/default-data-property.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-cmui/src/carousel-layout-wrapper.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-cmui/with-cmui-theme.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-cmui/src/media-placement-type-enum.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-cmui/src/use-ad-preview-model-wrapper.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-cmui/src/get-smart-cropped-image.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-cmui/src/use-image-experience-ad-preview-model.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-cmui/index.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/with-themed-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-placement-components/mma-in-msan-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-placement-components/mma-in-msan-v2-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-placement-components/bing-search-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-placement-components/outlook-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-placement-components/linkedin-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-placement-components/boost-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/shared-components/disclaimer-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-placement-components/responsive-search-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-placement-components/mma-in-msan-v2-refreshed-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-placement-components/outlook-ad-refreshed-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/mma-placement-card.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/shared-components/placement-card-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/placement-content-container.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/ad-label.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/shared-components/ad-label-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/business-name-with-ads.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/shared-components/business-name-with-ads-label-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/placement-gradient.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/shared-components/placement-gradient-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/with-link.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/placement-text.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/placement-action.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/placement-image.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/disclaimer.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/business-name-with-logo.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/business-name-with-choice-icon.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/circle-right-arrow.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/shared-components/large-ad-choice-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/three-dot.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/outlookUnreadIcon.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/description-with-action.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/mma-ad-placement-base.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/mma-ad-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-placement-components/mma-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/mma-in-msan-ad-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/mma-ad-placements-v2/mma-ad-placement-base-v2.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/mma-in-msan-v2-ad-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/image-extension-ad-placements/single-image-ad-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-placement-components/image-extension-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/image-extension-ad-placements/bing-desktop-multi-image-133x100.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/image-extension-ad-placements/bing-mobile-multi-image-133x100.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/media/bing-desktop-header.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/bing-search-ad-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/outlook-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/linkedin-ad-placements/li-single-image-ad-placement-base.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/linkedin-ad-placements/li-single-image-ad-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/app-ads-ad-placements/app-ads-base-placement.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-placement-components/app-ads-ad-placement-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/app-ads-ad-placements/app-ads-msn-display-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/responsive-ad-placements/responsive-outlook-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/responsive-components/responsive-outlook-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/app-ads-ad-placements/app-ads-m365-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/responsive-search-ad-placements/responsive-search-ad-placement-base.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/app-ads-ad-placements/app-ads-bing-search-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/app-ads-ad-placements/app-ads-casual-games-placement.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/app-ads-ad-placements/app-ads-video-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/responsive-ad-placements/responsive-mma-placement-card.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/responsive-components/responsive-placement-card-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/responsive-ad-placements/responsive-mma-ad-placement-base.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/responsive-ad-placements/responsive-mma-ad-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/responsive-components/responsive-mma-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/responsive-ad-placements/responsive-mma-in-msan-ad-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/responsive-components/responsive-mma-in-msan-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/responsive-ad-placements/responsive-bing-search-ad-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/responsive-components/responsive-bing-search-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/boost-ad-placements/boost-windows-spotlight-placement.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/responsive-ad-placements/responsive-boost-ad-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/boost-ad-placements/boost-ad-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/boost-ad-placements/boost-text-ad-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/boost-ad-placements/boost-discover-card-placement.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/responsive-search-ad-placements/responsive-search-ad-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/dynamic-search-ad-placements/dynamic-search-ad-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-placement-components/dynamic-search-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/video-placement.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-placement-components/video-placement-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-containers/index.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-preview-container-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/@types/image-video-type-enum.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/@types/placement-type-enum.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/@types/ad-extension-type-enum.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-preview-model/placement-meta-list.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-preview-model/merge-reducer-state-util.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-preview-model/use-ad-preview-reducer.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-preview-model/get-central-crop-settings.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-preview-model/use-ad-preview-model.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-preview-model/load-image-by-url.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-preview-model/model-constants.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-preview-model/get-crop-settings-from-roi.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/layout-components/get-ad-placement-component.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/layout-components/grid-layout.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/layout-components/grid-layout-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/layout-components/single-placement-layout.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/layout-components/single-placement-layout-style.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/layout-components/custom-carousel-component.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/layout-components/carousel-layout.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/layout-components/carousel-layout-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-extension-components/structured-snippet-extension.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-extension-components/ad-extension-component-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-extension-components/callout-extension.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-extension-components/price-extension.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-extension-components/promotion-extension.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-extension-components/sitelink-extension.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-util/src/constants.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-util/src/utils.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-wizard/src/wizard/wizard.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-assets/src/use-assets-step-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-assets/src/model/constants.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-assets/src/components/asset-group-name-section.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-assets/src/components/assets-section.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-assets/src/components/assets-step-form.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-assets/src/assets-step-shell.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-assets/src/model/default-data.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-assets/src/use-assets-step-repository.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-assets/src/model/create-default-campaign.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-assets/src/assets-step-shell-settings.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-targeting/src/use-targeting-step-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-targeting/src/targeting-step-shell.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-details/src/use-campaign-details-step-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-details/src/campaign-details-form.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-details/src/campaign-details-step-shell.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-details/src/campaign-details-edit-step-shell.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-details/src/use-campaign-details-step-repository.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-budget/src/use-budget-step-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-budget/src/budget-step-shell.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-budget/src/use-budget-step-repository.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-summary/src/use-summary-schema-data.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-summary/src/summary-step-shell.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-summary/src/schema.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-summary/src/use-summary-step-repository.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-wizard/src/steps/step-constants.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-wizard/src/steps/step-config.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-targeting/src/use-targeting-step-repository.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-details/src/use-campaign-details-edit-step-repository.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-wizard/src/components/footer.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-wizard/src/components/edit-footer.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-wizard/src/components/step-list.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-wizard/src/wizard/use-store-type.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-wizard/src/wizard/unified-app-campaign-wizard.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-wizard/src/wizard/unified-app-edit-campaign-settings-wizard.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-wizard/src/wizard/unified-app-edit-asset-group-settings-wizard.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-shared/src/components/system-errors.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-shared/src/components/entity-validation-groups.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-shared/src/components/preview-controls.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-shared/src/components/preview-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-shared/src/components/windows-app-ads-preview.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-shared/src/model/campaign/campaign.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-shared/src/model/campaign/campaign-bulk.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-shared/src/model/campaign/save-campaign.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-shared/src/model/asset-group/save-asset-group.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-shared/src/model/budget/use-budget-model.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-shared/src/utils/use-responsive-style-wrapper.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-shared/src/utils/constants.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-shared/src/utils/assets-panels.js","../../../node_modules/@bingads-webui-campaign-react/upload-file-picker/src/utils/parse-file.js","../../../node_modules/@bingads-webui-campaign-react/upload-file-picker/src/file-picker-view/file-picker.js","../../../node_modules/@bingads-webui-campaign-react/upload-file-picker/src/utils/read-file.js","../../../node_modules/@bingads-webui-campaign-react/upload-file-picker/src/utils/constants.js","../../../node_modules/@bingads-webui-campaign-react/upload-file-picker/src/file-picker-view/image-file-picker.js","../../../node_modules/@bingads-webui-campaign-react/upload-file-picker/src/file-picker-view/video-file-picker.js","../../../node_modules/@bingads-webui-campaign-react/upload-file-picker/src/upload-progress-view/styles/upload-assets-preview-style.js","../../../node_modules/@bingads-webui-campaign-react/upload-file-picker/src/upload-progress-view/upload-assets-preview.js","../../../node_modules/@bingads-webui-campaign-react/upload-file-picker/src/upload-progress-view/upload-progress-control.js","../../../node_modules/@bingads-webui-campaign-react/upload-file-picker/src/upload-progress-view/progress-helpers.js","../../../node_modules/@bingads-webui-campaign-react/upload-file-picker/src/utils/validate-file.js","../../../node_modules/@bingads-webui-campaign-react/url-editor/src/build-url.js","../../../node_modules/@bingads-webui-campaign-react/url-editor/src/parse-url.js","../../../node_modules/@bingads-webui-campaign-react/url-editor/src/url-editor.js","../../../node_modules/@bingads-webui-campaign-react/url-editor/src/url-editor-for-array.js","../../../node_modules/@bingads-webui-campaign-react/url-input-fluent-v2/src/validation.js","../../../node_modules/@bingads-webui-campaign-react/url-input-fluent-v2/src/styles.js","../../../node_modules/@bingads-webui-campaign-react/url-input-fluent-v2/src/url-path-fluent.js","../../../node_modules/@bingads-webui-campaign-react/url-input-fluent-v2/src/utils.js","../../../node_modules/@bingads-webui-campaign-react/url-input-fluent-v2/src/url-input-fluent.js","../../../node_modules/@bingads-webui-campaign-react/url-input-fluent-v2/src/with-no-protocol.js","../../../node_modules/@bingads-webui-campaign-react/url-input-fluent/src/validation.js","../../../node_modules/@bingads-webui-campaign-react/url-input-fluent/src/url-path-fluent.js","../../../node_modules/@bingads-webui-campaign-react/url-input-fluent/src/utils.js","../../../node_modules/@bingads-webui-campaign-react/url-input-fluent/src/url-input-fluent.js","../../../node_modules/@bingads-webui-campaign-react/url-input-fluent/src/with-no-protocol.js","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/components/map-tooltip.pug","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/utils/filter-location-data.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/utils/const.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/utils/format-location-data.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/components/use-top-locations-data.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/components/fetch-location-data.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/utils/is-us-or-canada.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/styles/metric-selector-styles.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/components/metric-selector.tsx","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/styles/footer-styles.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/components/footer.tsx","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/styles/no-locations-styles.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/components/no-data.tsx","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/components/shimmer.tsx","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/styles/table-styles.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/components/top-locations-table.tsx","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/utils/get-page-locations.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/styles/map-styles.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/components/top-locations-map.tsx","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/components/use-pagination-config.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/components/with-preferences-metric.tsx","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/styles/card-styles.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/components/top-locations-card.tsx","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/components/with-bing-maps-context.tsx","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/styles/view-selector-styles.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/components/view-selector.tsx"],"sourcesContent":["import { underlineLinkStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nexport const bulkEditStyle = ({ palette = {} }) => ({\r\n '& .previewTable': {\r\n overflowY: 'scroll',\r\n margin: '5px 0 !important',\r\n maxHeight: 250,\r\n display: 'inline-block',\r\n minWidth: 500,\r\n width: 'auto !important',\r\n },\r\n '& .previewTable > table': {\r\n width: '100%',\r\n border: '1px solid #CCCCCC',\r\n },\r\n '& .bulk-edit-progress-bar': {\r\n maxWidth: 750,\r\n width: '50%',\r\n },\r\n '& .form-group .bulk-edit-currency': {\r\n fontWeight: 'normal',\r\n },\r\n '& .form-inline .bulkEdit-bid': {\r\n textAlign: 'right',\r\n width: '5em',\r\n },\r\n '& .bulkEdit-units': {\r\n marginLeft: 4,\r\n },\r\n '& .bulkEdit-limit-label': {\r\n marginRight: 16,\r\n paddingLeft: 40,\r\n },\r\n '& .bulkeditlink': {\r\n marginBottom: 5,\r\n ...underlineLinkStyle({ palette }),\r\n },\r\n '& .bulkeditdate': {\r\n marginBottom: 5,\r\n },\r\n '& .bulkedit-info-text': {\r\n marginBottom: 10,\r\n },\r\n});\r\n","export const upgradedUrlOverrideStyle = {\r\n '& .custom-params-template .custom-param-entry': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n '& .custom-params-template .custom-param-entry td': {\r\n display: 'flex',\r\n alignItems: 'baseline',\r\n },\r\n '& .custom-params-template .flex-row-fixed.custom-param__key-container': {\r\n display: 'flex',\r\n alignItems: 'baseline',\r\n },\r\n '& .custom-params-template .flex-row-fixed.custom-param__key-container .control-label': {\r\n whiteSpace: 'pre',\r\n },\r\n '& .custom-params-template .flex-row-fixed.custom-param__key-container input.form-control.custom-param__key-field': {\r\n margin: '0px 5px',\r\n },\r\n '& .custom-params-template .flex-row-dynamic input.form-control.custom-param__value-field': {\r\n marginLeft: '5px',\r\n },\r\n '& .custom-params-template .closeimage.custom-param__close-button': {\r\n height: '20px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n\r\n '&:before': {\r\n fontFamily: '\"MsAds MDL2 Assets\"',\r\n content: '\"\\\\E711\"',\r\n },\r\n },\r\n '& .custom-param__close-button': {\r\n marginLeft: 10,\r\n cursor: 'pointer',\r\n },\r\n};\r\n","export const getAutomatedRulesStyles = ({ palette, semanticColors }) => ({\r\n '& .automated-rules-vnext': {\r\n '& .different-user-warning.col-sm-10': {\r\n paddingLeft: 0,\r\n },\r\n '& .add-filter-button': {\r\n marginLeft: 0,\r\n },\r\n '& .predicate-list': {\r\n paddingLeft: 0,\r\n },\r\n '& .predicate-pill': {\r\n '&:hover': {\r\n background: `${palette.neutralPrimaryAlt} !important`,\r\n },\r\n },\r\n '& .predicate-pill-selected': {\r\n background: `${palette.themePrimary} !important`,\r\n\r\n '& .predicate-pill': {\r\n '&:hover': {\r\n background: `${palette.themeDark} !important`,\r\n },\r\n },\r\n '& .remove': {\r\n '&:hover': {\r\n background: `${palette.themeDark} !important`,\r\n },\r\n },\r\n },\r\n '& .predicate-pill-container': {\r\n background: palette.neutralSecondary,\r\n },\r\n '& .invalid-predicate-pill-container': {\r\n background: palette.red,\r\n },\r\n '& .icon-right.spritedimage.grid-expand-icon.pull-right': {\r\n border: '0 solid transparent',\r\n color: '#605e5c',\r\n display: 'inline-block',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n fontSize: '12px',\r\n fontWeight: 400,\r\n height: 'auto',\r\n margin: '0 4px',\r\n position: 'relative',\r\n float: 'right',\r\n width: 'auto',\r\n '&::before': {\r\n content: '\"\\\\E76C\"',\r\n },\r\n },\r\n '& .radio-inline + .radio-inline': {\r\n marginLeft: 16,\r\n },\r\n '& .error': {\r\n color: palette.red,\r\n },\r\n '& #AutomationRulesBidErrorMessage': {\r\n display: 'inline-block',\r\n marginLeft: '30px',\r\n },\r\n '& [data-bind*=\"isIncreaseBudgetHelp\"]': {\r\n display: 'inline-block',\r\n },\r\n '& input.search-box__input': {\r\n marginRight: '0px',\r\n },\r\n '& .search-box__icon.glyphicon.filter_search_icon_small:before': {\r\n content: '\"\\\\E721\"',\r\n },\r\n '& .search-box__icon.glyphicon.filter_search_icon_small': {\r\n position: 'absolute',\r\n top: '10px',\r\n right: '10px',\r\n color: '#0078d4',\r\n fontSize: '14px',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n },\r\n '& .rule-preview-body': {\r\n '& .previewTable.grid': {\r\n paddingLeft: '0 !important',\r\n '& .grid-row': {\r\n height: 42,\r\n },\r\n },\r\n '& .grid-header-text': {\r\n lineHeight: '\\'19px\\'',\r\n color: palette.neutralPrimary,\r\n fontWeight: 'normal',\r\n },\r\n '& .grid-header-row': {\r\n height: 42,\r\n },\r\n '& tbody .grid-cell': {\r\n lineHeight: '\\'19px\\'',\r\n color: palette.themePrimary,\r\n },\r\n '& tbody .grid-cell + .grid-cell': {\r\n lineHeight: '\\'16px\\'',\r\n color: '#797775',\r\n },\r\n },\r\n '& .control-label': {\r\n textAlign: 'left !important',\r\n width: '100%',\r\n padding: '12px 0 13px 0',\r\n marginBottom: '16px',\r\n display: 'flex',\r\n fontWeight: 600,\r\n lineHeight: '19px',\r\n fontSize: '18px',\r\n '& label': {\r\n padding: 0,\r\n },\r\n '& span.action-text': {\r\n fontSize: '14px',\r\n fontWeight: 'normal',\r\n },\r\n },\r\n '& .panel-body': {\r\n width: '100%',\r\n '& > div:not([style=\"display: none;\"])': {\r\n marginTop: '16px',\r\n },\r\n '& > div.margin-zero': {\r\n marginTop: 0,\r\n },\r\n '& .form-group:last-child': {\r\n marginBottom: 0,\r\n },\r\n '& .form-group .formgroupline': {\r\n width: '787px !important',\r\n height: '1px',\r\n color: palette.neutralLight,\r\n borderTop: '1px solid',\r\n },\r\n },\r\n '& .rule-scope-options-selection': {\r\n paddingLeft: 0,\r\n },\r\n '& .rule-options-selection': {\r\n padding: '0',\r\n display: 'inline-block',\r\n verticalAlign: 'top',\r\n '& .form-text': {\r\n marginRight: 8,\r\n },\r\n '& .radio-inline': {\r\n paddingTop: '0',\r\n width: 94,\r\n display: 'inline-block',\r\n },\r\n '& input[type=\"radio\"]:checked': {\r\n W: 'none',\r\n M: 'none',\r\n appearance: 'none',\r\n display: 'inline-block',\r\n height: 18,\r\n width: 18,\r\n padding: 4,\r\n backgroundClip: 'content-box',\r\n border: `1px solid ${palette.themeDarkAlt}`,\r\n backgroundColor: palette.themeDarkAlt,\r\n borderRadius: '50%',\r\n },\r\n '& input[type=\"radio\"]': {\r\n W: 'none',\r\n M: 'none',\r\n appearance: 'none',\r\n display: 'inline-block',\r\n height: 18,\r\n width: 18,\r\n backgroundClip: 'content-box',\r\n border: `1px solid ${palette.neutralPrimary}`,\r\n backgroundColor: semanticColors.bodyBackground,\r\n borderRadius: '50%',\r\n },\r\n '& .radio-inline span': {\r\n marginLeft: 8,\r\n },\r\n '& .changeBudgetHelp': {\r\n display: 'contents',\r\n '& label': {\r\n display: 'contents',\r\n },\r\n },\r\n '& .k-datePicker-container': {\r\n padding: 0,\r\n '& .k-input': {\r\n border: 'none',\r\n height: 30,\r\n padding: '0px 0px 0px 8px',\r\n },\r\n },\r\n },\r\n '& select, & input': {\r\n marginRight: 8,\r\n },\r\n '& .bulk-edit-currency': {\r\n display: 'inline-block',\r\n },\r\n '& .bulkEdit-bid': {\r\n width: 106,\r\n },\r\n '& .predicate-row': {\r\n marginLeft: '0',\r\n paddingLeft: '0',\r\n },\r\n '& .rule-filter-selection': {\r\n marginLeft: '0',\r\n padding: '0',\r\n width: '100% !important',\r\n '& .glyphicon.glyphicon-remove': {\r\n marginTop: 6,\r\n color: palette.neutralSecondary,\r\n lineHeight: '12px',\r\n fontSize: 12,\r\n fontFamily: 'MsAds MDL2 Assets',\r\n verticalAlign: 'middle',\r\n },\r\n '& .glyphicon-remove:before': {\r\n content: '\"\\\\E711\" !important',\r\n },\r\n '& .new': {\r\n color: palette.neutralPrimary,\r\n },\r\n '& .glyphicon.glyphicon-plus': {\r\n marginRight: 8,\r\n height: 14,\r\n width: 14,\r\n fontFamily: 'MsAds MDL2 Assets',\r\n color: palette.themePrimary,\r\n },\r\n '& .glyphicon-plus:before': {\r\n content: '\"\\\\E710\" !important',\r\n },\r\n '& .delivery-status-category-container:first-of-type': {\r\n float: 'left',\r\n marginLeft: '20px',\r\n display: 'inline-block',\r\n marginTop: 0,\r\n },\r\n\r\n '& .delivery-status-category-container + .delivery-status-category-container': {\r\n paddingLeft: 20,\r\n float: 'left',\r\n },\r\n '& .predicate-row': {\r\n alignItems: 'end',\r\n },\r\n },\r\n '& .frequency-selection': {\r\n display: 'inline-block',\r\n '& div[role=\"radiogroup\"]': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n '& #ImprovedAdScheduling_Display_Time_Label': {\r\n width: 'auto',\r\n paddingBottom: 0,\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","import { adColumnPreviewStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nexport const getBulkEditOverrideStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '& .campaigns-date-picker .radioInput .date': {\r\n marginRight: '5px',\r\n },\r\n '& select.form-control.custom-param__select': {\r\n marginBottom: '5px',\r\n },\r\n '& .bulkEdit-limit-label.checkbox-inline': {\r\n paddingTop: '0px',\r\n paddingBottom: '0px',\r\n },\r\n '& .control-label': {\r\n verticalAlign: 'middle',\r\n display: 'inline-block',\r\n\r\n '&.bulk-edit-currency': {\r\n paddingTop: '0px',\r\n paddingBottom: '0px',\r\n },\r\n '&#currencyLabel1': {\r\n paddingTop: '0px',\r\n },\r\n },\r\n '& span.control-label.not(#bulkedit-budget-label)': {\r\n paddingTop: '0px',\r\n },\r\n '& .infomark.spritedimage': {\r\n fontStyle: 'normal',\r\n fontSize: '16px',\r\n verticalAlign: 'middle',\r\n marginRight: '5px',\r\n\r\n '&:before': {\r\n fontFamily: iconFontFamily,\r\n content: '\"\\\\F167\"',\r\n },\r\n },\r\n '& .form-horizontal .form-group': {\r\n marginLeft: '0px',\r\n marginRight: '0px',\r\n },\r\n '& .previewTable': {\r\n padding: '15px',\r\n overflowY: 'auto',\r\n },\r\n '& .previewTable > table': {\r\n borderLeft: 'none',\r\n borderRight: 'none',\r\n },\r\n '& .previewTable > table td, & .previewTable > table th': {\r\n border: '1px solid',\r\n borderColor: palette.neutralLighter,\r\n borderLeft: 'none',\r\n height: '44px',\r\n padding: '0px 8px',\r\n },\r\n '& .previewTable > table tr td:last-child, & .previewTable > table tr th:last-child': {\r\n borderRight: 'none',\r\n },\r\n '& .previewTable > table tr td': {\r\n color: ' #797775',\r\n fontSize: '12px',\r\n },\r\n '& .previewTable > table tr th a': {\r\n color: palette.neutralPrimary,\r\n fontWeight: 'normal',\r\n cursor: 'unset',\r\n },\r\n '& label > input[type=\"radio\"]': {\r\n marginRight: '5px',\r\n position: 'relative',\r\n },\r\n '& .campaigns-date-picker input[type=\"radio\"]': {\r\n position: 'relative',\r\n },\r\n '& .campaigns-date-picker .radioInput label': {\r\n display: 'inline-block',\r\n },\r\n '& .campaigns-date-picker .radioInput': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n '& .nodate, & .date': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n },\r\n '& .form-inline .form-control, & .form-inline .form-text': {\r\n marginRight: '10px',\r\n },\r\n '& .font-error': {\r\n color: palette.redDark,\r\n },\r\n '& .error': {\r\n color: palette.redDark,\r\n },\r\n '& input.btn, & button.btn': {\r\n marginRight: '8px',\r\n },\r\n // bulk edit bid strategy type\r\n '& .bid-strategy-container label': {\r\n display: 'inline-block',\r\n },\r\n '& [data-bind=\"visible: checkCPC\"] > .row': {\r\n marginLeft: '0px',\r\n },\r\n '& [data-bind=\"visible: showCPC\"]': {\r\n '& > label, & > a[type=\"helppopup\"]': {\r\n display: 'inline-block',\r\n },\r\n },\r\n '& .builkEdit-bid.custom-param__key-field, & .target-impression-share-percent-field.custom-param__key-field': {\r\n display: 'inline-block',\r\n marginLeft: 5,\r\n marginRight: 5,\r\n width: 85,\r\n },\r\n '& .grid-content-container': {\r\n fontSize: 14,\r\n lineHeight: '19px',\r\n color: palette.neutralPrimary,\r\n // Bulk change ads.\r\n ...adColumnPreviewStyle(),\r\n },\r\n '& .grid-content-container .previewAd': {\r\n border: '1px solid #ccc',\r\n padding: 5,\r\n margin: [5, 0, 5, 0],\r\n },\r\n '& .grid-content-container .previewAd .previewTitleAd + div + div, & .grid-content-container .previewAd .moreHint + div + span': {\r\n color: '#767676',\r\n },\r\n '& .panel > .panel-body > .form-group': {\r\n '& > .rsa-headlines, & > .rsa-descriptions, & > .mma-headlines, & > .mma-descriptions': {\r\n width: '100%',\r\n paddingLeft: 0,\r\n paddingRight: 0,\r\n '& .glyphicon-pushpin, & .glyphicon-plus': {\r\n color: palette.themePrimary,\r\n fontFamily: iconFontFamily,\r\n },\r\n '& .glyphicon-pushpin:before': {\r\n content: '\"\\\\E840\"',\r\n },\r\n '& .glyphicon-plus:before': {\r\n content: '\"\\\\E710\"',\r\n marginRight: 8,\r\n },\r\n '& .form-group': {\r\n margin: 0,\r\n },\r\n '& .control-label': {\r\n width: '16.66666667%',\r\n '& > label': {\r\n display: 'inline-block',\r\n },\r\n '& > helpbutton': {\r\n display: 'inline-block',\r\n },\r\n },\r\n '& .ad-rsa-filed-group': {\r\n width: '41.666666667%',\r\n '& > .form-control.text': {\r\n width: '90%',\r\n display: 'inline-block',\r\n },\r\n '& > .ad-rsa-pin-group': {\r\n display: 'inline-flex',\r\n width: '10%',\r\n '& > .ad-field-position': {\r\n display: 'inline',\r\n paddingLeft: 12,\r\n '& > .glyphicon-pushpin': {\r\n display: 'inline',\r\n },\r\n '& > .ad-pinned': {\r\n display: 'inline',\r\n paddingLeft: 8,\r\n color: palette.neutralPrimary,\r\n wordBreak: 'keep-all',\r\n },\r\n },\r\n },\r\n '& > .clearfix': {\r\n marginRight: '10%',\r\n textAlign: 'right',\r\n marginBottom: 11,\r\n },\r\n },\r\n '& .ad-rsa-add-headline, & .ad-rsa-add-description': {\r\n marginLeft: '16.66666667%',\r\n paddingLeft: 15,\r\n color: palette.neutralPrimary,\r\n },\r\n '& .ad-rsa-add-headline.disabled, & .ad-rsa-add-description.disabled': {\r\n color: palette.neutralTertiary,\r\n paddingLeft: 15,\r\n cursor: 'default',\r\n '& .glyphicon-plus': {\r\n color: palette.neutralTertiary,\r\n },\r\n },\r\n },\r\n },\r\n // Bulk appeal.\r\n '& .bulk-appeal .editor .form-horizontal': {\r\n margin: 0,\r\n maxWidth: 784,\r\n border: 0,\r\n boxShadow: 'none',\r\n '& .form-group': {\r\n margin: '0px 0px 18px 0px',\r\n '& .root': {\r\n margin: 0,\r\n padding: 0,\r\n '& > label': {\r\n padding: 0,\r\n },\r\n '& .title': {\r\n fontWeight: 'normal',\r\n },\r\n '& .details': {\r\n margin: '27px 0px 0px 0px',\r\n padding: 0,\r\n '& .col-sm-4': {\r\n padding: '0px 0px 0px 1px',\r\n width: '50%',\r\n '& .appeal-column-title': {\r\n fontSize: 18,\r\n lineHeight: '24px',\r\n fontWeight: 'normal',\r\n },\r\n '& .reasons > ul': {\r\n margin: '1px 0px 0px 0px',\r\n '& > li': {\r\n marginTop: '10px',\r\n },\r\n },\r\n },\r\n '& .col-sm-8': {\r\n width: '50%',\r\n paddingLeft: 14,\r\n paddingRight: 0,\r\n '& .appeal-column-title': {\r\n fontSize: 14,\r\n lineHeight: '19px',\r\n fontWeight: 600,\r\n },\r\n '& .appeal-textarea': {\r\n marginTop: 7,\r\n padding: 8,\r\n fontSize: 14,\r\n lineHeight: '19px',\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n borderRadius: '2px',\r\n background: '#FFFFFF',\r\n width: '100%',\r\n },\r\n '& .remaining-hint': {\r\n textAlign: 'right',\r\n marginTop: 3,\r\n marginBottom: 3,\r\n fontSize: 12,\r\n lineHeight: '16px',\r\n },\r\n },\r\n },\r\n '& .non-appeal-msg-panel': {\r\n margin: '11px 0px 0px 1px',\r\n },\r\n },\r\n },\r\n },\r\n '& .rsa-auto-assets-setting-container': {\r\n '& .checkbox-inline': {\r\n width: '100%',\r\n '& input': {\r\n float: 'left',\r\n bottom: '0',\r\n },\r\n },\r\n '& .HelpTopic': {\r\n marginLeft: 5,\r\n },\r\n },\r\n '& #status-label': {\r\n color: '#0A610A',\r\n backgroundColor: '#DFF6DD',\r\n fontWeight: 600,\r\n fontSize: 12,\r\n border: 4,\r\n paddingInline: 5,\r\n paddingTop: 2,\r\n paddingBottom: 2,\r\n paddingLeft: 2,\r\n paddingRight: 2,\r\n verticalAlign: 'middle',\r\n borderRadius: 4,\r\n marginLeft: 8,\r\n },\r\n});\r\n","import { getInlineDownloadStyle as sharedStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nexport const getInlineDownloadStyle = sharedStyle;\r\n","export const pasteStyle = {\r\n '& .copy-paste-container': {\r\n '& .form-group': {\r\n padding: 0,\r\n margin: 0,\r\n '& ul': {\r\n marginBottom: 0,\r\n '& .checkbox': {\r\n paddingTop: 0,\r\n '& label': {\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n },\r\n },\r\n },\r\n '& .copyPaste-radio-topBottomPadding': {\r\n margin: {\r\n top: 3,\r\n bottom: 3,\r\n },\r\n },\r\n '& .date-picker-within-radio': {\r\n margin: {\r\n top: -6,\r\n bottom: -4,\r\n left: -15,\r\n },\r\n },\r\n '& .copyPaste-radio-label': {\r\n margin: {\r\n top: 4,\r\n right: -9,\r\n },\r\n },\r\n '& .col-sm-1': {\r\n width: 100,\r\n },\r\n '& .col-sm-2': {\r\n width: 140,\r\n },\r\n },\r\n },\r\n};\r\n","import { datePickerStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport { ComponentSettings } from '@bingads-webui-theme-2018/theme-fluent';\r\n\r\nimport { bulkEditStyle } from './bulk-edit-style';\r\nimport { upgradedUrlOverrideStyle } from './upgraded-url-override-style';\r\nimport { getAutomatedRulesStyles } from './automated-rules-style';\r\nimport { getBulkEditOverrideStyle } from './bulk-edit-override-style';\r\nimport { getInlineDownloadStyle } from './inline-download-style';\r\nimport { pasteStyle } from './paste-style';\r\n\r\nconst {\r\n columnChooserStyle,\r\n getColumnChooserOverrideStyle,\r\n filterEditorStyle,\r\n getFilterEditorOverrideStyle,\r\n getTopGridPanelCommonStyle,\r\n} = ComponentSettings;\r\n\r\nexport const getTopGridPanelDefaultStyles = (_, {\r\n palette = {},\r\n semanticColors = {},\r\n spacing = {},\r\n}) => ({\r\n // Don't inject to global\r\n topGridPanelDefaultStyles: Object.assign(\r\n {},\r\n {\r\n // make sure we don't occupy any vertical space when panel is hidden\r\n padding: '0px',\r\n margin: '0px',\r\n minWidth: '1000px',\r\n maxWidth: '1500px',\r\n position: 'relative',\r\n zIndex: 1,\r\n\r\n '&:focus': {\r\n outline: 'none',\r\n },\r\n // Styles for panel itself\r\n ...getTopGridPanelCommonStyle({ palette }),\r\n\r\n '& .warn.warn-info.form-group': {\r\n padding: 8,\r\n background: '#FFF4CE',\r\n marginBottom: '5px',\r\n fontSize: '12px',\r\n width: '450px',\r\n\r\n '& .warn-image': {\r\n color: '#D83B01',\r\n fontSize: '16px !important',\r\n float: 'left',\r\n paddingRight: '5px',\r\n },\r\n },\r\n },\r\n // Styles for each of the panel contents\r\n bulkEditStyle({ palette }),\r\n getBulkEditOverrideStyle({ palette }),\r\n upgradedUrlOverrideStyle,\r\n getAutomatedRulesStyles({ palette, semanticColors, spacing }),\r\n columnChooserStyle,\r\n getColumnChooserOverrideStyle(palette),\r\n filterEditorStyle,\r\n getFilterEditorOverrideStyle(palette),\r\n getInlineDownloadStyle({ palette }),\r\n pasteStyle\r\n ),\r\n '@global': Object.assign(\r\n {},\r\n datePickerStyle({ palette })\r\n ),\r\n});\r\n\r\n","/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport $ from 'jquery';\r\nimport { filter } from 'underscore';\r\n\r\nimport { BackboneInstanceWrapper } from '@bingads-webui-react/backbone-instance-wrapper';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getTabbableNodes, addDataFocus } from '@bingads-webui-react/focus-lock';\r\n\r\nimport { getTopGridPanelDefaultStyles } from './panel-styles';\r\n\r\nclass TopGridPanelUnStyled extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.rootRef = React.createRef();\r\n }\r\n\r\n componentDidMount() {\r\n if (this.rootRef && this.rootRef.current) {\r\n // filter the not visible element out which may due to parent display property\r\n const tabbableNode = filter(getTabbableNodes(this.rootRef.current), item => $(item).is(':visible'));\r\n\r\n if (tabbableNode && tabbableNode.length > 0) {\r\n tabbableNode[0].focus({\r\n preventScroll: true,\r\n });\r\n }\r\n addDataFocus(this.rootRef.current);\r\n }\r\n }\r\n\r\n render() {\r\n let panelContent = (null);\r\n const {\r\n panelView, customClasses, classes,\r\n } = this.props;\r\n\r\n if (panelView) {\r\n if (React.isValidElement(panelView)) {\r\n panelContent = panelView;\r\n } else {\r\n panelContent = (\r\n \r\n );\r\n }\r\n }\r\n\r\n return (\r\n
\r\n {panelContent}\r\n
\r\n );\r\n }\r\n}\r\n\r\nTopGridPanelUnStyled.propTypes = {\r\n panelView: PropTypes.shape({\r\n render: PropTypes.func,\r\n }),\r\n classes: PropTypes.shape({\r\n topGridPanelDefaultStyles: PropTypes.string.isRequired,\r\n }).isRequired,\r\n customClasses: PropTypes.object, // eslint-disable-line\r\n};\r\n\r\nTopGridPanelUnStyled.defaultProps = {\r\n panelView: null,\r\n customClasses: {},\r\n};\r\n\r\nexport const TopGridPanel = withDefaultStyles(\r\n TopGridPanelUnStyled,\r\n getTopGridPanelDefaultStyles\r\n);\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { mergeStyles, Text as FluentText } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\n\r\nconst style = mergeStyles({\r\n lineHeight: 19,\r\n});\r\n\r\nexport const Text = ({ text, ...rest }) => {\r\n const i18n = useContext(I18nContext);\r\n return {i18n.getString(text)};\r\n};\r\n\r\nText.propTypes = {\r\n text: PropTypes.string.isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport const CustomComponent = ({\r\n Renderer, renderProps, children, ...dynamicProps\r\n}) => {children};\r\n\r\nCustomComponent.propTypes = {\r\n Renderer: PropTypes.elementType.isRequired,\r\n renderProps: PropTypes.shape({}),\r\n children: PropTypes.oneOfType([\r\n PropTypes.arrayOf(PropTypes.node),\r\n PropTypes.node,\r\n ]),\r\n};\r\n\r\nCustomComponent.defaultProps = {\r\n renderProps: null,\r\n children: null,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { CustomComponent } from './custom-component';\r\n\r\nexport const withCustomRendering = (Component) => {\r\n const CustomRenderingWrapper = (props) => {\r\n const { Renderer } = props;\r\n\r\n return (\r\n <>\r\n {Renderer ? : }\r\n \r\n );\r\n };\r\n\r\n CustomRenderingWrapper.propTypes = {\r\n Renderer: PropTypes.elementType,\r\n };\r\n\r\n CustomRenderingWrapper.defaultProps = {\r\n Renderer: null,\r\n };\r\n\r\n return CustomRenderingWrapper;\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { DefaultButton } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { withCustomRendering } from '../custom-component';\r\n\r\nconst ActionButton = ({\r\n label, iconName, iconStyles, ariaLabel, onClick, ...rest\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n const buttonIcon = iconName && {\r\n iconName,\r\n styles: iconStyles || {\r\n root: {\r\n color: '#0078D4',\r\n },\r\n },\r\n };\r\n\r\n return (\r\n
\r\n {i18n.getString(label)}\r\n
\r\n );\r\n};\r\n\r\nActionButton.propTypes = {\r\n ariaLabel: PropTypes.string.isRequired,\r\n iconName: PropTypes.string,\r\n iconStyles: PropTypes.shape({}),\r\n label: PropTypes.string.isRequired,\r\n onClick: PropTypes.func.isRequired,\r\n};\r\n\r\nActionButton.defaultProps = {\r\n iconName: null,\r\n iconStyles: null,\r\n};\r\n\r\nconst ActionButtonWrapped = withCustomRendering(ActionButton);\r\n\r\nexport { ActionButtonWrapped as ActionButton };\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { mergeStyles, Stack, Text } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport classNames from 'classnames';\r\nimport { ActionButton } from './action-button';\r\nimport { withCustomRendering } from '../custom-component';\r\n\r\nconst headerStyles = mergeStyles({\r\n padding: '0px 24px 0px 24px',\r\n borderStyle: 'solid',\r\n borderWidth: '0px 0px 1px 0px',\r\n borderColor: '#EDEBE9',\r\n});\r\n\r\nconst headerStackStyles = {\r\n root: {\r\n height: 56,\r\n },\r\n};\r\n\r\nconst titleStyles = mergeStyles({\r\n fontSize: 18,\r\n fontWeight: 600,\r\n});\r\n\r\nconst Header = ({\r\n title, actionButton, actionButtonDynamic, as,\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n return (\r\n
\r\n \r\n {i18n.getString(title)}\r\n {actionButton && }\r\n \r\n
\r\n );\r\n};\r\n\r\nHeader.propTypes = {\r\n actionButton: PropTypes.shape({}),\r\n actionButtonDynamic: PropTypes.shape({}),\r\n title: PropTypes.string.isRequired,\r\n as: PropTypes.string,\r\n};\r\n\r\nHeader.defaultProps = {\r\n actionButton: null,\r\n actionButtonDynamic: null,\r\n as: 'span',\r\n};\r\n\r\nconst HeaderWrapped = withCustomRendering(Header);\r\n\r\nexport { HeaderWrapped as Header };\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { mergeStyles } from '@bingads-webui-react/fabric-control';\r\nimport { Header } from './header';\r\n\r\nconst panelStyles = mergeStyles({\r\n width: 928,\r\n background: '#FFFFFF',\r\n borderRadius: 4,\r\n boxShadow: '0px 1.600000023841858px 3.5999999046325684px 0px #00000021',\r\n});\r\n\r\nconst panelContentStyles = mergeStyles({\r\n padding: '16px 24px 16px 24px',\r\n});\r\n\r\nexport const Panel = ({\r\n header, headerDynamic, children,\r\n}) =>\r\n (\r\n
\r\n {header &&
}\r\n
\r\n {children}\r\n
\r\n
\r\n );\r\n\r\nPanel.propTypes = {\r\n header: PropTypes.shape({}),\r\n headerDynamic: PropTypes.shape({}),\r\n children: PropTypes.oneOfType([\r\n PropTypes.arrayOf(PropTypes.node),\r\n PropTypes.node,\r\n ]).isRequired,\r\n};\r\n\r\nPanel.defaultProps = {\r\n header: null,\r\n headerDynamic: null,\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { MessageBar as FluentMessageBar } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { withCustomRendering } from './custom-component';\r\n\r\nconst MessageBar = (props) => {\r\n const i18n = useContext(I18nContext);\r\n const { text, ...rest } = props;\r\n return {i18n.getString(text)};\r\n};\r\n\r\nMessageBar.propTypes = {\r\n Renderer: PropTypes.elementType,\r\n rendererProps: PropTypes.shape({}),\r\n text: PropTypes.string,\r\n};\r\n\r\nMessageBar.defaultProps = {\r\n Renderer: null,\r\n rendererProps: null,\r\n text: null,\r\n};\r\n\r\nconst MessageBarWrapped = withCustomRendering(MessageBar);\r\n\r\nexport { MessageBarWrapped as MessageBar };\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Text, mergeStyles } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport classNames from 'classnames';\r\nimport { withCustomRendering } from '../custom-component';\r\n\r\nconst labelStyles = mergeStyles({\r\n fontWeight: 400,\r\n fontSize: 14,\r\n lineHeight: 19,\r\n width: 148,\r\n paddingLeft: 8,\r\n paddingTop: 10,\r\n paddingBottom: 10,\r\n});\r\n\r\nconst PropertyLabel = ({ label }) => {\r\n const i18n = useContext(I18nContext);\r\n return (\r\n
{i18n.getString(label)}
\r\n );\r\n};\r\n\r\nPropertyLabel.propTypes = {\r\n label: PropTypes.string.isRequired,\r\n};\r\n\r\nconst PropertyLabelWrapped = withCustomRendering(PropertyLabel);\r\n\r\nexport { PropertyLabelWrapped as PropertyLabel };\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { mergeStyles } from '@bingads-webui-react/fabric-control';\r\nimport classNames from 'classnames';\r\nimport { withCustomRendering } from '../custom-component';\r\n\r\n\r\nconst dataStyles = mergeStyles({\r\n paddingLeft: 8,\r\n paddingTop: 10,\r\n paddingBottom: 10,\r\n overflow: 'hidden',\r\n width: 716,\r\n whiteSpace: 'nowrap',\r\n});\r\n\r\nconst PropertyData = ({ children }) =>\r\n (\r\n
\r\n {children}\r\n
\r\n );\r\n\r\nPropertyData.propTypes = {\r\n children: PropTypes.oneOfType([\r\n PropTypes.arrayOf(PropTypes.node),\r\n PropTypes.node,\r\n ]).isRequired,\r\n};\r\n\r\nconst PropertyDataWrapped = withCustomRendering(PropertyData);\r\n\r\nexport { PropertyDataWrapped as PropertyData };\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Stack } from '@bingads-webui-react/fabric-control';\r\nimport { PropertyLabel } from './property-label';\r\nimport { PropertyData } from './property-data';\r\n\r\nexport const PropertyRow = ({\r\n propertyLabel, propertyLabelDynamic, propertyData, propertyDataDynamic, children,\r\n}) => (\r\n
\r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n
\r\n);\r\n\r\nPropertyRow.propTypes = {\r\n propertyData: PropTypes.shape({}),\r\n propertyDataDynamic: PropTypes.shape({}),\r\n propertyLabel: PropTypes.shape({}).isRequired,\r\n propertyLabelDynamic: PropTypes.shape({}),\r\n children: PropTypes.oneOfType([\r\n PropTypes.arrayOf(PropTypes.node),\r\n PropTypes.node,\r\n ]),\r\n};\r\n\r\nPropertyRow.defaultProps = {\r\n propertyData: null,\r\n propertyDataDynamic: null,\r\n propertyLabelDynamic: null,\r\n children: null,\r\n};\r\n","import React from 'react';\r\nimport { mergeStyles } from '@bingads-webui-react/fabric-control';\r\n\r\nconst dividerStyles = mergeStyles({\r\n height: 1,\r\n background: '#EDEBE9',\r\n});\r\n\r\nexport const HorizontalDivider = () =>
;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { mergeStyles, Text as FluentText } from '@bingads-webui-react/fabric-control';\r\n\r\nconst style = mergeStyles({\r\n lineHeight: 19,\r\n});\r\n\r\nexport const Data = ({ data, ...rest }) => {data};\r\n\r\nData.propTypes = {\r\n data: PropTypes.oneOfType([\r\n PropTypes.number,\r\n PropTypes.string,\r\n ]).isRequired,\r\n};\r\n","import _ from 'underscore';\r\nimport {\r\n Text,\r\n Panel,\r\n MessageBar,\r\n CustomComponent,\r\n PropertyRow,\r\n HorizontalDivider,\r\n Data,\r\n} from './components';\r\n\r\nexport const componentTypes = {\r\n text: Text,\r\n panel: Panel,\r\n 'message-bar': MessageBar,\r\n 'property-row': PropertyRow,\r\n 'horizontal-divider': HorizontalDivider,\r\n 'custom-component': CustomComponent,\r\n data: Data,\r\n};\r\n\r\nexport const register = (label, Component) => {\r\n componentTypes[label] = Component;\r\n};\r\n\r\nexport const bulkRegister = (registrationMap) => {\r\n _.extend(componentTypes, registrationMap);\r\n};\r\n","import React from 'react';\r\nimport _ from 'underscore';\r\nimport { mergeStyles } from '@fluentui/react';\r\nimport classNames from 'classnames';\r\nimport { componentTypes, bulkRegister } from './component-types';\r\nimport { GeneratedUI } from './generated-ui';\r\n\r\nexport const generateComponents = (props) => {\r\n const { schema, customComponentTypes } = props;\r\n\r\n const selectComponentType = ({\r\n schemaComponent, key, commonSchemaStyles, numberOfComponents, separatorStyles,\r\n }) => {\r\n const field = schemaComponent[0];\r\n const params = schemaComponent[1];\r\n\r\n const Component = componentTypes[params.type];\r\n\r\n const separatorStylesForComponent = separatorStyles && key < numberOfComponents - 1 ? separatorStyles : {};\r\n\r\n const componentStyles = _.extend(separatorStylesForComponent, params.styles || commonSchemaStyles);\r\n const componentClassName = params.className || `${field}-${params.type}`;\r\n\r\n const { dynamicProps: getDirectlyDefinedDynamicProperties, components: componentsSchema } = params;\r\n\r\n const build = Component ? (propertiesSchema, dynamicProperties) => {\r\n const directlyDefinedComponentDynamicProperties = (dynamicProperties\r\n && getDirectlyDefinedDynamicProperties\r\n && getDirectlyDefinedDynamicProperties(dynamicProperties)) || {};\r\n const schemaBasedComponentDynamicProperties = (propertiesSchema && propertiesSchema[field]) || {};\r\n\r\n const { components: childComponentsDynamicProperties, ...rest } = schemaBasedComponentDynamicProperties;\r\n const componentDynamicProperties = (!_.isEmpty(directlyDefinedComponentDynamicProperties) && directlyDefinedComponentDynamicProperties) || rest;\r\n\r\n const dynamicallyHideComponent = componentDynamicProperties.isRendered === false;\r\n const componentStylesWithDynamics = mergeStyles(_.extend(componentStyles, componentDynamicProperties.styles, { display: dynamicallyHideComponent ? 'none' : 'block' }));\r\n\r\n return (\r\n
\r\n \r\n {componentsSchema && }\r\n \r\n
\r\n );\r\n } : null;\r\n\r\n return build ? { field, build } : null;\r\n };\r\n\r\n bulkRegister(customComponentTypes);\r\n\r\n const { styles, separatorStyles } = schema;\r\n\r\n const unrenderedComponents = _.keys(_.pick(schema, c => c.isRendered === false));\r\n const componentsToRenderSchema = _.omit(schema, 'styles', 'separatorStyles', ...unrenderedComponents);\r\n\r\n const schemaComponents = _.pairs(componentsToRenderSchema);\r\n\r\n const selectedComponentTypes = _.map(schemaComponents, (schemaComponent, key) =>\r\n selectComponentType({\r\n schemaComponent,\r\n key,\r\n numberOfComponents: schemaComponents.length,\r\n commonSchemaStyles: styles,\r\n separatorStyles,\r\n }));\r\n\r\n return _.without(selectedComponentTypes, null);\r\n};\r\n","import { useMemo } from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { generateComponents } from './generate-components';\r\n\r\nexport const GeneratedUI = ({\r\n schema, propertiesSchema, customComponentTypes, ...dynamicProperties\r\n}) => {\r\n const dynamicComponentBuilders = useMemo(() => generateComponents({ schema, customComponentTypes }), [schema, customComponentTypes]);\r\n\r\n const completedComponents = useMemo(\r\n () =>\r\n _.map(dynamicComponentBuilders, componentBuilder => componentBuilder.build(propertiesSchema, dynamicProperties)),\r\n [dynamicComponentBuilders, dynamicProperties, propertiesSchema]\r\n );\r\n\r\n return completedComponents;\r\n};\r\n\r\nGeneratedUI.propTypes = {\r\n schema: PropTypes.shape({}).isRequired,\r\n};\r\n","import _ from 'underscore';\r\n\r\nexport const buildDefaultTextProperty = (props) => {\r\n const {\r\n label,\r\n text,\r\n styles,\r\n isRendered,\r\n dynamicProps,\r\n } = props;\r\n\r\n const baselineProperty = {\r\n type: 'property-row',\r\n isRendered,\r\n propertyLabel: {\r\n label,\r\n },\r\n components: {\r\n text: {\r\n type: 'text',\r\n text,\r\n dynamicProps,\r\n },\r\n },\r\n };\r\n\r\n return _.extend(baselineProperty, { styles });\r\n};\r\n","import _ from 'underscore';\r\n\r\nexport const buildDefaultDataProperty = (props) => {\r\n const {\r\n label,\r\n data,\r\n styles,\r\n dynamicProps,\r\n } = props;\r\n\r\n const baselineProperty = {\r\n type: 'property-row',\r\n propertyLabel: {\r\n label,\r\n },\r\n components: {\r\n data: {\r\n type: 'data',\r\n data,\r\n dynamicProps,\r\n },\r\n },\r\n };\r\n\r\n return _.extend(baselineProperty, { styles });\r\n};\r\n","import React, { useMemo } from 'react';\r\n\r\nimport { isPlayPausePreviewImageEnabled } from '@bingads-webui-campaign-react/play-pause-buttons';\r\nimport {\r\n AdPreviewCarouselLayout,\r\n AdPreviewCarouselLayoutEx,\r\n} from '@bingads-webui-campaign-react/unified-ad-preview-library-core';\r\n\r\nconst withAutoRotate = (CarouselLayout) => {\r\n const Wrapper = ({ enableAutoRotate, permissions, ...rest }) => {\r\n const autoRotate = useMemo(() => enableAutoRotate && isPlayPausePreviewImageEnabled(permissions), [enableAutoRotate, permissions]);\r\n\r\n return (\r\n \r\n );\r\n };\r\n return Wrapper;\r\n};\r\n\r\nexport const AdPreviewCarouselLayoutWrapper = withAutoRotate(AdPreviewCarouselLayout);\r\nexport const AdPreviewCarouselLayoutWrapperEx = withAutoRotate(AdPreviewCarouselLayoutEx);\r\n","import { withTheme } from 'react-jss';\r\n\r\nexport const withCMUITheme = withTheme;\r\n","import { UAPPlacementType as EPT } from '@bingads-webui-campaign-react/unified-ad-preview-library-core';\r\n//\r\n// this is the type returned from MT APIs, will map it to a placement type\r\nexport const UAPMediaPlacementType = {\r\n MultiMediaAd400X100: 'MultiMediaAd400X100',\r\n MultiMediaAd191X100: 'MultiMediaAd191X100',\r\n MultiMediaAd100X100: 'MultiMediaAd100X100',\r\n MultiMediaAd50X100: 'MultiMediaAd50X100',\r\n MSAN191X100: 'MSAN191X100',\r\n MSAN178X100: 'MSAN178X100',\r\n MSAN172X100: 'MSAN172X100',\r\n MSAN169X100: 'MSAN169X100',\r\n MSAN155X100: 'MSAN155X100',\r\n MSAN150X100: 'MSAN150X100',\r\n MSAN133X100: 'MSAN133X100',\r\n MSAN100X100: 'MSAN100X100',\r\n MSAN93X100: 'MSAN93X100',\r\n MSAN201X100: 'MSAN201X100',\r\n MSAN200X100: 'MSAN200X100',\r\n MSAN153X100: 'MSAN153X100',\r\n MSAN124X100: 'MSAN124X100',\r\n MSAN120X100: 'MSAN120X100',\r\n ImageExtension191X100: 'ImageExtension191X100',\r\n ImageExtension178X100: 'ImageExtension178X100',\r\n ImageExtension172X100: 'ImageExtension172X100',\r\n ImageExtension169X100: 'ImageExtension169X100',\r\n ImageExtension155X100: 'ImageExtension155X100',\r\n ImageExtension150X100: 'ImageExtension150X100',\r\n ImageExtension133X100: 'ImageExtension133X100',\r\n ImageExtension100X100: 'ImageExtension100X100',\r\n ImageExtension93X100: 'ImageExtension93X100',\r\n AssetGroup191X100: 'AssetGroup191X100',\r\n AssetGroup100X100: 'AssetGroup100X100',\r\n AssetGroup150X100: 'AssetGroup150X100',\r\n AssetGroup133X100: 'AssetGroup133X100',\r\n AssetGroup178X100: 'AssetGroup178X100',\r\n AssetGroup100X200: 'AssetGroup100X200',\r\n AssetGroup400X100: 'AssetGroup400X100',\r\n};\r\n\r\n// todo: not all values are mapped\r\n// each multi-media placement type maps to a list of placement types\r\nexport const MediaPlacementTypeToPlacementTypeMap = {\r\n [UAPMediaPlacementType.MultiMediaAd400X100]: [EPT.MMA_WideImage_4x1],\r\n [UAPMediaPlacementType.MultiMediaAd191X100]: [EPT.MMA_LandscapeImage_191x100],\r\n [UAPMediaPlacementType.MultiMediaAd100X100]: [EPT.MMA_SquareImage_1x1],\r\n [UAPMediaPlacementType.MultiMediaAd50X100]: [EPT.MMA_VerticalImage_1x2],\r\n\r\n [UAPMediaPlacementType.MSAN191X100]: [EPT.Audience_Network_WideImage_191x100, EPT.MsanV2_MSAN_River_191x100],\r\n [UAPMediaPlacementType.MSAN178X100]: [EPT.Microsoft_Edge_Single_Carousel_178x100],\r\n [UAPMediaPlacementType.MSAN172X100]: undefined,\r\n [UAPMediaPlacementType.MSAN169X100]: [EPT.MsanV2_MSN_Carousel_169x100, EPT.PMax_MMAV2_MSN_Single_Carousel_169x100],\r\n [UAPMediaPlacementType.MSAN155X100]: undefined,\r\n [UAPMediaPlacementType.MSAN150X100]: [EPT.MSN_InArticle_Ad_150x100],\r\n [UAPMediaPlacementType.MSAN133X100]: [EPT.MSN_Small_Headline_133x100],\r\n [UAPMediaPlacementType.MSAN100X100]: [EPT.Audience_Network_SquareImage_1x1, EPT.MsanV2_Microsoft_Edge_Mobile_1x1],\r\n [UAPMediaPlacementType.MSAN93X100]: undefined,\r\n [UAPMediaPlacementType.MSAN201X100]: [EPT.MsanV2_Microsoft_Edge_Carouse_l201x100, EPT.PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100],\r\n [UAPMediaPlacementType.MSAN200X100]: [EPT.MsanV2_MSAN_Banner_2x1],\r\n [UAPMediaPlacementType.MSAN153X100]: [EPT.MsanV2_MSN_Partner_Stripe_153x100, EPT.PMax_MMAV2_MSN_Partner_Stripe_153x100],\r\n [UAPMediaPlacementType.MSAN124X100]: [EPT.MsanV2_MSN_Restoday_124x100, EPT.PMax_MMAV2_MSN_Restoday_124x100],\r\n [UAPMediaPlacementType.MSAN120X100]: [EPT.MsanV2_MSAN_Rectangle_120x100],\r\n\r\n [UAPMediaPlacementType.ImageExtension191X100]: [EPT.ImgExt_Audience_Network_WideImage_191x100],\r\n [UAPMediaPlacementType.ImageExtension178X100]: [\r\n EPT.ImgExt_Microsoft_Edge_Single_Carousel_178x100,\r\n EPT.ImgExt_Bing_Desktop_SingleImage_Extension_178x100,\r\n ],\r\n [UAPMediaPlacementType.ImageExtension172X100]: [EPT.ImgExt_Microsoft_Edge_Medium_Headline_172x100],\r\n [UAPMediaPlacementType.ImageExtension169X100]: [EPT.ImgExt_MSN_Single_Carousel_169x100],\r\n [UAPMediaPlacementType.ImageExtension155X100]: [EPT.ImgExt_MSN_Medium_Headline_155x100],\r\n [UAPMediaPlacementType.ImageExtension150X100]: [EPT.ImgExt_MSN_InArticle_Ad_150x100],\r\n [UAPMediaPlacementType.ImageExtension133X100]: [\r\n EPT.ImgExt_MSN_Small_Headline_133x100,\r\n EPT.ImgExt_Bing_Desktop_MultiImage_Extension_133x100,\r\n EPT.ImgExt_Bing_Mobile_MultiImage_Extension_133x100,\r\n ],\r\n [UAPMediaPlacementType.ImageExtension100X100]: [EPT.ImgExt_Audience_Network_SquareImage_1x1],\r\n [UAPMediaPlacementType.ImageExtension93X100]: [EPT.ImgExt_MSN_Double_Carousel_93x100],\r\n\r\n [UAPMediaPlacementType.AssetGroup191X100]: [EPT.PMax_Audience_Network_WideImage_191x100, EPT.PMax_MMA_LandscapeImage_191x100],\r\n [UAPMediaPlacementType.AssetGroup100X100]: [EPT.PMax_Audience_Network_SquareImage_1x1],\r\n [UAPMediaPlacementType.AssetGroup150X100]: [EPT.PMax_MSN_InArticle_Ad_150x100],\r\n [UAPMediaPlacementType.AssetGroup133X100]: [EPT.PMax_MSN_Small_Headline_133x100],\r\n [UAPMediaPlacementType.AssetGroup178X100]: [EPT.PMax_Microsoft_Edge_Single_Carousel_178x100],\r\n [UAPMediaPlacementType.AssetGroup100X200]: [EPT.PMax_MMA_VerticalImage_1x2],\r\n [UAPMediaPlacementType.AssetGroup400X100]: [EPT.PMax_MMA_WideImage_4x1],\r\n};\r\n\r\n// multiple placement types may map to the same media placement type\r\nexport const PlacementType2MediaPlacementTypeMap = {\r\n // MMA\r\n [EPT.MMA_WideImage_4x1]: UAPMediaPlacementType.MultiMediaAd400X100,\r\n [EPT.MMA_LandscapeImage_191x100]: UAPMediaPlacementType.MultiMediaAd191X100,\r\n [EPT.MMA_SquareImage_1x1]: UAPMediaPlacementType.MultiMediaAd100X100,\r\n [EPT.MMA_VerticalImage_1x2]: UAPMediaPlacementType.MultiMediaAd50X100,\r\n\r\n // MSAN\r\n [EPT.Audience_Network_WideImage_191x100]: UAPMediaPlacementType.MSAN191X100,\r\n [EPT.Microsoft_Edge_Single_Carousel_178x100]: UAPMediaPlacementType.MSAN178X100,\r\n [EPT.MSN_InArticle_Ad_150x100]: UAPMediaPlacementType.MSAN150X100,\r\n [EPT.MSN_Small_Headline_133x100]: UAPMediaPlacementType.MSAN133X100,\r\n [EPT.Audience_Network_SquareImage_1x1]: UAPMediaPlacementType.MSAN100X100,\r\n\r\n // MSAN V2\r\n [EPT.MsanV2_Microsoft_Edge_Carouse_l201x100]: UAPMediaPlacementType.MSAN201X100,\r\n [EPT.MsanV2_MSAN_Banner_2x1]: UAPMediaPlacementType.MSAN200X100,\r\n [EPT.MsanV2_MSAN_River_191x100]: UAPMediaPlacementType.MSAN191X100,\r\n [EPT.MsanV2_MSN_Carousel_169x100]: UAPMediaPlacementType.MSAN169X100,\r\n [EPT.MsanV2_MSN_Partner_Stripe_153x100]: UAPMediaPlacementType.MSAN153X100,\r\n [EPT.MsanV2_MSN_Restoday_124x100]: UAPMediaPlacementType.MSAN124X100,\r\n [EPT.MsanV2_MSAN_Rectangle_120x100]: UAPMediaPlacementType.MSAN120X100,\r\n [EPT.MsanV2_Microsoft_Edge_Mobile_1x1]: UAPMediaPlacementType.MSAN100X100,\r\n\r\n // pmax\r\n [EPT.PMax_Audience_Network_WideImage_191x100]: UAPMediaPlacementType.AssetGroup191X100,\r\n [EPT.PMax_Audience_Network_SquareImage_1x1]: UAPMediaPlacementType.AssetGroup100X100,\r\n [EPT.PMax_Microsoft_Edge_Single_Carousel_178x100]: UAPMediaPlacementType.AssetGroup178X100,\r\n [EPT.PMax_MSN_InArticle_Ad_150x100]: UAPMediaPlacementType.AssetGroup150X100,\r\n [EPT.PMax_MSN_Small_Headline_133x100]: UAPMediaPlacementType.AssetGroup133X100,\r\n [EPT.PMax_MMA_WideImage_4x1]: UAPMediaPlacementType.AssetGroup400X100,\r\n [EPT.PMax_MMA_LandscapeImage_191x100]: UAPMediaPlacementType.AssetGroup191X100,\r\n [EPT.PMax_MMA_VerticalImage_1x2]: UAPMediaPlacementType.AssetGroup100X200,\r\n // pmax v2\r\n [EPT.PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100]: UAPMediaPlacementType.MSAN201X100,\r\n [EPT.PMax_MMAV2_MSN_Single_Carousel_169x100]: UAPMediaPlacementType.MSAN169X100,\r\n [EPT.PMax_MMAV2_MSN_Restoday_124x100]: UAPMediaPlacementType.MSAN124X100,\r\n [EPT.PMax_MMAV2_MSN_Partner_Stripe_153x100]: UAPMediaPlacementType.MSAN153X100,\r\n\r\n //\r\n // Image Extension\r\n [EPT.ImgExt_Audience_Network_WideImage_191x100]: UAPMediaPlacementType.ImageExtension191X100,\r\n\r\n // ImageExtension178X100\r\n [EPT.ImgExt_Microsoft_Edge_Single_Carousel_178x100]: UAPMediaPlacementType.ImageExtension178X100,\r\n [EPT.ImgExt_Bing_Desktop_SingleImage_Extension_178x100]: UAPMediaPlacementType.ImageExtension178X100,\r\n\r\n [EPT.ImgExt_Microsoft_Edge_Medium_Headline_172x100]: UAPMediaPlacementType.ImageExtension172X100,\r\n [EPT.ImgExt_MSN_Single_Carousel_169x100]: UAPMediaPlacementType.ImageExtension169X100,\r\n [EPT.ImgExt_MSN_Medium_Headline_155x100]: UAPMediaPlacementType.ImageExtension155X100,\r\n [EPT.ImgExt_MSN_InArticle_Ad_150x100]: UAPMediaPlacementType.ImageExtension150X100,\r\n\r\n // ImageExtension133X100\r\n [EPT.ImgExt_MSN_Small_Headline_133x100]: UAPMediaPlacementType.ImageExtension133X100,\r\n [EPT.ImgExt_Bing_Desktop_MultiImage_Extension_133x100]: UAPMediaPlacementType.ImageExtension133X100,\r\n [EPT.ImgExt_Bing_Mobile_MultiImage_Extension_133x100]: UAPMediaPlacementType.ImageExtension133X100,\r\n\r\n [EPT.ImgExt_Audience_Network_SquareImage_1x1]: UAPMediaPlacementType.ImageExtension100X100,\r\n [EPT.ImgExt_MSN_Double_Carousel_93x100]: UAPMediaPlacementType.ImageExtension93X100,\r\n};\r\n","import _ from 'underscore';\r\nimport { useCallback, useMemo } from 'react';\r\n\r\nimport {\r\n useAdPreviewModel as useAdPreviewModelCore,\r\n} from '@bingads-webui-campaign-react/unified-ad-preview-library-core';\r\n\r\nimport {\r\n MediaPlacementTypeToPlacementTypeMap,\r\n PlacementType2MediaPlacementTypeMap,\r\n} from './media-placement-type-enum';\r\n\r\n\r\n// // this is the same shape as MT response\r\n// type MTPlacementCroppingParam = {\r\n// MediaPlacementType: EMediaPlacementType,\r\n// CropSetting: TCropRect,\r\n// }\r\n\r\n// // this is the same shape as MT response\r\n// type MTImageParam = {\r\n// id: number | undefined | null,\r\n// url: string,\r\n// width: number,\r\n// height: number,\r\n// originalUrl: string,\r\n// originalWidth: number,\r\n// originalHeight: number,\r\n// cropSettingOnOriginal: TCropRect | undefined | null,\r\n// placementSettings: Array | undefined | null,\r\n// }\r\n\r\n// const transformCroppingParam = (param: MTPlacementCroppingParam): Array => {\r\nconst transformCroppingParam = (param) => {\r\n const { MediaPlacementType, CropSetting } = param || {};\r\n const placementTypes = MediaPlacementTypeToPlacementTypeMap[MediaPlacementType];\r\n if (!_.isEmpty(placementTypes)) {\r\n return _.map(placementTypes, placementType => ({ placementType, cropping: CropSetting }));\r\n }\r\n return [];\r\n};\r\n\r\n// const transformImageParam = (image: MTImageParam): UAPPreviewImageParam => {\r\nconst transformImageParam = (image) => {\r\n const {\r\n id, url, width, height, originalUrl, originalWidth, originalHeight, cropSettingOnOriginal, placementSettings, roiInfo, expandedMeta,\r\n } = image || {};\r\n const imageParam = {\r\n id,\r\n url,\r\n width,\r\n height,\r\n originalUrl,\r\n originalWidth,\r\n originalHeight,\r\n imageCropping: cropSettingOnOriginal,\r\n placementsCropping: _.flatten(_.map(placementSettings, transformCroppingParam)),\r\n roiInfo,\r\n expandedMeta,\r\n };\r\n return imageParam;\r\n};\r\n\r\nconst transformImage = (image) => {\r\n if (!image || _.isString(image)) {\r\n return image;\r\n }\r\n return transformImageParam(image);\r\n};\r\n\r\n\r\n// type TPlacementConfig = Array<{\r\n// image: string | MTImageParam,\r\n// placementSets: Array<{\r\n// placementSetName: string,\r\n// placementTypes: Array,\r\n// // (params: { imageMeta: TImageMeta, imageCropping: TCropRect, placementMetaList: Array }) => Array;\r\n// getDefaultPlacementsCropping?: Function,\r\n// }>,\r\n// }>;\r\n\r\n// a simple wrapper to adapt the MT type to the core model\r\n// export const useAdPreviewModel = (placementConfig: TPlacementConfig, onError) => {\r\nexport const useAdPreviewModel = (placementConfig, onError) => {\r\n //\r\n const transformedConfig = useMemo(() => _.map(placementConfig, ({ image, placementSets }) => ({\r\n image: transformImage(image),\r\n placementSets,\r\n })), [placementConfig]);\r\n\r\n const {\r\n setPlacementConfig: setPlacementConfigCore,\r\n changedCropSettings: changedCropSettingsCore,\r\n ...rest\r\n } = useAdPreviewModelCore(transformedConfig, onError);\r\n\r\n // const setPlacementConfig = useCallback((config: TPlacementConfig) => {\r\n const setPlacementConfig = useCallback((config) => {\r\n const newConfig = _.map(config, ({ image, placementSets }) => ({\r\n image: transformImage(image),\r\n placementSets,\r\n }));\r\n return setPlacementConfigCore(newConfig);\r\n }, [setPlacementConfigCore]);\r\n\r\n const changedCropSettings = useMemo(() => {\r\n const ret = _.map(changedCropSettingsCore, ({ image, placements }) => {\r\n const imageCropping = image.hasCroppingChanged ? image.imageCropping : null;\r\n const placementSettings = _.chain(placements)\r\n .map(({ placementMeta, hasCroppingChanged, placementCropping }) => {\r\n if (hasCroppingChanged) {\r\n return { MediaPlacementType: PlacementType2MediaPlacementTypeMap[placementMeta.placementType], CropSetting: placementCropping };\r\n }\r\n return null;\r\n })\r\n .compact()\r\n .reduce((acc, placementCropping) => {\r\n // remove duplicated placement settings\r\n const { MediaPlacementType } = placementCropping;\r\n if (!acc[MediaPlacementType]) {\r\n acc[MediaPlacementType] = placementCropping;\r\n }\r\n return acc;\r\n }, {})\r\n .value(); // get chain result\r\n\r\n return {\r\n cropSettings: imageCropping,\r\n placementSettings: _.compact(_.values(placementSettings)) || [],\r\n };\r\n });\r\n return ret;\r\n }, [changedCropSettingsCore]);\r\n\r\n return { setPlacementConfig, changedCropSettings, ...rest };\r\n};\r\n","// derived from private\\component-react\\packages\\image-experience-utils\\src\\get-smart-cropped-image.js\r\n// and remvoed unrelated code/logic, only keep smart cropping handling here\r\n\r\nimport _ from 'underscore';\r\nimport { getCentralCroppedPlacements } from '@bingads-webui-campaign-react/unified-ad-preview-library-core';\r\nimport { validateSmartCropSettings } from '@bingads-webui-campaign/image-experience-utils';\r\n\r\nexport const getSmartCropSettingsFactory = (mediaRepository, smartCropActivity) => {\r\n //\r\n // todo: defaultOption & isIncluded?\r\n const getSmartCropSettings = ({ imageMeta, imageCropping, placementMetaList }) => {\r\n // if the image is cropped itself, use central cropping for placements intead of smart cropping\r\n if (imageCropping) {\r\n return getCentralCroppedPlacements({ imageMeta, imageCropping, placementMetaList });\r\n }\r\n\r\n const ratioAndMinSizeList = _.map(placementMetaList, (placementMeta) => {\r\n const { aspectRatio, minSize } = placementMeta;\r\n return { aspectRatio, minSize };\r\n });\r\n\r\n return mediaRepository.generateSmartCrop({\r\n imageUrl: imageMeta.originalUrl,\r\n placementSettings: ratioAndMinSizeList, // [{aspectRatio, minSize}]\r\n }).then((assets) => {\r\n const ret = _.map(placementMetaList, (placementMeta) => {\r\n const asset = _.find(assets, ({ AspectRatio }) => AspectRatio === placementMeta.aspectRatioStr);\r\n if (asset) {\r\n const smartCropping = {\r\n SourceWidth: asset.Width,\r\n SourceHeight: asset.Height,\r\n SourceX: asset.X,\r\n SourceY: asset.Y,\r\n };\r\n const isValidSmartCropping = validateSmartCropSettings({\r\n originalImage: { width: imageMeta.originalWidth, height: imageMeta.originalHeight, Src: imageMeta.originalUrl },\r\n cropSettings: smartCropping,\r\n minWidth: placementMeta.minSize[0],\r\n minHeight: placementMeta.minSize[1],\r\n aspectRatio: placementMeta.aspectRatio,\r\n smartCropActivity,\r\n });\r\n return { placementMeta, smartCropping: isValidSmartCropping ? smartCropping : null };\r\n }\r\n return { placementMeta, smartCropping: null };\r\n });\r\n return ret; // [{placementMeta, smartCropping, isValidCropping}]\r\n }).catch(() => {\r\n // swallow the error\r\n }).then((smartPlacementAndCroppingList) => {\r\n // fallback to central cropped placements if no smart cropping available for some placements\r\n const placementsWithoutSmartCropping = _.filter(smartPlacementAndCroppingList, ({ smartCropping }) => !smartCropping);\r\n let croppingList = null;\r\n if (!_.isEmpty(placementsWithoutSmartCropping)) {\r\n const centralCroppingList = getCentralCroppedPlacements({ imageMeta, imageCropping, placementMetaList });\r\n // merge central cropping with smart cropping, smart cropping has high priority\r\n croppingList = _.map(smartPlacementAndCroppingList, ({ smartCropping }, idx) => (smartCropping ? { placementCropping: smartCropping } : centralCroppingList[idx]));\r\n } else {\r\n croppingList = _.map(smartPlacementAndCroppingList, ({ smartCropping }) => ({ placementCropping: smartCropping }));\r\n }\r\n return croppingList;\r\n });\r\n };\r\n\r\n return getSmartCropSettings;\r\n};\r\n","import _ from 'underscore';\r\nimport { useCallback, useMemo, useContext } from 'react';\r\nimport {\r\n useAdPreviewModel as useAdPreviewModelCore,\r\n UAPLPlacementMetaList,\r\n UAPLPlacementMetaListV2,\r\n UAPPlacementType as EPlacementType,\r\n getExpandedImageInfo,\r\n} from '@bingads-webui-campaign-react/unified-ad-preview-library-core';\r\nimport { UAPCroppingType } from '@bingads-webui-campaign-react/unified-ad-preview-library-util';\r\nimport { PermissionsContext } from '@bingads-webui-react/hoc-with-permissions';\r\n\r\nexport const PlacementType2AssociationTypeMap = {\r\n [EPlacementType.MMA_WideImage_4x1]: 'ImageMedia4X1',\r\n [EPlacementType.MMA_LandscapeImage_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.MMA_SquareImage_1x1]: 'SquareImageMedia',\r\n [EPlacementType.MMA_VerticalImage_1x2]: 'ImageMedia1X2',\r\n\r\n // audience ad (mma in msan)\r\n [EPlacementType.Audience_Network_WideImage_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.Audience_Network_SquareImage_1x1]: 'SquareImageMedia',\r\n [EPlacementType.Microsoft_Edge_Single_Carousel_178x100]: 'ImageMedia178X100',\r\n [EPlacementType.MSN_InArticle_Ad_150x100]: 'ImageMedia15X10',\r\n [EPlacementType.MSN_Small_Headline_133x100]: 'ImageMedia133X100',\r\n\r\n // audience ad (mma in msan) V2\r\n [EPlacementType.MsanV2_Microsoft_Edge_Carouse_l201x100]: 'ImageMedia201X100',\r\n [EPlacementType.MsanV2_Microsoft_Edge_Mobile_1x1]: 'SquareImageMedia',\r\n [EPlacementType.MsanV2_MSAN_Banner_2x1]: 'ImageMedia200X100',\r\n [EPlacementType.MsanV2_MSAN_River_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.MsanV2_MSAN_Rectangle_120x100]: 'ImageMedia120X100',\r\n [EPlacementType.MsanV2_MSN_Carousel_169x100]: 'ImageMedia169X100',\r\n [EPlacementType.MsanV2_MSN_Partner_Stripe_153x100]: 'ImageMedia153X100',\r\n [EPlacementType.MsanV2_MSN_Restoday_124x100]: 'ImageMedia124X100',\r\n\r\n // boost\r\n [EPlacementType.Boost_Hero_Image_Carousel_200x100]: 'ImageMedia200X100',\r\n [EPlacementType.Boost_Hero_Image_Carousel_122x100]: 'ImageMedia122X100',\r\n [EPlacementType.Boost_Hero_Image_Carousel_159x100]: 'ImageMedia159X100',\r\n [EPlacementType.Boost_Hero_Image_Carousel_180x100]: 'ImageMedia180X100',\r\n [EPlacementType.Boost_Hero_Image_Carousel_233x100]: 'ImageMedia233X100',\r\n [EPlacementType.Boost_Hero_Image_Carousel_320x100]: 'ImageMedia320X100',\r\n [EPlacementType.Boost_Hero_Image_Carousel_57x100]: 'ImageMedia57X100',\r\n [EPlacementType.Boost_Windows_Spotlight_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.Boost_Discover_Card_1x1]: 'SquareImageMedia',\r\n [EPlacementType.Boost_Prong1_Prong2_Feed_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.Boost_Coachmark_175x100]: 'ImageMedia178X100',\r\n\r\n // image extension\r\n [EPlacementType.ImgExt_Audience_Network_WideImage_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.ImgExt_Audience_Network_SquareImage_1x1]: 'SquareImageMedia',\r\n [EPlacementType.ImgExt_Microsoft_Edge_Single_Carousel_178x100]: 'ImageMedia178X100',\r\n [EPlacementType.ImgExt_Bing_Desktop_SingleImage_Extension_178x100]: 'ImageMedia178X100',\r\n [EPlacementType.ImgExt_Microsoft_Edge_Medium_Headline_172x100]: 'ImageMedia172X100',\r\n [EPlacementType.ImgExt_MSN_Single_Carousel_169x100]: 'ImageMedia169X100',\r\n [EPlacementType.ImgExt_MSN_Medium_Headline_155x100]: 'ImageMedia155X100',\r\n [EPlacementType.ImgExt_MSN_InArticle_Ad_150x100]: 'ImageMedia15X10',\r\n [EPlacementType.ImgExt_MSN_Small_Headline_133x100]: 'ImageMedia133X100',\r\n [EPlacementType.ImgExt_Bing_Desktop_MultiImage_Extension_133x100]: 'ImageMedia133X100',\r\n [EPlacementType.ImgExt_Bing_Mobile_MultiImage_Extension_133x100]: 'ImageMedia133X100',\r\n [EPlacementType.ImgExt_MSN_Double_Carousel_93x100]: 'ImageMedia93X100',\r\n [EPlacementType.ImgExt_MMAV2_MSN_River_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.ImgExt_MMAV2_MSN_Single_Carousel_169x100]: 'ImageMedia169X100',\r\n [EPlacementType.ImgExt_MMAV2_MSN_Microsoft_Edge_Mobile_1x1]: 'SquareImageMedia',\r\n\r\n [EPlacementType.Responsive_MMA_WideImage_4x1]: 'ImageMedia4X1',\r\n [EPlacementType.Responsive_MMA_LandscapeImage_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.Responsive_MMA_SquareImage_1x1]: 'SquareImageMedia',\r\n [EPlacementType.Responsive_MMA_VerticalImage_1x2]: 'ImageMedia1X2',\r\n\r\n // audience ad (mma in msan)\r\n [EPlacementType.Responsive_Audience_Network_WideImage_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.Responsive_Audience_Network_SquareImage_1x1]: 'SquareImageMedia',\r\n [EPlacementType.Responsive_Microsoft_Edge_Single_Carousel_178x100]: 'ImageMedia178X100',\r\n [EPlacementType.Responsive_MSN_InArticle_Ad_150x100]: 'ImageMedia15X10',\r\n [EPlacementType.Responsive_MSN_Small_Headline_133x100]: 'ImageMedia133X100',\r\n\r\n [EPlacementType.Responsive_Boost_Windows_Spotlight_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.Responsive_Boost_Discover_Card_1x1]: 'SquareImageMedia',\r\n [EPlacementType.Responsive_Boost_Prong1_Prong2_Feed_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.Responsive_Boost_Coachmark_175x100]: 'ImageMedia178X100',\r\n\r\n // audience ad (mma in msan) V2\r\n [EPlacementType.Responsive_MsanV2_Microsoft_Edge_Carouse_l201x100]: 'ImageMedia201X100',\r\n [EPlacementType.Responsive_MsanV2_Microsoft_Edge_Mobile_1x1]: 'SquareImageMedia',\r\n [EPlacementType.Responsive_MsanV2_MSAN_Banner_2x1]: 'ImageMedia200X100',\r\n [EPlacementType.Responsive_MsanV2_MSAN_River_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.Responsive_MsanV2_MSAN_Rectangle_120x100]: 'ImageMedia120X100',\r\n [EPlacementType.Responsive_MsanV2_MSN_Carousel_169x100]: 'ImageMedia169X100',\r\n [EPlacementType.Responsive_MsanV2_MSN_Partner_Stripe_153x100]: 'ImageMedia153X100',\r\n [EPlacementType.Responsive_MsanV2_MSN_Restoday_124x100]: 'ImageMedia124X100',\r\n\r\n // LinkedIn\r\n [EPlacementType.LinkedIn_Single_Image_Desktop_Landscape]: 'LandscapeImageMedia',\r\n [EPlacementType.LinkedIn_Single_Image_Mobile_Landscape]: 'LandscapeImageMedia',\r\n [EPlacementType.LinkedIn_Single_Image_Medium_Rectangle_Landscape]: 'LandscapeImageMedia',\r\n [EPlacementType.LinkedIn_Single_Image_Mobile_Interstitial_Landscape]: 'LandscapeImageMedia',\r\n [EPlacementType.LinkedIn_Single_Image_Native_Landscape]: 'LandscapeImageMedia',\r\n\r\n [EPlacementType.LinkedIn_Single_Image_Desktop_Square]: 'SquareImageMedia',\r\n [EPlacementType.LinkedIn_Single_Image_Mobile_Square]: 'SquareImageMedia',\r\n [EPlacementType.LinkedIn_Single_Image_Medium_Rectangle_Square]: 'SquareImageMedia',\r\n [EPlacementType.LinkedIn_Single_Image_Mobile_Interstitial_Square]: 'SquareImageMedia',\r\n [EPlacementType.LinkedIn_Single_Image_Native_Square]: 'SquareImageMedia',\r\n\r\n [EPlacementType.LinkedIn_Single_Image_Mobile_Vertical]: 'PortraitImageMedia',\r\n [EPlacementType.LinkedIn_Single_Image_Medium_Rectangle_Vertical]: 'PortraitImageMedia',\r\n [EPlacementType.LinkedIn_Single_Image_Mobile_Interstitial_Vertical]: 'PortraitImageMedia',\r\n [EPlacementType.LinkedIn_Single_Image_Native_Vertical]: 'PortraitImageMedia',\r\n\r\n // Pmax\r\n [EPlacementType.PMax_MMA_WideImage_4x1]: 'ImageMedia4X1',\r\n [EPlacementType.PMax_MMA_LandscapeImage_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.PMax_MMA_VerticalImage_1x2]: 'ImageMedia1X2',\r\n [EPlacementType.PMax_Audience_Network_WideImage_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.PMax_Audience_Network_SquareImage_1x1]: 'SquareImageMedia',\r\n [EPlacementType.PMax_Microsoft_Edge_Single_Carousel_178x100]: 'ImageMedia178X100',\r\n [EPlacementType.PMax_MSN_InArticle_Ad_150x100]: 'ImageMedia15X10',\r\n [EPlacementType.PMax_MSN_Small_Headline_133x100]: 'ImageMedia133X100',\r\n // Pmax v2\r\n [EPlacementType.PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100]: 'ImageMedia201X100',\r\n [EPlacementType.PMax_MMAV2_MSN_Single_Carousel_169x100]: 'ImageMedia169X100',\r\n [EPlacementType.PMax_MMAV2_MSN_Restoday_124x100]: 'ImageMedia124X100',\r\n [EPlacementType.PMax_MMAV2_MSN_Partner_Stripe_153x100]: 'ImageMedia153X100',\r\n [EPlacementType.PMax_MMAV2_MSN_River_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.PMax_MMAV2_Microsoft_Edge_Mobile_1x1]: 'SquareImageMedia',\r\n\r\n // Pmax responsive\r\n [EPlacementType.Responsive_PMax_MMA_WideImage_4x1]: 'ImageMedia4X1',\r\n [EPlacementType.Responsive_PMax_MMA_LandscapeImage_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.Responsive_PMax_MMA_VerticalImage_1x2]: 'ImageMedia1X2',\r\n [EPlacementType.Responsive_PMax_Audience_Network_WideImage_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.Responsive_PMax_Audience_Network_SquareImage_1x1]: 'SquareImageMedia',\r\n [EPlacementType.Responsive_PMax_Microsoft_Edge_Single_Carousel_178x100]: 'ImageMedia178X100',\r\n [EPlacementType.Responsive_PMax_MSN_InArticle_Ad_150x100]: 'ImageMedia15X10',\r\n [EPlacementType.Responsive_PMax_MSN_Small_Headline_133x100]: 'ImageMedia133X100',\r\n\r\n // unified app preview\r\n [EPlacementType.Unified_App_Ads_Video_Horizontal]: 'Video16x9',\r\n [EPlacementType.Unified_App_Ads_Bing_Search]: 'ImageMedia133X100',\r\n [EPlacementType.Unified_App_Ads_Causal_Games_Dimensions]: 'SquareImageMedia',\r\n [EPlacementType.Unified_App_Ads_MSN_Display]: 'LandscapeImageMedia',\r\n\r\n // Pmax responsive v2\r\n [EPlacementType.Responsive_PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100]: 'ImageMedia201X100',\r\n [EPlacementType.Responsive_PMax_MMAV2_MSN_Single_Carousel_169x100]: 'ImageMedia169X100',\r\n [EPlacementType.Responsive_PMax_MMAV2_MSN_Restoday_124x100]: 'ImageMedia124X100',\r\n [EPlacementType.Responsive_PMax_MMAV2_MSN_Partner_Stripe_153x100]: 'ImageMedia153X100',\r\n [EPlacementType.Responsive_PMax_MMAV2_MSN_River_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.Responsive_PMax_MMAV2_Microsoft_Edge_Mobile_1x1]: 'SquareImageMedia',\r\n};\r\n\r\nconst getExpandedImagePlacementInfo = (placement, hasSmartEffect) => {\r\n const {\r\n imageExpansionType, cropSettings, originalImageCropSettings,\r\n } = placement || {};\r\n const { CroppingType } = cropSettings || {};\r\n\r\n return getExpandedImageInfo({\r\n imageExpansionType,\r\n expandedImageUrl: placement.getExpandedImageUrl(),\r\n expandedImageWidth: placement.expandedImageWidth,\r\n expandedImageHeight: placement.expandedImageHeight,\r\n expandedImageCropSettings: placement.expandedImageCropSettings,\r\n originalImageCropSettings,\r\n extraCheck: () => hasSmartEffect || CroppingType === UAPCroppingType.ManualCrop,\r\n }) || {};\r\n};\r\n\r\nconst convertEffectSettings = (effectSettings) => {\r\n if (!effectSettings) {\r\n return null;\r\n }\r\n const { effectKey, effectOptions, effectSrc } = effectSettings || {};\r\n const { backgroundBlur, backgroundColor, designerEffect } = effectOptions || {};\r\n const imageSmartEffect = effectSrc ? {\r\n effectType: effectKey,\r\n effectValue: backgroundBlur || backgroundColor || designerEffect,\r\n effectSrc,\r\n } : null;\r\n return imageSmartEffect;\r\n};\r\n\r\n// for image extension feature, it supports to replace images for specific placements, which results\r\n// in different images in the 2nd dimension of imageExperienceImageList (placements)\r\n// to handle it, we need to split the 2nd dimension of imageExperienceImageList into multiple parts\r\n// by image src\r\nconst splitPlacementListBySrc = (imageExperienceImageList) => {\r\n // key is src, value is a list of placements with the same src\r\n let changed = false;\r\n const newImageList = [];\r\n _.forEach(imageExperienceImageList, (placementList) => {\r\n // for now, only split 2nd level, in case there may be images (1st dimension) with same URLs\r\n const placementListMap = _.groupBy(placementList, 'src');\r\n const srcList = _.keys(placementListMap);\r\n changed = changed || srcList.length > 1;\r\n srcList.forEach((src) => {\r\n newImageList.push(placementListMap[src]);\r\n });\r\n });\r\n return changed ? newImageList : imageExperienceImageList;\r\n};\r\n\r\n// imageExperienceImageList is a 2-dimensional array of type ImageExperienceImage,\r\n// the first dimension is the 'Image', and the second dimension is the 'Placement' (objects with type of ImageExperienceImage)\r\n// and the settings on image (crop/smart effetc) is presented by using 'baseImage', that is,\r\n// for each 'Placement' list, they should have same 'baseImage' (not the same object, but with the same cropping and smart effects)\r\nconst transformImageExperienceImageList = (placementSetsConfig, imageExperienceImageList, isImageFittingEnabled, isAdPreviewRefreshEnabled) => {\r\n // filter out logos\r\n let imageList = _.compact(_.map(imageExperienceImageList, (imgExpPlacementList) => {\r\n const placements = _.filter(imgExpPlacementList, ({ isLogo }) => !isLogo);\r\n return _.isEmpty(placements) ? null : placements;\r\n })) || [];\r\n\r\n imageList = splitPlacementListBySrc(imageList);\r\n\r\n const PlacementMetaList = isAdPreviewRefreshEnabled ? UAPLPlacementMetaListV2 : UAPLPlacementMetaList;\r\n\r\n const previewImageList = _.map(imageList, (imgExpPlacementList /* [ImageExperienceImage] */) => {\r\n // image level\r\n let imageMeta = null;\r\n let imageCropping = null;\r\n let imageSmartEffect = null;\r\n let hasImageCroppingChanged = false;\r\n\r\n const placementSets = _.map(placementSetsConfig, ({ placementSetName, placementTypes }) => {\r\n const placementList = _.map(placementTypes, (placementType) => {\r\n const placementMeta = PlacementMetaList[placementType] || {};\r\n\r\n // get association type from placement type\r\n const curAssociationType = PlacementType2AssociationTypeMap[placementType] || '';\r\n\r\n // get the ImageExperienceImage object representing the placement\r\n const placement = _.find(imgExpPlacementList, ({ associationType }) => associationType && curAssociationType && (associationType.toLowerCase() === curAssociationType.toLowerCase()));\r\n\r\n if (!placement) {\r\n return {\r\n placementMeta,\r\n placementCropping: null,\r\n placementSmartEffect: null,\r\n hasCroppingChanged: false,\r\n isPlacementIncluded: false,\r\n // mark this placment not initialized\r\n hasImageExperienceData: false,\r\n };\r\n }\r\n\r\n // the BaseImage represents image info (bulk editing on all placements)\r\n const baseImage = placement.BaseImage || {};\r\n\r\n if (!imageMeta) {\r\n imageMeta = {\r\n id: baseImage.IdString || baseImage.Id || placement.Id,\r\n url: placement.Src || placement.OriginalUrl || baseImage.Src || baseImage.OriginalUrl,\r\n width: baseImage.Width || baseImage.OriginalWidth || placement.Width || placement.OriginalWidth,\r\n height: baseImage.Height || baseImage.OriginalHeight || placement.Height || placement.OriginalHeight,\r\n originalUrl: baseImage.OriginalUrl || baseImage.Src || placement.OriginalUrl || placement.Src,\r\n originalWidth: baseImage.OriginalWidth || baseImage.Width || placement.OriginalWidth || placement.Width,\r\n originalHeight: baseImage.OriginalHeight || baseImage.Height || placement.OriginalHeight || placement.Height,\r\n };\r\n }\r\n\r\n // image cropping\r\n if (!imageCropping) {\r\n imageCropping = baseImage.CropSettings;\r\n }\r\n\r\n // image smart effect\r\n if (!imageSmartEffect) {\r\n imageSmartEffect = convertEffectSettings(baseImage.EffectSettings);\r\n }\r\n\r\n // image flag\r\n if (baseImage.isMaunalCropped) {\r\n hasImageCroppingChanged = hasImageCroppingChanged || baseImage.isMaunalCropped();\r\n }\r\n\r\n // only set if there is placement level smart effect\r\n let placementSmartEffect = null;\r\n if (placement.EffectSettings && (!baseImage.EffectSettings || placement.EffectSettings.effectSrc !== baseImage.EffectSettings.effectSrc)) {\r\n placementSmartEffect = convertEffectSettings(placement.EffectSettings);\r\n }\r\n\r\n const {\r\n expandedImageCropSettings,\r\n expandedImageUrl,\r\n expandedImageWidth,\r\n expandedImageHeight,\r\n } = getExpandedImagePlacementInfo(placement, imageSmartEffect || placementSmartEffect);\r\n\r\n // For some scenarios, such as image annotation, we don't want to use imageFitting for the search preview, because DE doesn't support it for now.\r\n const applyImageFitting = !placementMeta.ignoreImageFitting && isImageFittingEnabled;\r\n\r\n // placement info\r\n return {\r\n placementMeta,\r\n placementCropping: placement.CropSettings || null,\r\n // !baseImage.EffectSettings means smart effect is set on placement level\r\n placementSmartEffect,\r\n hasCroppingChanged: (placement.isMaunalCropped && placement.isMaunalCropped()) || false,\r\n isPlacementIncluded: placement.isIncluded || false,\r\n // mark this placment initialized\r\n hasImageExperienceData: true,\r\n expandedImageUrl: applyImageFitting ? expandedImageUrl : undefined,\r\n expandedImageWidth: applyImageFitting ? expandedImageWidth : undefined,\r\n expandedImageHeight: applyImageFitting ? expandedImageHeight : undefined,\r\n expandedImageCropSettings: applyImageFitting ? expandedImageCropSettings : undefined,\r\n };\r\n });\r\n\r\n // placement set\r\n const placementSet = {\r\n name: placementSetName,\r\n placementList,\r\n };\r\n return placementSet;\r\n });\r\n\r\n const previewImage = {\r\n imageMeta,\r\n imageCropping,\r\n imageSmartEffect,\r\n hasCroppingChanged: hasImageCroppingChanged,\r\n };\r\n\r\n // get previewImage and placementSets\r\n return { previewImage, placementSets };\r\n });\r\n\r\n return previewImageList;\r\n};\r\n\r\n// this hook is a wrapper on useAdPreviewModelCore, to initialize hook state by using imageList\r\n// returned from ImageExperience component\r\n// the imageList is a 2-dimensional array of type ImageExperienceImage, the first dimension is the 'Image',\r\n// and the second dimension is the 'Placement'\r\n//\r\n// @placementConfig: Array\r\nexport const useImageExperienceAdPreviewModel = (placementConfig, placeholderImage, isImageFittingEnabled) => {\r\n const {\r\n resetReducerStates,\r\n setPlacementConfig,\r\n multiImagePlacementSets,\r\n ...rest\r\n } = useAdPreviewModelCore();\r\n\r\n const permissions = useContext(PermissionsContext);\r\n const isAdPreviewRefreshEnabled = _.get(permissions, ['dynamic', 'AdPreviewRefresh']);\r\n\r\n const isPlaceHolderImage = useCallback((imageMeta) => {\r\n const { url } = imageMeta || {};\r\n const placeHolderUrl = placeholderImage && (_.isString(placeholderImage) ? placeholderImage : placeholderImage.url);\r\n return url && placeHolderUrl && url === placeHolderUrl;\r\n }, [placeholderImage]);\r\n\r\n // only return the placementSets with image experience data\r\n const imageExperiencePlacementSets = useMemo(() => {\r\n let changed = false;\r\n const ret = _.map(multiImagePlacementSets, ({ placementSetName, placementList }) => {\r\n const newPlacementList = _.map(placementList, (placement) => {\r\n const { images } = placement || [];\r\n const newImages = _.filter(images, ({ hasImageExperienceData, imageMeta }) => hasImageExperienceData || isPlaceHolderImage(imageMeta)) || [];\r\n changed = changed || newImages.length !== images.length;\r\n return { ...placement, images: newImages };\r\n });\r\n return { placementSetName, placementList: newPlacementList };\r\n });\r\n return changed ? ret : multiImagePlacementSets;\r\n }, [isPlaceHolderImage, multiImagePlacementSets]);\r\n\r\n const onUpdateImageExperienceImageList = useCallback((imageExperienceImageList, activeImageIndices, hasDataChanged) => {\r\n const previewImageListState = transformImageExperienceImageList(placementConfig, imageExperienceImageList, isImageFittingEnabled, isAdPreviewRefreshEnabled);\r\n if (!_.isEmpty(previewImageListState)) {\r\n const activeImageIndexList = previewImageListState && previewImageListState.map((img, index) => index);\r\n resetReducerStates({ previewImageListState, activeImageIndices: activeImageIndices || activeImageIndexList || [0], hasDataChanged });\r\n } else if (placeholderImage) {\r\n // use placeholder image if no image is set\r\n setPlacementConfig([{ image: placeholderImage, placementSets: placementConfig }]);\r\n }\r\n }, [isImageFittingEnabled, placeholderImage, placementConfig, resetReducerStates, setPlacementConfig, isAdPreviewRefreshEnabled]);\r\n\r\n return {\r\n onUpdateImageExperienceImageList,\r\n multiImagePlacementSets,\r\n imageExperiencePlacementSets,\r\n ...rest,\r\n };\r\n};\r\n","import {\r\n AdPreviewGridLayout as GridLayoutCore,\r\n AdPreviewSinglePlacementLayout as SinglePlacementLayoutCore,\r\n UnstyledAdPreviewCarouselLayout as UnstyledCarouselLayoutCore,\r\n //\r\n AdPlacementMmaWideImage4x1 as MmaWideImage4x1,\r\n AdPlacementMmaLandscapeImage191x100 as MmaLandscapeImage191x100,\r\n AdPlacementMmaSquareImage1x1 as MmaSquareImage1x1,\r\n AdPlacementMmaVerticalImage1x2 as MmaVerticalImage1x2,\r\n AdPreviewPlacementContainerBase as AdPreviewPlacementContainerBaseCore,\r\n //\r\n AdPlacementMmaInMsanWideImage191x100 as MmaInMsanWideImage191x100,\r\n AdPlacementMmaInMsanSquareImage1x1 as MmaInMsanSquareImage1x1,\r\n AdPlacementMmaInMsanMSEdgeSingleCarousel178x100 as MmaInMsanMSEdgeSingleCarousel178x100,\r\n AdPlacementMmaInMsanMSNInArticle150x100 as MmaInMsanMSNInArticle150x100,\r\n AdPlacementMmaInMsanMSNSmallHeadline133x100 as MmaInMsanMSNSmallHeadline133x100,\r\n //\r\n AdPlacementMmaInMsanV2MicrosoftEdgeCarousel201x100 as MmaInMsanV2MicrosoftEdgeCarousel201x100,\r\n AdPlacementMmaInMsanV2MicrosoftEdgeMobile1x1 as MmaInMsanV2MicrosoftEdgeMobile1x1,\r\n AdPlacementMmaInMsanV2MSANBanner2x1 as MmaInMsanV2MSANBanner2x1,\r\n AdPlacementMmaInMsanV2MSANRiver191x100 as MmaInMsanV2MSANRiver191x100,\r\n AdPlacementMmaInMsanV2MSANRectangle191x100 as MmaInMsanV2MSANRectangle191x100,\r\n AdPlacementMmaInMsanV2MSNCarousel169x100 as MmaInMsanV2MSNCarousel169x100,\r\n AdPlacementMmaInMsanV2MSNPartnerStripe153x100 as MmaInMsanV2MSNPartnerStripe153x100,\r\n AdPlacementMmaInMsanV2MSNRestoday124x100 as MmaInMsanV2MSNRestoday124x100,\r\n // Boost\r\n AdPlacementBoostHeroImageCarousel as BoostHeroImageCarousel,\r\n AdPlacementBoostWindowsSpotlight191x100 as BoostWindowsSpotlight191x100,\r\n AdPlacementBoostDiscoverCard1x1 as BoostDiscoverCard1x1,\r\n AdPlacementBoostStartMenu as BoostStartMenu,\r\n AdPlacementBoostActionCenter as BoostActionCenter,\r\n AdPlacementBoostBanner as BoostBanner,\r\n AdPlacementBoostProngFeed191x100 as BoostProngFeed191x100,\r\n AdPlacementBoostCoachmark175x100 as BoostCoachmark175x100,\r\n //\r\n AdPlacementImgExtWideImage191x100 as ImgExtWideImage191x100,\r\n AdPlacementImgExtMSEdgeSingleCarousel178x100 as MSEdgeSingleCarousel178x100,\r\n AdPlacementImgExtBingDesktopSingleImage178x100 as BingDesktopSingleImage178x100,\r\n AdPlacementImgExtMSEdgeMediumHeadline172x100 as MSEdgeMediumHeadline172x100,\r\n AdPlacementImgExtMSNSingleCarousel169x100 as MSNSingleCarousel169x100,\r\n AdPlacementImgExtMSNMediumHeadline155x100 as MSNMediumHeadline155x100,\r\n AdPlacementImgExtMSNInArticle150x100 as MSNInArticle150x100,\r\n AdPlacementImgExtMSNSmallHeadline133x100 as MSNSmallHeadline133x100,\r\n AdPlacementImgExtBingDesktopMultiImage133x100 as BingDesktopMultiImage133x100,\r\n AdPlacementImgExtBingMobileMultiImage133x100 as BingMobileMultiImage133x100,\r\n AdPlacementImgExtSquareImage1x1 as SquareImage1x1,\r\n AdPlacementImgExtMSNDoubleCarousel93x100 as MSNDoubleCarousel93x100,\r\n //\r\n ResponsiveAdPlacementMmaLandscapeImage191x100 as ResponsiveMmaLandscapeImage191x100,\r\n ResponsiveAdPlacementMmaSquareImage1x1 as ResponsiveMmaSquareImage1x1,\r\n ResponsiveAdPlacementMmaVerticalImage1x2 as ResponsiveMmaVerticalImage1x2,\r\n ResponsiveAdPlacementMmaWideImage4x1 as ResponsiveMmaWideImage4x1,\r\n //\r\n ResponsiveAdPlacementMmaInMsanMSEdgeSingleCarousel178x100 as ResponsiveMmaInMsanMSEdgeSingleCarousel178x100,\r\n ResponsiveAdPlacementMmaInMsanMSNInArticle150x100 as ResponsiveMmaInMsanMSNInArticle150x100,\r\n ResponsiveAdPlacementMmaInMsanMSNSmallHeadline133x100 as ResponsiveMmaInMsanMSNSmallHeadline133x100,\r\n ResponsiveAdPlacementMmaInMsanSquareImage1x1 as ResponsiveMmaInMsanSquareImage1x1,\r\n ResponsiveAdPlacementMmaInMsanWideImage191x100 as ResponsiveMmaInMsanWideImage191x100,\r\n //\r\n ResponsiveAdPlacementBingSearchText as ResponsiveBingSearchText,\r\n ResponsiveAdPlacementOutlookMobile as ResponsiveOutlookMobile,\r\n ResponsiveAdPlacementOutlookWeb as ResponsiveOutlookWeb,\r\n //\r\n UAPPlacementType,\r\n UAPPlacementTypeAlias,\r\n //\r\n getAdPlacementComponent,\r\n //\r\n getPlacementListMetaDataByImageType,\r\n //\r\n UAPAdExtensionType,\r\n AdPreviewStructuredSnippetExtension as StructuredSnippetExtension,\r\n AdPreviewCalloutExtension as CalloutExtension,\r\n AdPreviewPriceExtension as PriceExtension,\r\n AdPreviewPromotionExtension as PromotionExtension,\r\n AdPreviewSitelinkExtension as SitelinkExtension,\r\n //\r\n AdPlacementDynamicSearch as DynamicSearch,\r\n //\r\n AdPlacementResponsiveSearch as ResponsiveSearch,\r\n AdPlacementResponsiveSearchDesktop as ResponsiveSearchDesktop,\r\n AdPlacementResponsiveSearchMobile as ResponsiveSearchMobile,\r\n //\r\n AdPlacementLinkedInSingleImageDesktop as LinkedInSingleImageDesktop,\r\n AdPlacementLinkedInSingleImageMobile as LinkedInSingleImageMobile,\r\n AdPlacementLinkedInSingleImageMediumRectangle as LinkedInSingleImageMediumRectangle,\r\n AdPlacementLinkedInSingleImageMobileInterstitial as LinkedInSingleImageMobileInterstitial,\r\n AdPlacementLinkedInSingleImageNative as LinkedInSingleImageNative,\r\n\r\n // app ads\r\n AppAdsVideoHorizontalPlacement as UnifiedAppAdsVideoHorizontalPlacement,\r\n AppAdsM365OutlookPlacement as UnifiedAppAdsM365OutlookPlacement,\r\n AppAdsCasualGamesDimensionsPlacement as UnifiedAppAdsCasualGamesDimensionsPlacement,\r\n AppAdsMSNDisplayPlacement as UnifiedAppAdsMSNDisplayPlacement,\r\n AppAdsBingSearchPlacement as UnifiedAppAdsBingSearchPlacement,\r\n\r\n getCropSettingsFromRoi,\r\n} from '@bingads-webui-campaign-react/unified-ad-preview-library-core';\r\n\r\nimport {\r\n AdPreviewCarouselLayoutWrapper,\r\n AdPreviewCarouselLayoutWrapperEx,\r\n} from './src/carousel-layout-wrapper';\r\nimport { withCMUITheme } from './with-cmui-theme';\r\n\r\n//\r\nimport { useAdPreviewModel } from './src/use-ad-preview-model-wrapper';\r\n\r\nexport const AdPreviewGridLayout = withCMUITheme(GridLayoutCore);\r\nexport const AdPreviewSinglePlacementLayout = withCMUITheme(SinglePlacementLayoutCore);\r\nexport const AdPreviewCarouselLayout = withCMUITheme(AdPreviewCarouselLayoutWrapper);\r\nexport const AdPreviewCarouselLayoutEx = withCMUITheme(AdPreviewCarouselLayoutWrapperEx);\r\nexport const UnstyledAdPreviewCarouselLayout = withCMUITheme(UnstyledCarouselLayoutCore);\r\n\r\nexport const AdPlacementMmaWideImage4x1 = withCMUITheme(MmaWideImage4x1);\r\nexport const AdPlacementMmaLandscapeImage191x100 = withCMUITheme(MmaLandscapeImage191x100);\r\nexport const AdPlacementMmaSquareImage1x1 = withCMUITheme(MmaSquareImage1x1);\r\nexport const AdPlacementMmaVerticalImage1x2 = withCMUITheme(MmaVerticalImage1x2);\r\nexport const AdPreviewPlacementContainerBase = withCMUITheme(AdPreviewPlacementContainerBaseCore);\r\n\r\nexport const AdPlacementMmaInMsanWideImage191x100 = withCMUITheme(MmaInMsanWideImage191x100);\r\nexport const AdPlacementMmaInMsanSquareImage1x1 = withCMUITheme(MmaInMsanSquareImage1x1);\r\nexport const AdPlacementMmaInMsanMSEdgeSingleCarousel178x100 = withCMUITheme(MmaInMsanMSEdgeSingleCarousel178x100);\r\nexport const AdPlacementMmaInMsanMSNInArticle150x100 = withCMUITheme(MmaInMsanMSNInArticle150x100);\r\nexport const AdPlacementMmaInMsanMSNSmallHeadline133x100 = withCMUITheme(MmaInMsanMSNSmallHeadline133x100);\r\n\r\nexport const AdPlacementMmaInMsanV2MicrosoftEdgeCarousel201x100 = withCMUITheme(MmaInMsanV2MicrosoftEdgeCarousel201x100);\r\nexport const AdPlacementMmaInMsanV2MicrosoftEdgeMobile1x1 = withCMUITheme(MmaInMsanV2MicrosoftEdgeMobile1x1);\r\nexport const AdPlacementMmaInMsanV2MSANBanner2x1 = withCMUITheme(MmaInMsanV2MSANBanner2x1);\r\nexport const AdPlacementMmaInMsanV2MSANRiver191x100 = withCMUITheme(MmaInMsanV2MSANRiver191x100);\r\nexport const AdPlacementMmaInMsanV2MSANRectangle191x100 = withCMUITheme(MmaInMsanV2MSANRectangle191x100);\r\nexport const AdPlacementMmaInMsanV2MSNCarousel169x100 = withCMUITheme(MmaInMsanV2MSNCarousel169x100);\r\nexport const AdPlacementMmaInMsanV2MSNPartnerStripe153x100 = withCMUITheme(MmaInMsanV2MSNPartnerStripe153x100);\r\nexport const AdPlacementMmaInMsanV2MSNRestoday124x100 = withCMUITheme(MmaInMsanV2MSNRestoday124x100);\r\n\r\nexport const AdPlacementBoostHeroImageCarousel = withCMUITheme(BoostHeroImageCarousel);\r\nexport const AdPlacementBoostWindowsSpotlight191x100 = withCMUITheme(BoostWindowsSpotlight191x100);\r\nexport const AdPlacementBoostDiscoverCard1x1 = withCMUITheme(BoostDiscoverCard1x1);\r\nexport const AdPlacementBoostStartMenu = withCMUITheme(BoostStartMenu);\r\nexport const AdPlacementBoostActionCenter = withCMUITheme(BoostActionCenter);\r\nexport const AdPlacementBoostBanner = withCMUITheme(BoostBanner);\r\nexport const AdPlacementBoostProngFeed191x100 = withCMUITheme(BoostProngFeed191x100);\r\nexport const AdPlacementBoostCoachmark175x100 = withCMUITheme(BoostCoachmark175x100);\r\n\r\nexport const AdPlacementImgExtWideImage191x100 = withCMUITheme(ImgExtWideImage191x100);\r\nexport const AdPlacementImgExtMSEdgeSingleCarousel178x100 = withCMUITheme(MSEdgeSingleCarousel178x100);\r\nexport const AdPlacementImgExtBingDesktopSingleImage178x100 = withCMUITheme(BingDesktopSingleImage178x100);\r\nexport const AdPlacementImgExtMSEdgeMediumHeadline172x100 = withCMUITheme(MSEdgeMediumHeadline172x100);\r\nexport const AdPlacementImgExtMSNSingleCarousel169x100 = withCMUITheme(MSNSingleCarousel169x100);\r\nexport const AdPlacementImgExtMSNMediumHeadline155x100 = withCMUITheme(MSNMediumHeadline155x100);\r\nexport const AdPlacementImgExtMSNInArticle150x100 = withCMUITheme(MSNInArticle150x100);\r\nexport const AdPlacementImgExtMSNSmallHeadline133x100 = withCMUITheme(MSNSmallHeadline133x100);\r\nexport const AdPlacementImgExtBingDesktopMultiImage133x100 = withCMUITheme(BingDesktopMultiImage133x100);\r\nexport const AdPlacementImgExtBingMobileMultiImage133x100 = withCMUITheme(BingMobileMultiImage133x100);\r\nexport const AdPlacementImgExtSquareImage1x1 = withCMUITheme(SquareImage1x1);\r\nexport const AdPlacementImgExtMSNDoubleCarousel93x100 = withCMUITheme(MSNDoubleCarousel93x100);\r\n\r\nexport const AdPlacementDynamicSearch = withCMUITheme(DynamicSearch);\r\n\r\nexport const AdPlacementResponsiveSearch = withCMUITheme(ResponsiveSearch);\r\nexport const AdPlacementResponsiveSearchDesktop = withCMUITheme(ResponsiveSearchDesktop);\r\nexport const AdPlacementResponsiveSearchMobile = withCMUITheme(ResponsiveSearchMobile);\r\n\r\nexport const ResponsiveAdPlacementMmaLandscapeImage191x100 = withCMUITheme(ResponsiveMmaLandscapeImage191x100);\r\nexport const ResponsiveAdPlacementMmaSquareImage1x1 = withCMUITheme(ResponsiveMmaSquareImage1x1);\r\nexport const ResponsiveAdPlacementMmaVerticalImage1x2 = withCMUITheme(ResponsiveMmaVerticalImage1x2);\r\nexport const ResponsiveAdPlacementMmaWideImage4x1 = withCMUITheme(ResponsiveMmaWideImage4x1);\r\nexport const ResponsiveAdPlacementMmaInMsanMSEdgeSingleCarousel178x100 = withCMUITheme(ResponsiveMmaInMsanMSEdgeSingleCarousel178x100);\r\nexport const ResponsiveAdPlacementMmaInMsanMSNInArticle150x100 = withCMUITheme(ResponsiveMmaInMsanMSNInArticle150x100);\r\nexport const ResponsiveAdPlacementMmaInMsanMSNSmallHeadline133x100 = withCMUITheme(ResponsiveMmaInMsanMSNSmallHeadline133x100);\r\nexport const ResponsiveAdPlacementMmaInMsanSquareImage1x1 = withCMUITheme(ResponsiveMmaInMsanSquareImage1x1);\r\nexport const ResponsiveAdPlacementMmaInMsanWideImage191x100 = withCMUITheme(ResponsiveMmaInMsanWideImage191x100);\r\nexport const ResponsiveAdPlacementBingSearchText = withCMUITheme(ResponsiveBingSearchText);\r\nexport const ResponsiveAdPlacementOutlookMobile = withCMUITheme(ResponsiveOutlookMobile);\r\nexport const ResponsiveAdPlacementOutlookWeb = withCMUITheme(ResponsiveOutlookWeb);\r\n\r\nexport const AdPlacementLinkedInSingleImageDesktop = withCMUITheme(LinkedInSingleImageDesktop);\r\nexport const AdPlacementLinkedInSingleImageMobile = withCMUITheme(LinkedInSingleImageMobile);\r\nexport const AdPlacementLinkedInSingleImageMediumRectangle = withCMUITheme(LinkedInSingleImageMediumRectangle);\r\nexport const AdPlacementLinkedInSingleImageMobileInterstitial = withCMUITheme(LinkedInSingleImageMobileInterstitial);\r\nexport const AdPlacementLinkedInSingleImageNative = withCMUITheme(LinkedInSingleImageNative);\r\n\r\nexport const AppAdsVideoHorizontalPlacement = withCMUITheme(UnifiedAppAdsVideoHorizontalPlacement);\r\nexport const AppAdsM365OutlookPlacement = withCMUITheme(UnifiedAppAdsM365OutlookPlacement);\r\nexport const AppAdsCasualGamesDimensionsPlacement = withCMUITheme(UnifiedAppAdsCasualGamesDimensionsPlacement);\r\nexport const AppAdsMSNDisplayPlacement = withCMUITheme(UnifiedAppAdsMSNDisplayPlacement);\r\nexport const AppAdsBingSearchPlacement = withCMUITheme(UnifiedAppAdsBingSearchPlacement);\r\n\r\nexport {\r\n UAPPlacementType,\r\n UAPPlacementTypeAlias,\r\n UAPAdExtensionType,\r\n useAdPreviewModel,\r\n getAdPlacementComponent,\r\n getPlacementListMetaDataByImageType,\r\n getCropSettingsFromRoi,\r\n};\r\n\r\nexport { getSmartCropSettingsFactory } from './src/get-smart-cropped-image';\r\n\r\nexport { useImageExperienceAdPreviewModel, PlacementType2AssociationTypeMap } from './src/use-image-experience-ad-preview-model';\r\n\r\nexport const AdPreviewStructuredSnippetExtension = withCMUITheme(StructuredSnippetExtension);\r\nexport const AdPreviewCalloutExtension = withCMUITheme(CalloutExtension);\r\nexport const AdPreviewPriceExtension = withCMUITheme(PriceExtension);\r\nexport const AdPreviewPromotionExtension = withCMUITheme(PromotionExtension);\r\nexport const AdPreviewSitelinkExtension = withCMUITheme(SitelinkExtension);\r\nexport const AdPreviewAdExtensionComponents = {\r\n [UAPAdExtensionType.SiteLink]: AdPreviewSitelinkExtension,\r\n [UAPAdExtensionType.Callout]: AdPreviewCalloutExtension,\r\n [UAPAdExtensionType.Promotion]: AdPreviewPromotionExtension,\r\n [UAPAdExtensionType.StructuredSnippet]: AdPreviewStructuredSnippetExtension,\r\n [UAPAdExtensionType.Price]: AdPreviewPriceExtension,\r\n};\r\n","import React, { useMemo } from 'react';\r\nimport { createUseStyles } from 'react-jss';\r\nimport hoistNonReactStatics from 'hoist-non-react-statics';\r\n\r\nconst emptyTheme = { components: {}, core: {} };\r\nconst getDisplayName = Component => Component.displayName || Component.name || 'Component';\r\n\r\n// the purpose of the hoc is to deouple the wrapped components with a specific theme provider,\r\n// to make the library as independent as possible\r\n\r\n// use an external theme to decouple the wrapped components with a specific theme provider\r\nexport function withThemedStyles(WrappedComponent, getStyles, options) {\r\n const {\r\n prefixClassName, // the prefix of the class names generated by react-jss\r\n useRawStyles, // also pass down the themed styles to the wrapped component, which may be used in Fluent UI components\r\n componentName, // the description name of WrappedComponent\r\n } = options || {};\r\n\r\n const HOC = (props) => {\r\n // the theme is passed as a prop to the wrapped component, instead of getting if from some theme provider\r\n const { theme } = props;\r\n const { components, core } = theme || emptyTheme;\r\n // handle theme by ourselves instead of using the react-jss theming\r\n const themedStyles = useMemo(() => getStyles(components, core), [components, core]);\r\n const useStyles = useMemo(() => createUseStyles(themedStyles, prefixClassName ? { name: prefixClassName } : undefined), [themedStyles]);\r\n const classes = useStyles() || {};\r\n return (\r\n \r\n );\r\n };\r\n\r\n HOC.displayName = `withThemedStyles(${componentName || getDisplayName(WrappedComponent)})`;\r\n\r\n hoistNonReactStatics(HOC, WrappedComponent);\r\n\r\n return HOC;\r\n}\r\n\r\nexport const withUAPLThemedStyles = (WrappedComponent, getStyles, options) => withThemedStyles(WrappedComponent, getStyles, { ...options, prefixClassName: 'UAPL' });\r\n\r\n","const defaultAdsLabelStyles = {\r\n position: 'relative !important',\r\n padding: '.8px 4px !important',\r\n margin: '0 5px 0 0 !important',\r\n background: 'transparent !important',\r\n color: '#78718a !important',\r\n lineHeight: '1.364 !important',\r\n fontSize: '10px !important',\r\n fontWeight: '400 !important',\r\n fontFamily: 'Segoe UI,Segoe WP,Arial,Sans-Serif',\r\n border: '.5px solid #78718a !important',\r\n borderRadius: '4px !important',\r\n};\r\n\r\nexport const getMmaInMsanPlacementBaseStyles = () => ({\r\n placementCard: undefined,\r\n placementImageContainer: undefined,\r\n placementTextContainer: undefined,\r\n placementAdsLabel: undefined,\r\n placementGradient: undefined,\r\n placementShortHeadline: undefined,\r\n placementLongHeadline: undefined,\r\n placementFinalUrl: undefined,\r\n placementDescription: undefined,\r\n placementCallToAction: undefined,\r\n placementBusinessNameWithAdsLabel: undefined,\r\n});\r\n\r\nexport const getMmaInMsanWideImage191x100Styles = theme => ({\r\n // base styles\r\n ...getMmaInMsanPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n // height: 364,\r\n color: '#ddd',\r\n border: 'solid',\r\n borderWidth: 'thin',\r\n },\r\n\r\n placementTextContainer: {\r\n padding: 10,\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n maxWidth: '-webkit-fill-available',\r\n },\r\n\r\n placementShortHeadline: {\r\n top: -6,\r\n color: '#207697',\r\n height: 60,\r\n position: 'relative',\r\n fontSize: 18,\r\n lineHeight: 1.2,\r\n fontWeight: 200,\r\n paddingBottom: 5,\r\n },\r\n\r\n placementDescription: {\r\n height: 45,\r\n margin: '5px 0 10px 0',\r\n fontSize: 14,\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n '& .ads-label': defaultAdsLabelStyles,\r\n },\r\n});\r\n\r\nexport const getMmaInMsanMSEdgeSingleCarousel178x100Styles = theme => ({\r\n // base styles\r\n ...getMmaInMsanPlacementBaseStyles(theme),\r\n\r\n placementCard: {\r\n '&:hover $placementGradient': {\r\n height: '480px !important',\r\n top: -100,\r\n },\r\n width: '624px !important',\r\n },\r\n\r\n // overrides\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 20,\r\n bottom: 25,\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n color: '#bebebe',\r\n },\r\n\r\n placementGradient: {\r\n display: 'block',\r\n width: '100%',\r\n height: '280px !important',\r\n top: 100,\r\n backgroundImage: 'linear-gradient(to bottom, transparent 0, black 100%)',\r\n },\r\n\r\n placementShortHeadline: {\r\n fontWeight: '200',\r\n fontSize: 28,\r\n lineHeight: '33.99px',\r\n color: 'white',\r\n width: 590,\r\n height: 73,\r\n marginBottom: 20,\r\n\r\n '& .multi-line-processed-text': {\r\n position: 'absolute',\r\n bottom: 30,\r\n },\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n '& .ads-label': {\r\n ...defaultAdsLabelStyles,\r\n color: '#fff !important',\r\n opacity: '0.7 !important',\r\n border: '.5px solid hsla(0,0%,100%,.3) !important',\r\n },\r\n '& .business-name': {\r\n color: '#bebebe !important',\r\n },\r\n },\r\n});\r\n\r\nexport const getMmaInMsanMSNInArticle150x100Styles = theme => ({\r\n // base styles\r\n ...getMmaInMsanPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n // height: 364,\r\n color: '#ddd',\r\n border: 'solid',\r\n borderWidth: 'thin',\r\n background: '#fff',\r\n },\r\n\r\n placementTextContainer: {\r\n padding: 10,\r\n // height: 98,\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementShortHeadline: {\r\n top: -6,\r\n color: '#207697',\r\n height: 60,\r\n position: 'relative',\r\n fontSize: 15,\r\n lineHeight: 1.2,\r\n fontWeight: 200,\r\n paddingBottom: 5,\r\n },\r\n\r\n placementDescription: {\r\n height: 45,\r\n margin: '5px 0 10px 0',\r\n fontSize: 14,\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n '& .ads-label': defaultAdsLabelStyles,\r\n },\r\n});\r\n\r\nexport const getMmaInMsanMSNSmallHeadline133x100Styles = theme => ({\r\n // base styles\r\n ...getMmaInMsanPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n width: '300px !important',\r\n height: 90,\r\n color: '#ddd',\r\n // border: 'solid',\r\n borderWidth: 'thin',\r\n background: '#fff',\r\n flexDirection: 'row !important',\r\n },\r\n\r\n placementImageContainer: {\r\n float: 'left',\r\n width: 100,\r\n height: 75,\r\n margin: 8,\r\n },\r\n\r\n placementTextContainer: {\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementShortHeadline: {\r\n height: 52,\r\n margin: '4px 8px 0 8px',\r\n overflow: 'hidden',\r\n fontSize: 13,\r\n fontWeight: 600,\r\n lineHeight: 1.384,\r\n paddingBottom: 5,\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n '& .ads-label': defaultAdsLabelStyles,\r\n },\r\n});\r\n\r\nexport const getMmaInMsanSquareImage1x1Styles = theme => ({\r\n // base styles\r\n ...getMmaInMsanPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n width: '300px !important',\r\n height: 90,\r\n color: '#ddd',\r\n border: 'solid',\r\n borderWidth: 'thin',\r\n background: '#fff',\r\n flexDirection: 'row !important',\r\n },\r\n\r\n placementImageContainer: {\r\n float: 'left',\r\n width: 80,\r\n height: 75,\r\n margin: 8,\r\n },\r\n\r\n placementTextContainer: {\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementShortHeadline: {\r\n height: 45,\r\n margin: '8px 8px 0 8px',\r\n overflow: 'hidden',\r\n fontSize: 13,\r\n fontWeight: 600,\r\n lineHeight: 1.384,\r\n paddingBottom: 5,\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n '& .ads-label': defaultAdsLabelStyles,\r\n },\r\n});\r\n","const defaultAdsLabelStyles = {\r\n position: 'relative !important',\r\n padding: '.8px 4px !important',\r\n margin: '0 5px 0 0 !important',\r\n background: 'transparent !important',\r\n color: '#78718a !important',\r\n lineHeight: '1.364 !important',\r\n fontSize: '10px !important',\r\n fontWeight: '400 !important',\r\n fontFamily: 'Segoe UI,Segoe WP,Arial,Sans-Serif',\r\n border: '.5px solid #78718a !important',\r\n borderRadius: '4px !important',\r\n};\r\n\r\nexport const getMmaInMsanV2PlacementBaseStyles = () => ({\r\n placementCard: {\r\n border: '1px solid #c8c8c8',\r\n boxShadow: 'unset !important',\r\n borderRadius: '0px !important',\r\n },\r\n placementImageContainer: undefined,\r\n placementTextContainer: undefined,\r\n placementAdsLabel: undefined,\r\n placementGradient: undefined,\r\n placementShortHeadline: undefined,\r\n placementLongHeadline: undefined,\r\n placementFinalUrl: undefined,\r\n placementDescription: undefined,\r\n placementCallToAction: undefined,\r\n placementBusinessNameWithAdsLabel: undefined,\r\n});\r\n\r\nexport const getMmaInMsanV2MicrosoftEdgeCarousel201x100Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n '&:hover $placementGradient': {\r\n height: '480px !important',\r\n top: -145,\r\n },\r\n '&:hover $placementShortHeadline': {\r\n color: 'white',\r\n textDecoration: 'underline',\r\n },\r\n width: '612px !important',\r\n height: 304,\r\n },\r\n\r\n placementGradient: {\r\n display: 'block',\r\n width: '100%',\r\n height: '280px !important',\r\n top: 55,\r\n backgroundImage: 'linear-gradient(to bottom, transparent 0, black 100%)',\r\n overflow: 'hidden',\r\n },\r\n\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 0,\r\n bottom: 0,\r\n padding: 16,\r\n fontSize: 10,\r\n color: '#bebebe',\r\n },\r\n\r\n placementShortHeadline: {\r\n color: 'white',\r\n width: 592,\r\n height: 'auto',\r\n fontSize: 28,\r\n maxHeight: 108,\r\n fontWeight: '600',\r\n lineHeight: '36px',\r\n marginBottom: 0,\r\n paddingBottom: 5,\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n padding: '4px 0 !important',\r\n margin: '9px 5px 5px 0px !important',\r\n fontSize: '12px !important',\r\n lineHeight: '16px !important',\r\n background: 'transparent !important',\r\n color: 'rgba(255, 255, 255, 0.7) !important',\r\n borderRadius: '2px !important',\r\n\r\n '& .ads-label': {\r\n ...defaultAdsLabelStyles,\r\n margin: '0 !important',\r\n color: 'rgba(255, 255, 255, 0.7) !important',\r\n background: 'transparent !important',\r\n border: '2px solid rgba(255, 255, 255, 0.3) !important',\r\n opacity: '1 !important',\r\n fontSize: '12px !important',\r\n lineHeight: '16px !important',\r\n },\r\n '& .business-name': {\r\n color: 'hsla(0,0%,100%,.7) !important',\r\n padding: '0 0 0 4px !important',\r\n },\r\n },\r\n };\r\n};\r\n\r\nexport const getMmaInMsanV2MSANBanner2x1Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '360px !important',\r\n height: 88,\r\n padding: '0px !important',\r\n background: '#fff',\r\n flexDirection: 'row !important',\r\n },\r\n\r\n placementImageContainer: {\r\n float: 'left',\r\n width: 180,\r\n height: 90,\r\n marginRight: 10,\r\n },\r\n\r\n placementTextContainer: {\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementShortHeadline: {\r\n color: 'rgba(0, 0, 0, 0.83)',\r\n height: 45,\r\n margin: '8px 8px 8px 0',\r\n overflow: 'hidden',\r\n fontSize: 15,\r\n fontWeight: 600,\r\n lineHeight: '22px',\r\n paddingBottom: 5,\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n padding: '2px 0 !important',\r\n borderRadius: '2px !important',\r\n\r\n '& .ads-label': {\r\n ...defaultAdsLabelStyles,\r\n color: 'rgba(46,46,46,.7) !important',\r\n fontSize: '11px !important',\r\n },\r\n '& .business-name': {\r\n padding: '0 !important',\r\n },\r\n },\r\n };\r\n};\r\n\r\nexport const getMmaInMsanV2MSANRiver191x100Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '300px !important',\r\n height: 304,\r\n padding: '0px !important',\r\n },\r\n\r\n placementTextContainer: {\r\n width: 300,\r\n height: 147,\r\n padding: 12,\r\n background: 'linear-gradient(112.05deg, #FFFFFF 35.59%, #E1E1E1 100%)',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementShortHeadline: {\r\n position: 'relative',\r\n top: 0,\r\n color: '#1A1A1A',\r\n width: 268,\r\n fontFamily: 'Segoe UI Variable Static Text',\r\n fontStyle: 'normal',\r\n fontSize: 20,\r\n lineHeight: 1.1,\r\n fontWeight: 600,\r\n paddingBottom: 5,\r\n },\r\n\r\n placementDescription: {\r\n color: '#4D4C4C',\r\n width: 268,\r\n fontSize: 14,\r\n fontFamily: 'Segoe UI Variable Static Text',\r\n fontStyle: 'normal',\r\n margin: '4px 0 0 0',\r\n lineHeight: 1.43,\r\n fontWeight: 400,\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n width: 270,\r\n padding: '4px 0 !important',\r\n margin: '9px 5px 0px 0px !important',\r\n fontSize: '11px !important',\r\n lineHeight: '15px !important',\r\n borderRadius: '2px !important',\r\n position: 'absolute',\r\n bottom: 11,\r\n background: 'transparent !important',\r\n\r\n '& .ads-label': {\r\n ...defaultAdsLabelStyles,\r\n margin: '0 !important',\r\n color: 'rgba(43,43,43,.8) !important',\r\n opacity: '1 !important',\r\n fontSize: '11px !important',\r\n lineHeight: '15px !important',\r\n fontFamily: 'Segoe UI Variable Static Small !important',\r\n },\r\n '& .business-name': {\r\n padding: '0 0 0 4px !important',\r\n fontFamily: 'Segoe UI Variable Static Small !important',\r\n },\r\n '& .ads-icon': {\r\n float: 'right',\r\n widht: 16,\r\n height: 16,\r\n },\r\n },\r\n };\r\n};\r\n\r\nexport const getMmaInMsanV2MSNCarousel169x100Styles = (theme) => {\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n '&:hover $placementGradient': {\r\n height: '480px !important',\r\n top: -80,\r\n },\r\n width: '628px !important',\r\n height: 372,\r\n },\r\n\r\n placementGradient: {\r\n display: 'block',\r\n width: '100%',\r\n height: '280px !important',\r\n top: 120,\r\n backgroundImage: 'linear-gradient(to bottom, transparent 0, black 100%)',\r\n },\r\n\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 20,\r\n bottom: 25,\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n color: '#bebebe',\r\n },\r\n\r\n placementLongHeadline: {\r\n width: 576,\r\n fontSize: 28,\r\n // maxHeight: 108,\r\n height: 108,\r\n fontWeight: 600,\r\n marginBottom: 0,\r\n color: 'white',\r\n lineHeight: '36px',\r\n\r\n '& .multi-line-processed-text': {\r\n position: 'absolute',\r\n bottom: 30,\r\n },\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n '& .ads-label': {\r\n ...defaultAdsLabelStyles,\r\n color: '#bebebe !important',\r\n opacity: '1 !important',\r\n border: 'unset !important',\r\n },\r\n '& .business-name': {\r\n padding: '0 !important',\r\n color: '#bebebe !important',\r\n },\r\n '& .ads-icon': {\r\n float: 'right',\r\n widht: 12,\r\n height: 12,\r\n },\r\n },\r\n };\r\n};\r\n\r\nexport const getMmaInMsanV2MSNPartnerStripe153x100Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '302px !important',\r\n height: 296,\r\n },\r\n\r\n placementTextContainer: {\r\n padding: 10,\r\n width: 282,\r\n height: 98,\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementLongHeadline: {\r\n top: -6,\r\n color: '#2b2b2b',\r\n width: 282,\r\n height: 40,\r\n margin: 0,\r\n position: 'relative',\r\n fontSize: 14,\r\n lineHeight: '20px',\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n padding: '4px 0 !important',\r\n '& .ads-label': {\r\n ...defaultAdsLabelStyles,\r\n borderRadius: '2px !important',\r\n opacity: '1 !important',\r\n },\r\n '& .business-name': {\r\n padding: '0 !important',\r\n color: '#333 !important',\r\n },\r\n },\r\n };\r\n};\r\n\r\nexport const getMmaInMsanV2MSNRestoday124x100Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '306px !important',\r\n height: 100,\r\n padding: 3,\r\n flexDirection: 'row !important',\r\n },\r\n\r\n placementImageContainer: {\r\n float: 'left',\r\n width: 108,\r\n height: 84,\r\n margin: '8px 4px 0 8px',\r\n },\r\n\r\n placementTextContainer: {\r\n padding: 2,\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementShortHeadline: {\r\n color: '#2b2b2b',\r\n height: 55,\r\n overflow: 'hidden',\r\n fontSize: 16,\r\n fontWeight: 600,\r\n lineHeight: '22px',\r\n padding: '5px 0',\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n width: 177,\r\n padding: '8px 0 1px 0 !important',\r\n '& .ads-label': {\r\n ...defaultAdsLabelStyles,\r\n margin: '0 !important',\r\n opacity: '1 !important',\r\n },\r\n '& .business-name': {\r\n padding: '0 0 0 4px !important',\r\n margin: '9px 0 0 0 !important',\r\n },\r\n '& .ads-icon': {\r\n float: 'right',\r\n widht: 16,\r\n height: 16,\r\n },\r\n },\r\n };\r\n};\r\n\r\nexport const getMmaInMsanV2MSANRectangle120x100Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n '&:hover $placementGradient': {\r\n height: '480px !important',\r\n top: -200,\r\n },\r\n '&:hover $placementShortHeadline': {\r\n textDecoration: 'underline',\r\n },\r\n width: '300px !important',\r\n height: 250,\r\n },\r\n\r\n placementGradient: {\r\n display: 'block',\r\n width: '100%',\r\n height: '280px !important',\r\n top: 0,\r\n backgroundImage: 'linear-gradient(to bottom, transparent 0, black 100%)',\r\n },\r\n\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 20,\r\n bottom: 25,\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementShortHeadline: {\r\n color: 'white',\r\n width: 268,\r\n fontSize: 20,\r\n fontFamily: 'Segoe UI Semibold',\r\n fontWeight: '200',\r\n lineHeight: '26px',\r\n marginBottom: 20,\r\n paddingBottom: 5,\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n position: 'absolute',\r\n bottom: -10,\r\n fontWeight: '600',\r\n lineHeight: 1.364,\r\n fontSize: 12,\r\n padding: '2px 0 4px 0 !important',\r\n '& .ads-label': {\r\n ...defaultAdsLabelStyles,\r\n color: 'hsla(0,0%,100%,.7) !important',\r\n fontSize: '12px !important',\r\n fontWeight: '600 !important',\r\n border: '.5px solid hsla(0,0%,100%,.7) !important',\r\n opacity: '1 !important',\r\n },\r\n '& .business-name': {\r\n padding: '0 !important',\r\n margin: '0 !important',\r\n color: 'hsla(0,0%,100%,.7) !important',\r\n fontWeight: '600 !important',\r\n },\r\n },\r\n };\r\n};\r\n\r\nexport const getMmaInMsanV2MicrosoftEdgeMobile1x1Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n\r\n return {\r\n\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n color: '#ddd',\r\n width: '240px !important',\r\n height: 90,\r\n padding: 3,\r\n background: '#fff',\r\n flexDirection: 'row !important',\r\n },\r\n\r\n placementImageContainer: {\r\n float: 'right',\r\n width: 80,\r\n height: 75,\r\n margin: 8,\r\n },\r\n\r\n placementTextContainer: {\r\n marginLeft: 8,\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementShortHeadline: {\r\n color: 'black',\r\n height: 45,\r\n margin: '8px 0',\r\n overflow: 'hidden',\r\n fontSize: 14,\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 600,\r\n lineHeight: '22px',\r\n paddingBottom: 5,\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n lineHeight: '20px !important',\r\n fontFamily: 'Segoe UI',\r\n padding: '4px 0 !important',\r\n position: 'relative',\r\n top: 0.5,\r\n '& .ads-label': {\r\n ...defaultAdsLabelStyles,\r\n margin: '0 !important',\r\n color: '#2b2b2b !important',\r\n border: '.5px solid rgba(43, 43, 43, .3) !important',\r\n opacity: '1 !important',\r\n fontSize: '11px !important',\r\n },\r\n '& .business-name': {\r\n position: 'relative !important',\r\n padding: '12px !important',\r\n margin: '0 !important',\r\n color: '#2b2b2b !important',\r\n fontSize: '11px !important',\r\n },\r\n },\r\n };\r\n};\r\n","export const getBingSearchPlacementBaseStyles = () => ({\r\n placementCard: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n\r\n position: 'relative',\r\n boxSizing: 'content-box',\r\n overflow: 'hidden',\r\n background: '#fff',\r\n margin: 'auto',\r\n\r\n '& .placement-card-content': {\r\n width: '100%',\r\n height: '100%',\r\n },\r\n },\r\n placementTextContainer: {\r\n margin: '4px 8px 0 8px',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n color: '#0078d4',\r\n cursor: 'pointer',\r\n overflow: 'hidden',\r\n '&:hover': {\r\n color: '#004578',\r\n },\r\n\r\n '& .logo-and-text-container': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n paddingBottom: 8,\r\n '& .logo-text': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n },\r\n },\r\n placementLongHeadline: {\r\n height: 28,\r\n fontSize: 20,\r\n fontWeight: 400,\r\n lineHeight: '24px',\r\n overflow: 'hidden',\r\n width: '100%',\r\n },\r\n placementFinalUrl: {\r\n height: 20,\r\n fontSize: 14,\r\n color: '#0b6a0b',\r\n },\r\n placementDescriptionContainer: {\r\n display: 'flex',\r\n },\r\n placementAdsLabel: {\r\n position: 'static !important',\r\n color: '#767676 !important',\r\n border: '1px solid #ddd !important',\r\n margin: '0 4px 0 0 !important',\r\n display: 'inline',\r\n opacity: '100% !important',\r\n padding: '0 2px !important',\r\n maxHeight: 16,\r\n fontWeight: 600,\r\n lineHeight: 1,\r\n borderRadius: '6px !important',\r\n },\r\n placementDescription: {\r\n color: '#333',\r\n display: 'inline-block',\r\n fontSize: 13,\r\n flexGrow: 1,\r\n },\r\n});\r\n\r\nexport const getBingSearchTextPlacementStyles = (theme) => {\r\n const { placementCard, placementTextContainer, ...baseStyles } = getBingSearchPlacementBaseStyles(theme);\r\n const styles = {\r\n ...baseStyles,\r\n\r\n placementCard: {\r\n ...placementCard,\r\n width: 608,\r\n minHeight: 110,\r\n padding: '8px 16px',\r\n alignItems: 'flex-start',\r\n },\r\n placementTextContainer: {\r\n ...placementTextContainer,\r\n '& .logo-and-text-container .logo-text .logo-business-name': {\r\n color: '#666',\r\n fontSize: 14,\r\n fontWeight: 400,\r\n lineHeight: '22px',\r\n },\r\n },\r\n placementLogoContainer: {\r\n paddingRight: 8,\r\n '& .cropped-image-view': {\r\n borderRadius: 6,\r\n },\r\n },\r\n };\r\n return styles;\r\n};\r\n\r\nexport const getBingSearchTextDesktopPlacementStyles = (theme) => {\r\n const { placementCard, ...baseStyles } = getBingSearchPlacementBaseStyles(theme);\r\n const styles = {\r\n ...baseStyles,\r\n\r\n placementCard: {\r\n ...placementCard,\r\n display: 'block',\r\n width: 530,\r\n height: 110,\r\n top: 0,\r\n padding: '8px 16px',\r\n boxShadow: 'none',\r\n // border: none;\r\n // border-radius: 5.11px;\r\n },\r\n bingSearchDesktopPlacementRoot: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n '& .header-image': {\r\n position: 'relative',\r\n left: -16,\r\n height: 100,\r\n '& img': {\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n },\r\n };\r\n return styles;\r\n};\r\n\r\nexport const getBingSearchTextMobilePlacementStyles = (theme) => {\r\n const { placementCard, ...baseStyles } = getBingSearchPlacementBaseStyles(theme);\r\n const styles = {\r\n ...baseStyles,\r\n\r\n placementCard: {\r\n ...placementCard,\r\n display: 'block',\r\n width: 608,\r\n border: '0.5px solid #ddd',\r\n height: 110,\r\n padding: '8px 16px',\r\n boxShadow: '0px 0.511px 1.533px rgb(0 0 0 / 10%), 0px 2.72533px 6.132px rgb(0 0 0 / 13%)',\r\n borderRadius: 5.11,\r\n },\r\n bingSearchMobilePlacementRoot: {\r\n display: 'flex',\r\n flexGrow: 1,\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n position: 'relative',\r\n width: 700,\r\n opacity: '100%',\r\n border: '5px solid #605e5c',\r\n borderRadius: '40px 40px 0 0',\r\n borderBottom: 'none',\r\n '& .bing-search-mobile-placement-parent': {\r\n margin: '45px 15px 0 15px',\r\n borderBottom: 'none',\r\n borderRadius: 0,\r\n paddingBottom: 1,\r\n\r\n '&:before': {\r\n position: 'absolute',\r\n top: 20,\r\n left: '50%',\r\n border: '5px solid #605e5c',\r\n content: '\"\"',\r\n borderRadius: 5,\r\n },\r\n },\r\n },\r\n };\r\n return styles;\r\n};\r\n","export const getOutlookPlacementBaseStyles = () => ({\r\n placementCard: {\r\n display: 'block',\r\n border: '1px solid #C8C8C8',\r\n margin: 'auto',\r\n overflow: 'hidden',\r\n position: 'relative !important',\r\n background: '#fff',\r\n boxSizing: 'content-box',\r\n boxShadow: 'none',\r\n\r\n '& .placement-card-content': {\r\n width: '100%',\r\n height: '100%',\r\n },\r\n },\r\n placementTextContainer: undefined,\r\n placementBusinessNameWithAdsLabel: undefined,\r\n placementShortHeadline: undefined,\r\n placementDescription: undefined,\r\n placementLogoContainer: undefined,\r\n});\r\n\r\nexport const getOutlookMobilePlacementStyles = (theme) => {\r\n const { placementCard, ...baseStyles } = getOutlookPlacementBaseStyles(theme);\r\n const styles = {\r\n ...baseStyles,\r\n\r\n placementCard: {\r\n ...placementCard,\r\n width: 340,\r\n height: 80,\r\n borderRadius: '5.11px',\r\n padding: '5px 10px 5px 15px',\r\n\r\n '& .placement-card-content': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n },\r\n },\r\n\r\n placementTextContainer: {\r\n display: 'block',\r\n fontSize: '10px !important',\r\n lineHeight: '16px',\r\n color: '#0078d4',\r\n cursor: 'pointer',\r\n overflow: 'hidden',\r\n '&:hover': {\r\n color: '#004578',\r\n },\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n color: 'black !important',\r\n fontSize: '20px !important',\r\n maxWidth: 300,\r\n marginTop: '0px !important',\r\n lineHeight: '30px !important',\r\n verticalAlign: 'middle',\r\n\r\n '& .ads-label': {\r\n color: 'white !important',\r\n width: 'auto',\r\n height: 15,\r\n margin: '0 4px 0 0 !important',\r\n display: 'inline-block !important',\r\n padding: '0 4px !important',\r\n lineHeight: '15px !important',\r\n verticalAlign: 'middle',\r\n backgroundColor: 'blue !important',\r\n border: 'unset !important',\r\n borderRadius: '4px !important',\r\n position: 'relative !important',\r\n fontSize: '10px !important',\r\n },\r\n\r\n '& .business-name': {\r\n color: 'unset !important',\r\n padding: 'unset !important',\r\n fontSize: 'unset !important',\r\n marginTop: 'unset !important',\r\n lineHeight: 'unset !important',\r\n },\r\n },\r\n\r\n placementShortHeadline: {\r\n fontSize: 13,\r\n marginTop: 2,\r\n fontWeight: 200,\r\n lineHeight: '19.5px',\r\n paddingBottom: 5,\r\n },\r\n\r\n placementDescription: {\r\n color: 'black',\r\n fontSize: 13,\r\n marginTop: 2,\r\n lineHeight: '19.5px',\r\n },\r\n\r\n placementLogoContainer: {\r\n paddingTop: 8,\r\n paddingRight: 16,\r\n '& .cropped-image-view': {\r\n borderRadius: '50%',\r\n },\r\n },\r\n };\r\n return styles;\r\n};\r\n\r\nexport const getOutlookWebPlacementStyles = (theme) => {\r\n const { placementCard, ...baseStyles } = getOutlookPlacementBaseStyles(theme);\r\n const styles = {\r\n ...baseStyles,\r\n\r\n outlookWebCardRoot: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n margin: 'auto',\r\n },\r\n\r\n placementCard: {\r\n ...placementCard,\r\n minWidth: 500,\r\n borderRadius: 0,\r\n\r\n '& .placement-card-content': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n },\r\n },\r\n\r\n placementTextContainer: {\r\n display: 'inline',\r\n fontSize: '10px !important',\r\n lineHeight: '16px',\r\n color: '#0078d4',\r\n cursor: 'pointer',\r\n overflow: 'hidden',\r\n\r\n '& .logo-and-businessname-container': {\r\n display: 'inline-block',\r\n position: 'relative',\r\n },\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n display: 'inline-block !important',\r\n margin: '0px 40px 0px 0px !important',\r\n verticalAlign: 'middle',\r\n\r\n '& .ads-label': {\r\n color: 'white !important',\r\n width: 'auto',\r\n height: 13,\r\n margin: '0 4px 0 0 !important',\r\n display: 'inline-block !important',\r\n padding: '0 4px !important',\r\n lineHeight: '15px !important',\r\n verticalAlign: 'middle',\r\n backgroundColor: 'blue !important',\r\n border: 'unset !important',\r\n borderRadius: '4px !important',\r\n opacity: '90% !important',\r\n top: -2.5,\r\n position: 'relative !important',\r\n fontSize: '10px !important',\r\n },\r\n\r\n '& .business-name': {\r\n color: 'black !important',\r\n fontSize: '10px !important',\r\n lineHeight: '16px !important',\r\n padding: '4px 0px !important',\r\n },\r\n },\r\n\r\n placementShortHeadline: {\r\n display: 'inline-block',\r\n color: 'blue',\r\n padding: 4,\r\n fontWeight: 200,\r\n paddingBottom: 5,\r\n '&:before': {\r\n content: '\" \"',\r\n border: 'solid gray',\r\n display: 'inline-block',\r\n padding: '2px',\r\n transform: 'rotate(45deg) translateY(-3px)',\r\n borderWidth: '0 1.5px 1.5px 0',\r\n marginRight: 10,\r\n position: 'relative',\r\n left: -4,\r\n },\r\n '&::after': {\r\n content: '\"*\"',\r\n display: 'inline',\r\n padding: 4,\r\n color: 'gray',\r\n position: 'relative',\r\n left: 4,\r\n },\r\n },\r\n\r\n placementDescription: {\r\n display: 'inline-block',\r\n color: 'black',\r\n padding: 4,\r\n },\r\n\r\n placementLogoContainer: {\r\n padding: [2, 8, 2, 8],\r\n '& .cropped-image-view': {\r\n borderRadius: '50%',\r\n },\r\n },\r\n };\r\n return styles;\r\n};\r\n","const getLinkedInSingleImageBaseStyles = () => ({\r\n placementCard: {\r\n borderRadius: '0 !important',\r\n },\r\n placementCardHeader: undefined,\r\n placementCardPreview: undefined,\r\n placementCardFooter: undefined,\r\n placementLogo: undefined,\r\n placementCompanyName: undefined,\r\n placementPromoteText: undefined,\r\n placementImageContainer: undefined,\r\n placementIntroductoryText: undefined,\r\n placementHeadline: undefined,\r\n placementFinalUrl: undefined,\r\n placementCallToAction: undefined,\r\n});\r\n\r\nexport const getImageExtensionPlacementBaseStyles = () => ({\r\n});\r\nexport const getLinkedInSingleImageDesktopStyles = theme => ({\r\n // base styles\r\n ...getLinkedInSingleImageBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n height: '100%',\r\n gap: '0px !important',\r\n paddingLeft: '0px !important',\r\n paddingRight: '0px !important',\r\n paddingBottom: '0px !important',\r\n '--fui-Card--size': '9.39px !important',\r\n },\r\n placementCardHeader: {\r\n marginBottom: '4.69px',\r\n paddingLeft: '9.39px',\r\n paddingRight: '9.39px',\r\n flexDirection: 'column', // Stack company name and promote text vertically\r\n alignItems: 'center', // Align to the start of the flex container\r\n '--fui-CardHeader--gap': '4.69px !important',\r\n },\r\n placementLogo: {\r\n width: '20px',\r\n height: '20px',\r\n },\r\n placementCompanyName: {\r\n color: '#323130',\r\n fontFamily: 'Segoe UI',\r\n fontSize: 8.216,\r\n fontStyle: 'normal',\r\n fontWeight: 600,\r\n lineHeight: '11.737px',\r\n letterSpacing: '-0.293px',\r\n },\r\n placementPromoteText: {\r\n fontSize: '7.042px !important',\r\n color: '#323130',\r\n lineHeight: '11.737px !important',\r\n },\r\n placementIntroductoryText: {\r\n marginTop: '0px',\r\n paddingLeft: '9.39px',\r\n paddingRight: '9.39px',\r\n marginBottom: '4.69px',\r\n fontSize: '8.216px !important',\r\n },\r\n placementCardPreview: {\r\n display: 'flex',\r\n },\r\n placementImageContainer: {\r\n },\r\n placementCardFooter: {\r\n display: 'flex',\r\n paddingTop: '4.69px',\r\n paddingBottom: '4.69px',\r\n paddingLeft: '9.39px',\r\n paddingRight: '9.39px',\r\n borderWidth: '1px',\r\n justifyContent: 'space-between',\r\n background: '#ECF1F6',\r\n },\r\n placementHeadline: {\r\n margin: '0px !important',\r\n overflow: 'hidden !important',\r\n display: '-webkit-box !important',\r\n WebkitBoxOrient: 'vertical !important',\r\n WebkitLineClamp: '2 !important',\r\n padding: '0px !important',\r\n fontSize: '8.216px !important',\r\n fontWeight: '600 !important',\r\n color: '#323130 !important',\r\n },\r\n placementFinalUrl: {\r\n margin: '0px',\r\n padding: '0px',\r\n border: '0px',\r\n display: 'block !important',\r\n fontSize: '7.042px !important',\r\n color: '#323130 !important',\r\n },\r\n placementCallToAction: {\r\n cursor: 'pointer !important',\r\n textDecorationLine: 'none !important',\r\n minHeight: '22px !important',\r\n minWidth: '0px !important',\r\n borderRadius: '11.737px !important',\r\n textAlign: 'center !important',\r\n fontSize: '8.216px !important',\r\n fontWeight: '700 !important',\r\n lineHeight: '9.389px !important',\r\n boxShadow: '0 0 0 1px #0a66c2 !important',\r\n color: '#004182 !important',\r\n display: 'flex',\r\n height: 14.084,\r\n padding: '3.521px 7.042px',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n backgroundColor: '#ECF1F6 !important',\r\n },\r\n\r\n});\r\n\r\nexport const getLinkedInSingleImageMobileStyles = theme => ({\r\n ...getLinkedInSingleImageDesktopStyles(theme),\r\n});\r\n\r\nexport const getLinkedInSingleImageMediumRectangleStyles = theme => ({\r\n // base styles\r\n ...getLinkedInSingleImageBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n height: '100%',\r\n '--fui-Card--size': '9.39px !important',\r\n },\r\n placementLogo: {\r\n width: '10px !important',\r\n height: '10px !important',\r\n },\r\n placementCompanyName: {\r\n color: '#323130 !important',\r\n fontFamily: 'Segoe UI !important',\r\n fontSize: '8.216px !important',\r\n fontStyle: 'normal !important',\r\n fontWeight: '600 !important',\r\n lineHeight: '11.737px !important',\r\n letterSpacing: '-0.293px !important',\r\n WebkitLineClamp: '1 !important',\r\n WebkitBoxOrient: 'vertical !important',\r\n marginLeft: '5px !important',\r\n },\r\n placementCardPreview: {\r\n display: 'flex !important',\r\n },\r\n placementCardFooter: {\r\n display: 'flex !important',\r\n flexDirection: 'column !important',\r\n paddingTop: '9.39px',\r\n gap: '9.39px !important',\r\n },\r\n placementHeadline: {\r\n color: '#323130 !important',\r\n fontFamily: 'Segoe UI !important',\r\n fontSize: '8.216px !important',\r\n fontStyle: 'normal !important',\r\n fontWeight: '700 !important',\r\n lineHeight: '11.737px !important',\r\n letterSpacing: '-0.293px !important',\r\n display: '-webkit-box !important',\r\n },\r\n placementCompanyMeta: {\r\n display: '-webkit-flex !important',\r\n },\r\n placementHeader: {\r\n display: '-webkit-flex !important',\r\n alignItems: 'flex-end',\r\n justifyContent: 'space-between',\r\n },\r\n placementCallToAction: {\r\n display: 'flex !important',\r\n padding: '2.004px 5.344px !important',\r\n justifyContent: 'center !important',\r\n alignItems: 'center !important',\r\n borderRadius: '2.725px !important',\r\n background: '#355996 !important',\r\n fontFamily: 'Segoe UI !important',\r\n fontSize: '8.216px !important',\r\n fontStyle: 'normal !important',\r\n fontWeight: '400 !important',\r\n lineHeight: '11px !important',\r\n color: '#FFFFFF !important',\r\n minWidth: '0px !important',\r\n },\r\n});\r\n\r\nexport const getLinkedInSingleImageMobileInterstitialStyles = theme => ({\r\n ...getLinkedInSingleImageMediumRectangleStyles(theme),\r\n\r\n placementIntroductoryText: {\r\n height: '60.891px !important',\r\n flexShrink: '0 !important',\r\n alignSelf: 'stretch !important',\r\n color: '#323130 !important',\r\n fontFamily: 'Segoe UI !important',\r\n fontSize: '8.216px !important',\r\n fontStyle: 'normal !important',\r\n fontWeight: '600 !important',\r\n lineHeight: '11.737px !important',\r\n letterSpacing: '-0.293px !important',\r\n },\r\n placementCompanyMeta: {\r\n display: '-webkit-flex !important',\r\n },\r\n placementHeader: {\r\n display: '-webkit-flex !important',\r\n justifyContent: 'space-between',\r\n flexDirection: 'column',\r\n gap: '5.87px',\r\n },\r\n});\r\n\r\nexport const getLinkedInSingleImageNativeStyles = theme => ({\r\n ...getLinkedInSingleImageMediumRectangleStyles(theme),\r\n\r\n placementCardHeader: {\r\n alignItems: 'center !important',\r\n flexDirection: 'column !important',\r\n '--fui-CardHeader--gap': '4.69px !important',\r\n },\r\n placementLogo: {\r\n width: '20px',\r\n height: '20px',\r\n },\r\n placementCompanyName: {\r\n color: '#323130',\r\n fontFamily: 'Segoe UI',\r\n fontSize: 8.216,\r\n fontStyle: 'normal',\r\n fontWeight: 600,\r\n lineHeight: '11.737px',\r\n letterSpacing: '-0.293px',\r\n },\r\n placementHeader: {\r\n display: '-webkit-flex !important',\r\n justifyContent: 'space-between',\r\n flexDirection: 'column',\r\n gap: '5.87px',\r\n },\r\n placementPromoteText: {\r\n fontSize: '7.042px !important',\r\n color: '#323130',\r\n lineHeight: '11.737px !important',\r\n },\r\n placementIntroductoryText: {\r\n fontSize: '8.216px !important',\r\n },\r\n placementCardFooter: {\r\n paddingTop: '9.39px',\r\n justifyContent: 'space-between',\r\n flexDirection: 'row !important',\r\n },\r\n});\r\n","export const getBoostPlacementBaseStyles = () => ({\r\n placementCard: {\r\n border: '1px solid #c8c8c8',\r\n boxShadow: 'unset !important',\r\n borderRadius: '0px !important',\r\n },\r\n placementImageContainer: undefined,\r\n placementTextContainer: {\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n placementAdsLabel: undefined,\r\n placementGradient: undefined,\r\n placementShortHeadline: undefined,\r\n placementLongHeadline: undefined,\r\n placementFinalUrl: undefined,\r\n placementDescription: undefined,\r\n placementCallToAction: undefined,\r\n placementBusinessNameWithAdsLabel: undefined,\r\n});\r\n\r\nexport const getBoostHeroImageCarouselStyles = (theme) => {\r\n // base styles\r\n const baseStyles = getBoostPlacementBaseStyles(theme);\r\n\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n },\r\n\r\n placementTextContainer: {\r\n position: 'absolute',\r\n maxWidth: '40%',\r\n minWidth: 100,\r\n top: '25%',\r\n left: '12%',\r\n padding: 15,\r\n borderRadius: 1,\r\n color: '#333',\r\n backgroundColor: 'rgba(255, 255, 255, 0.85)',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementLongHeadline: {\r\n fontSize: 16,\r\n marginBottom: 4,\r\n fontWeight: 'bold',\r\n },\r\n\r\n placementDescription: {\r\n },\r\n\r\n placementCallToAction: {\r\n color: 'white',\r\n backgroundColor: '#0067b8',\r\n border: 'none',\r\n marginTop: 4,\r\n },\r\n };\r\n};\r\n\r\nexport const getBoostWindowsSpotlight191x100Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getBoostPlacementBaseStyles(theme);\r\n\r\n return {\r\n ...baseStyles,\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n /*\r\n todo: setting position and top/left here to make it look exactly same as\r\n current preview but setting loation of placement in this level is not a\r\n good idea, as it may limit the usage of this component in other places\r\n */\r\n position: 'absolute !important',\r\n margin: '0 !important',\r\n left: '50%',\r\n top: '45% !important',\r\n transform: 'translate(-50%, -50%)',\r\n width: '444x !important',\r\n height: '250px !important',\r\n\r\n '& .hardcode-time': {\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n position: 'absolute',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n top: 40,\r\n left: '50%',\r\n color: 'white',\r\n transform: 'translate(-50%)',\r\n lineHeight: '22px',\r\n '& .time': {\r\n fontSize: 30,\r\n },\r\n '& .date': {\r\n fontSize: 7,\r\n paddingLeft: 5,\r\n },\r\n },\r\n },\r\n placementTextContainer: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n position: 'absolute',\r\n top: 12,\r\n left: 'unset',\r\n right: 10,\r\n bottom: 'unset',\r\n width: 130,\r\n height: 130,\r\n padding: 10,\r\n color: 'white',\r\n opacity: 0.8,\r\n fontSize: 8,\r\n lineHeight: '16px',\r\n borderRadius: 5,\r\n background: 'transparent',\r\n },\r\n placementCenterSection: {\r\n position: 'absolute',\r\n top: 118,\r\n left: 205,\r\n width: 60,\r\n fontSize: 14,\r\n },\r\n placementSearchIconCenter: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 21,\r\n width: 18,\r\n height: 18,\r\n },\r\n placementHotspotsCenterSection: {\r\n color: 'white',\r\n fontSize: 5,\r\n textAlign: 'center',\r\n marginTop: 13,\r\n lineHeight: '5px',\r\n },\r\n placementTopRightSection: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 25,\r\n width: 60,\r\n },\r\n placementCameraIcon: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 20,\r\n width: 18,\r\n height: 18,\r\n },\r\n placementLongHeadline: {\r\n color: 'white',\r\n fontSize: 5,\r\n textAlign: 'center',\r\n marginTop: 13,\r\n lineHeight: '5px',\r\n },\r\n placementDescription: {\r\n color: 'white',\r\n fontSize: 5,\r\n textAlign: 'center',\r\n marginTop: 2,\r\n lineHeight: '5px',\r\n },\r\n placementTopLeftSection: {\r\n position: 'absolute',\r\n top: 0,\r\n left: -280,\r\n width: 60,\r\n },\r\n placementSearchIconTopLeft: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 20,\r\n width: 18,\r\n height: 18,\r\n },\r\n placementHotspotsLeftSection: {\r\n color: 'white',\r\n fontSize: 5,\r\n textAlign: 'center',\r\n marginTop: 13,\r\n lineHeight: '5px',\r\n },\r\n placementWifiIcon: {\r\n position: 'absolute',\r\n top: 235,\r\n left: 410,\r\n width: 10,\r\n height: 10,\r\n },\r\n placementBatteryIcon: {\r\n position: 'absolute',\r\n top: 235,\r\n left: 425,\r\n width: 9,\r\n height: 9,\r\n },\r\n };\r\n};\r\n\r\nexport const getBoostDiscoverCard1x1Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getBoostPlacementBaseStyles(theme);\r\n\r\n return {\r\n ...baseStyles,\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '288px !important',\r\n height: 424,\r\n borderRadius: '5px !important',\r\n\r\n '& .hardcode-discover': {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n color: 'rgb(50, 49, 48)',\r\n width: '100%',\r\n fontSize: 14,\r\n fontWeight: 600,\r\n paddingLeft: 10,\r\n borderBottom: '1px solid rgb(232, 232, 232)',\r\n padding: '12px 0px 12px 16px',\r\n lineHeight: 1.4,\r\n },\r\n },\r\n placementImageContainer: {\r\n position: 'absolute',\r\n top: 44,\r\n width: 256,\r\n height: 210,\r\n padding: '0px 24px',\r\n margin: '16px 16px 0px',\r\n },\r\n placementShortHeadline: {\r\n position: 'absolute',\r\n width: 256,\r\n top: 286,\r\n left: 16,\r\n color: 'black',\r\n fontSize: 16,\r\n fontWeight: 600,\r\n paddingBottom: 10,\r\n },\r\n placementDescription: {\r\n position: 'absolute',\r\n top: 314,\r\n left: 16,\r\n color: 'black',\r\n fontSize: 12,\r\n width: 256,\r\n },\r\n placementCallToAction: {\r\n position: 'absolute',\r\n top: 364,\r\n left: 16,\r\n border: 'none',\r\n padding: 0,\r\n fontSize: 12,\r\n borderRadius: 5,\r\n backgroundColor: 'transparent',\r\n height: 60,\r\n },\r\n };\r\n};\r\n\r\nexport const getBoostStartMenuStyles = (theme) => {\r\n // base styles\r\n const baseStyles = getBoostPlacementBaseStyles(theme);\r\n\r\n return {\r\n ...baseStyles,\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '244px !important',\r\n height: 68,\r\n backgroundColor: '#262632 !important',\r\n },\r\n placementLogoContainer: {\r\n position: 'absolute',\r\n top: 40,\r\n left: 4,\r\n },\r\n placementShortHeadline: {\r\n position: 'absolute',\r\n left: 4,\r\n top: 8,\r\n width: 236,\r\n height: 16,\r\n fontSize: 12,\r\n fontWeight: 400,\r\n color: 'white',\r\n },\r\n placementLongHeadline: {\r\n position: 'absolute',\r\n left: 40,\r\n top: 35,\r\n color: 'white',\r\n fontSize: 12,\r\n width: 204,\r\n height: 32,\r\n },\r\n };\r\n};\r\n\r\nexport const getBoostActionStyles = (theme) => {\r\n // base styles\r\n const baseStyles = getBoostPlacementBaseStyles(theme);\r\n\r\n return {\r\n ...baseStyles,\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '360px !important',\r\n height: 216,\r\n backgroundColor: '#e8e9eb !important',\r\n zIndex: 1,\r\n },\r\n placementLogoContainer: {\r\n position: 'absolute',\r\n top: 57,\r\n left: 35,\r\n width: 45,\r\n height: 45,\r\n zIndex: 3,\r\n },\r\n placementSuggestedContainer: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n width: 360,\r\n height: 40,\r\n },\r\n placementVectorIcon: {\r\n position: 'absolute',\r\n color: 'black',\r\n width: 16,\r\n height: 16,\r\n top: 16,\r\n left: 117,\r\n },\r\n placementSuggestedText: {\r\n position: 'absolute',\r\n color: 'black',\r\n fontSize: 14,\r\n lineHeight: '16px',\r\n fontWeight: 600,\r\n width: 81,\r\n height: 20,\r\n top: 15,\r\n left: 135,\r\n textAlign: 'center',\r\n },\r\n placementDetailsContainer: {\r\n position: 'absolute',\r\n left: 16,\r\n top: 40,\r\n width: 328,\r\n height: 160,\r\n backgroundColor: 'white',\r\n zIndex: 2,\r\n },\r\n placementShortHeadline: {\r\n position: 'absolute',\r\n left: 90,\r\n top: 16,\r\n color: 'black',\r\n width: 191,\r\n height: 20,\r\n fontSize: 14,\r\n fontWeight: 600,\r\n lineHeight: '20px',\r\n paddingBottom: 5,\r\n zIndex: 3,\r\n },\r\n placementDescription: {\r\n position: 'absolute',\r\n left: 90,\r\n top: 37,\r\n color: 'black',\r\n fontSize: 12,\r\n width: 191,\r\n height: 67,\r\n fontWeight: 400,\r\n lineHeight: '20px',\r\n zIndex: 3,\r\n },\r\n placementActionContainer: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n position: 'absolute',\r\n top: 150,\r\n left: 28,\r\n width: 305,\r\n height: 30,\r\n // margin: '0 10px',\r\n gap: 7,\r\n zIndex: 3,\r\n },\r\n placementCallToAction: {\r\n color: 'black',\r\n width: 149,\r\n height: 30,\r\n border: '0.93px outset rgba(0, 0, 0, 0.0878)',\r\n borderRadius: '3.72px',\r\n boxShadow: 'rgba(0, 0, 0, 0.2622) 0.1px 0.53px 0.1px 0.1px',\r\n padding: '0.93px',\r\n backgroundColor: 'white',\r\n },\r\n placementDismissAction: {\r\n color: 'black',\r\n width: 149,\r\n height: 30,\r\n border: '0.93px outset rgba(0, 0, 0, 0.0878)',\r\n borderRadius: '3.72px',\r\n boxShadow: 'rgba(0, 0, 0, 0.2622) 0.1px 0.53px 0.1px 0.1px',\r\n padding: '0.93px',\r\n backgroundColor: 'white',\r\n },\r\n };\r\n};\r\n\r\nexport const getBoostBannerStyles = (theme) => {\r\n // base styles\r\n const baseStyles = getBoostPlacementBaseStyles(theme);\r\n\r\n return {\r\n ...baseStyles,\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '600px !important',\r\n height: 35,\r\n },\r\n placementLogoContainer: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: 10,\r\n transform: 'translateY(-50%)',\r\n },\r\n placementShortHeadline: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: 40,\r\n color: 'black',\r\n width: 220,\r\n fontSize: 12,\r\n transform: 'translateY(-50%)',\r\n paddingBottom: 5,\r\n },\r\n placementActionContainer: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n position: 'absolute',\r\n top: 1,\r\n bottom: 0,\r\n right: 30,\r\n },\r\n placementCallToAction: {\r\n color: 'white',\r\n border: 'none',\r\n padding: '5px 10px',\r\n borderRadius: 10,\r\n backgroundColor: '#0078d4',\r\n marginRight: 10,\r\n },\r\n placementDismissAction: {\r\n color: 'black',\r\n border: 'none',\r\n padding: '5px 10px',\r\n borderRadius: 10,\r\n },\r\n };\r\n};\r\n\r\nexport const getBoostProngFeed191x100Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getBoostPlacementBaseStyles(theme);\r\n\r\n return {\r\n ...baseStyles,\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '300px !important',\r\n height: 304,\r\n background: 'linear-gradient(140.53deg, #F5F7E1 9.32%, #CDF0FF 58.45%) !important',\r\n borderRadius: '8px !important',\r\n border: '1px solid rgba(0, 0, 0, 0.0578)',\r\n boxShadow: '0px 2px 4px 0px rgba(0, 0, 0, 0.04)',\r\n },\r\n placementImageContainer: {\r\n position: 'absolute',\r\n top: 48,\r\n left: 16,\r\n width: 268,\r\n height: 140,\r\n },\r\n placementLogoContainer: {\r\n position: 'absolute',\r\n top: 16,\r\n left: 16,\r\n width: 16,\r\n height: 16,\r\n },\r\n placementBusinessNameContainer: {\r\n position: 'absolute',\r\n top: 16,\r\n left: 40,\r\n width: 28,\r\n height: 20,\r\n color: 'rgba(26, 26, 26, 1) !important',\r\n padding: '0 !important',\r\n },\r\n placementLongHeadline: {\r\n position: 'absolute',\r\n width: '268px !important',\r\n top: 200,\r\n left: 16,\r\n height: 72,\r\n color: 'rgba(26, 26, 26, 1)',\r\n fontSize: 18,\r\n fontWeight: 600,\r\n lineHeight: '23.94px',\r\n },\r\n placementCallToAction: {\r\n position: 'absolute',\r\n top: 272,\r\n left: 106,\r\n width: 91,\r\n height: 24,\r\n fontSize: 12,\r\n fontWeight: 400,\r\n color: 'rgba(26, 26, 26, 1)',\r\n background: 'rgba(255, 255, 255, 0.46)',\r\n border: '1px solid',\r\n borderImageSource: 'linear-gradient(180deg, rgba(0, 0, 0, 0.0578) 90.58%, rgba(0, 0, 0, 0.1622) 100%)',\r\n borderRadius: '100px',\r\n marginTop: 4,\r\n },\r\n placementDotsIcon: {\r\n position: 'absolute',\r\n top: 10,\r\n right: 10,\r\n width: 28,\r\n height: 28,\r\n },\r\n };\r\n};\r\n\r\nexport const getBoostCoachmark175x100Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getBoostPlacementBaseStyles(theme);\r\n\r\n return {\r\n ...baseStyles,\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '280px !important',\r\n height: 300,\r\n },\r\n placementShortHeadline: {\r\n position: 'absolute',\r\n top: 180,\r\n left: 20,\r\n right: 20,\r\n color: 'black',\r\n fontWeight: 'bold',\r\n fontSize: 20,\r\n paddingBottom: 5,\r\n },\r\n placementDescription: {\r\n position: 'absolute',\r\n top: 210,\r\n left: 20,\r\n color: 'black',\r\n fontSize: 20,\r\n },\r\n placementCallToAction: {\r\n position: 'absolute',\r\n top: 260,\r\n left: 20,\r\n fontSize: 15,\r\n color: 'white',\r\n border: 'none',\r\n padding: '8px',\r\n borderRadius: 5,\r\n backgroundColor: '#0078d4',\r\n },\r\n };\r\n};\r\n\r\nexport const getResponsiveBoostWindowsSpotlight191x100Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getBoostWindowsSpotlight191x100Styles(theme);\r\n\r\n return baseStyles;\r\n};\r\n","import { extend } from 'underscore';\r\n\r\nexport const getDisclaimerStyles = ({ styleOverrides }) => (e, { palette = {} }) => (\r\n {\r\n additionalLineDisclaimer: extend({\r\n color: palette.themePrimary,\r\n fontSize: '13px',\r\n lineHeight: '24px',\r\n paddingLeft: '2px',\r\n }, styleOverrides.additionalLineDisclaimer),\r\n\r\n popupDisclaimer: extend({\r\n '& .disclaimer-title': {\r\n backgroundColor: 'white',\r\n color: '#767676',\r\n fontSize: '13px',\r\n lineHeight: '24px',\r\n textDecoration: 'underline',\r\n paddingLeft: '2px',\r\n border: 'none',\r\n },\r\n }, styleOverrides.popupDisclaimer),\r\n\r\n disclaimerCallout: extend({\r\n '& .ms-Callout-main': {\r\n width: '250px',\r\n padding: '15px',\r\n },\r\n '& button.close': {\r\n backgroundColor: 'white',\r\n border: 'none',\r\n float: 'right',\r\n marginTop: '-7px',\r\n },\r\n '& .title': {\r\n color: '#767676',\r\n marginBottom: '10px',\r\n },\r\n '& .content': {\r\n marginBottom: '3px',\r\n },\r\n '& .disclaimer-url': {\r\n color: palette.themePrimary,\r\n fontSize: '13px',\r\n lineHeight: '24px',\r\n },\r\n }, styleOverrides.disclaimerCallout),\r\n }\r\n);\r\n","import {\r\n getBingSearchTextPlacementStyles,\r\n getBingSearchTextDesktopPlacementStyles,\r\n getBingSearchTextMobilePlacementStyles,\r\n} from './bing-search-ad-placements-styles';\r\n\r\nconst getResponsiveSearchAdPlacementBaseStyles = baseStyles => (\r\n {\r\n ...baseStyles,\r\n\r\n placementContentContainer: {\r\n ...baseStyles.placementContentContainer,\r\n\r\n display: 'flex',\r\n },\r\n\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n\r\n height: 'unset',\r\n minHeight: 'unset',\r\n padding: '8px 16px 16px 16px',\r\n },\r\n\r\n placementTextContainer: {\r\n ...baseStyles.placementTextContainer,\r\n\r\n cursor: 'unset',\r\n },\r\n\r\n placementLongHeadline: {\r\n ...baseStyles.placementLongHeadline,\r\n\r\n height: 'unset',\r\n minHeight: '28px',\r\n },\r\n\r\n placementDescriptionContainer: {\r\n ...baseStyles.placementDescriptionContainer,\r\n\r\n marginTop: '4px',\r\n },\r\n\r\n placementInlineItems: {\r\n ...baseStyles.placementInlineItems,\r\n\r\n display: 'block',\r\n\r\n '& *': {\r\n display: 'inline',\r\n },\r\n },\r\n }\r\n);\r\n\r\nexport const getResponsiveSearchAdPlacementStyles = (theme) => {\r\n const { placementCard, ...baseStyles } = getResponsiveSearchAdPlacementBaseStyles(getBingSearchTextPlacementStyles(theme));\r\n const styles = {\r\n ...baseStyles,\r\n\r\n placementCard: {\r\n ...placementCard,\r\n\r\n width: '530px',\r\n marginBottom: '16px',\r\n },\r\n\r\n placementImage: {\r\n ...baseStyles.placementImage,\r\n\r\n margin: '8px 4px',\r\n },\r\n };\r\n return styles;\r\n};\r\n\r\nexport const getResponsiveSearchAdDesktopPlacementStyles = (theme) => {\r\n const { placementCard, ...baseStyles } = getResponsiveSearchAdPlacementBaseStyles(getBingSearchTextDesktopPlacementStyles(theme));\r\n const styles = {\r\n ...baseStyles,\r\n\r\n placementCard: {\r\n ...placementCard,\r\n\r\n width: '530px',\r\n },\r\n\r\n placementImage: {\r\n ...baseStyles.placementImage,\r\n\r\n margin: '8px 16px 8px 4px',\r\n },\r\n };\r\n return styles;\r\n};\r\n\r\nexport const getResponsiveSearchAdMobilePlacementStyles = (theme) => {\r\n const { placementCard, bingSearchMobilePlacementRoot, ...baseStyles } = getResponsiveSearchAdPlacementBaseStyles(getBingSearchTextMobilePlacementStyles(theme));\r\n const styles = {\r\n ...baseStyles,\r\n\r\n placementCard: {\r\n ...placementCard,\r\n\r\n width: '472px',\r\n },\r\n\r\n bingSearchMobilePlacementRoot: {\r\n ...bingSearchMobilePlacementRoot,\r\n\r\n width: '562px',\r\n marginBottom: '16px',\r\n },\r\n\r\n placementImage: {\r\n ...baseStyles.placementImage,\r\n\r\n margin: '8px 0px',\r\n },\r\n };\r\n return styles;\r\n};\r\n","// will replace mma-in-masn-v2-ad-placements-styles after ad preview refreshed GA\r\nexport const getMmaInMsanV2PlacementBaseStyles = () => ({\r\n placementCard: {\r\n // border: '1px solid #c8c8c8',\r\n // boxShadow: 'unset !important',\r\n // borderRadius: '0px !important',\r\n },\r\n placementImageContainer: undefined,\r\n placementTextContainer: undefined,\r\n placementInfoContainer: undefined,\r\n placementAdsLabel: undefined,\r\n placementGradient: undefined,\r\n placementLogoContainer: undefined,\r\n placementBusinessNameContainer: undefined,\r\n placementShortHeadline: undefined,\r\n businuessAndLogoContainer: undefined,\r\n placementLongHeadline: undefined,\r\n placementFinalUrl: undefined,\r\n placementDescription: undefined,\r\n placementCallToAction: undefined,\r\n placementCallToActionAsLink: undefined,\r\n placementBusinessNameWithAdsLabel: undefined,\r\n businuessAndAdChoiceContainer: undefined,\r\n adsLabelClassName: undefined,\r\n headChoiceIconClassName: undefined,\r\n adsLabelContainerClassName: undefined,\r\n});\r\n\r\nexport const getMmaInMsanV2RefreshedMSANRiver191x100Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '300px !important',\r\n height: 304,\r\n padding: '0px !important',\r\n border: '1px solid rgba(0, 0, 0, 0.05)',\r\n },\r\n\r\n placementImageContainer: {\r\n width: 300,\r\n height: 157,\r\n ...baseStyles.placementImageContainer,\r\n },\r\n\r\n placementTextContainer: {\r\n width: 300,\r\n height: 147,\r\n },\r\n\r\n placementInfoContainer: {\r\n height: 107,\r\n padding: '12px 16px 0',\r\n boxSizing: 'border-box',\r\n },\r\n\r\n businuessAndLogoContainer: {\r\n display: 'flex',\r\n marginBottom: 4,\r\n },\r\n\r\n placementLogoContainer: {\r\n height: 16,\r\n width: 16,\r\n marginRight: 8,\r\n '& .cropped-image-view': {\r\n borderRadius: '2px !important',\r\n '& img': {\r\n verticalAlign: 'top',\r\n },\r\n },\r\n },\r\n\r\n placementBusinessNameContainer: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 400,\r\n fontSize: 12,\r\n lineHeight: '16px',\r\n color: 'rgba(36, 36, 36,1)',\r\n },\r\n\r\n placementShortHeadline: {\r\n color: 'rgba(36, 36, 36,1)',\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 600,\r\n fontSize: 20,\r\n lineHeight: '26px',\r\n marginBottom: 4,\r\n height: 52,\r\n },\r\n\r\n placementDescription: {\r\n color: 'rgba(36, 36, 36,1)',\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 400,\r\n fontSize: 14,\r\n lineHeight: '20px',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n },\r\n\r\n businuessAndAdChoiceContainer: {\r\n height: 40,\r\n boxSizing: 'border-box',\r\n padding: '0px 16px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n\r\n headChoiceIconClassName: {\r\n marginRight: 8,\r\n },\r\n\r\n adsLabelContainerClassName: {\r\n flexGrow: 1,\r\n height: 16,\r\n },\r\n\r\n adsLabelClassName: {\r\n display: 'inline-block',\r\n verticalAlign: 'top',\r\n },\r\n\r\n placementCallToAction: {\r\n border: '1px solid rgba(209, 209, 209, 1)',\r\n padding: '3px 8px',\r\n borderRadius: '4px',\r\n color: 'rgba(36, 36, 36, 1)',\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '400',\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n backgroundColor: 'transparent',\r\n },\r\n\r\n placementCallToActionAsLink: {\r\n border: 'none',\r\n color: 'rgba(35, 92, 207, 1)',\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '400',\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n },\r\n };\r\n};\r\n\r\nexport const getMmaInMsanV2RefreshedMSNRestoday124x100Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '306px !important',\r\n height: 100,\r\n borderRadius: '6px !important',\r\n boxShadow: '0px 0px 2.9px 0px rgba(0, 0, 0, 0.11), 0px 1.6px 3.6px 0px rgba(0, 0, 0, 0.13) !important',\r\n '& .placement-card-content': {\r\n display: 'flex',\r\n flexDirection: 'row-reverse !important',\r\n },\r\n },\r\n\r\n placementImageContainer: {\r\n boxSizing: 'border-box',\r\n width: 112,\r\n height: '100%',\r\n padding: '8px 8px 8px 0',\r\n ...baseStyles.placementImageContainer,\r\n '& .cropped-image-view': {\r\n borderRadius: '4px !important',\r\n },\r\n },\r\n\r\n placementTextContainer: {\r\n flexGrow: 1,\r\n height: '100%',\r\n },\r\n\r\n businuessAndLogoContainer: {\r\n marginBottom: 4,\r\n },\r\n\r\n placementBusinessNameContainer: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 400,\r\n fontSize: 12,\r\n lineHeight: '16px',\r\n color: 'rgba(36, 36, 36,1)',\r\n },\r\n\r\n placementInfoContainer: {\r\n height: 68,\r\n padding: '8px 8px 0',\r\n boxSizing: 'border-box',\r\n },\r\n\r\n placementShortHeadline: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '600',\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n color: 'rgba(36, 36, 36,1)',\r\n },\r\n\r\n businuessAndAdChoiceContainer: {\r\n height: 32,\r\n boxSizing: 'border-box',\r\n padding: '0px 8px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n\r\n adsLabelContainerClassName: {\r\n flexGrow: 1,\r\n height: 16,\r\n },\r\n\r\n adsLabelClassName: {\r\n display: 'inline-block',\r\n verticalAlign: 'top',\r\n },\r\n };\r\n};\r\n\r\nexport const getMmaInMsanV2RefreshedMSNCarousel169x100Styles = (theme) => {\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '628px !important',\r\n height: 372,\r\n borderRadius: '6px !important',\r\n boxShadow: 'none !important',\r\n },\r\n\r\n placementImageContainer: {\r\n width: '100%',\r\n height: '100%',\r\n ...baseStyles.placementImageContainer,\r\n },\r\n\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n width: '100%',\r\n height: '194px',\r\n background: 'linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.54) 100%)',\r\n },\r\n\r\n placementInfoContainer: {\r\n paddingTop: '80px',\r\n height: '150px',\r\n boxSizing: 'border-box',\r\n },\r\n\r\n placementLongHeadline: {\r\n padding: '0px 16px',\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '600',\r\n fontSize: '28px',\r\n lineHeight: '35px',\r\n color: 'rgba(255, 255, 255, 1)',\r\n display: '-webkit-box',\r\n '-webkit-box-orient': 'vertical',\r\n '-webkit-line-clamp': 2, /* Limit to 2 lines */\r\n overflow: 'hidden',\r\n },\r\n\r\n businuessAndAdChoiceContainer: {\r\n height: 44,\r\n boxSizing: 'border-box',\r\n padding: '0px 16px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n\r\n adsLabelContainerClassName: {\r\n marginRight: 8,\r\n height: 16,\r\n },\r\n\r\n adsLabelClassName: {\r\n borderColor: 'rgba(255, 255, 255, 0.3) !important',\r\n color: 'white !important',\r\n },\r\n\r\n placementBusinessNameContainer: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '400',\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n flexGrow: 1,\r\n color: 'white',\r\n },\r\n };\r\n};\r\n\r\nexport const getMmaInMsanV2RefreshedMicrosoftEdgeCarousel201x100Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n borderRadius: '8px !important',\r\n width: '612px !important',\r\n height: 304,\r\n },\r\n\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n width: '100%',\r\n height: '280px',\r\n },\r\n\r\n placementGradient: {\r\n display: 'block',\r\n width: '100%',\r\n height: '178px !important',\r\n background: 'linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0) 50.03%, rgba(30, 30, 30, 0.34) 88.85%, rgba(0, 0, 0, 0.44) 100%)',\r\n },\r\n\r\n placementInfoContainer: {\r\n padding: '12px 16px 0px',\r\n minHeight: '62px',\r\n boxSizing: 'border-box',\r\n background: 'linear-gradient(360deg, rgba(0, 0, 0, 0.54) 5.47%, rgba(0, 0, 0, 0.54) 55.63%, rgba(0, 0, 0, 0.49) 78.44%, rgba(0, 0, 0, 0.475) 89.43%, rgba(0, 0, 0, 0.44) 100%)',\r\n },\r\n\r\n businuessAndLogoContainer: {\r\n display: 'flex',\r\n marginBottom: 8,\r\n },\r\n\r\n placementLogoContainer: {\r\n height: 16,\r\n width: 16,\r\n marginRight: 8,\r\n '& .cropped-image-view': {\r\n borderRadius: '2px !important',\r\n '& img': {\r\n verticalAlign: 'top',\r\n },\r\n },\r\n },\r\n\r\n placementBusinessNameContainer: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 400,\r\n fontSize: 12,\r\n lineHeight: '16px',\r\n color: 'white',\r\n },\r\n\r\n placementShortHeadline: {\r\n color: 'white',\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '600',\r\n fontSize: '20px',\r\n lineHeight: '26px',\r\n },\r\n\r\n businuessAndAdChoiceContainer: {\r\n height: 40,\r\n boxSizing: 'border-box',\r\n padding: '0px 16px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n background: 'var(--backplate-text-backplate-on-image-text-backplate-54451, rgba(0, 0, 0, 0.54))',\r\n },\r\n\r\n headChoiceIconClassName: {\r\n marginRight: 8,\r\n },\r\n\r\n adsLabelContainerClassName: {\r\n flexGrow: 1,\r\n height: 16,\r\n },\r\n\r\n adsLabelClassName: {\r\n display: 'inline-block',\r\n verticalAlign: 'top',\r\n borderColor: 'rgba(255, 255, 255, 0.3) !important',\r\n color: 'white !important',\r\n },\r\n\r\n placementCallToAction: {\r\n border: '1px solid',\r\n borderImageSource: 'linear-gradient(180deg, rgba(0, 0, 0, 0.0578) 90.58%, rgba(0, 0, 0, 0.1622) 100%)',\r\n padding: '3px 8px',\r\n borderRadius: '4px',\r\n color: 'rgba(255, 255, 255, 1)',\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '400',\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n backgroundColor: 'rgba(255, 255, 255, 0.15)',\r\n },\r\n\r\n placementCallToActionAsLink: {\r\n border: 'none',\r\n color: 'white',\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '400',\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n backgroundColor: 'transparent',\r\n },\r\n };\r\n};\r\n\r\nexport const getMmaInMsanV2RefreshedMSNPartnerStripe153x100Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '306px !important',\r\n height: 300,\r\n borderRadius: '4px !important',\r\n boxShadow: '0px 0px 2.9px 0px rgba(0, 0, 0, 0.11), 0px 1.6px 3.6px 0px rgba(0, 0, 0, 0.13) !important',\r\n },\r\n\r\n placementImageContainer: {\r\n height: 200,\r\n ...baseStyles.placementImageContainer,\r\n },\r\n\r\n placementInfoContainer: {\r\n padding: '8px 8px 0px',\r\n marginBottom: 24,\r\n height: 52,\r\n boxSizing: 'border-box',\r\n },\r\n\r\n placementLongHeadline: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '600',\r\n fontSize: '16px',\r\n lineHeight: '22px',\r\n color: 'rgba(36, 36, 36, 1)',\r\n },\r\n\r\n businuessAndAdChoiceContainer: {\r\n padding: '0px 8px',\r\n },\r\n\r\n placementBusinessNameContainer: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '400',\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n color: 'rgba(36, 36, 36, 1)',\r\n },\r\n };\r\n};\r\n\r\nexport const getMmaInMsanV2RefreshedMSANBanner2x1Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '396px !important',\r\n height: 100,\r\n borderRadius: '6px !important',\r\n boxShadow: '0px 0px 2.9px 0px rgba(0, 0, 0, 0.11), 0px 1.6px 3.6px 0px rgba(0, 0, 0, 0.13) !important',\r\n '& .placement-card-content': {\r\n display: 'flex',\r\n flexDirection: 'row !important',\r\n },\r\n },\r\n\r\n placementImageContainer: {\r\n width: 200,\r\n height: 100,\r\n ...baseStyles.placementImageContainer,\r\n },\r\n\r\n placementTextContainer: {\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n height: 100,\r\n },\r\n\r\n placementInfoContainer: {\r\n padding: '8px 8px 0',\r\n marginBottom: 20,\r\n height: 48,\r\n boxSizing: 'border-box',\r\n },\r\n\r\n placementShortHeadline: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '600',\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n color: 'rgba(36, 36, 36,1)',\r\n },\r\n\r\n businuessAndAdChoiceContainer: {\r\n height: 32,\r\n boxSizing: 'border-box',\r\n padding: '0px 8px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n\r\n adsLabelContainerClassName: {\r\n marginRight: 6,\r\n height: 16,\r\n },\r\n\r\n placementBusinessNameContainer: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '400',\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n color: 'rgba(36, 36, 36,1)',\r\n },\r\n };\r\n};\r\n\r\nexport const getMmaInMsanV2RefreshedMicrosoftEdgeMobile1x1Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n\r\n return {\r\n\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '398px !important',\r\n height: 145,\r\n padding: '16px',\r\n background: '#fff',\r\n borderRadius: '4px !important',\r\n border: '0.5px solid var(--Neutral-Stroke-3-Rest, rgba(240, 240, 240, 1))',\r\n boxShadow: '0px 2px 4px 0px rgba(0, 0, 0, 0.04) !important',\r\n '& .placement-card-content': {\r\n display: 'flex',\r\n flexDirection: 'row-reverse !important',\r\n },\r\n },\r\n\r\n placementImageContainer: {\r\n width: 114,\r\n height: 114,\r\n marginLeft: 16,\r\n ...baseStyles.placementImageContainer,\r\n },\r\n\r\n businuessAndLogoContainer: {\r\n display: 'flex',\r\n marginBottom: 4,\r\n },\r\n\r\n placementLogoContainer: {\r\n height: 16,\r\n width: 16,\r\n marginRight: 4,\r\n '& .cropped-image-view': {\r\n borderRadius: '2px !important',\r\n '& img': {\r\n verticalAlign: 'top',\r\n },\r\n },\r\n },\r\n\r\n placementBusinessNameContainer: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 400,\r\n fontSize: 12,\r\n lineHeight: '16px',\r\n color: 'rgba(36, 36, 36,1)',\r\n },\r\n\r\n placementTextContainer: {\r\n flexGrow: 1,\r\n },\r\n\r\n placementInfoContainer: {\r\n marginBottom: 18,\r\n height: 80,\r\n },\r\n\r\n placementShortHeadline: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '600',\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n color: 'rgba(36, 36, 36,1)',\r\n },\r\n\r\n businuessAndAdChoiceContainer: {\r\n height: 16,\r\n boxSizing: 'border-box',\r\n padding: '0px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n\r\n adsLabelContainerClassName: {\r\n flexGrow: 1,\r\n height: 16,\r\n },\r\n\r\n adsLabelClassName: {\r\n display: 'inline-block',\r\n verticalAlign: 'top',\r\n },\r\n };\r\n};\r\n\r\nexport const getMmaInMsanV2RefreshedMSANRectangle191x100Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '300px !important',\r\n height: 250,\r\n borderRadius: '6px !important',\r\n },\r\n\r\n placementImageContainer: {\r\n height: 157,\r\n ...baseStyles.placementImageContainer,\r\n },\r\n\r\n placementTextContainer: {\r\n padding: '8px 16px',\r\n },\r\n\r\n placementInfoContainer: {\r\n width: 224,\r\n paddingTop: '6px',\r\n height: 77,\r\n boxSizing: 'border-box',\r\n },\r\n\r\n businuessAndLogoContainer: {\r\n display: 'flex',\r\n marginBottom: 4,\r\n },\r\n\r\n placementLogoContainer: {\r\n width: 16,\r\n marginRight: 4,\r\n '& .cropped-image-view': {\r\n borderRadius: '2px !important',\r\n '& img': {\r\n verticalAlign: 'top',\r\n },\r\n },\r\n },\r\n\r\n placementBusinessNameContainer: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 400,\r\n fontSize: 12,\r\n lineHeight: '16px',\r\n color: 'rgba(97, 97, 97, 1)',\r\n },\r\n\r\n placementShortHeadline: {\r\n color: 'rgba(26, 26, 26, 1)',\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '600',\r\n fontSize: '18px',\r\n lineHeight: '19px',\r\n },\r\n\r\n smallSizeHeadline: {\r\n fontSize: '14px',\r\n },\r\n\r\n customizedArea: {\r\n position: 'absolute',\r\n right: '16px',\r\n bottom: '28.5px',\r\n },\r\n\r\n placementDescription: {\r\n marginTop: 4,\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '400',\r\n fontZize: '14px',\r\n lineHeight: '20px',\r\n color: 'rgba(26, 26, 26, 1)',\r\n },\r\n\r\n businuessAndAdChoiceContainer: {\r\n position: 'absolute',\r\n right: 0,\r\n top: 0,\r\n width: '16px',\r\n height: '16px',\r\n borderBottomLeftRadius: '5px',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n backgroundColor: 'rgba(255, 255, 255, 0.7)',\r\n },\r\n };\r\n};\r\n","export const getOutlookMobileRefreshedPlacementStyles = () => {\r\n const styles = {\r\n outlookWebCardRoot: {\r\n margin: 'auto',\r\n width: '100%',\r\n height: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n overflowX: 'auto',\r\n },\r\n\r\n placementCard: {\r\n width: 375,\r\n height: 85,\r\n padding: '10px 16px 10px 0px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n cursor: 'pointer',\r\n\r\n '& .placement-card-content': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n height: '100%',\r\n },\r\n\r\n '&:hover': {\r\n backgroundColor: 'rgba(245, 245, 245, 1)',\r\n },\r\n },\r\n\r\n unreadClassName: {\r\n margin: '0px 4px',\r\n height: 8,\r\n width: 8,\r\n },\r\n\r\n placementTextContainer: {\r\n display: 'block',\r\n position: 'relative',\r\n height: '100%',\r\n width: 293,\r\n },\r\n\r\n adsLabelClassName: {\r\n position: 'absolute',\r\n right: 26,\r\n top: 3,\r\n width: 24,\r\n height: '18px !important',\r\n borderRadius: '2px !important',\r\n border: '1px solid rgba(0, 120, 212, 1) !important',\r\n padding: '0px 4px !important',\r\n boxSizing: 'border-box !important',\r\n textAlign: 'center !important',\r\n fontWeight: '400 !important',\r\n fontSize: '12px !important',\r\n lineHeight: '16px !important',\r\n color: 'rgba(0, 120, 212, 1) !important',\r\n },\r\n\r\n threeDot: {\r\n position: 'absolute',\r\n right: 0,\r\n top: 3,\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '600',\r\n fontSize: '16px',\r\n lineHeight: '24px',\r\n },\r\n\r\n placementShortHeadline: {\r\n fontFamily: 'Segoe UI',\r\n fontSize: 14,\r\n fontWeight: 600,\r\n lineHeight: '20px',\r\n color: 'rgba(15, 108, 189, 1)',\r\n },\r\n\r\n descriptionWithAction: {\r\n display: 'flex',\r\n flexWrap: 'nowrap',\r\n alignItems: 'center',\r\n },\r\n\r\n placementCallToAction: {\r\n flexShrink: 0,\r\n height: '24px',\r\n borderRadius: '4px',\r\n border: '1px solid rgba(209, 209, 209, 1)',\r\n backgroundColor: 'transparent',\r\n padding: '0px 8px',\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 400,\r\n fontSize: 12,\r\n lineHeight: '22px',\r\n color: 'rgba(36, 36, 36, 1)',\r\n marginLeft: '4px',\r\n boxSizing: 'border-box',\r\n },\r\n\r\n placementDescription: {\r\n color: 'rgba(97, 97, 97, 1)',\r\n fontSize: 14,\r\n lineHeight: '20px',\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 400,\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n flexGrow: 1,\r\n },\r\n\r\n placementLogoContainer: {\r\n width: 38,\r\n marginRight: 13,\r\n '& .cropped-image-view': {\r\n borderRadius: '50% !important',\r\n },\r\n },\r\n };\r\n return styles;\r\n};\r\n\r\nexport const getOutlookWebRefreshedPlacementStyles = () => {\r\n const styles = {\r\n outlookWebCardRoot: {\r\n margin: 'auto',\r\n width: '100%',\r\n height: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n overflowX: 'auto',\r\n },\r\n\r\n placementCard: {\r\n width: 1089,\r\n height: 36,\r\n borderRadius: 0,\r\n display: 'flex',\r\n flexDirection: 'row',\r\n flexShrink: 0,\r\n alignItems: 'center',\r\n backgroundColor: 'white',\r\n borderBottom: '1px solid var(--Neutral-colors-neutralLight, rgba(240, 240, 240, 1))',\r\n boxShadow: '0px -1px 0px 0px rgba(240, 240, 240, 1) inset',\r\n paddingRight: 28,\r\n boxSizing: 'border-box',\r\n\r\n '& .placement-card-content': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n height: '100%',\r\n flexGrow: 1,\r\n },\r\n },\r\n\r\n unreadClassName: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n height: '100%',\r\n width: 28,\r\n '& .unread-flag': {\r\n height: '100%',\r\n width: '4px',\r\n backgroundColor: 'rgba(15, 108, 189, 1)',\r\n content: '',\r\n display: 'block',\r\n },\r\n\r\n '& .unread-arrow': {\r\n width: 16,\r\n height: 16,\r\n marginLeft: 2,\r\n },\r\n },\r\n\r\n placementTextContainer: {\r\n position: 'relative',\r\n display: 'flex',\r\n alignItems: 'center',\r\n height: '100%',\r\n flexGrow: 1,\r\n padding: '8px 4px 8px 8px',\r\n boxSizing: 'border-box',\r\n\r\n '& .logo-and-businessname-container': {\r\n display: 'inline-block',\r\n position: 'relative',\r\n },\r\n },\r\n\r\n adsLabelClassName: {\r\n position: 'absolute',\r\n left: 176,\r\n top: 9,\r\n width: 24,\r\n height: '18px !important',\r\n border: '1px solid rgba(0, 120, 212, 1) !important',\r\n padding: '0px 4px !important',\r\n boxSizing: 'border-box !important',\r\n textAlign: 'center !important',\r\n borderRadius: '2px !important',\r\n fontWeight: '400 !important',\r\n fontSize: '12px !important',\r\n lineHeight: '16px !important',\r\n color: 'rgba(0, 120, 212, 1) !important',\r\n },\r\n\r\n threeDot: {\r\n position: 'absolute',\r\n left: 208,\r\n top: 9,\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n width: 224,\r\n marginRight: 16,\r\n },\r\n\r\n placementShortHeadline: {\r\n marginRight: 8,\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '600',\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n color: 'rgba(15, 108, 189, 1)',\r\n },\r\n\r\n placementDescription: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 400,\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n color: 'rgba(97, 97, 97, 1)',\r\n },\r\n\r\n placementLogoContainer: {\r\n width: 28,\r\n '& .cropped-image-view': {\r\n borderRadius: '50% !important',\r\n },\r\n },\r\n };\r\n return styles;\r\n};\r\n","import React, { useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { getPlacementCardStyles } from '../styles';\r\n\r\nconst MMAPlacementCardImpl = ({\r\n isEnabled,\r\n url,\r\n width, // in pixel\r\n height, // in pixel\r\n children,\r\n mmaPlacementCardClassName,\r\n classes,\r\n isAdPreviewRefreshEnabled,\r\n}) => {\r\n const styles = useMemo(() => ((width || height) ? ({\r\n width: width ? `${width}px` : undefined,\r\n height: height ? `${height}px` : undefined,\r\n }) : undefined), [height, width]);\r\n\r\n return (\r\n
\r\n {url && (\r\n \r\n {children}\r\n \r\n )}\r\n {!url && (\r\n \r\n {children}\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nMMAPlacementCardImpl.propTypes = {\r\n isEnabled: PropTypes.bool,\r\n url: PropTypes.string,\r\n width: PropTypes.number,\r\n height: PropTypes.number,\r\n children: PropTypes.node.isRequired,\r\n mmaPlacementCardClassName: PropTypes.string,\r\n classes: PropTypes.shape({\r\n mmaPlacementCardRoot: PropTypes.string,\r\n mmaPlacementCardDisabled: PropTypes.string,\r\n }).isRequired,\r\n};\r\n\r\nMMAPlacementCardImpl.defaultProps = {\r\n isEnabled: true,\r\n url: undefined,\r\n width: undefined,\r\n height: undefined,\r\n mmaPlacementCardClassName: undefined,\r\n};\r\n\r\nexport const MMAPlacementCard = withUAPLThemedStyles(\r\n MMAPlacementCardImpl,\r\n getPlacementCardStyles,\r\n { componentName: 'MMAPlacementCard ' }\r\n);\r\n","export const getPlacementCardStyles = (/* theme */) => ({\r\n mmaRefreshedPlacementCardRoot: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n // flex: 1,\r\n alignItems: 'center',\r\n\r\n position: 'relative',\r\n boxSizing: 'border-box',\r\n overflow: 'hidden',\r\n boxShadow: '0px 0px 2px 0px rgba(0, 0, 0, 0.12), 0px 2px 4px 0px rgba(0, 0, 0, 0.14)',\r\n borderRadius: 8,\r\n background: '#fff',\r\n margin: 'auto',\r\n\r\n '& .placement-card-content': {\r\n width: '100%',\r\n height: '100%',\r\n },\r\n },\r\n mmaPlacementCardRoot: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n // flex: 1,\r\n alignItems: 'center',\r\n\r\n position: 'relative',\r\n boxSizing: 'content-box',\r\n overflow: 'hidden',\r\n boxShadow: '0px 0.511px 1.533px rgb(0 0 0 / 10%), 0px 2.72533px 6.132px rgb(0 0 0 / 13%)',\r\n borderRadius: 5.11,\r\n background: '#fff',\r\n margin: 'auto',\r\n\r\n '& .placement-card-content': {\r\n width: '100%',\r\n height: '100%',\r\n },\r\n },\r\n mmaPlacementCardDisabled: {\r\n opacity: 0.5,\r\n },\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nexport const PlacementContentContainer = ({\r\n finalUrl,\r\n displayUrl,\r\n isClickDisabled,\r\n placementContentContainerClassName,\r\n children,\r\n}) => {\r\n if (isClickDisabled) {\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n }\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nPlacementContentContainer.propTypes = {\r\n finalUrl: PropTypes.string,\r\n displayUrl: PropTypes.string,\r\n isClickDisabled: PropTypes.bool,\r\n placementContentContainerClassName: PropTypes.string,\r\n children: PropTypes.node.isRequired,\r\n};\r\n\r\nPlacementContentContainer.defaultProps = {\r\n finalUrl: undefined,\r\n displayUrl: undefined,\r\n isClickDisabled: false,\r\n placementContentContainerClassName: undefined,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { getAdLabelStyles } from '../styles';\r\n\r\nconst AdLabelImpl = ({\r\n i18n, adsLabelClassName, classes, isAdPreviewRefreshEnabled,\r\n}) => (\r\n
\r\n {i18n.getString('Ad')}\r\n
\r\n);\r\n\r\nAdLabelImpl.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n adsLabelClassName: PropTypes.string,\r\n classes: PropTypes.shape({\r\n adLabelRoot: PropTypes.string,\r\n }).isRequired,\r\n};\r\n\r\nAdLabelImpl.defaultProps = {\r\n adsLabelClassName: undefined,\r\n};\r\n\r\nexport const AdLabel = withUAPLThemedStyles(\r\n AdLabelImpl,\r\n getAdLabelStyles,\r\n { componentName: 'AdLabel' }\r\n);\r\n","export const getAdLabelStyles = (/* theme */) => ({\r\n adLabelRoot: {\r\n position: 'absolute',\r\n backgroundColor: 'white', // palette.white,\r\n color: 'black', // color: palette.black,\r\n fontSize: 11,\r\n borderRadius: 5,\r\n padding: '1.2px 6px 1.8px 6px',\r\n margin: 7,\r\n opacity: '90%',\r\n },\r\n\r\n adLabelRefreshedRoot: {\r\n display: 'inline-block',\r\n verticalAlign: 'top',\r\n borderRadius: '4px',\r\n border: '0.5px solid rgba(26, 26, 26, 0.3)',\r\n padding: '1px 4px',\r\n height: 16,\r\n boxSizing: 'border-box',\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 400,\r\n fontSize: '11px',\r\n lineHeight: '12px',\r\n color: 'rgba(43, 43, 43, 0.8)', // color: palette.black,\r\n },\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { getBusinessNameWithAdLabelStyles } from '../styles';\r\n\r\nconst adsIconImg = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAotJREFUWIW9lrFWGlEQhr+5cEzLG2R9AxBTpMM6jWBSUAlPID4B+ATKE0gqz4mH3Sq1WOWc6EregE2bxjUdJjApUBS4wC4L+bu9d/b+387cnTMCQNtvIBwBIHT4O2zy6V2H/yCh7VcQzi1bHaRfpfg+2CSAwcihfUsL6FYPzz/H++ZsCkBw/XsgEyF0Ixkx0cxhUxkxlrUAzD5pKaC0ZjmorBNEcH2dXNEaxd3m+Pmi6/Bm4IFk55zQgseTVUtjgHBiRc2PiedyLqC0m0OpgsyaJMyIAQmXhwEH+Ralne2lIJd+Iw6I7Q5EBTm2gqSoo1tXXPqN9QJ4XQfPP8W9PXwCOaMvewg2I4cUdVy/N45PBOB1HXTYRamBtMaHlnMBxfwJfbNt/WPAGcXPB4lTgpd+ITJZ43Iu4CBfXQUkGkAxFzylOgDtEJqmNS4OyJfvWQDBveuBvvoiKVDauY4EtkwXXYc36oHae8hguBe9BG2/gevf4/o9zrvR2nc5FyCyx3SveVZKTqMDjOaFDOCQGSy82ZaX5/Qayax2CcGe0ml5NwVUryZL/EpDPUvHAIgu76YAqTqqBVBLgHbANPiYv14vQNuvYORwqXEpP77k6wFo+xVE6qAOGs14PQDe7RFqaqMaxzNOBqAmi3vXQ+cZE4BUFhknA5jXWEadskFp93PUk9KgEWfChQpRzvhtmlRz0eaLF4CpoVSGWcCWunAmNoHxa4BJqdTwbgFxAAcICc0xw0EVY06fmkqI0uLxsUk52Zg+O5RapZVxXb/eveWXPKz6xdNKY0/tpPp/XkryYefnOoyftWwoDUErSdO8GEDUNjiA0uLBbMf5pVZRGkwTHWYR9kE7qHSS3Oq4+gfBZCnchNpiDQAAAABJRU5ErkJggg==';\r\n\r\nexport const BusinessNameWithAdsLabelImpl = ({\r\n businessName,\r\n showAdsLabel,\r\n showAdsIcon,\r\n i18n,\r\n rootClassName,\r\n classes,\r\n isAdPreviewRefreshEnabled,\r\n}) => (\r\n
\r\n {\r\n showAdsLabel && {i18n.getString(_TL_('Ad'))}\r\n }\r\n {\r\n businessName && {businessName}\r\n }\r\n {\r\n showAdsIcon && \"icon\"\r\n }\r\n
\r\n);\r\n\r\nBusinessNameWithAdsLabelImpl.propTypes = {\r\n businessName: PropTypes.string,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n showAdsLabel: PropTypes.bool,\r\n rootClassName: PropTypes.string,\r\n classes: PropTypes.shape({\r\n businessNameWithAdsLabelRoot: PropTypes.string,\r\n }).isRequired,\r\n showAdsIcon: PropTypes.bool,\r\n};\r\n\r\nBusinessNameWithAdsLabelImpl.defaultProps = {\r\n businessName: undefined,\r\n rootClassName: undefined,\r\n showAdsLabel: false,\r\n showAdsIcon: false,\r\n};\r\n\r\nexport const BusinessNameWithAdsLabel = withUAPLThemedStyles(\r\n BusinessNameWithAdsLabelImpl,\r\n getBusinessNameWithAdLabelStyles,\r\n { componentName: 'BusinessNameWithAdsLabel ' }\r\n);\r\n","export const getBusinessNameWithAdLabelStyles = (/* theme */) => ({\r\n businessNameWithAdsLabelRoot: {\r\n padding: [1, 0],\r\n overflow: 'hidden',\r\n marginTop: 9,\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n color: '#333', // color: palette.black,\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n\r\n '& .ads-label': {\r\n position: 'relative',\r\n padding: '.8px 4px',\r\n margin: '0 5px 0 0',\r\n background: 'transparent',\r\n color: '#78718a',\r\n lineHeight: 1.364,\r\n fontSize: '10px',\r\n fontWeight: '400',\r\n fontFamily: 'Segoe UI,Segoe WP,Arial,Sans-Serif',\r\n border: '.5px solid #78718a',\r\n borderRadius: '4px',\r\n },\r\n\r\n '& .business-name': {\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n color: '#333',\r\n fontSize: 11,\r\n lineHeight: 1.364,\r\n padding: '1px 0',\r\n marginTop: 9,\r\n },\r\n },\r\n\r\n businuessNameRefreshed: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 600,\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n color: 'rgba(0, 0, 0, 1)',\r\n },\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { getPlacementGradientStyles } from '../styles';\r\n\r\nconst GradientImpl = ({\r\n gradientClassName, classes,\r\n}) => (\r\n
\r\n);\r\n\r\nGradientImpl.propTypes = {\r\n gradientClassName: PropTypes.string,\r\n classes: PropTypes.shape({\r\n placementCardGradientRoot: PropTypes.string,\r\n }).isRequired,\r\n};\r\n\r\nGradientImpl.defaultProps = {\r\n gradientClassName: undefined,\r\n};\r\n\r\nexport const PlacementGradient = withUAPLThemedStyles(\r\n GradientImpl,\r\n getPlacementGradientStyles,\r\n { componentName: 'PlacementGradient ' }\r\n);\r\n","export const getPlacementGradientStyles = (/* theme */) => ({\r\n placementCardGradientRoot: {\r\n display: 'block',\r\n position: 'absolute',\r\n width: '100%',\r\n height: '100%',\r\n },\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport const withLink = (WrappedComponent) => {\r\n const HoC = React.memo(props => (\r\n \r\n \r\n \r\n ));\r\n\r\n HoC.propTypes = {\r\n finalUrl: PropTypes.string.isRequired,\r\n };\r\n\r\n return HoC;\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { MultiLineEllipsisText } from '@bingads-webui-react/multiline-ellipsis';\r\nimport { withLink } from './with-link';\r\n\r\nexport const PlacementText = React.forwardRef(({\r\n text,\r\n isMultiLine,\r\n placementTextClassName,\r\n}, ref) => (\r\n isMultiLine ?\r\n : (\r\n
\r\n {text}\r\n
\r\n )\r\n));\r\n\r\nPlacementText.propTypes = {\r\n text: PropTypes.string,\r\n isMultiLine: PropTypes.bool.isRequired,\r\n placementTextClassName: PropTypes.string,\r\n};\r\n\r\nPlacementText.defaultProps = {\r\n placementTextClassName: undefined,\r\n text: undefined,\r\n};\r\n\r\n\r\n// --------------------------------------------------------------------------------\r\nexport const PlacementHeadline = React.forwardRef(({\r\n headlineText,\r\n isMultiLine,\r\n placementHeadlineClassName,\r\n}, ref) => (\r\n \r\n));\r\n\r\nPlacementHeadline.propTypes = {\r\n headlineText: PropTypes.string,\r\n isMultiLine: PropTypes.bool,\r\n placementHeadlineClassName: PropTypes.string,\r\n};\r\n\r\nPlacementHeadline.defaultProps = {\r\n headlineText: undefined,\r\n isMultiLine: false,\r\n placementHeadlineClassName: undefined,\r\n};\r\n\r\nexport const PlacementHeadlineWithLink = withLink(PlacementHeadline);\r\n\r\n\r\n// --------------------------------------------------------------------------------\r\nexport const PlacementFinalUrl = React.forwardRef(({\r\n isMultiLine,\r\n finalUrl,\r\n displayUrl,\r\n placementFinalUrlClassName,\r\n}, ref) => (\r\n \r\n));\r\n\r\nPlacementFinalUrl.propTypes = {\r\n finalUrl: PropTypes.string,\r\n displayUrl: PropTypes.string,\r\n isMultiLine: PropTypes.bool,\r\n placementFinalUrlClassName: PropTypes.string,\r\n};\r\n\r\nPlacementFinalUrl.defaultProps = {\r\n finalUrl: undefined,\r\n displayUrl: undefined,\r\n placementFinalUrlClassName: undefined,\r\n isMultiLine: false,\r\n};\r\n\r\nexport const PlacementFinalUrlWithLink = withLink(PlacementFinalUrl);\r\n\r\n\r\n// --------------------------------------------------------------------------------\r\nexport const PlacementDescription = React.forwardRef(({\r\n description,\r\n isMultiLine,\r\n placementDescriptionClassName,\r\n}, ref) => (\r\n \r\n));\r\n\r\nPlacementDescription.propTypes = {\r\n description: PropTypes.string,\r\n isMultiLine: PropTypes.bool,\r\n placementDescriptionClassName: PropTypes.string,\r\n};\r\n\r\nPlacementDescription.defaultProps = {\r\n description: undefined,\r\n placementDescriptionClassName: undefined,\r\n isMultiLine: false,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nexport const PlacementAction = ({\r\n actionText,\r\n placementActionClassName,\r\n}) => (actionText ?\r\n : null\r\n);\r\n\r\nPlacementAction.propTypes = {\r\n actionText: PropTypes.string,\r\n placementActionClassName: PropTypes.string,\r\n};\r\n\r\nPlacementAction.defaultProps = {\r\n actionText: undefined,\r\n placementActionClassName: undefined,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport { Image } from '@fluentui/react';\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n\r\nexport const PlacementImage = ({\r\n i18n,\r\n image,\r\n enableCrop,\r\n previewImageAspectRatio,\r\n previewImageHeight,\r\n placementImageClassName,\r\n}) => {\r\n if (image && image.src) {\r\n if (enableCrop) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n return ();\r\n }\r\n return null;\r\n};\r\n\r\nPlacementImage.propTypes = {\r\n classes: PropTypes.shape({\r\n placementImage: PropTypes.string,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n image: PropTypes.shape({\r\n src: PropTypes.string,\r\n width: PropTypes.number,\r\n height: PropTypes.number,\r\n cropSettings: PropTypes.shape({\r\n SourceWidth: PropTypes.number,\r\n SourceX: PropTypes.number,\r\n SourceY: PropTypes.number,\r\n }),\r\n }),\r\n enableCrop: PropTypes.bool,\r\n previewImageAspectRatio: PropTypes.number,\r\n previewImageHeight: PropTypes.number,\r\n placementImageClassName: PropTypes.string,\r\n};\r\n\r\nPlacementImage.defaultProps = {\r\n image: {},\r\n enableCrop: false,\r\n previewImageAspectRatio: 1.78,\r\n previewImageHeight: 100,\r\n placementImageClassName: '',\r\n};\r\n","import { first, isEmpty } from 'underscore';\r\nimport React, { useRef, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport { Link, Callout, DirectionalHint, getId } from '@fluentui/react';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nimport { getDisclaimerStyles } from '../styles';\r\n\r\nexport const AdditionalLineDisclaimer = React.forwardRef(({\r\n i18n,\r\n disclaimer,\r\n styleOverrides,\r\n}, ref) => {\r\n const classes = useDefaultStyles(getDisclaimerStyles({ styleOverrides }));\r\n\r\n return !isEmpty(disclaimer) && disclaimer.DisclaimerLayout === 'AdditionalLine' ? (\r\n \r\n {i18n.getString(_TL_('More Info'))}\r\n \r\n ) : null;\r\n});\r\n\r\nAdditionalLineDisclaimer.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n disclaimer: PropTypes.shape({\r\n DisclaimerLayout: PropTypes.string,\r\n FinalUrls: PropTypes.arrayOf(PropTypes.string),\r\n }),\r\n styleOverrides: PropTypes.shape({}),\r\n};\r\n\r\nAdditionalLineDisclaimer.defaultProps = {\r\n disclaimer: {},\r\n styleOverrides: {},\r\n};\r\n\r\nexport const PopupDisclaimer = ({\r\n i18n,\r\n disclaimer,\r\n styleOverrides,\r\n}) => {\r\n const classes = useDefaultStyles(getDisclaimerStyles({ styleOverrides }));\r\n const [showCallout, setShowCallout] = useState(false);\r\n const ref = useRef();\r\n\r\n return !isEmpty(disclaimer) && disclaimer.DisclaimerLayout === 'Popup' ? (\r\n
\r\n setShowCallout(!showCallout)}\r\n ref={ref}\r\n >\r\n {disclaimer.Title}\r\n \r\n {showCallout &&\r\n setShowCallout(false)}\r\n >\r\n \r\n
\r\n {i18n.getString(_TL_('Disclaimer'))}\r\n
\r\n
\r\n {disclaimer.PopupText}\r\n
\r\n \r\n {i18n.getString('Learn more')}\r\n \r\n \r\n }\r\n
\r\n ) : null;\r\n};\r\n\r\nPopupDisclaimer.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n disclaimer: PropTypes.shape({\r\n DisclaimerLayout: PropTypes.string,\r\n Title: PropTypes.string,\r\n PopupText: PropTypes.string,\r\n FinalUrls: PropTypes.arrayOf(PropTypes.string),\r\n }),\r\n styleOverrides: PropTypes.shape({}),\r\n};\r\n\r\nPopupDisclaimer.defaultProps = {\r\n disclaimer: {},\r\n styleOverrides: {},\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n\r\nexport const BusinessNameWithLogo = ({\r\n businessName,\r\n showLogo,\r\n logo,\r\n logoHeight,\r\n classes,\r\n}) => (\r\n
\r\n {showLogo && logo && (\r\n
\r\n \r\n
\r\n )}\r\n {businessName &&
{businessName}
}\r\n
\r\n);\r\n\r\nBusinessNameWithLogo.propTypes = {\r\n businessName: PropTypes.string,\r\n showLogo: PropTypes.bool.isRequired,\r\n classes: PropTypes.shape({\r\n businuessAndLogoContainer: PropTypes.string,\r\n placementLogoContainer: PropTypes.string,\r\n placementBusinessNameContainer: PropTypes.string,\r\n }).isRequired,\r\n logoHeight: PropTypes.number,\r\n logo: PropTypes.shape({\r\n Src: PropTypes.string,\r\n Width: PropTypes.number,\r\n Height: PropTypes.number,\r\n CropSettings: PropTypes.shape({\r\n SourceX: PropTypes.number,\r\n SourceY: PropTypes.number,\r\n SourceWidth: PropTypes.number,\r\n SourceHeight: PropTypes.number,\r\n }),\r\n }),\r\n};\r\n\r\nBusinessNameWithLogo.defaultProps = {\r\n businessName: undefined,\r\n logoHeight: 16,\r\n logo: undefined,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport { PlacementAction } from './placement-action';\r\nimport { AdLabel } from './ad-label';\r\n\r\nconst ChoiceIcon = ({ headChoiceIconClassName }) => (\r\n \r\n \r\n \r\n);\r\n\r\nconst ChoiceIconBright = ({ headChoiceIconClassName }) => (\r\n \r\n \r\n \r\n);\r\n\r\nexport const BusinessNameWithChoiceIcon = ({\r\n businessName,\r\n showBusinessName,\r\n showAdIcon,\r\n showChoiceIcon,\r\n showCallToAction,\r\n callToAction,\r\n showCallToActionAsLink,\r\n classes,\r\n i18n,\r\n showBrightStyleChoiceIcon,\r\n}) => {\r\n const showChoiceIconAhead = showCallToAction && callToAction;\r\n\r\n return (\r\n
\r\n {showChoiceIconAhead && showChoiceIcon && (showBrightStyleChoiceIcon ? : )}\r\n {showAdIcon && (\r\n
\r\n )}\r\n {showBusinessName && businessName &&
{businessName}
}\r\n {!showChoiceIconAhead && showChoiceIcon && (showBrightStyleChoiceIcon ? : )}\r\n {showCallToAction && callToAction && }\r\n
\r\n );\r\n};\r\n\r\nBusinessNameWithChoiceIcon.propTypes = {\r\n businessName: PropTypes.string,\r\n showBusinessName: PropTypes.bool.isRequired,\r\n showAdIcon: PropTypes.bool.isRequired,\r\n showChoiceIcon: PropTypes.bool.isRequired,\r\n showCallToAction: PropTypes.bool,\r\n callToAction: PropTypes.string,\r\n classes: PropTypes.shape({\r\n adsLabelClassName: PropTypes.string,\r\n placementCallToAction: PropTypes.string,\r\n }).isRequired,\r\n showCallToActionAsLink: PropTypes.bool,\r\n};\r\n\r\nBusinessNameWithChoiceIcon.defaultProps = {\r\n businessName: undefined,\r\n showCallToAction: false,\r\n callToAction: undefined,\r\n showCallToActionAsLink: false,\r\n};\r\n","import React from 'react';\r\nimport classnames from 'classnames';\r\n\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { getLargeAdChoiceIconStyles } from '../styles';\r\n\r\nconst CircleRightArrowImpl = ({ classes, customizedClassName }) => (\r\n
\r\n \r\n \r\n \r\n
\r\n);\r\n\r\nexport const CircleRightArrow = withUAPLThemedStyles(\r\n CircleRightArrowImpl,\r\n getLargeAdChoiceIconStyles,\r\n { componentName: 'LargeChoiceIcon' }\r\n);\r\n","export const getLargeAdChoiceIconStyles = (/* theme */) => ({\r\n largeIconRoot: {\r\n width: 36,\r\n height: 36,\r\n backgroundColor: 'rgba(33, 105, 235, 1)',\r\n boxShadow: '0px 3px 6px 0px rgba(0, 0, 0, 0.25)',\r\n borderRadius: '50px',\r\n },\r\n arrowIcon: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n margin: 'auto',\r\n },\r\n});\r\n","import React from 'react';\r\n\r\nexport const ThreeDot = ({ threeDotClassName }) => (\r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\n\r\nexport const OutlookPcDesktopUnread = ({ customizedUnreadClassName }) => (\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n);\r\n\r\nexport const OutlookMobileWebUnread = ({ customizedUnreadClassName }) => (\r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport classnames from 'classnames';\r\nimport { PlacementText } from './placement-text';\r\nimport { PlacementAction } from './placement-action';\r\n\r\nexport const DescriptionWithAction = ({\r\n isMultiLine,\r\n description,\r\n descriptionWithActionClassName,\r\n placementDescriptionClassName,\r\n placementCallToActionClassName,\r\n placementCallToActionAsLinkClassName,\r\n showCallToActionAsLink,\r\n callToAction,\r\n}) => (\r\n
\r\n \r\n {callToAction && }\r\n
\r\n);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { isValidUrl } from '@bingads-webui/url-util';\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n\r\nimport {\r\n MMAPlacementCard,\r\n AdLabel,\r\n PlacementGradient,\r\n PlacementHeadline,\r\n PlacementFinalUrl,\r\n PlacementDescription,\r\n PlacementAction,\r\n BusinessNameWithAdsLabel,\r\n} from '../shared-components';\r\nimport dotsIcon from './media/dots.svg';\r\n\r\nexport const AdPlacementMmaBase = ({\r\n placementData, // UAPVMSingleImagePlacement\r\n isEnabled,\r\n\r\n showShortHeadline,\r\n shortHeadline,\r\n isMultiLineShortHeadline,\r\n\r\n showLongHeadline,\r\n longHeadline,\r\n isMultiLineLongHeadline,\r\n\r\n showFinalUrl,\r\n finalUrl,\r\n isMultiLineFinalUrl,\r\n displayUrl,\r\n displayFinalUrlOrigin,\r\n\r\n showDescription,\r\n description,\r\n isMultiLineDescription,\r\n\r\n showCallToAction,\r\n callToAction,\r\n\r\n showAdLabel,\r\n showGradient,\r\n\r\n showBusinessName,\r\n businessName,\r\n showBusinessNameAdLabel,\r\n showAdsIcon,\r\n\r\n showLogo,\r\n logo,\r\n\r\n showDots,\r\n\r\n i18n, // may need to set window._TL_ in other platforms\r\n classes,\r\n}) => {\r\n const {\r\n placementMeta, placementCropping, imageMeta, effectiveImageUrl, effectiveImageWidth, effectiveImageHeight, expandedPlacementCropping,\r\n } = placementData || {};\r\n const {\r\n previewHeight, aspectRatio, logoHeight, imageBorderRadius,\r\n } = placementMeta || {};\r\n\r\n // const srcForCroppedImageView = showImage && this.props.image.FinalSrc;\r\n const imagePreviewWidth = previewHeight * aspectRatio;\r\n\r\n let finalUrlOrigin;\r\n if (displayFinalUrlOrigin && isValidUrl(finalUrl)) {\r\n finalUrlOrigin = new URL(finalUrl).origin;\r\n }\r\n\r\n if (!placementData || !imageMeta) {\r\n return null;\r\n }\r\n\r\n const cropping = expandedPlacementCropping || placementCropping;\r\n\r\n return (\r\n \r\n
\r\n {showAdLabel && }\r\n {showGradient && }\r\n {\r\n imageMeta.url &&\r\n \r\n }\r\n
\r\n
\r\n {showLogo && logo &&\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{businessName}
\r\n {showFinalUrl &&\r\n \r\n }\r\n
\r\n
\r\n }\r\n {showDots && (\r\n \"\"\r\n )}\r\n {showShortHeadline && (\r\n \r\n )}\r\n {showLongHeadline && (\r\n \r\n )}\r\n {(!showLogo || !logo) && showFinalUrl && (\r\n \r\n )}\r\n {showDescription && (\r\n \r\n )}\r\n {showBusinessName && (\r\n \r\n )}\r\n {showCallToAction && callToAction && ( // add a space before each capital letter, e.g. \"ActNow\" => \"Act Now\"\r\n \r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nAdPlacementMmaBase.propTypes = {\r\n placementData: PropTypes.shape({}).isRequired, // UAPVMSingleImagePlacement\r\n isEnabled: PropTypes.bool,\r\n\r\n showShortHeadline: PropTypes.bool,\r\n shortHeadline: PropTypes.string,\r\n isMultiLineShortHeadline: PropTypes.bool,\r\n\r\n showLongHeadline: PropTypes.bool,\r\n longHeadline: PropTypes.string,\r\n isMultiLineLongHeadline: PropTypes.bool,\r\n\r\n showFinalUrl: PropTypes.bool,\r\n finalUrl: PropTypes.string,\r\n isMultiLineFinalUrl: PropTypes.bool,\r\n displayFinalUrlOrigin: PropTypes.bool,\r\n displayUrl: PropTypes.string,\r\n\r\n showDescription: PropTypes.bool,\r\n description: PropTypes.string,\r\n isMultiLineDescription: PropTypes.bool,\r\n\r\n showCallToAction: PropTypes.bool,\r\n callToAction: PropTypes.string,\r\n\r\n showAdLabel: PropTypes.bool,\r\n showGradient: PropTypes.bool,\r\n\r\n showBusinessName: PropTypes.bool,\r\n businessName: PropTypes.string,\r\n showBusinessNameAdLabel: PropTypes.bool,\r\n showAdsIcon: PropTypes.bool,\r\n\r\n showLogo: PropTypes.bool,\r\n logo: PropTypes.shape({\r\n Src: PropTypes.string,\r\n Width: PropTypes.number,\r\n Height: PropTypes.number,\r\n CropSettings: PropTypes.shape({\r\n SourceX: PropTypes.number,\r\n SourceY: PropTypes.number,\r\n SourceWidth: PropTypes.number,\r\n SourceHeight: PropTypes.number,\r\n }),\r\n }),\r\n\r\n showDots: PropTypes.bool,\r\n\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n placementCard: PropTypes.string,\r\n placementImageContainer: PropTypes.string,\r\n placementLogoContainer: PropTypes.string,\r\n placementBusinessNameContainer: PropTypes.string,\r\n placementTextContainer: PropTypes.string,\r\n placementAdsLabel: PropTypes.string,\r\n placementGradient: PropTypes.string,\r\n placementShortHeadline: PropTypes.string,\r\n placementLongHeadline: PropTypes.string,\r\n placementFinalUrl: PropTypes.string,\r\n placementDescription: PropTypes.string,\r\n placementCallToAction: PropTypes.string,\r\n placementBusinessNameWithAdsLabel: PropTypes.string,\r\n placementDotsIcon: PropTypes.string,\r\n }).isRequired,\r\n};\r\n\r\nAdPlacementMmaBase.defaultProps = {\r\n isEnabled: true,\r\n\r\n showShortHeadline: false,\r\n showLongHeadline: false,\r\n showFinalUrl: false,\r\n displayFinalUrlOrigin: false,\r\n showDescription: false,\r\n showCallToAction: false,\r\n showAdLabel: false,\r\n showGradient: false,\r\n showBusinessName: false,\r\n showBusinessNameAdLabel: false,\r\n showLogo: false,\r\n showAdsIcon: false,\r\n\r\n shortHeadline: undefined,\r\n isMultiLineShortHeadline: false,\r\n longHeadline: undefined,\r\n isMultiLineLongHeadline: false,\r\n finalUrl: undefined,\r\n displayUrl: undefined,\r\n isMultiLineFinalUrl: false,\r\n description: undefined,\r\n isMultiLineDescription: false,\r\n callToAction: undefined,\r\n businessName: undefined,\r\n logo: undefined,\r\n showDots: false,\r\n};\r\n","import React from 'react';\r\n\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { AdPlacementMmaBase } from './mma-ad-placement-base';\r\nimport {\r\n getMmaWideImage4x1Styles,\r\n getMmaLandScapeImage191x100Styles,\r\n getMmaSquareImage1x1Styles,\r\n getMmaVerticalImage1x2Styles,\r\n} from '../styles';\r\n\r\nexport const AdPlacementMmaWideImage4x1 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaWideImage4x1Styles,\r\n { componentName: 'AdPlacementMmaWideImage4x1' }\r\n);\r\n\r\nexport const AdPlacementMmaLandscapeImage191x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaLandScapeImage191x100Styles,\r\n { componentName: 'AdPlacementMmaLandscapeImage191x100' }\r\n);\r\n\r\nexport const AdPlacementMmaSquareImage1x1 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaSquareImage1x1Styles,\r\n { componentName: 'AdPlacementMmaSquareImage1x1' }\r\n);\r\n\r\nexport const AdPlacementMmaVerticalImage1x2 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaVerticalImage1x2Styles,\r\n { componentName: 'AdPlacementMmaVerticalImage1x2' }\r\n);\r\n","export const getMmaPlacementBaseStyles = () => ({\r\n placementCard: {\r\n border: 'solid thin #ddd',\r\n },\r\n placementImageContainer: undefined, // { },\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 0,\r\n bottom: 25,\r\n paddingLeft: 32,\r\n paddingRight: 20,\r\n fontSize: 10,\r\n lineHeight: 1.1,\r\n },\r\n placementAdsLabel: undefined, // { },\r\n placementGradient: {\r\n backgroundImage: 'linear-gradient(to bottom, transparent 0, black 100%)',\r\n },\r\n placementShortHeadline: {\r\n position: 'relative',\r\n bottom: 20,\r\n paddingBottom: 5,\r\n fontWeight: '200',\r\n fontSize: 24,\r\n color: 'white',\r\n },\r\n placementLongHeadline: {\r\n position: 'relative',\r\n bottom: 15,\r\n paddingBottom: 5,\r\n fontWeight: '200',\r\n fontSize: 24,\r\n color: 'white',\r\n },\r\n placementFinalUrl: {\r\n color: 'white',\r\n bottom: 10,\r\n position: 'relative',\r\n fontSize: 10,\r\n },\r\n placementDescription: {\r\n color: 'white',\r\n bottom: 5,\r\n position: 'relative',\r\n fontSize: 14,\r\n },\r\n placementCallToAction: {\r\n position: 'relative',\r\n borderRadius: 32,\r\n border: 'none',\r\n padding: '7px 16px 8px 16px',\r\n fontSize: 16,\r\n color: '#666',\r\n backgroundColor: '#EEE',\r\n opacity: '70%',\r\n fontWeight: 'bold',\r\n },\r\n});\r\n\r\nexport const getMmaWideImage4x1Styles = theme => ({\r\n // base styles\r\n ...getMmaPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 0,\r\n right: 0,\r\n bottom: 25,\r\n paddingLeft: 32,\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n placementShortHeadline: {\r\n position: 'relative',\r\n bottom: 15,\r\n paddingBottom: 5,\r\n fontWeight: '200',\r\n fontSize: 24,\r\n color: 'white',\r\n },\r\n placementAdsLabel: {\r\n right: 0, // align to right\r\n },\r\n placementGradient: {\r\n backgroundImage: 'linear-gradient(to left, transparent 0, black 100%)',\r\n },\r\n});\r\n\r\nexport const getMmaLandScapeImage191x100Styles = theme => ({\r\n // base styles\r\n ...getMmaPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementTextContainer: {\r\n padding: '8px 20px 20px 20px',\r\n fontSize: 10,\r\n lineHeight: 1.1,\r\n maxWidth: '-webkit-fill-available',\r\n\r\n '& .logo-and-text-container': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n paddingBottom: 4,\r\n '& .logo-text': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n '& .logo-business-name': {\r\n color: '#111',\r\n fontSize: 14,\r\n fontWeight: 400,\r\n lineHeight: '18px',\r\n },\r\n },\r\n },\r\n },\r\n placementShortHeadline: {\r\n position: 'relative',\r\n color: 'black',\r\n fontSize: 24,\r\n marginBottom: 8,\r\n fontWeight: '200',\r\n paddingBottom: 5,\r\n },\r\n placementFinalUrl: {\r\n position: 'relative',\r\n color: 'green',\r\n fontSize: 10,\r\n marginBottom: 8,\r\n },\r\n placementDescription: {\r\n position: 'relative',\r\n color: 'black',\r\n fontSize: 14,\r\n maxWidth: 250,\r\n wordWrap: 'break-word',\r\n paddingRight: 16,\r\n },\r\n placementCallToAction: {\r\n color: 'white',\r\n right: 15,\r\n border: 'none',\r\n bottom: 15,\r\n opacity: '90%',\r\n padding: '6px 16px 8px 16px',\r\n position: 'absolute',\r\n fontSize: 16,\r\n fontWeight: 'bold',\r\n borderRadius: 32,\r\n backgroundColor: '#a19f9d',\r\n },\r\n placementLogoContainer: {\r\n paddingTop: 5,\r\n paddingRight: 6,\r\n '& .cropped-image-view': {\r\n borderRadius: 6,\r\n border: 'solid 1px #ECECEC',\r\n },\r\n },\r\n});\r\n\r\nexport const getMmaSquareImage1x1Styles = theme => ({\r\n // base styles\r\n ...getMmaPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementFinalUrl: {\r\n color: 'green',\r\n bottom: 18,\r\n position: 'relative',\r\n fontSize: 10,\r\n },\r\n placementDescription: {\r\n color: 'white',\r\n bottom: 8,\r\n position: 'relative',\r\n fontSize: 14,\r\n },\r\n placementCallToAction: {\r\n position: 'relative',\r\n borderRadius: 32,\r\n border: 'none',\r\n padding: '6px 16px 8px 16px',\r\n fontSize: 16,\r\n color: 'white',\r\n backgroundColor: '#a19f9d',\r\n opacity: '90%',\r\n fontWeight: 'bold',\r\n },\r\n});\r\n\r\nexport const getMmaVerticalImage1x2Styles = theme => ({\r\n // base styles\r\n ...getMmaPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementFinalUrl: {\r\n color: 'green',\r\n bottom: 15,\r\n position: 'relative',\r\n fontSize: 10,\r\n },\r\n placementCallToAction: {\r\n position: 'relative',\r\n top: 5,\r\n color: 'white',\r\n border: 'solid 1px #dddddd',\r\n opacity: '90%',\r\n padding: '5px 16px 6px 16px',\r\n fontSize: 14,\r\n fontWeight: 'bold',\r\n borderRadius: 3,\r\n backgroundColor: '#a19f9d',\r\n },\r\n});\r\n","import React from 'react';\r\n\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { AdPlacementMmaBase } from './mma-ad-placement-base';\r\n\r\nimport {\r\n getMmaInMsanWideImage191x100Styles,\r\n getMmaInMsanSquareImage1x1Styles,\r\n getMmaInMsanMSEdgeSingleCarousel178x100Styles,\r\n getMmaInMsanMSNInArticle150x100Styles,\r\n getMmaInMsanMSNSmallHeadline133x100Styles,\r\n} from '../styles';\r\n\r\nexport const AdPlacementMmaInMsanWideImage191x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanWideImage191x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanWideImage191x100' }\r\n);\r\n\r\nexport const AdPlacementMmaInMsanMSEdgeSingleCarousel178x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanMSEdgeSingleCarousel178x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanMSEdgeSingleCarousel178x100' }\r\n);\r\n\r\nexport const AdPlacementMmaInMsanMSNInArticle150x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanMSNInArticle150x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanMSNInArticle150x100' }\r\n);\r\n\r\nexport const AdPlacementMmaInMsanMSNSmallHeadline133x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanMSNSmallHeadline133x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanMSNSmallHeadline133x100' }\r\n);\r\n\r\nexport const AdPlacementMmaInMsanSquareImage1x1 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanSquareImage1x1Styles,\r\n { componentName: 'AdPlacementMmaInMsanSquareImage1x1' }\r\n);\r\n","import React from 'react';\r\nimport classnames from 'classnames';\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n\r\nimport { MMAPlacementCard, PlacementHeadline, PlacementDescription, BusinessNameWithLogo, BusinessNameWithChoiceIcon } from '../../shared-components';\r\n\r\nexport const AdPlacementMmaBaseV2 = ({\r\n placementData, // UAPVMSingleImagePlacement\r\n isEnabled,\r\n\r\n showShortHeadline,\r\n shortHeadline,\r\n isMultiLineShortHeadline,\r\n showSmallSizeHeadline,\r\n\r\n showLongHeadline,\r\n longHeadline,\r\n isMultiLineLongHeadline,\r\n\r\n finalUrl,\r\n\r\n showDescription,\r\n description,\r\n isMultiLineDescription,\r\n\r\n showCallToAction,\r\n callToAction,\r\n\r\n businessName,\r\n showBusinessNameWithLogoTop,\r\n showLogo,\r\n logo,\r\n\r\n showAdChoiceIconArea,\r\n showBusinessNameInAdChoiceArea,\r\n showAdIcon,\r\n showChoiceIcon,\r\n showCallToActionAsLink,\r\n showBrightStyleChoiceIcon,\r\n\r\n i18n, // may need to set window._TL_ in other platforms\r\n classes,\r\n showGradient,\r\n customizedComponent: CustomizedComponent,\r\n}) => {\r\n const {\r\n placementMeta, placementCropping, imageMeta, effectiveImageUrl, effectiveImageWidth, effectiveImageHeight, expandedPlacementCropping,\r\n } = placementData || {};\r\n const {\r\n previewHeight, aspectRatio, logoHeight, imageBorderRadius,\r\n } = placementMeta || {};\r\n\r\n // const srcForCroppedImageView = showImage && this.props.image.FinalSrc;\r\n const imagePreviewWidth = previewHeight * aspectRatio;\r\n\r\n if (!placementData || !imageMeta) {\r\n return null;\r\n }\r\n\r\n const cropping = expandedPlacementCropping || placementCropping;\r\n\r\n return (\r\n \r\n
\r\n {\r\n imageMeta.url &&\r\n \r\n }\r\n
\r\n
\r\n {showGradient &&
}\r\n
\r\n {showBusinessNameWithLogoTop && (\r\n \r\n )}\r\n {showShortHeadline && (\r\n \r\n )}\r\n {showLongHeadline && (\r\n \r\n )}\r\n {showDescription && (\r\n \r\n )}\r\n
\r\n {showAdChoiceIconArea && (\r\n \r\n )}\r\n
\r\n {CustomizedComponent && }\r\n \r\n );\r\n};\r\n","import React, { useContext } from 'react';\r\nimport _ from 'underscore';\r\nimport { PermissionsContext, withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\n\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { AdPlacementMmaBase } from './mma-ad-placement-base';\r\nimport { AdPlacementMmaBaseV2 } from './mma-ad-placements-v2/mma-ad-placement-base-v2';\r\n// import { CircleRightArrow } from '../shared-components';\r\n\r\nimport {\r\n getMmaInMsanV2MicrosoftEdgeCarousel201x100Styles,\r\n getMmaInMsanV2MSANBanner2x1Styles,\r\n getMmaInMsanV2MSANRiver191x100Styles,\r\n getMmaInMsanV2MSNCarousel169x100Styles,\r\n getMmaInMsanV2MSNPartnerStripe153x100Styles,\r\n getMmaInMsanV2MSNRestoday124x100Styles,\r\n getMmaInMsanV2MSANRectangle120x100Styles,\r\n getMmaInMsanV2MicrosoftEdgeMobile1x1Styles,\r\n getMmaInMsanV2RefreshedMSANRiver191x100Styles,\r\n getMmaInMsanV2RefreshedMSNRestoday124x100Styles,\r\n getMmaInMsanV2RefreshedMSNCarousel169x100Styles,\r\n getMmaInMsanV2RefreshedMicrosoftEdgeCarousel201x100Styles,\r\n getMmaInMsanV2RefreshedMSNPartnerStripe153x100Styles,\r\n getMmaInMsanV2RefreshedMSANBanner2x1Styles,\r\n getMmaInMsanV2RefreshedMicrosoftEdgeMobile1x1Styles,\r\n // getMmaInMsanV2RefreshedMSANRectangle191x100Styles,\r\n} from '../styles';\r\n\r\nexport const AdPlacementMmaInMsanV2MicrosoftEdgeCarousel201x100 = withPermissions((props1) => {\r\n const permissions = useContext(PermissionsContext);\r\n const isAdPreviewRefreshEnabled = _.get(permissions, ['dynamic', 'AdPreviewRefresh']) || _.get(props1, ['extraPermissions', 'dynamic', 'AdPreviewRefresh']);\r\n const StyledBaseComp = isAdPreviewRefreshEnabled ? withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanV2RefreshedMicrosoftEdgeCarousel201x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MicrosoftEdgeCarousel201x100' }\r\n ) : withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanV2MicrosoftEdgeCarousel201x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MicrosoftEdgeCarousel201x100' }\r\n );\r\n return ;\r\n});\r\n\r\nexport const AdPlacementMmaInMsanV2MSANBanner2x1 = withPermissions((props1) => {\r\n const permissions = useContext(PermissionsContext);\r\n const isAdPreviewRefreshEnabled = _.get(permissions, ['dynamic', 'AdPreviewRefresh']) || _.get(props1, ['extraPermissions', 'dynamic', 'AdPreviewRefresh']);\r\n\r\n const StyledBaseComp = isAdPreviewRefreshEnabled ? withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanV2RefreshedMSANBanner2x1Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MSANBanner2x1' }\r\n ) : withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanV2MSANBanner2x1Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MSANBanner2x1' }\r\n );\r\n return ;\r\n});\r\n\r\nexport const AdPlacementMmaInMsanV2MSANRiver191x100 = withPermissions((props1) => {\r\n const permissions = useContext(PermissionsContext);\r\n const isAdPreviewRefreshEnabled = _.get(permissions, ['dynamic', 'AdPreviewRefresh']) || _.get(props1, ['extraPermissions', 'dynamic', 'AdPreviewRefresh']);\r\n\r\n const StyledBaseComp = isAdPreviewRefreshEnabled ? (\r\n withUAPLThemedStyles(\r\n props2 => (\r\n \r\n ),\r\n getMmaInMsanV2RefreshedMSANRiver191x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MSANRiver191x100' }\r\n )\r\n ) : (\r\n withUAPLThemedStyles(\r\n props2 => (\r\n \r\n ),\r\n getMmaInMsanV2MSANRiver191x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MSANRiver191x100' }\r\n )\r\n );\r\n return ;\r\n});\r\n\r\nexport const AdPlacementMmaInMsanV2MSNCarousel169x100 = withPermissions((props1) => {\r\n const permissions = useContext(PermissionsContext);\r\n const isAdPreviewRefreshEnabled = _.get(permissions, ['dynamic', 'AdPreviewRefresh']) || _.get(props1, ['extraPermissions', 'dynamic', 'AdPreviewRefresh']);\r\n const StyledBaseComp = isAdPreviewRefreshEnabled ? (\r\n withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanV2RefreshedMSNCarousel169x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MSNCarousel169x100' }\r\n )\r\n ) : (\r\n withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanV2MSNCarousel169x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MSNCarousel169x100' }\r\n )\r\n );\r\n return ;\r\n});\r\n\r\nexport const AdPlacementMmaInMsanV2MSNPartnerStripe153x100 = withPermissions((props1) => {\r\n const permissions = useContext(PermissionsContext);\r\n const isAdPreviewRefreshEnabled = _.get(permissions, ['dynamic', 'AdPreviewRefresh']) || _.get(props1, ['extraPermissions', 'dynamic', 'AdPreviewRefresh']);\r\n\r\n const StyledBaseComp = isAdPreviewRefreshEnabled ? withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanV2RefreshedMSNPartnerStripe153x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MSNPartnerStripe153x100' }\r\n ) : withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanV2MSNPartnerStripe153x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MSNPartnerStripe153x100' }\r\n );\r\n return ;\r\n});\r\n\r\nexport const AdPlacementMmaInMsanV2MSNRestoday124x100 = withPermissions((props1) => {\r\n const permissions = useContext(PermissionsContext);\r\n const isAdPreviewRefreshEnabled = _.get(permissions, ['dynamic', 'AdPreviewRefresh']) || _.get(props1, ['extraPermissions', 'dynamic', 'AdPreviewRefresh']);\r\n const StyledBaseComp = isAdPreviewRefreshEnabled ? withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanV2RefreshedMSNRestoday124x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MSNRestoday124x100' }\r\n ) : withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanV2MSNRestoday124x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MSNRestoday124x100' }\r\n );\r\n return ;\r\n});\r\n\r\n// export const AdPlacementMmaInMsanV2MSANRectangle191x100 = withPermissions((props1) => {\r\n// const permissions = useContext(PermissionsContext);\r\n// const isAdPreviewRefreshEnabled = _.get(permissions, ['dynamic', 'AdPreviewRefresh']) || _.get(props1, ['extraPermissions', 'dynamic', 'AdPreviewRefresh']);\r\n\r\n// const StyledBaseComp = isAdPreviewRefreshEnabled ? withUAPLThemedStyles(\r\n// props => (\r\n// \r\n// ),\r\n// getMmaInMsanV2RefreshedMSANRectangle191x100Styles,\r\n// { componentName: 'AdPlacementMmaInMsanV2MSANRectangle191x100' }\r\n// ) : withUAPLThemedStyles(\r\n// props => (\r\n// \r\n// ),\r\n// getMmaInMsanV2MSANRectangle120x100Styles,\r\n// { componentName: 'AdPlacementMmaInMsanV2MSANRectangle120x100' }\r\n// );\r\n// return ;\r\n// });\r\n\r\n// to be deprecated\r\nexport const AdPlacementMmaInMsanV2MSANRectangle191x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanV2MSANRectangle120x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MSANRectangle120x100' }\r\n);\r\n\r\nexport const AdPlacementMmaInMsanV2MicrosoftEdgeMobile1x1 = withPermissions((props1) => {\r\n const permissions = useContext(PermissionsContext);\r\n const isAdPreviewRefreshEnabled = _.get(permissions, ['dynamic', 'AdPreviewRefresh']) || _.get(props1, ['extraPermissions', 'dynamic', 'AdPreviewRefresh']);\r\n\r\n const StyledBaseComp = isAdPreviewRefreshEnabled ? withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanV2RefreshedMicrosoftEdgeMobile1x1Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MicrosoftEdgeMobile1x1' }\r\n ) : withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanV2MicrosoftEdgeMobile1x1Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MicrosoftEdgeMobile1x1' }\r\n );\r\n return ;\r\n});\r\n","import React from 'react';\r\n\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { AdPlacementMmaBase } from '../mma-ad-placement-base';\r\n\r\nimport {\r\n getImgExtWideImage191x100Styles,\r\n getImgExtMSEdgeSingleCarousel178x100Styles,\r\n getImgExtBingDesktopSingleImage178x100Styles,\r\n getImgExtMSEdgeMediumHeadline172x100Styles,\r\n getImgExtMSNSingleCarousel169x100Styles,\r\n getImgExtMSNMediumHeadline155x100Styles,\r\n getImgExtMSNInArticle150x100Styles,\r\n getImgExtMSNSmallHeadline133x100Styles,\r\n getImgExtSquareImage1x1Styles,\r\n getImgExtMSNDoubleCarousel93x100Styles,\r\n} from '../../styles';\r\n\r\nexport const AdPlacementImgExtWideImage191x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getImgExtWideImage191x100Styles,\r\n { componentName: 'AdPlacementImgExtWideImage191x100' }\r\n);\r\n\r\nexport const AdPlacementImgExtMSEdgeSingleCarousel178x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getImgExtMSEdgeSingleCarousel178x100Styles,\r\n { componentName: 'AdPlacementImgExtMSEdgeSingleCarousel178x100' }\r\n);\r\n\r\nexport const AdPlacementImgExtBingDesktopSingleImage178x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getImgExtBingDesktopSingleImage178x100Styles,\r\n { componentName: 'AdPlacementImgExtBingDesktopSingleImage178x100' }\r\n);\r\n\r\nexport const AdPlacementImgExtMSEdgeMediumHeadline172x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getImgExtMSEdgeMediumHeadline172x100Styles,\r\n { componentName: 'AdPlacementImgExtMSEdgeMediumHeadline172x100' }\r\n);\r\n\r\nexport const AdPlacementImgExtMSNSingleCarousel169x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getImgExtMSNSingleCarousel169x100Styles,\r\n { componentName: 'AdPlacementImgExtMSNSingleCarousel169x100' }\r\n);\r\n\r\nexport const AdPlacementImgExtMSNMediumHeadline155x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getImgExtMSNMediumHeadline155x100Styles,\r\n { componentName: 'AdPlacementImgExtMSNMediumHeadline155x100' }\r\n);\r\n\r\nexport const AdPlacementImgExtMSNInArticle150x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getImgExtMSNInArticle150x100Styles,\r\n { componentName: 'AdPlacementImgExtMSNInArticle150x100' }\r\n);\r\n\r\nexport const AdPlacementImgExtMSNSmallHeadline133x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getImgExtMSNSmallHeadline133x100Styles,\r\n { componentName: 'AdPlacementImgExtMSNSmallHeadline133x100' }\r\n);\r\n\r\nexport const AdPlacementImgExtSquareImage1x1 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getImgExtSquareImage1x1Styles,\r\n { componentName: 'AdPlacementImgExtSquareImage1x1' }\r\n);\r\n\r\nexport const AdPlacementImgExtMSNDoubleCarousel93x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getImgExtMSNDoubleCarousel93x100Styles,\r\n { componentName: 'AdPlacementImgExtMSNDoubleCarousel93x100' }\r\n);\r\n","export const getImageExtensionPlacementBaseStyles = () => ({\r\n placementCard: {\r\n borderRadius: '0 !important',\r\n },\r\n placementImageContainer: undefined,\r\n placementTextContainer: undefined,\r\n placementAdsLabel: undefined,\r\n placementGradient: undefined,\r\n placementShortHeadline: undefined,\r\n placementLongHeadline: undefined,\r\n placementFinalUrl: undefined,\r\n placementDescription: undefined,\r\n placementCallToAction: undefined,\r\n placementBusinessNameWithAdsLabel: undefined,\r\n});\r\n\r\nexport const getImgExtWideImage191x100Styles = theme => ({\r\n // base styles\r\n ...getImageExtensionPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n height: 364,\r\n color: '#ddd',\r\n border: 'solid',\r\n borderWidth: 'thin',\r\n borderRadius: '0 !important',\r\n },\r\n\r\n placementTextContainer: {\r\n padding: 10,\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n maxWidth: '-webkit-fill-available',\r\n },\r\n\r\n placementShortHeadline: {\r\n top: -6,\r\n color: '#207697',\r\n height: 60,\r\n position: 'relative',\r\n fontSize: 18,\r\n lineHeight: 1.2,\r\n fontWeight: 200,\r\n paddingBottom: 5,\r\n },\r\n\r\n placementDescription: {\r\n height: 45,\r\n margin: '5px 0 10px 0',\r\n fontSize: 14,\r\n },\r\n});\r\n\r\nexport const getImgExtMSEdgeSingleCarousel178x100Styles = theme => ({\r\n // base styles\r\n ...getImageExtensionPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n '&:hover $placementGradient': {\r\n height: '480px !important',\r\n top: -100,\r\n },\r\n borderRadius: '0 !important',\r\n width: '624px !important',\r\n },\r\n\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 20,\r\n bottom: 25,\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n color: '#bebebe',\r\n },\r\n\r\n placementGradient: {\r\n display: 'block',\r\n width: '100%',\r\n height: '280px !important',\r\n top: 100,\r\n backgroundImage: 'linear-gradient(to bottom, transparent 0, black 100%)',\r\n },\r\n\r\n placementShortHeadline: {\r\n fontWeight: '200',\r\n fontSize: 28,\r\n lineHeight: '33.99px',\r\n color: 'white',\r\n width: 590,\r\n height: 73,\r\n marginBottom: 20,\r\n\r\n '& .multi-line-processed-text': {\r\n position: 'absolute',\r\n bottom: 30,\r\n },\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n '& .ads-label': {\r\n color: '#fff !important',\r\n opacity: 0.7,\r\n border: '.5px solid hsla(0,0%,100%,.3) !important',\r\n },\r\n '& .business-name': {\r\n color: '#bebebe !important',\r\n },\r\n },\r\n});\r\n\r\nexport const getImgExtBingDesktopSingleImage178x100Styles = theme => ({\r\n // base styles\r\n ...getImageExtensionPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n width: '608px !important',\r\n height: 110,\r\n border: '0.5px solid #ddd',\r\n padding: 0,\r\n borderRadius: '0 !important',\r\n },\r\n\r\n placementImageContainer: {\r\n float: 'right',\r\n width: 100,\r\n margin: 8,\r\n transform: 'translate(20px,20px)',\r\n },\r\n\r\n placementTextContainer: {\r\n margin: '4px 8px 0px 8px',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementLongHeadline: {\r\n color: '#0078d4',\r\n height: 28,\r\n overflow: 'hidden',\r\n fontSize: 20,\r\n fontWeight: 400,\r\n lineHeight: '24px',\r\n },\r\n\r\n placementFinalUrl: {\r\n color: '#0b6a0b',\r\n height: 20,\r\n overflow: 'hidden',\r\n fontSize: 14,\r\n },\r\n\r\n placementDescription: {\r\n color: '#333',\r\n fontSize: 13,\r\n minHeight: 18,\r\n },\r\n});\r\n\r\nexport const getImgExtMSEdgeMediumHeadline172x100Styles = theme => ({\r\n // base styles\r\n ...getImageExtensionPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n width: '300px !important',\r\n height: 250,\r\n backgroundColor: 'rgb(46, 46, 46) !important',\r\n borderRadius: '0 !important',\r\n overflow: 'hidden',\r\n position: 'relative',\r\n\r\n '&:hover $placementGradient': {\r\n height: '480px !important',\r\n top: -172,\r\n },\r\n },\r\n\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 20,\r\n bottom: 25,\r\n },\r\n\r\n placementLongHeadline: {\r\n fontSize: 10,\r\n lineHeight: '16px !important',\r\n color: '#bebebe !important',\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n '& .ads-label': {\r\n border: '.5px solid hsla(0,0%,100%,.3) !important',\r\n color: '#fff !important',\r\n opacity: 0.7,\r\n },\r\n '& .business-name': {\r\n color: '#bebebe !important',\r\n },\r\n },\r\n\r\n placementGradient: {\r\n position: 'relative',\r\n height: '280px !important',\r\n marginTop: -105,\r\n backgroundImage: 'linear-gradient(to bottom, transparent 0, rgb(46, 46, 46) 100%)',\r\n },\r\n});\r\n\r\nexport const getImgExtMSNSingleCarousel169x100Styles = theme => ({\r\n // base styles\r\n ...getImageExtensionPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n '&:hover $placementGradient': {\r\n height: '480px !important',\r\n top: -80,\r\n },\r\n\r\n width: '622px !important',\r\n height: 368,\r\n borderRadius: '0 !important',\r\n },\r\n\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 20,\r\n bottom: 25,\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n color: '#bebebe',\r\n },\r\n\r\n placementGradient: {\r\n display: 'block',\r\n width: '100%',\r\n height: '280px !important',\r\n top: 120,\r\n backgroundImage: 'linear-gradient(to bottom, transparent 0, black 100%)',\r\n },\r\n\r\n placementLongHeadline: {\r\n fontWeight: '200',\r\n fontSize: 28,\r\n lineHeight: '33.99px',\r\n color: 'white',\r\n width: 590,\r\n height: 73,\r\n marginBottom: 20,\r\n\r\n '& .multi-line-processed-text': {\r\n position: 'absolute',\r\n bottom: 30,\r\n },\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n '& .ads-label': {\r\n color: '#fff !important',\r\n opacity: 0.7,\r\n border: '.5px solid hsla(0,0%,100%,.3) !important',\r\n },\r\n '& .business-name': {\r\n color: '#bebebe !important',\r\n },\r\n },\r\n});\r\n\r\nexport const getImgExtMSNMediumHeadline155x100Styles = theme => ({\r\n // base styles\r\n ...getImageExtensionPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n display: 'block',\r\n position: 'relative',\r\n overflow: 'hidden',\r\n width: '300px !important',\r\n height: 296,\r\n margin: 'auto',\r\n padding: 0,\r\n borderRadius: '0 !important',\r\n borderWidth: 'thin',\r\n color: '#ddd',\r\n border: 'solid',\r\n },\r\n\r\n placementTextContainer: {\r\n height: 98,\r\n padding: '15px 13px',\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px !important',\r\n },\r\n});\r\n\r\nexport const getImgExtMSNInArticle150x100Styles = theme => ({\r\n // base styles\r\n ...getImageExtensionPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n borderRadius: '0 !important',\r\n height: 364,\r\n color: '#ddd',\r\n border: 'solid',\r\n borderWidth: 'thin',\r\n background: '#fff',\r\n },\r\n\r\n placementTextContainer: {\r\n padding: 10,\r\n height: 98,\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementShortHeadline: {\r\n top: -6,\r\n color: '#207697',\r\n height: 60,\r\n position: 'relative',\r\n fontSize: 15,\r\n lineHeight: 1.2,\r\n fontWeight: 200,\r\n paddingBottom: 5,\r\n },\r\n\r\n placementDescription: {\r\n height: 45,\r\n margin: '5px 0 10px 0',\r\n fontSize: 14,\r\n },\r\n});\r\n\r\nexport const getImgExtMSNSmallHeadline133x100Styles = theme => ({\r\n // base styles\r\n ...getImageExtensionPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n borderRadius: '0 !important',\r\n width: '300px !important',\r\n height: 90,\r\n color: '#ddd',\r\n border: 'solid',\r\n borderWidth: 'thin',\r\n background: '#fff',\r\n },\r\n\r\n placementImageContainer: {\r\n float: 'left',\r\n width: 100,\r\n height: 75,\r\n margin: 8,\r\n },\r\n\r\n placementTextContainer: {\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementShortHeadline: {\r\n height: 52,\r\n margin: '4px 8px 0 8px',\r\n overflow: 'hidden',\r\n fontSize: 13,\r\n fontWeight: 600,\r\n lineHeight: 1.384,\r\n paddingBottom: 5,\r\n },\r\n});\r\n\r\nexport const getImgExtBingDesktopMultiImage133x100Styles = theme => ({\r\n // base styles\r\n ...getImageExtensionPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n borderRadius: '0 !important',\r\n width: '548px !important',\r\n height: 242,\r\n color: '#333',\r\n border: '0.5px solid #ddd',\r\n boxShadow: 'none !important',\r\n padding: 10,\r\n alignItems: 'flex-start',\r\n justifyContent: 'space-between',\r\n },\r\n\r\n placementTextContainer: {\r\n position: 'relative',\r\n top: -1,\r\n width: '100% !important',\r\n },\r\n\r\n placementLongHeadline: {\r\n color: '#003DC1',\r\n fontSize: 20,\r\n fontWeight: 'bold',\r\n lineHeight: '27px',\r\n },\r\n\r\n placementFinalUrl: {\r\n position: 'relative',\r\n top: -1,\r\n color: '#0b6a0b',\r\n fontSize: 12,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementDescription: {\r\n position: 'relative',\r\n top: -1,\r\n color: '#333',\r\n fontSize: 12,\r\n lineHeight: '16px',\r\n margin: '2px 0px 7px 0px',\r\n },\r\n\r\n placementImageContainer: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n position: 'relative',\r\n left: -4,\r\n top: 3,\r\n\r\n '& .bing-desktop-multi-image-item': {\r\n width: 130,\r\n height: 135,\r\n border: '0.5px solid #ddd',\r\n overflow: 'hidden',\r\n marginRight: 5,\r\n borderRadius: 6,\r\n },\r\n },\r\n});\r\n\r\nexport const getImgExtBingMobileMultiImage133x100Styles = theme => ({\r\n // base styles\r\n ...getImageExtensionPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n display: 'block !important',\r\n borderRadius: '6px !important',\r\n color: '#333',\r\n border: '0.5px solid #ddd',\r\n boxShadow: 'none !important',\r\n },\r\n\r\n placementAdsLabel: {\r\n // position: absolute;\r\n top: 10,\r\n left: 5,\r\n color: '#fff !important',\r\n border: '1px solid #ddd !important',\r\n padding: '5px 1px 7px 1px !important',\r\n lineHeight: '0.1em',\r\n borderRadius: '6px !important',\r\n backgroundColor: '#666 !important',\r\n margin: '0 !important',\r\n fontSize: '14px !important',\r\n opacity: '1 !important',\r\n },\r\n\r\n placementTextContainer: {\r\n position: 'relative',\r\n width: '400px !important',\r\n height: 118,\r\n padding: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementLongHeadline: {\r\n color: '#003DC1',\r\n height: 24,\r\n fontSize: 18,\r\n fontWeight: 400,\r\n },\r\n\r\n placementFinalUrl: {\r\n color: '#0b6a0b',\r\n height: 20,\r\n fontSize: 14,\r\n fontWeight: 400,\r\n borderBottom: '1px solid #ddd',\r\n marginBottom: 6,\r\n paddingBottom: 6,\r\n },\r\n\r\n placementDescription: {\r\n height: 40,\r\n fontSize: 14,\r\n fontWeight: 400,\r\n lineHeight: '20px',\r\n margin: '2px 0px 7px 0px',\r\n },\r\n\r\n placementImageContainer: {\r\n '& .multi-image-placement-carousel': {\r\n '& .carousel-inner': {\r\n paddingBottom: '0px !important',\r\n },\r\n '& .carousel-indicators': {\r\n position: 'absolute',\r\n left: 0,\r\n width: 'auto',\r\n bottom: 0,\r\n margin: '20px 24px',\r\n\r\n '& li': {\r\n width: 10,\r\n height: 10,\r\n border: '1px solid #605E5C',\r\n margin: '0 10px 0 0',\r\n background: 'rgba(255, 255, 255, 0.8)',\r\n borderRadius: 10,\r\n\r\n '&.active': {\r\n border: '1px solid #0078d4',\r\n background: '#0078d4',\r\n },\r\n },\r\n },\r\n\r\n '& .carousel-control': {\r\n position: 'absolute',\r\n top: 'auto',\r\n left: 'auto',\r\n right: 0,\r\n bottom: 0,\r\n width: 16,\r\n height: 32,\r\n margin: '20px 24px',\r\n paddingRight: 4,\r\n color: '#0078d4',\r\n background: 'rgba(255, 255, 255, 0.6)',\r\n textShadow: 'none',\r\n\r\n '&.left': {\r\n marginRight: 76,\r\n },\r\n\r\n '& .glyphicon.glyphicon-chevron-left, & .glyphicon.glyphicon-chevron-right': {\r\n fontSize: 16,\r\n top: 'auto',\r\n left: 'auto',\r\n right: 'auto',\r\n bottom: 'auto',\r\n margin: 0,\r\n position: 'relative',\r\n lineHeight: 1,\r\n verticalAlign: 0,\r\n },\r\n },\r\n },\r\n },\r\n});\r\n\r\nexport const getImgExtSquareImage1x1Styles = theme => ({\r\n // base styles\r\n ...getImageExtensionPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n borderRadius: '0 !important',\r\n width: '300px !important',\r\n height: 90,\r\n color: '#ddd',\r\n border: 'solid',\r\n borderWidth: 'thin',\r\n background: '#fff',\r\n },\r\n\r\n placementImageContainer: {\r\n float: 'left',\r\n width: 80,\r\n height: 75,\r\n margin: 8,\r\n },\r\n\r\n placementTextContainer: {\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementShortHeadline: {\r\n height: 45,\r\n margin: '8px 8px 0 8px',\r\n overflow: 'hidden',\r\n fontSize: 13,\r\n fontWeight: 600,\r\n lineHeight: 1.384,\r\n paddingBottom: 5,\r\n },\r\n});\r\n\r\nexport const getImgExtMSNDoubleCarousel93x100Styles = theme => ({\r\n // base styles\r\n ...getImageExtensionPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n '&:hover $placementGradient': {\r\n height: '480px !important',\r\n top: -118,\r\n },\r\n\r\n width: '310px !important',\r\n height: 333,\r\n borderRadius: '0 !important',\r\n },\r\n\r\n placementGradient: {\r\n display: 'block',\r\n height: '280px !important',\r\n top: 83,\r\n backgroundImage: 'linear-gradient(to bottom, transparent 0, black 100%)',\r\n },\r\n\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 20,\r\n bottom: 25,\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n color: '#bebebe',\r\n },\r\n\r\n placementShortHeadline: {\r\n width: 280,\r\n height: 54,\r\n fontSize: 20,\r\n fontWeight: 200,\r\n lineHeight: 1.3,\r\n color: 'white',\r\n paddingBottom: 5,\r\n\r\n '& .multi-line-processed-text': {\r\n position: 'absolute',\r\n bottom: 30,\r\n },\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n '& .ads-label': {\r\n border: '.5px solid hsla(0,0%,100%,.3) !important',\r\n color: '#fff !important',\r\n opacity: 0.7,\r\n },\r\n '& .business-name': {\r\n color: '#bebebe !important',\r\n },\r\n },\r\n});\r\n","import _ from 'underscore';\r\nimport classnames from 'classnames';\r\nimport React, { useMemo } from 'react';\r\n\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n// import { MultiLineEllipsisText } from '@bingads-webui-react/multiline-ellipsis';\r\n\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { getImgExtBingDesktopMultiImage133x100Styles } from '../../styles';\r\nimport {\r\n MMAPlacementCard,\r\n PlacementHeadline,\r\n PlacementFinalUrl,\r\n PlacementDescription,\r\n} from '../../shared-components';\r\n\r\n// multi-image placement\r\nconst ImgExtBingDesktopMultiImage133x100 = ({\r\n placementData, // UAPVMPlacement\r\n isEnabled,\r\n longHeadline,\r\n finalUrl,\r\n description,\r\n classes,\r\n}) => {\r\n //\r\n const { placementMeta, images = [] } = placementData || {};\r\n const { previewHeight, aspectRatio } = placementMeta || {};\r\n\r\n // there are 4 images in the placement, the last 3 are placeholder images\r\n const imagesWithPadding = useMemo(\r\n () => [0, 1, 2, 3].map(index => (images && images[index]) || _.last(images)),\r\n [images]\r\n );\r\n\r\n if (!placementData || !placementMeta || _.isEmpty(images)) {\r\n return null;\r\n }\r\n\r\n const imagePreviewWidth = previewHeight * aspectRatio;\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n {\r\n imagesWithPadding.map(({\r\n imageMeta, placementCropping, effectiveImageUrl, effectiveImageWidth, effectiveImageHeight, expandedPlacementCropping,\r\n }, idx) => {\r\n const cropping = expandedPlacementCropping || placementCropping;\r\n return (\r\n // eslint-disable-next-line react/no-array-index-key\r\n
\r\n \r\n
);\r\n })\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const AdPlacementImgExtBingDesktopMultiImage133x100 = withUAPLThemedStyles(\r\n ImgExtBingDesktopMultiImage133x100,\r\n getImgExtBingDesktopMultiImage133x100Styles,\r\n { componentName: 'AdPlacementImgExtBingDesktopMultiImage133x100' }\r\n);\r\n","import _ from 'underscore';\r\nimport classnames from 'classnames';\r\nimport React, { useCallback, useMemo, useState } from 'react';\r\n\r\nimport { Carousel } from '@bingads-webui-react/primitive-unthemed';\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n// import { MultiLineEllipsisText } from '@bingads-webui-react/multiline-ellipsis';\r\n\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { getImgExtBingMobileMultiImage133x100Styles } from '../../styles';\r\nimport {\r\n MMAPlacementCard,\r\n PlacementHeadline,\r\n PlacementFinalUrl,\r\n PlacementDescription,\r\n AdLabel,\r\n} from '../../shared-components';\r\n\r\n// multi-image placement\r\nconst BingMobileMultiImage133x100 = ({\r\n placementData, // UAPVMPlacement\r\n isEnabled,\r\n longHeadline,\r\n finalUrl,\r\n description,\r\n i18n,\r\n classes,\r\n}) => {\r\n //\r\n const [carouselState, setCarouselState] = useState({ index: 0, direction: null });\r\n\r\n const { placementMeta, images = [] } = placementData || {};\r\n const { previewHeight, aspectRatio } = placementMeta || {};\r\n\r\n // there are 4 images in the placement, the last 3 are placeholder images\r\n const imagesWithPadding = useMemo(\r\n () => [0, 1, 2, 3].map(index => (images && images[index]) || _.last(images)),\r\n [images]\r\n );\r\n\r\n // const srcForCroppedImageView = showImage && this.props.image.FinalSrc;\r\n const imagePreviewWidth = previewHeight * aspectRatio;\r\n\r\n const handleSelect = useCallback((selectedIndex, e) => {\r\n setCarouselState({\r\n index: selectedIndex,\r\n direction: e.direction,\r\n });\r\n }, []);\r\n\r\n if (!placementData || !placementMeta || _.isEmpty(images)) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n
\r\n \r\n {\r\n imagesWithPadding.map(({\r\n imageMeta, placementCropping, effectiveImageUrl, effectiveImageWidth, effectiveImageHeight, expandedPlacementCropping,\r\n }, idx) => {\r\n const cropping = expandedPlacementCropping || placementCropping;\r\n return (\r\n \r\n \r\n \r\n );\r\n })\r\n }\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const AdPlacementImgExtBingMobileMultiImage133x100 = withUAPLThemedStyles(\r\n BingMobileMultiImage133x100,\r\n getImgExtBingMobileMultiImage133x100Styles,\r\n { componentName: 'AdPlacementImgExtBingMobileMultiImage133x100' }\r\n);\r\n","export const bingDesktopHeaderImage = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhEAAABdCAYAAAAbmzQsAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAB4MSURBVHgB7d0JeJTluTfwfzJbJrNksq+EkAQIAQSBgIICKhZFcK1rxbrXeurV9rL4ffVTT0/r12Mb7elpBbVaj0u1bG4sKsgmSiBAIiGQEAgJIQnZJussmSWTnOd5w4QEcWEKTCD/33XNxfDODLzr89zv/SxvSI8AIiIiotMUCiIiIqIAMIggIiKigDCIICIiooAwiCAiIqKAMIggIiKigDCIICIiooAwiCAiIqKAqDGInWoKC05rQUREdPaEhIR8r2XSoAwiZKDg9XrhcrmUP30+H4iIiOjcCQ0NhUajgVarVV4qlepr3wkZbDNW+gOIjo4O6HQ6hIWFKRtBRERE5053dzfcbjecTqdSH+v1+q8FEqfsE1FRUYEPP/wQtbW1OJdkACFXur29HeHh4TAajQwgiIiIgkBmImTgYDKZ+loGZB3dP/dwyuaMhoYGfPLJJ1i/fj2GDx+OKVOmID09HSNGjMDZJFdMRjwy0pFBBBEREQWXbMqQwYTD4VBu7Pv3j/jW0RmyL4LMSixfvhxLly49q50a5b8tXx6PR1lhIiIiGhxk1wJZP/vrar/vPcTTZrN9Y+/MM0WumAxcTtV5g4iIiIJD1stdXV1Kc0Z/g2qeCH+fCA7jJCIiGlz89XNAmYhzhQEEERHR4HRyHT1o5olg8EBERHT2tHa68VZBJXbVNKO904OxCRZcl5WMaakx0KoCyykM6hkriYiILhTyZrmzs1OZxqB/3wI5lDIiIkIZAXE2+h56urqx7uAxPL2+SLz3Icmsh1atwqbyerxTWIG5o5Lwx+smISpch9N12kGEHCcqO1jIjSYiIqLvR07cVFBQgJKSEqWTop9arUZ2djZycnKUURBn2t76Vjy7sRiWMA2evHISpqREwSzeH2jswPK9VXi7oAIv5pXhidljEaY+vYENpx1E1NTU4PDhw8jIyEBKSgongyIiIvoGcvblY8eOKe/tdjsOHTo0IICQ5N/lcpmJkJMsSklJSTCbzTgTlhUdgdPbhd9fOxFXZSb2LR8nmjNSLQa0uzxYVVKDa0cnI2dYNE7HaQcRsbGx2LVrF4qKipQNTktLQ1ZWFqKiopSNlxEVERERAR999JESSPjJ5go5A2R8fLwyqaKcwKmxsVEJMPLz8/u+J5s37r77bpwJq0pqRYCQiKnDYr/2mcxI/Gx6FpbtqUJBbfPZDyJkoCBnr6yurlbadkpLS5UIKi4uTtkpcoZL+afBYDjr80oQERENZicHEAkJCZg8ebJSV/odPXoUu3fvRn19fd8gA9lv4kxptHcixhAGg/bUTRXDIw1w+3xo6/TgdAWUNpCZhy+//LLv6ZoyFSPTNfJ18OBBJdCQO2jMmDGIjo5mMEFEREOezDxMmDABqampymzQss6UzRbykRKyv6EMHOSjH860eJMeVocLTo8PRt3Xq/2qVrvSF8KiP/3ZogPqHSmDBBlInIpMzchnb+zYsQOLFy/Gli1bQERENNTJZgwZQLS2tirPp5LdAuSfbW1tyvIz1QfiZAvGJGNjeT12HLV+7bMOlxd/3XZQGbExOTkKpyvgIRYyiJBNFifzD2GxWq1Kaka28xAREQ11clSjHN14cr0omzzO5qjH2ekJaHa68ezGvVh/sA4t4n1Xdzf21bfh+a0lWF1SjRvGDsP4xEicroB7QcqRGfPmzcP+/fuVfhH+KatbWlqU52zIJg5OIEVERNRLDvGUTRaJiYlK5kH2hZB/yiYNuVx+fqbZ3F68urNcmUzqoLUDv1i9C0mieUMnmi+aHG4c63DimlFJ+Nn00ac9vFMKOIiQozDkxsuXbM/59NNPUVlZqbTrEBER0UCyGaO4uFiZD2LBggV9y2U3ALlcfn6myJv48mY7Fq0tRLkIHv4wbzKuzIjHu3uOYFe1FW0uj/h7AuaLpo6pwZqxUjZbHDhwAJs3b1bmjjh57CsRERH1ktl6WWfKjIMc5SgnlpLv5YAEmZU4+QmZ/woZQDyzvgjF9a34/TUX46Zxw5RA4eeXZeFMCjiIkJNOrVu3Ttkh/YewEBERUS/Z18E/klGS2XoZNMhpEmRGX958yxvyk/0rcy7JJoxFHxeiuK4Vi2aNxS3jU6EOPTujJE9rLeXGypEXckKMDRs2DNgxJ5M7Tg7zlJNRERERDUUzZ85EeXn5t9aXkZEDOzTK+jMzMxOBONrmwC9W70Z5U4eSgTibAYT0vYMImXKRQ1HkhBhydq1vS7vExMQok2lcfvnlygyXREREQ5F8JoZ8nSt7Rfah1enG03MuUpowzmYAIX3vIEJOgCE7T35Xv4dp06YpkZfscKnVnv7EFURERBSYGWlxyIw2IzPGdNYDCOl7BxEy8/BN2QfZOUSO0JgzZw7GjRsHIiIiOvci9Vrlda6cMoiQ01TL13fN8yC/I8e3zpo1S5nK02KxgIiIiIaGUwYRMqtw5ZVXKs/H+KbJL2T2YcaMGbj00kuRnJx8Rmfa4iRVREREg4esl09VN4f0fEuNLSePWr9+vTIHhH8Yp5zqeuTIkbjpppuUp3WeyRWU/S3kHOIyIJEP7iIiIqLg8z/OQj6xWw4/lSNIpG8NIiQ5hXVBQQF27typVO6y4+TEiROVB4mcSf4gQs7cJQMWOa322ZpHnIiIiL4fWT/LAEL2i5TdFjQaTV/9/J1BhP8fkMM6JRmFnI1He/ufvSGbT+TzN+RKymzEvzLhBhEREQVO1s3yuR5ySu6oqCjlceb9Hxb2vYKIc8EfRMgJOWQgIaMeuUxGPXKlz0bgQkRERKfm8XiUlgHZQiADCKPR2JeF8NfJgyaIkPzDSGUg4XK5lLkp5EsGFd/UqYOIiIjOLBkkyJYAvV6vdF/Q6XRKACGzEP4RnMr3BlMQ4Q8U5EvOLy77SMiAQr4YQBAREZ07MuMggwZ/8OBvxujfMjCoOhwMWDERAcmV9TdzMIggIiI6N/zZBlkP+wOHkwMI5XuDKRPh518l/59n8vGoRERE9N38gURf08Up+iYOyiDi2zAjQUREdPaczkCG8278JEdpEBERDQ6czYmIiIgCwiCCiIiIAsIggoiIiALCIIKIiIgCwiCCiIiIAsIggoiIiALCIIKIiIgCwiCCiIiIAsIggoiIiALCIIKIiIgCwiCCiIiIAsIggoiIiALCIIKIiIgCwiCCiIiIAsIggoiIiALCIIKIiIgCwiCCiIiIAsIggoiIiALCIIKIiIgCwiCCiIiIAsIggoiIiAJygQYRPrTXluHzDetQWG6F17/U2YKywq3YW2tHR3058rcWwtrpRbB0tlThy807UN3iRM/xZR5rOb7ctg1FNXacr+x1FdhVVAMPhg5PRz2K8/NRa3f3W9qOvTsKUV5ehq2ltQN/4O5AeXHpSd8/f3R7O1G9Px/7q1vg9Z+8tlrsOXDsAjjuJ8qPdevWIb+4HG4fzt4xc1qxbWspzo8r3oOGigq0BPEgyzIyb/t2lFv9K9ENZ0s1dmxeh7L687fcPF9dmEGE14bijSvx0p+ex+I3NqDe1bvY52zGxpUv473th2FrKMLbL7+H4tp2BEtnwx68u+QdbNpbDo9SEHtQnb8af/nri1hf2oLzlaN8K95ff+A8KRTPDJXPhby1H2JdUd2JhXUFeOutj1FWug3vfLZj4A88NuR9vAE7DltxPuoRQcT21a8id+kWOJQaVmgpxZtr96IT57f2mn14/8OP0eqUlVQnDud9grW7G87eMWs/jPffEeUUzgdOlGzajJogHuTOo/l4edkyfJFf3RuwdnehfMcaLM59HpsOOUDnlhoXIGdzHYpLyzH+8stRsG879lfOw7AxZgw+OsSYzaiorUBH51jEasWdzsF4XDxK1/cNj61BFGbynQqmmBiE97hhd3gQqvHAZuuCOsyA6AgjfG477HYHXF1AuDkKRr0GIQiyHi+aGzugEpvjdot1NcVA62mFU1Q68n10uArocqOhuU35ukoXjhiLSfldp9iWDqcbarUaKo0WFrNpwDYaLDEw6lQyMoTVaoOsxsIt8TDpEBSqyHhMGBWN5bvK0TMjTex7H0q3fAb1zLsw+/I4jLxYpXxPboO1zQG11wG33A70Vsh2h0PZLwOOXd+2HT/2qhO/lzs13GCASXw3aExGqETQ++GW8Vh4zUioBnzoE4G6FfLU9Z+jNrsdIRq9ctzabe1QaY3Ke7vdphxjZ1sbuvp9P1gcbVVo6TDhipnzkGZRoa3kM7xYuB83Z49WPpc3Iw0N6hPnq9hWt9i2NodLWXejwQid2oeODhu6u+W57+47rl5xPTt9OuW8d/vE7+NNUEVl49HHkxEvjm27x41QZ5fYbyrowg2wmPTKd+0OOxzixJfXg1atgymI+2cw0CQMA/bmo352OlI1Lli7XUiOT0G4+MwujkWPuD7ktSGPi7dHBaPcj36nKjOUsqpFOf/EQUR8dMSAc7TT1iEy2hqYxb9ja7Mq16ooxBAXHS6u1R5R5zTC1nXit0PJBRlEtNQfxIH6OCxYeDPCS5/F/n0HMStrykmF3OAQm5IGd0MLjrY6EIEqVI6Iw1idAWXyQ5EeXvX2SyhzRMBTW4WUWx/HQ1kuvJS7FF0jzFBb29CiTsd9P74JoRUbsCZvP5xeDSzDsnHzzQuQEB7kLe7YhyVPvYvQSaOhrd+HuqhLMMlsxdHychzqmYa//v4WuIq24N1tB9Bls6LRm4hbH/oxxmlrsHrZSlR1qGHzOuHQxuPRhx5EyJHtWPXZ5/CIQtRumYxHbrsCqtKVeO3jBujC2uHQTMevFs1DcIpXPcZMHAn333aiyjMHaV1HsHmnClcvGg9b2Vt4Id+AV35yNfZ8ugIbD9chRFScddUmzBC/rCstxMpPNsMZKrZLlYj5t92IS1KA/ev+iRU72qBxNSF21kLcNWc4dq1+F18cbIEqRI/EybNx+xUTYdAEKVwMTcDM66fh8IbVKJjyM0zt+8AHa/lmLPt7HpwRPXBr0nHH7T/AwW1r4Much9kZLrz5579jxIJ/w+w0F1b9430kjU1FwReH0KP3iu+Pxb0PLkBKRHAiQkv8CGhCi7Fu7WqMykjFqDGz8VS2RrkeZRPVgcLtqNpUI87XSFy38CFMjWzEpvdW4XCTB9YOKybc9AvcMFWP5b95FNVR0xGnaceRrhG49+FboNv6R/xmfxouM7lQc7Ae0x//Na42HMaSF3Zi4TMzsf71F0UFOA5dnfXoiszCwofuQkxrCVb88yPU9Rhg67bCpBqL+x69B8kmDFmGyGxEGw6gXGSSo6PbYavvRnpqghIgfLVxA2pMObj58hTs2/QRDqvH44ZrL4JOuUw8qN/xFl5bZ+tXZsyFr2Ib3luzD+2dzaK5yoD5d98P35bf40j6T/HgDzJQ9sW72No8Dvdcm4RP3n0Xh9w6eEQwf+1Pf4WppgasXLkWDR1OtHfpMH3+3Zg3PhZDxQUZRNSW7oBzWDqGx42CdkYU/lFWgmb7xYjDIGRMRk5SGSobnIhy1MLcHQWd5njlL076zKt+iutHx+Lw+7lYLNqbkRUlPrDBmHUvHrvUhDV/W4L1X1VhZH0pvCPm4ufXjkNz7UFoMUiIO4IJc+7AfMs+PPnMGiQ9+Qxuv3IHnvjdbpG+VcFiycCNN+UgxdCKN/6yAtUiMIp1laAOo3DXYzcjtOSfWLKpQ/xDdpTlf47R1y/C3LF6bHrteWzcOwJpe3ZBNfmXeGxeNGqKG+FD8ERkjMPEnnU4IDLfke37UBo7Fj9KEunX6t7PO1trkFfRhhkLHsHUKCte/uNKZXnFvg2ImfEAfnhZCr5a9jzyPivFuOuBpZ84cOt/LkKWaycW//tSlI68G7tLapF94+O4Ps2ttAkHuz1SP2wq7oz+HJ+tyUf6jOMLPc3YuXo/RtzzEOaNisDOpUuwQQQ+M8KNKKmuhzOuQ7Rip0ArKkpb9RE06rKQdKwArUmz8NSDOagtqoUuiPFveHQWbrnRi4NHmrBn1Yv4aE0mrvzhA7g+o/fz6KzL8G8z4vDBK/+D8qMNGG4tRrk7BT9UztfleCt/Ixqyr4UnRGQaJs3BfXMzsXXxs9iUV4GrxO+NIZGY/8jdsFQtx29Fc+v4B0f0+9+jMeWG2zEjtg1/e+NDVDW0w1W5F22W6Xjkvh/Auum/sLIIQ55Kp0eyORX1tU2wi/LiaE8Whhm/RLsobzJSzCgTNypOexRqOxoRMzUV2r44uxP7Nnwuyoz/36/MEB+GJeKKm8ZgZHQ3lr/yBo7UtWDOmLEoLdqH1tkZsLXUIHPSnXAULUF55I1YtHAcfAeW4w9LC5A234ldBx345W//D6LbDqHR142h5MILInwN2PNFJRKzp8MnUufGxHS0bz2AA402xA3KLJMWqVkJ2LxrLyIsTQhPnQj98W4aPnc9Pn3zfbztDoFZK9Kg6f7fpCA7PUb8NBzZGVqU9Whx2Q9uQOlby/FM3gpoo9Kw8IGxiAp2JkLQak1IjpO5AR0iNCZEmrXQOHUIVYk7uy4Xmiq2Y8WWPfD4QtFiNSuFrKNO3IUZLoLZqIInKhkxYTKIsGLfln0oP/BbbJQRkicUWbEeXPTgr3Hgt8/iya3iLh5Z+N34TPH/BOnOXJ+Gq66y4LX8QphcFRg/fjbkKedvPu50inRpiBYxIhWtMXRjeEqyCKM6cGh3IbZ+2YaCD0RI0N0DS1otGivdaBfbniJ2ndaYgMhQG9pF1unR26bjuX++gLzWFiRfejt+nDIMegSTFmkTr0DU7pexfc8oUSAni/bEdhxqrkSJDPTEN7o9DoRN78StE2Lx+VfVqNpTjcgp2ahrbYaxvhpxOT/C9OxJaHrpJfy/Jz6EV5+NhY/cgVhjcDIRdtGMZk4djytGazDz8hxUF23Ec//9Dib+5XbxaQQSYiwiCxOCMNEEIxuTBp6vCQjzlcIl0t1h4SKISE0WzVBapGeNwtF6Ozyi/So8cxISxUFTZY5HascGkT3sF0RERCnnR6g43mpNmLKoRewjbeIUGMV5705MRUQR2/3lzUl8ogZ7j1SiqPwrRE1aiPBNIogQV1T8cFHp5xWi7NhRUYbGITM5ol/TrhnTH/sPVOQ+f6LMEFmwrtpiLFu7Ha1eFbqagQkXA8kXzUB4eR5q6gtRWzkOs+7UomZbPUp2vYqn9qiVJhCVfjLcSbfh1zfW4tmnFkHXpUbWjQ8iMzU++M3J58gFF0S4Krcjrz4EkZHFWP3OAWVEhrG7Cnl7qjBzVjgGo4jROYj82z+webQFd8xMgK2kd3lt4SbUDLsSf3r4UuxZ+jxed/p/UYMjx0TFGudGyWEP1Jk9aBHlyi0/eRJJ4R6sfu0V7DpwFKMSRg7uA9zZhl2FDUi//he4eXgHXv/zB8piS1IU1DXH4OzsEXfvTbAqHWNjkTk1E+PnPY1rxkbg8N4d8EXHo7nwIOY9uQQPm6z49D+exuo9DjyYE6z2YhXSp89F28+WYkVWEubfkTTgU6M5HuoeO460ODEitB11TbWIEYXa8DFZuHrMY7hdZCKO7S9EfVccUlLqENGyDTU28TsRTLZ2m5ClcaDMnoFf/t85MLYUI3fJl6icMwkxscFtH9dGpuKK2dOxdOlnaDPFyU45GBkzAiPn3oZ5Y6JFZqEIrRFpiLY0I3RrPg5bvci5dzTKPtuMshI1Zl5ngvVgEabc9QRuS/DhiyW52C7uEKemBCdfX5cvjl9FGh695wpYwiNE4GuELiH6G7N7A8/XNrhUJqjVoXC121F3zArfOB1qqqvhjrkYKtFu7qisRLM3G7oDBag3W/Bd3VriY2PhrToGl28s2qz1oqIcwu0YfVSIS01De95SVJXF4+67I3Fk0/FPYlJxmeFTbPm8EeEJ1+A6Q//q3IH60vqBZcbuOiQXlSPmkofxxCVarHzp75BFjsaciGxtN7a8uRY9sx9CokoP9ahhyI6Yj1/dnoWQur0oboyCxV2LfTHXYsl/PQhr4Qo8/cl2OK4aiaHSa+UCCyJcOLR9F3wJY7Hw54swOU6DbpEyfW/xf2L5jmI4Zk3DoKRPxSU5bqxyX4TUGC32H18clTYGxg/WInfxEcR5vCIFbBN3tbI5w4TaHa8gd0OP0ifi3osSYC9bi3WrPoC7SwutKRWzs5IHZR+QAcItyBgWimXLl8A5ZiTsPaIQtnsRPz4HiTtFM0buHxCbIEtYea9twNSZU7FiVS6KPo5AqEuL2fenIQFH8dJzuaJZxAuraAf9ycggX7pxkzHR8iy+QIZoTosc8JGsbK8al4LX3/4zShMsaBB3PIli+aQZV+Ot1W/gue066ETWaYRo/pkQPQZ3XFuEFbm50LibEDtvIUR9jF1567FmbQf03SJrkTEJqeFB6kk6gArJE2ZgdH6eKFS9YkNjMHX+WCx7/VXkRqpQ26LBnfemidM2FmNQhfeaMzEnwowOdw1K065Eqji8TaLNZ+XizxBiDhVBYyQWLohBsKROuxrZFR/hv/+Yj/AwNbpFNm3uDXPEuXZq8eNnILNoBV4V56shzIvM2fcjzqQWwYELB/NW4YUip8hApeDG69Oh3SoaIxt3ieNagsZGFyY/IConXdW3r8+kaTAXfYgXntuDFIu8k2AQIWlFsDBBF4L1OZco59CRvk+MGDMlCX/908eY98uHvx782faLMiP/RJmRnSwCPgM+Xf8qXqsbCY+rCyE2jzitDRg1xoS3d+rxRE7v0Y+dcieicpcgN9cClbUdKXPuR0aSB0c/eQO5ayLgbfchZ+78IRNASCE9Ai4YPfB22tHS4UVUXBT8We1OW5toNxOVcqwFzrYmpa0yOkKD5ianSBUHsYe7zynWSwW9QVQEImPiDDH19uDuaIBXFwODiIJbGlvgDdVBrwtFp0iVxfVU4fncDZj0wDUYZzZDHWYU22IQaTsHHHa7+I5oOBB3ggajHsHK6sNtQ4cIZgzhoWgXzUgmeSzgFdty/H23W6yrB5oIE0I6beK9E+5uDfSiwEaoBrqQ3p7tUIWiurIABcUtmHv7j5BqDkFHc4OyjSIC6e3Z3uPt3UdykVqP+Ojgj8LxiONn6zHCKM4tZQCJPDYivW0Wx6t3JIYdTnc3NOpwaMO0MIrjbxPnpVwm7n9OnLvi/Giy2kTwGApTTOzx0RkOWNvk4NlQcZyNvb33g8TWIbJhGv3x6+f4tdcp7hCjwpXRKf7RGSeOS//v6NEl3tt6wnub3QbZcfT2nZdiT+vClREXenFQHO02+NRamMUx699j3+3ogN3eqfTut8TEi+Pegjf//TcwXbcIlw/Xols05cn9cvi9x/Ey7sOvL4sV31UjMl5kOHwnrgdXhxzNZIBBnDj+/avucqPDdvx6KNuOon1aXH//PMSGIQjasPm19xB96wO4KEjNw/IaahTnULxZo5xPveeQKHYcDnjUZmW0RY81H8/+qQz3/O4eDD/5bkpcVy3iuup/rvUvP8PD5DWlgkmUq8r12ukVyTVz302ZzG5bbfLX/uvSX+8oY5GgNxqV82OouMAyESHimjMh/qRyVW8SKcPjwbvJcqLXbHRskLsfqmThdPx9eFTf/YVWpL1710yFqPj4vq8rxWpz7/swcwLi40/ckciCxyxfGAR0JrEuvW+j4qOOL9SceC/aMw3+nvfiwFj0A++sWiu/wOr3imAS2YmQ2r3wJV+HiPDeiMgsmjAGbGOIZsA+Ggzk8Yvu9/feY9P7Xg5xNFn0X7uXlOfl1+4vxfkRGz+wCU7+W/HxBgwGJnP/I3HytScKYXFcBm7TwO/I91F9Hw2u46g5xXkpGSJOLNObzH39UXQGs/I6md4cKY7hyfelYYjuv639rgdtv33q37/1X63DB5trkDh2BOwlJTBMugPGoAQQkg7x6SNgDmLRKa+h+OP3ff3PIeUYKBNP1SJ/7VfQzpz99QBCEtdV1Cmuq1OVn8r1qtGf9PMoDPy5/7wemhmiCywTMQR4OlBUVIv4MelIMF6Y0a6cDfFQ8U4caXKJi9OIi3JmICa4vQeJTpMHlYU7oc2YhuSIE5lOe00RitxpmJHx/W/j5dwgpXu2obZNVpRJuHjaeEQEcXqQwa03iNhb1IS0nLEXbBk5mDCIICIiooDwAVxEREQUEAYRREREFBAGEURERBQQBhFEREQUEAYRREREFBAGEURERBSQQTnZlGPLx/DZ2nE+MC+4E0REREPRoJwnovbhG9BZkIfzQWZBE4iIiIYidVdXFwaduCQgNhHng0G5/4iIiM6BkMbGRs5YSURERKeN014TERFRQDg6g4iIiALCIIKIiIgCwiCCiIiIAvK/ckkTT2bTq0cAAAAASUVORK5CYII=';\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n\r\nimport {\r\n getBingSearchTextPlacementStyles,\r\n getBingSearchTextDesktopPlacementStyles,\r\n getBingSearchTextMobilePlacementStyles,\r\n} from '../styles';\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport {\r\n AdLabel,\r\n PlacementHeadline,\r\n PlacementFinalUrl,\r\n PlacementDescription,\r\n PlacementContentContainer,\r\n} from '../shared-components';\r\nimport { bingDesktopHeaderImage } from './media/bing-desktop-header';\r\n\r\nconst BingSearchPlacementBase = ({\r\n placementData, // UAPVMSingleImagePlacement\r\n longHeadline,\r\n finalUrl,\r\n displayUrl,\r\n description,\r\n businessName,\r\n isClickDisabled,\r\n showLogo,\r\n logo,\r\n i18n, // may need to set window._TL_ in other platforms\r\n classes,\r\n children,\r\n adExtensionContainerClassName,\r\n}) => (\r\n
\r\n \r\n
\r\n {showLogo && logo &&\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{businessName}
\r\n \r\n
\r\n
\r\n }\r\n \r\n {(!showLogo || !logo) &&\r\n \r\n }\r\n
\r\n \r\n \r\n
\r\n
\r\n {children && (\r\n
\r\n {children}\r\n
\r\n )}\r\n
\r\n
\r\n);\r\n\r\nBingSearchPlacementBase.propTypes = {\r\n placementData: PropTypes.shape({}).isRequired, // UAPVMSingleImagePlacement\r\n longHeadline: PropTypes.string,\r\n finalUrl: PropTypes.string,\r\n displayUrl: PropTypes.string,\r\n description: PropTypes.string,\r\n businessName: PropTypes.string,\r\n isClickDisabled: PropTypes.bool,\r\n showLogo: PropTypes.bool,\r\n logo: PropTypes.shape({\r\n Src: PropTypes.string,\r\n Width: PropTypes.number,\r\n Height: PropTypes.number,\r\n CropSettings: PropTypes.shape({\r\n SourceX: PropTypes.number,\r\n SourceY: PropTypes.number,\r\n SourceWidth: PropTypes.number,\r\n SourceHeight: PropTypes.number,\r\n }),\r\n }),\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n placementCard: PropTypes.string,\r\n placementTextContainer: PropTypes.string,\r\n placementAdsLabel: PropTypes.string,\r\n placementShortHeadline: PropTypes.string,\r\n placementLongHeadline: PropTypes.string,\r\n placementFinalUrl: PropTypes.string,\r\n placementDescriptionContainer: PropTypes.string,\r\n placementDescription: PropTypes.string,\r\n }).isRequired,\r\n adExtensionContainerClassName: PropTypes.string,\r\n};\r\n\r\nBingSearchPlacementBase.defaultProps = {\r\n longHeadline: undefined,\r\n finalUrl: undefined,\r\n displayUrl: undefined,\r\n description: undefined,\r\n businessName: undefined,\r\n isClickDisabled: false,\r\n showLogo: false,\r\n logo: undefined,\r\n adExtensionContainerClassName: undefined,\r\n};\r\n\r\nexport const AdPlacementBingSearchText = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getBingSearchTextPlacementStyles,\r\n { componentName: 'AdPlacementBingSearchText' }\r\n);\r\n\r\nexport const AdPlacementBingSearchTextDesktop = withUAPLThemedStyles(\r\n ({ classes, i18n, ...props }) => (\r\n
\r\n
\r\n {i18n.getString(_TL_('Header\r\n
\r\n \r\n
\r\n ),\r\n getBingSearchTextDesktopPlacementStyles,\r\n { componentName: 'AdPlacementBingSearchTextDesktop' }\r\n);\r\n\r\nexport const AdPlacementBingSearchTextMobile = withUAPLThemedStyles(\r\n props => (\r\n
\r\n
\r\n \r\n
\r\n
\r\n ),\r\n getBingSearchTextMobilePlacementStyles,\r\n { componentName: 'AdPlacementBingSearchTextMobile' }\r\n);\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport classnames from 'classnames';\r\n\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\nimport { PermissionsContext, withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\n\r\nimport { getOutlookMobilePlacementStyles, getOutlookWebPlacementStyles, getOutlookWebRefreshedPlacementStyles, getOutlookMobileRefreshedPlacementStyles } from '../styles';\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport {\r\n BusinessNameWithAdsLabel,\r\n PlacementHeadline,\r\n PlacementDescription,\r\n AdLabel,\r\n ThreeDot,\r\n OutlookMobileWebUnread,\r\n OutlookPcDesktopUnread,\r\n DescriptionWithAction,\r\n} from '../shared-components';\r\n\r\nconst OutlookPlacementBase = ({\r\n placementData, // UAPVMSingleImagePlacement\r\n businessName,\r\n shortHeadline,\r\n isMultiLineShortHeadline,\r\n finalUrl,\r\n displayUrl,\r\n description,\r\n isMultiLineDescription,\r\n showLogo,\r\n logo,\r\n i18n, // may need to set window._TL_ in other platforms\r\n classes,\r\n}) => (\r\n
\r\n \r\n {showLogo && logo &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n);\r\n\r\nOutlookPlacementBase.propTypes = {\r\n placementData: PropTypes.shape({}).isRequired, // UAPVMSingleImagePlacement\r\n businessName: PropTypes.string,\r\n shortHeadline: PropTypes.string,\r\n isMultiLineShortHeadline: PropTypes.bool,\r\n finalUrl: PropTypes.string,\r\n displayUrl: PropTypes.string,\r\n\r\n description: PropTypes.string,\r\n isMultiLineDescription: PropTypes.bool,\r\n\r\n showLogo: PropTypes.bool,\r\n logo: PropTypes.shape({\r\n Src: PropTypes.string,\r\n Width: PropTypes.number,\r\n Height: PropTypes.number,\r\n CropSettings: PropTypes.shape({\r\n SourceX: PropTypes.number,\r\n SourceY: PropTypes.number,\r\n SourceWidth: PropTypes.number,\r\n SourceHeight: PropTypes.number,\r\n }),\r\n }),\r\n\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n placementCard: PropTypes.string,\r\n placementTextContainer: PropTypes.string,\r\n placementBusinessNameWithAdsLabel: PropTypes.string,\r\n placementShortHeadline: PropTypes.string,\r\n placementDescription: PropTypes.string,\r\n }).isRequired,\r\n};\r\n\r\nOutlookPlacementBase.defaultProps = {\r\n businessName: undefined,\r\n shortHeadline: undefined,\r\n isMultiLineShortHeadline: false,\r\n finalUrl: undefined,\r\n displayUrl: undefined,\r\n description: undefined,\r\n isMultiLineDescription: false,\r\n showLogo: false,\r\n logo: undefined,\r\n};\r\n\r\nconst OutlookRefreshedPlacementBase = ({\r\n placementData, // UAPVMSingleImagePlacement\r\n businessName,\r\n shortHeadline,\r\n isMultiLineShortHeadline,\r\n finalUrl,\r\n displayUrl,\r\n description,\r\n isMultiLineDescription,\r\n showLogo,\r\n showThreeDot,\r\n logo,\r\n i18n, // may need to set window._TL_ in other platforms\r\n classes,\r\n showDescriptionWithAction,\r\n callToAction,\r\n showCallToActionAsLink,\r\n customizedUnreadComponent: CustomizedUnreadComponent,\r\n}) => (\r\n
\r\n {CustomizedUnreadComponent && }\r\n \r\n {showLogo && logo &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n \r\n {showThreeDot && }\r\n \r\n \r\n {showDescriptionWithAction ? : }\r\n
\r\n \r\n
\r\n);\r\n\r\nexport const AdPlacementOutlookMobile = withPermissions((props1) => {\r\n const permissions = useContext(PermissionsContext);\r\n const isAdPreviewRefreshEnabled = _.get(permissions, ['dynamic', 'AdPreviewRefresh']);\r\n\r\n const StyledComp = isAdPreviewRefreshEnabled ? withUAPLThemedStyles(\r\n props => (\r\n
\r\n \r\n
\r\n ),\r\n getOutlookMobileRefreshedPlacementStyles,\r\n { componentName: 'AdPlacementOutlookMobile' }\r\n ) : withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getOutlookMobilePlacementStyles,\r\n { componentName: 'AdPlacementOutlookMobile' }\r\n );\r\n\r\n return ;\r\n});\r\n\r\nexport const AdPlacementOutlookWeb = withPermissions((props1) => {\r\n const permissions = useContext(PermissionsContext);\r\n const isAdPreviewRefreshEnabled = _.get(permissions, ['dynamic', 'AdPreviewRefresh']);\r\n\r\n const StyledComp = isAdPreviewRefreshEnabled ? withUAPLThemedStyles(\r\n props => (\r\n
\r\n \r\n
\r\n ),\r\n getOutlookWebRefreshedPlacementStyles,\r\n { componentName: 'AdPlacementOutlookWeb' }\r\n ) : withUAPLThemedStyles(\r\n props => (\r\n
\r\n \r\n
\r\n ),\r\n getOutlookWebPlacementStyles,\r\n { componentName: 'AdPlacementOutlookWeb' }\r\n );\r\n\r\n return ;\r\n});\r\n","\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\nimport { Image, Text, Button, Card, CardHeader, CardPreview, CardFooter, FluentProvider, webLightTheme } from '@fluentui/react-components';\r\n\r\n\r\nexport const AdPlacementLinkedInSingleImageBase = ({\r\n i18n,\r\n classes,\r\n // Placement data\r\n placementData,\r\n\r\n // Ad data props\r\n companyPageName,\r\n userProfileImageSrc,\r\n finalUrl,\r\n introductoryText,\r\n headline,\r\n callToAction,\r\n\r\n // State props\r\n // isEnabled\r\n\r\n // Flag props\r\n showHeader,\r\n showIntroductoryText,\r\n showfinalUrl,\r\n showFooter,\r\n showCompanyInFooter,\r\n showIntroductoryTextInFooter,\r\n\r\n // Customization props\r\n // customClassName,\r\n // imagePreviewHeight,\r\n}) => {\r\n const {\r\n placementMeta, placementCropping, imageMeta, effectiveImageUrl, effectiveImageWidth, effectiveImageHeight, expandedPlacementCropping,\r\n } = placementData || {};\r\n const { previewHeight, aspectRatio } = placementMeta || {};\r\n if (!placementData || !imageMeta) {\r\n return null;\r\n }\r\n\r\n const imagePreviewWidth = previewHeight * aspectRatio;\r\n\r\n const cropping = expandedPlacementCropping || placementCropping;\r\n\r\n const renderHeader = () => (\r\n }\r\n header={
{companyPageName}
}\r\n description={{i18n.getString(_TL_('Promoted'))}}\r\n />\r\n );\r\n\r\n const renderImage = () => (\r\n
\r\n {imageMeta && imageMeta.url && (\r\n \r\n \r\n \r\n )}\r\n
\r\n );\r\n\r\n const renderCallToAction = () => (\r\n \r\n );\r\n\r\n const renderFooter = () => (\r\n \r\n
\r\n {headline}\r\n {showfinalUrl && {finalUrl}}\r\n
\r\n {callToAction && renderCallToAction()}\r\n
\r\n );\r\n\r\n const renderFooterWithCompany = () => (\r\n \r\n
{headline}
\r\n {showIntroductoryTextInFooter && {introductoryText}}\r\n
\r\n
\r\n {i18n.getString(_TL_('User\r\n
{companyPageName}
\r\n
\r\n {callToAction && renderCallToAction()}\r\n
\r\n
\r\n );\r\n\r\n return (\r\n
\r\n \r\n \r\n\r\n {showHeader && renderHeader()}\r\n\r\n {showIntroductoryText && {introductoryText}}\r\n\r\n
\r\n {renderImage()}\r\n\r\n {showFooter && !showCompanyInFooter && renderFooter()}\r\n {showFooter && showCompanyInFooter && renderFooterWithCompany()}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nAdPlacementLinkedInSingleImageBase.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n classes: PropTypes.shape({}).isRequired,\r\n placementData: PropTypes.shape({}),\r\n companyPageName: PropTypes.string,\r\n userProfileImageSrc: PropTypes.string,\r\n finalUrl: PropTypes.string,\r\n introductoryText: PropTypes.string,\r\n headline: PropTypes.string,\r\n callToAction: PropTypes.string,\r\n showHeader: PropTypes.bool,\r\n showIntroductoryText: PropTypes.bool,\r\n showFooter: PropTypes.bool,\r\n showCompanyInFooter: PropTypes.bool,\r\n showIntroductoryTextInFooter: PropTypes.bool,\r\n showfinalUrl: PropTypes.bool,\r\n};\r\n\r\nAdPlacementLinkedInSingleImageBase.defaultProps = {\r\n placementData: {},\r\n companyPageName: undefined,\r\n userProfileImageSrc: undefined,\r\n finalUrl: undefined,\r\n introductoryText: undefined,\r\n headline: undefined,\r\n callToAction: undefined,\r\n showHeader: false,\r\n showIntroductoryText: false,\r\n showFooter: false,\r\n showCompanyInFooter: false,\r\n showIntroductoryTextInFooter: false,\r\n showfinalUrl: false,\r\n};\r\n","\r\nimport React from 'react';\r\n\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { AdPlacementLinkedInSingleImageBase } from './li-single-image-ad-placement-base';\r\nimport {\r\n getLinkedInSingleImageDesktopStyles,\r\n getLinkedInSingleImageMobileStyles,\r\n getLinkedInSingleImageMediumRectangleStyles,\r\n getLinkedInSingleImageMobileInterstitialStyles,\r\n getLinkedInSingleImageNativeStyles,\r\n} from '../../styles';\r\n\r\n\r\nexport const AdPlacementLinkedInSingleImageDesktop = withUAPLThemedStyles(\r\n props => (\r\n ),\r\n getLinkedInSingleImageDesktopStyles,\r\n { componentName: 'AdPlacementLinkedInSingleImageDesktop' }\r\n);\r\n\r\nexport const AdPlacementLinkedInSingleImageMobile = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getLinkedInSingleImageMobileStyles,\r\n { componentName: 'AdPlacementLinkedInSingleImageMobile' }\r\n);\r\n\r\nexport const AdPlacementLinkedInSingleImageMediumRectangle = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getLinkedInSingleImageMediumRectangleStyles,\r\n { componentName: 'AdPlacementLinkedInSingleImageMediumRectangle' }\r\n);\r\n\r\nexport const AdPlacementLinkedInSingleImageMobileInterstitial = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getLinkedInSingleImageMobileInterstitialStyles,\r\n { componentName: 'AdPlacementLinkedInSingleImageMobileInterstitial' }\r\n);\r\n\r\nexport const AdPlacementLinkedInSingleImageNative = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getLinkedInSingleImageNativeStyles,\r\n { componentName: 'AdPlacementLinkedInSingleImageNative' }\r\n);\r\n","import React from 'react';\r\nimport classnames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport const AppAdsBasePlacement = ({\r\n classes,\r\n children,\r\n}) => (\r\n
\r\n
\r\n
\r\n {children}\r\n
\r\n
\r\n
\r\n);\r\n\r\nAppAdsBasePlacement.propTypes = {\r\n classes: PropTypes.shape({\r\n placementPreview: PropTypes.string,\r\n placementCard: PropTypes.string,\r\n phoneInnerContent: PropTypes.string,\r\n }),\r\n children: PropTypes.node,\r\n};\r\n\r\nAppAdsBasePlacement.defaultProps = {\r\n classes: {},\r\n children: null,\r\n};\r\n","import { getResponsiveSearchAdMobilePlacementStyles } from '../../styles';\r\n\r\nexport const getAppAdsBasePlacementStyles = () => ({\r\n placementCard: {\r\n width: 300,\r\n height: 600,\r\n border: '10px solid rgba(214, 214, 214, 1)',\r\n borderTopRightRadius: '30px',\r\n borderTopLeftRadius: '30px',\r\n borderBottom: 'none',\r\n },\r\n placementPreview: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n },\r\n phoneInnerContent: {\r\n marginTop: 30,\r\n marginBottom: 30,\r\n height: '90%',\r\n marginLeft: 10,\r\n marginRight: 10,\r\n borderRadius: 10,\r\n },\r\n videoPlayerRoot: {\r\n height: '100%',\r\n width: '100%',\r\n backgroundColor: 'black',\r\n borderRadius: 10,\r\n },\r\n});\r\n\r\nexport const getAppAdsMobileStyles = () => {\r\n const {\r\n placementCard,\r\n placementTextContainer,\r\n placementContentContainer,\r\n ...rest\r\n } = getResponsiveSearchAdMobilePlacementStyles();\r\n const { placementCard: appAdsPlacementCard, ...appAdsStyles } = getAppAdsBasePlacementStyles();\r\n\r\n return {\r\n ...rest,\r\n ...appAdsStyles,\r\n placementCard: {\r\n ...placementCard,\r\n ...appAdsPlacementCard,\r\n width: '400px',\r\n height: '300px',\r\n },\r\n placementTextContainer: {\r\n ...placementTextContainer,\r\n flex: '1',\r\n },\r\n placementContentContainer: {\r\n ...placementContentContainer,\r\n marginTop: 10,\r\n boxShadow: '0px 0.511px 1.533px rgb(0 0 0 / 10%), 0px 2.72533px 6.132px rgb(0 0 0 / 13%)',\r\n borderRadius: '5.11px',\r\n border: '0.5px solid #ddd',\r\n background: '#fff',\r\n '&.placement-card-content': {\r\n height: 'auto',\r\n padding: '10px',\r\n },\r\n },\r\n };\r\n};\r\n\r\nexport const getAppAdsM365MobileStyles = () => {\r\n const { placementCard: appAdsPlacementCard, ...appAdsStyles } = getAppAdsBasePlacementStyles();\r\n\r\n return {\r\n ...appAdsStyles,\r\n placementCard: {\r\n ...appAdsPlacementCard,\r\n display: 'flex',\r\n width: '300px',\r\n height: '300px',\r\n '& .placement-card-content': {\r\n height: '130px',\r\n padding: '10px',\r\n boxShadow: '0px 0.511px 1.533px rgb(0 0 0 / 10%), 0px 2.72533px 6.132px rgb(0 0 0 / 13%)',\r\n marginTop: 30,\r\n border: '0.5px solid #ddd',\r\n background: '#fff',\r\n width: '100%',\r\n },\r\n },\r\n preview: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n },\r\n previewContent: {\r\n border: '1px solid #C8C8C8',\r\n boxShadow: 'none',\r\n width: 340,\r\n height: 80,\r\n padding: '5px 10px 5px 15px',\r\n marginTop: 150,\r\n },\r\n placementBusinessNameWithAdsLabel: {\r\n display: 'block',\r\n color: 'black',\r\n textDecoration: 'none',\r\n fontSize: '20px !important',\r\n maxWidth: 300,\r\n verticalAlign: 'middle',\r\n lineHeight: '30px',\r\n marginTop: 0,\r\n '& .ads-label': {\r\n backgroundColor: 'blue !important',\r\n borderRadius: 4,\r\n height: 15,\r\n verticalAlign: 'middle',\r\n padding: '0 4px !important',\r\n width: 'auto',\r\n display: 'inline-block',\r\n position: 'static',\r\n margin: '0 4px 0 0',\r\n fontSize: 10,\r\n color: 'white !important',\r\n lineHeight: '15px',\r\n },\r\n '& .business-name': {\r\n fontSize: '20px !important',\r\n },\r\n },\r\n placementShortHeadline: {\r\n display: 'block',\r\n fontSize: 13,\r\n marginTop: 2,\r\n lineHeight: '19.5px',\r\n },\r\n placementDescription: {\r\n display: 'block',\r\n color: 'black',\r\n textDecoration: 'none',\r\n fontSize: 13,\r\n marginTop: 2,\r\n lineHeight: '19.5px',\r\n },\r\n description: {\r\n display: 'inline-block',\r\n },\r\n };\r\n};\r\n\r\nexport const getAppAdsMSNMobileStyles = () => {\r\n const { placementCard: appAdsPlacementCard, ...appAdsStyles } = getAppAdsBasePlacementStyles();\r\n\r\n return {\r\n ...appAdsStyles,\r\n placementCard: {\r\n ...appAdsPlacementCard,\r\n height: '300px',\r\n width: '400px',\r\n },\r\n msnDescription: {\r\n paddingTop: '5px',\r\n fontWeight: '600',\r\n fontSize: '14px',\r\n },\r\n msnPlacementImage: {\r\n '& .cropped-image-view': {\r\n borderRadius: '5px',\r\n },\r\n },\r\n };\r\n};\r\n\r\nexport const getAppAdsCasualGamesStyles = () => {\r\n const { placementCard: appAdsPlacementCard, ...appAdsStyles } = getAppAdsBasePlacementStyles();\r\n\r\n return {\r\n ...appAdsStyles,\r\n placementCard: {\r\n ...appAdsPlacementCard,\r\n height: '350px',\r\n width: '300px',\r\n },\r\n casualGamesBase: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n },\r\n };\r\n};\r\n","import React from 'react';\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n\r\nimport { AppAdsBasePlacement } from './app-ads-base-placement';\r\nimport { getAppAdsMSNMobileStyles } from '../../styles/ad-placement-components/app-ads-ad-placement-styles';\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { PlacementDescription, BusinessNameWithAdsLabel } from '../../shared-components';\r\n\r\nexport const AppAdsMSNDisplayPlacement = withUAPLThemedStyles(\r\n (props) => {\r\n const {\r\n classes,\r\n placementData, // UAPVMSingleImagePlacement\r\n businessName,\r\n description,\r\n i18n, // may need to set window._TL_ in other platforms\r\n } = props;\r\n\r\n const {\r\n placementMeta, placementCropping, imageMeta, effectiveImageUrl, effectiveImageWidth, effectiveImageHeight, expandedPlacementCropping,\r\n } = placementData || {};\r\n const { previewHeight, aspectRatio } = placementMeta || {};\r\n if (!placementData || !imageMeta) {\r\n return null;\r\n }\r\n\r\n const cropping = expandedPlacementCropping || placementCropping;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n );\r\n },\r\n getAppAdsMSNMobileStyles,\r\n { componentName: 'AppAdsMSNDisplayPlacement' }\r\n);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n\r\nimport {\r\n getResponsiveOutlookMobilePlacementStyles,\r\n getResponsiveOutlookWebPlacementStyles,\r\n} from '../../styles';\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\n\r\nimport {\r\n BusinessNameWithAdsLabel,\r\n PlacementHeadline,\r\n PlacementDescription,\r\n} from '../../shared-components';\r\n\r\nexport const OutlookPlacementBase = ({\r\n placementData, // UAPVMSingleImagePlacement\r\n businessName,\r\n shortHeadline,\r\n isMultiLineShortHeadline,\r\n finalUrl,\r\n displayUrl,\r\n description,\r\n isMultiLineDescription,\r\n showLogo,\r\n logo,\r\n i18n, // may need to set window._TL_ in other platforms\r\n classes,\r\n customClassName,\r\n}) => (\r\n
\r\n {showLogo && logo &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n);\r\n\r\nOutlookPlacementBase.propTypes = {\r\n placementData: PropTypes.shape({}).isRequired, // UAPVMSingleImagePlacement\r\n businessName: PropTypes.string,\r\n shortHeadline: PropTypes.string,\r\n isMultiLineShortHeadline: PropTypes.bool,\r\n finalUrl: PropTypes.string,\r\n displayUrl: PropTypes.string,\r\n\r\n description: PropTypes.string,\r\n isMultiLineDescription: PropTypes.bool,\r\n\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n placementCard: PropTypes.string,\r\n placementTextContainer: PropTypes.string,\r\n placementBusinessNameWithAdsLabel: PropTypes.string,\r\n placementShortHeadline: PropTypes.string,\r\n placementDescription: PropTypes.string,\r\n }).isRequired,\r\n customClassName: PropTypes.string,\r\n showLogo: PropTypes.bool,\r\n logo: PropTypes.shape({\r\n Src: PropTypes.string,\r\n Width: PropTypes.number,\r\n Height: PropTypes.number,\r\n CropSettings: PropTypes.shape({\r\n SourceX: PropTypes.number,\r\n SourceY: PropTypes.number,\r\n SourceWidth: PropTypes.number,\r\n SourceHeight: PropTypes.number,\r\n }),\r\n }),\r\n};\r\n\r\nOutlookPlacementBase.defaultProps = {\r\n businessName: undefined,\r\n shortHeadline: undefined,\r\n isMultiLineShortHeadline: false,\r\n finalUrl: undefined,\r\n displayUrl: undefined,\r\n description: undefined,\r\n isMultiLineDescription: false,\r\n customClassName: undefined,\r\n showLogo: false,\r\n logo: undefined,\r\n};\r\n\r\nexport const ResponsiveAdPlacementOutlookMobile = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getResponsiveOutlookMobilePlacementStyles,\r\n { componentName: 'AdPlacementOutlookMobile' }\r\n);\r\n\r\nexport const ResponsiveAdPlacementOutlookWeb = withUAPLThemedStyles(\r\n props => (\r\n
\r\n \r\n
\r\n ),\r\n getResponsiveOutlookWebPlacementStyles,\r\n { componentName: 'AdPlacementOutlookWeb' }\r\n);\r\n","const getOutlookPlacementBaseStyles = () => ({\r\n placementCard: {\r\n display: 'block',\r\n border: '1px solid #C8C8C8',\r\n margin: 'auto',\r\n overflow: 'hidden',\r\n position: 'relative !important',\r\n background: '#fff',\r\n boxSizing: 'content-box',\r\n boxShadow: 'none',\r\n\r\n '& .placement-card-content': {\r\n width: '100%',\r\n height: '100%',\r\n },\r\n },\r\n placementTextContainer: undefined,\r\n placementBusinessNameWithAdsLabel: undefined,\r\n placementShortHeadline: undefined,\r\n placementDescription: undefined,\r\n placementLogoContainer: undefined,\r\n});\r\n\r\nexport const getResponsiveOutlookMobilePlacementStyles = (theme) => {\r\n const { placementCard, ...baseStyles } = getOutlookPlacementBaseStyles(theme);\r\n const styles = {\r\n ...baseStyles,\r\n\r\n placementCard: {\r\n ...placementCard,\r\n height: 80,\r\n borderRadius: '5.11px',\r\n padding: '5px 10px 5px 15px',\r\n '& .placement-card-content': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n },\r\n },\r\n\r\n placementTextContainer: {\r\n display: 'block',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n color: '#0078d4',\r\n cursor: 'pointer',\r\n overflow: 'hidden',\r\n '&:hover': {\r\n color: '#004578',\r\n },\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n color: 'black !important',\r\n fontSize: '20px !important',\r\n maxWidth: 300,\r\n marginTop: '0px !important',\r\n lineHeight: '30px !important',\r\n verticalAlign: 'middle',\r\n\r\n '& .ads-label': {\r\n color: 'white !important',\r\n width: 'auto',\r\n height: 15,\r\n margin: '0 4px 0 0 !important',\r\n display: 'inline-block',\r\n padding: '0 4px !important',\r\n lineHeight: '15px !important',\r\n verticalAlign: 'middle',\r\n backgroundColor: 'blue !important',\r\n border: 'unset !important',\r\n borderRadius: '4px !important',\r\n },\r\n\r\n '& .business-name': {\r\n color: 'unset !important',\r\n padding: 'unset !important',\r\n fontSize: 'unset !important',\r\n marginTop: 'unset !important',\r\n lineHeight: 'unset !important',\r\n },\r\n },\r\n\r\n placementShortHeadline: {\r\n fontSize: 13,\r\n marginTop: 2,\r\n fontWeight: 200,\r\n lineHeight: '19.5px',\r\n paddingBottom: 5,\r\n },\r\n\r\n placementDescription: {\r\n color: 'black',\r\n fontSize: 13,\r\n marginTop: 2,\r\n lineHeight: '19.5px',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n width: '100%',\r\n whiteSpace: 'nowrap',\r\n },\r\n placementLogoContainer: {\r\n paddingTop: 8,\r\n paddingRight: 16,\r\n '& .cropped-image-view': {\r\n borderRadius: '50%',\r\n },\r\n },\r\n };\r\n return styles;\r\n};\r\n\r\nexport const getResponsiveOutlookWebPlacementStyles = (theme) => {\r\n const { placementCard, ...baseStyles } = getOutlookPlacementBaseStyles(theme);\r\n const styles = {\r\n ...baseStyles,\r\n\r\n outlookWebCardRoot: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n },\r\n\r\n placementCard: {\r\n ...placementCard,\r\n borderRadius: 0,\r\n width: '100%',\r\n boxSizing: 'border-box',\r\n border: 'none',\r\n '& .placement-card-content': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n minWidth: 0,\r\n border: '1px solid #C8C8C8',\r\n },\r\n },\r\n\r\n placementTextContainer: {\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n color: '#0078d4',\r\n cursor: 'pointer',\r\n overflow: 'hidden',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n whiteSpace: 'nowrap',\r\n minWidth: 0,\r\n '& .logo-and-businessname-container': {\r\n display: 'inline-block',\r\n position: 'relative',\r\n },\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n display: 'inline-block !important',\r\n margin: '0px 10px 0px 0px !important',\r\n verticalAlign: 'middle',\r\n\r\n '& .ads-label': {\r\n color: 'white !important',\r\n width: 'auto',\r\n height: 13,\r\n margin: '0 4px 0 0 !important',\r\n display: 'inline-block',\r\n padding: '0 4px !important',\r\n lineHeight: '15px !important',\r\n verticalAlign: 'middle',\r\n backgroundColor: 'blue !important',\r\n border: 'unset !important',\r\n borderRadius: '4px !important',\r\n opacity: '90%',\r\n position: 'relative',\r\n top: -2.5,\r\n },\r\n\r\n '& .business-name': {\r\n color: 'black !important',\r\n fontSize: '10px !important',\r\n lineHeight: '16px !important',\r\n padding: '4px 0px !important',\r\n },\r\n },\r\n\r\n placementShortHeadline: {\r\n display: 'inline-block',\r\n color: 'blue',\r\n padding: 4,\r\n fontWeight: 200,\r\n paddingBottom: 5,\r\n '&:before': {\r\n content: '\" \"',\r\n border: 'solid gray',\r\n display: 'inline-block',\r\n padding: '2px',\r\n transform: 'rotate(45deg) translateY(-3px)',\r\n borderWidth: '0 1.5px 1.5px 0',\r\n marginRight: 10,\r\n position: 'relative',\r\n left: -4,\r\n },\r\n '&::after': {\r\n content: '\"*\"',\r\n display: 'inline',\r\n padding: 4,\r\n color: 'gray',\r\n position: 'relative',\r\n left: 4,\r\n },\r\n },\r\n\r\n placementDescription: {\r\n display: 'inline-block',\r\n color: 'black',\r\n padding: 4,\r\n flex: '1 1 0px',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n width: '100%',\r\n paddingBottom: 5,\r\n },\r\n\r\n placementLogoContainer: {\r\n padding: [2, 8, 2, 8],\r\n '& .cropped-image-view': {\r\n borderRadius: '50%',\r\n },\r\n },\r\n };\r\n return styles;\r\n};\r\n","import React from 'react';\r\n\r\nimport { getAppAdsM365MobileStyles } from '../../styles/ad-placement-components/app-ads-ad-placement-styles';\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { OutlookPlacementBase } from '../responsive-ad-placements/responsive-outlook-placements';\r\n\r\nexport const AppAdsM365OutlookPlacement = withUAPLThemedStyles((props) => {\r\n const {\r\n placementData, // UAPVMSingleImagePlacement\r\n businessName,\r\n shortHeadline,\r\n isMultiLineShortHeadline,\r\n description,\r\n isMultiLineDescription,\r\n logo,\r\n finalUrl,\r\n displayUrl,\r\n i18n, // may need to set window._TL_ in other platforms\r\n classes,\r\n ...rest\r\n } = props;\r\n\r\n return (\r\n
\r\n \r\n
\r\n\r\n );\r\n}, getAppAdsM365MobileStyles, { componentName: 'AppAdsM365OutlookPlacement' });\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport {\r\n AdLabel,\r\n AdditionalLineDisclaimer,\r\n PopupDisclaimer,\r\n PlacementHeadlineWithLink,\r\n PlacementFinalUrlWithLink,\r\n PlacementDescription,\r\n PlacementContentContainer,\r\n PlacementImage,\r\n} from '../../shared-components';\r\n\r\nexport const AdPlacementResponsiveSearchPropTypes = {\r\n propTypes: {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n placementContentContainer: PropTypes.string,\r\n placementCard: PropTypes.string,\r\n placementTextContainer: PropTypes.string,\r\n placementAdsLabel: PropTypes.string,\r\n placementLongHeadline: PropTypes.string,\r\n placementFinalUrl: PropTypes.string,\r\n placementDescriptionContainer: PropTypes.string,\r\n placementDescription: PropTypes.string,\r\n placementImage: PropTypes.string,\r\n placementInlineItems: PropTypes.string,\r\n }).isRequired,\r\n decoratorsData: PropTypes.shape({\r\n disclaimer: PropTypes.shape({\r\n DisclaimerLayout: PropTypes.string,\r\n }),\r\n imageExtension: PropTypes.shape({\r\n image: PropTypes.shape({}),\r\n enableCrop: PropTypes.bool,\r\n }),\r\n }),\r\n showAdDisclaimer: PropTypes.bool,\r\n showImageExtension: PropTypes.bool,\r\n previewImageAspectRatio: PropTypes.number,\r\n previewImageHeight: PropTypes.number,\r\n previewTexts: PropTypes.shape({\r\n longHeadline: PropTypes.string,\r\n description: PropTypes.string,\r\n displayUrl: PropTypes.string,\r\n url: PropTypes.string,\r\n }).isRequired,\r\n },\r\n\r\n defaultProps: {\r\n showAdDisclaimer: false,\r\n showImageExtension: false,\r\n previewImageAspectRatio: 1.78,\r\n previewImageHeight: 100,\r\n decoratorsData: {},\r\n },\r\n};\r\n\r\nexport const ResponsiveSearchAdPlacementBase = (props) => {\r\n const {\r\n i18n,\r\n classes,\r\n showAdDisclaimer,\r\n showImageExtension,\r\n previewImageAspectRatio,\r\n previewImageHeight,\r\n decoratorsData,\r\n previewTexts: {\r\n longHeadline,\r\n description,\r\n displayUrl,\r\n url,\r\n },\r\n } = props;\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n {\r\n showAdDisclaimer && decoratorsData.disclaimer && decoratorsData.disclaimer.DisclaimerLayout === 'Popup' &&\r\n \r\n }\r\n
\r\n
\r\n \r\n \r\n {\r\n showAdDisclaimer && decoratorsData.disclaimer && decoratorsData.disclaimer.DisclaimerLayout === 'AdditionalLine' &&\r\n \r\n }\r\n
\r\n
\r\n {\r\n showImageExtension && decoratorsData.imageExtension && decoratorsData.imageExtension.image &&\r\n \r\n }\r\n \r\n
\r\n );\r\n};\r\n\r\nResponsiveSearchAdPlacementBase.propTypes = AdPlacementResponsiveSearchPropTypes.propTypes;\r\n\r\nResponsiveSearchAdPlacementBase.defaultProps = AdPlacementResponsiveSearchPropTypes.defaultProps;\r\n","import React from 'react';\r\n\r\nimport { getAppAdsMobileStyles } from '../../styles/ad-placement-components/app-ads-ad-placement-styles';\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { ResponsiveSearchAdPlacementBase } from '../responsive-search-ad-placements/responsive-search-ad-placement-base';\r\n\r\n\r\nexport const AppAdsBingSearchPlacementBase = (props) => {\r\n const {\r\n shortHeadline,\r\n description,\r\n displayUrl,\r\n url,\r\n placementData,\r\n classes,\r\n showImageExtension,\r\n ...rest\r\n } = props;\r\n\r\n const {\r\n placementMeta,\r\n placementCropping,\r\n imageMeta,\r\n effectiveImageUrl,\r\n effectiveImageWidth,\r\n effectiveImageHeight,\r\n expandedPlacementCropping,\r\n imageCropping,\r\n } = placementData || {};\r\n\r\n const cropping = expandedPlacementCropping || placementCropping;\r\n const { previewHeight, aspectRatio } = placementMeta || {};\r\n\r\n const decoratorsData = showImageExtension && {\r\n imageExtension: {\r\n image: {\r\n src: effectiveImageUrl || imageMeta.url,\r\n width: effectiveImageWidth || imageMeta.width,\r\n height: effectiveImageHeight || imageMeta.height,\r\n cropSettings: {\r\n SourceWidth: cropping.SourceWidth,\r\n SourceX: cropping.SourceX,\r\n SourceY: cropping.SourceY,\r\n },\r\n },\r\n enableCrop: true,\r\n },\r\n enableCrop: imageCropping,\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport const AppAdsBingSearchPlacement = withUAPLThemedStyles(\r\n props => ,\r\n getAppAdsMobileStyles,\r\n { componentName: 'AppAdsBingSearchPlacement' }\r\n);\r\n\r\nexport const AppAdsBingSearchPlacementText = withUAPLThemedStyles(\r\n props => ,\r\n getAppAdsMobileStyles,\r\n { componentName: 'AppAdsBingSearchPlacementText' }\r\n);\r\n","import React from 'react';\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n\r\nimport { AppAdsBasePlacement } from './app-ads-base-placement';\r\nimport { getAppAdsCasualGamesStyles } from '../../styles/ad-placement-components/app-ads-ad-placement-styles';\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { PlacementHeadline } from '../../shared-components';\r\n\r\n\r\nexport const AppAdsCasualGamesDimensionsPlacement = withUAPLThemedStyles(\r\n (props) => {\r\n const {\r\n classes,\r\n placementData, // UAPVMSingleImagePlacement\r\n shortHeadline,\r\n i18n, // may need to set window._TL_ in other platforms\r\n } = props;\r\n\r\n const {\r\n placementMeta, placementCropping, imageMeta, effectiveImageUrl, effectiveImageWidth, effectiveImageHeight, expandedPlacementCropping,\r\n } = placementData || {};\r\n const { previewHeight, aspectRatio } = placementMeta || {};\r\n if (!placementData || !imageMeta) {\r\n return null;\r\n }\r\n\r\n const cropping = expandedPlacementCropping || placementCropping;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n },\r\n getAppAdsCasualGamesStyles,\r\n { componentName: 'AppAdsCasualGamesDimensionsPlacement' }\r\n);\r\n","/* eslint-disable jsx-a11y/media-has-caption */\r\nimport React, { useEffect, useRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\n\r\nimport { getAppAdsBasePlacementStyles } from '../../styles/ad-placement-components/app-ads-ad-placement-styles';\r\nimport { AppAdsBasePlacement } from './app-ads-base-placement';\r\n\r\n\r\nexport const AppAdsVideoHorizontalPlacementInner = ({\r\n classes,\r\n videos,\r\n}) => {\r\n const { src } = videos && videos.length > 0 ? videos[0] : {};\r\n\r\n const videoRef = useRef();\r\n\r\n useEffect(() => {\r\n if (videoRef.current) {\r\n videoRef.current.load();\r\n }\r\n }, [src]);\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nAppAdsVideoHorizontalPlacementInner.propTypes = {\r\n classes: PropTypes.shape({\r\n videoPlayerRoot: PropTypes.string,\r\n }),\r\n videos: PropTypes.arrayOf(PropTypes.shape({\r\n src: PropTypes.string,\r\n })),\r\n};\r\n\r\nAppAdsVideoHorizontalPlacementInner.defaultProps = {\r\n classes: {},\r\n videos: null,\r\n};\r\n\r\nexport const AppAdsVideoHorizontalPlacement = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getAppAdsBasePlacementStyles,\r\n { componentName: 'AppAdsVideo16x9Placement' }\r\n);\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { getResponsivePlacementCardStyles } from '../../styles';\r\n\r\nconst MMAPlacementCardImpl = ({\r\n isEnabled,\r\n url,\r\n children,\r\n mmaPlacementCardClassName,\r\n classes,\r\n}) =>\r\n //\r\n (\r\n
\r\n
\r\n {url && (\r\n \r\n {children}\r\n \r\n )}\r\n {!url && (\r\n \r\n {children}\r\n
\r\n )}\r\n
\r\n
\r\n );\r\nMMAPlacementCardImpl.propTypes = {\r\n isEnabled: PropTypes.bool,\r\n url: PropTypes.string,\r\n children: PropTypes.node.isRequired,\r\n mmaPlacementCardClassName: PropTypes.string,\r\n classes: PropTypes.shape({\r\n mmaPlacementCardRoot: PropTypes.string,\r\n mmaPlacementCardDisabled: PropTypes.string,\r\n }).isRequired,\r\n};\r\n\r\nMMAPlacementCardImpl.defaultProps = {\r\n isEnabled: true,\r\n url: undefined,\r\n mmaPlacementCardClassName: undefined,\r\n};\r\n\r\nexport const ResponsiveMMAPlacementCard = withUAPLThemedStyles(\r\n MMAPlacementCardImpl,\r\n getResponsivePlacementCardStyles,\r\n { componentName: 'MMAPlacementCard ' }\r\n);\r\n","export const getResponsivePlacementCardStyles = () => ({\r\n mmaPlacementCardRoot: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n\r\n position: 'relative',\r\n boxSizing: 'content-box',\r\n overflow: 'hidden',\r\n background: 'transparent',\r\n margin: 'auto',\r\n\r\n '& .card-parent': {\r\n width: '100%',\r\n '& .placement-card-content': {\r\n boxShadow: '0px 0.511px 1.533px rgb(0 0 0 / 10%), 0px 2.72533px 6.132px rgb(0 0 0 / 13%)',\r\n border: 'solid thin #ddd',\r\n borderRadius: 5.11,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n overflow: 'hidden',\r\n margin: 'auto',\r\n position: 'relative',\r\n },\r\n },\r\n },\r\n mmaPlacementCardDisabled: {\r\n opacity: 0.5,\r\n },\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n\r\nimport {\r\n AdLabel,\r\n PlacementGradient,\r\n PlacementHeadline,\r\n PlacementFinalUrl,\r\n PlacementDescription,\r\n PlacementAction,\r\n BusinessNameWithAdsLabel,\r\n} from '../../shared-components';\r\n\r\nimport { ResponsiveMMAPlacementCard } from './responsive-mma-placement-card';\r\n\r\nexport const ResponsiveAdPlacementMmaBase = ({\r\n placementData, // UAPVMSingleImagePlacement\r\n isEnabled,\r\n customClassName,\r\n imagePreviewHeight,\r\n\r\n showShortHeadline,\r\n shortHeadline,\r\n isMultiLineShortHeadline,\r\n\r\n showLongHeadline,\r\n longHeadline,\r\n isMultiLineLongHeadline,\r\n\r\n showFinalUrl,\r\n finalUrl,\r\n isMultiLineFinalUrl,\r\n displayUrl,\r\n\r\n showDescription,\r\n description,\r\n isMultiLineDescription,\r\n\r\n showCallToAction,\r\n callToAction,\r\n\r\n showAdLabel,\r\n showGradient,\r\n\r\n showBusinessName,\r\n businessName,\r\n showBusinessNameAdLabel,\r\n\r\n showLogo,\r\n logo,\r\n\r\n i18n, // may need to set window._TL_ in other platforms\r\n classes,\r\n}) => {\r\n const {\r\n placementMeta, placementCropping, imageMeta, effectiveImageUrl, effectiveImageWidth, effectiveImageHeight, expandedPlacementCropping,\r\n } = placementData || {};\r\n const { previewHeight, aspectRatio, logoHeight } = placementMeta || {};\r\n if (!placementData || !imageMeta) {\r\n return null;\r\n }\r\n\r\n const finalImagePreviewHeight = imagePreviewHeight > 0 ? imagePreviewHeight : previewHeight;\r\n\r\n const cropping = expandedPlacementCropping || placementCropping;\r\n\r\n return (\r\n \r\n
\r\n {showAdLabel && }\r\n {showGradient && }\r\n {\r\n imageMeta.url &&\r\n \r\n }\r\n
\r\n
\r\n {showLogo && logo &&\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{businessName}
\r\n {showFinalUrl &&\r\n \r\n }\r\n
\r\n
\r\n }\r\n {showShortHeadline && (\r\n \r\n )}\r\n {showLongHeadline && (\r\n \r\n )}\r\n {(!showLogo || !logo) && showFinalUrl && (\r\n \r\n )}\r\n {showDescription && (\r\n \r\n )}\r\n {showBusinessName && (\r\n \r\n )}\r\n {showCallToAction && callToAction && ( // add a space before each capital letter, e.g. \"ActNow\" => \"Act Now\"\r\n \r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nResponsiveAdPlacementMmaBase.propTypes = {\r\n placementData: PropTypes.shape({}).isRequired, // UAPVMSingleImagePlacement\r\n isEnabled: PropTypes.bool,\r\n customClassName: PropTypes.string,\r\n imagePreviewHeight: PropTypes.number,\r\n\r\n showShortHeadline: PropTypes.bool,\r\n shortHeadline: PropTypes.string,\r\n isMultiLineShortHeadline: PropTypes.bool,\r\n\r\n showLongHeadline: PropTypes.bool,\r\n longHeadline: PropTypes.string,\r\n isMultiLineLongHeadline: PropTypes.bool,\r\n\r\n showFinalUrl: PropTypes.bool,\r\n finalUrl: PropTypes.string,\r\n isMultiLineFinalUrl: PropTypes.bool,\r\n displayUrl: PropTypes.string,\r\n\r\n showDescription: PropTypes.bool,\r\n description: PropTypes.string,\r\n isMultiLineDescription: PropTypes.bool,\r\n\r\n showCallToAction: PropTypes.bool,\r\n callToAction: PropTypes.string,\r\n\r\n showAdLabel: PropTypes.bool,\r\n showGradient: PropTypes.bool,\r\n\r\n showBusinessName: PropTypes.bool,\r\n businessName: PropTypes.string,\r\n showBusinessNameAdLabel: PropTypes.bool,\r\n\r\n showLogo: PropTypes.bool,\r\n logo: PropTypes.shape({}),\r\n\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n placementCard: PropTypes.string,\r\n placementImageContainer: PropTypes.string,\r\n placementTextContainer: PropTypes.string,\r\n placementAdsLabel: PropTypes.string,\r\n placementGradient: PropTypes.string,\r\n placementShortHeadline: PropTypes.string,\r\n placementLongHeadline: PropTypes.string,\r\n placementFinalUrl: PropTypes.string,\r\n placementDescription: PropTypes.string,\r\n placementCallToAction: PropTypes.string,\r\n placementBusinessNameWithAdsLabel: PropTypes.string,\r\n }).isRequired,\r\n};\r\n\r\nResponsiveAdPlacementMmaBase.defaultProps = {\r\n isEnabled: true,\r\n customClassName: '',\r\n imagePreviewHeight: -1,\r\n\r\n showShortHeadline: false,\r\n showLongHeadline: false,\r\n showFinalUrl: false,\r\n showDescription: false,\r\n showCallToAction: false,\r\n showAdLabel: false,\r\n showGradient: false,\r\n showBusinessName: false,\r\n showBusinessNameAdLabel: false,\r\n showLogo: false,\r\n\r\n shortHeadline: undefined,\r\n isMultiLineShortHeadline: false,\r\n longHeadline: undefined,\r\n isMultiLineLongHeadline: false,\r\n finalUrl: undefined,\r\n displayUrl: undefined,\r\n isMultiLineFinalUrl: false,\r\n description: undefined,\r\n isMultiLineDescription: false,\r\n callToAction: undefined,\r\n businessName: undefined,\r\n logo: undefined,\r\n};\r\n","import React from 'react';\r\n\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { ResponsiveAdPlacementMmaBase } from './responsive-mma-ad-placement-base';\r\nimport {\r\n getResponsiveMmaVerticalImage1x2Styles,\r\n getResponsiveMmaSquareImage1x1Styles,\r\n getResponsiveMmaLandScapeImage191x100Styles,\r\n getResponsiveMmaWideImage4x1Styles,\r\n} from '../../styles';\r\n\r\nexport const ResponsiveAdPlacementMmaWideImage4x1 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getResponsiveMmaWideImage4x1Styles,\r\n { componentName: 'AdPlacementMmaWideImage4x1' }\r\n);\r\n\r\nexport const ResponsiveAdPlacementMmaLandscapeImage191x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getResponsiveMmaLandScapeImage191x100Styles,\r\n { componentName: 'AdPlacementMmaLandscapeImage191x100' }\r\n);\r\n\r\nexport const ResponsiveAdPlacementMmaSquareImage1x1 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getResponsiveMmaSquareImage1x1Styles,\r\n { componentName: 'AdPlacementMmaSquareImage1x1' }\r\n);\r\n\r\nexport const ResponsiveAdPlacementMmaVerticalImage1x2 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getResponsiveMmaVerticalImage1x2Styles,\r\n { componentName: 'AdPlacementMmaVerticalImage1x2' }\r\n);\r\n","const getMmaPlacementBaseStyles = () => ({\r\n placementImageContainer: undefined, // { },\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 0,\r\n bottom: 25,\r\n paddingLeft: 32,\r\n fontSize: 10,\r\n lineHeight: 1.1,\r\n },\r\n placementAdsLabel: undefined, // { },\r\n placementGradient: {\r\n backgroundImage: 'linear-gradient(to bottom, transparent 0, black 100%)',\r\n },\r\n placementShortHeadline: {\r\n position: 'relative',\r\n bottom: 20,\r\n paddingBottom: 5,\r\n fontWeight: '200',\r\n fontSize: 24,\r\n color: 'white',\r\n },\r\n placementLongHeadline: {\r\n position: 'relative',\r\n bottom: 15,\r\n paddingBottom: 5,\r\n fontWeight: '200',\r\n fontSize: 24,\r\n color: 'white',\r\n },\r\n placementFinalUrl: {\r\n color: 'white',\r\n bottom: 10,\r\n position: 'relative',\r\n fontSize: 10,\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n placementDescription: {\r\n color: 'white',\r\n bottom: 5,\r\n position: 'relative',\r\n fontSize: 14,\r\n },\r\n placementCallToAction: {\r\n position: 'relative',\r\n borderRadius: 32,\r\n border: 'none',\r\n padding: '7px 16px 8px 16px',\r\n fontSize: 16,\r\n color: '#666',\r\n backgroundColor: '#EEE',\r\n opacity: '70%',\r\n fontWeight: 'bold',\r\n },\r\n});\r\n\r\nexport const getResponsiveMmaWideImage4x1Styles = theme => ({\r\n // base styles\r\n ...getMmaPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 0,\r\n bottom: 25,\r\n paddingLeft: 32,\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n placementShortHeadline: {\r\n position: 'relative',\r\n bottom: 15,\r\n paddingBottom: 5,\r\n fontWeight: '200',\r\n fontSize: 24,\r\n color: 'white',\r\n },\r\n placementAdsLabel: {\r\n right: 0, // align to right\r\n },\r\n placementGradient: {\r\n backgroundImage: 'linear-gradient(to left, transparent 0, black 100%)',\r\n },\r\n});\r\n\r\nexport const getResponsiveMmaLandScapeImage191x100Styles = theme => ({\r\n // base styles\r\n ...getMmaPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementTextContainer: {\r\n padding: '8px 20px 20px 20px',\r\n fontSize: 10,\r\n lineHeight: 1.1,\r\n maxWidth: '-webkit-fill-available',\r\n '& .logo-and-text-container': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n paddingBottom: 4,\r\n '& .logo-text': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n '& .logo-business-name': {\r\n color: '#111',\r\n fontSize: 14,\r\n fontWeight: 400,\r\n lineHeight: '18px',\r\n },\r\n },\r\n },\r\n },\r\n placementShortHeadline: {\r\n position: 'relative',\r\n color: 'black',\r\n fontSize: 24,\r\n marginBottom: 8,\r\n fontWeight: '200',\r\n paddingBottom: 5,\r\n },\r\n placementFinalUrl: {\r\n position: 'relative',\r\n color: 'green',\r\n fontSize: 10,\r\n marginBottom: 8,\r\n },\r\n placementDescription: {\r\n position: 'relative',\r\n color: 'black',\r\n fontSize: 14,\r\n maxWidth: 250,\r\n wordWrap: 'break-word',\r\n paddingRight: 16,\r\n },\r\n placementCallToAction: {\r\n color: 'white',\r\n right: 15,\r\n border: 'none',\r\n bottom: 15,\r\n opacity: '90%',\r\n padding: '6px 16px 8px 16px',\r\n position: 'absolute',\r\n fontSize: 16,\r\n fontWeight: 'bold',\r\n borderRadius: 32,\r\n backgroundColor: '#a19f9d',\r\n },\r\n placementLogoContainer: {\r\n paddingTop: 5,\r\n paddingRight: 6,\r\n '& .cropped-image-view': {\r\n borderRadius: 6,\r\n border: 'solid 1px #ECECEC',\r\n },\r\n },\r\n});\r\n\r\nexport const getResponsiveMmaSquareImage1x1Styles = theme => ({\r\n // base styles\r\n ...getMmaPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementFinalUrl: {\r\n color: 'green',\r\n bottom: 18,\r\n position: 'relative',\r\n fontSize: 10,\r\n },\r\n placementDescription: {\r\n color: 'white',\r\n bottom: 8,\r\n position: 'relative',\r\n fontSize: 14,\r\n },\r\n placementCallToAction: {\r\n position: 'relative',\r\n borderRadius: 32,\r\n border: 'none',\r\n padding: '6px 16px 8px 16px',\r\n fontSize: 16,\r\n color: 'white',\r\n backgroundColor: '#a19f9d',\r\n opacity: '90%',\r\n fontWeight: 'bold',\r\n },\r\n});\r\n\r\nexport const getResponsiveMmaVerticalImage1x2Styles = theme => ({\r\n // base styles\r\n ...getMmaPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementFinalUrl: {\r\n color: 'green',\r\n bottom: 15,\r\n position: 'relative',\r\n fontSize: 10,\r\n },\r\n placementCallToAction: {\r\n position: 'relative',\r\n top: 5,\r\n color: 'white',\r\n border: 'solid 1px #dddddd',\r\n opacity: '90%',\r\n padding: '5px 16px 6px 16px',\r\n fontSize: 14,\r\n fontWeight: 'bold',\r\n borderRadius: 3,\r\n backgroundColor: '#a19f9d',\r\n },\r\n});\r\n","import React from 'react';\r\n\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { ResponsiveAdPlacementMmaBase } from './responsive-mma-ad-placement-base';\r\n\r\nimport {\r\n getResponsiveMmaInMsanMSEdgeSingleCarousel178x100Styles,\r\n getResponsiveMmaInMsanMSNInArticle150x100Styles,\r\n getResponsiveMmaInMsanMSNSmallHeadline133x100Styles,\r\n getResponsiveMmaInMsanSquareImage1x1Styles,\r\n getResponsiveMmaInMsanWideImage191x100Styles,\r\n} from '../../styles';\r\n\r\nexport const ResponsiveAdPlacementMmaInMsanWideImage191x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getResponsiveMmaInMsanWideImage191x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanWideImage191x100' }\r\n);\r\n\r\nexport const ResponsiveAdPlacementMmaInMsanMSEdgeSingleCarousel178x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getResponsiveMmaInMsanMSEdgeSingleCarousel178x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanMSEdgeSingleCarousel178x100' }\r\n);\r\n\r\nexport const ResponsiveAdPlacementMmaInMsanMSNInArticle150x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getResponsiveMmaInMsanMSNInArticle150x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanMSNInArticle150x100' }\r\n);\r\n\r\nexport const ResponsiveAdPlacementMmaInMsanMSNSmallHeadline133x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getResponsiveMmaInMsanMSNSmallHeadline133x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanMSNSmallHeadline133x100' }\r\n);\r\n\r\nexport const ResponsiveAdPlacementMmaInMsanSquareImage1x1 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getResponsiveMmaInMsanSquareImage1x1Styles,\r\n { componentName: 'AdPlacementMmaInMsanSquareImage1x1' }\r\n);\r\n","const getMmaInMsanPlacementBaseStyles = () => ({\r\n placementCard: undefined,\r\n placementImageContainer: undefined,\r\n placementTextContainer: undefined,\r\n placementAdsLabel: undefined,\r\n placementGradient: undefined,\r\n placementShortHeadline: undefined,\r\n placementLongHeadline: undefined,\r\n placementFinalUrl: undefined,\r\n placementDescription: undefined,\r\n placementCallToAction: undefined,\r\n placementBusinessNameWithAdsLabel: undefined,\r\n});\r\n\r\nexport const getResponsiveMmaInMsanWideImage191x100Styles = theme => ({\r\n // base styles\r\n ...getMmaInMsanPlacementBaseStyles(theme),\r\n\r\n placementTextContainer: {\r\n padding: 10,\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n maxWidth: '-webkit-fill-available',\r\n },\r\n\r\n placementShortHeadline: {\r\n top: -6,\r\n color: '#207697',\r\n height: 60,\r\n position: 'relative',\r\n fontSize: 18,\r\n lineHeight: 1.2,\r\n fontWeight: 200,\r\n paddingBottom: 5,\r\n },\r\n\r\n placementDescription: {\r\n height: 45,\r\n margin: '5px 0 10px 0',\r\n fontSize: 14,\r\n },\r\n});\r\n\r\nexport const getResponsiveMmaInMsanMSEdgeSingleCarousel178x100Styles = theme => ({\r\n // base styles\r\n ...getMmaInMsanPlacementBaseStyles(theme),\r\n\r\n placementImageContainer: {\r\n position: 'relative',\r\n },\r\n\r\n placementCard: {\r\n '&:hover $placementGradient': {\r\n height: '480px !important',\r\n top: -100,\r\n },\r\n },\r\n\r\n // overrides\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 20,\r\n bottom: 25,\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n color: '#bebebe',\r\n },\r\n\r\n placementGradient: {\r\n display: 'block',\r\n width: '100%',\r\n height: '220px !important',\r\n top: 40,\r\n backgroundImage: 'linear-gradient(to bottom, transparent 0, black 100%)',\r\n },\r\n\r\n placementShortHeadline: {\r\n fontWeight: '200',\r\n fontSize: 28,\r\n lineHeight: '33.99px',\r\n color: 'white',\r\n width: 590,\r\n height: 73,\r\n marginBottom: 20,\r\n\r\n '& .multi-line-processed-text': {\r\n position: 'absolute',\r\n bottom: 30,\r\n },\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n '& .ads-label': {\r\n color: '#fff !important',\r\n opacity: 0.7,\r\n border: '.5px solid hsla(0,0%,100%,.3) !important',\r\n },\r\n '& .business-name': {\r\n color: '#bebebe !important',\r\n },\r\n },\r\n});\r\n\r\nexport const getResponsiveMmaInMsanMSNInArticle150x100Styles = theme => ({\r\n // base styles\r\n ...getMmaInMsanPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n background: '#fff',\r\n },\r\n\r\n placementTextContainer: {\r\n padding: 10,\r\n // height: 98,\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementShortHeadline: {\r\n top: -6,\r\n color: '#207697',\r\n height: 60,\r\n position: 'relative',\r\n fontSize: 15,\r\n lineHeight: 1.2,\r\n fontWeight: 200,\r\n paddingBottom: 5,\r\n },\r\n\r\n placementDescription: {\r\n height: 45,\r\n margin: '5px 0 10px 0',\r\n fontSize: 14,\r\n },\r\n});\r\n\r\nexport const getResponsiveMmaInMsanMSNSmallHeadline133x100Styles = theme => ({\r\n // base styles\r\n ...getMmaInMsanPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n height: 90,\r\n background: '#fff',\r\n overflow: 'unset !important',\r\n '& .card-parent': {\r\n '& .placement-card-content': {\r\n flexDirection: 'row !important',\r\n border: 'none !important',\r\n height: 90,\r\n },\r\n },\r\n },\r\n\r\n placementImageContainer: {\r\n float: 'left',\r\n width: 100,\r\n height: 75,\r\n margin: 8,\r\n },\r\n\r\n placementTextContainer: {\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementShortHeadline: {\r\n height: 52,\r\n margin: '4px 8px 0 0',\r\n overflow: 'hidden',\r\n fontSize: 13,\r\n fontWeight: 600,\r\n lineHeight: 1.384,\r\n paddingBottom: 5,\r\n },\r\n});\r\n\r\nexport const getResponsiveMmaInMsanSquareImage1x1Styles = theme => ({\r\n // base styles\r\n ...getMmaInMsanPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n height: 90,\r\n background: '#fff',\r\n '& .card-parent': {\r\n '& .placement-card-content': {\r\n flexDirection: 'row !important',\r\n height: 90,\r\n },\r\n },\r\n },\r\n\r\n placementImageContainer: {\r\n float: 'left',\r\n width: 80,\r\n height: 75,\r\n margin: 8,\r\n },\r\n\r\n placementTextContainer: {\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementShortHeadline: {\r\n height: 45,\r\n margin: '8px 8px 0 0',\r\n overflow: 'hidden',\r\n fontSize: 13,\r\n fontWeight: 600,\r\n lineHeight: 1.384,\r\n paddingBottom: 5,\r\n },\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n\r\nimport {\r\n getResponsiveBingSearchTextPlacementStyles,\r\n} from '../../styles';\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\n\r\nimport {\r\n AdLabel,\r\n PlacementHeadline,\r\n PlacementFinalUrl,\r\n PlacementDescription,\r\n} from '../../shared-components';\r\n\r\nconst BingSearchPlacementBase = ({\r\n placementData, // UAPVMSingleImagePlacement\r\n showShortHeadline,\r\n shortHeadline,\r\n isMultiLineShortHeadline,\r\n\r\n showLongHeadline,\r\n longHeadline,\r\n isMultiLineLongHeadline,\r\n\r\n showFinalUrl,\r\n showLogo,\r\n logo,\r\n finalUrl,\r\n isMultiLineFinalUrl,\r\n displayUrl,\r\n\r\n description,\r\n businessName,\r\n isMultiLineDescription,\r\n\r\n i18n, // may need to set window._TL_ in other platforms\r\n classes,\r\n customClassName,\r\n children,\r\n adExtensionContainerClassName,\r\n}) => (\r\n
\r\n
\r\n \r\n
\r\n {showLogo && logo &&\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{businessName}
\r\n \r\n
\r\n
\r\n }\r\n {showShortHeadline && (\r\n \r\n )}\r\n {showLongHeadline && (\r\n \r\n )}\r\n {(!showLogo || !logo) && showFinalUrl && (\r\n \r\n )}\r\n
\r\n \r\n \r\n
\r\n
\r\n {children && (\r\n
\r\n {children}\r\n
\r\n )}\r\n \r\n
\r\n
\r\n);\r\n\r\nBingSearchPlacementBase.propTypes = {\r\n showShortHeadline: PropTypes.bool,\r\n shortHeadline: PropTypes.string,\r\n isMultiLineShortHeadline: PropTypes.bool,\r\n\r\n showLongHeadline: PropTypes.bool,\r\n longHeadline: PropTypes.string,\r\n isMultiLineLongHeadline: PropTypes.bool,\r\n\r\n showFinalUrl: PropTypes.bool,\r\n finalUrl: PropTypes.string,\r\n isMultiLineFinalUrl: PropTypes.bool,\r\n displayUrl: PropTypes.string,\r\n\r\n description: PropTypes.string,\r\n isMultiLineDescription: PropTypes.bool,\r\n\r\n businessName: PropTypes.string,\r\n placementData: PropTypes.shape({}), // UAPVMSingleImagePlacement\r\n showLogo: PropTypes.bool,\r\n logo: PropTypes.shape({\r\n Src: PropTypes.string,\r\n Width: PropTypes.number,\r\n Height: PropTypes.number,\r\n CropSettings: PropTypes.shape({\r\n SourceX: PropTypes.number,\r\n SourceY: PropTypes.number,\r\n SourceWidth: PropTypes.number,\r\n SourceHeight: PropTypes.number,\r\n }),\r\n }),\r\n\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n placementCard: PropTypes.string,\r\n placementTextContainer: PropTypes.string,\r\n placementAdsLabel: PropTypes.string,\r\n placementShortHeadline: PropTypes.string,\r\n placementLongHeadline: PropTypes.string,\r\n placementFinalUrl: PropTypes.string,\r\n placementDescriptionContainer: PropTypes.string,\r\n placementDescription: PropTypes.string,\r\n placementLogoContainer: PropTypes.string,\r\n adExtensionContainer: PropTypes.string,\r\n }).isRequired,\r\n customClassName: PropTypes.string,\r\n};\r\n\r\nBingSearchPlacementBase.defaultProps = {\r\n showShortHeadline: false,\r\n showLongHeadline: false,\r\n showFinalUrl: false,\r\n\r\n shortHeadline: undefined,\r\n isMultiLineShortHeadline: false,\r\n longHeadline: undefined,\r\n isMultiLineLongHeadline: false,\r\n finalUrl: undefined,\r\n displayUrl: undefined,\r\n isMultiLineFinalUrl: false,\r\n description: undefined,\r\n isMultiLineDescription: false,\r\n customClassName: undefined,\r\n businessName: undefined,\r\n showLogo: false,\r\n logo: undefined,\r\n placementData: {},\r\n};\r\n\r\nexport const ResponsiveAdPlacementBingSearchText = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getResponsiveBingSearchTextPlacementStyles,\r\n { componentName: 'AdPlacementBingSearchText' }\r\n);\r\n","const getBingSearchPlacementBaseStyles = () => ({\r\n placementCard: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n\r\n position: 'relative',\r\n boxSizing: 'content-box',\r\n overflow: 'hidden',\r\n background: '#fff',\r\n margin: 'auto',\r\n\r\n '& .placement-card-content': {\r\n width: '100%',\r\n height: '100%',\r\n },\r\n },\r\n placementTextContainer: {\r\n margin: '4px 8px 0 8px',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n color: '#0078d4',\r\n cursor: 'pointer',\r\n overflow: 'hidden',\r\n '&:hover': {\r\n color: '#004578',\r\n },\r\n '& .logo-and-text-container': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n paddingBottom: 8,\r\n '& .logo-text': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n },\r\n },\r\n placementShortHeadline: undefined,\r\n placementLongHeadline: {\r\n height: 28,\r\n fontSize: 20,\r\n fontWeight: 400,\r\n lineHeight: '24px',\r\n overflow: 'hidden',\r\n width: '100%',\r\n },\r\n placementFinalUrl: {\r\n height: 20,\r\n fontSize: 14,\r\n color: '#0b6a0b',\r\n },\r\n placementDescriptionContainer: {\r\n display: 'flex',\r\n },\r\n placementAdsLabel: {\r\n position: 'static !important',\r\n color: '#767676 !important',\r\n border: '1px solid #ddd !important',\r\n margin: '0 4px 0 0 !important',\r\n display: 'inline',\r\n opacity: '100% !important',\r\n padding: '0 2px !important',\r\n maxHeight: 16,\r\n fontWeight: 600,\r\n lineHeight: 1,\r\n borderRadius: '6px !important',\r\n },\r\n placementDescription: {\r\n color: '#333',\r\n display: 'inline-block',\r\n fontSize: 13,\r\n flexGrow: 1,\r\n overflow: 'hidden',\r\n },\r\n});\r\n\r\nexport const getResponsiveBingSearchTextPlacementStyles = (theme) => {\r\n const { placementCard, placementFinalUrl, ...baseStyles } = getBingSearchPlacementBaseStyles(theme);\r\n const styles = {\r\n ...baseStyles,\r\n\r\n placementCard: {\r\n ...placementCard,\r\n height: 110,\r\n padding: '8px 16px',\r\n alignItems: 'flex-start',\r\n background: 'transparent',\r\n '& .card-parent': {\r\n width: '100%',\r\n },\r\n '& .placement-card-content': {\r\n width: '100%',\r\n display: 'block',\r\n overflow: 'hidden',\r\n boxSizing: 'border-box',\r\n },\r\n },\r\n\r\n placementFinalUrl: {\r\n ...placementFinalUrl,\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n placementLogoContainer: {\r\n paddingRight: 8,\r\n '& .cropped-image-view': {\r\n borderRadius: 6,\r\n },\r\n },\r\n };\r\n return styles;\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { getBoostWindowsSpotlight191x100Styles } from '../../styles';\r\nimport {\r\n MMAPlacementCard,\r\n PlacementHeadline,\r\n PlacementDescription,\r\n} from '../../shared-components';\r\nimport searchIcon from '../media/search.svg';\r\nimport cameraIcon from '../media/camera.svg';\r\nimport batteryIcon from '../media/battery.svg';\r\nimport wifiIcon from '../media/wifi.svg';\r\n\r\nconst WindowsSpotlight191x100 = ({\r\n placementData, // UAPVMSingleImagePlacement\r\n isEnabled,\r\n finalUrl,\r\n longHeadline,\r\n description,\r\n hotspots,\r\n i18n,\r\n classes,\r\n}) => {\r\n const {\r\n placementMeta, placementCropping, imageMeta, effectiveImageUrl, effectiveImageWidth, effectiveImageHeight, expandedPlacementCropping,\r\n } = placementData || {};\r\n const { previewHeight, aspectRatio } = placementMeta || {};\r\n if (!placementData || !imageMeta) {\r\n return null;\r\n }\r\n\r\n // const srcForCroppedImageView = showImage && this.props.image.FinalSrc;\r\n const imagePreviewWidth = previewHeight * aspectRatio;\r\n\r\n const cropping = expandedPlacementCropping || placementCropping;\r\n\r\n return (\r\n \r\n
\r\n {\r\n imageMeta.url &&\r\n \r\n }\r\n
\r\n
\r\n
{i18n.getString(_TL_('10:36'))}
\r\n
{i18n.getString(_TL_('Tuesday, October 18'))}
\r\n
\r\n
\r\n \"\"\r\n
\r\n {\r\n hotspots && hotspots[0] && hotspots[0].placement === 'Center' &&\r\n (\r\n // eslint-disable-next-line react/no-array-index-key\r\n
\r\n
{hotspots[0].title}
\r\n
{hotspots[0].desc}
\r\n
{hotspots[0].actionText}
\r\n
{hotspots[0].uri}
\r\n
\r\n )\r\n }\r\n
\r\n
\r\n
\r\n
\r\n \"\"\r\n \r\n \r\n
\r\n
\r\n \"\"\r\n
\r\n {\r\n hotspots && hotspots[0] && hotspots[0].placement === 'TopLeft' &&\r\n (\r\n // eslint-disable-next-line react/no-array-index-key\r\n
\r\n
{hotspots[0].title}
\r\n
{hotspots[0].desc}
\r\n
{hotspots[0].actionText}
\r\n
\r\n )\r\n }\r\n
\r\n
\r\n
\r\n \"\"\r\n \"\"\r\n
\r\n );\r\n};\r\n\r\nWindowsSpotlight191x100.propTypes = {\r\n placementData: PropTypes.shape({}).isRequired, // UAPVMSingleImagePlacement\r\n isEnabled: PropTypes.bool,\r\n longHeadline: PropTypes.string,\r\n finalUrl: PropTypes.string,\r\n description: PropTypes.string,\r\n hotspots: PropTypes.arrayOf(PropTypes.shape({\r\n placement: PropTypes.string,\r\n title: PropTypes.string,\r\n desc: PropTypes.string,\r\n actionText: PropTypes.string,\r\n })),\r\n i18n: PropTypes.shape({}).isRequired,\r\n classes: PropTypes.shape({\r\n placementTextContainer: PropTypes.string,\r\n placementCenterSection: PropTypes.string,\r\n placementHotspotsCenterSection: PropTypes.string,\r\n placementTopRightSection: PropTypes.string,\r\n placementTopLeftSection: PropTypes.string,\r\n placementHotspotsLeftSection: PropTypes.string,\r\n placementImageContainer: PropTypes.string,\r\n placementCard: PropTypes.string,\r\n placementLongHeadline: PropTypes.string,\r\n placementDescription: PropTypes.string,\r\n placementSearchIconCenter: PropTypes.string,\r\n placementSearchIconTopLeft: PropTypes.string,\r\n placementCameraIcon: PropTypes.string,\r\n placementWifiIcon: PropTypes.string,\r\n placementBatteryIcon: PropTypes.string,\r\n }).isRequired,\r\n};\r\n\r\nWindowsSpotlight191x100.defaultProps = {\r\n isEnabled: true,\r\n longHeadline: undefined,\r\n finalUrl: undefined,\r\n description: undefined,\r\n hotspots: [],\r\n};\r\n\r\nexport const AdPlacementBoostWindowsSpotlight191x100 = withUAPLThemedStyles(\r\n WindowsSpotlight191x100,\r\n getBoostWindowsSpotlight191x100Styles,\r\n { componentName: 'AdPlacementBoostWindowsSpotlight191x100' }\r\n);\r\n\r\nexport const UnstyledWindowsSpotlight191x100 = WindowsSpotlight191x100;\r\n","/* eslint-disable react/prop-types */\r\nimport React from 'react';\r\nimport classnames from 'classnames';\r\n\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport {\r\n AdPlacementBoostDiscoverCard1x1,\r\n AdPlacementBoostProngFeed191x100,\r\n AdPlacementBoostCoachmark175x100,\r\n AdPlacementBoostStartMenu,\r\n AdPlacementBoostActionCenter,\r\n AdPlacementBoostBanner,\r\n} from '../index';\r\nimport { UnstyledWindowsSpotlight191x100 } from '../boost-ad-placements/boost-windows-spotlight-placement';\r\nimport { getResponsiveBoostWindowsSpotlight191x100Styles } from '../../styles/ad-placement-components/boost-ad-placements-styles';\r\n\r\nexport const ResponsiveAdPlacementBoostDiscoverCard1x1 = ({\r\n customClassName,\r\n ...rest\r\n}) => (\r\n
\r\n \r\n
\r\n);\r\n\r\nexport const ResponsiveAdPlacementBoostProngFeed191x100 = ({\r\n customClassName,\r\n ...rest\r\n}) => (\r\n
\r\n \r\n
\r\n);\r\n\r\nexport const ResponsiveAdPlacementBoostCoachmark175x100 = ({\r\n customClassName,\r\n ...rest\r\n}) => (\r\n
\r\n \r\n
\r\n);\r\n\r\nexport const ResponsiveAdPlacementBoostStartMenu = ({\r\n customClassName,\r\n ...rest\r\n}) => (\r\n
\r\n \r\n
\r\n);\r\n\r\nexport const ResponsiveAdPlacementBoostActionCenter = ({\r\n customClassName,\r\n ...rest\r\n}) => (\r\n
\r\n \r\n
\r\n);\r\n\r\nexport const ResponsiveAdPlacementBoostBanner = ({\r\n customClassName,\r\n ...rest\r\n}) => (\r\n
\r\n \r\n
\r\n);\r\n\r\nconst BoostWindowsSpotlight191x100 = withUAPLThemedStyles(\r\n UnstyledWindowsSpotlight191x100,\r\n getResponsiveBoostWindowsSpotlight191x100Styles,\r\n { componentName: 'ResponsiveAdPlacementBoostWindowsSpotlight191x100' }\r\n);\r\n\r\nexport const ResponsiveAdPlacementBoostWindowsSpotlight191x100 = ({\r\n customClassName,\r\n ...rest\r\n}) => (\r\n
\r\n \r\n
\r\n);\r\n","import React from 'react';\r\n\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { AdPlacementMmaBase } from '../mma-ad-placement-base';\r\n\r\nimport {\r\n getBoostHeroImageCarouselStyles,\r\n getBoostProngFeed191x100Styles,\r\n getBoostCoachmark175x100Styles,\r\n} from '../../styles';\r\n\r\nexport const AdPlacementBoostHeroImageCarousel = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getBoostHeroImageCarouselStyles,\r\n { componentName: 'AdPlacementBoostHeroImageCarousel' }\r\n);\r\n\r\nexport const AdPlacementBoostProngFeed191x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getBoostProngFeed191x100Styles,\r\n { componentName: 'AdPlacementBoostProngFeed191x100' }\r\n);\r\n\r\nexport const AdPlacementBoostCoachmark175x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getBoostCoachmark175x100Styles,\r\n { componentName: 'AdPlacementBoostCoachmark175x100' }\r\n);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n\r\nimport {\r\n MMAPlacementCard,\r\n PlacementHeadline,\r\n PlacementDescription,\r\n PlacementAction,\r\n} from '../../shared-components';\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { getBoostStartMenuStyles, getBoostActionStyles, getBoostBannerStyles } from '../../styles';\r\nimport vectorIcon from '../media/vector.svg';\r\n\r\n\r\nconst BoostTextAdPlacementBase = ({\r\n placementData, // UAPVMSingleImagePlacement\r\n isEnabled,\r\n\r\n showSuggested,\r\n\r\n showShortHeadline,\r\n shortHeadline,\r\n isMultiLineShortHeadline,\r\n\r\n showLongHeadline,\r\n longHeadline,\r\n isMultiLineLongHeadline,\r\n\r\n finalUrl,\r\n\r\n showDescription,\r\n description,\r\n isMultiLineDescription,\r\n\r\n showCallToAction,\r\n callToAction,\r\n showDismissAction,\r\n\r\n showLogo,\r\n logo,\r\n\r\n i18n, // may need to set window._TL_ in other platforms\r\n classes,\r\n}) => {\r\n if (!placementData || !placementData.placementMeta) {\r\n return null;\r\n }\r\n const { logoHeight } = placementData.placementMeta;\r\n\r\n return (\r\n \r\n { showLogo && logo &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n {showSuggested && (\r\n
\r\n \"\"\r\n
{i18n.getString(_TL_('Suggested'))}
\r\n
\r\n )}\r\n
\r\n {showShortHeadline && (\r\n \r\n )}\r\n {showLongHeadline && (\r\n \r\n )}\r\n {showDescription && (\r\n \r\n )}\r\n
\r\n
\r\n {showCallToAction && callToAction && ( // add a space before each capital letter, e.g. \"ActNow\" => \"Act Now\"\r\n \r\n )}\r\n {showCallToAction && callToAction && showDismissAction && (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nBoostTextAdPlacementBase.propTypes = {\r\n placementData: PropTypes.shape({}).isRequired, // UAPVMSingleImagePlacement\r\n isEnabled: PropTypes.bool,\r\n\r\n showSuggested: PropTypes.bool,\r\n\r\n showShortHeadline: PropTypes.bool,\r\n shortHeadline: PropTypes.string,\r\n isMultiLineShortHeadline: PropTypes.bool,\r\n\r\n showLongHeadline: PropTypes.bool,\r\n longHeadline: PropTypes.string,\r\n isMultiLineLongHeadline: PropTypes.bool,\r\n\r\n finalUrl: PropTypes.string,\r\n\r\n showDescription: PropTypes.bool,\r\n description: PropTypes.string,\r\n isMultiLineDescription: PropTypes.bool,\r\n\r\n showDismissAction: PropTypes.bool,\r\n showCallToAction: PropTypes.bool,\r\n callToAction: PropTypes.string,\r\n\r\n showLogo: PropTypes.bool,\r\n logo: PropTypes.shape({\r\n Src: PropTypes.string,\r\n Width: PropTypes.number,\r\n Height: PropTypes.number,\r\n CropSettings: PropTypes.shape({\r\n SourceX: PropTypes.number,\r\n SourceY: PropTypes.number,\r\n SourceWidth: PropTypes.number,\r\n SourceHeight: PropTypes.number,\r\n }),\r\n }),\r\n\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n classes: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nBoostTextAdPlacementBase.defaultProps = {\r\n isEnabled: true,\r\n showSuggested: false,\r\n showShortHeadline: false,\r\n showLongHeadline: false,\r\n showDescription: false,\r\n showDismissAction: false,\r\n showCallToAction: false,\r\n showLogo: false,\r\n shortHeadline: false,\r\n isMultiLineShortHeadline: false,\r\n longHeadline: undefined,\r\n isMultiLineLongHeadline: false,\r\n finalUrl: undefined,\r\n description: undefined,\r\n isMultiLineDescription: false,\r\n callToAction: undefined,\r\n logo: undefined,\r\n};\r\n\r\nexport const AdPlacementBoostStartMenu = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getBoostStartMenuStyles,\r\n { componentName: 'AdPlacementBoostStartMenu' }\r\n);\r\nexport const AdPlacementBoostActionCenter = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getBoostActionStyles,\r\n { componentName: 'AdPlacementBoostActionCenter' }\r\n);\r\nexport const AdPlacementBoostBanner = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getBoostBannerStyles,\r\n { componentName: 'AdPlacementBoostBanner' }\r\n);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { getBoostDiscoverCard1x1Styles } from '../../styles';\r\nimport {\r\n MMAPlacementCard,\r\n PlacementHeadline,\r\n PlacementDescription,\r\n PlacementAction,\r\n} from '../../shared-components';\r\n\r\nconst BoostDiscoverCard1x1 = ({\r\n placementData, // UAPVMSingleImagePlacement\r\n isEnabled,\r\n finalUrl,\r\n shortHeadline,\r\n description,\r\n callToAction,\r\n i18n,\r\n classes,\r\n}) => {\r\n const {\r\n placementMeta, placementCropping, imageMeta, effectiveImageUrl, effectiveImageWidth, effectiveImageHeight, expandedPlacementCropping,\r\n } = placementData || {};\r\n const { previewHeight, aspectRatio } = placementMeta || {};\r\n if (!placementData || !imageMeta) {\r\n return null;\r\n }\r\n\r\n // const srcForCroppedImageView = showImage && this.props.image.FinalSrc;\r\n const imagePreviewWidth = previewHeight * aspectRatio;\r\n\r\n const cropping = expandedPlacementCropping || placementCropping;\r\n\r\n return (\r\n \r\n
\r\n {\r\n imageMeta.url &&\r\n \r\n }\r\n
\r\n
{i18n.getString(_TL_('Discover'))}
\r\n
\r\n \r\n \r\n {callToAction && ( // add a space before each capital letter, e.g. \"ActNow\" => \"Act Now\"\r\n \r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nBoostDiscoverCard1x1.propTypes = {\r\n placementData: PropTypes.shape({}).isRequired, // UAPVMSingleImagePlacement\r\n isEnabled: PropTypes.bool,\r\n shortHeadline: PropTypes.string,\r\n finalUrl: PropTypes.string,\r\n description: PropTypes.string,\r\n callToAction: PropTypes.string,\r\n i18n: PropTypes.shape({}).isRequired,\r\n classes: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nBoostDiscoverCard1x1.defaultProps = {\r\n isEnabled: true,\r\n shortHeadline: undefined,\r\n finalUrl: undefined,\r\n description: undefined,\r\n callToAction: undefined,\r\n};\r\n\r\nexport const AdPlacementBoostDiscoverCard1x1 = withUAPLThemedStyles(\r\n BoostDiscoverCard1x1,\r\n getBoostDiscoverCard1x1Styles,\r\n { componentName: 'AdPlacementBoostDiscoverCard1x1' }\r\n);\r\n","import React from 'react';\r\n\r\nimport {\r\n getResponsiveSearchAdPlacementStyles,\r\n getResponsiveSearchAdDesktopPlacementStyles,\r\n getResponsiveSearchAdMobilePlacementStyles,\r\n} from '../../styles';\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { bingDesktopHeaderImage } from '../media/bing-desktop-header';\r\nimport { ResponsiveSearchAdPlacementBase } from './responsive-search-ad-placement-base';\r\n\r\nexport const AdPlacementResponsiveSearch = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getResponsiveSearchAdPlacementStyles,\r\n { componentName: 'AdPlacementResponsiveSearch' }\r\n);\r\n\r\nexport const AdPlacementResponsiveSearchDesktop = withUAPLThemedStyles(\r\n ({ classes, i18n, ...props }) => (\r\n
\r\n
\r\n {i18n.getString(_TL_('Header\r\n
\r\n \r\n
\r\n ),\r\n getResponsiveSearchAdDesktopPlacementStyles,\r\n { componentName: 'AdPlacementResponsiveSearchDesktop' }\r\n);\r\n\r\nexport const AdPlacementResponsiveSearchMobile = withUAPLThemedStyles(\r\n props => (\r\n
\r\n
\r\n \r\n
\r\n
\r\n ),\r\n getResponsiveSearchAdMobilePlacementStyles,\r\n { componentName: 'AdPlacementResponsiveSearchMobile' }\r\n);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { getDynamicSearchAdPlacementStyles } from '../../styles';\r\n\r\nimport {\r\n AdLabel,\r\n PlacementHeadline,\r\n PlacementFinalUrlWithLink,\r\n PlacementDescription,\r\n PlacementContentContainer,\r\n} from '../../shared-components';\r\n\r\nexport const AdPlacementDynamicSearchPropTypes = {\r\n propTypes: {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n placementContentContainer: PropTypes.string,\r\n placementCard: PropTypes.string,\r\n placementTextContainer: PropTypes.string,\r\n placementAdsLabel: PropTypes.string,\r\n placementDisplayUrl: PropTypes.string,\r\n placementDescriptionContainer: PropTypes.string,\r\n placementDescription: PropTypes.string,\r\n }).isRequired,\r\n previewTexts: PropTypes.shape({\r\n longHeadline: PropTypes.string,\r\n description: PropTypes.string,\r\n displayUrl: PropTypes.string,\r\n url: PropTypes.string,\r\n }).isRequired,\r\n },\r\n defaultProps: {\r\n },\r\n};\r\n\r\nexport const DynamicSearchAdPlacementBase = (props) => {\r\n const {\r\n i18n,\r\n classes,\r\n previewTexts: {\r\n headline,\r\n description,\r\n finalUrl,\r\n displayUrl,\r\n },\r\n } = props;\r\n\r\n return (\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n {i18n.getString(_TL_('Dynamically generated ad'))}\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nDynamicSearchAdPlacementBase.propTypes = AdPlacementDynamicSearchPropTypes.propTypes;\r\n\r\nDynamicSearchAdPlacementBase.defaultProps = AdPlacementDynamicSearchPropTypes.defaultProps;\r\n\r\nexport const AdPlacementDynamicSearch = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getDynamicSearchAdPlacementStyles,\r\n { componentName: 'AdPlacementDynamicSearch' }\r\n);\r\n","export const getDynamicSearchAdPlacementStyles = () => ({\r\n placementCard: {\r\n background: 'white',\r\n borderRadius: '4px',\r\n boxShadow: '0px 0.3px 0.9px 0px rgba(0, 0, 0, 0.10), 0px 1.6px 3.6px 0px rgba(0, 0, 0, 0.13)',\r\n padding: '20px 16px',\r\n width: '482px',\r\n },\r\n placementTextCardContainer: {\r\n background: '#F5F5F5',\r\n minHeight: '200px',\r\n padding: '20px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n placementTextContainer: {\r\n padding: '20px 10px 20px 20px',\r\n borderRadius: '8px',\r\n border: '1px solid #E1DFDD',\r\n background: 'white',\r\n boxShadow: '0px 2px 4px 0px rgba(0, 0, 0, 0.05)',\r\n fontWeight: '400',\r\n width: '380px',\r\n },\r\n placementInlineItems: {\r\n display: 'inline-flex',\r\n },\r\n placementHeadline: {\r\n color: '#1A0DAB',\r\n fontSize: '18px',\r\n lineHeight: '22px',\r\n },\r\n placementDescriptionContainer: {\r\n display: 'inline-flex',\r\n alignItems: 'baseline',\r\n },\r\n placementDescription: {\r\n color: '#666',\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n wordBreak: 'break-word',\r\n },\r\n placementUrl: {\r\n color: '#006621',\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n placementAdsLabel: {\r\n position: 'static !important',\r\n color: '#666 !important',\r\n border: '1px solid #ddd !important',\r\n borderRadius: '2px !important',\r\n fontSize: '11px !important',\r\n margin: '0 4px 0 0 !important',\r\n padding: '0 2px !important',\r\n },\r\n placementDisclaimer: {\r\n color: '#323130',\r\n fontSize: '14px',\r\n fontWeight: '600',\r\n lineHeight: '20px',\r\n marginTop: '20px',\r\n textAlign: 'center',\r\n },\r\n});\r\n","/* eslint-disable jsx-a11y/media-has-caption */\r\nimport React, { useEffect, useRef, useMemo } from 'react';\r\nimport classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\n\r\nimport { getVideoPlacementStyles } from '../styles/ad-placement-components/video-placement-styles';\r\n\r\n\r\nexport const VideoPlacementInner = ({\r\n classes,\r\n videos,\r\n}) => {\r\n const { src, height, width } = videos && videos.length > 0 ? videos[0] : {};\r\n\r\n const videoRef = useRef();\r\n\r\n // check for vertical video\r\n const isVerticalVideo = useMemo(() => height > width, [height, width]);\r\n const videoPlayerRootClass = isVerticalVideo ? classes.videoPlayerVertical : classes.videoPlayerRoot;\r\n\r\n useEffect(() => {\r\n if (videoRef.current) {\r\n videoRef.current.load();\r\n }\r\n }, [src]);\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nVideoPlacementInner.propTypes = {\r\n classes: PropTypes.shape({\r\n videoPlayerRoot: PropTypes.string,\r\n }),\r\n videos: PropTypes.arrayOf(PropTypes.shape({\r\n src: PropTypes.string,\r\n })),\r\n};\r\n\r\nVideoPlacementInner.defaultProps = {\r\n classes: {},\r\n videos: null,\r\n};\r\n\r\nexport const VideoPlacement = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getVideoPlacementStyles,\r\n { componentName: 'VideoPlacement' }\r\n);\r\n\r\n","export const getVideoPlacementStyles = () => ({\r\n placementCard: {\r\n width: '100%',\r\n height: '100%',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n },\r\n videoPlayerVertical: {\r\n height: '520px',\r\n width: '300px',\r\n padding: '10px',\r\n borderRadius: 10,\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n },\r\n videoPlayerRoot: {\r\n height: '100%',\r\n width: '100%',\r\n display: 'flex',\r\n padding: '20px',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n },\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { getAdPreviewContainerBaseStyles, } from '../styles';\r\n\r\nconst ContainerBase = (props) => {\r\n const {\r\n titleText,\r\n isValid,\r\n onRenderHeader,\r\n onRenderPlacement,\r\n onRenderFooter,\r\n children,\r\n classes,\r\n previewContainerClassName,\r\n containerHeaderClassName,\r\n containerTitleClassName,\r\n containerFooterClassName,\r\n placementContainerClassName,\r\n } = props;\r\n\r\n return (\r\n
\r\n
\r\n {onRenderHeader ? onRenderHeader(props) : (\r\n titleText &&
{titleText}
\r\n )}\r\n
\r\n
\r\n {onRenderPlacement ? onRenderPlacement(props) : children}\r\n
\r\n
\r\n {onRenderFooter ? onRenderFooter() : null}\r\n
\r\n
\r\n );\r\n};\r\n\r\nContainerBase.propTypes = {\r\n titleText: PropTypes.string,\r\n isValid: PropTypes.bool,\r\n onRenderHeader: PropTypes.func,\r\n onRenderFooter: PropTypes.func,\r\n onRenderPlacement: PropTypes.func,\r\n classes: PropTypes.shape({\r\n adPreviewContainer: PropTypes.string,\r\n adPreviewContainerError: PropTypes.string,\r\n adPreviewContainerHeader: PropTypes.string,\r\n adPreviewContainerTitle: PropTypes.string,\r\n adPreviewPlacementContainer: PropTypes.string,\r\n adPreviewContainerFooter: PropTypes.string,\r\n }).isRequired,\r\n children: PropTypes.node.isRequired,\r\n previewContainerClassName: PropTypes.string,\r\n containerHeaderClassName: PropTypes.string,\r\n containerTitleClassName: PropTypes.string,\r\n containerFooterClassName: PropTypes.string,\r\n placementContainerClassName: PropTypes.string,\r\n};\r\n\r\nContainerBase.defaultProps = {\r\n titleText: undefined,\r\n onRenderHeader: undefined,\r\n onRenderFooter: undefined,\r\n onRenderPlacement: undefined,\r\n isValid: true,\r\n previewContainerClassName: undefined,\r\n containerHeaderClassName: undefined,\r\n containerTitleClassName: undefined,\r\n containerFooterClassName: undefined,\r\n placementContainerClassName: undefined,\r\n};\r\n\r\nexport const AdPreviewPlacementContainerBase = withUAPLThemedStyles(\r\n ContainerBase,\r\n getAdPreviewContainerBaseStyles,\r\n { componentName: 'AdPreviewPlacementContainerBase' }\r\n);\r\n","export const getAdPreviewContainerBaseStyles = (components, { palette = {} } = {}) => ({\r\n adPreviewContainer: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n background: 'white',\r\n boxShadow: '0px 0.6px 1.8px rgba(0, 0, 0, 0.1), 0px 3.2px 7.2px rgba(0, 0, 0, 0.13)',\r\n borderRadius: 6,\r\n },\r\n adPreviewContainerError: {\r\n border: `1px solid ${palette.orange}`,\r\n },\r\n adPreviewContainerHeader: {\r\n display: 'flex',\r\n padding: [12, 12, 0, 16],\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n },\r\n adPreviewContainerTitle: {\r\n },\r\n adPreviewPlacementContainer: {\r\n margin: 'auto',\r\n },\r\n adPreviewContainerFooter: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n },\r\n});\r\n","//\r\n// each placement will use one of the following image types\r\n// the type defines the image size and aspect ratio\r\nexport const UAPImageType = {\r\n Image1x1: 'Image1x1',\r\n Image4x1: 'Image4x1',\r\n Image1x2: 'Image1x2',\r\n Image191x100: 'Image191x100',\r\n Image178x100: 'Image178x100',\r\n Image172x100: 'Image172x100',\r\n Image169x100: 'Image169x100',\r\n Image155x100: 'Image155x100',\r\n Image150x100: 'Image150x100',\r\n Image133x100: 'Image133x100',\r\n Image93x100: 'Image93x100',\r\n Image201x100: 'Image201x100',\r\n Image200x100: 'Image200x100',\r\n Image153x100: 'Image153x100',\r\n Image124x100: 'Image124x100',\r\n Image120x100: 'Image120x100',\r\n Image122x100: 'Image122x100',\r\n Image159x100: 'Image159x100',\r\n Image180x100: 'Image180x100',\r\n Image233x100: 'Image233x100',\r\n Image320x100: 'Image320x100',\r\n Image57x100: 'Image57x100',\r\n};\r\n\r\nexport const UAPVideoType = {\r\n VideoMedia16X9: 'VideoMedia16X9',\r\n VideoMedia5X4: 'VideoMedia5X4',\r\n VideoMedia1X1: 'VideoMedia1X1',\r\n VideoMedia4X5: 'VideoMedia4X5',\r\n VideoMedia9X16: 'VideoMedia9X16',\r\n};\r\n","//\r\n// uniquely identify a placement on supply side channels\r\n// - if a placement is used in more than one supply channels and share the same look,\r\n// then we could use one placement type to represent them all\r\nexport const UAPPlacementType = {\r\n // mma\r\n MMA_WideImage_4x1: 'MMA_WideImage_4x1',\r\n MMA_LandscapeImage_191x100: 'MMA_LandscapeImage_191x100',\r\n MMA_SquareImage_1x1: 'MMA_SquareImage_1x1',\r\n MMA_VerticalImage_1x2: 'MMA_VerticalImage_1x2',\r\n\r\n // audience ad (mma in msan)\r\n Audience_Network_WideImage_191x100: 'Audience_Network_WideImage_191x100',\r\n Audience_Network_SquareImage_1x1: 'Audience_Network_SquareImage_1x1',\r\n Microsoft_Edge_Single_Carousel_178x100: 'Microsoft_Edge_Single_Carousel_178x100',\r\n MSN_InArticle_Ad_150x100: 'MSN_InArticle_Ad_150x100',\r\n MSN_Small_Headline_133x100: 'MSN_Small_Headline_133x100',\r\n\r\n // audience ad (mma in msan) V2\r\n MsanV2_Microsoft_Edge_Carouse_l201x100: 'MsanV2_Microsoft_Edge_Carouse_l201x100',\r\n MsanV2_Microsoft_Edge_Mobile_1x1: 'MsanV2_Microsoft_Edge_Mobile_1x1',\r\n MsanV2_MSAN_Banner_2x1: 'MsanV2_MSAN_Banner_2x1',\r\n MsanV2_MSAN_River_191x100: 'MsanV2_MSAN_River_191x100',\r\n MsanV2_MSAN_Rectangle_120x100: 'MsanV2_MSAN_Rectangle_120x100',\r\n MsanV2_MSN_Carousel_169x100: 'MsanV2_MSN_Carousel_169x100',\r\n MsanV2_MSN_Partner_Stripe_153x100: 'MsanV2_MSN_Partner_Stripe_153x100',\r\n MsanV2_MSN_Restoday_124x100: 'MsanV2_MSN_Restoday_124x100',\r\n\r\n // pmax\r\n PMax_MMA_WideImage_4x1: 'PMax_MMA_WideImage_4x1',\r\n PMax_MMA_LandscapeImage_191x100: 'PMax_MMA_LandscapeImage_191x100',\r\n PMax_MMA_VerticalImage_1x2: 'PMax_MMA_VerticalImage_1x2',\r\n PMax_Audience_Network_WideImage_191x100: 'PMax_Audience_Network_WideImage_191x100',\r\n PMax_Audience_Network_SquareImage_1x1: 'PMax_Audience_Network_SquareImage_1x1',\r\n PMax_Microsoft_Edge_Single_Carousel_178x100: 'PMax_Microsoft_Edge_Single_Carousel_178x100',\r\n PMax_MSN_InArticle_Ad_150x100: 'PMax_MSN_InArticle_Ad_150x100',\r\n PMax_MSN_Small_Headline_133x100: 'PMax_MSN_Small_Headline_133x100',\r\n // pmax v2\r\n PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100: 'PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100',\r\n PMax_MMAV2_MSN_Single_Carousel_169x100: 'PMax_MMAV2_MSN_Single_Carousel_169x100',\r\n PMax_MMAV2_MSN_Restoday_124x100: 'PMax_MMAV2_MSN_Restoday_124x100',\r\n PMax_MMAV2_MSN_Partner_Stripe_153x100: 'PMax_MMAV2_MSN_Partner_Stripe_153x100',\r\n PMax_MMAV2_MSN_River_191x100: 'PMax_MMAV2_MSN_River_191x100',\r\n PMax_Video: 'PMax_Video',\r\n PMax_MMAV2_Microsoft_Edge_Mobile_1x1: 'PMax_MMAV2_Microsoft_Edge_Mobile_1x1',\r\n\r\n // Boost\r\n Boost_Hero_Image_Carousel_200x100: 'Boost_Hero_Image_Carousel_200x100',\r\n Boost_Hero_Image_Carousel_122x100: 'Boost_Hero_Image_Carousel_122x100',\r\n Boost_Hero_Image_Carousel_159x100: 'Boost_Hero_Image_Carousel_159x100',\r\n Boost_Hero_Image_Carousel_180x100: 'Boost_Hero_Image_Carousel_180x100',\r\n Boost_Hero_Image_Carousel_233x100: 'Boost_Hero_Image_Carousel_233x100',\r\n Boost_Hero_Image_Carousel_320x100: 'Boost_Hero_Image_Carousel_320x100',\r\n Boost_Hero_Image_Carousel_57x100: 'Boost_Hero_Image_Carousel_57x100',\r\n Boost_Windows_Spotlight_191x100: 'Boost_Windows_Spotlight_191x100',\r\n Boost_Discover_Card_1x1: 'Boost_Discover_Card_1x1',\r\n Boost_Start_Menu: 'Boost_Start_Menu',\r\n Boost_Action_Center: 'Boost_Action_Center',\r\n Boost_Banner: 'Boost_Banner',\r\n Boost_Prong1_Prong2_Feed_191x100: 'Boost_Prong1_Prong2_Feed_191x100',\r\n Boost_Coachmark_175x100: 'Boost_Coachmark_175x100',\r\n\r\n // image extension\r\n ImgExt_MMAV2_MSN_River_191x100: 'ImgExt_MMAV2_MSN_River_191x100',\r\n ImgExt_MMAV2_MSN_Single_Carousel_169x100: 'ImgExt_MMAV2_MSN_Single_Carousel_169x100',\r\n ImgExt_MMAV2_MSN_Microsoft_Edge_Mobile_1x1: 'ImgExt_MMAV2_MSN_Microsoft_Edge_Mobile_1x1',\r\n ImgExt_Audience_Network_WideImage_191x100: 'ImgExt_Audience_Network_WideImage_191x100',\r\n ImgExt_Audience_Network_SquareImage_1x1: 'ImgExt_Audience_Network_SquareImage_1x1',\r\n ImgExt_Microsoft_Edge_Single_Carousel_178x100: 'ImgExt_Microsoft_Edge_Single_Carousel_178x100',\r\n ImgExt_Bing_Desktop_SingleImage_Extension_178x100: 'ImgExt_Bing_Desktop_SingleImage_Extension_178x100',\r\n ImgExt_Microsoft_Edge_Medium_Headline_172x100: 'ImgExt_Microsoft_Edge_Medium_Headline_172x100',\r\n ImgExt_MSN_Single_Carousel_169x100: 'ImgExt_MSN_Single_Carousel_169x100',\r\n ImgExt_MSN_Medium_Headline_155x100: 'ImgExt_MSN_Medium_Headline_155x100',\r\n ImgExt_MSN_InArticle_Ad_150x100: 'ImgExt_MSN_InArticle_Ad_150x100',\r\n ImgExt_MSN_Small_Headline_133x100: 'ImgExt_MSN_Small_Headline_133x100',\r\n ImgExt_Bing_Desktop_MultiImage_Extension_133x100: 'ImgExt_Bing_Desktop_MultiImage_Extension_133x100',\r\n ImgExt_Bing_Mobile_MultiImage_Extension_133x100: 'ImgExt_Bing_Mobile_MultiImage_Extension_133x100',\r\n ImgExt_MSN_Double_Carousel_93x100: 'ImgExt_MSN_Double_Carousel_93x100',\r\n\r\n // text ads\r\n Outlook_Text_Mobile: 'TextOutlookMobile',\r\n Outlook_Text_Web: 'TextOutlookWeb',\r\n Bing_Search_Mobile: 'BingTextMobile',\r\n Bing_Search_Desktop: 'BingTextDesktop',\r\n Bing_Search_Text: 'BingText',\r\n\r\n // responsive mma\r\n Responsive_MMA_WideImage_4x1: 'Responsive_MMA_WideImage_4x1',\r\n Responsive_MMA_LandscapeImage_191x100: 'Responsive_MMA_LandscapeImage_191x100',\r\n Responsive_MMA_SquareImage_1x1: 'Responsive_MMA_SquareImage_1x1',\r\n Responsive_MMA_VerticalImage_1x2: 'Responsive_MMA_VerticalImage_1x2',\r\n\r\n // responsive audience ad (mma in msan)\r\n Responsive_Audience_Network_WideImage_191x100: 'Responsive_Audience_Network_WideImage_191x100',\r\n Responsive_Audience_Network_SquareImage_1x1: 'Responsive_Audience_Network_SquareImage_1x1',\r\n Responsive_Microsoft_Edge_Single_Carousel_178x100: 'Responsive_Microsoft_Edge_Single_Carousel_178x100',\r\n Responsive_MSN_InArticle_Ad_150x100: 'Responsive_MSN_InArticle_Ad_150x100',\r\n Responsive_MSN_Small_Headline_133x100: 'Responsive_MSN_Small_Headline_133x100',\r\n\r\n // responsive audience ad (mma in msan) V2\r\n Responsive_MsanV2_Microsoft_Edge_Carouse_l201x100: 'Responsive_MsanV2_Microsoft_Edge_Carouse_l201x100',\r\n Responsive_MsanV2_Microsoft_Edge_Mobile_1x1: 'Responsive_MsanV2_Microsoft_Edge_Mobile_1x1',\r\n Responsive_MsanV2_MSAN_Banner_2x1: 'Responsive_MsanV2_MSAN_Banner_2x1',\r\n Responsive_MsanV2_MSAN_River_191x100: 'Responsive_MsanV2_MSAN_River_191x100',\r\n Responsive_MsanV2_MSAN_Rectangle_120x100: 'Responsive_MsanV2_MSAN_Rectangle_120x100',\r\n Responsive_MsanV2_MSN_Carousel_169x100: 'Responsive_MsanV2_MSN_Carousel_169x100',\r\n Responsive_MsanV2_MSN_Partner_Stripe_153x100: 'Responsive_MsanV2_MSN_Partner_Stripe_153x100',\r\n Responsive_MsanV2_MSN_Restoday_124x100: 'Responsive_MsanV2_MSN_Restoday_124x100',\r\n\r\n // responsive text ads\r\n Responsive_Outlook_Text_Mobile: 'ResponsiveTextOutlookMobile',\r\n Responsive_Outlook_Text_Web: 'ResponsiveTextOutlookWeb',\r\n Responsive_Bing_Search_Text: 'ResponsiveBingText',\r\n\r\n // responsive boost ads\r\n Responsive_Boost_Windows_Spotlight_191x100: 'Responsive_Boost_Windows_Spotlight_191x100',\r\n Responsive_Boost_Discover_Card_1x1: 'Responsive_Boost_Discover_Card_1x1',\r\n Responsive_Boost_Start_Menu: 'Responsive_Boost_Start_Menu',\r\n Responsive_Boost_Action_Center: 'Responsive_Boost_Action_Center',\r\n Responsive_Boost_Banner: 'Responsive_Boost_Banner',\r\n Responsive_Boost_Prong1_Prong2_Feed_191x100: 'Responsive_Boost_Prong1_Prong2_Feed_191x100',\r\n Responsive_Boost_Coachmark_175x100: 'Responsive_Boost_Coachmark_175x100',\r\n\r\n // responsive search ads\r\n Responsive_Search: 'ResponsiveSearch',\r\n Responsive_Search_Desktop: 'ResponsiveSearchDesktop',\r\n Responsive_Search_Mobile: 'ResponsiveSearchMobile',\r\n\r\n // responsive pmax\r\n Responsive_PMax_MMA_WideImage_4x1: 'Responsive_PMax_MMA_WideImage_4x1',\r\n Responsive_PMax_MMA_LandscapeImage_191x100: 'Responsive_PMax_MMA_LandscapeImage_191x100',\r\n Responsive_PMax_MMA_VerticalImage_1x2: 'Responsive_PMax_MMA_VerticalImage_1x2',\r\n Responsive_PMax_Audience_Network_WideImage_191x100: 'Responsive_PMax_Audience_Network_WideImage_191x100',\r\n Responsive_PMax_Audience_Network_SquareImage_1x1: 'Responsive_PMax_Audience_Network_SquareImage_1x1',\r\n Responsive_PMax_Microsoft_Edge_Single_Carousel_178x100: 'Responsive_PMax_Microsoft_Edge_Single_Carousel_178x100',\r\n Responsive_PMax_MSN_InArticle_Ad_150x100: 'Responsive_PMax_MSN_InArticle_Ad_150x100',\r\n Responsive_PMax_MSN_Small_Headline_133x100: 'Responsive_PMax_MSN_Small_Headline_133x100',\r\n // responsive pmax v2\r\n Responsive_PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100: 'Responsive_PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100',\r\n Responsive_PMax_MMAV2_MSN_Single_Carousel_169x100: 'Responsive_PMax_MMAV2_MSN_Single_Carousel_169x100',\r\n Responsive_PMax_MMAV2_MSN_Restoday_124x100: 'Responsive_PMax_MMAV2_MSN_Restoday_124x100',\r\n Responsive_PMax_MMAV2_MSN_Partner_Stripe_153x100: 'Responsive_PMax_MMAV2_MSN_Partner_Stripe_153x100',\r\n Responsive_PMax_MMAV2_MSN_River_191x100: 'Responsive_PMax_MMAV2_MSN_River_191x100',\r\n Responsive_PMax_MMAV2_Microsoft_Edge_Mobile_1x1: 'Responsive_PMax_MMAV2_Microsoft_Edge_Mobile_1x1',\r\n\r\n // dynamic search ads\r\n Dynamic_Search: 'DynamicSearch',\r\n\r\n // linkedin ads\r\n LinkedIn_Single_Image_Desktop_Landscape: 'LinkedIn_Single_Image_Desktop_Landscape',\r\n LinkedIn_Single_Image_Mobile_Landscape: 'LinkedIn_Single_Image_Mobile_Landscape',\r\n LinkedIn_Single_Image_Medium_Rectangle_Landscape: 'LinkedIn_Single_Image_Medium_Rectangle_Landscape',\r\n LinkedIn_Single_Image_Mobile_Interstitial_Landscape: 'LinkedIn_Single_Image_Mobile_Interstitial_Landscape',\r\n LinkedIn_Single_Image_Native_Landscape: 'LinkedIn_Single_Image_Native_Landscape',\r\n\r\n LinkedIn_Single_Image_Desktop_Square: 'LinkedIn_Single_Image_Desktop_Square',\r\n LinkedIn_Single_Image_Mobile_Square: 'LinkedIn_Single_Image_Mobile_Square',\r\n LinkedIn_Single_Image_Medium_Rectangle_Square: 'LinkedIn_Single_Image_Medium_Rectangle_Square',\r\n LinkedIn_Single_Image_Mobile_Interstitial_Square: 'LinkedIn_Single_Image_Mobile_Interstitial_Square',\r\n LinkedIn_Single_Image_Native_Square: 'LinkedIn_Single_Image_Native_Square',\r\n\r\n LinkedIn_Single_Image_Mobile_Vertical: 'LinkedIn_Single_Image_Mobile_Vertical',\r\n LinkedIn_Single_Image_Medium_Rectangle_Vertical: 'LinkedIn_Single_Image_Medium_Rectangle_Vertical',\r\n LinkedIn_Single_Image_Mobile_Interstitial_Vertical: 'LinkedIn_Single_Image_Mobile_Interstitial_Vertical',\r\n LinkedIn_Single_Image_Native_Vertical: 'LinkedIn_Single_Image_Native_Vertical',\r\n\r\n Unified_App_Ads_Video_Horizontal: 'Unified_App_Ads_Video_Horizontal',\r\n Unified_App_Ads_Bing_Search: 'Unified_App_Ads_Bing_Search',\r\n Unified_App_Ads_Bing_Search_Text: 'Unified_App_Ads_Bing_Search_Text',\r\n Unified_App_Ads_Causal_Games_Dimensions: 'Unified_App_Ads_Causal_Games_Dimensions',\r\n Unified_App_Ads_M365_Outlook: 'Unified_App_Ads_M365_Outlook',\r\n Unified_App_Ads_MSN_Display: 'Unified_App_Ads_MSN_Display',\r\n // todo: video\r\n};\r\n","\r\nexport const UAPAdExtensionType = {\r\n SiteLink: 'SiteLink',\r\n Callout: 'Callout',\r\n Promotion: 'Promotion',\r\n StructuredSnippet: 'StructuredSnippet',\r\n Price: 'Price',\r\n};\r\n","import _ from 'underscore';\r\nimport {\r\n UAPImageType,\r\n UAPPlacementType as PT,\r\n UAPVideoType,\r\n // UAPPlacementMeta,\r\n} from '../@types';\r\n\r\nexport const UAPLPlacementMetaList /* : Record */ = {\r\n [PT.MMA_WideImage_4x1]: {\r\n placementType: PT.MMA_WideImage_4x1,\r\n imageType: UAPImageType.Image4x1,\r\n aspectRatio: 4,\r\n // used to compare ratio values, use string instead of number to avoid precision issue\r\n aspectRatioStr: '4:1', // refer to: private\\ad-creator-tools\\packages\\media-common-utils\\src\\aspect-ratio-config.js\r\n previewHeight: 152,\r\n minSize: [608, 152],\r\n },\r\n [PT.MMA_LandscapeImage_191x100]: {\r\n placementType: PT.MMA_LandscapeImage_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 244,\r\n minSize: [703, 368],\r\n },\r\n [PT.MMA_SquareImage_1x1]: {\r\n placementType: PT.MMA_SquareImage_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 400,\r\n minSize: [470, 470],\r\n },\r\n [PT.MMA_VerticalImage_1x2]: {\r\n placementType: PT.MMA_VerticalImage_1x2,\r\n imageType: UAPImageType.Image1x2,\r\n aspectRatio: 0.5,\r\n aspectRatioStr: '1:2',\r\n previewHeight: 400,\r\n minSize: [470, 940],\r\n },\r\n\r\n // MMA in MSAN\r\n [PT.Audience_Network_WideImage_191x100]: {\r\n placementType: PT.Audience_Network_WideImage_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 200,\r\n minSize: [703, 368],\r\n },\r\n [PT.Microsoft_Edge_Single_Carousel_178x100]: {\r\n placementType: PT.Microsoft_Edge_Single_Carousel_178x100,\r\n imageType: UAPImageType.Image178x100,\r\n aspectRatio: 1.78,\r\n aspectRatioStr: '178:100',\r\n previewHeight: 350,\r\n minSize: [624, 350],\r\n },\r\n [PT.MSN_InArticle_Ad_150x100]: {\r\n placementType: PT.MSN_InArticle_Ad_150x100,\r\n imageType: UAPImageType.Image150x100,\r\n aspectRatio: 1.5,\r\n aspectRatioStr: '150:100',\r\n previewHeight: 200,\r\n minSize: [300, 200],\r\n },\r\n [PT.MSN_Small_Headline_133x100]: {\r\n placementType: PT.MSN_Small_Headline_133x100,\r\n imageType: UAPImageType.Image133x100,\r\n aspectRatio: 1.33,\r\n aspectRatioStr: '133:100',\r\n previewHeight: 75,\r\n minSize: [100, 75],\r\n },\r\n [PT.Audience_Network_SquareImage_1x1]: {\r\n placementType: PT.Audience_Network_SquareImage_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 75,\r\n minSize: [300, 300],\r\n },\r\n\r\n // pmax\r\n [PT.PMax_MMA_LandscapeImage_191x100]: {\r\n placementType: PT.PMax_MMA_LandscapeImage_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 244,\r\n minSize: [703, 368],\r\n },\r\n [PT.PMax_MMA_WideImage_4x1]: {\r\n placementType: PT.PMax_MMA_WideImage_4x1,\r\n imageType: UAPImageType.Image4x1,\r\n aspectRatio: 4,\r\n aspectRatioStr: '4:1',\r\n previewHeight: 152,\r\n minSize: [608, 152],\r\n },\r\n [PT.PMax_MMA_VerticalImage_1x2]: {\r\n placementType: PT.PMax_MMA_VerticalImage_1x2,\r\n imageType: UAPImageType.Image1x2,\r\n aspectRatio: 0.5,\r\n aspectRatioStr: '1:2',\r\n previewHeight: 400,\r\n minSize: [470, 940],\r\n },\r\n [PT.PMax_Audience_Network_SquareImage_1x1]: {\r\n placementType: PT.PMax_Audience_Network_SquareImage_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 75,\r\n minSize: [300, 300],\r\n },\r\n [PT.PMax_Audience_Network_WideImage_191x100]: {\r\n placementType: PT.PMax_Audience_Network_WideImage_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 200,\r\n minSize: [703, 368],\r\n },\r\n [PT.PMax_MSN_InArticle_Ad_150x100]: {\r\n placementType: PT.PMax_MSN_InArticle_Ad_150x100,\r\n imageType: UAPImageType.Image150x100,\r\n aspectRatio: 1.5,\r\n aspectRatioStr: '150:100',\r\n previewHeight: 200,\r\n minSize: [300, 200],\r\n },\r\n [PT.PMax_MSN_Small_Headline_133x100]: {\r\n placementType: PT.PMax_MSN_Small_Headline_133x100,\r\n imageType: UAPImageType.Image133x100,\r\n aspectRatio: 1.33,\r\n aspectRatioStr: '133:100',\r\n previewHeight: 75,\r\n minSize: [100, 75],\r\n },\r\n [PT.PMax_Microsoft_Edge_Single_Carousel_178x100]: {\r\n placementType: PT.PMax_Microsoft_Edge_Single_Carousel_178x100,\r\n imageType: UAPImageType.Image178x100,\r\n aspectRatio: 1.78,\r\n aspectRatioStr: '178:100',\r\n previewHeight: 350,\r\n minSize: [624, 350],\r\n },\r\n [PT.PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100]: {\r\n placementType: PT.PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100,\r\n imageType: UAPImageType.Image201x100,\r\n aspectRatio: 2.01,\r\n aspectRatioStr: '201:100',\r\n previewHeight: 304,\r\n minSize: [612, 304],\r\n },\r\n [PT.PMax_MMAV2_MSN_Single_Carousel_169x100]: {\r\n placementType: PT.PMax_MMAV2_MSN_Single_Carousel_169x100,\r\n imageType: UAPImageType.Image169x100,\r\n aspectRatio: 1.69,\r\n aspectRatioStr: '169:100',\r\n previewHeight: 372,\r\n minSize: [628, 372],\r\n },\r\n [PT.PMax_MMAV2_MSN_Restoday_124x100]: {\r\n placementType: PT.PMax_MMAV2_MSN_Restoday_124x100,\r\n imageType: UAPImageType.Image124x100,\r\n aspectRatio: 1.24,\r\n aspectRatioStr: '124:100',\r\n previewHeight: 84,\r\n minSize: [104, 84],\r\n },\r\n [PT.PMax_MMAV2_MSN_Partner_Stripe_153x100]: {\r\n placementType: PT.PMax_MMAV2_MSN_Partner_Stripe_153x100,\r\n imageType: UAPImageType.Image153x100,\r\n aspectRatio: 1.53,\r\n aspectRatioStr: '153:100',\r\n previewHeight: 197,\r\n minSize: [306, 200],\r\n },\r\n [PT.PMax_MMAV2_MSN_River_191x100]: {\r\n placementType: PT.PMax_MMAV2_MSN_River_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 157,\r\n minSize: [300, 157],\r\n },\r\n\r\n //\r\n // MMA in MSAN V2\r\n [PT.MsanV2_Microsoft_Edge_Carouse_l201x100]: {\r\n placementType: PT.MsanV2_Microsoft_Edge_Carouse_l201x100,\r\n imageType: UAPImageType.Image201x100,\r\n aspectRatio: 2.01,\r\n aspectRatioStr: '201:100',\r\n previewHeight: 304,\r\n minSize: [612, 304],\r\n },\r\n [PT.MsanV2_MSAN_Banner_2x1]: {\r\n placementType: PT.MsanV2_MSAN_Banner_2x1,\r\n imageType: UAPImageType.Image200x100,\r\n aspectRatio: 2,\r\n aspectRatioStr: '2:1',\r\n previewHeight: 90,\r\n minSize: [200, 100],\r\n },\r\n [PT.MsanV2_MSAN_River_191x100]: {\r\n placementType: PT.MsanV2_MSAN_River_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 157,\r\n minSize: [300, 157],\r\n },\r\n [PT.MsanV2_MSN_Carousel_169x100]: {\r\n placementType: PT.MsanV2_MSN_Carousel_169x100,\r\n imageType: UAPImageType.Image169x100,\r\n aspectRatio: 1.69,\r\n aspectRatioStr: '169:100',\r\n previewHeight: 372,\r\n minSize: [628, 372],\r\n },\r\n [PT.MsanV2_MSN_Partner_Stripe_153x100]: {\r\n placementType: PT.MsanV2_MSN_Partner_Stripe_153x100,\r\n imageType: UAPImageType.Image153x100,\r\n aspectRatio: 1.53,\r\n aspectRatioStr: '153:100',\r\n previewHeight: 197,\r\n minSize: [306, 200],\r\n },\r\n [PT.MsanV2_MSN_Restoday_124x100]: {\r\n placementType: PT.MsanV2_MSN_Restoday_124x100,\r\n imageType: UAPImageType.Image124x100,\r\n aspectRatio: 1.24,\r\n aspectRatioStr: '124:100',\r\n previewHeight: 84,\r\n minSize: [104, 84],\r\n },\r\n [PT.MsanV2_MSAN_Rectangle_120x100]: {\r\n placementType: PT.MsanV2_MSAN_Rectangle_120x100,\r\n imageType: UAPImageType.Image120x100,\r\n aspectRatio: 1.2,\r\n aspectRatioStr: '120:100',\r\n previewHeight: 250,\r\n minSize: [300, 250],\r\n },\r\n [PT.MsanV2_Microsoft_Edge_Mobile_1x1]: {\r\n placementType: PT.MsanV2_Microsoft_Edge_Mobile_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 75,\r\n minSize: [114, 114],\r\n },\r\n [PT.PMax_Video]: {\r\n placementType: PT.PMax_Video,\r\n imageType: UAPVideoType.VideoMedia16X9,\r\n aspectRatio: 0.8,\r\n aspectRatioStr: '4:5',\r\n previewHeight: 220,\r\n minSize: [360, 640],\r\n },\r\n\r\n //\r\n // Boost\r\n [PT.Boost_Hero_Image_Carousel_200x100]: {\r\n placementType: PT.Boost_Hero_Image_Carousel_200x100,\r\n imageType: UAPImageType.Image200x100,\r\n aspectRatio: 2,\r\n aspectRatioStr: '2:1',\r\n previewHeight: 320,\r\n minSize: [200, 100],\r\n },\r\n [PT.Boost_Hero_Image_Carousel_122x100]: {\r\n placementType: PT.Boost_Hero_Image_Carousel_122x100,\r\n imageType: UAPImageType.Image122x100,\r\n aspectRatio: 1.225,\r\n aspectRatioStr: '122:100',\r\n previewHeight: 320,\r\n minSize: [450, 368],\r\n },\r\n [PT.Boost_Hero_Image_Carousel_159x100]: {\r\n placementType: PT.Boost_Hero_Image_Carousel_159x100,\r\n imageType: UAPImageType.Image159x100,\r\n aspectRatio: 1.59,\r\n aspectRatioStr: '159:100',\r\n previewHeight: 320,\r\n minSize: [585, 368],\r\n },\r\n [PT.Boost_Hero_Image_Carousel_180x100]: {\r\n placementType: PT.Boost_Hero_Image_Carousel_180x100,\r\n imageType: UAPImageType.Image180x100,\r\n aspectRatio: 1.805,\r\n aspectRatioStr: '180:100',\r\n previewHeight: 320,\r\n minSize: [664, 368],\r\n },\r\n [PT.Boost_Hero_Image_Carousel_233x100]: {\r\n placementType: PT.Boost_Hero_Image_Carousel_233x100,\r\n imageType: UAPImageType.Image233x100,\r\n aspectRatio: 2.33,\r\n aspectRatioStr: '233:100',\r\n previewHeight: 250,\r\n minSize: [703, 301],\r\n },\r\n [PT.Boost_Hero_Image_Carousel_320x100]: {\r\n placementType: PT.Boost_Hero_Image_Carousel_320x100,\r\n imageType: UAPImageType.Image320x100,\r\n aspectRatio: 3.20,\r\n aspectRatioStr: '320:100',\r\n previewHeight: 180,\r\n minSize: [703, 219],\r\n },\r\n [PT.Boost_Hero_Image_Carousel_57x100]: {\r\n placementType: PT.Boost_Hero_Image_Carousel_57x100,\r\n imageType: UAPImageType.Image57x100,\r\n aspectRatio: 0.57,\r\n aspectRatioStr: '57:100',\r\n previewHeight: 320,\r\n minSize: [210, 368],\r\n },\r\n [PT.Boost_Windows_Spotlight_191x100]: {\r\n placementType: PT.Boost_Windows_Spotlight_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.9,\r\n aspectRatioStr: '190:100',\r\n previewHeight: 400,\r\n minSize: [268, 140],\r\n },\r\n [PT.Boost_Discover_Card_1x1]: {\r\n placementType: PT.Boost_Discover_Card_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 250,\r\n minSize: [300, 300],\r\n },\r\n [PT.Boost_Start_Menu]: {\r\n placementType: PT.Boost_Start_Menu,\r\n },\r\n [PT.Boost_Action_Center]: {\r\n placementType: PT.Boost_Action_Center,\r\n logoHeight: 48,\r\n },\r\n [PT.Boost_Banner]: {\r\n placementType: PT.Boost_Banner,\r\n logoHeight: 20,\r\n },\r\n [PT.Boost_Prong1_Prong2_Feed_191x100]: {\r\n placementType: PT.Boost_Prong1_Prong2_Feed_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.914,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 140,\r\n minSize: [268, 140],\r\n },\r\n [PT.Boost_Coachmark_175x100]: {\r\n placementType: PT.Boost_Coachmark_175x100,\r\n imageType: UAPImageType.Image178x100,\r\n aspectRatio: 1.75,\r\n aspectRatioStr: '178:100',\r\n previewHeight: 160,\r\n minSize: [280, 160],\r\n },\r\n\r\n //\r\n // image extension\r\n [PT.ImgExt_Audience_Network_WideImage_191x100]: {\r\n placementType: PT.ImgExt_Audience_Network_WideImage_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 200,\r\n minSize: [703, 368],\r\n },\r\n [PT.ImgExt_Microsoft_Edge_Single_Carousel_178x100]: {\r\n placementType: PT.ImgExt_Microsoft_Edge_Single_Carousel_178x100,\r\n imageType: UAPImageType.Image178x100,\r\n aspectRatio: 1.78,\r\n aspectRatioStr: '178:100',\r\n previewHeight: 350,\r\n minSize: [624, 350],\r\n },\r\n [PT.ImgExt_Bing_Desktop_SingleImage_Extension_178x100]: {\r\n placementType: PT.ImgExt_Bing_Desktop_SingleImage_Extension_178x100,\r\n imageType: UAPImageType.Image178x100,\r\n aspectRatio: 1.78,\r\n aspectRatioStr: '178:100',\r\n previewHeight: 45,\r\n minSize: [624, 350],\r\n ignoreImageFitting: true,\r\n },\r\n [PT.ImgExt_Microsoft_Edge_Medium_Headline_172x100]: {\r\n placementType: PT.ImgExt_Microsoft_Edge_Medium_Headline_172x100,\r\n imageType: UAPImageType.Image172x100,\r\n aspectRatio: 1.72,\r\n aspectRatioStr: '172:100',\r\n previewHeight: 174,\r\n minSize: [300, 174],\r\n },\r\n [PT.ImgExt_MSN_Single_Carousel_169x100]: {\r\n placementType: PT.ImgExt_MSN_Single_Carousel_169x100,\r\n imageType: UAPImageType.Image169x100,\r\n aspectRatio: 1.69,\r\n aspectRatioStr: '169:100',\r\n previewHeight: 368,\r\n minSize: [622, 368],\r\n },\r\n [PT.ImgExt_MSN_Medium_Headline_155x100]: {\r\n placementType: PT.ImgExt_MSN_Medium_Headline_155x100,\r\n imageType: UAPImageType.Image155x100,\r\n aspectRatio: 1.55,\r\n aspectRatioStr: '155:100',\r\n previewHeight: 194,\r\n minSize: [300, 194],\r\n },\r\n [PT.ImgExt_MSN_InArticle_Ad_150x100]: {\r\n placementType: PT.ImgExt_MSN_InArticle_Ad_150x100,\r\n imageType: UAPImageType.Image150x100,\r\n aspectRatio: 1.50,\r\n aspectRatioStr: '150:100',\r\n previewHeight: 200,\r\n minSize: [300, 200],\r\n },\r\n [PT.ImgExt_MSN_Small_Headline_133x100]: {\r\n placementType: PT.ImgExt_MSN_Small_Headline_133x100,\r\n imageType: UAPImageType.Image133x100,\r\n aspectRatio: 1.33,\r\n aspectRatioStr: '133:100',\r\n previewHeight: 75,\r\n minSize: [100, 75],\r\n },\r\n [PT.ImgExt_Bing_Desktop_MultiImage_Extension_133x100]: {\r\n placementType: PT.ImgExt_Bing_Desktop_MultiImage_Extension_133x100,\r\n imageType: UAPImageType.Image133x100,\r\n aspectRatio: 1.33,\r\n aspectRatioStr: '133:100',\r\n previewHeight: 100,\r\n minSize: [100, 75],\r\n hasMultiImages: true,\r\n ignoreImageFitting: true,\r\n },\r\n [PT.ImgExt_Bing_Mobile_MultiImage_Extension_133x100]: {\r\n placementType: PT.ImgExt_Bing_Mobile_MultiImage_Extension_133x100,\r\n imageType: UAPImageType.Image133x100,\r\n aspectRatio: 1.33,\r\n aspectRatioStr: '133:100',\r\n previewHeight: 310,\r\n minSize: [100, 75],\r\n hasMultiImages: true,\r\n ignoreImageFitting: true,\r\n },\r\n [PT.ImgExt_Audience_Network_SquareImage_1x1]: {\r\n placementType: PT.ImgExt_Audience_Network_SquareImage_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 75,\r\n minSize: [300, 300],\r\n },\r\n [PT.ImgExt_MSN_Double_Carousel_93x100]: {\r\n placementType: PT.ImgExt_MSN_Double_Carousel_93x100,\r\n imageType: UAPImageType.Image93x100,\r\n aspectRatio: 0.93,\r\n aspectRatioStr: '93:100',\r\n previewHeight: 333,\r\n minSize: [311, 333],\r\n ignoreImageFitting: true,\r\n },\r\n [PT.ImgExt_MMAV2_MSN_River_191x100]: {\r\n placementType: PT.ImgExt_MMAV2_MSN_River_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 157,\r\n minSize: [300, 157],\r\n ignoreImageFitting: true,\r\n },\r\n [PT.ImgExt_MMAV2_MSN_Single_Carousel_169x100]: {\r\n placementType: PT.ImgExt_MMAV2_MSN_Single_Carousel_169x100,\r\n imageType: UAPImageType.Image169x100,\r\n aspectRatio: 1.69,\r\n aspectRatioStr: '169:100',\r\n previewHeight: 372,\r\n minSize: [628, 372],\r\n ignoreImageFitting: true,\r\n },\r\n [PT.ImgExt_MMAV2_MSN_Microsoft_Edge_Mobile_1x1]: {\r\n placementType: PT.ImgExt_MMAV2_MSN_Microsoft_Edge_Mobile_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 114,\r\n minSize: [114, 114],\r\n },\r\n\r\n // text ads\r\n [PT.Outlook_Text_Mobile]: {\r\n placementType: PT.Outlook_Text_Mobile,\r\n logoHeight: 32,\r\n },\r\n [PT.Outlook_Text_Web]: {\r\n placementType: PT.Outlook_Text_Web,\r\n logoHeight: 28,\r\n },\r\n [PT.Bing_Search_Mobile]: {\r\n placementType: PT.Bing_Search_Mobile,\r\n },\r\n [PT.Bing_Search_Desktop]: {\r\n placementType: PT.Bing_Search_Desktop,\r\n },\r\n [PT.Bing_Search_Text]: {\r\n placementType: PT.Bing_Search_Text,\r\n logoHeight: 37,\r\n },\r\n\r\n [PT.Responsive_MMA_WideImage_4x1]: {\r\n placementType: PT.Responsive_MMA_WideImage_4x1,\r\n imageType: UAPImageType.Image4x1,\r\n aspectRatio: 4,\r\n // used to compare ratio values, use string instead of number to avoid precision issue\r\n aspectRatioStr: '4:1', // refer to: private\\ad-creator-tools\\packages\\media-common-utils\\src\\aspect-ratio-config.js\r\n previewHeight: 152,\r\n minSize: [608, 152],\r\n },\r\n [PT.Responsive_MMA_LandscapeImage_191x100]: {\r\n placementType: PT.Responsive_MMA_LandscapeImage_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 244,\r\n minSize: [703, 368],\r\n },\r\n [PT.Responsive_MMA_SquareImage_1x1]: {\r\n placementType: PT.Responsive_MMA_SquareImage_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 400,\r\n minSize: [470, 470],\r\n },\r\n [PT.Responsive_MMA_VerticalImage_1x2]: {\r\n placementType: PT.Responsive_MMA_VerticalImage_1x2,\r\n imageType: UAPImageType.Image1x2,\r\n aspectRatio: 0.5,\r\n aspectRatioStr: '1:2',\r\n previewHeight: 400,\r\n minSize: [470, 940],\r\n },\r\n\r\n // MMA in MSAN\r\n [PT.Responsive_Audience_Network_WideImage_191x100]: {\r\n placementType: PT.Responsive_Audience_Network_WideImage_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 200,\r\n minSize: [703, 368],\r\n },\r\n [PT.Responsive_Microsoft_Edge_Single_Carousel_178x100]: {\r\n placementType: PT.Responsive_Microsoft_Edge_Single_Carousel_178x100,\r\n imageType: UAPImageType.Image178x100,\r\n aspectRatio: 1.78,\r\n aspectRatioStr: '178:100',\r\n previewHeight: 350,\r\n minSize: [624, 350],\r\n },\r\n [PT.Responsive_MSN_InArticle_Ad_150x100]: {\r\n placementType: PT.Responsive_MSN_InArticle_Ad_150x100,\r\n imageType: UAPImageType.Image150x100,\r\n aspectRatio: 1.5,\r\n aspectRatioStr: '150:100',\r\n previewHeight: 200,\r\n minSize: [300, 200],\r\n },\r\n [PT.Responsive_MSN_Small_Headline_133x100]: {\r\n placementType: PT.Responsive_MSN_Small_Headline_133x100,\r\n imageType: UAPImageType.Image133x100,\r\n aspectRatio: 1.33,\r\n aspectRatioStr: '133:100',\r\n previewHeight: 75,\r\n minSize: [100, 75],\r\n },\r\n [PT.Responsive_Audience_Network_SquareImage_1x1]: {\r\n placementType: PT.Responsive_Audience_Network_SquareImage_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 75,\r\n minSize: [300, 300],\r\n },\r\n\r\n // Responsive MMA in MSAN V2\r\n [PT.Responsive_MsanV2_Microsoft_Edge_Carouse_l201x100]: {\r\n placementType: PT.Responsive_MsanV2_Microsoft_Edge_Carouse_l201x100,\r\n imageType: UAPImageType.Image201x100,\r\n aspectRatio: 2.01,\r\n aspectRatioStr: '201:100',\r\n previewHeight: 304,\r\n minSize: [612, 304],\r\n },\r\n [PT.Responsive_MsanV2_MSAN_Banner_2x1]: {\r\n placementType: PT.Responsive_MsanV2_MSAN_Banner_2x1,\r\n imageType: UAPImageType.Image200x100,\r\n aspectRatio: 2,\r\n aspectRatioStr: '2:1',\r\n previewHeight: 90,\r\n minSize: [200, 100],\r\n },\r\n [PT.Responsive_MsanV2_MSAN_River_191x100]: {\r\n placementType: PT.Responsive_MsanV2_MSAN_River_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 157,\r\n minSize: [300, 157],\r\n },\r\n [PT.Responsive_MsanV2_MSN_Carousel_169x100]: {\r\n placementType: PT.Responsive_MsanV2_MSN_Carousel_169x100,\r\n imageType: UAPImageType.Image169x100,\r\n aspectRatio: 1.69,\r\n aspectRatioStr: '169:100',\r\n previewHeight: 372,\r\n minSize: [628, 372],\r\n },\r\n [PT.Responsive_MsanV2_MSN_Partner_Stripe_153x100]: {\r\n placementType: PT.Responsive_MsanV2_MSN_Partner_Stripe_153x100,\r\n imageType: UAPImageType.Image153x100,\r\n aspectRatio: 1.53,\r\n aspectRatioStr: '153:100',\r\n previewHeight: 197,\r\n minSize: [306, 200],\r\n },\r\n [PT.Responsive_MsanV2_MSN_Restoday_124x100]: {\r\n placementType: PT.Responsive_MsanV2_MSN_Restoday_124x100,\r\n imageType: UAPImageType.Image124x100,\r\n aspectRatio: 1.24,\r\n aspectRatioStr: '124:100',\r\n previewHeight: 84,\r\n minSize: [104, 84],\r\n },\r\n [PT.Responsive_MsanV2_MSAN_Rectangle_120x100]: {\r\n placementType: PT.Responsive_MsanV2_MSAN_Rectangle_120x100,\r\n imageType: UAPImageType.Image120x100,\r\n aspectRatio: 1.2,\r\n aspectRatioStr: '120:100',\r\n previewHeight: 250,\r\n minSize: [300, 250],\r\n },\r\n [PT.Responsive_MsanV2_Microsoft_Edge_Mobile_1x1]: {\r\n placementType: PT.Responsive_MsanV2_Microsoft_Edge_Mobile_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 75,\r\n minSize: [114, 114],\r\n },\r\n\r\n [PT.Responsive_PMax_MMA_LandscapeImage_191x100]: {\r\n placementType: PT.Responsive_PMax_MMA_LandscapeImage_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 244,\r\n minSize: [703, 368],\r\n },\r\n [PT.Responsive_PMax_MMA_WideImage_4x1]: {\r\n placementType: PT.Responsive_PMax_MMA_WideImage_4x1,\r\n imageType: UAPImageType.Image4x1,\r\n aspectRatio: 4,\r\n aspectRatioStr: '4:1',\r\n previewHeight: 152,\r\n minSize: [608, 152],\r\n },\r\n [PT.Responsive_PMax_MMA_VerticalImage_1x2]: {\r\n placementType: PT.Responsive_PMax_MMA_VerticalImage_1x2,\r\n imageType: UAPImageType.Image1x2,\r\n aspectRatio: 0.5,\r\n aspectRatioStr: '1:2',\r\n previewHeight: 400,\r\n minSize: [470, 940],\r\n },\r\n [PT.Responsive_PMax_Audience_Network_SquareImage_1x1]: {\r\n placementType: PT.Responsive_PMax_Audience_Network_SquareImage_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 75,\r\n minSize: [300, 300],\r\n },\r\n [PT.Responsive_PMax_Audience_Network_WideImage_191x100]: {\r\n placementType: PT.Responsive_PMax_Audience_Network_WideImage_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 200,\r\n minSize: [703, 368],\r\n },\r\n [PT.Responsive_PMax_MSN_InArticle_Ad_150x100]: {\r\n placementType: PT.Responsive_PMax_MSN_InArticle_Ad_150x100,\r\n imageType: UAPImageType.Image150x100,\r\n aspectRatio: 1.5,\r\n aspectRatioStr: '150:100',\r\n previewHeight: 200,\r\n minSize: [300, 200],\r\n },\r\n [PT.Responsive_PMax_MSN_Small_Headline_133x100]: {\r\n placementType: PT.Responsive_PMax_MSN_Small_Headline_133x100,\r\n imageType: UAPImageType.Image133x100,\r\n aspectRatio: 1.33,\r\n aspectRatioStr: '133:100',\r\n previewHeight: 75,\r\n minSize: [100, 75],\r\n },\r\n [PT.Responsive_PMax_Microsoft_Edge_Single_Carousel_178x100]: {\r\n placementType: PT.Responsive_PMax_Microsoft_Edge_Single_Carousel_178x100,\r\n imageType: UAPImageType.Image178x100,\r\n aspectRatio: 1.78,\r\n aspectRatioStr: '178:100',\r\n previewHeight: 350,\r\n minSize: [624, 350],\r\n },\r\n\r\n [PT.Responsive_Outlook_Text_Mobile]: {\r\n placementType: PT.Responsive_Outlook_Text_Mobile,\r\n logoHeight: 24,\r\n },\r\n [PT.Responsive_Outlook_Text_Web]: {\r\n placementType: PT.Responsive_Outlook_Text_Web,\r\n logoHeight: 24,\r\n },\r\n [PT.Responsive_Bing_Search_Text]: {\r\n placementType: PT.Responsive_Bing_Search_Text,\r\n },\r\n\r\n [PT.Responsive_PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100]: {\r\n placementType: PT.Responsive_PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100,\r\n imageType: UAPImageType.Image201x100,\r\n aspectRatio: 2.01,\r\n aspectRatioStr: '201:100',\r\n previewHeight: 304,\r\n minSize: [612, 304],\r\n },\r\n [PT.Responsive_PMax_MMAV2_MSN_Single_Carousel_169x100]: {\r\n placementType: PT.Responsive_PMax_MMAV2_MSN_Single_Carousel_169x100,\r\n imageType: UAPImageType.Image169x100,\r\n aspectRatio: 1.69,\r\n aspectRatioStr: '169:100',\r\n previewHeight: 372,\r\n minSize: [628, 372],\r\n },\r\n [PT.Responsive_PMax_MMAV2_MSN_Restoday_124x100]: {\r\n placementType: PT.Responsive_PMax_MMAV2_MSN_Restoday_124x100,\r\n imageType: UAPImageType.Image124x100,\r\n aspectRatio: 1.24,\r\n aspectRatioStr: '124:100',\r\n previewHeight: 84,\r\n minSize: [104, 84],\r\n },\r\n [PT.Responsive_PMax_MMAV2_MSN_Partner_Stripe_153x100]: {\r\n placementType: PT.Responsive_PMax_MMAV2_MSN_Partner_Stripe_153x100,\r\n imageType: UAPImageType.Image153x100,\r\n aspectRatio: 1.53,\r\n aspectRatioStr: '153:100',\r\n previewHeight: 197,\r\n minSize: [306, 200],\r\n },\r\n [PT.Responsive_PMax_MMAV2_MSN_River_191x100]: {\r\n placementType: PT.Responsive_PMax_MMAV2_MSN_River_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 157,\r\n minSize: [300, 157],\r\n },\r\n\r\n // responsive boost ads\r\n [PT.Responsive_Boost_Windows_Spotlight_191x100]: {\r\n placementType: PT.Responsive_Boost_Windows_Spotlight_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.9,\r\n aspectRatioStr: '190:100',\r\n previewHeight: 250, // use a smaller value for responsive version\r\n minSize: [268, 140],\r\n },\r\n [PT.Responsive_Boost_Discover_Card_1x1]: {\r\n placementType: PT.Responsive_Boost_Discover_Card_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 200,\r\n minSize: [300, 300],\r\n },\r\n [PT.Responsive_Boost_Start_Menu]: {\r\n placementType: PT.Responsive_Boost_Start_Menu,\r\n },\r\n [PT.Responsive_Boost_Action_Center]: {\r\n placementType: PT.Responsive_Boost_Action_Center,\r\n logoHeight: 48,\r\n },\r\n [PT.Responsive_Boost_Banner]: {\r\n placementType: PT.Responsive_Boost_Banner,\r\n logoHeight: 20,\r\n },\r\n [PT.Responsive_Boost_Prong1_Prong2_Feed_191x100]: {\r\n placementType: PT.Responsive_Boost_Prong1_Prong2_Feed_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.914,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 140,\r\n logoHeight: 16,\r\n imageBorderRadius: 8,\r\n minSize: [268, 140],\r\n },\r\n [PT.Responsive_Boost_Coachmark_175x100]: {\r\n placementType: PT.Responsive_Boost_Coachmark_175x100,\r\n imageType: UAPImageType.Image178x100,\r\n aspectRatio: 1.75,\r\n aspectRatioStr: '178:100',\r\n previewHeight: 160,\r\n minSize: [280, 160],\r\n },\r\n // LinkedIn\r\n [PT.LinkedIn_Single_Image_Desktop_Landscape]: {\r\n placementType: PT.LinkedIn_Single_Image_Desktop_Landscape,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 180,\r\n minSize: [640, 360],\r\n },\r\n [PT.LinkedIn_Single_Image_Mobile_Landscape]: {\r\n placementType: PT.LinkedIn_Single_Image_Mobile_Landscape,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 140,\r\n minSize: [640, 360],\r\n },\r\n [PT.LinkedIn_Single_Image_Medium_Rectangle_Landscape]: {\r\n placementType: PT.LinkedIn_Single_Image_Medium_Rectangle_Landscape,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 153,\r\n minSize: [640, 360],\r\n },\r\n [PT.LinkedIn_Single_Image_Mobile_Interstitial_Landscape]: {\r\n placementType: PT.LinkedIn_Single_Image_Mobile_Interstitial_Landscape,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 99,\r\n minSize: [640, 360],\r\n },\r\n [PT.LinkedIn_Single_Image_Native_Landscape]: {\r\n placementType: PT.LinkedIn_Single_Image_Native_Landscape,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 144,\r\n minSize: [640, 360],\r\n },\r\n\r\n [PT.LinkedIn_Single_Image_Desktop_Square]: {\r\n placementType: PT.LinkedIn_Single_Image_Desktop_Square,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 348,\r\n minSize: [360, 360],\r\n },\r\n [PT.LinkedIn_Single_Image_Mobile_Square]: {\r\n placementType: PT.LinkedIn_Single_Image_Mobile_Square,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 275,\r\n minSize: [360, 360],\r\n },\r\n [PT.LinkedIn_Single_Image_Medium_Rectangle_Square]: {\r\n placementType: PT.LinkedIn_Single_Image_Medium_Rectangle_Square,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 275,\r\n minSize: [360, 360],\r\n },\r\n [PT.LinkedIn_Single_Image_Mobile_Interstitial_Square]: {\r\n placementType: PT.LinkedIn_Single_Image_Mobile_Interstitial_Square,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 188,\r\n minSize: [360, 360],\r\n },\r\n [PT.LinkedIn_Single_Image_Native_Square]: {\r\n placementType: PT.LinkedIn_Single_Image_Native_Square,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 275,\r\n minSize: [360, 360],\r\n },\r\n\r\n [PT.LinkedIn_Single_Image_Mobile_Vertical]: {\r\n placementType: PT.LinkedIn_Single_Image_Mobile_Vertical,\r\n imageType: UAPImageType.Image4x5,\r\n aspectRatio: 0.8,\r\n aspectRatioStr: '4:5',\r\n previewHeight: 275,\r\n minSize: [360, 640],\r\n },\r\n [PT.LinkedIn_Single_Image_Medium_Rectangle_Vertical]: {\r\n placementType: PT.LinkedIn_Single_Image_Medium_Rectangle_Vertical,\r\n imageType: UAPImageType.Image4x5,\r\n aspectRatio: 0.8,\r\n aspectRatioStr: '4:5',\r\n previewHeight: 220,\r\n minSize: [360, 640],\r\n },\r\n [PT.LinkedIn_Single_Image_Mobile_Interstitial_Vertical]: {\r\n placementType: PT.LinkedIn_Single_Image_Mobile_Interstitial_Vertical,\r\n imageType: UAPImageType.Image4x5,\r\n aspectRatio: 0.8,\r\n aspectRatioStr: '4:5',\r\n previewHeight: 150,\r\n minSize: [360, 640],\r\n },\r\n [PT.LinkedIn_Single_Image_Native_Vertical]: {\r\n placementType: PT.LinkedIn_Single_Image_Native_Vertical,\r\n imageType: UAPImageType.Image4x5,\r\n aspectRatio: 0.8,\r\n aspectRatioStr: '4:5',\r\n previewHeight: 220,\r\n minSize: [360, 640],\r\n },\r\n [PT.Unified_App_Ads_Video_Horizontal]: {\r\n placementType: PT.Unified_App_Ads_Video_Horizontal,\r\n imageType: UAPVideoType.VideoMedia16X9,\r\n aspectRatio: 0.8,\r\n aspectRatioStr: '4:5',\r\n previewHeight: 220,\r\n minSize: [360, 640],\r\n },\r\n [PT.Unified_App_Ads_Bing_Search]: {\r\n placementType: PT.Unified_App_Ads_Bing_Search,\r\n imageType: UAPImageType.Image133x100,\r\n aspectRatio: 1.33,\r\n aspectRatioStr: '133:100',\r\n previewHeight: 100,\r\n minSize: [100, 75],\r\n },\r\n [PT.Unified_App_Ads_Bing_Search_Text]: {\r\n placementType: PT.Unified_App_Ads_Bing_Search_Text,\r\n },\r\n [PT.Unified_App_Ads_Causal_Games_Dimensions]: {\r\n placementType: PT.Unified_App_Ads_Causal_Games_Dimensions,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 250,\r\n minSize: [300, 300],\r\n },\r\n [PT.Unified_App_Ads_M365_Outlook]: {\r\n placementType: PT.Unified_App_Ads_M365_Outlook,\r\n },\r\n [PT.Unified_App_Ads_MSN_Display]: {\r\n placementType: PT.Unified_App_Ads_MSN_Display,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 180,\r\n minSize: [640, 360],\r\n },\r\n // TODO: add configs for vertical and square images\r\n};\r\n\r\nexport const UAPLPlacementMetaListV2 /* : Record */ = {\r\n ...UAPLPlacementMetaList,\r\n [PT.MsanV2_Microsoft_Edge_Mobile_1x1]: {\r\n placementType: PT.MsanV2_Microsoft_Edge_Mobile_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 114,\r\n minSize: [114, 114],\r\n },\r\n [PT.MsanV2_MSN_Partner_Stripe_153x100]: {\r\n placementType: PT.MsanV2_MSN_Partner_Stripe_153x100,\r\n imageType: UAPImageType.Image153x100,\r\n aspectRatio: 1.53,\r\n aspectRatioStr: '153:100',\r\n previewHeight: 200,\r\n minSize: [306, 200],\r\n },\r\n [PT.MsanV2_MSAN_Banner_2x1]: {\r\n placementType: PT.MsanV2_MSAN_Banner_2x1,\r\n imageType: UAPImageType.Image200x100,\r\n aspectRatio: 2,\r\n aspectRatioStr: '2:1',\r\n previewHeight: 100,\r\n minSize: [200, 100],\r\n },\r\n [PT.PMax_MMAV2_MSN_Partner_Stripe_153x100]: {\r\n placementType: PT.PMax_MMAV2_MSN_Partner_Stripe_153x100,\r\n imageType: UAPImageType.Image153x100,\r\n aspectRatio: 1.53,\r\n aspectRatioStr: '153:100',\r\n previewHeight: 200,\r\n minSize: [306, 200],\r\n },\r\n [PT.PMax_MMAV2_Microsoft_Edge_Mobile_1x1]: {\r\n placementType: PT.PMax_MMAV2_Microsoft_Edge_Mobile_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 114,\r\n minSize: [114, 114],\r\n },\r\n [PT.Responsive_MsanV2_Microsoft_Edge_Mobile_1x1]: {\r\n placementType: PT.Responsive_MsanV2_Microsoft_Edge_Mobile_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 114,\r\n minSize: [114, 114],\r\n },\r\n [PT.Responsive_MsanV2_MSN_Partner_Stripe_153x100]: {\r\n placementType: PT.Responsive_MsanV2_MSN_Partner_Stripe_153x100,\r\n imageType: UAPImageType.Image153x100,\r\n aspectRatio: 1.53,\r\n aspectRatioStr: '153:100',\r\n previewHeight: 200,\r\n minSize: [306, 200],\r\n },\r\n [PT.Responsive_MsanV2_MSAN_Banner_2x1]: {\r\n placementType: PT.Responsive_MsanV2_MSAN_Banner_2x1,\r\n imageType: UAPImageType.Image200x100,\r\n aspectRatio: 2,\r\n aspectRatioStr: '2:1',\r\n previewHeight: 100,\r\n minSize: [200, 100],\r\n },\r\n [PT.Responsive_PMax_MMAV2_MSN_Partner_Stripe_153x100]: {\r\n placementType: PT.Responsive_PMax_MMAV2_MSN_Partner_Stripe_153x100,\r\n imageType: UAPImageType.Image153x100,\r\n aspectRatio: 1.53,\r\n aspectRatioStr: '153:100',\r\n previewHeight: 200,\r\n minSize: [306, 200],\r\n },\r\n [PT.Responsive_PMax_MMAV2_Microsoft_Edge_Mobile_1x1]: {\r\n placementType: PT.Responsive_PMax_MMAV2_Microsoft_Edge_Mobile_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 114,\r\n minSize: [114, 114],\r\n },\r\n};\r\n\r\nexport const getPlacementListMetaData = (placementTypes, isAdPreviewRefreshEnabled) => {\r\n const PlacementMetaList = isAdPreviewRefreshEnabled ? UAPLPlacementMetaListV2 : UAPLPlacementMetaList;\r\n const types = _.compact(placementTypes);\r\n\r\n if (_.isEmpty(types)) {\r\n return [];\r\n }\r\n const ret = _.map(\r\n types,\r\n placementType => PlacementMetaList[placementType]\r\n );\r\n return ret;\r\n};\r\n\r\nexport const getPlacementListMetaDataByImageType = (imageTypes) => {\r\n const types = _.compact(imageTypes);\r\n if (_.isEmpty(types)) {\r\n return [];\r\n }\r\n const placementMetaList = Object.values(UAPLPlacementMetaList);\r\n const ret = _.chain(types)\r\n .map(imgType => _.filter(placementMetaList, ({ imageType }) => imgType && imageType && (imageType.toLowerCase() === imgType.toLowerCase())))\r\n .flatten()\r\n .compact()\r\n .uniq()\r\n .value();\r\n return ret;\r\n};\r\n","import _ from 'underscore';\r\n\r\nfunction mergePlacementList(prevPlacementList, curPlacementList) {\r\n if (!prevPlacementList && !curPlacementList) {\r\n return [false, prevPlacementList];\r\n }\r\n if (!prevPlacementList || !curPlacementList) {\r\n return [true, curPlacementList];\r\n }\r\n\r\n let changed = prevPlacementList.length !== curPlacementList.length;\r\n const newPlacementList = [];\r\n for (let i = 0; i < curPlacementList.length; i += 1) {\r\n const curPlacement = curPlacementList[i];\r\n if (curPlacement) {\r\n const prevPlacement = _.find(prevPlacementList, ({ placementMeta }) => placementMeta.placementType === curPlacement.placementMeta.placementType);\r\n if (prevPlacement && _.isEqual(prevPlacement, curPlacement)) {\r\n // find same placement\r\n newPlacementList.push(prevPlacement);\r\n } else {\r\n newPlacementList.push(curPlacement);\r\n changed = true;\r\n }\r\n }\r\n }\r\n\r\n return [\r\n changed,\r\n changed ? newPlacementList : prevPlacementList,\r\n ];\r\n}\r\n\r\nfunction mergePlacementSets(prevPlacementSets, curPlacementSets) {\r\n if (!prevPlacementSets && !curPlacementSets) {\r\n return [false, prevPlacementSets];\r\n }\r\n if (!prevPlacementSets || !curPlacementSets) {\r\n return [true, curPlacementSets];\r\n }\r\n\r\n let changed = prevPlacementSets.length !== curPlacementSets.length;\r\n const newPlacementSets = [];\r\n for (let i = 0; i < curPlacementSets.length; i += 1) {\r\n const curPlacementSet = curPlacementSets[i];\r\n const prevPlacementSet = _.find(prevPlacementSets, ({ name }) => name === curPlacementSet.name);\r\n if (prevPlacementSet) {\r\n const [isListChanged, newPlacementList] = mergePlacementList(prevPlacementSet.placementList, curPlacementSet.placementList);\r\n newPlacementSets.push(isListChanged ? { ...curPlacementSet, placementList: newPlacementList } : prevPlacementSet);\r\n changed = changed || isListChanged;\r\n } else {\r\n newPlacementSets.push(curPlacementSet);\r\n changed = true;\r\n }\r\n }\r\n\r\n return [changed, changed ? newPlacementSets : prevPlacementSets];\r\n}\r\n\r\nfunction mergePreviewImageAndPlacementSets(prevImageAndPlacementSets, curImageAndPlacementSets) {\r\n if (!prevImageAndPlacementSets && !curImageAndPlacementSets) {\r\n return [false, prevImageAndPlacementSets];\r\n }\r\n if (!prevImageAndPlacementSets || !curImageAndPlacementSets) {\r\n return [true, curImageAndPlacementSets];\r\n }\r\n if (prevImageAndPlacementSets === curImageAndPlacementSets) {\r\n return [false, prevImageAndPlacementSets];\r\n }\r\n\r\n let changed = prevImageAndPlacementSets.length !== curImageAndPlacementSets.length;\r\n const prevImageAndPlacementSetsCopy = [...prevImageAndPlacementSets];\r\n const newImageAndPlacementSets = [];\r\n for (let i = 0; i < curImageAndPlacementSets.length; i += 1) {\r\n const curImageAndPlacementSet = curImageAndPlacementSets[i];\r\n const idx = _.findIndex(prevImageAndPlacementSetsCopy, ({ previewImage }) =>\r\n previewImage.imageMeta && curImageAndPlacementSet.previewImage.imageMeta\r\n && (previewImage.imageMeta.url === curImageAndPlacementSet.previewImage.imageMeta.url));\r\n if (idx >= 0) {\r\n const prevImageAndPlacementSet = prevImageAndPlacementSetsCopy[idx];\r\n const { previewImage: prevPreviewImage, placementSets: prevPlacementSets } = prevImageAndPlacementSet;\r\n const { previewImage: curPreviewImage, placementSets: curPlacementSets } = curImageAndPlacementSet;\r\n\r\n const isPreviewImageChanged = !_.isEqual(prevPreviewImage, curPreviewImage);\r\n const [isPlacementSetsChanged, newPlacementSets] = mergePlacementSets(prevPlacementSets, curPlacementSets);\r\n newImageAndPlacementSets.push(isPreviewImageChanged || isPlacementSetsChanged ? { previewImage: curPreviewImage, placementSets: newPlacementSets } : prevImageAndPlacementSet);\r\n changed = changed || isPlacementSetsChanged || isPreviewImageChanged;\r\n\r\n // remove the matched item\r\n prevImageAndPlacementSetsCopy.splice(idx, 1);\r\n } else {\r\n newImageAndPlacementSets.push(curImageAndPlacementSet);\r\n changed = true;\r\n }\r\n }\r\n\r\n // there are some remaining items in prevImageAndPlacementSetsCopy, which are not in curImageAndPlacementSets\r\n changed = changed || prevImageAndPlacementSetsCopy.length > 0;\r\n\r\n return [changed, changed ? newImageAndPlacementSets : prevImageAndPlacementSets];\r\n}\r\n\r\n// merge reducer states, try to keep previous sub states if values are not changed\r\nexport function mergeReducerStates(prevState, curState) {\r\n if (!prevState && !curState) {\r\n return [false, prevState];\r\n }\r\n\r\n if (!prevState || !curState) {\r\n return [true, curState];\r\n }\r\n\r\n const {\r\n previewImageListState: prevPreviewState,\r\n hasDataChanged: prevHasDatachanged,\r\n activeImageIndices: prevActiveImageIndices,\r\n } = prevState;\r\n\r\n const {\r\n previewImageListState: curPreviewState,\r\n hasDataChanged: curHasDatachanged,\r\n activeImageIndices: curActiveImageIndices,\r\n } = curState;\r\n\r\n const [isPreviewStateChanged, newPreviewState] = mergePreviewImageAndPlacementSets(prevPreviewState, curPreviewState);\r\n const isActiveImageIndicesChanged = !_.isEqual(prevActiveImageIndices, curActiveImageIndices);\r\n const changed = prevHasDatachanged !== curHasDatachanged || isActiveImageIndicesChanged || isPreviewStateChanged;\r\n\r\n return [\r\n changed,\r\n changed ? {\r\n previewImageListState: isPreviewStateChanged ? newPreviewState : prevPreviewState,\r\n hasDataChanged: curHasDatachanged,\r\n activeImageIndices: isActiveImageIndicesChanged ? curActiveImageIndices : prevActiveImageIndices,\r\n } : prevState,\r\n ];\r\n}\r\n","import _ from 'underscore';\r\nimport { useCallback, useReducer } from 'react';\r\n\r\nimport { mergeReducerStates } from './merge-reducer-state-util';\r\n\r\nconst AdPreviewModelActions = {\r\n ACTION_TYPE_RESET_STATE: 'ACTION_TYPE_RESET_STATE',\r\n ACTION_TYPE_UPDATE_IMAGE_CROPPING: 'ACTION_TYPE_UPDATE_IMAGE_CROPPING',\r\n ACTION_TYPE_UPDATE_PLACEMENT_CROPPING: 'ACTION_TYPE_UPDATE_PLACEMENT_CROPPING',\r\n ACTION_TYPE_UPDATE_PLACEMENT_CROPPING_BY_IMAGE_TYPE: 'ACTION_TYPE_UPDATE_PLACEMENT_CROPPING_BY_IMAGE_TYPE',\r\n ACTION_TYPE_SET_ACTIVE_IMAGES: 'ACTION_TYPE_SET_ACTIVE_IMAGES',\r\n};\r\n\r\n// interface TAdPreviewReducerState {\r\n// // there could be multiple images, each image has multiple placementSets, each placement set has a unique name\r\n// // and each placement set has multiple placements identifyed by placement type\r\n// // to find a placement, the path is [imageIndex][placementSetName][placementType]\r\n// previewImageListState: Array | undefined | null;\r\n// hasDataChanged: boolean | undefined | null;\r\n//\r\n// The activeImageIndices is used to support multiple image scenarios (for both Multi-Image placements and Multiple images to preview mentioned above).\r\n// It is an array because for multi-image placements, there may be more than one active image.\r\n// If this value is not set, all the images are considered as 'active'.\r\n// activeImageIndices: Array | undefined | null;\r\n// }\r\n\r\nconst ADPREVIEW_INIT_STATE /* : TAdPreviewReducerState */ = {\r\n previewImageListState: null,\r\n hasDataChanged: false,\r\n activeImageIndices: null,\r\n};\r\n\r\n// update crop settings for placement specified by placement-set name and placement-type\r\nconst updatePlacementCorpSettings = (\r\n imageAndPlacementSets, // : TImageAndPlacementSets,\r\n placementSetName, // : string,\r\n placementType, // : EPlacementType,\r\n cropping // : TCropRect\r\n) /* : TImageAndPlacementSets */ => {\r\n const { previewImage, placementSets } = imageAndPlacementSets || {};\r\n let changed = false;\r\n // find the placement-set to update\r\n const newPlacementSets = _.map(placementSets, (placementSet) => {\r\n const { name, placementList } = placementSet || {};\r\n if (name === placementSetName) {\r\n // find the placement to update\r\n const newPlacementList = _.map(placementList, (placement) => {\r\n if (placement.placementMeta.placementType === placementType) {\r\n // found the placement to update\r\n if (!_.isEqual(placement.placementCropping, cropping)) {\r\n changed = true;\r\n return {\r\n ...placement, placementCropping: cropping, hasCroppingChanged: true, expandedPlacementCropping: undefined, effectiveImageUrl: undefined, effectiveImageWidth: undefined, effectiveImageHeight: undefined,\r\n };\r\n }\r\n }\r\n return placement;\r\n });\r\n // return a new placement-set with updated placement list\r\n return changed ? { name, placementList: newPlacementList } : placementSet;\r\n }\r\n return placementSet;\r\n });\r\n\r\n return changed ? { previewImage, placementSets: newPlacementSets } : imageAndPlacementSets;\r\n};\r\n\r\n// find all placements with the same image type, and update their crop settings\r\nconst updatePlacementCorpSettingsByImageType = (\r\n imageAndPlacementSets, // : TImageAndPlacementSets,\r\n placementSetName, // : string,\r\n imageType, // : EImageType,\r\n cropping // : TCropRect\r\n) /* : TImageAndPlacementSets */ => {\r\n const { previewImage, placementSets } = imageAndPlacementSets || {};\r\n let changed = false;\r\n // find the placement-set to update\r\n const newPlacementSets = _.map(placementSets, (placementSet) => {\r\n const { name, placementList } = placementSet || {};\r\n if (name === placementSetName) {\r\n // find the placement to update\r\n const newPlacementList = _.map(placementList, (placement) => {\r\n if (placement.placementMeta.imageType === imageType) {\r\n // found the placement to update\r\n if (!_.isEqual(placement.placementCropping, cropping)) {\r\n changed = true;\r\n return {\r\n ...placement, placementCropping: cropping, hasCroppingChanged: true, expandedPlacementCropping: undefined, effectiveImageUrl: undefined, effectiveImageWidth: undefined, effectiveImageHeight: undefined,\r\n };\r\n }\r\n }\r\n return placement;\r\n });\r\n // return new placement-set with updated placement list\r\n return changed ? { name, placementList: newPlacementList } : placementSet;\r\n }\r\n return placementSet;\r\n });\r\n return changed ? { previewImage, placementSets: newPlacementSets } : imageAndPlacementSets;\r\n};\r\n\r\nfunction adPreviewReducer(state, action) {\r\n const { type: actionType, ...actionData } = action;\r\n switch (actionType) {\r\n case AdPreviewModelActions.ACTION_TYPE_RESET_STATE: {\r\n const { newState, forceToReset } = actionData;\r\n if (forceToReset) {\r\n const { previewImageListState, activeImageIndices, hasDataChanged } = newState || {};\r\n const resetState = {\r\n previewImageListState,\r\n hasDataChanged: hasDataChanged || false, // reset to false\r\n activeImageIndices,\r\n };\r\n return resetState;\r\n }\r\n\r\n const [changed, mergedState] = mergeReducerStates(state, newState);\r\n return !changed ? state : {\r\n ...mergedState,\r\n hasDataChanged: mergedState.hasDataChanged || false,\r\n };\r\n }\r\n\r\n case AdPreviewModelActions.ACTION_TYPE_UPDATE_IMAGE_CROPPING: {\r\n const { newImageAndPlacementSets, imageIndex } = actionData;\r\n const { previewImageListState } = state || {};\r\n if (previewImageListState && previewImageListState[imageIndex]) {\r\n const newState = [...previewImageListState];\r\n newState[imageIndex] = newImageAndPlacementSets;\r\n // mark the cropping data changed\r\n if (newState[imageIndex] && newState[imageIndex].previewImage) {\r\n newState[imageIndex].previewImage.hasCroppingChanged = true;\r\n }\r\n return {\r\n previewImageListState: newState,\r\n hasDataChanged: true,\r\n };\r\n }\r\n return state;\r\n }\r\n\r\n case AdPreviewModelActions.ACTION_TYPE_UPDATE_PLACEMENT_CROPPING: {\r\n const {\r\n placementType, cropping, imageIndex, placementSetName,\r\n } = actionData;\r\n const { previewImageListState: curState } = state || {};\r\n if (curState && curState[imageIndex]) {\r\n const imageAndPlacementSets = curState[imageIndex];\r\n const newImageAndPlacementSets = updatePlacementCorpSettings(imageAndPlacementSets, placementSetName, placementType, cropping);\r\n // check if data changed\r\n if (imageAndPlacementSets !== newImageAndPlacementSets) {\r\n const newState = [...curState];\r\n newState.splice(imageIndex, 1, newImageAndPlacementSets);\r\n return { previewImageListState: newState, hasDataChanged: true };\r\n }\r\n }\r\n return state;\r\n }\r\n\r\n case AdPreviewModelActions.ACTION_TYPE_UPDATE_PLACEMENT_CROPPING_BY_IMAGE_TYPE: {\r\n const {\r\n imageType, cropping, imageIndex, placementSetName,\r\n } = actionData;\r\n const { previewImageListState: curState } = state || {};\r\n if (curState && curState[imageIndex]) {\r\n const imageAndPlacementSets = curState[imageIndex];\r\n const newImageAndPlacementSets = updatePlacementCorpSettingsByImageType(imageAndPlacementSets, placementSetName, imageType, cropping);\r\n // check if data changed\r\n if (imageAndPlacementSets !== newImageAndPlacementSets) {\r\n const newPreviewImages = [...curState];\r\n newPreviewImages[imageIndex] = newImageAndPlacementSets;\r\n return { previewImageListState: newPreviewImages, hasDataChanged: true };\r\n }\r\n }\r\n return state;\r\n }\r\n\r\n case AdPreviewModelActions.ACTION_TYPE_SET_ACTIVE_IMAGES: {\r\n const { activeImageIndices } = actionData;\r\n const { previewImageListState, activeImageIndices: curActiveImageIndices } = state || {};\r\n const newIndices = _.isEmpty(previewImageListState) ? [] : _.chain(activeImageIndices)\r\n .uniq()\r\n .sortBy()\r\n .filter(i => _.isNumber(i) && i >= 0 && i < previewImageListState.length)\r\n .value();\r\n if (!_.isEqual(newIndices, curActiveImageIndices)) {\r\n return { ...state, activeImageIndices: newIndices };\r\n }\r\n return state;\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport const useAdPreviewReducer = (initState = ADPREVIEW_INIT_STATE) => {\r\n const [adPreviewModel, dispatch] = useReducer(adPreviewReducer, initState);\r\n const { previewImageListState, hasDataChanged, activeImageIndices } = adPreviewModel || {};\r\n\r\n // newState: {\r\n // previewImageListState: Array | undefined | null,\r\n // activeImageIndices: Array | undefined | null,\r\n // hasDataChanged: boolean | undefined | null\r\n // }\r\n const resetReducerStates = useCallback((newState, forceToReset = false) => {\r\n dispatch({ type: AdPreviewModelActions.ACTION_TYPE_RESET_STATE, newState, forceToReset });\r\n }, []);\r\n\r\n const updateImageCropping = useCallback((newImageAndPlacementSets /* : TImageAndPlacementSets */, imageIndex = 0) => {\r\n dispatch({ type: AdPreviewModelActions.ACTION_TYPE_UPDATE_IMAGE_CROPPING, newImageAndPlacementSets, imageIndex });\r\n }, []);\r\n\r\n const updatePlacementCropping = useCallback((params) => {\r\n const {\r\n imageIndex = 0, placementSetName, placementType, cropping,\r\n } = params || {};\r\n dispatch({\r\n type: AdPreviewModelActions.ACTION_TYPE_UPDATE_PLACEMENT_CROPPING, placementType, cropping, imageIndex, placementSetName,\r\n });\r\n }, []);\r\n\r\n const updatePlacementCroppingByImageType = useCallback((params) => {\r\n const {\r\n imageIndex = 0, placementSetName, imageType, cropping,\r\n } = params || {};\r\n dispatch({\r\n type: AdPreviewModelActions.ACTION_TYPE_UPDATE_PLACEMENT_CROPPING_BY_IMAGE_TYPE, imageType, cropping, imageIndex, placementSetName,\r\n });\r\n }, []);\r\n\r\n const setActiveImageIndices = useCallback((...indices) => {\r\n dispatch({ type: AdPreviewModelActions.ACTION_TYPE_SET_ACTIVE_IMAGES, activeImageIndices: indices });\r\n }, []);\r\n\r\n return {\r\n previewImageListState,\r\n hasDataChanged,\r\n activeImageIndices,\r\n resetReducerStates,\r\n updateImageCropping,\r\n updatePlacementCropping,\r\n updatePlacementCroppingByImageType,\r\n setActiveImageIndices,\r\n };\r\n};\r\n","// copied from private/component-react/packages/image-experience-utils/src/get-cropped-image.js\r\nimport _ from 'underscore';\r\n\r\nconst AspectRatioTolerance = 0.01;\r\n\r\n// Attention!!: DO NOT touch this algorithm unless sync with MT/DE.\r\n// This logic is also implemented on DE side.\r\n// originalBoxToCrop { SourceWidth, SourceHeight, SourceX, SourceY }\r\nexport const getCenterCroppedSettings = (originalBoxToCrop, aspectRatio) => {\r\n const {\r\n SourceWidth: centerContainerWidth,\r\n SourceHeight: centerContainerHeight,\r\n } = originalBoxToCrop;\r\n const originalRatio = centerContainerWidth / centerContainerHeight;\r\n const cropSettings = _.defaults({}, originalBoxToCrop);\r\n\r\n if (Math.abs(originalRatio - aspectRatio) > AspectRatioTolerance) {\r\n // If the target ratio is narrower than the original\r\n if (aspectRatio <= originalRatio) {\r\n // Use the same height, get the width from the original height\r\n const scaledSourceWidth = Math.round(cropSettings.SourceHeight * aspectRatio);\r\n\r\n // Since we use the full height, Y is still 0\r\n // Make sure we crop the middle section horionzontally\r\n const centerX =\r\n Math.round((cropSettings.SourceWidth - scaledSourceWidth) / 2) + cropSettings.SourceX;\r\n\r\n cropSettings.SourceWidth = scaledSourceWidth;\r\n cropSettings.SourceX = centerX;\r\n } else {\r\n // Use the same width, get the height from the original width\r\n const scaledSourceHeight = Math.round(cropSettings.SourceWidth / aspectRatio);\r\n\r\n // We use full width, X is 0.\r\n // Make sure we crop the middle section vertically\r\n const middleY = Math.round((\r\n cropSettings.SourceHeight - scaledSourceHeight) / 2) + cropSettings.SourceY;\r\n\r\n cropSettings.SourceHeight = scaledSourceHeight;\r\n cropSettings.SourceY = middleY;\r\n }\r\n }\r\n\r\n return cropSettings;\r\n};\r\n\r\n// todo: handle included/default option\r\nexport const getCentralCroppedPlacements = ({\r\n imageMeta,\r\n imageCropping,\r\n placementMetaList, // Array\r\n useOriginalImageSize = false,\r\n}) => {\r\n const width = useOriginalImageSize ? imageMeta.originalWidth : imageMeta.width;\r\n const height = useOriginalImageSize ? imageMeta.originalHeight : imageMeta.height;\r\n const maxCropBox = imageCropping || {\r\n SourceWidth: width,\r\n SourceHeight: height,\r\n SourceX: 0,\r\n SourceY: 0,\r\n };\r\n const aspectRatios = _.pluck(placementMetaList, 'aspectRatio');\r\n const placementCroppings = _.map(aspectRatios, (ratio) => {\r\n const cropSettings = getCenterCroppedSettings(maxCropBox, ratio);\r\n return {\r\n placementCropping: cropSettings,\r\n };\r\n });\r\n return placementCroppings;\r\n};\r\n\r\nexport const getCentralCroppedPlacementsFromOrigialImage = (imageMeta, aspectRatios) =>\r\n getCenterCroppedSettings(imageMeta, aspectRatios);\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { useEffect, useCallback, useMemo, useRef, useContext } from 'react';\r\nimport { PermissionsContext } from '@bingads-webui-react/hoc-with-permissions';\r\n\r\nimport { loadImageByUrl } from './load-image-by-url';\r\nimport { getPlacementListMetaData } from './placement-meta-list';\r\nimport { useAdPreviewReducer } from './use-ad-preview-reducer';\r\n\r\nimport { getCentralCroppedPlacements } from './get-central-crop-settings';\r\n\r\nexport const pickSingleImageFromImageList = (images) => {\r\n // try to find the included placement first\r\n let selectedImage = _.find(images, img => img && img.isPlacementIncluded && img.imageMeta);\r\n // try to find a valid image if no placement is included\r\n if (!selectedImage) {\r\n selectedImage = _.find(images, img => img && img.imageMeta);\r\n }\r\n if (!selectedImage) {\r\n selectedImage = _.first(images);\r\n }\r\n return selectedImage;\r\n};\r\n\r\n// const getImageInfo = (image: string | TImageParam) : Promise<{\r\n// imageMeta: TPreviewImageMeta,\r\n// imageCropping: TCropRect | undefined | null,\r\n// manualPlacementCroppings: Array | undefined | null,\r\n// }> => {\r\nconst getImageInfo = (image, onError) => {\r\n // if image is url, load it to get image info\r\n const pLoadedImage = _.isString(image)\r\n ? loadImageByUrl(image).then(({ src, width, height }) => ({\r\n url: src, width, height, originalUrl: src, originalWidth: width, originalHeight: height,\r\n }))\r\n : Promise.resolve(image);\r\n\r\n const p$ret = pLoadedImage.then((loadedImage) => {\r\n const {\r\n id, url, width, height, originalUrl, originalWidth, originalHeight, imageCropping, placementsCropping, roiInfo, expandedMeta,\r\n } = loadedImage || {};\r\n\r\n // get image meta info, including crop settings\r\n const imageMeta = {\r\n id, url, width, height, originalUrl, originalWidth, originalHeight, roiInfo, expandedMeta,\r\n };\r\n return { imageMeta, imageCropping, manualPlacementCroppings: placementsCropping };\r\n }).catch((err) => {\r\n if (onError) {\r\n onError(err);\r\n }\r\n return null;\r\n });\r\n\r\n return p$ret;\r\n};\r\n\r\n// function getPlacementSet(\r\n// imageMeta: TPreviewImageMeta,\r\n// imageCropping: TCropRect | undefined | null,\r\n// manualPlacementCroppings: Array | undefined | null,\r\n// placementSetParam: TPlacementSetParam\r\n// ) : Promise {\r\nfunction getPlacementSet(imageMeta, imageCropping, manualPlacementCroppings, placementSetParam, isAdPreviewRefreshEnabled) {\r\n //\r\n const { placementSetName, placementTypes, getDefaultPlacementsCropping = getCentralCroppedPlacements } = placementSetParam;\r\n\r\n // get placements' meta info (predefined constants) for selected placements\r\n const placementMetaList = getPlacementListMetaData(placementTypes, isAdPreviewRefreshEnabled);\r\n\r\n // get default placement crop settings, it could be async or sync call\r\n return Promise.resolve(getDefaultPlacementsCropping({ imageMeta, /* maxCropBox */imageCropping, placementMetaList }))\r\n .then((defaultCroppingList = []) => {\r\n // merge placements meta info with crop settings (default or manual placement crop settings)\r\n const placementList = _.map(placementMetaList, (placementMeta, index) => {\r\n // manual placement crop settings (set by users) on UI take higher priority\r\n const { cropping: manualCropping } = _.find(manualPlacementCroppings, item => item.placementType === placementMeta.placementType) || {};\r\n const {\r\n placementCropping, expandedImageHeight, expandedImageWidth, expandedImageUrl, expandedImageCropSettings,\r\n } = defaultCroppingList[index] || {};\r\n return ({\r\n placementMeta,\r\n placementCropping: manualCropping || placementCropping,\r\n\r\n // set initial value to true if there is manual cropping for this placement\r\n // the purpose is to inlucde this placement when sending crop MT api request\r\n hasCroppingChanged: !!manualCropping,\r\n expandedImageUrl: manualCropping ? undefined : expandedImageUrl,\r\n expandedImageHeight: manualCropping ? undefined : expandedImageHeight,\r\n expandedImageWidth: manualCropping ? undefined : expandedImageWidth,\r\n expandedImageCropSettings: manualCropping ? undefined : expandedImageCropSettings,\r\n });\r\n });\r\n return { name: placementSetName, placementList };\r\n });\r\n}\r\n\r\n// function getImageAndPlacementSetList(\r\n// imageMeta: TPreviewImageMeta,\r\n// imageCropping: TCropRect | undefined | null,\r\n// manualPlacementCroppings: Array | undefined | null,\r\n// placementSetsParam: Array\r\n// ) : Promise {\r\nfunction getImageAndPlacementSetList({\r\n imageMeta, imageCropping, manualPlacementCroppings, placementSetsParam, isAdPreviewRefreshEnabled,\r\n}) {\r\n const ret = Promise.map(\r\n placementSetsParam,\r\n param => getPlacementSet(imageMeta, imageCropping, manualPlacementCroppings, param, isAdPreviewRefreshEnabled),\r\n { concurrency: 5 }\r\n ).then((placementSets) => {\r\n const result = {\r\n previewImage: {\r\n imageMeta, // todo: update imageMeta.width & height using image cropping? is it needed?\r\n imageCropping,\r\n\r\n // set initial value to true if there is manual cropping for this image\r\n // the purpose is to inlucde this cropping when sending crop MT api request\r\n hasCroppingChanged: !!imageCropping,\r\n },\r\n placementSets,\r\n };\r\n return result;\r\n });\r\n return ret;\r\n}\r\n\r\n// todo: add a simplified interface to support single placement set\r\n// export const useAdPreviewModel = (placementConfig: Array | undefined | null, onError) => {\r\nexport const useAdPreviewModel = (placementConfig, onError) => {\r\n //\r\n // keep a reference to the current model config\r\n const curPlacementConfigRef = useRef(placementConfig);\r\n\r\n const permissions = useContext(PermissionsContext);\r\n const isAdPreviewRefreshEnabled = _.get(permissions, ['dynamic', 'AdPreviewRefresh']);\r\n\r\n const {\r\n previewImageListState, // Array\r\n hasDataChanged,\r\n resetReducerStates,\r\n updateImageCropping: updateImageCroppingState,\r\n updatePlacementCropping: updatePlacementCroppingState,\r\n updatePlacementCroppingByImageType: updatePlacementCroppingByImageTypeState,\r\n activeImageIndices,\r\n setActiveImageIndices,\r\n } = useAdPreviewReducer();\r\n\r\n const updateImageCropping = useCallback((newImageCropping, imageIndex = 0) => {\r\n // get image to update\r\n const { previewImage } = (previewImageListState && previewImageListState[imageIndex]) || {};\r\n const { imageMeta, imageCropping } = previewImage || {};\r\n\r\n // get placement set param\r\n const { placementSets } = (curPlacementConfigRef.current && curPlacementConfigRef.current[imageIndex]) || {};\r\n\r\n if (placementSets && imageMeta && newImageCropping && !_.isEqual(imageCropping, newImageCropping)) {\r\n getImageAndPlacementSetList({\r\n imageMeta, imageCropping: newImageCropping, manualPlacementCroppings: undefined, placementSetsParam: placementSets, isAdPreviewRefreshEnabled,\r\n }).then((imgAndPlacementSets) => {\r\n updateImageCroppingState(imgAndPlacementSets, imageIndex);\r\n });\r\n }\r\n }, [previewImageListState, updateImageCroppingState]);\r\n\r\n // const updatePlacementCropping = useCallback((params: {\r\n // newPlacementCropping: TCropRect,\r\n // placementSetName: string,\r\n // placementType: EPlacementType,\r\n // imageIndex: number,\r\n // }) => {\r\n const updatePlacementCropping = useCallback((params) => {\r\n const {\r\n newPlacementCropping, placementSetName, placementType, imageIndex = 0,\r\n } = params || {};\r\n\r\n updatePlacementCroppingState({\r\n imageIndex, placementSetName, placementType, cropping: newPlacementCropping,\r\n });\r\n }, [updatePlacementCroppingState]);\r\n\r\n // const updatePlacementCroppingByImageType = useCallback((params: {\r\n // newPlacementCropping: TCropRect,\r\n // placementSetName: string,\r\n // imageType: EImageType,\r\n // imageIndex: number,\r\n // }) => {\r\n const updatePlacementCroppingByImageType = useCallback((params) => {\r\n const {\r\n newPlacementCropping, placementSetName, imageType, imageIndex = 0,\r\n } = params || {};\r\n\r\n updatePlacementCroppingByImageTypeState({\r\n imageIndex, placementSetName, imageType, cropping: newPlacementCropping,\r\n });\r\n }, [updatePlacementCroppingByImageTypeState]);\r\n\r\n // to avoid re-initialize model using same placement config\r\n const prevModelConfigRef = useRef(null);\r\n\r\n // model config could be set by using this method, or passing it in hook parameters\r\n // const initializeModel = useCallback((pNewModelConfig: Array | null | undefined) => {\r\n const initializeModel = useCallback((pNewModelConfig) => {\r\n //\r\n // remove invalid entries\r\n const newModelConfig = _.compact(pNewModelConfig);\r\n if (_.isEmpty(newModelConfig)) {\r\n return;\r\n }\r\n\r\n // avoid initializing again using same config\r\n if (_.isEqual(prevModelConfigRef.current, newModelConfig)) {\r\n return;\r\n }\r\n prevModelConfigRef.current = newModelConfig;\r\n\r\n // keep a reference to the current model config\r\n curPlacementConfigRef.current = newModelConfig;\r\n\r\n const [firstConfig, ...otherConfigs] = newModelConfig;\r\n\r\n // load first image first and then others, to unblock UI rendering\r\n getImageInfo(firstConfig.image, onError).then((firstImageInfo) => {\r\n // stop if the 1st image is invalid\r\n if (!firstImageInfo) {\r\n return null;\r\n }\r\n const { imageMeta, imageCropping, manualPlacementCroppings } = firstImageInfo;\r\n // set the partial loaded image data (without placement cropping), to unblock UI rendering (such as UI only needs image info)\r\n const partialFirstPreviewImage = {\r\n previewImage: { imageMeta, imageCropping, hasCroppingChanged: !!imageCropping },\r\n placementSets: [],\r\n };\r\n resetReducerStates({ previewImageListState: [partialFirstPreviewImage] });\r\n\r\n // get placement sets for the first image\r\n return getImageAndPlacementSetList({\r\n imageMeta, imageCropping, manualPlacementCroppings, placementSetsParam: firstConfig.placementSets, isAdPreviewRefreshEnabled,\r\n }).then((firstPreviewImage) => {\r\n if (firstPreviewImage) {\r\n // set the state for the first image first, so UI can render something quickly\r\n resetReducerStates({ previewImageListState: [firstPreviewImage] });\r\n // get image and placement sets for other images\r\n if (!_.isEmpty(otherConfigs)) {\r\n Promise.map(\r\n otherConfigs,\r\n config => getImageInfo(config.image, onError).then((imgInfo) => {\r\n if (imgInfo) {\r\n return getImageAndPlacementSetList({\r\n imageMeta: imgInfo.imageMeta,\r\n imageCropping: imgInfo.imageCropping,\r\n manualPlacementCroppings: imgInfo.manualPlacementCroppings,\r\n placementSetsParam: config.placementSets,\r\n isAdPreviewRefreshEnabled,\r\n });\r\n }\r\n return null;\r\n }),\r\n { concurrency: 5 }\r\n ).then((ret /* Array */) => {\r\n // set all the images now\r\n const otherPreviewImages = _.compact(ret);\r\n if (!_.isEmpty(otherPreviewImages)) {\r\n resetReducerStates({ previewImageListState: [firstPreviewImage, ...otherPreviewImages] });\r\n }\r\n });\r\n }\r\n }\r\n });\r\n });\r\n }, [onError, resetReducerStates]);\r\n\r\n useEffect(() => {\r\n if (!_.isEmpty(placementConfig)) {\r\n initializeModel(placementConfig);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [placementConfig]);\r\n\r\n //\r\n // transform model state to make it easier to use for rendering components\r\n // const multiImagePlacementSetsViewModel = useMemo((): Array | null => {\r\n const getPlacementSetsViewModel = useCallback((activeImagesOnly) => {\r\n if (_.isEmpty(previewImageListState)) {\r\n return [];\r\n }\r\n\r\n const finalPlacementSets = [];\r\n\r\n // only get active images only\r\n let pickedPreviewImageListState = previewImageListState;\r\n if (activeImagesOnly && !_.isEmpty(activeImageIndices)) {\r\n pickedPreviewImageListState = _.compact(_.map(activeImageIndices, idx => previewImageListState[idx]));\r\n }\r\n\r\n //\r\n // each image in model state\r\n //\r\n _.each(pickedPreviewImageListState, ({ previewImage: pImage, placementSets }) => {\r\n const { imageMeta, imageCropping, imageSmartEffect } = pImage || {};\r\n //\r\n // each placement set\r\n //\r\n _.each(placementSets, ({ name: placementSetName, placementList }) => {\r\n // create a placement set view model if not exist\r\n let placementSetViewModel = finalPlacementSets.find(item => item.placementSetName === placementSetName);\r\n if (!placementSetViewModel) {\r\n placementSetViewModel = { placementSetName, placementList: [] };\r\n finalPlacementSets.push(placementSetViewModel);\r\n }\r\n //\r\n // for each placement\r\n //\r\n _.each(placementList, ({\r\n placementMeta, placementCropping, placementSmartEffect, isPlacementIncluded, expandedImageUrl, expandedImageHeight, expandedImageWidth, expandedImageCropSettings, ...rest\r\n }) => {\r\n const imageViewModel = {\r\n imageMeta,\r\n imageCropping,\r\n imageSmartEffect,\r\n placementCropping,\r\n placementSmartEffect,\r\n effectiveImageUrl: (placementSmartEffect && placementSmartEffect.effectSrc) || (imageSmartEffect && imageSmartEffect.effectSrc) || expandedImageUrl || (imageMeta && (imageMeta.originalUrl || imageMeta.url)),\r\n effectiveImageWidth: expandedImageWidth || (imageMeta && imageMeta.originalWidth),\r\n effectiveImageHeight: expandedImageHeight || (imageMeta && imageMeta.originalHeight),\r\n expandedPlacementCropping: expandedImageCropSettings,\r\n isPlacementIncluded,\r\n ...rest,\r\n };\r\n const fpIndex = _.findIndex(placementSetViewModel.placementList, (item => item.placementMeta.placementType === placementMeta.placementType));\r\n if (fpIndex > -1) {\r\n placementSetViewModel.placementList[fpIndex].images.push(imageViewModel);\r\n placementSetViewModel.placementList[fpIndex].isPlacementIncluded\r\n = isPlacementIncluded || placementSetViewModel.placementList[fpIndex].isPlacementIncluded;\r\n } else {\r\n placementSetViewModel.placementList.push({\r\n placementMeta, isPlacementIncluded, images: [imageViewModel],\r\n });\r\n }\r\n });\r\n });\r\n });\r\n\r\n return finalPlacementSets;\r\n }, [activeImageIndices, previewImageListState]);\r\n\r\n const multiImagePlacementSetsViewModel = useMemo(() => getPlacementSetsViewModel(false), [getPlacementSetsViewModel]);\r\n const activeMultiImagePlacementSetsViewModel = useMemo(() => getPlacementSetsViewModel(true), [getPlacementSetsViewModel]);\r\n\r\n /**\r\n * list of placements to shown, this is a simplified interface for signle image mode\r\n * return type: Array\r\n */\r\n const singleImagePlacementSetsViewModel = useMemo(() => {\r\n const ret = _.map(multiImagePlacementSetsViewModel, ({ placementSetName, placementList }) => {\r\n const ret2 = _.map(placementList, ({ placementMeta, isPlacementIncluded, images }) => {\r\n const selectedImage = pickSingleImageFromImageList(images);\r\n return {\r\n placementMeta,\r\n isPlacementIncluded,\r\n ...selectedImage,\r\n };\r\n });\r\n return { placementSetName, placementList: ret2 };\r\n });\r\n return ret || [];\r\n }, [multiImagePlacementSetsViewModel]);\r\n\r\n const activeSingleImagePlacementSetsViewModel = useMemo(() => {\r\n const ret = _.map(activeMultiImagePlacementSetsViewModel, ({ placementSetName, placementList }) => {\r\n const ret2 = _.map(placementList, ({ placementMeta, isPlacementIncluded, images }) => {\r\n const selectedImage = pickSingleImageFromImageList(images);\r\n return {\r\n placementMeta,\r\n isPlacementIncluded,\r\n ...selectedImage,\r\n };\r\n });\r\n return { placementSetName, placementList: ret2 };\r\n });\r\n return ret || [];\r\n }, [activeMultiImagePlacementSetsViewModel]);\r\n\r\n const firstImage = useMemo(() => {\r\n const { previewImage } = _.first(previewImageListState) || {};\r\n return previewImage;\r\n }, [previewImageListState]);\r\n\r\n const allImages = useMemo(() => {\r\n const imgs = _.map(previewImageListState, ({ previewImage }) => previewImage);\r\n return imgs || [];\r\n }, [previewImageListState]);\r\n\r\n const activeImages = useMemo(() => {\r\n if (_.isEmpty(activeImageIndices)) {\r\n return [];\r\n }\r\n const ret = _.map(activeImageIndices, index => previewImageListState[index] && previewImageListState[index].previewImage);\r\n return _.compact(ret) || [];\r\n }, [previewImageListState, activeImageIndices]);\r\n\r\n // get changed image cropping and placement croppings\r\n // const changedCropSettings: Array<{ image: TPreviewImage, placements: Array }> = useMemo(() => {\r\n const changedCropSettings = useMemo(() => {\r\n // each image in model state\r\n const ret = _.map(previewImageListState, ({ previewImage, placementSets }) => {\r\n const image = { ...previewImage };\r\n const placements = [];\r\n // each placement set\r\n _.each(placementSets, ({ placementList }) => {\r\n // for each placement\r\n _.each(placementList, (placement) => {\r\n if (placement.hasCroppingChanged) {\r\n placements.push(placement);\r\n }\r\n });\r\n });\r\n return { image, placements };\r\n });\r\n return ret || [];\r\n }, [previewImageListState]);\r\n\r\n const resetReducerStatesWrapper = useCallback((newState) => {\r\n resetReducerStates(newState);\r\n prevModelConfigRef.current = null;\r\n }, [resetReducerStates]);\r\n\r\n return {\r\n // previewImageListState,\r\n activeImageIndices,\r\n setActiveImageIndices,\r\n resetReducerStates: resetReducerStatesWrapper,\r\n //\r\n setPlacementConfig: initializeModel, // todo: support partial update? only update one image? or one placement set?\r\n updateImageCropping,\r\n updatePlacementCropping,\r\n updatePlacementCroppingByImageType,\r\n multiImagePlacementSets: activeMultiImagePlacementSetsViewModel,\r\n singleImagePlacementSets: activeSingleImagePlacementSetsViewModel,\r\n multiImagePlacementSetsViewModel,\r\n singleImagePlacementSetsViewModel,\r\n firstImage,\r\n allImages,\r\n activeImages,\r\n hasDataChanged,\r\n changedCropSettings,\r\n };\r\n};\r\n","import Promise from 'bluebird';\r\n\r\n// load an image by url\r\nexport function loadImageByUrl(url) {\r\n return new Promise((resolve, reject) => {\r\n const image = new Image();\r\n image.onload = () => {\r\n const { src, naturalWidth, naturalHeight } = image || {};\r\n resolve({ src, width: naturalWidth, height: naturalHeight });\r\n };\r\n image.onerror = () => {\r\n reject(new Error(`Failed to load image, url: ${url}`));\r\n };\r\n image.src = url;\r\n });\r\n}\r\n","import { UAPPlacementType } from '../@types';\r\n\r\n//\r\n// origanize and alias placement types for easier reference\r\nexport const UAPPlacementTypeAlias = {\r\n MMA: {\r\n WideImage: UAPPlacementType.MMA_WideImage_4x1,\r\n LandscapeImage: UAPPlacementType.MMA_LandscapeImage_191x100,\r\n SquareImage: UAPPlacementType.MMA_SquareImage_1x1,\r\n VerticalImage: UAPPlacementType.MMA_VerticalImage_1x2,\r\n },\r\n\r\n MSAN: {\r\n WideImage: UAPPlacementType.Audience_Network_WideImage_191x100,\r\n SquareImage: UAPPlacementType.Audience_Network_SquareImage_1x1,\r\n MSEdgeSingleCarousel: UAPPlacementType.Microsoft_Edge_Single_Carousel_178x100,\r\n MSNInArticle: UAPPlacementType.MSN_InArticle_Ad_150x100,\r\n MSNSmallHeadline: UAPPlacementType.MSN_Small_Headline_133x100,\r\n },\r\n\r\n MSANV2: {\r\n MSEdgeCarousel: UAPPlacementType.MsanV2_Microsoft_Edge_Carouse_l201x100,\r\n MSEdgeMobile: UAPPlacementType.MsanV2_Microsoft_Edge_Mobile_1x1,\r\n MSANBanner: UAPPlacementType.MsanV2_MSAN_Banner_2x1,\r\n MSANRiver: UAPPlacementType.MsanV2_MSAN_River_191x100,\r\n MSANRectangle: UAPPlacementType.MsanV2_MSAN_Rectangle_120x100,\r\n MSNCarousel: UAPPlacementType.MsanV2_MSN_Carousel_169x100,\r\n MSNPartnerStripe: UAPPlacementType.MsanV2_MSN_Partner_Stripe_153x100,\r\n MSNRestoday: UAPPlacementType.MsanV2_MSN_Restoday_124x100,\r\n },\r\n\r\n PMax: {\r\n AudienceSquareImage: UAPPlacementType.PMax_Audience_Network_SquareImage_1x1,\r\n AudienceWideImage: UAPPlacementType.PMax_Audience_Network_WideImage_191x100,\r\n MMALandscapeImage: UAPPlacementType.PMax_MMA_LandscapeImage_191x100,\r\n MMAVerticalImage: UAPPlacementType.PMax_MMA_VerticalImage_1x2,\r\n MMAWideImage: UAPPlacementType.PMax_MMA_WideImage_4x1,\r\n MSNInArticle: UAPPlacementType.PMax_MSN_InArticle_Ad_150x100,\r\n MSNSmallHeadline: UAPPlacementType.PMax_MSN_Small_Headline_133x100,\r\n MSEdgeSingleCarousel: UAPPlacementType.PMax_Microsoft_Edge_Single_Carousel_178x100,\r\n MMAV2MSEdgeCarousel: UAPPlacementType.PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100,\r\n MMAV2MSNSingleCarousel: UAPPlacementType.PMax_MMAV2_MSN_Single_Carousel_169x100,\r\n MMAV2MSNRestoday: UAPPlacementType.PMax_MMAV2_MSN_Restoday_124x100,\r\n MMAV2MSNPartnerStripe: UAPPlacementType.PMax_MMAV2_MSN_Partner_Stripe_153x100,\r\n MMAV2MSNRiver: UAPPlacementType.PMax_MMAV2_MSN_River_191x100,\r\n Video: UAPPlacementType.PMax_Video,\r\n MSEdgeMobile: UAPPlacementType.PMax_MMAV2_Microsoft_Edge_Mobile_1x1,\r\n },\r\n\r\n PMaxV2: {\r\n AudienceSquareImage: UAPPlacementType.PMax_Audience_Network_SquareImage_1x1,\r\n AudienceWideImage: UAPPlacementType.PMax_Audience_Network_WideImage_191x100,\r\n MMALandscapeImage: UAPPlacementType.PMax_MMA_LandscapeImage_191x100,\r\n MMAVerticalImage: UAPPlacementType.PMax_MMA_VerticalImage_1x2,\r\n MMAWideImage: UAPPlacementType.PMax_MMA_WideImage_4x1,\r\n MMAV2MSEdgeCarousel: UAPPlacementType.PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100,\r\n MMAV2MSNSingleCarousel: UAPPlacementType.PMax_MMAV2_MSN_Single_Carousel_169x100,\r\n MMAV2MSNRestoday: UAPPlacementType.PMax_MMAV2_MSN_Restoday_124x100,\r\n MMAV2MSNPartnerStripe: UAPPlacementType.PMax_MMAV2_MSN_Partner_Stripe_153x100,\r\n MMAV2MSNRiver: UAPPlacementType.PMax_MMAV2_MSN_River_191x100,\r\n Video: UAPPlacementType.PMax_Video,\r\n MSEdgeMobile: UAPPlacementType.PMax_MMAV2_Microsoft_Edge_Mobile_1x1,\r\n },\r\n\r\n Boost: {\r\n HeroImageCarousel200x100: UAPPlacementType.Boost_Hero_Image_Carousel_200x100,\r\n HeroImageCarousel122x100: UAPPlacementType.Boost_Hero_Image_Carousel_122x100,\r\n HeroImageCarousel159x100: UAPPlacementType.Boost_Hero_Image_Carousel_159x100,\r\n HeroImageCarousel180x100: UAPPlacementType.Boost_Hero_Image_Carousel_180x100,\r\n HeroImageCarousel233x100: UAPPlacementType.Boost_Hero_Image_Carousel_233x100,\r\n HeroImageCarousel320x100: UAPPlacementType.Boost_Hero_Image_Carousel_320x100,\r\n HeroImageCarousel57x100: UAPPlacementType.Boost_Hero_Image_Carousel_57x100,\r\n WindowsSpotlight: UAPPlacementType.Boost_Windows_Spotlight_191x100,\r\n DiscoverCard: UAPPlacementType.Boost_Discover_Card_1x1,\r\n StartMenu: UAPPlacementType.Boost_Start_Menu,\r\n ActionCenter: UAPPlacementType.Boost_Action_Center,\r\n Banner: UAPPlacementType.Boost_Banner,\r\n Prong1Prong2Feed: UAPPlacementType.Boost_Prong1_Prong2_Feed_191x100,\r\n Coachmark: UAPPlacementType.Boost_Coachmark_175x100,\r\n },\r\n\r\n ImageExt: {\r\n MMAV2MSNRiver: UAPPlacementType.ImgExt_MMAV2_MSN_River_191x100,\r\n MMAV2MSNSingleCarousel: UAPPlacementType.ImgExt_MMAV2_MSN_Single_Carousel_169x100,\r\n MSEdgeMobile: UAPPlacementType.ImgExt_MMAV2_MSN_Microsoft_Edge_Mobile_1x1,\r\n\r\n WideImage: UAPPlacementType.ImgExt_Audience_Network_WideImage_191x100,\r\n SquareImage: UAPPlacementType.ImgExt_Audience_Network_SquareImage_1x1,\r\n\r\n MSEdgeMediumHeadline: UAPPlacementType.ImgExt_Microsoft_Edge_Medium_Headline_172x100,\r\n MSEdgeSingleCarousel: UAPPlacementType.ImgExt_Microsoft_Edge_Single_Carousel_178x100,\r\n\r\n MSNSingleCarousel: UAPPlacementType.ImgExt_MSN_Single_Carousel_169x100,\r\n MSNMediumHeadline: UAPPlacementType.ImgExt_MSN_Medium_Headline_155x100,\r\n MSNInArticle: UAPPlacementType.ImgExt_MSN_InArticle_Ad_150x100,\r\n MSNSmallHeadline: UAPPlacementType.ImgExt_MSN_Small_Headline_133x100,\r\n MSNDoubleCarousel: UAPPlacementType.ImgExt_MSN_Double_Carousel_93x100,\r\n\r\n BingDesktopSingleImage: UAPPlacementType.ImgExt_Bing_Desktop_SingleImage_Extension_178x100,\r\n BingDesktopMultiImage: UAPPlacementType.ImgExt_Bing_Desktop_MultiImage_Extension_133x100,\r\n BingMobileMultiImage: UAPPlacementType.ImgExt_Bing_Mobile_MultiImage_Extension_133x100,\r\n },\r\n\r\n Outlook: {\r\n Mobile: UAPPlacementType.Outlook_Text_Mobile,\r\n Web: UAPPlacementType.Outlook_Text_Web,\r\n },\r\n\r\n BingSearch: {\r\n Mobile: UAPPlacementType.Bing_Search_Mobile,\r\n Desktop: UAPPlacementType.Bing_Search_Desktop,\r\n Text: UAPPlacementType.Bing_Search_Text,\r\n },\r\n\r\n Responsive: {\r\n MMA: {\r\n WideImage: UAPPlacementType.Responsive_MMA_WideImage_4x1,\r\n LandscapeImage: UAPPlacementType.Responsive_MMA_LandscapeImage_191x100,\r\n SquareImage: UAPPlacementType.Responsive_MMA_SquareImage_1x1,\r\n VerticalImage: UAPPlacementType.Responsive_MMA_VerticalImage_1x2,\r\n },\r\n\r\n MSAN: {\r\n WideImage: UAPPlacementType.Responsive_Audience_Network_WideImage_191x100,\r\n SquareImage: UAPPlacementType.Responsive_Audience_Network_SquareImage_1x1,\r\n MSEdgeSingleCarousel: UAPPlacementType.Responsive_Microsoft_Edge_Single_Carousel_178x100,\r\n MSNInArticle: UAPPlacementType.Responsive_MSN_InArticle_Ad_150x100,\r\n MSNSmallHeadline: UAPPlacementType.Responsive_MSN_Small_Headline_133x100,\r\n },\r\n\r\n MSANV2: {\r\n MSEdgeCarousel: UAPPlacementType.Responsive_MsanV2_Microsoft_Edge_Carouse_l201x100,\r\n MSEdgeMobile: UAPPlacementType.Responsive_MsanV2_Microsoft_Edge_Mobile_1x1,\r\n MSANBanner: UAPPlacementType.Responsive_MsanV2_MSAN_Banner_2x1,\r\n MSANRiver: UAPPlacementType.Responsive_MsanV2_MSAN_River_191x100,\r\n MSANRectangle: UAPPlacementType.Responsive_MsanV2_MSAN_Rectangle_120x100,\r\n MSNCarousel: UAPPlacementType.Responsive_MsanV2_MSN_Carousel_169x100,\r\n MSNPartnerStripe: UAPPlacementType.Responsive_MsanV2_MSN_Partner_Stripe_153x100,\r\n MSNRestoday: UAPPlacementType.Responsive_MsanV2_MSN_Restoday_124x100,\r\n },\r\n\r\n Outlook: {\r\n Mobile: UAPPlacementType.Responsive_Outlook_Text_Mobile,\r\n Web: UAPPlacementType.Responsive_Outlook_Text_Web,\r\n },\r\n\r\n BingSearch: {\r\n Text: UAPPlacementType.Responsive_Bing_Search_Text,\r\n },\r\n\r\n Boost: {\r\n WindowsSpotlight: UAPPlacementType.Responsive_Boost_Windows_Spotlight_191x100,\r\n DiscoverCard: UAPPlacementType.Responsive_Boost_Discover_Card_1x1,\r\n StartMenu: UAPPlacementType.Responsive_Boost_Start_Menu,\r\n ActionCenter: UAPPlacementType.Responsive_Boost_Action_Center,\r\n Banner: UAPPlacementType.Responsive_Boost_Banner,\r\n Prong1Prong2Feed: UAPPlacementType.Responsive_Boost_Prong1_Prong2_Feed_191x100,\r\n Coachmark: UAPPlacementType.Responsive_Boost_Coachmark_175x100,\r\n },\r\n\r\n PMax: {\r\n AudienceSquareImage: UAPPlacementType.Responsive_PMax_Audience_Network_SquareImage_1x1,\r\n AudienceWideImage: UAPPlacementType.Responsive_PMax_Audience_Network_WideImage_191x100,\r\n MMALandscapeImage: UAPPlacementType.Responsive_PMax_MMA_LandscapeImage_191x100,\r\n MMAVerticalImage: UAPPlacementType.Responsive_PMax_MMA_VerticalImage_1x2,\r\n MMAWideImage: UAPPlacementType.Responsive_PMax_MMA_WideImage_4x1,\r\n MSNInArticle: UAPPlacementType.Responsive_PMax_MSN_InArticle_Ad_150x100,\r\n MSNSmallHeadline: UAPPlacementType.Responsive_PMax_MSN_Small_Headline_133x100,\r\n MSEdgeSingleCarousel: UAPPlacementType.Responsive_PMax_Microsoft_Edge_Single_Carousel_178x100,\r\n MMAV2MSEdgeCarousel: UAPPlacementType.Responsive_PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100,\r\n MMAV2MSNSingleCarousel: UAPPlacementType.Responsive_PMax_MMAV2_MSN_Single_Carousel_169x100,\r\n MMAV2MSNRestoday: UAPPlacementType.Responsive_PMax_MMAV2_MSN_Restoday_124x100,\r\n MMAV2MSNPartnerStripe: UAPPlacementType.Responsive_PMax_MMAV2_MSN_Partner_Stripe_153x100,\r\n MMAV2MSNRiver: UAPPlacementType.Responsive_PMax_MMAV2_MSN_River_191x100,\r\n MSEdgeMobile: UAPPlacementType.Responsive_PMax_MMAV2_Microsoft_Edge_Mobile_1x1,\r\n },\r\n\r\n PMaxV2: {\r\n AudienceSquareImage: UAPPlacementType.PMax_Audience_Network_SquareImage_1x1,\r\n AudienceWideImage: UAPPlacementType.PMax_Audience_Network_WideImage_191x100,\r\n MMALandscapeImage: UAPPlacementType.PMax_MMA_LandscapeImage_191x100,\r\n MMAVerticalImage: UAPPlacementType.PMax_MMA_VerticalImage_1x2,\r\n MMAWideImage: UAPPlacementType.PMax_MMA_WideImage_4x1,\r\n MMAV2MSEdgeCarousel: UAPPlacementType.PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100,\r\n MMAV2MSNSingleCarousel: UAPPlacementType.PMax_MMAV2_MSN_Single_Carousel_169x100,\r\n MMAV2MSNRestoday: UAPPlacementType.PMax_MMAV2_MSN_Restoday_124x100,\r\n MMAV2MSNPartnerStripe: UAPPlacementType.PMax_MMAV2_MSN_Partner_Stripe_153x100,\r\n MMAV2MSNRiver: UAPPlacementType.PMax_MMAV2_MSN_River_191x100,\r\n MSEdgeMobile: UAPPlacementType.PMax_MMAV2_Microsoft_Edge_Mobile_1x1,\r\n },\r\n },\r\n\r\n ResponsiveSearch: {\r\n Text: UAPPlacementType.Responsive_Search,\r\n Desktop: UAPPlacementType.Responsive_Search_Desktop,\r\n Mobile: UAPPlacementType.Responsive_Search_Mobile,\r\n },\r\n\r\n DynamicSearch: {\r\n Dynamic: UAPPlacementType.Dynamic_Search,\r\n },\r\n\r\n LinkedIn: {\r\n Landscape: {\r\n SingleImageDesktop: UAPPlacementType.LinkedIn_Single_Image_Desktop_Landscape,\r\n SingleImageMobile: UAPPlacementType.LinkedIn_Single_Image_Mobile_Landscape,\r\n },\r\n Square: {\r\n SingleImageDesktop: UAPPlacementType.LinkedIn_Single_Image_Desktop_Square,\r\n SingleImageMobile: UAPPlacementType.LinkedIn_Single_Image_Mobile_Square,\r\n },\r\n Vertical: {\r\n SingleImageMobile: UAPPlacementType.LinkedIn_Single_Image_Mobile_Vertical,\r\n },\r\n },\r\n\r\n UnifiedAppAds: {\r\n VideoHorizontal: UAPPlacementType.Unified_App_Ads_Video_Horizontal,\r\n M365Outlook: UAPPlacementType.Unified_App_Ads_M365_Outlook,\r\n MSNDisplay: UAPPlacementType.Unified_App_Ads_MSN_Display,\r\n CasualGamesDimensions: UAPPlacementType.Unified_App_Ads_Causal_Games_Dimensions,\r\n BingSearch: UAPPlacementType.Unified_App_Ads_Bing_Search,\r\n BingSearchText: UAPPlacementType.Unified_App_Ads_Bing_Search_Text,\r\n },\r\n};\r\n\r\nUAPPlacementTypeAlias.MMA.All = [\r\n UAPPlacementType.MMA_WideImage_4x1,\r\n UAPPlacementType.MMA_LandscapeImage_191x100,\r\n UAPPlacementType.MMA_SquareImage_1x1,\r\n UAPPlacementType.MMA_VerticalImage_1x2,\r\n];\r\n\r\nUAPPlacementTypeAlias.MSAN.All = [\r\n UAPPlacementType.Audience_Network_WideImage_191x100,\r\n UAPPlacementType.Microsoft_Edge_Single_Carousel_178x100,\r\n UAPPlacementType.MSN_InArticle_Ad_150x100,\r\n UAPPlacementType.MSN_Small_Headline_133x100,\r\n UAPPlacementType.Audience_Network_SquareImage_1x1,\r\n];\r\n\r\nUAPPlacementTypeAlias.MSANV2.All = [\r\n UAPPlacementType.MsanV2_Microsoft_Edge_Carouse_l201x100,\r\n UAPPlacementType.MsanV2_MSAN_Banner_2x1,\r\n UAPPlacementType.MsanV2_MSAN_River_191x100,\r\n UAPPlacementType.MsanV2_MSN_Carousel_169x100,\r\n UAPPlacementType.MsanV2_MSN_Partner_Stripe_153x100,\r\n UAPPlacementType.MsanV2_MSN_Restoday_124x100,\r\n UAPPlacementType.MsanV2_MSAN_Rectangle_120x100,\r\n UAPPlacementType.MsanV2_Microsoft_Edge_Mobile_1x1,\r\n];\r\n\r\nUAPPlacementTypeAlias.PMax.All = [\r\n UAPPlacementType.PMax_MMA_WideImage_4x1,\r\n UAPPlacementType.PMax_Audience_Network_WideImage_191x100,\r\n UAPPlacementType.PMax_MMA_LandscapeImage_191x100,\r\n UAPPlacementType.PMax_Microsoft_Edge_Single_Carousel_178x100,\r\n UAPPlacementType.PMax_MSN_InArticle_Ad_150x100,\r\n UAPPlacementType.PMax_MSN_Small_Headline_133x100,\r\n UAPPlacementType.PMax_Audience_Network_SquareImage_1x1,\r\n UAPPlacementType.PMax_MMA_VerticalImage_1x2,\r\n];\r\n\r\nUAPPlacementTypeAlias.PMaxV2.All = [\r\n UAPPlacementType.PMax_MMA_WideImage_4x1,\r\n UAPPlacementType.PMax_Audience_Network_WideImage_191x100,\r\n UAPPlacementType.PMax_MMA_LandscapeImage_191x100,\r\n UAPPlacementType.PMax_Audience_Network_SquareImage_1x1,\r\n UAPPlacementType.PMax_MMA_VerticalImage_1x2,\r\n UAPPlacementType.PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100,\r\n UAPPlacementType.PMax_MMAV2_MSN_Single_Carousel_169x100,\r\n UAPPlacementType.PMax_MMAV2_MSN_Partner_Stripe_153x100,\r\n UAPPlacementType.PMax_MMAV2_MSN_Restoday_124x100,\r\n];\r\n\r\nUAPPlacementTypeAlias.PMaxV2.AllV2 = [\r\n UAPPlacementType.PMax_MMA_WideImage_4x1,\r\n UAPPlacementType.PMax_MMA_LandscapeImage_191x100,\r\n UAPPlacementType.PMax_MMAV2_Microsoft_Edge_Mobile_1x1,\r\n UAPPlacementType.PMax_MMA_VerticalImage_1x2,\r\n UAPPlacementType.PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100,\r\n UAPPlacementType.PMax_MMAV2_MSN_Single_Carousel_169x100,\r\n UAPPlacementType.PMax_MMAV2_MSN_Partner_Stripe_153x100,\r\n UAPPlacementType.PMax_MMAV2_MSN_Restoday_124x100,\r\n UAPPlacementType.PMax_MMAV2_MSN_River_191x100,\r\n];\r\n\r\nUAPPlacementTypeAlias.ImageExt.All = [\r\n UAPPlacementType.ImgExt_Audience_Network_WideImage_191x100,\r\n UAPPlacementType.ImgExt_Microsoft_Edge_Single_Carousel_178x100,\r\n UAPPlacementType.ImgExt_Bing_Desktop_SingleImage_Extension_178x100,\r\n UAPPlacementType.ImgExt_Microsoft_Edge_Medium_Headline_172x100,\r\n UAPPlacementType.ImgExt_MSN_Single_Carousel_169x100,\r\n UAPPlacementType.ImgExt_MSN_Medium_Headline_155x100,\r\n UAPPlacementType.ImgExt_MSN_InArticle_Ad_150x100,\r\n UAPPlacementType.ImgExt_MSN_Small_Headline_133x100,\r\n UAPPlacementType.ImgExt_Bing_Desktop_MultiImage_Extension_133x100,\r\n UAPPlacementType.ImgExt_Bing_Mobile_MultiImage_Extension_133x100,\r\n UAPPlacementType.ImgExt_Audience_Network_SquareImage_1x1,\r\n UAPPlacementType.ImgExt_MSN_Double_Carousel_93x100,\r\n];\r\n\r\nUAPPlacementTypeAlias.ImageExt.AllV2 = [\r\n UAPPlacementType.ImgExt_MMAV2_MSN_River_191x100,\r\n UAPPlacementType.ImgExt_Bing_Desktop_SingleImage_Extension_178x100,\r\n UAPPlacementType.ImgExt_Microsoft_Edge_Medium_Headline_172x100,\r\n UAPPlacementType.ImgExt_MMAV2_MSN_Single_Carousel_169x100,\r\n UAPPlacementType.ImgExt_Bing_Desktop_MultiImage_Extension_133x100,\r\n UAPPlacementType.ImgExt_Bing_Mobile_MultiImage_Extension_133x100,\r\n UAPPlacementType.ImgExt_MMAV2_MSN_Microsoft_Edge_Mobile_1x1,\r\n UAPPlacementType.ImgExt_Microsoft_Edge_Single_Carousel_178x100,\r\n UAPPlacementType.ImgExt_MSN_Medium_Headline_155x100,\r\n UAPPlacementType.ImgExt_MSN_InArticle_Ad_150x100,\r\n UAPPlacementType.ImgExt_MSN_Small_Headline_133x100,\r\n UAPPlacementType.ImgExt_MSN_Double_Carousel_93x100,\r\n];\r\n\r\nUAPPlacementTypeAlias.BingSearch.All = [\r\n UAPPlacementType.Bing_Search_Text,\r\n UAPPlacementType.Bing_Search_Desktop,\r\n UAPPlacementType.Bing_Search_Mobile,\r\n];\r\n\r\nUAPPlacementTypeAlias.Boost.All = [\r\n UAPPlacementType.Boost_Hero_Image_Carousel_200x100,\r\n UAPPlacementType.Boost_Hero_Image_Carousel_122x100,\r\n UAPPlacementType.Boost_Hero_Image_Carousel_159x100,\r\n UAPPlacementType.Boost_Hero_Image_Carousel_180x100,\r\n UAPPlacementType.Boost_Hero_Image_Carousel_233x100,\r\n UAPPlacementType.Boost_Hero_Image_Carousel_320x100,\r\n UAPPlacementType.Boost_Hero_Image_Carousel_57x100,\r\n UAPPlacementType.Boost_Windows_Spotlight_191x100,\r\n UAPPlacementType.Boost_Discover_Card_1x1,\r\n UAPPlacementType.Boost_Start_Menu,\r\n UAPPlacementType.Boost_Action_Center,\r\n UAPPlacementType.Boost_Banner,\r\n UAPPlacementType.Boost_Prong1_Prong2_Feed_191x100,\r\n UAPPlacementType.Boost_Coachmark_175x100,\r\n];\r\n\r\nUAPPlacementTypeAlias.ResponsiveSearch.All = [\r\n UAPPlacementType.Responsive_Search,\r\n UAPPlacementType.Responsive_Search_Desktop,\r\n UAPPlacementType.Responsive_Search_Mobile,\r\n];\r\n\r\nUAPPlacementTypeAlias.DynamicSearch.All = [\r\n UAPPlacementType.Dynamic_Search,\r\n];\r\n\r\nUAPPlacementTypeAlias.LinkedIn.All = [\r\n UAPPlacementType.LinkedIn_Single_Image_Desktop_Landscape,\r\n UAPPlacementType.LinkedIn_Single_Image_Mobile_Landscape,\r\n\r\n UAPPlacementType.LinkedIn_Single_Image_Desktop_Square,\r\n UAPPlacementType.LinkedIn_Single_Image_Mobile_Square,\r\n\r\n UAPPlacementType.LinkedIn_Single_Image_Mobile_Vertical,\r\n];\r\n\r\n","import _ from 'underscore';\r\nimport { UAPCroppingType, UAPImageExpansionType, setROIInfo } from '@bingads-webui-campaign-react/unified-ad-preview-library-util';\r\nimport { getCenterCroppedSettings } from './get-central-crop-settings';\r\n\r\nexport const getExpandedImageInfo = ({\r\n imageExpansionType,\r\n expandedImageUrl,\r\n expandedImageWidth,\r\n expandedImageHeight,\r\n expandedImageCropSettings,\r\n originalImageCropSettings,\r\n extraCheck = undefined,\r\n}) => {\r\n if (!imageExpansionType || imageExpansionType === UAPImageExpansionType.None) {\r\n return null;\r\n }\r\n\r\n if (originalImageCropSettings && imageExpansionType !== UAPImageExpansionType.Outpainting && originalImageCropSettings.CroppingType === UAPCroppingType.SmartCrop) {\r\n return null;\r\n }\r\n\r\n if (imageExpansionType === UAPImageExpansionType.SingleColorPadding) {\r\n return null;\r\n }\r\n\r\n if (!expandedImageCropSettings) {\r\n return null;\r\n }\r\n\r\n if (extraCheck && extraCheck()) {\r\n return null;\r\n }\r\n\r\n return {\r\n expandedImageWidth,\r\n expandedImageHeight,\r\n expandedImageCropSettings,\r\n expandedImageUrl,\r\n };\r\n};\r\n\r\nexport const getCropSettingsFromRoi = ({\r\n imageMeta,\r\n imageCropping,\r\n placementMetaList, // Array\r\n useOriginalImageSize = false,\r\n}) => {\r\n let expandedInfo = {};\r\n if (imageMeta.expandedMeta) {\r\n const { expandedMeta } = imageMeta;\r\n expandedInfo = {\r\n expandedImageUrl: expandedMeta.expandedImageUrl,\r\n expandedImageWidth: expandedMeta.expandedImageWidth,\r\n expandedImageHeight: expandedMeta.expandedImageHeight,\r\n expandedImageCropSettings: expandedMeta.expandedImageCropSettings,\r\n originalImageCropSettings: expandedMeta.originalImageCropSettings,\r\n imageExpansionType: expandedMeta.imageExpansionType,\r\n };\r\n } else if (imageMeta.roiInfo) {\r\n expandedInfo = setROIInfo(imageMeta.roiInfo, imageMeta.url);\r\n } else {\r\n return [];\r\n }\r\n\r\n const {\r\n expandedImageWidth,\r\n expandedImageHeight,\r\n expandedImageCropSettings: expandedImageCropSettingsOriginal,\r\n originalImageCropSettings,\r\n expandedImageUrl,\r\n imageExpansionType,\r\n } = expandedInfo;\r\n\r\n const aspectRatios = _.pluck(placementMetaList, 'aspectRatio');\r\n const width = useOriginalImageSize ? imageMeta.originalWidth : imageMeta.width;\r\n const height = useOriginalImageSize ? imageMeta.originalHeight : imageMeta.height;\r\n const maxCropBox = imageCropping || {\r\n SourceWidth: width,\r\n SourceHeight: height,\r\n SourceX: 0,\r\n SourceY: 0,\r\n };\r\n\r\n const expandedImageCropSettingsMap = _.map(aspectRatios, (ratio) => {\r\n const cropSetting = _.find(expandedImageCropSettingsOriginal, ({ AspectRatio }) => AspectRatio === ratio);\r\n return cropSetting ? cropSetting.CropSetting : undefined;\r\n });\r\n\r\n const originalImageCropSettingsMap = _.map(aspectRatios, (ratio) => {\r\n const cropSetting = _.find(originalImageCropSettings, ({ AspectRatio }) => AspectRatio === ratio);\r\n return cropSetting ? cropSetting.CropSetting : { ...getCenterCroppedSettings(maxCropBox, ratio), CroppingType: UAPCroppingType.CenterCrop };\r\n });\r\n\r\n const placementList = _.map(expandedImageCropSettingsMap, (expandedCropSetting, index) => {\r\n const expandedImageInfo = getExpandedImageInfo({\r\n imageExpansionType,\r\n expandedImageUrl,\r\n expandedImageWidth,\r\n expandedImageHeight,\r\n expandedImageCropSettings: expandedCropSetting,\r\n originalImageCropSettings: originalImageCropSettingsMap[index],\r\n });\r\n\r\n if (expandedImageInfo) {\r\n return {\r\n ...expandedImageInfo,\r\n placementCropping: originalImageCropSettingsMap[index],\r\n };\r\n }\r\n\r\n return {\r\n placementCropping: originalImageCropSettingsMap[index],\r\n };\r\n });\r\n\r\n return placementList;\r\n};\r\n","import { UAPPlacementTypeAlias as PT } from '../ad-preview-model';\r\nimport {\r\n // MMA\r\n AdPlacementMmaLandscapeImage191x100,\r\n AdPlacementMmaSquareImage1x1,\r\n AdPlacementMmaVerticalImage1x2,\r\n AdPlacementMmaWideImage4x1,\r\n\r\n // MMA in MSAN\r\n AdPlacementMmaInMsanWideImage191x100,\r\n AdPlacementMmaInMsanSquareImage1x1,\r\n AdPlacementMmaInMsanMSEdgeSingleCarousel178x100,\r\n AdPlacementMmaInMsanMSNInArticle150x100,\r\n AdPlacementMmaInMsanMSNSmallHeadline133x100,\r\n\r\n // MMA in MSAN V2\r\n AdPlacementMmaInMsanV2MicrosoftEdgeCarousel201x100,\r\n AdPlacementMmaInMsanV2MicrosoftEdgeMobile1x1,\r\n AdPlacementMmaInMsanV2MSANBanner2x1,\r\n AdPlacementMmaInMsanV2MSANRiver191x100,\r\n AdPlacementMmaInMsanV2MSANRectangle191x100,\r\n AdPlacementMmaInMsanV2MSNCarousel169x100,\r\n AdPlacementMmaInMsanV2MSNPartnerStripe153x100,\r\n AdPlacementMmaInMsanV2MSNRestoday124x100,\r\n\r\n // Image Extension\r\n AdPlacementImgExtWideImage191x100,\r\n AdPlacementImgExtMSEdgeSingleCarousel178x100,\r\n AdPlacementImgExtBingDesktopSingleImage178x100,\r\n AdPlacementImgExtMSEdgeMediumHeadline172x100,\r\n AdPlacementImgExtMSNSingleCarousel169x100,\r\n AdPlacementImgExtMSNMediumHeadline155x100,\r\n AdPlacementImgExtMSNInArticle150x100,\r\n AdPlacementImgExtMSNSmallHeadline133x100,\r\n AdPlacementImgExtBingDesktopMultiImage133x100,\r\n AdPlacementImgExtBingMobileMultiImage133x100,\r\n AdPlacementImgExtSquareImage1x1,\r\n AdPlacementImgExtMSNDoubleCarousel93x100,\r\n\r\n //\r\n AdPlacementBingSearchText,\r\n AdPlacementBingSearchTextDesktop,\r\n AdPlacementBingSearchTextMobile,\r\n AdPlacementOutlookMobile,\r\n AdPlacementOutlookWeb,\r\n\r\n // Responsive\r\n ResponsiveAdPlacementMmaLandscapeImage191x100,\r\n ResponsiveAdPlacementMmaSquareImage1x1,\r\n ResponsiveAdPlacementMmaVerticalImage1x2,\r\n ResponsiveAdPlacementMmaWideImage4x1,\r\n ResponsiveAdPlacementMmaInMsanMSEdgeSingleCarousel178x100,\r\n ResponsiveAdPlacementMmaInMsanMSNInArticle150x100,\r\n ResponsiveAdPlacementMmaInMsanMSNSmallHeadline133x100,\r\n ResponsiveAdPlacementMmaInMsanSquareImage1x1,\r\n ResponsiveAdPlacementMmaInMsanWideImage191x100,\r\n ResponsiveAdPlacementBingSearchText,\r\n ResponsiveAdPlacementOutlookMobile,\r\n ResponsiveAdPlacementOutlookWeb,\r\n ResponsiveAdPlacementBoostWindowsSpotlight191x100,\r\n ResponsiveAdPlacementBoostDiscoverCard1x1,\r\n ResponsiveAdPlacementBoostProngFeed191x100,\r\n ResponsiveAdPlacementBoostCoachmark175x100,\r\n ResponsiveAdPlacementBoostStartMenu,\r\n ResponsiveAdPlacementBoostActionCenter,\r\n ResponsiveAdPlacementBoostBanner,\r\n\r\n // Responsive Search Ad\r\n AdPlacementResponsiveSearch,\r\n AdPlacementResponsiveSearchDesktop,\r\n AdPlacementResponsiveSearchMobile,\r\n\r\n // Dynamic Search Ad\r\n AdPlacementDynamicSearch,\r\n\r\n // boost\r\n AdPlacementBoostHeroImageCarousel,\r\n AdPlacementBoostWindowsSpotlight191x100,\r\n AdPlacementBoostDiscoverCard1x1,\r\n AdPlacementBoostStartMenu,\r\n AdPlacementBoostActionCenter,\r\n AdPlacementBoostBanner,\r\n AdPlacementBoostProngFeed191x100,\r\n AdPlacementBoostCoachmark175x100,\r\n\r\n // LinkedIn\r\n AdPlacementLinkedInSingleImageDesktop,\r\n AdPlacementLinkedInSingleImageMobile,\r\n\r\n // Unified App Ads\r\n AppAdsVideoHorizontalPlacement,\r\n AppAdsBingSearchPlacement,\r\n AppAdsBingSearchPlacementText,\r\n AppAdsCasualGamesDimensionsPlacement,\r\n AppAdsM365OutlookPlacement,\r\n AppAdsMSNDisplayPlacement,\r\n\r\n VideoPlacement,\r\n} from '../ad-placement-components';\r\n\r\nconst PlacementType2Component = {\r\n // MMA\r\n [PT.MMA.WideImage]: AdPlacementMmaWideImage4x1,\r\n [PT.MMA.LandscapeImage]: AdPlacementMmaLandscapeImage191x100,\r\n [PT.MMA.SquareImage]: AdPlacementMmaSquareImage1x1,\r\n [PT.MMA.VerticalImage]: AdPlacementMmaVerticalImage1x2,\r\n\r\n // MMA in MSAN (Audience Network)\r\n [PT.MSAN.WideImage]: AdPlacementMmaInMsanWideImage191x100,\r\n [PT.MSAN.SquareImage]: AdPlacementMmaInMsanSquareImage1x1,\r\n [PT.MSAN.MSEdgeSingleCarousel]: AdPlacementMmaInMsanMSEdgeSingleCarousel178x100,\r\n [PT.MSAN.MSNInArticle]: AdPlacementMmaInMsanMSNInArticle150x100,\r\n [PT.MSAN.MSNSmallHeadline]: AdPlacementMmaInMsanMSNSmallHeadline133x100,\r\n\r\n [PT.MSANV2.MSEdgeCarousel]: AdPlacementMmaInMsanV2MicrosoftEdgeCarousel201x100,\r\n [PT.MSANV2.MSEdgeMobile]: AdPlacementMmaInMsanV2MicrosoftEdgeMobile1x1,\r\n [PT.MSANV2.MSANBanner]: AdPlacementMmaInMsanV2MSANBanner2x1,\r\n [PT.MSANV2.MSANRiver]: AdPlacementMmaInMsanV2MSANRiver191x100,\r\n [PT.MSANV2.MSANRectangle]: AdPlacementMmaInMsanV2MSANRectangle191x100,\r\n [PT.MSANV2.MSNCarousel]: AdPlacementMmaInMsanV2MSNCarousel169x100,\r\n [PT.MSANV2.MSNPartnerStripe]: AdPlacementMmaInMsanV2MSNPartnerStripe153x100,\r\n [PT.MSANV2.MSNRestoday]: AdPlacementMmaInMsanV2MSNRestoday124x100,\r\n\r\n // pmax\r\n [PT.PMax.AudienceSquareImage]: AdPlacementMmaInMsanSquareImage1x1,\r\n [PT.PMax.AudienceWideImage]: AdPlacementMmaInMsanWideImage191x100,\r\n [PT.PMax.MMALandscapeImage]: AdPlacementMmaLandscapeImage191x100,\r\n [PT.PMax.MMAVerticalImage]: AdPlacementMmaVerticalImage1x2,\r\n [PT.PMax.MMAWideImage]: AdPlacementMmaWideImage4x1,\r\n [PT.PMax.MSNInArticle]: AdPlacementMmaInMsanMSNInArticle150x100,\r\n [PT.PMax.MSNSmallHeadline]: AdPlacementMmaInMsanMSNSmallHeadline133x100,\r\n [PT.PMax.MSEdgeSingleCarousel]: AdPlacementMmaInMsanMSEdgeSingleCarousel178x100,\r\n [PT.PMax.MMAV2MSEdgeCarousel]: AdPlacementMmaInMsanV2MicrosoftEdgeCarousel201x100,\r\n [PT.PMax.MMAV2MSNSingleCarousel]: AdPlacementMmaInMsanV2MSNCarousel169x100,\r\n [PT.PMax.MMAV2MSNRestoday]: AdPlacementMmaInMsanV2MSNRestoday124x100,\r\n [PT.PMax.MMAV2MSNPartnerStripe]: AdPlacementMmaInMsanV2MSNPartnerStripe153x100,\r\n [PT.PMax.MMAV2MSNRiver]: AdPlacementMmaInMsanV2MSANRiver191x100,\r\n [PT.PMax.Video]: VideoPlacement,\r\n [PT.PMax.MSEdgeMobile]: AdPlacementMmaInMsanV2MicrosoftEdgeMobile1x1,\r\n\r\n // Image Extension\r\n [PT.ImageExt.WideImage]: AdPlacementImgExtWideImage191x100,\r\n [PT.ImageExt.MSEdgeSingleCarousel]: AdPlacementImgExtMSEdgeSingleCarousel178x100,\r\n [PT.ImageExt.BingDesktopSingleImage]: AdPlacementImgExtBingDesktopSingleImage178x100,\r\n [PT.ImageExt.MSEdgeMediumHeadline]: AdPlacementImgExtMSEdgeMediumHeadline172x100,\r\n [PT.ImageExt.MSNSingleCarousel]: AdPlacementImgExtMSNSingleCarousel169x100,\r\n [PT.ImageExt.MSNMediumHeadline]: AdPlacementImgExtMSNMediumHeadline155x100,\r\n [PT.ImageExt.MSNInArticle]: AdPlacementImgExtMSNInArticle150x100,\r\n [PT.ImageExt.MSNSmallHeadline]: AdPlacementImgExtMSNSmallHeadline133x100,\r\n [PT.ImageExt.BingDesktopMultiImage]: AdPlacementImgExtBingDesktopMultiImage133x100,\r\n [PT.ImageExt.BingMobileMultiImage]: AdPlacementImgExtBingMobileMultiImage133x100,\r\n [PT.ImageExt.SquareImage]: AdPlacementImgExtSquareImage1x1,\r\n [PT.ImageExt.MSNDoubleCarousel]: AdPlacementImgExtMSNDoubleCarousel93x100,\r\n [PT.ImageExt.MMAV2MSNRiver]: AdPlacementMmaInMsanV2MSANRiver191x100,\r\n [PT.ImageExt.MMAV2MSNSingleCarousel]: AdPlacementMmaInMsanV2MSNCarousel169x100,\r\n [PT.ImageExt.MSEdgeMobile]: AdPlacementMmaInMsanV2MicrosoftEdgeMobile1x1,\r\n\r\n //\r\n [PT.Outlook.Mobile]: AdPlacementOutlookMobile,\r\n [PT.Outlook.Web]: AdPlacementOutlookWeb,\r\n [PT.BingSearch.Mobile]: AdPlacementBingSearchTextMobile,\r\n [PT.BingSearch.Desktop]: AdPlacementBingSearchTextDesktop,\r\n [PT.BingSearch.Text]: AdPlacementBingSearchText,\r\n\r\n // responsive MMA\r\n [PT.Responsive.MMA.WideImage]: ResponsiveAdPlacementMmaWideImage4x1,\r\n [PT.Responsive.MMA.LandscapeImage]: ResponsiveAdPlacementMmaLandscapeImage191x100,\r\n [PT.Responsive.MMA.SquareImage]: ResponsiveAdPlacementMmaSquareImage1x1,\r\n [PT.Responsive.MMA.VerticalImage]: ResponsiveAdPlacementMmaVerticalImage1x2,\r\n\r\n // responsive MMA in MSAN (Audience Network)\r\n [PT.Responsive.MSAN.WideImage]: ResponsiveAdPlacementMmaInMsanWideImage191x100,\r\n [PT.Responsive.MSAN.SquareImage]: ResponsiveAdPlacementMmaInMsanSquareImage1x1,\r\n [PT.Responsive.MSAN.MSEdgeSingleCarousel]: ResponsiveAdPlacementMmaInMsanMSEdgeSingleCarousel178x100,\r\n [PT.Responsive.MSAN.MSNInArticle]: ResponsiveAdPlacementMmaInMsanMSNInArticle150x100,\r\n [PT.Responsive.MSAN.MSNSmallHeadline]: ResponsiveAdPlacementMmaInMsanMSNSmallHeadline133x100,\r\n\r\n [PT.Responsive.MSANV2.MSEdgeCarousel]: AdPlacementMmaInMsanV2MicrosoftEdgeCarousel201x100,\r\n [PT.Responsive.MSANV2.MSEdgeMobile]: AdPlacementMmaInMsanV2MicrosoftEdgeMobile1x1,\r\n [PT.Responsive.MSANV2.MSANBanner]: AdPlacementMmaInMsanV2MSANBanner2x1,\r\n [PT.Responsive.MSANV2.MSANRiver]: AdPlacementMmaInMsanV2MSANRiver191x100,\r\n [PT.Responsive.MSANV2.MSANRectangle]: AdPlacementMmaInMsanV2MSANRectangle191x100,\r\n [PT.Responsive.MSANV2.MSNCarousel]: AdPlacementMmaInMsanV2MSNCarousel169x100,\r\n [PT.Responsive.MSANV2.MSNPartnerStripe]: AdPlacementMmaInMsanV2MSNPartnerStripe153x100,\r\n [PT.Responsive.MSANV2.MSNRestoday]: AdPlacementMmaInMsanV2MSNRestoday124x100,\r\n\r\n // responsive text\r\n [PT.Responsive.Outlook.Mobile]: ResponsiveAdPlacementOutlookMobile,\r\n [PT.Responsive.Outlook.Web]: ResponsiveAdPlacementOutlookWeb,\r\n [PT.Responsive.BingSearch.Text]: ResponsiveAdPlacementBingSearchText,\r\n\r\n // dynamic search ad\r\n [PT.DynamicSearch.Dynamic]: AdPlacementDynamicSearch,\r\n\r\n // responsive search ad\r\n [PT.ResponsiveSearch.Text]: AdPlacementResponsiveSearch,\r\n [PT.ResponsiveSearch.Desktop]: AdPlacementResponsiveSearchDesktop,\r\n [PT.ResponsiveSearch.Mobile]: AdPlacementResponsiveSearchMobile,\r\n\r\n // responsive boost\r\n [PT.Responsive.Boost.WindowsSpotlight]: ResponsiveAdPlacementBoostWindowsSpotlight191x100,\r\n [PT.Responsive.Boost.DiscoverCard]: ResponsiveAdPlacementBoostDiscoverCard1x1,\r\n [PT.Responsive.Boost.StartMenu]: ResponsiveAdPlacementBoostStartMenu,\r\n [PT.Responsive.Boost.ActionCenter]: ResponsiveAdPlacementBoostActionCenter,\r\n [PT.Responsive.Boost.Banner]: ResponsiveAdPlacementBoostBanner,\r\n [PT.Responsive.Boost.Prong1Prong2Feed]: ResponsiveAdPlacementBoostProngFeed191x100,\r\n [PT.Responsive.Boost.Coachmark]: ResponsiveAdPlacementBoostCoachmark175x100,\r\n\r\n // responsive pmax\r\n [PT.Responsive.PMax.AudienceSquareImage]: ResponsiveAdPlacementMmaInMsanSquareImage1x1,\r\n [PT.Responsive.PMax.AudienceWideImage]: ResponsiveAdPlacementMmaInMsanWideImage191x100,\r\n [PT.Responsive.PMax.MMALandscapeImage]: ResponsiveAdPlacementMmaLandscapeImage191x100,\r\n [PT.Responsive.PMax.MMAVerticalImage]: ResponsiveAdPlacementMmaVerticalImage1x2,\r\n [PT.Responsive.PMax.MMAWideImage]: ResponsiveAdPlacementMmaWideImage4x1,\r\n [PT.Responsive.PMax.MSNInArticle]: ResponsiveAdPlacementMmaInMsanMSNInArticle150x100,\r\n [PT.Responsive.PMax.MSNSmallHeadline]: ResponsiveAdPlacementMmaInMsanMSNSmallHeadline133x100,\r\n [PT.Responsive.PMax.MSEdgeSingleCarousel]: ResponsiveAdPlacementMmaInMsanMSEdgeSingleCarousel178x100,\r\n [PT.Responsive.PMax.MMAV2MSEdgeCarousel]: AdPlacementMmaInMsanV2MicrosoftEdgeCarousel201x100,\r\n [PT.Responsive.PMax.MMAV2MSNSingleCarousel]: AdPlacementMmaInMsanV2MSNCarousel169x100,\r\n [PT.Responsive.PMax.MMAV2MSNRestoday]: AdPlacementMmaInMsanV2MSNRestoday124x100,\r\n [PT.Responsive.PMax.MMAV2MSNPartnerStripe]: AdPlacementMmaInMsanV2MSNPartnerStripe153x100,\r\n [PT.Responsive.PMax.MMAV2MSNRiver]: AdPlacementMmaInMsanV2MSANRiver191x100,\r\n [PT.Responsive.PMax.MSEdgeMobile]: AdPlacementMmaInMsanV2MicrosoftEdgeMobile1x1,\r\n\r\n // Boost\r\n [PT.Boost.HeroImageCarousel200x100]: AdPlacementBoostHeroImageCarousel,\r\n [PT.Boost.HeroImageCarousel122x100]: AdPlacementBoostHeroImageCarousel,\r\n [PT.Boost.HeroImageCarousel159x100]: AdPlacementBoostHeroImageCarousel,\r\n [PT.Boost.HeroImageCarousel180x100]: AdPlacementBoostHeroImageCarousel,\r\n [PT.Boost.HeroImageCarousel233x100]: AdPlacementBoostHeroImageCarousel,\r\n [PT.Boost.HeroImageCarousel320x100]: AdPlacementBoostHeroImageCarousel,\r\n [PT.Boost.HeroImageCarousel57x100]: AdPlacementBoostHeroImageCarousel,\r\n [PT.Boost.WindowsSpotlight]: AdPlacementBoostWindowsSpotlight191x100,\r\n [PT.Boost.DiscoverCard]: AdPlacementBoostDiscoverCard1x1,\r\n [PT.Boost.StartMenu]: AdPlacementBoostStartMenu,\r\n [PT.Boost.ActionCenter]: AdPlacementBoostActionCenter,\r\n [PT.Boost.Banner]: AdPlacementBoostBanner,\r\n [PT.Boost.Prong1Prong2Feed]: AdPlacementBoostProngFeed191x100,\r\n [PT.Boost.Coachmark]: AdPlacementBoostCoachmark175x100,\r\n\r\n // LinkedIn\r\n [PT.LinkedIn.Landscape.SingleImageDesktop]: AdPlacementLinkedInSingleImageDesktop,\r\n [PT.LinkedIn.Landscape.SingleImageMobile]: AdPlacementLinkedInSingleImageMobile,\r\n\r\n [PT.LinkedIn.Square.SingleImageDesktop]: AdPlacementLinkedInSingleImageDesktop,\r\n [PT.LinkedIn.Square.SingleImageMobile]: AdPlacementLinkedInSingleImageMobile,\r\n\r\n [PT.LinkedIn.Vertical.SingleImageMobile]: AdPlacementLinkedInSingleImageMobile,\r\n\r\n // Unified App Ads\r\n [PT.UnifiedAppAds.VideoHorizontal]: AppAdsVideoHorizontalPlacement,\r\n [PT.UnifiedAppAds.BingSearch]: AppAdsBingSearchPlacement,\r\n [PT.UnifiedAppAds.BingSearchText]: AppAdsBingSearchPlacementText,\r\n [PT.UnifiedAppAds.CasualGamesDimensions]: AppAdsCasualGamesDimensionsPlacement,\r\n [PT.UnifiedAppAds.M365Outlook]: AppAdsM365OutlookPlacement,\r\n [PT.UnifiedAppAds.MSNDisplay]: AppAdsMSNDisplayPlacement,\r\n};\r\n\r\nexport const getAdPlacementComponent = placementType => PlacementType2Component[placementType];\r\n","/* eslint-disable react/prop-types */\r\nimport _ from 'underscore';\r\nimport classnames from 'classnames';\r\nimport React, { useMemo } from 'react';\r\n\r\nimport { getAdPlacementComponent } from './get-ad-placement-component';\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { getAdPreviewGridLayoutStyles } from '../styles';\r\nimport { pickSingleImageFromImageList } from '../ad-preview-model/use-ad-preview-model';\r\n\r\n// import {\r\n// UAPVMSingleImagePlacement as TSingleImageViewModel,\r\n// UAPVMPlacement as TMultiImageViewModel,\r\n// } from '../@types';\r\n\r\n// interface GridLayoutProps {\r\n// placementList: Array | undefined | null;\r\n// onRenderPlacement: Function;\r\n// onRenderEmptyView?: Function | undefined | null;\r\n// gridLayoutContainerClassName?: String | undefined | null;\r\n// classes: {\r\n// adPreviewGridLayoutContainer: string;\r\n// };\r\n// }\r\n\r\nconst GridLayout /* : React.FC */ = ({\r\n placementList,\r\n onRenderPlacement,\r\n onRenderEmptyView,\r\n gridLayoutContainerClassName,\r\n classes,\r\n}) => {\r\n const emptyView = useMemo(() => {\r\n if (onRenderEmptyView) {\r\n return onRenderEmptyView(placementList);\r\n }\r\n return null;\r\n }, [onRenderEmptyView, placementList]);\r\n\r\n const placementComponentList = useMemo(() => {\r\n const ret = _.map(placementList, (placement, index) => {\r\n const { placementMeta, images, ...rest } = placement || {};\r\n const { placementType, hasMultiImages } = placementMeta || {};\r\n const AdPlacementComponent = getAdPlacementComponent(placementType);\r\n if (AdPlacementComponent) {\r\n // convert multi-image model to single-image model if needed\r\n let newPlacement = placement;\r\n if (!hasMultiImages && !_.isEmpty(images)) {\r\n const selectedImage = pickSingleImageFromImageList(images) || {};\r\n newPlacement = { placementMeta, ...selectedImage, ...rest };\r\n }\r\n return onRenderPlacement(newPlacement, AdPlacementComponent, index);\r\n }\r\n return null;\r\n });\r\n return ret;\r\n }, [onRenderPlacement, placementList]);\r\n\r\n return !_.isEmpty(placementComponentList) ? (\r\n
\r\n {placementComponentList}\r\n
\r\n ) : emptyView;\r\n};\r\n\r\nexport const AdPreviewGridLayout = withUAPLThemedStyles(\r\n GridLayout,\r\n getAdPreviewGridLayoutStyles,\r\n { componentName: 'AdPreviewGridLayout' }\r\n);\r\n","export const getAdPreviewGridLayoutStyles = (/* components, { palette = {} } = {} */) => ({\r\n adPreviewGridLayoutContainer: {\r\n display: 'grid',\r\n },\r\n});\r\n","/* eslint-disable react/prop-types */\r\n\r\nimport _ from 'underscore';\r\nimport classnames from 'classnames';\r\nimport React, { useMemo } from 'react';\r\n\r\nimport { getAdPlacementComponent } from './get-ad-placement-component';\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { getAdPreviewSinglePlacementLayoutStyles } from '../styles';\r\nimport { pickSingleImageFromImageList } from '../ad-preview-model/use-ad-preview-model';\r\n\r\n// import {\r\n// UAPVMSingleImagePlacement as TSingleImageViewModel,\r\n// UAPVMPlacement as TMultiImageViewModel,\r\n// } from '../@types';\r\n\r\n// interface SinglePlacementLayoutProps {\r\n// placementData: TSingleImageViewModel | TMultiImageViewModel | undefined | null;\r\n// onRenderPlacement: Function;\r\n// onRenderEmptyView?: Function | undefined | null;\r\n// layoutContainerClassName?: String | undefined | null;\r\n// classes: {\r\n// adPreviewLayoutContainer: string;\r\n// };\r\n// }\r\n\r\nconst SinglePlacementLayout = ({\r\n placementData, // SinglePlacementLayoutProps\r\n onRenderPlacement,\r\n onRenderEmptyView,\r\n layoutContainerClassName,\r\n hasContainer = true,\r\n classes,\r\n}) => {\r\n const emptyView = useMemo(() => {\r\n if (onRenderEmptyView) {\r\n return onRenderEmptyView(placementData);\r\n }\r\n return null;\r\n }, [onRenderEmptyView, placementData]);\r\n\r\n const placementComponent = useMemo(() => {\r\n const { placementMeta, images, ...rest } = placementData || {};\r\n const { placementType, hasMultiImages = false } = placementMeta || {};\r\n const AdPlacementComponent = getAdPlacementComponent(placementType);\r\n if (AdPlacementComponent) {\r\n // convert multi-image model to single-image model if needed\r\n if (!hasMultiImages && !_.isEmpty(images)) {\r\n const selectedImage = pickSingleImageFromImageList(images) || {};\r\n const newPlacement = { placementMeta, ...selectedImage, ...rest };\r\n return onRenderPlacement(newPlacement, AdPlacementComponent);\r\n }\r\n return onRenderPlacement(placementData, AdPlacementComponent);\r\n }\r\n return null;\r\n }, [onRenderPlacement, placementData]);\r\n\r\n return hasContainer ? (\r\n
\r\n {placementComponent || emptyView}\r\n
\r\n ) : (\r\n <>\r\n {placementComponent || emptyView}\r\n \r\n );\r\n};\r\n\r\nexport const AdPreviewSinglePlacementLayout = withUAPLThemedStyles(\r\n SinglePlacementLayout,\r\n getAdPreviewSinglePlacementLayoutStyles,\r\n { componentName: 'AdPreviewSinglePlacementLayout' }\r\n);\r\n","export const getAdPreviewSinglePlacementLayoutStyles = (/* components, { palette = {} } = {} */) => ({\r\n adPreviewLayoutContainer: {\r\n },\r\n});\r\n","import classNames from 'classnames';\r\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Carousel as BsCarousel } from 'react-bootstrap';\r\n\r\nconst bsProps = {\r\n bsClass: 'carousel',\r\n};\r\n\r\n// custom the Carousel component from react-bootstrap to put the\r\n// controls (left/right arrows) and indicators (dots) within a same\r\n// parent div, to make it easy to align them, like this: \"< .... >\"\r\n//\r\n// !!NOTE!!\r\n// The implementation is highly coupled with the internal implementation\r\n// of react-bootstrap Carousel, it calls the internal methods of BsCarousel\r\n// by using reference\r\nexport const CustomCarousel = (props) => {\r\n const carouselRef = useRef(null);\r\n const {\r\n controls, // ignore this prop\r\n indicators, // ignore this prop\r\n activeIndex,\r\n children,\r\n InjectedControls,\r\n carouselWrapperClassName,\r\n ...rest\r\n } = props;\r\n\r\n const [carouselInstance, setCarouselInstance] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!carouselInstance) {\r\n setCarouselInstance(carouselRef.current);\r\n }\r\n }, [carouselInstance]);\r\n\r\n const [leftArrowControl, rightArrowControl] = useMemo(() => {\r\n if (carouselInstance) {\r\n return carouselInstance.renderControls({ ...props, bsProps });\r\n }\r\n return [undefined, undefined];\r\n }, [carouselInstance, props]);\r\n\r\n return (\r\n
\r\n \r\n {children}\r\n \r\n
\r\n {/* render custom controls and indicators in the same parent div */}\r\n {leftArrowControl}\r\n {carouselInstance ? carouselInstance.renderIndicators(children, activeIndex, bsProps) : null}\r\n {rightArrowControl}\r\n {\r\n InjectedControls ? <> {InjectedControls} : null\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nCustomCarousel.propTypes = {\r\n activeIndex: PropTypes.number.isRequired,\r\n controls: PropTypes.bool,\r\n indicators: PropTypes.bool,\r\n children: PropTypes.node,\r\n InjectedControls: PropTypes.element,\r\n carouselWrapperClassName: PropTypes.string,\r\n};\r\n\r\nCustomCarousel.defaultProps = {\r\n // use the default props from react-bootstrap Carousel, including default icons\r\n ...BsCarousel.defaultProps,\r\n //\r\n controls: false,\r\n indicators: false,\r\n children: null,\r\n InjectedControls: null,\r\n carouselWrapperClassName: null,\r\n};\r\n\r\nCustomCarousel.Caption = BsCarousel.Caption;\r\nCustomCarousel.Item = BsCarousel.Item;\r\n","import _, { map, isEmpty } from 'underscore';\r\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { Carousel } from '@bingads-webui-react/primitive-unthemed';\r\nimport { PlayPauseButtons } from '@bingads-webui-campaign-react/play-pause-buttons';\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { getAdPlacementComponent } from './get-ad-placement-component';\r\nimport { getCarouselLayoutStyles } from '../styles/layout-components/carousel-layout-styles';\r\nimport { pickSingleImageFromImageList } from '../ad-preview-model/use-ad-preview-model';\r\nimport { CustomCarousel } from './custom-carousel-component';\r\n\r\nconst autoRotateInterval = 3000;\r\n\r\nexport const CarouselLayout = ({\r\n activeIndex,\r\n setActiveIndex,\r\n classes,\r\n customCarouselRootClassName,\r\n customCarouselLayoutStyles,\r\n customPlayPauseButtonsStyles,\r\n enableAutoRotate,\r\n startAutoRotating,\r\n i18n,\r\n onRenderEmptyView,\r\n onRenderPlacement,\r\n onActiveIndexChange,\r\n onRenderHeader,\r\n placementList,\r\n disableDefaultStyles,\r\n useCustomCarousel,\r\n customCarouselWrapperClassName,\r\n}) => {\r\n const [index, setIndex] = useState(0);\r\n\r\n // if external activeIndex is provided, use it, otherwise use the internal state\r\n const curActiveIndex = !_.isUndefined(activeIndex) ? activeIndex : index;\r\n const curSetIndex = setActiveIndex || setIndex;\r\n\r\n const [direction, setDirection] = useState('next');\r\n const [auto, setAuto] = useState(enableAutoRotate && startAutoRotating);\r\n const [startAutoRotateListner, setStartAutoRotateListner] = useState(false);\r\n\r\n const autoRotateListener = useRef(null);\r\n\r\n const emptyView = useMemo(() => {\r\n if (onRenderEmptyView) {\r\n return onRenderEmptyView(placementList);\r\n }\r\n return null;\r\n }, [onRenderEmptyView, placementList]);\r\n\r\n const placementComponentList = useMemo(() => {\r\n const ret = map(placementList, (placement, i) => {\r\n const { placementMeta, images, ...rest } = placement || {};\r\n const { placementType, hasMultiImages } = placementMeta || {};\r\n const AdPlacementComponent = getAdPlacementComponent(placementType);\r\n if (AdPlacementComponent) {\r\n // convert multi-image model to single-image model if needed\r\n let newPlacement = placement;\r\n if (!hasMultiImages && !isEmpty(images)) {\r\n const selectedImage = pickSingleImageFromImageList(images) || {};\r\n newPlacement = { placementMeta, ...selectedImage, ...rest };\r\n }\r\n return [onRenderPlacement(newPlacement, AdPlacementComponent, i), placement];\r\n }\r\n return [null, placement];\r\n });\r\n return ret;\r\n }, [onRenderPlacement, placementList]);\r\n\r\n const onRenderCarouselHeader = useCallback(() => {\r\n if (onRenderHeader) {\r\n const placement = placementList ? placementList[curActiveIndex] : null;\r\n const { placementMeta, images, ...rest } = placement || {};\r\n const { hasMultiImages } = placementMeta || {};\r\n let newPlacement = placement;\r\n if (!hasMultiImages && !isEmpty(images)) {\r\n const selectedImage = pickSingleImageFromImageList(images) || {};\r\n newPlacement = { placementMeta, ...selectedImage, ...rest };\r\n }\r\n return onRenderHeader(newPlacement, curActiveIndex);\r\n }\r\n return null;\r\n }, [curActiveIndex, onRenderHeader, placementList]);\r\n\r\n const clearAutoRotateListener = useCallback(() => {\r\n if (autoRotateListener.current) {\r\n clearTimeout(autoRotateListener.current);\r\n autoRotateListener.current = null;\r\n }\r\n }, []);\r\n\r\n const autoRotate = useCallback((currentIndex) => {\r\n if (!auto || isEmpty(placementList)) {\r\n // eslint-disable-next-line no-useless-return\r\n return;\r\n }\r\n\r\n setStartAutoRotateListner(true);\r\n\r\n const previewCount = placementList.length;\r\n let nextIndex = currentIndex + 1;\r\n if (nextIndex >= previewCount) {\r\n nextIndex = 0;\r\n }\r\n\r\n autoRotateListener.current = setTimeout(() => {\r\n curSetIndex(nextIndex);\r\n setDirection('next');\r\n autoRotate(nextIndex);\r\n }, (autoRotateInterval));\r\n }, [auto, curSetIndex, placementList]);\r\n\r\n const start = useCallback(() => {\r\n setDirection('next');\r\n setAuto(true);\r\n }, []);\r\n\r\n const stop = useCallback(() => {\r\n if (auto) {\r\n setAuto(false);\r\n clearAutoRotateListener();\r\n setStartAutoRotateListner(false);\r\n }\r\n }, [clearAutoRotateListener, auto]);\r\n\r\n const onSelect = useCallback((selectedIndex, e) => {\r\n stop();\r\n curSetIndex(selectedIndex || 0);\r\n setDirection(e.direction);\r\n }, [curSetIndex, stop]);\r\n\r\n // auto rotate at initialisation when auto rotate is enabled\r\n useEffect(() => {\r\n if (auto && !startAutoRotateListner) {\r\n autoRotate(curActiveIndex);\r\n }\r\n }, [autoRotate, auto, startAutoRotateListner, curActiveIndex]);\r\n\r\n useEffect(() => {\r\n if (onActiveIndexChange) {\r\n onActiveIndexChange(curActiveIndex);\r\n }\r\n }, [curActiveIndex, onActiveIndexChange]);\r\n\r\n useEffect(() => () => {\r\n clearAutoRotateListener();\r\n }, [clearAutoRotateListener]);\r\n\r\n useEffect(() => {\r\n if (placementList && placementList.length > 0 && curActiveIndex >= placementList.length) {\r\n setActiveIndex(0);\r\n }\r\n }, [curActiveIndex, placementList, setActiveIndex]);\r\n\r\n const CarouselComponent = useCustomCarousel ? CustomCarousel : Carousel;\r\n const moreCarouselProps = useMemo(\r\n () => (useCustomCarousel ? {\r\n carouselWrapperClassName: classnames(customCarouselWrapperClassName, classes.customCarouselWrapper),\r\n } : {}),\r\n [classes.customCarouselWrapper, customCarouselWrapperClassName, useCustomCarousel]\r\n );\r\n\r\n return !isEmpty(placementComponentList) ? (\r\n
\r\n
\r\n {onRenderCarouselHeader()}\r\n
\r\n : null}\r\n nextLabel={i18n.getString(_TL_('Next ad preview'))}\r\n prevLabel={i18n.getString(_TL_('Previous ad preview'))}\r\n className={classnames(!disableDefaultStyles && classes.adPreviewCarousel, customCarouselLayoutStyles || classes.baseCarouselLayoutStyles, 'ad-placement-preview')}\r\n {...moreCarouselProps}\r\n >\r\n {\r\n placementComponentList.map(([placementComponent, placement], idx) => {\r\n const { placementMeta, effectiveImageUrl } = placement || {};\r\n return (\r\n // eslint-disable-next-line react/no-array-index-key\r\n \r\n {placementComponent}\r\n \r\n );\r\n })\r\n }\r\n \r\n
\r\n ) : emptyView;\r\n};\r\n\r\nCarouselLayout.propTypes = {\r\n activeIndex: PropTypes.number,\r\n setActiveIndex: PropTypes.func,\r\n classes: PropTypes.shape({\r\n carouselLayoutContainer: PropTypes.string.isRequired,\r\n adPreviewCarousel: PropTypes.string.isRequired,\r\n baseCarouselLayoutStyles: PropTypes.string.isRequired,\r\n playPauseButtons: PropTypes.string.isRequired,\r\n }),\r\n customCarouselRootClassName: PropTypes.string,\r\n customCarouselLayoutStyles: PropTypes.string,\r\n customPlayPauseButtonsStyles: PropTypes.string,\r\n enableAutoRotate: PropTypes.bool,\r\n startAutoRotating: PropTypes.bool,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n onRenderEmptyView: PropTypes.func,\r\n onRenderHeader: PropTypes.func,\r\n onRenderPlacement: PropTypes.func.isRequired,\r\n placementList: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n onActiveIndexChange: PropTypes.func,\r\n disableDefaultStyles: PropTypes.bool,\r\n useCustomCarousel: PropTypes.bool,\r\n customCarouselWrapperClassName: PropTypes.string,\r\n};\r\n\r\nCarouselLayout.defaultProps = {\r\n activeIndex: undefined,\r\n setActiveIndex: undefined,\r\n customCarouselRootClassName: null,\r\n customCarouselLayoutStyles: null,\r\n customPlayPauseButtonsStyles: null,\r\n enableAutoRotate: false,\r\n startAutoRotating: true,\r\n onRenderEmptyView: null,\r\n onActiveIndexChange: null,\r\n onRenderHeader: null,\r\n disableDefaultStyles: false,\r\n useCustomCarousel: false,\r\n customCarouselWrapperClassName: null,\r\n classes: {},\r\n};\r\n\r\nexport const AdPreviewCarouselLayout = withUAPLThemedStyles(CarouselLayout, getCarouselLayoutStyles, { componentName: 'AdPreviewCarouselLayout' });\r\n\r\nexport const UnstyledAdPreviewCarouselLayout = CarouselLayout;\r\n\r\n// when trying to reuse the Carousel instance with different children count, the carousel behaves\r\n// abnormal, seems its internal states are messed up, fix it by creating a new component when the\r\n// resetOn prop changes\r\nexport const AdPreviewCarouselLayoutEx = (props) => {\r\n const { resetOn } = props;\r\n const LayoutComponent = useCallback(\r\n props2 => ,\r\n [resetOn]\r\n );\r\n return ;\r\n};\r\n\r\n// todo: in addition to above issue, another issue is that the left and right buttons and\r\n// the indicator dots are not in the same parent element, which make it hard to align them,\r\n// need to refactor the Carousel component to fix it\r\n","export const getCarouselLayoutStyles = (components, { palette = {}, iconFontFamily = 'MsAds MDL2 Assets' } = {}) => ({\r\n carouselLayoutContainer: {\r\n position: 'relative',\r\n width: '100%',\r\n },\r\n\r\n adPreviewCarousel: {\r\n position: 'relative',\r\n\r\n '& .carousel-inner': {\r\n paddingBottom: 64,\r\n\r\n // '& > .item.active': {\r\n // paddingLeft: 24,\r\n // paddingRight: 24,\r\n // },\r\n },\r\n '& ol.carousel-indicators': {\r\n position: 'absolute',\r\n width: 'auto',\r\n\r\n '& li': {\r\n background: 'none',\r\n border: '1px solid #605E5C',\r\n borderRadius: 10,\r\n margin: '0 10px 0 0',\r\n height: 10,\r\n width: 10,\r\n },\r\n\r\n '& li.active': {\r\n background: palette.themePrimary,\r\n border: `1px solid ${palette.themePrimary}`,\r\n },\r\n },\r\n\r\n '& .carousel-controls': {\r\n display: 'none',\r\n },\r\n\r\n '& .carousel-control': {\r\n color: palette.themePrimary,\r\n position: 'absolute',\r\n left: 'auto',\r\n top: 'auto',\r\n right: 0,\r\n bottom: 0,\r\n height: 32,\r\n width: 20,\r\n margin: '20px 24px',\r\n textShadow: 'none',\r\n background: 'white',\r\n\r\n '&:focus': {\r\n outline: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n\r\n '&.left': {\r\n position: 'absolute',\r\n },\r\n\r\n '&.right': {\r\n position: 'absolute',\r\n },\r\n\r\n '& .glyphicon-chevron-left, & .glyphicon-chevron-right': {\r\n fontFamily: iconFontFamily,\r\n position: 'relative',\r\n top: 'auto',\r\n right: 'auto',\r\n bottom: 'auto',\r\n left: 'auto',\r\n margin: 0,\r\n fontSize: 16,\r\n lineHeight: 1,\r\n verticalAlign: 0,\r\n },\r\n },\r\n },\r\n baseCarouselLayoutStyles: {\r\n '& ol.carousel-indicators': {\r\n bottom: 0,\r\n left: 20,\r\n margin: '20px 24px',\r\n },\r\n '& .carousel-control.left': {\r\n left: -5,\r\n bottom: -7,\r\n },\r\n '& .carousel-control.right': {\r\n left: 105,\r\n bottom: -7,\r\n },\r\n },\r\n playPauseButtons: {\r\n position: 'absolute',\r\n left: 156,\r\n bottom: 13.5,\r\n display: 'initial !important',\r\n\r\n '& span': {\r\n color: palette.themePrimary,\r\n },\r\n },\r\n\r\n customCarouselWrapper: {\r\n '& .custom-carousel-controls-and-indicators': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n position: 'absolute',\r\n bottom: 3,\r\n margin: [10, 15],\r\n\r\n '& ol.carousel-indicators': {\r\n position: 'relative !important',\r\n top: 'unset !important',\r\n left: 'unset !important',\r\n right: 'unset !important',\r\n bottom: '2px !important',\r\n margin: '0px 0px 0px 10px !important',\r\n padding: 'unset !important',\r\n width: 'auto',\r\n\r\n '& li': {\r\n background: 'none',\r\n border: '1px solid #605E5C',\r\n borderRadius: 10,\r\n margin: '0 10px 0 0',\r\n height: 10,\r\n width: 10,\r\n },\r\n '& li.active': {\r\n background: palette.themePrimary,\r\n border: `1px solid ${palette.themePrimary}`,\r\n },\r\n },\r\n\r\n '& .carousel-control': {\r\n position: 'relative !important',\r\n margin: '0px !important',\r\n background: 'white',\r\n top: 'unset !important',\r\n left: 'unset !important',\r\n right: 'unset !important',\r\n bottom: 'unset !important',\r\n color: palette.themePrimary,\r\n\r\n height: 32,\r\n width: 20,\r\n textShadow: 'none',\r\n\r\n '&:focus': {\r\n outline: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n\r\n '& .glyphicon-chevron-left, & .glyphicon-chevron-right': {\r\n fontFamily: iconFontFamily,\r\n position: 'relative',\r\n top: 'auto',\r\n right: 'auto',\r\n bottom: 'auto',\r\n left: 'auto',\r\n margin: 0,\r\n fontSize: 16,\r\n lineHeight: 1,\r\n verticalAlign: 0,\r\n },\r\n },\r\n\r\n '& $playPauseButtons': {\r\n position: 'relative !important',\r\n display: 'initial !important',\r\n left: 'unset !important',\r\n top: 'unset !important',\r\n bottom: '1px !important',\r\n },\r\n },\r\n },\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n// import classnames from 'classnames';\r\n\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { getStructuredSnippetExtensionStyles } from '../styles';\r\n\r\nconst StructuredSnippetExtension = ({\r\n classes,\r\n extensionData,\r\n}) => (\r\n
\r\n {extensionData.map(({ Category, Texts }) => (\r\n
\r\n {Category && {`${Category}: `}}\r\n {Texts && {Texts.join(', ')}}\r\n
\r\n ))}\r\n
\r\n);\r\n\r\nStructuredSnippetExtension.propTypes = {\r\n classes: PropTypes.shape({\r\n structuredSnippetExtensionContainer: PropTypes.string,\r\n }),\r\n extensionData: PropTypes.arrayOf(PropTypes.shape({\r\n Category: PropTypes.string,\r\n Texts: PropTypes.string,\r\n })),\r\n};\r\n\r\nStructuredSnippetExtension.defaultProps = {\r\n classes: {},\r\n extensionData: [],\r\n};\r\n\r\nexport const AdPreviewStructuredSnippetExtension = withUAPLThemedStyles(\r\n StructuredSnippetExtension,\r\n getStructuredSnippetExtensionStyles, { componentName: 'AdPreviewStructuredSnippetExtension' }\r\n);\r\n","export const getCalloutExtensionStyles = () => ({\r\n calloutExtensionContainer: {\r\n color: '#767676',\r\n fontFamily: 'Roboto',\r\n lineHeight: '22px',\r\n },\r\n});\r\n\r\nexport const getPriceExtensionStyles = () => ({\r\n priceExtensionContainer: {\r\n color: '#4007A2',\r\n fontFamily: 'Roboto',\r\n lineHeight: '22px',\r\n '& a': {\r\n color: '#4007A2',\r\n },\r\n '& div': {\r\n display: 'inline-block',\r\n },\r\n },\r\n});\r\n\r\nexport const getPromotionExtensionStyles = () => ({\r\n promotionExtensionContainer: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n '& .promotion-info': {\r\n '& span': {\r\n color: '#767676',\r\n fontFamily: 'Roboto',\r\n lineHeight: '22px',\r\n },\r\n '& .discount': {\r\n color: '#1A0DAB',\r\n },\r\n },\r\n '& .promotion-rate': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '3px',\r\n '& span': {\r\n color: '#767676',\r\n fontFamily: 'Roboto',\r\n fontWeight: '700',\r\n lineHeight: '22px',\r\n },\r\n '& .rating-icons': {\r\n marginTop: '-2px',\r\n display: 'flex',\r\n },\r\n '& .reviews': {\r\n color: '#767676',\r\n fontWeight: '400',\r\n },\r\n },\r\n },\r\n});\r\n\r\nexport const getSitelinkExtensionStyles = () => ({\r\n sitelinkExtensionContainer: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n '& .sitelink-row': {\r\n display: 'flex',\r\n gap: '48px',\r\n marginTop: '12px',\r\n '& .sitelink-tile': {\r\n width: '270px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '3px',\r\n '& .title': {\r\n color: '#4007A2',\r\n fontFamily: 'Roboto',\r\n fontSize: '20px',\r\n lineHeight: '24px',\r\n },\r\n '& .text': {\r\n color: '#666',\r\n fontFamily: 'Roboto',\r\n lineHeight: '22px',\r\n },\r\n },\r\n },\r\n },\r\n});\r\n\r\nexport const getStructuredSnippetExtensionStyles = () => ({\r\n structuredSnippetExtensionContainer: {\r\n '& .category': {\r\n color: '#767676',\r\n fontFamily: 'Roboto',\r\n fontWeight: '700',\r\n lineHeight: '22px',\r\n },\r\n '& .texts': {\r\n color: '#767676',\r\n fontFamily: 'Roboto',\r\n lineHeight: '22px',\r\n },\r\n },\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n// import classnames from 'classnames';\r\n\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { getCalloutExtensionStyles } from '../styles';\r\n\r\nconst CalloutExtension = ({\r\n classes,\r\n extensionData,\r\n}) => (\r\n
\r\n {extensionData.map(({ Text }) => Text).join(' · ')}\r\n
\r\n);\r\n\r\nCalloutExtension.propTypes = {\r\n classes: PropTypes.shape({\r\n calloutExtensionContainer: PropTypes.string,\r\n }),\r\n extensionData: PropTypes.arrayOf(PropTypes.shape({\r\n Text: PropTypes.string,\r\n })),\r\n};\r\n\r\nCalloutExtension.defaultProps = {\r\n classes: {},\r\n extensionData: [],\r\n};\r\n\r\nexport const AdPreviewCalloutExtension = withUAPLThemedStyles(\r\n CalloutExtension,\r\n getCalloutExtensionStyles, { componentName: 'AdPreviewCalloutExtension' }\r\n);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n// import classnames from 'classnames';\r\n\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { getPriceExtensionStyles } from '../styles';\r\n\r\nconst PriceExtension = ({\r\n classes,\r\n extensionData,\r\n}) => (\r\n
\r\n {\r\n extensionData.map(({\r\n Header, Description, Currency, Price, FinalUrls,\r\n }, index) => (\r\n \r\n {Header}\r\n {` - ${Description} `}\r\n
{`${Currency + Price}`}
\r\n {index < extensionData.length - 1 && {' · '}}\r\n
\r\n ))\r\n }\r\n
\r\n);\r\n\r\nPriceExtension.propTypes = {\r\n classes: PropTypes.shape({\r\n priceExtensionContainer: PropTypes.string,\r\n }),\r\n extensionData: PropTypes.arrayOf(PropTypes.shape({\r\n Header: PropTypes.string,\r\n Description: PropTypes.string,\r\n Currency: PropTypes.string,\r\n Price: PropTypes.string,\r\n FinalUrls: PropTypes.arrayOf(PropTypes.string),\r\n })),\r\n};\r\n\r\nPriceExtension.defaultProps = {\r\n classes: {},\r\n extensionData: [],\r\n};\r\n\r\nexport const AdPreviewPriceExtension = withUAPLThemedStyles(\r\n PriceExtension,\r\n getPriceExtensionStyles, { componentName: 'AdPreviewPriceExtension' }\r\n);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n// import classnames from 'classnames';\r\n\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { getPromotionExtensionStyles } from '../styles';\r\nimport star from './media/star.svg';\r\n\r\nconst PromotionExtension = ({\r\n classes,\r\n extensionData,\r\n}) => (\r\n extensionData.map(({\r\n Occasion, PromotionType, PromotionItem, PromotionDetail, DateRange, hasOccasion, hasPromotionDetail, hasDateRange,\r\n }) => (\r\n
\r\n
\r\n {hasOccasion && {`${Occasion}: `}}\r\n {PromotionType}\r\n {` · ${PromotionItem}`}\r\n {hasPromotionDetail && {` · ${PromotionDetail}`}}\r\n {hasDateRange && {` · ${DateRange}`}}\r\n
\r\n
\r\n 5/5\r\n
\r\n {[...Array(5)].map(() => (\r\n \"star\"\r\n ))}\r\n
\r\n (1,000 reviews)\r\n
\r\n
\r\n ))\r\n);\r\n\r\nPromotionExtension.propTypes = {\r\n classes: PropTypes.shape({\r\n promotionExtensionContainer: PropTypes.string,\r\n }),\r\n extensionData: PropTypes.arrayOf(PropTypes.shape({\r\n Occasion: PropTypes.string,\r\n PromotionType: PropTypes.string,\r\n PromotionItem: PropTypes.string,\r\n PromotionDetail: PropTypes.string,\r\n DateRange: PropTypes.string,\r\n hasOccasion: PropTypes.bool,\r\n hasPromotionDetail: PropTypes.bool,\r\n hasDateRange: PropTypes.bool,\r\n })),\r\n};\r\n\r\nPromotionExtension.defaultProps = {\r\n classes: {},\r\n extensionData: [],\r\n};\r\n\r\nexport const AdPreviewPromotionExtension = withUAPLThemedStyles(\r\n PromotionExtension,\r\n getPromotionExtensionStyles, { componentName: 'AdPreviewPromotionExtension' }\r\n);\r\n","import React, { useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\n// import classnames from 'classnames';\r\n\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { getSitelinkExtensionStyles } from '../styles';\r\n\r\nconst SitelinkExtension = ({\r\n classes,\r\n extensionData,\r\n}) => {\r\n const onRenderTile = useCallback(({\r\n DisplayText, Description1, Description2, DestinationUrl, FinalUrls,\r\n }) => {\r\n let distUrl;\r\n if (DestinationUrl) {\r\n distUrl = DestinationUrl;\r\n } else if (FinalUrls && FinalUrls.length > 0) {\r\n [distUrl] = FinalUrls;\r\n } else {\r\n distUrl = '';\r\n }\r\n if (distUrl && distUrl.indexOf('http') !== 0) {\r\n distUrl = `http://${distUrl}`;\r\n }\r\n\r\n return (\r\n
\r\n {DisplayText}\r\n {Description1 &&
{Description1}
}\r\n {Description2 &&
{Description2}
}\r\n
\r\n );\r\n }, []);\r\n\r\n const tiles = [];\r\n for (let i = 0; i < extensionData.length; i += 2) {\r\n const current = extensionData[i];\r\n const next = i + 1 < extensionData.length ? extensionData[i + 1] : null;\r\n tiles.push((\r\n
\r\n {onRenderTile(current)}\r\n {next && onRenderTile(next)}\r\n
\r\n ));\r\n }\r\n\r\n return (\r\n
\r\n {tiles}\r\n
\r\n );\r\n};\r\n\r\nSitelinkExtension.propTypes = {\r\n classes: PropTypes.shape({\r\n sitelinkExtensionContainer: PropTypes.string,\r\n }),\r\n extensionData: PropTypes.arrayOf(PropTypes.shape({\r\n DisplayText: PropTypes.string,\r\n Description1: PropTypes.string,\r\n Description2: PropTypes.string,\r\n DestinationUrl: PropTypes.string,\r\n FinalUrls: PropTypes.arrayOf(PropTypes.string),\r\n })),\r\n};\r\n\r\nSitelinkExtension.defaultProps = {\r\n classes: {},\r\n extensionData: [],\r\n};\r\n\r\nexport const AdPreviewSitelinkExtension = withUAPLThemedStyles(\r\n SitelinkExtension,\r\n getSitelinkExtensionStyles, { componentName: 'AdPreviewSitelinkExtension' }\r\n);\r\n","export const UAPImageExpansionType = {\r\n None: 'None',\r\n WhitePadding: 'WhitePadding',\r\n // Blur: 'Blur',\r\n Outpainting: 'Outpainting',\r\n SingleColorPadding: 'SingleColorPadding',\r\n};\r\n\r\nexport const UAPCroppingType = {\r\n ManualCrop: 'ManualCrop', // 1\r\n CenterCrop: 'CenterCrop', // 2\r\n SmartCrop: 'SmartCrop', // 3\r\n Unknown: 'Unknown', // 4\r\n};\r\n","import _ from 'underscore';\r\nimport { UAPImageExpansionType, UAPCroppingType } from './constants';\r\n\r\nexport const getExpandedImageUrl = (imageExpansionType, src, paddingColor, expandedImageWidth, expandedImageHeight) => {\r\n if (!imageExpansionType || imageExpansionType === UAPImageExpansionType.None) {\r\n // no expanded image\r\n return null;\r\n }\r\n\r\n const hasQuery = !_.isEmpty(src) && src.indexOf('?') > 0;\r\n const srcWithQuery = hasQuery ? src : `${src}?`;\r\n let queryParams = '';\r\n if (imageExpansionType === UAPImageExpansionType.Outpainting) {\r\n queryParams = hasQuery ? '&ustim=1' : 'ustim=1';\r\n } else if (imageExpansionType === UAPImageExpansionType.WhitePadding\r\n || imageExpansionType === UAPImageExpansionType.SingleColorPadding\r\n ) {\r\n queryParams = `${hasQuery ? '&' : ''}w=${expandedImageWidth}&h=${expandedImageHeight}`;\r\n if (paddingColor) {\r\n const idx = paddingColor.indexOf('#');\r\n queryParams += `&pcl=${paddingColor.slice(idx + 1)}`;\r\n }\r\n }\r\n\r\n return `${srcWithQuery}${queryParams}`;\r\n};\r\n\r\nexport const setROIInfo = (roiInfo, imageUrl) => {\r\n if (!roiInfo || !imageUrl) {\r\n return {};\r\n }\r\n try {\r\n const ROIInfoObj = JSON.parse(roiInfo);\r\n const imageExpansionType = ROIInfoObj.ImageExpansionType;\r\n const expandedImageWidth = imageExpansionType === UAPImageExpansionType.Outpainting ? ROIInfoObj.ThumbnailWidth : ROIInfoObj.PaddingImageWidth;\r\n const expandedImageHeight = imageExpansionType === UAPImageExpansionType.Outpainting ? ROIInfoObj.ThumbnailHeight : ROIInfoObj.PaddingImageHeight;\r\n const paddingColor = ROIInfoObj.PaddingColor;\r\n const expandedImageCropSettings = ROIInfoObj.ImageCropSetting ? _.map(ROIInfoObj.ImageCropSetting, ({ aspectRatio, cropSetting: cs }) => ({\r\n AspectRatio: aspectRatio,\r\n CropSetting: {\r\n SourceHeight: cs.sourceHeight, SourceWidth: cs.sourceWidth, SourceX: cs.sourceX, SourceY: cs.sourceY,\r\n },\r\n })) : null;\r\n const croppingType = imageExpansionType === UAPImageExpansionType.Outpainting ? UAPCroppingType.CenterCrop : UAPCroppingType.SmartCrop;\r\n const originalImageCropSettings = ROIInfoObj.OriginalImageCropSetting ? _.map(ROIInfoObj.OriginalImageCropSetting, ({ aspectRatio, cropSetting: cs }) => ({\r\n AspectRatio: aspectRatio,\r\n CropSetting: {\r\n SourceHeight: cs.sourceHeight, SourceWidth: cs.sourceWidth, SourceX: cs.sourceX, SourceY: cs.sourceY, CroppingType: croppingType,\r\n },\r\n })) : null;\r\n const expandedImageUrl = getExpandedImageUrl(imageExpansionType, imageUrl, paddingColor, expandedImageWidth, expandedImageHeight);\r\n\r\n return {\r\n expandedImageWidth,\r\n expandedImageHeight,\r\n expandedImageCropSettings,\r\n originalImageCropSettings,\r\n expandedImageUrl,\r\n imageExpansionType,\r\n paddingColor,\r\n };\r\n } catch (e) {\r\n return {};\r\n }\r\n};\r\n","import React, { useMemo, useContext, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n Wizard,\r\n LayoutContainer,\r\n Layout,\r\n StepContainer,\r\n} from '@bingads-webui-react/wizard';\r\nimport {\r\n SaveBlocker,\r\n DefaultTemplate,\r\n CancelWizardDialog,\r\n} from '@bingads-webui-react/wizard-ui-library';\r\nimport { FluentSwitcherContext } from '@bingads-webui-react/fluent-version-switcher';\r\nimport { InstrumentationContext } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { WizardPerfMarker } from '@bingads-webui-campaign/wizard-performance-marker';\r\nimport { Scenario, Activity } from '@bingads-webui-react/hoc-with-signal';\r\nimport { PerformanceMarkerProvider } from '@bingads-webui-campaign-react/performance-marker-provider';\r\nimport { setClarityTag } from '@bingads-webui-universal/clarity';\r\n\r\nexport const UnifiedAppWizard = ({\r\n action, storeType, wizardConfig, perfMarker, children,\r\n}) => {\r\n const instrumentation = useContext(InstrumentationContext);\r\n\r\n const wizardName = useMemo(() => `UnifiedAppCampaign${action}-${storeType}`, [action, storeType]);\r\n\r\n const wizardPerfMarker = useMemo(() => (\r\n perfMarker.createChild(wizardName)\r\n ), [perfMarker, wizardName]);\r\n\r\n useEffect(() => {\r\n setClarityTag({ [`UnifiedAppCampaign${action}`]: storeType });\r\n }, [action, storeType]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nUnifiedAppWizard.propTypes = {\r\n perfMarker: PropTypes.shape({\r\n createChild: PropTypes.func.isRequired,\r\n }).isRequired,\r\n action: PropTypes.string.isRequired,\r\n storeType: PropTypes.string.isRequired,\r\n wizardConfig: PropTypes.shape({}).isRequired,\r\n children: PropTypes.node,\r\n};\r\n\r\nUnifiedAppWizard.defaultProps = {\r\n children: null,\r\n};\r\n","import { useResponsiveStyleWrapper } from '@bingads-webui-campaign-react/unified-app-shared';\r\n\r\nconst IndicatorWidth = 10;\r\nconst IndicatorsGap = 8;\r\n\r\nconst getIndicatorsWidth = placements => (placements * IndicatorWidth) + ((placements - 1) * IndicatorsGap);\r\n\r\nexport const getAssetStepStyles = () => ({\r\n container: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n width: '100%',\r\n gap: '32px',\r\n\r\n '& .title-item': {\r\n width: 'unset !important',\r\n },\r\n },\r\n 'container-l': {\r\n width: 'calc(100% - 64px)',\r\n },\r\n imageExperience: {\r\n '& .image-experience-content': {\r\n minWidth: 'unset !important',\r\n },\r\n },\r\n formContainer: {\r\n width: '100%',\r\n '& .text-assets-collection-container': {\r\n width: 'auto',\r\n },\r\n '& .asset-group-name-section .error-string-wrapper': {\r\n right: 'unset !important',\r\n position: 'unset !important',\r\n },\r\n\r\n '& .text-input-container': {\r\n width: '100%',\r\n },\r\n '& .date-settings table': {\r\n width: 'unset !important',\r\n },\r\n },\r\n 'formContainer-xxl': {\r\n width: '530px',\r\n },\r\n 'formContainer-xl': {\r\n width: '430px',\r\n },\r\n previewerContainer: {\r\n marginTop: 150,\r\n '& > div': {\r\n top: 124,\r\n },\r\n flexGrow: '1',\r\n },\r\n 'previewerContainer-l': {\r\n width: 'calc(100% - 64px)',\r\n },\r\n 'previewerContainer-m': {\r\n width: 'calc(100% - 64px)',\r\n },\r\n 'previewerContainer-s': {\r\n width: 'calc(100% - 64px)',\r\n },\r\n adPreview: {\r\n '& .new-preview-carousel-container-adprelib': {\r\n maxWidth: '550px !important',\r\n },\r\n marginTop: '140px',\r\n },\r\n windowsAdPreview: {\r\n position: 'sticky',\r\n width: 420,\r\n marginTop: '140px',\r\n top: '0px',\r\n '& .ad-placement-preview': {\r\n height: 450,\r\n },\r\n '& .new-preview-carousel-container-adprelib': {\r\n // backgroundColor: '#ffffff',\r\n border: '1px solid #C8C8C8 !important',\r\n // borderRadius: '4px',\r\n // boxShadow: '0px 2px 4px 0px rgba(0, 0, 0, 0.10)',\r\n // maxWidth: '420px',\r\n minWidth: 'unset !important',\r\n\r\n '& .preview-string': {\r\n display: 'none',\r\n },\r\n\r\n '& .ad-preview-actions': {\r\n display: 'flex',\r\n },\r\n '& .carousel-inner': {\r\n height: 450,\r\n },\r\n\r\n '& .carousel-indicators': {\r\n display: 'flex',\r\n gap: '8px',\r\n left: '50% !important',\r\n margin: '48px 0 !important',\r\n transform: 'translateX(-50%)',\r\n\r\n '& li': {\r\n margin: '0',\r\n },\r\n },\r\n\r\n '& .carousel-control': {\r\n display: 'flex',\r\n width: '12px',\r\n margin: '12px 0 !important',\r\n left: '50% !important',\r\n },\r\n\r\n '& .carousel-control.left': {\r\n transform: ({ placements }) => {\r\n const transformations = [];\r\n\r\n // Move left arrow to the center\r\n transformations.push('translateX(-50%)');\r\n\r\n // Move left arrow to the left of the indicators\r\n const indicatorsWidth = getIndicatorsWidth(placements);\r\n transformations.push(`translateX(-${indicatorsWidth / 2}px)`);\r\n\r\n // Add extra space between the left arrow and the indicators\r\n transformations.push('translateX(-47px)');\r\n\r\n return transformations.join(' ');\r\n },\r\n bottom: 16,\r\n },\r\n\r\n '& .carousel-control.right': {\r\n transform: ({ placements }) => {\r\n const transformations = [];\r\n\r\n // Move right arrow to the center\r\n transformations.push('translateX(-50%)');\r\n\r\n // Move right arrow to the right of the indicators\r\n const indicatorsWidth = getIndicatorsWidth(placements);\r\n transformations.push(`translateX(${indicatorsWidth / 2}px)`);\r\n\r\n // Add extra space between the right arrow and the indicators\r\n transformations.push('translateX(43px)');\r\n\r\n return transformations.join(' ');\r\n },\r\n bottom: 16,\r\n },\r\n\r\n '& .ad-preview-title': {\r\n height: '24px',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n\r\n '& .preview-title-string-key': {\r\n color: '#323130',\r\n fontSize: '14px',\r\n fontWeight: 700,\r\n marginRight: '8px',\r\n },\r\n\r\n '& .preview-title-preview-type': {\r\n fontSize: '14px',\r\n },\r\n },\r\n\r\n '& .ad-placement-preview': {\r\n overflow: 'hidden',\r\n\r\n '& .card-parent': {\r\n width: '100%',\r\n },\r\n\r\n '& .responsive-ad-preview-content': {\r\n boxSizing: 'border-box',\r\n width: '100%',\r\n },\r\n },\r\n '& .ad-placement-preview.app-ad-windows': {\r\n '& .card-parent': {\r\n '& .responsive-ad-preview-content': {\r\n height: 'fit-content',\r\n width: 'fit-content',\r\n maxWidth: '100%',\r\n '& .text-container-apl': {\r\n maxWidth: 'calc(100% - 25px)',\r\n },\r\n },\r\n },\r\n },\r\n '& .ad-placement-preview.app-ad-start-menu': {\r\n '& .new-responsive-ad-preview-container': {\r\n height: '100%',\r\n width: '100%',\r\n },\r\n },\r\n },\r\n },\r\n 'windowsAdPreview-xxl': {\r\n '@media (min-width: 1400px)': {\r\n width: 530,\r\n },\r\n width: 420,\r\n },\r\n 'windowsAdPreview-xl': {\r\n width: 420,\r\n },\r\n});\r\n\r\nexport const useAssetsStepStyles = () => useResponsiveStyleWrapper(getAssetStepStyles);\r\n","import { platforms } from '@bingads-webui-campaign-react/app-store-selector';\r\nimport { FLOWS } from '@bingads-webui-campaign-react/unified-app-shared';\r\n\r\nimport {\r\n UAPPlacementTypeAlias as EPT,\r\n} from '@bingads-webui-campaign-react/unified-ad-preview-library-cmui';\r\n\r\nexport const flowToPlatform = {\r\n [FLOWS.IOS]: platforms.IOS,\r\n [FLOWS.ANDROID]: platforms.ANDROID,\r\n [FLOWS.WINDOWS]: platforms.WINDOWS,\r\n};\r\n\r\nexport const unifiedAppAdsSurfaces = {\r\n VideoGaming: {\r\n key: 'VideoGaming',\r\n title: _TL_('Video Gaming'),\r\n placements: [\r\n 'VideoHorizontal',\r\n ],\r\n },\r\n M365: {\r\n key: 'M365',\r\n title: _TL_('M365'),\r\n placements: [\r\n 'M365Outlook',\r\n ],\r\n },\r\n MsnDisplay: {\r\n key: 'MsnDisplay',\r\n title: _TL_('MSN & Display'),\r\n placements: [\r\n 'MSNDisplay',\r\n ],\r\n },\r\n MicrosoftCasualGames: {\r\n key: 'MicrosoftCasualGames',\r\n title: _TL_('Microsoft Casual Games'),\r\n placements: [\r\n 'CasualGamesDimensions',\r\n ],\r\n },\r\n BingSearch: {\r\n key: 'BingSearch',\r\n title: _TL_('Bing Search'),\r\n placements: [\r\n 'BingSearch',\r\n 'BingSearchText',\r\n ],\r\n },\r\n};\r\n\r\nexport const adPreviewConfig = [{\r\n placementSetName: unifiedAppAdsSurfaces.VideoGaming.key,\r\n placementTypes: [\r\n EPT.UnifiedAppAds.VideoHorizontal,\r\n ],\r\n}, {\r\n placementSetName: unifiedAppAdsSurfaces.M365.key,\r\n placementTypes: [\r\n EPT.UnifiedAppAds.M365Outlook,\r\n ],\r\n}, {\r\n placementSetName: unifiedAppAdsSurfaces.MsnDisplay.key,\r\n placementTypes: [\r\n EPT.UnifiedAppAds.MSNDisplay,\r\n ],\r\n}, {\r\n placementSetName: unifiedAppAdsSurfaces.MicrosoftCasualGames.key,\r\n placementTypes: [\r\n EPT.UnifiedAppAds.CasualGamesDimensions,\r\n ],\r\n}, {\r\n placementSetName: unifiedAppAdsSurfaces.BingSearch.key,\r\n placementTypes: [\r\n EPT.UnifiedAppAds.BingSearch,\r\n EPT.UnifiedAppAds.BingSearchText,\r\n ],\r\n}];\r\n\r\n","import React, { useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n ValidatedFixedPanel,\r\n getPanelErrorProps,\r\n TextTitle,\r\n} from '@bingads-webui-campaign/wizard-jumbo-card';\r\nimport {\r\n ServerValidatedRemainingCharsValidatedTextField,\r\n GroupInfoImg,\r\n} from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\nimport { AssetGroup } from '@bingads-webui/campaign-odata-schemas';\r\nimport { StoreAppSelector } from '@bingads-webui-campaign-react/app-store-selector';\r\nimport { CampaignValidationGroup } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport { flowToPlatform } from '../model/constants';\r\n\r\nexport const AssetGroupNameSection = (props) => {\r\n const {\r\n flow, i18n, isValidating, onDataChange, campaign,\r\n } = props;\r\n\r\n const onRenderAdGroupNameLabel = useCallback(() => (\r\n \r\n ), []);\r\n\r\n return (\r\n }\r\n attentionBeaconProps={{ getExtraProps: getPanelErrorProps }}\r\n {...props}\r\n >\r\n
{campaign && !campaign.AppSetting && i18n.getString(_TL_('Choose the app you want to promote'))}
\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nAssetGroupNameSection.propTypes = {\r\n flow: PropTypes.string.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n isValidating: PropTypes.bool.isRequired,\r\n onDataChange: PropTypes.func.isRequired,\r\n campaign: PropTypes.shape({\r\n AppSetting: PropTypes.shape({}),\r\n AppSettingReadOnly: PropTypes.bool,\r\n }).isRequired,\r\n};\r\n","import _ from 'underscore';\r\nimport React, { useContext, useMemo, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Text, Subtitle1 } from '@fluentui/react-components';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { ShortHeadlinesPanel,\r\n DescriptionsPanel,\r\n PANEL_KEYS,\r\n ImagesPanel,\r\n BaseImagePanel,\r\n LogosPanel,\r\n DateSettingsPanel,\r\n AudienceSignalSection } from '@bingads-webui-campaign-react/wizard-shared-components';\r\nimport { VideoPanel, AudienceSignalPanel } from '@bingads-webui-campaign-react/step-wizard-controls';\r\nimport {\r\n useCollapseState,\r\n Collapse,\r\n collapseExpander,\r\n} from '@bingads-webui-campaign/wizard-jumbo-card';\r\nimport {\r\n TextAssetsImg,\r\n ImageAssetsImg,\r\n} from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\nimport { useVideoAdsCopilot } from '@bingads-webui-campaign-react/xandr-video-campaign-shared-components';\r\nimport { TaskManager } from '@bingads-webui-universal/task-manager';\r\nimport { useWizardService } from '@bingads-webui-react/wizard';\r\nimport { FLOWS } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport { getHeadlinesCardSummaryDetails, getDescriptionsCardSummaryDetails } from '@bingads-webui-campaign-react/validated-text-collection';\r\n\r\nexport const AssetsSection = ({\r\n imageExperiencePortalContainerState,\r\n transparentLogoExperiencePortalContainerState,\r\n imageExpereienceProngPortalContainerState,\r\n imageExperienceSpotLightPortalContainerState,\r\n prongImageExperienceAddNewImageCallback,\r\n imageSpotlightExperienceAddNewImageCallback,\r\n transparentLogoContainerRef,\r\n logosContainerRef,\r\n imageExperienceAddNewImageCallback,\r\n imagesContainerRef,\r\n imageSpotlightContainerRef,\r\n imageProngContainerRef,\r\n setAddNewDescriptionCallback,\r\n setAddNewShortHeadlinesCallback,\r\n perfMarker,\r\n mergedI18n,\r\n data,\r\n assetPanels,\r\n setSelectedVideoId,\r\n selectedVideoId,\r\n}) => {\r\n const isLoading = useMemo(() => _.isEmpty(data), [data]);\r\n\r\n const i18n = useContext(I18nContext);\r\n\r\n const { state } = useWizardService();\r\n\r\n const {\r\n wizardData: { flow },\r\n } = state.context;\r\n\r\n const {\r\n Headlines,\r\n Descriptions,\r\n } = data || {};\r\n\r\n const headlinesCardSummaryDetails = useMemo(() => getHeadlinesCardSummaryDetails(i18n, Headlines), [Headlines, i18n]);\r\n const descriptionsCardSummaryDetails = useMemo(() => getDescriptionsCardSummaryDetails(i18n, Descriptions), [Descriptions, i18n]);\r\n\r\n const [\r\n allSections,\r\n allSectionsExpandedSections,\r\n setAllSectionsExpandedSections,\r\n ] = useCollapseState(\r\n assetPanels /* all sections */,\r\n assetPanels /* initially expanded sections */\r\n );\r\n\r\n const [\r\n moreSettings,\r\n moreSettingsExpandedSections,\r\n setMoreSettingsExpandedSections,\r\n ] = useCollapseState(\r\n PANEL_KEYS.START_END_DATES /* all sections */,\r\n [] /* initially expanded sections */\r\n );\r\n\r\n const allAssetsExpand = useMemo(\r\n () => collapseExpander({ setActiveKeys: setAllSectionsExpandedSections }),\r\n [setAllSectionsExpandedSections]\r\n );\r\n\r\n const { fetch } = useVideoAdsCopilot();\r\n\r\n const copilotFetchTaskManager = useMemo(() => new TaskManager(), []);\r\n\r\n useEffect(() => {\r\n fetch(copilotFetchTaskManager);\r\n // setClarityTag({ VideoCopilotGeneration: true });\r\n }, [copilotFetchTaskManager, fetch]);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n {i18n.getString(_TL_('Add assets'))}\r\n \r\n
\r\n
\r\n \r\n {i18n.getString(_TL_('Provide your assets and we\\'ll automatically determine what your ads look like, where and when they appear, and who sees them.'))}\r\n \r\n
\r\n
\r\n
\r\n \r\n {}}\r\n icon={ImageAssetsImg}\r\n imagesContainerRef={imagesContainerRef}\r\n imageExperiencePortalContainerState={imageExperiencePortalContainerState}\r\n imageExperienceAddNewImageCallback={imageExperienceAddNewImageCallback}\r\n images={data && data.Images}\r\n topicKey=\"pop_BA_Apps_Images\"\r\n />\r\n {}}\r\n icon={ImageAssetsImg}\r\n titleKey={_TL_('Large image')}\r\n iconAltText={_TL_('\"Images\" panel\\'s image')}\r\n imagesData={data && data.ImageSPOTLIGHT}\r\n containerRef={imageSpotlightContainerRef}\r\n portalContainerState={imageExperienceSpotLightPortalContainerState}\r\n addNewImageCallback={imageSpotlightExperienceAddNewImageCallback}\r\n maxUploadNum={1}\r\n />\r\n {}}\r\n icon={ImageAssetsImg}\r\n titleKey={_TL_('Small image')}\r\n iconAltText={_TL_('\"Images\" panel\\'s image')}\r\n imagesData={data && data.ImagePRONG}\r\n containerRef={imageProngContainerRef}\r\n portalContainerState={imageExpereienceProngPortalContainerState}\r\n addNewImageCallback={prongImageExperienceAddNewImageCallback}\r\n maxUploadNum={1}\r\n />\r\n \r\n \r\n \r\n {flow !== FLOWS.WINDOWS && (\r\n \r\n )}\r\n \r\n
\r\n
\r\n {\r\n _.contains(assetPanels, PANEL_KEYS.AUDIENCE_SIGNAL) && (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n
\r\n
\r\n
\r\n {i18n.getString(_TL_('More Settings'))} \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nAssetsSection.propTypes = {\r\n imageExperiencePortalContainerState: PropTypes.shape({}).isRequired,\r\n imageExperienceAddNewImageCallback: PropTypes.func.isRequired,\r\n imageProngContainerRef: PropTypes.shape({}).isRequired,\r\n imageSpotlightContainerRef: PropTypes.shape({}).isRequired,\r\n imageExpereienceProngPortalContainerState: PropTypes.shape({}).isRequired,\r\n imageExperienceSpotLightPortalContainerState: PropTypes.shape({}).isRequired,\r\n logosContainerRef: PropTypes.shape({}).isRequired,\r\n imagesContainerRef: PropTypes.shape({}).isRequired,\r\n setAddNewDescriptionCallback: PropTypes.func.isRequired,\r\n setAddNewShortHeadlinesCallback: PropTypes.func.isRequired,\r\n perfMarker: PropTypes.string.isRequired,\r\n mergedI18n: PropTypes.shape({}).isRequired,\r\n prongImageExperienceAddNewImageCallback: PropTypes.func.isRequired,\r\n imageSpotlightExperienceAddNewImageCallback: PropTypes.func.isRequired,\r\n data: PropTypes.shape({\r\n videos: PropTypes.shape([]),\r\n Images: PropTypes.shape([]),\r\n ImageSPOTLIGHT: PropTypes.shape([]),\r\n ImagePRONG: PropTypes.shape([]),\r\n logos: PropTypes.shape([]),\r\n }).isRequired,\r\n transparentLogoContainerRef: PropTypes.shape({}).isRequired,\r\n transparentLogoExperiencePortalContainerState: PropTypes.shape({}).isRequired,\r\n assetPanels: PropTypes.shape({}).isRequired,\r\n setSelectedVideoId: PropTypes.func.isRequired,\r\n selectedVideoId: PropTypes.string.isRequired,\r\n};\r\n","import classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport { noop, isArray, union } from 'underscore';\r\nimport React, { useContext, useMemo, useCallback, useRef, useState, useEffect } from 'react';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { withBannerService, CopilotRepositoryProvider } from '@bingads-webui/inline-copilot';\r\nimport { PermissionsContext } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { RecommendationContext } from '@bingads-webui-campaign-react/perf-max-recommendation';\r\nimport { withControlErrorHandling } from '@bingads-webui-campaign-react/error-handling';\r\nimport { mergeI18n } from '@bingads-webui-campaign-react/i18n-merger';\r\nimport { useWizardService, matchStepState, STEP_STATES } from '@bingads-webui-react/wizard';\r\nimport { buildLegacyI18n } from '@bingads-webui/build-legacy-i18n';\r\nimport { ValidationStringMap } from '@bingads-webui/validation-string-map';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { AttentionBeaconGroup } from '@bingads-webui-campaign-react/attention-beacon';\r\nimport { ActuationGroup } from '@bingads-webui-campaign-react/actuator';\r\nimport { getGenericImageObjectAsync } from '@bingads-webui-campaign/image-experience-utils';\r\nimport {\r\n FormErrorGroup, UnmappedFormErrors as OriginalUnmappedFormErrors,\r\n} from '@bingads-webui-campaign-react/form-error';\r\nimport { AssetScenario } from '@bingads-webui-react/copilot-event-provider';\r\nimport { AssetEventFeature } from '@bingads-webui-campaign-react/copilot-common';\r\nimport { useCopilot } from '@bingads-webui-campaign-react/copilot-experience';\r\nimport { InstrumentationContext } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\nimport { useFormService } from '@bingads-webui-react/form';\r\nimport { useIsMounted } from '@bingads-webui-campaign-react/step-wizard-controls';\r\nimport { useResponsiveStyles } from '@bingads-webui-campaign-react/common-hooks';\r\nimport { legacyI18nOfListingGroup } from '@bingads-webui-campaign-react/listing-groups-page';\r\nimport { StepHeader } from '@bingads-webui-campaign-react/pmax-common';\r\nimport { SystemErrors, AssetGroupValidationGroup, FLOWS, AppAdsPreview } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport {\r\n ValidatedImageExperienceWrapper,\r\n PerfMaxResponsiveAdPreviewUAPL\r\n} from '@bingads-webui-campaign-react/pmax-image-experience';\r\nimport { PerformanceMarkerContext } from '@bingads-webui-campaign-react/performance-marker-provider';\r\n\r\nimport { getAssetStepStyles } from '../use-assets-step-styles';\r\n\r\nimport { AssetGroupNameSection } from './asset-group-name-section';\r\nimport { AssetsSection } from './assets-section';\r\nimport { adPreviewConfig, unifiedAppAdsSurfaces } from '../model/constants';\r\n\r\nconst UnmappedFormErrors = withControlErrorHandling(OriginalUnmappedFormErrors);\r\nconst MaxImageCount = 1;\r\n\r\nconst AssetsStepFormInternal = ({\r\n data,\r\n onDataChange: onDataChangeProp,\r\n error,\r\n scope,\r\n assetPanels,\r\n}) => {\r\n const isMounted = useIsMounted();\r\n\r\n const { state } = useWizardService();\r\n\r\n const {\r\n wizardData: { flow },\r\n } = state.context;\r\n\r\n const permissions = useContext(PermissionsContext);\r\n\r\n const serverContext = useContext(ServerContext);\r\n const instrumentation = useContext(InstrumentationContext);\r\n const [recommendationContext] = useContext(RecommendationContext);\r\n\r\n const imagesContainerRef = useRef(null);\r\n const logosContainerRef = useRef(null);\r\n const transparentLogoContainerRef = useRef(null);\r\n const ImageSPOTLIGHTContainerRef = useRef(null);\r\n const ImagePRONGContainerRef = useRef(null);\r\n const portraitContainerRef = useRef(null);\r\n\r\n const stylingProps = useMemo(() =>\r\n ({ component: { placements: 3 } }), []);\r\n\r\n const getStyles = useResponsiveStyles(getAssetStepStyles, stylingProps);\r\n\r\n const { cid, aid } = scope.values || {};\r\n\r\n const [selectedVideoId, setSelectedVideoId] = useState(0);\r\n\r\n const [imageExperiencePortalContainerState, setImageExperiencePortalContainerState] = useState({});\r\n const [ImageSPOTLIGHTExperiencePortalContainerState, setImageSPOTLIGHTExperiencePortalContainerState] = useState({});\r\n const [ImagePRONGExperiencePortalContainerState, setImagePRONGExperiencePortalContainerState] = useState({});\r\n\r\n const [imageExperienceAddNewImageCallback, setImageExperienceAddNewImageCallback] = useState(noop);\r\n const [prongImageExperienceAddNewImageCallback, setProngImageExperienceAddNewImageCallback] = useState(noop);\r\n const [imageSpotlightExperienceAddNewImageCallback, setImageSpotlightExperienceAddNewImageCallback] = useState(noop);\r\n\r\n const [addNewDescriptionCallback, setAddNewDescriptionCallback] = useState(noop);\r\n const [addNewShortHeadlinesCallback, setAddNewShortHeadlinesCallback] = useState(noop);\r\n const [transparentLogoExperiencePortalContainerState, setTransparentLogoExperiencePortalContainerState] = useState({});\r\n const [previewTransparentLogoSharedState, setPreviewTransparentLogoSharedState] = useState({ previewImageId: null, cropImageObj: null });\r\n const [previewImageSPOTLIGHTSharedState, setPreviewImageSPOTLIGHTSharedState] = useState({ previewImageId: null, cropImageObj: null });\r\n const [previewImagePRONGSharedState, setPreviewImagePRONGSharedState] = useState({ previewImageId: null, cropImageObj: null });\r\n const [appLogo, setAppLogo] = useState(null);\r\n\r\n const {\r\n assetGroup,\r\n campaign,\r\n } = data || {};\r\n\r\n const {\r\n AppSetting,\r\n } = campaign || {};\r\n\r\n const {\r\n Images,\r\n CallToAction,\r\n LongHeadlines,\r\n Descriptions,\r\n Headlines,\r\n videos = [],\r\n ImageSPOTLIGHT,\r\n ImagePRONG,\r\n TransparentLogo,\r\n } = assetGroup || {};\r\n\r\n const onDataChange = useCallback((result) => {\r\n if (!isMounted.current) return;\r\n onDataChangeProp({ ...result });\r\n }, [isMounted, onDataChangeProp]);\r\n\r\n const onReset = useCallback(() => {\r\n onDataChange({\r\n data: prevData => ({\r\n ...prevData,\r\n assetGroup: {\r\n ...prevData.assetGroup,\r\n Images: {\r\n ...assetGroup.Images,\r\n ImageList: [],\r\n ImageAssets: null,\r\n },\r\n Headlines: {\r\n Headline0: '',\r\n Headline1: '',\r\n Headline2: '',\r\n },\r\n LongHeadlines: {\r\n LongHeadline0: '',\r\n },\r\n Descriptions: {\r\n Description0: '',\r\n Description1: '',\r\n },\r\n },\r\n }),\r\n isValid: false,\r\n });\r\n }, [assetGroup, onDataChange]);\r\n\r\n const onUpdateImageList = useCallback((newImageList) => {\r\n onDataChange({\r\n data: prevData => ({\r\n ...prevData,\r\n assetGroup: {\r\n ...prevData.assetGroup,\r\n Images: {\r\n ...prevData.assetGroup.Images,\r\n ImageList: newImageList,\r\n ImageAssets: null,\r\n },\r\n },\r\n }),\r\n });\r\n }, [onDataChange]);\r\n\r\n const {\r\n serverErrors = [],\r\n systemErrors = [],\r\n } = error || {};\r\n\r\n const i18n = useContext(I18nContext);\r\n const legacyGlobalI18n = useMemo(() => window.globalLegacyI18n.get('$/i18n!legacy/global'), []);\r\n\r\n const legacyI18n = useMemo(() => buildLegacyI18n(i18n, [ValidationStringMap, legacyI18nOfListingGroup]), [i18n]);\r\n\r\n const mergedI18n = useMemo(() => {\r\n const mergedTempI18n = mergeI18n(\r\n legacyI18n,\r\n i18n\r\n );\r\n\r\n return mergeI18n(\r\n legacyGlobalI18n,\r\n mergedTempI18n\r\n );\r\n }, [i18n, legacyI18n, legacyGlobalI18n]);\r\n\r\n const { state: { context: { saveFailed } } } = useFormService();\r\n\r\n const isSaving = matchStepState(state, STEP_STATES.SAVING);\r\n const isCanceling = matchStepState(state, STEP_STATES.CANCELING);\r\n\r\n const perfMarker = useContext(PerformanceMarkerContext);\r\n\r\n const [previewImagesSharedState, setPreviewImagesSharedState] = useState({\r\n previewImageId: null,\r\n previewLogoId: null,\r\n cropImageObj: null,\r\n editingPlacementType: '',\r\n });\r\n\r\n const { postAssetEventLog } = recommendationContext || noop;\r\n\r\n const maxUploadNum = useMemo(() => {\r\n const imageListLength = Images && Images.ImageList && isArray(Images.ImageList) ? Images.ImageList.length : 0;\r\n return 20 - imageListLength;\r\n }, [Images]);\r\n\r\n const finalUrlFromApp = useMemo(() => {\r\n if (AppSetting) {\r\n if (flow === FLOWS.WINDOWS) {\r\n return `https://apps.microsoft.com/detail/${AppSetting.AppId}`;\r\n }\r\n return AppSetting.AppUrl;\r\n }\r\n return null;\r\n }, [AppSetting, flow]);\r\n\r\n const {\r\n copilotBanner,\r\n suggestionPoller,\r\n } = useCopilot({\r\n maxUploadNum,\r\n addNewShortHeadlinesCallback,\r\n addNewLongHeadlinesCallback: noop,\r\n addNewDescriptionCallback,\r\n imageExperienceAddNewImageCallback,\r\n // newCTACallback,\r\n currentCTA: CallToAction,\r\n onReset,\r\n cid,\r\n aid,\r\n serverContext,\r\n instrumentation,\r\n data: {\r\n ...assetGroup,\r\n finalUrls: [finalUrlFromApp],\r\n FinalUrlForRecommendation: finalUrlFromApp,\r\n },\r\n isSaving,\r\n isCanceling,\r\n enableCopilotRecommendations: true,\r\n feature: AssetEventFeature.PMAX, // TODO Feature name\r\n assetScenario: AssetScenario.CREATE_WORK_FLOW,\r\n });\r\n\r\n const imageExperienceComponents = useMemo(() => (\r\n
\r\n {}} // TODO\r\n isLogoEnabled={false}\r\n previewImagesSharedState={previewImagesSharedState}\r\n setPreviewImagesSharedState={setPreviewImagesSharedState}\r\n updatePortalContainerState={setImageExperiencePortalContainerState}\r\n setImageExperienceAddNewImageCallback={setImageExperienceAddNewImageCallback}\r\n validationProps={{ data: assetGroup, initialValue: assetGroup }}\r\n suggestionPoller={suggestionPoller}\r\n wizardPerfMarker={perfMarker}\r\n postAssetEventLog={postAssetEventLog}\r\n UAPLPMaxIntegration\r\n showCopilotOptionForImage={permissions.IsBackgroundSceneEnabled}\r\n // currently there is implementation in image experience to unify prong and spotlight images for windows store.\r\n // but we will not use it for now. We will keep two separate panels for prong and spotlight images.\r\n // Later when we want to unify this behaviour we can turn on this flag and undo this change.\r\n // isUnifiedAppCampaignWindowsStore={flow === FLOWS.WINDOWS}\r\n imageAssetsOptional={flow === FLOWS.WINDOWS}\r\n />\r\n
), [i18n, permissions, postAssetEventLog, suggestionPoller, previewImagesSharedState, assetGroup, perfMarker, flow]);\r\n\r\n const transparentLogoComponent = useMemo(() => (\r\n
\r\n \r\n
), [i18n, permissions, perfMarker, assetGroup, previewTransparentLogoSharedState]);\r\n\r\n const validatedImageSPOTLIGHTExperienceWrapper = useMemo(() => (\r\n \r\n ), [i18n, permissions, previewImageSPOTLIGHTSharedState, assetGroup, perfMarker]);\r\n\r\n const validatedImagePRONGExperienceWrapper = useMemo(() => (\r\n \r\n ), [i18n, permissions, previewImagePRONGSharedState, assetGroup, perfMarker]);\r\n\r\n const adPreview = useMemo(() => {\r\n const previewProps = {\r\n i18n,\r\n imageList: Images && Images.ImageList,\r\n updateImageList: onUpdateImageList,\r\n shortHeadline: (Headlines && Headlines.Headline0 !== '' && Headlines.Headline0) || undefined,\r\n longHeadline: (LongHeadlines && LongHeadlines.LongHeadline0 !== '' && LongHeadlines.LongHeadline0) || undefined,\r\n description: (Descriptions && Descriptions.Description0 !== '' && Descriptions.Description0) || undefined,\r\n businessName: AppSetting && AppSetting.AppTitle,\r\n callToAction: CallToAction,\r\n videos: (videos.length > selectedVideoId && selectedVideoId !== null) ? [videos[selectedVideoId]] : [],\r\n displayUrl: finalUrlFromApp,\r\n url: finalUrlFromApp,\r\n previewImagesSharedState,\r\n setPreviewImagesSharedState,\r\n adPreviewConfig,\r\n autoHeightCarousel: true,\r\n customSurfaceKeys: unifiedAppAdsSurfaces,\r\n appLogo,\r\n };\r\n return (\r\n \r\n );\r\n }, [i18n, Images, videos, appLogo, AppSetting, selectedVideoId, finalUrlFromApp, onUpdateImageList, Headlines, LongHeadlines, Descriptions, CallToAction, previewImagesSharedState]);\r\n\r\n const windowsAppAdsPreivew = useMemo(() => (\r\n \r\n ), [i18n, Headlines, ImageSPOTLIGHT, ImagePRONG, TransparentLogo, AppSetting, previewImageSPOTLIGHTSharedState]);\r\n\r\n useEffect(() => {\r\n if (AppSetting && AppSetting.IconUrl) {\r\n getGenericImageObjectAsync(AppSetting.IconUrl).then((iconImage) => {\r\n setAppLogo({\r\n ...iconImage,\r\n CropSettings: {},\r\n });\r\n });\r\n }\r\n }, [AppSetting]);\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n {copilotBanner}\r\n \r\n {flow !== FLOWS.WINDOWS && imageExperienceComponents}\r\n {flow === FLOWS.WINDOWS && transparentLogoComponent}\r\n {flow === FLOWS.WINDOWS && validatedImageSPOTLIGHTExperienceWrapper}\r\n {flow === FLOWS.WINDOWS && validatedImagePRONGExperienceWrapper}\r\n \r\n \r\n
\r\n
\r\n {\r\n flow === FLOWS.WINDOWS ?\r\n
\r\n {windowsAppAdsPreivew}\r\n
\r\n :\r\n
\r\n {adPreview}\r\n
\r\n }\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nAssetsStepFormInternal.propTypes = {\r\n data: PropTypes.shape({\r\n campaign: PropTypes.shape({\r\n Id: PropTypes.number,\r\n TimeZone: PropTypes.string,\r\n }),\r\n assetGroup: PropTypes.shape({\r\n FinalUrls: PropTypes.arrayOf(PropTypes.string),\r\n Images: PropTypes.shape({\r\n ImageList: PropTypes.arrayOf(PropTypes.string),\r\n ImageAssets: PropTypes.shape({}),\r\n }),\r\n CallToAction: PropTypes.shape({\r\n cta: PropTypes.string,\r\n }),\r\n FinalUrlForRecommendation: PropTypes.string,\r\n BusinessName: PropTypes.string,\r\n Headlines: PropTypes.shape({}),\r\n LongHeadlines: PropTypes.shape({}),\r\n Descriptions: PropTypes.shape({}),\r\n }),\r\n }).isRequired,\r\n onDataChange: PropTypes.func.isRequired,\r\n error: PropTypes.shape({\r\n serverErrors: PropTypes.arrayOf(PropTypes.string),\r\n systemErrors: PropTypes.arrayOf(PropTypes.string),\r\n }),\r\n scope: PropTypes.shape({\r\n values: PropTypes.shape({\r\n cid: PropTypes.string,\r\n aid: PropTypes.string,\r\n }),\r\n }).isRequired,\r\n assetPanels: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nAssetsStepFormInternal.defaultProps = {\r\n error: {},\r\n};\r\n\r\nexport const AssetsStepForm = withBannerService(withScope(AssetsStepFormInternal));\r\n","import React, { useMemo } from 'react';\r\nimport propTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { AdAssetsFormShimmer, AdAssetsPreviewerShimmer } from '@bingads-webui-campaign-react/pmax-lite-shimmers';\r\nimport { getAssetsPanels } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport { useWizardService } from '@bingads-webui-react/wizard';\r\n\r\nimport { AssetsStepForm } from './components';\r\nimport { useAssetsStepStyles } from './use-assets-step-styles';\r\n\r\nexport const AssetsStepShell = (props) => {\r\n const { data } = props || {};\r\n\r\n const isLoading = useMemo(() => _.isEmpty(data), [data]);\r\n const getStyles = useAssetsStepStyles();\r\n\r\n const { state } = useWizardService();\r\n\r\n const {\r\n wizardData: { flow },\r\n } = state.context;\r\n\r\n const assetPanels = useMemo(() => getAssetsPanels(flow), [flow]);\r\n\r\n return (\r\n <>\r\n {\r\n isLoading ?\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n : \r\n }\r\n \r\n );\r\n};\r\n\r\nAssetsStepShell.propTypes = {\r\n data: propTypes.shape({}),\r\n};\r\n\r\nAssetsStepShell.defaultProps = {\r\n data: {},\r\n};\r\n","\r\nimport { generateNameSuggestionSuffix } from '@bingads-webui-campaign/audience-campaign-shared';\r\nimport { getBudgetRange } from '@bingads-webui-campaign-legacy/common-grid-config/budget/get-budget-range';\r\nimport { getDefaultLocationTargetsViewModel, getDefaultLanguagesViewModel } from '@bingads-webui-campaign-react/wizard-shared-components';\r\nimport { URL_RULES_OPTIONS } from '@bingads-webui-campaign-react/url-rules';\r\nimport { FLOWS } from '@bingads-webui-campaign-react/unified-app-shared';\r\n\r\nconst platformToAppStore = {\r\n Windows: 'MicrosoftAppStore',\r\n Android: 'GoogleAppStore',\r\n iOS: 'AppleAppStore',\r\n};\r\n\r\nconst getBiddingScheme = (flow) => {\r\n const isFlowApps = flow !== FLOWS.WINDOWS;\r\n if (isFlowApps) {\r\n return {\r\n Type: 'ManualCpc',\r\n ManualCpc: 5,\r\n };\r\n }\r\n return {\r\n Type: 'ManualCpa',\r\n ManualCpi: 5,\r\n };\r\n};\r\n\r\nexport const getDefaultCampaignData = ({\r\n serverContext,\r\n cnMarketAccount,\r\n AppSetting,\r\n flow,\r\n}) => {\r\n let platformNamePrefix;\r\n if (flow !== FLOWS.WINDOWS) {\r\n platformNamePrefix = flow === FLOWS.ANDROID ? 'Android' : 'iOS';\r\n }\r\n return ({\r\n Name: `${generateNameSuggestionSuffix(flow === FLOWS.WINDOWS ? 'Windows Store Campaign' : `${platformNamePrefix} Mobile App Campaign`)}-${Math.floor(Math.random() * 100)}`,\r\n Status: 'Paused',\r\n Languages: getDefaultLanguagesViewModel(cnMarketAccount),\r\n Budget: {\r\n Amount: getBudgetRange(serverContext.CurrentAccount.CurrencyCode).Daily.Default,\r\n Type: 'DailyStandard',\r\n },\r\n BiddingScheme: getBiddingScheme(flow),\r\n CampaignType: 'App',\r\n CampaignSubType: 'AppInstall',\r\n locationTargets: getDefaultLocationTargetsViewModel(cnMarketAccount),\r\n AppStore: platformToAppStore[AppSetting?.AppPlatform],\r\n AppId: AppSetting?.AppStoreId,\r\n TrackingUrlTemplate: 'http://www.trackingtool.com/tracking?url={lpurl}&type=1',\r\n AppSetting,\r\n });\r\n};\r\n\r\nexport const getDefaultAssetGroup = ({ i18n, businessName, storeFinalUrl = null }) => ({\r\n Name: generateNameSuggestionSuffix(i18n.getString(_TL_('AssetGroup'))),\r\n Status: 'Paused',\r\n Images: {\r\n ImageList: [],\r\n IsOptional: true,\r\n },\r\n BusinessName: businessName,\r\n FinalUrls: [storeFinalUrl],\r\n FinalUrlForRecommendation: storeFinalUrl,\r\n UrlRulesOption: URL_RULES_OPTIONS.All,\r\n});\r\n","import { useCallback, useContext } from 'react';\r\nimport Promise from 'bluebird';\r\nimport _ from 'underscore';\r\nimport { useWizardService, WIZARD_EVENTS } from '@bingads-webui-react/wizard';\r\nimport { ScenarioContext, ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { PermissionsContext } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { saveAssetGroup, loadCampaignAsViewModel, FLOWS } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport { useAppStoreRepository } from '@bingads-webui-campaign-react/app-store-selector';\r\nimport { loadAssetGroupWithVideos, loadAssetGroupForWindowsStore } from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\nimport { newVideoFromMTObject } from '@bingads-webui-campaign-react/image-experience-video-part';\r\nimport cacheManager from '@bingads-webui-campaign-legacy/cache-manager/index';\r\n\r\nimport {\r\n getLoggerWithoutPageInfo,\r\n createVideoRepository,\r\n createImageRepository,\r\n createFolderRepository,\r\n uploadVideoMetadata,\r\n} from '@bingads-webui-campaign-react/asset-library-services';\r\nimport { getLogVersion } from '@bingads-webui-campaign-react/asset-library-model';\r\n\r\nimport { createDefaultCampaign, getDefaultAssetGroup } from './model';\r\nimport { flowToPlatform } from './model/constants';\r\n\r\nexport const useAssetsStepRepository = () => {\r\n const scenarioContext = useContext(ScenarioContext);\r\n\r\n const i18n = useContext(I18nContext);\r\n\r\n const { state, send } = useWizardService();\r\n\r\n const {\r\n wizardData: { flow },\r\n } = state.context;\r\n\r\n const permissions = useContext(PermissionsContext);\r\n\r\n const activity = useContext(ActivityContext);\r\n\r\n const versionForLog = getLogVersion(permissions);\r\n\r\n const logger = getLoggerWithoutPageInfo(activity, versionForLog, 'UnifiedAppAdsStep');\r\n\r\n const serverContext = useContext(ServerContext);\r\n\r\n const { scope } = useContext(ScopeContext) || {};\r\n\r\n const { aid, cid } = scope.values;\r\n\r\n const { searchAppById, oDataConfig } = useAppStoreRepository({ platform: flowToPlatform[flow] });\r\n\r\n const videoRepository = createVideoRepository({\r\n oDataConfig,\r\n aid,\r\n cid,\r\n });\r\n\r\n const folderRepository = createFolderRepository({\r\n i18n,\r\n logger,\r\n oDataConfig,\r\n aid,\r\n cid,\r\n });\r\n\r\n const imageRepository = createImageRepository({\r\n oDataConfig,\r\n aid,\r\n cid,\r\n logger,\r\n i18n,\r\n activity,\r\n });\r\n\r\n const uploadVideoIfNeeded = useCallback(({ assetGroup }) => {\r\n const videoPromises = [];\r\n\r\n if (!assetGroup.videos) {\r\n return Promise.resolve(assetGroup);\r\n }\r\n\r\n // check for videos in the assetGroup that dont have an id.\r\n assetGroup.videos.forEach((video) => {\r\n if (!video.id) {\r\n videoPromises.push(uploadVideoMetadata({\r\n videoMetadata: video,\r\n newVideoFromMTObject,\r\n folderRepository,\r\n imageRepository,\r\n videoRepository,\r\n }).then((newVideo) => {\r\n _.extend(video, newVideo);\r\n }));\r\n }\r\n });\r\n\r\n if (_.isEmpty(videoPromises)) {\r\n return Promise.resolve(assetGroup);\r\n }\r\n\r\n return Promise.all(videoPromises).then(() => assetGroup);\r\n }, [folderRepository, imageRepository, videoRepository]);\r\n\r\n const load = useCallback(() => {\r\n const { assetGroup: savedAssetGroup, campaign: savedCampaign } = state.context.wizardData;\r\n\r\n const campaignId = savedCampaign ? savedCampaign.Id : null;\r\n const assetGroupId = savedAssetGroup ? savedAssetGroup.Id : null;\r\n\r\n const saveCampaignsPromise = campaignId\r\n ? loadCampaignAsViewModel(cid, aid, campaignId)\r\n : Promise.resolve({});\r\n\r\n const assetGroupPromise = flow === FLOWS.WINDOWS ? loadAssetGroupForWindowsStore : loadAssetGroupWithVideos;\r\n\r\n const savedAssetGroupPromise = assetGroupId\r\n ? assetGroupPromise(cid, aid, campaignId, assetGroupId, i18n, false, false, videoRepository)\r\n : Promise.resolve(getDefaultAssetGroup({ i18n }));\r\n\r\n return Promise.props({ campaign: saveCampaignsPromise, assetGroup: savedAssetGroupPromise })\r\n .then(({ campaign, assetGroup }) => {\r\n if (_.has(campaign, 'data')) {\r\n // since the view model conversion adds a data parameter, we dont need it in this wizard.\r\n // eslint-disable-next-line no-param-reassign\r\n campaign = campaign.data;\r\n }\r\n if (_.has(assetGroup, 'data')) {\r\n // since the view model conversion adds a data parameter, we dont need it in this wizard.\r\n // eslint-disable-next-line no-param-reassign\r\n assetGroup = assetGroup.data;\r\n }\r\n\r\n return ({\r\n campaign,\r\n assetGroup,\r\n });\r\n }).then(({ campaign, assetGroup }) => {\r\n if (campaign && campaign.CampaignSettings && campaign.CampaignSettings.length > 0) {\r\n const appSettings = campaign.CampaignSettings.find(settings => settings['@odata.type'] === '#Model.AppSetting');\r\n const { AppId } = appSettings || {};\r\n\r\n return searchAppById(AppId).then((appInfo) => {\r\n // eslint-disable-next-line no-param-reassign\r\n campaign.AppSetting = appInfo;\r\n // eslint-disable-next-line no-param-reassign\r\n campaign.AppSettingReadOnly = true;\r\n\r\n return {\r\n campaign,\r\n assetGroup,\r\n };\r\n });\r\n }\r\n return {\r\n campaign,\r\n assetGroup,\r\n };\r\n }).catch((errorData) => {\r\n activity.trace(`[UnifiedAppWizard] loadData failed. Error: ${errorData}`);\r\n\r\n // eslint-disable-next-line prefer-promise-reject-errors\r\n return Promise.reject({\r\n error: {\r\n ...errorData,\r\n },\r\n });\r\n });\r\n }, [activity, i18n, state.context.wizardData, aid, cid, searchAppById, videoRepository]);\r\n\r\n const save = useCallback(({\r\n data,\r\n initialData,\r\n }) => {\r\n const savedCampaign = state.context.wizardData.campaign;\r\n\r\n const { assetGroup: assetGroupToSave, campaign: campaignToSave } = data;\r\n const { assetGroup: initialAssetGroup } = initialData;\r\n\r\n const { AppSetting } = campaignToSave;\r\n\r\n const saveCampaignsPromise = savedCampaign\r\n ? Promise.resolve({\r\n campaign: {\r\n data: savedCampaign,\r\n },\r\n }) :\r\n createDefaultCampaign({\r\n i18n,\r\n serverContext,\r\n scenarioContext,\r\n AppSetting,\r\n flow,\r\n });\r\n\r\n return saveCampaignsPromise.then((result) => {\r\n const { campaign } = result;\r\n\r\n activity.trace('[UnifiedAppWizard] - Default Campaign saved');\r\n activity.signal(`[UnifiedAppWizard] - Default Campaign saved, campaignId: ${campaign.data.Id}`);\r\n\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { campaign: result.campaign.data });\r\n\r\n cacheManager.invalidate('AssetGroup');\r\n cacheManager.invalidate('Campaign');\r\n\r\n return {\r\n campaign: result.campaign.data,\r\n };\r\n }).then((result) => {\r\n const assetGroupChanges = {\r\n assetGroup: {\r\n data: assetGroupToSave,\r\n },\r\n originalAssetGroup: {\r\n data: initialAssetGroup,\r\n },\r\n campaign: result.campaign,\r\n };\r\n\r\n const saveContext = {\r\n scenario: scenarioContext.name,\r\n activity,\r\n activityLogger: scenarioContext.createActivity('saveAssets'),\r\n i18n,\r\n serverContext,\r\n cid,\r\n aid,\r\n };\r\n\r\n return Promise.props({\r\n campaign: Promise.resolve(result.campaign),\r\n savedAssetGroup: uploadVideoIfNeeded({ assetGroup: assetGroupToSave })\r\n .then(() => saveAssetGroup(assetGroupChanges, saveContext)),\r\n });\r\n }).then((result) => {\r\n const { savedAssetGroup } = result;\r\n\r\n activity.trace(`[PmaxWizard] saveData succeeded. Assets count: ${result}`);\r\n\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { assetGroup: savedAssetGroup.assetGroup.data });\r\n\r\n // TODO: Uncomment this when copilot recommendations are ready\r\n // logCopilotRecommendations({\r\n // recommendationContext,\r\n // assetGroup: savedAssetGroup.assetGroup.data,\r\n // campaignId: result.campaign.Id,\r\n // });\r\n\r\n return {\r\n campaign: result.campaign,\r\n assetGroup: savedAssetGroup.assetGroup.data,\r\n };\r\n }).catch((errorData) => {\r\n activity.trace(`[UnifiedAppWizard] saveData failed. Error: ${errorData}`);\r\n\r\n // eslint-disable-next-line prefer-promise-reject-errors\r\n return Promise.reject({\r\n error: {\r\n ...errorData,\r\n },\r\n });\r\n });\r\n }, [activity, aid, cid, flow, i18n, scenarioContext, send, serverContext, state.context.wizardData.campaign, uploadVideoIfNeeded]);\r\n\r\n return {\r\n load,\r\n save,\r\n };\r\n};\r\n","import { saveCampaign } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport { getDefaultCampaignData } from './default-data';\r\n\r\nexport const createDefaultCampaign = ({\r\n i18n,\r\n serverContext,\r\n scenarioContext,\r\n AppSetting,\r\n flow,\r\n}) => {\r\n const permissions = serverContext.Permissions || {};\r\n\r\n const initialCampaignViewModel = {\r\n data: getDefaultCampaignData({\r\n i18n,\r\n serverContext,\r\n cnMarketAccount: permissions.IsDomesticSimplifiedChineseEnabled,\r\n AppSetting,\r\n flow,\r\n }),\r\n };\r\n\r\n return saveCampaign({\r\n campaign: initialCampaignViewModel,\r\n }, {\r\n scenario: scenarioContext.name,\r\n i18n,\r\n activityLogger: scenarioContext.createActivity('saveDefaultCampaign'),\r\n });\r\n};\r\n","import React, { useMemo } from 'react';\r\nimport propTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { AdAssetsFormShimmer, AdAssetsPreviewerShimmer } from '@bingads-webui-campaign-react/pmax-lite-shimmers';\r\nimport { getAssetsSettingsPanels } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport { useWizardService } from '@bingads-webui-react/wizard';\r\n\r\nimport { AssetsStepForm } from './components';\r\nimport { useAssetsStepStyles } from './use-assets-step-styles';\r\n\r\nexport const AssetsStepSettingsShell = (props) => {\r\n const { data } = props || {};\r\n\r\n const isLoading = useMemo(() => _.isEmpty(data), [data]);\r\n const getStyles = useAssetsStepStyles();\r\n\r\n const { state } = useWizardService();\r\n\r\n const {\r\n wizardData: { flow },\r\n } = state.context;\r\n\r\n const assetPanels = useMemo(() => getAssetsSettingsPanels(flow), [flow]);\r\n\r\n return (\r\n <>\r\n {\r\n isLoading ?\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n : \r\n }\r\n \r\n );\r\n};\r\n\r\nAssetsStepSettingsShell.propTypes = {\r\n data: propTypes.shape({}),\r\n};\r\n\r\nAssetsStepSettingsShell.defaultProps = {\r\n data: {},\r\n};\r\n","\r\nimport { getLocationTargetingStyles } from '@bingads-webui-campaign-react/location-targeting';\r\nimport { useResponsiveStyleWrapper } from '@bingads-webui-campaign-react/unified-app-shared';\r\n\r\nconst getStyles = () => ({\r\n container: {\r\n maxWidth: 680,\r\n },\r\n ...getLocationTargetingStyles(),\r\n});\r\n\r\nexport const useTargetingStepStyles = () => useResponsiveStyleWrapper(getStyles);\r\n","import React, { useMemo, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { isEmpty } from 'underscore';\r\nimport { withControlErrorHandling } from '@bingads-webui-campaign-react/error-handling';\r\nimport { AttentionBeaconGroup } from '@bingads-webui-campaign-react/attention-beacon';\r\nimport { ActuationGroup } from '@bingads-webui-campaign-react/actuator';\r\nimport { useFormService } from '@bingads-webui-react/form';\r\nimport {\r\n apiErrorMapper,\r\n} from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PerformanceMarkerContext } from '@bingads-webui-campaign-react/performance-marker-provider';\r\nimport {\r\n FormErrorGroup, UnmappedFormErrors as OriginalUnmappedFormErrors,\r\n} from '@bingads-webui-campaign-react/form-error';\r\nimport { StepHeader } from '@bingads-webui-campaign-react/pmax-common';\r\nimport {\r\n Collapse,\r\n useCollapseState,\r\n collapseExpander,\r\n} from '@bingads-webui-campaign/wizard-jumbo-card';\r\nimport { LanguageTargetPanel, AudienceSignalSection, PANEL_KEYS } from '@bingads-webui-campaign-react/wizard-shared-components';\r\nimport { LocationTargetingSettingPanel, AudienceSignalPanel, useIsMounted } from '@bingads-webui-campaign-react/step-wizard-controls';\r\nimport { CampaignValidationGroup, AssetGroupValidationGroup, SystemErrors } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport { PlacementTargetPanel, PANEL_KEYS as PANEL_KEYS_V2 } from '@bingads-webui-campaign-react/wizard-shared-components-v2';\r\n\r\nimport { useTargetingStepStyles } from './use-targeting-step-styles';\r\n\r\nconst UnmappedFormErrors = withControlErrorHandling(OriginalUnmappedFormErrors);\r\n\r\nexport const TargetingStepShell = ({\r\n data: targetingInfo = {},\r\n onDataChange,\r\n error,\r\n}) => {\r\n const isLoading = useMemo(() => isEmpty(targetingInfo), [targetingInfo]);\r\n const isMounted = useIsMounted();\r\n\r\n const getStyles = useTargetingStepStyles();\r\n\r\n const { serverErrors, systemErrors } = error || {};\r\n\r\n const { state: { context: { saveFailed } } } = useFormService();\r\n const i18n = useContext(I18nContext);\r\n const perfMarker = useContext(PerformanceMarkerContext);\r\n\r\n const {\r\n bundleCountries,\r\n bundleLocationCriterions,\r\n campaign = {},\r\n assetGroup = {},\r\n } = targetingInfo || {};\r\n\r\n const [\r\n allSections,\r\n expandedSections,\r\n setExpandedSections,\r\n ] = useCollapseState(\r\n // PANEL_KEYS_V2.PLACEMENT_TARGET should be added to these arrays once it's ready to enable it\r\n [PANEL_KEYS.LOCATIONS, PANEL_KEYS.LANGUAGE_TARGET, PANEL_KEYS.AUDIENCE_SIGNAL],\r\n [PANEL_KEYS.LOCATIONS, PANEL_KEYS.LANGUAGE_TARGET, PANEL_KEYS.AUDIENCE_SIGNAL]\r\n );\r\n\r\n const targetingExpand = useMemo(\r\n () => collapseExpander({ setActiveKeys: setExpandedSections }),\r\n [setExpandedSections]\r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nTargetingStepShell.propTypes = {\r\n data: PropTypes.shape({\r\n locationTargets: PropTypes.shape({}),\r\n bundleCountries: PropTypes.arrayOf(PropTypes.shape({})),\r\n bundleLocationCriterions: PropTypes.arrayOf(PropTypes.shape({})),\r\n campaign: PropTypes.shape({}),\r\n assetGroup: PropTypes.shape({}),\r\n }),\r\n error: PropTypes.shape({\r\n serverErrors: PropTypes.arrayOf(PropTypes.shape({})),\r\n systemErrors: PropTypes.arrayOf(PropTypes.shape({})),\r\n }),\r\n onDataChange: PropTypes.func.isRequired,\r\n};\r\n\r\nTargetingStepShell.defaultProps = {\r\n data: {},\r\n error: {},\r\n};\r\n","import { useResponsiveStyleWrapper } from '@bingads-webui-campaign-react/unified-app-shared';\r\n\r\nconst getStyles = () => ({\r\n formContainer: {\r\n maxWidth: 800,\r\n '& .advanced-scheduling-grid': {\r\n width: 'unset !important',\r\n\r\n '& .ad-scheduling-grid': {\r\n minWidth: 'unset !important',\r\n },\r\n },\r\n },\r\n});\r\n\r\nexport const useCampaignDetailsStepStyles = () => useResponsiveStyleWrapper(getStyles);\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React, { useMemo, useContext } from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { LocationTargetingSettingPanel, useIsMounted } from '@bingads-webui-campaign-react/step-wizard-controls';\r\nimport { buildLegacyI18n } from '@bingads-webui/build-legacy-i18n';\r\nimport { ValidationStringMap } from '@bingads-webui/validation-string-map';\r\nimport {\r\n Collapse,\r\n useCollapseState,\r\n collapseExpander,\r\n} from '@bingads-webui-campaign/wizard-jumbo-card';\r\nimport {\r\n CampaignNamePanel,\r\n BudgetPanel,\r\n BidStrategyPanel,\r\n BidValuePanel,\r\n LanguageTargetPanel,\r\n AdSchedulePanel,\r\n UrlOptionsPanel,\r\n AppDetailsPanel,\r\n PANEL_KEYS,\r\n} from '@bingads-webui-campaign-react/wizard-shared-components';\r\nimport { CampaignValidationGroup } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport { MANUAL_CPA, MANUAL_CPC } from '@bingads-webui-campaign-react/bid-strategy-component';\r\n\r\nimport { useCampaignDetailsStepStyles } from './use-campaign-details-step-styles';\r\n\r\nexport const CampaignDetailsForm = ({\r\n data: campaignInfo,\r\n onDataChange,\r\n allSectionsKeys,\r\n initiallyExpandedSectionsKeys,\r\n}) => {\r\n const {\r\n campaign,\r\n bundleCountries,\r\n bundleLocationCriterions,\r\n } = campaignInfo || {};\r\n\r\n const isLoading = useMemo(() => _.isEmpty(campaignInfo), [campaignInfo]);\r\n\r\n const getStyles = useCampaignDetailsStepStyles();\r\n\r\n const i18n = useContext(I18nContext);\r\n const isMounted = useIsMounted();\r\n const legacyI18n = useMemo(() => buildLegacyI18n(i18n, [ValidationStringMap]), [i18n]);\r\n\r\n const [\r\n allSections,\r\n expandedSections,\r\n setExpandedSections,\r\n ] = useCollapseState(allSectionsKeys, initiallyExpandedSectionsKeys);\r\n\r\n const expand = useMemo(\r\n () => collapseExpander({ setActiveKeys: setExpandedSections }),\r\n [setExpandedSections]\r\n );\r\n\r\n const isBidStrategyCPC = useMemo(() => !isLoading && campaign?.BiddingScheme.Type === 'ManualCpc', [isLoading, campaign]);\r\n const getBidStrategyOptions = useMemo(() => (isBidStrategyCPC ? [MANUAL_CPC] : [MANUAL_CPA]), [isBidStrategyCPC]);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nCampaignDetailsForm.propTypes = {\r\n data: PropTypes.shape({\r\n campaign: PropTypes.shape({}),\r\n }),\r\n onDataChange: PropTypes.func.isRequired,\r\n allSectionsKeys: PropTypes.arrayOf(PropTypes.string).isRequired,\r\n initiallyExpandedSectionsKeys: PropTypes.arrayOf(PropTypes.string).isRequired,\r\n};\r\n\r\nCampaignDetailsForm.defaultProps = {\r\n data: {},\r\n};\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { AttentionBeaconGroup } from '@bingads-webui-campaign-react/attention-beacon';\r\nimport { ActuationGroup } from '@bingads-webui-campaign-react/actuator';\r\nimport { useFormService } from '@bingads-webui-react/form';\r\nimport {\r\n FormErrorGroup,\r\n UnmappedFormErrors as OriginalUnmappedFormErrors,\r\n} from '@bingads-webui-campaign-react/form-error';\r\nimport {\r\n apiErrorMapper,\r\n} from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\nimport { withControlErrorHandling } from '@bingads-webui-campaign-react/error-handling';\r\nimport { StepHeader } from '@bingads-webui-campaign-react/pmax-common';\r\nimport { PANEL_KEYS } from '@bingads-webui-campaign-react/wizard-shared-components';\r\nimport { SystemErrors } from '@bingads-webui-campaign-react/unified-app-shared';\r\n\r\nimport { CampaignDetailsForm } from './campaign-details-form';\r\n\r\nconst UnmappedFormErrors = withControlErrorHandling(OriginalUnmappedFormErrors);\r\n\r\nconst ALL_SECTIONS_KEYS = [PANEL_KEYS.CAMPAIGN_NAME, PANEL_KEYS.AD_SCHEDULE, PANEL_KEYS.URL_OPTIONS];\r\nconst INITIALLY_EXPANDED_SECTIONS_KEYS = ALL_SECTIONS_KEYS;\r\n\r\nexport const CampaignDetailsStepShell = ({\r\n data,\r\n onDataChange,\r\n error,\r\n}) => {\r\n const { serverErrors, systemErrors } = error || {};\r\n\r\n const { state } = useFormService();\r\n const { saveFailed } = state.context;\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nCampaignDetailsStepShell.propTypes = {\r\n data: PropTypes.shape({\r\n campaign: PropTypes.shape({}),\r\n }),\r\n error: PropTypes.shape({\r\n serverErrors: PropTypes.arrayOf(PropTypes.shape({})),\r\n systemErrors: PropTypes.arrayOf(PropTypes.shape({})),\r\n }),\r\n onDataChange: PropTypes.func.isRequired,\r\n};\r\n\r\nCampaignDetailsStepShell.defaultProps = {\r\n data: {},\r\n error: {},\r\n};\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { AttentionBeaconGroup } from '@bingads-webui-campaign-react/attention-beacon';\r\nimport { ActuationGroup } from '@bingads-webui-campaign-react/actuator';\r\nimport { useFormService } from '@bingads-webui-react/form';\r\nimport {\r\n FormErrorGroup,\r\n UnmappedFormErrors as OriginalUnmappedFormErrors,\r\n} from '@bingads-webui-campaign-react/form-error';\r\nimport {\r\n apiErrorMapper,\r\n} from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\nimport { withControlErrorHandling } from '@bingads-webui-campaign-react/error-handling';\r\nimport { PANEL_KEYS } from '@bingads-webui-campaign-react/wizard-shared-components';\r\nimport { SystemErrors } from '@bingads-webui-campaign-react/unified-app-shared';\r\n\r\nimport { CampaignDetailsForm } from './campaign-details-form';\r\n\r\nconst UnmappedFormErrors = withControlErrorHandling(OriginalUnmappedFormErrors);\r\n\r\nconst ALL_SECTIONS_KEYS = [\r\n PANEL_KEYS.CAMPAIGN_NAME,\r\n PANEL_KEYS.AD_SCHEDULE,\r\n PANEL_KEYS.URL_OPTIONS,\r\n PANEL_KEYS.BID_STRATEGY,\r\n PANEL_KEYS.BID_VALUE,\r\n PANEL_KEYS.BUDGET,\r\n PANEL_KEYS.LOCATIONS,\r\n PANEL_KEYS.LANGUAGE_TARGET,\r\n PANEL_KEYS.APP,\r\n];\r\nconst INITIALLY_EXPANDED_SECTIONS_KEYS = [\r\n PANEL_KEYS.CAMPAIGN_NAME,\r\n PANEL_KEYS.AD_SCHEDULE,\r\n PANEL_KEYS.URL_OPTIONS,\r\n PANEL_KEYS.BUDGET,\r\n PANEL_KEYS.BID_VALUE,\r\n PANEL_KEYS.LOCATIONS,\r\n PANEL_KEYS.LANGUAGE_TARGET,\r\n PANEL_KEYS.APP,\r\n];\r\n\r\nexport const CampaignDetailsEditStepShell = ({\r\n data,\r\n onDataChange,\r\n error,\r\n}) => {\r\n const { serverErrors, systemErrors } = error || {};\r\n\r\n const { state } = useFormService();\r\n const { saveFailed } = state.context;\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nCampaignDetailsEditStepShell.propTypes = {\r\n data: PropTypes.shape({\r\n campaign: PropTypes.shape({}),\r\n }),\r\n error: PropTypes.shape({\r\n serverErrors: PropTypes.arrayOf(PropTypes.shape({})),\r\n systemErrors: PropTypes.arrayOf(PropTypes.shape({})),\r\n }),\r\n onDataChange: PropTypes.func.isRequired,\r\n};\r\n\r\nCampaignDetailsEditStepShell.defaultProps = {\r\n data: {},\r\n error: {},\r\n};\r\n","import { useCallback, useContext } from 'react';\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { useWizardService, WIZARD_EVENTS } from '@bingads-webui-react/wizard';\r\nimport {\r\n loadCampaign,\r\n loadBundleCountries,\r\n modelToViewModelForCampaign,\r\n} from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\nimport {\r\n readLocationCriterions,\r\n readDayTimeCriterions,\r\n} from '@bingads-webui-campaign-react/perf-max-data';\r\nimport { ScenarioContext, ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { saveCampaign, useBudgetModel } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport { useAppStoreRepository } from '@bingads-webui-campaign-react/app-store-selector';\r\nimport { flowToPlatform } from '@bingads-webui-campaign-react/unified-app-assets';\r\n\r\nexport const useCampaignDetailsStepRepository = (props) => {\r\n const { state, send } = useWizardService();\r\n const serverContext = useContext(ServerContext);\r\n const scenarioContext = useContext(ScenarioContext);\r\n const activity = useContext(ActivityContext);\r\n const i18n = useContext(I18nContext);\r\n const { scope } = useContext(ScopeContext) || {};\r\n const { cid, aid } = scope.values;\r\n const { budgetModelToViewModel, budgetViewModelToModel, isBudgetInputValid } = useBudgetModel();\r\n\r\n const { isBudgetAndBiddingEnabled = false } = props || {};\r\n\r\n const { flow } = state.context.wizardData;\r\n const { searchAppById } = useAppStoreRepository({ platform: flowToPlatform[flow] });\r\n\r\n const load = useCallback(() => {\r\n const savedCampaign = state.context.wizardData.campaign;\r\n const { Id: campaignId } = savedCampaign || {};\r\n\r\n const loadPromises = {\r\n campaign: loadCampaign(cid, aid, campaignId),\r\n locationTargets: readLocationCriterions(cid, aid, campaignId),\r\n bundleCountriesAndLocationCriterions: loadBundleCountries({\r\n cid,\r\n aid,\r\n serverContext,\r\n }),\r\n dayTimeCriterions: readDayTimeCriterions(cid, aid, campaignId),\r\n };\r\n\r\n return Promise.props(loadPromises).then(({\r\n campaign,\r\n locationTargets,\r\n bundleCountriesAndLocationCriterions,\r\n dayTimeCriterions,\r\n }) => {\r\n const campaignData = modelToViewModelForCampaign({\r\n campaignModel: { ...campaign, Status: savedCampaign.status }, // MT sends UserPaused, if we send this back they mark it as active. So we just use Paused from the saved ad model\r\n locationCriterionsModel: locationTargets ? locationTargets.value : [],\r\n bundleCountries: bundleCountriesAndLocationCriterions.bundleCountries,\r\n dayTimeCriterionsModel: dayTimeCriterions ? dayTimeCriterions.value : [],\r\n });\r\n\r\n const commonCampaignData = data => ({\r\n ...bundleCountriesAndLocationCriterions,\r\n campaign: {\r\n ...data,\r\n ManualCPC: _.get(campaign, ['BiddingScheme', 'ManualCPC']) || null,\r\n ManualCPI: _.get(campaign, ['BiddingScheme', 'ManualCPI']) || null,\r\n },\r\n ...(isBudgetAndBiddingEnabled ? budgetModelToViewModel(campaign) : {}),\r\n });\r\n\r\n if (campaignData.data && campaignData.data.CampaignSettings && campaignData.data.CampaignSettings.length > 0) {\r\n const appSettings = campaignData.data.CampaignSettings.find(settings => settings['@odata.type'] === '#Model.AppSetting');\r\n const { AppId } = appSettings || {};\r\n\r\n return searchAppById(AppId).then((appInfo) => {\r\n campaignData.data.AppSetting = appInfo;\r\n campaignData.data.AppSettingReadOnly = true;\r\n\r\n return commonCampaignData(campaignData.data);\r\n });\r\n }\r\n\r\n return commonCampaignData(campaignData.data);\r\n }).catch((errorData) => {\r\n activity.trace(`[UnifiedAppWizard] loadData failed. Error: ${errorData}`);\r\n\r\n // eslint-disable-next-line prefer-promise-reject-errors\r\n return Promise.reject({\r\n error: {\r\n ...errorData,\r\n },\r\n });\r\n });\r\n }, [activity, aid, budgetModelToViewModel, cid, isBudgetAndBiddingEnabled, serverContext, state.context.wizardData.campaign, searchAppById]);\r\n\r\n const save = useCallback(({\r\n data,\r\n }) => {\r\n const {\r\n campaign: campaignData,\r\n bundleCountries,\r\n bundleLocationCriterions,\r\n budgetAmount,\r\n bidStrategy,\r\n ManualCPC,\r\n ManualCPI,\r\n isBudgetValid,\r\n isMarketingMetricValid,\r\n } = data;\r\n\r\n let campaignToSave = campaignData;\r\n\r\n if (isBudgetAndBiddingEnabled) {\r\n if (!isBudgetInputValid(isBudgetValid, isMarketingMetricValid)) {\r\n return Promise.reject();\r\n }\r\n\r\n campaignToSave = {\r\n ...campaignToSave,\r\n ...budgetViewModelToModel(bidStrategy, budgetAmount, ManualCPC, ManualCPI),\r\n };\r\n }\r\n\r\n const savePromises = {\r\n campaign: saveCampaign({\r\n campaign: { data: campaignToSave },\r\n bundleCountries,\r\n bundleLocationCriterions,\r\n }, {\r\n scenario: scenarioContext.name,\r\n i18n,\r\n activityLogger: scenarioContext.createActivity('updateCampaign'),\r\n }),\r\n };\r\n\r\n return Promise.props(savePromises).then(({\r\n campaign: campaignResults,\r\n }) => {\r\n activity.trace('[UnifiedAppWizard] - campaign settings updated in campaign details step');\r\n activity.signal('[UnifiedAppWizard] - campaign settings updated in campaign details step');\r\n\r\n const { campaign } = campaignResults;\r\n\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { campaign: campaign.data });\r\n\r\n return {\r\n campaign: campaign.data,\r\n };\r\n }).catch((errorData) => {\r\n activity.trace('[UnifiedAppWizard] - campaign settings update failed in campaign details step');\r\n\r\n // eslint-disable-next-line prefer-promise-reject-errors\r\n return Promise.reject({\r\n error: {\r\n ...errorData,\r\n },\r\n });\r\n });\r\n }, [activity, budgetViewModelToModel, i18n, isBudgetAndBiddingEnabled, isBudgetInputValid, scenarioContext, send]);\r\n\r\n return {\r\n load,\r\n save,\r\n };\r\n};\r\n","import { useResponsiveStyleWrapper } from '@bingads-webui-campaign-react/unified-app-shared';\r\n\r\nconst getStyles = () => ({\r\n formContainer: {\r\n maxWidth: 680,\r\n minWidth: 300,\r\n flex: '1',\r\n },\r\n});\r\n\r\nexport const useBudgetStepStyles = () => useResponsiveStyleWrapper(getStyles);\r\n","import React, { useContext, useMemo } from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { AttentionBeaconGroup } from '@bingads-webui-campaign-react/attention-beacon';\r\nimport { ActuationGroup } from '@bingads-webui-campaign-react/actuator';\r\nimport { useIsMounted } from '@bingads-webui-campaign-react/step-wizard-controls';\r\nimport { BudgetPanel, BidStrategyPanel, BidValuePanel, PANEL_KEYS } from '@bingads-webui-campaign-react/wizard-shared-components';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport {\r\n FormErrorGroup,\r\n UnmappedFormErrors as OriginalUnmappedFormErrors,\r\n} from '@bingads-webui-campaign-react/form-error';\r\nimport {\r\n apiErrorMapper,\r\n} from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\nimport {\r\n withControlErrorHandling,\r\n} from '@bingads-webui-campaign-react/error-handling';\r\nimport { useFormService } from '@bingads-webui-react/form';\r\nimport { StepHeader } from '@bingads-webui-campaign-react/pmax-common';\r\nimport { CampaignValidationGroup, SystemErrors, FLOWS } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport {\r\n Collapse,\r\n useCollapseState,\r\n collapseExpander,\r\n} from '@bingads-webui-campaign/wizard-jumbo-card';\r\nimport { MANUAL_CPA, MANUAL_CPC } from '@bingads-webui-campaign-react/bid-strategy-component';\r\nimport { useWizardService } from '@bingads-webui-react/wizard';\r\n\r\nimport { useBudgetStepStyles } from './use-budget-step-styles';\r\n\r\nconst UnmappedFormErrors = withControlErrorHandling(OriginalUnmappedFormErrors);\r\n\r\nexport const BudgetStepShell = ({\r\n data: budgetInfo,\r\n onDataChange,\r\n error,\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n const isMounted = useIsMounted();\r\n const { state } = useFormService();\r\n const { state: wizardState } = useWizardService();\r\n const { saveFailed } = state.context;\r\n const isLoading = useMemo(() => _.isEmpty(budgetInfo), [budgetInfo]);\r\n\r\n const getStyles = useBudgetStepStyles();\r\n\r\n const { serverErrors, systemErrors } = error || {};\r\n\r\n const [\r\n allSections,\r\n allExpandedSections,\r\n setExpandedSections,\r\n ] = useCollapseState(\r\n [PANEL_KEYS.BID_STRATEGY, PANEL_KEYS.BUDGET, PANEL_KEYS.BID_VALUE],\r\n [PANEL_KEYS.BUDGET, PANEL_KEYS.BID_VALUE]\r\n );\r\n\r\n const expandSections = useMemo(() =>\r\n collapseExpander({ setActiveKeys: setExpandedSections }), [setExpandedSections]);\r\n\r\n const {\r\n wizardData: { flow },\r\n } = wizardState.context;\r\n\r\n const isBidStrategyCPC = useMemo(() => flow !== FLOWS.WINDOWS, [flow]);\r\n const getBidStrategyOptions = useMemo(() => (isBidStrategyCPC ? [MANUAL_CPC] : [MANUAL_CPA]), [isBidStrategyCPC]);\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nBudgetStepShell.propTypes = {\r\n data: PropTypes.shape({}),\r\n onDataChange: PropTypes.func.isRequired,\r\n error: PropTypes.shape({\r\n serverErrors: PropTypes.arrayOf(PropTypes.shape({})),\r\n systemErrors: PropTypes.arrayOf(PropTypes.shape({})),\r\n }),\r\n};\r\n\r\nBudgetStepShell.defaultProps = {\r\n data: {},\r\n error: {},\r\n};\r\n","import { useCallback, useContext } from 'react';\r\nimport Promise from 'bluebird';\r\nimport { useWizardService, WIZARD_EVENTS } from '@bingads-webui-react/wizard';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport {\r\n loadCampaign,\r\n modelToViewModelForCampaign,\r\n} from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\nimport { saveCampaign, useBudgetModel } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport { ScenarioContext, ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { readLocationCriterions } from '@bingads-webui-campaign-react/perf-max-data';\r\n\r\nexport const useBudgetStepRepository = () => {\r\n const { state, send } = useWizardService();\r\n const { campaign: savedCampaign } = state.context.wizardData;\r\n const { scope } = useContext(ScopeContext) || {};\r\n const scenarioContext = useContext(ScenarioContext);\r\n const activity = useContext(ActivityContext);\r\n const i18n = useContext(I18nContext);\r\n const { cid, aid } = scope.values;\r\n const { budgetModelToViewModel, budgetViewModelToModel, isBudgetInputValid } = useBudgetModel();\r\n\r\n const load = useCallback(() => {\r\n const { Id: campaignId } = savedCampaign || {};\r\n\r\n const loadPromises = {\r\n campaign: loadCampaign(cid, aid, campaignId),\r\n locationTargets: readLocationCriterions(cid, aid, campaignId),\r\n };\r\n\r\n return Promise.props(loadPromises).then(({\r\n campaign,\r\n locationTargets,\r\n }) => {\r\n const campaignData = modelToViewModelForCampaign({\r\n campaignModel: { ...campaign, Status: savedCampaign.status }, // MT sends UserPaused, if we send this back they mark it as active. So we just use Paused from the saved ad model\r\n locationCriterionsModel: locationTargets ? locationTargets.value : [],\r\n });\r\n\r\n return {\r\n ...budgetModelToViewModel(campaign),\r\n campaign: campaignData.data,\r\n };\r\n });\r\n }, [aid, cid, budgetModelToViewModel, savedCampaign]);\r\n\r\n const save = useCallback(({ data }) => {\r\n const {\r\n campaign: updatedCampaign,\r\n budgetAmount,\r\n bidStrategy,\r\n ManualCPC,\r\n ManualCPI,\r\n isBudgetValid,\r\n isMarketingMetricValid,\r\n } = data || {};\r\n\r\n if (!isBudgetInputValid(isBudgetValid, isMarketingMetricValid)) {\r\n return Promise.reject();\r\n }\r\n\r\n const newCampaign = {\r\n ...updatedCampaign,\r\n ...budgetViewModelToModel(bidStrategy, budgetAmount, ManualCPC, ManualCPI),\r\n };\r\n\r\n const savePromises = {\r\n campaign: saveCampaign({\r\n campaign: { data: newCampaign },\r\n }, {\r\n scenario: scenarioContext.name,\r\n i18n,\r\n activityLogger: scenarioContext.createActivity('updateCampaign'),\r\n }),\r\n };\r\n\r\n return Promise.props(savePromises).then(({\r\n campaign: campaignResults,\r\n }) => {\r\n activity.trace('[UnifiedAppWizard] - campaign settings updated in budget step');\r\n activity.signal('[UnifiedAppWizard] - campaign settings updated in budget step');\r\n\r\n const { campaign } = campaignResults;\r\n\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, {\r\n campaign: {\r\n ...campaign.data,\r\n },\r\n });\r\n\r\n return {\r\n campaign: campaign.data,\r\n ...budgetModelToViewModel(campaign.data),\r\n };\r\n }).catch((errorData) => {\r\n activity.trace('[UnifiedAppWizard] - campaign settings update failed in budget step');\r\n\r\n // eslint-disable-next-line prefer-promise-reject-errors\r\n return Promise.reject({ error: { ...errorData } });\r\n });\r\n }, [isBudgetInputValid, budgetViewModelToModel, scenarioContext, i18n, activity, send, budgetModelToViewModel]);\r\n\r\n return {\r\n load,\r\n save,\r\n };\r\n};\r\n","import { useState, useEffect, useContext, useMemo } from 'react';\r\nimport _ from 'underscore';\r\nimport _preferencesService from '@bingads-webui-component-legacy/preference/service/index';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { useWizardService, getFlowFactors } from '@bingads-webui-react/wizard';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\n\r\nconst buildSchemaData = ({\r\n data,\r\n timeDisplayType,\r\n serverContext,\r\n cid,\r\n aid,\r\n i18n,\r\n}) => {\r\n const locations = _.map(\r\n _.filter(\r\n data.campaign && data.campaign.locationTargets && data.campaign.locationTargets.currentLevelSettings.currentLocations,\r\n loc => loc.SelectionStatus === 'Included'\r\n ),\r\n loc => loc.location\r\n );\r\n\r\n return ({\r\n campaignName: {\r\n data: data.campaign.Name,\r\n },\r\n assetGroupName: {\r\n data: data.assetGroup.data.Name,\r\n },\r\n appName: {\r\n data: data.campaign.AppSetting.name,\r\n },\r\n appPlatform: {\r\n data: data.campaign.AppSetting.AppPlatform,\r\n },\r\n autoGeneratedAssets: {\r\n data: {\r\n finalUrlExpansionOptOut: data.campaign.finalUrlExpansionOptOut,\r\n finalUrlExpansions: data.campaign.finalUrlExpansions,\r\n autoGeneratedTextOptOut: data.campaign.autoGeneratedTextOptOut,\r\n autoGeneratedImageOptOut: data.campaign.autoGeneratedImageOptOut,\r\n },\r\n },\r\n budget: {\r\n data: data.campaign.Budget,\r\n currencyCode: serverContext.CurrentAccount.CurrencyCode,\r\n },\r\n bidStrategy: {\r\n data: data.campaign.BiddingScheme,\r\n },\r\n bidValue: {\r\n data: data.campaign.BiddingScheme.ManualCPC,\r\n currencyCode: serverContext.CurrentAccount.CurrencyCode,\r\n },\r\n costPerSale: {\r\n data: {\r\n costPerSaleOptOut: data.campaign.costPerSaleOptOut,\r\n },\r\n },\r\n conversionGoals: {\r\n conversionGoals: data.campaign.conversionGoals,\r\n },\r\n locationTargeting: {\r\n locations,\r\n targetOption: data.campaign && data.campaign.locationTargets && data.campaign.locationTargets.currentLevelSettings.targetOption,\r\n },\r\n languages: {\r\n data: data.campaign.Languages,\r\n },\r\n audienceSignal: {\r\n data: data.assetGroup.data.AudienceGroup,\r\n },\r\n searchThemes: {\r\n data: data.assetGroup.data.AssetGroupSearchThemes,\r\n },\r\n images: {\r\n data: data.assetGroup.data.Images,\r\n shouldFetchFromMT: true,\r\n cid,\r\n aid,\r\n },\r\n logos: {\r\n data: data.assetGroup.data.Images,\r\n shouldFetchFromMT: true,\r\n cid,\r\n aid,\r\n label: _TL_('Logos'),\r\n isLogo: true,\r\n },\r\n headlines: {\r\n data: data.assetGroup.data.Headlines,\r\n },\r\n descriptions: {\r\n data: data.assetGroup.data.Descriptions,\r\n },\r\n videos: {\r\n data: data.assetGroup.data.videos,\r\n },\r\n adScheduleCampaign: {\r\n startDate: data.assetGroup.data.StartDate,\r\n endDate: data.assetGroup.data.EndDate,\r\n adSchedules: data.campaign && data.campaign.adSchedules && data.campaign.adSchedules.dayTimeRanges,\r\n useSearcherTimeZone: data.campaign.AdScheduleUseSearcherTimeZone,\r\n timeDisplayType,\r\n },\r\n urlOptions: {\r\n data: {\r\n TrackingUrlTemplate: data.campaign.TrackingUrlTemplate,\r\n FinalUrlSuffix: data.campaign.FinalUrlSuffix,\r\n UrlCustomParameters: data.campaign.UrlCustomParameters,\r\n },\r\n },\r\n finalUrlExpansions: {\r\n data: {\r\n finalUrlExpansions: data.campaign.finalUrlExpansions,\r\n },\r\n },\r\n urlRules: {\r\n data: {\r\n i18n,\r\n finalUrls: data.assetGroup.data.FinalUrls,\r\n path1: data.assetGroup.data.Path1,\r\n path2: data.assetGroup.data.Path2,\r\n mobileFinalUrls: data.assetGroup.data.MobileFinalUrls,\r\n urlRules: data.assetGroup.data.AssetGroupUrlTargets,\r\n },\r\n },\r\n newCustomerAcquisition: {\r\n data: {\r\n newCustomerAcquisitionOptOut: data.campaign.newCustomerAcquisitionOptOut,\r\n newCustomerAcquisition: data.campaign.newCustomerAcquisition,\r\n },\r\n currencyCode: serverContext.CurrentAccount.CurrencyCode,\r\n },\r\n });\r\n};\r\n\r\nexport const useSummarySchemaData = ({ data }) => {\r\n const { scope } = useContext(ScopeContext) || {};\r\n\r\n const i18n = useContext(I18nContext);\r\n\r\n const { cid, aid } = scope.values;\r\n\r\n const [timeDisplayType, setTimeDisplayType] = useState('12-hour');\r\n\r\n const serverContext = useContext(ServerContext);\r\n const { Permissions, DynamicPermissions } = serverContext || {};\r\n const permissions = useMemo(() => ({ dynamic: { ...DynamicPermissions }, ...Permissions }), [DynamicPermissions, Permissions]);\r\n\r\n const { state } = useWizardService();\r\n\r\n const { loadedStoresData, savedProductFilter, savedListingGroup } = state.context.wizardData;\r\n\r\n const { flow } = getFlowFactors(state);\r\n\r\n useEffect(() => {\r\n const preferencesService = _preferencesService.default || _preferencesService;\r\n preferencesService.initialize().then(() => {\r\n const isTwelveHourDisplay = preferencesService.findByName('WebApp.CampaignUI.isTwelveHourDisplay') || {};\r\n setTimeDisplayType(_.isUndefined(isTwelveHourDisplay.Data) || isTwelveHourDisplay.Data ? '12-hour' : '24-hour');\r\n });\r\n }, []);\r\n\r\n return (data && data.campaign && data.assetGroup && buildSchemaData({\r\n data,\r\n timeDisplayType,\r\n serverContext,\r\n cid,\r\n aid,\r\n flow,\r\n loadedStoresData,\r\n savedProductFilter,\r\n savedListingGroup,\r\n i18n,\r\n permissions,\r\n })) || {};\r\n};\r\n","import React, { useEffect, useMemo, useCallback } from 'react';\r\n\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { StepHeader } from '@bingads-webui-campaign-react/pmax-common';\r\nimport { GeneratedUI } from '@bingads-webui-campaign-react/ui-generator';\r\nimport { summaryPageComponentTypes } from '@bingads-webui-campaign-react/summary-page';\r\nimport { WIZARD_EVENTS, getCurrentFlow, useWizardService } from '@bingads-webui-react/wizard';\r\nimport { STEP_PATHS } from '@bingads-webui-campaign-react/unified-app-campaign-wizard';\r\nimport { SummaryShimmer } from '@bingads-webui-campaign-react/perf-max-wizard-north-star';\r\n\r\nimport { useSummarySchemaData } from './use-summary-schema-data';\r\nimport { buildSchema } from './schema';\r\n\r\nexport const SummaryStepShell = ({\r\n data,\r\n onDataChange,\r\n}) => {\r\n const schemaData = useSummarySchemaData({ data });\r\n const isLoading = useMemo(() => _.isEmpty(data), [data]);\r\n\r\n const appPlatformString = useMemo(() => {\r\n if (schemaData.appPlatform && schemaData.appPlatform.data) {\r\n if (schemaData.appPlatform.data === 'Android') {\r\n return _TL_('Android mobile app name');\r\n } else if (schemaData.appPlatform.data === 'iOS') {\r\n return _TL_('iOS mobile app name');\r\n } else if (schemaData.appPlatform.data === 'Windows') {\r\n return _TL_('Windows app name');\r\n }\r\n }\r\n return _TL_('App name');\r\n }, [schemaData.appPlatform]);\r\n\r\n const { send, state } = useWizardService();\r\n\r\n const currentFlow = getCurrentFlow(state);\r\n const { wizardData } = state.context;\r\n const { flow } = wizardData;\r\n\r\n const onAssetsHeaderActionClick = useCallback(() => {\r\n send(WIZARD_EVENTS.NAVIGATE_TO, {\r\n stepId: STEP_PATHS.ASSETS,\r\n });\r\n }, [send]);\r\n\r\n const onTargetingHeaderActionClick = useCallback(() => send(WIZARD_EVENTS.NAVIGATE_TO, {\r\n stepId: STEP_PATHS.TARGETING,\r\n }), [send]);\r\n\r\n const onCampaignSettingsHeaderActionClick = useCallback(() =>\r\n send(WIZARD_EVENTS.NAVIGATE_TO, {\r\n stepId: STEP_PATHS.CAMPAIGN_DETAILS,\r\n }), [send]);\r\n\r\n const onBudgetSettingsHeaderActionClick = useCallback(() =>\r\n send(WIZARD_EVENTS.NAVIGATE_TO, {\r\n stepId: STEP_PATHS.BUDGET,\r\n }), [send]);\r\n\r\n const options = useMemo(() => ({\r\n onAssetsHeaderActionClick,\r\n onTargetingHeaderActionClick,\r\n onCampaignSettingsHeaderActionClick,\r\n onBudgetSettingsHeaderActionClick,\r\n appPlatformString,\r\n flow,\r\n }), [onAssetsHeaderActionClick, onTargetingHeaderActionClick, onCampaignSettingsHeaderActionClick, onBudgetSettingsHeaderActionClick, appPlatformString, flow]);\r\n\r\n const schema = buildSchema(options);\r\n\r\n useEffect(() => (\r\n onDataChange({\r\n data,\r\n isValid: true,\r\n })\r\n ), [data, onDataChange]);\r\n\r\n return (\r\n
\r\n \r\n {isLoading ?\r\n :\r\n \r\n }\r\n
\r\n );\r\n};\r\n\r\nSummaryStepShell.propTypes = {\r\n data: PropTypes.shape({}),\r\n onDataChange: PropTypes.func.isRequired,\r\n};\r\n\r\nSummaryStepShell.defaultProps = {\r\n data: {},\r\n};\r\n","import { buildDefaultDataProperty } from '@bingads-webui-campaign-react/ui-generator';\r\n\r\nexport const buildSchema = options => ({\r\n separatorStyles: {\r\n marginBottom: 20,\r\n },\r\n assets: {\r\n type: 'panel',\r\n header: {\r\n title: _TL_('Assets'),\r\n actionButton: {\r\n label: _TL_('Edit'),\r\n iconName: 'Edit',\r\n ariaLabel: _TL_('Edit'),\r\n onClick: options.onAssetsHeaderActionClick,\r\n },\r\n },\r\n components: {\r\n separatorStyles: {\r\n marginBottom: 8,\r\n },\r\n assetGroupName: buildDefaultDataProperty({\r\n label: _TL_('Asset group name'),\r\n dynamicProps: props => props.assetGroupName,\r\n }),\r\n appName: buildDefaultDataProperty({\r\n label: options.appPlatformString,\r\n dynamicProps: props => props.appName,\r\n }),\r\n hd1: {\r\n type: 'horizontal-divider',\r\n },\r\n images: {\r\n type: 'images',\r\n dynamicProps: props => props.images,\r\n },\r\n hd2: {\r\n type: 'horizontal-divider',\r\n isRendered: options.flow !== 'WINDOWS',\r\n },\r\n videos: {\r\n type: 'videos',\r\n dynamicProps: props => props.videos,\r\n isRendered: options.flow !== 'WINDOWS',\r\n },\r\n hd3: {\r\n type: 'horizontal-divider',\r\n },\r\n headlines: {\r\n type: 'headlines',\r\n dynamicProps: props => props.headlines,\r\n },\r\n descriptions: {\r\n type: 'descriptions',\r\n dynamicProps: props => props.descriptions,\r\n },\r\n },\r\n },\r\n targeting: {\r\n type: 'panel',\r\n header: {\r\n title: _TL_('Targeting'),\r\n actionButton: {\r\n label: _TL_('Edit'),\r\n iconName: 'Edit',\r\n ariaLabel: _TL_('Edit'),\r\n onClick: options.onTargetingHeaderActionClick,\r\n },\r\n },\r\n components: {\r\n separatorStyles: {\r\n marginBottom: 8,\r\n },\r\n locationTargeting: {\r\n type: 'location-targeting',\r\n dynamicProps: props => props.locationTargeting,\r\n },\r\n languages: {\r\n type: 'languages',\r\n dynamicProps: props => props.languages,\r\n },\r\n audienceSignal: {\r\n type: 'audience-signal',\r\n dynamicProps: props => props.audienceSignal,\r\n },\r\n },\r\n },\r\n campaignSettings: {\r\n type: 'panel',\r\n header: {\r\n title: _TL_('Campaign Details'),\r\n actionButton: {\r\n label: _TL_('Edit'),\r\n iconName: 'Edit',\r\n ariaLabel: _TL_('Edit'),\r\n onClick: options.onCampaignSettingsHeaderActionClick,\r\n },\r\n },\r\n components: {\r\n separatorStyles: {\r\n marginBottom: 8,\r\n },\r\n campaignName: buildDefaultDataProperty({\r\n label: _TL_('Campaign name'),\r\n dynamicProps: props => props.campaignName,\r\n }),\r\n adScheduleCampaign: {\r\n type: 'ad-schedule',\r\n dynamicProps: props => props.adScheduleCampaign,\r\n },\r\n conversionGoals: {\r\n type: 'conversion-goals',\r\n dynamicProps: props => props.conversionGoals,\r\n },\r\n },\r\n },\r\n budget: {\r\n type: 'panel',\r\n header: {\r\n title: _TL_('Budget'),\r\n actionButton: {\r\n label: _TL_('Edit'),\r\n iconName: 'Edit',\r\n ariaLabel: _TL_('Edit'),\r\n onClick: options.onBudgetSettingsHeaderActionClick,\r\n },\r\n },\r\n components: {\r\n separatorStyles: {\r\n marginBottom: 8,\r\n },\r\n budget: {\r\n type: 'budget',\r\n dynamicProps: props => props.budget,\r\n },\r\n bidStrategy: {\r\n type: 'bid-strategy',\r\n dynamicProps: props => props.bidStrategy,\r\n },\r\n bidValue: {\r\n type: 'bid-value',\r\n dynamicProps: props => props.bidValue,\r\n },\r\n },\r\n },\r\n});\r\n","import { useCallback, useContext } from 'react';\r\nimport Promise from 'bluebird';\r\nimport {\r\n loadBundleCountries,\r\n loadCampaign,\r\n modelToViewModelForCampaign,\r\n loadAssetGroupWithVideos,\r\n} from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { useWizardService } from '@bingads-webui-react/wizard';\r\nimport {\r\n readLocationCriterions,\r\n} from '@bingads-webui-campaign-react/perf-max-data';\r\nimport { flowToPlatform } from '@bingads-webui-campaign-react/unified-app-assets';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { createVideoRepository } from '@bingads-webui-campaign-react/asset-library-services';\r\nimport { useAppStoreRepository } from '@bingads-webui-campaign-react/app-store-selector';\r\nimport { updateAssetGroupAndCampaignStatus } from '@bingads-webui-campaign-react/perf-max-wizard-north-star';\r\nimport { ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\n\r\nexport const useSummaryStepRepository = () => {\r\n const serverContext = useContext(ServerContext);\r\n const { scope } = useContext(ScopeContext) || {};\r\n const { cid, aid } = scope.values;\r\n const { state } = useWizardService();\r\n\r\n const activity = useContext(ActivityContext);\r\n\r\n const i18n = useContext(I18nContext);\r\n\r\n const {\r\n wizardData: {\r\n flow,\r\n isPublishing,\r\n campaign: savedCampaign,\r\n assetGroup: savedAssetGroup,\r\n },\r\n } = state.context;\r\n\r\n const { searchAppById, oDataConfig } = useAppStoreRepository({ platform: flowToPlatform[flow] });\r\n\r\n const videoRepository = createVideoRepository({\r\n oDataConfig,\r\n aid,\r\n cid,\r\n });\r\n\r\n const load = useCallback(() => {\r\n const campaignId = savedCampaign ? savedCampaign.Id : null;\r\n const assetGroupId = savedAssetGroup ? savedAssetGroup.Id : null;\r\n\r\n const loadPromises = {\r\n campaign: loadCampaign(cid, aid, campaignId),\r\n locationTargets: readLocationCriterions(cid, aid, campaignId),\r\n assetGroup: loadAssetGroupWithVideos(cid, aid, campaignId, assetGroupId, i18n, false, false, videoRepository),\r\n bundleCountriesAndLocationCriterions: loadBundleCountries({\r\n cid,\r\n aid,\r\n serverContext,\r\n }),\r\n };\r\n return Promise.props(loadPromises).then(({\r\n bundleCountriesAndLocationCriterions,\r\n campaign,\r\n assetGroup,\r\n locationTargets,\r\n }) => {\r\n const campaignData = modelToViewModelForCampaign({\r\n campaignModel: { ...campaign, Status: savedCampaign.status }, // MT sends UserPaused, if we send this back they mark it as active. So we just use Paused from the saved ad model\r\n locationCriterionsModel: locationTargets ? locationTargets.value : [],\r\n bundleCountries: bundleCountriesAndLocationCriterions.bundleCountries,\r\n });\r\n\r\n return ({\r\n ...bundleCountriesAndLocationCriterions,\r\n campaign: campaignData.data,\r\n assetGroup,\r\n });\r\n }).then(({ campaign, assetGroup }) => {\r\n if (campaign && campaign.CampaignSettings && campaign.CampaignSettings.length > 0) {\r\n const appSettings = campaign.CampaignSettings.find(settings => settings['@odata.type'] === '#Model.AppSetting');\r\n const { AppId } = appSettings;\r\n\r\n return searchAppById(AppId).then((appInfo) => {\r\n // eslint-disable-next-line no-param-reassign\r\n campaign.AppSetting = appInfo;\r\n\r\n return {\r\n campaign,\r\n assetGroup,\r\n };\r\n });\r\n }\r\n return {\r\n campaign,\r\n assetGroup,\r\n };\r\n }).catch((errorData) => {\r\n activity.trace(`[UnifiedAppWizard] loadData failed. Error: ${errorData}`);\r\n\r\n // eslint-disable-next-line prefer-promise-reject-errors\r\n return Promise.reject({\r\n error: {\r\n ...errorData,\r\n },\r\n });\r\n });\r\n }, [activity, aid, cid, i18n, savedAssetGroup, savedCampaign, searchAppById, serverContext, videoRepository]);\r\n\r\n const save = useCallback(({\r\n data,\r\n }) => {\r\n const { Id: campaignId } = savedCampaign || {};\r\n const { Id: assetGroupId } = savedAssetGroup || {};\r\n\r\n if (isPublishing) {\r\n updateAssetGroupAndCampaignStatus({ campaignId, assetGroupId }).then(() => ({\r\n campaign: data.campaign,\r\n assetGroup: data.assetGroup,\r\n })).catch(errorData => (\r\n // eslint-disable-next-line prefer-promise-reject-errors\r\n Promise.reject({ error: { ...errorData } })));\r\n }\r\n\r\n // no update necessary if not publishing.\r\n return Promise.resolve({\r\n campaign: data.campaign,\r\n assetGroup: data.assetGroup,\r\n });\r\n }, [isPublishing, savedAssetGroup, savedCampaign]);\r\n\r\n return {\r\n load,\r\n save,\r\n };\r\n};\r\n","export const UNIFIED_APP_CAMPAIGN_WIZARD_ID = 'UNIFIED_APP_CAMPAIGN_WIZARD_ID';\r\nexport const UNIFIED_APP_EDIT_CAMPAIGN_SETTINGS_WIZARD_ID = 'UNIFIED_APP_EDIT_CAMPAIGN_SETTINGS_WIZARD_ID';\r\nexport const UNIFIED_APP_EDIT_ASSET_GROUP_SETTINGS_WIZARD_ID = 'UNIFIED_APP_EDIT_ASSET_GROUP_SETTINGS_WIZARD_ID';\r\n\r\nexport const STEP_PATHS = {\r\n ASSETS: 'ASSETS',\r\n TARGETING: 'TARGETING',\r\n CAMPAIGN_DETAILS: 'CAMPAIGN_DETAILS',\r\n CAMPAIGN_DETAILS_EDIT: 'CAMPAIGN_DETAILS_EDIT',\r\n ASSETS_GROUP_EDIT: 'ASSETS_GROUP_EDIT',\r\n BUDGET: 'BUDGET',\r\n SUMMARY: 'SUMMARY',\r\n};\r\n","import React from 'react';\r\nimport { Activity } from '@bingads-webui-react/hoc-with-signal';\r\nimport { AssetsStepShell, AssetsStepSettingsShell, useAssetsStepRepository } from '@bingads-webui-campaign-react/unified-app-assets';\r\nimport { TargetingStepShell, useTargetingStepRepository } from '@bingads-webui-campaign-react/unified-app-targeting';\r\nimport { CampaignDetailsStepShell, CampaignDetailsEditStepShell, useCampaignDetailsStepRepository, useCampaignDetailsEditStepRepository } from '@bingads-webui-campaign-react/unified-app-campaign-details';\r\nimport { BudgetStepShell, useBudgetStepRepository } from '@bingads-webui-campaign-react/unified-app-budget';\r\nimport { SummaryStepShell, useSummaryStepRepository } from '@bingads-webui-campaign-react/unified-app-summary';\r\n\r\nimport { STEP_PATHS } from './step-constants';\r\n\r\nexport const UnifiedAppCampaignStepsConfig = [\r\n {\r\n id: STEP_PATHS.ASSETS,\r\n view: props => ,\r\n repository: useAssetsStepRepository,\r\n },\r\n {\r\n id: STEP_PATHS.TARGETING,\r\n view: props => ,\r\n repository: useTargetingStepRepository,\r\n },\r\n {\r\n id: STEP_PATHS.CAMPAIGN_DETAILS,\r\n view: props => ,\r\n repository: useCampaignDetailsStepRepository,\r\n },\r\n {\r\n id: STEP_PATHS.BUDGET,\r\n view: props => ,\r\n repository: useBudgetStepRepository,\r\n },\r\n {\r\n id: STEP_PATHS.SUMMARY,\r\n view: props => ,\r\n repository: useSummaryStepRepository,\r\n },\r\n];\r\n\r\nexport const UnifiedAppEditCampaignSettingsStepsConfig = [\r\n {\r\n id: STEP_PATHS.CAMPAIGN_DETAILS_EDIT,\r\n view: props => ,\r\n repository: useCampaignDetailsEditStepRepository,\r\n },\r\n];\r\n\r\nexport const UnifiedAppEditAssetGroupSettingsStepConfig = [\r\n {\r\n id: STEP_PATHS.ASSETS_GROUP_EDIT,\r\n view: props => ,\r\n repository: useAssetsStepRepository,\r\n },\r\n];\r\n\r\nexport const getStepListConfig = ({ i18n }) => {\r\n const stepListConfig = [{\r\n id: STEP_PATHS.ASSETS,\r\n title: i18n.getString(_TL_('Assets')),\r\n }, {\r\n id: STEP_PATHS.TARGETING,\r\n title: i18n.getString(_TL_('Targeting')),\r\n }, {\r\n id: STEP_PATHS.CAMPAIGN_DETAILS,\r\n title: i18n.getString(_TL_('Campaign details')),\r\n }, {\r\n id: STEP_PATHS.BUDGET,\r\n title: i18n.getString(_TL_('Budget')),\r\n }, {\r\n id: STEP_PATHS.SUMMARY,\r\n title: i18n.getString(_TL_('Summary')),\r\n }];\r\n\r\n return stepListConfig;\r\n};\r\n","import { useCallback, useContext } from 'react';\r\nimport Promise from 'bluebird';\r\nimport {\r\n loadBundleCountries,\r\n loadCampaign,\r\n modelToViewModelForCampaign,\r\n} from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { useWizardService, WIZARD_EVENTS } from '@bingads-webui-react/wizard';\r\nimport { ScenarioContext, ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport {\r\n readLocationCriterions,\r\n} from '@bingads-webui-campaign-react/perf-max-data';\r\nimport { saveCampaign, saveAssetGroup } from '@bingads-webui-campaign-react/unified-app-shared';\r\n\r\nexport const useTargetingStepRepository = () => {\r\n const serverContext = useContext(ServerContext);\r\n const scenarioContext = useContext(ScenarioContext);\r\n const { scope } = useContext(ScopeContext) || {};\r\n\r\n const { cid, aid } = scope.values;\r\n\r\n const { state, send } = useWizardService();\r\n\r\n const activity = useContext(ActivityContext);\r\n\r\n const i18n = useContext(I18nContext);\r\n\r\n const load = useCallback(() => {\r\n const savedCampaign = state.context.wizardData.campaign;\r\n const savedAssetGroup = state.context.wizardData.assetGroup;\r\n const { Id: campaignId } = savedCampaign || {};\r\n\r\n const loadPromises = {\r\n campaign: loadCampaign(cid, aid, campaignId),\r\n locationTargets: readLocationCriterions(cid, aid, campaignId),\r\n assetGroup: Promise.resolve(savedAssetGroup),\r\n bundleCountriesAndLocationCriterions: loadBundleCountries({\r\n cid,\r\n aid,\r\n serverContext,\r\n }),\r\n };\r\n\r\n return Promise.props(loadPromises).then(({\r\n bundleCountriesAndLocationCriterions,\r\n campaign,\r\n assetGroup,\r\n locationTargets,\r\n }) => {\r\n const campaignData = modelToViewModelForCampaign({\r\n campaignModel: { ...campaign, Status: savedCampaign.status }, // MT sends UserPaused, if we send this back they mark it as active. So we just use Paused from the saved ad model\r\n locationCriterionsModel: locationTargets ? locationTargets.value : [],\r\n bundleCountries: bundleCountriesAndLocationCriterions.bundleCountries,\r\n });\r\n\r\n return ({\r\n ...bundleCountriesAndLocationCriterions,\r\n campaign: campaignData.data,\r\n assetGroup,\r\n });\r\n });\r\n }, [aid, cid, serverContext, state.context.wizardData.assetGroup, state.context.wizardData.campaign]);\r\n\r\n const save = useCallback(({\r\n data,\r\n initialData,\r\n }) => {\r\n const {\r\n campaign: campaignToSave,\r\n assetGroup: assetGroupToSave,\r\n bundleCountries,\r\n bundleLocationCriterions,\r\n } = data || {};\r\n\r\n const { assetGroup: initialAssetGroup } = initialData;\r\n\r\n const savePromises = {\r\n campaign: saveCampaign({\r\n campaign: { data: campaignToSave },\r\n bundleCountries,\r\n bundleLocationCriterions,\r\n }, {\r\n scenario: scenarioContext.name,\r\n i18n,\r\n activityLogger: scenarioContext.createActivity('updateCampaign'),\r\n }),\r\n assetGroup: saveAssetGroup({\r\n assetGroup: { data: assetGroupToSave },\r\n originalAssetGroup: { data: initialAssetGroup },\r\n campaign: campaignToSave,\r\n }, {\r\n scenario: scenarioContext.name,\r\n i18n,\r\n activityLogger: scenarioContext.createActivity('updateAssetGroup'),\r\n serverContext,\r\n cid,\r\n aid,\r\n activity,\r\n }),\r\n };\r\n\r\n return Promise.props(savePromises).then(({\r\n campaign: campaignResults,\r\n assetGroup: assetGroupResults,\r\n }) => {\r\n activity.trace('[UnifiedAppWizard] - campaign/assetgroup settings updated in targeting step');\r\n activity.signal('[UnifiedAppWizard] - campaign/assetgroup settings updated in targeting step');\r\n\r\n const {\r\n campaign,\r\n } = campaignResults;\r\n\r\n const {\r\n assetGroup,\r\n } = assetGroupResults;\r\n\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { campaign: campaign.data });\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { assetGroup: assetGroup.data });\r\n\r\n return {\r\n campaign: campaign.data,\r\n assetGroup: assetGroup.data,\r\n };\r\n }).catch((errorData) => {\r\n activity.trace('[UnifiedAppWizard] - campaign/assetgroup settings update failed in targeting step');\r\n\r\n // eslint-disable-next-line prefer-promise-reject-errors\r\n return Promise.reject({\r\n error: {\r\n ...errorData,\r\n },\r\n });\r\n });\r\n }, [activity, aid, cid, i18n, scenarioContext, send, serverContext]);\r\n\r\n return {\r\n load,\r\n save,\r\n };\r\n};\r\n","import { useCampaignDetailsStepRepository } from './use-campaign-details-step-repository';\r\n\r\nexport const useCampaignDetailsEditStepRepository = () =>\r\n useCampaignDetailsStepRepository({ isBudgetAndBiddingEnabled: true });\r\n","import React, { useContext, useCallback, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { Stack, PrimaryButton, DefaultButton } from '@bingads-webui-react/fluent-controls';\r\nimport {\r\n useWizardService,\r\n getIsFirstStep,\r\n getIsLastStep,\r\n getCurrentStepId,\r\n matchStepState,\r\n STEP_STATES,\r\n WIZARD_EVENTS,\r\n} from '@bingads-webui-react/wizard';\r\nimport { CancelButton } from '@bingads-webui-fluent-component/wizard-ui-library';\r\nimport { ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { STEP_PATHS } from '../steps/step-constants';\r\n\r\nconst SaveAndPublish = () => {\r\n const i18n = useContext(I18nContext);\r\n\r\n const activity = useContext(ActivityContext);\r\n\r\n const { state, send } = useWizardService();\r\n const isBlocking = matchStepState(state, STEP_STATES.FETCHING) || matchStepState(state, STEP_STATES.LOADING) || matchStepState(state, STEP_STATES.SAVING);\r\n\r\n const onNextClicked = useCallback(() => {\r\n if (activity) {\r\n activity.signal('onSaveAndPublishClicked');\r\n }\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { isPublishing: true });\r\n send(WIZARD_EVENTS.SAVE_AND_EXIT);\r\n }, [activity, send]);\r\n\r\n const buttonText = useMemo(() => {\r\n const currentStep = getCurrentStepId(state);\r\n\r\n if (currentStep === STEP_PATHS.SUMMARY) {\r\n return i18n.getString(_TL_('Go live'));\r\n }\r\n\r\n return i18n.getString(_TL_('Save & go live'));\r\n }, [i18n, state]);\r\n\r\n return (\r\n \r\n {buttonText}\r\n \r\n );\r\n};\r\n\r\nconst SaveAsDraft = () => {\r\n const i18n = useContext(I18nContext);\r\n\r\n const activity = useContext(ActivityContext);\r\n\r\n const { state, send } = useWizardService();\r\n const isBlocking = matchStepState(state, STEP_STATES.FETCHING) || matchStepState(state, STEP_STATES.LOADING) || matchStepState(state, STEP_STATES.SAVING);\r\n\r\n const onNextClicked = useCallback(() => {\r\n if (activity) {\r\n activity.signal('onSaveAsDraftClicked');\r\n }\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { isPublishing: false });\r\n send(WIZARD_EVENTS.SAVE_AND_EXIT);\r\n }, [activity, send]);\r\n\r\n const buttonText = useMemo(() => {\r\n const currentStep = getCurrentStepId(state);\r\n\r\n if (currentStep === STEP_PATHS.SUMMARY) {\r\n return i18n.getString(_TL_('Don\\'t go live'));\r\n }\r\n\r\n return i18n.getString(_TL_('Save & don\\'t go live'));\r\n }, [i18n, state]);\r\n\r\n return (\r\n \r\n {buttonText}\r\n \r\n );\r\n};\r\n\r\nexport const NextButton = ({ buttonText, disabled }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n const { state, send } = useWizardService();\r\n const isBlocking = matchStepState(state, STEP_STATES.FETCHING) || matchStepState(state, STEP_STATES.LOADING) || matchStepState(state, STEP_STATES.SAVING);\r\n\r\n const onNextClicked = useCallback(() => {\r\n send(WIZARD_EVENTS.SAVE_AND_NEXT);\r\n }, [send]);\r\n\r\n return (\r\n \r\n {buttonText ? i18n.getString(buttonText) : i18n.getString(_TL_('Next'))}\r\n \r\n );\r\n};\r\n\r\nexport const BackButton = ({ buttonText }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n const { state, send } = useWizardService();\r\n const isBlocking = matchStepState(state, STEP_STATES.FETCHING) || matchStepState(state, STEP_STATES.LOADING) || matchStepState(state, STEP_STATES.SAVING);\r\n\r\n const onBackClicked = useCallback(() => {\r\n send(WIZARD_EVENTS.BACK);\r\n }, [send]);\r\n\r\n return (\r\n \r\n {buttonText ? i18n.getString(buttonText) : i18n.getString(_TL_('Back'))}\r\n \r\n );\r\n};\r\nBackButton.propTypes = {\r\n buttonText: PropTypes.string,\r\n};\r\nBackButton.defaultProps = {\r\n buttonText: undefined,\r\n};\r\n\r\nNextButton.propTypes = {\r\n buttonText: PropTypes.string,\r\n disabled: PropTypes.bool,\r\n};\r\nNextButton.defaultProps = {\r\n buttonText: undefined,\r\n disabled: false,\r\n};\r\n\r\nexport const UnifiedAppCampaignFooter = ({\r\n nextButtonText,\r\n nextDisabled,\r\n backButtonText,\r\n cancelButtonText,\r\n hideBackButton,\r\n}) => {\r\n const { state } = useWizardService();\r\n const isFirstStep = getIsFirstStep(state);\r\n const isLastStep = getIsLastStep(state);\r\n\r\n return (\r\n \r\n {(!isFirstStep && !hideBackButton) && }\r\n {(!isLastStep ? : )}\r\n {isLastStep && }\r\n {isFirstStep && }\r\n \r\n );\r\n};\r\nUnifiedAppCampaignFooter.propTypes = {\r\n nextButtonText: PropTypes.string,\r\n nextDisabled: PropTypes.bool,\r\n backButtonText: PropTypes.string,\r\n cancelButtonText: PropTypes.string,\r\n hideBackButton: PropTypes.bool,\r\n};\r\nUnifiedAppCampaignFooter.defaultProps = {\r\n nextButtonText: undefined,\r\n nextDisabled: false,\r\n backButtonText: undefined,\r\n cancelButtonText: undefined,\r\n hideBackButton: false,\r\n};\r\n","import React, { useContext } from 'react';\r\nimport { Stack } from '@fluentui/react';\r\nimport {\r\n SaveAndExitButton,\r\n CancelButton,\r\n} from '@bingads-webui-react/wizard-ui-library';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\n\r\nexport const EditFooter = () => {\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import _ from 'underscore';\r\nimport React, { useMemo, useCallback, useContext } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { Constants } from '@bingads-webui-theme-2018/theme-fluent';\r\nimport { ResponsiveStepList } from '@bingads-webui-react/step-progress-indicator';\r\nimport { useResponsiveSize } from '@bingads-webui-react/with-responsive-size';\r\nimport {\r\n useWizardService,\r\n getCurrentStepId,\r\n getCurrentFlow,\r\n WIZARD_EVENTS,\r\n} from '@bingads-webui-react/wizard';\r\n\r\nimport { getStepListConfig } from '../steps/step-config';\r\n\r\nexport const StepList = () => {\r\n const { state, send } = useWizardService();\r\n const i18n = useContext(I18nContext);\r\n\r\n const currentStepId = getCurrentStepId(state);\r\n const currentFlow = getCurrentFlow(state);\r\n const displayMode = useResponsiveSize(Constants.ResponsiveSizeBreakpoints);\r\n const { flow } = state.context.wizardData;\r\n\r\n const stepListConfig = useMemo(() => getStepListConfig({ i18n, flow, currentStepId }), [currentStepId, flow, i18n]);\r\n\r\n const getDefaultOnItemClickFn = useCallback((step) => {\r\n let toStep;\r\n if (currentFlow.includes(step.id)) {\r\n toStep = step;\r\n } else if (!_.isEmpty(step.steps)) {\r\n const firstSubStep = _.find(step.steps, s => currentFlow.includes(s.id));\r\n if (firstSubStep) {\r\n toStep = firstSubStep;\r\n }\r\n }\r\n if (toStep && toStep.isBehind) {\r\n return () => {\r\n send(WIZARD_EVENTS.NAVIGATE_TO, {\r\n stepId: toStep.id,\r\n });\r\n };\r\n }\r\n return undefined;\r\n }, [currentFlow, send]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\n","import appConfig from '@bingads-webui-component-legacy/config/index';\r\nimport localStorage from '@bingads-webui-component-legacy/storage/localStorage';\r\nimport { LocalStorageKeys } from '@bingads-webui-campaign-react/campaign-onboarding-v2';\r\nimport { APP_STORE_TO_STORE_TYPE } from '@bingads-webui-campaign-react/unified-app-shared';\r\n\r\nconst localStorageKey = LocalStorageKeys.UnifiedAppCampaignAdType;\r\n\r\nexport const useLocalStorageStoreType = (defaultStoreType) => {\r\n let unifiedAppCampaignStoreType = appConfig.get(localStorageKey);\r\n if (!unifiedAppCampaignStoreType) {\r\n if (localStorage && localStorage.supportsStorage()) {\r\n unifiedAppCampaignStoreType = localStorage.get(localStorageKey);\r\n appConfig.set(localStorageKey, unifiedAppCampaignStoreType);\r\n }\r\n }\r\n\r\n return unifiedAppCampaignStoreType || defaultStoreType;\r\n};\r\n\r\nexport const useCampaignStoreType = (campaign, defaultStoreType) => {\r\n if (campaign && campaign.CampaignSettings) {\r\n const appSettings = campaign.CampaignSettings.find(settings => settings['@odata.type'] === '#Model.AppSetting');\r\n\r\n if (appSettings && appSettings.AppStore) {\r\n return APP_STORE_TO_STORE_TYPE[appSettings.AppStore];\r\n }\r\n }\r\n return defaultStoreType;\r\n};\r\n","import React, { useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Layout } from '@bingads-webui-react/wizard';\r\nimport { StoreTypes, STORE_TYPE_TO_FLOW } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport { withSiteMap, getRoutePathById } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { withRecommendationContext } from '@bingads-webui-campaign-react/perf-max-recommendation';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\nimport { UnifiedAppWizard } from './wizard';\r\n\r\nimport { UnifiedAppCampaignStepsConfig } from '../steps/step-config';\r\nimport { UnifiedAppCampaignFooter, StepList } from '../components';\r\nimport { STEP_PATHS, UNIFIED_APP_CAMPAIGN_WIZARD_ID } from '../steps/step-constants';\r\nimport { useLocalStorageStoreType } from './use-store-type';\r\n\r\nexport const UnifiedAppCampaignWizardInternal = ({\r\n perfMarker, scope, siteMap,\r\n}) => {\r\n const storeType = useLocalStorageStoreType(StoreTypes.AndroidPlayStore);\r\n\r\n const wizardFlow = useMemo(() => STORE_TYPE_TO_FLOW[storeType], [storeType]);\r\n\r\n const routeToNavigateToWhenDone = getRoutePathById(siteMap, 'campaigns');\r\n\r\n const config = useMemo(() => ({\r\n id: UNIFIED_APP_CAMPAIGN_WIZARD_ID,\r\n initialStep: STEP_PATHS.ASSETS,\r\n steps: UnifiedAppCampaignStepsConfig,\r\n initialFlowFactors: { flow: wizardFlow },\r\n initialWizardData: {\r\n flow: wizardFlow,\r\n },\r\n actions: {\r\n onDone: () => scope.save(routeToNavigateToWhenDone),\r\n onExited: () => scope.save(routeToNavigateToWhenDone),\r\n },\r\n }), [routeToNavigateToWhenDone, scope, wizardFlow]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nUnifiedAppCampaignWizardInternal.propTypes = {\r\n scope: PropTypes.shape({\r\n save: PropTypes.func.isRequired,\r\n }).isRequired,\r\n siteMap: PropTypes.shape({}).isRequired,\r\n perfMarker: PropTypes.shape({\r\n createChild: PropTypes.func.isRequired,\r\n }).isRequired,\r\n};\r\n\r\nexport const UnifiedAppCampaignWizard = withSiteMap(withScope(withRecommendationContext(UnifiedAppCampaignWizardInternal)));\r\n","import React, { useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Layout } from '@bingads-webui-react/wizard';\r\nimport { STORE_TYPE_TO_FLOW } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport { withSiteMap, getRoutePathById } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\n\r\nimport { UnifiedAppEditCampaignSettingsStepsConfig } from '../steps/step-config';\r\nimport { EditFooter } from '../components';\r\nimport { STEP_PATHS, UNIFIED_APP_EDIT_CAMPAIGN_SETTINGS_WIZARD_ID } from '../steps/step-constants';\r\nimport { useCampaignStoreType } from './use-store-type';\r\nimport { UnifiedAppWizard } from './wizard';\r\n\r\nconst UnifiedAppEditCampaignSettingsWizardInternal = ({\r\n currentCampaign, perfMarker, siteMap, scope,\r\n}) => {\r\n const storeType = useCampaignStoreType(currentCampaign);\r\n const wizardFlow = useMemo(() => STORE_TYPE_TO_FLOW[storeType], [storeType]);\r\n\r\n const routeToNavigateToWhenDone = getRoutePathById(siteMap, 'overview');\r\n\r\n const config = useMemo(() => ({\r\n id: UNIFIED_APP_EDIT_CAMPAIGN_SETTINGS_WIZARD_ID,\r\n initialStep: STEP_PATHS.CAMPAIGN_DETAILS_EDIT,\r\n steps: UnifiedAppEditCampaignSettingsStepsConfig,\r\n initialFlowFactors: { flow: wizardFlow },\r\n initialWizardData: {\r\n campaign: currentCampaign,\r\n flow: wizardFlow,\r\n },\r\n actions: {\r\n onDone: () => scope.save(routeToNavigateToWhenDone),\r\n onExited: () => scope.save(routeToNavigateToWhenDone),\r\n },\r\n }), [currentCampaign, routeToNavigateToWhenDone, scope, wizardFlow]);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nUnifiedAppEditCampaignSettingsWizardInternal.propTypes = {\r\n currentCampaign: PropTypes.shape({}).isRequired,\r\n scope: PropTypes.shape({\r\n save: PropTypes.func.isRequired,\r\n }).isRequired,\r\n perfMarker: PropTypes.shape({\r\n createChild: PropTypes.func.isRequired,\r\n }).isRequired,\r\n siteMap: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nexport const UnifiedAppEditCampaignSettingsWizard = withScope(withSiteMap(UnifiedAppEditCampaignSettingsWizardInternal));\r\n","import React, { useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Layout } from '@bingads-webui-react/wizard';\r\nimport { STORE_TYPE_TO_FLOW } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport { withSiteMap, getRoutePathById } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\n\r\nimport { UnifiedAppEditAssetGroupSettingsStepConfig } from '../steps/step-config';\r\nimport { EditFooter } from '../components';\r\nimport { STEP_PATHS, UNIFIED_APP_EDIT_ASSET_GROUP_SETTINGS_WIZARD_ID } from '../steps/step-constants';\r\nimport { useCampaignStoreType } from './use-store-type';\r\nimport { UnifiedAppWizard } from './wizard';\r\n\r\nconst UnifiedAppEditAssetGroupSettingsWizardInternal = ({\r\n currentCampaign, perfMarker, siteMap, scope,\r\n}) => {\r\n const storeType = useCampaignStoreType(currentCampaign);\r\n const wizardFlow = useMemo(() => STORE_TYPE_TO_FLOW[storeType], [storeType]);\r\n\r\n const routeToNavigateToWhenDone = getRoutePathById(siteMap, 'appads-asset-groups');\r\n\r\n const { assetGroupId } = scope.values;\r\n\r\n const config = useMemo(() => ({\r\n id: UNIFIED_APP_EDIT_ASSET_GROUP_SETTINGS_WIZARD_ID,\r\n initialStep: STEP_PATHS.ASSETS_GROUP_EDIT,\r\n steps: UnifiedAppEditAssetGroupSettingsStepConfig,\r\n initialFlowFactors: { flow: wizardFlow },\r\n initialWizardData: {\r\n campaign: currentCampaign,\r\n assetGroup: { Id: assetGroupId },\r\n flow: wizardFlow,\r\n },\r\n actions: {\r\n onDone: () => scope.save(routeToNavigateToWhenDone),\r\n onExited: () => scope.save(routeToNavigateToWhenDone),\r\n },\r\n }), [currentCampaign, routeToNavigateToWhenDone, scope, assetGroupId, wizardFlow]);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nUnifiedAppEditAssetGroupSettingsWizardInternal.propTypes = {\r\n currentCampaign: PropTypes.shape({}).isRequired,\r\n scope: PropTypes.shape({\r\n save: PropTypes.func.isRequired,\r\n values: PropTypes.shape({\r\n assetGroupId: PropTypes.number.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n perfMarker: PropTypes.shape({\r\n createChild: PropTypes.func.isRequired,\r\n }).isRequired,\r\n siteMap: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nexport const UnifiedAppEditAssetGroupSettingsWizard = withScope(withSiteMap(UnifiedAppEditAssetGroupSettingsWizardInternal));\r\n","import React from 'react';\r\nimport propTypes from 'prop-types';\r\nimport { ErrorMessages } from '@bingads-webui-react/validation';\r\n\r\nexport const SystemErrors = ({ errors }) => (\r\n
\r\n \r\n
\r\n);\r\n\r\nSystemErrors.propTypes = {\r\n errors: propTypes.arrayOf(propTypes.string),\r\n};\r\n\r\nSystemErrors.defaultProps = {\r\n errors: [],\r\n};\r\n","import React, { useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { ValidationGroup } from '@bingads-webui-react/validation';\r\nimport { Campaign, AssetGroup } from '@bingads-webui/campaign-odata-schemas';\r\n\r\nexport const CampaignValidationGroup = ({\r\n data, onDataChange, i18n, children, stopPropagation,\r\n}) => {\r\n const onValidate = useCallback((results) => {\r\n onDataChange({\r\n data: prevData => ({\r\n ...prevData,\r\n campaign: {\r\n ...prevData.campaign,\r\n ...results.data,\r\n },\r\n }),\r\n isValid: results.isValid,\r\n isDirty: results.isDirty,\r\n });\r\n }, [onDataChange]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nCampaignValidationGroup.propTypes = {\r\n data: PropTypes.shape({}),\r\n onDataChange: PropTypes.func.isRequired,\r\n i18n: PropTypes.shape({}).isRequired,\r\n children: PropTypes.node,\r\n stopPropagation: PropTypes.bool,\r\n};\r\n\r\nCampaignValidationGroup.defaultProps = {\r\n data: {},\r\n children: null,\r\n stopPropagation: false,\r\n};\r\n\r\nexport const AssetGroupValidationGroup = ({\r\n data, onDataChange, i18n, children,\r\n}) => {\r\n const onValidate = useCallback((results) => {\r\n onDataChange({\r\n data: prevData => ({\r\n ...prevData,\r\n assetGroup: {\r\n ...prevData.assetGroup,\r\n ...results.data,\r\n },\r\n }),\r\n isValid: results.isValid,\r\n isDirty: results.isDirty,\r\n });\r\n }, [onDataChange]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nAssetGroupValidationGroup.propTypes = {\r\n data: PropTypes.shape({}),\r\n onDataChange: PropTypes.func.isRequired,\r\n i18n: PropTypes.shape({}).isRequired,\r\n children: PropTypes.node,\r\n};\r\n\r\nAssetGroupValidationGroup.defaultProps = {\r\n data: {},\r\n children: null,\r\n};\r\n","import React, { useCallback, useMemo, useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { Pivot, PivotItem } from '@fluentui/react';\r\n\r\nexport const AppAdPreviewControls = (props) => {\r\n const {\r\n onSurfaceChange,\r\n onPlacementFilterChange,\r\n showStart,\r\n } = props;\r\n\r\n const [surfaceChoice, setSurfaceChoice] = useState('Windows');\r\n\r\n const surfaceMap = useMemo(() => ({\r\n Windows: showStart ? ['Windows11StartLight', 'Windows11StartDark', 'Windows10StartLight', 'Windows10StartDark', 'WindowsProngLight', 'WindowsProngDark'] : ['Windows11ProngLight', 'WindowsProngDark'],\r\n Store: ['WindowsStoreSpotLight'],\r\n }), []);\r\n\r\n const placementFilterByPreviewControlState = useCallback((placement) => {\r\n const { type: previewTemplateType } = placement;\r\n const surfaceList = surfaceMap[surfaceChoice];\r\n\r\n return _.contains(surfaceList, previewTemplateType);\r\n }, [surfaceChoice, surfaceMap]);\r\n\r\n useEffect(() => {\r\n onPlacementFilterChange(placementFilterByPreviewControlState);\r\n }, [onPlacementFilterChange, placementFilterByPreviewControlState]);\r\n\r\n useEffect(() => {\r\n onSurfaceChange(surfaceChoice);\r\n }, [onSurfaceChange, surfaceChoice]);\r\n\r\n return (\r\n
\r\n setSurfaceChoice(item.props.itemKey)}>\r\n \r\n \r\n \r\n
);\r\n};\r\n\r\nAppAdPreviewControls.propTypes = {\r\n onSurfaceChange: PropTypes.func.isRequired,\r\n onPlacementFilterChange: PropTypes.func.isRequired,\r\n showStart: PropTypes.bool.isRequired,\r\n};\r\n","export const getAdPreviewStyles = (components, { palette = {} }) => ({\r\n adPreviewContainer: {\r\n '& .new-preview-carousel-container-adprelib': {\r\n border: 0,\r\n boxShadow: '0px 0.3px 0.9px rgba(0, 0, 0, 0.1), 0px 1.6px 3.6px rgba(0, 0, 0, 0.13)',\r\n borderRadius: '2px',\r\n backgroundColor: `${palette.white}`,\r\n },\r\n '& .ad-preview-controls-container': {\r\n paddingBottom: 10,\r\n },\r\n '& .ad-preview-actions': {\r\n '& button': {\r\n marginRight: 8,\r\n },\r\n },\r\n '& .ad-preview-title': {\r\n '& .preview-title-string-key': {\r\n fontSize: 14,\r\n fontWeight: 'bold',\r\n marginRight: 8,\r\n },\r\n '& .preview-title-preview-type': {\r\n fontSize: 14,\r\n },\r\n },\r\n '& .preview-type-string': {\r\n visibility: 'hidden',\r\n },\r\n '& .carousel-wrapper': {\r\n '& .carousel-inner': {\r\n height: 515,\r\n merginTop: 10,\r\n },\r\n '& .carousel-control': {\r\n background: 'transparent',\r\n },\r\n },\r\n },\r\n\r\n carouselLayoutClassName: {\r\n border: 0,\r\n boxShadow: '0px 0.3px 0.9px rgba(0, 0, 0, 0.1), 0px 1.6px 3.6px rgba(0, 0, 0, 0.13)',\r\n borderRadius: '2px',\r\n backgroundColor: `${palette.white}`,\r\n\r\n '& .carousel-wrapper': {\r\n '& .carousel-inner': {\r\n height: 515,\r\n },\r\n '& .carousel-control.left, .carousel-control.right': {\r\n left: 0,\r\n bottom: -7,\r\n background: 'transparent',\r\n zIndex: 20,\r\n },\r\n },\r\n },\r\n carouselControlsMsn: {\r\n '& .carousel-wrapper': {\r\n '& .carousel-control.left': {\r\n marginLeft: 200,\r\n },\r\n '& .carousel-control.right': {\r\n marginLeft: 430,\r\n },\r\n '& .carousel-indicators': {\r\n marginLeft: 240,\r\n margin: '20px 24px',\r\n left: 0,\r\n },\r\n },\r\n },\r\n carouselControlsOthers: {\r\n '& .carousel-wrapper': {\r\n '& .carousel-control.left': {\r\n marginLeft: 270,\r\n },\r\n '& .carousel-control.right': {\r\n marginLeft: 357,\r\n },\r\n '& .carousel-indicators': {\r\n marginLeft: 310,\r\n margin: '20px 24px',\r\n left: 0,\r\n },\r\n },\r\n },\r\n customCarouselRoot: {\r\n '& .custom-carousel-controls-and-indicators': {\r\n transform: 'translateX(-15px) translateX(-50%)',\r\n left: '50%',\r\n\r\n '& .carousel-control.left': {\r\n marginRight: '10px !important',\r\n },\r\n '& .carousel-control.right': {\r\n marginLeft: '5px !important',\r\n },\r\n },\r\n },\r\n adExtensionContainer: {\r\n // todo: add styles for ad extension preview components if needed\r\n margin: 10,\r\n },\r\n placementContainerClassName: {\r\n minWidth: 669,\r\n border: '0 !important',\r\n boxShadow: 'unset !important',\r\n borderRadius: '0 !important',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n flexDirection: 'column',\r\n\r\n '& .placement-validation-message': {\r\n display: 'inline-block',\r\n width: '100%',\r\n fontSize: 14,\r\n textAlign: 'center',\r\n lineHeight: 2,\r\n marginRight: 16,\r\n },\r\n },\r\n carouselLayoutHeader: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n width: '100%',\r\n\r\n '& .carousel-header-texts': {\r\n display: 'inline-block',\r\n margin: '20px 8px 16px 24px',\r\n fontSize: 18,\r\n lineHeight: '24px',\r\n\r\n '& .carousel-header-ratio': {\r\n fontSize: 14,\r\n fontWeight: 'bold',\r\n marginRight: 8,\r\n },\r\n '& .carousel-header-title': {\r\n fontSize: 14,\r\n },\r\n },\r\n '& .ad-preview-actions': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n flexGrow: 0,\r\n flexShrink: 0,\r\n alignItems: 'center',\r\n marginRight: 16,\r\n '& button': {\r\n marginRight: 8,\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst geCarouselStyleForMsan = {\r\n root: {\r\n '& .carousel-wrapper': {\r\n '& .carousel-control.left': {\r\n marginLeft: 200,\r\n },\r\n '& .carousel-control.right': {\r\n marginLeft: 430,\r\n },\r\n },\r\n },\r\n previewCarousel: {\r\n bottomCarouselNavigation: {\r\n '& .carousel-indicators': {\r\n marginLeft: 240,\r\n margin: '20px 24px',\r\n left: 0,\r\n },\r\n },\r\n },\r\n};\r\n\r\nconst geCarouselStyleForOthers = {\r\n root: {\r\n '& .carousel-wrapper': {\r\n '& .carousel-control.left': {\r\n marginLeft: 270,\r\n },\r\n '& .carousel-control.right': {\r\n marginLeft: 357,\r\n },\r\n },\r\n },\r\n previewCarousel: {\r\n bottomCarouselNavigation: {\r\n '& .carousel-indicators': {\r\n marginLeft: 310,\r\n margin: '20px 24px',\r\n left: 0,\r\n },\r\n },\r\n },\r\n};\r\n\r\nexport const getCarouselControlsAndIndicatorsStyleBySurface = (surface) => {\r\n switch (surface) {\r\n case 'Bing':\r\n case 'Edge':\r\n case 'Outlook':\r\n return geCarouselStyleForOthers;\r\n case 'Msn':\r\n default:\r\n return geCarouselStyleForMsan;\r\n }\r\n};\r\n","import React, { useCallback, useMemo, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { usePreviewCarouselLayout } from '@bingads-webui-campaign-react/ad-placement-factory';\r\nimport { AdPlacementsGroupType } from '@bingads-webui-campaign-react/ad-placement-consts';\r\nimport { AppAdPreviewControls } from './preview-controls';\r\nimport previewPlaceholder from '../media/preview-placeholder.png';\r\nimport { getAdPreviewStyles, getCarouselControlsAndIndicatorsStyleBySurface } from './preview-styles';\r\n\r\nconst shortHeadlineMaxLength = 30;\r\nconst longHeadlineMaxLength = 90;\r\nconst descriptionMaxLength = 90;\r\n\r\nexport const AppAdsPreview = (props) => {\r\n const {\r\n imageList,\r\n updateImageList,\r\n previewImagesSharedState,\r\n setPreviewImagesSharedState,\r\n placementCustomizationPredicate,\r\n hideHeaderButtons,\r\n isAppCampaignPreview,\r\n showStart,\r\n } = props;\r\n\r\n const adDataProps = ['shortHeadline', 'longHeadline', 'description', 'url', 'displayUrl', 'callToAction', 'businessName'];\r\n const currentAdData = _.pick(props, adDataProps);\r\n const [adData, setAdData] = React.useState(currentAdData);\r\n\r\n const isAdDataUpdated = useCallback(newAdData => (newAdData.length !== adData.length || !_.isMatch(newAdData, adData)), [adData]);\r\n const debouncedSetAdData = useMemo(() => _.debounce(setAdData, 500), []);\r\n if (isAdDataUpdated(currentAdData)) {\r\n debouncedSetAdData.cancel();\r\n debouncedSetAdData(currentAdData);\r\n }\r\n\r\n const getImageIndexFromId = useCallback((id) => {\r\n const index = _.findIndex(imageList, placement => _.first(placement).id === id && !_.first(placement).isLogo && !_.first(placement).isPortrait);\r\n return index >= 0 ? index : null;\r\n }, [imageList]);\r\n\r\n const getPreviewImageIndex = useCallback((idRequestedByImageExperience) => {\r\n let index = getImageIndexFromId(idRequestedByImageExperience);\r\n\r\n if (!index) {\r\n const firstImageIndex = _.findIndex(imageList, placement => !_.first(placement).isLogo && !_.first(placement).isPortrait);\r\n index = firstImageIndex >= 0 ? firstImageIndex : null;\r\n }\r\n\r\n return index;\r\n }, [getImageIndexFromId, imageList]);\r\n\r\n const { previewImageId } = previewImagesSharedState;\r\n\r\n let imagesToDisplay = [];\r\n let previewImageIndex = null;\r\n if (imageList && isAppCampaignPreview) {\r\n // for app campaign, always send all images for preview\r\n imagesToDisplay = imageList.flat();\r\n } else if (imageList && imageList.length > 0) {\r\n previewImageIndex = getPreviewImageIndex(previewImageId);\r\n imagesToDisplay = _.isNumber(previewImageIndex) ? imageList[previewImageIndex] : [];\r\n }\r\n\r\n const onAddAspectRatio = useCallback((type) => {\r\n const newImageList = [...imageList];\r\n _.find(newImageList[previewImageIndex], imagePlacement => imagePlacement.type === type).isIncluded = true;\r\n setPreviewImagesSharedState({ ...previewImagesSharedState, isImageListUpdatedByPreview: true });\r\n updateImageList(newImageList);\r\n }, [imageList, previewImageIndex, previewImagesSharedState, setPreviewImagesSharedState, updateImageList]);\r\n\r\n const onRemoveAspectRatio = useCallback((type) => {\r\n const newImageList = [...imageList];\r\n _.find(newImageList[previewImageIndex], imagePlacement => imagePlacement.type === type).isIncluded = false;\r\n setPreviewImagesSharedState({ ...previewImagesSharedState, isImageListUpdatedByPreview: true });\r\n updateImageList(newImageList);\r\n }, [imageList, previewImageIndex, previewImagesSharedState, setPreviewImagesSharedState, updateImageList]);\r\n\r\n const onEdit = useCallback((type) => {\r\n const cropImageObj = _.find(imageList[previewImageIndex], imagePlacement => imagePlacement.type === type);\r\n setPreviewImagesSharedState({ ...previewImagesSharedState, cropImageObj });\r\n }, [imageList, previewImageIndex, previewImagesSharedState, setPreviewImagesSharedState]);\r\n\r\n const truncatedAdData = useMemo(() => {\r\n const validAdData = { ...adData };\r\n\r\n if (validAdData.shortHeadline && validAdData.shortHeadline.length > shortHeadlineMaxLength) {\r\n validAdData.shortHeadline = validAdData.shortHeadline.substring(0, shortHeadlineMaxLength - 1);\r\n }\r\n\r\n if (validAdData.longHeadline && validAdData.longHeadline.length > longHeadlineMaxLength) {\r\n validAdData.longHeadline = validAdData.longHeadline.substring(0, longHeadlineMaxLength - 1);\r\n }\r\n\r\n if (validAdData.description && validAdData.description.length > descriptionMaxLength) {\r\n validAdData.description = validAdData.description.substring(0, descriptionMaxLength - 1);\r\n }\r\n\r\n return validAdData;\r\n }, [adData]);\r\n\r\n const [placementFilter, setPlacementFilter] = useState({ func: () => true });\r\n\r\n const getFirstElement = useCallback((item) => {\r\n if (_.isArray(item)) {\r\n return _.first(item);\r\n }\r\n return item;\r\n }, []);\r\n\r\n const getLogo = useCallback(() => {\r\n const logos = _.filter(imageList, imageArr =>\r\n // reuse the selected TransparentLogo for the Logo property in preview\r\n // for Prong previews where we need both smallImage and Logo scenario\r\n getFirstElement(imageArr).associationType === 'TransparentLogo');\r\n\r\n return _.first(logos);\r\n }, [getFirstElement, imageList]);\r\n\r\n const { PreviewCarouselLayout } = usePreviewCarouselLayout({\r\n groupType: showStart ? AdPlacementsGroupType.appAdStart : AdPlacementsGroupType.appAd,\r\n placementFilterPredicate: placementFilter.func,\r\n customDefaultImage: previewPlaceholder,\r\n placementCustomizationPredicate: placementCustomizationPredicate || null,\r\n });\r\n\r\n const classes = useDefaultStyles(getAdPreviewStyles);\r\n const [surfaceChoice, setSurfaceChoice] = useState({});\r\n const styleOverrides = useMemo(() => getCarouselControlsAndIndicatorsStyleBySurface(surfaceChoice), [surfaceChoice]);\r\n\r\n const onPlacementFilterChange = useCallback((newPlacementFilter) => {\r\n setPlacementFilter({ func: newPlacementFilter });\r\n }, []);\r\n\r\n return (\r\n
\r\n \r\n logo.isIncluded)}\r\n headerButtonProps={{\r\n onAddAspectRatio,\r\n onRemoveAspectRatio,\r\n onEdit,\r\n }}\r\n adData={truncatedAdData}\r\n getIsRequiredByIndex={() => true}\r\n enableAutoPlay={false}\r\n styleOverrides={styleOverrides}\r\n hideHeaderButtons={hideHeaderButtons}\r\n />\r\n
);\r\n};\r\n\r\nAppAdsPreview.propTypes = {\r\n imageList: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.shape({}))),\r\n updateImageList: PropTypes.func.isRequired,\r\n previewImagesSharedState: PropTypes.shape({\r\n previewImageId: PropTypes.shape({}),\r\n }).isRequired,\r\n setPreviewImagesSharedState: PropTypes.func.isRequired,\r\n placementCustomizationPredicate: PropTypes.func,\r\n hideHeaderButtons: PropTypes.bool,\r\n isAppCampaignPreview: PropTypes.bool,\r\n showStart: PropTypes.bool,\r\n};\r\n\r\nAppAdsPreview.defaultProps = {\r\n imageList: null,\r\n placementCustomizationPredicate: null,\r\n hideHeaderButtons: false,\r\n isAppCampaignPreview: false,\r\n showStart: false,\r\n};\r\n","import { pick, extend, isString } from 'underscore';\r\nimport { loadCampaignAsViewModel, bulkModelToViewModelForLocationTargets, bulkModelToViewModelForDayTimeTargets } from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\n\r\nconst whitelistedSchemaPropertyKeysForModel = [\r\n 'Notes', 'Budget', 'Id', 'Name', 'TimeZone', 'BidStrategyName', 'Status',\r\n 'DeliveryStatus', 'DeliveryStatusDetails', 'CampaignType', 'CampaignSubType',\r\n 'HasAuctionInsight', 'IsBidLandscapeAvailable', 'TrackingUrlTemplate',\r\n 'FinalUrlSuffix', 'UrlCustomParameters', 'BiddingScheme', 'NativeBidAdjustment',\r\n 'CampaignSettings', 'DisplayBiddingStrategyType',\r\n 'DisplayBiddingStrategyMaxCpc', 'DisplayBiddingStrategyTargetCpa', 'Languages',\r\n 'ExperimentId', 'BaseCampaignName', 'TargetSetting',\r\n 'AdScheduleUseSearcherTimeZone', 'AvailableInsightTypeIds',\r\n 'MultiMediaAdBidAdjustment', 'AppStore', 'AppId',\r\n];\r\n\r\nexport const viewModelToBulkModelForCampaign = (campaignViewModel) => {\r\n const data = pick(campaignViewModel.data, whitelistedSchemaPropertyKeysForModel);\r\n\r\n if (campaignViewModel.data\r\n && campaignViewModel.data.BiddingScheme\r\n && (campaignViewModel.data.BiddingScheme.ManualCPC || campaignViewModel.data.BiddingScheme.ManualCPI)\r\n ) {\r\n // Get Campaigns call returns it as ManualCPC.\r\n // Bulk upsert expects it as ManualCpc in lower case.\r\n data.BiddingScheme = {\r\n ...campaignViewModel.data.BiddingScheme,\r\n ManualCpc: campaignViewModel.data.BiddingScheme.ManualCPC,\r\n ManualCpi: campaignViewModel.data.BiddingScheme.ManualCPI,\r\n };\r\n }\r\n\r\n return data;\r\n};\r\n\r\nexport const bulkModelToViewModelForCampaign = ({\r\n campaignModel,\r\n bundleCountries,\r\n originalCampaignViewModel,\r\n}) => {\r\n let data = pick(campaignModel, whitelistedSchemaPropertyKeysForModel);\r\n if (data.Id && isString(data.Id)) {\r\n // eslint-disable-next-line no-param-reassign\r\n data.Id = parseInt(data.Id, 10);\r\n }\r\n data = extend(data, bulkModelToViewModelForLocationTargets({\r\n locationTargetsModel: campaignModel.CampaignCriterions,\r\n bundleCountries,\r\n }));\r\n\r\n data = extend(data, bulkModelToViewModelForDayTimeTargets({\r\n criterions: campaignModel.CampaignCriterions,\r\n }));\r\n\r\n data = extend(data, {\r\n AppSetting: originalCampaignViewModel && originalCampaignViewModel.data && originalCampaignViewModel.data.AppSetting,\r\n });\r\n\r\n const campaignViewModel = {\r\n data,\r\n isValid: true,\r\n isDirty: false,\r\n };\r\n return campaignViewModel;\r\n};\r\n\r\nexport { loadCampaignAsViewModel };\r\n","import _ from 'underscore';\r\nimport { createOrUpdateCampaign } from '@bingads-webui-campaign-react/perf-max-data';\r\nimport { Campaign } from '@bingads-webui/campaign-odata-schemas';\r\nimport { ERROR_ENTITY } from '@bingads-webui-campaign-react/wizard-shared-components';\r\nimport {\r\n viewModelToBulkModelForLocationTargets,\r\n viewModelToBulkModelForAdSchedules,\r\n getBulkUploadErrorType, modelToViewModelForBulkErrors, removeReferencedEntityInvalidIdErrors, unexpectedBulkErrorToString,\r\n isBulkWrappedResponse,\r\n genericApiError,\r\n} from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\nimport { viewModelToBulkModelForCampaign, bulkModelToViewModelForCampaign } from './campaign';\r\n\r\nconst bulkUpsertCampaignSettingsEntityErrorMap = {\r\n [getBulkUploadErrorType(Campaign)]: ERROR_ENTITY.Campaign,\r\n 'Campaign Location Criterion Error': ERROR_ENTITY.CampaignLocation,\r\n 'Campaign Radius Criterion Error': ERROR_ENTITY.CampaignRadius,\r\n 'Campaign Negative Location Criterion Error': ERROR_ENTITY.CampaignNegativeLocation,\r\n 'Campaign Location Intent Criterion Error': ERROR_ENTITY.CampaignLocationIntent,\r\n 'Campaign Day Time Criterion Error': ERROR_ENTITY.CampaignDayTimeCriterion,\r\n};\r\n\r\nexport const getErrorsPlaceholders = () => ({\r\n serverErrors: [],\r\n systemErrors: [],\r\n});\r\n\r\nexport const saveCampaign = ({\r\n campaign: campaignViewModel,\r\n bundleCountries,\r\n bundleLocationCriterions,\r\n}, { scenario, i18n, activityLogger }) => {\r\n const campaignModel = viewModelToBulkModelForCampaign(campaignViewModel);\r\n const locationTargetsModel = viewModelToBulkModelForLocationTargets(campaignViewModel, bundleLocationCriterions);\r\n const adSchedulesModel = viewModelToBulkModelForAdSchedules(campaignViewModel);\r\n\r\n const modelToSave = {\r\n ...campaignModel,\r\n CampaignCriterions: [\r\n ...locationTargetsModel,\r\n ...adSchedulesModel,\r\n ],\r\n };\r\n\r\n return createOrUpdateCampaign(modelToSave)\r\n // with bulk the result will have shape of:\r\n // - { ...entityData } - in case of success;\r\n // - { entity: { ...entityData }, errors: [(EditorialError|MTError)] } - in case of error(s).\r\n .then((result) => {\r\n const campaign = bulkModelToViewModelForCampaign({\r\n campaignModel: result,\r\n originalCampaignViewModel: campaignViewModel,\r\n bundleCountries,\r\n });\r\n\r\n const data = {\r\n campaign,\r\n ...getErrorsPlaceholders(),\r\n };\r\n\r\n return data;\r\n }, (bulkOrSystemError) => {\r\n if (isBulkWrappedResponse(bulkOrSystemError)) {\r\n const { entity, errors } = bulkOrSystemError;\r\n const campaign = entity ?\r\n bulkModelToViewModelForCampaign({\r\n campaignModel: entity,\r\n bundleCountries,\r\n }) :\r\n campaignViewModel;\r\n\r\n let filteredErrors = errors;\r\n if (campaign.data.Id <= 0) {\r\n filteredErrors = removeReferencedEntityInvalidIdErrors(filteredErrors);\r\n }\r\n const serverErrors = modelToViewModelForBulkErrors(\r\n filteredErrors,\r\n bulkUpsertCampaignSettingsEntityErrorMap,\r\n scenario,\r\n i18n,\r\n activityLogger\r\n );\r\n\r\n const data = {\r\n campaign,\r\n ...getErrorsPlaceholders(),\r\n serverErrors,\r\n };\r\n\r\n return _.isEmpty(filteredErrors) ? data : Promise.reject(data);\r\n }\r\n\r\n // Activity\r\n // eslint-disable-next-line no-console\r\n console.warn(`Campaign bulk upsert system error: ${unexpectedBulkErrorToString(bulkOrSystemError)}`);\r\n // eslint-disable-next-line prefer-promise-reject-errors\r\n return Promise.reject({\r\n campaign: campaignViewModel,\r\n ...getErrorsPlaceholders(),\r\n serverErrors: [genericApiError],\r\n // TODO: We would want to return the criterions with Ids, but UI's bulk drops them\r\n });\r\n });\r\n};\r\n","import { saveCampaign as UnifiedAppCampaignSave } from './campaign-bulk';\r\n\r\nexport const saveCampaign = UnifiedAppCampaignSave;\r\n","import { saveAssetGroupAndLinkedData } from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\n\r\nexport const saveAssetGroup = saveAssetGroupAndLinkedData;\r\n","import { useCallback, useContext } from 'react';\r\nimport _ from 'underscore';\r\nimport { useLocalizeBudget } from '@bingads-webui-campaign-react/wizard-shared-components';\r\nimport { usePreference, preferenceNames } from '@bingads-webui-campaign-react/pmax-lite-data';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\n\r\nexport const roasMtToUI = roas => (_.isNumber(roas) ? roas * 100 : null);\r\nexport const roasUiToMt = roas => (_.isNumber(roas) ? (roas / 100).toFixed(4) : null);\r\n\r\nexport const useBudgetModel = () => {\r\n const i18n = useContext(I18nContext);\r\n const { localizeBudget } = useLocalizeBudget();\r\n const [{ value: currencyPreference }] = usePreference(preferenceNames.SelectedCurrency);\r\n\r\n const budgetModelToViewModel = useCallback((campaign) => {\r\n const budgetAmount = _.get(campaign, ['Budget', 'Amount']);\r\n const bidStrategy = _.get(campaign, ['BiddingScheme', 'Type']);\r\n const bidValueCpc = _.get(campaign, ['BiddingScheme', 'ManualCPC']) || null;\r\n const bidValueCpi = _.get(campaign, ['BiddingScheme', 'ManualCPI']) || null;\r\n const cpa = _.get(campaign, ['BiddingScheme', 'TargetCpa']);\r\n const roas = parseFloat(_.get(campaign, ['BiddingScheme', 'TargetRoas'])) || null;\r\n const isInitialAdditionalDetailsChecked = _.isNumber(cpa) || _.isNumber(roas) || _.isNumber(bidValueCpc) || _.isNumber(bidValueCpi);\r\n\r\n return {\r\n budgetAmount: localizeBudget(budgetAmount, 'USD'),\r\n bidStrategy,\r\n ManualCPI: bidValueCpi,\r\n ManualCPC: bidValueCpc,\r\n currency: currencyPreference,\r\n cpa,\r\n roas: roasMtToUI(roas),\r\n isInitialAdditionalDetailsChecked,\r\n isMarketingMetricValid: true,\r\n };\r\n }, [currencyPreference, localizeBudget]);\r\n\r\n const budgetViewModelToModel = useCallback((bidStrategy, budgetAmount, bidValueCpc = null, bidValueCpi = null) => (\r\n {\r\n BiddingScheme: {\r\n Type: bidStrategy,\r\n ...(bidStrategy === 'ManualCpc' && bidValueCpc !== null && { ManualCpc: bidValueCpc }),\r\n ...(bidStrategy === 'ManualCpa' && bidValueCpi !== null && { ManualCpi: bidValueCpi }),\r\n },\r\n Budget: {\r\n Amount: i18n.parseDecimal(budgetAmount),\r\n Type: 'DailyStandard',\r\n },\r\n }), [i18n]);\r\n\r\n const isBudgetInputValid = (isBudgetValid, isMarketingMetricValid) =>\r\n isBudgetValid && isMarketingMetricValid;\r\n\r\n return {\r\n budgetModelToViewModel,\r\n budgetViewModelToModel,\r\n isBudgetInputValid,\r\n };\r\n};\r\n","import classNames from 'classnames';\r\nimport { useResponsiveStyles } from '@bingads-webui-campaign-react/common-hooks';\r\n\r\nexport const useResponsiveStyleWrapper = (getStylesFunction) => {\r\n const getResponsiveStyles = useResponsiveStyles(getStylesFunction);\r\n\r\n return className => classNames(getResponsiveStyles(className));\r\n};\r\n","export const StoreTypes = {\r\n WindowsAppStore: 'WindowsAppStore',\r\n AndroidPlayStore: 'AndroidPlayStore',\r\n IosAppStore: 'IosAppStore',\r\n};\r\n\r\nexport const FLOWS = {\r\n ANDROID: 'ANDROID',\r\n IOS: 'IOS',\r\n WINDOWS: 'WINDOWS',\r\n};\r\n\r\nexport const AppStoreTypes = {\r\n GoogleAppStore: 'GoogleAppStore',\r\n AppleAppStore: 'AppleAppStore',\r\n MicrosoftAppStore: 'MicrosoftAppStore',\r\n};\r\n\r\nexport const APP_STORE_TO_STORE_TYPE = {\r\n [AppStoreTypes.GoogleAppStore]: StoreTypes.AndroidPlayStore,\r\n [AppStoreTypes.AppleAppStore]: StoreTypes.IosAppStore,\r\n [AppStoreTypes.MicrosoftAppStore]: StoreTypes.WindowsAppStore,\r\n};\r\n\r\nexport const STORE_TYPE_TO_FLOW = {\r\n [StoreTypes.WindowsAppStore]: FLOWS.WINDOWS,\r\n [StoreTypes.AndroidPlayStore]: FLOWS.ANDROID,\r\n [StoreTypes.IosAppStore]: FLOWS.IOS,\r\n};\r\n","import { PANEL_KEYS } from '@bingads-webui-campaign-react/wizard-shared-components';\r\nimport { FLOWS } from './constants';\r\n\r\nexport const getAssetsPanels = (flow) => {\r\n const defaultPanels = [\r\n PANEL_KEYS.SHORT_HEADLINES,\r\n PANEL_KEYS.VIDEOS,\r\n ];\r\n\r\n if (flow === FLOWS.WINDOWS) {\r\n defaultPanels.push(PANEL_KEYS.PRONG_IMAGES);\r\n defaultPanels.push(PANEL_KEYS.SPOTLIGHT_IMAGES);\r\n defaultPanels.push(PANEL_KEYS.LOGOS);\r\n }\r\n\r\n if (flow === FLOWS.ANDROID || flow === FLOWS.IOS) {\r\n defaultPanels.push(PANEL_KEYS.DESCRIPTIONS);\r\n defaultPanels.push(PANEL_KEYS.IMAGES);\r\n }\r\n\r\n return defaultPanels;\r\n};\r\n\r\nexport const getAssetsSettingsPanels = (flow) => {\r\n const panels = getAssetsPanels(flow);\r\n\r\n panels.push(PANEL_KEYS.AUDIENCE_SIGNAL);\r\n\r\n return panels;\r\n};\r\n","export const parseFileName = (nameWithExtension) => {\r\n let nameWithoutExt = null;\r\n let ext = null;\r\n\r\n if (nameWithExtension) {\r\n const index = nameWithExtension.lastIndexOf('.');\r\n if (index > 0) {\r\n nameWithoutExt = nameWithExtension.slice(0, index);\r\n ext = nameWithExtension.slice(index);\r\n } else {\r\n nameWithoutExt = nameWithExtension;\r\n ext = '';\r\n }\r\n }\r\n\r\n return {\r\n nameWithoutExt,\r\n ext,\r\n };\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\n\r\nimport { FileDragger } from '@bingads-webui-campaign-react/file-dragger';\r\nimport { FilePicker as BackboneFilePicker } from '@bingads-webui/file-picker';\r\nimport { BackboneInstanceWrapper } from '@bingads-webui-react/backbone-instance-wrapper';\r\nimport { parseFileName } from '../utils/parse-file';\r\n\r\nexport class FilePicker extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n const {\r\n i18n,\r\n enableMultiple,\r\n allowedFileExtensions,\r\n showExtensionError,\r\n useButton,\r\n } = props;\r\n const filePickerOptions = {\r\n allowedFileExtensions,\r\n i18n,\r\n isNative: false,\r\n displayFilePath: 'filename',\r\n enableMultiple,\r\n useButton,\r\n };\r\n\r\n // This dependency injection is only for test purpose\r\n // For the implementation is coupled tightly with BackboneFilePicker\r\n this.filePicker = this.props.filePicker ? this.props.filePicker : new BackboneFilePicker(filePickerOptions);\r\n\r\n this.filePicker.on('validated', this.readFile);\r\n this.filePicker.on('error.extension', () => { showExtensionError(); });\r\n\r\n this.filePicker.render();\r\n this.filePicker.$('.remove-file').remove();\r\n this.filePicker.$('.file-text').hide();\r\n\r\n this.state = {\r\n isFileDraging: false,\r\n };\r\n\r\n // Only for test purpose\r\n if (this.props.testRef) {\r\n this.props.testRef.current = {\r\n filePicker: this.filePicker,\r\n readFile: this.readFile.bind(this),\r\n getReachFileSizeLimitErrorMessage: this.props.getReachFileSizeLimitErrorMessage.bind(this),\r\n };\r\n }\r\n }\r\n\r\n readFile = (fileObjects) => {\r\n const {\r\n onFileRead,\r\n showErrors,\r\n onFileSelected,\r\n maximumFileSizeMB,\r\n isReachFileSizeLimit,\r\n getReachFileSizeLimitErrorMessage,\r\n } = this.props;\r\n\r\n const selectedFiles = !_.isUndefined(fileObjects) && fileObjects.length > 0 ? fileObjects :\r\n this.filePicker.fileObjects;\r\n\r\n if (selectedFiles) {\r\n const selectedFilesCount = selectedFiles.length;\r\n let fileIndex;\r\n const errorArr = [];\r\n\r\n for (fileIndex = 0; fileIndex < selectedFilesCount; fileIndex += 1) {\r\n const fileObj = selectedFiles[fileIndex];\r\n const fileSizeMB = (fileObj.size / 1024 / 1024).toFixed(3);\r\n let reachLimit;\r\n\r\n if (isReachFileSizeLimit) {\r\n const { ext } = parseFileName(fileObj.name);\r\n reachLimit = isReachFileSizeLimit({ ext, fileSizeMB });\r\n } else {\r\n reachLimit = maximumFileSizeMB > 0 && fileSizeMB > maximumFileSizeMB;\r\n }\r\n\r\n if (reachLimit) {\r\n errorArr.push(getReachFileSizeLimitErrorMessage(_.extend({\r\n fileSizeMB,\r\n }, !isReachFileSizeLimit && { maximumFileSizeMB })));\r\n\r\n break;\r\n }\r\n }\r\n\r\n if (_.isEmpty(errorArr)) {\r\n if (_.isFunction(onFileSelected)) {\r\n onFileSelected(selectedFiles);\r\n }\r\n\r\n return onFileRead(selectedFiles);\r\n }\r\n\r\n showErrors(errorArr);\r\n } // else no media picked, so do nothing\r\n\r\n return ''; // for testability\r\n };\r\n\r\n handleDraging = (isDraging) => {\r\n this.setState({\r\n isFileDraging: isDraging,\r\n });\r\n };\r\n\r\n render() {\r\n const {\r\n i18n,\r\n enableDrag,\r\n hideDescription,\r\n allowedFileExtensions,\r\n showExtensionError,\r\n fileDraggerLabel,\r\n fileDraggerTip,\r\n fileDraggerDropDescription,\r\n useLargeStyling,\r\n } = this.props;\r\n\r\n const {\r\n isFileDraging,\r\n } = this.state;\r\n\r\n const fileButton = (\r\n
\r\n \r\n
\r\n );\r\n\r\n return (\r\n
\r\n {!hideDescription &&\r\n
\r\n {i18n.getString('ImageExperience_Choose_File_Description')}\r\n
\r\n }\r\n {\r\n !enableDrag ?\r\n
\r\n \r\n
:\r\n
\r\n \r\n
\r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nFilePicker.propTypes = {\r\n onFileRead: PropTypes.func.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n parseDecimal: PropTypes.func.isRequired,\r\n }).isRequired,\r\n showErrors: PropTypes.func.isRequired,\r\n enableMultiple: PropTypes.bool,\r\n enableDrag: PropTypes.bool,\r\n hideDescription: PropTypes.bool,\r\n fileDraggerLabel: PropTypes.string,\r\n fileDraggerTip: PropTypes.string,\r\n fileDraggerDropDescription: PropTypes.string,\r\n onFileSelected: PropTypes.func,\r\n allowedFileExtensions: PropTypes.arrayOf(PropTypes.string),\r\n showExtensionError: PropTypes.func,\r\n\r\n maximumFileSizeMB: PropTypes.number,\r\n isReachFileSizeLimit: PropTypes.func,\r\n getReachFileSizeLimitErrorMessage: PropTypes.func,\r\n useLargeStyling: PropTypes.bool,\r\n useButton: PropTypes.bool,\r\n};\r\n\r\nFilePicker.defaultProps = {\r\n enableMultiple: false,\r\n enableDrag: false,\r\n hideDescription: false,\r\n onFileSelected: _.noop(),\r\n allowedFileExtensions: [],\r\n showExtensionError: _.noop,\r\n\r\n fileDraggerLabel: '',\r\n fileDraggerTip: '',\r\n fileDraggerDropDescription: '',\r\n\r\n // below two are conflict and isReachFileSizeLimit takes higher priority\r\n isReachFileSizeLimit: undefined,\r\n maximumFileSizeMB: undefined,\r\n getReachFileSizeLimitErrorMessage: _.noop,\r\n useLargeStyling: false,\r\n useButton: false,\r\n};\r\n","import Promise from 'bluebird';\r\n\r\nexport const readFileAsDataURLAsync = file => new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n\r\n reader.addEventListener('load', (e) => {\r\n resolve(e.target.result);\r\n });\r\n\r\n reader.onerror = reject;\r\n\r\n reader.readAsDataURL(file);\r\n});\r\n","export const MaximumImageFileSizeMB = 50;\r\nexport const MaximumVideoFileSizeMB = 1e4;\r\n\r\n// Refer to https://docs.microsoft.com/en-us/azure/media-services/latest/encode-media-encoder-standard-formats-reference\r\n// Plus some additional video formats supported by Xandr confirmed by Weiyuan to work with AMS\r\nexport const allowedVideoFileExtensions = [\r\n '.flv',\r\n '.mxf',\r\n '.gxf',\r\n '.ts',\r\n '.ps',\r\n '.3gp',\r\n '.3gpp',\r\n '.mpg',\r\n '.wmv',\r\n '.asf',\r\n '.avi',\r\n '.mp4',\r\n '.m4a',\r\n '.m4v',\r\n '.isma',\r\n '.ismv',\r\n '.dvr-ms',\r\n '.mkv',\r\n '.wav',\r\n '.mov',\r\n '.vob',\r\n '.ogv',\r\n '.qt',\r\n '.mpv',\r\n '.m2v',\r\n '.3g2',\r\n '.swf',\r\n '.mpeg',\r\n '.mpe',\r\n];\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Promise from 'bluebird';\r\nimport _ from 'underscore';\r\nimport { LearnMoreLink } from '@bingads-webui-campaign-react/help';\r\n\r\nimport { FilePicker } from './file-picker';\r\nimport { readFileAsDataURLAsync } from '../utils/read-file';\r\nimport { MaximumImageFileSizeMB } from '../utils/constants';\r\n\r\n// Refer to https://docs.microsoft.com/en-us/azure/media-services/latest/encode-media-encoder-standard-formats-reference\r\nconst defaultAllowedImageExtensions = ['.png', '.jpg', '.jpeg', '.gif'];\r\n\r\n// to reuse existing test coverage, still keep class format\r\nexport class ImageFilePicker extends React.PureComponent {\r\n onFileReadInternal = (selectedFiles) => {\r\n const { onFileRead } = this.props;\r\n\r\n return Promise.map(\r\n selectedFiles,\r\n fileObj => readFileAsDataURLAsync(fileObj)\r\n ).then((imageSources) => {\r\n onFileRead(imageSources, selectedFiles);\r\n });\r\n };\r\n\r\n getReachFileSizeLimitErrorMessage = ({ fileSizeMB, maximumFileSizeMB }) => {\r\n const { enableMultiple, i18n } = this.props;\r\n let errorMsg;\r\n\r\n if (enableMultiple) {\r\n errorMsg = i18n.getString('ImageExperience_MultipleUpload_FileSize_TooBig', {\r\n maximumFileSize: maximumFileSizeMB,\r\n });\r\n } else {\r\n errorMsg = i18n.getString('ImageExperience_FileSize_Too_Big_Template', {\r\n fileSize: fileSizeMB,\r\n maximumFileSize: maximumFileSizeMB,\r\n });\r\n }\r\n\r\n return errorMsg;\r\n };\r\n\r\n showExtensionError = () => {\r\n const {\r\n i18n, showErrors, enableMultiple, isMultimediaAd, isAudienceAd,\r\n } = this.props;\r\n\r\n let errorLinkText;\r\n let errorTopic;\r\n\r\n if (isMultimediaAd) {\r\n errorLinkText = i18n.getString(_TL_('About multimedia ads'));\r\n errorTopic = 'app54810';\r\n } else if (isAudienceAd) {\r\n errorLinkText = i18n.getString('ImageExperience_BestPracticeHelp');\r\n errorTopic = 'app54718';\r\n } else {\r\n errorLinkText = i18n.getString(_TL_('About image guidelines and policies'));\r\n errorTopic = 'app54718';\r\n }\r\n\r\n showErrors([\r\n \r\n {i18n.getString(`ImageExperience_${enableMultiple ? 'MultipleUpload_' : ''}Error_MediaFormatNotSupported`)}\r\n \r\n ,\r\n ]);\r\n };\r\n\r\n render() {\r\n const {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n onFileRead, minimumSize, maxUploadNum, ...rest\r\n } = this.props;\r\n const { i18n } = rest;\r\n let fileDraggerTip = maxUploadNum >= 0 ? i18n.getString('ImageExperience_Drag_File_Maximum_Upload_Num', { maxCount: maxUploadNum }) : '';\r\n if (!_.isUndefined(minimumSize) && _.isArray(minimumSize) && minimumSize.length > 1) {\r\n if (fileDraggerTip) {\r\n fileDraggerTip += ' ';\r\n }\r\n fileDraggerTip += i18n.getString('ImageExperience_Drag_File_Minimum_Size_Tip', { width: minimumSize[0], height: minimumSize[1] });\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nImageFilePicker.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n parseDecimal: PropTypes.func.isRequired,\r\n }).isRequired,\r\n onFileRead: PropTypes.func.isRequired,\r\n isMultimediaAd: PropTypes.bool,\r\n isAudienceAd: PropTypes.bool,\r\n showErrors: PropTypes.func.isRequired,\r\n minimumSize: PropTypes.arrayOf(PropTypes.number),\r\n maxUploadNum: PropTypes.number,\r\n enableMultiple: PropTypes.bool,\r\n};\r\n\r\nImageFilePicker.defaultProps = {\r\n isMultimediaAd: false,\r\n isAudienceAd: false,\r\n minimumSize: [],\r\n maxUploadNum: -1,\r\n enableMultiple: false,\r\n};\r\n","import React from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { LearnMoreLink } from '@bingads-webui-campaign-react/help';\r\n\r\nimport { FilePicker } from './file-picker';\r\nimport { MaximumVideoFileSizeMB, allowedVideoFileExtensions } from '../utils/constants';\r\n\r\n// to reuse existing test coverage, still keep class format\r\nexport class VideoFilePicker extends React.PureComponent {\r\n onFileReadInternal = (selectedFiles) => {\r\n const { onFileRead, enableMultiple } = this.props;\r\n\r\n return onFileRead(enableMultiple ? selectedFiles: _.first(selectedFiles));\r\n };\r\n\r\n\r\n getReachFileSizeLimitErrorMessage = () => {\r\n const { i18n } = this.props;\r\n\r\n return i18n.getString(\r\n 'ImageExperience_Video_FileSize_Too_Big_Template',\r\n {\r\n maximumFileSize: MaximumVideoFileSizeMB / 1000,\r\n }\r\n );\r\n };\r\n\r\n showExtensionError = () => {\r\n const {\r\n i18n, showErrors, enableMultiple,\r\n } = this.props;\r\n\r\n const errorLinkText = i18n.getString('ImageExperience_BestPracticeHelp_Video');\r\n const errorTopic = 'app54794';\r\n\r\n showErrors([\r\n \r\n {i18n.getString(`ImageExperience_${enableMultiple ? 'MultipleUpload_' : ''}Error_MediaFormatNotSupported`)}\r\n \r\n ,\r\n ]);\r\n };\r\n\r\n render() {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { onFileRead, enableMultiple, ...rest } = this.props;\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nVideoFilePicker.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n parseDecimal: PropTypes.func.isRequired,\r\n }).isRequired,\r\n enableMultiple: PropTypes.bool,\r\n onFileRead: PropTypes.func,\r\n showErrors: PropTypes.func.isRequired,\r\n};\r\n\r\nVideoFilePicker.defaultProps = {\r\n enableMultiple: false,\r\n onFileRead: _.noop,\r\n};\r\n","export const baseStyles = {\r\n imageItemBox: {\r\n marginBottom: '16px',\r\n marginRight: '16px',\r\n width: '298px',\r\n height: '274px',\r\n borderRadius: '4px',\r\n boxShadow: '0px 0.3px 0.9px rgba(0, 0, 0, 0.1), 0px 1.6px 3.6px rgba(0, 0, 0, 0.13)',\r\n overflow: 'hidden',\r\n },\r\n imageContent: {\r\n width: '100%',\r\n height: '200px',\r\n objectFit: 'contain',\r\n },\r\n};\r\n\r\nexport const uploadPreviewStyle = (_, { palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n uploadPreviewContainer: {\r\n width: '100%',\r\n },\r\n uploadTitle: {\r\n fontFamily: 'Segoe UI',\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n color: palette.neutralSecondary,\r\n textAlign: 'center',\r\n },\r\n imagePreviewContainer: {\r\n marginTop: '16px',\r\n width: '100%',\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n maxHeight: '637px',\r\n overflowY: 'scroll',\r\n scrollBar: 'none',\r\n '&::-webkit-scrollbar': {\r\n width: '0',\r\n display: 'none',\r\n },\r\n },\r\n imageItemBox: {\r\n ...baseStyles.imageItemBox,\r\n backgroundColor: palette.neutralLighterAlt,\r\n },\r\n imageItemBoxRight: {\r\n marginRight: '0',\r\n },\r\n imageItemErrBox: {\r\n backgroundColor: '#FDE7E9', // hardcoded; not exported from fluent/theme package, but is used by fluent ui (see Messaging Colors)\r\n position: 'relative',\r\n },\r\n imageContent: {\r\n ...baseStyles.imageContent,\r\n },\r\n imageName: {\r\n marginTop: '12px',\r\n marginLeft: '18px',\r\n fontFamily: 'Segoe UI',\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n color: palette.neutralPrimary,\r\n width: '206px',\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n },\r\n progressBox: {\r\n margin: '0 18px',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n },\r\n progressLine: {\r\n marginTop: '8px',\r\n width: '206px',\r\n height: '2px',\r\n backgroundColor: palette.neutralLight,\r\n overflow: 'hidden',\r\n },\r\n statusIcon: {\r\n fontFamily: iconFontFamily,\r\n lineHeight: '16px',\r\n fontSize: 16,\r\n verticalAlign: 'middle',\r\n },\r\n completeIcon: {\r\n color: palette.green,\r\n display: 'block',\r\n '&:before': {\r\n content: '\"\\\\EC61\"',\r\n },\r\n transition: 'all 0.6s ease',\r\n },\r\n ongoingIcon: {\r\n color: palette.themePrimary,\r\n '&:before': {\r\n content: '\"\\\\E898\"',\r\n },\r\n },\r\n errorIcon: {\r\n position: 'absolute',\r\n bottom: '32px',\r\n right: '18px',\r\n color: '#A80000', // hardcoded; not exported from fluent/theme package, but is used by fluent ui (see Messaging Colors)\r\n '&:before': {\r\n content: '\"\\\\EA39\"',\r\n },\r\n },\r\n errorMsg: {\r\n marginTop: '8px',\r\n fontFamily: 'Segoe UI',\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n color: '#A80000', // hardcoded; not exported from fluent/theme package, but is used by fluent ui (see Messaging Colors)\r\n marginLeft: '18px',\r\n },\r\n imageSize: {\r\n marginTop: '2px',\r\n marginLeft: '18px',\r\n fontFamily: 'Segoe UI',\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n },\r\n});\r\n","import React, { useContext, useCallback, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { Progress } from '@bingads-webui-react/progress';\r\n\r\nimport { uploadPreviewStyle } from './styles/upload-assets-preview-style';\r\n\r\nexport const UploadPreviewWithCustomPreview = ({\r\n assetList,\r\n maxUploadNum,\r\n PreviewComponent,\r\n customClasses,\r\n showTitle,\r\n}) => {\r\n const classes = useDefaultStyles(uploadPreviewStyle);\r\n const i18n = useContext(I18nContext);\r\n\r\n const getFileSize = useCallback((fileSize) => {\r\n let size = fileSize;\r\n let fileSizeStr = '';\r\n if ((fileSize / 1024) < 1024) {\r\n size = fileSize / 1024;\r\n fileSizeStr = i18n.getString(_TL_('{{fileSize}} KB'), { fileSize: size.toFixed(2) });\r\n } else {\r\n size = fileSize / 1024 / 1024;\r\n fileSizeStr = i18n.getString(_TL_('{{fileSize}} MB'), { fileSize: size.toFixed(2) });\r\n }\r\n\r\n return fileSizeStr;\r\n }, [i18n]);\r\n\r\n const normalInfoBox = item => (\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
{getFileSize(item.size)}
\r\n
\r\n );\r\n\r\n const errorInfoBox = () => (\r\n
\r\n \r\n
{i18n.getString(_TL_('Upload failed. Maximum limit reached.'))}
\r\n
\r\n );\r\n\r\n const uploadTitle = i18n.getString(_TL_('Uploading {{uploadingNum}} files...'), { uploadingNum: maxUploadNum ? Math.min(maxUploadNum, assetList.length) : assetList.length });\r\n\r\n const previewComponentClasses = useMemo(() => ({\r\n imageContent: classnames(classes.imageContent, customClasses.imageContent),\r\n imageContentText: classnames(customClasses.imageContentText),\r\n }), [customClasses, classes]);\r\n\r\n return (\r\n assetList && assetList.length > 0 ?\r\n
\r\n {\r\n showTitle && (\r\n
\r\n {uploadTitle}\r\n
\r\n )\r\n }\r\n
\r\n {\r\n assetList.map((item, index) => {\r\n const exceedMaxUploadNum = maxUploadNum && index >= maxUploadNum;\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { progress, ...rest } = item;\r\n\r\n return (\r\n \r\n \r\n
{item.name}
\r\n {\r\n exceedMaxUploadNum ? errorInfoBox() : normalInfoBox(item)\r\n }\r\n
\r\n );\r\n })\r\n }\r\n
\r\n
: null\r\n );\r\n};\r\nUploadPreviewWithCustomPreview.propTypes = {\r\n assetList: PropTypes.arrayOf(PropTypes.shape({\r\n url: PropTypes.string,\r\n progress: PropTypes.number,\r\n name: PropTypes.string,\r\n size: PropTypes.number,\r\n })).isRequired,\r\n maxUploadNum: PropTypes.number,\r\n PreviewComponent: PropTypes.func.isRequired,\r\n customClasses: PropTypes.shape({}),\r\n showTitle: PropTypes.bool,\r\n};\r\n\r\nUploadPreviewWithCustomPreview.defaultProps = {\r\n customClasses: {},\r\n showTitle: true,\r\n maxUploadNum: undefined,\r\n};\r\n\r\nexport const SimpleImagePreview = ({ className, url, alt }) => (\r\n {alt}\r\n);\r\n\r\nSimpleImagePreview.propTypes = {\r\n className: PropTypes.string.isRequired,\r\n url: PropTypes.string.isRequired,\r\n alt: PropTypes.string.isRequired,\r\n};\r\n\r\nexport const UploadPreview = props => (\r\n \r\n);\r\n","/* eslint-disable max-len */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { Progress, RadialProgress } from '@bingads-webui-react/progress';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getCircleProgressStyle } from '@bingads-webui-campaign/shared-image-experience-styles';\r\n\r\nconst BarUploadProgress = (props) => {\r\n const uploadProcessText = `${((100 * props.uploadedBytes) / props.totalBytes).toFixed(1)} %`;\r\n\r\n return (\r\n
\r\n \r\n
{uploadProcessText}
\r\n
);\r\n};\r\n\r\nconst CircleUploadProgress = (props) => {\r\n const styles = useDefaultStyles(getCircleProgressStyle);\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport const UploadProgress = (props) => {\r\n switch (props.type) {\r\n case 'bar':\r\n return ;\r\n case 'circle':\r\n return ;\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\nUploadProgress.propTypes = {\r\n totalBytes: PropTypes.number.isRequired,\r\n uploadedBytes: PropTypes.number.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n parseDecimal: PropTypes.func.isRequired,\r\n }).isRequired,\r\n type: PropTypes.string,\r\n};\r\n\r\nBarUploadProgress.propTypes = UploadProgress.propTypes;\r\nCircleUploadProgress.propTypes = UploadProgress.propTypes;\r\n\r\nUploadProgress.defaultProps = {\r\n type: 'bar',\r\n};\r\n","import { map } from 'underscore';\r\n\r\n// for uploading image during crud-ad workflow, there are additional\r\n// async operations needed after the asset upload to MT is complete\r\n// so the default boundary on the progress bar is set to 80% to account\r\n// for the additional time needed to process the image for crud-ad\r\nexport const defaultUploadProgressBoundary = 0.8;\r\n\r\n/**\r\n * Helper to update the state of the progress bar based on current upload progress\r\n * @param {function} setProgress - function to update progress of files being uploaded\r\n * @param {number} index - index of the image being uploading within the array of images\r\n * to be uploaded\r\n * @param {number} uploadProgressBoundary - custom upload progress boundary for use in cases\r\n * where the amount of processing happening after upload to MT is complete is different than\r\n * default case used by crud-ad workflow. 1 is 100% (show full progress bar when upload is done).\r\n * @returns {function} event handler function which will take an event with loaded/total properties\r\n * and update progress based on the loaded state\r\n */\r\nexport const updateProgress = ({ setProgress, index, uploadProgressBoundary }) => (evt) => {\r\n const boundary = uploadProgressBoundary || defaultUploadProgressBoundary;\r\n const progress = (evt.loaded / evt.total) * boundary;\r\n\r\n setProgress(index, progress);\r\n};\r\n\r\n/**\r\n * Helper to update the progress of files in the array of files to be uploaded. Returns\r\n * a function which can directly be passed into setState if maintaining previewImageArr\r\n * via class component state.\r\n * @param {number} index - index of the file being uploading within the array of files\r\n * to be uploaded\r\n * @param {number} progress - current progress of uploading.\r\n * @returns {function} takes array of files to be uploaded as argument, will update the\r\n * progress of the file specified by index in the upload preview array\r\n */\r\nexport const updateFilePreviewArrayUploadProgress = (index, progress) => ({ previewArr }) => {\r\n const newPreviewArr = map(previewArr, (previous, i) => {\r\n if (i === index) {\r\n return {\r\n ...previous,\r\n progress,\r\n };\r\n }\r\n return previous;\r\n });\r\n\r\n return { previewArr: newPreviewArr };\r\n};\r\n\r\n/**\r\n * Helper to generate an array of files to be uploaded with properties used by the\r\n * upload progress UI.\r\n * @param {array} selectedFiles - array containing file objects\r\n * @param {array} fileSources - array of file data encoded as string.\r\n * @param {array} parsedInfos - array of object containing parsed info of each file.\r\n * @returns {array} array of files to be uploaded with properties\r\n * url (file data encoded), progress (0 for now, will be updated as file starts uploading),\r\n * size, name\r\n */\r\nexport const generatePreviewArray = ({ files = [], fileSources, customizedOptions = [] }) => {\r\n const previewArr = map(fileSources, (source, index) => {\r\n const uploadInfo = {\r\n url: source,\r\n progress: 0,\r\n size: files[index] ? files[index].size : 0,\r\n name: files[index] ? files[index].name : '',\r\n ...(customizedOptions[index] || {}),\r\n };\r\n return uploadInfo;\r\n });\r\n\r\n return previewArr;\r\n};\r\n","import { validateImageSyncAsyncWithDimensionParams } from '@bingads-webui-campaign/image-experience-utils';\r\n\r\n// Put all validations in this package along with the view\r\nexport const validateImageAsync = ({\r\n imageSource,\r\n minimumWidth,\r\n minimumHeight,\r\n}) => validateImageSyncAsyncWithDimensionParams({\r\n imageSource,\r\n minimumWidth,\r\n minimumHeight,\r\n});\r\n\r\n// currently there is no client side check, so here leave an empty interface\r\nexport const validateVideoAsync = () => Promise.resolve(true);\r\n","import _ from 'underscore';\r\n\r\nconst defaultProtocols = [{\r\n value: 'https',\r\n text: 'https://',\r\n}, {\r\n value: 'http',\r\n text: 'http://',\r\n}];\r\n\r\nexport const buildUrl = ({ protocol = '', url = '', protocols = defaultProtocols } = {}) => {\r\n const prefix = (_.findWhere(\r\n protocols,\r\n { value: protocol }\r\n ) || { text: '' }).text;\r\n return `${prefix}${url}`;\r\n};\r\n","export const parseUrl = (url) => {\r\n const urlRegex = new RegExp('^(?:\\\\s*(?:(\\\\S+):\\\\/\\\\/)?(?:(.+))?)?', 'i');\r\n const regexResult = urlRegex.exec(url);\r\n return { protocol: regexResult && regexResult[1], url: regexResult && regexResult[2] };\r\n};\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { AdapterFactory, withValidation, withError } from '@bingads-webui-react/validation';\r\nimport { Input, Select } from '@bingads-webui-react/primitive';\r\nimport { buildUrl } from './build-url';\r\nimport { parseUrl } from './parse-url';\r\n\r\nconst protocols = [{\r\n value: 'https',\r\n text: 'https://',\r\n}, {\r\n value: 'http',\r\n text: 'http://',\r\n}];\r\n\r\nexport class UrlEditor extends React.Component {\r\n static propTypes = {\r\n id: PropTypes.string,\r\n containerClassName: PropTypes.string,\r\n selectClassName: PropTypes.string,\r\n inputClassName: PropTypes.string,\r\n url: PropTypes.string,\r\n onChange: PropTypes.func.isRequired,\r\n protocols: PropTypes.arrayOf(PropTypes.shape({\r\n value: PropTypes.string.isRequired,\r\n text: PropTypes.string.isRequired,\r\n })),\r\n ariaProtocolLabelledBy: PropTypes.string,\r\n ariaUrlLabelledBy: PropTypes.string,\r\n ariaProtocolLabel: PropTypes.string,\r\n ariaUrlLabel: PropTypes.string,\r\n };\r\n\r\n static defaultProps = {\r\n id: undefined,\r\n containerClassName: undefined,\r\n selectClassName: undefined,\r\n inputClassName: undefined,\r\n url: '',\r\n protocols,\r\n ariaProtocolLabelledBy: undefined,\r\n ariaUrlLabelledBy: undefined,\r\n ariaProtocolLabel: undefined,\r\n ariaUrlLabel: undefined,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n let { protocol, url } = parseUrl(props.url);\r\n protocol = protocol || _.first(props.protocols).value;\r\n url = url || '';\r\n this.state = { protocol, url };\r\n }\r\n\r\n onUrlChange = (url) => {\r\n this.props.onChange(url);\r\n }\r\n\r\n onUrlPartChange = (e) => {\r\n const rawInput = e.target.value;\r\n let { protocol, url } = parseUrl(rawInput);\r\n if (!protocol || (protocol && !_.findWhere(this.props.protocols, { value: protocol }))) {\r\n // ignoring not supported protocols\r\n // and keeping URL input's value\r\n protocol = null;\r\n url = rawInput;\r\n }\r\n\r\n const newUrl = url || '';\r\n const newProtocol = protocol || this.state.protocol;\r\n\r\n const fullUrl = url ? this.buildFullUrl({\r\n protocol: newProtocol,\r\n url: newUrl.trim(),\r\n }) : '';\r\n\r\n this.setState({ url: newUrl, protocol: newProtocol });\r\n this.onUrlChange(fullUrl);\r\n }\r\n\r\n onProtocolPartChange = (e) => {\r\n e.stopPropagation();\r\n const protocol = e.target.value;\r\n const url = this.state.url.trim();\r\n\r\n const fullUrl = url ? this.buildFullUrl({\r\n protocol,\r\n url,\r\n }) : '';\r\n\r\n this.setState({ protocol });\r\n this.onUrlChange(fullUrl);\r\n }\r\n\r\n buildFullUrl = ({ protocol, url }) => buildUrl({ protocol, url, protocols: this.props.protocols })\r\n\r\n render() {\r\n const { protocol, url } = this.state;\r\n\r\n return (\r\n
\r\n \r\n {this.props.protocols.map(option => (\r\n \r\n ))}\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst UrlEditorValidationAdapter = AdapterFactory({\r\n valueToInject: 'url',\r\n});\r\n\r\nexport const UrlEditorWithValidation = withError(withValidation(\r\n UrlEditor,\r\n UrlEditorValidationAdapter\r\n));\r\n","import _ from 'underscore';\r\nimport React, { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { UrlEditorWithValidation } from './url-editor';\r\n\r\nexport function UrlEditorForArray(props) {\r\n const [url, setUrl] = useState(_.first(props.value[props.field]));\r\n const urlSchema = {\r\n properties: {\r\n url: {\r\n ...props.schema.properties[props.field],\r\n type: 'string',\r\n },\r\n },\r\n };\r\n\r\n const onUrlChange = (newUrl) => {\r\n setUrl(newUrl);\r\n const urls = newUrl ? [newUrl] : [];\r\n props.onChange({\r\n [props.field]: urls,\r\n });\r\n };\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nUrlEditorForArray.propTypes = {\r\n value: PropTypes.shape({}),\r\n onChange: PropTypes.func.isRequired,\r\n schema: PropTypes.shape({\r\n properties: PropTypes.shape({}),\r\n }).isRequired,\r\n field: PropTypes.string.isRequired,\r\n};\r\n\r\nUrlEditorForArray.defaultProps = {\r\n value: undefined,\r\n};\r\n","\r\nimport _ from 'underscore';\r\nimport { isValidUrl, getUrlProtocolAndDomain } from '@bingads-webui/url-util';\r\n\r\nconst isValidCustomUrlProtocol = (url) => {\r\n const uriRegex = /^(\\S+:(\\/\\/)?)(\\S+)/;\r\n return uriRegex.test(url);\r\n};\r\n\r\nconst doesUrlContainUnsafeCharacters = (url) => {\r\n const specialCharactersRegex = /[\\s<>{}]/;\r\n return specialCharactersRegex.test(url);\r\n};\r\n\r\nexport const UrlLengthLimit = 2048;\r\n/**\r\n * Validate a URL.\r\n * @param {String} url - Fully qualified ad HTTP/S URL, including the prefix.\r\n * @param {String} requiredUrlProtocolAndDomain - Protocol and domain name that the ad URL must use.\r\n * @param {Object} [i18n] - i18n library.\r\n * @param {Number} [urlLengthLimit] - Maximum number of characters allowed in the URL.\r\n * @param {Boolean} [customUrlProtocol] - Whether the URL can have a custom protocol.\r\n * @param {Boolean} [enableSpecialCharactersValidation] - Whether to validate special characters in the URL.\r\n * @returns {String} - Null if URL is valid. Otherwise an error message.\r\n */\r\nexport function validateAdUrl(url, requiredUrlProtocolAndDomain, i18n = { getString: _.identity }, urlLengthLimit = UrlLengthLimit, customUrlProtocol = false, enableSpecialCharactersValidation = false) {\r\n if (!url) {\r\n return i18n.getString(_TL_('Please enter a valid URL'));\r\n }\r\n\r\n if (enableSpecialCharactersValidation && doesUrlContainUnsafeCharacters(url)) {\r\n return i18n.getString(_TL_('The URL contains invalid characters.'));\r\n }\r\n\r\n if (_.size(url) > urlLengthLimit) {\r\n return i18n.getString(_TL_('The number of characters in this field cannot exceed {{lengthLimit}}'), { lengthLimit: urlLengthLimit });\r\n }\r\n\r\n if ((customUrlProtocol && !isValidCustomUrlProtocol(url)) || (!customUrlProtocol && !isValidUrl(url))) {\r\n return i18n.getString(_TL_('Please enter a valid URL'));\r\n }\r\n\r\n if (!_.isEmpty(requiredUrlProtocolAndDomain)) {\r\n // Google requires search ads in the same ad group have the same display URL domain\r\n // See: https://support.google.com/adspolicy/answer/6088505?hl=en-GB\r\n const adUrlProtocolAndDomain = getUrlProtocolAndDomain(url);\r\n if (requiredUrlProtocolAndDomain !== adUrlProtocolAndDomain) {\r\n return i18n.getString(_TL_('This ad\\'s final URL must have the same domain as the other ads in this campaign.'));\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\nconst pathLengthLimitErrorMessages = [\r\n _TL_('Path 1 cannot exceed 15 characters.'),\r\n _TL_('Path 2 cannot exceed 15 characters.'),\r\n];\r\nconst pathLengthLimit = 15;\r\n\r\nexport function validatePath(values, i18n) {\r\n const errors = [];\r\n const path1 = _.isEmpty(values[0]) ? '' : values[0].trim();\r\n const path2 = _.isEmpty(values[1]) ? '' : values[1].trim();\r\n if (_.isEmpty(path1) && !_.isEmpty(path2)) {\r\n errors.push(i18n.getString(_TL_('In order to use path 2, path 1 must also be used.')));\r\n }\r\n\r\n _.each(values, (field, index) => {\r\n if (field && _.size(field) > pathLengthLimit) {\r\n errors.push(i18n.getString(pathLengthLimitErrorMessages[index]));\r\n }\r\n });\r\n\r\n return errors;\r\n}\r\n","import { makeStyles, shorthands } from '@fluentui/react-components';\r\n\r\nexport const useStyles = makeStyles({\r\n urlInputContainer: {\r\n display: 'flex',\r\n flexWrap: 'nowrap',\r\n width: 'auto',\r\n height: 'auto',\r\n boxSizing: 'border-box',\r\n '> *': {\r\n textOverflow: 'ellipsis',\r\n },\r\n ...shorthands.gap('16px'),\r\n },\r\n urlInput: {\r\n height: 'auto',\r\n width: 'auto',\r\n flexGrow: 1,\r\n },\r\n urlProtocol: {\r\n minWidth: 'unset',\r\n },\r\n customUrlProtocol: {\r\n width: '100px',\r\n },\r\n urlPath: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n wordBreak: 'break-all',\r\n alignItems: 'baseline',\r\n ...shorthands.gap('6px'),\r\n },\r\n});\r\n","import { noop, isString } from 'underscore';\r\nimport React, { useCallback, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Input, mergeClasses } from '@fluentui/react-components';\r\nimport { getDomain } from '@bingads-webui/url-util';\r\n\r\nimport { validatePath } from './validation';\r\nimport { useStyles } from './styles';\r\n\r\nexport function UrlPathFluent({\r\n value,\r\n url,\r\n i18n,\r\n onChange,\r\n}) {\r\n const [Path1, Path2] = value;\r\n const urlDomain = useMemo(() => getDomain(url), [url]);\r\n const onPathChange = useCallback((path, { value: newValue }) => {\r\n const errors = validatePath([path === 'Path1' ? newValue : Path1, path === 'Path2' ? newValue : Path2], i18n);\r\n onChange(errors, { [path]: newValue });\r\n }, [Path1, Path2, i18n, onChange]);\r\n\r\n const onPath1Change = useCallback((event, newValue) => {\r\n onPathChange('Path1', newValue);\r\n }, [onPathChange]);\r\n\r\n const onPath2Change = useCallback((event, newValue) => {\r\n onPathChange('Path2', newValue);\r\n }, [onPathChange]);\r\n\r\n const styles = useStyles();\r\n\r\n return (\r\n
\r\n
\r\n {isString(urlDomain) && urlDomain.length > 0 ?\r\n urlDomain :\r\n 'www.example.com'\r\n }\r\n
\r\n
/
\r\n \r\n
/
\r\n \r\n
\r\n );\r\n}\r\n\r\nUrlPathFluent.propTypes = {\r\n config: PropTypes.shape({\r\n }).isRequired,\r\n value: PropTypes.arrayOf(PropTypes.string).isRequired,\r\n url: PropTypes.string.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n onChange: PropTypes.func,\r\n};\r\n\r\nUrlPathFluent.defaultProps = {\r\n onChange: noop,\r\n};\r\n","import _ from 'underscore';\r\n\r\nexport const URL_COLON_SLASH_SLASH = '://';\r\nexport const DEFAULT_URL_PREFIX = 'https';\r\n\r\nexport function getUrlPrefixAndDestination(finalUrl, defaultUrlPrefix = DEFAULT_URL_PREFIX) {\r\n const index = _.isString(finalUrl) ? finalUrl.indexOf(URL_COLON_SLASH_SLASH) : -1;\r\n if (index >= 0) {\r\n const prefix = finalUrl.substring(0, index).toLowerCase();\r\n const destination = finalUrl.substring(index + URL_COLON_SLASH_SLASH.length).trim();\r\n\r\n return [prefix, destination];\r\n }\r\n\r\n return [defaultUrlPrefix, ''];\r\n}\r\n\r\nexport const getUpdatedFullUrlOnPrefixUpdate =\r\n (urlWithoutPrefix, newPrefix) => {\r\n let slash = '';\r\n if (!newPrefix.includes(URL_COLON_SLASH_SLASH)) {\r\n slash = URL_COLON_SLASH_SLASH;\r\n }\r\n\r\n return `${newPrefix}${slash}${urlWithoutPrefix}`;\r\n };\r\n\r\nexport const getUpdatedFullUrlOnTextUpdate = (urlPrefix, newValue) => {\r\n if (newValue.includes(URL_COLON_SLASH_SLASH)) {\r\n // detect if the user is entering a URL and update the URL prefix\r\n const [prefix, destination] = getUrlPrefixAndDestination(newValue);\r\n\r\n if (prefix === 'http' || prefix === 'https') {\r\n return `${prefix}${URL_COLON_SLASH_SLASH}${destination}`;\r\n }\r\n }\r\n\r\n return `${urlPrefix}${URL_COLON_SLASH_SLASH}${newValue.trim()}`;\r\n};\r\n\r\nexport const isEmptyUrl = (finalUrls) => {\r\n // FinalUrlWithCustomValidation contol always specifies prefix. If destination is empty\r\n // then treat this as empty final URL. This is needed for when final URL is optional and\r\n // we want to avoid specifying prefixed empty URL.\r\n const [, dest] = getUrlPrefixAndDestination(_.first(finalUrls));\r\n return _.isEmpty(dest);\r\n};\r\n","import { noop } from 'underscore';\r\nimport React, { useCallback, useMemo, useContext, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Dropdown, Option, Input, mergeClasses } from '@fluentui/react-components';\r\nimport { ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\n\r\nimport {\r\n getUrlPrefixAndDestination,\r\n getUpdatedFullUrlOnPrefixUpdate,\r\n getUpdatedFullUrlOnTextUpdate,\r\n} from './utils';\r\nimport { validateAdUrl, UrlLengthLimit } from './validation';\r\nimport { useStyles } from './styles';\r\n\r\nconst urlPrefixOptions = [\r\n { key: 'https', text: 'https://', title: 'https://' },\r\n { key: 'http', text: 'http://', title: 'http://' },\r\n];\r\n\r\nexport function UrlInputFluent({\r\n url,\r\n i18n,\r\n onChange,\r\n containerClassName,\r\n additionalValidation,\r\n prepopulateUrl,\r\n dropdownOptionAriaLabel,\r\n propertyKey,\r\n validateOnRender,\r\n additionalProperties,\r\n textFieldAriaLabel,\r\n customUrlProtocol,\r\n enableSpecialCharactersValidation,\r\n hideProtocol,\r\n}) {\r\n const activity = useContext(ActivityContext);\r\n\r\n const [urlPrefix, urlWithoutPrefix] = useMemo(\r\n () => getUrlPrefixAndDestination(url),\r\n [url]\r\n );\r\n\r\n const selectedOptionText = useMemo(() => {\r\n const selectedOption = urlPrefixOptions.filter(option => option.key === urlPrefix)[0] || urlPrefixOptions[0];\r\n return selectedOption.text;\r\n }, [urlPrefix]);\r\n\r\n const validateAndUpdateUrl = useCallback((currentURL) => {\r\n // first check URL validity. If valid then validate domain by need.\r\n let finalUrlValidatorError = validateAdUrl(currentURL, '', i18n, UrlLengthLimit, customUrlProtocol, enableSpecialCharactersValidation);\r\n if (!finalUrlValidatorError && additionalValidation) {\r\n finalUrlValidatorError = additionalValidation(currentURL);\r\n }\r\n\r\n onChange(finalUrlValidatorError ? [finalUrlValidatorError] : [], currentURL);\r\n if (activity) {\r\n activity.signal(`on${propertyKey}Change - ${JSON.stringify(currentURL)} - isValid: ${!finalUrlValidatorError}}`);\r\n }\r\n }, [activity, additionalValidation, customUrlProtocol, i18n, onChange, propertyKey]);\r\n\r\n const onUrlPrefixChanged = useCallback(\r\n (event, newItem) =>\r\n validateAndUpdateUrl(getUpdatedFullUrlOnPrefixUpdate(urlWithoutPrefix, newItem.optionValue)),\r\n [urlWithoutPrefix, validateAndUpdateUrl]\r\n );\r\n\r\n const onCustomUrlProtocolChanged = useCallback(\r\n (event, { value }) =>\r\n validateAndUpdateUrl(getUpdatedFullUrlOnPrefixUpdate(urlWithoutPrefix, value)),\r\n [urlWithoutPrefix, validateAndUpdateUrl]\r\n );\r\n\r\n const onTextChange = useCallback((event, { value }) => {\r\n const newValue = getUpdatedFullUrlOnTextUpdate(urlPrefix, value);\r\n\r\n if (newValue) {\r\n validateAndUpdateUrl(getUpdatedFullUrlOnTextUpdate(urlPrefix, value));\r\n }\r\n }, [validateAndUpdateUrl, urlPrefix]);\r\n\r\n useEffect(() => {\r\n if (!url && prepopulateUrl) {\r\n // Prepopulate final url with prepopulate on load if no value is provided.\r\n validateAndUpdateUrl(getUpdatedFullUrlOnTextUpdate(urlPrefix, prepopulateUrl));\r\n } else if (validateOnRender) {\r\n validateAndUpdateUrl(url);\r\n }\r\n // only validate on render and prepopulate on load\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [url]);\r\n\r\n const styles = useStyles();\r\n\r\n return (\r\n
\r\n {\r\n !hideProtocol && customUrlProtocol &&\r\n \r\n }\r\n {\r\n !hideProtocol && !customUrlProtocol && (\r\n \r\n {urlPrefixOptions.map(option => (\r\n \r\n ))}\r\n \r\n )\r\n }\r\n \r\n
\r\n );\r\n}\r\n\r\nUrlInputFluent.propTypes = {\r\n containerClassName: PropTypes.string,\r\n url: PropTypes.string.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n onChange: PropTypes.func,\r\n onClick: PropTypes.func,\r\n additionalValidation: PropTypes.func,\r\n prepopulateUrl: PropTypes.string,\r\n dropdownOptionAriaLabel: PropTypes.string,\r\n propertyKey: PropTypes.string,\r\n validateOnRender: PropTypes.bool,\r\n additionalProperties: PropTypes.shape({}),\r\n textFieldAriaLabel: PropTypes.string.isRequired,\r\n customUrlProtocol: PropTypes.bool,\r\n enableSpecialCharactersValidation: PropTypes.bool,\r\n hideProtocol: PropTypes.bool,\r\n};\r\n\r\nUrlInputFluent.defaultProps = {\r\n onChange: noop,\r\n onClick: noop,\r\n containerClassName: '',\r\n additionalValidation: noop,\r\n prepopulateUrl: '',\r\n dropdownOptionAriaLabel: '',\r\n propertyKey: '',\r\n validateOnRender: false,\r\n additionalProperties: {},\r\n customUrlProtocol: false,\r\n enableSpecialCharactersValidation: false,\r\n hideProtocol: false,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { getUrlPrefixAndDestination } from './utils';\r\n\r\nexport const withNoProtocol = (WrappedComponent) => {\r\n const URLInputWithNoProtocol = (props) => {\r\n const { url, onChange, ...rest } = props;\r\n\r\n const urlWithProtocol = url ? `https://${url}` : url;\r\n\r\n const onChangeWithProtocol = (errors, currentURL) => {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const [urlPrefix, urlWithoutPrefix] = getUrlPrefixAndDestination(currentURL);\r\n return onChange(errors, urlWithoutPrefix);\r\n };\r\n\r\n return ;\r\n };\r\n\r\n URLInputWithNoProtocol.propTypes = {\r\n url: PropTypes.string.isRequired,\r\n onChange: PropTypes.func.isRequired.isRequired,\r\n };\r\n\r\n return URLInputWithNoProtocol;\r\n};\r\n","\r\nimport _ from 'underscore';\r\nimport { isValidUrl, getUrlProtocolAndDomain } from '@bingads-webui/url-util';\r\n\r\n\r\nconst isValidCustomUrlProtocol = (url) => {\r\n const uriRegex = /^(\\S+:(\\/\\/)?)(\\S+)/;\r\n return uriRegex.test(url);\r\n};\r\n\r\nconst doesUrlContainUnsafeCharacters = (url) => {\r\n const specialCharactersRegex = /[\\s<>{}]/;\r\n return specialCharactersRegex.test(url);\r\n};\r\n\r\nexport const UrlLengthLimit = 2048;\r\n/**\r\n * Validate a URL.\r\n * @param {String} url - Fully qualified ad HTTP/S URL, including the prefix.\r\n * @param {String} requiredUrlProtocolAndDomain - Protocol and domain name that the ad URL must use.\r\n * @param {Object} [i18n] - i18n library.\r\n * @param {Number} [urlLengthLimit] - Maximum number of characters allowed in the URL.\r\n * @param {Boolean} [customUrlProtocol] - Whether the URL can have a custom protocol.\r\n * @param {Boolean} [validateSpecialCharacters] - Whether to validate special characters in the URL.\r\n * @returns {String} - Null if URL is valid. Otherwise an error message.\r\n */\r\nexport function validateAdUrl(url, requiredUrlProtocolAndDomain, i18n = { getString: _.identity }, urlLengthLimit = UrlLengthLimit, customUrlProtocol = false, validateSpecialCharacters = false) {\r\n if (!url) {\r\n return i18n.getString(_TL_('Please enter a valid URL'));\r\n }\r\n\r\n if (validateSpecialCharacters && doesUrlContainUnsafeCharacters(url)) {\r\n return i18n.getString(_TL_('The URL contains invalid characters.'));\r\n }\r\n\r\n if (_.size(url) > urlLengthLimit) {\r\n return i18n.getString(_TL_('The number of characters in this field cannot exceed {{lengthLimit}}'), { lengthLimit: urlLengthLimit });\r\n }\r\n\r\n if ((customUrlProtocol && !isValidCustomUrlProtocol(url)) || (!customUrlProtocol && !isValidUrl(url))) {\r\n return i18n.getString(_TL_('Please enter a valid URL'));\r\n }\r\n\r\n if (!_.isEmpty(requiredUrlProtocolAndDomain)) {\r\n // Google requires search ads in the same ad group have the same display URL domain\r\n // See: https://support.google.com/adspolicy/answer/6088505?hl=en-GB\r\n const adUrlProtocolAndDomain = getUrlProtocolAndDomain(url);\r\n if (requiredUrlProtocolAndDomain !== adUrlProtocolAndDomain) {\r\n return i18n.getString(_TL_('This ad\\'s final URL must have the same domain as the other ads in this campaign.'));\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\nconst pathLengthLimitErrorMessages = [\r\n _TL_('Path 1 cannot exceed 15 characters.'),\r\n _TL_('Path 2 cannot exceed 15 characters.'),\r\n];\r\nconst pathLengthLimit = 15;\r\n\r\nexport function validatePath(values, i18n) {\r\n const errors = [];\r\n const path1 = _.isEmpty(values[0]) ? '' : values[0].trim();\r\n const path2 = _.isEmpty(values[1]) ? '' : values[1].trim();\r\n if (_.isEmpty(path1) && !_.isEmpty(path2)) {\r\n errors.push(i18n.getString(_TL_('In order to use path 2, path 1 must also be used.')));\r\n }\r\n\r\n _.each(values, (field, index) => {\r\n if (field && _.size(field) > pathLengthLimit) {\r\n errors.push(i18n.getString(pathLengthLimitErrorMessages[index]));\r\n }\r\n });\r\n\r\n return errors;\r\n}\r\n","import { noop, isString } from 'underscore';\r\nimport React, { useCallback, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Stack, TextField } from '@fluentui/react';\r\nimport { getDomain } from '@bingads-webui/url-util';\r\n\r\nimport { validatePath } from './validation';\r\n\r\nconst urlPathStyle = {\r\n root: {\r\n flexFlow: 'row wrap',\r\n wordBreak: 'break-all',\r\n },\r\n};\r\n\r\nexport function UrlPathFluent({\r\n value,\r\n url,\r\n i18n,\r\n onChange,\r\n}) {\r\n const [Path1, Path2] = value;\r\n const urlDomain = useMemo(() => getDomain(url), [url]);\r\n const onPathChange = useCallback((path, newValue) => {\r\n const errors = validatePath([path === 'Path1' ? newValue : Path1, path === 'Path2' ? newValue : Path2], i18n);\r\n onChange(errors, { Path1, Path2, [path]: newValue });\r\n }, [Path1, Path2, i18n, onChange]);\r\n\r\n const onPath1Change = useCallback((event, newValue) => {\r\n onPathChange('Path1', newValue);\r\n }, [onPathChange]);\r\n\r\n const onPath2Change = useCallback((event, newValue) => {\r\n onPathChange('Path2', newValue);\r\n }, [onPathChange]);\r\n\r\n return (\r\n \r\n \r\n
\r\n {isString(urlDomain) && urlDomain.length > 0 ?\r\n urlDomain :\r\n 'www.example.com'\r\n }\r\n
\r\n
/
\r\n \r\n
/
\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nUrlPathFluent.propTypes = {\r\n config: PropTypes.shape({\r\n }).isRequired,\r\n value: PropTypes.arrayOf(PropTypes.string).isRequired,\r\n url: PropTypes.string.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n onChange: PropTypes.func,\r\n};\r\n\r\nUrlPathFluent.defaultProps = {\r\n onChange: noop,\r\n};\r\n","import _ from 'underscore';\r\n\r\nexport const URL_COLON_SLASH_SLASH = '://';\r\nexport const DEFAULT_URL_PREFIX = 'https';\r\n\r\nexport function getUrlPrefixAndDestination(finalUrl, defaultUrlPrefix = DEFAULT_URL_PREFIX) {\r\n const index = _.isString(finalUrl) ? finalUrl.indexOf(URL_COLON_SLASH_SLASH) : -1;\r\n if (index >= 0) {\r\n const prefix = finalUrl.substring(0, index).toLowerCase();\r\n const destination = finalUrl.substring(index + URL_COLON_SLASH_SLASH.length).trim();\r\n\r\n return [prefix, destination];\r\n }\r\n\r\n return [defaultUrlPrefix, ''];\r\n}\r\n\r\nexport const getUpdatedFullUrlOnPrefixUpdate =\r\n (urlWithoutPrefix, newPrefix) => {\r\n let slash = '';\r\n if (!newPrefix.includes(URL_COLON_SLASH_SLASH)) {\r\n slash = URL_COLON_SLASH_SLASH;\r\n }\r\n\r\n return `${newPrefix}${slash}${urlWithoutPrefix}`;\r\n };\r\n\r\nexport const getUpdatedFullUrlOnTextUpdate = (urlPrefix, newValue) => {\r\n if (newValue.includes(URL_COLON_SLASH_SLASH)) {\r\n // detect if the user is entering a URL and update the URL prefix\r\n const [prefix, destination] = getUrlPrefixAndDestination(newValue);\r\n\r\n if (prefix === 'http' || prefix === 'https') {\r\n return `${prefix}${URL_COLON_SLASH_SLASH}${destination}`;\r\n }\r\n }\r\n\r\n return `${urlPrefix}${URL_COLON_SLASH_SLASH}${newValue.trim()}`;\r\n};\r\n\r\nexport const isEmptyUrl = (finalUrls) => {\r\n // FinalUrlWithCustomValidation contol always specifies prefix. If destination is empty\r\n // then treat this as empty final URL. This is needed for when final URL is optional and\r\n // we want to avoid specifying prefixed empty URL.\r\n const [, dest] = getUrlPrefixAndDestination(_.first(finalUrls));\r\n return _.isEmpty(dest);\r\n};\r\n","import { noop } from 'underscore';\r\nimport React, { useCallback, useMemo, useContext, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Dropdown, Stack, TextField } from '@fluentui/react';\r\nimport { ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\n\r\nimport {\r\n getUrlPrefixAndDestination,\r\n getUpdatedFullUrlOnPrefixUpdate,\r\n getUpdatedFullUrlOnTextUpdate,\r\n} from './utils';\r\nimport { validateAdUrl, UrlLengthLimit } from './validation';\r\n\r\nconst urlPrefixOptions = [\r\n { key: 'https', text: 'https://', title: 'https://' },\r\n { key: 'http', text: 'http://', title: 'http://' },\r\n];\r\n\r\nexport function UrlInputFluent({\r\n url,\r\n i18n,\r\n onChange,\r\n containerClassName,\r\n additionalValidation,\r\n customizedValidation,\r\n prepopulateUrl,\r\n dropdownOptionAriaLabel,\r\n propertyKey,\r\n validateOnRender,\r\n additionalProperties,\r\n textFieldAriaLabel,\r\n customUrlProtocol,\r\n enableSpecialCharactersValidation,\r\n hideProtocol,\r\n}) {\r\n const activity = useContext(ActivityContext);\r\n const [urlPrefix, urlWithoutPrefix] = useMemo(\r\n () => getUrlPrefixAndDestination(url),\r\n [url]\r\n );\r\n\r\n const validateAndUpdateUrl = useCallback((currentURL) => {\r\n // first check URL validity. If valid then validate domain by need.\r\n const validateFun = customizedValidation || validateAdUrl;\r\n let finalUrlValidatorError = validateFun(currentURL, '', i18n, UrlLengthLimit, customUrlProtocol, enableSpecialCharactersValidation);\r\n if (!finalUrlValidatorError && additionalValidation) {\r\n finalUrlValidatorError = additionalValidation(currentURL);\r\n }\r\n\r\n onChange(finalUrlValidatorError ? [finalUrlValidatorError] : [], currentURL);\r\n if (activity) {\r\n activity.signal(`on${propertyKey}Change - ${JSON.stringify(currentURL)} - isValid: ${!finalUrlValidatorError}}`);\r\n }\r\n }, [activity, additionalValidation, customUrlProtocol, customizedValidation, i18n, onChange, propertyKey]);\r\n\r\n const onUrlPrefixChanged = useCallback(\r\n (event, newItem) =>\r\n validateAndUpdateUrl(getUpdatedFullUrlOnPrefixUpdate(urlWithoutPrefix, newItem.key)),\r\n [urlWithoutPrefix, validateAndUpdateUrl]\r\n );\r\n\r\n const onCustomUrlProtocolChanged = useCallback(\r\n (event, value) =>\r\n validateAndUpdateUrl(getUpdatedFullUrlOnPrefixUpdate(urlWithoutPrefix, value)),\r\n [urlWithoutPrefix, validateAndUpdateUrl]\r\n );\r\n\r\n const onTextChange = useCallback((event, value) => {\r\n const newValue = getUpdatedFullUrlOnTextUpdate(urlPrefix, value);\r\n\r\n if (newValue) {\r\n validateAndUpdateUrl(getUpdatedFullUrlOnTextUpdate(urlPrefix, value));\r\n }\r\n }, [validateAndUpdateUrl, urlPrefix]);\r\n\r\n useEffect(() => {\r\n if (!url && prepopulateUrl) {\r\n // Prepopulate final url with prepopulate on load if no value is provided.\r\n validateAndUpdateUrl(getUpdatedFullUrlOnTextUpdate(urlPrefix, prepopulateUrl));\r\n } else if (validateOnRender) {\r\n validateAndUpdateUrl(url);\r\n }\r\n // only validate on render and prepopulate on load\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [url]);\r\n\r\n return (\r\n \r\n {\r\n !hideProtocol && customUrlProtocol &&\r\n \r\n }\r\n {\r\n !hideProtocol && !customUrlProtocol &&\r\n \r\n }\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nUrlInputFluent.propTypes = {\r\n containerClassName: PropTypes.string,\r\n url: PropTypes.string.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n onChange: PropTypes.func,\r\n onClick: PropTypes.func,\r\n additionalValidation: PropTypes.func,\r\n customizedValidation: PropTypes.func,\r\n prepopulateUrl: PropTypes.string,\r\n dropdownOptionAriaLabel: PropTypes.string,\r\n propertyKey: PropTypes.string,\r\n validateOnRender: PropTypes.bool,\r\n additionalProperties: PropTypes.shape({}),\r\n textFieldAriaLabel: PropTypes.string.isRequired,\r\n customUrlProtocol: PropTypes.bool,\r\n enableSpecialCharactersValidation: PropTypes.bool,\r\n hideProtocol: PropTypes.bool,\r\n};\r\n\r\nUrlInputFluent.defaultProps = {\r\n onChange: noop,\r\n onClick: noop,\r\n containerClassName: '',\r\n additionalValidation: noop,\r\n customizedValidation: null,\r\n prepopulateUrl: '',\r\n dropdownOptionAriaLabel: '',\r\n propertyKey: '',\r\n validateOnRender: false,\r\n additionalProperties: {},\r\n customUrlProtocol: false,\r\n enableSpecialCharactersValidation: false,\r\n hideProtocol: false,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { getUrlPrefixAndDestination } from './utils';\r\n\r\nexport const withNoProtocol = (WrappedComponent) => {\r\n const URLInputWithNoProtocol = (props) => {\r\n const { url, onChange, ...rest } = props;\r\n\r\n const urlWithProtocol = url ? `https://${url}` : url;\r\n\r\n const onChangeWithProtocol = (errors, currentURL) => {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const [urlPrefix, urlWithoutPrefix] = getUrlPrefixAndDestination(currentURL);\r\n return onChange(errors, urlWithoutPrefix);\r\n };\r\n\r\n return ;\r\n };\r\n\r\n URLInputWithNoProtocol.propTypes = {\r\n url: PropTypes.string.isRequired,\r\n onChange: PropTypes.func.isRequired.isRequired,\r\n };\r\n\r\n return URLInputWithNoProtocol;\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 (date, formattedValue, metricName, name) {pug_html = pug_html + \"\\u003Cdiv class=\\\"tool-tip-container\\\"\\u003E\\u003Cdiv class=\\\"location-name\\\"\\u003E\" + (pug.escape(null == (pug_interp = name) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"date-range\\\"\\u003E\" + (pug.escape(null == (pug_interp = date) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"metric-container\\\"\\u003E\\u003Cdiv class=\\\"bubble-icon\\\"\\u003E\\u003Cdiv class=\\\"dot\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"metric-name\\\"\\u003E\" + (pug.escape(null == (pug_interp = metricName) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"metric-value\\\"\\u003E\" + (pug.escape(null == (pug_interp = formattedValue) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"date\" in locals_for_with?locals_for_with.date:typeof date!==\"undefined\"?date:undefined,\"formattedValue\" in locals_for_with?locals_for_with.formattedValue:typeof formattedValue!==\"undefined\"?formattedValue:undefined,\"metricName\" in locals_for_with?locals_for_with.metricName:typeof metricName!==\"undefined\"?metricName:undefined,\"name\" in locals_for_with?locals_for_with.name:typeof name!==\"undefined\"?name:undefined));;return pug_html;};\nmodule.exports = template;","import _ from 'underscore';\r\n\r\nexport function filterLocationData({ data, granularity, metric }) {\r\n return _.filter(data, item => item[granularity.name] && item[granularity.latitude] && item[granularity.longitude] && item[metric]);\r\n}\r\n","export enum VIEWS {\r\n MAP = 'map-view',\r\n TABLE = 'table-view',\r\n}\r\n\r\nexport const VIEW_STRINGS = {\r\n [VIEWS.MAP]: _TL_('Map'),\r\n [VIEWS.TABLE]: _TL_('List'),\r\n};\r\n\r\nexport const LOCATIONS_PER_PAGE = 5;\r\n\r\nexport const BUBBLE_MAX_RADIUS = 25;\r\nexport const BUBBLE_MIN_RADIUS = 6;\r\n\r\nexport const locationGranularity = {\r\n country: {\r\n name: 'CountryName',\r\n longitude: 'CountryLongitude',\r\n latitude: 'CountryLatitude',\r\n },\r\n county: {\r\n name: 'CountyName',\r\n longitude: 'CountyLongitude',\r\n latitude: 'CountyLatitude',\r\n },\r\n stateOrProvince: {\r\n name: 'StateOrProvince',\r\n longitude: 'SubGeographyLongitude',\r\n latitude: 'SubGeographyLatitude',\r\n },\r\n city: {\r\n name: 'City',\r\n longitude: 'CityLongitude',\r\n latitude: 'CityLatitude',\r\n },\r\n postalCode: {\r\n name: 'PostalCode',\r\n longitude: 'PostalCodeLongitude',\r\n latitude: 'PostalCodeLatitude',\r\n },\r\n};\r\n\r\nexport const METRIC_STRINGS = {\r\n Clicks: _TL_('Clicks'),\r\n Impressions: _TL_('Impr.'),\r\n CTR: _TL_('CTR'),\r\n AverageCPC: _TL_('Avg. CPC'),\r\n Spend: _TL_('Spend'),\r\n TopImpressionRatePercent: _TL_('Top impr. rate'),\r\n AbsoluteTopImpressionRatePercent: _TL_('Abs. top impr. rate'),\r\n ConversionsCredit: _TL_('Conv.'),\r\n PartialConversionRate: _TL_('Conv. rate'),\r\n PartialConversionCPA: _TL_('CPA'),\r\n AdvertiserReportedRevenue: _TL_('Revenue'),\r\n RevenueOnAdSpend: _TL_('Revenue on ad spend'),\r\n};\r\n\r\nexport const METRIC_FULL_STRINGS = {\r\n Clicks: _TL_('Clicks'),\r\n Impressions: _TL_('Impressions'),\r\n CTR: _TL_('CTR'),\r\n AverageCPC: _TL_('Average CPC'),\r\n Spend: _TL_('Spend'),\r\n TopImpressionRatePercent: _TL_('Top impression rate'),\r\n AbsoluteTopImpressionRatePercent: _TL_('Absolute top impression rate'),\r\n ConversionsCredit: _TL_('Conversions'),\r\n PartialConversionRate: _TL_('Conversion rate'),\r\n PartialConversionCPA: _TL_('CPA'),\r\n AdvertiserReportedRevenue: _TL_('Revenue'),\r\n RevenueOnAdSpend: _TL_('Revenue on ad spend'),\r\n};\r\n","import _ from 'underscore';\r\nimport { formatMetric } from '@bingads-webui-campaign-legacy/performance-metric-formatter/index';\r\n\r\nimport { LocationData } from './types';\r\nimport { BUBBLE_MAX_RADIUS, BUBBLE_MIN_RADIUS, METRIC_STRINGS } from './const';\r\n\r\nconst bubbleColorForVNext = '#107C10';\r\nconst bubbleStrokeWidth = 1;\r\nconst fillOpacityRegular = 0.5;\r\n// const fillOpacityHighlight = 1;\r\n\r\nfunction getPushPinIcon({\r\n radius,\r\n fillOpacity,\r\n}) {\r\n const strokeColor = bubbleColorForVNext;\r\n const fillColor = bubbleColorForVNext;\r\n const strokeWidth = bubbleStrokeWidth;\r\n\r\n return `\r\n \r\n \r\n `;\r\n}\r\n\r\nfunction createPushpinOption({ locationInfo }) {\r\n const {\r\n location, radius,\r\n } = locationInfo;\r\n\r\n const svg = getPushPinIcon({\r\n radius,\r\n fillOpacity: fillOpacityRegular,\r\n });\r\n // TODO: we will need this when we hook up with table view\r\n // const svgHighlight = getPushPinIcon({\r\n // radius,\r\n // fillOpacity: fillOpacityHighlight,\r\n // });\r\n\r\n return {\r\n location,\r\n // svgHighlight,\r\n svg,\r\n options: {\r\n anchor: { x: radius, y: radius },\r\n roundClickableArea: true,\r\n },\r\n };\r\n}\r\n\r\nconst customPushpinBuilder = pinOption => ({\r\n Maps,\r\n}) => {\r\n const location = new Maps.Location(pinOption.location.Latitude, pinOption.location.Longitude);\r\n const pin = new Maps.Pushpin(location, _.extend(pinOption.options, {\r\n anchor: new Maps.Point(pinOption.options.anchor.x, pinOption.options.anchor.y),\r\n }, { icon: pinOption.svg }));\r\n\r\n return pin;\r\n};\r\n\r\nexport function formatLocationData({\r\n locationData, granularity, metric, dateRange, i18n,\r\n}): LocationData[] {\r\n const maxValue = Math.abs(_.max(locationData, item => Math.abs(item[metric]))[metric]);\r\n return _.chain(locationData).sortBy(item => -item[metric]).map((item) => {\r\n const formattedValue: string = formatMetric(metric, item[metric]);\r\n const metricName: string = i18n.getString(METRIC_STRINGS[metric]);\r\n const location: { Latitude: string, Longitude: string } = { Latitude: item[granularity.latitude], Longitude: item[granularity.longitude] };\r\n const name: string = item[granularity.name];\r\n const radius: number = Math.max((item[metric] * BUBBLE_MAX_RADIUS) / maxValue, BUBBLE_MIN_RADIUS);\r\n\r\n const pushpinOption = createPushpinOption({\r\n locationInfo: {\r\n location,\r\n radius,\r\n },\r\n });\r\n const getCustomPushpin = customPushpinBuilder(pushpinOption);\r\n\r\n return {\r\n location,\r\n radius: Math.max((item[metric] * BUBBLE_MAX_RADIUS) / maxValue, BUBBLE_MIN_RADIUS),\r\n value: item[metric] as number,\r\n metricName,\r\n date: `${i18n.formatDate(dateRange.start)} - ${i18n.formatDate(dateRange.end)}`,\r\n name,\r\n formattedValue,\r\n getCustomPushpin,\r\n };\r\n })\r\n .first(10)\r\n .value();\r\n}\r\n","import _ from 'underscore';\r\nimport { useContext, useEffect, useState, useCallback } from 'react';\r\n\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\n\r\nimport { fetchLocationData } from './fetch-location-data';\r\nimport { isUSorCanada } from '../utils/is-us-or-canada';\r\nimport { filterLocationData } from '../utils/filter-location-data';\r\nimport { formatLocationData } from '../utils/format-location-data';\r\nimport { IScopeContext, LocationData } from '../utils/types';\r\nimport { locationGranularity } from '../utils/const';\r\n\r\nexport const useTopLocationsData = ({\r\n metric,\r\n dateRange,\r\n i18n,\r\n willFetchData,\r\n willRender,\r\n}) => {\r\n const { scope } = useContext(ScopeContext) as IScopeContext;\r\n const {\r\n values: {\r\n cid,\r\n aid,\r\n campaignId,\r\n },\r\n } = scope;\r\n\r\n const [locations, setLocations] = useState();\r\n const [isLoading, setIsLoading] = useState(true);\r\n\r\n const setTopLocationValues = useCallback((locationData, granularity) => {\r\n setLocations(formatLocationData({\r\n locationData, granularity, metric, dateRange, i18n,\r\n }));\r\n setIsLoading(false);\r\n willRender();\r\n }, [dateRange, i18n, metric, willRender]);\r\n\r\n useEffect(() => {\r\n setIsLoading(true);\r\n const {\r\n fetchCountryData,\r\n fetchStateOrProvinceData,\r\n fetchCountyData,\r\n fetchCityData,\r\n fetchPostalCodeData,\r\n } = fetchLocationData({\r\n cid, aid, campaignId, dateRange, metric,\r\n });\r\n willFetchData();\r\n fetchCountryData.then((countryData) => {\r\n const countryLocationData = filterLocationData({ data: countryData?.value, granularity: locationGranularity.country, metric });\r\n if (_.isEmpty(countryLocationData)) {\r\n setTopLocationValues([], locationGranularity.country);\r\n return;\r\n }\r\n if (_.size(countryLocationData) > 1 && !isUSorCanada(countryLocationData)) {\r\n setTopLocationValues(countryLocationData, locationGranularity.country);\r\n return;\r\n }\r\n\r\n fetchStateOrProvinceData.then((stateOrProvinceData) => {\r\n const stateOrProvinceLocationData = filterLocationData({ data: stateOrProvinceData?.value, granularity: locationGranularity.stateOrProvince, metric });\r\n if (_.size(stateOrProvinceLocationData) > 1) {\r\n setTopLocationValues(stateOrProvinceLocationData, locationGranularity.stateOrProvince);\r\n return;\r\n }\r\n fetchCountyData.then((countyData) => {\r\n const countyLocationData = filterLocationData({ data: countyData?.value, granularity: locationGranularity.county, metric });\r\n if (_.size(countyLocationData) > 1) {\r\n setTopLocationValues(countyLocationData, locationGranularity.county);\r\n return;\r\n }\r\n fetchCityData.then((cityData) => {\r\n const cityLocationData = filterLocationData({ data: cityData?.value, granularity: locationGranularity.city, metric });\r\n\r\n if (_.size(cityLocationData) > 1) {\r\n setTopLocationValues(cityLocationData, locationGranularity.city);\r\n return;\r\n }\r\n fetchPostalCodeData.then((postalCodeData) => {\r\n const postalCodeLocationData = filterLocationData({ data: postalCodeData?.value, granularity: locationGranularity.postalCode, metric });\r\n if (_.isEmpty(postalCodeLocationData)) {\r\n // We can have less data when we drill down the granularity, since we might not have enough granularity for particular data.\r\n // In this case, we just go upper granularities until we find one with data.\r\n if (!_.isEmpty(cityLocationData)) {\r\n setTopLocationValues(cityLocationData, locationGranularity.city);\r\n return;\r\n }\r\n if (!_.isEmpty(countyLocationData)) {\r\n setTopLocationValues(countyLocationData, locationGranularity.county);\r\n return;\r\n }\r\n if (!_.isEmpty(stateOrProvinceLocationData)) {\r\n setTopLocationValues(stateOrProvinceLocationData, locationGranularity.stateOrProvince);\r\n return;\r\n }\r\n setTopLocationValues(countryLocationData, locationGranularity.country);\r\n return;\r\n }\r\n setTopLocationValues(postalCodeLocationData, locationGranularity.postalCode);\r\n });\r\n });\r\n });\r\n });\r\n });\r\n }, [aid, campaignId, cid, dateRange, metric, setTopLocationValues, willFetchData]);\r\n\r\n return { isLoading, locations };\r\n};\r\n","import {\r\n fetchCountryData,\r\n fetchStateOrProvinceData,\r\n fetchCountyData,\r\n fetchCityData,\r\n fetchPostalCodeData,\r\n} from '@bingads-webui-campaign/overview-cards-common';\r\n\r\nexport function fetchLocationData({\r\n cid, aid, campaignId, dateRange, metric,\r\n}) {\r\n const countryData = fetchCountryData({\r\n cid, aid, campaignId, dateRange, metric,\r\n });\r\n\r\n const stateOrProvinceData = fetchStateOrProvinceData({\r\n cid, aid, campaignId, dateRange, metric,\r\n });\r\n\r\n const countyData = fetchCountyData({\r\n cid, aid, campaignId, dateRange, metric,\r\n });\r\n\r\n const cityData = fetchCityData({\r\n cid, aid, campaignId, dateRange, metric,\r\n });\r\n\r\n const postalCodeData = fetchPostalCodeData({\r\n cid, aid, campaignId, dateRange, metric,\r\n });\r\n\r\n return {\r\n fetchCountryData: countryData,\r\n fetchStateOrProvinceData: stateOrProvinceData,\r\n fetchCountyData: countyData,\r\n fetchCityData: cityData,\r\n fetchPostalCodeData: postalCodeData,\r\n };\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport function isUSorCanada(countryLocationData) {\r\n if (_.size(countryLocationData) !== 2) {\r\n return false;\r\n }\r\n\r\n return _.every(countryLocationData, (country: any) =>\r\n (country.CountryLatitude > 62 && country.CountryLatitude < 64 && country.CountryLongitude > -97 && country.CountryLongitude < -95) ||// Canada\r\n (country.CountryLatitude > 39 && country.CountryLatitude < 41 && country.CountryLongitude > -100 && country.CountryLongitude < -98));// US\r\n}\r\n","import { makeStyles, tokens, shorthands } from '@fluentui/react-components';\r\n\r\nexport const useMetricSelectorStyles = makeStyles({\r\n container: {\r\n alignSelf: 'flex-end',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n iconContainer: {\r\n width: '12px',\r\n height: '12px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n ...shorthands.borderRadius('6px'),\r\n ...shorthands.borderStyle('solid'),\r\n ...shorthands.borderWidth('1px'),\r\n ...shorthands.borderColor(tokens.colorPaletteGreenBackground2),\r\n marginRight: '5px',\r\n justifyContent: 'center',\r\n },\r\n icon: {\r\n width: '4px',\r\n height: '4px',\r\n ...shorthands.borderRadius('4px'),\r\n ...shorthands.borderStyle('solid'),\r\n ...shorthands.borderWidth('2px'),\r\n ...shorthands.borderColor(tokens.colorStatusSuccessForeground1),\r\n backgroundColor: tokens.colorStatusSuccessForeground1,\r\n },\r\n button: {\r\n paddingTop: 0,\r\n paddingLeft: '5px',\r\n paddingRight: '0px',\r\n paddingBottom: '0px',\r\n width: 'fit-content',\r\n },\r\n buttonText: {\r\n ...shorthands.overflow('hidden'),\r\n lineBreak: 'anywhere',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n});\r\n\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport {\r\n Menu,\r\n MenuButton,\r\n MenuPopover,\r\n MenuList,\r\n MenuItem,\r\n MenuTrigger,\r\n Body1 as Text,\r\n Tooltip,\r\n} from '@fluentui/react-components';\r\nimport { METRIC_OPTIONS } from '@bingads-webui-campaign-react/top-locations-card-const';\r\n\r\nimport { useMetricSelectorStyles } from '../styles/metric-selector-styles';\r\nimport { MetricSelectorProps } from '../utils/types';\r\nimport { METRIC_STRINGS, METRIC_FULL_STRINGS } from '../utils/const';\r\n\r\nexport function MetricSelector({\r\n metric,\r\n onMetricChange,\r\n i18n,\r\n}: MetricSelectorProps) {\r\n const styles = useMetricSelectorStyles();\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n {i18n.getString(METRIC_STRINGS[metric])}\r\n \r\n \r\n \r\n \r\n \r\n {METRIC_OPTIONS.map(option => ( onMetricChange(option)}>{i18n.getString(METRIC_STRINGS[option])}))}\r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n","import { makeStyles } from '@fluentui/react-components';\r\n\r\nexport const useFooterStyles = makeStyles({\r\n footer: {\r\n marginTop: '12px',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n },\r\n});\r\n\r\n","import classNames from 'classnames';\r\nimport React, { useCallback, useContext } from 'react';\r\nimport { Button } from '@fluentui/react-components';\r\nimport { ChevronLeftRegular, ChevronRightRegular } from '@fluentui/react-icons';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\n\r\nimport { useFooterStyles } from '../styles/footer-styles';\r\nimport { IScopeContext, FooterProps } from '../utils/types';\r\n\r\nexport function Footer({\r\n showPagination,\r\n paginationConfig,\r\n i18n,\r\n campaignType,\r\n}: FooterProps) {\r\n const styles = useFooterStyles();\r\n const { scope } = useContext(ScopeContext) as IScopeContext;\r\n const {\r\n current, total, onNext, onPrevious,\r\n } = paginationConfig;\r\n\r\n const onClick = useCallback(() => {\r\n let path = '/campaign/vnext/locations/campaign';\r\n // LinkedIn campaigns don't support campaign locations grid so far, so route user to campaign settings page\r\n if (campaignType === 'LinkedIn') {\r\n path = '/campaign/vnext/settings';\r\n }\r\n scope.save(path);\r\n }, [campaignType, scope]);\r\n\r\n return (\r\n
\r\n \r\n {showPagination &&\r\n
\r\n
\r\n }\r\n
\r\n );\r\n}\r\n","import { makeStyles } from '@fluentui/react-components';\r\n\r\nexport const useNoLocationsStyles = makeStyles({\r\n container: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n flexGrow: 1,\r\n },\r\n imageContainer: {\r\n flexGrow: 1,\r\n flexBasis: '0',\r\n maxHeight: '210px',\r\n width: '100%',\r\n overflowY: 'hidden',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n display: 'flex',\r\n backgroundColor: '#FAFAFA',\r\n },\r\n image: {\r\n maxHeight: '148px',\r\n },\r\n title: {\r\n marginTop: '16px',\r\n },\r\n});\r\n\r\n","import classNames from 'classnames';\r\nimport React from 'react';\r\nimport { Image, Subtitle2, Body1 } from '@fluentui/react-components';\r\n\r\nimport { useNoLocationsStyles } from '../styles/no-locations-styles';\r\nimport { i18nProps } from '../utils/types';\r\nimport noDataImage from '../../media/no-data-image.png';\r\n\r\nexport function NoData({ i18n }: { i18n: i18nProps }) {\r\n const styles = useNoLocationsStyles();\r\n return (\r\n
\r\n
\r\n {i18n.getString(_TL_('No\r\n
\r\n {i18n.getString(_TL_('No data available'))}\r\n {i18n.getString(_TL_('To update the tile, select a different date range. If the tile remains blank, your account might have no data.'))}\r\n
\r\n );\r\n}\r\n","import React from 'react';\r\nimport { Shimmer, ShimmerElementType } from '@fluentui/react';\r\n\r\nconst rowElement = [{ type: ShimmerElementType.line, height: 43 }];\r\nconst mapElement = [{ type: ShimmerElementType.line, height: 240 }];\r\n\r\nexport function TableShimmer() {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport function MapShimmer() {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n","import { makeStyles } from '@fluentui/react-components';\r\n\r\nexport const useTableStyles = makeStyles({\r\n value: {\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n },\r\n});\r\n\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport {\r\n Table, TableCell, TableRow, TableBody, Body1 as Text\r\n} from '@fluentui/react-components';\r\n\r\nimport { TableShimmer } from './shimmer';\r\nimport { LOCATIONS_PER_PAGE } from '../utils/const';\r\nimport { getPageLocations } from '../utils/get-page-locations';\r\nimport { TopLocationsTableProps } from '../utils/types';\r\nimport { useTableStyles } from '../styles/table-styles';\r\n\r\nexport function TopLocationsTable({\r\n i18n,\r\n isLoading,\r\n locations,\r\n paginationConfig,\r\n}: TopLocationsTableProps) {\r\n const styles = useTableStyles();\r\n if (isLoading) {\r\n return ;\r\n }\r\n const rowsToDisplay = getPageLocations(locations, paginationConfig, LOCATIONS_PER_PAGE);\r\n return (\r\n \r\n \r\n {rowsToDisplay.map(({ name, formattedValue }) => (\r\n \r\n \r\n {name}\r\n \r\n \r\n {formattedValue}\r\n \r\n \r\n ))}\r\n \r\n
\r\n );\r\n}\r\n","import { PaginationConfigProps, LocationData } from './types';\r\n\r\nexport function getPageLocations(locations: LocationData[], paginationConfig: PaginationConfigProps, locationsPerPage: number) {\r\n return locations.slice((paginationConfig.current - 1) * locationsPerPage, paginationConfig.current * locationsPerPage);\r\n}\r\n","import { makeStyles, shorthands } from '@fluentui/react-components';\r\n\r\nexport const useMapStyles = makeStyles({\r\n container: {\r\n height: '240px',\r\n width: '100%',\r\n '& .tool-tip-container': {\r\n ...shorthands.padding('15px'),\r\n boxShadow: '0 3.2px 7.2px 0 rgba(0,0,0,.132), 0 0.6px 1.8px 0 rgba(0,0,0,.108)',\r\n backgroundColor: 'rgba(255, 255, 255, 0.95)',\r\n '@supports (backdrop-filter: blur(60px))': {\r\n backdropFilter: 'blur(60px)',\r\n backgroundColor: 'rgba(255, 255, 255, 0.25)',\r\n },\r\n\r\n '& .date-range': {\r\n whiteSpace: 'nowrap',\r\n ...shorthands.margin('10px 0'),\r\n },\r\n '& .metric-container': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n '& .metric-container .metric-name': {\r\n marginRight: '5px',\r\n },\r\n '& .metric-container .metric-value': {\r\n fontWeight: 'bold',\r\n },\r\n '& .bubble-icon': {\r\n width: '12px',\r\n height: '12px',\r\n ...shorthands.borderStyle('solid'),\r\n ...shorthands.borderWidth('1px'),\r\n ...shorthands.borderColor('#107C10'),\r\n ...shorthands.borderRadius('6px'),\r\n marginRight: '5px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n '& .bubble-icon .dot': {\r\n width: '4px',\r\n height: '4px',\r\n ...shorthands.borderStyle('solid'),\r\n ...shorthands.borderWidth('2px'),\r\n ...shorthands.borderColor('#107C10'),\r\n ...shorthands.borderRadius('4px'),\r\n backgroundColor: '#107C10',\r\n },\r\n },\r\n },\r\n});\r\n\r\n","import React, { useRef, useMemo, useCallback } from 'react';\r\nimport { BingMapsView, LocationTarget, TARGETING_TYPE } from '@bingads-webui-react/bing-maps';\r\n\r\n// @ts-ignore\r\nimport tooltip from './map-tooltip.pug';\r\nimport { MapShimmer } from './shimmer';\r\nimport { TopLocationsMapProps, LocationData } from '../utils/types';\r\nimport { useMapStyles } from '../styles/map-styles';\r\n\r\nclass TopLocationTarget extends LocationTarget {\r\n topLocation: LocationData;\r\n\r\n constructor(topLocation: LocationData) {\r\n const location = {\r\n GeoPoint: topLocation.location,\r\n ExpandedName: topLocation.name,\r\n };\r\n super(location, TARGETING_TYPE.Top, topLocation.radius, 'mi');\r\n this.topLocation = topLocation;\r\n }\r\n}\r\n\r\nexport function TopLocationsMap({\r\n isLoading,\r\n locations,\r\n}: TopLocationsMapProps) {\r\n const styles = useMapStyles();\r\n const mapRef = useRef();\r\n\r\n const locationTargets = useMemo(() => {\r\n if (locations) {\r\n return locations.map(l => new TopLocationTarget(l));\r\n }\r\n return [];\r\n }, [locations]);\r\n\r\n const onGetTooltipHtmlContent = useCallback((event, locationTarget) => tooltip({\r\n name: locationTarget.topLocation.name,\r\n metricName: `${locationTarget.topLocation.metricName}:`,\r\n formattedValue: locationTarget.topLocation.formattedValue,\r\n date: locationTarget.topLocation.date,\r\n }), []);\r\n\r\n if (isLoading) {\r\n return ;\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n","import _ from 'underscore';\r\nimport { useState, useEffect, useMemo } from 'react';\r\n\r\nimport { LOCATIONS_PER_PAGE } from '../utils/const';\r\nimport { LocationData, paginationConfigProps } from '../utils/types';\r\n\r\nexport const usePaginationConfig = (locations: Array): paginationConfigProps => {\r\n const [state, setState] = useState({ current: 0, total: 0 });\r\n\r\n useEffect(() => {\r\n if (!_.isEmpty(locations)) {\r\n setState({\r\n current: 1,\r\n total: Math.ceil(locations.length / LOCATIONS_PER_PAGE),\r\n });\r\n }\r\n }, [locations]);\r\n\r\n return useMemo(() => {\r\n const next = state.current + 1;\r\n let onNext: () => void = _.noop;\r\n if (next <= state.total) {\r\n onNext = () => setState({ ...state, current: next });\r\n }\r\n\r\n const previous = state.current - 1;\r\n let onPrevious: () => void = _.noop;\r\n if (previous > 0) {\r\n onPrevious = () => setState({ ...state, current: previous });\r\n }\r\n\r\n return ({\r\n current: state.current,\r\n total: state.total,\r\n onNext,\r\n onPrevious,\r\n });\r\n }, [state]);\r\n};\r\n","import _ from 'underscore';\r\nimport React, { ComponentType, useState, useCallback, useContext } from 'react';\r\nimport { PreferenceContext } from '@bingads-webui-react/preference-context';\r\n\r\nimport { TopLocationsCardProps } from '../utils/types';\r\n\r\nconst cardId = 'CardType-TopLocations';\r\n\r\ntype WithMetricProps = {\r\n preferenceFromServer?: string;\r\n patchPreference?: Function;\r\n} & TopLocationsCardProps;\r\n\r\nexport function withPMaxPreferencesMetric

(WrappedComponent: ComponentType

): ComponentType> {\r\n const HoC = (props) => {\r\n const {\r\n preferenceFromServer,\r\n patchPreference,\r\n } = props;\r\n const preferenceService = useContext(PreferenceContext) as any;\r\n const preferences = preferenceService.findByName('dashboard/preferences');\r\n const cardPreferences = preferences?.Data?.['default-campaign-performancemax']?.cards || [];\r\n const currentCardPreferences: any = _.find(cardPreferences, (card: any) => card.id === cardId);\r\n const initMetric = currentCardPreferences?.options?.metric ?? 'Clicks';\r\n const [metric, setMetric] = useState(preferenceFromServer || initMetric);\r\n\r\n const onMetricChange = useCallback((newMetric: string) => {\r\n setMetric(newMetric);\r\n\r\n if (patchPreference) {\r\n patchPreference({ metric: newMetric });\r\n return;\r\n }\r\n\r\n let cards;\r\n if (!_.find(cardPreferences, (card: any) => card.id === cardId)) {\r\n cards = [...cardPreferences, { id: cardId, options: { metric: newMetric } }];\r\n } else {\r\n cards = cardPreferences.map((card) => {\r\n if (card.id === cardId) {\r\n return {\r\n ...card,\r\n options: {\r\n ...card.options,\r\n metric: newMetric,\r\n },\r\n };\r\n }\r\n return card;\r\n });\r\n }\r\n const preferencesData = preferences?.Data || {};\r\n preferenceService.set({\r\n Name: 'dashboard/preferences',\r\n ...preferences,\r\n Data: {\r\n ...preferencesData,\r\n 'default-campaign-performancemax': {\r\n ...preferencesData['default-campaign-performancemax'],\r\n cards,\r\n },\r\n },\r\n });\r\n }, [cardPreferences, patchPreference, preferenceService, preferences]);\r\n\r\n return ();\r\n };\r\n\r\n return HoC;\r\n}\r\n","import { makeStyles } from '@fluentui/react-components';\r\n\r\nexport const useCardStyles = makeStyles({\r\n container: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'space-between',\r\n height: '100%',\r\n },\r\n wideContainer: {\r\n display: 'flex',\r\n },\r\n wideContentWrapper: {\r\n width: '50%',\r\n },\r\n footer: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n },\r\n});\r\n\r\n","import classNames from 'classnames';\r\nimport React, { useMemo, useEffect } from 'react';\r\nimport { withHeaderState } from '@bingads-webui-campaign-react/overview-card';\r\n\r\nimport { useTopLocationsData } from './use-top-locations-data';\r\nimport { MetricSelector } from './metric-selector';\r\nimport { Footer } from './footer';\r\nimport { NoData } from './no-data';\r\nimport { TopLocationsTable } from './top-locations-table';\r\nimport { TopLocationsMap } from './top-locations-map';\r\nimport { usePaginationConfig } from './use-pagination-config';\r\nimport { withPMaxPreferencesMetric } from './with-preferences-metric';\r\nimport { withBingMapsContext } from './with-bing-maps-context';\r\nimport { useCardStyles } from '../styles/card-styles';\r\nimport { VIEWS } from '../utils/const';\r\nimport { TopLocationsCardProps } from '../utils/types';\r\n\r\n\r\nexport function TopLocationsCardInternal({\r\n headerState,\r\n i18n,\r\n dateRange,\r\n metric,\r\n onMetricChange,\r\n perfMarkerUtils,\r\n campaignType,\r\n}: TopLocationsCardProps) {\r\n const styles = useCardStyles();\r\n const {\r\n willFetchData,\r\n willRender,\r\n done,\r\n } = perfMarkerUtils;\r\n const { isLoading, locations } = useTopLocationsData({\r\n metric,\r\n dateRange,\r\n i18n,\r\n willFetchData,\r\n willRender,\r\n });\r\n const paginationConfig = usePaginationConfig(locations);\r\n const hasLocations = locations?.length > 0;\r\n\r\n useEffect(() => {\r\n if (!isLoading) {\r\n done();\r\n }\r\n }, [done, isLoading, willRender]);\r\n\r\n const contentArea = useMemo(() => {\r\n if (!hasLocations && !isLoading) {\r\n return ;\r\n }\r\n if (headerState?.isWideMode) {\r\n return (\r\n

\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n if (headerState?.viewOption === VIEWS.MAP) {\r\n return ;\r\n }\r\n return ;\r\n }, [hasLocations, isLoading, headerState, i18n, locations, paginationConfig, styles]);\r\n\r\n\r\n const showPagination = hasLocations && !isLoading && (headerState?.isWideMode || headerState?.viewOption === VIEWS.TABLE);\r\n\r\n return (\r\n
\r\n \r\n {contentArea}\r\n \r\n
\r\n );\r\n}\r\n\r\nexport const TopLocationsCard = withPMaxPreferencesMetric(withBingMapsContext(withHeaderState(TopLocationsCardInternal)));\r\n","import React, { useContext } from 'react';\r\nimport hoistNonReactStatics from 'hoist-non-react-statics';\r\n\r\nimport { getDisplayName } from '@bingads-webui-react/hoc-utils';\r\nimport { BingMapsContextProvider } from '@bingads-webui-react/bing-maps';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\n\r\n// TODO: Send this in serverContext\r\nconst BING_MAPS_API_KEY = 'AgRuCtepgsuuCYV9J6S6w1j8ay2JJwnu8f5EPgv4kkoJoIuka8yui-NzKrvlESTQ';\r\n\r\nexport function withBingMapsContext(WrappedComponent) {\r\n const HOC = (props) => {\r\n const serverContext = useContext(ServerContext) as any;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n };\r\n\r\n HOC.displayName = `withBingMapsContext(${getDisplayName(WrappedComponent)})`;\r\n\r\n hoistNonReactStatics(HOC, WrappedComponent);\r\n\r\n return HOC;\r\n}\r\n","import { makeStyles, shorthands } from '@fluentui/react-components';\r\n\r\nexport const useViewSelectorStyles = makeStyles({\r\n container: {\r\n maxWidth: '300px',\r\n display: 'flex',\r\n flexGrow: '0',\r\n justifyContent: 'flex-end',\r\n ...shorthands.gap('5px'),\r\n },\r\n button: {\r\n width: 'fit-content',\r\n minWidth: 'auto',\r\n ...shorthands.padding('0px'),\r\n },\r\n buttonText: {\r\n ...shorthands.overflow('hidden'),\r\n lineBreak: 'anywhere',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n});\r\n","import React, { useCallback, useEffect } from 'react';\r\nimport classNames from 'classnames';\r\nimport {\r\n Menu,\r\n MenuButton,\r\n MenuPopover,\r\n MenuList,\r\n MenuItem,\r\n MenuTrigger,\r\n Caption1 as Text\r\n} from '@fluentui/react-components';\r\n\r\nimport { useViewSelectorStyles } from '../styles/view-selector-styles';\r\nimport { VIEWS, VIEW_STRINGS } from '../utils/const';\r\nimport { TopLocationViewSelectorProps } from '../utils/types';\r\n\r\nconst WIDE_MODE_WIDTH = 500;\r\n\r\nexport function TopLocationViewSelector({\r\n i18n,\r\n state,\r\n setState,\r\n dimensions,\r\n}: TopLocationViewSelectorProps) {\r\n const styles = useViewSelectorStyles();\r\n\r\n useEffect(() => {\r\n if (!state) {\r\n setState({\r\n viewOption: VIEWS.MAP,\r\n });\r\n }\r\n }, [state, setState]);\r\n\r\n useEffect(() => {\r\n const isWideMode = dimensions?.width > WIDE_MODE_WIDTH;\r\n if (state?.isWideMode !== isWideMode) {\r\n setState(s => ({\r\n ...s,\r\n isWideMode,\r\n }));\r\n }\r\n }, [setState, state, dimensions]);\r\n\r\n const onViewSelected = useCallback((viewOption: VIEWS) => {\r\n setState(s => ({\r\n ...s,\r\n viewOption,\r\n }));\r\n }, [setState]);\r\n\r\n if (!state || state?.isWideMode) {\r\n return <>;\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n {i18n.getString(_TL_('View:'))} {i18n.getString(VIEW_STRINGS[state.viewOption] ?? _TL_(''))}\r\n \r\n \r\n \r\n \r\n onViewSelected(VIEWS.MAP)}>{i18n.getString(VIEW_STRINGS[VIEWS.MAP])}\r\n onViewSelected(VIEWS.TABLE)}>{i18n.getString(VIEW_STRINGS[VIEWS.TABLE])}\r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nTopLocationViewSelector.defaultProps = {\r\n state: undefined,\r\n};\r\n"],"names":["bulkEditStyle","_ref","_ref$palette","palette","overflowY","margin","maxHeight","display","minWidth","width","border","maxWidth","fontWeight","textAlign","marginLeft","marginRight","paddingLeft","_objectSpread","marginBottom","underlineLinkStyle","upgradedUrlOverrideStyle","alignItems","whiteSpace","height","fontFamily","content","cursor","getAutomatedRulesStyles","semanticColors","background","concat","neutralPrimaryAlt","themePrimary","themeDark","neutralSecondary","red","color","fontSize","position","float","top","right","lineHeight","neutralPrimary","padding","marginTop","neutralLight","borderTop","verticalAlign","paddingTop","W","M","appearance","backgroundClip","themeDarkAlt","backgroundColor","borderRadius","bodyBackground","paddingBottom","getBulkEditOverrideStyle","_ref$iconFontFamily","iconFontFamily","fontStyle","borderLeft","borderRight","borderColor","neutralLighter","redDark","adColumnPreviewStyle","paddingRight","wordBreak","neutralTertiary","boxShadow","bottom","paddingInline","getInlineDownloadStyle","sharedStyle","pasteStyle","left","columnChooserStyle","ComponentSettings","getColumnChooserOverrideStyle","filterEditorStyle","getFilterEditorOverrideStyle","getTopGridPanelCommonStyle","TopGridPanelUnStyled","_React$PureComponent","props","_this","_classCallCheck","_callSuper","rootRef","React","_inherits","_createClass","key","value","this","current","tabbableNode","filter","getTabbableNodes","item","$","is","length","focus","preventScroll","addDataFocus","panelContent","_this$props","panelView","customClasses","classes","_jsx","BackboneInstanceWrapper","managed","instance","id","ref","className","classNames","topGridPanelCustomStyles","topGridPanelDefaultStyles","children","defaultProps","TopGridPanel","withDefaultStyles","_","_ref$semanticColors","_ref$spacing","spacing","Object","assign","zIndex","outline","datePickerStyle","style","mergeStyles","CustomComponent","Renderer","renderProps","dynamicProps","_objectWithoutProperties","_excluded","withCustomRendering","Component","CustomRenderingWrapper","_Fragment","ActionButton","label","iconName","iconStyles","ariaLabel","onClick","rest","i18n","useContext","I18nContext","buttonIcon","styles","root","DefaultButton","iconProps","getString","ActionButtonWrapped","headerStyles","borderStyle","borderWidth","headerStackStyles","titleStyles","Header","title","actionButton","actionButtonDynamic","as","_jsxs","Stack","horizontal","horizontalAlign","Text","HeaderWrapped","panelStyles","panelContentStyles","Panel","header","headerDynamic","MessageBar","text","FluentMessageBar","rendererProps","MessageBarWrapped","labelStyles","PropertyLabelWrapped","dataStyles","overflow","PropertyDataWrapped","PropertyRow","propertyLabel","propertyLabelDynamic","propertyData","propertyDataDynamic","disableShrink","PropertyLabel","PropertyData","dividerStyles","componentTypes","FluentText","panel","data","generateComponents","registrationMap","schema","customComponentTypes","separatorStyles","unrenderedComponents","c","isRendered","componentsToRenderSchema","apply","_toConsumableArray","schemaComponents","selectedComponentTypes","schemaComponent","commonSchemaStyles","numberOfComponents","field","params","type","separatorStylesForComponent","componentStyles","componentClassName","getDirectlyDefinedDynamicProperties","componentsSchema","components","build","propertiesSchema","dynamicProperties","directlyDefinedComponentDynamicProperties","schemaBasedComponentDynamicProperties","childComponentsDynamicProperties","componentDynamicProperties","dynamicallyHideComponent","componentStylesWithDynamics","GeneratedUI","selectComponentType","dynamicComponentBuilders","useMemo","componentBuilder","propTypes","PropTypes","isRequired","buildDefaultDataProperty","baselineProperty","withAutoRotate","CarouselLayout","enableAutoRotate","permissions","autoRotate","isPlayPausePreviewImageEnabled","AdPreviewCarouselLayoutWrapper","AdPreviewCarouselLayout","AdPreviewCarouselLayoutWrapperEx","AdPreviewCarouselLayoutEx","withCMUITheme","withTheme","UAPMediaPlacementType","MediaPlacementTypeToPlacementTypeMap","_MediaPlacementTypeTo","_defineProperty","EPT","MMA_WideImage_4x1","MMA_LandscapeImage_191x100","MMA_SquareImage_1x1","MMA_VerticalImage_1x2","Audience_Network_WideImage_191x100","MsanV2_MSAN_River_191x100","Microsoft_Edge_Single_Carousel_178x100","undefined","MsanV2_MSN_Carousel_169x100","PMax_MMAV2_MSN_Single_Carousel_169x100","MSN_InArticle_Ad_150x100","MSN_Small_Headline_133x100","Audience_Network_SquareImage_1x1","MsanV2_Microsoft_Edge_Mobile_1x1","MsanV2_Microsoft_Edge_Carouse_l201x100","PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100","MsanV2_MSAN_Banner_2x1","MsanV2_MSN_Partner_Stripe_153x100","PMax_MMAV2_MSN_Partner_Stripe_153x100","MsanV2_MSN_Restoday_124x100","PMax_MMAV2_MSN_Restoday_124x100","MsanV2_MSAN_Rectangle_120x100","ImgExt_Audience_Network_WideImage_191x100","ImgExt_Microsoft_Edge_Single_Carousel_178x100","ImgExt_Bing_Desktop_SingleImage_Extension_178x100","ImgExt_Microsoft_Edge_Medium_Headline_172x100","ImgExt_MSN_Single_Carousel_169x100","ImgExt_MSN_Medium_Headline_155x100","ImgExt_MSN_InArticle_Ad_150x100","ImgExt_MSN_Small_Headline_133x100","ImgExt_Bing_Desktop_MultiImage_Extension_133x100","ImgExt_Bing_Mobile_MultiImage_Extension_133x100","ImgExt_Audience_Network_SquareImage_1x1","ImgExt_MSN_Double_Carousel_93x100","PMax_Audience_Network_WideImage_191x100","PMax_MMA_LandscapeImage_191x100","PMax_Audience_Network_SquareImage_1x1","PMax_MSN_InArticle_Ad_150x100","PMax_MSN_Small_Headline_133x100","PMax_Microsoft_Edge_Single_Carousel_178x100","PMax_MMA_VerticalImage_1x2","PMax_MMA_WideImage_4x1","PlacementType2MediaPlacementTypeMap","_PlacementType2MediaP","transformCroppingParam","param","MediaPlacementType","CropSetting","placementTypes","placementType","cropping","transformImage","image","_ref2","url","originalUrl","originalWidth","originalHeight","cropSettingOnOriginal","placementSettings","roiInfo","expandedMeta","imageCropping","placementsCropping","transformImageParam","useAdPreviewModel","placementConfig","onError","transformedConfig","_ref3","placementSets","_useAdPreviewModelCor","useAdPreviewModelCore","setPlacementConfigCore","setPlacementConfig","changedCropSettingsCore","changedCropSettings","useCallback","config","newConfig","_ref4","_ref5","placements","hasCroppingChanged","map","_ref6","placementMeta","placementCropping","compact","reduce","acc","cropSettings","getSmartCropSettingsFactory","mediaRepository","smartCropActivity","imageMeta","placementMetaList","getCentralCroppedPlacements","ratioAndMinSizeList","aspectRatio","minSize","generateSmartCrop","imageUrl","then","assets","asset","AspectRatio","aspectRatioStr","smartCropping","SourceWidth","Width","SourceHeight","Height","SourceX","X","SourceY","Y","isValidSmartCropping","validateSmartCropSettings","originalImage","Src","minHeight","catch","smartPlacementAndCroppingList","placementsWithoutSmartCropping","croppingList","centralCroppingList","idx","PlacementType2AssociationTypeMap","_PlacementType2Associ","EPlacementType","Boost_Hero_Image_Carousel_200x100","Boost_Hero_Image_Carousel_122x100","Boost_Hero_Image_Carousel_159x100","Boost_Hero_Image_Carousel_180x100","Boost_Hero_Image_Carousel_233x100","Boost_Hero_Image_Carousel_320x100","Boost_Hero_Image_Carousel_57x100","Boost_Windows_Spotlight_191x100","Boost_Discover_Card_1x1","Boost_Prong1_Prong2_Feed_191x100","Boost_Coachmark_175x100","ImgExt_MMAV2_MSN_River_191x100","ImgExt_MMAV2_MSN_Single_Carousel_169x100","ImgExt_MMAV2_MSN_Microsoft_Edge_Mobile_1x1","Responsive_MMA_WideImage_4x1","Responsive_MMA_LandscapeImage_191x100","Responsive_MMA_SquareImage_1x1","Responsive_MMA_VerticalImage_1x2","Responsive_Audience_Network_WideImage_191x100","Responsive_Audience_Network_SquareImage_1x1","Responsive_Microsoft_Edge_Single_Carousel_178x100","Responsive_MSN_InArticle_Ad_150x100","Responsive_MSN_Small_Headline_133x100","Responsive_Boost_Windows_Spotlight_191x100","Responsive_Boost_Discover_Card_1x1","Responsive_Boost_Prong1_Prong2_Feed_191x100","Responsive_Boost_Coachmark_175x100","Responsive_MsanV2_Microsoft_Edge_Carouse_l201x100","Responsive_MsanV2_Microsoft_Edge_Mobile_1x1","Responsive_MsanV2_MSAN_Banner_2x1","Responsive_MsanV2_MSAN_River_191x100","Responsive_MsanV2_MSAN_Rectangle_120x100","Responsive_MsanV2_MSN_Carousel_169x100","Responsive_MsanV2_MSN_Partner_Stripe_153x100","Responsive_MsanV2_MSN_Restoday_124x100","LinkedIn_Single_Image_Desktop_Landscape","LinkedIn_Single_Image_Mobile_Landscape","LinkedIn_Single_Image_Medium_Rectangle_Landscape","LinkedIn_Single_Image_Mobile_Interstitial_Landscape","LinkedIn_Single_Image_Native_Landscape","LinkedIn_Single_Image_Desktop_Square","LinkedIn_Single_Image_Mobile_Square","LinkedIn_Single_Image_Medium_Rectangle_Square","LinkedIn_Single_Image_Mobile_Interstitial_Square","LinkedIn_Single_Image_Native_Square","LinkedIn_Single_Image_Mobile_Vertical","LinkedIn_Single_Image_Medium_Rectangle_Vertical","LinkedIn_Single_Image_Mobile_Interstitial_Vertical","LinkedIn_Single_Image_Native_Vertical","PMax_MMAV2_MSN_River_191x100","PMax_MMAV2_Microsoft_Edge_Mobile_1x1","Responsive_PMax_MMA_WideImage_4x1","Responsive_PMax_MMA_LandscapeImage_191x100","Responsive_PMax_MMA_VerticalImage_1x2","Responsive_PMax_Audience_Network_WideImage_191x100","Responsive_PMax_Audience_Network_SquareImage_1x1","Responsive_PMax_Microsoft_Edge_Single_Carousel_178x100","Responsive_PMax_MSN_InArticle_Ad_150x100","Responsive_PMax_MSN_Small_Headline_133x100","Unified_App_Ads_Video_Horizontal","Unified_App_Ads_Bing_Search","Unified_App_Ads_Causal_Games_Dimensions","Unified_App_Ads_MSN_Display","Responsive_PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100","Responsive_PMax_MMAV2_MSN_Single_Carousel_169x100","Responsive_PMax_MMAV2_MSN_Restoday_124x100","Responsive_PMax_MMAV2_MSN_Partner_Stripe_153x100","Responsive_PMax_MMAV2_MSN_River_191x100","Responsive_PMax_MMAV2_Microsoft_Edge_Mobile_1x1","convertEffectSettings","effectSettings","effectKey","effectOptions","effectSrc","backgroundBlur","designerEffect","effectType","effectValue","transformImageExperienceImageList","placementSetsConfig","imageExperienceImageList","isImageFittingEnabled","isAdPreviewRefreshEnabled","imageList","imgExpPlacementList","isLogo","changed","newImageList","placementList","placementListMap","srcList","forEach","src","push","splitPlacementListBySrc","PlacementMetaList","UAPLPlacementMetaListV2","UAPLPlacementMetaList","imageSmartEffect","hasImageCroppingChanged","placementSetName","name","curAssociationType","placement","_ref7","associationType","toLowerCase","placementSmartEffect","isPlacementIncluded","hasImageExperienceData","baseImage","BaseImage","IdString","Id","OriginalUrl","OriginalWidth","OriginalHeight","CropSettings","EffectSettings","isMaunalCropped","_getExpandedImagePlac","hasSmartEffect","imageExpansionType","originalImageCropSettings","CroppingType","getExpandedImageInfo","expandedImageUrl","getExpandedImageUrl","expandedImageWidth","expandedImageHeight","expandedImageCropSettings","extraCheck","UAPCroppingType","ManualCrop","getExpandedImagePlacementInfo","applyImageFitting","ignoreImageFitting","isIncluded","previewImage","useImageExperienceAdPreviewModel","placeholderImage","resetReducerStates","multiImagePlacementSets","PermissionsContext","isPlaceHolderImage","placeHolderUrl","imageExperiencePlacementSets","ret","_ref9","images","newImages","_ref11","onUpdateImageExperienceImageList","activeImageIndices","hasDataChanged","previewImageListState","activeImageIndexList","img","index","AdPreviewGridLayout","GridLayoutCore","AdPreviewSinglePlacementLayout","SinglePlacementLayoutCore","UnstyledAdPreviewCarouselLayout","UnstyledCarouselLayoutCore","AdPreviewPlacementContainerBase","MmaWideImage4x1","MmaLandscapeImage191x100","MmaSquareImage1x1","MmaVerticalImage1x2","AdPreviewPlacementContainerBaseCore","AdPreviewStructuredSnippetExtension","MmaInMsanWideImage191x100","MmaInMsanSquareImage1x1","MmaInMsanMSEdgeSingleCarousel178x100","MmaInMsanMSNInArticle150x100","MmaInMsanMSNSmallHeadline133x100","MmaInMsanV2MicrosoftEdgeCarousel201x100","MmaInMsanV2MicrosoftEdgeMobile1x1","MmaInMsanV2MSANBanner2x1","MmaInMsanV2MSANRiver191x100","MmaInMsanV2MSANRectangle191x100","MmaInMsanV2MSNCarousel169x100","MmaInMsanV2MSNPartnerStripe153x100","MmaInMsanV2MSNRestoday124x100","BoostHeroImageCarousel","BoostWindowsSpotlight191x100","BoostDiscoverCard1x1","BoostStartMenu","BoostActionCenter","BoostBanner","BoostProngFeed191x100","BoostCoachmark175x100","ImgExtWideImage191x100","MSEdgeSingleCarousel178x100","BingDesktopSingleImage178x100","MSEdgeMediumHeadline172x100","MSNSingleCarousel169x100","MSNMediumHeadline155x100","MSNInArticle150x100","MSNSmallHeadline133x100","BingDesktopMultiImage133x100","BingMobileMultiImage133x100","SquareImage1x1","MSNDoubleCarousel93x100","DynamicSearch","ResponsiveSearch","ResponsiveSearchDesktop","ResponsiveSearchMobile","ResponsiveMmaLandscapeImage191x100","ResponsiveMmaSquareImage1x1","ResponsiveMmaVerticalImage1x2","ResponsiveMmaWideImage4x1","ResponsiveMmaInMsanMSEdgeSingleCarousel178x100","ResponsiveMmaInMsanMSNInArticle150x100","ResponsiveMmaInMsanMSNSmallHeadline133x100","ResponsiveMmaInMsanSquareImage1x1","ResponsiveMmaInMsanWideImage191x100","ResponsiveBingSearchText","ResponsiveOutlookMobile","ResponsiveOutlookWeb","LinkedInSingleImageDesktop","LinkedInSingleImageMobile","LinkedInSingleImageMediumRectangle","LinkedInSingleImageMobileInterstitial","LinkedInSingleImageNative","UnifiedAppAdsVideoHorizontalPlacement","UnifiedAppAdsM365OutlookPlacement","UnifiedAppAdsCasualGamesDimensionsPlacement","UnifiedAppAdsMSNDisplayPlacement","UnifiedAppAdsBingSearchPlacement","StructuredSnippetExtension","AdPreviewCalloutExtension","CalloutExtension","AdPreviewPriceExtension","PriceExtension","AdPreviewPromotionExtension","PromotionExtension","AdPreviewSitelinkExtension","SitelinkExtension","AdPreviewAdExtensionComponents","UAPAdExtensionType","SiteLink","Callout","Promotion","StructuredSnippet","Price","emptyTheme","core","withUAPLThemedStyles","WrappedComponent","getStyles","options","prefixClassName","useRawStyles","componentName","HOC","theme","themedStyles","createUseStyles","useStyles","displayName","hoistNonReactStatics","withThemedStyles","defaultAdsLabelStyles","getMmaInMsanV2MicrosoftEdgeCarousel201x100Styles","baseStyles","placementCard","placementImageContainer","placementTextContainer","placementAdsLabel","placementGradient","placementShortHeadline","placementLongHeadline","placementFinalUrl","placementDescription","placementCallToAction","placementBusinessNameWithAdsLabel","textDecoration","backgroundImage","opacity","getMmaInMsanV2MSANBanner2x1Styles","flexDirection","getMmaInMsanV2MSANRiver191x100Styles","widht","getMmaInMsanV2MSNCarousel169x100Styles","getMmaInMsanV2MSNPartnerStripe153x100Styles","getMmaInMsanV2MSNRestoday124x100Styles","getMmaInMsanV2MicrosoftEdgeMobile1x1Styles","getBingSearchTextPlacementStyles","_getBingSearchPlaceme","boxSizing","placementDescriptionContainer","flexGrow","placementLogoContainer","getBingSearchTextDesktopPlacementStyles","_getBingSearchPlaceme2","_excluded2","bingSearchDesktopPlacementRoot","getBingSearchTextMobilePlacementStyles","_getBingSearchPlaceme3","_excluded3","bingSearchMobilePlacementRoot","borderBottom","getOutlookMobilePlacementStyles","_getOutlookPlacementB","getOutlookWebPlacementStyles","_getOutlookPlacementB2","outlookWebCardRoot","transform","getLinkedInSingleImageDesktopStyles","placementCardHeader","placementCardPreview","placementCardFooter","placementLogo","placementCompanyName","placementPromoteText","placementIntroductoryText","placementHeadline","gap","letterSpacing","justifyContent","WebkitBoxOrient","WebkitLineClamp","textDecorationLine","getLinkedInSingleImageMediumRectangleStyles","placementCompanyMeta","placementHeader","getBoostWindowsSpotlight191x100Styles","placementCenterSection","placementSearchIconCenter","placementHotspotsCenterSection","placementTopRightSection","placementCameraIcon","placementTopLeftSection","placementSearchIconTopLeft","placementHotspotsLeftSection","placementWifiIcon","placementBatteryIcon","getDisclaimerStyles","styleOverrides","e","_ref2$palette","additionalLineDisclaimer","extend","popupDisclaimer","disclaimerCallout","getResponsiveSearchAdPlacementBaseStyles","placementContentContainer","placementInlineItems","getResponsiveSearchAdMobilePlacementStyles","_getResponsiveSearchA3","placementImage","getMmaInMsanV2RefreshedMSANRiver191x100Styles","placementInfoContainer","placementBusinessNameContainer","businuessAndLogoContainer","placementCallToActionAsLink","businuessAndAdChoiceContainer","adsLabelClassName","headChoiceIconClassName","adsLabelContainerClassName","textOverflow","getMmaInMsanV2RefreshedMSNRestoday124x100Styles","getMmaInMsanV2RefreshedMSNCarousel169x100Styles","getMmaInMsanV2RefreshedMicrosoftEdgeCarousel201x100Styles","borderImageSource","getMmaInMsanV2RefreshedMSNPartnerStripe153x100Styles","getMmaInMsanV2RefreshedMSANBanner2x1Styles","getMmaInMsanV2RefreshedMicrosoftEdgeMobile1x1Styles","getOutlookMobileRefreshedPlacementStyles","overflowX","unreadClassName","threeDot","descriptionWithAction","flexWrap","flexShrink","getOutlookWebRefreshedPlacementStyles","MMAPlacementCardImpl","isEnabled","mmaPlacementCardClassName","classnames","mmaRefreshedPlacementCardRoot","mmaPlacementCardRoot","mmaPlacementCardDisabled","target","rel","href","MMAPlacementCard","PlacementContentContainer","finalUrl","displayUrl","isClickDisabled","placementContentContainerClassName","AdLabelImpl","adLabelRefreshedRoot","adLabelRoot","AdLabel","BusinessNameWithAdsLabelImpl","businessName","showAdsLabel","showAdsIcon","rootClassName","businuessNameRefreshed","businessNameWithAdsLabelRoot","_TL_","alt","BusinessNameWithAdsLabel","GradientImpl","gradientClassName","placementCardGradientRoot","PlacementGradient","withLink","HoC","PlacementText","isMultiLine","placementTextClassName","MultiLineEllipsisText","PlacementHeadline","headlineText","placementHeadlineClassName","PlacementHeadlineWithLink","PlacementFinalUrl","placementFinalUrlClassName","PlacementFinalUrlWithLink","PlacementDescription","description","placementDescriptionClassName","PlacementAction","actionText","placementActionClassName","PlacementImage","enableCrop","previewImageAspectRatio","previewImageHeight","placementImageClassName","CroppedImageView","resizeImageHeight","Image","shouldFadeIn","AdditionalLineDisclaimer","disclaimer","useDefaultStyles","isEmpty","DisclaimerLayout","Link","first","FinalUrls","PopupDisclaimer","_useState","useState","_useState2","_slicedToArray","showCallout","setShowCallout","useRef","Title","ariaLabelledBy","getId","ariaDescribedBy","directionalHint","DirectionalHint","bottomLeftEdge","gapSpace","isBeakVisible","setInitialFocus","onDismiss","PopupText","disabled","BusinessNameWithLogo","showLogo","logo","logoHeight","ChoiceIcon","viewBox","fill","xmlns","d","fillOpacity","ChoiceIconBright","BusinessNameWithChoiceIcon","showBusinessName","showAdIcon","showChoiceIcon","showCallToAction","callToAction","showCallToActionAsLink","showBrightStyleChoiceIcon","showChoiceIconAhead","replace","customizedClassName","largeIconRoot","arrowIcon","stroke","strokeWidth","strokeLinecap","strokeLinejoin","ThreeDot","threeDotClassName","OutlookPcDesktopUnread","customizedUnreadClassName","OutlookMobileWebUnread","DescriptionWithAction","descriptionWithActionClassName","placementCallToActionClassName","placementCallToActionAsLinkClassName","AdPlacementMmaBase","finalUrlOrigin","placementData","showShortHeadline","shortHeadline","isMultiLineShortHeadline","showLongHeadline","longHeadline","isMultiLineLongHeadline","showFinalUrl","isMultiLineFinalUrl","displayFinalUrlOrigin","showDescription","isMultiLineDescription","showAdLabel","showGradient","showBusinessNameAdLabel","showDots","effectiveImageUrl","effectiveImageWidth","effectiveImageHeight","expandedPlacementCropping","previewHeight","imageBorderRadius","imagePreviewWidth","isValidUrl","URL","origin","placementDotsIcon","dotsIcon","AdPlacementMmaWideImage4x1","AdPlacementMmaLandscapeImage191x100","wordWrap","AdPlacementMmaSquareImage1x1","AdPlacementMmaVerticalImage1x2","AdPlacementMmaInMsanWideImage191x100","AdPlacementMmaInMsanMSEdgeSingleCarousel178x100","AdPlacementMmaInMsanMSNInArticle150x100","AdPlacementMmaInMsanMSNSmallHeadline133x100","AdPlacementMmaInMsanSquareImage1x1","AdPlacementMmaBaseV2","showSmallSizeHeadline","showBusinessNameWithLogoTop","showAdChoiceIconArea","showBusinessNameInAdChoiceArea","CustomizedComponent","customizedComponent","smallSizeHeadline","customizedArea","AdPlacementMmaInMsanV2MicrosoftEdgeCarousel201x100","withPermissions","props1","StyledBaseComp","AdPlacementMmaInMsanV2MSANBanner2x1","AdPlacementMmaInMsanV2MSANRiver191x100","props2","AdPlacementMmaInMsanV2MSNCarousel169x100","AdPlacementMmaInMsanV2MSNPartnerStripe153x100","AdPlacementMmaInMsanV2MSNRestoday124x100","AdPlacementMmaInMsanV2MSANRectangle191x100","AdPlacementMmaInMsanV2MicrosoftEdgeMobile1x1","AdPlacementImgExtWideImage191x100","AdPlacementImgExtMSEdgeSingleCarousel178x100","AdPlacementImgExtBingDesktopSingleImage178x100","AdPlacementImgExtMSEdgeMediumHeadline172x100","AdPlacementImgExtMSNSingleCarousel169x100","AdPlacementImgExtMSNMediumHeadline155x100","AdPlacementImgExtMSNInArticle150x100","AdPlacementImgExtMSNSmallHeadline133x100","AdPlacementImgExtSquareImage1x1","AdPlacementImgExtMSNDoubleCarousel93x100","AdPlacementImgExtBingDesktopMultiImage133x100","_ref2$images","imagesWithPadding","AdPlacementImgExtBingMobileMultiImage133x100","direction","carouselState","setCarouselState","handleSelect","selectedIndex","Carousel","activeIndex","onSelect","controls","wrap","Item","textShadow","bingDesktopHeaderImage","BingSearchPlacementBase","adExtensionContainerClassName","adExtensionContainer","AdPlacementBingSearchText","AdPlacementBingSearchTextDesktop","AdPlacementBingSearchTextMobile","OutlookPlacementBase","OutlookRefreshedPlacementBase","showThreeDot","showDescriptionWithAction","CustomizedUnreadComponent","customizedUnreadComponent","AdPlacementOutlookMobile","StyledComp","AdPlacementOutlookWeb","AdPlacementLinkedInSingleImageBase","companyPageName","userProfileImageSrc","introductoryText","headline","showHeader","showIntroductoryText","showfinalUrl","showFooter","showCompanyInFooter","showIntroductoryTextInFooter","renderCallToAction","Button","FluentProvider","webLightTheme","Card","CardHeader","CardPreview","CardFooter","AdPlacementLinkedInSingleImageDesktop","AdPlacementLinkedInSingleImageMobile","AdPlacementLinkedInSingleImageMediumRectangle","AdPlacementLinkedInSingleImageMobileInterstitial","alignSelf","AdPlacementLinkedInSingleImageNative","showfinalUrlInFooter","AppAdsBasePlacement","placementPreview","phoneInnerContent","getAppAdsBasePlacementStyles","borderTopRightRadius","borderTopLeftRadius","videoPlayerRoot","getAppAdsMobileStyles","_getResponsiveSearchA","_getAppAdsBasePlaceme","appAdsPlacementCard","appAdsStyles","flex","AppAdsMSNDisplayPlacement","msnPlacementImage","msnPlacementTextContainer","msnDescription","msnBusinessName","msnBusinessNameWithAdsLabel","_getAppAdsBasePlaceme3","_excluded4","customClassName","ResponsiveAdPlacementOutlookMobile","ResponsiveAdPlacementOutlookWeb","AppAdsM365OutlookPlacement","preview","_getAppAdsBasePlaceme2","previewContent","AdPlacementResponsiveSearchPropTypes","decoratorsData","imageExtension","showAdDisclaimer","showImageExtension","previewTexts","ResponsiveSearchAdPlacementBase","_props$previewTexts","AppAdsBingSearchPlacementBase","AppAdsBingSearchPlacement","AppAdsBingSearchPlacementText","AppAdsCasualGamesDimensionsPlacement","casualGamesBase","casualGamesHeadline","_getAppAdsBasePlaceme4","_excluded5","AppAdsVideoHorizontalPlacementInner","videos","videoRef","useEffect","load","kind","srcLang","default","AppAdsVideoHorizontalPlacement","ResponsiveMMAPlacementCard","ResponsiveAdPlacementMmaBase","imagePreviewHeight","finalImagePreviewHeight","ResponsiveAdPlacementMmaWideImage4x1","ResponsiveAdPlacementMmaLandscapeImage191x100","ResponsiveAdPlacementMmaSquareImage1x1","ResponsiveAdPlacementMmaVerticalImage1x2","ResponsiveAdPlacementMmaInMsanWideImage191x100","ResponsiveAdPlacementMmaInMsanMSEdgeSingleCarousel178x100","ResponsiveAdPlacementMmaInMsanMSNInArticle150x100","ResponsiveAdPlacementMmaInMsanMSNSmallHeadline133x100","ResponsiveAdPlacementMmaInMsanSquareImage1x1","ResponsiveAdPlacementBingSearchText","WindowsSpotlight191x100","hotspots","searchIcon","desc","uri","cameraIcon","wifiIcon","batteryIcon","AdPlacementBoostWindowsSpotlight191x100","AdPlacementBoostHeroImageCarousel","AdPlacementBoostProngFeed191x100","AdPlacementBoostCoachmark175x100","BoostTextAdPlacementBase","showSuggested","showDismissAction","placementSuggestedContainer","placementVectorIcon","vectorIcon","placementSuggestedText","placementDetailsContainer","placementActionContainer","placementDismissAction","AdPlacementBoostStartMenu","AdPlacementBoostActionCenter","AdPlacementBoostBanner","AdPlacementBoostDiscoverCard1x1","AdPlacementResponsiveSearch","AdPlacementResponsiveSearchDesktop","_getResponsiveSearchA2","AdPlacementResponsiveSearchMobile","AdPlacementDynamicSearchPropTypes","placementDisplayUrl","DynamicSearchAdPlacementBase","placementTextCardContainer","placementUrl","placementDisclaimer","AdPlacementDynamicSearch","VideoPlacementInner","videoPlayerRootClass","videoPlayerVertical","VideoPlacement","ContainerBase","titleText","isValid","onRenderHeader","onRenderPlacement","onRenderFooter","previewContainerClassName","containerHeaderClassName","containerTitleClassName","containerFooterClassName","placementContainerClassName","adPreviewContainer","adPreviewContainerError","adPreviewContainerHeader","adPreviewContainerTitle","adPreviewPlacementContainer","adPreviewContainerFooter","arguments","orange","UAPImageType","Image1x1","Image4x1","Image1x2","Image191x100","Image178x100","Image172x100","Image169x100","Image155x100","Image150x100","Image133x100","Image93x100","Image201x100","Image200x100","Image153x100","Image124x100","Image120x100","Image122x100","Image159x100","Image180x100","Image233x100","Image320x100","Image57x100","UAPVideoType","UAPPlacementType","PMax_Video","Boost_Start_Menu","Boost_Action_Center","Boost_Banner","Outlook_Text_Mobile","Outlook_Text_Web","Bing_Search_Mobile","Bing_Search_Desktop","Bing_Search_Text","Responsive_Outlook_Text_Mobile","Responsive_Outlook_Text_Web","Responsive_Bing_Search_Text","Responsive_Boost_Start_Menu","Responsive_Boost_Action_Center","Responsive_Boost_Banner","Responsive_Search","Responsive_Search_Desktop","Responsive_Search_Mobile","Dynamic_Search","Unified_App_Ads_Bing_Search_Text","Unified_App_Ads_M365_Outlook","_UAPLPlacementMetaLis","PT","imageType","hasMultiImages","Image4x5","getPlacementListMetaDataByImageType","imageTypes","types","values","imgType","flatten","uniq","mergePlacementSets","prevPlacementSets","curPlacementSets","newPlacementSets","_loop2","curPlacementSet","i","prevPlacementSet","_mergePlacementList","prevPlacementList","curPlacementList","newPlacementList","_loop","curPlacement","prevPlacement","mergePlacementList","_mergePlacementList2","isListChanged","mergeReducerStates","prevState","curState","prevPreviewState","prevHasDatachanged","prevActiveImageIndices","curPreviewState","curHasDatachanged","curActiveImageIndices","_mergePreviewImageAnd","prevImageAndPlacementSets","curImageAndPlacementSets","prevImageAndPlacementSetsCopy","newImageAndPlacementSets","_loop3","curImageAndPlacementSet","prevImageAndPlacementSet","prevPreviewImage","curPreviewImage","isPreviewImageChanged","_mergePlacementSets","_mergePlacementSets2","isPlacementSetsChanged","splice","mergePreviewImageAndPlacementSets","_mergePreviewImageAnd2","isPreviewStateChanged","newPreviewState","isActiveImageIndicesChanged","AdPreviewModelActions","ADPREVIEW_INIT_STATE","adPreviewReducer","state","action","actionType","actionData","newState","forceToReset","_mergeReducerStates","_mergeReducerStates2","mergedState","imageIndex","imageAndPlacementSets","placementSet","updatePlacementCorpSettings","updatePlacementCorpSettingsByImageType","newPreviewImages","newIndices","sortBy","getCenterCroppedSettings","originalBoxToCrop","originalRatio","Math","abs","scaledSourceWidth","round","centerX","scaledSourceHeight","middleY","_ref$useOriginalImage","useOriginalImageSize","maxCropBox","aspectRatios","ratio","pickSingleImageFromImageList","selectedImage","getImageInfo","pLoadedImage","Promise","resolve","reject","onload","naturalWidth","naturalHeight","onerror","Error","p$ret","loadedImage","manualPlacementCroppings","err","getPlacementSet","placementSetParam","_placementSetParam$ge","getDefaultPlacementsCropping","getPlacementListMetaData","defaultCroppingList","manualCropping","getImageAndPlacementSetList","placementSetsParam","concurrency","curPlacementConfigRef","_useAdPreviewReducer","initState","_useReducer","useReducer","_useReducer2","adPreviewModel","dispatch","_ref10","updateImageCropping","updatePlacementCropping","_ref11$imageIndex","updatePlacementCroppingByImageType","_ref12","_ref12$imageIndex","setActiveImageIndices","_len","indices","Array","_key","useAdPreviewReducer","updateImageCroppingState","updatePlacementCroppingState","updatePlacementCroppingByImageTypeState","newImageCropping","imgAndPlacementSets","newPlacementCropping","_ref9$imageIndex","_ref10$imageIndex","prevModelConfigRef","initializeModel","pNewModelConfig","newModelConfig","_newModelConfig","_toArray","firstConfig","otherConfigs","slice","firstImageInfo","firstPreviewImage","imgInfo","otherPreviewImages","getPlacementSetsViewModel","activeImagesOnly","finalPlacementSets","pickedPreviewImageListState","pImage","_ref13","placementSetViewModel","find","_ref14","imageViewModel","fpIndex","multiImagePlacementSetsViewModel","activeMultiImagePlacementSetsViewModel","singleImagePlacementSetsViewModel","_ref15","_ref16","activeSingleImagePlacementSetsViewModel","_ref17","_ref18","firstImage","allImages","_ref20","activeImages","_ref21","_ref22","resetReducerStatesWrapper","singleImagePlacementSets","UAPPlacementTypeAlias","MMA","WideImage","LandscapeImage","SquareImage","VerticalImage","MSAN","MSEdgeSingleCarousel","MSNInArticle","MSNSmallHeadline","MSANV2","MSEdgeCarousel","MSEdgeMobile","MSANBanner","MSANRiver","MSANRectangle","MSNCarousel","MSNPartnerStripe","MSNRestoday","PMax","AudienceSquareImage","AudienceWideImage","MMALandscapeImage","MMAVerticalImage","MMAWideImage","MMAV2MSEdgeCarousel","MMAV2MSNSingleCarousel","MMAV2MSNRestoday","MMAV2MSNPartnerStripe","MMAV2MSNRiver","Video","PMaxV2","Boost","HeroImageCarousel200x100","HeroImageCarousel122x100","HeroImageCarousel159x100","HeroImageCarousel180x100","HeroImageCarousel233x100","HeroImageCarousel320x100","HeroImageCarousel57x100","WindowsSpotlight","DiscoverCard","StartMenu","ActionCenter","Banner","Prong1Prong2Feed","Coachmark","ImageExt","MSEdgeMediumHeadline","MSNSingleCarousel","MSNMediumHeadline","MSNDoubleCarousel","BingDesktopSingleImage","BingDesktopMultiImage","BingMobileMultiImage","Outlook","Mobile","Web","BingSearch","Desktop","Responsive","Dynamic","LinkedIn","Landscape","SingleImageDesktop","SingleImageMobile","Square","Vertical","UnifiedAppAds","VideoHorizontal","M365Outlook","MSNDisplay","CasualGamesDimensions","BingSearchText","All","AllV2","_ref$extraCheck","UAPImageExpansionType","None","Outpainting","SmartCrop","SingleColorPadding","getCropSettingsFromRoi","_ref2$useOriginalImag","expandedInfo","setROIInfo","_expandedInfo","expandedImageCropSettingsOriginal","expandedImageCropSettingsMap","cropSetting","originalImageCropSettingsMap","CenterCrop","expandedCropSetting","expandedImageInfo","PlacementType2Component","_PlacementType2Compon","_excluded7","_excluded6","getAdPlacementComponent","onRenderEmptyView","gridLayoutContainerClassName","emptyView","placementComponentList","AdPlacementComponent","newPlacement","adPreviewGridLayoutContainer","layoutContainerClassName","_ref$hasContainer","hasContainer","placementComponent","_ref3$hasMultiImages","adPreviewLayoutContainer","bsProps","bsClass","CustomCarousel","carouselRef","indicators","InjectedControls","carouselWrapperClassName","carouselInstance","setCarouselInstance","_useMemo","renderControls","_useMemo2","leftArrowControl","rightArrowControl","BsCarousel","renderIndicators","Caption","setActiveIndex","customCarouselRootClassName","customCarouselLayoutStyles","customPlayPauseButtonsStyles","startAutoRotating","onActiveIndexChange","disableDefaultStyles","useCustomCarousel","customCarouselWrapperClassName","setIndex","curActiveIndex","curSetIndex","_useState3","_useState4","setDirection","_useState5","_useState6","auto","setAuto","_useState7","_useState8","startAutoRotateListner","setStartAutoRotateListner","autoRotateListener","onRenderCarouselHeader","clearAutoRotateListener","clearTimeout","currentIndex","previewCount","nextIndex","setTimeout","start","stop","CarouselComponent","moreCarouselProps","customCarouselWrapper","carouselLayoutContainer","PlayPauseButtons","newI18n","isPlaying","play","pause","playPauseButtons","nextLabel","prevLabel","adPreviewCarousel","baseCarouselLayoutStyles","_ref8","resetOn","LayoutComponent","extensionData","structuredSnippetExtensionContainer","Category","Texts","join","calloutExtensionContainer","priceExtensionContainer","Description","Currency","Occasion","PromotionType","PromotionItem","PromotionDetail","DateRange","hasOccasion","hasPromotionDetail","hasDateRange","promotionExtensionContainer","star","onRenderTile","distUrl","DisplayText","Description1","Description2","DestinationUrl","indexOf","tiles","next","sitelinkExtensionContainer","WhitePadding","Unknown","paddingColor","hasQuery","srcWithQuery","queryParams","ROIInfoObj","JSON","parse","ImageExpansionType","ThumbnailWidth","PaddingImageWidth","ThumbnailHeight","PaddingImageHeight","PaddingColor","ImageCropSetting","cs","sourceHeight","sourceWidth","sourceX","sourceY","croppingType","OriginalImageCropSetting","UnifiedAppWizard","storeType","wizardConfig","perfMarker","instrumentation","InstrumentationContext","wizardName","wizardPerfMarker","createChild","setClarityTag","FluentSwitcherContext","Provider","PerformanceMarkerProvider","immediateDone","Scenario","Activity","Wizard","WizardPerfMarker","wizardMarker","LayoutContainer","template","DefaultTemplate","Layout","component","StepContainer","SaveBlocker","CancelWizardDialog","getIndicatorsWidth","getAssetStepStyles","container","imageExperience","formContainer","previewerContainer","adPreview","windowsAdPreview","transformations","indicatorsWidth","useAssetsStepStyles","useResponsiveStyleWrapper","flowToPlatform","FLOWS","IOS","platforms","ANDROID","WINDOWS","unifiedAppAdsSurfaces","VideoGaming","M365","MsnDisplay","MicrosoftCasualGames","adPreviewConfig","AssetGroupNameSection","flow","isValidating","onDataChange","campaign","onRenderAdGroupNameLabel","TextTitle","titleKey","topicKey","ValidatedFixedPanel","icon","GroupInfoImg","attentionBeaconProps","getExtraProps","getPanelErrorProps","AppSetting","CampaignValidationGroup","StoreAppSelector","platform","isMounted","placeholderText","readOnly","AppSettingReadOnly","isCountryRefinementEnabled","ServerValidatedRemainingCharsValidatedTextField","placeholder","validationProps","AssetGroup","onRenderLabel","AssetsSection","imageExperiencePortalContainerState","transparentLogoExperiencePortalContainerState","imageExpereienceProngPortalContainerState","imageExperienceSpotLightPortalContainerState","prongImageExperienceAddNewImageCallback","imageSpotlightExperienceAddNewImageCallback","transparentLogoContainerRef","logosContainerRef","imageExperienceAddNewImageCallback","imagesContainerRef","imageSpotlightContainerRef","imageProngContainerRef","setAddNewDescriptionCallback","setAddNewShortHeadlinesCallback","mergedI18n","assetPanels","setSelectedVideoId","selectedVideoId","isLoading","useWizardService","context","wizardData","Headlines","Descriptions","headlinesCardSummaryDetails","getHeadlinesCardSummaryDetails","descriptionsCardSummaryDetails","getDescriptionsCardSummaryDetails","_useCollapseState","useCollapseState","_useCollapseState2","allSections","allSectionsExpandedSections","setAllSectionsExpandedSections","_useCollapseState3","PANEL_KEYS","START_END_DATES","_useCollapseState4","moreSettings","moreSettingsExpandedSections","setMoreSettingsExpandedSections","allAssetsExpand","collapseExpander","setActiveKeys","fetch","useVideoAdsCopilot","copilotFetchTaskManager","TaskManager","Subtitle1","Collapse","allPanelItems","skipItemsTypeCheck","activeKeys","checkItems","ImagesPanel","setAddNewImageCallback","ImageAssetsImg","Images","IMAGES","BaseImagePanel","iconAltText","imagesData","ImageSPOTLIGHT","containerRef","portalContainerState","addNewImageCallback","maxUploadNum","SPOTLIGHT_IMAGES","ImagePRONG","PRONG_IMAGES","LogosPanel","logos","logoExperiencePortalContainerState","LOGOS","ShortHeadlinesPanel","TextAssetsImg","featureName","isOptional","SHORT_HEADLINES","DescriptionsPanel","DESCRIPTIONS","VideoPanel","isVideoRequired","skipQualityValidation","VIDEOS","AUDIENCE_SIGNAL","AudienceSignalSection","AudienceSignalPanel","expand","size","weight","DateSettingsPanel","UnmappedFormErrors","withControlErrorHandling","OriginalUnmappedFormErrors","AssetsStepFormInternal","onDataChangeProp","error","scope","useIsMounted","serverContext","ServerContext","_useContext","RecommendationContext","recommendationContext","ImageSPOTLIGHTContainerRef","ImagePRONGContainerRef","portraitContainerRef","stylingProps","useResponsiveStyles","cid","aid","setImageExperiencePortalContainerState","ImageSPOTLIGHTExperiencePortalContainerState","setImageSPOTLIGHTExperiencePortalContainerState","ImagePRONGExperiencePortalContainerState","setImagePRONGExperiencePortalContainerState","_useState9","noop","_useState10","setImageExperienceAddNewImageCallback","_useState11","_useState12","setProngImageExperienceAddNewImageCallback","_useState13","_useState14","setImageSpotlightExperienceAddNewImageCallback","_useState15","_useState16","addNewDescriptionCallback","_useState17","_useState18","addNewShortHeadlinesCallback","_useState19","_useState20","setTransparentLogoExperiencePortalContainerState","_useState21","previewImageId","cropImageObj","_useState22","previewTransparentLogoSharedState","setPreviewTransparentLogoSharedState","_useState23","_useState24","previewImageSPOTLIGHTSharedState","setPreviewImageSPOTLIGHTSharedState","_useState25","_useState26","previewImagePRONGSharedState","setPreviewImagePRONGSharedState","_useState27","_useState28","appLogo","setAppLogo","assetGroup","CallToAction","LongHeadlines","_ref5$videos","TransparentLogo","result","onReset","prevData","ImageList","ImageAssets","Headline0","Headline1","Headline2","LongHeadline0","Description0","onUpdateImageList","_ref6$serverErrors","serverErrors","_ref6$systemErrors","systemErrors","legacyGlobalI18n","window","globalLegacyI18n","get","legacyI18n","buildLegacyI18n","ValidationStringMap","legacyI18nOfListingGroup","mergedTempI18n","mergeI18n","saveFailed","useFormService","isSaving","matchStepState","STEP_STATES","SAVING","isCanceling","CANCELING","PerformanceMarkerContext","_useState29","previewLogoId","editingPlacementType","_useState30","previewImagesSharedState","setPreviewImagesSharedState","postAssetEventLog","isArray","finalUrlFromApp","AppId","AppUrl","_useCopilot","useCopilot","addNewLongHeadlinesCallback","currentCTA","finalUrls","FinalUrlForRecommendation","enableCopilotRecommendations","feature","AssetEventFeature","PMAX","assetScenario","AssetScenario","CREATE_WORK_FLOW","copilotBanner","suggestionPoller","imageExperienceComponents","ValidatedImageExperienceWrapper","imagesContaineRef","logosContaineRef","updateFinalUrlCallback","isLogoEnabled","updatePortalContainerState","initialValue","UAPLPMaxIntegration","showCopilotOptionForImage","IsBackgroundSceneEnabled","imageAssetsOptional","transparentLogoComponent","isBoostPortraitEnabled","customMaxImageCount","imageListPropName","isStoreAppTransparentLogo","isCombinedMsanAndMmaAspectRatios","isCopilotRecommendations","validatedImageSPOTLIGHTExperienceWrapper","isStoreAppSpotLight","validatedImagePRONGExperienceWrapper","isDisplayPlus","isStoreAppProng","previewProps","updateImageList","AppTitle","autoHeightCarousel","customSurfaceKeys","PerfMaxResponsiveAdPreviewUAPL","logoPreviewEnabled","windowsAppAdsPreivew","AppAdsPreview","union","hideHeaderButtons","isAppCampaignPreview","showStart","IconUrl","getGenericImageObjectAsync","iconImage","ActuationGroup","actuationProps","isActive","AttentionBeaconGroup","FormErrorGroup","formErrorProps","errors","showAllValidationErrors","StepHeader","SystemErrors","AssetGroupValidationGroup","CopilotRepositoryProvider","campaignId","locale","getLocale","recommendationType","enableLogoAndCTA","AssetsStepForm","withBannerService","withScope","AssetsStepShell","getAssetsPanels","AdAssetsFormShimmer","AdAssetsPreviewerShimmer","platformToAppStore","Windows","Android","iOS","getBiddingScheme","Type","ManualCpc","ManualCpi","getDefaultCampaignData","platformNamePrefix","cnMarketAccount","Name","generateNameSuggestionSuffix","floor","random","Status","Languages","getDefaultLanguagesViewModel","Budget","Amount","getBudgetRange","CurrentAccount","CurrencyCode","Daily","Default","BiddingScheme","CampaignType","CampaignSubType","locationTargets","getDefaultLocationTargetsViewModel","AppStore","AppPlatform","AppStoreId","TrackingUrlTemplate","useAssetsStepRepository","scenarioContext","ScenarioContext","_useWizardService","send","activity","ActivityContext","versionForLog","getLogVersion","logger","getLoggerWithoutPageInfo","_scope$values","ScopeContext","_useAppStoreRepositor","useAppStoreRepository","searchAppById","oDataConfig","videoRepository","createVideoRepository","folderRepository","createFolderRepository","imageRepository","createImageRepository","uploadVideoIfNeeded","videoPromises","video","uploadVideoMetadata","videoMetadata","newVideoFromMTObject","newVideo","_state$context$wizard","savedAssetGroup","savedCampaign","assetGroupId","saveCampaignsPromise","loadCampaignAsViewModel","assetGroupPromise","loadAssetGroupForWindowsStore","loadAssetGroupWithVideos","savedAssetGroupPromise","_ref2$storeFinalUrl","storeFinalUrl","IsOptional","BusinessName","UrlRulesOption","URL_RULES_OPTIONS","getDefaultAssetGroup","CampaignSettings","settings","appInfo","errorData","trace","save","initialData","assetGroupToSave","campaignToSave","initialAssetGroup","Permissions","initialCampaignViewModel","IsDomesticSimplifiedChineseEnabled","saveCampaign","scenario","activityLogger","createActivity","createDefaultCampaign","signal","WIZARD_EVENTS","UPDATE_WIZARD_DATA","cacheManager","invalidate","assetGroupChanges","originalAssetGroup","saveContext","saveAssetGroup","AssetsStepSettingsShell","getAssetsSettingsPanels","getLocationTargetingStyles","useTargetingStepStyles","TargetingStepShell","_ref$data","targetingInfo","bundleCountries","bundleLocationCriterions","_ref3$campaign","_ref3$assetGroup","LOCATIONS","LANGUAGE_TARGET","expandedSections","setExpandedSections","targetingExpand","errorMapper","apiErrorMapper","LocationTargetingSettingPanel","LanguageTargetPanel","PlacementTargetPanel","PANEL_KEYS_V2","PLACEMENT_TARGET","CampaignDetailsForm","campaignInfo","allSectionsKeys","initiallyExpandedSectionsKeys","isBidStrategyCPC","getBidStrategyOptions","MANUAL_CPC","MANUAL_CPA","CampaignNamePanel","CAMPAIGN_NAME","AppDetailsPanel","APP","BidStrategyPanel","bidStrategyComponentOptions","bidStrategyOptions","hideAdditionalDetails","biddingBannerOptions","isCampaignCreation","BID_STRATEGY","BidValuePanel","bidValueType","BID_VALUE","BudgetPanel","BUDGET","AdSchedulePanel","AD_SCHEDULE","UrlOptionsPanel","urlParameterOptions","showFinalUrlSuffix","showCustomParameters","isTrackingUrlTemplateRequired","isWithError","URL_OPTIONS","ALL_SECTIONS_KEYS","INITIALLY_EXPANDED_SECTIONS_KEYS","CampaignDetailsStepShell","CampaignDetailsEditStepShell","useCampaignDetailsStepRepository","_useBudgetModel","useBudgetModel","budgetModelToViewModel","budgetViewModelToModel","isBudgetInputValid","_ref2$isBudgetAndBidd","isBudgetAndBiddingEnabled","loadPromises","loadCampaign","readLocationCriterions","bundleCountriesAndLocationCriterions","loadBundleCountries","dayTimeCriterions","readDayTimeCriterions","campaignData","modelToViewModelForCampaign","campaignModel","status","locationCriterionsModel","dayTimeCriterionsModel","commonCampaignData","ManualCPC","ManualCPI","budgetAmount","bidStrategy","isBudgetValid","isMarketingMetricValid","savePromises","campaignResults","BudgetStepShell","budgetInfo","wizardState","allExpandedSections","expandSections","useSummarySchemaData","timeDisplayType","setTimeDisplayType","DynamicPermissions","dynamic","loadedStoresData","savedProductFilter","savedListingGroup","getFlowFactors","preferencesService","_preferencesService","initialize","isTwelveHourDisplay","findByName","Data","locations","currentLevelSettings","currentLocations","loc","SelectionStatus","location","campaignName","assetGroupName","appName","appPlatform","autoGeneratedAssets","finalUrlExpansionOptOut","finalUrlExpansions","autoGeneratedTextOptOut","autoGeneratedImageOptOut","budget","currencyCode","bidValue","costPerSale","costPerSaleOptOut","conversionGoals","locationTargeting","targetOption","languages","audienceSignal","AudienceGroup","searchThemes","AssetGroupSearchThemes","shouldFetchFromMT","headlines","descriptions","adScheduleCampaign","startDate","StartDate","endDate","EndDate","adSchedules","dayTimeRanges","useSearcherTimeZone","AdScheduleUseSearcherTimeZone","urlOptions","FinalUrlSuffix","UrlCustomParameters","urlRules","path1","Path1","path2","Path2","mobileFinalUrls","MobileFinalUrls","AssetGroupUrlTargets","newCustomerAcquisition","newCustomerAcquisitionOptOut","buildSchemaData","SummaryStepShell","schemaData","appPlatformString","currentFlow","getCurrentFlow","onAssetsHeaderActionClick","NAVIGATE_TO","stepId","STEP_PATHS","ASSETS","onTargetingHeaderActionClick","TARGETING","onCampaignSettingsHeaderActionClick","CAMPAIGN_DETAILS","onBudgetSettingsHeaderActionClick","hd1","hd2","hd3","targeting","campaignSettings","buildSchema","SummaryShimmer","currentSteps","summaryPageComponentTypes","CAMPAIGN_DETAILS_EDIT","ASSETS_GROUP_EDIT","SUMMARY","UnifiedAppCampaignStepsConfig","view","repository","assetGroupResults","updatedCampaign","newCampaign","isPublishing","updateAssetGroupAndCampaignStatus","UnifiedAppEditCampaignSettingsStepsConfig","UnifiedAppEditAssetGroupSettingsStepConfig","SaveAndPublish","isBlocking","FETCHING","LOADING","onNextClicked","SAVE_AND_EXIT","buttonText","getCurrentStepId","PrimaryButton","SaveAsDraft","_useWizardService2","NextButton","_useWizardService3","SAVE_AND_NEXT","BackButton","_useWizardService4","onBackClicked","BACK","UnifiedAppCampaignFooter","nextButtonText","nextDisabled","backButtonText","cancelButtonText","hideBackButton","isFirstStep","getIsFirstStep","isLastStep","getIsLastStep","tokens","childrenGap","CancelButton","EditFooter","SaveAndExitButton","StepList","currentStepId","displayMode","useResponsiveSize","Constants","ResponsiveSizeBreakpoints","stepListConfig","getStepListConfig","getDefaultOnItemClickFn","step","toStep","includes","steps","firstSubStep","s","isBehind","ResponsiveStepList","getOnItemClickFn","localStorageKey","LocalStorageKeys","UnifiedAppCampaignAdType","useLocalStorageStoreType","defaultStoreType","unifiedAppCampaignStoreType","appConfig","localStorage","supportsStorage","set","useCampaignStoreType","appSettings","APP_STORE_TO_STORE_TYPE","UnifiedAppCampaignWizard","withSiteMap","withRecommendationContext","siteMap","StoreTypes","AndroidPlayStore","wizardFlow","STORE_TYPE_TO_FLOW","routeToNavigateToWhenDone","getRoutePathById","initialStep","initialFlowFactors","initialWizardData","actions","onDone","onExited","UnifiedAppEditCampaignSettingsWizard","currentCampaign","UnifiedAppEditAssetGroupSettingsWizard","ErrorMessages","messages","stopPropagation","onValidate","results","isDirty","ValidationGroup","Campaign","AppAdPreviewControls","onSurfaceChange","onPlacementFilterChange","surfaceChoice","setSurfaceChoice","surfaceMap","Store","placementFilterByPreviewControlState","previewTemplateType","surfaceList","Pivot","onLinkClick","itemKey","PivotItem","headerText","getAdPreviewStyles","white","visibility","merginTop","carouselLayoutClassName","carouselControlsMsn","carouselControlsOthers","customCarouselRoot","carouselLayoutHeader","geCarouselStyleForMsan","previewCarousel","bottomCarouselNavigation","geCarouselStyleForOthers","placementCustomizationPredicate","currentAdData","_React$useState","_React$useState2","adData","setAdData","isAdDataUpdated","newAdData","debouncedSetAdData","cancel","getImageIndexFromId","isPortrait","getPreviewImageIndex","idRequestedByImageExperience","firstImageIndex","imagesToDisplay","previewImageIndex","flat","onAddAspectRatio","imagePlacement","isImageListUpdatedByPreview","onRemoveAspectRatio","onEdit","truncatedAdData","validAdData","substring","shortHeadlineMaxLength","longHeadlineMaxLength","descriptionMaxLength","func","placementFilter","setPlacementFilter","getFirstElement","getLogo","imageArr","PreviewCarouselLayout","usePreviewCarouselLayout","groupType","AdPlacementsGroupType","appAdStart","appAd","placementFilterPredicate","customDefaultImage","previewPlaceholder","surface","getCarouselControlsAndIndicatorsStyleBySurface","newPlacementFilter","headerButtonProps","getIsRequiredByIndex","enableAutoPlay","whitelistedSchemaPropertyKeysForModel","bulkModelToViewModelForCampaign","originalCampaignViewModel","pick","isString","parseInt","bulkModelToViewModelForLocationTargets","locationTargetsModel","CampaignCriterions","bulkModelToViewModelForDayTimeTargets","criterions","bulkUpsertCampaignSettingsEntityErrorMap","getBulkUploadErrorType","ERROR_ENTITY","CampaignLocation","CampaignRadius","CampaignNegativeLocation","CampaignLocationIntent","CampaignDayTimeCriterion","campaignViewModel","viewModelToBulkModelForCampaign","viewModelToBulkModelForLocationTargets","adSchedulesModel","viewModelToBulkModelForAdSchedules","modelToSave","createOrUpdateCampaign","bulkOrSystemError","isBulkWrappedResponse","entity","filteredErrors","removeReferencedEntityInvalidIdErrors","modelToViewModelForBulkErrors","console","warn","unexpectedBulkErrorToString","genericApiError","saveAssetGroupAndLinkedData","roasMtToUI","roas","localizeBudget","useLocalizeBudget","_usePreference","usePreference","preferenceNames","SelectedCurrency","currencyPreference","bidValueCpc","bidValueCpi","cpa","parseFloat","isInitialAdditionalDetailsChecked","currency","parseDecimal","getStylesFunction","getResponsiveStyles","WindowsAppStore","IosAppStore","AppStoreTypes","defaultPanels","panels","parseFileName","nameWithExtension","nameWithoutExt","ext","lastIndexOf","FilePicker","readFile","fileObjects","onFileRead","showErrors","onFileSelected","maximumFileSizeMB","isReachFileSizeLimit","getReachFileSizeLimitErrorMessage","selectedFiles","filePicker","fileIndex","selectedFilesCount","errorArr","fileObj","fileSizeMB","toFixed","reachLimit","handleDraging","isDraging","setState","isFileDraging","enableMultiple","allowedFileExtensions","showExtensionError","filePickerOptions","isNative","displayFilePath","useButton","BackboneFilePicker","on","render","remove","hide","testRef","bind","_this$props2","enableDrag","hideDescription","fileDraggerLabel","fileDraggerTip","fileDraggerDropDescription","useLargeStyling","fileButton","FileDragger","onReadFile","allowedFileExtension","onInvalidExtension","dropDescription","dragging","readFileAsDataURLAsync","file","reader","FileReader","addEventListener","readAsDataURL","MaximumImageFileSizeMB","MaximumVideoFileSizeMB","allowedVideoFileExtensions","defaultAllowedImageExtensions","ImageFilePicker","args","onFileReadInternal","imageSources","maximumFileSize","fileSize","errorLinkText","errorTopic","isMultimediaAd","isAudienceAd","LearnMoreLink","linkText","topic","_this$props3","minimumSize","maxCount","VideoFilePicker","isVideo","imageItemBox","imageContent","objectFit","uploadPreviewStyle","uploadPreviewContainer","uploadTitle","imagePreviewContainer","scrollBar","neutralLighterAlt","imageItemBoxRight","imageItemErrBox","imageName","progressBox","progressLine","statusIcon","completeIcon","green","transition","ongoingIcon","errorIcon","errorMsg","imageSize","UploadPreviewWithCustomPreview","assetList","PreviewComponent","showTitle","getFileSize","fileSizeStr","normalInfoBox","Progress","progressPercentage","progress","uploadingNum","min","previewComponentClasses","imageContentText","exceedMaxUploadNum","errorInfoBox","SimpleImagePreview","UploadPreview","BarUploadProgress","uploadProcessText","uploadedBytes","totalBytes","CircleUploadProgress","getCircleProgressStyle","circle","RadialProgress","UploadProgress","updateProgress","setProgress","uploadProgressBoundary","evt","boundary","loaded","total","updateFilePreviewArrayUploadProgress","previewArr","previous","generatePreviewArray","_ref3$files","files","fileSources","_ref3$customizedOptio","customizedOptions","source","validateImageAsync","imageSource","minimumWidth","minimumHeight","validateImageSyncAsyncWithDimensionParams","validateVideoAsync","defaultProtocols","buildUrl","_ref$protocol","protocol","_ref$url","_ref$protocols","protocols","prefix","parseUrl","regexResult","RegExp","exec","UrlEditor","_React$Component","onUrlChange","onChange","onUrlPartChange","rawInput","_parseUrl","newUrl","newProtocol","fullUrl","buildFullUrl","trim","onProtocolPartChange","_parseUrl2","_this$state","containerClassName","Select","selectClassName","ariaProtocolLabelledBy","ariaProtocolLabel","option","Input","inputClassName","ariaUrlLabelledBy","ariaUrlLabel","UrlEditorValidationAdapter","AdapterFactory","valueToInject","UrlEditorWithValidation","withError","withValidation","UrlEditorForArray","setUrl","urlSchema","properties","urls","isValidCustomUrlProtocol","test","doesUrlContainUnsafeCharacters","UrlLengthLimit","pathLengthLimitErrorMessages","pathLengthLimit","makeStyles","urlInputContainer","shorthands","urlInput","urlProtocol","customUrlProtocol","urlPath","UrlPathFluent","_value","urlDomain","getDomain","onPathChange","path","newValue","validatePath","onPath1Change","event","onPath2Change","mergeClasses","URL_COLON_SLASH_SLASH","DEFAULT_URL_PREFIX","getUrlPrefixAndDestination","defaultUrlPrefix","getUpdatedFullUrlOnPrefixUpdate","urlWithoutPrefix","newPrefix","slash","getUpdatedFullUrlOnTextUpdate","urlPrefix","_getUrlPrefixAndDesti","_getUrlPrefixAndDesti2","destination","urlPrefixOptions","UrlInputFluent","additionalValidation","prepopulateUrl","dropdownOptionAriaLabel","propertyKey","validateOnRender","additionalProperties","textFieldAriaLabel","enableSpecialCharactersValidation","hideProtocol","selectedOptionText","validateAndUpdateUrl","currentURL","finalUrlValidatorError","requiredUrlProtocolAndDomain","urlLengthLimit","lengthLimit","getUrlProtocolAndDomain","validateAdUrl","stringify","onUrlPrefixChanged","newItem","optionValue","onCustomUrlProtocolChanged","onTextChange","contentAfter","Dropdown","onOptionSelect","selectedOptions","Option","withNoProtocol","urlWithProtocol","validateSpecialCharacters","urlPathStyle","flexFlow","TextField","isEmptyUrl","_getUrlPrefixAndDesti3","dest","customizedValidation","suffix","selectedKey","grow","pug","module","exports","locals","pug_interp","pug_html","locals_for_with","date","formattedValue","metricName","escape","call","filterLocationData","granularity","metric","latitude","longitude","VIEWS","VIEW_STRINGS","MAP","TABLE","LOCATIONS_PER_PAGE","locationGranularity","country","county","stateOrProvince","city","postalCode","METRIC_STRINGS","Clicks","Impressions","CTR","AverageCPC","Spend","TopImpressionRatePercent","AbsoluteTopImpressionRatePercent","ConversionsCredit","PartialConversionRate","PartialConversionCPA","AdvertiserReportedRevenue","RevenueOnAdSpend","METRIC_FULL_STRINGS","bubbleColorForVNext","createPushpinOption","locationInfo","radius","svg","getPushPinIcon","anchor","x","y","roundClickableArea","formatLocationData","locationData","dateRange","maxValue","formatMetric","Latitude","Longitude","pushpinOption","max","getCustomPushpin","pinOption","Maps","Location","Pushpin","Point","formatDate","end","useTopLocationsData","willFetchData","willRender","setLocations","setIsLoading","setTopLocationValues","fetchCountryData","fetchStateOrProvinceData","fetchCountyData","fetchCityData","fetchPostalCodeData","fetchLocationData","countryData","countryLocationData","CountryLatitude","CountryLongitude","isUSorCanada","stateOrProvinceData","stateOrProvinceLocationData","countyData","countyLocationData","cityData","cityLocationData","postalCodeData","postalCodeLocationData","useMetricSelectorStyles","iconContainer","colorPaletteGreenBackground2","colorStatusSuccessForeground1","button","lineBreak","MetricSelector","onMetricChange","Menu","MenuTrigger","disableButtonEnhancement","Tooltip","relationship","MenuButton","MenuPopover","MenuList","MenuItem","useFooterStyles","footer","Footer","showPagination","paginationConfig","campaignType","onNext","onPrevious","useNoLocationsStyles","imageContainer","flexBasis","NoData","fit","Subtitle2","Body1","rowElement","line","mapElement","TableShimmer","Shimmer","shimmerElements","MapShimmer","useTableStyles","TopLocationsTable","rowsToDisplay","locationsPerPage","getPageLocations","Table","sortable","TableBody","TableRow","TableCell","useMapStyles","backdropFilter","TopLocationTarget","LocationTarget","constructor","topLocation","super","GeoPoint","ExpandedName","TARGETING_TYPE","Top","TopLocationsMap","mapRef","l","onGetTooltipHtmlContent","locationTarget","BingMapsView","usePaginationConfig","ceil","cardId","useCardStyles","wideContainer","wideContentWrapper","TopLocationsCardInternal","headerState","perfMarkerUtils","done","hasLocations","contentArea","isWideMode","viewOption","TopLocationsCard","BingMapsContextProvider","campaignApiServiceRoot","ServicesEndpoints","CampaignAPI","CampaignAPIPath","campaignApiToken","Token","bingMapsApiKey","getDisplayName","withBingMapsContext","preferenceFromServer","patchPreference","preferenceService","PreferenceContext","preferences","cardPreferences","cards","currentCardPreferences","card","initMetric","setMetric","newMetric","preferencesData","useViewSelectorStyles","WIDE_MODE_WIDTH","TopLocationViewSelector","dimensions","onViewSelected"],"sourceRoot":""}