{"version":3,"file":"static/js/application.async.landing~1d9a3a88.973ad42f.chunk.js","mappings":"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","sources":["../../../../component-react/packages/ad-editor-styles/src/ad-editor-style.js","../../../../component-react/packages/ad-editor-styles/src/ad-editor-override-style.js","../../../../component-react/packages/ad-placement-preview/src/business-name-with-ads.js","../../../../component-react/packages/ad-placement-preview/src/ad-placement-card-preview.js","../../../../component-react/packages/ad-placement-preview/src/ad-placement-preview.js","../../../../component-react/packages/ad-placement-preview/src/multi-image-preview.js","../../../../component-react/packages/ad-placement-preview/src/ad-placement-multi-image-preview.js","../../../../component-react/packages/ad-placements-grid-preview/src/ad-placements-grid-preview-style.js","../../../../component-react/packages/ad-placements-grid-preview/src/ad-placements-grid-preview.js","../../../../component-react/packages/ad-placements-grid-preview/src/ad-placements-grid-preview-panel.js","../../../../component-react/packages/ad-rotation/src/constants.js","../../../../component-react/packages/ad-rotation/src/validated-ad-rotation.js","../../../../component-react/packages/ad-rotation/src/ad-rotation-section.js","../../../../component-react/packages/add-image-hooks/src/legacy-i18n-map.js","../../../../component-react/packages/add-image-hooks/src/use-asset-library-image-picker.js","../../../../component-react/packages/add-image-hooks/src/use-image-picker.js","../../../../component-react/packages/add-image-hooks/src/use-website-suggestion.js","../../../../component-react/packages/ads-campaign-disclaimers/src/disclaimer-editor.js","../../../../component-react/packages/ads-campaign-disclaimers/src/disclaimer-selector.js","../../../../component-react/packages/ads-campaign-disclaimers/src/i18n/disclaimer-string-map.js","../../../../component-react/packages/ads-campaign-disclaimers/src/index.js","../../../../component-react/packages/ads-campaign-disclaimers/src/model/disclaimer-ad-extension-association.js","../../../../component-react/packages/ads-color-picker/src/color-picker/style.ts","../../../../component-react/packages/ads-color-picker/src/color-picker/Tooltip.tsx","../../../../component-react/packages/ads-color-picker/src/color-picker/hooks/index.ts","../../../../component-react/packages/ads-color-picker/src/color-picker/Palette.tsx","../../../../component-react/packages/ads-color-picker/src/color-picker/PaletteSkelton.tsx","../../../../component-react/packages/ads-color-picker/src/color-picker/index.tsx","../../../../component-react/packages/audience-demographic/src/index.js","../../../../component-react/packages/audience-demographic/src/style.js","../../../../component-react/packages/audience-demographic/src/utils/age-ranges.js","../../../../component-react/packages/audience-demographic/src/utils/genders.js","../../../../component-react/packages/audience-signals/src/constants/delivery-status.js","../../../../component-react/packages/audience-signals/src/constants/legacy-i18n.js","../../../../component-react/packages/audience-signals/src/view/audience-status.js","../../../../component-react/packages/audience-signals/src/styles/audience-status.js","../../../../component-react/packages/audience-signals/src/constants/age-range.js","../../../../component-react/packages/audience-signals/src/constants/gender.js","../../../../component-react/packages/audience-signals/src/constants/audience-group.js","../../../../component-react/packages/audience-signals/src/constants/strings.js","../../../../component-react/packages/audience-signals/src/model/audience-group.js","../../../../component-react/packages/audience-signals/src/view/audience-card.js","../../../../component-react/packages/audience-signals/src/styles/audience-card.js","../../../../component-react/packages/audience-signals/src/view/audience-actions.js","../../../../component-react/packages/audience-signals/src/styles/audience-actions.js","../../../../component-react/packages/audience-signals/src/view/without-easy-dismiss.js","../../../../component-react/packages/audience-signals/src/view/audience-picker.js","../../../../component-react/packages/audience-signals/src/styles/audience-picker.js","../../../../component-react/packages/audience-signals/src/view/audience-section.js","../../../../component-react/packages/audience-signals/src/styles/audience-section.js","../../../../component-react/packages/audience-signals/src/constants/profile.js","../../../../component-react/packages/audience-signals/src/view/demographic.js","../../../../component-react/packages/audience-signals/src/styles/demographic.js","../../../../component-react/packages/audience-signals/src/view/demographic-picker.js","../../../../component-react/packages/audience-signals/src/styles/demographic-picker.js","../../../../component-react/packages/audience-signals/src/view/demographics-section.js","../../../../component-react/packages/audience-signals/src/styles/demographics-section.js","../../../../component-react/packages/audience-signals/src/model/asset-group.js","../../../../component-react/packages/audience-signals/src/view/asset-groups-grid.js","../../../../component-react/packages/audience-signals/src/view/save-dialog.js","../../../../component-react/packages/audience-signals/src/styles/save-dialog.js","../../../../component-react/packages/audience-signals/src/styles/blocker.js","../../../../component-react/packages/audience-signals/src/view/audience-editor.js","../../../../component-react/packages/audience-signals/src/styles/audience-editor.js","../../../../component-react/packages/audience-signals/src/view/audience-no-data.js","../../../../component-react/packages/audience-signals/src/styles/audience-no-data.js","../../../../component-react/packages/audience-signals/src/view/audience-selector.js","../../../../component-react/packages/audience-signals/src/styles/audience-selector.js","../../../../component-react/packages/audience-signals/src/styles/audience-wizard.js","../../../../component-react/packages/audience-signals/src/view/audience-wizard.js","../../../../component-react/packages/basic-context-utils/src/use-overreact-variables.js","../../../../component-react/packages/basic-context-utils/src/use-pilot-value.js","../../../../component-react/packages/boost-contextual-target/src/contextual-options-helper.js","../../../../component-react/packages/boost-contextual-target/src/contextual-repository.js","../../../../component-react/packages/boost-contextual-target/src/index.js","../../../../component-react/packages/boost-contextual-target/src/contextual-target-styles.js","../../../../component-react/packages/boost-contextual-target/src/validated-contextual-target.js","../../../../component-react/packages/boost-placement-target/src/double-list-box.js","../../../../component-react/packages/boost-placement-target/src/placements.js","../../../../component-react/packages/boost-placement-target/src/placement-repository.js","../../../../component-react/packages/boost-placement-target/src/boost-placement-target-container.js","../../../../component-react/packages/boost-placement-target/src/validated-boost-placement-target-container.js","../../../../component-react/packages/budget-control/src/budget-input.js","../../../../component-react/packages/budget-control/src/estimated-monthly-budget.js","../../../../component-react/packages/budget-control/src/competitor-slider-view.js","../../../../component-react/packages/business-name/src/styles.js","../../../../component-react/packages/business-name/src/business-name-with-validation.js","../../../../component-react/packages/business-name/src/controlled-business-name-with-validation.js","../../../../component-react/packages/campaign-adgroup-selector-edm/src/campaign-adgroup-selector-style.js","../../../../component-react/packages/campaign-adgroup-selector-edm/src/util.js","../../../../component-react/packages/campaign-adgroup-selector-edm/src/legacy-i18n-map.js","../../../../component-react/packages/campaign-adgroup-selector-edm/src/campaign-adgroup-selector-edm.js","../../../../component-react/packages/campaign-adgroup-selector-edm/src/campaign-adgroup-selector-edm-view.js","../../../../component-react/packages/campaign-adgroup-settings-shared-styles/src/campaign-adgroup-settings-from-sel-design/shared-styles-from-sel-design.js","../../../../component-react/packages/campaign-adgroup-settings-shared-styles/src/creation-common-styles/disclaimer-extensions-styles.js","../../../../component-react/packages/campaign-adgroup-settings-shared-styles/src/creation-common-styles/settings-common-style.js","../../../../component-react/packages/campaign-adgroup-settings-shared-styles/src/campaign-creation-search-styles/campaign-settings-style.js","../../../../component-react/packages/campaign-adgroup-settings-shared-styles/src/campaign-creation-search-styles/adgroups-keywords-styles.js","../../../../component-react/packages/campaign-adgroup-settings-shared-styles/src/campaign-creation-search-styles/budget-bids-styles.js","../../../../component-react/packages/campaign-adgroup-settings-shared-styles/src/campaign-creation-search-styles/ad-extensions-styles.js","../../../../component-react/packages/campaign-adgroup-settings-shared-styles/src/campaign-creation-search-styles/dsa-campaign-styles.js","../../../../component-react/packages/campaign-adgroup-settings-shared-styles/src/campaign-creation-search-styles/adgroup-creation-styles.js","../../../../component-react/packages/campaign-adgroup-settings-shared-styles/src/creation-common-styles/double-list-a11y-hacker-styles.js","../../../../component-react/packages/campaign-adgroup-settings-shared-styles/src/campaign-creation-search-shopping-styles/index.js","../../../../component-react/packages/campaign-adgroup-settings-shared-styles/src/creation-common-styles/creation-common-style.js","../../../../component-react/packages/campaign-adgroup-settings-shared-styles/src/campaign-creation-audience-styles/audience-campaign-settings-styles.js","../../../../component-react/packages/campaign-adgroup-settings-shared-styles/src/campaign-creation-audience-styles/audience-targets-settings-styles.js","../../../../component-react/packages/campaign-adgroup-settings-shared-styles/src/campaign-creation-audience-styles/audience-budget-bids-styles.js","../../../../component-react/packages/campaign-adgroup-settings-shared-styles/src/campaign-creation-audience-styles/audience-ads-styles.js","../../../../component-react/packages/campaign-adgroup-settings-shared-styles/src/campaign-creation-audience-styles/audience-adgroup-creation-styles.js","../../../../component-react/packages/campaign-adgroup-settings-shared-styles/src/campaign-creation-audience-styles/audience-campaign-bmc-redirect-styles.js","../../../../component-react/packages/campaign-adgroup-settings-shared-styles/src/raise-bid-popup-styles/raise-bid-popup-style.js","../../../../component-react/packages/campaign-adgroup-settings-shared-styles/src/campaign-creation-smart-shopping-styles/index.js","../../../../component-react/packages/campaign-http/src/campaign-fetch-config.js","../../../../component-react/packages/campaign-http/src/use-campaign-fetch-provider.js","../../../../component-react/packages/campaign-http/src/use-fetch.js","../../../../component-react/packages/campaign-settings-utils/src/constants.js","../../../../component-react/packages/campaign-settings-utils/src/goal-confirm-logic-utils.js","../../../../component-react/packages/campaign-settings-wizard-v1-utils/src/use-confirm-dialog-config.js","../../../../component-react/packages/categorized-dropdown-list/src/categorized-dropdown-list.js","../../../../component-react/packages/categorized-dropdown-list/src/styles/categorized-dropdown-list-styles.js","../../../../component-react/packages/clipchamp-player/src/player/play-pause-button.js","../../../../component-react/packages/clipchamp-player/src/player/scrubber.js","../../../../component-react/packages/clipchamp-player/src/player/volume-controls.js","../../../../component-react/packages/clipchamp-player/src/player/time-and-duration.js","../../../../component-react/packages/clipchamp-player/src/player/index.js","../../../../component-react/packages/clipchamp-player/src/preview-modal/style.js","../../../../component-react/packages/clipchamp-player/src/preview-modal/index.js","../../../../component-react/packages/color-picker-with-click-outside/src/color-picker-with-click-outside.js","../../../../component-react/packages/common-generic-hooks/src/use-debounced-state.js","../../../../component-react/packages/common-generic-hooks/src/use-prev-prop.js","../../../../component-react/packages/common-generic-hooks/src/use-ref-init.js","../../../../component-react/packages/common-hooks/src/use-media-query.js","../../../../component-react/packages/common-hooks/src/use-confirm-dialog/confirm-dialog.js","../../../../component-react/packages/common-hooks/src/use-confirm-dialog/confirm-dialog-styles.js","../../../../component-react/packages/common-hooks/src/use-create-promise.js","../../../../component-react/packages/common-hooks/src/use-confirm-dialog/use-confirm-dialog.js","../../../../component-react/packages/common-hooks/src/use-create-hook-result-promise.js","../../../../component-react/packages/common-hooks/src/use-deep-memo.js","../../../../component-react/packages/common-hooks/src/use-user-level-preference.js","../../../../component-react/packages/common-hooks/src/use-responsive-styles.js","../../../../component-react/packages/common-hooks/src/use-open-popup-and-wait-for-message.js","../../../../component-react/packages/common-hooks/src/use-open-popup-and-wait-for-auth.js","../../../../component-react/packages/common-hooks/src/parse-url-search-and-hash-params.js","../../../../component-react/packages/common-hooks/src/use-instrument-logger.js","../../../../component-react/packages/common-hooks/src/use-page-active-time-tracker.js","../../../../component-react/packages/conditional-tooltip-host/src/conditional-tooltip-host.js","../../../../component-react/packages/confirm-dialog/src/index.js","../../../../component-react/packages/copilot-common/src/constants.js","../../../../component-react/packages/copilot-common/src/copilot-suggestions-tracker.js","../../../../component-react/packages/copilot-common/src/event-logs.js","../../../../component-react/packages/copilot-common/src/use-copilot-recommendation-survey.js","../../../../component-react/packages/copilot-common/src/utils.js","../../../../component-react/packages/copilot-common/src/use-event-log.js","../../../../component-react/packages/copilot-common/src/use-asset-library-event-log.js","../../../../component-react/packages/copilot-common/src/use-log-recommendations-api-error.js","../../../../component-react/packages/copilot-common/src/log-copilot-recommendations.js","../../../../component-react/packages/copilot-common/src/get-unique-assets-from-themes.js","../../../../component-react/packages/copilot-domain-data-service/localize/video-templates.js","../../../../component-react/packages/copilot-domain-data-service/services/repository/copilotDomainDataRepository.js","../../../../component-react/packages/copilot-domain-data-service/services/withCopilotDomainDataService.js","../../../../component-react/packages/copilot-experience/src/use-prefill.js","../../../../component-react/packages/copilot-experience/src/use-copilot.js","../../../../component-react/packages/copilot-experience/src/use-survey-triggers.js","../../../../component-react/packages/copilot-loggers/src/logging-context.js","../../../../component-react/packages/copilot-loggers/src/use-copilot-loggers.js","../../../../component-react/packages/cropped-image-view/src/cropped-image-view.js","../../../../component-react/packages/date-setting/src/utils.js","../../../../component-react/packages/date-setting/src/date-picker-basic.js","../../../../component-react/packages/date-setting/src/date-setting.js","../../../../component-react/packages/date-setting/src/validated-date-setting.js","../../../../component-react/packages/default-bid/src/default-bid.js","../../../../component-react/packages/default-bid/src/validated-default-bid.js","../../../../component-react/packages/default-bid/src/custom-validated-default-bid.js","../../../../component-react/packages/default-bid/src/utils.js","../../../../component-react/packages/display-plus-native-ads/src/styles/collapsible-panel.js","../../../../component-react/packages/display-plus-native-ads/src/styles/native-ads-styles.js","../../../../component-react/packages/display-plus-native-ads/src/constants.js","../../../../component-react/packages/display-plus-native-ads/src/styles/image-experience.js","../../../../component-react/packages/display-plus-native-ads/src/configs.js","../../../../component-react/packages/display-plus-native-ads/src/components/validated-call-to-action.js","../../../../component-react/packages/display-plus-native-ads/src/components/impressions-tracking.js","../../../../component-react/packages/display-plus-native-ads/src/components/disclaimer.js","../../../../component-react/packages/display-plus-native-ads/src/components/validated-anchor-ad.js","../../../../component-react/packages/display-plus-native-ads/src/components/advanced-settings.js","../../../../component-react/packages/display-plus-native-ads/src/components/text-asset-collection-with-recommendation-prefill/headlines-with-recommendation-prefill.js","../../../../component-react/packages/display-plus-native-ads/src/components/text-asset-collection-with-recommendation-prefill/long-headlines-with-recommendation-prefill.js","../../../../component-react/packages/display-plus-native-ads/src/components/text-asset-collection-with-recommendation-prefill/descriptions-with-recommendation-prefill.js","../../../../component-react/packages/display-plus-native-ads/src/components/text-asset-collection-with-recommendation-prefill/index.js","../../../../component-react/packages/display-plus-native-ads/src/components/text-asset-collection-with-copilot/index.js","../../../../component-react/packages/display-plus-native-ads/src/components/validated-hotspot.js","../../../../component-react/packages/display-plus-native-ads/src/styles/multi-ad-video-preview-styles.js","../../../../component-react/packages/display-plus-native-ads/src/components/multi-ad-video-preview.js","../../../../component-react/packages/display-plus-native-ads/src/display-plus-native-ads.js","../../../../component-react/packages/display-plus-native-ads/src/model/common.js","../../../../component-react/packages/display-plus-native-ads/src/model/native-ad.js","../../../../component-react/packages/display-plus-native-ads/src/model/native-ad-bulk.js","../../../../component-react/packages/display-plus-native-ads/src/components/multi-ad-format/ad-format-option.js","../../../../component-react/packages/display-plus-native-ads/src/components/audience-budget-bid-strategy.js","../../../../component-react/packages/display-plus-native-ads/src/styles/bid-strategy-styles.js","../../../../component-react/packages/display-plus-native-ads/src/components/section-shimmer.js","../../../../component-react/packages/display-plus-native-ads/src/company-target.js","../../../../component-react/packages/display-plus-native-ads/src/styles/company-target-styles.js","../../../../component-react/packages/display-plus-native-ads/src/job-function-target.js","../../../../component-react/packages/display-plus-native-ads/src/styles/job-function-target-styles.js","../../../../component-react/packages/display-plus-native-ads/src/industry-target.js","../../../../component-react/packages/display-plus-native-ads/src/styles/industry-target-styles.js","../../../../component-react/packages/display-plus-native-ads/src/predictive-targeting-control.js","../../../../component-react/packages/display-plus-native-ads/src/predictive-targeting.js","../../../../component-react/packages/dynamic-search-ad-preview-uapl/src/ad-preview.js","../../../../component-react/packages/dynamic-search-ad-preview-uapl/src/styles.js","../../../../component-react/packages/dynamic-search-ad-editor/src/ad-text.js","../../../../component-react/packages/dynamic-search-ad-editor/src/use-ad-customizer.js","../../../../component-react/packages/dynamic-search-ad-editor/src/style.js","../../../../component-react/packages/dynamic-search-ad-editor/src/index.js","../../../../component-react/packages/extension-images-control/src/styles.js","../../../../component-react/packages/extension-images-control/src/get-unified-ad-preview-config.js","../../../../component-react/packages/extension-images-control/src/extension-images-control.js","../../../../component-react/packages/fac-callout/src/components/close-icon-button.js","../../../../component-react/packages/fac-callout/src/components/header.js","../../../../component-react/packages/fac-callout/src/components/buttons.js","../../../../component-react/packages/fac-callout/src/components/redemption-step.js","../../../../component-react/packages/fac-callout/src/components/ui-blocker.js","../../../../component-react/packages/fac-callout/src/components/days-remaining.js","../../../../component-react/packages/fac-callout/src/utils.js","../../../../component-react/packages/fac-callout/src/components/coupon-description.js","../../../../component-react/packages/fac-callout/src/frontdoor.js","../../../../component-react/packages/fac-callout/src/not-interested.js","../../../../component-react/packages/fac-callout/src/remind-later.js","../../../../component-react/packages/fac-callout/src/claimed.js","../../../../component-react/packages/fac-callout/src/use-hide-callout-preference.js","../../../../component-react/packages/fac-callout/src/index.js","../../../../component-react/packages/fac-callout/src/i18n/legacy-keys.js","../../../../component-react/packages/fac-callout/src/configs/steps.js","../../../../component-react/packages/fac-callout/src/view.js","../../../../component-react/packages/brandkit-data-service/src/service/use-brandkit-data-service.ts","../../../../component-react/packages/brandkit-data-service/src/brand-kit-repository.ts","../../../../component-react/packages/brandkit-data-service/src/use-brandkit-service.ts","../../../../component-react/packages/brandkit-data-service/src/schema/brandkit.ts","../../../../component-react/packages/display-ads-editor/src/side-navigatioin.tsx","../../../../component-react/packages/display-ads-editor/src/components/color-picker/index.js","../../../../component-react/packages/display-ads-editor/src/components/call-to-action/constants.js","../../../../component-react/packages/display-ads-editor/src/components/call-to-action/index.js","../../../../component-react/packages/display-ads-editor/src/components/text-formatting-button/index.js","../../../../component-react/packages/display-ads-editor/src/components/text-formatting-dialogue/styles.js","../../../../component-react/packages/display-ads-editor/src/components/text-formatting-dialogue/index.js","../../../../component-react/packages/display-ads-editor/src/components/asset-text-collection-with-recommendations/styles.js","../../../../component-react/packages/display-ads-editor/src/components/asset-text-collection-with-recommendations/configs/index.js","../../../../component-react/packages/display-ads-editor/src/components/asset-text-collection-with-recommendations/components/text-assets-placeholder/index.js","../../../../component-react/packages/display-ads-editor/src/components/asset-text-collection-with-recommendations/components/long-headline-asset-collection/index.js","../../../../component-react/packages/display-ads-editor/src/components/asset-text-collection-with-recommendations/components/short-headline-asset-collection/index.js","../../../../component-react/packages/display-ads-editor/src/components/asset-text-collection-with-recommendations/components/description-asset-collection/index.js","../../../../component-react/packages/display-ads-editor/src/constants.ts","../../../../component-react/packages/display-ads-editor/src/components/asset-text-collection-with-recommendations/components/text-asset-collection-with-copilot.js","../../../../component-react/packages/display-ads-editor/src/components/asset-text-collection-with-recommendations/index.js","../../../../component-react/packages/display-ads-editor/src/action-pane/background-asset/style.ts","../../../../component-react/packages/display-ads-editor/src/action-pane/background-asset/index.tsx","../../../../component-react/packages/display-ads-editor/src/action-pane/upload-image.tsx","../../../../component-react/packages/display-ads-editor/src/utils.ts","../../../../component-react/packages/display-ads-editor/src/action-pane/index.tsx","../../../../component-react/packages/display-ads-editor/src/components/recommendations-banner/style.ts","../../../../component-react/packages/display-ads-editor/src/components/recommendations-banner/final-url.tsx","../../../../component-react/packages/display-ads-editor/src/reducer.ts","../../../../component-react/packages/display-ads-editor/src/context.tsx","../../../../component-react/packages/display-ads-editor/src/components/recommendations-banner/index.js","../../../../component-react/packages/display-ads-editor/src/adjust-view.tsx","../../../../component-react/packages/display-ads-editor/src/sizes-view.tsx","../../../../component-react/packages/display-ads-editor/src/ad-previews/filter-bar.tsx","../../../../component-react/packages/display-ads-editor/src/ad-previews/styles.ts","../../../../component-react/packages/display-ads-editor/src/ad-previews/zoom-control.tsx","../../../../component-react/packages/display-ads-editor/src/ad-previews/index.tsx","../../../../component-react/packages/display-ads-editor/src/display-template-summary-bar-control.tsx","../../../../component-react/packages/display-ads-editor/src/display-ads-editor.tsx","../../../../component-react/packages/display-ads-editor/src/display-ads-editor-drawer.tsx","../../../../component-react/packages/display-recommended-image/src/asset-images/index.ts","../../../../component-react/packages/display-recommended-image/src/style.ts","../../../../component-react/packages/display-recommended-image/src/ImagePreview.tsx","../../../../component-react/packages/display-recommended-image/src/index.tsx"],"sourcesContent":["import { imageExperienceContentStyle, editImageCommonStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nexport const adEditorStyle = ({ palette = {} }) => ({\r\n '& .kendo-listview-focused:focus, .kendo-listview-focused.k-state-focused': {\r\n outline: '1px dashed #333 !important',\r\n },\r\n '& .ads-creative': {\r\n marginBottom: 20,\r\n padding: '0 10px',\r\n borderWidth: 1,\r\n borderStyle: 'solid',\r\n borderColor: '#ddd #f1f1f1 #f1f1f1 #ddd',\r\n backgroundColor: '#f4f4f4',\r\n },\r\n '& .campaign-adextension-list': {\r\n border: 'thin solid #bbb',\r\n width: 330,\r\n backgroundColor: '#f4f4f4',\r\n padding: 5,\r\n lineHeight: '15px',\r\n },\r\n '& .preview-tabs-unselected': {\r\n backgroundColor: 'white',\r\n },\r\n '& .adExtension-previewbox': {\r\n marginBottom: 5,\r\n wordBreak: 'break-all',\r\n },\r\n '& .adgroup-display': {\r\n marginTop: 30,\r\n },\r\n '& .panel-body-ad': {\r\n padding: '0 15px 0 15px',\r\n },\r\n '& .panel-body-ad > .form-group > .adgroup-selector': {\r\n marginBottom: '32px',\r\n },\r\n '& .adgroup-display-title': {\r\n color: '#333',\r\n fontWeight: 'bold',\r\n marginBottom: 10,\r\n fontSize: 12,\r\n wordWrap: 'break-word',\r\n },\r\n '& .adgroup-display-keyword': {\r\n color: '#666',\r\n },\r\n '& .native-ad-previewbox': {\r\n minHeight: 72,\r\n width: 400,\r\n },\r\n '& .adEditor-container': {\r\n width: 1100,\r\n padding: 8,\r\n paddingBottom: '0',\r\n },\r\n '& .preview-nav-pills': {\r\n marginBottom: 15,\r\n },\r\n '& .base-preview-box': {\r\n float: 'left',\r\n background: '#fff',\r\n borderWidth: 1,\r\n borderStyle: 'solid',\r\n borderColor: '#ddd #f1f1f1 #f1f1f1 #ddd',\r\n width: 250,\r\n margin: '20px 6px 0',\r\n },\r\n '& .adEditor-listitem': {\r\n float: 'left',\r\n background: '#fff',\r\n borderWidth: 1,\r\n borderStyle: 'solid',\r\n borderColor: '#ddd #f1f1f1 #f1f1f1 #ddd',\r\n width: 250,\r\n margin: '20px 6px 0',\r\n padding: '7px 5px',\r\n height: 100,\r\n },\r\n '& .adEditor-listitem:focus, & .adEditor-listitem.k-state-focused': {\r\n outline: '1px dashed #333 !important',\r\n },\r\n '& .adEditor-error': {\r\n borderColor: 'red',\r\n },\r\n '& .adgroup-createBox': {\r\n float: 'left',\r\n background: '#fff',\r\n borderWidth: 1,\r\n borderStyle: 'solid',\r\n borderColor: '#ddd #f1f1f1 #f1f1f1 #ddd',\r\n width: 250,\r\n margin: '20px 6px 0',\r\n cursor: 'pointer',\r\n textAlign: 'center',\r\n },\r\n '& .adgroup-createBox-lg': {\r\n float: 'left',\r\n background: '#fff',\r\n borderWidth: 1,\r\n borderStyle: 'solid',\r\n borderColor: '#ddd #f1f1f1 #f1f1f1 #ddd',\r\n width: 250,\r\n margin: '20px 6px 0',\r\n cursor: 'pointer',\r\n textAlign: 'center',\r\n lineHeight: '100px',\r\n height: 100,\r\n },\r\n '& .adgroup-createBox-lg:focus, & .adgroup-createBox-lg.k-state-focused': {\r\n outline: '1px dashed #333 !important',\r\n },\r\n '& .adgroup-createBox-sm': {\r\n float: 'left',\r\n background: '#fff',\r\n borderWidth: 1,\r\n borderStyle: 'solid',\r\n borderColor: '#ddd #f1f1f1 #f1f1f1 #ddd',\r\n width: 250,\r\n margin: '20px 6px 0',\r\n cursor: 'pointer',\r\n textAlign: 'center',\r\n lineHeight: '75px',\r\n height: 75,\r\n },\r\n '& .adgroup-createBox-sm:focus, & .adgroup-createBox-sm.k-state-focused': {\r\n outline: '1px dashed #333 !important',\r\n },\r\n '& .adgroup-dashedBox': {\r\n border: '1px dashed #333',\r\n margin: '20px 6px 0',\r\n opacity: '.3',\r\n width: 250,\r\n display: 'inline-block',\r\n },\r\n '& .adgroup-dashedBox-lg': {\r\n border: '1px dashed #333',\r\n margin: '20px 6px 0',\r\n opacity: '.3',\r\n width: 250,\r\n display: 'inline-block',\r\n height: 100,\r\n },\r\n '& .adgroup-dashedBox-lg.k-state-focused': {\r\n opacity: '1',\r\n },\r\n '& .adgroup-dashedBox-sm': {\r\n border: '1px dashed #333',\r\n margin: '20px 6px 0',\r\n opacity: '.3',\r\n width: 250,\r\n display: 'inline-block',\r\n height: 75,\r\n },\r\n '& .adgroup-dashedBox-sm.k-state-focused': {\r\n opacity: '1',\r\n },\r\n '& .bing-preview-container': {\r\n width: 565,\r\n backgroundColor: 'white',\r\n minHeight: 90,\r\n padding: '10px 10px 10px 10px',\r\n },\r\n '& .bing-preview-answer': {\r\n padding: '12px 0 0 35px',\r\n },\r\n '& .preview-ad-slug': {\r\n color: '#737373',\r\n fontSize: 12,\r\n fontWeight: 'bold',\r\n },\r\n '& .ext__displayUrl__domain': {\r\n width: '38%',\r\n float: 'left',\r\n wordBreak: 'break-all',\r\n },\r\n '& .ext__displayUrl__separator': {\r\n width: '4%',\r\n float: 'left',\r\n },\r\n '& .ext__displayUrl__path': {\r\n width: '27%',\r\n float: 'left',\r\n },\r\n '& .ext__displayUrl__domain--placeholder': {\r\n color: '#A2A2A2',\r\n },\r\n '& .preview-ad__description': {\r\n wordWrap: 'break-word',\r\n },\r\n '& .adEditor-toolbar': {\r\n backgroundColor: '#939393',\r\n height: 24,\r\n width: 248,\r\n textAlign: 'right',\r\n paddingRight: 10,\r\n marginLeft: -5,\r\n top: 20,\r\n position: 'relative',\r\n },\r\n '& .adEditor-toolbar ul': {\r\n minWidth: 170,\r\n whiteSpace: 'nowrap',\r\n },\r\n '& .adEditor-toolbar ul li': {\r\n position: 'relative',\r\n },\r\n '& .adEditor-toolbar ul li.divider': {\r\n margin: '0',\r\n },\r\n '& .adEditor-toolbar ul li:hover ul': {\r\n display: 'inline-block',\r\n },\r\n '& .adEditor-toolbar ul li>.btn': {\r\n fontWeight: 'normal',\r\n lineHeight: '1.25',\r\n border: 'none',\r\n background: 'none',\r\n textAlign: 'left',\r\n width: '100%',\r\n padding: '7px 10px',\r\n },\r\n '& .adEditor-toolbar ul li>.btn>.caret': {\r\n marginLeft: 8,\r\n marginRight: 5,\r\n borderTop: '4px solid transparent',\r\n borderRight: '0 dotted',\r\n borderLeft: '4px solid #000',\r\n borderBottom: '4px solid transparent',\r\n },\r\n '& .adEditor-toolbar ul li>.btn:focus, .adEditor-toolbar ul li>.btn.k-state-focused': {\r\n outline: '1px dashed #333 !important',\r\n },\r\n '& .adEditor-toolbar ul li>.btn:hover': {\r\n backgroundColor: '#E5E5E5',\r\n },\r\n '& .adEditor-toolbar ul li label': {\r\n marginBottom: '0',\r\n fontWeight: 'normal',\r\n },\r\n '& .adEditor-toolbar>.btn-group>.btn-default': {\r\n fontWeight: 'normal',\r\n lineHeight: '1.25',\r\n border: 'none',\r\n background: 'none',\r\n textAlign: 'left',\r\n color: 'white',\r\n fontSize: 11,\r\n padding: 5,\r\n minWidth: 10,\r\n },\r\n '& .adEditor-toolbar>.btn-group>.btn-default>.caret': {\r\n marginLeft: 8,\r\n marginRight: 5,\r\n },\r\n '& .adEditor-toolbar>.btn-group>.btn-default:focus, .adEditor-toolbar>.btn-group>.btn-default.k-state-focused': {\r\n outline: '1px dashed #333 !important',\r\n },\r\n '& .adEditor-toolbar>.btn-group>.btn-default .caret': {\r\n borderTopColor: 'white',\r\n },\r\n '& .ad-rsa-filed-group .ad-pinned': {\r\n display: 'inline-block',\r\n fontSize: 9,\r\n width: 5,\r\n },\r\n '& .ad-rsa-filed-group .ad-rsa-pin-group': {\r\n position: 'absolute',\r\n top: 5,\r\n right: 11,\r\n },\r\n '& .ad-rsa-filed-group .ad-rsa-pin-group .visible': {\r\n visibility: 'visible !important',\r\n },\r\n '& .ad-rsa-filed-group .ad-rsa-pin-group .ad-field-position': {\r\n visibility: 'hidden',\r\n },\r\n '& .ad-rsa-filed-group:hover .ad-rsa-pin-group .ad-field-position': {\r\n visibility: 'visible',\r\n },\r\n '& .ad-rsa-add-headline, .ad-rsa-add-description': {\r\n textAlign: 'right',\r\n display: 'block',\r\n marginBottom: 20,\r\n },\r\n '& .ad-mma-add-headline, .ad-mma-add-long-headline, .ad-mma-add-description': {\r\n textAlign: 'right',\r\n textDecoration: 'none',\r\n display: 'block',\r\n '& .glyphicon-plus': {\r\n marginRight: 8,\r\n },\r\n '&.disabled': {\r\n color: palette.neutralTertiary,\r\n },\r\n '&:focus': {\r\n outline: '1px solid #605e5c',\r\n },\r\n },\r\n '& .crud-audience-ad .react-image-experience .crud-audience-ad-react .ad-edit-with-image-container': {\r\n overflow: 'visible',\r\n padding: '0 10px 0 0',\r\n marginLeft: -2,\r\n },\r\n '& .crud-audience-ad .react-image-experience .crud-audience-ad-react .ad-edit-with-image-container .ad-creation-content': {\r\n padding: '0 20px 5px 10px',\r\n },\r\n '& .crud-audience-ad .ad-edit-with-image-container': {\r\n overflow: 'visible',\r\n padding: '10px 50px 10px 15px',\r\n },\r\n '& .crud-audience-ad .ad-edit-with-image-container .image-manager-container .image-group': {\r\n display: 'inline-block',\r\n verticalAlign: 'top',\r\n },\r\n '& .crud-audience-ad .ad-edit-with-image-container .image-manager-container .image-group .img-type-title': {\r\n marginTop: '0',\r\n textAlign: 'left',\r\n fontWeight: 'bold',\r\n },\r\n '& .crud-audience-ad .ad-edit-with-image-container .image-manager-container .image-group .title-text': {\r\n display: 'inline',\r\n },\r\n '& .crud-audience-ad .ad-edit-with-image-container .image-required-error': {\r\n marginBottom: 15,\r\n },\r\n '& .crud-audience-ad .ad-edit-with-image-container .ad-creation-content': {\r\n padding: 15,\r\n },\r\n '& .crud-audience-ad .ad-edit-with-image-container .ad-creation-content .row': {\r\n maxWidth: 'none',\r\n },\r\n '& .crud-audience-ad .ad-edit-with-image-container .ad-creation-content .ad-properties-section .short-headline .input-group, .crud-audience-ad .ad-edit-with-image-container .ad-creation-content .ad-properties-section .long-headline .input-group, .crud-audience-ad .ad-edit-with-image-container .ad-creation-content .ad-properties-section .description .input-group, .crud-audience-ad .ad-edit-with-image-container .ad-creation-content .ad-properties-section .business-name .input-group': {\r\n width: '100%',\r\n },\r\n '& .crud-audience-ad .ad-edit-with-image-container .ad-creation-content .ad-properties-section .final-url .container-fluid, .crud-audience-ad .ad-edit-with-image-container .ad-creation-content .ad-properties-section .mobile-url .container-fluid': {\r\n padding: '0',\r\n },\r\n '& .crud-audience-ad .ad-edit-with-image-container .ad-creation-content .ad-properties-section .form-group': {\r\n marginLeft: '0',\r\n },\r\n '& .crud-audience-ad .ad-edit-with-image-container .ad-creation-content .ad-properties-section .impression-tracking-urls': {\r\n marginTop: '20px',\r\n },\r\n '& .crud-audience-ad .ad-edit-with-image-container .ad-creation-content .ad-properties-section .impression-tracking-urls .form-group .row': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n '& .crud-audience-ad .ad-edit-with-image-container .ad-creation-content .ad-properties-section .impression-tracking-urls .form-group .row label.col-sm-4.control-label.accordion': {\r\n width: 'auto',\r\n padding: '0',\r\n },\r\n '& .crud-audience-ad .ad-edit-with-image-container .ad-creation-content .ad-properties-section .impression-tracking-urls .form-group .impression-tracking-url-preview__container .row': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n marginBottom: '8px',\r\n },\r\n '& .crud-audience-ad .ad-edit-with-image-container .ad-creation-content .ad-properties-section .impression-tracking-urls .form-group .impression-tracking-url-preview__container .row .impression-tracking-url-preview__label': {\r\n paddingRight: '10px',\r\n whiteSpace: 'nowrap',\r\n },\r\n '& .crud-audience-ad .ad-edit-with-image-container .ad-creation-content .ad-properties-section .impression-tracking-urls .form-group .impression-tracking-url-preview__container .row .impression-tracking-url-preview__label span': {\r\n display: 'block',\r\n width: '150px',\r\n },\r\n '& .crud-audience-ad .ad-edit-with-image-container .ad-creation-content .ad-properties-section .impression-tracking-urls .form-group .impression-tracking-url-preview__container .impression-tracking-url-preview__value span': {\r\n display: 'block',\r\n maxWidth: '200px',\r\n overflowWrap: 'break-word',\r\n padding: '0',\r\n fontWeight: 'normal',\r\n },\r\n '& .image-experience-content .image-list-view-content': {\r\n position: 'relative',\r\n },\r\n '& .image-experience-content .image-list-view-content .remove-all-button': {\r\n marginBottom: 5,\r\n },\r\n '& .image-experience-content .image-list-view-content .image-list': {\r\n margin: '10px 0',\r\n },\r\n '& .image-experience-content .image-list-view-content .image-list .image-list-label': {\r\n fontSize: 12,\r\n fontWeight: '700',\r\n },\r\n '& .image-experience-content .image-list-view-content .image-list .image-list-item': {\r\n border: 'none',\r\n position: 'relative',\r\n float: 'left',\r\n padding: 5,\r\n fontSize: 12,\r\n },\r\n '& .image-experience-content .image-list-view-content .image-list .image-list-item .image-item-ratio-label': {\r\n marginTop: 5,\r\n height: '20px !important',\r\n textAlign: 'center',\r\n },\r\n '& .image-experience-content .image-list-view-content .image-list .image-list-item:hover .image-list-item-image .dropdown.btn-group': {\r\n display: 'block',\r\n },\r\n '& .image-experience-content .image-list-view-content .image-list .image-list-item:focus': {\r\n outline: 'none !important',\r\n },\r\n '& .image-experience-content .image-list-view-content .image-list .image-list-item .image-list-item-image': {\r\n position: 'relative',\r\n },\r\n '& .image-experience-content .image-list-view-content .image-list .image-list-item .image-list-item-image .dropdown.btn-group': {\r\n display: 'none',\r\n position: 'absolute',\r\n width: '100%',\r\n bottom: '0',\r\n },\r\n '& .image-experience-content .image-list-view-content .image-list .image-list-item .image-list-item-image .dropdown.btn-group.image-edit-dropdown .dropdown-toggle': {\r\n color: 'white',\r\n background: 'rgba(0,0,0,0.3)',\r\n width: '100%',\r\n border: '0',\r\n padding: 2,\r\n },\r\n '& .image-experience-content .image-list-view-content .image-list .image-list-item .image-list-item-image .dropdown.btn-group .dropdown-menu': {\r\n margin: '0',\r\n borderRadius: '0',\r\n border: '2px solid rgba(0,0,0,0.15)',\r\n },\r\n '& .image-experience-content .image-list-view-content .image-list .image-list-item .image-list-item-image .dropdown.btn-group .dropdown-menu li a': {\r\n paddingLeft: 10,\r\n },\r\n '& .image-experience-content .image-list-view-content .image-list .image-list-item.empty-image-list-item button': {\r\n border: 'dashed',\r\n background: 'white',\r\n borderColor: '#CCCCCC',\r\n borderWidth: 'thin',\r\n color: '#00a2ff',\r\n textAlign: 'center',\r\n },\r\n '& .image-experience-content .image-list-view-content .image-list .image-list-item.empty-image-list-item button:focus': {\r\n outline: 'none !important',\r\n },\r\n '& .new-preview-carousel-container': {\r\n width: 920,\r\n position: 'relative',\r\n marginTop: 15,\r\n right: '0',\r\n border: 'solid grey 1px',\r\n background: 'white',\r\n },\r\n '& .new-preview-carousel-container .ad-preview-title': {\r\n color: '#333333',\r\n fontWeight: '700',\r\n margin: '7px 0 0 10px',\r\n fontSize: 12,\r\n },\r\n '& .new-preview-carousel-container .alert.alert-info.form-group': {\r\n margin: '5px 0 0 0',\r\n },\r\n '& .new-preview-carousel-container .carousel.slide .carousel-indicators': {\r\n bottom: '0',\r\n },\r\n '& .new-preview-carousel-container .carousel.slide .carousel-indicators li': {\r\n border: '1px solid #999999',\r\n },\r\n '& .new-preview-carousel-container .carousel.slide .carousel-indicators li.active': {\r\n background: '#207697',\r\n },\r\n '& .new-preview-carousel-container .carousel.slide .carousel-control': {\r\n background: 'transparent',\r\n color: '#474747',\r\n width: 80,\r\n },\r\n '& .new-preview-carousel-container .carousel.slide .carousel-control .glyphicon-chevron-left': {\r\n top: '50%',\r\n marginLeft: -30,\r\n },\r\n '& .new-preview-carousel-container .carousel.slide .carousel-control .glyphicon-chevron-right': {\r\n top: '50%',\r\n marginRight: -30,\r\n },\r\n '& .new-preview-carousel-container .disclaimer-info': {\r\n fontSize: 12,\r\n padding: 5,\r\n },\r\n '& .new-preview-carousel-container .crop-image-button': {\r\n marginRight: 8,\r\n },\r\n '& .new-responsive-ad-preview-container': {\r\n fontFamily: '\"Segoe UI\",\"Segoe WP\",Arial,Sans-Serif',\r\n fontSize: 10,\r\n height: 540,\r\n position: 'relative',\r\n },\r\n '& .new-responsive-ad-preview-container .responsive-ad-preview-content': {\r\n boxSizing: 'unset',\r\n position: 'absolute',\r\n top: '47%',\r\n left: '50%',\r\n transform: 'translate(-50%, -50%)',\r\n margin: '0',\r\n overflow: 'hidden',\r\n },\r\n '& .new-responsive-ad-preview-container .preview-type-string': {\r\n position: 'absolute',\r\n bottom: 75,\r\n fontSize: 12,\r\n textAlign: 'center',\r\n width: '100%',\r\n },\r\n // '.image-experience-content .modal-container': {\r\n // position: 'fixed',\r\n // zIndex: '1070',\r\n // left: '0',\r\n // top: '0',\r\n // width: '100%',\r\n // height: '100%',\r\n // overflow: 'auto',\r\n // backgroundColor: 'rgba(0,0,0,0.4)',\r\n // },\r\n // '.image-experience-content .modal-content': {\r\n // backgroundColor: '#fefefe',\r\n // margin: '15% auto',\r\n // padding: 20,\r\n // border: '1px solid #888',\r\n // minWidth: 650,\r\n // width: '80%',\r\n // },\r\n '& .applookup': {\r\n width: 355,\r\n },\r\n '& .applookup .noresultsfound': {\r\n color: '#D90026',\r\n },\r\n '& .applookup-results-image': {\r\n height: 47,\r\n width: 47,\r\n },\r\n '& .appinfo-image': {\r\n height: 18,\r\n width: 18,\r\n },\r\n '& .appinfo-edit-button': {\r\n border: 'none',\r\n background: 'none',\r\n },\r\n '& .appinfo-appicon': {\r\n border: 'none',\r\n background: 'none',\r\n },\r\n '& .appresult': {\r\n padding: '0',\r\n },\r\n '& .campaign-adgroup-list': {\r\n border: 'thin solid #bbb',\r\n backgroundColor: '#E5E5E5',\r\n padding: 5,\r\n lineHeight: '15px',\r\n },\r\n '& .scrollable-appresult': {\r\n maxHeight: 250,\r\n overflow: 'auto',\r\n border: '1px #BBB solid',\r\n marginBottom: 5,\r\n },\r\n '& .applookup-results-row': {\r\n height: 60,\r\n borderBottom: '1px #BBB solid',\r\n },\r\n '& .applookup-results-table': {\r\n cursor: 'default',\r\n width: '100%',\r\n wordBreak: 'break-all',\r\n wordWrap: 'break-word',\r\n },\r\n '& .applookup-results-table tr:hover': {\r\n backgroundColor: '#F9F9F9',\r\n },\r\n '& .applookup-results-table img': {\r\n marginLeft: 5,\r\n },\r\n '& .appinfo-table': {\r\n border: '1px solid #BBB',\r\n backgroundColor: '#fff',\r\n cursor: 'default',\r\n height: 60,\r\n width: '100%',\r\n wordBreak: 'break-all',\r\n wordWrap: 'break-word',\r\n },\r\n '& .appinfo-table img': {\r\n marginLeft: 5,\r\n },\r\n '& .change-app-edit': {\r\n float: 'right',\r\n marginTop: 4,\r\n display: 'inline-block !important',\r\n },\r\n '& .block-app-icon': {\r\n display: 'inline-block !important',\r\n marginTop: 2,\r\n },\r\n '& .lookup-placeholder': {\r\n color: '#605e5c',\r\n cursor: 'default',\r\n },\r\n '& .dropdownContainer': {\r\n width: '100% !important',\r\n },\r\n '& .applookup-popover .popover': {\r\n top: '25px !important',\r\n },\r\n '& .applookup-popover .blocker-size, .applookup-selected-popover .blocker-size': {\r\n height: '38%',\r\n },\r\n '& .applookup-dropdown .popover': {\r\n left: '14px !important',\r\n marginTop: '0 !important',\r\n },\r\n '& .edit-selectedapp': {\r\n marginRight: 2,\r\n },\r\n '& .app-icon': {\r\n width: 50,\r\n },\r\n '& .app-details': {\r\n width: 220,\r\n padding: '2px 0 2px 2px',\r\n },\r\n '& .app-actions': {\r\n paddingTop: 3,\r\n verticalAlign: 'text-top',\r\n width: 15,\r\n },\r\n '& .app-result-details': {\r\n width: 260,\r\n padding: 2,\r\n },\r\n '& .wrap-long-text': {\r\n wordBreak: 'break-all',\r\n wordWrap: 'break-word',\r\n },\r\n '& .validation-error': {\r\n border: '1px solid #D90026 !important',\r\n backgroundColor: '#FFEBEB',\r\n },\r\n '& .itemTemplate-text': {\r\n display: 'inline-block',\r\n paddingLeft: 5,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n width: '100%',\r\n verticalAlign: 'bottom',\r\n },\r\n '& .action-radio td': {\r\n paddingRight: 10,\r\n },\r\n '& .preview-wrap-long-text': {\r\n wordWrap: 'break-word',\r\n },\r\n '& .app-install-mobile-preview': {\r\n marginTop: 5,\r\n },\r\n '& .app-install-mobile-preview .preview-app-details div': {\r\n width: 130,\r\n height: 38,\r\n overflow: 'hidden',\r\n },\r\n '& .bulkedit .doubleListBox .dlb-source-container, & .bulkedit .doubleListBox .dlb-selected-container': {\r\n height: 270,\r\n },\r\n '& .app-install-tablet-preview': {\r\n marginTop: 5,\r\n },\r\n '& .app-install-tablet-preview .preview-app-details div': {\r\n width: 335,\r\n height: 38,\r\n overflow: 'hidden',\r\n },\r\n '& .errors-container': {\r\n maxWidth: 915,\r\n },\r\n '& .errors-container .error-grid-container': {\r\n paddingTop: 10,\r\n height: 'auto',\r\n },\r\n '& .errors-container .error-grid-container .viewport': {\r\n maxHeight: 200,\r\n },\r\n '& .errors-container .error-grid-container td': {\r\n wordBreak: 'normal',\r\n },\r\n '& .errors-container .error-grid-container .error-grid-col': {\r\n backgroundColor: '#fff',\r\n paddingLeft: 5,\r\n paddingRight: 5,\r\n },\r\n '& .preview-app-details': {\r\n fontFamily: 'Arial,Helvetica,Sans-Serif',\r\n fontSize: 13,\r\n },\r\n '& .preview-app-icon': {\r\n width: 38,\r\n },\r\n '& .preview-app-icon img': {\r\n height: 36,\r\n width: 36,\r\n },\r\n '& .preview-app-icon-border': {\r\n border: '1px solid #A2A2A2',\r\n },\r\n '& .preview-app-actions button': {\r\n background: 'transparent',\r\n border: '1px solid #BBB',\r\n color: '#0044CC',\r\n opacity: '1 !important',\r\n },\r\n '& .app-install-sample-image-preview': {\r\n height: 30,\r\n width: 30,\r\n background: 'transparent url(\\'../Images/Clus/AppIcons2.png\\') no-repeat scroll -2px -162px',\r\n },\r\n '& .app-preview-title': {\r\n fontFamily: '\\'Segoe UI\\',Arial,Helvetica,Sans-Serif',\r\n fontSize: '18px !important',\r\n },\r\n\r\n '& .website-image-opt-in': {\r\n marginTop: 32,\r\n\r\n '& a.helpbutton': {\r\n verticalAlign: 'top',\r\n },\r\n\r\n '& #website-image-opt-in-checkbox': {\r\n verticalAlign: 'bottom',\r\n marginLeft: -28,\r\n marginRight: 8,\r\n },\r\n\r\n '& span.website-image-checkbox-label': {\r\n display: 'inline-block',\r\n paddingLeft: 28,\r\n },\r\n },\r\n ...imageExperienceContentStyle(),\r\n ...editImageCommonStyle(),\r\n});\r\n","import {\r\n adCustomizersStyle,\r\n alertStyle as alertOverrideStyle,\r\n buttonInputStyle,\r\n crudAdStyle,\r\n crudAudienceAdStyle,\r\n underlineLinkStyle,\r\n} from '@bingads-webui-campaign-react/common-styles';\r\nimport { adEditorStyle } from './ad-editor-style';\r\n\r\nconst adEditorFormOverrideStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n ...adCustomizersStyle({ palette, iconFontFamily }),\r\n ...crudAdStyle({ palette, iconFontFamily }),\r\n ...crudAudienceAdStyle({ palette, iconFontFamily }),\r\n});\r\n\r\nexport const adEditorOverrideStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '& .ad-editor__container, & .adEditor-container, & .ad-editor-form__container, & .crud-audience-ad, & div[data-step-name=\"audience-campaign-creation-wizard-step3\"], & div[data-step-name=\"audience-adgroup-creation-wizard-step3\"]': {\r\n ...adEditorStyle({ palette }),\r\n ...adEditorFormOverrideStyle({ palette, iconFontFamily }),\r\n ...alertOverrideStyle({ palette, iconFontFamily }),\r\n ...buttonInputStyle({ palette }),\r\n },\r\n '@global': {\r\n '.modal-dialog .modal-content .modal-body .form-group .impression-tracking-url-dialog-content-container': {\r\n margin: '0 16px',\r\n },\r\n '.modal-dialog .modal-content .modal-body .form-group .impression-tracking-url-dialog-content-container .impression-tracking-url-dialog-description': {\r\n marginBottom: '20px',\r\n },\r\n '.modal-dialog .modal-content .modal-body .form-group .impression-tracking-url-dialog-content-container .impression-tracking-url-dialog-textarea-description': {\r\n marginBottom: '10px',\r\n },\r\n '.modal-dialog .modal-content .modal-body .form-group .impression-tracking-url-dialog-content-container .impression-tracking-url-error-message': {\r\n color: 'red',\r\n },\r\n },\r\n});\r\n\r\nexport const adEditorPanelOverrideStyle = ({ palette = {} }) => ({\r\n '&.panel, & .panel': {\r\n '& .panel-title': {\r\n fontSize: 20,\r\n fontWeight: '600 !important',\r\n lineHeight: '27px',\r\n },\r\n '& .panel-body .ad-editor-form__container': {\r\n width: 1200,\r\n\r\n '& div[data-type=\"AppInstall\"], & div[data-type=\"Text\"]': {\r\n minHeight: 700,\r\n },\r\n\r\n '& input.btn': {\r\n marginRight: 8,\r\n },\r\n '& ul, & ol': {\r\n listStyle: 'none',\r\n paddingLeft: 0,\r\n },\r\n '& .ui-tabs .ui-tabs-nav': {\r\n paddingLeft: 0,\r\n },\r\n '& > h5': {\r\n fontSize: 16,\r\n lineHeight: '24px',\r\n fontWeight: 400,\r\n },\r\n '& > .row': {\r\n flexWrap: 'wrap',\r\n },\r\n },\r\n '& .form-group.save-bar.appEditor-save-container': {\r\n borderTop: '1px solid #EDEBE9',\r\n bottom: 0,\r\n margin: '0 -16px',\r\n padding: '16px',\r\n position: 'fixed',\r\n width: '100%',\r\n },\r\n '&.ad-editor-panel .panel-body': {\r\n height: '100%',\r\n marginBottom: '65px',\r\n '& .alert > .alert-info-inline': {\r\n ...underlineLinkStyle({ palette, isGreyBackground: true }),\r\n },\r\n ...underlineLinkStyle({ palette, elementLocator: 'a.HelpTopic' }),\r\n },\r\n // ad suggestion\r\n '& .recommended-ad-editor': {\r\n width: '100%',\r\n '& .appEditor-save-container': {\r\n ...buttonInputStyle({ palette }),\r\n },\r\n },\r\n },\r\n ...adEditorOverrideStyle({ palette }),\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport adsicon from './icon.png';\r\n\r\nexport class BusinessNameWithAds extends React.PureComponent {\r\n render() {\r\n return (\r\n
\r\n {\r\n !this.props.hideLabel &&\r\n \r\n {this.props.i18n.getString('Entity_Ads')}\r\n \r\n }\r\n { !this.props.onlyIcon &&\r\n \r\n {this.props.businessName}\r\n \r\n }\r\n {\r\n this.props.showAdsIcon &&\r\n \"icon\"\r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nBusinessNameWithAds.propTypes = {\r\n businessName: PropTypes.string.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n onlyIcon: PropTypes.bool,\r\n hideLabel: PropTypes.bool,\r\n};\r\n\r\nBusinessNameWithAds.defaultProps = {\r\n onlyIcon: false,\r\n hideLabel: false,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport { MultiLineEllipsisText } from '@bingads-webui-react/multiline-ellipsis';\r\nimport { isValidUrl } from '@bingads-webui/url-util';\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\nimport { ImageExperienceImage } from '@bingads-webui-campaign-react/image-experience';\r\nimport { ImageModelPropTypes } from '@bingads-webui-campaign/image-experience-proptypes';\r\nimport { BusinessNameWithAds } from './business-name-with-ads';\r\n\r\nexport class AdPlacementCardPreview extends React.PureComponent {\r\n constructor(props, context) {\r\n super(props, context);\r\n\r\n this.multiLineTextRefs = [\r\n React.createRef(),\r\n React.createRef(),\r\n React.createRef(),\r\n ];\r\n }\r\n\r\n componentDidUpdate() {\r\n this.multiLineTextRefs.forEach((ref) => {\r\n if (ref.current) {\r\n ref.current.processText();\r\n }\r\n });\r\n }\r\n\r\n render() {\r\n const {\r\n hideLabel,\r\n multipleLineLongHeadline,\r\n showImage,\r\n multipleDescription,\r\n dismissText,\r\n showHotspots,\r\n hotspots,\r\n isMultimediaAd,\r\n previewContentClassName,\r\n isMultiMediaAdsPhase2Enabled,\r\n previewTexts,\r\n logo,\r\n showLogo,\r\n } = this.props;\r\n const imageContainerClassName =\r\n this.props.showGradient ?\r\n 'gradient image-container' :\r\n 'image-container';\r\n const srcForCroppedImageView = this.props.isAdCreatorEnabled\r\n ? this.props.image.FinalSrc\r\n : this.props.image.Src;\r\n\r\n const showMultipleDescription = multipleDescription || (isMultimediaAd && isMultiMediaAdsPhase2Enabled);\r\n\r\n return (\r\n \r\n
\r\n {\r\n this.props.showAdsLabel &&\r\n isMultimediaAd && isMultiMediaAdsPhase2Enabled &&\r\n
\r\n {this.props.i18n.getString('Entity_Ads')}\r\n
\r\n }\r\n {\r\n isMultimediaAd && isMultiMediaAdsPhase2Enabled &&\r\n
\r\n }\r\n {\r\n showImage &&\r\n \r\n }\r\n
\r\n {\r\n previewContentClassName === 'boost-discover-card' &&\r\n
{this.props.i18n.getString(_TL_('Discover'))}
\r\n }\r\n {\r\n previewContentClassName === 'boost-windows' &&\r\n
\r\n
{this.props.i18n.getString(_TL_('Welcome back. Dismiss the lock screen to sign back into Windows.'))}
\r\n
{this.props.i18n.getString(_TL_('10:36'))}
\r\n
{this.props.i18n.getString(_TL_('Tuesday, October 18'))}
\r\n
\r\n }\r\n {showLogo && logo &&\r\n
\r\n \r\n
\r\n }\r\n\r\n {\r\n showHotspots &&\r\n hotspots.map((hotspot, index) => (\r\n // eslint-disable-next-line\r\n
\r\n
{hotspot.title}
\r\n
{hotspot.actionText}
\r\n
\r\n ))\r\n }\r\n\r\n
\r\n {\r\n this.props.showShortHeadline &&\r\n (\r\n isMultimediaAd ? (\r\n isMultiMediaAdsPhase2Enabled &&\r\n
\r\n {previewTexts.shortHeadline}\r\n
\r\n ) :\r\n \r\n )\r\n }\r\n {\r\n this.props.showLongHeadline &&\r\n (\r\n multipleLineLongHeadline ?\r\n
\r\n {previewTexts.longHeadline}\r\n
:\r\n \r\n )\r\n }\r\n {\r\n this.props.showUrl &&\r\n (\r\n isMultimediaAd ? (\r\n isMultiMediaAdsPhase2Enabled &&\r\n
\r\n {isValidUrl(previewTexts.url) ?\r\n new URL(previewTexts.url).origin : previewTexts.url}\r\n
\r\n ) :\r\n \r\n )\r\n }\r\n {\r\n this.props.showDescription &&\r\n (\r\n showMultipleDescription ?\r\n
\r\n {previewTexts.description}\r\n
\r\n :\r\n \r\n )\r\n }\r\n {\r\n this.props.showBusinessName &&\r\n \r\n }\r\n {\r\n this.props.showAction &&\r\n previewTexts.callToAction &&\r\n \r\n }\r\n {\r\n this.props.showAction &&\r\n previewTexts.callToAction &&\r\n dismissText &&\r\n \r\n }\r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nAdPlacementCardPreview.propTypes = {\r\n image: ImageModelPropTypes.isRequired,\r\n previewTexts: PropTypes.shape({\r\n shortHeadline: PropTypes.string,\r\n longHeadline: PropTypes.string,\r\n description: PropTypes.string,\r\n businessName: PropTypes.string,\r\n url: PropTypes.string,\r\n callToAction: PropTypes.string,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n showShortHeadline: PropTypes.bool,\r\n showLongHeadline: PropTypes.bool,\r\n showDescription: PropTypes.bool,\r\n multipleLineLongHeadline: PropTypes.bool,\r\n hotspots: PropTypes.arrayOf(PropTypes.shape({\r\n title: PropTypes.string,\r\n desc: PropTypes.string,\r\n actionText: PropTypes.string,\r\n uri: PropTypes.string,\r\n })),\r\n multipleDescription: PropTypes.bool,\r\n showGradient: PropTypes.bool,\r\n dismissText: PropTypes.string,\r\n previewContentClassName: PropTypes.string.isRequired,\r\n additionalSetting: PropTypes.shape({\r\n imagePreviewHeight: PropTypes.number.isRequired,\r\n aspectRatio: PropTypes.number.isRequired,\r\n logoHeight: PropTypes.number,\r\n }).isRequired,\r\n logo: PropTypes.instanceOf(ImageExperienceImage),\r\n showBusinessName: PropTypes.bool,\r\n showUrl: PropTypes.bool,\r\n showAction: PropTypes.bool,\r\n showAdsLabel: PropTypes.bool,\r\n showHotspots: PropTypes.bool,\r\n showLogo: PropTypes.bool,\r\n showImage: PropTypes.bool,\r\n hideLabel: PropTypes.bool,\r\n isMultimediaAd: PropTypes.bool,\r\n isMultiMediaAdsPhase2Enabled: PropTypes.bool,\r\n isAdCreatorEnabled: PropTypes.bool,\r\n};\r\n\r\nAdPlacementCardPreview.defaultProps = {\r\n showShortHeadline: false,\r\n showLongHeadline: false,\r\n showDescription: false,\r\n dismissText: null,\r\n showGradient: false,\r\n showHotspots: false,\r\n showBusinessName: true,\r\n hotspots: [],\r\n multipleLineLongHeadline: false,\r\n logo: null,\r\n showUrl: false,\r\n multipleDescription: false,\r\n showAction: false,\r\n hideLabel: false,\r\n showLogo: false,\r\n showImage: true,\r\n showAdsLabel: false,\r\n isMultimediaAd: false,\r\n isMultiMediaAdsPhase2Enabled: false,\r\n isAdCreatorEnabled: false,\r\n};\r\n","import React from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { ImageModelPropTypes } from '@bingads-webui-campaign/image-experience-proptypes';\r\nimport { AdPlacementCardPreview } from './ad-placement-card-preview';\r\n\r\nexport class AdPlacementPreview extends React.PureComponent {\r\n render() {\r\n const containerOpacity = !this.props.opacityChangeEnabled || this.props.image.IsIncluded ? '100%' : '50%';\r\n const cardProps = _.pick(\r\n this.props,\r\n 'image',\r\n 'previewTexts',\r\n 'i18n',\r\n 'showShortHeadline',\r\n 'showLongHeadline',\r\n 'showDescription',\r\n 'showGradient',\r\n 'previewContentClassName',\r\n 'additionalSetting',\r\n 'showBusinessName',\r\n 'multipleDescription',\r\n 'multipleLineLongHeadline',\r\n 'hideLabel',\r\n 'showUrl',\r\n 'showAction',\r\n 'showAdsLabel',\r\n 'showAdsIcon',\r\n 'dismissText',\r\n 'showHotspots',\r\n 'showImage',\r\n 'hotspots',\r\n 'showLogo',\r\n 'logo',\r\n 'isMultimediaAd',\r\n 'isMultiMediaAdsPhase2Enabled',\r\n 'isAdCreatorEnabled'\r\n );\r\n\r\n return (\r\n
\r\n \r\n
\r\n {this.props.i18n.getString(this.props.additionalSetting.previewTypeStringKey)}\r\n
\r\n {this.props.children}\r\n
\r\n );\r\n }\r\n}\r\n\r\nAdPlacementPreview.propTypes = {\r\n image: ImageModelPropTypes.isRequired,\r\n previewTexts: PropTypes.shape({\r\n shortHeadline: PropTypes.string,\r\n longHeadline: PropTypes.string,\r\n description: PropTypes.string,\r\n businessName: PropTypes.string,\r\n url: PropTypes.string,\r\n callToAction: PropTypes.string,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n showShortHeadline: PropTypes.bool,\r\n showLongHeadline: PropTypes.bool,\r\n showDescription: PropTypes.bool,\r\n showGradient: PropTypes.bool,\r\n previewContentClassName: PropTypes.string.isRequired,\r\n showBusinessName: PropTypes.bool,\r\n showUrl: PropTypes.bool,\r\n showAction: PropTypes.bool,\r\n opacityChangeEnabled: PropTypes.bool,\r\n showAdsLabel: PropTypes.bool,\r\n isMultimediaAd: PropTypes.bool,\r\n isMultiMediaAdsPhase2Enabled: PropTypes.bool,\r\n isAdCreatorEnabled: PropTypes.bool,\r\n additionalSetting: PropTypes.shape({\r\n previewTypeStringKey: PropTypes.string.isRequired,\r\n }).isRequired,\r\n children: PropTypes.node,\r\n};\r\n\r\nAdPlacementPreview.defaultProps = {\r\n showShortHeadline: false,\r\n opacityChangeEnabled: false,\r\n showLongHeadline: false,\r\n showDescription: false,\r\n showGradient: false,\r\n showBusinessName: true,\r\n showUrl: false,\r\n showAction: false,\r\n showAdsLabel: false,\r\n isMultimediaAd: false,\r\n isMultiMediaAdsPhase2Enabled: false,\r\n isAdCreatorEnabled: false,\r\n children: null,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Carousel } from '@bingads-webui-react/primitive-unthemed';\r\nimport { MultiLineEllipsisText } from '@bingads-webui-react/multiline-ellipsis';\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\nimport { ImageExperienceImage, constants as C } from '@bingads-webui-campaign-react/image-experience-model';\r\n\r\nexport class MultiImagePreview extends React.PureComponent {\r\n constructor(props, context) {\r\n super(props, context);\r\n\r\n this.multiLineTextRefs = [\r\n React.createRef(),\r\n React.createRef(),\r\n React.createRef(),\r\n React.createRef(),\r\n ];\r\n\r\n this.state = {\r\n index: 0,\r\n direction: null,\r\n };\r\n }\r\n\r\n componentDidUpdate() {\r\n this.multiLineTextRefs.forEach((ref) => {\r\n if (ref.current) {\r\n ref.current.processText();\r\n }\r\n });\r\n }\r\n\r\n handleSelect = (selectedIndex, e) => {\r\n this.setState({\r\n index: selectedIndex,\r\n direction: e.direction,\r\n });\r\n }\r\n\r\n render() {\r\n const imageContainerClassName = 'image-container';\r\n const { index, direction } = this.state;\r\n\r\n return (\r\n
\r\n
\r\n {\r\n this.props.isInsideImages &&\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n }\r\n {\r\n !this.props.isInsideImages &&\r\n
\r\n \r\n {\r\n this.props.images.map(imageObj => (\r\n \r\n \r\n

\r\n {this.props.i18n.getString('Entity_Ads')}\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\nMultiImagePreview.propTypes = {\r\n images: PropTypes.arrayOf(PropTypes.instanceOf(ImageExperienceImage)).isRequired,\r\n previewTexts: PropTypes.shape({\r\n longHeadline: PropTypes.string,\r\n extensionHeadline: PropTypes.string,\r\n description: PropTypes.string,\r\n url: PropTypes.string,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n parseDecimal: PropTypes.func.isRequired,\r\n }).isRequired,\r\n imagePreviewHeight: PropTypes.number,\r\n isInsideImages: PropTypes.bool,\r\n};\r\n\r\nMultiImagePreview.defaultProps = {\r\n imagePreviewHeight: null,\r\n isInsideImages: false,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { MultiLineEllipsisText } from '@bingads-webui-react/multiline-ellipsis';\r\nimport { ImageExperienceImage } from '@bingads-webui-campaign-react/image-experience-model';\r\nimport { MultiImagePreview } from './multi-image-preview';\r\n\r\nexport class AdPlacementMultiImagePreview extends React.PureComponent {\r\n constructor(props, context) {\r\n super(props, context);\r\n this.multiLineTextRefs = [\r\n React.createRef(),\r\n React.createRef(),\r\n React.createRef(),\r\n ];\r\n\r\n this.isMobilePreview = (this.props.previewType === 'MobileMultiImage');\r\n }\r\n\r\n componentDidUpdate() {\r\n this.multiLineTextRefs.forEach((ref) => {\r\n if (ref.current) {\r\n ref.current.processText();\r\n }\r\n });\r\n }\r\n\r\n render() {\r\n const {\r\n images,\r\n previewTexts,\r\n previewContentClassName,\r\n imagePreviewHeight,\r\n i18n,\r\n } = this.props;\r\n const finalPreviewContentClassName =\r\n `${previewContentClassName} responsive-ad-preview-content`;\r\n\r\n this.isMobilePreview = (this.props.previewType === 'MobileMultiImage');\r\n\r\n return (\r\n !this.isMobilePreview ?\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n {\r\n images.map(imageObj => (\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\nAdPlacementMultiImagePreview.propTypes = {\r\n images: PropTypes.arrayOf(PropTypes.instanceOf(ImageExperienceImage)).isRequired,\r\n previewTexts: PropTypes.shape({\r\n longHeadline: PropTypes.string,\r\n description: PropTypes.string,\r\n url: PropTypes.string,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n parseDecimal: PropTypes.func.isRequired,\r\n }).isRequired,\r\n previewType: PropTypes.string.isRequired,\r\n previewContentClassName: PropTypes.string.isRequired,\r\n imagePreviewHeight: PropTypes.number.isRequired,\r\n};\r\n\r\n","import { fabricPanelFixStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nexport const getStyles = () => ({\r\n gridContainer: ({\r\n cellsNumberPerRow,\r\n }) => ({\r\n display: 'grid',\r\n gridTemplateColumns: `repeat(${cellsNumberPerRow}, 1fr)`,\r\n gridGap: 24,\r\n marginTop: 16,\r\n }),\r\n cellContainer: ({\r\n cellHeight,\r\n }) => ({\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 padding: '12px 12px 16px 16px',\r\n width: 644,\r\n height: cellHeight,\r\n }),\r\n});\r\n\r\nexport const getPanelStyle = () => {\r\n const styles = {\r\n footer: {\r\n ...fabricPanelFixStyle().footer,\r\n },\r\n commands: {\r\n ...fabricPanelFixStyle().commands,\r\n paddingTop: 18,\r\n paddingBottom: 11,\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\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getStyles } from './ad-placements-grid-preview-style';\r\n\r\nexport function AdPlacementsGridPreview({\r\n cellsNumberPerRow,\r\n totalCount,\r\n onRenderCell,\r\n cellHeight,\r\n}) {\r\n const classes = useDefaultStyles(getStyles, { cellsNumberPerRow, cellHeight });\r\n\r\n // we will use css to display them in grid\r\n const cells = [];\r\n for (let i = 0; i < totalCount; i += 1) {\r\n cells.push(
{onRenderCell(i)}
);\r\n }\r\n\r\n return totalCount > 0 ? (\r\n
\r\n {cells}\r\n
\r\n ) : null;\r\n}\r\n\r\nAdPlacementsGridPreview.propTypes = {\r\n cellsNumberPerRow: PropTypes.number.isRequired,\r\n totalCount: PropTypes.number.isRequired,\r\n onRenderCell: PropTypes.func.isRequired,\r\n cellHeight: PropTypes.number,\r\n};\r\n\r\nAdPlacementsGridPreview.defaultProps = {\r\n cellHeight: 482,\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport _ from 'underscore';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { Panel, DefaultButton } from '@bingads-webui-react/fabric-control';\r\nimport { AdPlacementsGridPreview } from './ad-placements-grid-preview';\r\nimport { getPanelStyle } from './ad-placements-grid-preview-style';\r\n\r\nexport function AdPlacementsGridPreviewPanel({\r\n isOpen,\r\n onDismiss,\r\n className,\r\n cellsNumberPerRow,\r\n totalCount,\r\n onRenderCell,\r\n cellHeight,\r\n}) {\r\n const i18n = useContext(I18nContext);\r\n const onRenderFooterContent = React.useCallback(\r\n () => (\r\n
\r\n {i18n.getString(_TL_('Close'))}\r\n
\r\n ),\r\n [i18n, onDismiss]\r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nAdPlacementsGridPreviewPanel.propTypes = {\r\n isOpen: PropTypes.bool.isRequired,\r\n onDismiss: PropTypes.func.isRequired,\r\n cellsNumberPerRow: PropTypes.number.isRequired,\r\n totalCount: PropTypes.number.isRequired,\r\n onRenderCell: PropTypes.func.isRequired,\r\n className: PropTypes.string,\r\n cellHeight: PropTypes.number,\r\n};\r\n\r\nAdPlacementsGridPreviewPanel.defaultProps = {\r\n className: '',\r\n cellHeight: 482,\r\n};\r\n","export const ROTATION_OPTIONS = Object.freeze({\r\n OPTIMIZED_FOR_CLICKS: 'OptimizeForClicks',\r\n ROTATE_ADS_EVENLY: 'RotateAdsEvenly',\r\n});\r\n\r\nexport const ROTATION_OPTION_TO_TEXT = Object.freeze({\r\n [ROTATION_OPTIONS.OPTIMIZED_FOR_CLICKS]: _TL_('Optimize - prioritize ads that perform well'),\r\n [ROTATION_OPTIONS.ROTATE_ADS_EVENLY]: _TL_('Rotate ads more evenly - include all ads, even those with a lower CTR'),\r\n});\r\n\r\nexport const RotationItems = [\r\n { id: ROTATION_OPTIONS.OPTIMIZED_FOR_CLICKS, text: ROTATION_OPTION_TO_TEXT[ROTATION_OPTIONS.OPTIMIZED_FOR_CLICKS] },\r\n { id: ROTATION_OPTIONS.ROTATE_ADS_EVENLY, text: ROTATION_OPTION_TO_TEXT[ROTATION_OPTIONS.ROTATE_ADS_EVENLY] },\r\n];\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { Stack } from '@bingads-webui-react/fabric-control';\r\nimport { MessageBar, MessageBarBody } from '@fluentui/react-message-bar';\r\nimport { RadioGroupLite } from '@bingads-webui-react/primitive-validation-fluent';\r\nimport { Radio } from '@fluentui/react-components';\r\n\r\nimport { ROTATION_OPTIONS, RotationItems } from './constants';\r\n\r\nexport const ValidatedAdRotation = ({ value, field, disableOptions }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n
\r\n \r\n \r\n {RotationItems.map(option => (\r\n \r\n ))\r\n }\r\n \r\n \r\n \r\n {i18n.getString(_TL_('This ad rotation setting will be ignored if you use an automated bidding bid strategy, as automated bidding prioritizes better-performing ads.'))}\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nValidatedAdRotation.propTypes = {\r\n value: PropTypes.string,\r\n field: PropTypes.string.isRequired,\r\n disableOptions: PropTypes.bool,\r\n};\r\n\r\nValidatedAdRotation.defaultProps = {\r\n value: ROTATION_OPTIONS.OPTIMIZED_FOR_CLICKS,\r\n disableOptions: false,\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { TextTitle, getPanelErrorProps, ValidatedPanel } from '@bingads-webui-campaign/wizard-jumbo-card';\r\nimport { ValidatedAdRotation } from './validated-ad-rotation';\r\nimport adRotationIcon from './ad-rotation.svg';\r\nimport { ROTATION_OPTION_TO_TEXT } from './constants';\r\n\r\nexport const AdRotationSection = ({ data, disableOptions, ...rest }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n }\r\n attentionBeaconProps={{ getExtraProps: getPanelErrorProps }}\r\n {...rest}\r\n >\r\n \r\n {i18n.getString(_TL_('Which ads do you want to show?'))}\r\n \r\n {\r\n data &&\r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nAdRotationSection.propTypes = {\r\n data: PropTypes.shape({\r\n AdRotation: PropTypes.string,\r\n }).isRequired,\r\n disableOptions: PropTypes.bool,\r\n};\r\n\r\nAdRotationSection.defaultProps = {\r\n disableOptions: false,\r\n};\r\n","export const assetLibraryLegacyI18nMap = {\r\n ImageExperience_MultipleUpload_SizeValidationFailTemplate: _TL_('One or more images are smaller than the required minimum size ({{width}} x {{height}}).'),\r\n ImageExperience_MultipleUpload_SizeValidationFailTemplate_WithoutDimension: _TL_('One or more images are smaller than the required minimum size.'),\r\n ImageExperience_SizeValidationFailTemplate_WithDetail: _TL_('The resized image is smaller than the required minimum size ({{width}} x {{height}}). The image is resized if the file size is too big.'),\r\n ImageExperience_SizeValidationFailTemplate_WithDetail_WithoutDimension: _TL_('The resized image is smaller than the required minimum size. The image is resized if the file size is too big.'),\r\n ImageExperience_SizeValidationFailTemplate: _TL_('The image is smaller than the required minimum size ({{width}} x {{height}}).'),\r\n ImageExperience_SizeValidationFailTemplate_WithoutDimension: _TL_('The image is smaller than the required minimum size.'),\r\n ImageExperience_Error_AnimatedImageNotAllowed: _TL_('Animated images are not allowed.'),\r\n ImageExperience_Error_ImageLoadError: _TL_('That file type isn’t supported. Please select a different file.'),\r\n ImageExperience_Error_CampaignServiceMediaDataEncodingInvalid: _TL_('Data in one of the media entities is not valid format.'),\r\n ImageExperience_Error_CampaignServiceMediaFormatNotSupported: _TL_(\"That file type isn't supported. Please select a different file.\"),\r\n ImageExperience_Error_InternalError: _TL_(\"We've encountered an error and can't continue.\"),\r\n};\r\n","import Promise from 'bluebird';\r\nimport { useState, useMemo, useCallback, useEffect } from 'react';\r\nimport _ from 'underscore';\r\n\r\nimport {\r\n validateImageSizeAsync,\r\n validateImageWithDimension,\r\n getSmartCroppedImagesAsync,\r\n getImageValidationErrorMessage,\r\n} from '@bingads-webui-campaign/image-experience-utils';\r\nimport { constants, newImageFromMTObject, addCropSettingsToCreativeImage } from '@bingads-webui-campaign-react/image-experience-model';\r\nimport { StockImageDataService } from '@bingads-webui-campaign/stock-image-data-service';\r\nimport { InvestImageDataService } from '@bingads-webui-campaign/invest-image-data-service';\r\nimport { VIEWS } from '@bingads-webui-campaign-react/add-media-panel-crud-ad';\r\nimport { buildLegacyI18n } from '@bingads-webui/build-legacy-i18n';\r\nimport { isCopilotRegionRestricted } from '@bingads-webui-react/copilot-utils';\r\nimport { notificationApi } from '@bingads-webui-react/notification-center';\r\nimport {\r\n SocialMediaRepository,\r\n SocialMediaDataSource,\r\n ImageRepository,\r\n} from '@bingads-webui-campaign-react/image-experience';\r\nimport { MediaRepository } from '@bingads-webui-campaign/media-repository';\r\nimport { stringifySync, parseSync } from '@bingads-webui/safe-json';\r\n\r\n\r\nimport { assetLibraryLegacyI18nMap } from './legacy-i18n-map';\r\n\r\nconst imageOption = constants.defaultImageOption;\r\n\r\nconst removeNullUndefined = (obj) => {\r\n const newObj = {};\r\n _.keys(obj).forEach((key) => {\r\n const value = obj[key];\r\n if (_.isObject(obj[key])) {\r\n newObj[key] = removeNullUndefined(value);\r\n } else if (value !== null && value !== undefined) {\r\n newObj[key] = value;\r\n }\r\n });\r\n return newObj;\r\n};\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nconst serializeData = (data) => {\r\n const serialized = stringifySync(removeNullUndefined(data));\r\n return serialized.replace(/,/g, encodeURIComponent(','));\r\n};\r\n\r\nconst processNewlyAddedImages = ({\r\n imgObjMT,\r\n imageSource,\r\n optionalCallback,\r\n isDisplayAds,\r\n isPortraitImage,\r\n isAudienceAdSmartCropEnabled,\r\n mediaRepository,\r\n isBrandKit = false,\r\n}) => {\r\n const postValidationError = validateImageWithDimension(\r\n imgObjMT.Width,\r\n imgObjMT.Height,\r\n null,\r\n false,\r\n imageOption,\r\n false,\r\n false,\r\n isDisplayAds,\r\n isPortraitImage,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n isBrandKit\r\n );\r\n\r\n if (postValidationError) {\r\n postValidationError.isDueToResizing = true;\r\n\r\n throw postValidationError;\r\n }\r\n\r\n optionalCallback && optionalCallback(); // eslint-disable-line no-unused-expressions\r\n\r\n const imageObject = newImageFromMTObject(imgObjMT, imageSource);\r\n const croppedImagePlacementsPromise = getSmartCroppedImagesAsync({\r\n mediaRepository,\r\n originalImageToCrop: imageObject,\r\n isMultimediaAd: false,\r\n isMultimediaAdinMSANEnabled: false,\r\n imageOption,\r\n aspectRatioOption: constants.defaultAspectRatioOption,\r\n isDisplayAds,\r\n isPortraitImage,\r\n isAudienceAdSmartCropEnabled,\r\n });\r\n\r\n return croppedImagePlacementsPromise;\r\n};\r\n\r\nconst genericErrorMsg = _TL_('We\\'ve encountered an error and can\\'t continue.');\r\n\r\nexport const useAssetLibraryImagePicker = ({\r\n cid,\r\n aid,\r\n oDataConfig,\r\n onNewImageSelected,\r\n i18n,\r\n permissions,\r\n isDisplayAds,\r\n isPortraitImage,\r\n serverContext,\r\n isAllUploadFlowImageUpscaleEnabled,\r\n isBrandKit = false,\r\n}) => {\r\n const [imagePickerError, setImagePickerError] = useState('');\r\n const [isUploadImageUpscaleEnabled, setIsUploadImageUpscaleEnabled] = useState(false);\r\n\r\n useEffect(() => {\r\n if (isAllUploadFlowImageUpscaleEnabled) {\r\n isCopilotRegionRestricted({\r\n feature: 'AssetLibraryImagePicker',\r\n permissions,\r\n serverContext,\r\n })\r\n .then((isRestricted) => {\r\n if (!isRestricted) {\r\n setIsUploadImageUpscaleEnabled(isAllUploadFlowImageUpscaleEnabled);\r\n }\r\n });\r\n }\r\n }, [isAllUploadFlowImageUpscaleEnabled, permissions, serverContext]);\r\n\r\n const errorValidationI18n = useMemo(\r\n () => buildLegacyI18n(i18n, [assetLibraryLegacyI18nMap])\r\n , [i18n]\r\n );\r\n\r\n const minSize = useMemo(() => constants.getMinimumSizeForImage(null, false, imageOption, false, false, isDisplayAds, isPortraitImage), [isDisplayAds, isPortraitImage]);\r\n\r\n const minUploadSize = useMemo(() => {\r\n if (isUploadImageUpscaleEnabled && minSize.length > 1 && minSize[0] >= 352 && minSize[0] <= 703 && minSize[1] >= 184 && minSize[1] <= 368) {\r\n return [352, 184]; // It's a half of constants.DefaultImageMinimumSize 703x368\r\n }\r\n return [];\r\n }, [isUploadImageUpscaleEnabled, minSize]);\r\n\r\n const supportImageUpscale = useMemo(() => (isUploadImageUpscaleEnabled && !_.isEmpty(minUploadSize)), [isUploadImageUpscaleEnabled, minUploadSize]);\r\n\r\n const setImagePickerErrorWithErrorCodeError = useCallback((e) => {\r\n setImagePickerError(getImageValidationErrorMessage(e, errorValidationI18n) || i18n.getString(genericErrorMsg));\r\n }, [errorValidationI18n, i18n]);\r\n\r\n const clearImagePickerError = useCallback(() => {\r\n setImagePickerError('');\r\n }, []);\r\n\r\n const customMediaSourceConfig = useCallback(({ addMediaConfig }) => {\r\n let mediaSourceConfig = addMediaConfig;\r\n\r\n if (!permissions.IsSocialMediaImagesEnabled) {\r\n mediaSourceConfig = _.omit(mediaSourceConfig, VIEWS.SocialMedia);\r\n }\r\n\r\n return mediaSourceConfig;\r\n }, [\r\n permissions,\r\n ]);\r\n\r\n const imageRepository = useMemo(() => new ImageRepository(cid, aid, oDataConfig), [\r\n cid,\r\n aid,\r\n oDataConfig,\r\n ]);\r\n\r\n const stockImageDataService = useMemo(() => new StockImageDataService({\r\n cid,\r\n aid,\r\n oDataConfig,\r\n controller: 'StockImages',\r\n }), [\r\n cid,\r\n aid,\r\n oDataConfig,\r\n ]);\r\n\r\n const investImageDataService = useMemo(() => new InvestImageDataService({ cid, aid }), [cid, aid]);\r\n\r\n const socialMediaRepository = useMemo(() => new SocialMediaRepository({\r\n cid,\r\n aid,\r\n oDataConfig,\r\n }), [\r\n cid,\r\n aid,\r\n oDataConfig,\r\n ]);\r\n\r\n const socialMediaDataSource = useMemo(() => new SocialMediaDataSource({\r\n repository: socialMediaRepository,\r\n }), [\r\n socialMediaRepository,\r\n ]);\r\n\r\n const mediaRepository = useMemo(() => new MediaRepository({\r\n cid, aid, oDataConfig,\r\n }), [cid, aid, oDataConfig]);\r\n\r\n const isAudienceAdSmartCropEnabled = _.result(permissions.dynamic, 'AudienceAdSmartCrop', false);\r\n\r\n // don't have a great way to test uploading through webdriver right now\r\n // looking into it\r\n /* istanbul ignore next */\r\n const uploadImage = useCallback(({ imageData, updateCurrentProgress, name }) => { // eslint-disable-line arrow-body-style, max-len\r\n return validateImageSizeAsync(imageData, null)\r\n .then(() => imageRepository.uploadImageAsync(\r\n imageData,\r\n null,\r\n updateCurrentProgress,\r\n imageOption,\r\n name\r\n ))\r\n .then((response) => {\r\n if (!response || !response.imageId) {\r\n throw new Error(response && response[0] && response[0].Code);\r\n }\r\n return response;\r\n });\r\n }, [\r\n imageRepository,\r\n ]);\r\n\r\n // don't have a great way to test uploading through webdriver right now\r\n // looking into it\r\n /* istanbul ignore next */\r\n const processUploadedImage = useCallback(({ imageId, index, updateCurrentProgress }) => {\r\n const callback = () => updateCurrentProgress(index, 1);\r\n const imageSource = constants.imageSources.Upload;\r\n\r\n return imageRepository.getImageByIdAsync(imageId)\r\n .then(imgObjMT => processNewlyAddedImages({\r\n imgObjMT,\r\n imageSource,\r\n optionalCallback: callback,\r\n isDisplayAds,\r\n isPortraitImage,\r\n mediaRepository,\r\n isAudienceAdSmartCropEnabled,\r\n isBrandKit,\r\n }))\r\n .then((croppedImagePlacements) => {\r\n onNewImageSelected([croppedImagePlacements]);\r\n if (supportImageUpscale) {\r\n return _.first(croppedImagePlacements);\r\n }\r\n return null;\r\n });\r\n }, [imageRepository, isAudienceAdSmartCropEnabled, isDisplayAds, isPortraitImage, mediaRepository, onNewImageSelected, supportImageUpscale]);\r\n\r\n const onProcessUploadComplete = useCallback((args = []) => {\r\n const upscaledImages = _.filter(args, item => _.result(item, 'isImageUpscaled') === true);\r\n const count = upscaledImages.length;\r\n\r\n if (count === 1) {\r\n const imageName = _.get(upscaledImages, ['0', 'text']);\r\n if (imageName) {\r\n notificationApi.showInfo(i18n.getString(_TL_('We upscaled {{fileName}} to meet the minimum required file size. Please note that you can also upload a higher quality image if needed.'), { fileName: imageName }));\r\n }\r\n } else if (count > 1) {\r\n notificationApi.showInfo(i18n.getString(_TL_('We upscaled {{fileCount}} images to meet the minimum required file size. Please note that you can also upload higher quality images if needed.'), { fileCount: count }));\r\n }\r\n }, [i18n]);\r\n\r\n const addImageByUrl = useCallback((\r\n imageUrl,\r\n imageSource = constants.imageSources.WebsiteCarousel\r\n // eslint-disable-next-line arrow-body-style\r\n ) => {\r\n return validateImageSizeAsync(imageUrl, null, false, imageOption)\r\n .then(() => (\r\n imageRepository.bulkSaveImagesByUrl([{ url: imageUrl }])\r\n .then((ids) => {\r\n if (_.isObject(_.first(ids))) {\r\n throw new Error(ids[0].code);\r\n }\r\n\r\n return ids[0];\r\n })\r\n ))\r\n .then(id => imageRepository.getImageByIdAsync(id))\r\n .then(imgObjMT => processNewlyAddedImages({\r\n imgObjMT,\r\n imageSource,\r\n isDisplayAds,\r\n isPortraitImage,\r\n mediaRepository,\r\n isAudienceAdSmartCropEnabled,\r\n isBrandKit,\r\n }))\r\n .then((croppedImagePlacements) => {\r\n onNewImageSelected([croppedImagePlacements]);\r\n return {\r\n processedImage: croppedImagePlacements,\r\n };\r\n })\r\n .catch((e) => {\r\n setImagePickerErrorWithErrorCodeError(e);\r\n\r\n return {\r\n errorMessage: getImageValidationErrorMessage(e, errorValidationI18n) || i18n.getString(genericErrorMsg),\r\n };\r\n });\r\n }, [imageRepository, isDisplayAds, isPortraitImage, mediaRepository, isAudienceAdSmartCropEnabled, onNewImageSelected, setImagePickerErrorWithErrorCodeError, errorValidationI18n, i18n]);\r\n\r\n\r\n const addCreatives = useCallback(({ creativeData }) => {\r\n const getMTImages = async (ids) => {\r\n const images = await Promise.all(ids.map(id => imageRepository.getImageByIdAsync(id)));\r\n return images;\r\n };\r\n\r\n const getImages = async (imgObjsMT) => {\r\n const images = await Promise.all(imgObjsMT.map(imgObjMT => addCropSettingsToCreativeImage(imgObjMT)));\r\n return images;\r\n };\r\n\r\n // save original image first.\r\n const originalImageUrls = _.map(creativeData, (creative) => {\r\n const { template } = creative || {};\r\n\r\n const { image } = template || {};\r\n\r\n return { url: image.url };\r\n });\r\n\r\n\r\n return imageRepository.bulkSaveImagesByUrl(originalImageUrls)\r\n .then(ids => Promise.all(ids.map(id => imageRepository.getImageByIdAsync(id))))\r\n .then(images => creativeData.map((creative, index) => {\r\n const { template } = creative || {};\r\n\r\n // eslint-disable-next-line no-param-reassign\r\n creative.image = images[index].Url;\r\n template.image.url = images[index].Url;\r\n\r\n return {\r\n url: creative.url,\r\n metadata: serializeData(creative),\r\n baseId: images[index].Id,\r\n sourceType: 'AIGenerated',\r\n };\r\n }))\r\n .then(args => imageRepository.bulkSaveImagesByUrl(args))\r\n .then((ids) => {\r\n const error = _.find(ids, id => _.isObject(id));\r\n if (error) {\r\n throw new Error(error.code);\r\n }\r\n\r\n return ids;\r\n })\r\n .then(getMTImages)\r\n .then(getImages);\r\n }, [imageRepository]);\r\n\r\n const getStockImages = useCallback(args => stockImageDataService.getStockImages(args), [\r\n stockImageDataService,\r\n ]);\r\n\r\n const getInvestImages = useCallback(args => investImageDataService.getInvestAssets(args), [\r\n investImageDataService,\r\n ]);\r\n\r\n const onSelectStockImage = useCallback(({ selectedImageId }) => {\r\n const imageSource = constants.imageSources.Stock;\r\n\r\n return stockImageDataService.saveStockImage({\r\n stockImageId: selectedImageId,\r\n stockImageVendorId: 'ShutterStock',\r\n })\r\n .then(({ value }) => imageRepository.getImageByIdAsync(value))\r\n .then(imgObjMT => processNewlyAddedImages({\r\n imgObjMT,\r\n imageSource,\r\n isDisplayAds,\r\n isPortraitImage,\r\n mediaRepository,\r\n isAudienceAdSmartCropEnabled,\r\n }))\r\n .then((croppedImagePlacements) => {\r\n onNewImageSelected([croppedImagePlacements]);\r\n })\r\n .catch((e) => {\r\n setImagePickerErrorWithErrorCodeError(e);\r\n });\r\n }, [stockImageDataService, imageRepository, isDisplayAds, isPortraitImage, mediaRepository, isAudienceAdSmartCropEnabled, onNewImageSelected, setImagePickerErrorWithErrorCodeError]);\r\n\r\n const onImageSelected = useCallback((image, imageSource = constants.imageSources.Existing) => {\r\n const { id } = image || {};\r\n\r\n if (id) {\r\n return imageRepository.getImageByIdAsync(id)\r\n .then((imgObjMT) => {\r\n const { Metadata } = imgObjMT;\r\n\r\n let uriDecodedMetaData = Metadata;\r\n\r\n // while saving we only replace the ',' symbol with %2C. So we need to replace it back to ','\r\n if (Metadata) {\r\n uriDecodedMetaData = Metadata.replace(/%2C/g, ',');\r\n }\r\n\r\n const decodedMetadata = parseSync(uriDecodedMetaData);\r\n\r\n // if it is a display plus creative return the image\r\n if (decodedMetadata && decodedMetadata.template) {\r\n return {\r\n image: addCropSettingsToCreativeImage(imgObjMT),\r\n creativeData: {\r\n creativeMeta: decodedMetadata,\r\n creativeId: id,\r\n },\r\n };\r\n }\r\n\r\n return processNewlyAddedImages({\r\n imgObjMT,\r\n imageSource,\r\n isDisplayAds,\r\n isPortraitImage,\r\n mediaRepository,\r\n isAudienceAdSmartCropEnabled,\r\n isBrandKit,\r\n });\r\n })\r\n .then((croppedImagePlacements) => {\r\n onNewImageSelected([croppedImagePlacements]);\r\n })\r\n .catch((e) => {\r\n setImagePickerErrorWithErrorCodeError(e);\r\n });\r\n }\r\n\r\n return Promise.resolve();\r\n }, [imageRepository, isAudienceAdSmartCropEnabled, isDisplayAds, isPortraitImage, mediaRepository, onNewImageSelected, setImagePickerErrorWithErrorCodeError]);\r\n\r\n const onImagesSelected = useCallback((imageIds, imageSource = constants.imageSources.Existing) => {\r\n const addImagePromises = [];\r\n\r\n _.each(imageIds, (imageId) => {\r\n addImagePromises.push(imageRepository.getImageByIdAsync(imageId)\r\n .then(((imgObjMT) => {\r\n const { Metadata } = imgObjMT;\r\n\r\n let uriDecodedMetaData = Metadata;\r\n\r\n // while saving we only replace the ',' symbol with %2C. So we need to replace it back to ','\r\n if (Metadata) {\r\n uriDecodedMetaData = Metadata.replace(/%2C/g, ',');\r\n }\r\n\r\n const decodedMetadata = parseSync(uriDecodedMetaData);\r\n\r\n // if it is a display plus creative return the image\r\n if (decodedMetadata && decodedMetadata.template) {\r\n return {\r\n image: addCropSettingsToCreativeImage(imgObjMT),\r\n creativeData: {\r\n creativeMeta: decodedMetadata,\r\n creativeId: imageId,\r\n },\r\n };\r\n }\r\n\r\n return processNewlyAddedImages({\r\n imgObjMT,\r\n imageSource,\r\n isDisplayAds,\r\n isPortraitImage,\r\n mediaRepository,\r\n isAudienceAdSmartCropEnabled,\r\n isBrandKit,\r\n });\r\n })));\r\n });\r\n\r\n return Promise.all(addImagePromises)\r\n .then(processedImages => onNewImageSelected(processedImages))\r\n .catch((e) => {\r\n setImagePickerErrorWithErrorCodeError(e);\r\n });\r\n }, [imageRepository, isAudienceAdSmartCropEnabled, isDisplayAds, isPortraitImage, mediaRepository, onNewImageSelected, setImagePickerErrorWithErrorCodeError]);\r\n\r\n return {\r\n imagePickerError,\r\n setImagePickerError: setImagePickerErrorWithErrorCodeError,\r\n clearImagePickerError,\r\n uploadImage,\r\n processUploadedImage,\r\n onProcessUploadComplete,\r\n minSize,\r\n minUploadSize,\r\n supportImageUpscale,\r\n addImageByUrl,\r\n addCreatives,\r\n getStockImages,\r\n getInvestImages,\r\n onSelectStockImage,\r\n onImageSelected,\r\n socialMediaDataSource,\r\n customMediaSourceConfig,\r\n onImagesSelected,\r\n };\r\n};\r\n","import { useState } from 'react';\r\nimport { VIEWS } from '@bingads-webui-campaign-react/add-media-panel-crud-ad';\r\n\r\nconst WebsiteSuggestionTab = 2;\r\n\r\nexport const useImagePicker = () => {\r\n const [show, setShow] = useState(false);\r\n const [activeImagePickerPillIndex, setActiveImagePillIndex] = useState(0);\r\n const [selectedMediaPanelSource, setSelectedMediaPanelSource] = useState(VIEWS.LandingPage);\r\n\r\n const setDisplayImagePicker = (display) => {\r\n setShow(display);\r\n setActiveImagePillIndex(0);\r\n setSelectedMediaPanelSource(VIEWS.LandingPage);\r\n };\r\n\r\n const displayWebsiteSuggestionTab = () => {\r\n setShow(true);\r\n setActiveImagePillIndex(WebsiteSuggestionTab);\r\n setSelectedMediaPanelSource(VIEWS.WebsiteImage);\r\n };\r\n\r\n return {\r\n displayImagePicker: show,\r\n activeImagePickerPillIndex,\r\n setDisplayImagePicker,\r\n displayWebsiteSuggestionTab,\r\n selectedMediaPanelSource,\r\n setSelectedMediaPanelSource,\r\n };\r\n};\r\n","import { useEffect, useReducer, useCallback, useRef, useState } from 'react';\r\nimport _ from 'underscore';\r\nimport {\r\n SuggestionPoller,\r\n SuggestionStatus,\r\n mapSuggestionResponseToState,\r\n} from '@bingads-webui-campaign/media-repository';\r\nimport { getAdCreatorInstrumentation } from '@bingads-webui-campaign/ad-creator-tools-instrumentation';\r\nimport { constants } from '@bingads-webui-campaign-react/image-experience-model';\r\nimport { MessageBarType } from '@bingads-webui-react/fabric-control';\r\n\r\n// for every request to poll, we use debounce of 1000ms.\r\nconst DebouncedPollWaitMs = 1000;\r\n\r\nconst websiteSuggestionReducer = (state, action) => {\r\n const {\r\n type,\r\n response,\r\n isSubdomainScraping,\r\n error,\r\n selectedIndex,\r\n } = action;\r\n\r\n if (type === SuggestionStatus.SelectSuggestionError) {\r\n return {\r\n ...state,\r\n carousel: {\r\n ...state.carousel,\r\n message: {\r\n type: MessageBarType.error,\r\n message: error.errorMessage,\r\n },\r\n },\r\n };\r\n }\r\n\r\n if (type === SuggestionStatus.SelectSuggestionComplete) {\r\n return {\r\n ...state,\r\n carousel: {\r\n ...state.carousel,\r\n images: _.reject(state.carousel.images, (val, ind) => ind === selectedIndex),\r\n message: undefined,\r\n },\r\n };\r\n }\r\n\r\n const updatedSuggestions = mapSuggestionResponseToState(type, response, isSubdomainScraping);\r\n\r\n // in subdomain scraping case, carousel state isn't updated; keep existing suggestion carousel state\r\n if (!updatedSuggestions.carousel) {\r\n updatedSuggestions.carousel = state.carousel;\r\n }\r\n\r\n return updatedSuggestions;\r\n};\r\n\r\nexport const useWebsiteSuggestion = ({\r\n oDataConfig,\r\n adContext,\r\n instrumentation,\r\n logActivity,\r\n permissions,\r\n fullUrl,\r\n hasErrorInUrl,\r\n headlines,\r\n descriptions,\r\n adCreatorScenario,\r\n customizedGetMinimumSizeForImage = null,\r\n}) => {\r\n const [\r\n suggestionState,\r\n dispatchSuggestionState,\r\n ] = useReducer(\r\n websiteSuggestionReducer,\r\n fullUrl ? {} : mapSuggestionResponseToState(SuggestionStatus.EmptyURL)\r\n );\r\n\r\n const onPollingSuggestionCompleted = (response, isSubdomainScraping) => {\r\n dispatchSuggestionState({\r\n type: response.error ? SuggestionStatus.ServerError : SuggestionStatus.FetchSucceed,\r\n response,\r\n isSubdomainScraping,\r\n });\r\n };\r\n\r\n // could not replace it with useMemo or useRef\r\n // The carousel will be refreshed twice. So still keep this way\r\n const [poller] = useState(() => {\r\n const { websiteSuggestionActivity: logger } =\r\n getAdCreatorInstrumentation(instrumentation, adCreatorScenario, permissions);\r\n\r\n return new SuggestionPoller({\r\n cid: adContext.advertiserCustomerId,\r\n aid: adContext.accountId,\r\n cmpId: adContext.campaignId,\r\n oDataConfig,\r\n jobCompleteCallback: onPollingSuggestionCompleted,\r\n logger,\r\n });\r\n });\r\n\r\n // this is to support API calls directly from suggestionPoller\r\n const pollerWrapperRef = useRef({});\r\n\r\n pollerWrapperRef.current.getLandingPageSuggestions =\r\n useCallback((opts) => {\r\n logActivity(`Under Image extensions: getLandingPageSuggestions: opts: ${JSON.stringify(opts)}`);\r\n\r\n return poller.getLandingPageSuggestions({\r\n ...opts,\r\n headlines,\r\n descriptions,\r\n });\r\n }, [descriptions, headlines, logActivity, poller]);\r\n\r\n pollerWrapperRef.current.getMoreLandingPageSuggestions =\r\n useCallback((opts) => {\r\n logActivity(`Under Image extensions: getMoreLandingPageSuggestions: opts: ${JSON.stringify(opts)}`);\r\n\r\n return poller.getMoreLandingPageSuggestions({\r\n ...opts,\r\n headlines,\r\n descriptions,\r\n });\r\n }, [descriptions, headlines, logActivity, poller]);\r\n\r\n const fetchSuggestionByUrl =\r\n useCallback(_.debounce(\r\n (url, headlinesArg, descriptionsArg, enableOfflinePollingDelay = false) => {\r\n dispatchSuggestionState({ type: SuggestionStatus.FetchInProgress });\r\n\r\n const [width, height] = customizedGetMinimumSizeForImage ? customizedGetMinimumSizeForImage() : constants.getMinimumSizeForImage();\r\n\r\n logActivity(`Under Image extensions: get landing page suggestions: url: ${url}; headlinesArgs: ${headlinesArg}; descriptionsArg: ${descriptionsArg}`);\r\n\r\n poller.getLandingPageSuggestions({\r\n landingPageUrl: url,\r\n headlines: headlinesArg,\r\n descriptions: descriptionsArg,\r\n enableOfflinePollingDelay,\r\n minimumResolution: { width, height },\r\n });\r\n },\r\n DebouncedPollWaitMs\r\n ), [poller]);\r\n\r\n useEffect(() => {\r\n poller.cancel();\r\n\r\n if (_.isEmpty(fullUrl)) {\r\n dispatchSuggestionState({ type: SuggestionStatus.EmptyURL });\r\n } else if (hasErrorInUrl) {\r\n dispatchSuggestionState({ type: SuggestionStatus.InvalidURL });\r\n } else {\r\n fetchSuggestionByUrl(\r\n fullUrl,\r\n headlines,\r\n descriptions\r\n );\r\n }\r\n\r\n return () => {\r\n poller.cancel();\r\n };\r\n }, [descriptions, fetchSuggestionByUrl, fullUrl, hasErrorInUrl, headlines, poller]);\r\n\r\n return {\r\n suggestionState,\r\n suggestionPoller: pollerWrapperRef.current,\r\n dispatchSuggestionState,\r\n };\r\n};\r\n","/* eslint-disable jsx-a11y/anchor-is-valid, jsx-a11y/label-has-for */\r\n/* eslint-disable react/forbid-prop-types */\r\nimport _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport React, { createRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { ValidatedUrlEditor } from '@bingads-webui-react/url-editor';\r\nimport { Alert } from '@bingads-webui-react/alert';\r\nimport { HelpPopup } from '@bingads-webui-react/help-popup';\r\nimport { TextArea } from '@bingads-webui-react/primitive-validation';\r\nimport {\r\n ValidatedInput,\r\n ValidationGroup,\r\n ValidatedRadioGroup\r\n} from '@bingads-webui-react/validation-controls';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { ErrorMessages } from '@bingads-webui-react/validation';\r\nimport { cloneDeep } from '@bingads-webui-universal/primitive-utilities';\r\nimport { DropdownSelector } from '@bingads-webui-react/dropdown-selector';\r\nimport { RemainingCharsHint } from '@bingads-webui-campaign-react/remaining-chars-hint';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nconst LayoutType = {\r\n popup: 'Popup',\r\n line: 'AdditionalLine',\r\n};\r\n\r\nconst getStyles = () => ({\r\n hideLayoutOption: {\r\n '& label': {\r\n paddingLeft: 15,\r\n },\r\n\r\n '& input': {\r\n display: 'none',\r\n },\r\n },\r\n});\r\n\r\nclass UnStyledDisclaimerEditor extends React.PureComponent {\r\n static propTypes = {\r\n editData: PropTypes.object,\r\n onClose: PropTypes.func.isRequired,\r\n isNativeAd: PropTypes.bool,\r\n onDisclaimerAddOrUpdated: PropTypes.func,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n schema: PropTypes.object.isRequired,\r\n repository: PropTypes.shape({\r\n create: PropTypes.func.isRequired,\r\n }).isRequired,\r\n usePanel: PropTypes.bool,\r\n permissions: PropTypes.shape({}),\r\n classes: PropTypes.shape({}).isRequired,\r\n showOnlyPopupLayout: PropTypes.bool,\r\n };\r\n\r\n static defaultProps = {\r\n editData: null,\r\n onDisclaimerAddOrUpdated: _.noop,\r\n usePanel: false,\r\n isNativeAd: false,\r\n permissions: {},\r\n showOnlyPopupLayout: false,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.dropdownitems = [\r\n {\r\n Id: 'disclaimer-editor-title',\r\n value: this.props.i18n.getString('Disclaimers_Title_Default'),\r\n },\r\n {\r\n Id: 'disclaimer-editor-disclaimer',\r\n value: this.props.i18n.getString('Disclaimers_Dropdown_Disclaimer'),\r\n },\r\n {\r\n Id: 'disclaimer-editor-disclosure',\r\n value: this.props.i18n.getString('Disclaimers_Dropdown_Disclosure'),\r\n },\r\n {\r\n Id: 'disclaimer-editor-moreDisclaimer',\r\n value: this.props.i18n.getString('Disclaimers_Dropdown_MoreDisclaimer'),\r\n },\r\n {\r\n Id: 'disclaimer-editor-offer',\r\n value: this.props.i18n.getString('Disclaimers_Dropdown_Offer'),\r\n },\r\n {\r\n Id: 'disclaimer-editor-safetyInfor',\r\n value: this.props.i18n.getString('Disclaimers_Dropdown_SafetyInfor'),\r\n },\r\n {\r\n Id: 'disclaimer-editor-safetyInformation',\r\n value: this.props.i18n.getString('Disclaimers_Dropdown_SafetyInformation'),\r\n },\r\n ];\r\n\r\n // Hide popup option in Ads CN and when creation mode or edit mode but the layout is line, which means when layout is popup, we allow to switch to line.\r\n this.hidePopupOption = _.get(props.permissions, 'IsDomesticSimplifiedChineseEnabled', false) && (_.isEmpty(this.props.editData) || this.props.editData.DisclaimerLayout === LayoutType.line);\r\n // We will not allow domestic simplified chinese user to use native ad disclaimer.\r\n if (props.isNativeAd || props.showOnlyPopupLayout) {\r\n this.layoutTypeOptions = [LayoutType.popup];\r\n } else {\r\n this.layoutTypeOptions = this.hidePopupOption ? [LayoutType.line] : [LayoutType.popup, LayoutType.line];\r\n }\r\n\r\n const defaultData = {\r\n Name: '',\r\n Title: this.props.i18n.getString('Disclaimers_Title_Default'),\r\n PopupText: '',\r\n LineText: '',\r\n DisclaimerLayout: this.hidePopupOption ? LayoutType.line : LayoutType.popup,\r\n FinalUrls: [],\r\n FinalMobileUrls: [],\r\n };\r\n\r\n // find the item in the list, otherwise, select the first one.\r\n const dropdownSeleted = (this.props.editData ? _.findWhere(\r\n this.dropdownitems,\r\n { value: this.props.editData.Title }\r\n ) : null) || this.dropdownitems[0];\r\n\r\n this.state = {\r\n disclaimer: this.props.editData ? cloneDeep(this.props.editData) : defaultData,\r\n isValid: '',\r\n errors: [],\r\n alwaysShowError: false,\r\n selected: dropdownSeleted,\r\n };\r\n\r\n const popupSchema = {\r\n ...this.props.schema,\r\n properties: {\r\n ...this.props.schema.properties,\r\n Name: {\r\n ...this.props.schema.properties.Name,\r\n required: true,\r\n },\r\n DisclaimerLayout: {\r\n ...this.props.schema.properties.DisclaimerLayout,\r\n required: true,\r\n },\r\n Title: {\r\n ...this.props.schema.properties.Title,\r\n required: true,\r\n },\r\n PopupText: {\r\n ...this.props.schema.properties.PopupText,\r\n required: true,\r\n },\r\n },\r\n };\r\n const lineSchema = {\r\n ...this.props.schema,\r\n properties: {\r\n ...this.props.schema.properties,\r\n Name: {\r\n ...this.props.schema.properties.Name,\r\n required: true,\r\n },\r\n DisclaimerLayout: {\r\n ...this.props.schema.properties.DisclaimerLayout,\r\n required: true,\r\n },\r\n LineText: {\r\n ...this.props.schema.properties.LineText,\r\n required: true,\r\n },\r\n FinalUrls: {\r\n ...this.props.schema.properties.FinalUrls,\r\n required: true,\r\n },\r\n },\r\n };\r\n\r\n this.schema = {\r\n [LayoutType.popup]: popupSchema,\r\n [LayoutType.line]: lineSchema,\r\n };\r\n\r\n this.ref = createRef();\r\n }\r\n\r\n onSubmit = () => {\r\n this.setState({ alwaysShowError: true }, () => {\r\n this.getFirstAlertElementAndFocus();\r\n });\r\n\r\n if (this.state.isValid === 'false') {\r\n return;\r\n }\r\n\r\n if (this.state.disclaimer.DisclaimerLayout === LayoutType.popup) {\r\n this.state.disclaimer.Title = this.state.selected.value;\r\n }\r\n\r\n const dataToBeSaved = this.state.disclaimer;\r\n\r\n if (this.props.editData && this.props.editData.Id > 0) {\r\n // eslint-disable-next-line no-alert, no-restricted-globals\r\n if (confirm(this.props.i18n.getString('Disclaimers_Edit_Confirmation'))) {\r\n dataToBeSaved.Id = this.props.editData.Id;\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n this.props.repository.create(dataToBeSaved)\r\n .then(() => {\r\n this.props.onClose();\r\n this.props.onDisclaimerAddOrUpdated(dataToBeSaved);\r\n })\r\n .catch((errors) => {\r\n this.setState({\r\n errors: _.chain(errors)\r\n .uniq(value => value.message)\r\n .map(error => (error.isHtmlMessage ? { DangerousHtmlMessage: error.message } : error.message))\r\n .value(),\r\n });\r\n })\r\n .finally(withUiBlock($(this.props.usePanel ? '.disclaimer-editor-panel .panel-content' : '.disclaimer-editor-modal'), this.props.i18n.getString('Loading')));\r\n };\r\n\r\n onValidate = (result) => {\r\n this.setState(preState => ({\r\n isValid: result.isValid.toString(),\r\n disclaimer: preState.disclaimer.DisclaimerLayout !== result.data.DisclaimerLayout\r\n && result.data.DisclaimerLayout === LayoutType.popup ?\r\n _.defaults({ Title: this.props.i18n.getString('Disclaimers_Title_Default') }, result.data)\r\n : result.data,\r\n errors: [],\r\n }));\r\n };\r\n\r\n onLayoutTypeChange = () => {\r\n this.setState({\r\n alwaysShowError: false,\r\n selected: this.dropdownitems[0],\r\n });\r\n };\r\n\r\n onSelectedChange = (selected) => {\r\n this.setState({\r\n selected,\r\n });\r\n };\r\n\r\n getFirstAlertElementAndFocus = () => {\r\n const alertNode = this.ref.current.querySelector('.col-sm-8 [role=\"alert\"]');\r\n if (alertNode) {\r\n alertNode.parentElement.firstChild.focus();\r\n }\r\n\r\n return null;\r\n };\r\n\r\n renderlayoutOptions = item => (\r\n \r\n {this.props.i18n.getString(`Disclaimers_DisplayLayout_${item}`)}\r\n {item === LayoutType.line\r\n && this.state.disclaimer.DisclaimerLayout === LayoutType.line\r\n && )}\r\n message={this.props.i18n.getString('Disclaimers_DisplayLayout_AdditionalLine_Hint')}\r\n />}\r\n \r\n );\r\n\r\n renderSettingItem = ({\r\n settingName,\r\n labelText,\r\n helpId = '',\r\n children,\r\n }) => (\r\n
\r\n \r\n
\r\n {children}\r\n
\r\n
\r\n );\r\n\r\n render() {\r\n const header = this.props.usePanel || (\r\n
\r\n \r\n
\r\n {this.props.i18n.getString(this.props.editData ? 'Disclaimers_Edit' : 'Disclaimers_Create')}\r\n
\r\n
\r\n );\r\n\r\n const footer = (\r\n
\r\n \r\n {this.props.i18n.getString('Save')}\r\n \r\n \r\n
\r\n );\r\n\r\n const customNameErrors = {\r\n required: this.props.i18n.getString('DisclaimerNameRequired'),\r\n };\r\n\r\n const errorProcessorForName = errors => _.map(\r\n errors,\r\n (oldError, key) => customNameErrors[key] || oldError\r\n );\r\n\r\n const nameSetting = this.renderSettingItem({\r\n settingName: 'name',\r\n labelText: 'Disclaimers_Name_Label',\r\n helpId: 'pop_BA_DisclaimerAd_Name',\r\n children: (),\r\n });\r\n\r\n const getPopUpLayoutHelpId = (hidePopupOption, isNativeAd) => {\r\n if (hidePopupOption) {\r\n return 'pop_BA_DisclaimerAd_LayoutChina';\r\n }\r\n\r\n return isNativeAd ? 'pop_BA_Audience_DisclaimerLayout' : 'pop_BA_DisclaimerAd_Layout';\r\n };\r\n\r\n const layoutTypeSetting = this.renderSettingItem({\r\n settingName: 'layoutType',\r\n labelText: 'Disclaimers_DisplayLayout_Label',\r\n helpId: getPopUpLayoutHelpId(this.hidePopupOption, this.props.isNativeAd),\r\n children: (\r\n
\r\n \r\n
\r\n ),\r\n });\r\n\r\n const getTitlePopupHelpId = (isNativeAd) => {\r\n if (isNativeAd) {\r\n return { helpId: 'pop_BA_Audience_DisclaimerTitle' };\r\n }\r\n return {};\r\n };\r\n\r\n const titleSetting = this.renderSettingItem({\r\n settingName: 'title',\r\n labelText: 'Disclaimers_Title_Label',\r\n children: (\r\n \r\n ),\r\n ...getTitlePopupHelpId(this.props.isNativeAd),\r\n });\r\n\r\n const customDescriptionErrors = {\r\n required: this.props.i18n.getString('DisclaimerInformationRequired'),\r\n };\r\n\r\n const errorProcessorForDescription = errors => _.map(\r\n errors,\r\n (oldError, key) => customDescriptionErrors[key] || oldError\r\n );\r\n\r\n const getInformationPopupSetting = (isNativeAd) => {\r\n if (isNativeAd) {\r\n return { helpId: 'pop_BA_Audience_DisclaimerInfo' };\r\n }\r\n return {};\r\n };\r\n\r\n const popupSetting = this.renderSettingItem({\r\n settingName: 'information-popup',\r\n labelText: 'Disclaimers_Information_Label',\r\n ...getInformationPopupSetting(this.props.isNativeAd),\r\n children: (\r\n \r\n \r\n \r\n \r\n ),\r\n });\r\n\r\n const lineSetting = this.renderSettingItem({\r\n settingName: 'information-additionalline',\r\n labelText: 'Disclaimers_Information_Label',\r\n children: (\r\n \r\n \r\n \r\n \r\n ),\r\n });\r\n\r\n const customFinalUrlErrors = {\r\n required: this.props.i18n.getString('FinalURLRequired'),\r\n };\r\n\r\n const errorProcessorForFinalUrl = errors => _.map(\r\n errors,\r\n (oldError, key) => customFinalUrlErrors[key] || oldError\r\n );\r\n\r\n const finalUrlSetting = this.renderSettingItem({\r\n settingName: 'finalurl',\r\n labelText: 'Ad_FinalUrl',\r\n helpId: 'pop_BA_DisclaimerAd_FinalURL',\r\n children: (\r\n \r\n ),\r\n });\r\n\r\n const mobileUrlSetting = this.renderSettingItem({\r\n settingName: 'mobileurl',\r\n labelText: 'MobileFinalUrl_Label',\r\n helpId: this.props.isNativeAd? 'pop_BA_Audience_DisclaimerMobile' : 'pop_BA_DIsclaimerAd_MobileURL',\r\n children: (\r\n \r\n ),\r\n });\r\n\r\n return (\r\n \r\n {header}\r\n
\r\n {this.state.disclaimer.DisclaimerLayout === LayoutType.popup ?\r\n \r\n {nameSetting}\r\n {layoutTypeSetting}\r\n {titleSetting}\r\n {popupSetting}\r\n {finalUrlSetting}\r\n {mobileUrlSetting}\r\n :\r\n \r\n {nameSetting}\r\n {layoutTypeSetting}\r\n {lineSetting}\r\n {finalUrlSetting}\r\n {mobileUrlSetting}\r\n \r\n }\r\n {this.state.errors &&\r\n this.state.errors.length > 0 &&\r\n
\r\n \r\n
}\r\n
\r\n {footer}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport const DisclaimerEditor = withDefaultStyles(UnStyledDisclaimerEditor, getStyles);\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { DropdownSelector } from '@bingads-webui-react/dropdown-selector';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\n\r\nconst PageSize = 10;\r\nconst MaxTotalSize = 200; // According to statics, we have about 1000 disclaimer in total, set 200 here to make sure we can get all the data\r\nconst Mode = 'async';\r\n\r\nconst PopupDisclaimerFilter = items => _.filter(items, item => _.get(item, 'DisclaimerLayout', '') === 'Popup');\r\n\r\nexport class DisclaimerSelector extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.isMountedFlag = false;\r\n this.dropdownSelectorRef = React.createRef();\r\n this.shouldFilterPopup = props.shouldFilterPopup;\r\n this.state = {\r\n totalCount: 0,\r\n items: [],\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.isMountedFlag = true;\r\n this.onFetch({ pageNumber: 0 });\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (this.props.toggleSinceUpdated !== prevProps.toggleSinceUpdated) {\r\n if (this.dropdownSelectorRef.current) {\r\n $('.search-box__input', this.dropdownSelectorRef.current.componentNode).val('');\r\n }\r\n this.onFetch({\r\n query: '',\r\n pageNumber: 0,\r\n });\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.isMountedFlag = false;\r\n }\r\n\r\n onFetch = ({ query = '', pageNumber }) => this.props.repository.findAll({\r\n where: {\r\n name: {\r\n contains: query,\r\n },\r\n },\r\n skip: pageNumber * PageSize,\r\n limit: PageSize,\r\n })\r\n .then(({ items, total }) => {\r\n if (this.isMountedFlag) {\r\n const filteredItems = this.shouldFilterPopup ? PopupDisclaimerFilter(items) : items; // TODO: support filter disclaimer type in the back end\r\n const totalCountToInsert = this.shouldFilterPopup ? filteredItems.length : total; // We should calculate the total count in another call when we need to filter out non-popup disclaimers\r\n this.setState({\r\n items: filteredItems,\r\n totalCount: totalCountToInsert,\r\n });\r\n }\r\n })\r\n .then(() => {\r\n if (this.shouldFilterPopup) {\r\n this.fetchPopUpDisclaimerTotalCount({ query }); // Correct the total count for native ad scenario\r\n }\r\n });\r\n\r\n onEdit = extension => (event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.dropdownSelectorRef.current.instanceRef.handleClickOutside(event);\r\n $('.disclaimer-selector .dropdown-toggle').focus();\r\n this.props.onEdit(extension);\r\n }\r\n\r\n onRemove = extension => (event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n // eslint-disable-next-line no-alert, no-restricted-globals\r\n if (confirm(`${this.props.i18n.getString('Disclaimers_Remove_Confirmation')}\\n${this.props.i18n.getString('Disclaimers_Remove_Confirmation_body')}`)) {\r\n this.props.repository.destroy(extension.Id)\r\n .finally(withUiBlock($('.disclaimer-selector'), this.props.i18n.getString('Loading')))\r\n .then(() => {\r\n this.props.onRemove(extension);\r\n });\r\n }\r\n }\r\n\r\n getDropdownButtonA11yLabel = (selectedItem, i18n) => {\r\n const {\r\n Name,\r\n } = selectedItem;\r\n const label = i18n.getString('Disclaimers_Select');\r\n\r\n return Name ? `${Name} ${label}` : label;\r\n }\r\n\r\n fetchPopUpDisclaimerTotalCount = ({ query = '' }) => this.props.repository.findAll({\r\n where: {\r\n name: {\r\n contains: query,\r\n },\r\n },\r\n skip: 0,\r\n limit: MaxTotalSize,\r\n }).then(({ items }) => {\r\n if (this.isMountedFlag && this.shouldFilterPopup) {\r\n const filteredItems = PopupDisclaimerFilter(items); // TODO: support filter disclaimer type in the back end\r\n const totalCountToInsert = filteredItems.length; // We should calculate the total count in another call when we need to filter out non-popup disclaimers\r\n this.setState({\r\n totalCount: totalCountToInsert,\r\n });\r\n }\r\n });\r\n\r\n renderItem = item => (\r\n
  • \r\n \r\n {item.Name}\r\n \r\n \r\n \r\n {this.props.i18n.getString('Edit')}\r\n \r\n {' | '}\r\n \r\n {this.props.i18n.getString('Remove')}\r\n \r\n \r\n
  • \r\n )\r\n\r\n renderSelectedItem = (item) => {\r\n const name = item && item.Id > 0 ?\r\n item.Name : this.props.i18n.getString('Disclaimers_Select');\r\n\r\n return ({name});\r\n }\r\n\r\n renderEmptyList = () => (\r\n
    \r\n {this.props.i18n.getString('Search_No_Result')}\r\n
    \r\n )\r\n\r\n render() {\r\n return (\r\n
    \r\n {((this.dropdownSelectorRef.current && $('.search-box__input', this.dropdownSelectorRef.current.componentNode).val()) ||\r\n (this.state.items && this.state.items.length > 0)) &&\r\n }\r\n
    \r\n );\r\n }\r\n}\r\n\r\nDisclaimerSelector.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n selectedDisclaimer: PropTypes.shape({\r\n Id: PropTypes.number,\r\n }),\r\n repository: PropTypes.shape({\r\n findAll: PropTypes.func.isRequired,\r\n destroy: PropTypes.func.isRequired,\r\n }).isRequired,\r\n onSelectDisclaimer: PropTypes.func.isRequired,\r\n toggleSinceUpdated: PropTypes.bool.isRequired,\r\n onEdit: PropTypes.func,\r\n onRemove: PropTypes.func,\r\n shouldFilterPopup: PropTypes.bool,\r\n enableRandomPage: PropTypes.bool,\r\n};\r\n\r\nDisclaimerSelector.defaultProps = {\r\n enableRandomPage: true,\r\n selectedDisclaimer: { Id: 0 },\r\n onEdit: _.noop,\r\n onRemove: _.noop,\r\n shouldFilterPopup: false,\r\n};\r\n","export const DisclaimerStringMap = {\r\n DisclaimerLabelText: _TL_('Disclaimer'),\r\n Disclaimers_Campiagn_Description: _TL_('Show a disclaimer in ads for this campaign'),\r\n Disclaimers_Native_Campaign_Description: _TL_('Show a disclaimer in Native ads for this campaign'),\r\n Disclaimers_Campaign_Hint: _TL_('This is your only opportunity to add a disclaimer to ads in this campaign. If you subsequently remove the disclaimer, the ads in this campaign will not serve.'),\r\n Disclaimers_Campaign_Hint_New: _TL_('You can enable disclaimers in ads for new or existing campaigns. Adding a disclaimer means this campaign must always contain one; therefore, if you ever remove the disclaimer, the ads in this campaign will not serve.
    Once you enable a disclaimer, you’ll lose traffic from publishers who don’t support disclaimers. '),\r\n Disclaimers_Add: _TL_('+ Add disclaimer'),\r\n Disclaimers_Create: _TL_('Create disclaimer'),\r\n Disclaimers_DisplayLayout_Label: _TL_('Disclaimer layout'),\r\n Disclaimers_DisplayLayout_Popup: _TL_('Popup layout'),\r\n Disclaimers_DisplayLayout_AdditionalLine: _TL_('Additional line layout'),\r\n Disclaimers_DisplayLayout_AdditionalLine_Hint: _TL_('Ads with the additional line layout disclaimer will not have Ad text 2.'),\r\n Disclaimers_Edit: _TL_('Edit disclaimer'),\r\n Disclaimers_Name_Label: _TL_('Disclaimer name'),\r\n Disclaimers_Select: _TL_('Select a disclaimer'),\r\n Disclaimers_Title_Label: _TL_('Disclaimer title'),\r\n Disclaimers_Title_Default: _TL_('Disclaimer info'),\r\n Disclaimers_Dropdown_Disclaimer: _TL_('Disclaimer'),\r\n Disclaimers_Dropdown_Disclosure: _TL_('Disclosure'),\r\n Disclaimers_Dropdown_MoreDisclaimer: _TL_('More disclaimer info'),\r\n Disclaimers_Dropdown_Offer: _TL_('Offer Details'),\r\n Disclaimers_Dropdown_SafetyInfor: _TL_('Safety Info'),\r\n Disclaimers_Dropdown_SafetyInformation: _TL_('Safety Information'),\r\n Disclaimers_Information_Label: _TL_('Disclaimer information'),\r\n Disclaimers_Edit_Confirmation: _TL_('This disclaimer is associated to other campaigns and any changes to this disclaimer will apply to all associated campaigns.'),\r\n Disclaimers_Remove_Confirmation: _TL_('Are you sure you want to delete this disclaimer?'),\r\n Disclaimers_Remove_Confirmation_body: _TL_('Deleting this disclaimer will delete it for all campaigns associated to it. It will stop all ads under the associated campaigns from serving.'),\r\n Button_Close: _TL_('Button_Close'),\r\n Cancel: _TL_('Cancel'),\r\n Save: _TL_('Save'),\r\n Edit: _TL_('Edit'),\r\n Remove: _TL_('Remove'),\r\n LearnMoreLinkText: _TL_('Learn more'),\r\n 'Click to learn more about {{item}}': _TL_('Click to learn more about {{item}}'),\r\n RemainingCharactersText_New: _TL_('{{count}} characters remaining'),\r\n ExceededCharactersText_New: _TL_('Exceeded by {{count}} characters'),\r\n Ad_FinalUrl: _TL_('Final URL'),\r\n MobileFinalUrl_Label: _TL_('Mobile URL'),\r\n Loading: _TL_('Loading'),\r\n Search_No_Result: _TL_('No results found based on your search.'),\r\n 'Found {{totalCount}} Results for {{searchText}}': _TL_('Found {{totalCount}} Results for {{searchText}}'),\r\n 'No results found from {{searchText}}': _TL_('No results found from {{searchText}}'),\r\n DisclaimerNameRequired: _TL_('Disclaimer name is required'),\r\n DisclaimerInformationRequired: _TL_('Disclaimer information is required'),\r\n FinalURLRequired: _TL_('Final URL is required'),\r\n Validation_Base_Field_Not_Valid: _TL_('Field is not valid'),\r\n Validation_NotEmpty_Required_Field: _TL_('Required field'),\r\n Validation_String_Max_Length: _TL_('Field should not exceed {{maxlength}} characters'),\r\n Validation_String_Invalid_Characters: _TL_('Field contains invalid characters'),\r\n Validation_Number_Require_Numeric: _TL_('Field requires numeric value'),\r\n Validation_Number_Max_Length: _TL_('Number should not exceed max length'),\r\n Validation_Number_Range_Min: _TL_('Number should be larger than {{min}}'),\r\n Validation_Number_Range_Max: _TL_('Number should be smaller than {{max}}'),\r\n Validation_Number_Range_Between: _TL_('Number should be between {{min}} and {{max}}'),\r\n Validation_Array_Size_Max: _TL_('List should have at most {{max}} items'),\r\n Validation_Array_Size_Between: _TL_('List should have at least {{min}} and at most {{max}} items'),\r\n Validation_Array_Items_Invalid: _TL_('Some of items in list are invalid'),\r\n Validation_Array_Items_Duplicate: _TL_('List has duplicate items'),\r\n Close: _TL_('Close'),\r\n 'Disclaimer editor side panel opened': _TL_('Disclaimer editor side panel opened'),\r\n EntitySelector_Search_Placeholder: _TL_('Search'),\r\n 'No results found for {{searchText}}': _TL_('No results found for {{searchText}}'),\r\n '{{itemName}} Selected': _TL_('{{itemName}} Selected'),\r\n Disclaimers_Should_Check_With_Selected_Disclaimer: _TL_('You should check show disclaimer with a selected disclaimer'),\r\n EntitySelector_Pagination_Page: _TL_('Page:'),\r\n EntitySelector_Pagination_TotalPageCountText: _TL_('of'),\r\n EntitySelector_Pagination_PreviousPageText: _TL_('Previous page'),\r\n EntitySelector_Pagination_NextPageText: _TL_('Next page'),\r\n};\r\n\r\n","/* eslint-disable jsx-a11y/anchor-is-valid, jsx-a11y/label-has-for */\r\nimport _ from 'underscore';\r\nimport React from 'react';\r\nimport Modal from 'react-modal';\r\nimport PropTypes from 'prop-types';\r\nimport { Checkbox } from '@bingads-webui-react/checkbox';\r\nimport { Alert } from '@bingads-webui-react/alert';\r\nimport { HelpPopup } from '@bingads-webui-react/help-popup';\r\nimport { ErrorMessages } from '@bingads-webui-react/validation';\r\nimport { Panel } from '@bingads-webui-campaign-react/panel';\r\nimport { DisclaimerEditor } from './disclaimer-editor';\r\nimport { DisclaimerSelector } from './disclaimer-selector';\r\n\r\nexport { DisclaimerStringMap } from './i18n/disclaimer-string-map';\r\n\r\nModal.setAppElement(document.body);\r\n\r\nconst defaultSelectedDisclaimer = () => ({ Id: 0 });\r\n\r\nexport class AdsCampaignDisclaimers extends React.PureComponent {\r\n static propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n campaignId: PropTypes.number,\r\n DisclaimerAdsEnabled: PropTypes.bool,\r\n AllowDisclaimerEnabled: PropTypes.bool,\r\n selectedDisclaimer: PropTypes.shape({\r\n Id: PropTypes.number,\r\n }),\r\n resetSelectedDisclaimer: PropTypes.func,\r\n // eslint-disable-next-line react/forbid-prop-types\r\n schema: PropTypes.object.isRequired,\r\n repository: PropTypes.shape({\r\n extension: PropTypes.shape({\r\n create: PropTypes.func.isRequired,\r\n destroy: PropTypes.func.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n usePanel: PropTypes.bool,\r\n isDisclaimerCheckboxDisabled: PropTypes.bool,\r\n onDisclaimerCheckboxChange: PropTypes.func,\r\n onDataChange: PropTypes.func,\r\n isForNew: PropTypes.bool,\r\n isNativeAd: PropTypes.bool,\r\n disableTitle: PropTypes.bool,\r\n enableRandomPage: PropTypes.bool,\r\n showOnlyPopupLayout: PropTypes.bool,\r\n };\r\n\r\n static defaultProps = {\r\n campaignId: 0,\r\n enableRandomPage: true,\r\n DisclaimerAdsEnabled: false,\r\n AllowDisclaimerEnabled: false,\r\n selectedDisclaimer: defaultSelectedDisclaimer(),\r\n resetSelectedDisclaimer: _.noop,\r\n usePanel: false,\r\n isDisclaimerCheckboxDisabled: false,\r\n onDisclaimerCheckboxChange: _.noop,\r\n onDataChange: _.noop,\r\n isForNew: false,\r\n isNativeAd: false,\r\n disableTitle: false,\r\n showOnlyPopupLayout: false,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n const selectedDisclaimerInfo = this.props.DisclaimerAdsEnabled && _.result(this.props.selectedDisclaimer, 'Id', 0) ?\r\n this.props.selectedDisclaimer : defaultSelectedDisclaimer();\r\n // the disclaimer uncheck by default\r\n this.state = {\r\n isCheckboxFocusStyle: false,\r\n enableDisclaimer: this.props.DisclaimerAdsEnabled,\r\n isAddOpen: false,\r\n selectedDisclaimer: selectedDisclaimerInfo,\r\n errorMessage: [],\r\n toggleSinceUpdated: true,\r\n EditingDisclaimer: null,\r\n };\r\n\r\n // only for test purpose\r\n if (this.props.testRef) {\r\n this.props.testRef.current = {\r\n getValues: this.getValues.bind(this),\r\n state: this.state,\r\n };\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (this.props.DisclaimerAdsEnabled !== prevProps.DisclaimerAdsEnabled) {\r\n this.props.onDisclaimerCheckboxChange(this.props.DisclaimerAdsEnabled);\r\n const errorMeassageClearIfNeeded = this.props.isForNew ? {} : { errorMessage: [] };\r\n // eslint-disable-next-line react/no-did-update-set-state\r\n this.setState({\r\n enableDisclaimer: this.props.DisclaimerAdsEnabled,\r\n isAddOpen: false,\r\n selectedDisclaimer: this.props.DisclaimerAdsEnabled && _.result(this.props.selectedDisclaimer, 'Id', 0) ?\r\n this.props.selectedDisclaimer : defaultSelectedDisclaimer(),\r\n EditingDisclaimer: null,\r\n ...errorMeassageClearIfNeeded,\r\n });\r\n }\r\n\r\n if (this.props.isForNew &&\r\n this.props.DisclaimerAdsEnabled && _.result(this.props.selectedDisclaimer, 'Id', 0)\r\n && _.get(this.props.selectedDisclaimer, 'Id', 0) !== _.get(prevProps.selectedDisclaimer, 'Id', 0)) {\r\n // eslint-disable-next-line react/no-did-update-set-state\r\n this.setState({\r\n selectedDisclaimer: this.props.selectedDisclaimer,\r\n });\r\n }\r\n\r\n if (this.props.isForNew &&\r\n (this.state.enableDisclaimer !== prevState.enableDisclaimer || _.get(prevState, ['selectedDisclaimer', 'Id'], 0) !== _.get(this.state, ['selectedDisclaimer', 'Id'], 0))\r\n ) {\r\n this.props.onDataChange();\r\n }\r\n }\r\n\r\n onCheckedChange = ({ isTrusted }) => {\r\n this.setState((prev) => {\r\n const newValue = !prev.enableDisclaimer;\r\n this.props.onDisclaimerCheckboxChange(newValue);\r\n return {\r\n enableDisclaimer: newValue,\r\n errorMessage: [],\r\n isCheckboxFocusStyle: newValue && isTrusted === false,\r\n };\r\n });\r\n };\r\n\r\n onDisclaimerAddOrUpdated = (updatedExtension = null) => {\r\n if (updatedExtension && updatedExtension.Id > 0 &&\r\n updatedExtension.Id === this.state.selectedDisclaimer.Id) {\r\n this.setState(prev => ({\r\n selectedDisclaimer: updatedExtension,\r\n toggleSinceUpdated: !prev.toggleSinceUpdated,\r\n }));\r\n } else {\r\n this.setState(prev => ({\r\n toggleSinceUpdated: !prev.toggleSinceUpdated,\r\n }));\r\n }\r\n };\r\n\r\n onAddClick = (e) => {\r\n e.preventDefault();\r\n this.setState({\r\n isAddOpen: true,\r\n });\r\n };\r\n\r\n onEditUIClose = () => {\r\n this.setState({\r\n isAddOpen: false,\r\n EditingDisclaimer: null,\r\n });\r\n };\r\n\r\n onSelectDisclaimer = (selectedItem) => {\r\n this.setState({\r\n selectedDisclaimer: selectedItem,\r\n errorMessage: [],\r\n });\r\n };\r\n\r\n onEdit = (extension) => {\r\n this.setState({\r\n EditingDisclaimer: extension,\r\n isAddOpen: true,\r\n });\r\n };\r\n\r\n onRemove = (extension) => {\r\n if (extension.Id === this.state.selectedDisclaimer.Id) {\r\n this.setState({\r\n selectedDisclaimer: defaultSelectedDisclaimer(),\r\n });\r\n }\r\n if (extension.Id === _.result(this.props.selectedDisclaimer, 'Id', 0)) {\r\n this.props.resetSelectedDisclaimer();\r\n }\r\n this.onDisclaimerAddOrUpdated();\r\n };\r\n\r\n getValues = (campaignName) => {\r\n const result = {};\r\n // We need to update the value anyway even if the data is illegal in the display plus campaign\r\n if (this.props.isForNew || this.validate()) {\r\n result.DisclaimerAdsEnabled = this.state.enableDisclaimer;\r\n\r\n const campaignInfo = this.props.campaignId > 0 ? {\r\n Campaign: {\r\n Id: this.props.campaignId,\r\n },\r\n } : {\r\n CampaignName: campaignName,\r\n };\r\n if (this.state.enableDisclaimer) {\r\n if (!this.props.selectedDisclaimer ||\r\n this.props.selectedDisclaimer.Id !== this.state.selectedDisclaimer.Id) {\r\n result.AdExtensionAssociations = [_.defaults({\r\n Id: this.state.selectedDisclaimer.Id,\r\n Name: this.state.selectedDisclaimer.Name,\r\n Type: 'CampaignDisclaimerAdExtension',\r\n Status: 'Active',\r\n }, campaignInfo)];\r\n if (_.result(this.props.selectedDisclaimer, 'Id', 0)) {\r\n result.AdExtensionAssociations = result.AdExtensionAssociations.concat(_.defaults({\r\n Id: this.props.selectedDisclaimer.Id,\r\n Type: 'CampaignDisclaimerAdExtension',\r\n Status: 'Deleted',\r\n }, campaignInfo));\r\n }\r\n }\r\n }\r\n if (!this.state.enableDisclaimer && this.props.selectedDisclaimer && this.props.selectedDisclaimer.Id) {\r\n result.AdExtensionAssociations = [_.defaults({\r\n Id: this.props.selectedDisclaimer.Id,\r\n Type: 'CampaignDisclaimerAdExtension',\r\n Status: 'Deleted',\r\n }, campaignInfo)];\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n validate = () => {\r\n const valid = !this.state.enableDisclaimer || (\r\n this.state.selectedDisclaimer\r\n && this.state.selectedDisclaimer.Id > 0);\r\n this.setState({\r\n errorMessage: valid ?\r\n [] : [this.props.i18n.getString('Validation_NotEmpty_Required_Field')],\r\n });\r\n return valid;\r\n };\r\n\r\n validateAndWarn = () => {\r\n const valid = this.validate();\r\n return valid ? null : this.props.i18n.getString('Disclaimers_Should_Check_With_Selected_Disclaimer');\r\n };\r\n\r\n render() {\r\n const disclaimerEditor = (\r\n \r\n );\r\n\r\n const addContent = (\r\n \r\n
    \r\n \r\n {this.props.i18n.getString('Disclaimers_Add')}\r\n \r\n
    \r\n {this.props.usePanel ?\r\n \r\n {disclaimerEditor}\r\n :\r\n \r\n {disclaimerEditor}\r\n \r\n }\r\n
    );\r\n\r\n const selectorContent = (\r\n \r\n );\r\n\r\n const errorsContent = this.state.errorMessage && this.state.errorMessage.length > 0 &&\r\n ();\r\n // todo search campaign only\r\n return (this.props.campaignId === 0 ||\r\n (this.props.campaignId > 0)) && (\r\n
    \r\n {\r\n !this.props.isForNew && !this.props.disableTitle && (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n
    \r\n {(this.props.campaignId > 0 && !this.props.AllowDisclaimerEnabled) ?\r\n \r\n
    \r\n {this.props.isNativeAd ?\r\n this.props.i18n.getString('Disclaimers_Native_Campaign_Description')\r\n : this.props.i18n.getString('Disclaimers_Campiagn_Description')}\r\n
    \r\n {selectorContent}\r\n {errorsContent}\r\n {addContent}\r\n
    :\r\n \r\n \r\n {this.props.isNativeAd ?\r\n this.props.i18n.getString('Disclaimers_Native_Campaign_Description')\r\n : this.props.i18n.getString('Disclaimers_Campiagn_Description')}\r\n \r\n
    \r\n {this.state.enableDisclaimer &&\r\n \r\n )}\r\n message={this.props.AllowDisclaimerEnabled ? this.props.i18n.getString('Disclaimers_Campaign_Hint_New') : this.props.i18n.getString('Disclaimers_Campaign_Hint')}\r\n />\r\n {selectorContent}\r\n {errorsContent}\r\n {addContent}\r\n }\r\n
    \r\n
    \r\n }\r\n
    \r\n
    );\r\n }\r\n}\r\n\r\n","import _ from 'underscore';\r\n\r\nexport const viewModelToBulkModelForDisclaimerAssociation = ({ campaignViewModel }) => {\r\n const associations = campaignViewModel.data.AdExtensionAssociations || [];\r\n const bulkAssociations = associations.map(association => _.omit(association, ['Client Id', 'Name']));\r\n return { AdExtensionAssociations: bulkAssociations };\r\n};\r\n","import {\r\n makeStyles,\r\n shorthands,\r\n tokens,\r\n} from '@fluentui/react-components';\r\n\r\nexport const useStyles = makeStyles({\r\n adsStudioColorPicker: {\r\n '& .color_icon': {\r\n width: '20px',\r\n height: '20px',\r\n },\r\n\r\n '& .info_icon': {\r\n width: '14px',\r\n height: '14px',\r\n },\r\n '& .card-header': {\r\n ...shorthands.borderBottom(tokens.strokeWidthThin, 'solid', tokens.colorNeutralStroke2),\r\n },\r\n '& .list-body-header': {\r\n ...shorthands.margin('12px', 0),\r\n },\r\n },\r\n flex: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n },\r\n editBtn: {\r\n width: '32px',\r\n height: '32px',\r\n ...shorthands.borderRadius(tokens.borderRadiusCircular),\r\n backgroundColor: tokens.colorNeutralBackground1,\r\n backdropFilter: 'blur(4px)',\r\n },\r\n delBtn: {\r\n ...shorthands.border('none'),\r\n width: '100%',\r\n fontSize: tokens.fontSizeBase300,\r\n color: tokens.colorNeutralForeground2,\r\n ...shorthands.padding(tokens.spacingVerticalM),\r\n '&:hover': {\r\n backgroundColor: tokens.colorNeutralBackground1,\r\n },\r\n },\r\n flexColumn: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n flexDirection: 'column',\r\n },\r\n hr: {\r\n position: 'absolute',\r\n left: 0,\r\n right: 0,\r\n ...shorthands.margin(0),\r\n color: tokens.colorNeutralStroke1,\r\n },\r\n tooltip: {\r\n width: '300px',\r\n maxWidth: '300px',\r\n flexDirection: 'column',\r\n },\r\n adsStudioColorPalette: {\r\n display: 'flex',\r\n },\r\n paletteAddColor: {\r\n ...shorthands.borderRadius(tokens.borderRadiusXLarge),\r\n maxWidth: 'none',\r\n },\r\n paletteColor: {\r\n ...shorthands.borderRadius(tokens.borderRadiusXLarge),\r\n maxWidth: 'none',\r\n },\r\n paletteBox: {\r\n ...shorthands.border(tokens.strokeWidthThick, 'solid', tokens.colorNeutralBackground1),\r\n ...shorthands.borderRadius(tokens.borderRadiusXLarge),\r\n },\r\n newColor: {\r\n ...shorthands.border(tokens.strokeWidthThin, 'dashed', '#C8C6C4'),\r\n },\r\n});\r\n\r\nexport const colorPickerStyles = {\r\n panel: { padding: 12 },\r\n root: {\r\n minWidth: 276,\r\n },\r\n flexPreviewBox: {\r\n styles: {\r\n ...shorthands.margin(0, 0, '10px', 0),\r\n '&>div': { height: '24px', width: '24px', ...shorthands.borderRadius(tokens.borderRadiusCircular) },\r\n },\r\n },\r\n flexContainer: {\r\n alignItems: 'center',\r\n },\r\n flexSlider: {\r\n styles: {\r\n ...shorthands.margin(tokens.spacingHorizontalSNudge, 0),\r\n '&>div': { height: '8px', ...shorthands.borderRadius(tokens.borderRadiusMedium) },\r\n '&>div>div': { width: '12px', height: '12px' },\r\n },\r\n },\r\n colorRectangle: { minHeight: 130 },\r\n};\r\n\r\n\r\nexport const getSkeletonStyles = makeStyles({\r\n row: {\r\n display: 'flex',\r\n ...shorthands.gap('8px'),\r\n flexWrap: 'wrap',\r\n },\r\n item: {\r\n height: '55px',\r\n width: '55px',\r\n backgroundColor: tokens.colorNeutralStencil1,\r\n },\r\n});\r\n","import React from 'react';\r\nimport { ColorPicker, IColor } from '@fluentui/react';\r\nimport { DeleteRegular } from '@fluentui/react-icons';\r\nimport {\r\n Tooltip, tokens, Button,\r\n mergeClasses\r\n} from '@fluentui/react-components';\r\nimport { useStyles, colorPickerStyles } from './style';\r\nimport { AdsColorPickerProps, TooltipContentProps } from './type';\r\n\r\nconst TooltipContent = ({\r\n colorData, onColorChange, onDelete, i18n,\r\n}: TooltipContentProps) => {\r\n const classes = useStyles();\r\n return (\r\n <>\r\n \r\n {onDelete &&\r\n <>\r\n
    \r\n }\r\n data-colorid={colorData.Name}\r\n onClick={onDelete}\r\n className={mergeClasses(classes.delBtn, 'delete_color_btn')}\r\n >\r\n {i18n.getString(_TL_('Delete color'))}\r\n \r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nconst AdsColorPicker: React.FC = ({\r\n i18n,\r\n children,\r\n colorData,\r\n isColorSelected,\r\n onDelete,\r\n updateColor,\r\n onTooltipVisibilityChange,\r\n}) => {\r\n const onColorChange = (ev: React.SyntheticEvent, colorObj: IColor) => {\r\n updateColor(colorData.Name, colorObj);\r\n ev.stopPropagation();\r\n };\r\n const classes = useStyles();\r\n return (\r\n ,\r\n className: classes.tooltip,\r\n }}\r\n withArrow\r\n relationship=\"label\"\r\n positioning=\"below\"\r\n visible={isColorSelected}\r\n onVisibleChange={(_ev, data) => onTooltipVisibilityChange && onTooltipVisibilityChange(data.visible)}\r\n >\r\n {React.isValidElement(children) ? children : null}\r\n \r\n );\r\n};\r\nconst MemoizedAdsColorPicker = React.memo(AdsColorPicker);\r\nexport default MemoizedAdsColorPicker;\r\n\r\n","import { IColor } from '@fluentui/react';\r\nimport React, { useCallback, useEffect } from 'react';\r\n\r\n\r\ninterface UseCloseColorPickerProps {\r\n isSelected: boolean;\r\n colorData: { Name: string; HexCode: string };\r\n setIsSelected: (isSelected: boolean) => void;\r\n updateColor: (name: string, color: IColor) => void;\r\n}\r\n\r\nexport const useHandleCloseColorPicker = ({\r\n isSelected,\r\n colorData,\r\n setIsSelected,\r\n updateColor,\r\n}: UseCloseColorPickerProps) => {\r\n const popupRef = React.useRef(null);\r\n const handleClickOutside = useCallback((event) => {\r\n if (popupRef.current && !popupRef.current.contains(event.target) && event.target.className) {\r\n const { className } = event.target;\r\n const isColorPicker = typeof className === 'string' && (className.includes('ColorPicker') || className.includes('delete_color_btn') || className.includes('TextField'));\r\n if (!isColorPicker) {\r\n colorData.HexCode && updateColor(colorData.Name, { hex: colorData.HexCode, str: colorData.HexCode } as IColor);\r\n setIsSelected(false);\r\n }\r\n }\r\n }, [colorData.HexCode, colorData.Name, setIsSelected, updateColor]);\r\n\r\n useEffect(() => {\r\n if (isSelected) {\r\n document.addEventListener('click', handleClickOutside);\r\n } else {\r\n document.removeEventListener('click', handleClickOutside);\r\n }\r\n\r\n return () => {\r\n document.removeEventListener('click', handleClickOutside);\r\n };\r\n }, [handleClickOutside, isSelected]);\r\n\r\n return { popupRef };\r\n};\r\n\r\n\r\nexport const useCheckDuplicateColor = ({ allowDuplicates, paletteData, onUpdate }) => {\r\n const [isDuplicate, setIsDuplicate] = React.useState(false);\r\n useEffect(() => {\r\n isDuplicate && setIsDuplicate(false);\r\n }, [isDuplicate]);\r\n const onUpdateColor = useCallback((name, colorObj) => {\r\n if (!allowDuplicates) {\r\n const isDuplicateColor = paletteData.some(color => color.HexCode === colorObj.str);\r\n if (isDuplicateColor) {\r\n setIsDuplicate(true);\r\n return;\r\n }\r\n }\r\n onUpdate(name, colorObj);\r\n setIsDuplicate(false);\r\n }, [allowDuplicates, onUpdate, paletteData]);\r\n\r\n return {\r\n isDuplicate,\r\n onUpdateColor,\r\n };\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\nimport { AddRegular, EditRegular } from '@fluentui/react-icons';\r\nimport { Button, Caption1Strong, mergeClasses } from '@fluentui/react-components';\r\nimport { IColor } from '@fluentui/react';\r\nimport { useStyles } from './style';\r\nimport {\r\n IColorAddButton,\r\n IBrandColors,\r\n} from './type';\r\nimport AdsColorPickerTooltip from './Tooltip';\r\nimport { useHandleCloseColorPicker } from './hooks';\r\n\r\nconst defaultState = {\r\n Name: '',\r\n HexCode: '',\r\n};\r\nexport const BrandColors = ({\r\n showEditBtn: enableEditBtn, // this will show edit icon on hover and on false will select color\r\n showTooltipOnSelect, // this will open tooltip on select color and hide edit icon\r\n defaultSelected,\r\n isDuplicate,\r\n i18n,\r\n colorData: color,\r\n hideCaption = false,\r\n onDelete,\r\n updateColor,\r\n palletteBoxSize,\r\n paletteColorSize,\r\n onTooltipVisibilityChange,\r\n}: IBrandColors) => {\r\n const [showEditBtn, setShowEditBtn] = useState(false);\r\n const [isSelected, setIsSelected] = useState(false);\r\n const [colorData, setColorData] = useState(color);\r\n useEffect(() => {\r\n if (isDuplicate) {\r\n setColorData(color);\r\n }\r\n }, [color, isDuplicate]);\r\n const classes = useStyles();\r\n const {\r\n popupRef,\r\n } = useHandleCloseColorPicker({\r\n isSelected,\r\n colorData,\r\n setIsSelected,\r\n updateColor,\r\n });\r\n const onEdit = () => {\r\n setIsSelected(true);\r\n };\r\n const onUpdate = (name: string, colorObj: IColor) => {\r\n setColorData({ Name: name, HexCode: colorObj.str });\r\n };\r\n const onMouseEnter = () => {\r\n enableEditBtn && setShowEditBtn(true);\r\n };\r\n const onMouseLeave = () => {\r\n setShowEditBtn(false);\r\n };\r\n const onKeyDown = (e) => {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n onMouseEnter();\r\n }\r\n };\r\n const onSelectColor = () => {\r\n if (showTooltipOnSelect) {\r\n setIsSelected(true);\r\n return;\r\n }\r\n if (!enableEditBtn) {\r\n updateColor(colorData.Name, { hex: colorData.HexCode, str: colorData.HexCode } as IColor);\r\n }\r\n };\r\n if (!colorData) return null;\r\n const selectedColorStyle = { boxShadow: 'inset 0 0 0 var(--strokeWidthThicker) var(--colorBrandStroke1), inset 0 0 0 5px var(--colorStrokeFocus1)' };\r\n return (\r\n \r\n
    \r\n \r\n \r\n {showEditBtn && !showTooltipOnSelect && (\r\n }\r\n data-colorid={colorData.Name}\r\n size=\"medium\"\r\n style={isSelected ? { visibility: 'hidden' } : {}}\r\n className={mergeClasses('edit_btn', classes.editBtn)}\r\n onClick={onEdit}\r\n />\r\n )}\r\n
    \r\n \r\n {!hideCaption && {colorData.HexCode}}\r\n \r\n\r\n \r\n );\r\n};\r\n\r\nexport const ColorAddButton = ({\r\n updateColor,\r\n i18n,\r\n isDuplicate,\r\n totalColors,\r\n palletteBoxSize,\r\n paletteColorSize,\r\n}: IColorAddButton) => {\r\n const classes = useStyles();\r\n const [isSelected, setIsSelected] = useState(false);\r\n const [colorData, setColorData] = useState(defaultState);\r\n useEffect(() => {\r\n setColorData(defaultState);\r\n }, [totalColors, isDuplicate]);\r\n const {\r\n popupRef,\r\n } = useHandleCloseColorPicker({\r\n isSelected,\r\n colorData,\r\n setIsSelected,\r\n updateColor,\r\n });\r\n const onAdd = () => {\r\n setIsSelected(true);\r\n };\r\n const onUpdate = (name: string, colorObj: IColor) => {\r\n setColorData({ Name: name, HexCode: colorObj.str });\r\n };\r\n\r\n return (\r\n \r\n \r\n {colorData && colorData.HexCode ? : }\r\n key=\"add_color\"\r\n onClick={onAdd}\r\n className={mergeClasses(classes.paletteAddColor, classes.newColor, 'add_button')}\r\n />\r\n }\r\n \r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport { Skeleton, SkeletonItem } from '@fluentui/react-components';\r\nimport { getSkeletonStyles } from './style';\r\n\r\nconst PaletteSkeleton = React.memo(() => {\r\n const classes = getSkeletonStyles();\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n});\r\n\r\nexport { PaletteSkeleton };\r\n","import React, { useMemo } from 'react';\r\nimport { FormCardDefaultHeader, FormCard, FormCardBody } from '@bingads-webui-fluent-component/form-cards';\r\nimport { ColorRegular } from '@fluentui/react-icons';\r\nimport { HelpButton } from '@bingads-webui-react/help-popup';\r\nimport { Body1Strong, mergeClasses } from '@fluentui/react-components';\r\nimport { useStyles } from './style';\r\nimport {\r\n AdsStudioColorPickerProps\r\n} from './type';\r\nimport { BrandColors, ColorAddButton } from './Palette';\r\nimport { PaletteSkeleton } from './PaletteSkelton';\r\nimport { useCheckDuplicateColor } from './hooks';\r\n\r\n\r\n// WILL CHANGE ID ONCE DATA START COMING FROM API\r\nconst AdsStudioColorPicker: React.FC = ({\r\n title,\r\n subTitle,\r\n text,\r\n isLoading,\r\n i18n,\r\n allowDuplicates,\r\n showEditBtn = true,\r\n defaultSelected,\r\n paletteData = [],\r\n maxColors = 2,\r\n helpTopic,\r\n helpLabel,\r\n onUpdate,\r\n onDelete,\r\n}) => {\r\n const totalColors = paletteData.length;\r\n const { isDuplicate, onUpdateColor } = useCheckDuplicateColor({ paletteData, allowDuplicates, onUpdate });\r\n const classes = useStyles();\r\n\r\n const renderHelpBubble = useMemo(() => (\r\n <>\r\n {helpTopic && }\r\n \r\n ), [helpLabel, helpTopic]);\r\n\r\n return (\r\n \r\n \r\n }\r\n />\r\n \r\n
    \r\n {subTitle}\r\n {text &&

    {text}

    }\r\n
    \r\n {isLoading ?\r\n :\r\n
    \r\n {paletteData.map(colorData => (\r\n colorData && \r\n ))}\r\n {(totalColors < maxColors) && }\r\n
    \r\n }\r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nconst MemoizedAdsStudioColorPicker = React.memo(AdsStudioColorPicker);\r\nexport default MemoizedAdsStudioColorPicker;\r\n","import React, { useCallback, useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { contains, filter, map, size } from 'underscore';\r\nimport { ActionButton, Checkbox, Label } from '@fluentui/react';\r\nimport { HelpPopup } from '@bingads-webui-react/help-popup';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nimport { getDemographicStyle } from './style';\r\n\r\nconst UnstyledDemographic = (props) => {\r\n const {\r\n className,\r\n classes,\r\n i18n,\r\n title,\r\n description,\r\n formatter,\r\n dimensions,\r\n availableDimensions,\r\n onChangeDimensions,\r\n popupId,\r\n onValidate,\r\n needValidation,\r\n } = props;\r\n\r\n const [errorMessage, setErrorMessage] = useState('');\r\n\r\n const onToggleDimension = useCallback((dimension) => {\r\n if (contains(dimensions, dimension)) {\r\n onChangeDimensions(filter(dimensions, d => d !== dimension));\r\n } else {\r\n onChangeDimensions([...dimensions, dimension]);\r\n }\r\n }, [dimensions, onChangeDimensions]);\r\n\r\n const onToggleAll = useCallback(() => {\r\n if (size(dimensions) < size(availableDimensions)) {\r\n onChangeDimensions(Object.keys(availableDimensions));\r\n } else {\r\n onChangeDimensions([]);\r\n }\r\n }, [availableDimensions, dimensions, onChangeDimensions]);\r\n\r\n useEffect(() => {\r\n if (needValidation) {\r\n const error = dimensions.length > 0 ? '' : i18n.getString(_TL_('At least one target needs to be selected.'));\r\n setErrorMessage(error);\r\n onValidate(error);\r\n }\r\n }, [dimensions, onValidate, i18n, needValidation])\r\n\r\n return (\r\n
    \r\n \r\n
    {description || null}
    \r\n \r\n {size(dimensions) < size(availableDimensions) ? i18n.getString(_TL_('Select all')) : i18n.getString(_TL_('Clear all'))}\r\n \r\n
    \r\n {map(availableDimensions, (_, dimension) => (\r\n onToggleDimension(dimension)}\r\n />\r\n ))}\r\n
    \r\n { errorMessage &&
    {errorMessage}
    }\r\n
    \r\n );\r\n};\r\n\r\nUnstyledDemographic.propTypes = {\r\n className: PropTypes.string,\r\n classes: PropTypes.shape({\r\n demographicContainer: PropTypes.string.isRequired,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n title: PropTypes.string.isRequired,\r\n description: PropTypes.string,\r\n formatter: PropTypes.func.isRequired,\r\n dimensions: PropTypes.arrayOf(PropTypes.string),\r\n availableDimensions: PropTypes.shape({}).isRequired,\r\n onChangeDimensions: PropTypes.func.isRequired,\r\n popupId: PropTypes.string,\r\n onValidate: PropTypes.func,\r\n needValidation: PropTypes.bool,\r\n};\r\n\r\nUnstyledDemographic.defaultProps = {\r\n className: '',\r\n description: '',\r\n dimensions: [],\r\n popupId: '',\r\n onValidate: () => {},\r\n needValidation: false,\r\n};\r\n\r\nexport const Demographic = React.memo(withDefaultStyles((UnstyledDemographic), getDemographicStyle));\r\n","export const getDemographicStyle = (_, { palette = {} }) => ({\r\n demographicContainer: {\r\n '& > label': {\r\n marginTop: 24,\r\n },\r\n\r\n '& button.toggle-dimensions': {\r\n color: palette.themePrimary,\r\n padding: 0,\r\n\r\n '& .ms-Button-label': {\r\n margin: 0,\r\n },\r\n },\r\n\r\n '& .dimensions': {\r\n display: 'grid',\r\n gridTemplateColumns: 'auto auto auto',\r\n columnGap: '10px',\r\n },\r\n\r\n '& .error-message': {\r\n color: palette.redDark,\r\n marginTop: 8,\r\n },\r\n },\r\n});\r\n","import { chain, size, sortBy } from 'underscore';\r\n\r\nexport const AgeRanges = {\r\n EighteenToTwentyFour: _TL_('18-24'),\r\n TwentyFiveToThirtyFour: _TL_('25-34'),\r\n ThirtyFiveToFourtyNine: _TL_('35-49'),\r\n FiftyToSixtyFour: _TL_('50-64'),\r\n SixtyFiveAndAbove: _TL_('65+'),\r\n Unknown: _TL_('Unknown'),\r\n};\r\n\r\nconst sortAgeRanges = ageRanges => sortBy(ageRanges, ageRange => AgeRanges[ageRange]);\r\n\r\nexport const formatAgeRange = (ageRange, i18n) => (AgeRanges[ageRange] ? i18n.getString(AgeRanges[ageRange]) : ageRange);\r\n\r\nexport const formatAgeRanges = (ageRanges, i18n) => {\r\n if (size(ageRanges) === size(AgeRanges)) {\r\n return i18n.getString(_TL_('All ages'));\r\n }\r\n\r\n return chain(sortAgeRanges(ageRanges))\r\n .map(ageRange => formatAgeRange(ageRange, i18n))\r\n .join(i18n.getString(_TL_(', ')))\r\n .value();\r\n};\r\n","import { chain, size, sortBy } from 'underscore';\r\n\r\nexport const Genders = {\r\n Female: _TL_('Female'),\r\n Male: _TL_('Male'),\r\n Unknown: _TL_('Unknown'),\r\n};\r\n\r\nconst sortGenders = genders => sortBy(genders, gender => Genders[gender]);\r\n\r\nexport const formatGender = (gender, i18n) => (Genders[gender] ? i18n.getString(Genders[gender]) : gender);\r\n\r\nexport const formatGenders = (genders, i18n) => {\r\n if (size(genders) === size(Genders)) {\r\n return i18n.getString(_TL_('All genders'));\r\n }\r\n\r\n return chain(sortGenders(genders))\r\n .map(gender => formatGender(gender, i18n))\r\n .join(i18n.getString(_TL_(', ')))\r\n .value();\r\n};\r\n","export const DeliveryStatus = {\r\n UnderReview: _TL_('Under review'),\r\n Ready: _TL_('Ready'),\r\n Limited: _TL_('Ready (Limited)'),\r\n BuildingTheAudience: _TL_('Building the audience'),\r\n};\r\n\r\nexport const WhitelistDeliveryStatus = [\r\n 'Ready',\r\n 'BuildingTheAudience',\r\n];\r\n","const deliveryStatus = {\r\n Message_DeliveryStatus_Ready: _TL_('Ready'),\r\n Message_DeliveryStatus_BuildingTheAudience: _TL_('Building the audience'),\r\n Message_DeliveryStatus_AudienceTooSmall: _TL_('Audience too small'),\r\n Message_DeliveryStatus_NoActivityInThePast24Hrs: _TL_('No activity in the past 24 hrs'),\r\n Message_DeliveryStatus_MissingTagOnTheSite: _TL_('Missing tag on the site'),\r\n Message_DeliveryStatus_MissingCustomEventsOnTheTag: _TL_('Missing custom events on the tag'),\r\n Message_DeliveryStatus_InactiveDueToTagUnavailable: _TL_('The tag is no longer available'),\r\n Message_DeliveryStatus_RecalculatingAudienceSize: _TL_('Recalculating audience size'),\r\n Message_DeliveryStatus_PossibleTagIssue: _TL_('Possible UET tag issue'),\r\n Message_DeliveryStatus_MissingComponentAudience: _TL_('Missing component audience'),\r\n Message_DeliveryStatus_ReadyForAudienceCampaignNotSearchCampaign: _TL_('Ready for audience campaigns, but too small for search campaigns'),\r\n Message_DeliveryStatus_ReadyForSearchCampaignNotAudienceCampaign: _TL_('Ready for search campaigns, but too small for audience campaigns'),\r\n};\r\n\r\nconst pagination = {\r\n Grid_NextPage: _TL_('Next page'),\r\n Grid_Page_Colon: _TL_('Page:'),\r\n Grid_Page_Number: _TL_('Page number'),\r\n Grid_Page_Number_Label_Text: _TL_('Page:'),\r\n Grid_Page: _TL_('Page'),\r\n Grid_PageOf: _TL_('of'),\r\n Grid_PreviousPage: _TL_('Previous page'),\r\n};\r\n\r\nexport const legacyI18nKeys = [\r\n deliveryStatus,\r\n pagination,\r\n];\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport $ from 'jquery';\r\nimport React, { useCallback, useMemo, useRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { chain, isEmpty, noop, result } from 'underscore';\r\nimport { KeyCodes } from '@fluentui/react';\r\nimport { DeliveryStatusPopupFactory } from '@bingads-webui-campaign/delivery-status-popup-factory';\r\nimport { buildLegacyI18n } from '@bingads-webui/build-legacy-i18n';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nimport { DeliveryStatus, WhitelistDeliveryStatus } from '../constants/delivery-status';\r\nimport { legacyI18nKeys } from '../constants/legacy-i18n';\r\nimport { getAudienceStatusStyle } from '../styles/audience-status';\r\n\r\nconst UnstyledAudienceStatus = (props) => {\r\n const {\r\n audienceGroup: { Status, Dimensions },\r\n classes,\r\n i18n,\r\n } = props;\r\n\r\n const DeliveryStatusDetails = useMemo(\r\n () => chain(Dimensions)\r\n .filter(dimension => dimension.Type === 'Audience')\r\n .map(dimension => result(dimension, 'Audiences'))\r\n .flatten()\r\n .map(audience => result(audience, 'AudienceTrackingStatus'))\r\n .compact()\r\n .uniq()\r\n .filter(status => !WhitelistDeliveryStatus.includes(status))\r\n .value(),\r\n [Dimensions]\r\n );\r\n\r\n const entityForDeliveryStatusPopupFactory = useMemo(() => ({\r\n grid: {\r\n gridView: {\r\n keyOfElement: noop,\r\n itemWithKey: () => ({ DeliveryStatusDetails }),\r\n },\r\n },\r\n }), [DeliveryStatusDetails]);\r\n\r\n const legacyI18n = useMemo(() => buildLegacyI18n(i18n, legacyI18nKeys), [i18n]);\r\n\r\n const containerRef = useRef(null);\r\n\r\n const showDeliveryStatusDetails = useCallback((event) => {\r\n const view = new DeliveryStatusPopupFactory({\r\n i18n: legacyI18n,\r\n ...entityForDeliveryStatusPopupFactory,\r\n });\r\n view.showRejectionPopup({\r\n event,\r\n view: $(containerRef.current),\r\n popoverId: 'delivery-status-popup-callout',\r\n });\r\n event.stopPropagation();\r\n }, [entityForDeliveryStatusPopupFactory, legacyI18n]);\r\n\r\n const showDeliveryStatusDetailsByKey = useCallback((event) => {\r\n if (event.keyCode === KeyCodes.enter && event.currentTarget === event.target) {\r\n showDeliveryStatusDetails(event);\r\n }\r\n }, [showDeliveryStatusDetails]);\r\n\r\n const hideDeliveryStatusDetails = useCallback((event) => {\r\n if ($(event.relatedTarget).closest('#delivery-status-popup-callout').length === 0) {\r\n $(containerRef.current).trigger('closeDeliveryStatusPopup');\r\n }\r\n }, []);\r\n\r\n return (\r\n \r\n {isEmpty(DeliveryStatusDetails) && i18n.getString(DeliveryStatus[Status] || '')}\r\n {!isEmpty(DeliveryStatusDetails) && (\r\n \r\n {i18n.getString(DeliveryStatus[Status] || '')}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nUnstyledAudienceStatus.propTypes = {\r\n audienceGroup: PropTypes.shape({\r\n Status: PropTypes.string.isRequired,\r\n Dimensions: PropTypes.arrayOf(PropTypes.shape({\r\n Type: PropTypes.string.isRequired,\r\n })).isRequired,\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n statusContainer: PropTypes.string.isRequired,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n};\r\n\r\nexport const AudienceStatus = withDefaultStyles(UnstyledAudienceStatus, getAudienceStatusStyle);\r\n","import { deliveryStatusStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nexport const getAudienceStatusStyle = (_, { palette = {} }) => ({\r\n '@global': {\r\n '#delivery-status-popup-callout': {\r\n zIndex: 10000000, // Need a z-index higher than the z-index of Fluent UI Panel\r\n },\r\n ...deliveryStatusStyle({ palette }),\r\n },\r\n\r\n statusContainer: {\r\n '& .underline': {\r\n borderBottomColor: palette.themePrimary,\r\n borderBottomStyle: 'dashed',\r\n borderBottomWidth: 1,\r\n },\r\n },\r\n});\r\n","import { chain, size, sortBy } from 'underscore';\r\n\r\nexport const AgeRanges = {\r\n EighteenToTwentyFour: _TL_('18-24'),\r\n TwentyFiveToThirtyFour: _TL_('25-34'),\r\n ThirtyFiveToFourtyNine: _TL_('35-49'),\r\n FiftyToSixtyFour: _TL_('50-64'),\r\n SixtyFiveAndAbove: _TL_('65+'),\r\n Unknown: _TL_('Unknown'),\r\n};\r\n\r\nconst sortAgeRanges = ageRanges => sortBy(ageRanges, ageRange => AgeRanges[ageRange]);\r\n\r\nexport const formatAgeRange = (ageRange, i18n) => (AgeRanges[ageRange] ? i18n.getString(AgeRanges[ageRange]) : ageRange);\r\n\r\nexport const formatAgeRanges = (ageRanges, i18n) => {\r\n if (size(ageRanges) === size(AgeRanges)) {\r\n return `{{dataTag}}${i18n.getString(_TL_('All ages'))}{{/dataTag}}`;\r\n }\r\n\r\n return chain(sortAgeRanges(ageRanges))\r\n .map(ageRange => `{{dataTag}}${formatAgeRange(ageRange, i18n)}{{/dataTag}}`)\r\n .join(i18n.getString(_TL_(', ')))\r\n .value();\r\n};\r\n","import { chain, size, sortBy } from 'underscore';\r\n\r\nexport const Genders = {\r\n Female: _TL_('Female'),\r\n Male: _TL_('Male'),\r\n Unknown: _TL_('Unknown'),\r\n};\r\n\r\nconst sortGenders = genders => sortBy(genders, gender => Genders[gender]);\r\n\r\nexport const formatGender = (gender, i18n) => (Genders[gender] ? i18n.getString(Genders[gender]) : gender);\r\n\r\nexport const formatGenders = (genders, i18n) => {\r\n if (size(genders) === size(Genders)) {\r\n return `{{dataTag}}${i18n.getString(_TL_('All genders'))}{{/dataTag}}`;\r\n }\r\n\r\n return chain(sortGenders(genders))\r\n .map(gender => `{{dataTag}}${formatGender(gender, i18n)}{{/dataTag}}`)\r\n .join(i18n.getString(_TL_(', ')))\r\n .value();\r\n};\r\n","import { AgeRanges } from './age-range';\r\nimport { Genders } from './gender';\r\n\r\nexport const AudienceGroupNegativeReferenceId = -100;\r\n\r\nexport const initialAudienceGroupData = {\r\n Id: AudienceGroupNegativeReferenceId,\r\n Name: '',\r\n Audiences: [],\r\n Profiles: [],\r\n AgeRanges: Object.keys(AgeRanges),\r\n GenderTypes: Object.keys(Genders),\r\n};\r\n","export const GENERIC_ERROR_MESSAGE_KEY = _TL_(\"We've encountered an error and can't continue. Please contact support for further assistance.\");\r\nexport const EXIT_WITHOUT_SAVING_MESSAGE_KEY = _TL_('Your latest changes have not been saved. Do you want to continue without saving changes?');\r\n","import { chain, has, isEmpty, pick, pluck, result, union, map } from 'underscore';\r\nimport { AudienceGroup as AudienceGroupOdataSchema } from '@bingads-webui/campaign-odata-schemas';\r\nimport { AudienceGroup as AudienceGroupBulkUpsertSchema } from '@bingads-webui/odata-bulk-upsert-config';\r\nimport { edmCampaign } from '@bingads-webui/edm-campaign';\r\nimport { getBulkApiErrors } from '@bingads-webui-component-legacy/api-errors-campaign';\r\n\r\nimport { initialAudienceGroupData, AudienceGroupNegativeReferenceId } from '../constants/audience-group';\r\nimport { GENERIC_ERROR_MESSAGE_KEY } from '../constants/strings';\r\n\r\nconst audienceGroupEDM = edmCampaign.types.resolve('Model.AudienceGroup');\r\nconst audienceGroupResource = new audienceGroupEDM.ResourceIdentifier();\r\n\r\nconst whitelistedModelSchemaPropertyKeys = Object.keys(AudienceGroupOdataSchema.properties);\r\nconst whitelistedBulkModelSchemaPropertyKeys = Object.keys(AudienceGroupBulkUpsertSchema.properties);\r\n\r\nconst isBulkWrappedResponse = bulkResult => has(bulkResult, 'entity') || has(bulkResult, 'errors');\r\n\r\nexport const initialAudienceGroupViewModel = {\r\n data: initialAudienceGroupData,\r\n isValid: false,\r\n isDirty: false,\r\n};\r\n\r\nexport const normalizeModelForAudienceGroup = audienceGroupModel =>\r\n pick(audienceGroupModel, whitelistedModelSchemaPropertyKeys);\r\n\r\nexport const modelToViewModelForAudienceGroup = (audienceGroupModel) => {\r\n const data = pick(audienceGroupModel, whitelistedModelSchemaPropertyKeys);\r\n\r\n const audiences = chain(data)\r\n .result('Dimensions', [])\r\n .filter(dimension => dimension.Type === 'Audience')\r\n .map(dimension => result(dimension, 'Audiences'))\r\n .flatten()\r\n .compact();\r\n\r\n const CustomerData = audiences\r\n .filter(audience => audience.Type !== 'InMarket')\r\n .value();\r\n\r\n const Interests = audiences\r\n .filter(audience => audience.Type === 'InMarket')\r\n .value();\r\n\r\n const profilesData = chain(data)\r\n .result('Dimensions', [])\r\n .filter(dimension => dimension.Type === 'Profile')\r\n .map(dimension => result(dimension, 'Profiles'))\r\n .flatten()\r\n .compact();\r\n\r\n const Profiles = profilesData.value();\r\n\r\n const companyNameTargets = profilesData\r\n .filter(profile => profile.Type === 'CompanyName')\r\n .value()\r\n .map(item => ({\r\n Target: item.Id,\r\n Name: item.Name,\r\n }));\r\n\r\n const industry = profilesData\r\n .filter(profile => profile.Type === 'Industry')\r\n .value()\r\n .map(item => item.Id);\r\n\r\n const jobTargets = profilesData\r\n .filter(profile => profile.Type === 'JobFunction')\r\n .value()\r\n .map(item => item.Id);\r\n\r\n const AgeRanges = chain(data)\r\n .result('Dimensions', [])\r\n .filter(dimension => dimension.Type === 'Age')\r\n .first()\r\n .result('AgeRanges')\r\n .value();\r\n\r\n const GenderTypes = chain(data)\r\n .result('Dimensions', [])\r\n .filter(dimension => dimension.Type === 'Gender')\r\n .first()\r\n .result('GenderTypes')\r\n .value();\r\n\r\n const audienceGroupViewModel = {\r\n data: {\r\n ...data,\r\n CustomerData,\r\n Interests,\r\n AgeRanges,\r\n GenderTypes,\r\n Profiles,\r\n companyNameTargets,\r\n industry,\r\n jobTargets,\r\n },\r\n isValid: true,\r\n isDirty: false,\r\n };\r\n\r\n return audienceGroupViewModel;\r\n};\r\n\r\nexport const viewModelToModelForAudienceGroup = (audienceGroupViewModel) => {\r\n const data = pick(audienceGroupViewModel.data, whitelistedModelSchemaPropertyKeys);\r\n\r\n const {\r\n CustomerData,\r\n Interests,\r\n AgeRanges,\r\n GenderTypes,\r\n companyNameTargets = {},\r\n industry = {},\r\n jobTargets = {},\r\n } = audienceGroupViewModel.data;\r\n\r\n const dimensions = [];\r\n const audiences = [...CustomerData, ...Interests];\r\n\r\n const profiles = union(companyNameTargets || [], industry || [], jobTargets || []);\r\n\r\n if (!isEmpty(audiences)) {\r\n dimensions.push({\r\n '@odata.type': '#Model.AudienceDimension',\r\n Type: 'Audience',\r\n Audiences: audiences,\r\n });\r\n }\r\n\r\n if (!isEmpty(AgeRanges)) {\r\n dimensions.push({\r\n '@odata.type': '#Model.AgeDimension',\r\n Type: 'Age',\r\n AgeRanges,\r\n });\r\n }\r\n\r\n if (!isEmpty(GenderTypes)) {\r\n dimensions.push({\r\n '@odata.type': '#Model.GenderDimension',\r\n Type: 'Gender',\r\n GenderTypes,\r\n });\r\n }\r\n\r\n if (!isEmpty(profiles)) {\r\n dimensions.push({\r\n '@odata.type': '#Model.ProfileDimension',\r\n Type: 'Profile',\r\n Profiles: profiles,\r\n });\r\n }\r\n\r\n const audienceGroupModel = {\r\n ...data,\r\n Dimensions: dimensions,\r\n };\r\n\r\n return audienceGroupModel;\r\n};\r\n\r\nexport const viewModelToBulkModelForAudienceGroup = (audienceGroupViewModel) => {\r\n const model = pick(audienceGroupViewModel.data, whitelistedBulkModelSchemaPropertyKeys);\r\n\r\n const {\r\n CustomerData,\r\n Interests,\r\n companyNameTargets = {},\r\n } = audienceGroupViewModel.data;\r\n\r\n model.Audiences = union(CustomerData, Interests);\r\n\r\n if (!isEmpty(companyNameTargets)) {\r\n model.companyNameTargets = pluck(companyNameTargets, 'Target');\r\n }\r\n\r\n if (!model.Id) {\r\n model.Id = AudienceGroupNegativeReferenceId; // For creation\r\n }\r\n\r\n return model;\r\n};\r\n\r\nexport const bulkModelToViewModelForAudienceGroup = (audienceGroupModel) => {\r\n const Audiences = audienceGroupModel.Audiences || [];\r\n\r\n const audienceGroupViewModel = {\r\n data: {\r\n ...pick(audienceGroupModel, whitelistedBulkModelSchemaPropertyKeys),\r\n CustomerData: Audiences.filter(audience => audience.Type !== 'InMarket'),\r\n Interests: Audiences.filter(audience => audience.Type === 'InMarket'),\r\n },\r\n isValid: true,\r\n isDirty: false,\r\n };\r\n return audienceGroupViewModel;\r\n};\r\n\r\nexport const fetchAudienceGroups = ({\r\n cid,\r\n aid,\r\n keyword,\r\n top,\r\n skip,\r\n}) => edmCampaign\r\n .Customers.$withKey(cid)\r\n .Accounts.$withKey(aid)\r\n .AudienceGroups\r\n .get({\r\n count: true,\r\n filter: keyword ? { where: `contains(tolower(Name),'${keyword.toLowerCase()}')` } : {},\r\n top,\r\n skip,\r\n })\r\n .toPromise();\r\n\r\nexport const fetchAudienceGroup = ({\r\n cid,\r\n aid,\r\n audienceGroupId,\r\n}) => edmCampaign\r\n .Customers.$withKey(cid)\r\n .Accounts.$withKey(aid)\r\n .AudienceGroups.$withKey(audienceGroupId)\r\n .get()\r\n .toPromise();\r\n\r\nexport const createOrUpdateAudienceGroup = (data) => {\r\n const createOrUpdateCall = data && data.Id > 0 ?\r\n audienceGroupResource.bulkUpdate.bind(audienceGroupResource) :\r\n audienceGroupResource.bulkCreate.bind(audienceGroupResource);\r\n\r\n return createOrUpdateCall(data);\r\n};\r\n\r\nexport const saveAudienceGroup = (audienceGroupViewModel, i18n) => {\r\n const audienceGroupModel = viewModelToBulkModelForAudienceGroup(audienceGroupViewModel);\r\n\r\n return createOrUpdateAudienceGroup(audienceGroupModel)\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(\r\n bulkResult => bulkModelToViewModelForAudienceGroup(bulkResult),\r\n (bulkOrSystemError) => {\r\n if (isBulkWrappedResponse(bulkOrSystemError)) {\r\n const { entity, errors } = bulkOrSystemError;\r\n\r\n // eslint-disable-next-line prefer-promise-reject-errors\r\n return Promise.reject({\r\n audienceGroup: entity ? bulkModelToViewModelForAudienceGroup(entity) : audienceGroupViewModel,\r\n errors: pluck(getBulkApiErrors(errors, 'AudienceGroup', i18n), 'message'), // , activityLogger),\r\n });\r\n }\r\n\r\n // eslint-disable-next-line prefer-promise-reject-errors\r\n return Promise.reject({\r\n audienceGroup: audienceGroupViewModel,\r\n errors: [i18n.getString(GENERIC_ERROR_MESSAGE_KEY)],\r\n });\r\n }\r\n );\r\n};\r\n\r\nconst updateAudienceGroups = audienceGroupResource.bulkUpdateMany.bind(audienceGroupResource);\r\n\r\nexport const deleteAudienceGroups = (audienceGroups, i18n) => {\r\n const idList = map(audienceGroups, audienceGroup => audienceGroup.Id);\r\n const attrList = map(audienceGroups, () => ({ Status: 'Deleted' }));\r\n return updateAudienceGroups(idList, attrList)\r\n .then((bulkManyResult) => {\r\n const errors = chain(bulkManyResult)\r\n .map(response => result(response, 'errors'))\r\n .compact()\r\n .map(error => pluck(getBulkApiErrors(error, 'AudienceGroup'), 'message'))\r\n .flatten()\r\n .uniq(true)\r\n .value();\r\n return Promise.resolve({ errors });\r\n }).catch(Promise.resolve({ errors: [i18n.getString(GENERIC_ERROR_MESSAGE_KEY)] }));\r\n};\r\n","/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\r\nimport React, { useCallback, useContext, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { chain, compact, isEmpty, map, noop, result } from 'underscore';\r\nimport { FontIcon, IconButton, KeyCodes } from '@fluentui/react';\r\nimport { ReactTemplate } from '@bingads-webui-react/react-template';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\n\r\nimport { AudienceStatus } from './audience-status';\r\nimport { formatAgeRanges } from '../constants/age-range';\r\nimport { formatGenders } from '../constants/gender';\r\nimport { modelToViewModelForAudienceGroup } from '../model/audience-group';\r\nimport { getAudienceCardStyle } from '../styles/audience-card';\r\n\r\nconst UnstyledAudienceCard = (props) => {\r\n const {\r\n audienceGroup,\r\n classes,\r\n i18n,\r\n isReadOnlyUser,\r\n onSelectAudienceSignal,\r\n onEditAudienceSignal,\r\n onRemoveAudienceSignal,\r\n onRenderActions,\r\n showActions,\r\n enableFocus,\r\n } = props;\r\n\r\n const serverContext = useContext(ServerContext);\r\n const {\r\n DynamicPermissions,\r\n Permissions,\r\n } = serverContext;\r\n\r\n const permissions = useMemo(() => ({ dynamic: { ...DynamicPermissions }, ...Permissions }), [DynamicPermissions, Permissions]);\r\n const isLinkedInTargetingEnabled = permissions && permissions.dynamic && permissions.dynamic.AudienceSignalTargetSupportForPmax;\r\n\r\n const {\r\n data: {\r\n Id,\r\n Name,\r\n CustomerData,\r\n Interests,\r\n AgeRanges,\r\n GenderTypes,\r\n Profiles,\r\n },\r\n } = useMemo(() => modelToViewModelForAudienceGroup(audienceGroup), [audienceGroup]);\r\n\r\n const ageRanges = useMemo(() => formatAgeRanges(AgeRanges, i18n), [AgeRanges, i18n]);\r\n\r\n const genders = useMemo(() => formatGenders(GenderTypes, i18n), [GenderTypes, i18n]);\r\n\r\n const demographics = useMemo(() => compact([ageRanges, genders]).join(i18n.getString(_TL_('; '))), [ageRanges, genders, i18n]);\r\n\r\n const customerData = useMemo(\r\n () => chain(CustomerData)\r\n .map(audience => `{{dataTag}}${result(audience, 'Name')}{{/dataTag}}`)\r\n .join(i18n.getString(_TL_(', ')))\r\n .value(),\r\n [CustomerData, i18n]\r\n );\r\n\r\n const interests = useMemo(\r\n () => map(Interests, audience => result(audience, 'Name', '').replace(/^\\//, '')),\r\n [Interests]\r\n );\r\n\r\n const profiles = useMemo(() => {\r\n if (isLinkedInTargetingEnabled) {\r\n return compact(map(Profiles, profile => result(profile, 'Name', '')));\r\n }\r\n\r\n return [];\r\n }, [Profiles, isLinkedInTargetingEnabled]);\r\n\r\n const renderActions = useCallback(() => (onRenderActions ? onRenderActions() : (\r\n <>\r\n onEditAudienceSignal(Id)}\r\n />\r\n onRemoveAudienceSignal(Id)}\r\n />\r\n \r\n )), [Id, i18n, onEditAudienceSignal, onRemoveAudienceSignal, onRenderActions]);\r\n\r\n const onSelect = useCallback(() => {\r\n onSelectAudienceSignal(audienceGroup);\r\n }, [audienceGroup, onSelectAudienceSignal]);\r\n\r\n const onSelectByKey = useCallback((event) => {\r\n if (event.keyCode === KeyCodes.enter && event.currentTarget === event.target) {\r\n onSelect(event);\r\n }\r\n }, [onSelect]);\r\n\r\n return (\r\n \r\n
    \r\n
    {Name}
    \r\n {!isReadOnlyUser && showActions && renderActions()}\r\n
    \r\n
    \r\n {!isEmpty(demographics) && (\r\n
    \r\n \r\n {text},\r\n }}\r\n template={demographics}\r\n />\r\n
    \r\n )}\r\n {!isEmpty(customerData) && (\r\n
    \r\n \r\n {text},\r\n }}\r\n template={customerData}\r\n />\r\n
    \r\n )}\r\n {!isEmpty(interests) && (\r\n
    \r\n {map(interests, interest => (\r\n {interest}\r\n ))}\r\n
    \r\n )}\r\n {!isEmpty(profiles) && (\r\n
    \r\n {map(profiles, profile => (\r\n {profile}\r\n ))}\r\n
    \r\n )}\r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nUnstyledAudienceCard.propTypes = {\r\n audienceGroup: PropTypes.shape({\r\n Id: PropTypes.number.isRequired,\r\n Name: PropTypes.string.isRequired,\r\n Dimensions: PropTypes.arrayOf(PropTypes.shape({\r\n Type: PropTypes.string.isRequired,\r\n })).isRequired,\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n cardContainer: PropTypes.string.isRequired,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n isReadOnlyUser: PropTypes.bool,\r\n onSelectAudienceSignal: PropTypes.func,\r\n onEditAudienceSignal: PropTypes.func,\r\n onRemoveAudienceSignal: PropTypes.func,\r\n onRenderActions: PropTypes.func,\r\n showActions: PropTypes.bool,\r\n enableFocus: PropTypes.bool,\r\n};\r\n\r\nUnstyledAudienceCard.defaultProps = {\r\n isReadOnlyUser: true,\r\n onSelectAudienceSignal: noop,\r\n onEditAudienceSignal: noop,\r\n onRemoveAudienceSignal: noop,\r\n onRenderActions: null,\r\n showActions: false,\r\n enableFocus: false,\r\n};\r\n\r\nexport const AudienceCard = withDefaultStyles(UnstyledAudienceCard, getAudienceCardStyle);\r\n","export const getAudienceCardStyle = (_, { palette = {} }) => ({\r\n cardContainer: {\r\n fontSize: 14,\r\n\r\n '& .audience-header': {\r\n alignItems: 'center',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n marginBottom: 15,\r\n\r\n '& .audience-name': {\r\n flexGrow: 1,\r\n fontWeight: 600,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n\r\n '& .audience-highlight': {\r\n fontSize: 18,\r\n },\r\n },\r\n\r\n '& .audience-body': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '10px',\r\n\r\n '& > div': {\r\n alignItems: 'center',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n flexFlow: 'wrap',\r\n flexWrap: 'wrap',\r\n fontSize: 14,\r\n },\r\n\r\n '& .audience-icon': {\r\n marginRight: 2,\r\n },\r\n\r\n '& .audience-demographics > span, .audience-customer-data > span': {\r\n marginLeft: 4,\r\n wordBreak: 'break-word',\r\n },\r\n\r\n '& .audience-interests': {\r\n fontSize: 13,\r\n gap: '4px',\r\n\r\n '& .audience-interest': {\r\n backgroundColor: palette.neutralLighter,\r\n borderRadius: 4,\r\n padding: '4px 8px',\r\n wordBreak: 'break-word',\r\n },\r\n },\r\n\r\n '& .audience-profiles': {\r\n fontSize: 13,\r\n gap: '4px',\r\n\r\n '& .audience-profile': {\r\n backgroundColor: palette.neutralLighter,\r\n borderRadius: 4,\r\n padding: '4px 8px',\r\n wordBreak: 'break-word',\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { noop } from 'underscore';\r\nimport { CompoundButton } from '@fluentui/react';\r\nimport { registerIcons } from '@fluentui/style-utilities';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nimport BrowseImg from '../../media/browse.svg';\r\nimport CreateImg from '../../media/create.svg';\r\nimport { getAudienceActionsStyle } from '../styles/audience-actions';\r\n\r\nregisterIcons({\r\n icons: {\r\n BrowseAudienceSignal: (\r\n \"Browse\r\n ),\r\n CreateAudienceSignal: (\r\n \"Create\"\r\n ),\r\n },\r\n});\r\n\r\nconst UnstyledAudienceActions = (props) => {\r\n const {\r\n classes,\r\n i18n,\r\n onBrowseAudienceSignal,\r\n onCreateAudienceSignal,\r\n } = props;\r\n\r\n return (\r\n
    \r\n
    \r\n onCreateAudienceSignal()}\r\n >\r\n {i18n.getString(_TL_('Create'))}\r\n \r\n onBrowseAudienceSignal()}\r\n >\r\n {i18n.getString(_TL_('Browse'))}\r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nUnstyledAudienceActions.propTypes = {\r\n classes: PropTypes.shape({\r\n actionsContainer: PropTypes.string.isRequired,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n onBrowseAudienceSignal: PropTypes.func,\r\n onCreateAudienceSignal: PropTypes.func,\r\n};\r\n\r\nUnstyledAudienceActions.defaultProps = {\r\n onBrowseAudienceSignal: noop,\r\n onCreateAudienceSignal: noop,\r\n};\r\n\r\nexport const AudienceActions = withDefaultStyles(UnstyledAudienceActions, getAudienceActionsStyle);\r\n","export const getAudienceActionsStyle = (_, { palette = {} }) => ({\r\n actionsContainer: {\r\n '& .audience-actions-body': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n gap: '12px',\r\n width: '100%',\r\n },\r\n\r\n '& button': {\r\n backgroundColor: palette.neutralLighterAlt,\r\n border: 'none',\r\n borderRadius: 4,\r\n boxShadow: '0px 1px 2px rgba(0, 0, 0, 0.08)',\r\n flexGrow: 1,\r\n padding: '18px 16px',\r\n\r\n '& .ms-Button-textContainer': {\r\n marginLeft: 8,\r\n },\r\n\r\n '& .ms-Button-description': {\r\n fontSize: 14,\r\n },\r\n },\r\n\r\n '& .btn-create-audience-signal': {\r\n marginLeft: '2px',\r\n marginBottom: '2px',\r\n flex: 1,\r\n },\r\n\r\n '& .btn-browse-audience-signal': {\r\n marginLeft: '2px',\r\n marginBottom: '2px',\r\n flex: 1,\r\n },\r\n\r\n },\r\n});\r\n","import React, { useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { KeyCodes } from '@fluentui/react';\r\n\r\nexport const withoutEasyDismiss = (Component) => {\r\n const HOC = React.memo((props) => {\r\n const { onClose } = props;\r\n\r\n const onDismiss = useCallback((e) => {\r\n if (e && (e.type === 'mousedown' || (e.type === 'keydown' && e.keyCode === KeyCodes.escape))) {\r\n return;\r\n }\r\n onClose();\r\n }, [onClose]);\r\n\r\n return (\r\n \r\n );\r\n });\r\n\r\n HOC.propTypes = {\r\n onClose: PropTypes.func.isRequired,\r\n };\r\n\r\n return HOC;\r\n};\r\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { clone, compact, find, filter, isEmpty, map, noop } from 'underscore';\r\nimport { DefaultButton, Panel, PanelType, PrimaryButton } from '@fluentui/react';\r\nimport { AudienceAssociationView } from '@bingads-webui-campaign-legacy/audience-association/view/base-association-view';\r\nimport { AssociationTypes } from '@bingads-webui-campaign-legacy/audience-association/model/consts';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\n\r\nimport { getAudiencePickerStyle } from '../styles/audience-picker';\r\nimport { withoutEasyDismiss } from './without-easy-dismiss';\r\n\r\nconst UnstyledAudiencePicker = (props) => {\r\n const {\r\n classes,\r\n i18n,\r\n isOpen,\r\n title,\r\n description,\r\n audienceType,\r\n audiences,\r\n onAudiencesChanged,\r\n onClose,\r\n onDismiss,\r\n perfMarker,\r\n } = props;\r\n\r\n const [audienceList, setAudienceList] = useState(clone(audiences));\r\n\r\n const [audienceAssociationRef, setAudienceAssociationRef] = useState();\r\n\r\n const audienceAssociationView = useMemo(() => {\r\n const associationView = new AudienceAssociationView({\r\n scope: {}, // this is needed to request audiences for all delivery channels\r\n campaignType: null, // this is needed to request audiences for all delivery channels\r\n associationType: AssociationTypes.Aim, // this is needed to remove all non-aim sections\r\n isFromPerformanceMaxCampaign: true,\r\n isNewUI: true,\r\n refreshOnInitialize: true,\r\n perfMarker,\r\n });\r\n\r\n associationView.canExpandAssociation = true;\r\n associationView.render();\r\n associationView.expandAssociation();\r\n\r\n return associationView;\r\n }, [perfMarker]);\r\n\r\n const onAdd = useCallback(() => {\r\n onAudiencesChanged(map(audienceList, audience => ({\r\n ...audience,\r\n Name: audience.Name || audience.name,\r\n })));\r\n\r\n onClose();\r\n }, [audienceList, onAudiencesChanged, onClose]);\r\n\r\n const onAudienceListChanged = useCallback(() => {\r\n const { associationList } = audienceAssociationView.getLists();\r\n setAudienceList(associationList);\r\n }, [audienceAssociationView]);\r\n\r\n const onRenderFooterContent = useCallback(() => (\r\n
    \r\n \r\n {i18n.getString(_TL_('Add'))}\r\n \r\n \r\n {i18n.getString(_TL_('Cancel'))}\r\n \r\n
    \r\n ), [i18n, onAdd, onClose]);\r\n\r\n useEffect(() => {\r\n if (audienceAssociationRef) {\r\n if (audienceType === 'InMarket') {\r\n const audienceOptions = filter(audienceAssociationView.doubleListBoxViewModel.configSettingsOptions(), ({ value }) => value === 'InMarket');\r\n audienceAssociationView.doubleListBoxViewModel.configSettingsOptions(audienceOptions);\r\n audienceAssociationView.doubleListBoxViewModel.setSelectedCategory('InMarket');\r\n } else if (audienceType === 'CustomerList') {\r\n const audienceOptions = filter(audienceAssociationView.doubleListBoxViewModel.configSettingsOptions(), ({ value }) => value === 'CustomerList');\r\n audienceAssociationView.doubleListBoxViewModel.configSettingsOptions(audienceOptions);\r\n audienceAssociationView.doubleListBoxViewModel.setSelectedCategory('CustomerList');\r\n } else {\r\n const audienceOptions = filter(audienceAssociationView.doubleListBoxViewModel.configSettingsOptions(), ({ value }) => value !== 'InMarket');\r\n audienceAssociationView.doubleListBoxViewModel.configSettingsOptions(audienceOptions);\r\n }\r\n audienceAssociationRef.append(audienceAssociationView.el);\r\n\r\n audienceAssociationView\r\n .ensureLoadedAsync()\r\n .then(() => {\r\n const associationList = compact(map(audienceList, ({ Name }) => find(audienceAssociationView.doubleListBoxViewModel.allAudiences, audience =>\r\n (audience.Name || audience.name) === Name)));\r\n\r\n audienceAssociationView.setLists({\r\n associationList,\r\n exclusionList: [],\r\n });\r\n\r\n if (!isEmpty(associationList)) {\r\n audienceAssociationView.doubleListBoxViewModel.setSelectedCategory(associationList[0].Type);\r\n }\r\n\r\n audienceAssociationView.on('selectionChanged', onAudienceListChanged);\r\n })\r\n .finally(withUiBlock(audienceAssociationRef));\r\n\r\n return () => {\r\n audienceAssociationView.off('selectionChanged', onAudienceListChanged);\r\n };\r\n }\r\n\r\n return noop;\r\n }, [audienceAssociationRef]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n return (\r\n \r\n
    {description}
    \r\n
    setAudienceAssociationRef(newRef)} />\r\n \r\n );\r\n};\r\n\r\nUnstyledAudiencePicker.propTypes = {\r\n classes: PropTypes.shape({\r\n pickerContainer: PropTypes.string.isRequired,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n isOpen: PropTypes.bool,\r\n title: PropTypes.string.isRequired,\r\n description: PropTypes.oneOfType([PropTypes.string, PropTypes.node]).isRequired,\r\n audienceType: PropTypes.string,\r\n audiences: PropTypes.arrayOf(PropTypes.shape({})),\r\n onAudiencesChanged: PropTypes.func,\r\n onClose: PropTypes.func.isRequired,\r\n onDismiss: PropTypes.func.isRequired,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n};\r\n\r\nUnstyledAudiencePicker.defaultProps = {\r\n isOpen: false,\r\n audienceType: undefined,\r\n audiences: [],\r\n onAudiencesChanged: noop,\r\n};\r\n\r\nexport const AudiencePicker = withDefaultStyles(withoutEasyDismiss(UnstyledAudiencePicker), getAudiencePickerStyle);\r\n","import {\r\n audienceAssociationSectionStyle,\r\n commonDoubleListBoxStyle,\r\n convertToLocalStyle,\r\n glyphIconStyle,\r\n helpbuttonStyle,\r\n paginationStyle,\r\n searchboxStyle,\r\n} from '@bingads-webui-campaign-react/common-styles';\r\n\r\nexport const getAudiencePickerStyle = (_, { palette = {} }) => ({\r\n pickerContainer: {\r\n '& .ms-Panel-content': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n flexGrow: 1,\r\n overflowY: 'auto',\r\n\r\n '& .audience-description': {\r\n margin: '16px 0',\r\n },\r\n\r\n '& .audience-association-view': {\r\n ...audienceAssociationSectionStyle({ palette }, { singleListBoxWidth: 450 }),\r\n ...commonDoubleListBoxStyle({ palette }),\r\n ...paginationStyle({ palette }),\r\n ...searchboxStyle({ palette }),\r\n ...convertToLocalStyle(glyphIconStyle({ palette })),\r\n ...convertToLocalStyle(helpbuttonStyle({ palette })),\r\n\r\n '& .association__header, .audience__exclusion, .create-audience-link-section': {\r\n display: 'none',\r\n },\r\n\r\n '& .association-section, .audience__association, .audience__exclusion': {\r\n '& .DMP_doublelistbox_section .doubleListBox.layout-columns': {\r\n width: 920,\r\n\r\n '& .form-group, .layout-columns-element:nth-child(1) .form-group:nth-child(1) .dlb-filter-alignPlaceholder .form-control-feedback': {\r\n margin: 0,\r\n },\r\n },\r\n\r\n '& .row': {\r\n margin: 0,\r\n },\r\n },\r\n\r\n '& .selectable-treeview ul': {\r\n listStyleType: 'none',\r\n padding: 0,\r\n },\r\n\r\n '&.InMarket, &.CustomerList': {\r\n '& .dmp_select_section': {\r\n display: 'none',\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .ms-Panel-footer': {\r\n backgroundColor: palette.white,\r\n borderTop: `1px solid ${palette.neutralLight}`,\r\n\r\n '& .audience-picker-buttons': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n gap: '8px',\r\n },\r\n },\r\n },\r\n});\r\n","import React, { useCallback, useEffect, useState, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { map, noop } from 'underscore';\r\nimport { ActionButton, IconButton, Label } from '@fluentui/react';\r\n\r\nimport { HelpPopup } from '@bingads-webui-react/help-popup';\r\nimport { withCustomValidation } from '@bingads-webui-react/validation';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nimport { AudiencePicker } from './audience-picker';\r\nimport { getAudienceSectionStyle } from '../styles/audience-section';\r\n\r\nconst UnstyledAudiencSection = (props) => {\r\n const {\r\n classes,\r\n i18n,\r\n title,\r\n descritpion,\r\n addLabel,\r\n addPanelTitle,\r\n addPanelDescription,\r\n audienceType,\r\n removeLeadingSlash,\r\n onGenericError,\r\n validationProps,\r\n updateValidation,\r\n popupId,\r\n wizardPerfMarker,\r\n } = props;\r\n\r\n const perfMarker = useMemo(\r\n () => {\r\n const child = wizardPerfMarker.createChild(`Audience_Signal_Add_${validationProps.field}`, { autoEnd: false });\r\n return child;\r\n },\r\n [wizardPerfMarker]\r\n );\r\n\r\n const [audienceDimensions, setAudienceDimensions] = useState(validationProps.value || []);\r\n\r\n const [showAudiencePicker, setShowAudiencePicker] = useState(false);\r\n\r\n const onAddAudience = useCallback(() => {\r\n setShowAudiencePicker(true);\r\n }, []);\r\n\r\n const onAudiencesChanged = useCallback((audiences) => {\r\n setAudienceDimensions(audiences);\r\n }, []);\r\n\r\n const onRemoveAudience = useCallback((index) => {\r\n setAudienceDimensions([\r\n ...audienceDimensions.slice(0, index),\r\n ...audienceDimensions.slice(index + 1),\r\n ]);\r\n }, [audienceDimensions]);\r\n\r\n useEffect(() => {\r\n updateValidation([], {\r\n [validationProps.field]: audienceDimensions,\r\n });\r\n }, [audienceDimensions, i18n, updateValidation, validationProps.field]);\r\n\r\n return (\r\n
    \r\n \r\n
    {descritpion}
    \r\n
    \r\n {map(audienceDimensions, ({ Id, Name = '' }, index) => (\r\n
    \r\n {removeLeadingSlash ? Name.replace(/^\\//, '') : Name}\r\n onRemoveAudience(index)}\r\n />\r\n
    \r\n ))}\r\n
    \r\n {addLabel}\r\n {showAudiencePicker && (\r\n setShowAudiencePicker(false)}\r\n onGenericError={onGenericError}\r\n perfMarker={perfMarker}\r\n />\r\n )}\r\n
    \r\n );\r\n};\r\n\r\nUnstyledAudiencSection.propTypes = {\r\n classes: PropTypes.shape({\r\n sectionContainer: PropTypes.string.isRequired,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n title: PropTypes.string.isRequired,\r\n descritpion: PropTypes.string.isRequired,\r\n addLabel: PropTypes.string.isRequired,\r\n addPanelTitle: PropTypes.string.isRequired,\r\n addPanelDescription: PropTypes.oneOfType([PropTypes.string, PropTypes.node]).isRequired,\r\n audienceType: PropTypes.string,\r\n removeLeadingSlash: PropTypes.bool,\r\n onGenericError: PropTypes.func,\r\n validationProps: PropTypes.shape({\r\n field: PropTypes.string.isRequired,\r\n value: PropTypes.arrayOf(PropTypes.shape({\r\n Name: PropTypes.string.isRequired,\r\n })),\r\n }).isRequired,\r\n updateValidation: PropTypes.func.isRequired,\r\n popupId: PropTypes.string,\r\n wizardPerfMarker: PropTypes.shape({\r\n createChild: PropTypes.func.isRequired,\r\n }).isRequired,\r\n};\r\n\r\nUnstyledAudiencSection.defaultProps = {\r\n audienceType: undefined,\r\n removeLeadingSlash: false,\r\n onGenericError: noop,\r\n popupId: '',\r\n};\r\n\r\nexport const AudienceSection = withDefaultStyles(withCustomValidation(UnstyledAudiencSection), getAudienceSectionStyle);\r\n","export const getAudienceSectionStyle = (_, { palette = {} }) => ({\r\n sectionContainer: {\r\n '& label': {\r\n fontSize: 18,\r\n },\r\n\r\n '& .audience-dimensions': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n flexWrap: 'wrap',\r\n gap: '4px',\r\n margin: '8px 0',\r\n\r\n '& .audience-dimension': {\r\n alignItems: 'center',\r\n backgroundColor: palette.neutralLighter,\r\n borderRadius: 3,\r\n display: 'flex',\r\n flexDirection: 'row',\r\n gap: '6px',\r\n fontWeight: 600,\r\n padding: '6px 2px 6px 12px',\r\n\r\n '& button': {\r\n color: palette.neutralSecondary,\r\n height: 'auto',\r\n\r\n '& .ms-Icon': {\r\n fontSize: 12,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","export const ProfileType = {\r\n CompanyName: 'companyNameTargets',\r\n Industry: 'industry',\r\n JobFunction: 'jobTargets',\r\n};\r\n","import React, { useCallback, useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { contains, filter, map, size } from 'underscore';\r\nimport { ActionButton, Checkbox, Label } from '@fluentui/react';\r\nimport { HelpPopup } from '@bingads-webui-react/help-popup';\r\nimport { withCustomValidation, withError } from '@bingads-webui-react/validation';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nimport { getDemographicStyle } from '../styles/demographic';\r\n\r\nconst UnstyledDemographic = (props) => {\r\n const {\r\n className,\r\n classes,\r\n i18n,\r\n title,\r\n description,\r\n formatter,\r\n dimensions: initialDimensions,\r\n availableDimensions,\r\n validationProps,\r\n updateValidation,\r\n popupId,\r\n } = props;\r\n\r\n const [dimensions, setDimensions] = useState(initialDimensions);\r\n\r\n const onToggleDimension = useCallback((dimension) => {\r\n if (contains(dimensions, dimension)) {\r\n setDimensions(filter(dimensions, d => d !== dimension));\r\n } else {\r\n setDimensions([...dimensions, dimension]);\r\n }\r\n }, [dimensions]);\r\n\r\n const onToggleAll = useCallback(() => {\r\n if (size(dimensions) < size(availableDimensions)) {\r\n setDimensions(Object.keys(availableDimensions));\r\n } else {\r\n setDimensions([]);\r\n }\r\n }, [availableDimensions, dimensions]);\r\n\r\n useEffect(() => {\r\n updateValidation(dimensions.length > 0 ? [] : [i18n.getString(_TL_('At least one target needs to be selected.'))], {\r\n [validationProps.field]: dimensions,\r\n });\r\n }, [dimensions, i18n, updateValidation, validationProps.field]);\r\n\r\n return (\r\n
    \r\n \r\n
    {description || null}
    \r\n \r\n {size(dimensions) < size(availableDimensions) ? i18n.getString(_TL_('Select all')) : i18n.getString(_TL_('Clear all'))}\r\n \r\n
    \r\n {map(availableDimensions, (_, dimension) => (\r\n onToggleDimension(dimension)}\r\n />\r\n ))}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nUnstyledDemographic.propTypes = {\r\n className: PropTypes.string,\r\n classes: PropTypes.shape({\r\n demographicContainer: PropTypes.string.isRequired,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n title: PropTypes.string.isRequired,\r\n description: PropTypes.string,\r\n formatter: PropTypes.func.isRequired,\r\n dimensions: PropTypes.arrayOf(PropTypes.string),\r\n availableDimensions: PropTypes.shape({}).isRequired,\r\n validationProps: PropTypes.shape({\r\n field: PropTypes.string.isRequired,\r\n }).isRequired,\r\n updateValidation: PropTypes.func.isRequired,\r\n popupId: PropTypes.string,\r\n};\r\n\r\nUnstyledDemographic.defaultProps = {\r\n className: '',\r\n description: '',\r\n dimensions: [],\r\n popupId: '',\r\n};\r\n\r\nexport const Demographic = withDefaultStyles(withError(withCustomValidation(UnstyledDemographic)), getDemographicStyle);\r\n","export const getDemographicStyle = (_, { palette = {} }) => ({\r\n demographicContainer: {\r\n '& > label': {\r\n marginTop: 24,\r\n },\r\n\r\n '& button.toggle-dimensions': {\r\n color: palette.themePrimary,\r\n padding: 0,\r\n\r\n '& .ms-Button-label': {\r\n margin: 0,\r\n },\r\n },\r\n\r\n '& .dimensions': {\r\n display: 'grid',\r\n gridTemplateColumns: 'auto auto auto',\r\n columnGap: '10px',\r\n },\r\n },\r\n});\r\n","import React, { useCallback, useState } from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { Label } from '@fluentui/react';\r\nimport { HelpPopup } from '@bingads-webui-react/help-popup';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { ValidatedJobFunctionPicker, ValidatedIndustryPicker, ValidatedCompanyPicker } from '@bingads-webui-campaign-react/display-plus-native-ads';\r\n\r\nimport { getDemographicPickerStyle } from '../styles/demographic-picker';\r\nimport { ProfileType } from '../constants/profile';\r\n\r\nconst UnstyledDemographicPicker = (props) => {\r\n const {\r\n className,\r\n classes,\r\n i18n,\r\n title,\r\n description,\r\n profiles,\r\n popupId,\r\n type,\r\n } = props;\r\n\r\n const [initialProfiles, setInitialProfiles] = useState(profiles);\r\n\r\n const isSameProfile = useCallback((profile1, profile2) => {\r\n if (type === ProfileType.CompanyName) {\r\n return _.isEqual(_.sortBy(_.pluck(profile1, 'Target')), _.sortBy(_.pluck(profile2, 'Target')));\r\n }\r\n\r\n return _.isEqual(_.sortBy(profile1), _.sortBy(profile2));\r\n }, [type]);\r\n\r\n const onValidate = useCallback((result) => {\r\n // need to clear initialProfiles after the selected profiles are changed,\r\n // or the initialProfiles will be repeatedly added to the selected profiles.\r\n if (!_.isEmpty(initialProfiles) && !isSameProfile(initialProfiles, _.get(result, ['data', [type]]))) {\r\n setInitialProfiles([]);\r\n }\r\n }, [initialProfiles, isSameProfile, type]);\r\n\r\n return (\r\n
    \r\n \r\n
    {description || null}
    \r\n {\r\n (type === ProfileType.CompanyName) && (\r\n \r\n )\r\n }\r\n {\r\n (type === ProfileType.Industry) && (\r\n \r\n )\r\n }\r\n {\r\n (type === ProfileType.JobFunction) && (\r\n \r\n )\r\n }\r\n
    \r\n );\r\n};\r\n\r\nUnstyledDemographicPicker.propTypes = {\r\n className: PropTypes.string,\r\n classes: PropTypes.shape({\r\n demographicPickerContainer: PropTypes.string.isRequired,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n title: PropTypes.string.isRequired,\r\n description: PropTypes.string,\r\n profiles: PropTypes.arrayOf(PropTypes.shape([])),\r\n popupId: PropTypes.string,\r\n type: PropTypes.string.isRequired,\r\n};\r\n\r\nUnstyledDemographicPicker.defaultProps = {\r\n className: '',\r\n description: '',\r\n profiles: [],\r\n popupId: '',\r\n};\r\n\r\nexport const DemographicPicker = withDefaultStyles(UnstyledDemographicPicker, getDemographicPickerStyle);\r\n","export const getDemographicPickerStyle = () => ({\r\n demographicPickerContainer: {\r\n '& > label': {\r\n marginTop: 24,\r\n },\r\n\r\n '& .linked-in-target-grid-container': {\r\n width: '100% !important',\r\n\r\n '& .linked-in-target-grid-view': {\r\n '& .target-grid-remove-all-container': {\r\n right: '1px !important',\r\n },\r\n },\r\n\r\n '& .company-item-template': {\r\n display: 'flex',\r\n },\r\n },\r\n\r\n '& .linked-in-excluded-grid-container': {\r\n width: '100% !important',\r\n },\r\n },\r\n});\r\n","import { isEmpty } from 'underscore';\r\nimport React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Panel } from 'react-bootstrap';\r\nimport { FontIcon } from '@fluentui/react';\r\nimport { Alert } from '@bingads-webui-react/alert';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\n\r\nimport { AgeRanges, formatAgeRange } from '../constants/age-range';\r\nimport { Genders, formatGender } from '../constants/gender';\r\nimport { ProfileType } from '../constants/profile';\r\nimport { Demographic } from './demographic';\r\nimport { DemographicPicker } from './demographic-picker';\r\nimport { getDemographicsSectionStyle } from '../styles/demographics-section';\r\n\r\nconst UnstyledDemographicsSection = (props) => {\r\n const {\r\n classes,\r\n i18n,\r\n ageRanges,\r\n genders,\r\n companyName,\r\n industry,\r\n jobFunction,\r\n } = props;\r\n\r\n const serverContext = useContext(ServerContext);\r\n const {\r\n DynamicPermissions,\r\n Permissions,\r\n } = serverContext;\r\n\r\n const permissions = useMemo(() => ({ dynamic: { ...DynamicPermissions }, ...Permissions }), [DynamicPermissions, Permissions]);\r\n const isLinkedInTargetingEnabled = permissions && permissions.dynamic && permissions.dynamic.AudienceSignalTargetSupportForPmax;\r\n\r\n const [isPanelExpanded, setPanelExpanded] = useState(false);\r\n\r\n const togglePanelExpanded = useCallback(() => {\r\n setPanelExpanded(!isPanelExpanded);\r\n }, [isPanelExpanded]);\r\n\r\n useEffect(() => {\r\n if (isEmpty(ageRanges) || isEmpty(genders)) {\r\n setPanelExpanded(true);\r\n }\r\n }, [ageRanges, genders]);\r\n\r\n return (\r\n \r\n \r\n \r\n {i18n.getString(_TL_('Demographics'))}\r\n \r\n \r\n \r\n \r\n )}\r\n message={i18n.getString(_TL_('Target by age and gender. We recommend you set your demographics broadly to reach more potential customers.'))}\r\n />\r\n \r\n \r\n {\r\n isLinkedInTargetingEnabled &&\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\nUnstyledDemographicsSection.propTypes = {\r\n classes: PropTypes.shape({\r\n demographicsContainer: PropTypes.string.isRequired,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n ageRanges: PropTypes.arrayOf(PropTypes.string).isRequired,\r\n genders: PropTypes.arrayOf(PropTypes.string).isRequired,\r\n companyName: PropTypes.arrayOf(PropTypes.shape([])).isRequired,\r\n industry: PropTypes.arrayOf(PropTypes.shape([])).isRequired,\r\n jobFunction: PropTypes.arrayOf(PropTypes.shape([])).isRequired,\r\n};\r\n\r\nexport const DemographicsSection = withDefaultStyles(UnstyledDemographicsSection, getDemographicsSectionStyle);\r\n","export const getDemographicsSectionStyle = (_, { palette = {} }) => ({\r\n demographicsContainer: {\r\n marginBottom: 0,\r\n\r\n '& .panel-heading': {\r\n border: 'none',\r\n\r\n '& .panel-title': {\r\n margin: 0,\r\n\r\n '& > a': {\r\n color: palette.themePrimary,\r\n fontSize: 18,\r\n padding: 0,\r\n\r\n '&:after': {\r\n fontSize: 18,\r\n margin: '0 10px 0 0',\r\n padding: 0,\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .panel-body': {\r\n padding: '0 0 0 28px',\r\n\r\n '& .alert-info': {\r\n marginBottom: 0,\r\n\r\n '& .ms-Icon': {\r\n color: palette.themePrimary,\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","import { edmCampaign } from '@bingads-webui/edm-campaign';\r\n\r\nexport const getAssetGroupsEDM = ({ cid, aid, audienceGroupId }) =>\r\n edmCampaign\r\n .Customers.$withKey(cid)\r\n .Accounts.$withKey(aid)\r\n .AudienceGroups.$withKey(audienceGroupId)['Default.GetAssetGroupsByAudienceGroupId'];\r\n","import React, { useContext, useEffect, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { SelectionMode } from '@fluentui/react';\r\nimport { ContextualDetailsList, GridContext, GridContextProvider } from '@bingads-webui-grid/grid-context';\r\nimport { useCampaignGridDataSource } from '@bingads-webui-grid/campaign-data-source';\r\n\r\nimport { getAssetGroupsEDM } from '../model/asset-group';\r\n\r\nconst AssetGroupColumn = i18n => ({\r\n key: 'AssetGroup',\r\n name: i18n.getString(_TL_('Asset group')),\r\n fieldName: 'AssetGroupName',\r\n className: 'column-asset-group',\r\n headerClassName: 'header-asset-group',\r\n minWidth: 120,\r\n maxWidth: 200,\r\n sortable: false,\r\n isMultiline: false,\r\n isResizable: true,\r\n});\r\n\r\nconst CampaignColumn = i18n => ({\r\n key: 'Campaign',\r\n name: i18n.getString(_TL_('Campaign')),\r\n fieldName: 'CampaignName',\r\n className: 'column-campaign',\r\n headerClassName: 'header-campaign',\r\n minWidth: 120,\r\n maxWidth: 200,\r\n sortable: false,\r\n isMultiline: false,\r\n isResizable: true,\r\n});\r\n\r\nconst Grid = ({\r\n i18n,\r\n cid,\r\n aid,\r\n audienceGroupId,\r\n onGenericError,\r\n}) => {\r\n const { dispatch } = useContext(GridContext);\r\n\r\n useCampaignGridDataSource({\r\n edm: getAssetGroupsEDM({ cid, aid, audienceGroupId }),\r\n odataParams: {\r\n query: {\r\n select: undefined,\r\n },\r\n },\r\n onError: onGenericError,\r\n });\r\n\r\n useEffect(() => {\r\n const columns = [AssetGroupColumn(i18n), CampaignColumn(i18n)];\r\n dispatch({ type: 'UPDATE_SELECTED_COLUMNS', payload: columns });\r\n }, [dispatch, i18n]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nGrid.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n aid: PropTypes.number.isRequired,\r\n cid: PropTypes.number.isRequired,\r\n audienceGroupId: PropTypes.number.isRequired,\r\n onGenericError: PropTypes.func,\r\n};\r\n\r\nGrid.defaultProps = {\r\n onGenericError: null,\r\n};\r\n\r\nexport const AssetGroupsGrid = (props) => {\r\n const initialGridContext = useMemo(() => ({\r\n selectionMode: SelectionMode.none,\r\n pagination: {\r\n pageSize: 5,\r\n },\r\n }), []);\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n","import $ from 'jquery';\r\nimport React, { useCallback, useMemo, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { Panel } from 'react-bootstrap';\r\nimport { ChoiceGroup, DefaultButton, Dialog, DialogFooter, DialogType, Label, PrimaryButton } from '@fluentui/react';\r\nimport { AudienceGroup } from '@bingads-webui/campaign-odata-schemas';\r\nimport { RemainingCharsValidatedTextField } from '@bingads-webui-campaign-react/remaining-chars-hint';\r\nimport { ErrorMessages, ValidationGroup } from '@bingads-webui-react/validation';\r\nimport { ReactTemplate } from '@bingads-webui-react/react-template';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\n\r\nimport { AudienceGroupNegativeReferenceId } from '../constants/audience-group';\r\nimport { AssetGroupsGrid } from './asset-groups-grid';\r\nimport { getSaveDialogStyle } from '../styles/save-dialog';\r\nimport { viewModelToModelForAudienceGroup, saveAudienceGroup } from '../model/audience-group';\r\n\r\nconst SaveOption = {\r\n SAVE: 1,\r\n SAVECOPY: 2,\r\n};\r\n\r\nconst UnstyledSaveDialog = (props) => {\r\n const {\r\n audienceGroupViewModel,\r\n classes,\r\n i18n,\r\n isOpen,\r\n onAudienceGroupChanged,\r\n onClose,\r\n onDismiss,\r\n onGenericError,\r\n onSaveInPlace,\r\n scope,\r\n } = props;\r\n\r\n const [viewModel, setViewModel] = useState({\r\n ...audienceGroupViewModel,\r\n data: {\r\n ...audienceGroupViewModel.data,\r\n Id: AudienceGroupNegativeReferenceId,\r\n Name: i18n.getString(_TL_('{{name}} - copy'), { name: audienceGroupViewModel.data.Name }),\r\n },\r\n });\r\n\r\n const [serverErrors, setServerErrors] = useState([]);\r\n\r\n const [alwaysShowError, toggleAlwaysShowError] = useState(false);\r\n\r\n const [saveOption, setSaveOption] = useState(null);\r\n\r\n const showSaveCopyFields = useMemo(() => saveOption === SaveOption.SAVECOPY, [saveOption]);\r\n\r\n const onValidate = useCallback((results) => {\r\n setViewModel({\r\n ...results,\r\n data: {\r\n ...viewModel.data,\r\n ...results.data,\r\n },\r\n });\r\n }, [viewModel.data]);\r\n\r\n const onSave = useCallback(() => {\r\n if (showSaveCopyFields) {\r\n toggleAlwaysShowError(true);\r\n if (!viewModel.isValid) {\r\n return;\r\n }\r\n\r\n saveAudienceGroup(viewModel, i18n)\r\n .then(response => onAudienceGroupChanged(viewModelToModelForAudienceGroup(response)))\r\n .then(onClose)\r\n .catch((response) => {\r\n setServerErrors(response.errors);\r\n })\r\n .finally(withUiBlock($('.ms-Dialog .ms-Dialog-main')));\r\n } else {\r\n onDismiss();\r\n onSaveInPlace();\r\n }\r\n }, [showSaveCopyFields, viewModel, i18n, onClose, onAudienceGroupChanged, onDismiss, onSaveInPlace]);\r\n\r\n const dialogContentProps = useMemo(() => ({\r\n className: 'audience-save-dialog',\r\n type: DialogType.normal,\r\n title: i18n.getString(_TL_('How do you want to save this audience signal?')),\r\n }), [i18n]);\r\n\r\n const onRenderSaveOption = useCallback(({ text, subText }) => (\r\n
    \r\n
    {text}
    \r\n
    {subText}
    \r\n
    \r\n ), []);\r\n\r\n const onChangeSaveOption = useCallback((_event, { key }) => {\r\n setSaveOption(key);\r\n }, []);\r\n\r\n const saveOptions = useMemo(() => [\r\n {\r\n key: SaveOption.SAVE,\r\n text: i18n.getString(_TL_('Save this audience signal')),\r\n subText: i18n.getString(_TL_('This audience signal will be updated, and any changes will be applied to all asset groups.')),\r\n onRenderLabel: onRenderSaveOption,\r\n },\r\n {\r\n key: SaveOption.SAVECOPY,\r\n text: i18n.getString(_TL_('Save as a copy')),\r\n subText: i18n.getString(_TL_('The original audience signal will remain unchanged.')),\r\n onRenderLabel: onRenderSaveOption,\r\n },\r\n ], [i18n, onRenderSaveOption]);\r\n\r\n return (\r\n
    \r\n );\r\n};\r\n\r\nDateSetting.propTypes = {\r\n label: PropTypes.string,\r\n data: PropTypes.shape({\r\n StartDate: PropTypes.string,\r\n EndDate: PropTypes.string,\r\n TimeZone: PropTypes.string,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n formatDate: PropTypes.func.isRequired,\r\n }).isRequired,\r\n adGroupStatus: PropTypes.string,\r\n onChange: PropTypes.func.isRequired,\r\n activityLogger: PropTypes.shape({\r\n signal: PropTypes.func,\r\n }),\r\n};\r\n\r\nDateSetting.defaultProps = {\r\n label: '',\r\n activityLogger: null,\r\n adGroupStatus: undefined,\r\n};\r\n","import _ from 'underscore';\r\nimport React, { useState, useCallback, useContext, useMemo, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { withCustomValidation, withError } from '@bingads-webui-react/validation';\r\nimport { ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { toIANATimeZone } from '@bingads-webui-universal/time-zone-converter';\r\nimport { DateSetting } from './date-setting';\r\n\r\nconst DateSettingWithCustomValidation = ({\r\n validationProps, updateValidation, validateOnLoad, ...restProps\r\n}) => {\r\n const { data: dataSettings } = validationProps;\r\n const i18n = useContext(I18nContext);\r\n const activity = useContext(ActivityContext);\r\n const currentDate = useMemo(() => {\r\n const localDate = new Date(new Date().toLocaleString('en-US', { timeZone: toIANATimeZone(dataSettings.TimeZone) }));\r\n return new Date(localDate.getFullYear(), localDate.getMonth(), localDate.getDate(), 0, 0, 0, 0);\r\n }, [dataSettings.TimeZone]);\r\n const [isInvalidState, setIsInvalidState] = useState(false);\r\n const [updatedDateSettings, setUpdatedDateSettings] = useState(dataSettings);\r\n const validateDate = useCallback(({\r\n StartDate,\r\n EndDate,\r\n hasFixedStartDate = false,\r\n }) => {\r\n const validationErrors = [];\r\n // check wether date is valid\r\n if (_.isNull(StartDate) && !hasFixedStartDate) {\r\n validationErrors.push(i18n.getString(_TL_('Invalid start date')));\r\n } else if (StartDate < currentDate && !hasFixedStartDate) {\r\n validationErrors.push(i18n.getString(_TL_(\"Your start date must be after today. Today's date is calculated using your campaign time zone setting, not your actual local time.\")));\r\n } else if (!_.isNull(EndDate) && StartDate > EndDate) {\r\n validationErrors.push(i18n.getString(_TL_('End date must be later than start date')));\r\n }\r\n return validationErrors;\r\n }, [currentDate, i18n]);\r\n\r\n const onChange = useCallback((newData, shouldDirty = true) => {\r\n const validationError = validateDate(newData);\r\n updateValidation(validationError, newData, shouldDirty);\r\n\r\n setIsInvalidState(validationError.length > 0);\r\n\r\n if (activity) {\r\n activity.signal(`onDateSettingChange - ${JSON.stringify(newData)}`);\r\n }\r\n }, [validateDate, updateValidation, activity]);\r\n\r\n useEffect(() => {\r\n setUpdatedDateSettings(_.clone(dataSettings));\r\n }, [dataSettings, isInvalidState]);\r\n\r\n useEffect(() => {\r\n // trigger validation on initial load\r\n if (validateOnLoad) {\r\n onChange(dataSettings, false);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nDateSettingWithCustomValidation.propTypes = {\r\n validationProps: PropTypes.shape({\r\n data: PropTypes.shape({}),\r\n }).isRequired,\r\n validateOnLoad: PropTypes.bool,\r\n updateValidation: PropTypes.func.isRequired,\r\n activity: PropTypes.shape({\r\n signal: PropTypes.func,\r\n }),\r\n};\r\n\r\nDateSettingWithCustomValidation.defaultProps = {\r\n activity: null,\r\n validateOnLoad: false,\r\n};\r\n\r\nconst ValidatedDateSettingInternal = withError(withCustomValidation(DateSettingWithCustomValidation));\r\n\r\nexport const ValidatedDateSetting = props => (\r\n
    \r\n \r\n
    \r\n);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { TextField } from '@bingads-webui-react/fabric-with-signal';\r\n\r\nconst getStyles = () => ({\r\n container: {\r\n display: 'flex',\r\n },\r\n bid: {\r\n width: '150px',\r\n marginRight: '12px',\r\n },\r\n currency: {\r\n marginTop: '5px',\r\n },\r\n messageBar: {\r\n marginTop: '5px',\r\n },\r\n});\r\n\r\nexport const DefaultBid = ({\r\n // eslint-disable-next-line\r\n i18n, currencyCode, id, getRangeWaring, disabled, value,...rest\r\n}) => {\r\n const classes = useDefaultStyles(getStyles);\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n {currencyCode}\r\n
    );\r\n};\r\n\r\nDefaultBid.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n currencyCode: PropTypes.string.isRequired,\r\n id: PropTypes.string,\r\n classes: PropTypes.shape({\r\n container: PropTypes.string.isRequired,\r\n bid: PropTypes.string.isRequired,\r\n currency: PropTypes.string.isRequired,\r\n }).isRequired,\r\n validationProps: PropTypes.shape({}).isRequired,\r\n getRangeWaring: PropTypes.func,\r\n disabled: PropTypes.bool,\r\n};\r\n\r\nDefaultBid.defaultProps = {\r\n id: '',\r\n getRangeWaring: () => null,\r\n disabled: false,\r\n};\r\n","import React, { useCallback, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { withControlErrorHandling, withControlErrors } from '@bingads-webui-campaign-react/error-handling';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { withCustomValidation } from '@bingads-webui-react/validation';\r\nimport { ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { Label } from '@fluentui/react';\r\nimport { DefaultBid } from './default-bid';\r\n\r\nconst PriceModelToRange = {\r\n EnhancedCpc: 'KeywordBidRange',\r\n ManualCpc: 'KeywordBidRange',\r\n ManualCpv: 'KeywordCPVBidRange',\r\n ManualCpm: 'KeywordCPMBidRange',\r\n};\r\n\r\nconst DefaultBidWithValidation = withControlErrorHandling(withControlErrors(DefaultBid));\r\n\r\nconst DefaultBidWithWaring = (props) => {\r\n const {\r\n onValidate, value, field, Type, label, ...rest\r\n } = props;\r\n\r\n const serverContext = useContext(ServerContext);\r\n const activity = useContext(ActivityContext);\r\n\r\n const onChange = useCallback((result) => {\r\n onValidate(result);\r\n\r\n if (activity) {\r\n activity.signal(`onDefaultBidChanged - ${field}: ${result && result.data && result.data[field]}`);\r\n }\r\n }, [activity, field, onValidate]);\r\n\r\n const getBidRange = useCallback((type) => {\r\n const bidCeil = _.result(serverContext[PriceModelToRange[type]], 'CeilingValue');\r\n const bidFloor = _.result(serverContext[PriceModelToRange[type]], 'FloorValue');\r\n\r\n return { bidCeil, bidFloor };\r\n }, [serverContext]);\r\n\r\n const { bidCeil, bidFloor } = getBidRange(Type);\r\n\r\n return (\r\n <>\r\n {label &&\r\n \r\n }\r\n \r\n \r\n );\r\n};\r\n\r\n\r\nDefaultBidWithWaring.propTypes = {\r\n Type: PropTypes.string,\r\n field: PropTypes.string.isRequired,\r\n onValidate: PropTypes.func,\r\n value: PropTypes.number,\r\n label: PropTypes.string,\r\n};\r\n\r\nDefaultBidWithWaring.defaultProps = {\r\n Type: 'EnhancedCpc',\r\n onValidate: _.noop,\r\n value: null,\r\n label: null,\r\n};\r\n\r\nexport const ValidatedDefaultBid = withCustomValidation(DefaultBidWithWaring);\r\n\r\n","import React, { useCallback, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withControlErrorHandling, withControlErrors } from '@bingads-webui-campaign-react/error-handling';\r\nimport { withCustomValidation, } from '@bingads-webui-react/validation';\r\nimport { ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { DefaultBid } from './default-bid';\r\n\r\nconst DefaultBidWithValidation = withControlErrorHandling(withControlErrors(DefaultBid));\r\n\r\nconst DefaultBidWithWaring = (props) => {\r\n const {\r\n updateValidation, validationProps, onBidChange,\r\n ...rest\r\n } = props;\r\n\r\n const activity = useContext(ActivityContext);\r\n\r\n const onCountValidate = useCallback((result) => {\r\n const { messages = [], data } = result;\r\n const fieldValue = data[validationProps.field];\r\n if (fieldValue !== validationProps.data[validationProps.field]) {\r\n updateValidation(messages, data);\r\n }\r\n\r\n if (onBidChange) {\r\n onBidChange(fieldValue, result);\r\n }\r\n\r\n if (activity) {\r\n activity.signal(`onDefaultBidChanged - ${validationProps.field}: ${data[validationProps.field]}`);\r\n }\r\n }, [activity, updateValidation, validationProps.data, validationProps.field]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n );\r\n};\r\n\r\nDefaultBidWithWaring.propTypes = {\r\n updateValidation: PropTypes.func.isRequired,\r\n validationProps: PropTypes.shape({\r\n field: PropTypes.string.isRequired,\r\n data: PropTypes.shape({}).isRequired,\r\n }).isRequired,\r\n onBidChange: PropTypes.func,\r\n};\r\nDefaultBidWithWaring.defaultProps = {\r\n onBidChange: null,\r\n};\r\n\r\nexport const CustomValidatedDefaultBid = withCustomValidation(DefaultBidWithWaring);\r\n","import _ from 'underscore';\r\nimport { bidStratetyTypeValue } from '@bingads-webui-campaign-react/constants';\r\n\r\nexport const isAutoBidding = (bidStrategyType) => {\r\n const autoBidding = [bidStratetyTypeValue.maximizeConversions, bidStratetyTypeValue.maximizeClicks, bidStratetyTypeValue.maxConversionValue, bidStratetyTypeValue.targetRoas, bidStratetyTypeValue.targetCpa, bidStratetyTypeValue.targetImpressionShare, bidStratetyTypeValue.costPerSale];\r\n const result = _.contains(autoBidding, bidStrategyType);\r\n\r\n return result;\r\n};\r\n","export const getCollapsiblePanelStyles = (components, theme) => ({\r\n border: 'none',\r\n marginBottom: 'unset',\r\n backgroundColor: 'unset',\r\n\r\n '& .panel-heading': {\r\n padding: 0,\r\n borderBottom: 'none',\r\n marginBottom: 18,\r\n\r\n '& .panel-title': {\r\n fontSize: 18,\r\n '& > a': {\r\n color: theme && theme.palette && theme.palette.themePrimary,\r\n padding: 0,\r\n '&:hover, &:active': {\r\n color: theme && theme.palette && theme.palette.themeDarker,\r\n textDecoration: 'none',\r\n backgroundColor: 'unset',\r\n },\r\n },\r\n\r\n '& > a:after': {\r\n transform: 'rotate(180deg)',\r\n },\r\n\r\n '& > a.collapsed:after': {\r\n transform: 'rotate(90deg)',\r\n },\r\n },\r\n },\r\n\r\n '& .panel-collapse': {\r\n '& .panel-body': {\r\n padding: 0,\r\n overflow: 'hidden',\r\n },\r\n },\r\n});\r\n","import { getCollapsiblePanelStyles } from './collapsible-panel';\r\n\r\nexport const getNativeAdsStyles = (components, theme) => ({\r\n collapsiblePanel: getCollapsiblePanelStyles(components, theme),\r\n});\r\n","import { UAPPlacementTypeAlias as EPT } from '@bingads-webui-campaign-react/unified-ad-preview-library-cmui';\r\n\r\n//\r\n// Ad Preview Constants\r\nexport const extraPlacementInfo = {\r\n [EPT.MSANV2.MSEdgeCarousel]: {\r\n previewTitle: _TL_('Microsoft Edge carousel'),\r\n previewHeaderTitle: _TL_('Ad preview (2.01 : 1 aspect ratio)'),\r\n customClassName: 'mmav2_201x100',\r\n imagePreviewHeight: 10, // 152,\r\n editingPlacementType: EPT.MSANV2.MSEdgeCarousel,\r\n hasLogo: true,\r\n },\r\n [EPT.MSANV2.MSANBanner]: {\r\n previewTitle: _TL_('MSN banner'),\r\n previewHeaderTitle: _TL_('Ad preview (2 : 1 aspect ratio)'),\r\n customClassName: 'mmav2_200x100',\r\n imagePreviewHeight: 100,\r\n editingPlacementType: EPT.MSANV2.MSANBanner,\r\n },\r\n [EPT.MSANV2.MSANRiver]: {\r\n previewTitle: _TL_('MSN feed'),\r\n previewHeaderTitle: _TL_('Ad preview (1.91 : 1 aspect ratio)'),\r\n customClassName: 'mmav2_191x100',\r\n imagePreviewHeight: 200,\r\n editingPlacementType: EPT.MSANV2.MSANRiver,\r\n hasLogo: true,\r\n },\r\n [EPT.MSANV2.MSNCarousel]: {\r\n previewTitle: _TL_('MSN carousel'),\r\n previewHeaderTitle: _TL_('Ad preview (1.69 : 1 aspect ratio)'),\r\n customClassName: 'mmav2_169x100',\r\n imagePreviewHeight: 372,\r\n editingPlacementType: EPT.MSANV2.MSNCarousel,\r\n },\r\n [EPT.MSANV2.MSNPartnerStripe]: {\r\n previewTitle: _TL_('MSN partner stripe'),\r\n previewHeaderTitle: _TL_('Ad preview (1.53 : 1 aspect ratio)'),\r\n customClassName: 'mmav2_153x100',\r\n imagePreviewHeight: 150,\r\n editingPlacementType: EPT.MSANV2.MSNPartnerStripe,\r\n },\r\n [EPT.MSANV2.MSNRestoday]: {\r\n previewTitle: _TL_('MSN Restoday'),\r\n previewHeaderTitle: _TL_('Ad preview (1.24 : 1 aspect ratio)'),\r\n customClassName: 'mmav2_124x100',\r\n imagePreviewHeight: 84,\r\n editingPlacementType: EPT.MSANV2.MSNRestoday,\r\n },\r\n [EPT.MSANV2.MSANRectangle]: {\r\n previewTitle: _TL_('MSN rectangle image'),\r\n previewHeaderTitle: _TL_('Ad preview (1.20 : 1 aspect ratio)'),\r\n customClassName: 'mmav2_120x100',\r\n imagePreviewHeight: 250,\r\n editingPlacementType: EPT.MSANV2.MSANRectangle,\r\n hasLogo: true,\r\n },\r\n [EPT.MSANV2.MSEdgeMobile]: {\r\n previewTitle: _TL_('Microsoft Edge mobile'),\r\n previewHeaderTitle: _TL_('Ad preview (1 : 1 aspect ratio)'),\r\n customClassName: 'mmav2_1x1',\r\n imagePreviewHeight: 150,\r\n editingPlacementType: EPT.MSANV2.MSEdgeMobile,\r\n hasLogo: true,\r\n },\r\n [EPT.Outlook.Mobile]: {\r\n previewTitle: _TL_('Microsoft Outlook web (mobile)'),\r\n customClassName: 'outlook_text_mobile',\r\n editingPlacementType: EPT.Outlook.Mobile,\r\n hasLogo: true,\r\n },\r\n [EPT.Outlook.Web]: {\r\n previewTitle: _TL_('Microsoft Outlook web (computer)'),\r\n customClassName: 'outlook_text_web',\r\n editingPlacementType: EPT.Outlook.Web,\r\n hasLogo: true,\r\n },\r\n [EPT.Responsive.MSAN.WideImage]: {\r\n previewTitle: _TL_('MSN feed'),\r\n previewHeaderTitle: _TL_('Ad preview (1.91 : 1 aspect ratio)'),\r\n customClassName: 'msan_191x100',\r\n imagePreviewHeight: 200,\r\n disclaimerMessage: _TL_('This is an example of how your ad could appear on other websites on the Microsoft Advertising Network. The final ad format is likely to change to match the look and feel of the website.'),\r\n editingPlacementType: EPT.MSAN.WideImage,\r\n },\r\n [EPT.Responsive.MSAN.MSEdgeSingleCarousel]: {\r\n previewTitle: _TL_('Microsoft Edge single carousel'),\r\n previewHeaderTitle: _TL_('Ad preview (1.78 : 1 aspect ratio)'),\r\n customClassName: 'edge_178x100',\r\n imagePreviewHeight: 220,\r\n editingPlacementType: EPT.MSAN.MSEdgeSingleCarousel,\r\n },\r\n [EPT.Responsive.MSAN.MSNInArticle]: {\r\n previewTitle: _TL_('MSN in-article ad'),\r\n previewHeaderTitle: _TL_('Ad preview (1.5 : 1 aspect ratio)'),\r\n customClassName: 'msan_150x100',\r\n imagePreviewHeight: 200,\r\n editingPlacementType: EPT.MSAN.MSNInArticle,\r\n },\r\n [EPT.Responsive.MSAN.MSNSmallHeadline]: {\r\n previewTitle: _TL_('MSN small headline'),\r\n previewHeaderTitle: _TL_('Ad preview (1.33 : 1 aspect ratio)'),\r\n customClassName: 'msan_133x100',\r\n imagePreviewHeight: 75,\r\n editingPlacementType: EPT.MSAN.MSNSmallHeadline,\r\n },\r\n [EPT.Responsive.MSAN.SquareImage]: {\r\n previewTitle: _TL_('MSN square image'),\r\n previewHeaderTitle: _TL_('Ad preview (1 : 1 aspect ratio)'),\r\n customClassName: 'msan_1x1',\r\n imagePreviewHeight: 75,\r\n disclaimerMessage: _TL_('This is an example of how your ad could appear on other websites on the Microsoft Advertising Network. The final ad format is likely to change to match the look and feel of the website.'),\r\n editingPlacementType: EPT.MSAN.SquareImage,\r\n },\r\n [EPT.Responsive.MSANV2.MSANRiver]: {\r\n previewTitle: _TL_('MSN feed'),\r\n previewHeaderTitle: _TL_('Ad preview (1.91 : 1 aspect ratio)'),\r\n customClassName: 'mmav2_191x100',\r\n imagePreviewHeight: 200,\r\n editingPlacementType: EPT.MSANV2.MSANRiver,\r\n hasLogo: true,\r\n },\r\n [EPT.Responsive.MSANV2.MSEdgeMobile]: {\r\n previewTitle: _TL_('Microsoft Edge mobile'),\r\n previewHeaderTitle: _TL_('Ad preview (1 : 1 aspect ratio)'),\r\n customClassName: 'mmav2_1x1',\r\n imagePreviewHeight: 150,\r\n editingPlacementType: EPT.MSANV2.MSEdgeMobile,\r\n hasLogo: true,\r\n },\r\n [EPT.Responsive.Outlook.Mobile]: {\r\n previewTitle: _TL_('Microsoft Outlook web (mobile)'),\r\n customClassName: 'outlook_text_mobile',\r\n editingPlacementType: EPT.Outlook.Mobile,\r\n },\r\n [EPT.Responsive.Outlook.Web]: {\r\n previewTitle: _TL_('Microsoft Outlook web (computer)'),\r\n customClassName: 'outlook_text_web',\r\n editingPlacementType: EPT.Outlook.Web,\r\n },\r\n [EPT.Responsive.Boost.WindowsSpotlight]: {\r\n previewTitle: _TL_('Windows Spotlight'),\r\n previewHeaderTitle: _TL_('Ad preview'),\r\n editingPlacementType: EPT.Boost.WindowsSpotlight,\r\n hideHeaderButtons: true,\r\n },\r\n [EPT.Responsive.Boost.DiscoverCard]: {\r\n previewTitle: _TL_('Discover card'),\r\n previewHeaderTitle: _TL_('Ad preview'),\r\n editingPlacementType: EPT.Boost.DiscoverCard,\r\n hideHeaderButtons: true,\r\n },\r\n [EPT.Responsive.Boost.StartMenu]: {\r\n previewTitle: _TL_('Start Menu'),\r\n previewHeaderTitle: _TL_('Ad preview'),\r\n editingPlacementType: EPT.Boost.StartMenu,\r\n hasLogo: true,\r\n hideHeaderButtons: true,\r\n },\r\n [EPT.Responsive.Boost.ActionCenter]: {\r\n previewTitle: _TL_('Action Center'),\r\n previewHeaderTitle: _TL_('Ad preview'),\r\n editingPlacementType: EPT.Boost.ActionCenter,\r\n hasLogo: true,\r\n hideHeaderButtons: true,\r\n },\r\n [EPT.Responsive.Boost.Banner]: {\r\n previewTitle: _TL_('Banner'),\r\n previewHeaderTitle: _TL_('Ad preview'),\r\n editingPlacementType: EPT.Boost.Banner,\r\n hasLogo: true,\r\n hideHeaderButtons: true,\r\n },\r\n [EPT.Responsive.Boost.Prong1Prong2Feed]: {\r\n previewTitle: _TL_('Prong 1 / Prong 2 / Feed'),\r\n previewHeaderTitle: _TL_('Ad preview'),\r\n editingPlacementType: EPT.Boost.Prong1Prong2Feed,\r\n hasLogo: true,\r\n hideHeaderButtons: true,\r\n },\r\n [EPT.Responsive.Boost.Coachmark]: {\r\n previewTitle: _TL_('CoachMark'),\r\n previewHeaderTitle: _TL_('Ad preview'),\r\n editingPlacementType: EPT.Boost.Coachmark,\r\n hideHeaderButtons: true,\r\n },\r\n};\r\n\r\nexport const responsiveMsanMMAConfig = [{\r\n placementSetName: 'responsiveMsanMMAConfig',\r\n placementTypes: [\r\n EPT.Responsive.MSAN.WideImage,\r\n EPT.Responsive.MSAN.MSEdgeSingleCarousel,\r\n EPT.Responsive.MSAN.MSNInArticle,\r\n EPT.Responsive.MSAN.MSNSmallHeadline,\r\n EPT.Responsive.MSAN.SquareImage,\r\n EPT.Responsive.Outlook.Web,\r\n EPT.Responsive.Outlook.Mobile,\r\n ],\r\n}];\r\n\r\nexport const msanMMAV2Config = [{\r\n placementSetName: 'msanMMAV2Config',\r\n placementTypes: [\r\n EPT.MSANV2.MSEdgeCarousel,\r\n EPT.MSANV2.MSANBanner,\r\n EPT.MSANV2.MSANRiver,\r\n EPT.MSANV2.MSNCarousel,\r\n EPT.MSANV2.MSNPartnerStripe,\r\n EPT.MSANV2.MSNRestoday,\r\n EPT.MSANV2.MSANRectangle,\r\n EPT.MSANV2.MSEdgeMobile,\r\n EPT.Outlook.Web,\r\n EPT.Outlook.Mobile,\r\n ],\r\n}];\r\n\r\nexport const msanMMAConfig = [{\r\n placementSetName: 'msanMMAConfig',\r\n placementTypes: [\r\n EPT.MSAN.WideImage,\r\n EPT.MSAN.MSEdgeSingleCarousel,\r\n EPT.MSAN.MSNInArticle,\r\n EPT.MSAN.MSNSmallHeadline,\r\n EPT.MSAN.SquareImage,\r\n EPT.Outlook.Web,\r\n EPT.Outlook.Mobile,\r\n ],\r\n}];\r\n\r\nexport const responsiveMsanMMABoostConfig = [{\r\n placementSetName: 'responsiveMsanMMABoostConfig',\r\n placementTypes: [\r\n EPT.Responsive.MSAN.WideImage,\r\n EPT.Responsive.MSAN.MSEdgeSingleCarousel,\r\n EPT.Responsive.MSAN.MSNInArticle,\r\n EPT.Responsive.MSAN.MSNSmallHeadline,\r\n EPT.Responsive.MSAN.SquareImage,\r\n EPT.Responsive.Boost.WindowsSpotlight,\r\n EPT.Responsive.Boost.DiscoverCard,\r\n EPT.Responsive.Boost.StartMenu,\r\n EPT.Responsive.Boost.ActionCenter,\r\n EPT.Responsive.Boost.Prong1Prong2Feed,\r\n ],\r\n}];\r\n\r\nexport const responsiveMsanMMABoostConfigV2 = [{\r\n placementSetName: 'responsiveMsanMMABoostConfig',\r\n placementTypes: [\r\n EPT.Responsive.MSANV2.MSANRiver,\r\n EPT.Responsive.MSAN.MSEdgeSingleCarousel,\r\n EPT.Responsive.MSAN.MSNInArticle,\r\n EPT.Responsive.MSAN.MSNSmallHeadline,\r\n EPT.Responsive.MSANV2.MSEdgeMobile,\r\n EPT.Responsive.Boost.WindowsSpotlight,\r\n EPT.Responsive.Boost.DiscoverCard,\r\n EPT.Responsive.Boost.StartMenu,\r\n EPT.Responsive.Boost.ActionCenter,\r\n EPT.Responsive.Boost.Prong1Prong2Feed,\r\n ],\r\n}];\r\n\r\nexport const msanMMABoostConfig = [{\r\n placementSetName: 'msanMMABoostConfig',\r\n placementTypes: [\r\n EPT.MSAN.WideImage,\r\n EPT.MSAN.MSEdgeSingleCarousel,\r\n EPT.MSAN.MSNInArticle,\r\n EPT.MSAN.MSNSmallHeadline,\r\n EPT.MSAN.SquareImage,\r\n EPT.Boost.WindowsSpotlight,\r\n EPT.Boost.DiscoverCard,\r\n EPT.Boost.StartMenu,\r\n EPT.Boost.ActionCenter,\r\n EPT.Boost.Banner,\r\n EPT.Boost.Prong1Prong2Feed,\r\n EPT.Boost.Coachmark,\r\n ],\r\n}];\r\n\r\nexport const msanMMABoostConfigV2 = [{\r\n placementSetName: 'msanMMABoostConfig',\r\n placementTypes: [\r\n EPT.MSANV2.MSANRiver,\r\n EPT.MSAN.MSEdgeSingleCarousel,\r\n EPT.MSAN.MSNInArticle,\r\n EPT.MSAN.MSNSmallHeadline,\r\n EPT.MSANV2.MSEdgeMobile,\r\n EPT.Boost.WindowsSpotlight,\r\n EPT.Boost.DiscoverCard,\r\n EPT.Boost.StartMenu,\r\n EPT.Boost.ActionCenter,\r\n EPT.Boost.Banner,\r\n EPT.Boost.Prong1Prong2Feed,\r\n EPT.Boost.Coachmark,\r\n ],\r\n}];\r\n\r\nexport const BiddingSchemes = {\r\n EnhancedCpc: 'EnhancedCpc',\r\n MaxConversions: 'MaxConversions',\r\n ManualCpm: 'ManualCpm',\r\n};\r\n\r\nexport const AdPreviewOverideStylesByKey = {\r\n mma_191x100: { imagePreviewHeight: 153, imagePreviewWidth: 292 },\r\n edge_178x100: { imagePreviewHeight: 220, imagePreviewWidth: 390 },\r\n msan_191x100: { imagePreviewHeight: 200, imagePreviewWidth: 382 },\r\n msan_150x100: { imagePreviewHeight: 200, imagePreviewWidth: 300 },\r\n};\r\n\r\nexport const ERROR_ENTITY = {\r\n Campaign: 'campaign',\r\n AdGroup: 'adGroup',\r\n Ad: 'ResponsiveAd',\r\n};\r\n","import { extensionEditorStyles } from '@bingads-webui-campaign-react/common-styles';\r\nimport { AdPreviewOverideStylesByKey } from '../constants';\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 getImageExperienceStyles = (_, { palette = {} }) => ({\r\n '@global': {\r\n ...extensionEditorStyles({ palette }),\r\n },\r\n nativeAdStepShell: {\r\n width: '100%',\r\n },\r\n 'nativeAdStepShell-l': {\r\n width: 'calc(100% - 64px)',\r\n },\r\n nativeAdImagePreviewCarousel: {\r\n position: 'sticky',\r\n width: 420,\r\n top: '0px',\r\n '& .carousel-inner .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 bottom: 'unset !important',\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-wrapper .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(-16px)');\r\n\r\n return transformations.join(' ');\r\n },\r\n bottom: 16,\r\n },\r\n\r\n '& .carousel-wrapper .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(14px)');\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 '& .carousel-inner .ad-placement-preview, & .carousel-inner .ad-placement-card-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.boost-windows, & .ad-placement-card-preview.boost-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.boost-start-menu, & .ad-placement-card-preview.boost-start-menu': {\r\n '& .new-responsive-ad-preview-container': {\r\n height: '100%',\r\n width: '100%',\r\n },\r\n },\r\n '& .ad-placement-preview.boost-actionCenter, & .ad-placement-card-preview.boost-actionCenter': {\r\n '& .new-responsive-ad-preview-container': {\r\n height: '100%',\r\n width: '100%',\r\n },\r\n },\r\n '& .ad-placement-preview.boost-banner, & .ad-placement-card-preview.boost-banner': {\r\n '& .new-responsive-ad-preview-container': {\r\n height: '100%',\r\n width: '100%',\r\n },\r\n },\r\n '& .ad-placement-preview.mma_191x100, & .ad-placement-card-preview.mma_191x100': {\r\n '& .card-parent': {\r\n maxWidth: AdPreviewOverideStylesByKey.mma_191x100.imagePreviewWidth,\r\n '& .text-container-apl': {\r\n padding: '5px 12px 12px 12px',\r\n '& .short-headline': {\r\n wordWrap: 'break-word',\r\n },\r\n '& .final-url': {\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .ad-placement-preview.edge_178x100, & .ad-placement-card-preview.edge_178x100': {\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\r\n '& .ad-placement-preview.msan_191x100, & .ad-placement-card-preview.msan_191x100': {\r\n '& .card-parent': {\r\n maxWidth: AdPreviewOverideStylesByKey.msan_191x100.imagePreviewWidth,\r\n },\r\n },\r\n\r\n '& .ad-placement-preview.msan_150x100, & .ad-placement-card-preview.msan_150x100': {\r\n '& .card-parent': {\r\n maxWidth: AdPreviewOverideStylesByKey.msan_150x100.imagePreviewWidth,\r\n },\r\n },\r\n\r\n '& .ad-placement-preview.msan_1x1, & .ad-placement-card-preview.msan_1x1': {\r\n padding: 20,\r\n },\r\n\r\n '& .ad-placement-preview.msan_133x100, & .ad-placement-card-preview.msan_133x100': {\r\n padding: 20,\r\n },\r\n\r\n '& .ad-placement-preview.bing_text, & .ad-placement-card-preview.bing_text': {\r\n '& .responsive-ad-preview-content': {\r\n '& .text-container-apl': {\r\n '& .final-url > .multi-line-processed-text': {\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .ad-placement-preview.outlook_text_mobile, & .ad-placement-card-preview.outlook_text_mobile': {\r\n '& .responsive-ad-preview-content': {\r\n boxSizing: 'content-box',\r\n maxWidth: 'calc(100% - 50px)',\r\n '& .description': {\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n width: '100%',\r\n whiteSpace: 'nowrap',\r\n },\r\n },\r\n },\r\n\r\n '& .ad-placement-preview.outlook_text_web, & .ad-placement-card-preview.outlook_text_web': {\r\n padding: '0px 8px',\r\n\r\n '& .responsive-ad-preview-content': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n minWidth: 0,\r\n '& .text-container-apl': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n whiteSpace: 'nowrap',\r\n minWidth: 0,\r\n '& .pre-headline-divider': {\r\n height: 2,\r\n },\r\n '& .description-parent': {\r\n flex: '1 1 0px',\r\n minWidth: 0,\r\n '& .description': {\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n width: '100%',\r\n },\r\n },\r\n },\r\n\r\n '& .business-name-with-ads': {\r\n marginRight: 10,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n 'nativeAdImagePreviewCarousel-xxl': {\r\n '@media (min-width: 1400px)': {\r\n width: ({ isMMAV2Enabled }) => (isMMAV2Enabled ? 670 : 530),\r\n },\r\n width: 420,\r\n },\r\n 'nativeAdImagePreviewCarousel-xl': {\r\n width: 420,\r\n },\r\n rightStyles: {\r\n // '@media (min-width: 1750px)': {\r\n // width: '50%',\r\n // },\r\n '& .image-experience-content': {\r\n minWidth: 'unset !important',\r\n },\r\n },\r\n container: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n width: '100%',\r\n gap: '32px',\r\n '& .text-input-container': {\r\n width: '100% !important',\r\n },\r\n '& .title-item': {\r\n width: 'auto',\r\n maxWidth: '100%',\r\n },\r\n },\r\n leftStyles: {\r\n width: '100%',\r\n maxWidth: '530px',\r\n },\r\n 'leftStyles-xxl': {\r\n width: '530px',\r\n },\r\n 'leftStyles-xl': {\r\n width: '430px',\r\n },\r\n headerStackStyles: {\r\n width: 'unset',\r\n },\r\n 'headerStackStyles-l': {\r\n width: '430px',\r\n },\r\n 'headerStackStyles-xl': {\r\n width: '430px',\r\n },\r\n 'headerStackStyles-xxl': {\r\n width: '530px',\r\n },\r\n imageExperienceStyle: {\r\n '& .image-experience-content': {\r\n minWidth: 'unset !important',\r\n },\r\n '& .image-list-choice-group .ms-ChoiceFieldGroup-flexContainer': {\r\n width: 'unset !important',\r\n },\r\n },\r\n textAssetStyle: {\r\n '& .text-assets-collection-container': {\r\n width: '100%',\r\n // '@media (max-width: 1750px)': {\r\n // width: 'unset !important',\r\n // },\r\n },\r\n },\r\n businessNameStyle: {\r\n '& .business-name-container': {\r\n width: '100%',\r\n // '@media (max-width: 1750px)': {\r\n // width: 'unset !important',\r\n // },\r\n },\r\n },\r\n imageListLoadingContainer: {\r\n minHeight: 84,\r\n '& .loading': {\r\n paddingTop: 30,\r\n },\r\n },\r\n imageListErrorContainer: {\r\n paddingTop: 10,\r\n '& .alert': {\r\n alignItems: 'center',\r\n padding: [4, 16, 4, 12],\r\n\r\n '& .alert-image:before': {\r\n lineHeight: '32px',\r\n },\r\n\r\n '& .alert__content': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n flexGrow: 1,\r\n alignItems: 'center',\r\n },\r\n\r\n '& .alert__action': {\r\n marginLeft: 'auto',\r\n marginTop: 'unset',\r\n },\r\n },\r\n },\r\n adPreviewPlacementHeader: {\r\n '& > .ad-preview-title': {\r\n margin: '20px 24px 16px 24px',\r\n fontSize: 18,\r\n fontWeight: 'normal',\r\n lineHeight: '24px',\r\n },\r\n },\r\n adPreviewPlacementContainer: {\r\n height: 450,\r\n display: 'flex',\r\n justifyContent: 'flex-start',\r\n flexDirection: 'column',\r\n\r\n '&:hover .card-parent .placement-card-content': {\r\n borderColor: '#004578',\r\n },\r\n\r\n '& .ad-placement-card-preview': ({ isMMAV2Enabled }) => (isMMAV2Enabled ? {} : {\r\n overflow: 'visible !important', // to show the shadow\r\n margin: 'unset !important',\r\n }),\r\n\r\n '& .ad-placement-card-preview.edge_178x100': {\r\n '& .card-parent': {\r\n maxWidth: 220 * 1.78,\r\n },\r\n },\r\n\r\n '& .ad-placement-card-preview.msan_133x100': {\r\n marginTop: '150px !important',\r\n paddingBottom: '0 !important',\r\n },\r\n\r\n '& .ad-placement-card-preview.msan_1x1': {\r\n marginTop: '150px !important',\r\n paddingBottom: '0 !important',\r\n },\r\n\r\n '& .ad-placement-card-preview.outlook_text_web': {\r\n marginTop: '150px !important',\r\n },\r\n\r\n '& .ad-placement-card-preview.outlook_text_mobile': {\r\n margin: '150px 11.5px 0 11.5px !important',\r\n },\r\n\r\n '& .preview-string': {\r\n width: '100%',\r\n fontSize: 14,\r\n textAlign: 'center',\r\n lineHeight: '20px',\r\n paddingTop: 12,\r\n marginBottom: ({ isMMAV2Enabled }) => (isMMAV2Enabled ? 20 : 0),\r\n },\r\n\r\n '& .additional-disclaimer-message': {\r\n position: 'absolute',\r\n left: 0,\r\n width: '100%',\r\n bottom: 0,\r\n padding: '0 24px',\r\n fontSize: 12,\r\n textAlign: 'left',\r\n lineHeight: '20px',\r\n },\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 '& .responsive-boost-ad-placement-container': {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n '& > .ad-placement-card-preview': {\r\n boxShadow: '0px 0.511px 1.533px rgb(0 0 0 / 10%), 0px 2.72533px 6.132px rgb(0 0 0 / 13%) !important',\r\n borderRadius: '5.11px !important',\r\n },\r\n },\r\n '& .responsive-boost-ad-placement-container.responsive-boost-start-menu': {\r\n marginTop: '30%',\r\n },\r\n '& .responsive-boost-ad-placement-container.responsive-boost-action-center': {\r\n marginTop: '20%',\r\n },\r\n '& .responsive-boost-ad-placement-container.responsive-boost-banner': {\r\n marginTop: '35%',\r\n marginLeft: 15,\r\n marginRight: 15,\r\n },\r\n },\r\n});\r\n","export const getNativeAdPanels = (serverContext, isVideo, isDisplay) => {\r\n if (isVideo || isDisplay) {\r\n const multiAdFormatAdPanels = {\r\n advancedPanels: [\r\n 'third-party-measurement',\r\n ],\r\n };\r\n\r\n if (isVideo && serverContext.DynamicPermissions.AdvancedURLOptionsForVideo) {\r\n multiAdFormatAdPanels.advancedPanels.push('advanced-url-options');\r\n }\r\n\r\n if (isDisplay && serverContext.DynamicPermissions.AdvancedURLOptionsForDisplay) {\r\n multiAdFormatAdPanels.advancedPanels.push('advanced-url-options');\r\n }\r\n\r\n if (serverContext.Permissions.isImpressionTrackingForDisplayAndVideoEnabled) {\r\n multiAdFormatAdPanels.advancedPanels.push('impression-tracking-URLs');\r\n }\r\n\r\n return multiAdFormatAdPanels;\r\n }\r\n\r\n const panels = {\r\n basicPanels: [\r\n 'images',\r\n 'business-name',\r\n 'text',\r\n ],\r\n advancedPanels: [\r\n 'mobile-final-url',\r\n 'advanced-url-options',\r\n 'impression-tracking-URLs',\r\n 'third-party-measurement',\r\n 'ads-optimization',\r\n ],\r\n };\r\n\r\n if (serverContext.DynamicPermissions.VideoAsAnAsset && !serverContext.Permissions.IsAmplifyEnabled) {\r\n panels.basicPanels.push('videos');\r\n }\r\n\r\n if (serverContext.Permissions.IsAmplifyEnabled && serverContext.DynamicPermissions.DisplayPlusAmplify) {\r\n panels.basicPanels.push('logos');\r\n panels.basicPanels.push('hotspot-panel');\r\n panels.basicPanels.push('portrait-images');\r\n\r\n panels.advancedPanels.push('anchor-ad');\r\n panels.advancedPanels.push('call-to-action');\r\n } else if (serverContext.Permissions.IsMSANLogoAndCTAForMMAEnabled) {\r\n panels.basicPanels.push('logos', 'call-to-action');\r\n }\r\n\r\n if (serverContext.Permissions.IsMSANDisclaimerEnabled &&\r\n !serverContext.Permissions.IsDomesticSimplifiedChineseEnabled) {\r\n panels.advancedPanels.push('disclaimer');\r\n }\r\n\r\n return panels;\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { ValidatedLegacyCallToAction } from '@bingads-webui-campaign-react/legacy-call-to-action';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nconst getStyles = () => ({\r\n container: {\r\n height: '100%',\r\n '& #language-cta-boost': {\r\n position: 'relative',\r\n marginBottom: '10px',\r\n },\r\n '& #cta-boost': {\r\n position: 'relative',\r\n marginBottom: '10px',\r\n },\r\n },\r\n});\r\n\r\nexport const ValidatedCallToAction = ({\r\n data,\r\n ...rest\r\n}) => {\r\n const classes = useDefaultStyles(getStyles);\r\n\r\n const {\r\n languageValue,\r\n value,\r\n ctaText,\r\n ctaAriaText,\r\n } = data;\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nValidatedCallToAction.propTypes = {\r\n data: PropTypes.shape({\r\n languageValue: PropTypes.string,\r\n value: PropTypes.string,\r\n ctaText: PropTypes.string,\r\n ctaAriaText: PropTypes.string,\r\n }).isRequired,\r\n};\r\n\r\n","import React, { useEffect, useMemo, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _, { noop } from 'underscore';\r\nimport classNames from 'classnames';\r\nimport { withCustomValidation } from '@bingads-webui-react/validation';\r\nimport {\r\n useDefaultStyles,\r\n withDefaultStyles,\r\n} from '@bingads-webui-react/with-default-styles';\r\nimport { ImpressionTrackingUrlOptions as ImpressionTrackingView } from '@bingads-webui-campaign/audience-campaign-shared';\r\nimport { mergeI18n } from '@bingads-webui-campaign-react/i18n-merger';\r\nimport { adEditorOverrideStyle } from '@bingads-webui-campaign-react/ad-editor-styles';\r\n\r\nconst getTopGridPanelCustomStyles = (__, palette, iconFontFamily) =>\r\n Object.assign({}, adEditorOverrideStyle({ palette, iconFontFamily }));\r\n\r\nconst extractImpressionTrackingSetting = (impressionTrackingUrls) => {\r\n if (_.isArray(impressionTrackingUrls)) {\r\n return impressionTrackingUrls;\r\n }\r\n return ['', ''];\r\n};\r\n\r\nexport const formatImpressionTrackingSetting = (\r\n impressionTrackingUrls,\r\n i18n\r\n) => {\r\n const [firstUrl, secondUrl] = extractImpressionTrackingSetting(impressionTrackingUrls);\r\n\r\n const getImpressionTrackingComponent = url => (\r\n
    \r\n {i18n.getString(_TL_('Impression tracking URL: ')) +\r\n (!url || url === '' ? i18n.getString(_TL_('None')) : url)}\r\n
    \r\n );\r\n\r\n return (\r\n
    \r\n {getImpressionTrackingComponent(firstUrl)}\r\n {getImpressionTrackingComponent(secondUrl)}\r\n
    \r\n );\r\n};\r\n\r\nconst ImpressionTrackingSetting = ({\r\n i18n,\r\n impressionTrackingUrls,\r\n updateValidation,\r\n}) => {\r\n const classes = useDefaultStyles();\r\n\r\n const [\r\n impressionTrackingSettingRef,\r\n setImpressionTrackingSettingRef,\r\n ] = useState();\r\n\r\n useEffect(() => {\r\n updateValidation([], { ImpressionTrackingUrls: impressionTrackingUrls });\r\n }, [impressionTrackingUrls, updateValidation]);\r\n\r\n const legacyI18n = useMemo(\r\n () => window.globalLegacyI18n.get('$/i18n!legacy/global'),\r\n []\r\n );\r\n const i18nMerged = useMemo(() => mergeI18n(legacyI18n, i18n), [\r\n legacyI18n,\r\n i18n,\r\n ]);\r\n\r\n const impressionTrackingViewReact = useMemo(\r\n () => {\r\n const impressionTrackingView = new ImpressionTrackingView({\r\n i18n: i18nMerged,\r\n initialImpressionTrackingUrls: impressionTrackingUrls,\r\n isIASSectionVisible: false,\r\n isVerticalUrlInput: true,\r\n });\r\n\r\n impressionTrackingView.render();\r\n\r\n return impressionTrackingView;\r\n },\r\n [impressionTrackingUrls, i18nMerged]\r\n );\r\n\r\n useEffect(\r\n () => {\r\n if (impressionTrackingSettingRef) {\r\n impressionTrackingSettingRef.innerHTML = '';\r\n impressionTrackingSettingRef.append(impressionTrackingViewReact.el);\r\n\r\n impressionTrackingViewReact.on('InputChange', (value) => {\r\n updateValidation([], {\r\n ImpressionTrackingUrls: value,\r\n });\r\n });\r\n }\r\n\r\n return noop;\r\n },\r\n [\r\n impressionTrackingSettingRef,\r\n impressionTrackingViewReact,\r\n updateValidation,\r\n ]\r\n );\r\n\r\n return (\r\n \r\n
    \r\n {i18n.getString(_TL_('Set up the third-party impression tracking information for your ads.'))}\r\n
    \r\n setImpressionTrackingSettingRef(newRef)}\r\n />\r\n \r\n );\r\n};\r\n\r\nImpressionTrackingSetting.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n impressionTrackingUrls: PropTypes.shape(PropTypes.string).isRequired,\r\n updateValidation: PropTypes.func.isRequired,\r\n};\r\n\r\nconst validatedImpressionTrackingSetting = withDefaultStyles(\r\n withCustomValidation(ImpressionTrackingSetting),\r\n getTopGridPanelCustomStyles\r\n);\r\n\r\nexport { validatedImpressionTrackingSetting as ImpressionTrackingSetting };\r\n","import React from 'react';\r\n\r\nexport const disclaimerInfo = i18n => (\r\n
    \r\n {i18n.getString(_TL_('This is a campaign-level disclaimer that will only serve in your Native ads.'))}\r\n
    \r\n);\r\n\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { withCustomValidation, withError } from '@bingads-webui-react/validation';\r\nimport { withUnvalidatedControlErrors, withControlErrorHandling } from '@bingads-webui-campaign-react/error-handling';\r\nimport { BoostAnchors } from '@bingads-webui-campaign-react/responsive-ad-editor-components';\r\n\r\nconst ValidatedAnchorAdInternal = ({\r\n validationProps,\r\n updateValidation,\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n const { data = {} } = validationProps;\r\n\r\n const { BoostAnchors: BoostAnchorsData } = data;\r\n\r\n const onUpdate = (result) => {\r\n updateValidation([], { BoostAnchors: result });\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nValidatedAnchorAdInternal.propTypes = {\r\n validationProps: PropTypes.shape({\r\n data: PropTypes.shape({\r\n BoostAnchors: PropTypes.string,\r\n }),\r\n }).isRequired,\r\n updateValidation: PropTypes.func.isRequired,\r\n};\r\n\r\nexport const ValidatedAnchorAd = withCustomValidation(withUnvalidatedControlErrors(withControlErrorHandling(withError(ValidatedAnchorAdInternal))));\r\n\r\n","import React, { useMemo, useContext, useState, useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { first, get } from 'underscore';\r\nimport { Panel as BootstrapPanel } from 'react-bootstrap';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport {\r\n Collapse,\r\n useCollapseState,\r\n ValidatedBootstrapPanel,\r\n ValidatedPanel,\r\n ValidatedFixedPanel,\r\n TextTitle,\r\n getPanelErrorProps,\r\n collapseExpander,\r\n} from '@bingads-webui-campaign/wizard-jumbo-card';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { propertyIs } from '@bingads-webui-campaign-react/form-error';\r\nimport { withControlErrorHandling, withUnvalidatedControlErrors } from '@bingads-webui-campaign-react/error-handling';\r\nimport { ValidatedUrlOptionsParameter, ValidatedMobileUrlWithoutCheckbox as ValidatedMobileUrl } from '@bingads-webui-campaign-react/validated-url-input';\r\nimport { getUrlOptionsDetails } from '@bingads-webui-campaign-react/url-options';\r\nimport { isEmptyUrl } from '@bingads-webui-campaign-react/url-input-fluent';\r\nimport { ThirdPartyMeasurementWithValidation, ThirdPartyMeasurementV2WithValidation, formatThirdPartyMeasurementSetting } from '@bingads-webui-campaign-react/third-party-measurement';\r\nimport MobileFinalUrlImg from '../media/mobile-url.svg';\r\nimport UrlOptionsImg from '../media/campaign-url-options.svg';\r\nimport ImpressionsTracking from '../media/impressions-tracking.svg';\r\nimport CallToActionImg from '../media/call-to-action.svg';\r\nimport ConnectedImage from '../media/connected.svg';\r\nimport Disclaimer from '../media/disclaimer.svg';\r\nimport { getNativeAdsStyles } from '../styles';\r\nimport { getNativeAdPanels } from '../configs';\r\nimport { ValidatedCallToAction } from './validated-call-to-action';\r\nimport { ImpressionTrackingSetting, formatImpressionTrackingSetting } from './impressions-tracking';\r\nimport { disclaimerInfo } from './disclaimer';\r\nimport { ValidatedAnchorAd } from './validated-anchor-ad';\r\n\r\nexport const getFinalUrlCardSummaryDetails = (i18n, finalUrls) => (isEmptyUrl(finalUrls) ? i18n.getString(_TL_('No URL')) : first(finalUrls));\r\n\r\nconst nativeAdMobileFinalUrlsProp = propertyIs('MobileFinalUrls');\r\nconst ServerValidatedMobileFinalUrl = withControlErrorHandling(withUnvalidatedControlErrors(ValidatedMobileUrl, { filter: nativeAdMobileFinalUrlsProp }));\r\n\r\nconst impressionTrackingSettingsProp = propertyIs('ImpressionTrackingUrls');\r\nconst ValidatedImpressionTrackingSetting = withControlErrorHandling(withUnvalidatedControlErrors(ImpressionTrackingSetting, { filter: impressionTrackingSettingsProp }));\r\n\r\nexport const AdvancedSettings = ({\r\n mobileFinalUrls,\r\n trackingUrlTemplate,\r\n finalUrlSuffix,\r\n urlCustomParameters,\r\n impressionTrackingUrls,\r\n verifiedTrackingSettings,\r\n biddingScheme,\r\n CallToAction,\r\n CallToActionText,\r\n CallToActionAriaText,\r\n setNewCTACallback,\r\n BoostAnchors,\r\n isDisplay,\r\n isVideo,\r\n shouldShowDisclaimerPanel,\r\n}) => {\r\n const i18n = useContext(I18nContext);\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 classes = useDefaultStyles(getNativeAdsStyles);\r\n\r\n const [\r\n allAdvancedSettingsSections,\r\n advancedSettingsExpandedSections,\r\n setAdvancedSettingsExpandedSections,\r\n ] = useCollapseState(\r\n getNativeAdPanels(serverContext, isVideo, isDisplay).advancedPanels /* all sections */,\r\n [] /* initially expanded sections */\r\n );\r\n\r\n const isThirdPartyMeasurementEnabled = useMemo(() => {\r\n // If is video but biddng scheme is CPV, then return false\r\n if (isVideo && get(biddingScheme, 'Type') === 'ManualCpv') {\r\n return false;\r\n }\r\n\r\n return true;\r\n }, [biddingScheme, isVideo]);\r\n\r\n const verifiedTrackingSettingsValidationProps = useMemo(() => ({\r\n data: {\r\n VerifiedTrackingSettings: verifiedTrackingSettings,\r\n },\r\n initialValue: {\r\n VerifiedTrackingSettings: verifiedTrackingSettings,\r\n },\r\n }), [verifiedTrackingSettings]);\r\n\r\n const allAdvancedSettingsExpand = useMemo(\r\n () => collapseExpander({ setActiveKeys: setAdvancedSettingsExpandedSections }),\r\n [setAdvancedSettingsExpandedSections]\r\n );\r\n\r\n const [advancedSettingsSectionExpanded, setAdvancedSettingsSectionExpanded] = useState(false);\r\n const onAdvancedSettingsSectionToggle = useCallback((expanded) => {\r\n setAdvancedSettingsSectionExpanded(expanded);\r\n }, []);\r\n\r\n const mobileFinalUrlValidationProps = useMemo(() => ({\r\n data: {\r\n MobileFinalUrls: mobileFinalUrls,\r\n },\r\n initialValue: {\r\n MobileFinalUrls: mobileFinalUrls,\r\n },\r\n }), [mobileFinalUrls]);\r\n\r\n const urlOptions = useMemo(() => ({\r\n TrackingUrlTemplate: trackingUrlTemplate,\r\n FinalUrlSuffix: finalUrlSuffix,\r\n UrlCustomParameters: urlCustomParameters,\r\n }), [trackingUrlTemplate, finalUrlSuffix, urlCustomParameters]);\r\n const urlOptionsDetails = useMemo(() => getUrlOptionsDetails(i18n, urlOptions), [urlOptions, i18n]);\r\n\r\n const mobileFinalUrlDetails = useMemo(() => (isEmptyUrl(mobileFinalUrls) ? i18n.getString(_TL_('Mobile URL: None')) : first(mobileFinalUrls)), [i18n, mobileFinalUrls]);\r\n\r\n const serverValidatedMobileFinalUrl = useMemo(() => (\r\n \r\n ), [i18n, mobileFinalUrlValidationProps, permissions]);\r\n\r\n const validatedUrlOptionsParameter = useMemo(() => (\r\n \r\n ), [i18n, urlOptions]);\r\n\r\n const validatedImpressionTrackingSetting = useMemo(() => (\r\n \r\n ), [i18n, impressionTrackingUrls]);\r\n\r\n const thirdPartyMeasurementWithValidation = useMemo(() => {\r\n const ThirdPartyMeasurementComponentWithValidation =\r\n get(permissions, 'IsMOATEnabled', false) ? ThirdPartyMeasurementV2WithValidation : ThirdPartyMeasurementWithValidation;\r\n let adType = 'native';\r\n if (isDisplay) {\r\n adType = 'display';\r\n } else if (isVideo) {\r\n adType = 'video';\r\n }\r\n return (\r\n \r\n );\r\n }, [i18n, verifiedTrackingSettingsValidationProps, permissions, isDisplay, isVideo]);\r\n\r\n const callToAction = useMemo(() => (\r\n \r\n ), [CallToAction, CallToActionText, i18n, permissions, setNewCTACallback, CallToActionAriaText]);\r\n\r\n const anchorAd = useMemo(() => (\r\n \r\n ), [BoostAnchors]);\r\n\r\n const advancedInputSections = () => (\r\n \r\n }\r\n attentionBeaconProps={{ getExtraProps: getPanelErrorProps }}\r\n actuationProps={{\r\n expand: allAdvancedSettingsExpand,\r\n expandKey: 'mobile-final-url',\r\n }}\r\n >\r\n {serverValidatedMobileFinalUrl}\r\n \r\n }\r\n noOverflowHidden\r\n relativePosition\r\n attentionBeaconProps={{ getExtraProps: getPanelErrorProps }}\r\n >\r\n {callToAction}\r\n \r\n }\r\n >\r\n {anchorAd}\r\n \r\n }\r\n attentionBeaconProps={{ getExtraProps: getPanelErrorProps }}\r\n actuationProps={{\r\n expand: allAdvancedSettingsExpand,\r\n expandKey: 'advanced-url-options',\r\n }}\r\n >\r\n \r\n {i18n.getString(_TL_('Set up the tracking and redirect information for your ads.'))}\r\n \r\n {validatedUrlOptionsParameter}\r\n \r\n }\r\n attentionBeaconProps={{ getExtraProps: getPanelErrorProps }}\r\n actuationProps={{\r\n expand: allAdvancedSettingsExpand,\r\n expandKey: 'impression-tracking-URLs',\r\n }}\r\n >\r\n {validatedImpressionTrackingSetting}\r\n \r\n {\r\n isThirdPartyMeasurementEnabled && (\r\n }\r\n attentionBeaconProps={{ getExtraProps: getPanelErrorProps }}\r\n actuationProps={{\r\n expand: allAdvancedSettingsExpand,\r\n expandKey: 'third-party-measurement',\r\n }}\r\n >\r\n
    \r\n {thirdPartyMeasurementWithValidation}\r\n
    \r\n \r\n )\r\n }\r\n {shouldShowDisclaimerPanel && (\r\n }\r\n attentionBeaconProps={{ getExtraProps: getPanelErrorProps }}\r\n >\r\n {disclaimerInfo(i18n)}\r\n \r\n )}\r\n
    \r\n );\r\n\r\n return (\r\n <>\r\n (\r\n <>\r\n \r\n \r\n {i18n.getString(_TL_('Advanced settings'))}\r\n \r\n \r\n \r\n \r\n
    \r\n {advancedInputSections()}\r\n
    \r\n
    \r\n
    \r\n \r\n )}\r\n />\r\n \r\n );\r\n};\r\n\r\nAdvancedSettings.propTypes = {\r\n finalUrlSuffix: PropTypes.string,\r\n impressionTrackingUrls: PropTypes.arrayOf(PropTypes.string),\r\n mobileFinalUrls: PropTypes.string,\r\n trackingUrlTemplate: PropTypes.string,\r\n urlCustomParameters: PropTypes.arrayOf(PropTypes.shape({})),\r\n verifiedTrackingSettings: PropTypes.shape({}),\r\n biddingScheme: PropTypes.string,\r\n CallToAction: PropTypes.shape({\r\n language: PropTypes.string,\r\n cta: PropTypes.string,\r\n }),\r\n CallToActionText: PropTypes.string,\r\n CallToActionAriaText: PropTypes.string,\r\n BoostAnchors: PropTypes.shape({}),\r\n setNewCTACallback: PropTypes.func,\r\n isDisplay: PropTypes.bool,\r\n isVideo: PropTypes.bool,\r\n shouldShowDisclaimerPanel: PropTypes.bool,\r\n};\r\n\r\nAdvancedSettings.defaultProps = {\r\n finalUrlSuffix: undefined,\r\n mobileFinalUrls: undefined,\r\n trackingUrlTemplate: undefined,\r\n urlCustomParameters: undefined,\r\n impressionTrackingUrls: undefined,\r\n verifiedTrackingSettings: undefined,\r\n biddingScheme: null,\r\n CallToAction: null,\r\n CallToActionText: undefined,\r\n CallToActionAriaText: undefined,\r\n BoostAnchors: undefined,\r\n setNewCTACallback: null,\r\n isDisplay: false,\r\n isVideo: false,\r\n shouldShowDisclaimerPanel: false,\r\n};\r\n","import _, { map } from 'underscore';\r\nimport React, { useContext, useEffect, useState, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withCustomValidation } from '@bingads-webui-react/validation';\r\nimport { RecommendationContext } from '@bingads-webui-campaign-react/perf-max-recommendation';\r\nimport { TextAssetCollectionWithRecommendations, getTextAssetCollectionConfig, getTextAssetCollectionConfigByFeature } from '@bingads-webui-campaign-react/pmax-text-input';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PermissionsContext } from '@bingads-webui-react/hoc-with-permissions';\r\n\r\nconst HeadlinesWithRecommendationPrefillInternal = (props) => {\r\n const {\r\n currentData,\r\n withInlineRecommendations,\r\n updateValidation,\r\n isAudienceAd,\r\n } = props;\r\n const i18n = useContext(I18nContext);\r\n const permissions = useContext(PermissionsContext);\r\n const textAssetCollectionConfig = useMemo(() => getTextAssetCollectionConfigByFeature({ featureName: 'displayPlus' }), []);\r\n\r\n const headlineConfig = useMemo(() => getTextAssetCollectionConfig('headlines', i18n, textAssetCollectionConfig), [i18n, textAssetCollectionConfig]);\r\n const [recommendationContext] = useContext(RecommendationContext);\r\n\r\n const headlinesRecommendationText = useMemo(() =>\r\n recommendationContext && recommendationContext.headlines && map(recommendationContext.headlines, rec => rec.Text), [recommendationContext]);\r\n const [prevHeadlineRecommendation, setPrevHeadlineRecommendation] = useState();\r\n\r\n useEffect(() => {\r\n if (headlinesRecommendationText && _.isArray(headlinesRecommendationText) && !_.isEmpty(headlinesRecommendationText) &&\r\n currentData && currentData.Headline0 === '') {\r\n if (prevHeadlineRecommendation &&\r\n (headlinesRecommendationText[0] === prevHeadlineRecommendation[0])) {\r\n return;\r\n }\r\n\r\n setPrevHeadlineRecommendation(headlinesRecommendationText);\r\n currentData.Headline0 = (headlinesRecommendationText && headlinesRecommendationText[0]) || '';\r\n updateValidation([], {\r\n Headlines: currentData,\r\n });\r\n }\r\n }, [prevHeadlineRecommendation, headlinesRecommendationText, currentData, updateValidation]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nHeadlinesWithRecommendationPrefillInternal.propTypes = {\r\n cancelFetchRecommendationAssetsJob: PropTypes.func.isRequired,\r\n fetchRecommendationAssets: PropTypes.func.isRequired,\r\n withInlineRecommendations: PropTypes.bool.isRequired,\r\n currentData: PropTypes.shape({\r\n Headline0: PropTypes.string,\r\n Headline1: PropTypes.string,\r\n }).isRequired,\r\n textAssetConfig: PropTypes.shape({\r\n descriptions: PropTypes.shape({}),\r\n }).isRequired,\r\n updateValidation: PropTypes.func.isRequired,\r\n isAudienceAd: PropTypes.bool,\r\n};\r\n\r\nHeadlinesWithRecommendationPrefillInternal.defaultProps = {\r\n isAudienceAd: false,\r\n};\r\n\r\nexport const HeadlinesWithRecommendationPrefill = withCustomValidation(HeadlinesWithRecommendationPrefillInternal);\r\n","import _, { map } from 'underscore';\r\nimport React, { useContext, useEffect, useState, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withCustomValidation } from '@bingads-webui-react/validation';\r\nimport { RecommendationContext } from '@bingads-webui-campaign-react/perf-max-recommendation';\r\nimport { TextAssetCollectionWithRecommendations, getTextAssetCollectionConfig, getTextAssetCollectionConfigByFeature } from '@bingads-webui-campaign-react/pmax-text-input';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PermissionsContext } from '@bingads-webui-react/hoc-with-permissions';\r\n\r\nconst LongHeadlinesWithRecommendationPrefillInternal = (props) => {\r\n const {\r\n currentData,\r\n withInlineRecommendations,\r\n updateValidation,\r\n } = props;\r\n const [recommendationContext] = useContext(RecommendationContext);\r\n const i18n = useContext(I18nContext);\r\n const permissions = useContext(PermissionsContext);\r\n const textAssetCollectionConfig = useMemo(() => getTextAssetCollectionConfigByFeature({ featureName: 'displayPlus' }), []);\r\n\r\n const longHeadlineConfig = useMemo(() => getTextAssetCollectionConfig('longHeadlines', i18n, textAssetCollectionConfig), [i18n, textAssetCollectionConfig]);\r\n\r\n const longHeadlinesRecommendationText = useMemo(() =>\r\n recommendationContext && recommendationContext.longHeadlines && map(recommendationContext.longHeadlines, rec => rec.Text), [recommendationContext]);\r\n const [prevLongHeadlineRecommendation, setPrevLongHeadlineRecommendation] = useState();\r\n\r\n useEffect(() => {\r\n if (longHeadlinesRecommendationText && _.isArray(longHeadlinesRecommendationText) && !_.isEmpty(longHeadlinesRecommendationText) &&\r\n currentData && currentData.LongHeadline0 === '') {\r\n if (prevLongHeadlineRecommendation && longHeadlinesRecommendationText[0] === prevLongHeadlineRecommendation[0]) {\r\n return;\r\n }\r\n\r\n setPrevLongHeadlineRecommendation(longHeadlinesRecommendationText);\r\n currentData.LongHeadline0 = (longHeadlinesRecommendationText && longHeadlinesRecommendationText[0]) || '';\r\n updateValidation([], {\r\n LongHeadlines: currentData,\r\n });\r\n }\r\n }, [prevLongHeadlineRecommendation, longHeadlinesRecommendationText, currentData, updateValidation]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nLongHeadlinesWithRecommendationPrefillInternal.propTypes = {\r\n cancelFetchRecommendationAssetsJob: PropTypes.func.isRequired,\r\n fetchRecommendationAssets: PropTypes.func.isRequired,\r\n withInlineRecommendations: PropTypes.bool.isRequired,\r\n currentData: PropTypes.shape({\r\n LongHeadline0: PropTypes.string,\r\n }).isRequired,\r\n textAssetConfig: PropTypes.shape({\r\n descriptions: PropTypes.shape({}),\r\n }).isRequired,\r\n updateValidation: PropTypes.func.isRequired,\r\n};\r\n\r\nexport const LongHeadlinesWithRecommendationPrefill = withCustomValidation(LongHeadlinesWithRecommendationPrefillInternal);\r\n","import _, { map } from 'underscore';\r\nimport React, { useContext, useEffect, useState, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withCustomValidation } from '@bingads-webui-react/validation';\r\nimport { RecommendationContext } from '@bingads-webui-campaign-react/perf-max-recommendation';\r\nimport { TextAssetCollectionWithRecommendations, getTextAssetCollectionConfig, getTextAssetCollectionConfigByFeature } from '@bingads-webui-campaign-react/pmax-text-input';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PermissionsContext } from '@bingads-webui-react/hoc-with-permissions';\r\n\r\nconst DescriptionsWithRecommendationPrefillInternal = (props) => {\r\n const {\r\n currentData,\r\n withInlineRecommendations,\r\n updateValidation,\r\n } = props;\r\n\r\n const [recommendationContext] = useContext(RecommendationContext);\r\n const i18n = useContext(I18nContext);\r\n const permissions = useContext(PermissionsContext);\r\n const textAssetCollectionConfig = useMemo(() => getTextAssetCollectionConfigByFeature({ featureName: 'displayPlus' }), []);\r\n\r\n const descriptionsConfig = useMemo(() => getTextAssetCollectionConfig('descriptions', i18n, textAssetCollectionConfig), [i18n, textAssetCollectionConfig]);\r\n\r\n\r\n const descriptionsRecommendationText = useMemo(() =>\r\n recommendationContext && recommendationContext.descriptions && map(recommendationContext.descriptions, rec => rec.Text), [recommendationContext]);\r\n const [prevDescriptionRecommendation, setPrevDescriptionRecommendation] = useState();\r\n\r\n useEffect(() => {\r\n if (descriptionsRecommendationText && _.isArray(descriptionsRecommendationText) && !_.isEmpty(descriptionsRecommendationText) &&\r\n currentData && currentData.Description0 === '') {\r\n if (prevDescriptionRecommendation && descriptionsRecommendationText[0] === prevDescriptionRecommendation[0]) {\r\n return;\r\n }\r\n\r\n setPrevDescriptionRecommendation(descriptionsRecommendationText);\r\n currentData.Description0 = (descriptionsRecommendationText && descriptionsRecommendationText[0]) || '';\r\n updateValidation([], {\r\n Descriptions: currentData,\r\n });\r\n }\r\n }, [prevDescriptionRecommendation, descriptionsRecommendationText, currentData, updateValidation]);\r\n\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nDescriptionsWithRecommendationPrefillInternal.propTypes = {\r\n cancelFetchRecommendationAssetsJob: PropTypes.func.isRequired,\r\n fetchRecommendationAssets: PropTypes.func.isRequired,\r\n withInlineRecommendations: PropTypes.bool.isRequired,\r\n currentData: PropTypes.shape({\r\n Description0: PropTypes.string,\r\n }).isRequired,\r\n textAssetConfig: PropTypes.shape({\r\n descriptions: PropTypes.shape({}),\r\n }).isRequired,\r\n updateValidation: PropTypes.func.isRequired,\r\n};\r\n\r\nexport const DescriptionsWithRecommendationPrefill = withCustomValidation(DescriptionsWithRecommendationPrefillInternal);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { HeadlinesWithRecommendationPrefill } from './headlines-with-recommendation-prefill';\r\nimport { LongHeadlinesWithRecommendationPrefill } from './long-headlines-with-recommendation-prefill';\r\nimport { DescriptionsWithRecommendationPrefill } from './descriptions-with-recommendation-prefill';\r\n\r\nconst TextAssetCollectionWithRecommendationPrefillInternal = (props) => {\r\n const {\r\n validationProps,\r\n withInlineRecommendations,\r\n fetchRecommendationAssets,\r\n cancelFetchRecommendationAssetsJob,\r\n isAudienceAd,\r\n } = props;\r\n\r\n const { data } = validationProps;\r\n const currentHeadlines = (data && data.Headlines) || '';\r\n const currentLongHeadlines = (data && data.LongHeadlines) || '';\r\n const currentDescriptions = (data && data.Descriptions) || '';\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nTextAssetCollectionWithRecommendationPrefillInternal.propTypes = {\r\n cancelFetchRecommendationAssetsJob: PropTypes.func.isRequired,\r\n fetchRecommendationAssets: PropTypes.func.isRequired,\r\n withInlineRecommendations: PropTypes.bool.isRequired,\r\n textAssetConfig: PropTypes.shape({\r\n headlines: PropTypes.shape({}),\r\n longHeadlines: PropTypes.shape({}),\r\n descriptions: PropTypes.shape({}),\r\n }),\r\n validationProps: PropTypes.shape({\r\n data: PropTypes.shape({\r\n Headlines: PropTypes.shape({}),\r\n LongHeadlines: PropTypes.shape({}),\r\n Descriptions: PropTypes.shape({}),\r\n }),\r\n }),\r\n isAudienceAd: PropTypes.bool.isRequired,\r\n};\r\n\r\nTextAssetCollectionWithRecommendationPrefillInternal.defaultProps = {\r\n textAssetConfig: {\r\n headlines: {},\r\n longHeadlines: {},\r\n descriptions: {},\r\n },\r\n validationProps: {\r\n data: {\r\n Headlines: {},\r\n LongHeadlines: {},\r\n Descriptions: {},\r\n },\r\n },\r\n};\r\n\r\nexport const TextAssetCollectionWithRecommendationPrefill = TextAssetCollectionWithRecommendationPrefillInternal;\r\n","import React, { useMemo, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport {\r\n HeadlineAssetCollection,\r\n LongHeadlineAssetCollection,\r\n DescriptionAssetCollection,\r\n} from '@bingads-webui-campaign-react/pmax-text-input';\r\nimport { PermissionsContext } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { withCustomValidation } from '@bingads-webui-react/validation';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getImageExperienceStyles } from '../../styles';\r\n\r\nconst TextAssetCollectionWithCoPilotInternal = (props) => {\r\n const {\r\n fetchRecommendationAssets,\r\n cancelFetchRecommendationAssetsJob,\r\n setAddNewShortHeadlinesCallback,\r\n setAddNewLongHeadlinesCallback,\r\n setAddNewDescriptionCallback,\r\n isAudienceAd,\r\n } = props;\r\n\r\n const classes = useDefaultStyles(getImageExperienceStyles);\r\n const permissions = useContext(PermissionsContext);\r\n\r\n const headlineAssetCollection = useMemo(() => (\r\n \r\n ), [fetchRecommendationAssets, cancelFetchRecommendationAssetsJob, permissions.dynamic.DisplayPlusCopilotRecommendations, setAddNewShortHeadlinesCallback, isAudienceAd]);\r\n\r\n const longHeadlineAssetCollection = useMemo(() => (\r\n \r\n ), [fetchRecommendationAssets, cancelFetchRecommendationAssetsJob, permissions.dynamic.DisplayPlusCopilotRecommendations, setAddNewLongHeadlinesCallback]);\r\n\r\n const descriptionAssetCollection = useMemo(() => (\r\n \r\n ), [fetchRecommendationAssets, cancelFetchRecommendationAssetsJob, permissions.dynamic.DisplayPlusCopilotRecommendations, setAddNewDescriptionCallback]);\r\n\r\n return (\r\n
    \r\n {headlineAssetCollection}\r\n {longHeadlineAssetCollection}\r\n {descriptionAssetCollection}\r\n
    \r\n );\r\n};\r\n\r\nTextAssetCollectionWithCoPilotInternal.propTypes = {\r\n fetchRecommendationAssets: PropTypes.func.isRequired,\r\n cancelFetchRecommendationAssetsJob: PropTypes.func.isRequired,\r\n setAddNewShortHeadlinesCallback: PropTypes.func.isRequired,\r\n setAddNewLongHeadlinesCallback: PropTypes.func.isRequired,\r\n setAddNewDescriptionCallback: PropTypes.func.isRequired,\r\n isAudienceAd: PropTypes.bool,\r\n};\r\n\r\nTextAssetCollectionWithCoPilotInternal.defaultProps = {\r\n isAudienceAd: false,\r\n};\r\n\r\nexport const TextAssetCollectionWithCoPilot = withCustomValidation(TextAssetCollectionWithCoPilotInternal);\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { isEmpty, any, uniq } from 'underscore';\r\nimport { HotspotPanel } from '@bingads-webui-campaign-react/responsive-ad-editor-components';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { withCustomValidation, withError } from '@bingads-webui-react/validation';\r\nimport { withUnvalidatedControlErrors, withControlErrorHandling } from '@bingads-webui-campaign-react/error-handling';\r\nimport { entityIs, andComp, propertyIs } from '@bingads-webui-campaign-react/form-error';\r\nimport { ERROR_ENTITY } from '../constants';\r\n\r\nconst nativeAdHotspotsProp = andComp(entityIs(ERROR_ENTITY.Ad), propertyIs('Uri'));\r\n\r\nconst ValidatedHotspotInternal = ({\r\n updateValidation,\r\n validationProps,\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n const { data = {} } = validationProps;\r\n\r\n const { hotspots } = data;\r\n\r\n const validateHotSpot = (newHostpots) => {\r\n const missField = newHostpots.map(i =>\r\n isEmpty(i.glyph) || isEmpty(i.title) || isEmpty(i.actionText) || isEmpty(i.uri) ||\r\n (isEmpty(i.placement)));\r\n\r\n if (any(missField)) {\r\n return [i18n.getString(_TL_('HotSpot missing required field'))];\r\n }\r\n\r\n // check if any duplicate hotspot\r\n const hotspotStrings = newHostpots.map(hotspot => hotspot.title + hotspot.actionText + hotspot.desc + hotspot.uri + hotspot.glyph);\r\n\r\n if (newHostpots.length !== uniq(hotspotStrings).length) {\r\n return [i18n.getString(_TL_('HotSpots duplication'))];\r\n }\r\n\r\n return [];\r\n };\r\n\r\n const onUpdateHotspots = (newHostpots) => {\r\n updateValidation(validateHotSpot(newHostpots), { hotspots: [...newHostpots] });\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nValidatedHotspotInternal.propTypes = {\r\n updateValidation: PropTypes.func.isRequired,\r\n validationProps: PropTypes.shape({\r\n data: PropTypes.shape({\r\n hotspots: PropTypes.shape({}),\r\n }),\r\n }).isRequired,\r\n};\r\n\r\nexport const ValidatedHotspot = withControlErrorHandling(withUnvalidatedControlErrors(\r\n withError(withCustomValidation(ValidatedHotspotInternal)),\r\n { filter: nativeAdHotspotsProp }\r\n));\r\n","export const getMultiAdVideoPreviewStyles = (/* components, theme */) => ({\r\n adPreviewTitle: {\r\n fontSize: 18,\r\n fontWeight: 600,\r\n },\r\n previewContainer: {\r\n height: 280,\r\n width: '100%',\r\n },\r\n adPreviewHeader: {\r\n height: 40,\r\n },\r\n adPreviewRoot: {\r\n maxWidth: '540px',\r\n width: '100%',\r\n padding: 20,\r\n paddingBottom: 20,\r\n position: 'sticky',\r\n top: '0px',\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n },\r\n video: {\r\n borderRadius: '6px',\r\n height: 280,\r\n width: '100%',\r\n filter: 'drop-shadow(0px 0.6px 1.8px rgba(0, 0, 0, 0.1)) drop-shadow(0px 3.2px 7.2px rgba(0, 0, 0, 0.13))',\r\n },\r\n previewTag: {\r\n marginTop: 10,\r\n },\r\n});\r\n","import React, { useRef, useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { ClipchampPlayer } from '@bingads-webui-campaign-react/clipchamp-player';\r\nimport { getMultiAdVideoPreviewStyles } from '../styles/multi-ad-video-preview-styles';\r\n\r\nexport const MultiAdVideoPreview = (props) => {\r\n const {\r\n i18n,\r\n data = { videos: [] },\r\n selectedVideoIdx = '',\r\n loadClipchampPlayer,\r\n permissions,\r\n } = props;\r\n\r\n const [selectedVideo, setSelectedVideo] = useState(null);\r\n const videoRef = useRef();\r\n\r\n useEffect(() => {\r\n if (data.videos && selectedVideoIdx !== '') {\r\n const video = data.videos[selectedVideoIdx];\r\n setSelectedVideo(video);\r\n } else {\r\n setSelectedVideo(null);\r\n }\r\n }, [data, selectedVideoIdx]);\r\n\r\n useEffect(() => {\r\n if (videoRef.current) {\r\n videoRef.current.load();\r\n }\r\n }, [selectedVideo]);\r\n\r\n const classes = useDefaultStyles(getMultiAdVideoPreviewStyles);\r\n const source = selectedVideo ? selectedVideo.src : '';\r\n const videoTemplateUIEnabled = permissions && permissions.dynamic && permissions.dynamic.VideoTemplateUI;\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n {i18n.getString(_TL_('Ad preview'))}\r\n \r\n
    \r\n
    \r\n {videoTemplateUIEnabled ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
    \r\n
    \r\n \r\n {i18n.getString(_TL_('This is an example of what your video ad might look like. Depending on placement, the actual ad shown may appear differently.'))}\r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nMultiAdVideoPreview.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n selectedVideoIdx: PropTypes.string,\r\n data: PropTypes.shape({\r\n data: PropTypes.instanceOf(Array),\r\n }).isRequired,\r\n};\r\n\r\nMultiAdVideoPreview.defaultProps = {\r\n selectedVideoIdx: null,\r\n};\r\n","import classNames from 'classnames';\r\nimport React, { useContext, useMemo, useRef, useState, useCallback, useEffect } from 'react';\r\nimport _, { noop, isArray, first, isEmpty } from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { mergeStyles } from '@fluentui/react';\r\nimport { Tab, TabList } from '@fluentui/react-components';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { withActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\n\r\nimport {\r\n Collapse,\r\n TextTitle,\r\n useCollapseState,\r\n ValidatedPanel,\r\n ValidatedFixedPanel,\r\n getPanelErrorProps,\r\n collapseExpander,\r\n} from '@bingads-webui-campaign/wizard-jumbo-card';\r\nimport { getFinalUrlCardSummaryDetails } from '@bingads-webui-campaign-react/validated-url-input';\r\nimport { withControlErrorHandling, withUnvalidatedControlErrors } from '@bingads-webui-campaign-react/error-handling';\r\nimport { withCustomValidation, withError } from '@bingads-webui-react/validation';\r\nimport { withFinalUrlRecommendationUpdate } from '@bingads-webui-campaign-react/perf-max-recommendation';\r\nimport { ValidatedLegacyCallToActionWithLanguage } from '@bingads-webui-campaign-react/legacy-call-to-action';\r\nimport {\r\n CopilotRepositoryProvider,\r\n withBannerService,\r\n} from '@bingads-webui/inline-copilot';\r\nimport { mergeI18n } from '@bingads-webui-campaign-react/i18n-merger';\r\nimport { entityIs, andComp, propertyIs } from '@bingads-webui-campaign-react/form-error';\r\nimport { useResponsiveStyles } from '@bingads-webui-campaign-react/common-hooks';\r\nimport {\r\n ValidatedFinalUrlWithRecommendations,\r\n ValidatedStoreBackedBusinessName,\r\n} from '@bingads-webui-campaign-react/pmax-text-input';\r\nimport { getODataConfig, ValidatedVideoExperienceWithRecommendationFetch } from '@bingads-webui-campaign-react/xandr-video-campaign-shared-components';\r\nimport { PerformanceMarkerContext } from '@bingads-webui-campaign-react/performance-marker-provider';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { InstrumentationContext } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\nimport { getTextCardSummaryDetails } from '@bingads-webui-campaign-react/validated-text-collection';\r\nimport {\r\n ImageListPortalContainerWithControlErrorHandling,\r\n ImageListSummaryCardDetails,\r\n ValidatedImageExperienceWrapper,\r\n PerfMaxAdPreview,\r\n PerfMaxAdPreviewUAPL,\r\n PerfMaxImageSuggestionCarousel,\r\n} from '@bingads-webui-campaign-react/pmax-image-experience';\r\nimport { AdPlacementsGroupType } from '@bingads-webui-campaign-react/ad-placement-consts';\r\nimport { useCopilot } from '@bingads-webui-campaign-react/copilot-experience';\r\nimport { DisclaimerAdExtension } from '@bingads-webui-campaign/campaign-ui-schemas';\r\nimport Repository from '@bingads-webui-campaign-legacy/adextension-shared/service/repository';\r\nimport { getAssetEnhancementSettings } from '@bingads-webui-campaign/image-experience-utils';\r\nimport { CampaignFetchProvider } from '@bingads-webui-campaign-react/campaign-http';\r\n\r\nimport { getImageExperienceStyles } from './styles';\r\nimport ImageAssetsImg from './media/image-assets.svg';\r\nimport VideoAssetsImg from './media/video-assets.svg';\r\nimport FinalUrlImg from './media/final-url.svg';\r\nimport LogoAssetsImg from './media/logo-assets.svg';\r\nimport BusinessNameImg from './media/business-name.svg';\r\nimport TextAssetsImg from './media/text.svg';\r\nimport hotspotImg from './media/hotspot.svg';\r\nimport CallToActionImg from './media/call-to-action.svg';\r\nimport { AdvancedSettings } from './components/advanced-settings';\r\nimport { TextAssetCollectionWithRecommendationPrefill } from './components/text-asset-collection-with-recommendation-prefill';\r\nimport { TextAssetCollectionWithCoPilot } from './components/text-asset-collection-with-copilot';\r\nimport {\r\n extraPlacementInfo,\r\n msanMMAConfig,\r\n msanMMAV2Config,\r\n responsiveMsanMMAConfig,\r\n responsiveMsanMMABoostConfigV2,\r\n msanMMABoostConfig,\r\n msanMMABoostConfigV2,\r\n responsiveMsanMMABoostConfig,\r\n AdPreviewOverideStylesByKey,\r\n ERROR_ENTITY,\r\n} from './constants';\r\nimport { getNativeAdPanels } from './configs';\r\nimport { ValidatedHotspot } from './components/validated-hotspot';\r\nimport { MultiAdVideoPreview } from './components/multi-ad-video-preview';\r\n\r\nconst DisplayPlusMaxImageCount = 16;\r\nconst DisplayPlusMaxVideoCount = 5;\r\n\r\nconst TAB_IMAGE_ADS = 'imageAds';\r\nconst TAB_VIDEO_ADS = 'videoAds';\r\n\r\nconst videoTypesWithOrder = ['VideoMedia16X9'];\r\n\r\nconst advancedSettingsStyles = mergeStyles({\r\n marginBottom: 40,\r\n});\r\n\r\nconst nativeAdBusinessNameProp = andComp(entityIs(ERROR_ENTITY.Ad), propertyIs('BusinessName'));\r\nconst nativeAdFinalUrlsProp = andComp(entityIs(ERROR_ENTITY.Ad), propertyIs('FinalUrls'));\r\nconst ValidatedFinalUrlWithStoreURL = withError(withCustomValidation(withFinalUrlRecommendationUpdate(ValidatedFinalUrlWithRecommendations)));\r\nconst ServerValidatedFinalUrl = withControlErrorHandling(withUnvalidatedControlErrors(ValidatedFinalUrlWithStoreURL, { filter: nativeAdFinalUrlsProp }));\r\n\r\nconst getPlacementCount = (IsAmplifyEnabled, DisplayPlusAmplify, IsMMAV2Enabled) => {\r\n if (IsAmplifyEnabled && DisplayPlusAmplify) {\r\n return 11;\r\n } else if (IsMMAV2Enabled) {\r\n return 10;\r\n }\r\n return 7;\r\n};\r\n\r\nexport const DisplayPlusNativeAdsInternal = ({\r\n data: ads,\r\n editingAdId,\r\n onDataChange,\r\n isSaving,\r\n isCanceling,\r\n biddingScheme,\r\n scope,\r\n activity,\r\n supportImageFitting,\r\n setAds,\r\n loadClipchampPlayer = null,\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n const serverContext = useContext(ServerContext);\r\n const perfMarker = useContext(PerformanceMarkerContext);\r\n const instrumentation = useContext(InstrumentationContext);\r\n\r\n const { cid, aid } = scope.values || {};\r\n const { Permissions, DynamicPermissions } = serverContext || {};\r\n const permissions = useMemo(() => ({ dynamic: { ...DynamicPermissions }, ...Permissions }), [DynamicPermissions, Permissions]);\r\n\r\n const {\r\n IsAmplifyEnabled, IsMSANLogoAndCTAForMMAEnabled, IsMSANDisclaimerEnabled, IsDomesticSimplifiedChineseEnabled,\r\n } = Permissions;\r\n\r\n const useClipchamp = permissions && permissions.dynamic && permissions.dynamic.VideoTemplateUI;\r\n\r\n const {\r\n DisplayPlusCopilotRecommendations, DisplayPlusAmplify, UAPLNativeAdIntegration, CopilotCTALogoGeneration,\r\n ImageFittingMVP = false, ImageFittingExlcudeMAE = true, ImageFittingUnifiedImageROI, AdPreviewRefresh,\r\n } = DynamicPermissions;\r\n\r\n const isMMAV2Enabled = Permissions.IsMMAV2Enabled && !(IsAmplifyEnabled && DisplayPlusAmplify);\r\n\r\n const stylingProps = useMemo(() =>\r\n (\r\n {\r\n component: {\r\n placements: getPlacementCount(DisplayPlusAmplify, IsAmplifyEnabled, isMMAV2Enabled),\r\n isMMAV2Enabled,\r\n },\r\n }\r\n ), [DisplayPlusAmplify, IsAmplifyEnabled, isMMAV2Enabled]);\r\n\r\n const getClasses = useResponsiveStyles(getImageExperienceStyles, stylingProps);\r\n\r\n const { data } = ads;\r\n const finalUrls = data && data.FinalUrls;\r\n const FinalUrlForRecommendation = data && data.FinalUrlForRecommendation;\r\n const businessName = data && data.BusinessName;\r\n const mobileFinalUrls = data && data.MobileFinalUrls;\r\n const headlines = (data && data.Headlines) || [];\r\n const longHeadlines = (data && data.LongHeadlines) || [];\r\n const descriptions = (data && data.Descriptions) || [];\r\n const TrackingUrlTemplate = data && data.TrackingUrlTemplate;\r\n const FinalUrlSuffix = data && data.FinalUrlSuffix;\r\n const UrlCustomParameters = data && data.UrlCustomParameters;\r\n const images = data && data.Images;\r\n const videos = data && data.videos;\r\n const impressionTrackingUrls = data && data.ImpressionTrackingUrls;\r\n const verifiedTrackingSettings = data && data.VerifiedTrackingSettings;\r\n const hotspots = data && data.hotspots;\r\n const CallToAction = data && data.CallToAction;\r\n const CallToActionText = data && data.CallToActionText;\r\n const CallToActionAriaText = data && data.CallToActionAriaText;\r\n const BoostAnchors = data && data.BoostAnchors;\r\n const Campaign = data && data.Campaign;\r\n const LegacyResponsiveAd = data && data.LegacyResponsiveAd; // true if is RA\r\n\r\n // disable image fitting for boost campaigns\r\n // disable image fitting for RA\r\n const isImageFittingEnabled = ImageFittingMVP && !ImageFittingExlcudeMAE && ImageFittingUnifiedImageROI && supportImageFitting && !(IsAmplifyEnabled && DisplayPlusAmplify) && !LegacyResponsiveAd;\r\n\r\n const nativeAdPanels = getNativeAdPanels(serverContext).basicPanels;\r\n\r\n const [\r\n allAdSettingsSections,\r\n adSettingsExpandedSections,\r\n setAdSettingsExpandedSections,\r\n ] = useCollapseState(\r\n nativeAdPanels /* all sections */,\r\n ['images', 'videos', 'logos', 'portrait-images', 'hotspot', 'business-name', 'text', 'call-to-action'] /* initially expanded sections */\r\n );\r\n\r\n const [\r\n finalUrlSection,\r\n finalUrlExpandedSection,\r\n setFinalUrlExpandedSection,\r\n ] = useCollapseState(['final-url'], ['final-url']);\r\n\r\n const maxUploadNum = useMemo(() => {\r\n const imageListLength = images && images.ImageList && isArray(images.ImageList) ? images.ImageList.length : 0;\r\n return DisplayPlusMaxImageCount - imageListLength;\r\n }, [images]);\r\n\r\n // copilot states and actions\r\n const [addNewDescriptionCallback, setAddNewDescriptionCallback] = useState(noop);\r\n const [addNewShortHeadlinesCallback, setAddNewShortHeadlinesCallback] = useState(noop);\r\n const [addNewLongHeadlinesCallback, setAddNewLongHeadlinesCallback] = useState(noop);\r\n\r\n const [finalUrlForCopilotRecommendations, setFinalUrlForCopilotRecommendations] = useState(first(finalUrls));\r\n\r\n const [selectedVideoIdx, setSelectedVideoIdx] = useState(null);\r\n const [selectedValue, setSelectedValue] = useState('imageAds');\r\n const [imageExperiencePortalContainerState, setImageExperiencePortalContainerState] = useState({});\r\n const [previewImagesSharedState, setPreviewImagesSharedState] = useState({ previewImageId: null, cropImageObj: null });\r\n const [imageExperienceAddNewImageCallback, setImageExperienceAddNewImageCallback] = useState(noop);\r\n const [newCTACallback, setNewCTACallback] = useState(noop);\r\n const [assetAIEnhancementEnabled, setAssetAIEnhancementEnabled] = useState(false);\r\n const [assetAIEnhancementSettingsCalled, setAssetAIEnhancementSettingsCalled] = useState(false);\r\n const [useBrandKit, setUseBrandKit] = useState(true);\r\n\r\n const imagesContainerRef = useRef(null);\r\n const logosContainerRef = useRef(null);\r\n const portraitContainerRef = useRef(null);\r\n\r\n const oDataConfig = useMemo(() => getODataConfig(serverContext), [serverContext]);\r\n\r\n const legacyI18n = useMemo(() => window.globalLegacyI18n.get('$/i18n!legacy/global'), []);\r\n const i18nMerged = useMemo(() => mergeI18n(legacyI18n, i18n), [legacyI18n, i18n]);\r\n\r\n const shouldLogosBeEnabled = useMemo(() => _.indexOf(nativeAdPanels, 'logos') !== -1, [nativeAdPanels]);\r\n const shouldPortraitBeEnabled = useMemo(() => _.indexOf(nativeAdPanels, 'portrait-images') !== -1, [nativeAdPanels]);\r\n\r\n const collectionsSummary = useMemo(() => ([\r\n { collection: headlines, displayText: i18n.getString(_TL_('short headlines')), displayTextSingular: i18n.getString(_TL_('short headline')) },\r\n { collection: longHeadlines, displayText: i18n.getString(_TL_('long headlines')), displayTextSingular: i18n.getString(_TL_('long headline')) },\r\n { collection: descriptions, displayText: i18n.getString(_TL_('descriptions')), displayTextSingular: i18n.getString(_TL_('description')) },\r\n ]), [headlines, longHeadlines, descriptions, i18n]);\r\n\r\n const textCardSummaryDetails = useMemo(() => getTextCardSummaryDetails(collectionsSummary, i18n), [collectionsSummary, i18n]);\r\n\r\n const hotspotSummaryDetails = useMemo(() => {\r\n if (!hotspots) {\r\n return i18n.getString(_TL_('No hotspots added'));\r\n }\r\n if (hotspots.length === 0) {\r\n return i18n.getString(_TL_('No hotspots added'));\r\n } else if (hotspots.length === 1) {\r\n return i18n.getString(_TL_('1 hotspot added'));\r\n }\r\n return i18n.getString(_TL_('{{count}} hotspots added'), { count: hotspots.length });\r\n }, [hotspots, i18n]);\r\n\r\n const allAssetsExpand = useMemo(\r\n () => collapseExpander({ setActiveKeys: setAdSettingsExpandedSections }),\r\n [setAdSettingsExpandedSections]\r\n );\r\n\r\n const finalUrlValidationProps = useMemo(() => ({\r\n data: {\r\n FinalUrls: finalUrls,\r\n },\r\n initialValue: {\r\n FinalUrls: finalUrls,\r\n },\r\n debounce: 400,\r\n }), [finalUrls]);\r\n\r\n const textAssetsValidationProps = useMemo(() => ({\r\n data: {\r\n Headlines: headlines,\r\n LongHeadlines: longHeadlines,\r\n Descriptions: descriptions,\r\n },\r\n }), [headlines, longHeadlines, descriptions]);\r\n\r\n const ctaValidationProps = useMemo(() => ({\r\n data: {\r\n ...CallToAction,\r\n },\r\n }), [CallToAction]);\r\n\r\n const onTabSelect = useCallback((event, tab) => {\r\n setSelectedValue(tab.value);\r\n }, []);\r\n\r\n const onReset = useCallback(() => {\r\n const dataPatch = {\r\n data: {\r\n data: {\r\n ...data,\r\n Images: {\r\n ...data.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 isValid: false,\r\n },\r\n };\r\n\r\n setAds({\r\n ...data,\r\n Images: {\r\n ...data.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 onDataChange(dataPatch);\r\n }, [data, onDataChange]);\r\n\r\n const [shouldShowDisclaimerPanel, setShouldShowDisclaimerPanel] = useState(false);\r\n const disclaimerRepositoryRef = useRef(new Repository({\r\n schema: DisclaimerAdExtension,\r\n skipExtensionCache: true,\r\n }));\r\n\r\n useEffect(() => {\r\n if (activity && activity.signal) {\r\n activity.signal(`[VideoAdsCopilot] - VideoAsAnAsset useBrandKitToggle changed to ${useBrandKit}`);\r\n }\r\n }, [useBrandKit, activity]);\r\n\r\n useEffect(() => {\r\n if (!IsMSANDisclaimerEnabled) {\r\n setShouldShowDisclaimerPanel(false);\r\n return null;\r\n }\r\n\r\n if (IsDomesticSimplifiedChineseEnabled) {\r\n setShouldShowDisclaimerPanel(false);\r\n return null;\r\n }\r\n\r\n if (Campaign && Campaign.Id) {\r\n return disclaimerRepositoryRef.current.association.findAll({\r\n where: {\r\n campaignId: Campaign.Id,\r\n },\r\n }).then((disclaimerdata) => {\r\n if (disclaimerdata && disclaimerdata.length > 0) {\r\n setShouldShowDisclaimerPanel(true);\r\n } else {\r\n setShouldShowDisclaimerPanel(false);\r\n }\r\n });\r\n }\r\n setShouldShowDisclaimerPanel(false);\r\n return null;\r\n }, [Campaign, IsMSANDisclaimerEnabled, IsDomesticSimplifiedChineseEnabled]);\r\n\r\n const {\r\n copilotBanner,\r\n suggestionPoller,\r\n } = useCopilot({\r\n maxUploadNum,\r\n addNewShortHeadlinesCallback,\r\n addNewLongHeadlinesCallback,\r\n addNewDescriptionCallback,\r\n imageExperienceAddNewImageCallback,\r\n newCTACallback,\r\n currentCTA: CallToAction && CallToAction.cta,\r\n onReset,\r\n cid,\r\n aid,\r\n serverContext,\r\n instrumentation,\r\n data,\r\n isSaving,\r\n isCanceling,\r\n enableCopilotRecommendations: DisplayPlusCopilotRecommendations,\r\n skipBusinessNameRecommendation: IsAmplifyEnabled && DisplayPlusAmplify,\r\n });\r\n\r\n const updateFinalUrlForCopilotRecommendations = useCallback(() => {\r\n // to prevent sending too many requests, only update the copilot recommendations after user has finished editing URL\r\n if (IsAmplifyEnabled && DisplayPlusAmplify) {\r\n // for boost campaigns remove the boost prefix from the final url\r\n const schemeRegex = /^(?!https?:\\/\\/)[\\w-]+:/i;\r\n\r\n // Replace the scheme part with an empty string\r\n const urlWithoutScheme = FinalUrlForRecommendation.replace(schemeRegex, '');\r\n\r\n setFinalUrlForCopilotRecommendations(urlWithoutScheme);\r\n } else {\r\n setFinalUrlForCopilotRecommendations(FinalUrlForRecommendation);\r\n }\r\n }, [DisplayPlusAmplify, FinalUrlForRecommendation, IsAmplifyEnabled]);\r\n\r\n const onFinalUrlFocusOut = useCallback(() => {\r\n updateFinalUrlForCopilotRecommendations();\r\n }, [updateFinalUrlForCopilotRecommendations]);\r\n\r\n const onFinalUrlKeyUp = useCallback((e) => {\r\n const { key } = e;\r\n if (key === 'Enter') {\r\n updateFinalUrlForCopilotRecommendations();\r\n }\r\n }, [updateFinalUrlForCopilotRecommendations]);\r\n\r\n const finalUrlAdditionalProps = useMemo(() => ({\r\n onBlur: onFinalUrlFocusOut,\r\n onKeyUp: onFinalUrlKeyUp,\r\n }), [onFinalUrlKeyUp, onFinalUrlFocusOut]);\r\n\r\n const updateFinalUrlCallback = useCallback((newFinalUrls) => {\r\n setAds({\r\n ...data,\r\n FinalUrls: newFinalUrls,\r\n });\r\n\r\n onDataChange({\r\n data: {\r\n data: {\r\n ...data,\r\n FinalUrls: newFinalUrls,\r\n },\r\n },\r\n });\r\n }, [data, onDataChange]);\r\n\r\n useEffect(() => {\r\n if (isImageFittingEnabled && !assetAIEnhancementSettingsCalled) {\r\n setAssetAIEnhancementSettingsCalled(true);\r\n getAssetEnhancementSettings({ aid, cid, oDataConfig }).then((settings) => {\r\n if (settings && settings.AssetAIEnhancementOptout) {\r\n setAssetAIEnhancementEnabled(settings.AssetAIEnhancementOptout === 'false');\r\n }\r\n });\r\n }\r\n }, [aid, assetAIEnhancementSettingsCalled, cid, isImageFittingEnabled, oDataConfig]);\r\n\r\n // memoized native ads components\r\n const serverValidatedFinalUrl = useMemo(() => (\r\n \r\n ), [DisplayPlusAmplify, IsAmplifyEnabled, finalUrlAdditionalProps, finalUrlValidationProps, i18n, permissions]);\r\n\r\n const imageListPortalContainer = useMemo(() => (\r\n <>\r\n \r\n \r\n \r\n ), [i18n, imageExperiencePortalContainerState, permissions, imageExperienceAddNewImageCallback, maxUploadNum, DisplayPlusCopilotRecommendations]);\r\n\r\n const storeBackedBusinessName = useMemo(() => (\r\n \r\n ), [businessName, i18n]);\r\n\r\n const advancedSettings = useMemo(() => (\r\n \r\n ), [mobileFinalUrls, TrackingUrlTemplate, FinalUrlSuffix, UrlCustomParameters, impressionTrackingUrls, verifiedTrackingSettings, biddingScheme, CallToAction, CallToActionText, CallToActionAriaText, BoostAnchors, shouldShowDisclaimerPanel]);\r\n\r\n const placementCustomizationPredicate = useCallback((template) => {\r\n if ((!isEmpty(template.key)) && (!isEmpty(AdPreviewOverideStylesByKey[template.key]))) {\r\n return {\r\n ...template,\r\n imagePreviewHeight: AdPreviewOverideStylesByKey[template.key].imagePreviewHeight,\r\n };\r\n }\r\n\r\n return template;\r\n }, []);\r\n\r\n let adPreviewConfig = responsiveMsanMMAConfig;\r\n let placementConfig = msanMMAConfig;\r\n let adPlacementsGroupType = AdPlacementsGroupType.msanImageAd;\r\n\r\n if (IsAmplifyEnabled && DisplayPlusAmplify) {\r\n adPreviewConfig = AdPreviewRefresh ? responsiveMsanMMABoostConfigV2 : responsiveMsanMMABoostConfig;\r\n placementConfig = AdPreviewRefresh ? msanMMABoostConfigV2 : msanMMABoostConfig;\r\n adPlacementsGroupType = AdPlacementsGroupType.msanBoostImageAd;\r\n } else if (isMMAV2Enabled) {\r\n adPreviewConfig = msanMMAV2Config;\r\n placementConfig = msanMMAV2Config;\r\n adPlacementsGroupType = AdPlacementsGroupType.msanV2ImageAd;\r\n }\r\n\r\n const adPreview = useMemo(() => {\r\n const PerfMaxAdPreviewComponent = UAPLNativeAdIntegration ? PerfMaxAdPreviewUAPL : PerfMaxAdPreview;\r\n\r\n const PerfMaxAdPreviewElement = (\r\n \r\n );\r\n\r\n if (!permissions.dynamic.VideoAsAnAsset || IsAmplifyEnabled) {\r\n return PerfMaxAdPreviewElement;\r\n }\r\n\r\n return (\r\n
    \r\n \r\n {i18n.getString(_TL_('Image ads'))}\r\n {i18n.getString(_TL_('Video ads'))}\r\n \r\n {selectedValue === TAB_IMAGE_ADS && PerfMaxAdPreviewElement}\r\n {selectedValue === TAB_VIDEO_ADS && (\r\n \r\n )}\r\n
    \r\n );\r\n }, [UAPLNativeAdIntegration, i18n, images, hotspots, headlines, longHeadlines, descriptions, businessName, finalUrls, previewImagesSharedState, CallToAction, placementCustomizationPredicate, adPlacementsGroupType, adPreviewConfig, getClasses, isMMAV2Enabled, activity, isImageFittingEnabled, assetAIEnhancementEnabled, permissions.dynamic.VideoAsAnAsset, IsAmplifyEnabled, selectedValue, onTabSelect, selectedVideoIdx, data]);\r\n\r\n const validatedImageExperienceWrapper = useMemo(() => {\r\n let mappedPreviewImageSharedState = previewImagesSharedState;\r\n const { editingPlacementType } = previewImagesSharedState || {};\r\n if (editingPlacementType && extraPlacementInfo[editingPlacementType]) {\r\n // in editing panel, show normal placement components\r\n mappedPreviewImageSharedState = {\r\n ...previewImagesSharedState,\r\n editingPlacementType: extraPlacementInfo[editingPlacementType].editingPlacementType,\r\n };\r\n }\r\n\r\n return (\r\n {\r\n anActivity.signal(`display plus native ad editor: uploaded image, isEditing:${!!editingAdId}, image id:${imgId}`);\r\n },\r\n onImageListUpdate: (anActivity, newImageList, curImageList) => {\r\n // log when new images added in audience ads editor\r\n // eslint-disable-next-line newline-per-chained-call\r\n const newImageIdList = _.chain(newImageList).flatten().map(img => `${img.id}`).uniq().sortBy().value();\r\n // eslint-disable-next-line newline-per-chained-call\r\n const curImageIdList = _.chain(curImageList).flatten().map(img => `${img.id}`).uniq().sortBy().value();\r\n const newImages = _.difference(newImageIdList, curImageIdList);\r\n if (newImages.length > 0) {\r\n anActivity.signal(`display plus native ad editor: added images, isEditing:${!!editingAdId}, image ids:${newImages.join(',')}, image count:${newImages.length}`);\r\n }\r\n },\r\n }}\r\n supportImageUpscale={permissions.dynamic.AudienceImageUpscale}\r\n isImageFittingEnabled={isImageFittingEnabled && assetAIEnhancementEnabled}\r\n />\r\n );\r\n }, [previewImagesSharedState, i18n, permissions, shouldLogosBeEnabled, shouldPortraitBeEnabled, updateFinalUrlCallback, data, suggestionPoller, DisplayPlusCopilotRecommendations, perfMarker, IsAmplifyEnabled, DisplayPlusAmplify, UAPLNativeAdIntegration, placementConfig, isMMAV2Enabled, isImageFittingEnabled, assetAIEnhancementEnabled, editingAdId]);\r\n\r\n const textAssetCollectionWithCopilot = useMemo(() => (\r\n \r\n ), [textAssetsValidationProps]);\r\n\r\n const logosContainer = useMemo(() => (\r\n <>\r\n {i18n.getString(_TL_('You can add up to 5 different logos. Each logo can have one or both 4:1 aspect ratio and 1:1 aspect ratio.'))}\r\n \r\n \r\n ), [i18n, imageExperiencePortalContainerState]);\r\n\r\n const portraitImageContainer = useMemo(() => (\r\n <>\r\n {i18n.getString(_TL_('You can add one portrait image'))} \r\n \r\n \r\n ), [i18n, imageExperiencePortalContainerState]);\r\n\r\n const hotspot = useMemo(() => (\r\n <>\r\n \r\n \r\n ), [hotspots]);\r\n\r\n const videosContainer = useMemo(() => {\r\n const videoAd = { videos: videos || [] };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n }, [videos, i18nMerged, perfMarker, permissions, oDataConfig, cid, aid, useBrandKit, setUseBrandKit, loadClipchampPlayer, serverContext]);\r\n\r\n return (\r\n
    \r\n {data && (\r\n \r\n
    \r\n
    \r\n \r\n }\r\n attentionBeaconProps={{ getExtraProps: getPanelErrorProps }}\r\n actuationProps={{\r\n expand: allAssetsExpand,\r\n expandKey: 'final-url',\r\n }}\r\n >\r\n
    \r\n {serverValidatedFinalUrl}\r\n
    \r\n \r\n
    \r\n\r\n {\r\n DisplayPlusCopilotRecommendations && (copilotBanner)\r\n }\r\n \r\n }\r\n />}\r\n attentionBeaconProps={{ getExtraProps: getPanelErrorProps }}\r\n actuationProps={{\r\n expand: allAssetsExpand,\r\n expandKey: 'images',\r\n }}\r\n >\r\n {i18n.getString(_TL_('You can add up to {{limit}} images to your ad.'), { limit: DisplayPlusMaxImageCount })}\r\n
    \r\n {imageListPortalContainer}\r\n
    \r\n \r\n }\r\n />}\r\n attentionBeaconProps={{ getExtraProps: getPanelErrorProps }}\r\n actuationProps={{\r\n expand: allAssetsExpand,\r\n expandKey: 'videos',\r\n }}\r\n >\r\n {i18n.getString(_TL_('You can add up to {{limit}} videos to your ad.'), { limit: DisplayPlusMaxVideoCount })}\r\n
    \r\n {videosContainer}\r\n
    \r\n \r\n }\r\n />}\r\n attentionBeaconProps={{ getExtraProps: getPanelErrorProps }}\r\n actuationProps={{\r\n expand: allAssetsExpand,\r\n expandKey: 'logos',\r\n }}\r\n >\r\n {logosContainer}\r\n \r\n }\r\n />}\r\n attentionBeaconProps={{ getExtraProps: getPanelErrorProps }}\r\n actuationProps={{\r\n expand: allAssetsExpand,\r\n expandKey: 'portrait-images',\r\n }}\r\n >\r\n {portraitImageContainer}\r\n \r\n }\r\n attentionBeaconProps={{ getExtraProps: getPanelErrorProps }}\r\n actuationProps={{\r\n expand: allAssetsExpand,\r\n expandKey: 'text',\r\n }}\r\n >\r\n {\r\n DisplayPlusCopilotRecommendations ? (\r\n textAssetCollectionWithCopilot\r\n ) : (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n \r\n \r\n }\r\n attentionBeaconProps={{ getExtraProps: getPanelErrorProps }}\r\n actuationProps={{\r\n expand: allAssetsExpand,\r\n expandKey: 'hotspot',\r\n }}\r\n >\r\n {hotspot}\r\n \r\n \r\n }\r\n attentionBeaconProps={{ getExtraProps: getPanelErrorProps }}\r\n >\r\n
    \r\n {storeBackedBusinessName}\r\n
    \r\n \r\n \r\n }\r\n noOverflowHidden\r\n relativePosition\r\n attentionBeaconProps={{ getExtraProps: getPanelErrorProps }}\r\n >\r\n \r\n \r\n
    \r\n
    \r\n {advancedSettings}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {adPreview}\r\n
    \r\n
    \r\n {validatedImageExperienceWrapper}\r\n
    \r\n
    \r\n
    \r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nDisplayPlusNativeAdsInternal.propTypes = {\r\n data: PropTypes.shape({\r\n data: PropTypes.shape({\r\n FinalUrls: PropTypes.string,\r\n MobileFinalUrls: PropTypes.string,\r\n BusinessName: PropTypes.string,\r\n Headlines: PropTypes.arrayOf(PropTypes.string),\r\n LongHeadlines: PropTypes.arrayOf(PropTypes.string),\r\n Descriptions: PropTypes.arrayOf(PropTypes.string),\r\n Images: PropTypes.shape({}),\r\n videos: PropTypes.shape({}),\r\n TrackingUrlTemplate: PropTypes.string,\r\n FinalUrlSuffix: PropTypes.string,\r\n UrlCustomParameters: PropTypes.string,\r\n ImpressionTrackingUrls: PropTypes.string,\r\n VerifiedTrackingSettings: PropTypes.shape({}),\r\n FinalUrlForRecommendation: PropTypes.string,\r\n CallToAction: PropTypes.shape({\r\n cta: PropTypes.string,\r\n language: PropTypes.string,\r\n }),\r\n CallToActionText: PropTypes.string,\r\n CallToActionAriaText: PropTypes.string,\r\n hotspots: PropTypes.shape({}),\r\n BoostAnchors: PropTypes.shape({}),\r\n }),\r\n }).isRequired,\r\n onDataChange: PropTypes.func.isRequired,\r\n error: PropTypes.shape({}).isRequired,\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 isSaving: PropTypes.bool.isRequired,\r\n isCanceling: PropTypes.bool.isRequired,\r\n biddingScheme: PropTypes.string,\r\n editingAdId: PropTypes.string,\r\n activity: PropTypes.shape({}),\r\n supportImageFitting: PropTypes.bool,\r\n setAds: PropTypes.func,\r\n};\r\n\r\nDisplayPlusNativeAdsInternal.defaultProps = {\r\n biddingScheme: null,\r\n editingAdId: null,\r\n activity: undefined,\r\n supportImageFitting: false,\r\n setAds: () => { },\r\n};\r\n\r\nexport const DisplayPlusNativeAds = withActivityContext(withBannerService(withScope(DisplayPlusNativeAdsInternal)));\r\n","import { identity, result, has } from 'underscore';\r\nimport { getBulkApiErrors } from '@bingads-webui-campaign/api-errors';\r\n\r\nexport const ERROR_ENTITY = {\r\n Campaign: 'campaign',\r\n AdGroup: 'adGroup',\r\n Ad: 'ResponsiveAd',\r\n};\r\n\r\nexport const isBulkWrappedResponse = bulkResult => has(bulkResult, 'entity');\r\n\r\nconst getBulkUploadEntityType = entitySchema =>\r\n (entitySchema.properties['bulk-upload-type'] || {}).value ||\r\n entitySchema.name;\r\n\r\nexport const getBulkUploadErrorType = entitySchema =>\r\n `${getBulkUploadEntityType(entitySchema)} Error`;\r\n\r\nexport const mapBulkUpsertErrors = (\r\n errors,\r\n bulkUpsertEntityErrorMap,\r\n errorProcessor = identity,\r\n scenario,\r\n i18n,\r\n activityLogger\r\n) =>\r\n getBulkApiErrors(errors, scenario, i18n, activityLogger).map((error) => {\r\n const errorType = error.type;\r\n const mappedErrorType = result(bulkUpsertEntityErrorMap, errorType, errorType);\r\n // eslint-disable-next-line no-param-reassign\r\n error.type = mappedErrorType;\r\n return errorProcessor(error);\r\n });\r\n\r\nexport const modelToViewModelForBulkErrors = (errors, bulkUpsertEntityErrorMap, scenario, i18n, activityLogger) =>\r\n mapBulkUpsertErrors(errors, bulkUpsertEntityErrorMap, /* errorProcessor */ identity, scenario, i18n, activityLogger);\r\n","import { map, pick, each, object, find, filter } from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport {\r\n setMTImageModel,\r\n getFlattenedImageAssetList,\r\n updateAssetsIdsAsync,\r\n} from '@bingads-webui-campaign-react/responsive-ad-editor-utils';\r\nimport { thirdPartyMeasurementStringToViewModel, getVerifiedTrackingSettingWrite } from '@bingads-webui-campaign-react/third-party-measurement';\r\n\r\nfunction formatIntoTextArrayString(texts) {\r\n let res = '';\r\n map(texts, (textValue = '') => {\r\n // To escape double quotes in the text value to avoid bulkupsert failure\r\n res += `${res === '' ? '' : ','}{\"Text\":\"${textValue.replace(/\"/g, '\\\\\"')}\"}`;\r\n });\r\n return `[${res}]`;\r\n}\r\n\r\nconst formatHotspots = (hotspots) => {\r\n const hotspotsArray = map(hotspots, (hotspot) => {\r\n const hotspotObj = {\r\n Title: hotspot.title,\r\n ActionText: hotspot.actionText,\r\n Description: hotspot.desc,\r\n Uri: hotspot.uri,\r\n Glyph: hotspot.glyph,\r\n Placement: hotspot.placement,\r\n };\r\n return hotspotObj;\r\n });\r\n return hotspotsArray;\r\n};\r\n\r\nconst getProcessedDataAsync = (originalData, imageList, imageOdata, permissions, UiUnsupportedRatios = [], isImageFittingEnabled = false) => {\r\n // for portrait images we need to check if we are in display plus amlify and isamplifyenabled.\r\n // if it is boost campaigns mma v2 should be disabled.\r\n const isBoostCampaign = permissions.dynamic.DisplayPlusAmplify && permissions.IsAmplifyEnabled;\r\n\r\n const flattenedIncludedImageAssetList = getFlattenedImageAssetList(imageList, !isBoostCampaign, !isBoostCampaign);\r\n const imageIndexAsThumbnail = 0;\r\n\r\n return updateAssetsIdsAsync(flattenedIncludedImageAssetList, imageIndexAsThumbnail, !isBoostCampaign, imageOdata)\r\n .then((updates) => {\r\n const originalThumbnailAsset = flattenedIncludedImageAssetList[imageIndexAsThumbnail];\r\n const overrideInfo = updates[imageIndexAsThumbnail];\r\n let imageToGenerateThumbnail;\r\n\r\n if (overrideInfo) {\r\n imageToGenerateThumbnail = originalThumbnailAsset.copyThumbnailLookToNewImage({\r\n id: overrideInfo.id,\r\n src: overrideInfo.bingSrc,\r\n });\r\n } else {\r\n imageToGenerateThumbnail = originalThumbnailAsset;\r\n }\r\n\r\n const portraitImage = find(imageList, items => items.find(item => item.isPortrait));\r\n\r\n setMTImageModel(\r\n originalData,\r\n updates,\r\n map(imageList, imageArray => filter(imageArray, imageObj => imageObj.isIncluded)) /* imageList */,\r\n {\r\n isMultimediaAdinMSANEnabled: !isBoostCampaign,\r\n isMultimediaAd: false,\r\n isMMAV2Enabled: !isBoostCampaign,\r\n isBoostPortraitImageEnabled: isBoostCampaign, // this.isBoostPortraitImageEnabled,\r\n isBoost200x100ImageEnabled: permissions && permissions.IsBoost200x100ImageEnabled, // this.isBoost200x100ImageEnabled,\r\n isBoostNewAspectRatioSupportEnabled: permissions && permissions.IsBoostNewAspectRatioSupportEnabled, // this.isBoostNewAspectRatioSupportEnabled,\r\n isImageFittingEnabled,\r\n },\r\n UiUnsupportedRatios,\r\n portraitImage && portraitImage[0]\r\n );\r\n\r\n return {\r\n mtModel: originalData,\r\n imageToGenerateThumbnail,\r\n };\r\n });\r\n};\r\n\r\nexport const viewModelToModelForAd = ({\r\n adsViewModel, campaign, adGroup, imageOdata, permissions, isImageFittingEnabled = false,\r\n}, isDeletedEntities = false) => {\r\n // parse the ads\r\n const adViewModel = [];\r\n\r\n let images;\r\n let videos;\r\n\r\n if (adsViewModel.length === 0) {\r\n return Promise.resolve(adViewModel);\r\n }\r\n\r\n const ad = adsViewModel[0];\r\n\r\n if (ad.videos && Array.isArray(ad.videos)) {\r\n videos = ad.videos.map(video => ({\r\n id: video.id,\r\n idString: video.idString,\r\n subType: video.type,\r\n }));\r\n }\r\n\r\n const fields = {\r\n 'Client Id': '0', // `${ad.uid}`,\r\n FinalUrls: ad.FinalUrls,\r\n Videos: JSON.stringify(videos),\r\n Images: JSON.stringify(images),\r\n MobileFinalUrls: ad.MobileFinalUrls,\r\n BusinessName: ad.BusinessName,\r\n Headlines: ad.Headlines ? formatIntoTextArrayString(ad.Headlines) : undefined,\r\n LongHeadlines: ad.LongHeadlines ? formatIntoTextArrayString(ad.LongHeadlines) : undefined,\r\n Descriptions: ad.Descriptions ? formatIntoTextArrayString(ad.Descriptions) : undefined,\r\n TrackingUrlTemplate: ad.TrackingUrlTemplate,\r\n FinalUrlSuffix: ad.FinalUrlSuffix,\r\n UrlCustomParameters: ad.UrlCustomParameters,\r\n ImpressionTrackingUrls: ad.ImpressionTrackingUrls,\r\n HotSpots: JSON.stringify(formatHotspots(ad.hotspots)),\r\n Campaign: pick(campaign, 'Id'),\r\n AdGroup: pick(adGroup, 'Id'),\r\n CallToAction: ad.CallToAction && ad.CallToAction.cta,\r\n CallToActionLanguage: ad.CallToAction && ad.CallToAction.language,\r\n CallToActionText: ad.CallToActionText,\r\n CallToActionAriaText: ad.CallToActionAriaText,\r\n BoostAnchors: ad.BoostAnchors,\r\n ...getVerifiedTrackingSettingWrite(ad.VerifiedTrackingSettings),\r\n };\r\n\r\n // only add call to action if we have the value set.\r\n if (ad.CallToActionAriaText) {\r\n fields.CallToActionAriaText = ad.CallToActionAriaText;\r\n }\r\n\r\n if (ad.Id) {\r\n fields.Id = ad.Id;\r\n }\r\n\r\n if (isDeletedEntities) {\r\n fields.Status = 'Deleted';\r\n }\r\n\r\n if (ad.Images && ad.Images.ImageList && imageOdata) {\r\n return getProcessedDataAsync(fields, ad.Images.ImageList, imageOdata, permissions, [], isImageFittingEnabled)\r\n .then(({ mtModel }) => {\r\n adViewModel.push(mtModel);\r\n\r\n return adViewModel;\r\n });\r\n }\r\n\r\n adViewModel.push(fields);\r\n return Promise.resolve(adViewModel);\r\n};\r\n\r\n\r\nconst processTextAttribute = (jsonTextAttribute, name) =>\r\n object(JSON.parse(jsonTextAttribute).map((textAttribute, index) => ([`${name}${index}`, textAttribute.Text])));\r\n\r\nexport const bulkModelToViewModelForAd = ({\r\n adsModel,\r\n originalAdsModel,\r\n}) => {\r\n const savedAd = adsModel[0];\r\n\r\n savedAd.Images = originalAdsModel.data.Images;\r\n savedAd.videos = originalAdsModel.data.videos || [];\r\n savedAd.Headlines = savedAd.Headlines ? processTextAttribute(savedAd.Headlines, 'Headline') : undefined;\r\n savedAd.LongHeadlines = savedAd.LongHeadlines ? processTextAttribute(savedAd.LongHeadlines, 'LongHeadline') : undefined;\r\n savedAd.Descriptions = savedAd.Descriptions ? processTextAttribute(savedAd.Descriptions, 'Description') : undefined;\r\n savedAd.VerifiedTrackingSettings = savedAd.VerifiedTrackingData ? thirdPartyMeasurementStringToViewModel(savedAd.VerifiedTrackingData) : undefined;\r\n savedAd.hotspots = originalAdsModel.data.hotspots || [];\r\n savedAd.CallToAction = {\r\n cta: savedAd.CallToAction,\r\n language: savedAd.CallToActionLanguage,\r\n };\r\n\r\n const adViewModel = {\r\n data: savedAd,\r\n isValid: true,\r\n isDirty: false,\r\n currentPageIndex: 1,\r\n };\r\n\r\n return adViewModel;\r\n};\r\n\r\n\r\nexport const modelToViewModelForAd = ({\r\n adsModel,\r\n}) => {\r\n const adsVideoModel = { ...adsModel };\r\n\r\n return adsVideoModel;\r\n};\r\n\r\nexport const splitUpdateAndCreateAds = ({\r\n adsViewModel, oldAdsModel, campaign, adGroup, imageOdata, permissions, isImageFittingEnabled = false,\r\n}) => {\r\n const adIds = [];\r\n\r\n const adsToCreate = [];\r\n const adsToUpdate = [];\r\n const adsToDelete = [];\r\n\r\n each([adsViewModel], (ad) => {\r\n if (ad.Images && ad.Images.ImageList) {\r\n // check if the ad has ID\r\n if (ad.Id) {\r\n adsToUpdate.push(ad);\r\n\r\n // add the Ids of Ads that have already been saved to API\r\n // so that we can delete if the oldAdsModel contains more Ids\r\n adIds.push(ad.Id);\r\n } else {\r\n adsToCreate.push(ad);\r\n }\r\n }\r\n });\r\n\r\n if (oldAdsModel) {\r\n // get ids of the ads that are deleted (missing in adIds array)\r\n each([oldAdsModel], (ad) => {\r\n if (ad.Images && ad.Images.ImageList) {\r\n adsToDelete.push(ad);\r\n }\r\n });\r\n }\r\n\r\n const promises = {\r\n createAds: viewModelToModelForAd({\r\n adsViewModel: adsToCreate, campaign, adGroup, imageOdata, permissions, isImageFittingEnabled,\r\n }),\r\n updateAds: viewModelToModelForAd({\r\n adsViewModel: adsToUpdate, campaign, adGroup, imageOdata, permissions, isImageFittingEnabled,\r\n }),\r\n deleteAds: viewModelToModelForAd({\r\n adsViewModel: adsToDelete, campaign, adGroup, imageOdata, permissions, isImageFittingEnabled,\r\n }, true),\r\n };\r\n\r\n return Promise.props(promises).then((results) => {\r\n const updatedAds = results.updateAds || [];\r\n const createdAds = results.createAds || [];\r\n const deletedAds = results.deleteAds || [];\r\n\r\n const adsNeededToCreate = createdAds;\r\n\r\n const adsNeededToUpdate = [...updatedAds, ...deletedAds];\r\n\r\n return { adsNeededToCreate, adsNeededToUpdate };\r\n });\r\n};\r\n","import Promise from 'bluebird';\r\nimport _ from 'underscore';\r\nimport { ResponsiveAd } from '@bingads-webui/campaign-odata-schemas';\r\nimport { edmCampaign } from '@bingads-webui/edm-campaign';\r\nimport { getODataConfig } from '@bingads-webui-campaign-react/xandr-video-campaign-shared-components';\r\nimport { getLogVersion } from '@bingads-webui-campaign-react/asset-library-model';\r\nimport { newVideoFromMTObject } from '@bingads-webui-campaign-react/image-experience-video-part';\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\n\r\nimport { isBulkWrappedResponse, getBulkUploadErrorType, modelToViewModelForBulkErrors, ERROR_ENTITY } from './common';\r\nimport { bulkModelToViewModelForAd, splitUpdateAndCreateAds, viewModelToModelForAd } from './native-ad';\r\n\r\nconst GENERIC_ERROR_MESSAGE_KEY = _TL_(\"We've encountered an error and can't continue. Please contact support for further assistance.\");\r\nconst adEDM = edmCampaign.types.resolve('Model.ResponsiveAd');\r\n\r\nconst adResource = new adEDM.ResourceIdentifier();\r\n\r\nconst createData = data => adResource.bulkCreate.bind(adResource)(data);\r\nconst updateData = data => adResource.bulkUpdate.bind(adResource)(data);\r\n\r\nconst bulkUpsertAdSettingsEntityErrorMap = {\r\n [getBulkUploadErrorType(ResponsiveAd)]: ERROR_ENTITY.Ad,\r\n};\r\n\r\nconst getErrorsPlaceholders = () => ({\r\n systemErrors: [],\r\n serverErrors: [],\r\n});\r\n\r\nexport const deleteAd = ({ ad, campaign, adGroup }) => viewModelToModelForAd({ adsViewModel: ad, campaign, adGroup }, true)\r\n .then(deleteAds => updateData(deleteAds))\r\n .then(result => result, err => err);\r\n\r\nexport const saveAds = ({\r\n ads: adsViewModel,\r\n oldAdsModel,\r\n campaign,\r\n adGroup,\r\n activity = null,\r\n imageOdata = null,\r\n permissions,\r\n}, { scenario, i18n }, { isImageFittingEnabled = false } = {}) => splitUpdateAndCreateAds({\r\n adsViewModel: adsViewModel.data, oldAdsModel, campaign, adGroup, imageOdata, permissions, isImageFittingEnabled,\r\n})\r\n .then(({ adsNeededToCreate, adsNeededToUpdate }) => {\r\n // const adsModel = viewModelToModelForAd({ adsViewModel, campaign, adGroup });\r\n\r\n // const modelToSave = adsModel;\r\n\r\n const promises = {};\r\n\r\n if (adsNeededToCreate.length > 0) {\r\n promises.createAds = createData(adsNeededToCreate);\r\n }\r\n\r\n if (adsNeededToUpdate.length > 0) {\r\n promises.updateAds = updateData(adsNeededToUpdate);\r\n }\r\n\r\n return promises;\r\n }).then(promises => Promise.props(promises)\r\n .then((results) => {\r\n const updatedAds = results.updateAds || [];\r\n const createdAds = results.createAds || [];\r\n\r\n const result = [...updatedAds, ...createdAds];\r\n\r\n const data = {\r\n ads: bulkModelToViewModelForAd({\r\n adsModel: result,\r\n originalAdsModel: adsViewModel,\r\n }),\r\n ...getErrorsPlaceholders(),\r\n };\r\n\r\n\r\n if (activity) {\r\n activity.signal(`onAdsSavedSuccessfully, redirecting to campaign grid page - adCount: ${result.length}`);\r\n }\r\n return data;\r\n }, (bulkOrSystemError) => {\r\n if (isBulkWrappedResponse(bulkOrSystemError)) {\r\n const { entity, errors } = bulkOrSystemError;\r\n\r\n // we need to attach uid to each error to identify which video panel has an error.\r\n // the uid is stored in the clientid of the error.\r\n\r\n const ads = entity ?\r\n bulkModelToViewModelForAd({\r\n adsModel: entity,\r\n originalAdsModel: adsViewModel,\r\n }) :\r\n adsViewModel;\r\n\r\n const serverErrors = modelToViewModelForBulkErrors(\r\n errors,\r\n bulkUpsertAdSettingsEntityErrorMap,\r\n scenario,\r\n i18n,\r\n activity\r\n );\r\n\r\n if (activity) {\r\n activity.signal(`onAdsSavedUnsuccessfully, ${JSON.stringify(serverErrors)}`);\r\n }\r\n // eslint-disable-next-line prefer-promise-reject-errors\r\n return Promise.reject({\r\n ads: { ...ads },\r\n serverErrors,\r\n });\r\n }\r\n\r\n // Activity\r\n // eslint-disable-next-line no-console\r\n console.warn(`Campaign bulk upsert system error: ${bulkOrSystemError.stack || bulkOrSystemError.message || bulkOrSystemError}`);\r\n // eslint-disable-next-line prefer-promise-reject-errors\r\n return Promise.reject({\r\n ads: adsViewModel,\r\n systemErrors: [i18n.getString(GENERIC_ERROR_MESSAGE_KEY)],\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\nexport const saveAdsWithMetadata = (data, context) => {\r\n const { serverContext, activityLogger, i18n } = context;\r\n const logger = getLoggerWithoutPageInfo(activityLogger, getLogVersion(), 'NativeAdsAdStep');\r\n const cid = serverContext.CurrentCustomer.Id;\r\n const aid = serverContext.CurrentAccount.Id;\r\n const oDataConfig = getODataConfig(serverContext);\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: activityLogger,\r\n });\r\n\r\n const uploadVideoIfNeeded = ({ ads }) => {\r\n const videoPromises = [];\r\n\r\n if (ads.data.videos && ads.data.videos.length > 0) {\r\n ads.data.videos.forEach((video, index) => {\r\n if (video && !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((v) => {\r\n _.extend(ads.data.videos[index], v);\r\n }));\r\n }\r\n });\r\n }\r\n\r\n if (_.isEmpty(videoPromises)) {\r\n return Promise.resolve(ads);\r\n }\r\n\r\n return Promise.all(videoPromises).then(() => ads);\r\n };\r\n\r\n return uploadVideoIfNeeded(data).then(() => saveAds(data, context));\r\n};\r\n\r\n","import React from 'react';\r\nimport _ from 'underscore';\r\nimport classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { Radio, RadioGroup, Text } from '@fluentui/react-components';\r\nimport { ContentViewRegular, ImageMultipleRegular, VideoRegular } from '@fluentui/react-icons';\r\n\r\nconst iconSize = 24;\r\n\r\nconst getStyles = () => ({\r\n titleContainer: {\r\n marginBottom: 20,\r\n },\r\n adFormatContainer: {\r\n maxWidth: 530,\r\n marginBottom: 12,\r\n },\r\n radioGroup: {\r\n alignItems: 'stretch !important',\r\n },\r\n radioOption: {\r\n flex: 1,\r\n background: 'white',\r\n margin: 3,\r\n padding: 12,\r\n borderRadius: 4,\r\n border: '1px solid #E1DFDD',\r\n justifyContent: 'start',\r\n\r\n '& .fui-Radio__indicator': {\r\n position: 'absolute',\r\n top: 4,\r\n right: 4,\r\n display: 'none',\r\n\r\n '& svg': {\r\n marginLeft: 1.5,\r\n },\r\n },\r\n\r\n '& .fui-Radio__label': {\r\n flex: 1,\r\n },\r\n\r\n '&.selected .fui-Radio__indicator': {\r\n display: 'block',\r\n },\r\n\r\n '&.selected': {\r\n border: '1px solid #0078D4',\r\n },\r\n },\r\n labelContainer: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'start',\r\n minHeight: 135,\r\n },\r\n label: {\r\n display: 'flex',\r\n fontSize: 16,\r\n marginBottom: 5,\r\n\r\n '& svg': {\r\n paddingRight: 4,\r\n },\r\n },\r\n});\r\n\r\nexport const AdFormat = {\r\n Native: 'Native',\r\n Display: 'Display',\r\n Video: 'Video',\r\n};\r\n\r\nconst OptionConfigs = {\r\n [AdFormat.Native]: {\r\n label: _TL_('Native'),\r\n description: _TL_('Show personalized, responsive, and visually rich ads based on your assets.'),\r\n getIcon: () => ,\r\n },\r\n [AdFormat.Display]: {\r\n label: _TL_('Display'),\r\n description: _TL_('Showcase eye-catching, customized image ads.'),\r\n getIcon: () => ,\r\n },\r\n [AdFormat.Video]: {\r\n label: _TL_('Video'),\r\n description: _TL_('Engage viewers as they browse the web and watch videos.'),\r\n getIcon: () => ,\r\n },\r\n};\r\n\r\nexport const AdFormatOption = ({\r\n value,\r\n onChange,\r\n i18n,\r\n disabled,\r\n showHeader,\r\n}) => {\r\n const classes = useDefaultStyles(getStyles);\r\n\r\n return (\r\n
    \r\n {showHeader && (\r\n
    \r\n

    {i18n.getString(disabled ? _TL_('Edit ads') : _TL_('Create ads'))}

    \r\n {i18n.getString(_TL_('Show compelling ads to your ideal audience across the Microsoft Advertising Network.'))}\r\n
    \r\n )}\r\n onChange(data.value)}\r\n value={value}\r\n layout=\"horizontal-stacked\"\r\n disabled={disabled}\r\n >\r\n {_.keys(AdFormat).map(key => (\r\n \r\n
    \r\n {OptionConfigs[AdFormat[key]].getIcon()}\r\n {i18n.getString(OptionConfigs[AdFormat[key]].label)}\r\n
    \r\n \r\n {i18n.getString(OptionConfigs[AdFormat[key]].description)}\r\n \r\n
    \r\n }\r\n />\r\n ))}\r\n \r\n \r\n );\r\n};\r\n\r\nAdFormatOption.propTypes = {\r\n value: PropTypes.string.isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n disabled: PropTypes.bool,\r\n showHeader: PropTypes.bool,\r\n};\r\n\r\nAdFormatOption.defaultProps = {\r\n disabled: false,\r\n showHeader: true,\r\n};\r\n","import React, { useState, useMemo, useEffect, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { noop, get } from 'underscore';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport SharedBudgetSwitchView from '@bingads-webui-campaign-legacy/shared-budget/view/shared-budget-switch-editor';\r\nimport Budget from '@bingads-webui-campaign-legacy/budget/view/budget';\r\nimport { withCustomValidation } from '@bingads-webui-react/validation';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { ValidatedLegacyBidStrategy } from '@bingads-webui-campaign/bid-strategy';\r\nimport types from '@bingads-webui-campaign-legacy/bidding-strategy/bidding-strategy-type';\r\nimport { getBudgetStyles } from '../styles/bid-strategy-styles';\r\n\r\nconst AudienceBudgetBidStrategyInternal = ({\r\n data,\r\n classes,\r\n updateValidation,\r\n campaignType,\r\n campaignSubType,\r\n isEnableMSANDisplayCampaignsEnabled,\r\n isEnableMSANVideoCampaignsEnabled,\r\n setBudgetView,\r\n hideBidStrategy,\r\n activity,\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n const campaign = useMemo(() => (\r\n isEnableMSANDisplayCampaignsEnabled || isEnableMSANVideoCampaignsEnabled ? data : data.campaign\r\n ), [data, isEnableMSANDisplayCampaignsEnabled, isEnableMSANVideoCampaignsEnabled]);\r\n const bidStrategyName = get(data, ['campaign', 'BidStrategyName'], '');\r\n\r\n const [sharedBudgetRef, setSharedBudgetRef] = useState();\r\n\r\n const sharedBudget = useMemo(() => {\r\n const factory = SharedBudgetSwitchView.newFactory(Budget);\r\n\r\n const sharedBudgetView = factory({\r\n accountCurrencyCode: 'USD',\r\n model: undefined,\r\n withRealTimeUpdates: true,\r\n });\r\n\r\n sharedBudgetView.render();\r\n\r\n return sharedBudgetView;\r\n }, []);\r\n\r\n const onBudgetChange = () => {\r\n const budget = sharedBudget.getValues();\r\n const isValid = sharedBudget.validate();\r\n if (activity) {\r\n activity.signal(`onBudgetChange - ${JSON.stringify(budget)} - isValid: ${isValid}}`);\r\n }\r\n updateValidation(isValid ? [] : [i18n.getString(_TL_('Invalid budget'))], { BudgetId: budget && budget.Id, Budget: { Amount: budget && budget.Amount, Id: budget && budget.Id, Type: budget && budget.Type } });\r\n };\r\n\r\n useEffect(() => {\r\n if (setBudgetView && sharedBudget) {\r\n setBudgetView(sharedBudget);\r\n }\r\n }, [sharedBudget, setBudgetView]);\r\n\r\n useEffect(() => {\r\n if (sharedBudgetRef) {\r\n sharedBudgetRef.innerHTML = '';\r\n sharedBudgetRef.append(sharedBudget.el);\r\n\r\n sharedBudget.update(campaign.Budget);\r\n sharedBudget.budgetView.on('budget.updated', onBudgetChange);\r\n sharedBudget.budgetView.on('change', onBudgetChange);\r\n sharedBudget.grid.gridView.on('didUpdate', onBudgetChange);\r\n sharedBudget.viewModel.sharedBudgetSwitch.subscribe(() => {\r\n onBudgetChange();\r\n });\r\n }\r\n\r\n return noop;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [sharedBudgetRef]);\r\n\r\n useEffect(() => {\r\n sharedBudget.viewModel.isCPSSelected(campaign.BiddingScheme.Type === types.costPerSale);\r\n sharedBudget.viewModel.sharedBudgetIsNotAllowedWarning(i18n.getString(_TL_('Shared budget is not allowed if CPS is selected')));\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [campaign.BiddingScheme.Type]);\r\n\r\n return (\r\n
    \r\n
    \r\n
    setSharedBudgetRef(newRef)} />\r\n
    \r\n {!hideBidStrategy &&\r\n
    \r\n \r\n
    \r\n }\r\n
    \r\n );\r\n};\r\n\r\nAudienceBudgetBidStrategyInternal.protoTypes = {\r\n classes: PropTypes.shape({\r\n pickerContainer: PropTypes.string.isRequired,\r\n }).isRequired,\r\n data: PropTypes.shape({\r\n campaign: PropTypes.shape({\r\n Budget: PropTypes.shape({\r\n Amount: PropTypes.number,\r\n Id: PropTypes.number,\r\n Type: PropTypes.string,\r\n }),\r\n BiddingScheme: PropTypes.shape({\r\n Type: PropTypes.string,\r\n BidStrategyId: PropTypes.number,\r\n }),\r\n BidStrategyName: PropTypes.string,\r\n }),\r\n }).isRequired,\r\n updateValidation: PropTypes.func.isRequired,\r\n campaignType: PropTypes.string.isRequired,\r\n campaignSubType: PropTypes.string,\r\n isEnableMSANDisplayCampaignsEnabled: PropTypes.bool,\r\n isEnableMSANVideoCampaignsEnabled: PropTypes.bool,\r\n setBudgetView: PropTypes.func,\r\n hideBidStrategy: PropTypes.bool,\r\n activity: PropTypes.shape({\r\n signal: PropTypes.func,\r\n }),\r\n};\r\n\r\nAudienceBudgetBidStrategyInternal.defaultProps = {\r\n campaignSubType: undefined,\r\n isEnableMSANDisplayCampaignsEnabled: false,\r\n isEnableMSANVideoCampaignsEnabled: false,\r\n setBudgetView: undefined,\r\n hideBidStrategy: false,\r\n activity: undefined,\r\n};\r\n\r\nexport const AudienceBudgetBidStrategy = withCustomValidation(withDefaultStyles(AudienceBudgetBidStrategyInternal, getBudgetStyles));\r\n","import {\r\n audienceAssociationSectionStyle,\r\n commonDoubleListBoxStyle,\r\n convertToLocalStyle,\r\n glyphIconStyle,\r\n helpbuttonStyle,\r\n paginationStyle,\r\n searchboxStyle,\r\n uiblockerStyle,\r\n audienceModalStyles,\r\n audienceExpressionStyle,\r\n audienceCombinedListStyle,\r\n tableStyle,\r\n sharedBudgetGridWrapper,\r\n containerBudgetStyle,\r\n} from '@bingads-webui-campaign-react/common-styles';\r\nimport {\r\n audienceTargetsSettingsStyles,\r\n criterionSettingCompanyStyles,\r\n audienceCampaignSettingsStyles,\r\n} from '@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles';\r\n\r\nexport const getBudgetStyles = (_, { palette }) => ({\r\n '@global': {\r\n ...uiblockerStyle({ palette }),\r\n ...audienceModalStyles({ palette }, { modalWidth: 500 }),\r\n ...audienceExpressionStyle(),\r\n ...audienceCombinedListStyle({ palette }),\r\n },\r\n pickerContainer: {\r\n ...audienceCampaignSettingsStyles({ palette }),\r\n ...containerBudgetStyle({ palette }),\r\n ...sharedBudgetGridWrapper({ palette }),\r\n ...criterionSettingCompanyStyles({ palette }, { targetGridWidth: 816 }),\r\n ...audienceAssociationSectionStyle({ palette }, { singleListBoxWidth: 450 }),\r\n ...audienceTargetsSettingsStyles({ palette }),\r\n ...commonDoubleListBoxStyle({ palette }),\r\n ...paginationStyle({ palette }),\r\n ...tableStyle({ palette }),\r\n ...searchboxStyle({ palette }),\r\n ...convertToLocalStyle(glyphIconStyle({ palette })),\r\n ...convertToLocalStyle(helpbuttonStyle({ palette })),\r\n '& .statusEnabled_icon::before': {\r\n color: '#107c10',\r\n content: '\"\\\\ECCC\"',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n },\r\n '& .statusPaused_icon::before': { // Todo: find icons for status disabled etc.\r\n color: '#323130',\r\n content: '\"\\\\F6B0\"',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n },\r\n '& .statusExcluded_icon::before': { // Todo: find icons for status disabled etc.\r\n color: '#A80000',\r\n content: '\"\\\\E733\"',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n },\r\n },\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { Stack, Shimmer } from '@fluentui/react';\r\n\r\nexport const SectionShimmer = ({ count }) => (\r\n \r\n {_.range(count).map(index => ())}\r\n \r\n);\r\n\r\nSectionShimmer.propTypes = {\r\n count: PropTypes.number,\r\n};\r\n\r\nSectionShimmer.defaultProps = {\r\n count: 3,\r\n};\r\n","import React, { useEffect, useMemo, useState, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { noop, every, pluck } from 'underscore';\r\nimport { criterionHelper } from '@bingads-webui-campaign/audience-campaign-shared';\r\nimport { CompanyNameTargetSetting } from '@bingads-webui-campaign/audience-criterion-setting';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { withCustomValidation } from '@bingads-webui-react/validation';\r\nimport { AudienceTargetInfo } from '@bingads-webui-campaign/audience-target-info';\r\nimport { ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { getCompanyTargetStyles } from './styles/company-target-styles';\r\n\r\nexport const formatCompany = ({ companyNameTargets, i18n }) => {\r\n if (!companyNameTargets || !companyNameTargets.length) {\r\n return i18n.getString(_TL_('Target Companies'));\r\n }\r\n\r\n if (companyNameTargets.length === 1) {\r\n return i18n.getString(_TL_('Targeted: 1 company'));\r\n }\r\n\r\n return i18n.getString(_TL_('Targeted: {{count}} companies'), { count: (companyNameTargets.length) });\r\n};\r\n\r\nconst UnstyledCompanyPicker = (props) => {\r\n const {\r\n classes,\r\n updateValidation,\r\n validationProps,\r\n showExclusion,\r\n } = props;\r\n\r\n const { data: { companyNameTargets, negativeCompanyNameTargets } } = validationProps;\r\n\r\n const [companyAssociationRef, setCompanyAssociationRef] = useState();\r\n\r\n const activity = useContext(ActivityContext);\r\n\r\n const currentLevelTargetInfo = useMemo(() => (\r\n new AudienceTargetInfo({\r\n resourceName: 'AdGroupCriterion',\r\n isForVNext: true,\r\n initAudienceAssociationView: false,\r\n })), []);\r\n\r\n const companyAssociationView = useMemo(() => {\r\n const companyView = new CompanyNameTargetSetting({\r\n criterionType: 'CompanyName',\r\n type: 'CompanyName',\r\n showBidOnlyNote: false,\r\n showExclusion,\r\n defaultBidAdjustment: 0,\r\n isForVNext: true,\r\n currentLevelTargetInfo,\r\n });\r\n\r\n companyView.render();\r\n\r\n return companyView;\r\n }, [currentLevelTargetInfo, showExclusion]);\r\n\r\n const onChange = () => {\r\n const updatedItems = companyAssociationView.currentLevelTargetInfo.getSnapshot(false);\r\n\r\n const companyNameTarget = updatedItems.filter(({ CriterionType }) => (CriterionType === 'CompanyName'))\r\n .map(({ Criterion }) => {\r\n const { CompanyNameCriterion } = Criterion;\r\n\r\n return CompanyNameCriterion;\r\n });\r\n\r\n const negativeCompanyNameTarget = updatedItems.filter(({ CriterionType }) => (CriterionType === 'NegativeCompanyName'))\r\n .map(({ Criterion }) => {\r\n const { CompanyNameCriterion } = Criterion;\r\n\r\n return CompanyNameCriterion;\r\n });\r\n\r\n updateValidation([], { companyNameTargets: companyNameTarget, negativeCompanyNameTargets: negativeCompanyNameTarget });\r\n\r\n if (activity) {\r\n activity.signal(`onCompanyTargetChange - ${JSON.stringify({ companies: companyNameTarget })}`);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (companyAssociationRef) {\r\n companyAssociationRef.innerHTML = '';\r\n companyAssociationRef.append(companyAssociationView.el);\r\n\r\n currentLevelTargetInfo.off('AdGroupCriterionCompanyNameChanged', onChange);\r\n\r\n const currentTargets = currentLevelTargetInfo.getSnapshot(false).filter(({ CriterionType }) => (CriterionType === 'CompanyName'));\r\n const currentNegativeTargets = currentLevelTargetInfo.getSnapshot(false).filter(({ CriterionType }) => (CriterionType === 'NegativeCompanyName'));\r\n\r\n // check if the current targets are the same as the selected targets\r\n const isCompanyTargetSame = every(currentTargets, ((target) => {\r\n const { Criterion } = target;\r\n\r\n const { CompanyNameCriterion } = Criterion;\r\n\r\n return pluck(companyNameTargets, 'Target').includes(CompanyNameCriterion.Target);\r\n }));\r\n\r\n // check if the current targets are the same as the selected targets\r\n const isNegativeCompanyTargetSame = every(currentNegativeTargets, ((target) => {\r\n const { Criterion } = target;\r\n\r\n const { CompanyNameCriterion } = Criterion;\r\n\r\n return pluck(negativeCompanyNameTargets, 'Target').includes(CompanyNameCriterion.Target);\r\n }));\r\n\r\n if (companyNameTargets && (currentTargets.length !== companyNameTargets.length || !isCompanyTargetSame)) {\r\n companyNameTargets.forEach((companyTarget) => {\r\n const criterionData = {\r\n ...companyTarget,\r\n Id: companyTarget.Target,\r\n };\r\n\r\n const criterion = criterionHelper.buildLinkedInCriterion(\r\n 'CompanyName',\r\n criterionData,\r\n true,\r\n 0,\r\n 0\r\n );\r\n currentLevelTargetInfo.createAsync(criterion);\r\n });\r\n }\r\n\r\n if (negativeCompanyNameTargets && (currentNegativeTargets.length !== negativeCompanyNameTargets.length || !isNegativeCompanyTargetSame)) {\r\n negativeCompanyNameTargets.forEach((companyTarget) => {\r\n const criterionData = {\r\n ...companyTarget,\r\n Id: companyTarget.Target,\r\n };\r\n\r\n const criterion = criterionHelper.buildLinkedInCriterion(\r\n 'CompanyName',\r\n criterionData,\r\n false,\r\n 0,\r\n 0\r\n );\r\n currentLevelTargetInfo.createAsync(criterion);\r\n });\r\n }\r\n\r\n currentLevelTargetInfo.on('AdGroupCriterionCompanyNameChanged', onChange);\r\n }\r\n\r\n return noop;\r\n }, [companyAssociationView, companyAssociationRef, companyNameTargets, negativeCompanyNameTargets]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n return (\r\n
    \r\n
    setCompanyAssociationRef(newRef)} />\r\n
    \r\n );\r\n};\r\n\r\nUnstyledCompanyPicker.propTypes = {\r\n classes: PropTypes.shape({\r\n pickerContainer: PropTypes.string.isRequired,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n validationProps: PropTypes.shape({\r\n data: PropTypes.shape({\r\n companyNameTargets: PropTypes.arrayOf(PropTypes.shape([])),\r\n negativeCompanyNameTargets: PropTypes.arrayOf(PropTypes.shape([])),\r\n }),\r\n }).isRequired,\r\n updateValidation: PropTypes.func.isRequired,\r\n showExclusion: PropTypes.bool,\r\n};\r\n\r\nUnstyledCompanyPicker.defaultProps = {\r\n showExclusion: true,\r\n};\r\n\r\nexport const ValidatedCompanyPicker = withDefaultStyles(withCustomValidation(UnstyledCompanyPicker), getCompanyTargetStyles);\r\n","import {\r\n audienceAssociationSectionStyle,\r\n commonDoubleListBoxStyle,\r\n convertToLocalStyle,\r\n glyphIconStyle,\r\n helpbuttonStyle,\r\n paginationStyle,\r\n searchboxStyle,\r\n uiblockerStyle,\r\n audienceModalStyles,\r\n audienceExpressionStyle,\r\n audienceCombinedListStyle,\r\n tableStyle,\r\n} from '@bingads-webui-campaign-react/common-styles';\r\nimport {\r\n audienceTargetsSettingsStyles,\r\n criterionSettingCompanyStyles,\r\n} from '@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles';\r\n\r\nexport const getCompanyTargetStyles = (_, { palette }) => ({\r\n '@global': {\r\n ...uiblockerStyle({ palette }),\r\n ...audienceModalStyles({ palette }, { modalWidth: 500 }),\r\n ...audienceExpressionStyle(),\r\n ...audienceCombinedListStyle({ palette }),\r\n },\r\n pickerContainer: {\r\n ...criterionSettingCompanyStyles({ palette }, { targetGridWidth: 816 }),\r\n ...audienceAssociationSectionStyle({ palette }, { singleListBoxWidth: 450 }),\r\n ...audienceTargetsSettingsStyles({ palette }),\r\n ...commonDoubleListBoxStyle({ palette }),\r\n ...paginationStyle({ palette }),\r\n ...tableStyle({ palette }),\r\n ...searchboxStyle({ palette }),\r\n ...convertToLocalStyle(glyphIconStyle({ palette })),\r\n ...convertToLocalStyle(helpbuttonStyle({ palette })),\r\n '& .statusEnabled_icon::before': {\r\n color: '#107c10',\r\n content: '\"\\\\ECCC\"',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n },\r\n '& .statusPaused_icon::before': { // Todo: find icons for status disabled etc.\r\n color: '#323130',\r\n content: '\"\\\\F6B0\"',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n },\r\n '& .statusExcluded_icon::before': { // Todo: find icons for status disabled etc.\r\n color: '#A80000',\r\n content: '\"\\\\E733\"',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n },\r\n },\r\n});\r\n","import React, { useContext, useEffect, useMemo, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { noop, every } from 'underscore';\r\nimport { JobFunctionTargetSetting } from '@bingads-webui-campaign/audience-criterion-setting';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { withCustomValidation } from '@bingads-webui-react/validation';\r\nimport { AudienceTargetInfo } from '@bingads-webui-campaign/audience-target-info';\r\nimport { criterionHelper } from '@bingads-webui-campaign/audience-campaign-shared';\r\nimport { ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { getJobFunctionTargetStyles } from './styles/job-function-target-styles';\r\n\r\nexport const formatJobFunction = ({ jobTargets, i18n }) => {\r\n if (!jobTargets || !jobTargets.length) {\r\n return i18n.getString(_TL_('Target Jobs'));\r\n }\r\n\r\n if (jobTargets.length === 1) {\r\n return i18n.getString(_TL_('Targeted: 1 job'));\r\n }\r\n\r\n return i18n.getString(_TL_('Targeted: {{count}} jobs'), { count: (jobTargets.length) });\r\n};\r\n\r\nconst UnstyledJobFunctionPicker = (props) => {\r\n const {\r\n classes,\r\n updateValidation,\r\n validationProps,\r\n showExclusion,\r\n } = props;\r\n const { data: { jobTargets, negativeJobTargets } } = validationProps;\r\n\r\n const [jobFunctionAssociationRef, setJobFunctionAssociationRef] = useState();\r\n\r\n const activity = useContext(ActivityContext);\r\n\r\n const currentLevelTargetInfo = useMemo(() => (\r\n new AudienceTargetInfo({\r\n resourceName: 'AdGroupCriterion',\r\n isForVNext: true,\r\n initAudienceAssociationView: false,\r\n })), []);\r\n\r\n const jobFunctionAssociationView = useMemo(() => {\r\n const jobFunctionView = new JobFunctionTargetSetting({\r\n criterionType: 'JobFunction',\r\n type: 'JobFunction',\r\n showBidOnlyNote: false,\r\n showExclusion,\r\n defaultBidAdjustment: 0,\r\n isForVNext: true,\r\n currentLevelTargetInfo,\r\n });\r\n\r\n jobFunctionView.render();\r\n\r\n return jobFunctionView;\r\n }, [currentLevelTargetInfo, showExclusion]);\r\n\r\n const onChange = () => {\r\n const updatedItems = jobFunctionAssociationView.currentLevelTargetInfo.getSnapshot(false);\r\n\r\n const jobTarget = updatedItems.filter(({ CriterionType }) => (CriterionType === 'JobFunction'))\r\n .map(({ Criterion }) => {\r\n const { JobFunctionCriterion } = Criterion;\r\n\r\n return JobFunctionCriterion.Target;\r\n });\r\n\r\n const negativeJobTarget = updatedItems.filter(({ CriterionType }) => (CriterionType === 'NegativeJobFunction'))\r\n .map(({ Criterion }) => {\r\n const { JobFunctionCriterion } = Criterion;\r\n\r\n return JobFunctionCriterion.Target;\r\n });\r\n\r\n updateValidation([], { jobTargets: jobTarget, negativeJobTargets: negativeJobTarget });\r\n\r\n if (activity) {\r\n activity.signal(`onIndustryTargetChange - ${JSON.stringify({ jobFunction: jobTarget })}`);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (jobFunctionAssociationRef) {\r\n jobFunctionAssociationRef.innerHTML = '';\r\n jobFunctionAssociationRef.append(jobFunctionAssociationView.el);\r\n\r\n jobFunctionAssociationView.searchView.initializeSearchDataTask.then(() => {\r\n currentLevelTargetInfo.off('AdGroupCriterionJobFunctionChanged', onChange);\r\n\r\n const allJobTargets = jobFunctionAssociationView.searchView.searchResultView.items.map(item => item);\r\n\r\n if (jobTargets && jobTargets.length > 0) {\r\n const selectedJobTargets = allJobTargets.filter(({ id }) => jobTargets.includes(id));\r\n\r\n const currentTargets = currentLevelTargetInfo.getSnapshot(false).filter(({ CriterionType }) => (CriterionType === 'JobFunction'));\r\n\r\n // check if the current targets are the same as the selected targets\r\n const isSame = every(currentTargets, ((target) => {\r\n const { Criterion } = target;\r\n\r\n const { JobFunctionCriterion } = Criterion;\r\n\r\n return jobTargets.includes(JobFunctionCriterion.Target);\r\n }));\r\n\r\n if (currentTargets.length !== selectedJobTargets.length || !isSame) {\r\n selectedJobTargets.forEach((data) => {\r\n const criterion = criterionHelper.buildLinkedInCriterion(\r\n 'JobFunction',\r\n data,\r\n true,\r\n 0,\r\n 0\r\n );\r\n\r\n\r\n currentLevelTargetInfo.createAsync(criterion);\r\n });\r\n }\r\n }\r\n\r\n if (negativeJobTargets && negativeJobTargets.length > 0) {\r\n const selectedNegativeJobTargets = allJobTargets.filter(({ id }) => negativeJobTargets.includes(id));\r\n\r\n const currentNegativeTargets = currentLevelTargetInfo.getSnapshot(false).filter(({ CriterionType }) => (CriterionType === 'NegativeJobFunction'));\r\n\r\n // check if the current targets are the same as the selected targets\r\n const isSame = every(currentNegativeTargets, ((target) => {\r\n const { Criterion } = target;\r\n\r\n const { JobFunctionCriterion } = Criterion;\r\n\r\n return negativeJobTargets.includes(JobFunctionCriterion.Target);\r\n }));\r\n\r\n if (currentNegativeTargets.length !== selectedNegativeJobTargets.length || !isSame) {\r\n selectedNegativeJobTargets.forEach((data) => {\r\n const criterion = criterionHelper.buildLinkedInCriterion(\r\n 'JobFunction',\r\n data,\r\n false,\r\n 0,\r\n 0\r\n );\r\n\r\n currentLevelTargetInfo.createAsync(criterion);\r\n });\r\n }\r\n }\r\n }).then(() => currentLevelTargetInfo.on('AdGroupCriterionJobFunctionChanged', onChange));\r\n\r\n return () => {\r\n currentLevelTargetInfo.off('AdGroupCriterionJobFunctionChanged', onChange);\r\n };\r\n }\r\n\r\n return noop;\r\n }, [jobFunctionAssociationRef, jobTargets, negativeJobTargets]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n return (\r\n
    \r\n
    setJobFunctionAssociationRef(newRef)} />\r\n
    \r\n );\r\n};\r\n\r\nUnstyledJobFunctionPicker.propTypes = {\r\n classes: PropTypes.shape({\r\n pickerContainer: PropTypes.string.isRequired,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n validationProps: PropTypes.shape({\r\n data: PropTypes.shape({\r\n jobTargets: PropTypes.arrayOf(PropTypes.shape([])),\r\n negativeJobTargets: PropTypes.arrayOf(PropTypes.shape([])),\r\n }),\r\n }).isRequired,\r\n updateValidation: PropTypes.func.isRequired,\r\n showExclusion: PropTypes.bool,\r\n};\r\n\r\nUnstyledJobFunctionPicker.defaultProps = {\r\n showExclusion: true,\r\n};\r\n\r\nexport const ValidatedJobFunctionPicker = withDefaultStyles(withCustomValidation(UnstyledJobFunctionPicker), getJobFunctionTargetStyles);\r\n\r\n","import {\r\n audienceAssociationSectionStyle,\r\n commonDoubleListBoxStyle,\r\n convertToLocalStyle,\r\n glyphIconStyle,\r\n helpbuttonStyle,\r\n paginationStyle,\r\n searchboxStyle,\r\n uiblockerStyle,\r\n audienceModalStyles,\r\n audienceExpressionStyle,\r\n audienceCombinedListStyle,\r\n tableStyle,\r\n} from '@bingads-webui-campaign-react/common-styles';\r\nimport {\r\n audienceTargetsSettingsStyles,\r\n criterionSettingJobFunctionStyles,\r\n} from '@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles';\r\n\r\nexport const getJobFunctionTargetStyles = (_, { palette }) => ({\r\n '@global': {\r\n ...uiblockerStyle({ palette }),\r\n ...audienceModalStyles({ palette }, { modalWidth: 500 }),\r\n ...audienceExpressionStyle(),\r\n ...audienceCombinedListStyle({ palette }),\r\n },\r\n pickerContainer: {\r\n ...criterionSettingJobFunctionStyles({ palette }, { targetGridWidth: 816 }),\r\n ...audienceAssociationSectionStyle({ palette }, { singleListBoxWidth: 450 }),\r\n ...audienceTargetsSettingsStyles({ palette }),\r\n ...commonDoubleListBoxStyle({ palette }),\r\n ...paginationStyle({ palette }),\r\n ...tableStyle({ palette }),\r\n ...searchboxStyle({ palette }),\r\n ...convertToLocalStyle(glyphIconStyle({ palette })),\r\n ...convertToLocalStyle(helpbuttonStyle({ palette })),\r\n '& .statusEnabled_icon::before': {\r\n color: '#107c10',\r\n content: '\"\\\\ECCC\"',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n },\r\n '& .statusPaused_icon::before': { // Todo: find icons for status disabled etc.\r\n color: '#323130',\r\n content: '\"\\\\F6B0\"',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n },\r\n '& .statusExcluded_icon::before': { // Todo: find icons for status disabled etc.\r\n color: '#A80000',\r\n content: '\"\\\\E733\"',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n },\r\n },\r\n});\r\n","import React, { useEffect, useMemo, useState, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { flatten, noop, every } from 'underscore';\r\nimport { IndustryTargetSetting } from '@bingads-webui-campaign/audience-criterion-setting';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { withCustomValidation } from '@bingads-webui-react/validation';\r\nimport { AudienceTargetInfo } from '@bingads-webui-campaign/audience-target-info';\r\nimport { criterionHelper } from '@bingads-webui-campaign/audience-campaign-shared';\r\nimport { ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { getIndustryTargetStyles } from './styles/industry-target-styles';\r\n\r\nexport const formatIndustry = ({ industry, i18n }) => {\r\n if (!industry || !industry.length) {\r\n return i18n.getString(_TL_('Target Industries'));\r\n }\r\n\r\n if (industry.length === 1) {\r\n return i18n.getString(_TL_('Targeted: 1 industry'));\r\n }\r\n\r\n return i18n.getString(_TL_('Targeted: {{count}} industries'), { count: (industry.length) });\r\n};\r\n\r\n\r\nconst UnstyledIndustryPicker = (props) => {\r\n const {\r\n classes,\r\n updateValidation,\r\n validationProps,\r\n showExclusion,\r\n } = props;\r\n\r\n const { data: { industry, negativeIndustry } } = validationProps;\r\n\r\n const activity = useContext(ActivityContext);\r\n\r\n const [industryAssociationRef, setIndustryAssociationRef] = useState();\r\n\r\n const currentLevelTargetInfo = useMemo(() => (\r\n new AudienceTargetInfo({\r\n resourceName: 'AdGroupCriterion',\r\n isForVNext: true,\r\n initAudienceAssociationView: false,\r\n })), []);\r\n\r\n const industryAssociationView = useMemo(() => {\r\n const industryView = new IndustryTargetSetting({\r\n criterionType: 'Industry',\r\n type: 'Industry',\r\n showBidOnlyNote: false,\r\n showExclusion,\r\n defaultBidAdjustment: 0,\r\n isForVNext: true,\r\n currentLevelTargetInfo,\r\n });\r\n\r\n industryView.render();\r\n\r\n return industryView;\r\n }, [currentLevelTargetInfo, showExclusion]);\r\n\r\n const onChange = () => {\r\n const updatedItems = industryAssociationView.currentLevelTargetInfo.getSnapshot(false);\r\n\r\n const industryTargets = updatedItems.filter(({ CriterionType }) => (CriterionType === 'Industry'))\r\n .map(({ Criterion }) => {\r\n const { IndustryCriterion } = Criterion;\r\n\r\n return IndustryCriterion.Target;\r\n });\r\n\r\n const negativeIndustryTargets = updatedItems.filter(({ CriterionType }) => (CriterionType === 'NegativeIndustry'))\r\n .map(({ Criterion }) => {\r\n const { IndustryCriterion } = Criterion;\r\n\r\n return IndustryCriterion.Target;\r\n });\r\n\r\n updateValidation([], { industry: industryTargets, negativeIndustry: negativeIndustryTargets });\r\n\r\n if (activity) {\r\n activity.signal(`onIndustryTargetChange - ${JSON.stringify({ industry: industryTargets })}`);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (industryAssociationRef) {\r\n industryAssociationRef.innerHTML = '';\r\n industryAssociationRef.append(industryAssociationView.el);\r\n\r\n industryAssociationView.searchView.searchTreeInitializationPromise.then(() => {\r\n currentLevelTargetInfo.off('AdGroupCriterionIndustryChanged', onChange);\r\n\r\n const industryTargets = industryAssociationView.searchView.treeView.node.children.map((child) => {\r\n const { children } = child;\r\n\r\n const innerChildren = children.map(innerChild => innerChild.data);\r\n\r\n return [...innerChildren];\r\n });\r\n\r\n const flatIndustryTargets = flatten(industryTargets);\r\n\r\n if (industry && industry.length > 0) {\r\n const selectedIndustries = flatIndustryTargets.filter(({ Id }) => industry.includes(Id));\r\n\r\n const currentTargets = currentLevelTargetInfo.getSnapshot(false).filter(({ CriterionType }) => (CriterionType === 'Industry'));\r\n\r\n // check if the current targets are the same as the selected targets\r\n const isSame = every(currentTargets, ((target) => {\r\n const { Criterion } = target;\r\n\r\n const { IndustryCriterion } = Criterion;\r\n\r\n return industry.includes(IndustryCriterion.Target);\r\n }));\r\n\r\n if (currentTargets.length !== selectedIndustries.length || !isSame) {\r\n selectedIndustries.forEach((data) => {\r\n const criterion = criterionHelper.buildLinkedInCriterion(\r\n 'Industry',\r\n data,\r\n true,\r\n 0,\r\n 0\r\n );\r\n\r\n\r\n currentLevelTargetInfo.createAsync(criterion);\r\n });\r\n }\r\n }\r\n\r\n if (negativeIndustry && negativeIndustry.length > 0) {\r\n const selectedNegativeIndustries = flatIndustryTargets.filter(({ Id }) => negativeIndustry.includes(Id));\r\n\r\n const currentNegativeTargets = currentLevelTargetInfo.getSnapshot(false).filter(({ CriterionType }) => (CriterionType === 'NegativeIndustry'));\r\n\r\n // check if the current targets are the same as the selected targets\r\n const isSame = every(currentNegativeTargets, ((target) => {\r\n const { Criterion } = target;\r\n\r\n const { IndustryCriterion } = Criterion;\r\n\r\n return negativeIndustry.includes(IndustryCriterion.Target);\r\n }));\r\n\r\n if (currentNegativeTargets.length !== selectedNegativeIndustries.length || !isSame) {\r\n selectedNegativeIndustries.forEach((data) => {\r\n const criterion = criterionHelper.buildLinkedInCriterion(\r\n 'Industry',\r\n data,\r\n false,\r\n 0,\r\n 0\r\n );\r\n\r\n currentLevelTargetInfo.createAsync(criterion);\r\n });\r\n }\r\n }\r\n }).then(() => currentLevelTargetInfo.on('AdGroupCriterionIndustryChanged', onChange));\r\n\r\n return () => {\r\n currentLevelTargetInfo.off('AdGroupCriterionIndustryChanged', onChange);\r\n };\r\n }\r\n return noop;\r\n }, [industryAssociationRef, industry, negativeIndustry]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n return (\r\n
    \r\n
    setIndustryAssociationRef(newRef)} />\r\n
    \r\n );\r\n};\r\n\r\nUnstyledIndustryPicker.propTypes = {\r\n classes: PropTypes.shape({\r\n pickerContainer: PropTypes.string.isRequired,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n validationProps: PropTypes.shape({\r\n data: PropTypes.shape({\r\n industry: PropTypes.arrayOf(PropTypes.shape([])),\r\n negativeIndustry: PropTypes.arrayOf(PropTypes.shape([])),\r\n }),\r\n }).isRequired,\r\n updateValidation: PropTypes.func.isRequired,\r\n showExclusion: PropTypes.bool,\r\n};\r\n\r\nUnstyledIndustryPicker.defaultProps = {\r\n showExclusion: true,\r\n};\r\n\r\nexport const ValidatedIndustryPicker = withDefaultStyles(withCustomValidation(UnstyledIndustryPicker), getIndustryTargetStyles);\r\n","import {\r\n audienceAssociationSectionStyle,\r\n commonDoubleListBoxStyle,\r\n convertToLocalStyle,\r\n glyphIconStyle,\r\n helpbuttonStyle,\r\n paginationStyle,\r\n searchboxStyle,\r\n uiblockerStyle,\r\n audienceModalStyles,\r\n audienceExpressionStyle,\r\n audienceCombinedListStyle,\r\n tableStyle,\r\n} from '@bingads-webui-campaign-react/common-styles';\r\nimport {\r\n audienceTargetsSettingsStyles,\r\n criterionSettingIndustryStyles,\r\n} from '@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles';\r\n\r\nexport const getIndustryTargetStyles = (_, { palette }) => ({\r\n '@global': {\r\n ...uiblockerStyle({ palette }),\r\n ...audienceModalStyles({ palette }, { modalWidth: 500 }),\r\n ...audienceExpressionStyle(),\r\n ...audienceCombinedListStyle({ palette }),\r\n },\r\n pickerContainer: {\r\n ...criterionSettingIndustryStyles({ palette }, { targetGridWidth: 816 }),\r\n ...audienceAssociationSectionStyle({ palette }, { singleListBoxWidth: 450 }),\r\n ...audienceTargetsSettingsStyles({ palette }),\r\n ...commonDoubleListBoxStyle({ palette }),\r\n ...paginationStyle({ palette }),\r\n ...tableStyle({ palette }),\r\n ...searchboxStyle({ palette }),\r\n ...convertToLocalStyle(glyphIconStyle({ palette })),\r\n ...convertToLocalStyle(helpbuttonStyle({ palette })),\r\n '& .statusEnabled_icon::before': {\r\n color: '#107c10',\r\n content: '\"\\\\ECCC\"',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n },\r\n '& .statusPaused_icon::before': { // Todo: find icons for status disabled etc.\r\n color: '#323130',\r\n content: '\"\\\\F6B0\"',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n },\r\n '& .statusExcluded_icon::before': { // Todo: find icons for status disabled etc.\r\n color: '#A80000',\r\n content: '\"\\\\E733\"',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n },\r\n },\r\n});\r\n","import React, { useMemo, useContext, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Label, Stack, Toggle } from '@bingads-webui-react/fabric-control';\r\nimport { HelpPopup } from '@bingads-webui-react/help-popup';\r\nimport { withCustomValidation } from '@bingads-webui-react/validation';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { CampaignSubTypes } from '@bingads-webui-campaign-react/constants';\r\n\r\nconst Title = ({ titleKey }) => {\r\n const i18n = useContext(I18nContext);\r\n const titleText = i18n.getString(titleKey);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nTitle.propTypes = {\r\n titleKey: PropTypes.string.isRequired,\r\n};\r\n\r\nconst PredictiveTargetingControlHeaderInternal = ({\r\n validationProps,\r\n updateValidation,\r\n onToggleEnabledChanged,\r\n campaignSubType,\r\n EnableMSANDisplayCampaigns,\r\n EnableMSANVideoCampaigns,\r\n}) => {\r\n const { data } = validationProps;\r\n\r\n let { UseOptimizedTargeting } = data;\r\n\r\n const activity = useContext(ActivityContext);\r\n\r\n const onChange = (e, checked) => {\r\n updateValidation([], { UseOptimizedTargeting: checked });\r\n\r\n if (activity) {\r\n activity.signal(`onPredectiveTargetingChanged - isPredTargetingEnabled: ${UseOptimizedTargeting}`);\r\n }\r\n };\r\n\r\n const isEnabled = useMemo(() => {\r\n const doesAdGroupHaveAudienceTargeted = data.audiences && data.audiences.length > 0;\r\n const doesAdGroupHaveCompanyNameTarget = (data.companyNameTargets && data.companyNameTargets.length > 0) || (data.negativeCompanyNameTargets && data.negativeCompanyNameTargets.length > 0);\r\n const doesAdGroupHaveJobFunctionTarget = (data.jobTargets && data.jobTargets.length > 0) || (data.negativeJobTargets && data.negativeJobTargets.length > 0);\r\n const doesAdGroupHaveIndustryTarget = (data.industry && data.industry.length > 0) || (data.negativeIndustry && data.negativeIndustry.length > 0);\r\n const doesAdGroupHaveAgeTarget = data.ageRanges && data.ageRanges.length < 6;\r\n const doesAdGroupHaveGenderTarget = data.genderTypes && data.genderTypes.length < 3;\r\n const doesAdGroupHaveDeviceTarget = data.deviceTypes && data.deviceTypes.length < 3;\r\n\r\n const isVideoCampaign = campaignSubType === CampaignSubTypes.BrandAwarenessVideoAds;\r\n\r\n return doesAdGroupHaveAudienceTargeted || doesAdGroupHaveCompanyNameTarget ||\r\n doesAdGroupHaveJobFunctionTarget || doesAdGroupHaveIndustryTarget ||\r\n doesAdGroupHaveAgeTarget || doesAdGroupHaveGenderTarget ||\r\n (isVideoCampaign && EnableMSANVideoCampaigns && doesAdGroupHaveDeviceTarget);\r\n }, [data, EnableMSANVideoCampaigns, campaignSubType]);\r\n\r\n // if no targets and use optimized targeting is disabled it, enable it.\r\n if (!isEnabled && !UseOptimizedTargeting) {\r\n if (EnableMSANDisplayCampaigns || EnableMSANVideoCampaigns) {\r\n UseOptimizedTargeting = true;\r\n }\r\n updateValidation([], { UseOptimizedTargeting: true });\r\n }\r\n\r\n useEffect(() => {\r\n onToggleEnabledChanged(isEnabled);\r\n }, [isEnabled, onToggleEnabledChanged]);\r\n\r\n return (\r\n \r\n \r\n \r\n </Stack>\r\n );\r\n};\r\n\r\nPredictiveTargetingControlHeaderInternal.propTypes = {\r\n updateValidation: PropTypes.func.isRequired,\r\n validationProps: PropTypes.shape({\r\n data: PropTypes.shape({\r\n UseOptimizedTargeting: PropTypes.bool,\r\n audiences: PropTypes.shape([]).isRequired,\r\n companyNameTargets: PropTypes.shape([]).isRequired,\r\n negativeCompanyNameTargets: PropTypes.shape([]).isRequired,\r\n jobTargets: PropTypes.shape([]).isRequired,\r\n negativeJobTargets: PropTypes.shape([]).isRequired,\r\n industry: PropTypes.shape([]).isRequired,\r\n negativeIndustry: PropTypes.shape([]).isRequired,\r\n ageRanges: PropTypes.shape([]).isRequired,\r\n genderTypes: PropTypes.shape([]).isRequired,\r\n deviceTypes: PropTypes.shape([]).isRequired,\r\n }),\r\n }).isRequired,\r\n onToggleEnabledChanged: PropTypes.func.isRequired,\r\n campaignSubType: PropTypes.string.isRequired,\r\n EnableMSANDisplayCampaigns: PropTypes.bool.isRequired,\r\n EnableMSANVideoCampaigns: PropTypes.bool.isRequired,\r\n};\r\n\r\nexport const PredictiveTargetingControlHeader = withCustomValidation(PredictiveTargetingControlHeaderInternal);\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { Label, Stack } from '@bingads-webui-react/fabric-control';\r\nimport { HelpPopup } from '@bingads-webui-react/help-popup';\r\nimport DataTrending from './media/data-trending.svg';\r\n\r\n\r\nconst PredictiveTargetingDescription = ({ i18n }) => (\r\n <div>\r\n {i18n.getString(_TL_('Predictive targeting allows us to optimize your ad reach based on your targeting preferences. You can customize predictive targeting by setting up targeting preferences below.'))}\r\n  <a className=\"HelpTopic\" href=\"#!\" query=\"help:app54818\">{i18n.getString(_TL_('Learn more'))}</a>\r\n </div>\r\n);\r\n\r\nPredictiveTargetingDescription.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n};\r\n\r\nexport const PredictiveTargetingHeader = ({ data }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n const { UseOptimizedTargeting } = data;\r\n\r\n return (\r\n <>\r\n <Stack>\r\n <Stack horizontal tokens={{ childrenGap: 14 }}>\r\n <img src={DataTrending} alt={i18n.getString(_TL_('Predictive targeting logo'))} />\r\n <Stack verticalAlign=\"center\" tokens={{ childrenGap: 14 }}>\r\n <Label className=\"collapse-title\" isActive>\r\n {UseOptimizedTargeting && i18n.getString(_TL_('Predictive targeting is enabled'))}\r\n { !UseOptimizedTargeting && i18n.getString(_TL_('Predictive targeting is not set up for this campaign')) }\r\n <HelpPopup\r\n topic=\"pop_BA_PredictiveTargeting_OptimizedDisabled\"\r\n aria-label={i18n.getString(_TL_('Click to learn more about {{item}}'), { item: 'Predictive Targeting' })}\r\n />\r\n </Label>\r\n <div>\r\n <PredictiveTargetingDescription i18n={i18n} />\r\n </div>\r\n </Stack>\r\n </Stack>\r\n </Stack>\r\n </>\r\n );\r\n};\r\n\r\nPredictiveTargetingHeader.propTypes = {\r\n data: PropTypes.shape({\r\n UseOptimizedTargeting: PropTypes.bool,\r\n }).isRequired,\r\n};\r\n\r\n","import React, { useEffect, useMemo, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useSinglePlacementLayouts } from '@bingads-webui-campaign-react/ad-placement-factory';\r\nimport { evaluateAdCustomizers } from '@bingads-webui-campaign/ad-customizers-next';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getDomain } from '@bingads-webui/url-util';\r\nimport { combineDescriptions } from '@bingads-webui-campaign-react/ad-common';\r\nimport { getPreviewStyles } from './styles';\r\n\r\nconst adType = 'DynamicSearchAd';\r\n\r\nconst DSAPreviewGroupType = 'dynamicSearchAd';\r\n\r\nconst DynamicSearchAdPreviewUAPLUnstyled = ({\r\n classes,\r\n data: {\r\n Text,\r\n TextPart2,\r\n DisplayUrl,\r\n Path1,\r\n Path2,\r\n },\r\n domain,\r\n}) => {\r\n const [description, setDescription] = useState('');\r\n const [urlPath1, setUrlPath1] = useState('');\r\n const [urlPath2, setUrlPath2] = useState('');\r\n\r\n const urlDomain = useMemo(() => getDomain(DisplayUrl) || domain, [DisplayUrl, domain]);\r\n const displayUrl = useMemo(() => `${urlDomain}${urlPath1}${urlPath2}`, [urlDomain, urlPath1, urlPath2]);\r\n const finalUrl = useMemo(() => `https://${displayUrl}`, [displayUrl]);\r\n\r\n const [{ SinglePlacementLayout }] = useSinglePlacementLayouts({\r\n groupType: DSAPreviewGroupType,\r\n placementFilterPredicate: tmp => tmp.type === adType,\r\n });\r\n\r\n useEffect(() => {\r\n evaluateAdCustomizers({\r\n adType,\r\n field: 'Descriptions',\r\n text: combineDescriptions(Text, TextPart2),\r\n }).then((evaluatedText) => {\r\n setDescription(evaluatedText);\r\n });\r\n }, [Text, TextPart2]);\r\n\r\n useEffect(() => {\r\n evaluateAdCustomizers({\r\n adType,\r\n field: 'Path1',\r\n text: Path1,\r\n }).then((evaluatedText) => {\r\n setUrlPath1(evaluatedText ? `/${evaluatedText}` : '');\r\n });\r\n }, [Path1]);\r\n\r\n useEffect(() => {\r\n evaluateAdCustomizers({\r\n adType,\r\n field: 'Path2',\r\n text: Path2,\r\n }).then((evaluatedText) => {\r\n setUrlPath2(evaluatedText ? `/${evaluatedText}` : '');\r\n });\r\n }, [Path2]);\r\n\r\n const adData = useMemo(() => ({\r\n description,\r\n finalUrl,\r\n displayUrl,\r\n }), [description, displayUrl, finalUrl]);\r\n\r\n return (\r\n <div className={classes.adPreviewContainer}>\r\n <SinglePlacementLayout adData={adData} />\r\n </div>\r\n );\r\n};\r\n\r\nDynamicSearchAdPreviewUAPLUnstyled.propTypes = {\r\n classes: PropTypes.shape({\r\n adPreviewContainer: PropTypes.string,\r\n }).isRequired,\r\n data: PropTypes.shape({\r\n Text: PropTypes.string,\r\n TextPart2: PropTypes.string,\r\n DisplayUrl: PropTypes.string,\r\n Path1: PropTypes.string,\r\n Path2: PropTypes.string,\r\n }),\r\n domain: PropTypes.string,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n};\r\n\r\nDynamicSearchAdPreviewUAPLUnstyled.defaultProps = {\r\n data: {},\r\n domain: '',\r\n};\r\n\r\nexport const DynamicSearchAdPreviewUAPL =\r\n withDefaultStyles(DynamicSearchAdPreviewUAPLUnstyled, getPreviewStyles);\r\n","export const getPreviewStyles = () => ({\r\n adPreviewContainer: {\r\n },\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Label } from '@fluentui/react-components';\r\nimport {\r\n getPanelErrorProps,\r\n TextTitle,\r\n ValidatedPanel,\r\n} from '@bingads-webui-campaign/wizard-jumbo-card';\r\nimport {\r\n MessageBar,\r\n MessageBarBody,\r\n MessageBarTitle\r\n} from '@fluentui/react-message-bar';\r\nimport { orComp, propertyIs } from '@bingads-webui-campaign-react/form-error';\r\nimport { DynamicSearchAd } from '@bingads-webui/campaign-odata-schemas';\r\nimport { HelpPopup } from '@bingads-webui-react/help-popup';\r\nimport { LearnMoreLink } from '@bingads-webui-campaign-react/help';\r\nimport { ValidatedTextFieldWithAdCustomizer } from '@bingads-webui-campaign-react/responsive-search-ad-editor';\r\nimport { ValidatedUrlPath } from '@bingads-webui-campaign-react/validated-url-input';\r\nimport { withError } from '@bingads-webui-react/validation';\r\nimport { withControlErrorHandling, withUnvalidatedControlErrors } from '@bingads-webui-campaign-react/error-handling';\r\nimport { useAdCustomizer } from './use-ad-customizer';\r\nimport AdTextImg from '../media/ad-text.svg';\r\n\r\nconst pathProps = orComp(propertyIs('Path1'), propertyIs('Path2'));\r\nconst ServerValidatedUrlPath = withControlErrorHandling(withUnvalidatedControlErrors(ValidatedUrlPath, { filter: pathProps }));\r\n\r\nconst AdTextInternal = ({\r\n i18n,\r\n expand,\r\n data,\r\n domain,\r\n permissions,\r\n scope,\r\n ...rest\r\n}) => {\r\n const {\r\n Text,\r\n TextPart2,\r\n DisplayUrl,\r\n Path1,\r\n Path2,\r\n } = data;\r\n\r\n const { campaignId, adGroupId } = scope;\r\n\r\n useAdCustomizer({\r\n campaignId,\r\n adGroupId,\r\n i18n,\r\n permissions,\r\n });\r\n\r\n return (\r\n <ValidatedPanel\r\n key=\"ad-text\"\r\n title={<TextTitle titleKey={_TL_('Ad text')} topicKey=\"pop_TBD\" icon={AdTextImg} />}\r\n attentionBeaconProps={{ getExtraProps: getPanelErrorProps }}\r\n actuationProps={{\r\n expand,\r\n expandKey: 'ad-text',\r\n }}\r\n {...rest}\r\n >\r\n <div className=\"ad-text-panel\">\r\n <div className=\"final-url\">\r\n <div className=\"field-label\">\r\n <Label weight=\"semibold\">\r\n {i18n.getString(_TL_('Final URL'))}\r\n </Label>\r\n <HelpPopup\r\n topic=\"pop_BA_NewAdCreate_FinalURL\"\r\n aria-label={i18n.getString(_TL_('Click to learn more about Final URL'))}\r\n />\r\n </div>\r\n <div className=\"field-value\">\r\n {i18n.getString(_TL_('Dynamically selected landing page'))}\r\n </div>\r\n </div>\r\n <div className=\"ad-title\">\r\n <div className=\"field-label\">\r\n <Label weight=\"semibold\">\r\n {i18n.getString(_TL_('Ad title'))}\r\n </Label>\r\n <HelpPopup\r\n topic=\"pop_BA_CampaignCreate_Ads_AdTitle\"\r\n aria-label={i18n.getString(_TL_('Click to learn more about Ad title'))}\r\n />\r\n </div>\r\n <div className=\"field-value\">\r\n {i18n.getString(_TL_('Dynamically generated headline'))}\r\n </div>\r\n </div>\r\n <div className=\"ad-text\">\r\n <div className=\"field-label\">\r\n <Label weight=\"semibold\">\r\n {i18n.getString(_TL_('Ad text 1'))}\r\n </Label>\r\n <HelpPopup\r\n topic=\"pop_BA_NewAdCreate_AdText\"\r\n aria-label={i18n.getString(_TL_('Click to learn more about Ad text 1'))}\r\n />\r\n </div>\r\n <div className=\"field-value\">\r\n <ValidatedTextFieldWithAdCustomizer\r\n className=\"input-ad-text\"\r\n i18n={i18n}\r\n adType=\"DynamicSearchAd\"\r\n containerSelector=\".dynamic-search-ad-container\"\r\n validationProps={{\r\n data,\r\n field: 'Text',\r\n schema: DynamicSearchAd,\r\n }}\r\n configProps={{\r\n id: 'Text',\r\n key: 'Descriptions',\r\n placeholder: i18n.getString(_TL_('Enter ad text')),\r\n title: Text,\r\n }}\r\n />\r\n </div>\r\n </div>\r\n <div className=\"ad-text-2\">\r\n <div className=\"field-label\">\r\n <Label weight=\"semibold\">\r\n {i18n.getString(_TL_('Ad text 2'))}\r\n </Label>\r\n <HelpPopup\r\n topic=\"pop_BA_NewAdCreate_AdText2\"\r\n aria-label={i18n.getString(_TL_('Click to learn more about Ad text 2'))}\r\n />\r\n </div>\r\n <div className=\"field-value\">\r\n <ValidatedTextFieldWithAdCustomizer\r\n className=\"input-ad-text-2\"\r\n i18n={i18n}\r\n adType=\"DynamicSearchAd\"\r\n containerSelector=\".dynamic-search-ad-container\"\r\n validationProps={{\r\n data,\r\n field: 'TextPart2',\r\n schema: DynamicSearchAd,\r\n }}\r\n configProps={{\r\n id: 'TextPart2',\r\n key: 'Descriptions',\r\n placeholder: i18n.getString(_TL_('Enter ad text')),\r\n title: TextPart2,\r\n }}\r\n />\r\n </div>\r\n </div>\r\n <div className=\"ad-text-disclaimer\">\r\n <MessageBar className=\"message-bar\">\r\n <MessageBarBody>\r\n <MessageBarTitle>{i18n.getString(_TL_('Note'))}</MessageBarTitle>\r\n <LearnMoreLink\r\n topic=\"app54695\"\r\n text={i18n.getString(_TL_('In addition to your Ad texts, we will generate dynamic search ad text.'))}\r\n linkText={i18n.getString(_TL_('Learn more'))}\r\n />\r\n </MessageBarBody>\r\n </MessageBar>\r\n </div>\r\n <div className=\"ad-path\">\r\n <div className=\"field-label\">\r\n <Label weight=\"semibold\">\r\n {i18n.getString(_TL_('Path'))}\r\n </Label>\r\n <HelpPopup\r\n topic=\"pop_BA_NewAdCreate_DSA_Path\"\r\n aria-label={i18n.getString(_TL_('Click to learn more about Path'))}\r\n />\r\n </div>\r\n <div className=\"field-value\">\r\n <ServerValidatedUrlPath\r\n i18n={i18n}\r\n validationProps={{ data: { Path1, Path2, FinalUrls: [DisplayUrl || domain] } }}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </ValidatedPanel>\r\n );\r\n};\r\n\r\nAdTextInternal.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n data: PropTypes.shape({\r\n Text: PropTypes.string,\r\n TextPart2: PropTypes.string,\r\n DisplayUrl: PropTypes.string,\r\n Path1: PropTypes.string,\r\n Path2: PropTypes.string,\r\n }),\r\n permissions: PropTypes.shape({}).isRequired,\r\n scope: PropTypes.shape({\r\n campaignId: PropTypes.string,\r\n adGroupId: PropTypes.string,\r\n }).isRequired,\r\n domain: PropTypes.string,\r\n onDataChange: PropTypes.func.isRequired,\r\n expand: PropTypes.func.isRequired,\r\n};\r\n\r\nAdTextInternal.defaultProps = {\r\n data: {\r\n Text: '',\r\n TextPart2: '',\r\n DisplayUrl: '',\r\n Path1: '',\r\n Path2: '',\r\n },\r\n domain: '',\r\n};\r\n\r\nexport const AdText = withControlErrorHandling(withUnvalidatedControlErrors(withError(AdTextInternal)));\r\n","import { useContext } from 'react';\r\nimport { InstrumentationContext } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { initializeAdCustomizer } from '@bingads-webui-campaign/ad-customizers-next';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport edmCampaign from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport jsDataCampaign from '@bingads-webui-component-legacy/js-data-campaign/index';\r\n\r\nexport const useAdCustomizer = ({\r\n campaignId,\r\n adGroupId,\r\n i18n,\r\n permissions,\r\n}) => {\r\n const instrumentation = useContext(InstrumentationContext);\r\n\r\n initializeAdCustomizer({\r\n deps: {\r\n i18n,\r\n config,\r\n instrumentation,\r\n permissions,\r\n edmCampaign,\r\n jsDataCampaign,\r\n timeZone: config.get('AccountTimeZone'),\r\n scope: {\r\n campaignId: Number(campaignId),\r\n adGroupId: Number(adGroupId),\r\n },\r\n showAdCustomizers: true,\r\n IsRSAIffPopupEnabledFromDeps: true,\r\n },\r\n adType: 'DynamicSearchAd',\r\n });\r\n};\r\n","export const getStyles = () => ({\r\n container: {\r\n position: 'relative',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n gap: '16px',\r\n },\r\n editor: {\r\n width: '600px',\r\n minWidth: '600px',\r\n\r\n '& .ad-text-panel': {\r\n '& > div + div': {\r\n marginTop: '16px',\r\n },\r\n\r\n '& .field-label': {\r\n padding: '5px 0',\r\n },\r\n\r\n '& .text-input-container': {\r\n width: 'auto',\r\n },\r\n\r\n '& .url-path-container > label': {\r\n display: 'none',\r\n },\r\n },\r\n\r\n '& .error': {\r\n color: '#A80000',\r\n },\r\n },\r\n preview: {\r\n\r\n },\r\n});\r\n","import React, { useCallback, useContext, useMemo, useRef, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { extend, get } from 'underscore';\r\nimport classNames from 'classnames';\r\nimport {\r\n Collapse,\r\n collapseExpander,\r\n useCollapseState,\r\n} from '@bingads-webui-campaign/wizard-jumbo-card';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { buildLegacyI18n } from '@bingads-webui/build-legacy-i18n';\r\nimport { ValidationStringMap } from '@bingads-webui/validation-string-map';\r\nimport { DynamicSearchAd } from '@bingads-webui/campaign-odata-schemas';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { URLOptionsSection } from '@bingads-webui-campaign-react/validated-url-input';\r\nimport { ValidationGroup } from '@bingads-webui-react/validation';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { testUurl, uurlLevels } from '@bingads-webui-component-legacy/upgraded-url/service/testUurl';\r\nimport { DynamicSearchAdPreviewUAPL } from '@bingads-webui-campaign-react/dynamic-search-ad-preview-uapl';\r\n\r\nimport { AdText } from './ad-text';\r\nimport { getStyles } from './style';\r\n\r\nexport const DynamicSearchAdEditor = ({\r\n ad,\r\n onAdChanged,\r\n domain,\r\n permissions,\r\n scope,\r\n alwaysShowError,\r\n}) => {\r\n const classes = useDefaultStyles(getStyles);\r\n const i18n = useContext(I18nContext);\r\n const legacyI18n = useMemo(() => buildLegacyI18n(i18n, [ValidationStringMap]), [i18n]);\r\n\r\n const serverContext = useContext(ServerContext);\r\n const { Token } = serverContext;\r\n\r\n const [cachedAd, setCachedAd] = useState(get(ad, 'data', {}));\r\n\r\n const {\r\n TrackingUrlTemplate, FinalUrlSuffix, UrlCustomParameters,\r\n } = cachedAd;\r\n\r\n const [\r\n allSections,\r\n expandedSections,\r\n setExpandedSections,\r\n ] = useCollapseState(\r\n ['ad-text', 'advanced-url-options'] /* all sections */,\r\n ['ad-text'] /* initially expanded sections */\r\n );\r\n\r\n const settingsExpand = useMemo(\r\n () => collapseExpander({ setActiveKeys: setExpandedSections }),\r\n [setExpandedSections]\r\n );\r\n\r\n const urlOptions = useMemo(() => ({\r\n TrackingUrlTemplate,\r\n FinalUrlSuffix,\r\n UrlCustomParameters,\r\n }), [FinalUrlSuffix, TrackingUrlTemplate, UrlCustomParameters]);\r\n\r\n const urlOptionsDetails = useRef(urlOptions);\r\n urlOptionsDetails.current = urlOptions;\r\n\r\n const triggerTestUurl = useCallback((fn, originalView) => {\r\n extend(originalView, {\r\n isInline: false,\r\n level: uurlLevels.Campaign,\r\n });\r\n const params = urlOptionsDetails.current;\r\n const options = {\r\n apiInLog: 'advancedSettingsUrlOptions/uurlTest',\r\n };\r\n testUurl(fn, originalView, params, scope, options);\r\n }, [scope]);\r\n\r\n const onValidate = useCallback((result) => {\r\n const validatedAd = { ...cachedAd, ...result.data };\r\n setCachedAd(validatedAd);\r\n onAdChanged({ ...result, data: validatedAd });\r\n }, [cachedAd, onAdChanged]);\r\n\r\n return (\r\n <div className={classNames('dynamic-search-ad-container', classes.container)}>\r\n <div className={classNames('dynamic-search-ad-editor', classes.editor)}>\r\n <ValidationGroup\r\n validationProps={{\r\n schema: DynamicSearchAd,\r\n onValidate,\r\n data: cachedAd,\r\n i18n: legacyI18n,\r\n alwaysShowError,\r\n }}\r\n >\r\n <Collapse allPanelItems={allSections} checkItems skipItemsTypeCheck activeKeys={expandedSections} setActiveKeys={setExpandedSections}>\r\n <AdText\r\n key=\"ad-text\"\r\n expand={settingsExpand}\r\n i18n={i18n}\r\n data={cachedAd}\r\n domain={domain}\r\n permissions={permissions}\r\n scope={scope}\r\n onDataChange={onAdChanged}\r\n />\r\n <URLOptionsSection\r\n key=\"advanced-url-options\"\r\n expand={settingsExpand}\r\n trackingUrlTemplate={TrackingUrlTemplate}\r\n finalUrlSuffix={FinalUrlSuffix}\r\n urlCustomParameters={UrlCustomParameters}\r\n token={Token}\r\n triggerTestUurl={triggerTestUurl}\r\n />\r\n </Collapse>\r\n </ValidationGroup>\r\n </div>\r\n <div className={classNames('dynamic-search-ad-preview', classes.preview)}>\r\n <DynamicSearchAdPreviewUAPL\r\n key=\"dynamic-search-ad\"\r\n data={cachedAd}\r\n domain={domain}\r\n i18n={i18n}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nDynamicSearchAdEditor.propTypes = {\r\n ad: PropTypes.shape({\r\n data: PropTypes.shape({}),\r\n isValid: PropTypes.bool,\r\n }),\r\n domain: PropTypes.string,\r\n onAdChanged: PropTypes.func.isRequired,\r\n permissions: PropTypes.shape({}).isRequired,\r\n scope: PropTypes.shape({\r\n customerId: PropTypes.string,\r\n accountId: PropTypes.string,\r\n campaignId: PropTypes.string,\r\n adGroupId: PropTypes.string,\r\n }).isRequired,\r\n alwaysShowError: PropTypes.bool,\r\n};\r\n\r\nDynamicSearchAdEditor.defaultProps = {\r\n ad: {\r\n data: {},\r\n isValid: false,\r\n },\r\n domain: '',\r\n alwaysShowError: false,\r\n};\r\n","\r\nimport { getTheme } from '@fluentui/react';\r\n\r\nconst { palette } = getTheme();\r\n\r\nconst IMAGE_DIM = {\r\n width: 96,\r\n height: 68,\r\n marginRight: 8,\r\n};\r\n\r\nconst paddleWidth = 32;\r\n\r\n// 680 px\r\nconst maxWidthOfUrlField =\r\n (6 * (IMAGE_DIM.width + IMAGE_DIM.marginRight)) + ((paddleWidth * 2) - IMAGE_DIM.marginRight);\r\n\r\nexport const getExtensionImagesControlStyles = () => ({\r\n carouselParent: { maxWidth: maxWidthOfUrlField },\r\n viewAllPlacementsButton: {\r\n right: 20,\r\n position: 'absolute',\r\n color: palette.themePrimary,\r\n '&:active': {\r\n color: palette.themePrimary,\r\n },\r\n },\r\n reCropButton: {\r\n marginRight: 8,\r\n },\r\n});\r\n","import { UAPPlacementTypeAlias as EPT } from '@bingads-webui-campaign-react/unified-ad-preview-library-cmui';\r\n\r\nconst imageExtConfigAll = {\r\n placementConfig: [{\r\n placementSetName: 'imageExtensionConfigAll',\r\n placementTypes: [\r\n EPT.ImageExt.BingDesktopSingleImage,\r\n EPT.ImageExt.BingDesktopMultiImage, // multi-image placement\r\n EPT.ImageExt.BingMobileMultiImage, // multi-image placement\r\n EPT.ImageExt.WideImage,\r\n EPT.ImageExt.MSEdgeSingleCarousel,\r\n EPT.ImageExt.MSEdgeMediumHeadline,\r\n EPT.ImageExt.MSNSingleCarousel,\r\n EPT.ImageExt.MSNMediumHeadline,\r\n EPT.ImageExt.MSNInArticle,\r\n EPT.ImageExt.MSNSmallHeadline,\r\n EPT.ImageExt.SquareImage,\r\n EPT.ImageExt.MSNDoubleCarousel,\r\n ],\r\n }],\r\n};\r\n\r\nconst imageExtConfigAllV2 = {\r\n placementConfig: [{\r\n placementSetName: 'imageExtensionConfigAll',\r\n placementTypes: [\r\n EPT.ImageExt.BingDesktopSingleImage,\r\n EPT.ImageExt.BingDesktopMultiImage, // multi-image placement\r\n EPT.ImageExt.BingMobileMultiImage, // multi-image placement\r\n EPT.ImageExt.MSEdgeMediumHeadline,\r\n EPT.ImageExt.MSEdgeMobile,\r\n EPT.ImageExt.MMAV2MSNRiver,\r\n EPT.ImageExt.MMAV2MSNSingleCarousel,\r\n EPT.ImageExt.MSEdgeSingleCarousel,\r\n EPT.ImageExt.MSNMediumHeadline,\r\n EPT.ImageExt.MSNInArticle,\r\n EPT.ImageExt.MSNSmallHeadline,\r\n EPT.ImageExt.MSNDoubleCarousel,\r\n ],\r\n }],\r\n};\r\n\r\nconst imageExtConfigSingleImage = {\r\n placementConfig: [{\r\n placementSetName: 'imageExtensionConfigSingle',\r\n placementTypes: [\r\n EPT.ImageExt.BingDesktopSingleImage,\r\n EPT.ImageExt.WideImage,\r\n EPT.ImageExt.MSEdgeSingleCarousel,\r\n EPT.ImageExt.MSEdgeMediumHeadline,\r\n EPT.ImageExt.MSNSingleCarousel,\r\n EPT.ImageExt.MSNMediumHeadline,\r\n EPT.ImageExt.MSNInArticle,\r\n EPT.ImageExt.MSNSmallHeadline,\r\n EPT.ImageExt.SquareImage,\r\n EPT.ImageExt.MSNDoubleCarousel,\r\n ],\r\n }],\r\n};\r\n\r\nconst imageExtConfigSingleImageV2 = {\r\n placementConfig: [{\r\n placementSetName: 'imageExtensionConfigSingle',\r\n placementTypes: [\r\n EPT.ImageExt.BingDesktopSingleImage,\r\n EPT.ImageExt.MSEdgeMediumHeadline,\r\n EPT.ImageExt.MSEdgeMobile,\r\n EPT.ImageExt.MMAV2MSNRiver,\r\n EPT.ImageExt.MMAV2MSNSingleCarousel,\r\n EPT.ImageExt.MSEdgeSingleCarousel,\r\n EPT.ImageExt.MSNMediumHeadline,\r\n EPT.ImageExt.MSNInArticle,\r\n EPT.ImageExt.MSNSmallHeadline,\r\n EPT.ImageExt.MSNDoubleCarousel,\r\n ],\r\n }],\r\n};\r\n\r\nconst imageExtConfigAllMultiImage = {\r\n placementConfig: [{\r\n placementSetName: 'imageExtensionConfigMulti',\r\n placementTypes: [\r\n EPT.ImageExt.BingDesktopMultiImage,\r\n EPT.ImageExt.BingMobileMultiImage,\r\n ],\r\n }],\r\n};\r\n\r\nexport const getUnifiedAdPreviewConfig = ({ eligibleLayout, isAdPreviewRefreshEnabled }) => {\r\n if (eligibleLayout === 'Multi') {\r\n return imageExtConfigAllMultiImage;\r\n }\r\n if (eligibleLayout === 'Single') {\r\n return isAdPreviewRefreshEnabled ? imageExtConfigSingleImageV2 : imageExtConfigSingleImage;\r\n }\r\n return isAdPreviewRefreshEnabled ? imageExtConfigAllV2 : imageExtConfigAll;\r\n};\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport { ThemeProvider } from 'react-jss';\r\nimport { ComponentSettings, ThemeFluent } from '@bingads-webui-theme-2018/theme-fluent';\r\nimport { MessageBarType } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport {\r\n ImageExperience,\r\n PreviewCarousel,\r\n UnifiedPreviewCarousel,\r\n ImageExperienceImage,\r\n constants,\r\n} from '@bingads-webui-campaign-react/image-experience';\r\nimport {\r\n SuggestionPoller,\r\n SuggestionStatus,\r\n mapSuggestionResponseToState,\r\n MediaRepository,\r\n} from '@bingads-webui-campaign/media-repository';\r\nimport { ImageSuggestionCarousel } from '@bingads-webui-campaign-react/image-suggestion-carousel';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { isValidUrl } from '@bingads-webui/url-util';\r\nimport { mergeI18n } from '@bingads-webui-campaign-react/i18n-merger';\r\nimport {\r\n getAdCreatorInstrumentation,\r\n instrumentationScenarios,\r\n} from '@bingads-webui-campaign/ad-creator-tools-instrumentation';\r\nimport { InstrumentationContext } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { UiBlocker } from '@bingads-webui-react/ui-blocker';\r\nimport { getExtensionImagesControlStyles } from './styles';\r\nimport { getUnifiedAdPreviewConfig } from './get-unified-ad-preview-config';\r\n\r\nexport class ExtensionImagesControlBase extends React.PureComponent {\r\n static propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n parseDecimal: PropTypes.func.isRequired,\r\n }).isRequired,\r\n genericImage: PropTypes.string.isRequired,\r\n perfMarker: PropTypes.shape({\r\n willFetchFile: PropTypes.func.isRequired,\r\n willInit: PropTypes.func.isRequired,\r\n willFetchData: PropTypes.func.isRequired,\r\n willRender: PropTypes.func.isRequired,\r\n done: PropTypes.func.isRequired,\r\n createChild: PropTypes.func.isRequired,\r\n }),\r\n cid: PropTypes.string.isRequired,\r\n aid: PropTypes.string.isRequired,\r\n imageList: PropTypes.arrayOf(PropTypes.instanceOf(ImageExperienceImage)).isRequired,\r\n text: PropTypes.string,\r\n url: PropTypes.string,\r\n eligibleLayouts: PropTypes.string,\r\n onImageListChanged: PropTypes.func,\r\n isForVNext: PropTypes.bool,\r\n isStockPhotoEnabled: PropTypes.bool,\r\n isImageFittingEnabled: PropTypes.bool,\r\n oDataConfig: PropTypes.shape({\r\n odataRootUrl: PropTypes.string,\r\n odataPath: PropTypes.string,\r\n odataToken: PropTypes.string,\r\n }),\r\n staticImagePath: PropTypes.string,\r\n permissions: PropTypes.shape({\r\n IsStockPhotoFilterEnabled: PropTypes.bool,\r\n dynamic: PropTypes.shape({ ImageExtensionsEnhancements: PropTypes.bool, AdPreviewRefresh: PropTypes.bool }),\r\n }),\r\n newI18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }),\r\n recommendation: PropTypes.objectOf(PropTypes.any),\r\n readOnly: PropTypes.bool,\r\n instrumentation: PropTypes.shape({}),\r\n preferencesService: PropTypes.shape({}),\r\n subscribeToUrlChanged: PropTypes.func,\r\n setFullUrl: PropTypes.func,\r\n setError: PropTypes.func,\r\n classes: PropTypes.shape({\r\n carouselParent: PropTypes.string,\r\n viewAllPlacementsButton: PropTypes.string,\r\n reCropButton: PropTypes.string,\r\n }),\r\n setImageControlSetText: PropTypes.func,\r\n setImageControlsValidate: PropTypes.func,\r\n setImageControlSetEligibleLayout: PropTypes.func,\r\n };\r\n\r\n static defaultProps = {\r\n perfMarker: {\r\n willFetchFile: _.noop,\r\n willInit: _.noop,\r\n willFetchData: _.noop,\r\n willRender: _.noop,\r\n done: _.noop,\r\n createChild: _.noop,\r\n },\r\n text: '',\r\n url: '',\r\n eligibleLayouts: '',\r\n onImageListChanged: _.noop,\r\n isForVNext: false,\r\n isStockPhotoEnabled: false,\r\n isImageFittingEnabled: false,\r\n oDataConfig: null,\r\n staticImagePath: null,\r\n permissions: {},\r\n newI18n: PropTypes.shape({\r\n getString: _.noop,\r\n }),\r\n recommendation: {},\r\n readOnly: false,\r\n instrumentation: {},\r\n preferencesService: {},\r\n subscribeToUrlChanged: _.noop,\r\n setFullUrl: _.noop,\r\n setError: _.noop,\r\n classes: {},\r\n setImageControlSetText: _.noop,\r\n setImageControlsValidate: _.noop,\r\n setImageControlSetEligibleLayout: _.noop,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.perfMarker = props.perfMarker;\r\n this.newI18n = this.props.newI18n;\r\n this.oldI18n = mergeI18n(\r\n window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/audience-campaign'),\r\n this.newI18n\r\n );\r\n\r\n this.defaultPreviewFields = {\r\n shortHeadline: props.i18n.getString('Image_Extension_Ad_Preview_Default_ShortHeadline'),\r\n longHeadline: props.i18n.getString('Image_Extension_Ad_Preview_Default_LongHeadline'),\r\n description: props.i18n.getString('Image_Extension_Ad_Preview_Default_Description'),\r\n businessName: props.i18n.getString('Image_Extension_Ad_Preview_Default_BusinessName'),\r\n url: 'https://example.com',\r\n };\r\n\r\n this.state = {\r\n imageList: this.props.imageList,\r\n previewTexts: this.getPreviewTexts(props.text, props.url),\r\n errors: [],\r\n ...mapSuggestionResponseToState(SuggestionStatus.EmptyURL),\r\n protocol: 'https://',\r\n eligibleLayout: this.props.eligibleLayouts,\r\n };\r\n\r\n this.previewCarouselRef = React.createRef();\r\n\r\n if (this.props.permissions.dynamic.ImageExtensionsEnhancements) {\r\n this.props.subscribeToUrlChanged(this.finalUrlChanged.bind(this));\r\n }\r\n // set the theme in the constructor because it shouldn't be instantiated on every re-render\r\n // setting this in ThemeProvider wrapper caused generation of a new panel class name\r\n this.theme = { components: ComponentSettings, core: ThemeFluent };\r\n\r\n this.props.setImageControlSetText(this.setText.bind(this));\r\n\r\n this.props.setImageControlsValidate(this.validate.bind(this));\r\n\r\n this.props.setImageControlSetEligibleLayout(this.setEligibleLayout.bind(this));\r\n\r\n let adCreatorInstrumentation = {};\r\n try {\r\n adCreatorInstrumentation = getAdCreatorInstrumentation(\r\n this.props.instrumentation,\r\n this.adCreatorScenario,\r\n this.props.permissions\r\n ) || {};\r\n // eslint-disable-next-line no-empty\r\n } catch (e) {}\r\n\r\n if (this.props.permissions.dynamic.ImageExtensionsEnhancements) {\r\n this.suggestionPoller = new SuggestionPoller({\r\n cid: props.cid,\r\n aid: props.aid,\r\n oDataConfig: props.oDataConfig,\r\n jobCompleteCallback: this.onPollingSuggestionCompleted.bind(this),\r\n logger: adCreatorInstrumentation.websiteSuggestionActivity,\r\n });\r\n }\r\n\r\n const { cid, aid, oDataConfig } = this.props;\r\n this.mediaRepository = new MediaRepository({ cid, aid, oDataConfig });\r\n\r\n this.enableAdPreviewLibrary = _.get(props.permissions.dynamic, 'AdPreviewLibrarySearchMMA', false);\r\n\r\n const activityLogger = adCreatorInstrumentation.editImageActivity;\r\n if (activityLogger) {\r\n activityLogger.signal('image extension panel open', 'image extension');\r\n }\r\n this.adCreatorInstrumentation = adCreatorInstrumentation;\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.suggestionPoller) {\r\n this.suggestionPoller.cancel();\r\n }\r\n }\r\n\r\n onPollingSuggestionCompleted(response, isSubdomainScraping) {\r\n if (response.error) {\r\n // error handling section\r\n this.setState(mapSuggestionResponseToState(SuggestionStatus.ServerError, response));\r\n } else {\r\n this.setState(mapSuggestionResponseToState(\r\n SuggestionStatus.FetchSucceed,\r\n response,\r\n isSubdomainScraping\r\n ));\r\n }\r\n }\r\n\r\n onImageListUpdated = (imageList) => {\r\n this.setState({\r\n cropImage: null,\r\n replaceImage: null,\r\n imageList,\r\n });\r\n\r\n this.validate(imageList);\r\n\r\n this.props.onImageListChanged(imageList);\r\n };\r\n\r\n onImagePreviewRequested = (type) => {\r\n this.previewCarouselRef.current.setPreviewIndexByType(type);\r\n };\r\n\r\n onUpdateFinalUrlPrefix = (ev, newPrefix) => {\r\n this.setState({ protocol: newPrefix.text });\r\n };\r\n\r\n onUpdateFinalUrl = (ev) => {\r\n // const newUrl = ev && ev.target && ev.target.value;\r\n const newUrl = ev.target.value;\r\n const newUrlWithProtocol = this.state.protocol + newUrl;\r\n this.finalUrlChanged(newUrlWithProtocol);\r\n this.props.setFullUrl(newUrlWithProtocol);\r\n };\r\n\r\n onImageCropCancelled = () => {\r\n this.setState({\r\n cropImage: null,\r\n });\r\n };\r\n\r\n onImageReplaceCancelled = () => {\r\n this.setState({\r\n replaceImage: null,\r\n });\r\n };\r\n\r\n setAddNewImageCallback = (callback) => {\r\n this.setState({ addImageCallback: callback });\r\n };\r\n\r\n setOpenAddImageCallback = (callback) => {\r\n this.setState({ openAddImageCallback: callback });\r\n };\r\n\r\n setErrors(errorMessages) {\r\n this.setState({\r\n errors: errorMessages,\r\n });\r\n }\r\n\r\n setText(newText) {\r\n this.setState({\r\n previewTexts: this.getPreviewTexts(newText, this.state.url),\r\n });\r\n }\r\n\r\n setEligibleLayout(newEligibleLayout) {\r\n this.setState({\r\n eligibleLayout: newEligibleLayout,\r\n });\r\n }\r\n\r\n getPreviewTexts(text) {\r\n const processedText = _.isString(text) ? text.trim() : null;\r\n\r\n return {\r\n shortHeadline: this.defaultPreviewFields.shortHeadline,\r\n longHeadline: this.defaultPreviewFields.longHeadline,\r\n description: this.defaultPreviewFields.description,\r\n businessName: this.defaultPreviewFields.businessName,\r\n url: this.defaultPreviewFields.url,\r\n extensionHeadline: processedText,\r\n };\r\n }\r\n\r\n finalUrlChanged = (newUrlWithProtocol) => {\r\n let newState = {};\r\n if (!isValidUrl(newUrlWithProtocol)) {\r\n newState = mapSuggestionResponseToState(SuggestionStatus.InvalidURL);\r\n this.props.setError(this.props.i18n.getString('API_ErrorNumber_2611'));\r\n } else {\r\n newState = mapSuggestionResponseToState(SuggestionStatus.FetchInProgress);\r\n this.props.setError('');\r\n }\r\n\r\n this.setState(\r\n _.extend({ url: newUrlWithProtocol }, newState),\r\n () => {\r\n if (isValidUrl(newUrlWithProtocol)) {\r\n this.fetchSuggestions(newUrlWithProtocol);\r\n }\r\n }\r\n );\r\n };\r\n\r\n fetchSuggestions = _.debounce((url) => {\r\n this.suggestionPoller.cancel();\r\n const minimumSize = constants.getMinimumSizeForImage(null);\r\n this.suggestionPoller.getLandingPageSuggestions({\r\n landingPageUrl: url,\r\n minimumResolution: {\r\n width: minimumSize[0],\r\n height: minimumSize[1],\r\n },\r\n });\r\n }, 1000);\r\n\r\n validate(imageList) {\r\n const imageListToValidate = imageList || this.state.imageList;\r\n const errors = [];\r\n\r\n if (imageListToValidate.length === 0) {\r\n errors.push(this.props.i18n.getString('ImageAdExtensionV2_ImagesRequired'));\r\n } else {\r\n const typesPresent = _.map(\r\n imageListToValidate,\r\n imageExperienceImage => imageExperienceImage.type\r\n );\r\n const typesMissing = _.difference(constants.imageTypesWithOrder, typesPresent);\r\n\r\n if (typesMissing.length > 0) {\r\n const typeMissingStrings = _.map(\r\n typesMissing,\r\n type => this.props.i18n.getString(constants.aspectRatios[type].stringKey)\r\n );\r\n\r\n const errMsg = `${this.props.i18n.getString('ImageAdExtensionV2_MissingPartialImages')} ${typeMissingStrings.join(', ')}`;\r\n\r\n errors.push(errMsg);\r\n }\r\n }\r\n\r\n this.setState({\r\n errors,\r\n });\r\n\r\n return errors.length === 0;\r\n }\r\n\r\n render() {\r\n const enhancedImageExperienceProps =\r\n this.props.permissions.dynamic.ImageExtensionsEnhancements ? {\r\n onUpdateFinalUrl: this.onUpdateFinalUrl,\r\n onUpdateFinalUrlPrefix: this.onUpdateFinalUrlPrefix,\r\n suggestion: this.state.suggestion,\r\n suggestionPoller: this.suggestionPoller,\r\n finalUrl: this.state.url,\r\n finalUrlProtocol: this.state.protocol,\r\n setAddNewImageCallback: this.setAddNewImageCallback,\r\n setOpenAddImageCallback: this.setOpenAddImageCallback,\r\n cropImage: this.state.cropImage,\r\n onImageCropCancelled: this.onImageCropCancelled,\r\n onImageReplaceCancelled: this.onImageReplaceCancelled,\r\n replaceImage: this.state.replaceImage,\r\n } : {};\r\n const enhancedPreviewCarouselProps =\r\n this.props.permissions.dynamic.ImageExtensionsEnhancements ? {\r\n onCropImage: (imgObj) => {\r\n this.setState({\r\n cropImage: imgObj,\r\n });\r\n },\r\n onReplaceImage: (imgObj) => {\r\n this.setState({\r\n replaceImage: imgObj,\r\n });\r\n },\r\n customClasses: {\r\n viewAllPlacementsButton: this.props.classes.viewAllPlacementsButton,\r\n reCropButton: this.props.classes.reCropButton,\r\n },\r\n } : {};\r\n if (this.props.permissions.dynamic.ImageExtensionsEnhancements && $('.suggestion-carousel').length > 0) {\r\n ReactDOM.render(\r\n <ThemeProvider theme={this.theme}>\r\n <UiBlocker\r\n blocking={this.state.blockCarousel}\r\n loadingText={this.props.i18n.getString('Loading')}\r\n >\r\n {this.state.imageList.length === 0 &&\r\n <ImageSuggestionCarousel\r\n customClasses={{\r\n carouselParent: this.props.classes.carouselParent,\r\n }}\r\n isLoading={!!this.state.suggestion.inProgress}\r\n images={this.state.carousel.images || []}\r\n i18n={this.props.newI18n}\r\n isEmpty={this.state.carousel.isError}\r\n messageInfo={this.state.carousel.message}\r\n onSelectImage={(imageSource, index) => {\r\n const { websiteSuggestionCarouselActivity } =\r\n getAdCreatorInstrumentation(\r\n this.props.instrumentation,\r\n this.adCreatorScenario\r\n );\r\n\r\n websiteSuggestionCarouselActivity.trace(`CarouselImageSelected: ${index};`);\r\n\r\n this.setState({ blockCarousel: true });\r\n this.state.addImageCallback(imageSource)\r\n .then((error = {}) => {\r\n if (error && error.errorMessage) {\r\n this.setState({\r\n carousel: {\r\n ...this.state.carousel,\r\n message: {\r\n type: MessageBarType.error,\r\n message: error.errorMessage,\r\n },\r\n },\r\n });\r\n }\r\n return Promise.resolve();\r\n })\r\n .finally(() => {\r\n this.setState({ blockCarousel: false });\r\n });\r\n this.setState({\r\n carousel: {\r\n ...this.state.carousel,\r\n images: _.reject(this.state.carousel.images, (val, ind) => ind === index),\r\n },\r\n });\r\n }}\r\n onSelectSeeAll={() => this.state.openAddImageCallback()}\r\n />\r\n }\r\n </UiBlocker>\r\n </ThemeProvider>,\r\n $('.suggestion-carousel')[0]\r\n );\r\n }\r\n\r\n const isAdPreviewRefreshEnabled = this.props.permissions.dynamic.AdPreviewRefresh;\r\n const PreviewCarouselComponent = this.enableAdPreviewLibrary ? UnifiedPreviewCarousel : PreviewCarousel;\r\n const adPreviewConfig = getUnifiedAdPreviewConfig({ eligibleLayout: this.state.eligibleLayout, isAdPreviewRefreshEnabled });\r\n\r\n return (\r\n <ThemeProvider theme={this.theme}>\r\n <div className=\"extension-images-control\">\r\n <I18nContext.Provider value={this.newI18n}>\r\n <InstrumentationContext.Provider value={this.props.instrumentation}>\r\n <ImageExperience\r\n cid={this.props.cid}\r\n aid={this.props.aid}\r\n i18n={this.oldI18n}\r\n mediaRepository={this.mediaRepository}\r\n imageList={this.state.imageList}\r\n perfMarker={this.perfMarker}\r\n onImageListUpdated={this.onImageListUpdated}\r\n onImagePreviewRequested={this.onImagePreviewRequested}\r\n extensionHeadline={this.state.previewTexts.extensionHeadline}\r\n isImageAdExtensionMode\r\n genericImage={this.props.genericImage}\r\n isForVNext={this.props.isForVNext}\r\n oDataConfig={this.props.oDataConfig}\r\n isStockPhotoEnabled={this.props.isStockPhotoEnabled}\r\n staticImagePath={this.props.staticImagePath}\r\n permissions={this.props.permissions}\r\n recommendation={this.props.recommendation}\r\n readOnly={this.props.readOnly}\r\n adCreatorScenario={instrumentationScenarios.default}\r\n instrumentation={this.props.instrumentation}\r\n preferencesService={this.props.preferencesService}\r\n isFinalUrlImageRetrievalEnabled={\r\n this.props.permissions.dynamic.ImageExtensionsEnhancements\r\n }\r\n isImageExtensionsEnhancementsEnabled={\r\n this.props.permissions.dynamic.ImageExtensionsEnhancements\r\n }\r\n activityLogger={this.adCreatorInstrumentation && this.adCreatorInstrumentation.editImageActivity}\r\n {...enhancedImageExperienceProps}\r\n enableUnifiedAdPreview={this.enableAdPreviewLibrary}\r\n adPreviewConfig={adPreviewConfig}\r\n isImageFittingEnabled={this.props.isImageFittingEnabled}\r\n isAdPreviewRefreshEnabled={isAdPreviewRefreshEnabled}\r\n />\r\n </InstrumentationContext.Provider>\r\n {\r\n this.state.errors.map(errMsg => (\r\n <div\r\n className=\"error\"\r\n key={errMsg}\r\n >\r\n {errMsg}\r\n </div>\r\n ))\r\n }\r\n <PreviewCarouselComponent\r\n ref={this.previewCarouselRef}\r\n imageList={this.state.imageList}\r\n previewTexts={this.state.previewTexts}\r\n eligibleLayout={this.state.eligibleLayout}\r\n i18n={this.props.i18n}\r\n genericImage={this.props.genericImage}\r\n isImageAdExtensionMode\r\n isForVNext={this.props.isForVNext}\r\n totalImageListCount={this.state.imageList.length}\r\n isImageExtensionsEnhancementsEnabled={\r\n this.props.permissions.dynamic.ImageExtensionsEnhancements\r\n }\r\n instrumentation={this.props.instrumentation}\r\n {...enhancedPreviewCarouselProps}\r\n adPreviewConfig={adPreviewConfig}\r\n enableUnifiedAdPreview={this.enableAdPreviewLibrary}\r\n isImageFittingEnabled={this.props.isImageFittingEnabled}\r\n permissions={this.props.permissions}\r\n />\r\n </I18nContext.Provider>\r\n </div>\r\n </ThemeProvider>\r\n );\r\n }\r\n}\r\n\r\nexport const ExtensionImagesControl =\r\n withDefaultStyles(ExtensionImagesControlBase, getExtensionImagesControlStyles);\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { IconButton } from '@bingads-webui-react/fabric-control';\r\n\r\nconst iconButtonStyles = {\r\n root: {\r\n color: '#424242',\r\n marginLeft: 'auto',\r\n marginTop: '4px',\r\n marginRight: '2px',\r\n },\r\n};\r\n\r\nconst cancelIcon = { iconName: 'Cancel' };\r\n\r\nexport const CloseIconButton = ({ closeButtonAriaLabel, onClick }) => (\r\n <IconButton\r\n styles={iconButtonStyles}\r\n iconProps={cancelIcon}\r\n ariaLabel={closeButtonAriaLabel}\r\n onClick={onClick}\r\n />\r\n);\r\n\r\nCloseIconButton.propTypes = {\r\n onClick: PropTypes.func.isRequired,\r\n closeButtonAriaLabel: PropTypes.string.isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { mergeStyles, Stack } from '@bingads-webui-react/fabric-control';\r\nimport { CloseIconButton } from './close-icon-button';\r\n\r\nconst headerTextStyles = mergeStyles({\r\n fontStyle: 'normal',\r\n fontWeight: 600,\r\n fontSize: 20,\r\n lineHeight: 26,\r\n});\r\n\r\nexport const Header = ({ text, onCloseButtonClick, i18n }) => (\r\n <Stack horizontal horizontalAlign=\"space-between\" verticalAlign=\"center\" styles={{ root: { marginBottom: 8 } }}>\r\n <div className={headerTextStyles}>\r\n {text}\r\n </div>\r\n {onCloseButtonClick && <CloseIconButton closeButtonAriaLabel={i18n.getString('CloseButtonAria')} onClick={onCloseButtonClick} />}\r\n </Stack>\r\n);\r\n\r\nHeader.propTypes = {\r\n text: PropTypes.string.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n onCloseButtonClick: PropTypes.func,\r\n};\r\n\r\nHeader.defaultProps = {\r\n onCloseButtonClick: null,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { mergeStyles, DefaultButton as FluentDefaultButton, PrimaryButton as FluentPrimaryButton } from '@bingads-webui-react/fabric-control';\r\nimport classNames from 'classnames';\r\n\r\nconst buttonStyles = mergeStyles({\r\n height: 32,\r\n});\r\n\r\nconst withCustomStyle = (Component) => {\r\n const ComponentWithStyles = (props) => {\r\n const { className } = props;\r\n return (\r\n <>\r\n <Component {...props} className={classNames(className, buttonStyles)} />\r\n </>\r\n );\r\n };\r\n\r\n ComponentWithStyles.propTypes = {\r\n className: PropTypes.string,\r\n };\r\n\r\n ComponentWithStyles.defaultProps = {\r\n className: null,\r\n };\r\n\r\n return ComponentWithStyles;\r\n};\r\n\r\nexport const DefaultButton = withCustomStyle(FluentDefaultButton);\r\nexport const PrimaryButton = withCustomStyle(FluentPrimaryButton);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { Stack, mergeStyles } from '@bingads-webui-react/fabric-control';\r\n\r\nconst redemptionStepStyles = mergeStyles({\r\n width: 252,\r\n});\r\n\r\nconst iconStyles = mergeStyles({\r\n height: 100,\r\n marginBottom: 20,\r\n});\r\n\r\nconst stepStyles = mergeStyles({\r\n fontWeight: 'bold',\r\n});\r\n\r\nexport const RedemptionStep = ({\r\n stepNumber, icon, description, i18n,\r\n}) => (\r\n <Stack className={classNames('coupon-step-block', redemptionStepStyles)}>\r\n <Stack horizontalAlign=\"center\">\r\n <img\r\n className={classNames('coupon-step-block-icon', iconStyles)}\r\n alt=\"\"\r\n src={icon}\r\n />\r\n </Stack>\r\n <span className=\"coupon-step-block-description\">\r\n <span className={classNames('coupon-step-block-number', stepStyles)}>\r\n {i18n.getString('Coupon_LightboxStepNumberNew', { stepNumber })}\r\n </span> {description}\r\n </span>\r\n </Stack>\r\n);\r\n\r\nRedemptionStep.propTypes = {\r\n description: PropTypes.string.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n icon: PropTypes.node.isRequired,\r\n stepNumber: PropTypes.number.isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Stack, mergeStyles, Spinner, SpinnerSize } from '@bingads-webui-react/fabric-control';\r\n\r\nconst blockUiContainer = mergeStyles({\r\n position: 'absolute',\r\n backgroundColor: 'rgba(255, 255, 255, 0.5)',\r\n zIndex: 1010,\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n cursor: 'wait',\r\n});\r\n\r\nconst blockUiOverlay = mergeStyles({\r\n width: '100%',\r\n height: '100%',\r\n});\r\n\r\nconst reactBlockUi = mergeStyles({\r\n position: 'relative',\r\n minHeight: '2em',\r\n});\r\n\r\nexport const UiBlocker = (props) => {\r\n const {\r\n blocking,\r\n children,\r\n loadingText,\r\n } = props;\r\n\r\n return (\r\n <div className={reactBlockUi} aria-busy={blocking}>\r\n {children}\r\n {blocking &&\r\n <div className={blockUiContainer}>\r\n <div className={blockUiOverlay}>\r\n <Stack verticalAlign=\"center\" horizontalAlign=\"center\" styles={{ root: { width: '100%', height: '100%' } }}>\r\n <Spinner size={SpinnerSize.large} label={loadingText} labelPosition=\"right\" />\r\n </Stack>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n );\r\n};\r\n\r\nUiBlocker.propTypes = {\r\n blocking: PropTypes.bool.isRequired,\r\n children: PropTypes.node.isRequired,\r\n loadingText: PropTypes.string.isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { mergeStyles } from '@fluentui/react';\r\n\r\nconst couponDaysLeftStyles = mergeStyles({\r\n fontWeight: 'bold',\r\n});\r\n\r\nexport const DaysRemaining = ({ i18n, diffDays }) =>\r\n (\r\n <span className={couponDaysLeftStyles}>\r\n {diffDays === 1\r\n ? i18n.getString('RemindLater_Description_Expiration_OneDay')\r\n : i18n.getString('RemindLater_Description_Expiration', { diffDays })}\r\n </span>\r\n );\r\n\r\nDaysRemaining.propTypes = {\r\n diffDays: PropTypes.number.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n};\r\n","export const getDaysToExpiration = (expirationDateString) => {\r\n const expirationDate = Date.parse(expirationDateString);\r\n const today = Date.now();\r\n const diff = Math.abs(expirationDate - today);\r\n return Math.ceil(diff / (1000 * 60 * 60 * 24));\r\n};\r\n","import React, { useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Stack, mergeStyles } from '@bingads-webui-react/fabric-control';\r\nimport classNames from 'classnames';\r\nimport { RedemptionStep } from '../components';\r\nimport { DaysRemaining } from './days-remaining';\r\nimport { getDaysToExpiration } from '../utils';\r\n\r\nconst redemptionStepsStyles = mergeStyles({\r\n marginTop: 16,\r\n marginBottom: 36,\r\n});\r\n\r\nconst couponTermsStyles = mergeStyles({\r\n marginBottom: 36,\r\n});\r\n\r\nexport const CouponDescription = ({ coupon, i18n, steps }) => {\r\n const daysToExpiration = useMemo(() => getDaysToExpiration(coupon.expirationDate), [coupon.expirationDate]);\r\n const displayDaysLeft = useMemo(() => daysToExpiration <= 14, [daysToExpiration]);\r\n\r\n return (\r\n <>\r\n <Stack horizontal horizontalAlign=\"space-between\" className={redemptionStepsStyles}>\r\n {steps.map(step => (\r\n <RedemptionStep key={step.stepIndex} stepNumber={step.stepIndex} icon={step.icon} description={step.description} i18n={i18n} />\r\n ))}\r\n </Stack>\r\n <div className={classNames('coupon-terms', couponTermsStyles)}>\r\n <span>{i18n.getString('Coupon_Lightbox_LimitedTimeOffer_ActBy', coupon)}</span>\r\n {' '}\r\n {displayDaysLeft && <DaysRemaining i18n={i18n} diffDays={daysToExpiration} />}\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nCouponDescription.propTypes = {\r\n coupon: PropTypes.shape({\r\n expirationDate: PropTypes.string,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n steps: PropTypes.arrayOf(PropTypes.shape({\r\n stepIndex: PropTypes.number,\r\n icon: PropTypes.string,\r\n description: PropTypes.string,\r\n })).isRequired,\r\n};\r\n","import React, { useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Stack } from '@bingads-webui-react/fabric-control';\r\nimport { Header, CouponDescription, DefaultButton, PrimaryButton } from './components';\r\nimport { getDaysToExpiration } from './utils';\r\n\r\nconst rightHandButtonsStackTokens = {\r\n childrenGap: 8,\r\n};\r\n\r\nexport const Frontdoor = ({\r\n coupon, onNotInterested, onDismiss, onActivate, onRemindLater, i18n, steps,\r\n}) => {\r\n const title = i18n.getString(\r\n coupon.couponLightboxTitle || 'Coupon_LightboxTitleNew',\r\n coupon\r\n );\r\n\r\n const daysToExpiration = useMemo(() => getDaysToExpiration(coupon.expirationDate), [coupon.expirationDate]);\r\n const displayRemindLater = useMemo(() => daysToExpiration >= 7, [daysToExpiration]);\r\n\r\n return (\r\n <div>\r\n <Header text={title} i18n={i18n} onCloseButtonClick={onDismiss} />\r\n <CouponDescription coupon={coupon} i18n={i18n} steps={steps} />\r\n <Stack horizontal horizontalAlign=\"space-between\" verticalAlign=\"center\">\r\n <DefaultButton text={i18n.getString('Button_NotInterested')} onClick={onNotInterested} className=\"not-interested-button\" />\r\n <Stack horizontal tokens={rightHandButtonsStackTokens}>\r\n <PrimaryButton text={i18n.getString('Button_ActivateNow')} onClick={onActivate} className=\"activate-button\" />\r\n {displayRemindLater && <DefaultButton text={i18n.getString('Button_RemindMeLater')} onClick={onRemindLater} className=\"remind-later-button\" />}\r\n </Stack>\r\n </Stack>\r\n </div>);\r\n};\r\n\r\nFrontdoor.propTypes = {\r\n coupon: PropTypes.shape({\r\n expirationDate: PropTypes.string,\r\n couponLightboxTitle: PropTypes.string,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n onActivate: PropTypes.func.isRequired,\r\n onDismiss: PropTypes.func.isRequired,\r\n onNotInterested: PropTypes.func.isRequired,\r\n onRemindLater: PropTypes.func.isRequired,\r\n steps: PropTypes.arrayOf(PropTypes.shape({\r\n stepIndex: PropTypes.number,\r\n description: PropTypes.string,\r\n icon: PropTypes.string,\r\n })).isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Link, Stack, mergeStyles } from '@bingads-webui-react/fabric-control';\r\nimport classNames from 'classnames';\r\nimport { Header, DefaultButton } from './components';\r\n\r\nconst descriptionStyles = mergeStyles({\r\n minHeight: 60,\r\n marginTop: 16,\r\n marginBottom: 12,\r\n});\r\n\r\nexport const NotInterested = ({ i18n, onDismiss, couponDetailsUrl }) => (\r\n <div>\r\n <Header text={i18n.getString('Not_Interested_Title')} i18n={i18n} onCloseButtonClick={onDismiss} />\r\n <div className={classNames('coupon-description', descriptionStyles)}>\r\n {i18n.getString('Not_Interested_Description')}\r\n {' '}\r\n {couponDetailsUrl ? <Link href={couponDetailsUrl}>{i18n.getString('Coupon_Page')}</Link> : i18n.getString('Coupon_Page')}\r\n </div>\r\n <Stack horizontal horizontalAlign=\"end\" verticalAlign=\"center\">\r\n <DefaultButton text={i18n.getString('Button_Close')} onClick={onDismiss} className=\"close-button\" />\r\n </Stack>\r\n </div>);\r\n\r\nNotInterested.propTypes = {\r\n couponDetailsUrl: PropTypes.string.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n onDismiss: PropTypes.func.isRequired,\r\n};\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React, { useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Link, Stack, mergeStyles } from '@bingads-webui-react/fabric-control';\r\nimport classNames from 'classnames';\r\nimport { Header, DefaultButton, PrimaryButton, DaysRemaining } from './components';\r\nimport { getDaysToExpiration } from './utils';\r\n\r\nconst descriptionStyles = mergeStyles({\r\n minHeight: 60,\r\n marginTop: 16,\r\n marginBottom: 12,\r\n});\r\n\r\nconst confirmationButtonStyles = mergeStyles({\r\n marginRight: 8,\r\n});\r\n\r\nexport const RemindLater = ({\r\n coupon, onNotInterested, onActivate, onConfirm, onDismiss, i18n,\r\n}) => {\r\n const diffDays = useMemo(() => getDaysToExpiration(coupon.expirationDate), [coupon.expirationDate]);\r\n\r\n return (\r\n <div>\r\n <Header text={i18n.getString('RemindLater_Title')} i18n={i18n} onCloseButtonClick={onDismiss} />\r\n <div className={classNames('coupon-description', descriptionStyles)}>\r\n <DaysRemaining i18n={i18n} diffDays={diffDays} />\r\n {' '}\r\n {i18n.getString('RemindLater_Description_ActivationMessage_1')}\r\n {' '}\r\n <Link onClick={onActivate}>{i18n.getString('RemindLater_Description_ActivationMessageLink')}</Link>\r\n {' '}\r\n {i18n.getString('RemindLater_Description_ActivationMessage_2')}\r\n </div>\r\n <Stack horizontal horizontalAlign=\"space-between\" verticalAlign=\"center\">\r\n <DefaultButton text={i18n.getString('Button_NotInterested')} onClick={onNotInterested} className=\"close-button\" />\r\n <Stack horizontal horizontalAlign=\"end\" verticalAlign=\"center\">\r\n <PrimaryButton text={i18n.getString('Button_Confirmation')} onClick={onConfirm} className={classNames(confirmationButtonStyles, 'confirmation-button')} />\r\n <DefaultButton text={i18n.getString('Button_Close')} onClick={onDismiss} className=\"close-button\" />\r\n </Stack>\r\n </Stack>\r\n </div>);\r\n};\r\n\r\nRemindLater.propTypes = {\r\n coupon: PropTypes.shape({\r\n expirationDate: PropTypes.string,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n onActivate: PropTypes.func.isRequired,\r\n onConfirm: PropTypes.func.isRequired,\r\n onDismiss: PropTypes.func.isRequired,\r\n onNotInterested: PropTypes.func.isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Stack, mergeStyles } from '@bingads-webui-react/fabric-control';\r\nimport classNames from 'classnames';\r\nimport { Header, CouponDescription, DefaultButton, PrimaryButton } from './components';\r\n\r\nconst confirmationButtonStyles = mergeStyles({\r\n marginRight: 8,\r\n});\r\n\r\nexport const Claimed = ({\r\n coupon, i18n, onConfirm, onDismiss, steps,\r\n}) => (\r\n <div>\r\n <Header text={i18n.getString('Claimed_Title')} i18n={i18n} onCloseButtonClick={onDismiss} />\r\n <CouponDescription coupon={coupon} i18n={i18n} steps={steps} />\r\n <Stack horizontal horizontalAlign=\"end\" verticalAlign=\"center\">\r\n <PrimaryButton text={i18n.getString('Claimed_ConfirmationButton')} onClick={onConfirm} className={classNames(confirmationButtonStyles, 'confirmation-button')} />\r\n <DefaultButton text={i18n.getString('Claimed_DontShowAgain')} onClick={onDismiss} className=\"dont-show-again-button\" />\r\n </Stack>\r\n </div>);\r\n\r\nClaimed.propTypes = {\r\n coupon: PropTypes.shape({}).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n onConfirm: PropTypes.func.isRequired,\r\n onDismiss: PropTypes.func.isRequired,\r\n steps: PropTypes.arrayOf(PropTypes.shape({\r\n stepIndex: PropTypes.number,\r\n description: PropTypes.string,\r\n icon: PropTypes.string,\r\n })).isRequired,\r\n};\r\n","import { useState, useEffect, useCallback, useMemo, useContext } from 'react';\r\nimport _ from 'underscore';\r\nimport { InstrumentationContext } from '@bingads-webui-react/hoc-with-instrumentation';\r\n\r\nconst CCUI_PREFERENCE_KEY = 18190;\r\n\r\nconst DISPLAY_CALLOUT_QUERY = 'displaycallout';\r\n\r\nconst buildCouponCalloutStateKey = (couponId, aid) => `coupon_callout_state_${couponId}_${aid}`;\r\n\r\nconst getDaysFromNow = (days) => {\r\n const date = new Date(Date.now());\r\n date.setDate(date.getDate() + days);\r\n\r\n return date;\r\n};\r\n\r\nexport const useHideCalloutPreference = ({\r\n coupon, userPreferenceService, scope = {}, legacyInstrumentation, scenarioName, refreshUserPreferencesCache = null,\r\n}) => {\r\n const [userPreferencesLoaded, setUserPreferencesLoaded] = useState(false);\r\n const [hideCalloutPreference, setHideCalloutPreference] = useState({});\r\n\r\n const { uid, aid } = scope.values;\r\n\r\n const instrumentation = useContext(InstrumentationContext);\r\n\r\n const { activity } = useMemo(() => {\r\n const finalInstrumentation = _.isEmpty(instrumentation) ? legacyInstrumentation : instrumentation;\r\n\r\n return finalInstrumentation.createScenarioAndActivity({\r\n scenarioName: scenarioName|| 'AutoBiddingCoupon',\r\n activityName: 'GetCouponPreference',\r\n });\r\n }, [instrumentation, legacyInstrumentation, scenarioName]);\r\n\r\n useEffect(() => {\r\n if (coupon) {\r\n userPreferenceService\r\n .findAll({ uid })\r\n .then((data) => {\r\n if (data && data.length) {\r\n setUserPreferencesLoaded(true);\r\n try {\r\n const userPreferences = _.find(data, userPreference => userPreference.upkey === CCUI_PREFERENCE_KEY);\r\n if (userPreferences && userPreferences.resultAsJsonString) {\r\n const preferenceJson = JSON.parse(decodeURIComponent(userPreferences.resultAsJsonString));\r\n const hideCouponCallout = buildCouponCalloutStateKey(coupon.id, aid);\r\n setHideCalloutPreference(preferenceJson[hideCouponCallout] ? JSON.parse(preferenceJson[hideCouponCallout]) : {});\r\n }\r\n } catch (e) {\r\n if (e instanceof SyntaxError) {\r\n activity.trace(`getUserPreference: resultAsJsonString JSON parse failed: ${e}`);\r\n } else {\r\n throw e;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }, [activity, aid, coupon, uid, userPreferenceService]);\r\n\r\n const setCalloutState = useCallback((stateData) => {\r\n const couponCalloutStateKey = buildCouponCalloutStateKey(coupon.id, aid);\r\n if (refreshUserPreferencesCache) {\r\n refreshUserPreferencesCache();\r\n }\r\n const data = { upkey: CCUI_PREFERENCE_KEY, data: JSON.stringify({ [couponCalloutStateKey]: JSON.stringify(stateData) }) };\r\n return userPreferenceService.create(data);\r\n }, [aid, coupon.id, userPreferenceService, refreshUserPreferencesCache]);\r\n\r\n const unhideCallout = useCallback(() => {\r\n const displayCouponCalloutData = {\r\n couponId: coupon && coupon.id,\r\n aid,\r\n hide: false,\r\n endDate: null,\r\n };\r\n\r\n return setCalloutState(displayCouponCalloutData);\r\n }, [aid, coupon, setCalloutState]);\r\n\r\n const hideCallout = useCallback((endDate) => {\r\n const hideCouponCalloutData = {\r\n couponId: coupon && coupon.id,\r\n aid,\r\n hide: true,\r\n endDate,\r\n };\r\n\r\n return setCalloutState(hideCouponCalloutData);\r\n }, [aid, coupon, setCalloutState]);\r\n\r\n const hideCalloutForEver = useCallback(() => hideCallout(null), [hideCallout]);\r\n\r\n const hideCalloutFor7Days = useCallback(() => hideCallout(getDaysFromNow(7)), [hideCallout]);\r\n\r\n const hideCalloutFor14Days = useCallback(() => hideCallout(getDaysFromNow(14)), [hideCallout]);\r\n\r\n const isPreferenceSetToHidden = useMemo(\r\n () => hideCalloutPreference.hide === true,\r\n [hideCalloutPreference]\r\n );\r\n\r\n const isAfterDismissEndDate = useMemo(\r\n () => hideCalloutPreference.endDate && Date.parse(hideCalloutPreference.endDate) < Date.now(),\r\n [hideCalloutPreference]\r\n );\r\n\r\n const isDisplayCalloutQuery = useMemo(() => {\r\n const displayQueryCallout = scope.values[DISPLAY_CALLOUT_QUERY];\r\n return displayQueryCallout === 1 || displayQueryCallout === 'true';\r\n }, [scope.values]);\r\n\r\n const isCalloutVisible = useMemo(\r\n () => isDisplayCalloutQuery || (userPreferencesLoaded && (!isPreferenceSetToHidden || (isPreferenceSetToHidden && isAfterDismissEndDate))),\r\n [isAfterDismissEndDate, isPreferenceSetToHidden, isDisplayCalloutQuery, userPreferencesLoaded]\r\n );\r\n\r\n useEffect(() => {\r\n if (isPreferenceSetToHidden && isDisplayCalloutQuery) {\r\n unhideCallout();\r\n }\r\n }, [unhideCallout, isDisplayCalloutQuery, isPreferenceSetToHidden]);\r\n\r\n return {\r\n isCalloutHidden: !isCalloutVisible,\r\n userPreferencesLoaded,\r\n hideCalloutPreference,\r\n hideCalloutForEver,\r\n hideCalloutFor7Days,\r\n hideCalloutFor14Days,\r\n activity,\r\n };\r\n};\r\n","import _ from 'underscore';\r\nimport React, { useState, useMemo, useEffect, useCallback, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Modal, mergeStyles } from '@bingads-webui-react/fabric-control';\r\nimport { useBoolean } from '@fluentui/react-hooks';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { withSiteMap, getRoutePathById, processorSet } from '@bingads-webui-react/with-site-map';\r\nimport URI from 'urijs';\r\nimport { Constants as CCUIConstants } from '@bingads-webui-clientcenter/entity-utils';\r\nimport { withLock } from '@bingads-webui-react/popup-manager';\r\nimport { Frontdoor } from './frontdoor';\r\nimport { NotInterested } from './not-interested';\r\nimport { RemindLater } from './remind-later';\r\nimport { Claimed } from './claimed';\r\nimport { useHideCalloutPreference } from './use-hide-callout-preference';\r\nimport { getDaysToExpiration } from './utils';\r\nimport RecommendationIcon from '../media/RecommendationIcon.svg';\r\nimport CouponIcon from '../media/CouponIcon.svg';\r\n\r\nconst FAC_STATUS_ACTIVE = CCUIConstants.RecommendationAdoptionStatus.Active;\r\n\r\nconst CALLOUT_STATES = Object.freeze({\r\n FRONTDOOR: 0,\r\n NOT_INTERESTED: 1,\r\n REMIND_LATER: 2,\r\n CLAIMED: 3,\r\n});\r\n\r\nconst modalStyles = mergeStyles({\r\n width: 600,\r\n padding: 24,\r\n});\r\n\r\nconst overlayStyles = {\r\n root: {\r\n backgroundColor: 'rgba(255, 255, 255, 0.5)',\r\n },\r\n};\r\n\r\nexport const FacCalloutInternal = ({\r\n coupon, onActivate, userPreferenceService, i18n, siteMap, steps,\r\n legacyScope, legacyInstrumentation, scenarioName, refreshUserPreferencesCache,\r\n shouldHideForDaysAfterDismiss = false,\r\n}) => {\r\n const [isModalOpen, { setTrue: showModal, setFalse: hideModal }] = useBoolean(false);\r\n const [currentStep, setCurrentStep] = useState(CALLOUT_STATES.FRONTDOOR);\r\n\r\n const logWithPrefix = useCallback(log => (scenarioName ? `[${scenarioName}]: ${log}` : log), [scenarioName]);\r\n const couponSteps = useMemo(() => {\r\n if (_.isEmpty(steps)) {\r\n return [{\r\n stepIndex: 1,\r\n icon: RecommendationIcon,\r\n description: i18n.getString('Coupon_LightboxStep1Description', coupon),\r\n }, {\r\n stepIndex: 2,\r\n icon: CouponIcon,\r\n description: i18n.getString('Coupon_LightboxStep3Description', coupon),\r\n }];\r\n }\r\n return steps;\r\n }, [steps, coupon, i18n]);\r\n\r\n const { scope } = useContext(ScopeContext) || {};\r\n const finalScope = useMemo(() => scope || legacyScope, [scope, legacyScope]);\r\n\r\n const { uid, cid, aid } = finalScope.values;\r\n\r\n const couponDetailsUrl = useMemo(() => {\r\n try {\r\n return new URI(getRoutePathById(siteMap, 'coupon')).search({ uid, cid, aid }).href();\r\n } catch (e) {\r\n return null;\r\n }\r\n }, [aid, cid, siteMap, uid]);\r\n\r\n useEffect(() => {\r\n if (coupon.rawData.Status === FAC_STATUS_ACTIVE) {\r\n setCurrentStep(CALLOUT_STATES.CLAIMED);\r\n }\r\n }, [coupon.rawData.Status]);\r\n\r\n const {\r\n hideCalloutForEver,\r\n hideCalloutFor7Days,\r\n hideCalloutFor14Days,\r\n isCalloutHidden,\r\n activity,\r\n } = useHideCalloutPreference({\r\n coupon: coupon.rawData,\r\n userPreferenceService,\r\n scope: finalScope,\r\n legacyInstrumentation,\r\n scenarioName,\r\n refreshUserPreferencesCache,\r\n });\r\n\r\n const daysToExpiration = useMemo(() => getDaysToExpiration(coupon.expirationDate), [coupon.expirationDate]);\r\n\r\n const hideForever = useCallback(() => {\r\n activity.trace(logWithPrefix('hide callout forever'));\r\n hideModal();\r\n hideCalloutForEver();\r\n }, [hideCalloutForEver, hideModal, activity, logWithPrefix]);\r\n\r\n const onNotInterestedFrontdoorClick = useCallback(() => {\r\n activity.trace(logWithPrefix('click not interested and hide forever'));\r\n hideCalloutForEver();\r\n setCurrentStep(CALLOUT_STATES.NOT_INTERESTED);\r\n }, [hideCalloutForEver, activity, logWithPrefix]);\r\n\r\n const onRemindMeLaterFrontdoorClick = useCallback(() => {\r\n if (daysToExpiration < 14) {\r\n activity.trace(logWithPrefix('onRemindMeLaterFrontdoorClick and expired in 14 days'));\r\n setCurrentStep(CALLOUT_STATES.REMIND_LATER);\r\n } else {\r\n activity.trace(logWithPrefix('onRemindMeLaterFrontdoorClick and hide for 7 days and expired > 14 days'));\r\n hideModal();\r\n hideCalloutFor7Days();\r\n }\r\n }, [daysToExpiration, hideCalloutFor7Days, hideModal, activity, logWithPrefix]);\r\n\r\n const onRemindMeLaterClick = useCallback(() => {\r\n activity.trace(logWithPrefix('onRemindMeLaterClick and hide for 7 days'));\r\n hideModal();\r\n hideCalloutFor7Days();\r\n }, [hideCalloutFor7Days, hideModal, activity, logWithPrefix]);\r\n\r\n const onActivateClick = useCallback(() => {\r\n activity.trace(logWithPrefix('onActivateClick and hide for 14 days'));\r\n hideModal();\r\n hideCalloutFor14Days().then(onActivate);\r\n }, [hideCalloutFor14Days, hideModal, onActivate, activity, logWithPrefix]);\r\n\r\n const onClaimedConfirmClick = useCallback(() => {\r\n activity.trace(logWithPrefix('onClaimedConfirmClick and hide for 14 days'));\r\n hideModal();\r\n hideCalloutFor14Days();\r\n }, [hideCalloutFor14Days, hideModal, activity, logWithPrefix]);\r\n\r\n const onDismissClick = useCallback(() => {\r\n hideModal();\r\n if (shouldHideForDaysAfterDismiss) {\r\n activity.trace(logWithPrefix('onDismissClick and hide for 7 days'));\r\n hideCalloutFor7Days();\r\n } else {\r\n activity.trace(logWithPrefix('onDismissClick'));\r\n }\r\n }, [hideModal, activity, logWithPrefix, hideCalloutFor7Days, shouldHideForDaysAfterDismiss]);\r\n\r\n useEffect(() => {\r\n if (!isCalloutHidden) {\r\n showModal();\r\n activity.trace(logWithPrefix('fac callout show'));\r\n } else {\r\n hideModal();\r\n }\r\n }, [showModal, hideModal, isCalloutHidden, activity, logWithPrefix]);\r\n\r\n const modalContent = useMemo(() => {\r\n switch (currentStep) {\r\n case CALLOUT_STATES.FRONTDOOR:\r\n return (<Frontdoor\r\n coupon={coupon}\r\n i18n={i18n}\r\n onNotInterested={onNotInterestedFrontdoorClick}\r\n onDismiss={onDismissClick}\r\n onActivate={onActivateClick}\r\n onRemindLater={onRemindMeLaterFrontdoorClick}\r\n steps={couponSteps}\r\n />);\r\n case CALLOUT_STATES.NOT_INTERESTED:\r\n return (<NotInterested\r\n i18n={i18n}\r\n onDismiss={hideModal}\r\n couponDetailsUrl={couponDetailsUrl}\r\n />);\r\n case CALLOUT_STATES.REMIND_LATER:\r\n return (<RemindLater\r\n coupon={coupon}\r\n i18n={i18n}\r\n onNotInterested={hideForever}\r\n onActivate={onActivateClick}\r\n onConfirm={onRemindMeLaterClick}\r\n onDismiss={onDismissClick}\r\n />);\r\n case CALLOUT_STATES.CLAIMED:\r\n return (<Claimed\r\n coupon={coupon}\r\n i18n={i18n}\r\n onConfirm={onClaimedConfirmClick}\r\n onDismiss={hideForever}\r\n steps={couponSteps}\r\n />);\r\n default:\r\n return null;\r\n }\r\n }, [currentStep, coupon, i18n, onNotInterestedFrontdoorClick, onActivateClick,\r\n onRemindMeLaterFrontdoorClick, couponDetailsUrl, hideForever, onRemindMeLaterClick,\r\n onClaimedConfirmClick, couponSteps, onDismissClick]);\r\n\r\n const Callout = useCallback(() => (\r\n <Modal\r\n className=\"fac-callout\"\r\n isOpen={isModalOpen}\r\n overlay={{ styles: overlayStyles }}\r\n isBlocking\r\n >\r\n <div className={modalStyles}>\r\n {modalContent}\r\n </div>\r\n </Modal>\r\n ), [isModalOpen, modalContent]);\r\n\r\n const CalloutWithLock = withLock(Callout, { force: true });\r\n\r\n return (\r\n <>\r\n {isModalOpen &&\r\n <CalloutWithLock />\r\n }\r\n </>\r\n );\r\n};\r\n\r\nFacCalloutInternal.propTypes = {\r\n coupon: PropTypes.shape({\r\n expirationDate: PropTypes.string,\r\n rawData: PropTypes.shape({\r\n Status: PropTypes.number.isRequired,\r\n }),\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n onActivate: PropTypes.func.isRequired,\r\n siteMap: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n userPreferenceService: PropTypes.shape({}).isRequired,\r\n steps: PropTypes.arrayOf(PropTypes.shape({\r\n stepIndex: PropTypes.number,\r\n description: PropTypes.string,\r\n icon: PropTypes.string,\r\n })).isRequired,\r\n legacyScope: PropTypes.shape({\r\n values: PropTypes.shape({\r\n uid: PropTypes.string,\r\n cid: PropTypes.string,\r\n aid: PropTypes.string,\r\n }),\r\n }),\r\n legacyInstrumentation: PropTypes.shape({}),\r\n scenarioName: PropTypes.string,\r\n refreshUserPreferencesCache: PropTypes.func,\r\n shouldHideForDaysAfterDismiss: PropTypes.bool,\r\n};\r\n\r\nFacCalloutInternal.defaultProps = {\r\n legacyScope: null,\r\n legacyInstrumentation: null,\r\n scenarioName: null,\r\n refreshUserPreferencesCache: null,\r\n shouldHideForDaysAfterDismiss: false,\r\n};\r\n\r\nexport const FacCallout = withSiteMap(FacCalloutInternal, processorSet.basic);\r\n","export const couponCalloutSharedKeyMap = {\r\n FAC_Coupon_Banner_Title: _TL_('Limited time offer:'),\r\n Coupon_TermsAndConditions: _TL_('View Terms and Conditions'),\r\n Button_Close: _TL_('Close'),\r\n Button_Confirm: _TL_('Confirm'),\r\n Button_Cancel: _TL_('Cancel'),\r\n Coupon_GotIt: _TL_('Got it!'),\r\n Coupon_TagMessageNew: _TL_('{{value}} offer'),\r\n Coupon_TagFlyoutMessage: _TL_('Get {{value}} in advertising credit when you {{tagMessage}} and spend {{cost}} on your campaigns!'),\r\n Coupon_OfferExpirationDateMessage: _TL_('Offer expires {{expirationDate}}.'),\r\n Coupon_LightboxTitleNew: _TL_('Get {{value}} in advertising credit when you {{titleAction}} and spend {{cost}} on your campaigns!'),\r\n Coupon_LightboxStepNumberNew: _TL_('Step {{stepNumber}}:'),\r\n Coupon_LightboxStep3Title: _TL_('Receive your credit'),\r\n Coupon_LightboxStep3Description: _TL_('Spend {{cost}} on your campaigns to unlock your {{value}} in advertising credit.'),\r\n Coupon_LightboxStep3DescriptionNew: _TL_('Spend {{cost}} on your campaigns by {{expirationDate}}, you\\'ll automatically receive {{value}} in advertising credit.'),\r\n Coupon_Lightbox_LimitedTimeOffer: _TL_('This is a limited-time offer. Please act soon!'),\r\n Coupon_Lightbox_LimitedTimeOffer_ActBy: _TL_('This is a limited offer. Act by {{expirationDate}}.'),\r\n GenericFACAdoptionStartErrorMessage: _TL_('Only Advertiser Campaign Managers, Super Admins, and Standard Users have permission to redeem coupons. Please use a different account or contact this account\\'s administrator to adjust your user role accordingly.'),\r\n FACDepletedErrorMessage: _TL_('We\\'re sorry, this promotion is is no longer available.'),\r\n Button_NotInterested: _TL_('Not interested'),\r\n Button_ActivateNow: _TL_('Activate now'),\r\n Button_RemindMeLater: _TL_('Remind me later'),\r\n Not_Interested_Title: _TL_('We won\\'t show you this again.'),\r\n Not_Interested_Description: _TL_('If you change your mind, you can access this offer on the'),\r\n Coupon_Page: _TL_('Coupons page.'),\r\n RemindLater_Title: _TL_('Are you sure you want to be reminded later?'),\r\n RemindLater_Description_Expiration: _TL_('This offer expires in {{diffDays}} days.'),\r\n RemindLater_Description_Expiration_OneDay: _TL_('This offer expires in 1 day.'),\r\n RemindLater_Description_ActivationMessage_1: _TL_('You can'),\r\n RemindLater_Description_ActivationMessageLink: _TL_('activate and accept'),\r\n RemindLater_Description_ActivationMessage_2: _TL_('at anytime before the expiration date.'),\r\n Button_Confirmation: _TL_('Yes, I\\'m sure'),\r\n Claimed_Title: _TL_('You have a coupon on your account!'),\r\n Claimed_ConfirmationButton: _TL_('Got it'),\r\n Claimed_DontShowAgain: _TL_('Don\\'t show this again'),\r\n CloseButtonAria: _TL_('Close coupon callout'),\r\n};\r\n\r\nexport const couponCalloutShoppingKeyMap = {\r\n ...couponCalloutSharedKeyMap,\r\n Coupon_LightboxTitleNew: _TL_('Get a {{value}} credit when you create a shopping campaign!'),\r\n Coupon_LightboxTitleNew_Shopping_Campaign: _TL_('Get a {{value}} credit when you create a shopping campaign!'),\r\n Summary_Card_Coupon_Title_Shopping_Campaign: _TL_('create a shopping campaign'),\r\n Summary_Card_Coupon_Description_Title_Shopping_Campaign: _TL_('create a shopping campaign'),\r\n Summary_Card_Coupon_Description_Shopping_Campaign: _TL_('create a shopping campaign'),\r\n Summary_Card_Coupon_Tag_Message_Shopping_Campaign: _TL_('create a shopping campaign'),\r\n Coupon_LightboxStep1Description_Shopping_Campaign: _TL_('Make sure that you have an active store in {{link}}Microsoft Merchant Center{{/link}}.'),\r\n Coupon_LightboxStep2Description_Shopping_Campaign: _TL_('Activate an existing shopping campaign or create a new one.'),\r\n Coupon_LightboxStep3Description_Shopping_Campaign: _TL_('Run an active shopping campaign for 10 days.'),\r\n};\r\n\r\nexport const couponCalloutConversionTrackingKeyMap = {\r\n ...couponCalloutSharedKeyMap,\r\n Summary_Card_Coupon_Title_Conversion_Tracking: _TL_('set up a new website-based conversion goal'),\r\n Summary_Card_Coupon_Description_Title_Conversion_Tracking: _TL_('set up a new website-based conversion goal'),\r\n Summary_Card_Coupon_Description_Conversion_Tracking: _TL_('set up a new website-based conversion goal'),\r\n Summary_Card_Coupon_Tag_Message_Conversion_Tracking: _TL_('set up a new website-based conversion goal'),\r\n // Coupon_BannerMessageNew: _TL_('Limited time offer: Do this now and get {{value}} in advertising credit!'),\r\n Coupon_LightboxStep1Description: _TL_('Set up a new website-based conversion goal'),\r\n Coupon_LightboxStep2Description: _TL_('Keep your conversion goal and UET tag active'),\r\n};\r\n","import React from 'react';\r\nimport { ReactTemplate } from '@bingads-webui-react/react-template';\r\nimport RecommendationIcon from '../../media/RecommendationIcon.svg';\r\nimport ScheduledIcon from '../../media/Coupon_step2_Scheduled_Illustration.svg';\r\nimport CouponIcon from '../../media/CouponIcon.svg';\r\n\r\nconst merchantcenterLink = `${location.origin}/campaign/vnext/merchantcenter${location.search}`;\r\n\r\nexport const getFACShoppingCampaignSteps = (i18n) => ([\r\n {\r\n stepIndex: 1,\r\n icon: RecommendationIcon,\r\n description: <ReactTemplate\r\n model={{ link: text => <a href={merchantcenterLink}>{text}</a> }}\r\n template={i18n.getString('Coupon_LightboxStep1Description_Shopping_Campaign')}\r\n />,\r\n }, {\r\n stepIndex: 2,\r\n icon: ScheduledIcon,\r\n description: i18n.getString('Coupon_LightboxStep2Description_Shopping_Campaign'),\r\n }, {\r\n stepIndex: 3,\r\n icon: CouponIcon,\r\n description: i18n.getString('Coupon_LightboxStep3Description_Shopping_Campaign'),\r\n },\r\n]);\r\n","import Backbone from 'backbone';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { FacCalloutInternal } from './index';\r\n\r\nexport class FACCalloutView extends Backbone.View {\r\n initialize({\r\n coupon,\r\n i18n,\r\n onActivate,\r\n userPreferenceService,\r\n siteMap,\r\n legacyScope,\r\n legacyInstrumentation,\r\n steps,\r\n scenarioName,\r\n refreshUserPreferencesCache,\r\n shouldHideForDaysAfterDismiss,\r\n }) {\r\n this.coupon = coupon;\r\n this.i18n = i18n;\r\n this.onActivate = onActivate;\r\n this.userPreferenceService = userPreferenceService;\r\n this.siteMap = siteMap;\r\n this.legacyScope = legacyScope;\r\n this.legacyInstrumentation = legacyInstrumentation;\r\n this.steps = steps;\r\n this.scenarioName = scenarioName;\r\n this.refreshUserPreferencesCache = refreshUserPreferencesCache;\r\n this.shouldHideForDaysAfterDismiss = shouldHideForDaysAfterDismiss;\r\n }\r\n\r\n render() {\r\n ReactDOM.render(\r\n <FacCalloutInternal\r\n i18n={this.i18n}\r\n coupon={this.coupon}\r\n onActivate={this.onActivate}\r\n userPreferenceService={this.userPreferenceService}\r\n siteMap={this.siteMap}\r\n legacyScope={this.legacyScope}\r\n legacyInstrumentation={this.legacyInstrumentation}\r\n steps={this.steps}\r\n scenarioName={this.scenarioName}\r\n refreshUserPreferencesCache={this.refreshUserPreferencesCache}\r\n shouldHideForDaysAfterDismiss={this.shouldHideForDaysAfterDismiss}\r\n />,\r\n this.el\r\n );\r\n return this;\r\n }\r\n\r\n remove() {\r\n ReactDOM.unmountComponentAtNode(this.el);\r\n return super.remove();\r\n }\r\n}\r\n","// import _ from 'underscore';\r\nimport { useCallback } from 'react';\r\nimport { useFetch } from '@bingads-webui-campaign-react/campaign-http';\r\n\r\nexport const useBrandKitDataService = () => {\r\n const { post, put, del, response, cache, loading, error } = useFetch();\r\n // will fix loading, error, response, cache\r\n // const fetchData = useMemo(() => ({ response, cache, loading, error }), [response, cache, loading, error]);\r\n\r\n const getBrandKitDataByAccId = useCallback(\r\n ({ accId }: { accId: string }) => {\r\n const url = 'v13/BrandKits/QueryByAccountId';\r\n return post(url, { AccountId: accId });\r\n },\r\n [post]\r\n );\r\n\r\n const getBrandKitDataById = useCallback(\r\n ({ brandkitIds }: { brandkitIds: string[] }) => {\r\n const url = 'v13/BrandKits/QueryByIds';\r\n return post(url, { BrandKitIds: brandkitIds });\r\n },\r\n [post]\r\n );\r\n\r\n const createBrandKitData = useCallback(\r\n ({\r\n accId,\r\n brandKitData,\r\n }: {\r\n accId: string;\r\n brandKitData\r\n }) => {\r\n const url = 'v13/BrandKits';\r\n return post(url, { AccountId: accId, BrandKits: brandKitData });\r\n },\r\n [post]\r\n );\r\n\r\n const updateBrandKitData = useCallback(\r\n ({ accId, brandKitData }) => {\r\n const url = 'v13/BrandKits';\r\n return put(url, { AccountId: accId, BrandKits: brandKitData });\r\n },\r\n [put]\r\n );\r\n\r\n const deleteBrandKitData = useCallback(\r\n ({ brandKitIds, accId }: { brandKitIds: string[]; accId: string }) => {\r\n const url = 'v13/BrandKits';\r\n return del(url, { AccountId: accId, BrandKitIds: brandKitIds });\r\n },\r\n [del]\r\n );\r\n\r\n return {\r\n getBrandKitDataById,\r\n createBrandKitData,\r\n getBrandKitDataByAccId,\r\n updateBrandKitData,\r\n deleteBrandKitData,\r\n response,\r\n cache,\r\n loading,\r\n error,\r\n };\r\n};\r\n","/* istanbul ignore file */\r\nimport { useCallback } from 'react';\r\nimport { useBrandKitDataService } from './service/use-brandkit-data-service';\r\nimport { BrandKitType, BrandKitResponseType, BrandKitColor, BrandKitPalette } from './service/schema/brandkit';\r\nimport { BrandKitDataType, Color, Images } from './schema/brandkit';\r\n// import { mockBrandKitResponse } from './mock/brandkit';\r\n// import { BrandKitDefaultFonts } from '@bingads-webui-campaign-react/ads-studio-app-components';\r\n\r\nconst transformLogos = (data: any) => {\r\n const logos: Images[] = [];\r\n let squareLogosCount = 0;\r\n let landscapeLogosCount = 0;\r\n if (Array.isArray(data.SquareLogos)) {\r\n data.SquareLogos.forEach((logo) => {\r\n squareLogosCount += 1;\r\n logos.push({\r\n ...logo,\r\n Src: logo.Url,\r\n ImageType: 'square',\r\n });\r\n });\r\n }\r\n if (Array.isArray(data.LandscapeLogos)) {\r\n data.LandscapeLogos.forEach((logo) => {\r\n landscapeLogosCount += 1;\r\n logos.push({\r\n ...logo,\r\n // will chane once data coming fromm backend\r\n Src: logo.Url,\r\n ImageType: 'landscape',\r\n });\r\n });\r\n }\r\n return { logos, squareLogosCount, landscapeLogosCount };\r\n};\r\n\r\nconst transformPalette = (data: BrandKitType) => {\r\n const palettes: Color[] = [];\r\n if (Array.isArray(data.Palettes)) {\r\n data.Palettes.forEach((palette: BrandKitPalette) => {\r\n if (Array.isArray(palette.Colors)) {\r\n palette.Colors.forEach((color: BrandKitColor) => {\r\n palettes.push({\r\n ...color,\r\n Type: palette.ColorType,\r\n });\r\n });\r\n }\r\n });\r\n }\r\n return palettes;\r\n};\r\nconst transformImages = (data: any) => {\r\n const images: Images[] = [];\r\n\r\n if (Array.isArray(data.Images)) {\r\n data.Images.forEach((image) => {\r\n images.push({\r\n ...image,\r\n Src: image.Url,\r\n });\r\n });\r\n }\r\n\r\n return images;\r\n};\r\n\r\nconst transformPaletteRequest = (data: BrandKitDataType) => {\r\n const palettesMap: { [key: string]: BrandKitColor[] } = {};\r\n if (Array.isArray(data.palettes)) {\r\n data.palettes.forEach((palette: Color) => {\r\n if (!palettesMap[palette.Type]) {\r\n palettesMap[palette.Type] = [];\r\n }\r\n palettesMap[palette.Type].push({\r\n Name: palette.Name,\r\n HexCode: palette.HexCode,\r\n });\r\n });\r\n }\r\n const palettes: BrandKitPalette[] = Object.keys(palettesMap).map(colors => ({\r\n ColorType: colors,\r\n Colors: palettesMap[colors],\r\n }));\r\n return palettes;\r\n};\r\n\r\nconst transformBrandkitResponse = (brandkit: BrandKitResponseType) => Array.isArray(brandkit.BrandKits) && brandkit.BrandKits.map((data: BrandKitType) => {\r\n const { logos, squareLogosCount, landscapeLogosCount } = transformLogos(data);\r\n const palettes = transformPalette(data);\r\n const images = transformImages(data);\r\n return ({\r\n id: data && data.Id,\r\n brandkitName: data && data.Name,\r\n images,\r\n logos,\r\n palettes,\r\n squareLogosCount,\r\n landscapeLogosCount,\r\n fonts: data && data.Fonts,\r\n });\r\n});\r\n\r\nconst transformCreateBrandkitRequest = (brandkits: BrandKitDataType[]) => Array.isArray(brandkits) && brandkits.map((brandkit: BrandKitDataType) => {\r\n const squareLogos = brandkit.logos && brandkit.logos.filter(logo => logo.ImageType === 'square');\r\n const landscapeLogos = brandkit.logos && brandkit.logos.filter(logo => logo.ImageType === 'landscape');\r\n return ({\r\n ...(brandkit.brandkitName && { Name: brandkit.brandkitName }),\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n ...(brandkit.images && { Images: brandkit.images.map(({ Src, ...rest }) => rest) }),\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n ...(squareLogos && squareLogos.length > 0 && { SquareLogos: squareLogos.map(({ ImageType, Src, ...rest }) => rest) }),\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n ...(landscapeLogos && landscapeLogos.length > 0 && { LandscapeLogos: landscapeLogos.map(({ ImageType, Src, ...rest }) => rest) }),\r\n ...(brandkit.palettes && { Palettes: transformPaletteRequest(brandkit) }),\r\n ...(brandkit.fonts && { Fonts: brandkit.fonts }),\r\n });\r\n});\r\n\r\nconst transformUpdateBrandkitRequest = (brandkits: BrandKitDataType[]) => Array.isArray(brandkits) && brandkits.map((brandkit: BrandKitDataType) => {\r\n const squareLogos = brandkit.logos && brandkit.logos.filter(logo => logo.ImageType === 'square');\r\n const landscapeLogos = brandkit.logos && brandkit.logos.filter(logo => logo.ImageType === 'landscape');\r\n return ({\r\n Id: brandkit.id,\r\n Name: brandkit.brandkitName,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n ...(Array.isArray(brandkit.images) && { Images: brandkit.images.map(({ Src, ...rest }) => rest) }),\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n ...(Array.isArray(squareLogos) && { SquareLogos: squareLogos.map(({ ImageType, Src, ...rest }) => rest) }),\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n ...(Array.isArray(landscapeLogos) && { LandscapeLogos: landscapeLogos.map(({ ImageType, Src, ...rest }) => rest) }),\r\n ...(brandkit.palettes && { Palettes: transformPaletteRequest(brandkit) }),\r\n ...(brandkit.fonts && { Fonts: brandkit.fonts }),\r\n });\r\n});\r\n\r\nexport const useBrandKitRepository = () => {\r\n const {\r\n createBrandKitData,\r\n getBrandKitDataByAccId,\r\n updateBrandKitData,\r\n response: brandkitResp,\r\n cache,\r\n loading: brandkitLoading,\r\n error: brandkitError,\r\n } = useBrandKitDataService();\r\n\r\n\r\n const getBrandKits = useCallback(async (aid) => {\r\n try {\r\n const brandKit = await getBrandKitDataByAccId({ accId: aid });\r\n return {\r\n response: transformBrandkitResponse(brandKit),\r\n error: null,\r\n };\r\n } catch (error) {\r\n return {\r\n response: null,\r\n error,\r\n };\r\n }\r\n }, [getBrandKitDataByAccId]);\r\n\r\n const createBrandKits = useCallback(async (aid, brandKits) => {\r\n try {\r\n const brandKit = await createBrandKitData({ accId: aid, brandKitData: transformCreateBrandkitRequest(brandKits) });\r\n return {\r\n response: brandKit,\r\n error: null,\r\n };\r\n } catch (error) {\r\n return {\r\n response: null,\r\n error,\r\n };\r\n }\r\n }, [createBrandKitData]);\r\n\r\n const updateBrandKit = useCallback(async (aid, brandKits) => {\r\n try {\r\n const brandKit = await updateBrandKitData({ accId: aid, brandKitData: transformUpdateBrandkitRequest(brandKits) });\r\n return {\r\n response: brandKit,\r\n error: null,\r\n };\r\n } catch (error) {\r\n return {\r\n response: null,\r\n error,\r\n };\r\n }\r\n }, [updateBrandKitData]);\r\n\r\n return {\r\n getBrandKits,\r\n updateBrandKit,\r\n createBrandKits,\r\n brandkitResp,\r\n brandkitError,\r\n cache,\r\n brandkitLoading,\r\n };\r\n};\r\n","import { useMemo } from 'react';\r\nimport { useBrandKitRepository } from './brand-kit-repository';\r\n\r\nexport const useBrandKitService = () => {\r\n const dataService = useBrandKitRepository();\r\n const {\r\n getBrandKits,\r\n updateBrandKit,\r\n createBrandKits,\r\n brandkitResp,\r\n brandkitError,\r\n cache,\r\n brandkitLoading,\r\n } = dataService;\r\n\r\n const brandKitDataService = useMemo(() => ({\r\n getBrandKits,\r\n updateBrandKit,\r\n createBrandKits,\r\n }), [createBrandKits, getBrandKits, updateBrandKit]);\r\n\r\n const brandkitApiState = useMemo(() => ({\r\n brandkitResp,\r\n brandkitError,\r\n cache,\r\n brandkitLoading,\r\n }), [brandkitError, brandkitLoading, brandkitResp, cache]);\r\n\r\n return {\r\n brandKitDataService,\r\n brandkitApiState,\r\n };\r\n};\r\n","export interface Color {\r\n Name: string;\r\n HexCode: string; // #FFFFFF\r\n Type: string; // primary, secondary, etc.\r\n}\r\n\r\nenum BackgroundPreference {}\r\n// Define enum values for BackgroundPreference if available\r\n\r\nenum FontTextAssetType {\r\n ShortHeadline = 0,\r\n LongHeadline = 1,\r\n Description = 2,\r\n CallToAction = 3,\r\n // Add other text asset types as needed\r\n}\r\n\r\nenum Fontface {\r\n Arial = 0,\r\n NewTimesRoman = 1,\r\n // Add other font faces as needed\r\n}\r\n\r\n\r\nenum CropType {\r\n ManualCrop,\r\n CenterCrop,\r\n SmartCrop,\r\n Unknown,\r\n}\r\nexport interface Asset {\r\n Id: number;\r\n Name: string;\r\n Src?: string;\r\n Type: string;\r\n}\r\n\r\nexport interface Images extends Asset {\r\n BackgroundPreference?: BackgroundPreference;\r\n CropHeight: number;\r\n CropWidth: number;\r\n CropX: number;\r\n CropY: number;\r\n Url: string;\r\n ThumbnailUrl: string,\r\n SubType: string; // subtype used to distinguish logo or image?\r\n TargetHeight: number;\r\n TargetWidth: number;\r\n ImageType?: string; // square or landscape\r\n}\r\n\r\nexport interface Font {\r\n Typeface: Fontface;\r\n Weight?: string;\r\n TextType: FontTextAssetType; // ad component that font will be applied to\r\n}\r\n\r\nexport interface CropSettings {\r\n SourceX: number;\r\n SourceY: number;\r\n SourceWidth: number;\r\n SourceHeight: number;\r\n CroppingType?: CropType; // ManualCrop/CenterCrop/SmartCrop/Unknown\r\n}\r\n\r\nexport interface BrandKitDataType {\r\n id: number;\r\n brandkitName: string;\r\n images?: Images[]; // Max 15\r\n logos?: Images[]; // Max 5\r\n palettes?: Color[]; // Max 5\r\n fonts?: Font[];\r\n squareLogosCount: number;\r\n landscapeLogosCount: number;\r\n}\r\n","import React from 'react';\r\nimport { makeStyles, shorthands, tokens } from '@fluentui/react-components';\r\nimport { SideNavigation } from '@bingads-webui-fluent-component/navigation';\r\n\r\n\r\nconst useStyles = makeStyles({\r\n container: {\r\n width: '85px',\r\n flexShrink: 0,\r\n },\r\n tab: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n width: '100%',\r\n\r\n '& span.side-navigation-item-text': {\r\n textOverflow: 'ellipsis',\r\n display: '-webkit-box',\r\n WebkitLineClamp: 3,\r\n WebkitBoxOrient: 'vertical',\r\n ...shorthands.overflow('hidden'),\r\n wordBreak: 'break-word',\r\n hyphens: 'auto',\r\n },\r\n '&.side-navigation-item-button:hover, &.side-navigation-item-button:focus': {\r\n '& > span': { color: tokens.colorNeutralForeground3BrandHover },\r\n },\r\n },\r\n});\r\n\r\nexport const Navigation = ({ items }) => {\r\n const classes = useStyles();\r\n return (\r\n <div className={classes.container}>\r\n <SideNavigation\r\n items={items}\r\n mode={2}\r\n className={classes.tab}\r\n reserveSelectedTabSpace={false}\r\n config={{ selectionMode: 2 }}\r\n />\r\n </div>\r\n );\r\n};\r\n","/* istanbul ignore file */\r\nimport React, { useCallback, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n Body1,\r\n Caption1Strong,\r\n Input,\r\n makeStyles,\r\n mergeClasses,\r\n shorthands,\r\n tokens,\r\n typographyStyles,\r\n} from '@fluentui/react-components';\r\nimport { ColorPalette } from '@bingads-webui-campaign-react/ads-color-picker';\r\n\r\nconst useColorPickerStyles = makeStyles({\r\n root: {\r\n marginTop: tokens.spacingVerticalS,\r\n },\r\n container: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n columnGap: tokens.spacingHorizontalSNudge,\r\n },\r\n label: {\r\n display: 'inline-block',\r\n marginBottom: tokens.spacingVerticalM,\r\n },\r\n colorPreview: {\r\n width: '36px',\r\n height: '36px',\r\n ...shorthands.padding(\r\n tokens.spacingVerticalXXS,\r\n tokens.spacingHorizontalXXS\r\n ),\r\n ...shorthands.borderStyle('solid'),\r\n ...shorthands.borderWidth(tokens.strokeWidthThin),\r\n ...shorthands.borderColor(tokens.colorNeutralStroke2),\r\n ...shorthands.borderRadius(tokens.borderRadiusLarge),\r\n },\r\n colorInput: {\r\n ...shorthands.flex(1),\r\n ...typographyStyles.body1,\r\n },\r\n});\r\n\r\nexport const ColorPicker = ({\r\n i18n,\r\n label,\r\n color,\r\n className,\r\n onChangeColor,\r\n}) => {\r\n const classes = useColorPickerStyles();\r\n const labelId = label || 'color-picker-name';\r\n const [colorState, setColorState] = React.useState(color);\r\n\r\n useEffect(() => {\r\n setColorState(color);\r\n }, [color]);\r\n\r\n const onUpdateColor = useCallback((_name, value) => {\r\n const colorValue = value ? value.hex : `#${_name}`;\r\n onChangeColor(colorValue);\r\n }, [onChangeColor]);\r\n\r\n const onChange = useCallback((_e, data) => {\r\n setColorState(`#${data.value}`);\r\n // update color if it's valid hex code\r\n if (/^[0-9A-Fa-f]{6}$/.test(data.value)) {\r\n onChangeColor(`#${data.value}`);\r\n }\r\n }, [onChangeColor]);\r\n\r\n return (\r\n <div\r\n className={mergeClasses(\r\n 'display-ads-color-picker',\r\n classes.root,\r\n className\r\n )}\r\n >\r\n {label && (\r\n <Caption1Strong className={classes.label} aria-label={label}>\r\n {label}\r\n </Caption1Strong>\r\n )}\r\n <div className={classes.container}>\r\n <ColorPalette\r\n showTooltipOnSelect\r\n i18n={i18n}\r\n key={labelId}\r\n colorData={{\r\n Name: labelId,\r\n Color: color,\r\n HexCode: `#${color.replace('#', '')}`,\r\n }}\r\n isDuplicate\r\n hideCaption\r\n palletteBoxSize=\"44px\"\r\n paletteColorSize=\"36px\"\r\n updateColor={onUpdateColor}\r\n />\r\n <Input\r\n maxLength={6}\r\n defaultValue={colorState.replace('#', '')}\r\n value={colorState.replace('#', '')}\r\n aria-labelledby=\"color-picker\"\r\n contentBefore={<Body1 size={400}>#</Body1>}\r\n onChange={onChange}\r\n className={mergeClasses('color-input', classes.colorInput)}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nColorPicker.propTypes = {\r\n i18n: PropTypes.shape({ getString: PropTypes.func }).isRequired,\r\n label: PropTypes.string,\r\n className: PropTypes.string,\r\n color: PropTypes.string.isRequired,\r\n onChangeColor: PropTypes.func,\r\n};\r\n\r\nColorPicker.defaultProps = {\r\n label: null,\r\n className: '',\r\n onChangeColor: () => {},\r\n};\r\n","export const callToActionOptions = [\r\n _TL_('Custom Text'),\r\n _TL_('Act Now'),\r\n _TL_('Apply Now'),\r\n _TL_('Bet Now'),\r\n _TL_('Bid Now'),\r\n _TL_('Book A Car'),\r\n _TL_('Book Hotel'),\r\n _TL_('Book Now'),\r\n _TL_('Build Now'),\r\n _TL_('Buy Now'),\r\n _TL_('Chat Now'),\r\n _TL_('Compare'),\r\n _TL_('Contact Us'),\r\n _TL_('Dealers'),\r\n _TL_('Directions'),\r\n _TL_('Donate'),\r\n _TL_('Download'),\r\n _TL_('Email Now'),\r\n _TL_('Enroll Now'),\r\n _TL_('File Now'),\r\n _TL_('Find Job'),\r\n _TL_('Find Store'),\r\n _TL_('Free Play'),\r\n _TL_('Free Quote'),\r\n _TL_('Free Trial'),\r\n _TL_('Get Coupon'),\r\n _TL_('Get Deals'),\r\n _TL_('Get Demo'),\r\n _TL_('Get Offer'),\r\n _TL_('Get Quote'),\r\n _TL_('Go To Demo'),\r\n _TL_('Join Now'),\r\n _TL_('Learn More'),\r\n _TL_('Listen Now'),\r\n _TL_('Log In'),\r\n _TL_('Order Now'),\r\n _TL_('Play Game'),\r\n _TL_('Play Now'),\r\n _TL_('Post Job'),\r\n _TL_('Register'),\r\n _TL_('Renew Now'),\r\n _TL_('Rent A Car'),\r\n _TL_('Rent Now'),\r\n _TL_('Reorder'),\r\n _TL_('Reserve'),\r\n _TL_('Save Now'),\r\n _TL_('Schedule'),\r\n _TL_('See Demo'),\r\n _TL_('See Menu'),\r\n _TL_('See Models'),\r\n _TL_('See Offer'),\r\n _TL_('See Offers'),\r\n _TL_('See Sale'),\r\n _TL_('Sell Now'),\r\n _TL_('Shop Now'),\r\n _TL_('Showtimes'),\r\n _TL_('Sign In'),\r\n _TL_('Sign Up'),\r\n _TL_('Start Now'),\r\n _TL_('Subscribe'),\r\n _TL_('Switch Now'),\r\n _TL_('Test Drive'),\r\n _TL_('Try Now'),\r\n _TL_('View Cars'),\r\n _TL_('View Demo'),\r\n _TL_('Visit Plans'),\r\n _TL_('Visit Store'),\r\n _TL_('Vote Now'),\r\n _TL_('Watch'),\r\n _TL_('Watch More'),\r\n _TL_('Watch Now'),\r\n];\r\n","import React, { useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Label } from '@fluentui/react';\r\nimport { HelpPopupInline } from '@bingads-webui-react/help-popup';\r\nimport {\r\n Caption1Strong,\r\n Combobox,\r\n makeStyles,\r\n mergeClasses,\r\n Option,\r\n} from '@fluentui/react-components';\r\nimport { RemainingCharsValidatedTextField } from '@bingads-webui-campaign-react/remaining-chars-hint';\r\n\r\nimport { callToActionOptions } from './constants';\r\n\r\nconst useCallToActionStyles = makeStyles({\r\n root: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n label: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n },\r\n select: {\r\n width: '100%',\r\n },\r\n input: {\r\n width: '100%',\r\n },\r\n customTextContainer: {\r\n '& .text-input-container': {\r\n width: '100%',\r\n },\r\n },\r\n});\r\n\r\nexport const CallToAction = ({\r\n cta,\r\n i18n,\r\n label,\r\n inlinePopup,\r\n labelAction,\r\n placeholder,\r\n onChangeCta,\r\n withCustomText,\r\n ctaValidations,\r\n helpTopic,\r\n helpLabel,\r\n}) => {\r\n const classes = useCallToActionStyles();\r\n const selectedOptions = withCustomText ? callToActionOptions : callToActionOptions.slice(1);\r\n const isCustomTextOptionSelected = cta && (cta === callToActionOptions[0] || !callToActionOptions.includes(cta));\r\n const [customInputText, setCustomInputText] = React.useState(isCustomTextOptionSelected ? cta : '');\r\n\r\n const handleSelect = (_ev, data) => {\r\n if (data && data.optionText) onChangeCta(data.optionText);\r\n };\r\n\r\n const handleInput = ({ data }) => {\r\n setCustomInputText(data.callToAction);\r\n };\r\n\r\n const ctaSchema = useMemo(() => ({\r\n type: 'object',\r\n properties: {\r\n callToAction: {\r\n type: 'string',\r\n maxLength: ctaValidations.maxLength,\r\n minLength: ctaValidations.minLength || 0,\r\n },\r\n },\r\n }), [ctaValidations.maxLength, ctaValidations.minLength]);\r\n\r\n return (\r\n <div className={mergeClasses('display-ads-call-to-action', classes.root)}>\r\n <div className={mergeClasses('display-ads-call-to-action-label', classes.label)}>\r\n {label &&\r\n <Label>\r\n { label }\r\n { helpTopic && (\r\n <HelpPopupInline\r\n topic={helpTopic}\r\n aria-label={helpLabel}\r\n />\r\n )}\r\n </Label>}\r\n {labelAction}\r\n </div>\r\n <Combobox\r\n onSelect={handleSelect}\r\n inlinePopup={inlinePopup}\r\n placeholder={placeholder}\r\n className={mergeClasses('display-ads-call-to-action-select', classes.select)}\r\n value={isCustomTextOptionSelected ? i18n.getString(callToActionOptions[0]) : i18n.getString(cta)}\r\n selectedOptions={\r\n isCustomTextOptionSelected ? [callToActionOptions[0]] : [cta]\r\n }\r\n onOptionSelect={handleSelect}\r\n >\r\n {selectedOptions.map(option => (\r\n <Option\r\n key={option}\r\n value={option}\r\n id={option.replace(/\\s/g, '-').toLowerCase()}\r\n >\r\n {i18n.getString(option)}\r\n </Option>\r\n ))}\r\n </Combobox>\r\n {isCustomTextOptionSelected && (\r\n <div className={mergeClasses('display-ads-call-to-action-input', classes.customTextContainer)}>\r\n <RemainingCharsValidatedTextField\r\n value={customInputText}\r\n validationProps={{\r\n onValidate: handleInput,\r\n field: 'callToAction',\r\n schema: ctaSchema,\r\n alwaysShowError: true,\r\n }}\r\n onRenderLabel={() => (\r\n <Label>\r\n <Caption1Strong>{i18n.getString(_TL_('Custom action text'))}</Caption1Strong>\r\n </Label>)}\r\n onBlur={() => customInputText && onChangeCta(customInputText)}\r\n i18n={i18n}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nCallToAction.propTypes = {\r\n i18n: PropTypes.shape({ getString: PropTypes.func }).isRequired,\r\n label: PropTypes.string,\r\n cta: PropTypes.string,\r\n ctaValidations: PropTypes.shape({\r\n minLength: PropTypes.number,\r\n maxLength: PropTypes.number,\r\n }),\r\n inlinePopup: PropTypes.bool,\r\n labelAction: PropTypes.node,\r\n placeholder: PropTypes.string,\r\n onChangeCta: PropTypes.func,\r\n withCustomText: PropTypes.bool,\r\n helpTopic: PropTypes.string,\r\n helpLabel: PropTypes.string,\r\n};\r\n\r\nCallToAction.defaultProps = {\r\n label: null,\r\n cta: null,\r\n ctaValidations: {\r\n minLength: 0,\r\n maxLength: 20,\r\n },\r\n inlinePopup: false,\r\n placeholder: null,\r\n labelAction: null,\r\n withCustomText: true,\r\n onChangeCta: () => {},\r\n helpTopic: null,\r\n helpLabel: null,\r\n};\r\n","import React from 'react';\r\nimport PropTypes, { func } from 'prop-types';\r\nimport { Button } from '@fluentui/react-components';\r\nimport { TextEditStyle16Regular } from '@fluentui/react-icons';\r\n\r\nexport const TextFormattingButton = ({ i18n, onClick }) => (\r\n <Button\r\n size=\"small\"\r\n appearance=\"transparent\"\r\n className=\"display-ads-text-formatting-button\"\r\n icon={<TextEditStyle16Regular />}\r\n onClick={onClick}\r\n >\r\n {i18n.getString(_TL_('Text formatting'))}\r\n </Button>\r\n);\r\n\r\nTextFormattingButton.propTypes = {\r\n i18n: PropTypes.shape({ getString: func }).isRequired,\r\n onClick: PropTypes.func.isRequired,\r\n};\r\n","import { makeStyles, shorthands, tokens } from '@fluentui/react-components';\r\n\r\nexport const useTextFormattingDialogueStyles = makeStyles({\r\n containerWrapper: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n minWidth: '282px',\r\n ...shorthands.padding(\r\n tokens.spacingVerticalL,\r\n tokens.spacingHorizontalNone\r\n ),\r\n ...shorthands.margin('-24px', '-16px'),\r\n },\r\n container: {\r\n width: '100%',\r\n ...shorthands.flex(1),\r\n },\r\n backButton: {\r\n justifyContent: 'flex-start',\r\n paddingLeft: 0,\r\n },\r\n header: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n columnGap: tokens.spacingHorizontalXS,\r\n paddingBottom: tokens.spacingVerticalL,\r\n },\r\n content: {\r\n ...shorthands.padding(tokens.spacingVerticalNone, tokens.spacingHorizontalMNudge),\r\n paddingTop: tokens.spacingVerticalL,\r\n },\r\n fontSelectorHeader: {\r\n display: 'block',\r\n paddingBottom: tokens.spacingVerticalXS,\r\n },\r\n fontSelect: {\r\n minWidth: 'auto',\r\n maxWidth: '100%',\r\n '& > input': {\r\n maxWidth: '100%',\r\n },\r\n },\r\n fontWeightSelect: {\r\n minWidth: 'auto',\r\n maxWidth: '100%',\r\n '& > input': {\r\n maxWidth: '100%',\r\n },\r\n },\r\n fontContainer: {\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(auto-fit, minmax(172px, 1fr))',\r\n gridGap: tokens.spacingHorizontalS,\r\n },\r\n contentDivider: {\r\n display: 'inline-flex',\r\n marginTop: tokens.spacingVerticalXL,\r\n },\r\n});\r\n","/* istanbul ignore file */ // Callback function expected to be tested again, will be fixed in a separate PR\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { ArrowLeft16Regular } from '@fluentui/react-icons';\r\nimport {\r\n Button,\r\n Caption1Strong,\r\n Divider,\r\n mergeClasses,\r\n} from '@fluentui/react-components';\r\nimport {\r\n FontsFamilySelector,\r\n FontsWeightSelector,\r\n} from '@bingads-webui-campaign-react/fonts-selector';\r\n\r\nimport { ColorPicker } from '../color-picker';\r\nimport { useTextFormattingDialogueStyles } from './styles';\r\n\r\nconst overrideFontWeights = [\r\n { key: 'Normal', text: _TL_('Normal') },\r\n { key: 'Bold', text: _TL_('Bold') },\r\n];\r\n\r\nexport const TextFormattingDialogue = ({\r\n i18n,\r\n onToggleBack,\r\n onFormatText,\r\n isUsedForButton,\r\n textFormatOptions,\r\n hideColorFormatting,\r\n}) => {\r\n const {\r\n font,\r\n color,\r\n weight,\r\n // backgroundColor,\r\n } = textFormatOptions || {};\r\n const classes = useTextFormattingDialogueStyles();\r\n\r\n const onChangeFont = (value) => {\r\n onFormatText({ ...textFormatOptions, font: value });\r\n };\r\n\r\n const onChangeWeight = (value) => {\r\n onFormatText({ ...textFormatOptions, weight: value });\r\n };\r\n\r\n const onChangeColor = (value) => {\r\n onFormatText({ ...textFormatOptions, color: value });\r\n };\r\n\r\n // TODO: Uncomment this when the feature is ready\r\n // const onChangeButtonColor = (value) => {\r\n // onFormatText({ ...textFormatOptions, backgroundColor: value });\r\n // };\r\n\r\n return (\r\n <div\r\n className={mergeClasses(\r\n 'display-ads-text-formatting-dialogue',\r\n classes.containerWrapper\r\n )}\r\n >\r\n <div className={classes.container}>\r\n <div\r\n className={mergeClasses(\r\n 'text-formatting-dialogue-header',\r\n classes.header\r\n )}\r\n >\r\n <Button\r\n appearance=\"transparent\"\r\n icon={<ArrowLeft16Regular />}\r\n onClick={onToggleBack}\r\n >\r\n {i18n.getString(_TL_('Back'))}\r\n </Button>\r\n </div>\r\n <Divider appearance=\"strong\" />\r\n <div\r\n className={mergeClasses(\r\n 'text-formatting-dialogue-content',\r\n classes.content\r\n )}\r\n >\r\n <Caption1Strong className={classes.fontSelectorHeader}>{i18n.getString(_TL_('Styles'))}</Caption1Strong>\r\n <div className={classes.fontContainer}>\r\n <FontsFamilySelector\r\n i18n={i18n}\r\n value={font}\r\n onChange={onChangeFont}\r\n selectClassName={classes.fontSelect}\r\n />\r\n <FontsWeightSelector\r\n i18n={i18n}\r\n value={weight}\r\n onChange={onChangeWeight}\r\n overrideFontWeights={overrideFontWeights}\r\n selectClassName={classes.fontWeightSelect}\r\n />\r\n </div>\r\n {!hideColorFormatting && (\r\n <>\r\n <Divider appearance=\"strong\" className={classes.contentDivider} />\r\n <ColorPicker\r\n i18n={i18n}\r\n color={color}\r\n onChangeColor={onChangeColor}\r\n label={i18n.getString(isUsedForButton ? _TL_('Button color') : _TL_('Text color'))}\r\n />\r\n {/* TODO: Uncomment thi when feature is ready */}\r\n {/* {isUsedForButton && (\r\n <ColorPicker\r\n i18n={i18n}\r\n color={backgroundColor}\r\n onChangeColor={onChangeButtonColor}\r\n label={i18n.getString(_TL_('Button color'))}\r\n />\r\n )} */}\r\n </>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nTextFormattingDialogue.propTypes = {\r\n i18n: PropTypes.shape({ getString: PropTypes.func }).isRequired,\r\n onToggleBack: PropTypes.func.isRequired,\r\n isUsedForButton: PropTypes.bool,\r\n hideColorFormatting: PropTypes.bool,\r\n textFormatOptions: PropTypes.shape({\r\n font: PropTypes.string,\r\n color: PropTypes.string,\r\n weight: PropTypes.string,\r\n })\r\n .isRequired,\r\n onFormatText: PropTypes.func.isRequired,\r\n};\r\n\r\nTextFormattingDialogue.defaultProps = {\r\n isUsedForButton: false,\r\n hideColorFormatting: false,\r\n};\r\n","import { makeStyles } from '@fluentui/react-components';\r\nimport { helpbuttonStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nexport const useDefaultContainerStyles = makeStyles({\r\n container: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n rowGap: '16px',\r\n },\r\n});\r\n\r\nexport const getStyles = (_, core) => ({\r\n collapseContainer: {\r\n '& .helpbutton': {\r\n ...helpbuttonStyle(core)['.helpbutton'],\r\n marginBottom: '4px',\r\n display: 'inline-block',\r\n },\r\n '& .helpbutton::before': helpbuttonStyle(core)['.helpbutton::before'],\r\n },\r\n});\r\n","import { getTextAssetCollectionConfig } from '@bingads-webui-campaign-react/pmax-text-input';\r\n\r\nconst collectionConfig = {\r\n headlines: {\r\n labelText: _TL_('Short headline'),\r\n placeholderText: _TL_('Enter your short headline'),\r\n fieldName: 'short-headline',\r\n singleAssetValidationPropsField: 'Headline',\r\n validationPropsField: 'Headlines',\r\n addButtonText: _TL_('Add headline'),\r\n copilotButtonLabel: _TL_('Get recommendations for your short headline'),\r\n deleteButtonLabel: _TL_('Remove short headline'),\r\n minCollectionSize: 1,\r\n maxCollectionSize: 1,\r\n errorMessage: _TL_('At least one short headlines are required'),\r\n helpPopupTopic: 'pop_BA_DisplayTemplate_Headline',\r\n helpPopupAriaLabel: _TL_('Click to learn more about short headlines'),\r\n inlineRecommendationsTitle: _TL_('Recommended short headlines'),\r\n inlineRecommendationsHelpTopicKey:\r\n 'pop_BA_Recommendations_Pmax_Shortheadlines',\r\n inlineRecommendationsHelpTopicAriaLabel: _TL_('Click to learn more about short headlines recommendations'),\r\n inlineRecommendationsDisabledItemTooltip: _TL_(\"You've reached the maximum number of short headlines. Please remove one short headline if you'd like to add this recommended short headline.\"),\r\n duplicateErrorMessage: _TL_('Duplicate short headlines are not allowed'),\r\n },\r\n longHeadlines: {\r\n labelText: _TL_('Long headline'),\r\n placeholderText: _TL_('Enter your long headline'),\r\n fieldName: 'long-headline',\r\n singleAssetValidationPropsField: 'LongHeadline',\r\n validationPropsField: 'LongHeadlines',\r\n addButtonText: _TL_('Add long headline'),\r\n copilotButtonLabel: _TL_('Get recommendations for your long headline'),\r\n deleteButtonLabel: _TL_('Remove long headline'),\r\n minCollectionSize: 1,\r\n maxCollectionSize: 1,\r\n errorMessage: _TL_('At least one long headline is required'),\r\n helpPopupTopic: 'pop_BA_DisplayTemplate_Headline',\r\n helpPopupAriaLabel: _TL_('Click to learn more about long headlines'),\r\n inlineRecommendationsTitle: _TL_('Recommended long headlines'),\r\n inlineRecommendationsHelpTopicKey:\r\n 'pop_BA_Recommendations_Pmax_Longheadlines',\r\n inlineRecommendationsHelpTopicAriaLabel:\r\n _TL_('Click to learn more about long headlines recommendations'),\r\n inlineRecommendationsDisabledItemTooltip:\r\n _TL_(\"You've reached the maximum number of long headlines. Please remove one long headline if you'd like to add this recommended long headline.\"),\r\n duplicateErrorMessage: _TL_('Duplicate long headlines are not allowed'),\r\n },\r\n descriptions: {\r\n labelText: _TL_('Description'),\r\n placeholderText: _TL_('Enter a description'),\r\n fieldName: 'description',\r\n singleAssetValidationPropsField: 'Description',\r\n validationPropsField: 'Descriptions',\r\n addButtonText: _TL_('Add description'),\r\n minCollectionSize: 1,\r\n maxCollectionSize: 1,\r\n errorMessage: _TL_('At least one description is required'),\r\n helpPopupTopic: 'pop_BA_DisplayTemplate_Description',\r\n helpPopupAriaLabel: _TL_('Click to learn more about descriptions'),\r\n inlineRecommendationsTitle: _TL_('Recommended descriptions'),\r\n inlineRecommendationsHelpTopicKey: 'pop_BA_Recommendations_Pmax_Descriptions',\r\n inlineRecommendationsHelpTopicAriaLabel:\r\n _TL_('Click to learn more about descriptions recommendations'),\r\n inlineRecommendationsDisabledItemTooltip:\r\n _TL_('You’ve reached the maximum number of descriptions. Please remove one description if you’d like to add this recommended description.'),\r\n duplicateErrorMessage: _TL_('Duplicate descriptions are not allowed'),\r\n\r\n },\r\n};\r\n\r\nexport const getLongHeadlineAssetCollectionConfig = i18n => getTextAssetCollectionConfig('longHeadlines', i18n, collectionConfig);\r\n\r\nexport const getDescriptionAssetCollectionConfig = i18n => getTextAssetCollectionConfig('descriptions', i18n, collectionConfig);\r\n\r\nexport const getShortHeadlineAssetCollectionConfig = i18n => getTextAssetCollectionConfig('headlines', i18n, collectionConfig);\r\n\r\n","import React from 'react';\r\nimport PropTypes, { func } from 'prop-types';\r\nimport {\r\n Body1,\r\n Button,\r\n makeStyles,\r\n mergeClasses,\r\n shorthands,\r\n tokens,\r\n} from '@fluentui/react-components';\r\n\r\nconst useTextAssetPlaceholderStyles = makeStyles({\r\n root: {\r\n width: '100%',\r\n ...shorthands.borderStyle('solid'),\r\n ...shorthands.border(tokens.strokeWidthThin),\r\n ...shorthands.borderWidth(tokens.strokeWidthThin),\r\n ...shorthands.borderRadius(tokens.borderRadiusMedium),\r\n ...shorthands.borderColor(tokens.colorNeutralStrokeAccessible),\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n rowGap: tokens.spacingVerticalS,\r\n ...shorthands.padding(tokens.spacingVerticalS, tokens.spacingHorizontalM),\r\n\r\n '& > span': {\r\n textAlign: 'center',\r\n },\r\n },\r\n});\r\n\r\nexport const TextAssetPlaceholder = ({ i18n, placeholder, onEdit }) => {\r\n const classes = useTextAssetPlaceholderStyles();\r\n\r\n return (\r\n <div className={mergeClasses('display-ads-text-assets-placeholder', classes.root)}>\r\n <Body1>\r\n {placeholder\r\n ? i18n.getString(placeholder)\r\n : i18n.getString(_TL_('Multiple options, editing will override for all texts'))}\r\n </Body1>\r\n <Button size=\"small\" onClick={onEdit}>{i18n.getString(_TL_('Click to edit'))}</Button>\r\n </div>\r\n );\r\n};\r\n\r\nTextAssetPlaceholder.propTypes = {\r\n i18n: PropTypes.shape({ getString: func, getLocale: func }).isRequired,\r\n placeholder: PropTypes.string,\r\n onEdit: PropTypes.func,\r\n};\r\n\r\nTextAssetPlaceholder.defaultProps = {\r\n placeholder: '',\r\n onEdit: () => {},\r\n};\r\n","import React, { useRef, useEffect } from 'react';\r\nimport { noop } from 'underscore';\r\nimport PropTypes, { func } from 'prop-types';\r\nimport { mergeClasses } from '@fluentui/react-components';\r\nimport { TextAssetCollectionWithRecommendations } from '@bingads-webui-campaign-react/pmax-text-input';\r\n\r\nimport { getLongHeadlineAssetCollectionConfig } from '../../configs';\r\nimport { TextFormattingButton } from '../../../text-formatting-button';\r\nimport { TextAssetPlaceholder } from '../text-assets-placeholder';\r\n\r\nexport const LongHeadlineAssetCollection = React.memo((props) => {\r\n const {\r\n i18n,\r\n className,\r\n isOptional,\r\n placeholder,\r\n isMultipleOptions,\r\n onFocusTextAsset,\r\n onDeleteTextAsset,\r\n onResetTextAssets,\r\n onApplyRecommendation,\r\n onToggleTextFormatting,\r\n setAddNewLongHeadlinesCallback,\r\n enableCopilotRecommendations,\r\n } = props;\r\n const addNewLongHeadlinesCallback = useRef(noop);\r\n const longHeadlineAssetCollectionConfig = getLongHeadlineAssetCollectionConfig(i18n);\r\n\r\n useEffect(() => {\r\n if (setAddNewLongHeadlinesCallback) {\r\n setAddNewLongHeadlinesCallback(() => (recommendations, replaceExistingAssets) => {\r\n addNewLongHeadlinesCallback.current(\r\n recommendations,\r\n replaceExistingAssets\r\n );\r\n });\r\n }\r\n }, [setAddNewLongHeadlinesCallback]);\r\n\r\n return (\r\n <div className={mergeClasses('long-headline-asset-collection', className)}>\r\n <TextAssetCollectionWithRecommendations\r\n {...longHeadlineAssetCollectionConfig}\r\n i18n={i18n}\r\n renderInlineCopilot\r\n showAddButton={false}\r\n isOptional={isOptional}\r\n showDeleteButton={false}\r\n withDeleteIconDisabled\r\n replaceMode\r\n hideAddAllSuggestionsButton\r\n enableCustomizer={false}\r\n placeholderText={placeholder ? i18n.getString(placeholder) : ''}\r\n withInlineRecommendations={!isMultipleOptions}\r\n onFocusTextAsset={onFocusTextAsset}\r\n onDeleteTextAsset={onDeleteTextAsset}\r\n onApplyRecommendation={onApplyRecommendation}\r\n enableCopilotRecommendations={enableCopilotRecommendations}\r\n setAddTextAssetCallback={(callback) => {\r\n addNewLongHeadlinesCallback.current = callback;\r\n }}\r\n labelAction={\r\n <TextFormattingButton i18n={i18n} onClick={onToggleTextFormatting} />\r\n }\r\n overrideInputNode={\r\n isMultipleOptions ? (\r\n <TextAssetPlaceholder\r\n i18n={i18n}\r\n onEdit={() => onResetTextAssets('longHeadline')}\r\n />\r\n ) : null\r\n }\r\n />\r\n </div>\r\n );\r\n});\r\n\r\nLongHeadlineAssetCollection.propTypes = {\r\n isOptional: PropTypes.bool,\r\n className: PropTypes.string,\r\n placeholder: PropTypes.string,\r\n isMultipleOptions: PropTypes.bool,\r\n onResetTextAssets: PropTypes.func,\r\n i18n: PropTypes.shape({ getString: func, getLocale: func }).isRequired,\r\n enableCopilotRecommendations: PropTypes.bool,\r\n onFocusTextAsset: PropTypes.func,\r\n onDeleteTextAsset: PropTypes.func,\r\n onApplyRecommendation: PropTypes.func,\r\n onToggleTextFormatting: PropTypes.func,\r\n setAddNewLongHeadlinesCallback: PropTypes.func,\r\n};\r\n\r\nLongHeadlineAssetCollection.defaultProps = {\r\n className: '',\r\n placeholder: '',\r\n isOptional: false,\r\n isMultipleOptions: false,\r\n setAddNewLongHeadlinesCallback: null,\r\n enableCopilotRecommendations: true,\r\n onFocusTextAsset: noop,\r\n onDeleteTextAsset: noop,\r\n onApplyRecommendation: noop,\r\n onToggleTextFormatting: noop,\r\n onResetTextAssets: noop,\r\n};\r\n","import React, { useRef, useEffect } from 'react';\r\nimport { noop } from 'underscore';\r\nimport PropTypes, { func } from 'prop-types';\r\nimport { mergeClasses } from '@fluentui/react-components';\r\nimport { TextAssetCollectionWithRecommendations } from '@bingads-webui-campaign-react/pmax-text-input';\r\n\r\nimport { getShortHeadlineAssetCollectionConfig } from '../../configs';\r\nimport { TextFormattingButton } from '../../../text-formatting-button';\r\nimport { TextAssetPlaceholder } from '../text-assets-placeholder';\r\n\r\nexport const ShortHeadlineAssetCollection = React.memo((props) => {\r\n const {\r\n i18n,\r\n className,\r\n isOptional,\r\n placeholder,\r\n isMultipleOptions,\r\n onFocusTextAsset,\r\n onDeleteTextAsset,\r\n onResetTextAssets,\r\n onApplyRecommendation,\r\n onToggleTextFormatting,\r\n enableCopilotRecommendations,\r\n setAddNewShortHeadlinesCallback,\r\n } = props;\r\n const addNewShortHeadlineCallback = useRef(noop);\r\n const shortHeadlineAssetCollectionConfig = getShortHeadlineAssetCollectionConfig(i18n);\r\n\r\n useEffect(() => {\r\n if (setAddNewShortHeadlinesCallback) {\r\n setAddNewShortHeadlinesCallback(() => (recommendations, replaceExistingAssets) => {\r\n addNewShortHeadlineCallback.current(\r\n recommendations,\r\n replaceExistingAssets\r\n );\r\n });\r\n }\r\n }, [setAddNewShortHeadlinesCallback]);\r\n\r\n return (\r\n <div className={mergeClasses('short-headline-asset-collection', className)}>\r\n <TextAssetCollectionWithRecommendations\r\n {...shortHeadlineAssetCollectionConfig}\r\n i18n={i18n}\r\n renderInlineCopilot\r\n showAddButton={false}\r\n isOptional={isOptional}\r\n showDeleteButton={false}\r\n withDeleteIconDisabled\r\n replaceMode\r\n hideAddAllSuggestionsButton\r\n enableCustomizer={false}\r\n placeholderText={placeholder ? i18n.getString(placeholder) : ''}\r\n withInlineRecommendations={!isMultipleOptions}\r\n onFocusTextAsset={onFocusTextAsset}\r\n onDeleteTextAsset={onDeleteTextAsset}\r\n onApplyRecommendation={onApplyRecommendation}\r\n enableCopilotRecommendations={enableCopilotRecommendations}\r\n setAddTextAssetCallback={(callback) => {\r\n addNewShortHeadlineCallback.current = callback;\r\n }}\r\n labelAction={\r\n <TextFormattingButton i18n={i18n} onClick={onToggleTextFormatting} />\r\n }\r\n overrideInputNode={\r\n isMultipleOptions ? (\r\n <TextAssetPlaceholder\r\n i18n={i18n}\r\n onEdit={() => onResetTextAssets('shortHeadline')}\r\n />\r\n ) : null\r\n }\r\n />\r\n </div>\r\n );\r\n});\r\n\r\nShortHeadlineAssetCollection.propTypes = {\r\n isOptional: PropTypes.bool,\r\n className: PropTypes.string,\r\n placeholder: PropTypes.string,\r\n enableCustomizer: PropTypes.bool,\r\n isMultipleOptions: PropTypes.bool,\r\n onResetTextAssets: PropTypes.func,\r\n i18n: PropTypes.shape({ getString: func, getLocale: func }).isRequired,\r\n enableCopilotRecommendations: PropTypes.bool,\r\n onFocusTextAsset: PropTypes.func,\r\n onDeleteTextAsset: PropTypes.func,\r\n onApplyRecommendation: PropTypes.func,\r\n onToggleTextFormatting: PropTypes.func,\r\n setAddNewShortHeadlinesCallback: PropTypes.func,\r\n};\r\n\r\nShortHeadlineAssetCollection.defaultProps = {\r\n className: '',\r\n placeholder: '',\r\n isOptional: false,\r\n enableCustomizer: false,\r\n isMultipleOptions: false,\r\n enableCopilotRecommendations: true,\r\n setAddNewShortHeadlinesCallback: null,\r\n onFocusTextAsset: noop,\r\n onDeleteTextAsset: noop,\r\n onApplyRecommendation: noop,\r\n onToggleTextFormatting: noop,\r\n onResetTextAssets: noop,\r\n};\r\n","import React, { useRef, useEffect } from 'react';\r\nimport { noop } from 'underscore';\r\nimport PropTypes, { func } from 'prop-types';\r\nimport { mergeClasses } from '@fluentui/react-components';\r\nimport { TextAssetCollectionWithRecommendations } from '@bingads-webui-campaign-react/pmax-text-input';\r\n\r\nimport { getDescriptionAssetCollectionConfig } from '../../configs';\r\nimport { TextFormattingButton } from '../../../text-formatting-button';\r\nimport { TextAssetPlaceholder } from '../text-assets-placeholder';\r\n\r\nexport const DescriptionAssetCollection = React.memo((props) => {\r\n const {\r\n i18n,\r\n className,\r\n isOptional,\r\n placeholder,\r\n isMultipleOptions,\r\n onFocusTextAsset,\r\n onDeleteTextAsset,\r\n onResetTextAssets,\r\n onApplyRecommendation,\r\n onToggleTextFormatting,\r\n enableCopilotRecommendations,\r\n setAddNewDescriptionCallback,\r\n } = props;\r\n const addNewHeadlinesCallback = useRef(noop);\r\n const descriptionAssetCollectionConfig = getDescriptionAssetCollectionConfig(i18n);\r\n\r\n useEffect(() => {\r\n if (setAddNewDescriptionCallback) {\r\n setAddNewDescriptionCallback(() => (recommendations) => {\r\n addNewHeadlinesCallback.current(recommendations);\r\n });\r\n }\r\n }, [setAddNewDescriptionCallback]);\r\n\r\n return (\r\n <div className={mergeClasses('description-asset-collection', className)}>\r\n <TextAssetCollectionWithRecommendations\r\n {...descriptionAssetCollectionConfig}\r\n i18n={i18n}\r\n renderInlineCopilot\r\n showAddButton={false}\r\n isOptional={isOptional}\r\n showDeleteButton={false}\r\n withDeleteIconDisabled\r\n replaceMode\r\n hideAddAllSuggestionsButton\r\n placeholderText={placeholder ? i18n.getString(placeholder) : ''}\r\n enableCustomizer={false}\r\n withInlineRecommendations={!isMultipleOptions}\r\n onFocusTextAsset={onFocusTextAsset}\r\n onDeleteTextAsset={onDeleteTextAsset}\r\n onApplyRecommendation={onApplyRecommendation}\r\n enableCopilotRecommendations={enableCopilotRecommendations}\r\n setAddTextAssetCallback={(callback) => {\r\n addNewHeadlinesCallback.current = callback;\r\n }}\r\n labelAction={\r\n <TextFormattingButton i18n={i18n} onClick={onToggleTextFormatting} />\r\n }\r\n overrideInputNode={\r\n isMultipleOptions ? (\r\n <TextAssetPlaceholder\r\n i18n={i18n}\r\n onEdit={() => onResetTextAssets('description')}\r\n />\r\n ) : null\r\n }\r\n />\r\n </div>\r\n );\r\n});\r\n\r\nDescriptionAssetCollection.propTypes = {\r\n isOptional: PropTypes.bool,\r\n className: PropTypes.string,\r\n placeholder: PropTypes.string,\r\n isMultipleOptions: PropTypes.bool,\r\n onResetTextAssets: PropTypes.func,\r\n i18n: PropTypes.shape({ getString: func, getLocale: func }).isRequired,\r\n enableCopilotRecommendations: PropTypes.bool,\r\n onFocusTextAsset: PropTypes.func,\r\n onDeleteTextAsset: PropTypes.func,\r\n onApplyRecommendation: PropTypes.func,\r\n onToggleTextFormatting: PropTypes.func,\r\n setAddNewDescriptionCallback: PropTypes.func,\r\n disableCopilot: PropTypes.bool.isRequired,\r\n};\r\n\r\nDescriptionAssetCollection.defaultProps = {\r\n className: '',\r\n placeholder: '',\r\n isOptional: false,\r\n isMultipleOptions: false,\r\n setAddNewDescriptionCallback: null,\r\n enableCopilotRecommendations: true,\r\n onFocusTextAsset: noop,\r\n onDeleteTextAsset: noop,\r\n onApplyRecommendation: noop,\r\n onToggleTextFormatting: noop,\r\n onResetTextAssets: noop,\r\n};\r\n","export const assetName = {\r\n longHeadline: 'LongHeadline',\r\n description: 'Description',\r\n shortHeadline: 'ShortHeadline',\r\n callToAction: 'CTA',\r\n background: 'Background',\r\n} as const;\r\n\r\nexport const defaultTextFormattingOptions = {\r\n font: '',\r\n weight: '',\r\n color: '',\r\n} as const;\r\n","import React, { useMemo } from 'react';\r\nimport PropTypes, { func } from 'prop-types';\r\nimport {\r\n Divider,\r\n makeStyles,\r\n mergeClasses,\r\n shorthands,\r\n tokens,\r\n} from '@fluentui/react-components';\r\n\r\nimport {\r\n ShortHeadlineAssetCollection,\r\n DescriptionAssetCollection,\r\n LongHeadlineAssetCollection,\r\n} from './index';\r\nimport { assetName } from '../../../constants';\r\n\r\nconst useTextAssetCollectionStyles = makeStyles({\r\n root: {\r\n maxWidth: '432px',\r\n },\r\n textAssetStyle: {\r\n '& .text-assets-collection-container': {\r\n width: '100%',\r\n },\r\n },\r\n textDivider: {\r\n ...shorthands.margin(tokens.spacingVerticalL, 0),\r\n },\r\n hide: {\r\n display: 'none',\r\n },\r\n});\r\n\r\nconst TextAssetCollectionWithCoPilotInternal = (props) => {\r\n const {\r\n i18n,\r\n disableCopilot,\r\n onResetTextAssets,\r\n shortHeadlineValidations,\r\n longHeadlineValidations,\r\n descriptionValidations,\r\n fetchRecommendationAssets,\r\n setAddNewDescriptionCallback,\r\n setAddNewLongHeadlinesCallback,\r\n setAddNewShortHeadlinesCallback,\r\n onChangeTextAssetFormattingSection,\r\n cancelFetchRecommendationAssetsJob,\r\n } = props;\r\n\r\n const classes = useTextAssetCollectionStyles();\r\n\r\n const longHeadlineAssetCollection = useMemo(\r\n () => (\r\n <LongHeadlineAssetCollection\r\n i18n={i18n}\r\n className={!longHeadlineValidations.display? classes.hide : ''}\r\n isOptional={false}\r\n featureName=\"displayPlus\"\r\n onResetTextAssets={onResetTextAssets}\r\n enableCopilotRecommendations={!disableCopilot}\r\n placeholder={longHeadlineValidations.placeholder}\r\n isMultipleOptions={longHeadlineValidations.isMultipleOptions}\r\n fetchRecommendationAssets={fetchRecommendationAssets}\r\n setAddNewLongHeadlinesCallback={setAddNewLongHeadlinesCallback}\r\n cancelFetchRecommendationAssetsJob={\r\n cancelFetchRecommendationAssetsJob\r\n }\r\n onToggleTextFormatting={() =>\r\n onChangeTextAssetFormattingSection(assetName.longHeadline)\r\n }\r\n />\r\n ),\r\n [\r\n i18n,\r\n classes.hide,\r\n disableCopilot,\r\n onResetTextAssets,\r\n longHeadlineValidations,\r\n fetchRecommendationAssets,\r\n setAddNewLongHeadlinesCallback,\r\n onChangeTextAssetFormattingSection,\r\n cancelFetchRecommendationAssetsJob,\r\n ]\r\n );\r\n\r\n const shortHeadlineAssetCollection = useMemo(\r\n () => (\r\n <ShortHeadlineAssetCollection\r\n i18n={i18n}\r\n className={!shortHeadlineValidations.display? classes.hide : ''}\r\n isOptional={false}\r\n featureName=\"displayPlus\"\r\n onResetTextAssets={onResetTextAssets}\r\n enableCopilotRecommendations={!disableCopilot}\r\n placeholder={shortHeadlineValidations.placeholder}\r\n isMultipleOptions={shortHeadlineValidations.isMultipleOptions}\r\n fetchRecommendationAssets={fetchRecommendationAssets}\r\n setAddNewShortHeadlinesCallback={setAddNewShortHeadlinesCallback}\r\n cancelFetchRecommendationAssetsJob={cancelFetchRecommendationAssetsJob}\r\n onToggleTextFormatting={() =>\r\n onChangeTextAssetFormattingSection(assetName.shortHeadline)\r\n }\r\n />\r\n ),\r\n [\r\n i18n,\r\n classes.hide,\r\n disableCopilot,\r\n onResetTextAssets,\r\n shortHeadlineValidations,\r\n fetchRecommendationAssets,\r\n setAddNewShortHeadlinesCallback,\r\n onChangeTextAssetFormattingSection,\r\n cancelFetchRecommendationAssetsJob,\r\n ]\r\n );\r\n\r\n const descriptionAssetCollection = useMemo(\r\n () => (\r\n <DescriptionAssetCollection\r\n i18n={i18n}\r\n className={!descriptionValidations.display? classes.hide : ''}\r\n isOptional={false}\r\n featureName=\"displayPlus\"\r\n onResetTextAssets={onResetTextAssets}\r\n enableCopilotRecommendations={!disableCopilot}\r\n placeholder={descriptionValidations.placeholder}\r\n isMultipleOptions={descriptionValidations.isMultipleOptions}\r\n fetchRecommendationAssets={fetchRecommendationAssets}\r\n setAddNewDescriptionCallback={setAddNewDescriptionCallback}\r\n cancelFetchRecommendationAssetsJob={cancelFetchRecommendationAssetsJob}\r\n onToggleTextFormatting={() =>\r\n onChangeTextAssetFormattingSection(assetName.description)\r\n }\r\n />\r\n ),\r\n [\r\n i18n,\r\n classes.hide,\r\n disableCopilot,\r\n onResetTextAssets,\r\n descriptionValidations,\r\n fetchRecommendationAssets,\r\n setAddNewDescriptionCallback,\r\n onChangeTextAssetFormattingSection,\r\n cancelFetchRecommendationAssetsJob,\r\n ]\r\n );\r\n\r\n return (\r\n <div\r\n className={mergeClasses(\r\n 'display-template-text-asset-collection',\r\n classes.root\r\n )}\r\n >\r\n <div\r\n className={mergeClasses(\r\n 'text-asset-collections',\r\n classes.textAssetStyle\r\n )}\r\n >\r\n {shortHeadlineValidations.display && <Divider appearance=\"strong\" className={classes.textDivider} />}\r\n {shortHeadlineAssetCollection}\r\n {longHeadlineValidations.display && <Divider appearance=\"strong\" className={classes.textDivider} />}\r\n {longHeadlineAssetCollection}\r\n {descriptionValidations.display && <Divider appearance=\"strong\" className={classes.textDivider} />}\r\n {descriptionAssetCollection}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nTextAssetCollectionWithCoPilotInternal.propTypes = {\r\n i18n: PropTypes.shape({ getString: func, getLocale: func }).isRequired,\r\n fetchRecommendationAssets: PropTypes.func.isRequired,\r\n shortHeadlineValidations: PropTypes.shape({\r\n display: PropTypes.bool,\r\n placeholder: PropTypes.string,\r\n minLength: PropTypes.number,\r\n maxLength: PropTypes.number,\r\n isMultipleOptions: PropTypes.bool,\r\n }),\r\n longHeadlineValidations: PropTypes.shape({\r\n display: PropTypes.bool,\r\n placeholder: PropTypes.string,\r\n minLength: PropTypes.number,\r\n maxLength: PropTypes.number,\r\n isMultipleOptions: PropTypes.bool,\r\n }),\r\n descriptionValidations: PropTypes.shape({\r\n display: PropTypes.bool,\r\n placeholder: PropTypes.string,\r\n minLength: PropTypes.number,\r\n maxLength: PropTypes.number,\r\n isMultipleOptions: PropTypes.bool,\r\n }),\r\n onResetTextAssets: PropTypes.func.isRequired,\r\n disableCopilot: PropTypes.bool.isRequired,\r\n cancelFetchRecommendationAssetsJob: PropTypes.func.isRequired,\r\n setAddNewLongHeadlinesCallback: PropTypes.func.isRequired,\r\n setAddNewDescriptionCallback: PropTypes.func.isRequired,\r\n setAddNewShortHeadlinesCallback: PropTypes.func.isRequired,\r\n onChangeTextAssetFormattingSection: PropTypes.func.isRequired,\r\n};\r\n\r\nTextAssetCollectionWithCoPilotInternal.defaultProps = {\r\n shortHeadlineValidations: {\r\n placeholder: '',\r\n minLength: 0,\r\n maxLength: 30,\r\n display: true,\r\n isMultipleOptions: false,\r\n },\r\n longHeadlineValidations: {\r\n placeholder: '',\r\n minLength: 0,\r\n maxLength: 90,\r\n display: true,\r\n isMultipleOptions: false,\r\n },\r\n descriptionValidations: {\r\n placeholder: '',\r\n minLength: 0,\r\n maxLength: 90,\r\n display: true,\r\n isMultipleOptions: false,\r\n },\r\n};\r\n\r\nexport const TextAssetCollectionWithCoPilot = TextAssetCollectionWithCoPilotInternal;\r\n","/* istanbul ignore file */\r\nimport React, { useMemo } from 'react';\r\nimport PropTypes, { func } from 'prop-types';\r\nimport { debounce } from 'underscore';\r\nimport { mergeClasses } from '@fluentui/react-components';\r\nimport { ValidationGroup } from '@bingads-webui-react/validation';\r\nimport { AssetGroup } from '@bingads-webui/campaign-odata-schemas';\r\nimport { CopilotRepositoryProvider } from '@bingads-webui/inline-copilot';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nimport { getStyles, useDefaultContainerStyles } from './styles';\r\nimport { TextAssetCollectionWithCoPilot } from './components';\r\n\r\nexport const TextAssetCollectionWithRecommendations = (props) => {\r\n const {\r\n url,\r\n i18n,\r\n campaignId,\r\n serverContext,\r\n shortHeadline,\r\n longHeadline,\r\n description,\r\n onChangeTexts,\r\n shortHeadlineValidations,\r\n longHeadlineValidations,\r\n descriptionValidations,\r\n } = props;\r\n const classes = useDefaultContainerStyles();\r\n const helpButtonStyles = useDefaultStyles(getStyles);\r\n const { CurrentLocale: locale } = serverContext;\r\n\r\n const updatedDescriptionSchema = useMemo(() => Object.keys(AssetGroup.properties.Descriptions.schema.properties).reduce((acc, key) => {\r\n const value = AssetGroup.properties.Descriptions.schema.properties[key];\r\n if (key.includes('Description')) {\r\n const updatedValue = {\r\n ...value,\r\n minLength: descriptionValidations.minLength || 0,\r\n maxLength: descriptionValidations.maxLength,\r\n };\r\n return {\r\n ...acc,\r\n [key]: updatedValue,\r\n };\r\n }\r\n return {\r\n ...acc,\r\n [key]: value,\r\n };\r\n }, {}), [descriptionValidations.maxLength, descriptionValidations.minLength]);\r\n\r\n const updatedHeadlineSchema = useMemo(() => Object.keys(AssetGroup.properties.Headlines.schema.properties).reduce((acc, key) => {\r\n const value = AssetGroup.properties.Headlines.schema.properties[key];\r\n if (key.includes('Headline')) {\r\n const updatedValue = {\r\n ...value,\r\n minLength: shortHeadlineValidations.minLength || 0,\r\n maxLength: shortHeadlineValidations.maxLength,\r\n };\r\n return {\r\n ...acc,\r\n [key]: updatedValue,\r\n };\r\n }\r\n return {\r\n ...acc,\r\n [key]: value,\r\n };\r\n }, {}), [shortHeadlineValidations.maxLength, shortHeadlineValidations.minLength]);\r\n\r\n const updatedLongHeadlineSchema = useMemo(() => Object.keys(AssetGroup.properties.LongHeadlines.schema.properties).reduce((acc, key) => {\r\n const value = AssetGroup.properties.LongHeadlines.schema.properties[key];\r\n if (key.includes('LongHeadline')) {\r\n const updatedValue = {\r\n ...value,\r\n minLength: longHeadlineValidations.minLength || 0,\r\n maxLength: longHeadlineValidations.maxLength,\r\n };\r\n return {\r\n ...acc,\r\n [key]: updatedValue,\r\n };\r\n }\r\n return {\r\n ...acc,\r\n [key]: value,\r\n };\r\n }, {}), [longHeadlineValidations.maxLength, longHeadlineValidations.minLength]);\r\n\r\n const updatedAssetGroup = useMemo(\r\n () => ({\r\n ...AssetGroup,\r\n properties: {\r\n ...AssetGroup.properties,\r\n Description: {\r\n ...AssetGroup.properties.Description,\r\n maxLength: descriptionValidations.maxLength,\r\n },\r\n Descriptions: {\r\n ...AssetGroup.properties.Descriptions,\r\n schema: {\r\n ...AssetGroup.properties.Descriptions.schema,\r\n properties: {\r\n ...AssetGroup.properties.Descriptions.schema.properties,\r\n ...updatedDescriptionSchema,\r\n },\r\n },\r\n },\r\n Headline: {\r\n ...AssetGroup.properties.Headline,\r\n maxLength: shortHeadlineValidations.maxLength,\r\n },\r\n Headlines: {\r\n ...AssetGroup.properties.Headlines,\r\n schema: {\r\n ...AssetGroup.properties.Headlines.schema,\r\n properties: {\r\n ...AssetGroup.properties.Headlines.schema.properties,\r\n ...updatedHeadlineSchema,\r\n },\r\n },\r\n },\r\n LongHeadline: {\r\n ...AssetGroup.properties.LongHeadline,\r\n maxLength: longHeadlineValidations.maxLength,\r\n },\r\n LongHeadlines: {\r\n ...AssetGroup.properties.LongHeadlines,\r\n schema: {\r\n ...AssetGroup.properties.LongHeadlines.schema,\r\n properties: {\r\n ...AssetGroup.properties.LongHeadlines.schema.properties,\r\n ...updatedLongHeadlineSchema,\r\n },\r\n },\r\n },\r\n },\r\n }),\r\n [\r\n shortHeadlineValidations.maxLength,\r\n descriptionValidations.maxLength,\r\n longHeadlineValidations.maxLength,\r\n updatedHeadlineSchema,\r\n updatedDescriptionSchema,\r\n updatedLongHeadlineSchema,\r\n ]\r\n );\r\n\r\n const onChangeTextsDebounced = useMemo(() => debounce(\r\n textAssets => onChangeTexts(textAssets),\r\n 1000\r\n ), [onChangeTexts]);\r\n\r\n const handleValidate = ({\r\n data,\r\n isDirty,\r\n isValid,\r\n messages,\r\n }) => {\r\n const {\r\n Headlines,\r\n IsOptional,\r\n Descriptions,\r\n LongHeadlines,\r\n } = data;\r\n const updatedTextAssets = {\r\n isOptional: IsOptional,\r\n isDirty,\r\n isValid,\r\n messages,\r\n };\r\n const newShortHeadline = Headlines ? Headlines.Headline0 || '' : '';\r\n if (!shortHeadlineValidations.isMultipleOptions &&\r\n shortHeadline !== newShortHeadline) {\r\n updatedTextAssets.shortHeadline = newShortHeadline;\r\n }\r\n\r\n const newLongHeadline = LongHeadlines ? LongHeadlines.LongHeadline0 || '' : '';\r\n if (!longHeadlineValidations.isMultipleOptions &&\r\n longHeadline !== newLongHeadline) {\r\n updatedTextAssets.longHeadline = newLongHeadline;\r\n }\r\n\r\n const newDescription = Descriptions ? Descriptions.Description0 || '' : '';\r\n if (!descriptionValidations.isMultipleOptions\r\n && description !== newDescription) {\r\n updatedTextAssets.description = newDescription;\r\n }\r\n\r\n onChangeTextsDebounced(updatedTextAssets);\r\n };\r\n\r\n const handleReset = (key) => {\r\n const updatedTextAssets = {\r\n ...(key === 'shortHeadline' ? { shortHeadline: '' } : {}),\r\n ...(key === 'description' ? { description: '' } : {}),\r\n ...(key === 'longHeadline' ? { longHeadline: '' } : {}),\r\n };\r\n onChangeTexts(updatedTextAssets);\r\n };\r\n\r\n return (\r\n <div className={mergeClasses('display-template-text-asset-collection-container', classes.container, helpButtonStyles.collapseContainer)}>\r\n <ValidationGroup\r\n validationProps={{\r\n schema: updatedAssetGroup,\r\n onValidate: handleValidate,\r\n data: {\r\n FinalUrlForRecommendation: url,\r\n Headlines: {\r\n Headline0: shortHeadline,\r\n },\r\n LongHeadlines: {\r\n LongHeadline0: longHeadline,\r\n },\r\n Descriptions: {\r\n Description0: description,\r\n },\r\n },\r\n i18n,\r\n }}\r\n >\r\n <CopilotRepositoryProvider\r\n finalUrl={url}\r\n locale={locale}\r\n enableLogoAndCTA\r\n campaignId={campaignId}\r\n recommendationType=\"DisplayAd\"\r\n serverContext={serverContext}\r\n >\r\n <TextAssetCollectionWithCoPilot onResetTextAssets={handleReset} {...props} />\r\n </CopilotRepositoryProvider>\r\n </ValidationGroup>\r\n </div>\r\n );\r\n};\r\n\r\nTextAssetCollectionWithRecommendations.propTypes = {\r\n isAudienceAd: PropTypes.bool,\r\n url: PropTypes.string.isRequired,\r\n campaignId: PropTypes.string.isRequired,\r\n shortHeadline: PropTypes.string,\r\n longHeadline: PropTypes.string,\r\n description: PropTypes.string,\r\n shortHeadlineValidations: PropTypes.shape({\r\n display: PropTypes.bool,\r\n placeholder: PropTypes.string,\r\n minLength: PropTypes.number,\r\n maxLength: PropTypes.number,\r\n isMultipleOptions: PropTypes.bool,\r\n }),\r\n longHeadlineValidations: PropTypes.shape({\r\n display: PropTypes.bool,\r\n placeholder: PropTypes.string,\r\n minLength: PropTypes.number,\r\n maxLength: PropTypes.number,\r\n isMultipleOptions: PropTypes.bool,\r\n }),\r\n descriptionValidations: PropTypes.shape({\r\n display: PropTypes.bool,\r\n placeholder: PropTypes.string,\r\n minLength: PropTypes.number,\r\n maxLength: PropTypes.number,\r\n isMultipleOptions: PropTypes.bool,\r\n }),\r\n serverContext: PropTypes.shape({\r\n CurrentLocale: PropTypes.string.isRequired,\r\n }).isRequired,\r\n disableCopilot: PropTypes.bool.isRequired,\r\n i18n: PropTypes.shape({ getString: func, getLocale: func }).isRequired,\r\n fetchRecommendationAssets: PropTypes.func.isRequired,\r\n cancelFetchRecommendationAssetsJob: PropTypes.func.isRequired,\r\n onChangeTexts: PropTypes.func.isRequired,\r\n onChangeTextAssetFormattingSection: PropTypes.func.isRequired,\r\n};\r\n\r\nTextAssetCollectionWithRecommendations.defaultProps = {\r\n isAudienceAd: false,\r\n shortHeadline: '',\r\n longHeadline: '',\r\n description: '',\r\n shortHeadlineValidations: {\r\n placeholder: '',\r\n minLength: 0,\r\n maxLength: 30,\r\n display: true,\r\n isMultipleOptions: false,\r\n },\r\n longHeadlineValidations: {\r\n placeholder: '',\r\n minLength: 0,\r\n maxLength: 90,\r\n display: true,\r\n isMultipleOptions: false,\r\n },\r\n descriptionValidations: {\r\n placeholder: '',\r\n minLength: 0,\r\n maxLength: 90,\r\n display: true,\r\n isMultipleOptions: false,\r\n },\r\n};\r\n","import { makeStyles, shorthands, tokens } from '@fluentui/react-components';\r\n\r\nexport const getskeletonStyles = makeStyles({\r\n row: {\r\n display: 'flex',\r\n ...shorthands.gap('8px'),\r\n flexWrap: 'wrap',\r\n },\r\n item: {\r\n height: '55px',\r\n width: '55px',\r\n backgroundColor: tokens.colorNeutralStencil1,\r\n },\r\n});\r\n\r\n\r\nexport const useStyles = makeStyles({\r\n displayColorPicker: {\r\n '& .helpbutton': {\r\n display: 'inline',\r\n },\r\n },\r\n colorPalette: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n ...shorthands.margin(tokens.spacingVerticalM, 0, 0, 0),\r\n },\r\n item: {\r\n height: '55px',\r\n width: '55px',\r\n backgroundColor: tokens.colorNeutralStencil1,\r\n },\r\n helpButton: {\r\n marginLeft: tokens.spacingHorizontalSNudge,\r\n },\r\n titleContainer: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n});\r\n","/* istanbul ignore file */ // not fully implemented yet\r\nimport React, { useMemo } from 'react';\r\nimport { HelpButton } from '@bingads-webui-react/help-popup';\r\nimport { ColorPalette, ColorAddButton, useCheckDuplicateColor } from '@bingads-webui-campaign-react/ads-color-picker';\r\nimport { Body1Strong, mergeClasses, Skeleton, SkeletonItem } from '@fluentui/react-components';\r\nimport { useStyles, getskeletonStyles } from './style';\r\nimport {\r\n AdsStudioDisplayColorPickerProps\r\n} from './type';\r\n\r\n\r\nconst ListSkeleton = () => {\r\n const classes = getskeletonStyles();\r\n return (\r\n <Skeleton className={classes.row}>\r\n <SkeletonItem className={classes.item} />\r\n <SkeletonItem className={classes.item} />\r\n </Skeleton>\r\n );\r\n};\r\n\r\n// WILL CHANGE ID ONCE DATA START COMING FROM API\r\nexport const AdsStudioDisplayColorPicker: React.FC<AdsStudioDisplayColorPickerProps> = React.memo(({\r\n title,\r\n isLoading,\r\n i18n,\r\n color,\r\n helpTopic,\r\n helpLabel,\r\n paletteData = [],\r\n maxColors = 2,\r\n onUpdate,\r\n onDelete,\r\n}) => {\r\n const totalColors = paletteData.length;\r\n const classes = useStyles();\r\n const renderHelpBubble = useMemo(() => (\r\n <div className={classes.helpButton}>\r\n { helpTopic && (\r\n <HelpButton\r\n topic={helpTopic}\r\n aria-label={helpLabel}\r\n />\r\n )}\r\n </div>\r\n ), [classes.helpButton, helpLabel, helpTopic]);\r\n const { isDuplicate, onUpdateColor } = useCheckDuplicateColor({ paletteData, allowDuplicates: false, onUpdate });\r\n\r\n return (\r\n <div\r\n className={mergeClasses('display_color_picker', classes.displayColorPicker)}\r\n >\r\n <div className={classes.titleContainer}>\r\n <Body1Strong>{title}</Body1Strong>\r\n {renderHelpBubble}\r\n </div>\r\n {isLoading ?\r\n <ListSkeleton /> :\r\n <div className={mergeClasses('color_palette', classes.colorPalette)}>\r\n {paletteData.map(colorData => (\r\n colorData && <ColorPalette paletteColorSize=\"36px\" palletteBoxSize=\"42px\" hideCaption isDuplicate={isDuplicate} showEditBtn={!(colorData as any).isBrandKitColor} i18n={i18n} defaultSelected={colorData.HexCode === color} key={colorData.Name} colorData={colorData} onDelete={((colorData as any).isBrandKitColor || totalColors === 1) ? null : onDelete} updateColor={onUpdate} />\r\n ))}\r\n {(totalColors < maxColors) && <ColorAddButton paletteColorSize=\"36px\" palletteBoxSize=\"42px\" isDuplicate={isDuplicate} i18n={i18n} totalColors={totalColors} updateColor={onUpdateColor} />}\r\n </div>\r\n }\r\n </div>\r\n );\r\n});\r\n","/* istanbul ignore file */\r\nimport React, { useCallback, useContext, useMemo, useRef, useState } from 'react';\r\nimport { get } from 'underscore';\r\nimport {\r\n ActivityContext,\r\n ScenarioContext,\r\n} from '@bingads-webui-react/hoc-with-signal';\r\nimport { constants } from '@bingads-webui-campaign-react/image-experience-model';\r\nimport { AddImageCrudAdComponent } from '@bingads-webui-campaign-react/add-media-panel-crud-ad';\r\nimport {\r\n getUrlPrefixAndDestination,\r\n getUpdatedFullUrlOnPrefixUpdate,\r\n getUpdatedFullUrlOnTextUpdate,\r\n validateAdUrl,\r\n} from '@bingads-webui-campaign-react/url-input-fluent';\r\nimport { withInstrumentation } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport {\r\n useAssetLibraryImagePicker,\r\n useWebsiteSuggestion,\r\n} from '@bingads-webui-campaign-react/add-image-hooks';\r\nimport { UploadImageWrapperProps } from './type';\r\n\r\nexport const UploadImageWrapper = ({\r\n preferenceService,\r\n i18n,\r\n serverContext,\r\n aid,\r\n cid,\r\n maxLimit,\r\n elementType,\r\n isBrandKit,\r\n onSelectImages,\r\n oDataConfig,\r\n minSizeConfig,\r\n panelSubtitle,\r\n panelTitle,\r\n permissions,\r\n instrumentation,\r\n perfMarker,\r\n displayImagePicker,\r\n setDisplayImagePicker,\r\n selectedMediaPanelSource,\r\n setSelectedMediaPanelSource,\r\n disabledAssetSources,\r\n}: UploadImageWrapperProps) => {\r\n const ref = useRef<any>([]);\r\n const onNewImageSelected = useCallback(\r\n (images) => {\r\n setDisplayImagePicker(false);\r\n const imageData = Array.isArray(images) ? images.map(image => (Array.isArray(image) ? image[0] : image)) : images;\r\n // TODO: THIS IS SHORT SOLUTION TO HANDLE UPLOAD IMAGE FROM COMPUTER, WILL REMOVE THIS\r\n if (ref.current.length === 0) {\r\n ref.current = imageData;\r\n } else if (Array.isArray(images) && imageData.length > 0) { ref.current.push(imageData[0]); }\r\n onSelectImages(ref.current, elementType);\r\n },\r\n [setDisplayImagePicker, onSelectImages, elementType]\r\n );\r\n\r\n const activity = useContext(ActivityContext) as { signal: (message: string) => void };\r\n const scenario = useContext(ScenarioContext) as { name: string };\r\n const [privateUrl, setPrivateUrl] = useState('');\r\n\r\n const url = privateUrl || 'https://';\r\n\r\n const urlPrefixValue = useMemo(() => {\r\n const [prefix] = getUrlPrefixAndDestination(url);\r\n return prefix;\r\n }, [url]);\r\n\r\n const { suggestionState, suggestionPoller } = useWebsiteSuggestion({\r\n oDataConfig,\r\n adContext: {\r\n advertiserCustomerId: get(serverContext, ['CurrentCustomer', 'Id']),\r\n accountId: aid,\r\n },\r\n instrumentation,\r\n logActivity: activity.signal,\r\n permissions,\r\n fullUrl: url,\r\n hasErrorInUrl: validateAdUrl(url) !== null,\r\n adCreatorScenario: {\r\n scenarioName: `${scenario.name}AdCreation`,\r\n scenarioValue: `${scenario.name}AdCreation`,\r\n },\r\n // headlines: [],\r\n // descriptions: [],\r\n });\r\n\r\n const updateUrl = (evt) => {\r\n const { value } = evt.target;\r\n const newUrl = getUpdatedFullUrlOnTextUpdate(urlPrefixValue, value);\r\n setPrivateUrl(newUrl);\r\n };\r\n\r\n const updateUrlPrefix = (evt, { text }) => {\r\n const newPrefix = text.substring(0, text.length - 3);\r\n const [, original] = getUrlPrefixAndDestination(url);\r\n const newUrl = getUpdatedFullUrlOnPrefixUpdate(original, newPrefix);\r\n setPrivateUrl(newUrl);\r\n };\r\n const {\r\n imagePickerError,\r\n setImagePickerError,\r\n clearImagePickerError,\r\n uploadImage,\r\n processUploadedImage,\r\n minSize,\r\n addImageByUrl,\r\n onImageSelected,\r\n onImagesSelected,\r\n customMediaSourceConfig,\r\n } = useAssetLibraryImagePicker({\r\n cid: get(serverContext, ['CurrentCustomer', 'Id']),\r\n aid: aid.toString(),\r\n oDataConfig,\r\n onNewImageSelected,\r\n i18n,\r\n permissions,\r\n isDisplayAds: true,\r\n isBrandKit,\r\n });\r\n const emptyFinalUrl = !url || url === `${urlPrefixValue}://`;\r\n return (\r\n <AddImageCrudAdComponent\r\n isOpen={displayImagePicker}\r\n setIsOpen={(newOpen) => {\r\n setDisplayImagePicker(newOpen);\r\n if (!newOpen) {\r\n clearImagePickerError();\r\n }\r\n }}\r\n panelSubtitle={panelSubtitle}\r\n panelTitle={panelTitle}\r\n uploadImage={uploadImage}\r\n processUploadedImage={processUploadedImage}\r\n minSize={minSizeConfig || minSize}\r\n showPromotionBanner={false}\r\n isStockImageEnabled={false}\r\n maxUploadNum={maxLimit}\r\n imageExperienceProps={{\r\n suggestion: get(suggestionState, ['suggestion']),\r\n suggestionPoller,\r\n finalUrl: emptyFinalUrl ? '' : url,\r\n finalUrlProtocol: `${urlPrefixValue}://`,\r\n onUpdateFinalUrl: updateUrl,\r\n onUpdateFinalUrlPrefix: updateUrlPrefix,\r\n isMultimediaAd: false,\r\n imageOption: constants.defaultImageOption,\r\n // todo: what to add here\r\n isDisplayAds: true,\r\n isBrandKit,\r\n }}\r\n addImageByUrl={addImageByUrl}\r\n managedViewSelectionState={selectedMediaPanelSource}\r\n updateManagedViewSelectionState={setSelectedMediaPanelSource}\r\n assetLibraryConfig={{\r\n cid: cid.toString(),\r\n aid: aid.toString(),\r\n oDataConfig,\r\n dateFormat: get(serverContext, ['CurrentUser', 'CultureDateTimeFormat', 'ShortDatePattern']),\r\n timeZone: get(serverContext, ['CurrentUser', 'TimeZone']),\r\n preferencesService: preferenceService,\r\n activityLogger: activity,\r\n onImageSelected,\r\n onImagesSelected,\r\n onImageAddError: e => setImagePickerError(e),\r\n enableStockMultipleSelection: true,\r\n enableWebsiteMultipleSelection: true,\r\n }}\r\n i18n={i18n}\r\n cid={cid}\r\n aid={aid}\r\n errorMessage={imagePickerError}\r\n imageType={null}\r\n customMediaSourceConfig={customMediaSourceConfig}\r\n perfMarker={perfMarker}\r\n permissions={permissions}\r\n isAADUser={get(serverContext, ['IsAADUser'])}\r\n creativeEditorProps={null}\r\n serverContext={serverContext}\r\n disabledAssetSources={disabledAssetSources}\r\n />\r\n );\r\n};\r\n\r\nexport const UploadImage = withInstrumentation(UploadImageWrapper);\r\n","/* istanbul ignore file */\r\nimport _ from 'underscore';\r\nimport { getFormattedImage } from '@bingads-webui-campaign-react/copilot-common';\r\nimport { getCenterCroppedSettings } from '@bingads-webui-campaign/image-experience-utils';\r\nimport { getContrastRatio } from 'a11y-contrast-color';\r\nimport {\r\n AdSize,\r\n AdProps,\r\n TemplateConfig,\r\n TemplateConfigs,\r\n DisplayAds,\r\n AssetName,\r\n State,\r\n AssetProperties,\r\n TextAssetsFormatting,\r\n TextFormattingOption,\r\n BrandKitFont,\r\n} from './types';\r\nimport { assetName as textAssetName } from './constants';\r\n\r\nexport const applyZoom = (length: number, zoomValue: string) => {\r\n const zoom = parseInt(zoomValue.replace('%', ''), 10) / 100;\r\n return Math.round(length * zoom);\r\n};\r\n\r\n// TODO: after MVP, if more sizes are supported they should be added here\r\nexport const sizeCategories = {\r\n Horizontal: ['970x250', '728x90', '320x50'],\r\n Vertical: ['160x600', '300x600'],\r\n Square: ['300x250'],\r\n};\r\n\r\nexport const aspectRatioLogoMapping = {\r\n '1.91:1': 'landscape',\r\n '1:1': 'square',\r\n '4:1': 'landscape',\r\n};\r\n// TODO: WILL ADD CONFIG HERE\r\nexport const imageAspectRatioConfig = {\r\n '1.91:1': { type: 'Image191x100', minCropSize: [152, 80] },\r\n '1:1': { type: 'Image1x1', minCropSize: [80, 80] },\r\n '4:1': { type: 'Image4x1', minCropSize: [320, 80] },\r\n};\r\nexport const getCropSetting = (image: any, aspectRatio) => {\r\n if (!aspectRatio || !image) {\r\n return {};\r\n }\r\n const cropSettings = getCenterCroppedSettings({\r\n SourceWidth: image.width,\r\n SourceHeight: image.height,\r\n SourceX: 0,\r\n SourceY: 0,\r\n }, aspectRatio);\r\n return cropSettings;\r\n};\r\n\r\nexport const mapBrandKitImagesToDisplayAd = (brandKitImage, logoConfig: { aspectRatio: string } | null = null) => {\r\n if (!brandKitImage) {\r\n return {};\r\n }\r\n const data: any = {\r\n isBrandKitImage: true,\r\n url: brandKitImage.Src,\r\n assetId: brandKitImage.Id,\r\n imageSize: {\r\n width: brandKitImage.width || brandKitImage.CropWidth,\r\n height: brandKitImage.height || brandKitImage.CropHeight,\r\n },\r\n };\r\n if (logoConfig) {\r\n data.cropSetting = [{\r\n aspectRatio: logoConfig.aspectRatio,\r\n sourceHeight: brandKitImage.CropHeight,\r\n sourceWidth: brandKitImage.CropWidth,\r\n sourceX: brandKitImage.CropX,\r\n sourceY: brandKitImage.CropY,\r\n }]\r\n }\r\n return data;\r\n};\r\nexport function getImageAssetConfigs(templateConfigs, targetSizes, assetType) {\r\n let display = false;\r\n let displayBackground= false;\r\n const apectRatioSet: Set<any> = new Set();\r\n targetSizes.forEach((size) => {\r\n const ad = templateConfigs[size];\r\n if (ad?.[assetType] && ad[assetType].display) {\r\n display = true;\r\n apectRatioSet.add(ad[assetType].aspectRatio);\r\n }\r\n if (ad?.background && ad.background.display) {\r\n displayBackground = true;\r\n }\r\n });\r\n return {\r\n display,\r\n displayBackground,\r\n apectRatioSet,\r\n };\r\n}\r\nexport const filterBrandKitLogos = (brandKit, aspectRatio) => {\r\n const logoAspectRatio = aspectRatioLogoMapping[aspectRatio];\r\n if (!logoAspectRatio || !brandKit?.logos?.length) {\r\n return [];\r\n }\r\n const brandkitLogos = brandKit.logos.filter((logo) => logo.ImageType === logoAspectRatio);\r\n return brandkitLogos;\r\n};\r\n\r\nexport const getBrandKitFilterLogos = (brandKit, templateConfigs) => {\r\n const size = Object.keys(templateConfigs)?.[0];\r\n const aspectRatio = templateConfigs[size]?.logo?.aspectRatio;\r\n const filterLogos = filterBrandKitLogos(brandKit, aspectRatio);\r\n return { filterLogos, aspectRatio };\r\n};\r\nexport const addBrandKitToRecommendedAssets = (recommendedAssets, brandKit, templateConfigs) => {\r\n if (!brandKit) {\r\n return recommendedAssets;\r\n }\r\n const { filterLogos, aspectRatio } = getBrandKitFilterLogos(brandKit, templateConfigs);\r\n\r\n const theme = {\r\n images: [],\r\n logo: [],\r\n };\r\n const assets = recommendedAssets || {\r\n themesImages: [],\r\n themesLogos: [],\r\n headlines: [],\r\n longHeadlines: [],\r\n descriptions: [],\r\n imageAssets: [],\r\n logo: [],\r\n cta: [],\r\n color: [],\r\n };\r\n assets.themesImages = assets.themes || [];\r\n assets.themesLogos = [];\r\n if (assets?.logo?.length > 0) {\r\n assets.themesLogos.push({\r\n name: _TL_('Recommended Logos'),\r\n images: [...assets.logo],\r\n });\r\n }\r\n if (brandKit?.images?.length > 0) {\r\n assets.imageAssets = [...brandKit.images.map((image) => ({ ...mapBrandKitImagesToDisplayAd(image), ...getFormattedImage({ Url: image.Src }) })), ...assets.imageAssets];\r\n theme.images = brandKit.images.map((image) => ({ ...mapBrandKitImagesToDisplayAd(image), ...getFormattedImage({ Url: image.Src }) }));\r\n }\r\n // pick one square or landscape image for logo\r\n if (filterLogos?.length > 0) {\r\n assets.logo = [...filterLogos.map((logo) => ({ ...mapBrandKitImagesToDisplayAd(logo, { aspectRatio }), ...getFormattedImage({ Url: logo.Src }) })), ...assets.logo];\r\n theme.logo = filterLogos.map((logo) => ({ ...mapBrandKitImagesToDisplayAd(logo, { aspectRatio }), ...getFormattedImage({ Url: logo.Src }) }));\r\n }\r\n if (brandKit?.palettes?.length > 0) {\r\n assets.color = brandKit.palettes.map((palette) => ({ ...palette, isBrandKitColor: true }));\r\n }\r\n\r\n assets.themesImages.push({\r\n name: _TL_('Brand Kit'),\r\n images: [...theme.images],\r\n });\r\n assets.themesLogos.push({\r\n name: _TL_('Brand Kit'),\r\n images: [...theme.logo],\r\n });\r\n return assets;\r\n};\r\n\r\nexport const getAdSizeCategory = (size: AdSize) => Object.keys(sizeCategories)\r\n .find(category => sizeCategories[category].includes(size)) || 'Other';\r\n\r\nexport const getAdConfig = (ad: AdProps, templateConfig: TemplateConfig) => ({\r\n template: {\r\n ..._.pick(templateConfig, 'templateId', 'templateName', 'version', 'style'),\r\n ...((templateConfig.shortHeadline && templateConfig.shortHeadline.display)? { shortHeadline: _.pick(ad.shortHeadline, 'text') }: {}),\r\n ...((templateConfig.longHeadline && templateConfig.longHeadline.display)? { longHeadline: _.pick(ad.longHeadline, 'text') }: {}),\r\n ...((templateConfig.description && templateConfig.description.display)? { description: _.pick(ad.description, 'text') }: {}),\r\n ...((templateConfig.cta && templateConfig.cta.display)? { cta: _.pick(ad.cta, 'text') }: {}),\r\n ...((templateConfig.image && templateConfig.image.display)? { image: _.pick(ad.image, 'url', 'cropSetting') }: {}),\r\n ...((templateConfig.logo && templateConfig.logo.display)? { logo: _.pick(ad.logo, 'url', 'cropSetting') }: {}),\r\n ...((templateConfig.color && templateConfig.color)? { color: ad.color }: {}),\r\n assetProperties: ad.assetProperties,\r\n background: ad.background,\r\n },\r\n});\r\n\r\n// get ads configs to get ad images\r\nexport const getAdConfigs = (displayAds: DisplayAds, templateConfigs: TemplateConfigs) => {\r\n const ads = Object.keys(displayAds).map((size) => {\r\n const ad = displayAds[size];\r\n const templateConfig = templateConfigs[size];\r\n\r\n return getAdConfig(ad, templateConfig);\r\n });\r\n\r\n return ads;\r\n};\r\n\r\n// get text assets formatting config for a given asset\r\nexport const getTextFormattingOptions = (\r\n displayAds: State['displayAds'],\r\n targetSizes: State['targetSizes'],\r\n prop: AssetName\r\n) => {\r\n const textFormattingColorOptions: Set<any> = new Set();\r\n const textFormattingFontOptions: Set<any> = new Set();\r\n const textFormattingWeightOptions: Set<any> = new Set();\r\n\r\n targetSizes.forEach((size) => {\r\n const ad = displayAds[size];\r\n\r\n if (!ad?.assetProperties) return;\r\n\r\n const selectedColor = ad.assetProperties.find(({ assetName, assetProperty }) =>\r\n assetName === prop && assetProperty === 'Color')?.value;\r\n if (selectedColor) {\r\n textFormattingColorOptions.add(selectedColor);\r\n }\r\n\r\n const selectedFont = ad.assetProperties.find(({ assetName, assetProperty }) =>\r\n assetName === prop && assetProperty === 'FontFamily')?.value;\r\n if (selectedFont) {\r\n textFormattingFontOptions.add(selectedFont);\r\n }\r\n\r\n const selectedWeight = ad.assetProperties.find(({ assetName, assetProperty }) =>\r\n assetName === prop && assetProperty === 'FontWeight')?.value;\r\n if (selectedWeight) {\r\n textFormattingWeightOptions.add(selectedWeight);\r\n }\r\n });\r\n\r\n return {\r\n font: {\r\n value:\r\n textFormattingFontOptions.size === 1\r\n ? Array.from(textFormattingFontOptions)[0] || ''\r\n : '',\r\n options: Array.from(textFormattingFontOptions),\r\n isMultiple: textFormattingFontOptions.size > 1,\r\n },\r\n weight: {\r\n value:\r\n textFormattingWeightOptions.size === 1\r\n ? Array.from(textFormattingWeightOptions)[0] || ''\r\n : '',\r\n options: Array.from(textFormattingWeightOptions),\r\n isMultiple: textFormattingWeightOptions.size > 1,\r\n },\r\n color: {\r\n value:\r\n textFormattingColorOptions.size === 1\r\n ? Array.from(textFormattingColorOptions)[0] || ''\r\n : '',\r\n options: Array.from(textFormattingColorOptions),\r\n isMultiple: textFormattingColorOptions.size > 1,\r\n },\r\n };\r\n};\r\n\r\nexport const getAllTextFormattingOptions = (\r\n displayAds: State['displayAds'],\r\n targetSizes: State['targetSizes']\r\n): TextAssetsFormatting => {\r\n const shortHeadlineFormattingOptions = getTextFormattingOptions(\r\n displayAds,\r\n targetSizes,\r\n 'ShortHeadline'\r\n );\r\n const longHeadlineFormattingOptions = getTextFormattingOptions(\r\n displayAds,\r\n targetSizes,\r\n 'LongHeadline'\r\n );\r\n const descriptionFormattingOptions = getTextFormattingOptions(\r\n displayAds,\r\n targetSizes,\r\n 'Description'\r\n );\r\n const callToActionFormattingOptions = getTextFormattingOptions(\r\n displayAds,\r\n targetSizes,\r\n 'CTA'\r\n );\r\n\r\n return {\r\n [textAssetName.shortHeadline]: {\r\n font: shortHeadlineFormattingOptions.font.value,\r\n color: shortHeadlineFormattingOptions.color.value,\r\n weight: shortHeadlineFormattingOptions.weight.value,\r\n },\r\n [textAssetName.longHeadline]: {\r\n font: longHeadlineFormattingOptions.font.value,\r\n color: longHeadlineFormattingOptions.color.value,\r\n weight: longHeadlineFormattingOptions.weight.value,\r\n },\r\n [textAssetName.description]: {\r\n font: descriptionFormattingOptions.font.value,\r\n color: descriptionFormattingOptions.color.value,\r\n weight: descriptionFormattingOptions.weight.value,\r\n },\r\n [textAssetName.callToAction]: {\r\n font: callToActionFormattingOptions.font.value,\r\n color: callToActionFormattingOptions.color.value,\r\n weight: callToActionFormattingOptions.weight.value,\r\n },\r\n };\r\n};\r\n\r\nexport const getTransformedAssetProperties = (formatConfig: TextFormattingOption, section: AssetName): AssetProperties[] => {\r\n const assetProperties: AssetProperties[] = [];\r\n const { font, color, weight } = formatConfig;\r\n\r\n if (font) {\r\n assetProperties.push({\r\n assetName: section,\r\n assetProperty: 'FontFamily',\r\n value: font,\r\n });\r\n }\r\n\r\n if (color) {\r\n assetProperties.push({\r\n assetName: section,\r\n assetProperty: 'Color',\r\n value: color,\r\n });\r\n }\r\n\r\n if (weight) {\r\n assetProperties.push({\r\n assetName: section,\r\n assetProperty: 'FontWeight',\r\n value: weight,\r\n });\r\n }\r\n\r\n return assetProperties;\r\n};\r\n\r\nexport const getAssetPropertiesFromBrandKitFonts = (brandKitFonts: BrandKitFont[]) : AssetProperties[] => {\r\n const assetProperties: AssetProperties[] = [];\r\n\r\n brandKitFonts.forEach(({ Typeface, Weight, TextAssetType }) => {\r\n const assetName = TextAssetType === 'CallToAction' ? 'CTA' : TextAssetType;\r\n if (Typeface) {\r\n assetProperties.push({\r\n assetName,\r\n value: Typeface,\r\n assetProperty: 'FontFamily',\r\n });\r\n }\r\n\r\n if (Weight) {\r\n assetProperties.push({\r\n assetName,\r\n value: Weight,\r\n assetProperty: 'FontWeight',\r\n });\r\n }\r\n });\r\n\r\n return assetProperties;\r\n};\r\n\r\nexport const getNewAssetProperties = (assetProperties: AssetProperties[], payload: AssetProperties[]) => {\r\n const newAssetProperties = [...assetProperties];\r\n\r\n payload.forEach((newProp) => {\r\n const index = newAssetProperties.findIndex(({ assetName, assetProperty }) =>\r\n assetName === newProp.assetName && assetProperty === newProp.assetProperty);\r\n\r\n if (index === -1) {\r\n newAssetProperties.push(newProp);\r\n } else {\r\n newAssetProperties[index] = newProp;\r\n }\r\n });\r\n\r\n return newAssetProperties;\r\n};\r\n\r\nexport const getColorContrastRatio = (foregrounds: string[], background: string) => {\r\n const hexToRgb = (hex: string): [number, number, number] | null => {\r\n // convert shorthand (ex '123') to full (ex '112233')\r\n const shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\r\n const hexCopy = hex.replace(shorthandRegex, (m, r, g, b) => `${r}${r}${g}${g}${b}${b}`);\r\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hexCopy);\r\n\r\n return result\r\n ? [\r\n parseInt(result[1], 16),\r\n parseInt(result[2], 16),\r\n parseInt(result[3], 16),\r\n ]\r\n : null;\r\n };\r\n\r\n const ratios : number[] = [];\r\n foregrounds.forEach((foreground) => {\r\n const rgb1 = hexToRgb(foreground);\r\n const rgb2 = hexToRgb(background);\r\n\r\n if (rgb1 && rgb2) {\r\n // range of 0 to 21, 4.5 being the minumum for readability\r\n ratios.push(getContrastRatio(rgb1, rgb2));\r\n } else {\r\n ratios.push(0);\r\n }\r\n });\r\n\r\n if (_.some(ratios, ratio => ratio < 4.5)) {\r\n return 0;\r\n }\r\n\r\n let sum = 0;\r\n ratios.forEach((element) => {\r\n sum += element;\r\n });\r\n\r\n return sum / ratios.length;\r\n};\r\n","/* istanbul ignore file */ // not fully implemented yet\r\nimport React, { useCallback, useContext, useMemo, useState } from 'react';\r\nimport { Divider, makeStyles, shorthands, tokens } from '@fluentui/react-components';\r\nimport {\r\n ScenarioContext,\r\n} from '@bingads-webui-react/hoc-with-signal';\r\nimport { getImageDetailAsync } from '@bingads-webui-campaign/image-experience-utils';\r\nimport { useImagePicker } from '@bingads-webui-campaign-react/add-image-hooks';\r\nimport { MediaRepository } from '@bingads-webui-campaign/media-repository';\r\nimport { MediaEditorPanel } from '@bingads-webui-campaign-react/media-editor-panel';\r\nimport { withInstrumentation } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { RecommendedImage } from '@bingads-webui-campaign-react/display-recommended-image';\r\nimport { CSMLAssetSource } from '@bingads-webui-campaign-react/asset-library-model';\r\nimport { AdsStudioDisplayColorPicker } from './background-asset';\r\nimport { UploadImage } from './upload-image';\r\nimport { ActionPaneProps } from './type';\r\nimport { imageAspectRatioConfig } from '../utils';\r\n\r\n\r\nconst useStyles = makeStyles({\r\n divider: {\r\n ...shorthands.margin(tokens.spacingVerticalL, 0),\r\n },\r\n});\r\n\r\ntype payloadType = {url: string, cropSetting: {[key: string]: any}}\r\n// TODO: DATA WILL CHANGE ONCE WE HAVE DATA COMING FROM BACKEND\r\nconst ActionPane: React.FC<ActionPaneProps> = ({\r\n i18n,\r\n permissions,\r\n cid,\r\n aid,\r\n oDataConfig,\r\n isAssetsLoading,\r\n serverContext = {},\r\n preferenceService,\r\n perfMarker,\r\n imagesUrl,\r\n logosUrl,\r\n images,\r\n logos,\r\n actionPanelDisplayData,\r\n onImageChange,\r\n onLogoChange,\r\n backgroundColors,\r\n onBackgroundColorChange,\r\n recommendedAssets,\r\n showRecommendationsBanner,\r\n}) => {\r\n const scenario = useContext(ScenarioContext);\r\n const [editPanel, setEditPanel] = useState(false);\r\n const [assetType, setAssetType] = useState('');\r\n const [internalEffectSettings, setEffectSettings] = useState(null);\r\n const classes = useStyles();\r\n // const [internalCropSetting, setCropSetting] = useState(null);\r\n const {\r\n displayImagePicker,\r\n setDisplayImagePicker,\r\n selectedMediaPanelSource,\r\n setSelectedMediaPanelSource,\r\n } = useImagePicker();\r\n\r\n const imageAssets = recommendedAssets?.imageAssets || [];\r\n const logoAssets = recommendedAssets?.logo || [];\r\n const themesImages = recommendedAssets?.themesImages || [];\r\n const themesLogos = recommendedAssets?.themesLogos || [];\r\n const maxColorsLimit = (recommendedAssets?.color?.length || 0) + 1;\r\n const selectedColor = useMemo(() => {\r\n if (backgroundColors && backgroundColors.size === 1) {\r\n return backgroundColors.values().next().value;\r\n }\r\n return '';\r\n }, [backgroundColors]);\r\n\r\n // show brandkit and display ads selected color\r\n const paletteData = useMemo(() => {\r\n const data = Array.from(recommendedAssets?.color || []);\r\n backgroundColors.forEach((key) => {\r\n if (!data.some(color => color.HexCode === key) && key) {\r\n data.push({ HexCode: key, Name: key });\r\n }\r\n });\r\n return data;\r\n }, [recommendedAssets?.color, backgroundColors]);\r\n // TODO: CHANGE THIS TO USE DATA COMING FROM BACKEND\r\n\r\n const mediaRepository = useMemo(() => new MediaRepository({\r\n cid, aid, oDataConfig,\r\n }), [aid, cid, oDataConfig]);\r\n\r\n const onDeleteColor = useCallback((ev) => {\r\n const { colorid } = ev.currentTarget.dataset;\r\n let data = Array.from(recommendedAssets?.color || []);\r\n data = data.filter(color => color.Name !== colorid);\r\n if (data.length > 0) {\r\n onBackgroundColorChange((data[0])?.HexCode);\r\n }\r\n }, [onBackgroundColorChange, recommendedAssets?.color]);\r\n\r\n const handleAssetChange = useCallback((payload, type = '', keepCropSettings = false) => {\r\n if (type === 'logo' || assetType === 'logo') {\r\n onLogoChange(payload);\r\n } else {\r\n onImageChange(payload, keepCropSettings);\r\n }\r\n }, [assetType, onImageChange, onLogoChange]);\r\n\r\n\r\n const onReplacePreview = useCallback((ev) => {\r\n const { type } = ev.currentTarget.dataset;\r\n setDisplayImagePicker(true);\r\n setAssetType(type);\r\n }, [setDisplayImagePicker]);\r\n\r\n const onDismissEditPanel = useCallback(() => {\r\n setEditPanel(false);\r\n setAssetType('');\r\n }, []);\r\n\r\n\r\n const onSelectRecommendedImage = (data, type) => {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { fullUrl, index } = data;\r\n getImageDetailAsync(fullUrl).then(({ naturalWidth, naturalHeight }) => {\r\n let assetData = imageAssets[index];\r\n if (type === 'logo') {\r\n assetData = logoAssets[index];\r\n }\r\n const payload = {\r\n url: fullUrl,\r\n assetId: assetData.assetId,\r\n imageSize: {\r\n width: naturalWidth,\r\n height: naturalHeight,\r\n },\r\n };\r\n if (assetData.isBrandKitImage && assetData.cropSetting) {\r\n (payload as any).cropSetting = assetData.cropSetting;\r\n }\r\n handleAssetChange(payload, type);\r\n });\r\n };\r\n const onAddImages = (imageData, type) => {\r\n const image = imageData[0];\r\n const payload = {\r\n url: image?.src || image?.image?.src,\r\n imageSize: {\r\n width: image?.width || image?.image?.width,\r\n height: image?.height || image?.image?.height,\r\n },\r\n assetId: image?.id || image?.image?.id,\r\n };\r\n handleAssetChange(payload, type);\r\n };\r\n const onBackgroundChange = (color, colorObj) => {\r\n onBackgroundColorChange(colorObj.str);\r\n };\r\n\r\n const imageUrl = useMemo(() => {\r\n if (imagesUrl && imagesUrl.size === 1) {\r\n return imagesUrl.values().next().value;\r\n }\r\n return '';\r\n }, [imagesUrl]);\r\n\r\n const logoUrl = useMemo(() => {\r\n if (logosUrl && logosUrl.size === 1) {\r\n return logosUrl.values().next().value;\r\n }\r\n return '';\r\n }, [logosUrl]);\r\n\r\n const imageAspectRatio = useMemo(() => {\r\n if (actionPanelDisplayData.imageAspectRatio.size === 1) {\r\n return actionPanelDisplayData.imageAspectRatio.values().next().value;\r\n }\r\n return '';\r\n }, [actionPanelDisplayData]);\r\n\r\n const logoAspectRatio = useMemo(() => {\r\n if (actionPanelDisplayData && actionPanelDisplayData.logoAspectRatio.size === 1) {\r\n return actionPanelDisplayData.logoAspectRatio.values().next().value;\r\n }\r\n return '';\r\n }, [actionPanelDisplayData]);\r\n\r\n const baseImage = useMemo(() => {\r\n let data = images?.[0];\r\n let aspectRatio = imageAspectRatio;\r\n if (assetType === 'logo') {\r\n aspectRatio = logoAspectRatio;\r\n data = logos?.[0];\r\n }\r\n const cropSetting = data?.cropSetting?.[0];\r\n return {\r\n Src: data?.url,\r\n AltText: i18n.getString(_TL_('template image')),\r\n Height: data?.imageSize?.height,\r\n Type: imageAspectRatioConfig[aspectRatio]?.type,\r\n Width: data?.imageSize?.width,\r\n CropSetting: {\r\n SourceWidth: cropSetting?.sourceWidth ?? cropSetting?.SourceWidth ?? data?.imageSize?.width,\r\n SourceHeight: cropSetting?.sourceHeight ?? cropSetting?.SourceHeight ?? data?.imageSize?.height,\r\n SourceX: cropSetting?.sourceX ?? cropSetting?.SourceX ?? 0,\r\n SourceY: cropSetting?.sourceY ?? cropSetting?.SourceY ?? 0,\r\n },\r\n };\r\n }, [assetType, imageAspectRatio, images, logoAspectRatio, logos]);\r\n const onEditPreview = useCallback((ev) => {\r\n const { type } = ev.currentTarget.dataset;\r\n let data = [...images];\r\n if (type === 'logo') {\r\n data = [...logos];\r\n }\r\n if (data?.[0]?.imageSize?.width && data?.[0]?.imageSize?.height) {\r\n setAssetType(type);\r\n setEditPanel(true);\r\n return;\r\n }\r\n getImageDetailAsync(data?.[0]?.url).then(({ naturalWidth, naturalHeight }) => {\r\n data[0].imageSize = { width: naturalWidth, height: naturalHeight };\r\n setAssetType(type);\r\n setEditPanel(true);\r\n });\r\n }, [images, logos]);\r\n\r\n const hideEditPreviewBtnImage = !logoAspectRatio;\r\n const hideCropImage = !imageAspectRatio;\r\n const minCropSize = assetType === 'logo' ? imageAspectRatioConfig[logoAspectRatio]?.minCropSize : imageAspectRatioConfig[imageAspectRatio]?.minCropSize;\r\n const isMultpleImages = imagesUrl && imagesUrl.size > 1;\r\n const isMultpleLogos = logosUrl && logosUrl.size > 1;\r\n const onSaveEditImage = useCallback((effectSettings) => {\r\n setEffectSettings(effectSettings);\r\n // setCropSetting(cropSettings);\r\n setEditPanel(false);\r\n setAssetType('');\r\n const payload: payloadType | {} = {};\r\n let keepCropSettings = false;\r\n if (effectSettings?.effectSettings?.effectSrc) {\r\n (payload as payloadType).url = effectSettings.effectSettings?.effectSrc;\r\n keepCropSettings = true;\r\n }\r\n if (effectSettings?.cropSettings && (assetType === 'logo' || !hideCropImage)) {\r\n (payload as payloadType).cropSetting = [effectSettings.cropSettings];\r\n }\r\n if (Object.keys(payload).length > 0) {\r\n handleAssetChange(payload, '', keepCropSettings);\r\n }\r\n }, [assetType, handleAssetChange, hideCropImage, images, logos]);\r\n\r\n return (\r\n <div className=\"action-pane\">\r\n {(actionPanelDisplayData.displayLogo && showRecommendationsBanner) &&\r\n <Divider appearance=\"strong\" className={classes.divider} />}\r\n {actionPanelDisplayData.displayLogo && <RecommendedImage\r\n i18n={i18n}\r\n maxUploadNum={1}\r\n previewImage={logoUrl}\r\n hideEditPreviewBtn={hideEditPreviewBtnImage}\r\n isMultiplePreview={isMultpleLogos}\r\n recommendedImages={logoAssets || []}\r\n isLoading={isAssetsLoading}\r\n uiBlocking={false}\r\n type=\"logo\"\r\n helpTopic=\"pop_BA_DisplayTemplate_Logo\"\r\n helpLabel=\"Learn more about logos\"\r\n themes={themesLogos || []}\r\n seeAllPanelTitle={i18n.getString(_TL_('Recommended logos'))}\r\n onEditPreviewImage={onEditPreview}\r\n onReplacePreviewImage={onReplacePreview}\r\n recommendedLoadingText={i18n.getString(_TL_('Loading'))}\r\n title={i18n.getString(_TL_('Logo'))}\r\n recommendationTitle={i18n.getString(_TL_('Recommended logos'))}\r\n onSelectRecommendedImage={onSelectRecommendedImage}\r\n seeAllLinkText={_TL_('View all')}\r\n showViewAllInHeader\r\n />}\r\n {editPanel && <MediaEditorPanel\r\n isOpen={editPanel}\r\n onDismiss={onDismissEditPanel}\r\n onApply={onSaveEditImage}\r\n disableCrop={hideCropImage}\r\n isLogo={assetType === 'logo'}\r\n permissions={permissions}\r\n hasRightRail={false}\r\n effectSettings={internalEffectSettings}\r\n cropSettings={baseImage.CropSetting}\r\n // onManualCropImage={onManualCropImage}\r\n // onManualCropLogo={onManualCropLogo}\r\n minCropSize={minCropSize}\r\n baseImage={baseImage}\r\n mediaRepository={mediaRepository}\r\n adCreatorScenario={{\r\n scenarioName: `${(scenario as any).name}AdCreation`,\r\n scenarioValue: `${(scenario as any).name}AdCreation`,\r\n }}\r\n />}\r\n {displayImagePicker && (\r\n <UploadImage\r\n displayImagePicker={displayImagePicker}\r\n setDisplayImagePicker={setDisplayImagePicker}\r\n selectedMediaPanelSource={selectedMediaPanelSource}\r\n setSelectedMediaPanelSource={setSelectedMediaPanelSource}\r\n permissions={permissions}\r\n i18n={i18n}\r\n maxLimit={1}\r\n preferenceService={preferenceService}\r\n serverContext={serverContext}\r\n aid={aid}\r\n cid={cid}\r\n onSelectImages={onAddImages}\r\n oDataConfig={oDataConfig}\r\n perfMarker={perfMarker}\r\n elementType={assetType}\r\n disabledAssetSources={[CSMLAssetSource.Shutterstock]}\r\n />\r\n )}\r\n {(actionPanelDisplayData.displayImage && (showRecommendationsBanner || actionPanelDisplayData.displayLogo)) &&\r\n <Divider appearance=\"strong\" className={classes.divider} />}\r\n {actionPanelDisplayData.displayImage && <RecommendedImage\r\n i18n={i18n}\r\n maxUploadNum={1}\r\n previewImage={imageUrl}\r\n helpTopic=\"pop_BA_DisplayTemplate_Image\"\r\n helpLabel=\"Learn more about images\"\r\n recommendedImages={imageAssets || []}\r\n isLoading={isAssetsLoading}\r\n uiBlocking={false}\r\n type=\"image\"\r\n isMultiplePreview={isMultpleImages}\r\n themes={themesImages || []}\r\n seeAllPanelTitle={_TL_('Recommended images')}\r\n onEditPreviewImage={onEditPreview}\r\n onReplacePreviewImage={onReplacePreview}\r\n recommendedLoadingText={i18n.getString(_TL_('Loading'))}\r\n title={i18n.getString(_TL_('Image'))}\r\n recommendationTitle={_TL_('Recommended images')}\r\n onSelectRecommendedImage={onSelectRecommendedImage}\r\n seeAllLinkText={_TL_('View all')}\r\n showViewAllInHeader\r\n />}\r\n { actionPanelDisplayData.displayBackground && <Divider appearance=\"strong\" className={classes.divider} />}\r\n {actionPanelDisplayData.displayBackground &&\r\n <AdsStudioDisplayColorPicker\r\n i18n={i18n}\r\n maxColors={maxColorsLimit}\r\n helpTopic=\"pop_BA_DisplayAds_Color\"\r\n helpLabel=\"Learn more about background colors\"\r\n onDelete={onDeleteColor}\r\n paletteData={paletteData}\r\n isLoading={isAssetsLoading}\r\n color={selectedColor}\r\n onUpdate={onBackgroundChange}\r\n title={i18n.getString(_TL_('Background color'))}\r\n />\r\n }\r\n </div>\r\n );\r\n};\r\n\r\nexport const ActionPaneComp = withInstrumentation(ActionPane);\r\n","import {\r\n makeStyles,\r\n tokens,\r\n} from '@fluentui/react-components';\r\n\r\nexport const useStyles = makeStyles({\r\n finalUrlContainer: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n '& > div': {\r\n columnGap: tokens.spacingHorizontalSNudge,\r\n },\r\n },\r\n copilotBanner: {\r\n paddingTop: tokens.spacingVerticalS,\r\n paddingBottom: tokens.spacingVerticalL,\r\n },\r\n finalUrlInput: {\r\n '> span.fui-Input': {\r\n minWidth: '100px',\r\n },\r\n },\r\n});\r\n","/* istanbul ignore file */ // not fully implemented yet\r\nimport React, { useCallback, useContext } from 'react';\r\nimport _ from 'underscore';\r\nimport { UrlInputFluent } from '@bingads-webui-campaign-react/url-input-fluent-v2';\r\nimport { ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { IFinalUrl } from './types';\r\nimport { useStyles } from './style';\r\n\r\nexport const FinalUrl = ({\r\n i18n,\r\n finalUrl,\r\n setFinalUrl,\r\n}: IFinalUrl) => {\r\n const classes = useStyles();\r\n const [localFinalUrl, setLocalFinalUrl] = React.useState(finalUrl);\r\n const [inputErrors, setInputErrors] = React.useState([]);\r\n\r\n const activity = useContext(ActivityContext) as any;\r\n const handleSetFinalUrl = useCallback((errors, value) => {\r\n setInputErrors(errors);\r\n setLocalFinalUrl(value);\r\n }, []);\r\n\r\n const notifyFinalURLchange = useCallback(() => {\r\n if (_.isEmpty(inputErrors)) {\r\n setFinalUrl(localFinalUrl);\r\n activity.signal(`[DisplayAdsEditor] ${localFinalUrl}`);\r\n }\r\n }, [inputErrors, localFinalUrl, setFinalUrl, activity]);\r\n\r\n const handleKeyUp = useCallback((e) => {\r\n const { key } = e;\r\n if (key === 'Enter') {\r\n notifyFinalURLchange();\r\n }\r\n }, [notifyFinalURLchange]);\r\n\r\n return (\r\n <UrlInputFluent\r\n containerClassName={classes.finalUrlInput}\r\n i18n={i18n}\r\n url={localFinalUrl}\r\n onChange={handleSetFinalUrl}\r\n additionalProperties={{ onBlur: notifyFinalURLchange, onKeyUp: handleKeyUp }}\r\n />\r\n );\r\n};\r\n","/* istanbul ignore file */\r\n\r\nimport _ from 'underscore';\r\nimport {\r\n getFormattedImage,\r\n getFormattedThemeForApplying,\r\n} from '@bingads-webui-campaign-react/copilot-common';\r\nimport {\r\n State,\r\n TemplateConfig,\r\n AdPropType,\r\n AdSize,\r\n Color,\r\n AssetProperties,\r\n} from './types';\r\nimport {\r\n getNewAssetProperties,\r\n addBrandKitToRecommendedAssets,\r\n filterBrandKitLogos,\r\n mapBrandKitImagesToDisplayAd,\r\n sizeCategories,\r\n getAssetPropertiesFromBrandKitFonts,\r\n getBrandKitFilterLogos,\r\n getColorContrastRatio,\r\n} from './utils';\r\n\r\nexport enum ActionTypes {\r\n updateAssetPropertyAndColor = 'UPDATE_ASSET_PROPERTIES_AND_COLOR',\r\n updateShortHeadLine = 'UPDATE_SHORT_EADLINE',\r\n updateLongHeadLine = 'UPDATE_LONG_HEADLINE',\r\n updateDescription = 'UPDATE_DESCRIPTION',\r\n updateCallToAction = 'UPDATE_CALL_TO_ACTION',\r\n updateImage = 'UPDATE_IMAGE',\r\n updateLogo = 'UPDATE_LOGO',\r\n updateAssetLoading = 'UPDATE_ASSET_LOADING',\r\n updateBackground = 'UPDATE_BACKGROUND',\r\n updateTargetSizes = 'UPDATE_TARGET_SIZES',\r\n updateColor = 'UPDATE_COLOR',\r\n updateAdImages = 'UPDATE_AD_IMAGES',\r\n setData = 'SET_BRAND_KIT_DATA',\r\n updateFinalUrl = 'UPDATE_FINAL_URL',\r\n updateBrandKit = 'UPDATE_BRAND_KIT',\r\n updateAds = 'UPDATE_ADS',\r\n updateRecommendedAssetsWithBrandKit = 'UPDATE_RECOMMENDED_ASSETS_WITH_BRAND_KIT',\r\n updateRecommendedAssets = 'UPDATE_RECOMMENDED_ASSETS',\r\n}\r\n\r\nexport interface Action {\r\n type: ActionTypes;\r\n payload?: any;\r\n options?: any;\r\n}\r\n\r\nfunction propApplicable(sizeConfig: TemplateConfig, prop: AdPropType) {\r\n // TODO: handle all the cases\r\n if (prop === 'color') {\r\n return sizeConfig.color;\r\n }\r\n if (prop === 'assetProperties') {\r\n return true;\r\n }\r\n return sizeConfig[prop] && sizeConfig[prop].display;\r\n}\r\n\r\nfunction updateRecommendedAssetsWithBrandKitData(state: State, payload) {\r\n const { recommendedAssets, templateConfigs } = state;\r\n const newState = { ...state };\r\n newState.brandKit = payload;\r\n const assets = addBrandKitToRecommendedAssets(recommendedAssets, payload, templateConfigs);\r\n newState.recommendedAssets = assets;\r\n return newState;\r\n}\r\n\r\nfunction updateAdsWithBrandKit(state: State, payload) {\r\n const { targetSizes, templateConfigs } = state;\r\n const newState = { ...state };\r\n newState.brandKit = payload;\r\n\r\n const currentColors = Object.values(newState?.displayAds).map(displayAd => displayAd.color).flat();\r\n const currentColor = [...new Set(currentColors.map(o => JSON.stringify(o)))].map(s => JSON.parse(s))\r\n\r\n let highestColor: string;\r\n\r\n if (payload?.palettes?.length > 0) {\r\n let colorRatio = 0;\r\n const textColors : string[] = [];\r\n const textColorStrings = ['ShortHeadlinse', 'LongHeadline', 'Description'];\r\n currentColor?.forEach(colorObject => {\r\n if (textColorStrings?.findIndex(name => name === colorObject.elementName) !== -1) {\r\n textColors.push(colorObject.color);\r\n }\r\n })\r\n\r\n if (textColors.length > 0) {\r\n for (let i = 0; i < payload?.palettes?.length; i += 1) {\r\n const color = payload.palettes[i].HexCode;\r\n const ratio = getColorContrastRatio(textColors, color);\r\n\r\n if (ratio >= 4.5 && ratio > colorRatio) {\r\n highestColor = color;\r\n colorRatio = ratio;\r\n }\r\n }\r\n }\r\n }\r\n\r\n targetSizes.forEach((size) => {\r\n const aspectRatioLogo = templateConfigs[size]?.logo?.aspectRatio ?? '';\r\n\r\n if (templateConfigs[size] && propApplicable(templateConfigs[size], 'image')) {\r\n if (payload?.images?.length > 0) {\r\n const displayImage = mapBrandKitImagesToDisplayAd(payload.images[0]);\r\n newState.displayAds = {\r\n ...newState.displayAds,\r\n [size]: {\r\n ...newState.displayAds[size],\r\n image: displayImage,\r\n },\r\n };\r\n }\r\n }\r\n\r\n if (templateConfigs[size] && propApplicable(templateConfigs[size], 'logo')) {\r\n const filterLogos = filterBrandKitLogos(payload, aspectRatioLogo);\r\n if (filterLogos?.length > 0) {\r\n newState.displayAds = {\r\n ...newState.displayAds,\r\n [size]: {\r\n ...newState.displayAds[size],\r\n logo: mapBrandKitImagesToDisplayAd(filterLogos[0], { aspectRatio: aspectRatioLogo }),\r\n },\r\n };\r\n }\r\n }\r\n\r\n if (templateConfigs[size] && propApplicable(templateConfigs[size], 'color') && currentColor) {\r\n const backgroundIndex = currentColor?.findIndex(color => color.elementName === 'Background') ?? -1;\r\n\r\n if (payload?.palettes?.length > 0 && backgroundIndex !== -1) {\r\n const newColors = [...currentColor];\r\n newColors[backgroundIndex] = {\r\n ...currentColor[backgroundIndex],\r\n color: highestColor,\r\n };\r\n\r\n newState.displayAds = {\r\n ...newState.displayAds,\r\n [size]: {\r\n ...newState.displayAds[size],\r\n color: newColors,\r\n },\r\n };\r\n }\r\n }\r\n\r\n if (templateConfigs[size] && propApplicable(templateConfigs[size], 'assetProperties')) {\r\n const updatedAssetProperties = getAssetPropertiesFromBrandKitFonts(payload.fonts);\r\n const newAssetProperties = getNewAssetProperties(\r\n newState.displayAds[size]?.assetProperties || [],\r\n updatedAssetProperties\r\n );\r\n newState.displayAds = {\r\n ...newState.displayAds,\r\n [size]: {\r\n ...newState.displayAds[size],\r\n assetProperties: newAssetProperties,\r\n },\r\n };\r\n }\r\n });\r\n\r\n if (state.recommendedAssets || !state.finalUrl) {\r\n const assets = addBrandKitToRecommendedAssets(state.recommendedAssets, payload, state.templateConfigs);\r\n newState.recommendedAssets = assets;\r\n }\r\n\r\n return newState;\r\n}\r\n\r\nfunction updateAdProp(state: State, payload, prop: AdPropType, options?: any) {\r\n const { targetSizes, templateConfigs } = state;\r\n const newState = { ...state };\r\n targetSizes.forEach((size) => {\r\n if (templateConfigs[size] && propApplicable(templateConfigs[size], prop)) {\r\n if (prop === 'image' || prop === 'logo') {\r\n const { cropSetting } = payload;\r\n const { keepCropSettings = false } = options || {};\r\n const newPayload = {\r\n ...newState.displayAds[size]?.[prop],\r\n ...payload,\r\n cropSetting: keepCropSettings\r\n ? newState.displayAds[size]?.[prop]?.cropSetting\r\n : cropSetting,\r\n };\r\n if (!keepCropSettings && !cropSetting) delete newPayload.cropSetting;\r\n // REMOVE CROP SETTING IF NOT IN PAYLOAD\r\n newState.displayAds = {\r\n ...newState.displayAds,\r\n [size]: {\r\n ...newState.displayAds[size],\r\n [prop]: newPayload,\r\n },\r\n };\r\n } else if (prop === 'background') {\r\n const currentColor = newState.displayAds[size]?.color;\r\n if (currentColor) {\r\n const index = currentColor.findIndex(color => color.elementName === 'Background');\r\n if (index !== -1) {\r\n const newColors = [...currentColor];\r\n newColors[index] = {\r\n ...currentColor[index],\r\n color: payload,\r\n };\r\n newState.displayAds = {\r\n ...newState.displayAds,\r\n [size]: {\r\n ...newState.displayAds[size],\r\n color: newColors,\r\n },\r\n };\r\n }\r\n }\r\n } else if (\r\n prop === 'cta' ||\r\n prop === 'shortHeadline' ||\r\n prop === 'longHeadline' ||\r\n prop === 'description'\r\n ) {\r\n const maxLength = templateConfigs[size][prop] ? templateConfigs[size][prop].maxLengthInChar : null;\r\n newState.displayAds = {\r\n ...newState.displayAds,\r\n [size]: {\r\n ...newState.displayAds[size],\r\n [prop]: {\r\n ...(newState.displayAds[size]?.[prop] || {}),\r\n text: maxLength ? payload.text.slice(0, maxLength) : payload.text,\r\n },\r\n },\r\n };\r\n } else if (prop === 'assetProperties') {\r\n const newAssetProperties = getNewAssetProperties(\r\n newState.displayAds[size]?.assetProperties || [],\r\n payload\r\n );\r\n newState.displayAds = {\r\n ...newState.displayAds,\r\n [size]: {\r\n ...newState.displayAds[size],\r\n assetProperties: newAssetProperties,\r\n },\r\n };\r\n } else {\r\n newState.displayAds = {\r\n ...newState.displayAds,\r\n [size]: {\r\n ...newState.displayAds[size],\r\n [prop]: payload,\r\n },\r\n };\r\n }\r\n }\r\n });\r\n\r\n return newState;\r\n}\r\n\r\nfunction updateColors(state: State, payload: Color) {\r\n const newState = { ...state };\r\n const { targetSizes, templateConfigs } = state;\r\n\r\n targetSizes.forEach((size) => {\r\n if (templateConfigs[size] && templateConfigs[size].color) {\r\n const currentColors = newState.displayAds[size]?.color || [];\r\n const updatedColors = [...currentColors];\r\n const index = currentColors.findIndex(color => color.elementName === payload.elementName);\r\n if (index === -1) {\r\n updatedColors.push({\r\n ...payload,\r\n editable: true,\r\n suffix: '',\r\n } as Color);\r\n } else {\r\n updatedColors[index] = {\r\n ...updatedColors[index],\r\n ...payload,\r\n };\r\n }\r\n newState.displayAds = {\r\n ...newState.displayAds,\r\n [size]: {\r\n ...newState.displayAds[size],\r\n color: updatedColors,\r\n },\r\n };\r\n }\r\n });\r\n\r\n return newState;\r\n}\r\n\r\nfunction updateAssetPropertiesAndColor(\r\n state: State,\r\n payload: {\r\n assetProperties?: AssetProperties[];\r\n color?: Color;\r\n }\r\n) {\r\n let newState = { ...state };\r\n if (payload.assetProperties) {\r\n newState = updateAdProp(newState, payload.assetProperties, 'assetProperties');\r\n }\r\n if (payload.color) {\r\n newState = updateColors(newState, payload.color);\r\n }\r\n return newState;\r\n}\r\n\r\n\r\nfunction updateWithRecommendedAssets(state: State, assetsResponse, prop, options) {\r\n if (!assetsResponse || _.isEmpty(Object.keys(assetsResponse))) {\r\n return {\r\n ...state,\r\n isAssetsLoading: false,\r\n };\r\n }\r\n const {\r\n RecommendedAssets: {\r\n Themes,\r\n ShortHeadlines = [],\r\n LongHeadlines = [],\r\n Descriptions = [],\r\n ImageAssets = [],\r\n },\r\n Logo,\r\n Cta,\r\n } = assetsResponse;\r\n let newState = {\r\n ...state,\r\n isAssetsLoading: false,\r\n };\r\n let assets = {\r\n themes: _.map(Themes, getFormattedThemeForApplying),\r\n headlines: ShortHeadlines,\r\n longHeadlines: LongHeadlines,\r\n descriptions: Descriptions,\r\n imageAssets: _.map(ImageAssets, getFormattedImage),\r\n logo: _.map(Logo ? [{ Url: Logo }] : [], getFormattedImage),\r\n cta: Cta,\r\n };\r\n if (state.brandKit) {\r\n // check brandkit data is available or not.\r\n assets = addBrandKitToRecommendedAssets(assets, state.brandKit, state.templateConfigs);\r\n }\r\n newState[prop] = assets;\r\n const { hasUpdateTemplate } = options || {};\r\n // NOTE: We are also updating logo/image assets field with recommended assets only on first load\r\n if (hasUpdateTemplate && !state.brandKit?.images?.length) {\r\n const imageUrl = assets.imageAssets && assets.imageAssets.length > 0 ? assets.imageAssets[0].fullUrl : null;\r\n if (imageUrl) {\r\n newState = updateAdProp(newState, { url: imageUrl, imageSize: {} }, 'image');\r\n }\r\n }\r\n\r\n const { filterLogos } = getBrandKitFilterLogos(state.brandKit, state.templateConfigs);\r\n const logoUrl = hasUpdateTemplate && !filterLogos?.length && assets.logo && assets.logo.length > 0 ? assets.logo[0].fullUrl : null;\r\n if (logoUrl) {\r\n newState = updateAdProp(newState, { url: logoUrl, imageSize: {} }, 'logo');\r\n }\r\n // NOTE: We are also updating text assets field with recommended assets\r\n const recommendedHeadlineText = hasUpdateTemplate && assets.headlines && assets.headlines.length > 0 ? assets.headlines[0].Text : null;\r\n if (recommendedHeadlineText) {\r\n newState = updateAdProp(newState, { text: recommendedHeadlineText }, 'shortHeadline');\r\n }\r\n\r\n const recommendedLongHeadlineText = hasUpdateTemplate && assets.longHeadlines && assets.longHeadlines.length > 0 ? assets.longHeadlines[0].Text : null;\r\n if (recommendedLongHeadlineText) {\r\n newState = updateAdProp(newState, { text: recommendedLongHeadlineText }, 'longHeadline');\r\n }\r\n\r\n const recommendedDescriptionText = hasUpdateTemplate && assets.descriptions && assets.descriptions.length > 0 ? assets.descriptions[0].Text : null;\r\n if (recommendedDescriptionText) {\r\n newState = updateAdProp(newState, { text: recommendedDescriptionText }, 'description');\r\n }\r\n\r\n const recommendedCtaText = hasUpdateTemplate && assets.cta && assets.cta.length > 0 ? assets.cta[0].Text : null;\r\n if (recommendedCtaText) {\r\n newState = updateAdProp(newState, { text: recommendedCtaText }, 'cta');\r\n }\r\n\r\n return newState;\r\n}\r\n\r\nfunction filterSizes(state: State, filter: string | AdSize) {\r\n const newState = { ...state };\r\n if (filter === 'All sizes') {\r\n newState.targetSizes = [...state.adSizes];\r\n } else if (filter in sizeCategories) {\r\n newState.targetSizes = sizeCategories[filter];\r\n } else if (state.adSizes.includes(filter as AdSize)) {\r\n newState.targetSizes = [filter as AdSize];\r\n }\r\n newState.filter = filter;\r\n return newState;\r\n}\r\n\r\nexport function reducer(state: State, action) {\r\n const { type, payload, options } = action;\r\n\r\n switch (type) {\r\n case ActionTypes.updateTargetSizes:\r\n return filterSizes(state, payload);\r\n case ActionTypes.updateAssetPropertyAndColor:\r\n return updateAssetPropertiesAndColor(state, payload);\r\n case ActionTypes.updateFinalUrl:\r\n return {\r\n ...state,\r\n finalUrl: payload,\r\n };\r\n case ActionTypes.updateRecommendedAssets:\r\n return updateWithRecommendedAssets(state, payload, 'recommendedAssets', options);\r\n case ActionTypes.updateShortHeadLine:\r\n return updateAdProp(state, payload, 'shortHeadline');\r\n case ActionTypes.updateLongHeadLine:\r\n return updateAdProp(state, payload, 'longHeadline');\r\n case ActionTypes.updateDescription:\r\n return updateAdProp(state, payload, 'description');\r\n case ActionTypes.updateCallToAction:\r\n return updateAdProp(state, payload, 'cta');\r\n case ActionTypes.updateImage:\r\n return updateAdProp(state, payload, 'image', options);\r\n case ActionTypes.updateLogo:\r\n return updateAdProp(state, payload, 'logo');\r\n case ActionTypes.updateBackground:\r\n return updateAdProp(state, payload, 'background');\r\n case ActionTypes.updateAssetLoading:\r\n return {\r\n ...state,\r\n isAssetsLoading: payload,\r\n };\r\n case ActionTypes.updateRecommendedAssetsWithBrandKit:\r\n return updateRecommendedAssetsWithBrandKitData(state, payload);\r\n case ActionTypes.updateColor:\r\n return updateColors(state, payload);\r\n case ActionTypes.updateAds:\r\n return {\r\n ...state,\r\n adImages: {\r\n ...state.adImages,\r\n ...payload.adImages,\r\n },\r\n displayAds: {\r\n ...state.displayAds,\r\n ...payload.displayAds,\r\n },\r\n };\r\n case ActionTypes.updateBrandKit:\r\n return updateAdsWithBrandKit(state, payload);\r\n case ActionTypes.updateAdImages:\r\n return {\r\n ...state,\r\n adImages: {\r\n ...state.adImages,\r\n ...payload,\r\n },\r\n };\r\n case ActionTypes.setData:\r\n return {\r\n ...state,\r\n ...payload,\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n","/* istanbul ignore file */ // not fully implemented yet\r\nimport React, {\r\n createContext,\r\n useContext,\r\n useReducer,\r\n} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { reducer, Action } from './reducer';\r\nimport { State, AdSize, DisplayAds, TemplateConfig, AdImages } from './types';\r\n\r\ninterface Context {\r\n dispatch: React.Dispatch<Action>;\r\n state: State;\r\n}\r\n\r\nexport const DisplayAdsContext = createContext<Context>({} as Context);\r\nexport const useDisplayAdsContext = () => useContext(DisplayAdsContext);\r\n\r\nconst getImageData = (image) => {\r\n if (!image) {\r\n return image;\r\n }\r\n const newImage = { ...image };\r\n if (image.cropSetting && !Array.isArray(image.cropSetting)) {\r\n const value = newImage.cropSetting;\r\n newImage.cropSetting = value[0] ? [value[0]] : [value];\r\n }\r\n return newImage;\r\n};\r\n\r\n// when we save metadata for display ad image, color is serialized as an object.\r\n// convert to array if needed.\r\nconst getColorArray = (color) => {\r\n if (!color) {\r\n return [];\r\n }\r\n\r\n const returnArray: any[] = [];\r\n let colorArray;\r\n if (Array.isArray(color)) {\r\n colorArray = color;\r\n }\r\n\r\n colorArray = Object.values(color);\r\n\r\n colorArray.forEach((colorValue) => {\r\n returnArray.push({ ...colorValue });\r\n });\r\n\r\n return returnArray;\r\n};\r\n\r\nconst getSerializedObjectAsArray = (object: any[] | Record<string, any>) => {\r\n if (!object) return [];\r\n if (Array.isArray(object)) return object;\r\n return Object.values(object);\r\n};\r\n\r\nfunction initialState({ templateData, finalUrl }) {\r\n const { displayAdsTemplateDetails } = templateData;\r\n const filter = 'All sizes';\r\n const isAssetsLoading = false;\r\n const targetSizes: AdSize[] =[];\r\n const adSizes: AdSize[] = [];\r\n const displayAds: DisplayAds = {};\r\n const defaultAssets: DisplayAds = {};\r\n const templateConfigs: { [size in AdSize]?: TemplateConfig } = {};\r\n const adImages: AdImages = {};\r\n const templateId2Size: { [templateId: string]: AdSize } = {};\r\n const recommendedAssets = null;\r\n displayAdsTemplateDetails.forEach((templateSizeDetails) => {\r\n const { templateConfig, displayAd } = templateSizeDetails;\r\n const sizeKey : AdSize = `${templateConfig.width}x${templateConfig.height}` as AdSize;\r\n targetSizes.push(sizeKey);\r\n adSizes.push(sizeKey);\r\n displayAds[sizeKey] = {\r\n shortHeadline: { ...displayAd.template.shortHeadline },\r\n longHeadline: { ...displayAd.template.longHeadline },\r\n description: { ...displayAd.template.description },\r\n cta: { ...displayAd.template.cta },\r\n image: templateConfig?.image?.display ? getImageData(displayAd.template.image): {},\r\n logo: templateConfig?.logo?.display ? getImageData(displayAd.template.logo): {},\r\n background: templateConfig?.image?.display ? { ...displayAd.template.background }: {},\r\n color: getColorArray(displayAd.template.color),\r\n assetProperties: getSerializedObjectAsArray(displayAd.template.assetProperties),\r\n };\r\n defaultAssets[sizeKey] = {\r\n shortHeadline: { ...displayAd.template.shortHeadline },\r\n longHeadline: { ...displayAd.template.longHeadline },\r\n description: { ...displayAd.template.description },\r\n cta: { ...displayAd.template.cta },\r\n image: getImageData(displayAd.template.image),\r\n logo: getImageData(displayAd.template.logo),\r\n background: { ...displayAd.template.background },\r\n color: getColorArray(displayAd.template.color),\r\n assetProperties: getSerializedObjectAsArray(displayAd.template.assetProperties),\r\n };\r\n templateConfigs[sizeKey] = templateConfig;\r\n adImages[sizeKey] = {\r\n url: displayAd.url,\r\n width: templateConfig.width,\r\n height: templateConfig.height,\r\n };\r\n templateId2Size[templateConfig.templateId] = sizeKey;\r\n });\r\n\r\n return {\r\n finalUrl,\r\n targetSizes,\r\n adSizes,\r\n displayAds,\r\n defaultAssets,\r\n templateConfigs,\r\n adImages,\r\n recommendedAssets,\r\n filter,\r\n isAssetsLoading,\r\n templateId2Size,\r\n };\r\n}\r\n\r\nexport const DisplayAdsProvider = ({\r\n children,\r\n templateData,\r\n finalUrl,\r\n}) => {\r\n const [state, dispatch] = useReducer(reducer, { templateData, finalUrl }, initialState);\r\n const context = {\r\n state,\r\n dispatch,\r\n };\r\n return (\r\n <DisplayAdsContext.Provider value={context}>\r\n {children}\r\n </DisplayAdsContext.Provider>\r\n );\r\n};\r\n\r\nDisplayAdsProvider.displayName = 'DisplayAdsProvider';\r\nDisplayAdsProvider.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n templateData: PropTypes.shape({}).isRequired,\r\n finalUrl: PropTypes.string,\r\n};\r\n\r\nDisplayAdsProvider.defaultProps = {\r\n finalUrl: '',\r\n};\r\n","/* istanbul ignore file */ // not fully implemented yet\r\nimport React, { useCallback, useContext, useState } from 'react';\r\nimport { Label } from '@fluentui/react-components';\r\nimport {\r\n BannerServiceProvider,\r\n CopilotRecommendationBanner,\r\n CopilotRepositoryProvider,\r\n CopilotThemesRecommendationDialog,\r\n} from '@bingads-webui/inline-copilot';\r\nimport { useRecommendations } from '@bingads-webui-campaign-react/perf-max-recommendation';\r\nimport PropTypes from 'prop-types';\r\nimport { useStyles } from './style';\r\nimport { FinalUrl } from './final-url';\r\nimport { DisplayAdsContext } from '../../context';\r\nimport { ActionTypes } from '../../reducer';\r\n\r\nexport const RecommendationsBanner = (props) => {\r\n const {\r\n i18n,\r\n serverContext,\r\n perfMarker,\r\n finalUrl,\r\n setFinalUrl,\r\n handleOnFetchSucceeded,\r\n aid,\r\n cid,\r\n permissions,\r\n instrumentation,\r\n } = props;\r\n const classes = useStyles();\r\n const [showCopilotDialog, setShowCopilotDialog] = useState(false);\r\n const [lastFetchedUrl, setLastFetchedUrl] = useState('');\r\n const {\r\n dispatch,\r\n } = useContext(DisplayAdsContext);\r\n const {\r\n CurrentLocale: locale,\r\n } = serverContext;\r\n\r\n const {\r\n handleCopilotBannerFetchSucceeded,\r\n } = useRecommendations({\r\n cid,\r\n aid,\r\n campaignId: -1,\r\n permissions,\r\n finalUrl,\r\n isDisplayPlus: false,\r\n enableCopilotRecommendations: true,\r\n instrumentation,\r\n isMMA: false,\r\n isSignup: false,\r\n skipBusinessNameRecommendation: true,\r\n });\r\n\r\n const onFetch = useCallback((url) => {\r\n if (lastFetchedUrl !== url) {\r\n dispatch({ type: ActionTypes.updateAssetLoading, payload: true });\r\n }\r\n }, [dispatch, lastFetchedUrl]);\r\n\r\n const onFetchFailed = useCallback(() => {\r\n dispatch({ type: ActionTypes.updateAssetLoading, payload: false });\r\n }, [dispatch]);\r\n\r\n const onFetchSucceeded = useCallback((url, assetsResponse, isRefinedRecommendation = false) => {\r\n const urlChanged = lastFetchedUrl !== url;\r\n const shouldRefreshRecommendations = (urlChanged || isRefinedRecommendation) && !!assetsResponse;\r\n\r\n if (shouldRefreshRecommendations) {\r\n handleOnFetchSucceeded(assetsResponse);\r\n handleCopilotBannerFetchSucceeded(url, assetsResponse);\r\n setLastFetchedUrl(url);\r\n return;\r\n }\r\n\r\n dispatch({ type: ActionTypes.updateAssetLoading, payload: false });\r\n }, [lastFetchedUrl, dispatch, handleOnFetchSucceeded, handleCopilotBannerFetchSucceeded]);\r\n\r\n const handleCopilotDialogClose = useCallback(() => setShowCopilotDialog(false), []);\r\n\r\n const handleFetchAssetsSucceeded = useCallback((url, assetsRecommendationData) => {\r\n onFetchSucceeded(url, assetsRecommendationData, true);\r\n handleCopilotBannerFetchSucceeded(url, assetsRecommendationData);\r\n }, [onFetchSucceeded, handleCopilotBannerFetchSucceeded]);\r\n\r\n const handleRefresh = useCallback(() => setShowCopilotDialog(true), []);\r\n const copyOverrides = {\r\n description: i18n.getString(_TL_('Choose the themes you\\'d like to add to your display template.')),\r\n };\r\n\r\n return (\r\n <CopilotRepositoryProvider\r\n campaignId={-1}\r\n recommendationType=\"Display\"\r\n finalUrl={finalUrl}\r\n serverContext={serverContext}\r\n perfMarker={perfMarker}\r\n locale={locale}\r\n enableLogoAndCTA\r\n >\r\n <BannerServiceProvider>\r\n <div className={classes.finalUrlContainer}>\r\n <Label htmlFor=\"final-url\">{i18n.getString(_TL_('Generate assets from your URL'))}</Label>\r\n <FinalUrl\r\n i18n={i18n}\r\n finalUrl={finalUrl}\r\n setFinalUrl={setFinalUrl}\r\n />\r\n </div>\r\n <CopilotRecommendationBanner\r\n className={classes.copilotBanner}\r\n narrow\r\n isToastEnabled\r\n onRefresh={handleRefresh}\r\n onReset={() => {}}\r\n toastOffset={{ horizontal: 260, vertical: 120 }}\r\n onFetch={onFetch}\r\n shouldFetchRecommendations\r\n onFetchFailed={onFetchFailed}\r\n onFetchSucceeded={onFetchSucceeded}\r\n copyOverrides={copyOverrides}\r\n />\r\n {showCopilotDialog &&\r\n <CopilotThemesRecommendationDialog\r\n open\r\n onClosed={handleCopilotDialogClose}\r\n onFetchAssetsSucceeded={handleFetchAssetsSucceeded}\r\n onApply={() => {}}\r\n />\r\n }\r\n </BannerServiceProvider>\r\n </CopilotRepositoryProvider>\r\n );\r\n};\r\n\r\nRecommendationsBanner.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n serverContext: PropTypes.shape({\r\n CurrentLocale: PropTypes.string,\r\n }).isRequired,\r\n perfMarker: PropTypes.shape({}).isRequired,\r\n finalUrl: PropTypes.string,\r\n setFinalUrl: PropTypes.func.isRequired,\r\n handleOnFetchSucceeded: PropTypes.func.isRequired,\r\n aid: PropTypes.number.isRequired,\r\n cid: PropTypes.number.isRequired,\r\n permissions: PropTypes.shape({}).isRequired,\r\n instrumentation: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nRecommendationsBanner.defaultProps = {\r\n finalUrl: '',\r\n};\r\n","/* istanbul ignore file */ // not fully implemented yet\r\nimport React, { useState, useCallback, useMemo } from 'react';\r\nimport {\r\n Divider,\r\n makeStyles,\r\n mergeClasses,\r\n shorthands,\r\n tokens,\r\n} from '@fluentui/react-components';\r\nimport {\r\n Color,\r\n State,\r\n AssetName,\r\n AdjustViewProps,\r\n TextFormattingOption,\r\n} from './types';\r\nimport {\r\n CallToAction,\r\n TextFormattingButton,\r\n TextFormattingDialogue,\r\n TextAssetCollectionWithRecommendations,\r\n} from './components';\r\nimport { assetName } from './constants';\r\nimport { ActionPaneComp } from './action-pane';\r\nimport {\r\n getImageAssetConfigs,\r\n getAllTextFormattingOptions,\r\n getTransformedAssetProperties,\r\n} from './utils';\r\nimport { RecommendationsBanner } from '../src/components/recommendations-banner/index';\r\n\r\nconst useStyles = makeStyles({\r\n textCollection: {},\r\n textDivider: {\r\n ...shorthands.margin(tokens.spacingVerticalL, 0),\r\n },\r\n container: {\r\n backgroundColor: tokens.colorNeutralBackground1,\r\n maxHeight: '100%',\r\n ...shorthands.borderRadius(tokens.borderRadiusXLarge),\r\n ...shorthands.overflow('auto', 'hidden'),\r\n display: 'flex',\r\n ...shorthands.padding(\r\n tokens.spacingVerticalSNudge,\r\n tokens.spacingHorizontalSNudge\r\n ),\r\n boxShadow: tokens.shadow4,\r\n\r\n '& > div.adjust-content': {\r\n width: '320px',\r\n ...shorthands.overflow('hidden', 'auto'),\r\n ...shorthands.padding(\r\n tokens.spacingVerticalXXL,\r\n tokens.spacingHorizontalL\r\n ),\r\n },\r\n },\r\n});\r\n\r\nconst getTextAssets = (\r\n displayAds: State['displayAds'],\r\n targetSizes: State['targetSizes'],\r\n configs: State['templateConfigs'],\r\n prop: 'shortHeadline' | 'longHeadline' | 'description' | 'cta'\r\n) => {\r\n const textAssets: Set<any> = new Set();\r\n let minLength = Number.MAX_SAFE_INTEGER;\r\n let maxLength = 0;\r\n targetSizes.forEach((size) => {\r\n const ad = displayAds[size];\r\n const config = configs[size];\r\n if (config?.[prop]?.display) {\r\n textAssets.add(ad?.[prop]?.text);\r\n if (config[prop].minLengthInChar < minLength) {\r\n minLength = config[prop].minLengthInChar;\r\n }\r\n if (config[prop].maxLengthInChar > maxLength) {\r\n maxLength = config[prop].maxLengthInChar;\r\n }\r\n }\r\n });\r\n\r\n const isMultipleOptions = textAssets.size > 1;\r\n const text = Array.from(textAssets)[0];\r\n\r\n return {\r\n minLength,\r\n maxLength,\r\n isMultipleOptions,\r\n display: textAssets.size > 0,\r\n text: text ? text.slice(0, maxLength) : '',\r\n placeholder: isMultipleOptions\r\n ? _TL_('Multiple options, editing will override for all texts')\r\n : '',\r\n };\r\n};\r\n\r\nexport const AdjustView = ({\r\n onBackgroundColorChange,\r\n onImageChange,\r\n targetSizes,\r\n onLogoChange,\r\n onCtaChange,\r\n onChangeTextAssets,\r\n onAssetPropertiesWithColorChange,\r\n recommendedAssets,\r\n isAssetsLoading,\r\n showRecommendationsBanner,\r\n displayAds,\r\n templateConfigs,\r\n serverContext,\r\n preferenceService,\r\n perfMarker,\r\n aid,\r\n cid,\r\n oDataConfig,\r\n i18n,\r\n permissions,\r\n onFinalUrlChange,\r\n onRecommendedAssetsChange,\r\n instrumentation,\r\n finalUrl,\r\n}: AdjustViewProps) => {\r\n const classes = useStyles();\r\n const [\r\n activeTextFormattingSection,\r\n setActiveTextFormattingSection,\r\n ] = useState<AssetName | null>();\r\n\r\n const handleOnFetchSucceeded = useCallback(\r\n (result) => {\r\n onRecommendedAssetsChange(result);\r\n },\r\n [onRecommendedAssetsChange]\r\n );\r\n\r\n const handleSetFinalUrl = useCallback((copilotUrl) => {\r\n onFinalUrlChange(copilotUrl);\r\n }, [onFinalUrlChange]);\r\n\r\n const actionPanelDisplayData = useMemo(() => {\r\n const {\r\n display: displayImage,\r\n apectRatioSet: imageAspectRatio,\r\n displayBackground,\r\n } = getImageAssetConfigs(templateConfigs, targetSizes, 'image');\r\n const {\r\n display: displayLogo,\r\n apectRatioSet: logoAspectRatio,\r\n } = getImageAssetConfigs(templateConfigs, targetSizes, 'logo');\r\n return {\r\n displayImage,\r\n displayLogo,\r\n displayBackground,\r\n imageAspectRatio,\r\n logoAspectRatio,\r\n };\r\n }, [targetSizes, templateConfigs]);\r\n\r\n const actionPanelPreviewData = useMemo(() => {\r\n const imageUrls: Set<any> = new Set();\r\n const logoUrls: Set<any> = new Set();\r\n const colorsMap: Map<string, any> = new Map();\r\n const imageData: any = [];\r\n const logoData: any = [];\r\n targetSizes.forEach((size) => {\r\n const ad = displayAds[size];\r\n if (ad && ad.image && ad.image.url) {\r\n imageUrls.add(ad.image.url);\r\n imageData.push(ad.image);\r\n }\r\n if (ad && ad.logo && ad.logo.url) {\r\n logoUrls.add(ad.logo.url);\r\n logoData.push(ad.logo);\r\n }\r\n ad?.color?.forEach(({ elementName, editable, color: colorCode }) => {\r\n if (editable) {\r\n if (colorsMap.has(elementName)) {\r\n colorsMap.get(elementName).add(colorCode);\r\n } else {\r\n colorsMap.set(elementName, new Set([colorCode]));\r\n }\r\n }\r\n });\r\n });\r\n return {\r\n imageUrls,\r\n logoUrls,\r\n colorsMap,\r\n imageData,\r\n logoData,\r\n };\r\n }, [displayAds, targetSizes]);\r\n const shortHeadline = useMemo(\r\n () =>\r\n getTextAssets(displayAds, targetSizes, templateConfigs, 'shortHeadline'),\r\n [displayAds, targetSizes, templateConfigs]\r\n );\r\n\r\n const longHeadline = useMemo(\r\n () =>\r\n getTextAssets(displayAds, targetSizes, templateConfigs, 'longHeadline'),\r\n [displayAds, targetSizes, templateConfigs]\r\n );\r\n\r\n const description = useMemo(\r\n () =>\r\n getTextAssets(displayAds, targetSizes, templateConfigs, 'description'),\r\n [displayAds, targetSizes, templateConfigs]\r\n );\r\n\r\n const callToAction = useMemo(\r\n () => getTextAssets(displayAds, targetSizes, templateConfigs, 'cta'),\r\n [displayAds, targetSizes, templateConfigs]\r\n );\r\n\r\n const textFormattingOptions = useMemo(\r\n () => getAllTextFormattingOptions(displayAds, targetSizes),\r\n [displayAds, targetSizes]\r\n );\r\n\r\n const handleChangeSectionAssetFormatting = (\r\n newFormatting: TextFormattingOption,\r\n section: AssetName\r\n ) => {\r\n const updatedAssetProperties = getTransformedAssetProperties(\r\n newFormatting,\r\n section\r\n );\r\n onAssetPropertiesWithColorChange({\r\n assetProperties: updatedAssetProperties,\r\n color: {\r\n color: newFormatting.color,\r\n elementName: section,\r\n } as Color,\r\n });\r\n };\r\n\r\n return (\r\n <aside className={mergeClasses('adjust', classes.container)}>\r\n {activeTextFormattingSection && (\r\n <div className=\"adjust-content\" >\r\n <TextFormattingDialogue\r\n i18n={i18n}\r\n onToggleBack={() => setActiveTextFormattingSection(null)}\r\n textFormatOptions={textFormattingOptions[activeTextFormattingSection]}\r\n hideColorFormatting={activeTextFormattingSection === assetName.callToAction}\r\n onFormatText={(newFormatting: TextFormattingOption) =>\r\n handleChangeSectionAssetFormatting(\r\n newFormatting,\r\n activeTextFormattingSection\r\n )\r\n }\r\n />\r\n </div>\r\n )}\r\n <div\r\n className=\"adjust-content\"\r\n style={{\r\n display: activeTextFormattingSection ? 'none' : 'block',\r\n }}\r\n >\r\n {showRecommendationsBanner &&\r\n <RecommendationsBanner\r\n i18n={i18n}\r\n aid={aid}\r\n cid={cid}\r\n instrumentation={instrumentation}\r\n permissions={permissions}\r\n serverContext={serverContext}\r\n perfMarker={perfMarker}\r\n finalUrl={finalUrl}\r\n setFinalUrl={handleSetFinalUrl}\r\n handleOnFetchSucceeded={handleOnFetchSucceeded}\r\n />\r\n }\r\n <ActionPaneComp\r\n onImageChange={onImageChange}\r\n onLogoChange={onLogoChange}\r\n finalUrl={finalUrl}\r\n isAssetsLoading={isAssetsLoading}\r\n showRecommendationsBanner={showRecommendationsBanner}\r\n recommendedAssets={recommendedAssets}\r\n onBackgroundColorChange={onBackgroundColorChange}\r\n serverContext={serverContext}\r\n preferenceService={preferenceService}\r\n perfMarker={perfMarker}\r\n imagesUrl={actionPanelPreviewData.imageUrls}\r\n logosUrl={actionPanelPreviewData.logoUrls}\r\n aid={aid}\r\n images={actionPanelPreviewData.imageData}\r\n logos={actionPanelPreviewData.logoData}\r\n actionPanelDisplayData={actionPanelDisplayData}\r\n cid={cid}\r\n oDataConfig={oDataConfig}\r\n i18n={i18n}\r\n permissions={permissions}\r\n backgroundColors={actionPanelPreviewData.colorsMap.get('Background')}\r\n />\r\n <div\r\n className={mergeClasses(\r\n 'adjust-text-collection',\r\n classes.textCollection\r\n )}\r\n >\r\n <TextAssetCollectionWithRecommendations\r\n url={finalUrl}\r\n disableCopilot={!finalUrl && !showRecommendationsBanner}\r\n i18n={i18n}\r\n campaignId={cid}\r\n serverContext={serverContext}\r\n onChangeTexts={onChangeTextAssets}\r\n onChangeTextAssetFormattingSection={setActiveTextFormattingSection}\r\n shortHeadline={shortHeadline.text}\r\n longHeadline={longHeadline.text}\r\n description={description.text}\r\n shortHeadlineValidations={shortHeadline}\r\n longHeadlineValidations={longHeadline}\r\n descriptionValidations={description}\r\n />\r\n {callToAction.display && (\r\n <>\r\n <Divider appearance=\"strong\" className={classes.textDivider} />\r\n <CallToAction\r\n i18n={i18n}\r\n cta={callToAction?.text}\r\n onChangeCta={onCtaChange}\r\n ctaValidations={callToAction}\r\n label={i18n.getString(_TL_('Call to action'))}\r\n helpLabel={i18n.getString(_TL_('Click to learn more about call to action'))}\r\n helpTopic=\"pop_BA_AudAds_CTA\"\r\n placeholder={\r\n callToAction.isMultipleOptions\r\n ? i18n.getString(_TL_('Multiple options, editing will override for all texts'))\r\n : i18n.getString(_TL_('Select call to action'))\r\n }\r\n labelAction={\r\n <TextFormattingButton\r\n i18n={i18n}\r\n onClick={() =>\r\n setActiveTextFormattingSection(assetName.callToAction)\r\n }\r\n />\r\n }\r\n />\r\n </>\r\n )}\r\n </div>\r\n </div>\r\n </aside>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { makeStyles, mergeClasses } from '@fluentui/react-components';\r\n\r\nconst useStyles = makeStyles({\r\n container: {\r\n },\r\n});\r\n\r\nexport const SizesView = () => {\r\n const classes = useStyles();\r\n return (\r\n <div className={mergeClasses('sizes', classes.container)}>\r\n sizes\r\n </div>\r\n );\r\n};\r\n","import React, { useState } from 'react';\r\nimport { ToggleButton, Divider, makeStyles, mergeClasses, shorthands, tokens } from '@fluentui/react-components';\r\n\r\ninterface FilterBarProps {\r\n i18n: any;\r\n selectionCallback: (selectedItem: string) => void;\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n row: {\r\n display: 'flex',\r\n justifyContent: 'flex-start',\r\n flexWrap: 'wrap',\r\n ...shorthands.gap(tokens.spacingHorizontalS),\r\n ...shorthands.padding(tokens.spacingVerticalXXL, tokens.spacingHorizontalXXXL),\r\n },\r\n filterButton: {\r\n height: '32px',\r\n minWidth: '75px',\r\n whiteSpace: 'nowrap',\r\n },\r\n divider: {\r\n flexGrow: 'unset',\r\n },\r\n});\r\n\r\nexport const FilterBar = ({ i18n, selectionCallback }: FilterBarProps) => {\r\n const [selectedFilter, setSelectedFilter] = useState('All sizes');\r\n const filterOptions = [\r\n { value: 'All sizes', text: _TL_('All sizes') },\r\n { value: 'Horizontal', text: _TL_('Horizontal') },\r\n { value: 'Square', text: _TL_('Square') },\r\n { value: 'Vertical', text: _TL_('Vertical') },\r\n ];\r\n const classes = useStyles();\r\n return (\r\n <div className={mergeClasses('preview-filter', classes.row)}>\r\n {filterOptions.map((filter, index) => (\r\n <React.Fragment key={filter.value}>\r\n <ToggleButton\r\n onClick={() => {\r\n selectionCallback(filter.value);\r\n setSelectedFilter(filter.value);\r\n }}\r\n checked={selectedFilter === filter.value}\r\n className={mergeClasses(`${filter.value.replace(/\\s+/g, '-')}-filter`, classes.filterButton)}\r\n >\r\n {i18n.getString(filter.text)}\r\n </ToggleButton>\r\n {index === 0 && <Divider vertical className={classes.divider} />}\r\n </React.Fragment>\r\n ))}\r\n </div>\r\n );\r\n};\r\n","import { shorthands, tokens, makeStyles } from '@fluentui/react-components';\r\n\r\nexport const previewStyles = makeStyles({\r\n previewContainer: {\r\n backgroundColor: 'inherit',\r\n ...shorthands.flex(1, 1, '1px'),\r\n minWidth: '1px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n backButton: {\r\n justifySelf: 'start',\r\n ...shorthands.margin(tokens.spacingVerticalXXL, tokens.spacingHorizontalXXXL),\r\n },\r\n adPreviews: {\r\n ...shorthands.overflow('auto', 'auto'),\r\n paddingLeft: tokens.spacingHorizontalXXXL,\r\n paddingRight: tokens.spacingHorizontalXXXL,\r\n ...shorthands.flex(1, 1, '1px'),\r\n },\r\n container: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n rowGap: tokens.spacingVerticalS,\r\n },\r\n row: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n justifyContent: 'flex-start',\r\n columnGap: tokens.spacingHorizontalL,\r\n rowGap: tokens.spacingVerticalS,\r\n },\r\n centered: {\r\n display: 'flex',\r\n justifyContent: 'safe center',\r\n alignItems: 'safe center',\r\n },\r\n editButton: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n transform: 'translate(-50%, -50%)',\r\n opacity: 0,\r\n lineHeight: tokens.lineHeightBase400,\r\n fontSize: tokens.fontSizeBase400,\r\n fontWeight: tokens.fontWeightSemibold,\r\n backgroundColor: tokens.colorNeutralBackground1,\r\n color: tokens.colorNeutralForeground1,\r\n minWidth: '96px',\r\n ...shorthands.borderRadius(tokens.borderRadiusMedium),\r\n ...shorthands.borderWidth(tokens.strokeWidthThin),\r\n ...shorthands.borderColor(tokens.colorNeutralStroke1),\r\n ...shorthands.borderStyle('solid'),\r\n ...shorthands.padding('7px', tokens.spacingHorizontalL),\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n editIcon: {\r\n marginRight: tokens.spacingHorizontalSNudge,\r\n width: tokens.spacingHorizontalXXL,\r\n height: tokens.spacingVerticalXXL,\r\n },\r\n imageContainer: {\r\n position: 'relative',\r\n boxShadow: tokens.shadow2,\r\n '&:hover img, &:focus img': {\r\n filter: 'brightness(0.7)',\r\n },\r\n '&:hover .edit-button, &:focus .edit-button': {\r\n opacity: 1,\r\n },\r\n ...shorthands.transition('filter', '0.3s', 'ease-in-out'),\r\n ...shorthands.margin('1px'),\r\n },\r\n sizeText: {\r\n ...shorthands.padding(tokens.spacingVerticalNone, tokens.spacingHorizontalNone, tokens.spacingVerticalXS),\r\n },\r\n});\r\n","import React from 'react';\r\nimport {\r\n Dropdown,\r\n Option,\r\n shorthands,\r\n tokens,\r\n makeStyles,\r\n mergeClasses,\r\n DropdownProps,\r\n} from '@fluentui/react-components';\r\n\r\nconst useStyles = makeStyles({\r\n zoomDropDown: {\r\n minWidth: '80px',\r\n ...shorthands.margin(tokens.spacingVerticalXXL, tokens.spacingHorizontalNone),\r\n },\r\n});\r\n\r\nexport interface ZoomControlProps {\r\n zoomValue: string;\r\n onZoomSelect: DropdownProps['onOptionSelect'];\r\n i18n: {\r\n getString: (key: string) => string;\r\n };\r\n}\r\n\r\nconst zoomOptions = [\r\n _TL_('75%'),\r\n _TL_('80%'),\r\n _TL_('90%'),\r\n _TL_('100%'),\r\n _TL_('110%'),\r\n _TL_('120%'),\r\n _TL_('125%'),\r\n _TL_('150%'),\r\n _TL_('200%'),\r\n];\r\n\r\nexport const ZoomControl = ({ zoomValue, onZoomSelect, i18n }: ZoomControlProps) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n <Dropdown\r\n value={zoomValue}\r\n selectedOptions={[zoomValue]}\r\n onOptionSelect={onZoomSelect}\r\n className={mergeClasses('zoom-control', classes.zoomDropDown)}\r\n appearance=\"filled-darker\"\r\n aria-label={i18n.getString(_TL_('zoom'))}\r\n >\r\n {zoomOptions.map(option => (\r\n <Option key={option} value={option} >\r\n {i18n.getString(option)}\r\n </Option>\r\n ))}\r\n </Dropdown>);\r\n};\r\n","import React, { useMemo } from 'react';\r\nimport {\r\n mergeClasses,\r\n Button,\r\n Body1,\r\n Skeleton,\r\n SkeletonItem,\r\n} from '@fluentui/react-components';\r\nimport { ArrowLeftRegular, EditRegular } from '@fluentui/react-icons';\r\nimport { FilterBar } from './filter-bar';\r\nimport { previewStyles } from './styles';\r\nimport { AdPreViewsProps, AdSize, PreviewImageProps } from '../types';\r\nimport { applyZoom, getAdSizeCategory } from '../utils';\r\nimport { ZoomControl } from './zoom-control';\r\n\r\nconst PreviewImage = ({\r\n image,\r\n adSize,\r\n editEnabled,\r\n editIndividualAdCallback,\r\n i18n,\r\n zoomValue,\r\n}: PreviewImageProps) => {\r\n const classes = previewStyles();\r\n const imageSize = useMemo(() => ({\r\n width: applyZoom(image.width, zoomValue),\r\n height: applyZoom(image.height, zoomValue),\r\n }), [image.width, image.height, zoomValue]);\r\n\r\n const onSelectWithKeyboard = (e: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n editIndividualAdCallback(adSize);\r\n }\r\n };\r\n\r\n if (image.loading === true) {\r\n return (\r\n <div className={mergeClasses('preview-image', classes.container, 'preview-loading')}>\r\n <Skeleton aria-label={i18n.getString(_TL_('Loading Content'))} >\r\n <SkeletonItem style={imageSize} />\r\n </Skeleton>\r\n <Body1 className={classes.sizeText}>\r\n {i18n.getString(_TL_('{{width}} x {{height}} pixels'), { width: image.width, height: image.height })}\r\n </Body1>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className={mergeClasses('preview-image', classes.container)}>\r\n {editEnabled ? (\r\n <div\r\n className={classes.imageContainer}\r\n style={imageSize}\r\n role=\"button\"\r\n tabIndex={0}\r\n onClick={() => editIndividualAdCallback(adSize)}\r\n onKeyDown={onSelectWithKeyboard}\r\n aria-label={i18n.getString(_TL_('Edit ad with size {{size}}'), { size: adSize })}\r\n >\r\n <img\r\n src={image.url}\r\n alt={i18n.getString(_TL_('Preview of ad in size {{size}}'), { size: adSize })}\r\n {...imageSize}\r\n />\r\n <div className={mergeClasses('edit-button', classes.editButton)} >\r\n <EditRegular className={classes.editIcon} /> {i18n.getString(_TL_('Edit'))}\r\n </div>\r\n </div>\r\n ):(\r\n <img\r\n src={image.url}\r\n alt={i18n.getString(_TL_('Preview of ad in size {{size}}'), { size: adSize })}\r\n {...imageSize}\r\n />\r\n )}\r\n <Body1 className={classes.sizeText}>\r\n {i18n.getString(_TL_('{{width}} x {{height}} pixels'), { width: image.width, height: image.height })}\r\n </Body1>\r\n </div>\r\n );\r\n};\r\n\r\nexport const AdPreViews = ({\r\n i18n, adImages, targetSizes, isSinglePreviewSelected, editIndividualAdCallback, filterSelectionCallback, zoomValue, onZoomSelect, showPreviewControls,\r\n}: AdPreViewsProps) => {\r\n const classes = previewStyles();\r\n\r\n\r\n // one preview selected\r\n if (isSinglePreviewSelected && targetSizes.length === 1) {\r\n return (\r\n <div className={classes.previewContainer}>\r\n <div className=\"individual-preview-controls\">\r\n <Button\r\n appearance=\"transparent\"\r\n icon={<ArrowLeftRegular />}\r\n onClick={() => filterSelectionCallback('All sizes')}\r\n className={classes.backButton}\r\n >\r\n {i18n.getString(_TL_('All sizes'))}\r\n </Button>\r\n </div>\r\n <div className={mergeClasses('ad-preview', classes.container, classes.adPreviews, classes.centered)}>\r\n <PreviewImage\r\n adSize={targetSizes[0]}\r\n image={adImages[targetSizes[0]]}\r\n editEnabled={false}\r\n editIndividualAdCallback={editIndividualAdCallback}\r\n zoomValue={zoomValue}\r\n i18n={i18n}\r\n />\r\n </div>\r\n </div>\r\n );\r\n } else if (Object.keys(adImages).length === 1) { // only one preview available\r\n return (\r\n <div className={classes.previewContainer}>\r\n {\r\n showPreviewControls &&\r\n <div className={mergeClasses('individual-preview-controls', classes.centered)}>\r\n <ZoomControl\r\n zoomValue={zoomValue}\r\n onZoomSelect={onZoomSelect}\r\n i18n={i18n}\r\n />\r\n </div>\r\n }\r\n <div className={mergeClasses('ad-preview', classes.container, classes.adPreviews, classes.centered)}>\r\n <PreviewImage\r\n adSize={Object.keys(adImages)[0] as AdSize}\r\n image={adImages[Object.keys(adImages)[0]]}\r\n editEnabled={false}\r\n editIndividualAdCallback={editIndividualAdCallback}\r\n zoomValue={zoomValue}\r\n i18n={i18n}\r\n />\r\n </div>\r\n </div>\r\n );\r\n }\r\n // multiple previews\r\n return (\r\n <div className={classes.previewContainer}>\r\n <FilterBar i18n={i18n} selectionCallback={filterSelectionCallback} />\r\n <div className={mergeClasses('ad-preview', classes.container, classes.adPreviews)}>\r\n {/* Horizontal images each get their own row in decreasing width order */}\r\n {targetSizes\r\n .filter(size => getAdSizeCategory(size) === 'Horizontal')\r\n .sort((a, b) => adImages[b].width - adImages[a].width)\r\n .map(size => (\r\n <PreviewImage\r\n key={size}\r\n adSize={size}\r\n image={adImages[size]}\r\n editEnabled\r\n editIndividualAdCallback={editIndividualAdCallback}\r\n zoomValue={zoomValue}\r\n i18n={i18n}\r\n />\r\n ))}\r\n {/* Other images take the same row sorted by aspect ratio */}\r\n <div className={classes.row}>\r\n {targetSizes\r\n .filter(size => getAdSizeCategory(size) !== 'Horizontal')\r\n .sort((a, b) => (adImages[a].width / adImages[a].height) - (adImages[b].width / adImages[b].height))\r\n .map(size => (\r\n <PreviewImage\r\n key={size}\r\n adSize={size}\r\n image={adImages[size]}\r\n editEnabled\r\n editIndividualAdCallback={editIndividualAdCallback}\r\n zoomValue={zoomValue}\r\n i18n={i18n}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport _ from 'underscore';\r\nimport React, { useCallback, useEffect, useMemo, useState, useContext } from 'react';\r\nimport { createPortal } from 'react-dom';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n Button,\r\n makeStyles,\r\n mergeClasses,\r\n shorthands,\r\n tokens,\r\n} from '@fluentui/react-components';\r\nimport { ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\n\r\nimport { generateNameSuggestionSuffix } from '@bingads-webui-campaign/audience-campaign-shared';\r\nimport { ZoomControl } from './ad-previews/zoom-control';\r\nimport { DisplayAdsContext } from './context';\r\nimport { getAdConfig } from './utils';\r\n\r\nexport const useStyles = makeStyles({\r\n container: {\r\n height: '44px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n ...shorthands.padding(0, tokens.spacingHorizontalL),\r\n },\r\n saveButton: {\r\n marginLeft: tokens.spacingHorizontalL,\r\n whiteSpace: 'nowrap',\r\n },\r\n});\r\n\r\nexport const DisplayTemplateSummaryBarControl = ({\r\n i18n,\r\n isSaveDisabled,\r\n zoomValue,\r\n onZoomSelect,\r\n dataService,\r\n saveInNewFolder,\r\n onSaveSuccess,\r\n setIsSaving,\r\n finalUrl,\r\n sourceType,\r\n folderId,\r\n}) => {\r\n const classes = useStyles();\r\n const [summaryBar, setSummaryBar] = useState<HTMLElement| null>(null);\r\n const {\r\n state: {\r\n displayAds,\r\n templateConfigs,\r\n adImages,\r\n },\r\n } = useContext(DisplayAdsContext);\r\n const isSingleAd = useMemo(() => Object.keys(displayAds).length === 1, [displayAds]);\r\n const activity = useContext(ActivityContext) as any;\r\n\r\n const getFolder = useCallback(() => {\r\n if (saveInNewFolder && dataService.createFolder) {\r\n return dataService.createFolder({ folderName: generateNameSuggestionSuffix(i18n.getString(_TL_('Display template'))) });\r\n }\r\n return Promise.resolve(parseInt(folderId, 10) || 'ROOT');\r\n }, [dataService, saveInNewFolder, i18n, folderId]);\r\n\r\n const memoizedImageUpload = useMemo(\r\n () => _.memoize(asset => dataService.uploadImageByUrl(asset), asset => JSON.stringify(asset)),\r\n [dataService]\r\n );\r\n\r\n const memoizedGetImageById = useMemo(\r\n () => _.memoize(asset => dataService.getImageById(asset), asset => JSON.stringify(asset)),\r\n [dataService]\r\n );\r\n\r\n const uploadImageAsset = useCallback((asset) => {\r\n if (!asset || !asset.url) {\r\n return Promise.resolve(null);\r\n }\r\n if (asset.assetId) {\r\n return Promise.resolve({\r\n url: asset.url,\r\n id: asset.assetId,\r\n });\r\n }\r\n return memoizedImageUpload({\r\n imageUrl: asset.url,\r\n folderId: 'ROOT',\r\n }).then(imageId => memoizedGetImageById({ imageId }));\r\n }, [memoizedImageUpload, memoizedGetImageById]);\r\n\r\n const uploadImageAssets = useCallback(({ image, logo }) => Promise.all([\r\n uploadImageAsset(image),\r\n uploadImageAsset(logo),\r\n ]).then(([imageAsset, logoAsset]) => ({\r\n image: imageAsset,\r\n logo: logoAsset,\r\n })), [uploadImageAsset]);\r\n\r\n const save = useCallback(() => {\r\n setIsSaving(true);\r\n getFolder().then((folder) => {\r\n const uploadAssets = Object.keys(displayAds).map((size) => {\r\n const ad = displayAds[size];\r\n const templateConfig = templateConfigs[size];\r\n const adImage = adImages[size];\r\n const adConfig = getAdConfig(ad, templateConfig);\r\n\r\n return uploadImageAssets(ad).then(({ image, logo }) => {\r\n const creativeData = {\r\n ...adConfig,\r\n template: {\r\n ...adConfig.template,\r\n image: {\r\n ...adConfig.template.image,\r\n url: image.url,\r\n },\r\n ...(logo? { logo: { ...adConfig.template.logo, url: logo.url } } : {}),\r\n },\r\n image: image.url,\r\n url: adImage.url,\r\n };\r\n return dataService.addImageWithBaseIdToFolder({\r\n imageSrc: adImage.url,\r\n folderId: folder,\r\n metaData: JSON.stringify(creativeData),\r\n baseId: Number(image.id),\r\n sourceType: sourceType || 'DisplayTemplateGenerated',\r\n });\r\n });\r\n });\r\n\r\n return Promise.all(uploadAssets).then(() => {\r\n if (onSaveSuccess) {\r\n if (activity) {\r\n if (saveInNewFolder) {\r\n activity.signal(`[DisplayAdsEditor] saved display template to folder ${folder} with ${uploadAssets.length}`);\r\n if (finalUrl) {\r\n activity.signal(`[DisplayAdsEditor] saved display template with final url ${finalUrl}`);\r\n } else {\r\n activity.signal('[DisplayAdsEditor] saved display template without final url');\r\n }\r\n } else {\r\n activity.signal('[DisplayAdsEditor] edited display template image');\r\n }\r\n }\r\n onSaveSuccess();\r\n }\r\n }).catch(() => {\r\n // handle error\r\n }).finally(() => {\r\n setIsSaving(false);\r\n });\r\n });\r\n }, [displayAds, templateConfigs, adImages, dataService, uploadImageAssets, getFolder, onSaveSuccess, setIsSaving, finalUrl, activity, saveInNewFolder, sourceType]);\r\n\r\n const customizedContent = useMemo(() => (\r\n <div className={classes.container} >\r\n <ZoomControl\r\n zoomValue={zoomValue}\r\n onZoomSelect={onZoomSelect}\r\n i18n={i18n}\r\n />\r\n <Button\r\n appearance=\"primary\"\r\n className={mergeClasses('save-template-button', classes.saveButton)}\r\n disabled={isSaveDisabled}\r\n onClick={save}\r\n >\r\n {isSingleAd? i18n.getString(_TL_('Save')): i18n.getString(_TL_('Save all sizes')) }\r\n </Button>\r\n </div>\r\n ), [\r\n classes.container,\r\n i18n,\r\n isSaveDisabled,\r\n save,\r\n onZoomSelect,\r\n zoomValue,\r\n classes.saveButton,\r\n isSingleAd,\r\n ]);\r\n\r\n useEffect(() => {\r\n const timer = setInterval(() => {\r\n try {\r\n const summaryBarCustomizeEle = document.getElementById('ad-studio-summary-bar-customize-container');\r\n if (summaryBarCustomizeEle) {\r\n setSummaryBar(summaryBarCustomizeEle);\r\n clearInterval(timer);\r\n }\r\n } catch (error) {\r\n clearInterval(timer);\r\n }\r\n }, 500);\r\n return () => clearInterval(timer);\r\n }, []);\r\n\r\n return (\r\n summaryBar ? createPortal(\r\n customizedContent,\r\n summaryBar\r\n ) : null\r\n );\r\n};\r\n\r\nDisplayTemplateSummaryBarControl.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n isSaveDisabled: PropTypes.bool,\r\n zoomValue: PropTypes.string.isRequired,\r\n onZoomSelect: PropTypes.func.isRequired,\r\n dataService: PropTypes.shape({\r\n addImageWithBaseIdToFolder: PropTypes.func,\r\n createFolder: PropTypes.func,\r\n uploadImageByUrl: PropTypes.func,\r\n getImageById: PropTypes.func,\r\n }).isRequired,\r\n saveInNewFolder: PropTypes.bool,\r\n onSaveSuccess: PropTypes.func,\r\n setIsSaving: PropTypes.func.isRequired,\r\n finalUrl: PropTypes.string,\r\n sourceType: PropTypes.string,\r\n folderId: PropTypes.string,\r\n};\r\n\r\nDisplayTemplateSummaryBarControl.defaultProps = {\r\n isSaveDisabled: false,\r\n saveInNewFolder: false,\r\n onSaveSuccess: undefined,\r\n finalUrl: undefined,\r\n sourceType: undefined,\r\n folderId: undefined,\r\n};\r\n","\r\n/* istanbul ignore file */ // not fully implemented yet\r\nimport React, { useMemo, useContext, useCallback, useEffect } from 'react';\r\nimport _ from 'underscore';\r\nimport {\r\n bundleIcon,\r\n Wand24Regular,\r\n Wand24Filled,\r\n Glance24Regular,\r\n Glance24Filled,\r\n} from '@fluentui/react-icons';\r\n\r\nimport { makeStyles, mergeClasses, tokens, DropdownProps, shorthands } from '@fluentui/react-components';\r\n\r\nimport { UiBlocker } from '@bingads-webui-fluent-component/ui-blocker';\r\nimport { withRecommendationContext } from '@bingads-webui-campaign-react/perf-max-recommendation';\r\nimport { withLoggingContext } from '@bingads-webui-campaign-react/copilot-loggers';\r\nimport { Scenario, Activity } from '@bingads-webui-react/hoc-with-signal';\r\nimport { Navigation } from './side-navigatioin';\r\nimport { AdjustView } from './adjust-view';\r\nimport { SizesView } from './sizes-view';\r\nimport { AdPreViews } from './ad-previews';\r\nimport { DisplayAdsContext, DisplayAdsProvider } from './context';\r\nimport { ActionTypes } from './reducer';\r\nimport { DisplayAdsEditorProps, AdSize } from './types';\r\nimport { DisplayTemplateSummaryBarControl } from './display-template-summary-bar-control';\r\nimport { getAdConfig, getAdConfigs } from './utils';\r\n\r\nconst NavigationIds = {\r\n Adjust: 'Adjust',\r\n Sizes: 'Sizes',\r\n};\r\n\r\nconst useStyles = makeStyles({\r\n container: {\r\n display: 'flex',\r\n backgroundColor: tokens.colorNeutralBackground2Hover,\r\n },\r\n editPanel: {\r\n flexShrink: 0,\r\n ...shorthands.padding(tokens.spacingVerticalS, tokens.spacingHorizontalS),\r\n ...shorthands.overflow('hidden'),\r\n },\r\n});\r\n\r\nconst Wand = bundleIcon(Wand24Filled, Wand24Regular);\r\nconst Glance = bundleIcon(Glance24Filled, Glance24Regular);\r\n\r\nconst groupedTabs = ({ onClick, i18n, selectedItem }) => [\r\n [\r\n {\r\n id: NavigationIds.Adjust,\r\n key: NavigationIds.Adjust,\r\n text: i18n.getString(_TL_('Adjust')),\r\n icon: Wand,\r\n isSelected: selectedItem === NavigationIds.Adjust,\r\n onClick: () => {\r\n onClick(NavigationIds.Adjust);\r\n },\r\n },\r\n {\r\n id: NavigationIds.Sizes,\r\n key: NavigationIds.Sizes,\r\n text: i18n.getString(_TL_('Sizes')),\r\n icon: Glance,\r\n isSelected: selectedItem === NavigationIds.Sizes,\r\n onClick: () => {\r\n onClick(NavigationIds.Sizes);\r\n },\r\n },\r\n ],\r\n];\r\n\r\nconst cache = {};\r\n\r\nconst DisplayAdsEditorComponent: React.FC<DisplayAdsEditorProps> = ({\r\n i18n,\r\n showNavigation,\r\n displayTemplatesDataService,\r\n showRecommendationsBanner,\r\n hasUpdateBrandKitData,\r\n hasFetchBrandKitData,\r\n containerClassName,\r\n serverContext,\r\n brandKitDataService,\r\n brandkitApiState,\r\n preferenceService,\r\n instrumentation,\r\n perfMarker,\r\n aid,\r\n cid,\r\n oDataConfig,\r\n permissions,\r\n showSummaryBarControl,\r\n dataService,\r\n saveInNewFolder,\r\n onAdChange,\r\n setLoading,\r\n onSaveSuccess,\r\n sourceType,\r\n url,\r\n setDataLoaded,\r\n folderId,\r\n}) => {\r\n const [selectedItem, setSelectedItem] = React.useState(NavigationIds.Adjust);\r\n const [isSinglePreviewSelected, setIsSinglePreviewSelected] = React.useState(false);\r\n const [zoomValue, setZoomValue] = React.useState('100%');\r\n const [loadingImage, setLoadingImage] = React.useState(false);\r\n const [isSaving, setIsSaving] = React.useState(false);\r\n const hasFirstLoadWithAssets = React.useRef(!!url);\r\n const items = useMemo(\r\n () =>\r\n groupedTabs({\r\n onClick: setSelectedItem,\r\n selectedItem,\r\n i18n,\r\n }),\r\n [i18n, selectedItem]\r\n );\r\n const classes = useStyles();\r\n const {\r\n dispatch,\r\n state: {\r\n finalUrl,\r\n displayAds,\r\n templateConfigs,\r\n templateId2Size,\r\n adImages,\r\n isAssetsLoading,\r\n targetSizes,\r\n recommendedAssets,\r\n },\r\n } = useContext(DisplayAdsContext);\r\n const getBrandKits = brandKitDataService?.getBrandKits;\r\n const fetchNewAds = useMemo(() => {\r\n const { editDisplayAdsAssetRecommendations } = displayTemplatesDataService;\r\n return _.memoize(_.throttle(editDisplayAdsAssetRecommendations, 100), params => JSON.stringify(params));\r\n }, [displayTemplatesDataService]);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const fetchNewDisplayAds = useCallback(() => {\r\n const ads = getAdConfigs(_.pick(displayAds, targetSizes), templateConfigs);\r\n const loadingAds = targetSizes.reduce((acc, size) => {\r\n acc[size] = {\r\n ...adImages[size],\r\n loading: true,\r\n };\r\n return acc;\r\n }, {});\r\n\r\n dispatch({ type: ActionTypes.updateAdImages, payload: loadingAds });\r\n\r\n const newAdImages = {};\r\n const adsToFetch = ads.filter(ad => !(JSON.stringify(ad) in cache));\r\n ads.forEach((ad) => {\r\n if (JSON.stringify(ad) in cache) {\r\n const sizeKey = templateId2Size[ad.template.templateId] as AdSize;\r\n newAdImages[sizeKey] = cache[JSON.stringify(ad)];\r\n }\r\n });\r\n dispatch({ type: ActionTypes.updateAdImages, payload: newAdImages });\r\n let hasCropSettingsUpdated = false;\r\n if (adsToFetch.length !== 0) {\r\n setLoadingImage(true);\r\n fetchNewAds(adsToFetch).then(({ Ads: generatedDisplayAds }) => {\r\n generatedDisplayAds.forEach((generatedAd) => {\r\n const { url: adUrl, template } = generatedAd;\r\n const sizeKey = templateId2Size[template.templateId] as AdSize;\r\n const config = templateConfigs[sizeKey];\r\n\r\n // update display ads\r\n if (displayAds?.[sizeKey]) {\r\n const imageAdsCropSettings = displayAds[sizeKey].image?.cropSetting;\r\n const logoAdsCropSettings = displayAds[sizeKey].logo?.cropSetting;\r\n const imageCropSettings = template?.image?.cropSetting;\r\n const logoCropSettings = template?.logo?.cropSetting;\r\n if (!imageAdsCropSettings && Array.isArray(imageCropSettings) && imageCropSettings.length > 0 && displayAds[sizeKey].image) {\r\n displayAds[sizeKey].image.cropSetting = imageCropSettings;\r\n hasCropSettingsUpdated = true;\r\n }\r\n if (!logoAdsCropSettings && Array.isArray(logoCropSettings) && logoCropSettings.length > 0 && displayAds[sizeKey].logo) {\r\n displayAds[sizeKey].logo.cropSetting = logoCropSettings;\r\n hasCropSettingsUpdated = true;\r\n }\r\n }\r\n\r\n if (config) {\r\n const { width, height } = config;\r\n newAdImages[sizeKey] = {\r\n url: adUrl,\r\n width,\r\n height,\r\n loading: false,\r\n };\r\n if (displayAds[sizeKey] !== undefined && templateConfigs[sizeKey] !== undefined) {\r\n const params = JSON.stringify(getAdConfig(displayAds[sizeKey], templateConfigs[sizeKey]));\r\n cache[params] = newAdImages[sizeKey];\r\n }\r\n }\r\n });\r\n if (hasCropSettingsUpdated) {\r\n dispatch({ type: ActionTypes.updateAds, payload: { adImages: newAdImages, displayAds } });\r\n } else {\r\n dispatch({ type: ActionTypes.updateAdImages, payload: newAdImages });\r\n }\r\n }).finally(() => {\r\n setLoadingImage(false);\r\n });\r\n }\r\n }, [\r\n dispatch,\r\n displayAds,\r\n targetSizes,\r\n templateConfigs,\r\n templateId2Size,\r\n adImages,\r\n fetchNewAds,\r\n ]);\r\n\r\n const fetchBrandKits = useCallback(async () => {\r\n if (getBrandKits) {\r\n perfMarker.willFetchData();\r\n const { response } = await getBrandKits(aid);\r\n perfMarker.willRender();\r\n if (setDataLoaded) {\r\n setDataLoaded();\r\n }\r\n if (Array.isArray(response) && response.length > 0) {\r\n const brandKit = response[0];\r\n const type = hasUpdateBrandKitData ? ActionTypes.updateBrandKit : ActionTypes.updateRecommendedAssetsWithBrandKit;\r\n dispatch({ type, payload: brandKit });\r\n }\r\n }\r\n }, [getBrandKits, aid, hasUpdateBrandKitData, dispatch, perfMarker, setDataLoaded]);\r\n\r\n useEffect(() => {\r\n fetchNewDisplayAds();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [displayAds]);\r\n\r\n useEffect(() => {\r\n if (onAdChange) {\r\n onAdChange({ displayAds, adImages, templateConfigs });\r\n }\r\n }, [displayAds, onAdChange, adImages, templateConfigs]);\r\n\r\n useEffect(() => {\r\n if (setLoading) {\r\n setLoading(loadingImage);\r\n }\r\n }, [loadingImage, setLoading]);\r\n\r\n const onBackgroundColorChange = useCallback((value) => {\r\n dispatch({ type: ActionTypes.updateBackground, payload: value });\r\n }, [dispatch]);\r\n const onImageChange = useCallback((value, keepCropSettings) => {\r\n dispatch({ type: ActionTypes.updateImage, payload: value, options: { keepCropSettings } });\r\n }, [dispatch]);\r\n const onLogoChange = useCallback((value) => {\r\n dispatch({ type: ActionTypes.updateLogo, payload: value });\r\n }, [dispatch]);\r\n const onLongHeadlineChange = useCallback((value) => {\r\n dispatch({ type: ActionTypes.updateLongHeadLine, payload: { text: value } });\r\n }, [dispatch]);\r\n const onShortHeadlineChange = useCallback((value) => {\r\n dispatch({ type: ActionTypes.updateShortHeadLine, payload: { text: value } });\r\n }, [dispatch]);\r\n const onDescriptionChange = useCallback((value) => {\r\n dispatch({ type: ActionTypes.updateDescription, payload: { text: value } });\r\n }, [dispatch]);\r\n const onCtaChange = useCallback((value) => {\r\n dispatch({ type: ActionTypes.updateCallToAction, payload: { text: value } });\r\n }, [dispatch]);\r\n const onAssetPropertiesWithColorChange = useCallback(\r\n (payload) => {\r\n dispatch({\r\n type: ActionTypes.updateAssetPropertyAndColor,\r\n payload,\r\n });\r\n },\r\n [dispatch]\r\n );\r\n\r\n const updateTextAssets = useCallback((payload) => {\r\n const { description, shortHeadline, longHeadline } = payload;\r\n if (description !== undefined) {\r\n onDescriptionChange(description);\r\n }\r\n if (shortHeadline !== undefined) {\r\n onShortHeadlineChange(shortHeadline);\r\n }\r\n if (longHeadline !== undefined) {\r\n onLongHeadlineChange(longHeadline);\r\n }\r\n }, [onDescriptionChange, onLongHeadlineChange, onShortHeadlineChange]);\r\n\r\n useEffect(() => {\r\n hasFetchBrandKitData && fetchBrandKits();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [hasFetchBrandKitData]);\r\n const filterSelectionCallback = useCallback((selectedFilter) => {\r\n setZoomValue('100%');\r\n setIsSinglePreviewSelected(false);\r\n dispatch({ type: ActionTypes.updateTargetSizes, payload: selectedFilter });\r\n }, [dispatch]);\r\n\r\n const editIndividualAdCallback = useCallback((selectedSize) => {\r\n setIsSinglePreviewSelected(true);\r\n dispatch({ type: ActionTypes.updateTargetSizes, payload: selectedSize });\r\n }, [dispatch]);\r\n const onRecommendedAssetsChange = useCallback((value) => {\r\n dispatch({ type: ActionTypes.updateRecommendedAssets, payload: value, options: { hasUpdateTemplate: hasFirstLoadWithAssets.current } });\r\n hasFirstLoadWithAssets.current = false;\r\n }, [dispatch]);\r\n const onFinalUrlChange = useCallback((value) => {\r\n dispatch({ type: ActionTypes.updateFinalUrl, payload: value });\r\n }, [dispatch]);\r\n\r\n const onZoomSelect: DropdownProps['onOptionSelect'] = (event, data) => {\r\n setZoomValue(data.selectedOptions[0]);\r\n };\r\n const isBrandKitLoading = brandkitApiState?.brandkitLoading;\r\n return (\r\n <>\r\n {showSummaryBarControl && (\r\n <DisplayTemplateSummaryBarControl\r\n i18n={i18n}\r\n onZoomSelect={onZoomSelect}\r\n zoomValue={zoomValue}\r\n isSaveDisabled={loadingImage || isSaving}\r\n dataService={dataService}\r\n saveInNewFolder={saveInNewFolder}\r\n onSaveSuccess={onSaveSuccess}\r\n setIsSaving={setIsSaving}\r\n finalUrl={finalUrl}\r\n sourceType={sourceType}\r\n folderId={folderId}\r\n />\r\n )}\r\n <UiBlocker\r\n blocking={isSaving || isBrandKitLoading}\r\n loadingText={isSaving? i18n.getString(_TL_('Saving...')): i18n.getString(_TL_('loading...'))}\r\n >\r\n <div\r\n className={mergeClasses(\r\n 'display-ads-editor',\r\n classes.container,\r\n containerClassName\r\n )}\r\n >\r\n {showNavigation && <Navigation items={items} />}\r\n <div className={mergeClasses(classes.editPanel)}>\r\n {selectedItem === NavigationIds.Adjust && (\r\n <AdjustView\r\n showRecommendationsBanner={showRecommendationsBanner}\r\n displayAds={displayAds}\r\n targetSizes={targetSizes}\r\n templateConfigs={templateConfigs}\r\n finalUrl={finalUrl}\r\n instrumentation={instrumentation}\r\n i18n={i18n}\r\n onFinalUrlChange={onFinalUrlChange}\r\n onRecommendedAssetsChange={onRecommendedAssetsChange}\r\n onBackgroundColorChange={onBackgroundColorChange}\r\n onImageChange={onImageChange}\r\n onLogoChange={onLogoChange}\r\n onChangeTextAssets={updateTextAssets}\r\n onAssetPropertiesWithColorChange={\r\n onAssetPropertiesWithColorChange\r\n }\r\n onCtaChange={onCtaChange}\r\n permissions={permissions}\r\n aid={aid}\r\n recommendedAssets={recommendedAssets}\r\n cid={cid}\r\n perfMarker={perfMarker}\r\n preferenceService={preferenceService}\r\n oDataConfig={oDataConfig}\r\n serverContext={serverContext}\r\n isAssetsLoading={isAssetsLoading}\r\n />\r\n )}\r\n {selectedItem === NavigationIds.Sizes && <SizesView />}\r\n </div>\r\n <AdPreViews\r\n i18n={i18n}\r\n adImages={adImages}\r\n targetSizes={targetSizes}\r\n isSinglePreviewSelected={isSinglePreviewSelected}\r\n editIndividualAdCallback={editIndividualAdCallback}\r\n filterSelectionCallback={filterSelectionCallback}\r\n zoomValue={zoomValue}\r\n onZoomSelect={onZoomSelect}\r\n showPreviewControls={!showSummaryBarControl}\r\n />\r\n </div>\r\n </UiBlocker>\r\n </>\r\n );\r\n};\r\n\r\nconst DisplayAdsEditorWithContext = (props) => {\r\n const {\r\n templateData,\r\n scenarioName,\r\n activityName,\r\n url,\r\n ...remainingProps\r\n } = props;\r\n\r\n return (\r\n <Scenario name={scenarioName || 'DisplayTemplateEditor'}>\r\n <Activity name={activityName ||'DisplayTemplateEditor'}>\r\n <DisplayAdsProvider templateData={templateData} finalUrl={url}>\r\n <DisplayAdsEditorComponent url={url} {...remainingProps} />\r\n </DisplayAdsProvider>\r\n </Activity>\r\n </Scenario>\r\n );\r\n};\r\n\r\n\r\nexport const DisplayAdsEditor = withLoggingContext(withRecommendationContext(DisplayAdsEditorWithContext));\r\n\r\n","import React, { useState, useEffect, useCallback } from 'react';\r\nimport _ from 'underscore';\r\nimport {\r\n DrawerBody,\r\n DrawerHeader,\r\n DrawerHeaderTitle,\r\n Drawer,\r\n DrawerFooter,\r\n} from '@fluentui/react-drawer';\r\nimport { Button, makeStyles, mergeClasses } from '@fluentui/react-components';\r\nimport { Dismiss24Regular } from '@fluentui/react-icons';\r\nimport {\r\n getLoggerWithoutPageInfo,\r\n createImageRepository,\r\n createFolderRepository\r\n} from '@bingads-webui-campaign-react/asset-library-services';\r\nimport { UiBlocker } from '@bingads-webui-fluent-component/ui-blocker';\r\nimport { setClarityTag } from '@bingads-webui-universal/clarity';\r\nimport { getLogVersion } from '@bingads-webui-campaign-react/asset-library-model';\r\nimport { addCropSettingsToCreativeImage } from '@bingads-webui-campaign-react/image-experience-model';\r\n\r\n\r\nimport { DisplayAdsEditor } from './display-ads-editor';\r\nimport { AdProps, DisplayAdsEditorDrawerProps, TemplateConfig } from './types';\r\nimport { getAdConfig } from './utils';\r\n\r\n\r\nconst useStyles = makeStyles({\r\n drawer: {\r\n width: '1270px',\r\n zIndex: 1000,\r\n top: '60px',\r\n },\r\n editorContainer: {\r\n height: '100%',\r\n },\r\n container: {\r\n marginLeft: '-24px',\r\n marginRight: '-24px',\r\n height: '100%',\r\n },\r\n});\r\n\r\nexport const DisplayAdsEditorDrawer = ({\r\n isOpen,\r\n setIsOpen,\r\n i18n,\r\n perfMarker,\r\n permissions,\r\n preferenceService,\r\n oDataConfig,\r\n serverContext,\r\n url,\r\n brandKitDataService,\r\n brandkitApiState,\r\n displayTemplatesDataService,\r\n imageData,\r\n instrumentation,\r\n hasUpdateBrandKitData,\r\n hasFetchBrandKitData,\r\n onApplyCreative,\r\n scenario,\r\n aid,\r\n cid,\r\n sourceType,\r\n} : DisplayAdsEditorDrawerProps) => {\r\n const classes = useStyles();\r\n const ref = React.useRef<HTMLDivElement>(null);\r\n const [templateDetails, setTemplateDetails] = useState<any>(null);\r\n const [loading, setLoading] = React.useState(false);\r\n const [adData, setAdData] = React.useState<any>(null);\r\n const [saving, setSaving] = React.useState(false);\r\n const activity = scenario.createActivity('DisplayAdsEditorDrawer');\r\n const versionForLog = getLogVersion();\r\n const logger = getLoggerWithoutPageInfo(activity, versionForLog, 'DisplayAdsEditorDrawer');\r\n const folderRepository = createFolderRepository({\r\n i18n,\r\n logger,\r\n oDataConfig,\r\n aid,\r\n cid,\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 useEffect(() => {\r\n setClarityTag({ DisplayAdsEditorDrawer: 'true' });\r\n }, []);\r\n\r\n useEffect(() => {\r\n const parentContainer = ref.current?.parentElement;\r\n if (parentContainer) {\r\n parentContainer.style.zIndex = '1000';\r\n }\r\n }, [ref]);\r\n\r\n\r\n useEffect(() => {\r\n if (!templateDetails &&\r\n imageData &&\r\n imageData.metadata &&\r\n imageData.metadata.template &&\r\n imageData.metadata.template.templateId\r\n ) {\r\n displayTemplatesDataService\r\n .fetchDisplayAdsTemplateDefinition(imageData.metadata.template.templateId)\r\n .then(({ Data: templates }) => {\r\n const latestTemplate = _.max(\r\n templates.displayAdsTemplateDefinitions,\r\n (templateDefinition: any) => Number(templateDefinition.version)\r\n );\r\n setTemplateDetails({\r\n displayAdsTemplateDetails: [\r\n {\r\n templateConfig: latestTemplate,\r\n displayAd: {\r\n ...imageData.metadata,\r\n url: imageData.src || imageData.url,\r\n },\r\n },\r\n ],\r\n });\r\n })\r\n .catch(() => {\r\n // handle error\r\n });\r\n }\r\n }, [imageData.metadata.template.templateId, displayTemplatesDataService, templateDetails, imageData]);\r\n\r\n const uploadImageAsset = useCallback(({ displayAd }) => {\r\n if (!displayAd.image.assetId) {\r\n return folderRepository.addUrlImageToFolder({\r\n imageSrc: displayAd.image.url,\r\n folderId: 'ROOT',\r\n }).then(imageId => imageRepository.getImage(imageId));\r\n }\r\n return Promise.resolve({\r\n url: displayAd.image.url,\r\n id: displayAd.image.assetId,\r\n });\r\n }, [folderRepository, imageRepository]);\r\n\r\n const onSave = useCallback(() => {\r\n const { displayAds, adImages, templateConfigs } = adData;\r\n const displayAd = Object.values(displayAds)[0] as AdProps;\r\n const adImage = Object.values(adImages)[0] as any;\r\n const templateConfig = Object.values(templateConfigs)[0] as TemplateConfig;\r\n const displayAdConfig = getAdConfig(displayAd, templateConfig);\r\n let creativeData;\r\n setSaving(true);\r\n uploadImageAsset({ displayAd }).then((image) => {\r\n creativeData = {\r\n ...displayAdConfig,\r\n template: {\r\n ...displayAdConfig.template,\r\n image: {\r\n ...displayAdConfig.template.image,\r\n url: image.url,\r\n },\r\n },\r\n image: image.url,\r\n url: adImage.url,\r\n };\r\n imageRepository.addCreative({ creativeData, baseId: image.id, sourceType }).then((ids) => {\r\n if (_.isObject(_.first(ids))) {\r\n throw new Error(ids[0].code);\r\n }\r\n\r\n return ids[0];\r\n })\r\n .then(id => imageRepository.getImage(id))\r\n .then(mtObj => addCropSettingsToCreativeImage(mtObj))\r\n .then((imageObj) => {\r\n onApplyCreative({\r\n imageObj,\r\n creativeMeta: {\r\n placement: imageData.metadata.placement,\r\n ...creativeData,\r\n },\r\n });\r\n setIsOpen(false);\r\n activity.trace('DisplayAdsEditorDrawer: save');\r\n })\r\n .finally(() => {\r\n setSaving(false);\r\n });\r\n });\r\n }, [adData, onApplyCreative, setIsOpen, activity, uploadImageAsset, imageRepository, imageData, sourceType]);\r\n\r\n return (\r\n <Drawer\r\n type=\"overlay\"\r\n modalType=\"modal\"\r\n open={isOpen}\r\n position=\"end\"\r\n size=\"large\"\r\n ref={ref}\r\n separator\r\n className={mergeClasses('display-ads-editor-drawer', classes.drawer)}\r\n >\r\n <DrawerHeader>\r\n <DrawerHeaderTitle\r\n action={\r\n <Button\r\n appearance=\"subtle\"\r\n aria-label={i18n.getString(_TL_('Close'))}\r\n icon={<Dismiss24Regular />}\r\n onClick={() => setIsOpen(false)}\r\n />\r\n }\r\n >\r\n {i18n.getString(_TL_('Edit your ad'))}\r\n </DrawerHeaderTitle>\r\n </DrawerHeader>\r\n <DrawerBody>\r\n <div className={classes.container}>\r\n <UiBlocker\r\n blocking={!templateDetails || saving}\r\n loadingText={saving? i18n.getString(_TL_('Saving...')) :i18n.getString(_TL_('Loading...'))}\r\n >\r\n { templateDetails && (\r\n <DisplayAdsEditor\r\n containerClassName={classes.editorContainer}\r\n i18n={i18n}\r\n brandKitDataService={brandKitDataService}\r\n brandkitApiState={brandkitApiState}\r\n hasFetchBrandKitData={hasFetchBrandKitData}\r\n hasUpdateBrandKitData={hasUpdateBrandKitData}\r\n perfMarker={perfMarker}\r\n permissions={permissions}\r\n oDataConfig={oDataConfig}\r\n serverContext={serverContext}\r\n instrumentation={instrumentation}\r\n templateData={templateDetails}\r\n displayTemplatesDataService={displayTemplatesDataService}\r\n preferenceService={preferenceService}\r\n url={url}\r\n aid={aid}\r\n cid={cid}\r\n onAdChange={setAdData}\r\n setLoading={setLoading}\r\n scenarioName=\"DisplayTemplateDrawer\"\r\n activityName=\"DisplayTemplateDrawer\"\r\n />)}\r\n </UiBlocker>\r\n </div>\r\n </DrawerBody>\r\n <DrawerFooter>\r\n <Button\r\n appearance=\"primary\"\r\n disabled={!templateDetails || loading || saving}\r\n onClick={onSave}\r\n >{i18n.getString(_TL_('Save'))}\r\n </Button>\r\n <Button\r\n appearance=\"subtle\"\r\n disabled={saving}\r\n onClick={() => setIsOpen(false)}\r\n >\r\n {i18n.getString(_TL_('Cancel'))}\r\n </Button>\r\n </DrawerFooter>\r\n </Drawer>\r\n );\r\n};\r\n\r\n","import RecommendationsSectionSvg from './recommendations-section.svg';\r\n\r\nexport const RecommendationsSectionIcon = RecommendationsSectionSvg;\r\n","import {\r\n makeStyles,\r\n shorthands,\r\n tokens,\r\n} from '@fluentui/react-components';\r\n\r\nconst ImagePreviewHeight = '96px';\r\n\r\nexport const useStyles = makeStyles({\r\n displayRecommendedImage: {\r\n '& .image-suggestion-carousel-loading': {\r\n '& .parent-item': {\r\n display: 'flex',\r\n ...shorthands.gap('8px'),\r\n },\r\n '& .item': {\r\n height: '66px',\r\n width: '72px',\r\n },\r\n },\r\n '& .helpbutton': {\r\n display: 'inline',\r\n },\r\n\r\n },\r\n imagePreviewContainer: {\r\n height: ImagePreviewHeight,\r\n position: 'relative',\r\n ...shorthands.margin('12px', 0),\r\n '& .image-preview': {\r\n display: 'flex',\r\n height: '100%',\r\n justifyContent: 'center',\r\n },\r\n backgroundImage: 'linear-gradient(45deg, #EBEBEB 25%, transparent 25%), linear-gradient(-45deg, #EBEBEB 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #EBEBEB 75%), linear-gradient(-45deg, transparent 75%, #EBEBEB 75%)',\r\n backgroundSize: '40px 40px',\r\n backgroundPositionX: '0px, 0px, 20px, -20px',\r\n backgroundPositionY: '0px, 20px, -20px, 0px',\r\n backgroundColor: '#FAFAFA',\r\n },\r\n checkerImage: {\r\n position: 'absolute',\r\n width: '100%',\r\n ...shorthands.borderRadius(tokens.borderRadiusXLarge),\r\n ...shorthands.border('0.5px', 'solid', '#E1E1E1'),\r\n display: 'flex',\r\n justifyContent: 'center',\r\n },\r\n overlay: {\r\n position: 'absolute',\r\n height: '96px',\r\n left: 0,\r\n right: 0,\r\n backgroundColor: tokens.colorBackgroundOverlay,\r\n },\r\n multipleBtn: {\r\n width: '100%',\r\n display: 'flex',\r\n color: tokens.colorNeutralForeground4,\r\n fontSize: tokens.fontSizeBase200,\r\n flexDirection: 'column',\r\n ...shorthands.border('0.5px', 'solid', '#E1E1E1'),\r\n backgroundColor: tokens.colorNeutralBackground3,\r\n ...shorthands.borderRadius(tokens.borderRadiusMedium),\r\n },\r\n previewImage: {\r\n display: 'flex',\r\n height: '100%',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n '& img': {\r\n width: '100%',\r\n maxHeight: '100%',\r\n },\r\n },\r\n actionBtns: {\r\n display: 'flex',\r\n position: 'absolute',\r\n ...shorthands.gap('8px'),\r\n bottom: '10px',\r\n left: '50%',\r\n transform: 'translate(-50%, 0)',\r\n '& button': {\r\n ...shorthands.borderRadius(tokens.borderRadiusSmall),\r\n backgroundColor: tokens.colorNeutralBackground1,\r\n ...shorthands.border(tokens.strokeWidthThin, 'solid', tokens.colorNeutralStroke1),\r\n },\r\n },\r\n helpButton: {\r\n marginLeft: tokens.spacingHorizontalSNudge,\r\n },\r\n titleContainer: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n});\r\n\r\nexport const initialImageContainerLeftMargin = 0;\r\n\r\nconst IMAGE_DIM = {\r\n width: 68,\r\n height: 62,\r\n marginRight: 8,\r\n};\r\nconst PaddleBottomValue = 18;\r\nexport const getFullyShownImagesCount = (width) => {\r\n if (!width) {\r\n return 0;\r\n }\r\n\r\n const itemWidth = IMAGE_DIM.width + IMAGE_DIM.marginRight;\r\n\r\n return Math.floor(width / itemWidth);\r\n};\r\nexport const getCarouselStyles = (_components, _palette, iconFontFamily = 'MsAds MDL2 Assets') => ({\r\n carouselParent: {\r\n position: 'relative',\r\n display: 'inline-flex',\r\n width: '100%',\r\n alignItems: 'end',\r\n },\r\n disabledCarouselParent: {\r\n pointerEvents: 'none',\r\n opacity: 0.4,\r\n },\r\n image: {\r\n ...IMAGE_DIM,\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 objectFit: 'cover',\r\n borderRadius: 6,\r\n },\r\n imageContainer: ({ imageContainerLeftMargin, isCollapsible }) => ({\r\n height: IMAGE_DIM.height,\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n display: 'inline-block',\r\n marginLeft: isCollapsible ? imageContainerLeftMargin : 0,\r\n flexGrow: 1,\r\n }),\r\n imageParentContainer: ({ imageParentLeftOffset, numberOfImages }) => ({\r\n display: 'flex',\r\n width: (IMAGE_DIM.width + IMAGE_DIM.marginRight) * numberOfImages,\r\n position: 'relative',\r\n left: ((-1 * IMAGE_DIM.width) - IMAGE_DIM.marginRight) * imageParentLeftOffset,\r\n }),\r\n imageClickableContainer: {\r\n display: 'inline',\r\n '& :hover': {\r\n cursor: 'pointer',\r\n },\r\n },\r\n panel: {},\r\n panelHeading: {\r\n display: 'flex',\r\n marginBottom: '12px',\r\n '& .recommendation-icon': {\r\n width: '14px',\r\n height: '14px',\r\n margin: '0 8px',\r\n },\r\n },\r\n panelTitle: {\r\n flexGrow: 1,\r\n },\r\n panelIcon: {\r\n marginRight: 3,\r\n paddingBottom: 12,\r\n '&:before': {\r\n fontFamily: iconFontFamily,\r\n content: '\"\\\\E3AF\"',\r\n },\r\n },\r\n panelHelpButton: {\r\n display: 'none',\r\n },\r\n imageHintRight: {\r\n display: 'inline-block',\r\n position: 'absolute',\r\n background: 'linear-gradient(270deg, #FFFFFF 0%, rgba(255, 255, 255, 0.927755) 18.23%, rgba(255, 255, 255, 0.776042) 48.44%, rgba(250, 249, 255, 0.5) 78.24%, rgba(255, 255, 255, 0) 100%)',\r\n width: 20,\r\n height: IMAGE_DIM.height,\r\n right: 20,\r\n },\r\n imageHintLeft: {\r\n display: 'inline-block',\r\n position: 'absolute',\r\n background: 'linear-gradient(270deg, #FFFFFF 0%, rgba(255, 255, 255, 0.927755) 18.23%, rgba(255, 255, 255, 0.776042) 48.44%, rgba(250, 249, 255, 0.5) 78.24%, rgba(255, 255, 255, 0) 100%)',\r\n width: 30,\r\n height: IMAGE_DIM.height,\r\n left: 20,\r\n transform: 'rotate(-180deg)',\r\n },\r\n paddleBtn: {\r\n bottom: PaddleBottomValue,\r\n\r\n },\r\n moreIcon: {\r\n fontSize: '18px',\r\n height: '60px',\r\n width: '33px',\r\n },\r\n seeAll: {\r\n display: 'inline-block',\r\n position: 'absolute',\r\n right: 0,\r\n bottom: 12,\r\n whiteSpace: 'nowrap',\r\n maxWidth: 50,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n color: `${tokens.colorNeutralForeground2BrandSelected} !important`,\r\n },\r\n seeAllInHeader: {\r\n float: 'right',\r\n '& a': {\r\n position: 'static',\r\n fontSize: 12,\r\n paddingRight: 0,\r\n '&:hover, $:acitve, $:focus': {\r\n },\r\n '&:hover': {\r\n backgroundColor: 'transparent',\r\n },\r\n },\r\n },\r\n parentContainer: {\r\n '& .paddle-right, & .paddle-left': {\r\n width: '20px',\r\n height: '20px',\r\n '& i': {\r\n color: tokens.colorNeutralForeground3,\r\n fontSize: '12px',\r\n },\r\n },\r\n '& $panel': { // need more selector specificity to override styles applied to top of grid panels\r\n marginLeft: 0,\r\n marginTop: 12,\r\n marginBottom: 0,\r\n },\r\n '& $panelHeading': {\r\n border: 'none',\r\n '& $panelTitle.collapsible-title': {\r\n fontSize: '12px',\r\n fontWeight: 600,\r\n lineHeight: '24px',\r\n '& > a:hover': {\r\n backgroundColor: 'transparent',\r\n },\r\n marginTop: 0,\r\n },\r\n },\r\n '& + .alert-info': {\r\n marginTop: 8,\r\n '& a': {\r\n },\r\n },\r\n },\r\n});\r\n","import React, { memo, useState } from 'react';\r\nimport { EditRegular, ArrowSwapRegular, ImageMultipleRegular } from '@fluentui/react-icons';\r\nimport { Image as FluentImage } from '@bingads-webui-react/fabric-control';\r\nimport { Button, tokens } from '@fluentui/react-components';\r\nimport { useStyles } from './style';\r\nimport { ImagePreviewProps } from './type';\r\n\r\nexport const ImagePreview = memo(({\r\n onEdit,\r\n i18n,\r\n onReplace,\r\n hideEditBtn,\r\n hideReplaceBtn,\r\n previewImage,\r\n isMultiplePreview,\r\n type,\r\n}: ImagePreviewProps) => {\r\n const classes = useStyles();\r\n const [showActionBtn, setShowActionBtn] = useState(false);\r\n const onMouseEnter = () => {\r\n setShowActionBtn(true);\r\n };\r\n const onMouseLeave = () => {\r\n setShowActionBtn(false);\r\n };\r\n const onKeyDown = (e) => {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n onMouseEnter();\r\n }\r\n };\r\n return (\r\n <div className={classes.imagePreviewContainer}>\r\n <div\r\n className=\"image-preview\"\r\n onMouseEnter={onMouseEnter}\r\n onMouseLeave={onMouseLeave}\r\n tabIndex={0}\r\n onKeyDown={onKeyDown}\r\n role=\"button\"\r\n >\r\n {\r\n isMultiplePreview ?\r\n <Button\r\n icon={<ImageMultipleRegular color={tokens.colorNeutralForeground4} />}\r\n size=\"medium\"\r\n data-type={type}\r\n className={classes.multipleBtn}\r\n onClick={onReplace}\r\n >\r\n {i18n.getString(_TL_('Adding a new image will replace all images in every banner size. '))}\r\n </Button>\r\n : <FluentImage className={classes.previewImage} src={previewImage} alt=\"brand-kit\" />\r\n }\r\n {!isMultiplePreview && showActionBtn && <span className={classes.overlay} />}\r\n {!isMultiplePreview && showActionBtn && (\r\n <div className={classes.actionBtns}>\r\n {!hideEditBtn && (\r\n <Button\r\n icon={<EditRegular color={tokens.colorNeutralForeground1} />}\r\n size=\"medium\"\r\n data-type={type}\r\n className=\"edit_btn\"\r\n onClick={onEdit}\r\n />\r\n )}\r\n {!hideReplaceBtn && (\r\n <Button\r\n icon={<ArrowSwapRegular color={tokens.colorNeutralForeground1} />}\r\n size=\"medium\"\r\n data-type={type}\r\n className=\"rep_btn\"\r\n onClick={onReplace}\r\n />\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n});\r\n","import React, { memo, useCallback, useEffect, useRef, useMemo, useState } from 'react';\r\nimport { UiBlocker } from '@bingads-webui-react/ui-blocker';\r\nimport { Body1Strong, mergeClasses } from '@fluentui/react-components';\r\nimport { HelpButton } from '@bingads-webui-react/help-popup';\r\nimport { ImageSuggestionCarousel } from '@bingads-webui-campaign-react/image-suggestion-carousel';\r\nimport { ImageRecommendationsPanel } from '@bingads-webui-campaign-react/pmax-image-experience';\r\nimport { RecommendationsSectionIcon } from './asset-images';\r\nimport { getCarouselStyles, getFullyShownImagesCount, initialImageContainerLeftMargin, useStyles } from './style';\r\nimport { DisplayRecommendedImageProps } from './type';\r\nimport { ImagePreview } from './ImagePreview';\r\n\r\nconst DisplayRecommendedImage = memo(({\r\n i18n,\r\n isLoading,\r\n type,\r\n showViewAllInHeader,\r\n seeAllLinkText,\r\n themes,\r\n onSelectRecommendedImage,\r\n recommendationTitle,\r\n title,\r\n seeAllPanelTitle,\r\n recommendedLoadingText,\r\n recommendedImages,\r\n maxUploadNum,\r\n uiBlocking,\r\n previewImage,\r\n helpTopic,\r\n helpLabel,\r\n isRecommendationEmpty = false,\r\n onEditPreviewImage,\r\n onReplacePreviewImage,\r\n hideEditPreviewBtn,\r\n hideReplacePreviewBtn,\r\n isMultiplePreview,\r\n}: DisplayRecommendedImageProps) => {\r\n const [isSuggestionsPanelOpen, setIsSuggestionsPanelOpen] = useState(false);\r\n const [imagesToSuggest, setImagesToSuggest] = useState([]);\r\n const ref = useRef<{ fullUrl: any; index: any; suggestionId: any } | null>(null);\r\n const onSelectSeeAllRecommendedImages = useCallback(() => {\r\n setIsSuggestionsPanelOpen(true);\r\n }, []);\r\n const onDismiss = () => {\r\n setIsSuggestionsPanelOpen(false);\r\n };\r\n const onSelect = (fullUrl, index, suggestionId) => {\r\n onSelectRecommendedImage({ fullUrl, index, suggestionId }, type);\r\n };\r\n const onAdd = (images) => {\r\n onSelectRecommendedImage({ fullUrl: images[0]?.fullUrl, index: ref.current?.index, suggestionId: images[0]?.suggestionId }, type);\r\n };\r\n const onSelectImage = (fullUrl, index, suggestionId) => {\r\n ref.current = { fullUrl, index, suggestionId };\r\n onSelectRecommendedImage({ fullUrl, index, suggestionId }, type);\r\n };\r\n useEffect(() => {\r\n if (recommendedImages) {\r\n const truncatedImages = Array.isArray(recommendedImages) && recommendedImages.slice(0, 10);\r\n setImagesToSuggest(truncatedImages || [] as any);\r\n }\r\n }, [recommendedImages]);\r\n\r\n const classes = useStyles();\r\n\r\n const renderHelpBubble = useMemo(() => (\r\n <div className={classes.helpButton}>\r\n { helpTopic && (\r\n <HelpButton\r\n topic={helpTopic}\r\n aria-label={helpLabel}\r\n />\r\n )}\r\n </div>\r\n ), [classes.helpButton, helpLabel, helpTopic]);\r\n\r\n return (\r\n <div key={type} id={`display-action-pane-recommended-${type}`} className={mergeClasses(classes.displayRecommendedImage, 'display-action-pane-recommended')}>\r\n <div className={classes.titleContainer}>\r\n <Body1Strong>{title}</Body1Strong>\r\n {renderHelpBubble}\r\n </div>\r\n <ImagePreview i18n={i18n} isMultiplePreview={isMultiplePreview} type={type} onEdit={onEditPreviewImage} onReplace={onReplacePreviewImage} previewImage={previewImage} hideEditBtn={hideEditPreviewBtn} hideReplaceBtn={hideReplacePreviewBtn} />\r\n <UiBlocker\r\n blocking={uiBlocking}\r\n loadingText={recommendedLoadingText}\r\n >\r\n <ImageSuggestionCarousel\r\n title={recommendationTitle}\r\n isLoading={isLoading}\r\n showShimmer\r\n images={maxUploadNum > 0 ? imagesToSuggest : []}\r\n i18n={i18n}\r\n icon={RecommendationsSectionIcon}\r\n isEmpty={isRecommendationEmpty}\r\n onSelectImage={onSelect}\r\n onSelectSeeAll={onSelectSeeAllRecommendedImages}\r\n showViewAllInHeader={showViewAllInHeader}\r\n stylingOverrides={{\r\n getCarouselStyles,\r\n getFullyShownImagesCount,\r\n initialImageContainerLeftMargin,\r\n seeAllLinkText,\r\n }}\r\n />\r\n </UiBlocker>\r\n {isSuggestionsPanelOpen &&\r\n <ImageRecommendationsPanel\r\n i18n={i18n}\r\n isMultiSelect={false}\r\n title={seeAllPanelTitle}\r\n showThemes\r\n images={recommendedImages}\r\n themes={themes}\r\n hasMore={false}\r\n maxUploadNum={1}\r\n onAdd={onAdd}\r\n onSelectImage={onSelectImage}\r\n onDismiss={onDismiss}\r\n />\r\n }\r\n </div>\r\n );\r\n});\r\n\r\nexport default DisplayRecommendedImage;\r\n"],"names":["adEditorStyle","_ref","_ref$palette","palette","_objectSpread","outline","marginBottom","padding","borderWidth","borderStyle","borderColor","backgroundColor","border","width","lineHeight","wordBreak","marginTop","color","fontWeight","fontSize","wordWrap","minHeight","paddingBottom","float","background","margin","height","cursor","textAlign","opacity","display","paddingRight","marginLeft","top","position","minWidth","whiteSpace","marginRight","borderTop","borderRight","borderLeft","borderBottom","borderTopColor","right","visibility","textDecoration","neutralTertiary","overflow","verticalAlign","maxWidth","flexDirection","overflowWrap","bottom","borderRadius","paddingLeft","fontFamily","boxSizing","left","transform","maxHeight","paddingTop","textOverflow","imageExperienceContentStyle","editImageCommonStyle","adEditorFormOverrideStyle","_ref$iconFontFamily","iconFontFamily","adCustomizersStyle","crudAdStyle","crudAudienceAdStyle","adEditorOverrideStyle","_ref2","_ref2$palette","_ref2$iconFontFamily","alertOverrideStyle","buttonInputStyle","adEditorPanelOverrideStyle","_ref3","_ref3$palette","listStyle","flexWrap","underlineLinkStyle","isGreyBackground","elementLocator","BusinessNameWithAds","_React$PureComponent","_classCallCheck","_callSuper","arguments","_inherits","_createClass","key","value","_jsxs","className","children","this","props","hideLabel","_jsx","i18n","getString","onlyIcon","businessName","showAdsIcon","alt","src","React","defaultProps","AdPlacementCardPreview","context","_this","multiLineTextRefs","forEach","ref","current","processText","_this$props","multipleLineLongHeadline","showImage","multipleDescription","dismissText","showHotspots","hotspots","isMultimediaAd","previewContentClassName","isMultiMediaAdsPhase2Enabled","previewTexts","logo","showLogo","imageContainerClassName","showGradient","srcForCroppedImageView","isAdCreatorEnabled","image","FinalSrc","Src","showMultipleDescription","classnames","target","rel","href","url","showAdsLabel","CroppedImageView","resizeImageHeight","additionalSetting","imagePreviewHeight","originalWidth","Width","originalHeight","Height","SourceX","CropSettings","SourceY","SourceWidth","SourceHeight","aspectRatio","_TL_","logoHeight","map","hotspot","index","concat","title","actionText","showShortHeadline","shortHeadline","MultiLineEllipsisText","text","showLongHeadline","longHeadline","showUrl","isValidUrl","URL","origin","showDescription","description","showBusinessName","showAction","callToAction","replace","AdPlacementPreview","containerOpacity","opacityChangeEnabled","IsIncluded","cardProps","_","style","previewTypeStringKey","MultiImagePreview","handleSelect","selectedIndex","e","setState","direction","state","_this2","_this$state","isInsideImages","images","C","aspectRatios","Type","extensionHeadline","Carousel","activeIndex","onSelect","controls","wrap","imageObj","Item","idString","AdPlacementMultiImagePreview","isMobilePreview","previewType","finalPreviewContentClassName","getStyles","gridContainer","cellsNumberPerRow","gridTemplateColumns","gridGap","cellContainer","boxShadow","cellHeight","getPanelStyle","footer","fabricPanelFixStyle","commands","AdPlacementsGridPreview","totalCount","onRenderCell","classes","useDefaultStyles","cells","i","push","AdPlacementsGridPreviewPanel","isOpen","onDismiss","useContext","I18nContext","onRenderFooterContent","DefaultButton","onClick","Panel","headerText","closeButtonAriaLabel","styles","isFooterAtBottom","ROTATION_OPTIONS","Object","freeze","OPTIMIZED_FOR_CLICKS","ROTATE_ADS_EVENLY","ROTATION_OPTION_TO_TEXT","_defineProperty","RotationItems","id","ValidatedAdRotation","field","disableOptions","Stack","tokens","childrenGap","RadioGroupLite","validationProps","data","option","Radio","label","disabled","MessageBar","intent","layout","MessageBarBody","AdRotationSection","rest","_objectWithoutProperties","_excluded","ValidatedPanel","TextTitle","titleKey","details","AdRotation","icon","adRotationIcon","iconStyles","topicKey","attentionBeaconProps","getExtraProps","getPanelErrorProps","assetLibraryLegacyI18nMap","ImageExperience_MultipleUpload_SizeValidationFailTemplate","ImageExperience_MultipleUpload_SizeValidationFailTemplate_WithoutDimension","ImageExperience_SizeValidationFailTemplate_WithDetail","ImageExperience_SizeValidationFailTemplate_WithDetail_WithoutDimension","ImageExperience_SizeValidationFailTemplate","ImageExperience_SizeValidationFailTemplate_WithoutDimension","ImageExperience_Error_AnimatedImageNotAllowed","ImageExperience_Error_ImageLoadError","ImageExperience_Error_CampaignServiceMediaDataEncodingInvalid","ImageExperience_Error_CampaignServiceMediaFormatNotSupported","ImageExperience_Error_InternalError","imageOption","constants","defaultImageOption","removeNullUndefined","obj","newObj","undefined","processNewlyAddedImages","imgObjMT","imageSource","optionalCallback","isDisplayAds","isPortraitImage","isAudienceAdSmartCropEnabled","mediaRepository","_ref$isBrandKit","isBrandKit","postValidationError","validateImageWithDimension","isDueToResizing","imageObject","newImageFromMTObject","getSmartCroppedImagesAsync","originalImageToCrop","isMultimediaAdinMSANEnabled","aspectRatioOption","defaultAspectRatioOption","genericErrorMsg","useAssetLibraryImagePicker","cid","aid","oDataConfig","onNewImageSelected","permissions","serverContext","isAllUploadFlowImageUpscaleEnabled","_ref2$isBrandKit","_useState","useState","_useState2","_slicedToArray","imagePickerError","setImagePickerError","_useState3","_useState4","isUploadImageUpscaleEnabled","setIsUploadImageUpscaleEnabled","useEffect","isCopilotRegionRestricted","feature","then","isRestricted","errorValidationI18n","useMemo","buildLegacyI18n","minSize","getMinimumSizeForImage","minUploadSize","length","supportImageUpscale","setImagePickerErrorWithErrorCodeError","useCallback","getImageValidationErrorMessage","clearImagePickerError","customMediaSourceConfig","mediaSourceConfig","addMediaConfig","IsSocialMediaImagesEnabled","VIEWS","SocialMedia","imageRepository","ImageRepository","stockImageDataService","StockImageDataService","controller","investImageDataService","InvestImageDataService","socialMediaRepository","SocialMediaRepository","socialMediaDataSource","SocialMediaDataSource","repository","MediaRepository","dynamic","uploadImage","_ref4","imageData","updateCurrentProgress","name","validateImageSizeAsync","uploadImageAsync","response","imageId","Error","Code","processUploadedImage","_ref5","callback","imageSources","Upload","getImageByIdAsync","croppedImagePlacements","onProcessUploadComplete","args","upscaledImages","item","count","imageName","notificationApi","showInfo","fileName","fileCount","addImageByUrl","imageUrl","WebsiteCarousel","bulkSaveImagesByUrl","ids","code","processedImage","catch","errorMessage","addCreatives","_ref6","creativeData","getMTImages","_ref7","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_context","prev","next","Promise","sent","abrupt","stop","_x","apply","getImages","_ref8","_callee2","imgObjsMT","_context2","addCropSettingsToCreativeImage","_x2","originalImageUrls","creative","template","Url","metadata","stringifySync","encodeURIComponent","baseId","Id","sourceType","error","getStockImages","getInvestImages","getInvestAssets","onSelectStockImage","_ref12","selectedImageId","Stock","saveStockImage","stockImageId","stockImageVendorId","_ref13","onImageSelected","Existing","Metadata","uriDecodedMetaData","decodedMetadata","parseSync","creativeMeta","creativeId","onImagesSelected","imageIds","addImagePromises","processedImages","useImagePicker","show","setShow","activeImagePickerPillIndex","setActiveImagePillIndex","_useState5","LandingPage","_useState6","selectedMediaPanelSource","setSelectedMediaPanelSource","displayImagePicker","setDisplayImagePicker","displayWebsiteSuggestionTab","WebsiteImage","websiteSuggestionReducer","action","type","isSubdomainScraping","SuggestionStatus","SelectSuggestionError","carousel","message","MessageBarType","SelectSuggestionComplete","val","ind","updatedSuggestions","mapSuggestionResponseToState","useWebsiteSuggestion","adContext","instrumentation","logActivity","fullUrl","hasErrorInUrl","headlines","descriptions","adCreatorScenario","_ref$customizedGetMin","customizedGetMinimumSizeForImage","_useReducer","useReducer","EmptyURL","_useReducer2","suggestionState","dispatchSuggestionState","onPollingSuggestionCompleted","ServerError","FetchSucceed","logger","getAdCreatorInstrumentation","websiteSuggestionActivity","SuggestionPoller","advertiserCustomerId","accountId","cmpId","campaignId","jobCompleteCallback","poller","pollerWrapperRef","useRef","getLandingPageSuggestions","opts","JSON","stringify","getMoreLandingPageSuggestions","fetchSuggestionByUrl","headlinesArg","descriptionsArg","enableOfflinePollingDelay","FetchInProgress","landingPageUrl","minimumResolution","cancel","InvalidURL","suggestionPoller","LayoutType","UnStyledDisclaimerEditor","onSubmit","alwaysShowError","getFirstAlertElementAndFocus","isValid","disclaimer","DisclaimerLayout","Title","selected","dataToBeSaved","editData","confirm","create","onClose","onDisclaimerAddOrUpdated","errors","uniq","isHtmlMessage","DangerousHtmlMessage","finally","withUiBlock","$","usePanel","onValidate","result","preState","toString","onLayoutTypeChange","dropdownitems","onSelectedChange","alertNode","querySelector","parentElement","firstChild","focus","renderlayoutOptions","Alert","level","dismissible","renderSettingItem","settingName","labelText","_ref$helpId","helpId","HelpPopup","topic","hidePopupOption","isNativeAd","showOnlyPopupLayout","layoutTypeOptions","defaultData","Name","PopupText","LineText","FinalUrls","FinalMobileUrls","dropdownSeleted","cloneDeep","popupSchema","schema","properties","required","lineSchema","createRef","header","customNameErrors","nameSetting","ValidatedInput","errorProcessor","oldError","ariaLabel","layoutTypeSetting","role","hideLayoutOption","ValidatedRadioGroup","items","renderItem","onChange","titleSetting","DropdownSelector","selectedItem","enableArrowKeysSupport","shouldFocusFirstFocusableItemOnMount","getTitlePopupHelpId","customDescriptionErrors","errorProcessorForDescription","popupSetting","getInformationPopupSetting","TextArea","RemainingCharsHint","str","lineSetting","customFinalUrlErrors","finalUrlSetting","ValidatedUrlEditor","mobileUrlSetting","ValidationGroup","ErrorMessages","messages","DisclaimerEditor","withDefaultStyles","PopupDisclaimerFilter","DisclaimerSelector","onFetch","_ref$query","query","pageNumber","findAll","where","contains","skip","limit","total","isMountedFlag","filteredItems","shouldFilterPopup","totalCountToInsert","fetchPopUpDisclaimerTotalCount","onEdit","extension","event","preventDefault","stopPropagation","dropdownSelectorRef","instanceRef","handleClickOutside","onRemove","destroy","getDropdownButtonA11yLabel","_ref3$query","renderSelectedItem","renderEmptyList","prevProps","toggleSinceUpdated","componentNode","selectedDisclaimer","onSelectDisclaimer","mode","pageSize","enableRandomPage","DisclaimerStringMap","DisclaimerLabelText","Disclaimers_Campiagn_Description","Disclaimers_Native_Campaign_Description","Disclaimers_Campaign_Hint","Disclaimers_Campaign_Hint_New","Disclaimers_Add","Disclaimers_Create","Disclaimers_DisplayLayout_Label","Disclaimers_DisplayLayout_Popup","Disclaimers_DisplayLayout_AdditionalLine","Disclaimers_DisplayLayout_AdditionalLine_Hint","Disclaimers_Edit","Disclaimers_Name_Label","Disclaimers_Select","Disclaimers_Title_Label","Disclaimers_Title_Default","Disclaimers_Dropdown_Disclaimer","Disclaimers_Dropdown_Disclosure","Disclaimers_Dropdown_MoreDisclaimer","Disclaimers_Dropdown_Offer","Disclaimers_Dropdown_SafetyInfor","Disclaimers_Dropdown_SafetyInformation","Disclaimers_Information_Label","Disclaimers_Edit_Confirmation","Disclaimers_Remove_Confirmation","Disclaimers_Remove_Confirmation_body","Button_Close","Cancel","Save","Edit","Remove","LearnMoreLinkText","RemainingCharactersText_New","ExceededCharactersText_New","Ad_FinalUrl","MobileFinalUrl_Label","Loading","Search_No_Result","DisclaimerNameRequired","DisclaimerInformationRequired","FinalURLRequired","Validation_Base_Field_Not_Valid","Validation_NotEmpty_Required_Field","Validation_String_Max_Length","Validation_String_Invalid_Characters","Validation_Number_Require_Numeric","Validation_Number_Max_Length","Validation_Number_Range_Min","Validation_Number_Range_Max","Validation_Number_Range_Between","Validation_Array_Size_Max","Validation_Array_Size_Between","Validation_Array_Items_Invalid","Validation_Array_Items_Duplicate","Close","EntitySelector_Search_Placeholder","Disclaimers_Should_Check_With_Selected_Disclaimer","EntitySelector_Pagination_Page","EntitySelector_Pagination_TotalPageCountText","EntitySelector_Pagination_PreviousPageText","EntitySelector_Pagination_NextPageText","Modal","document","body","AdsCampaignDisclaimers","onCheckedChange","isTrusted","newValue","enableDisclaimer","onDisclaimerCheckboxChange","isCheckboxFocusStyle","updatedExtension","onAddClick","isAddOpen","onEditUIClose","EditingDisclaimer","resetSelectedDisclaimer","getValues","campaignName","isForNew","validate","DisclaimerAdsEnabled","campaignInfo","Campaign","CampaignName","AdExtensionAssociations","Status","valid","validateAndWarn","selectedDisclaimerInfo","testRef","bind","prevState","errorMeassageClearIfNeeded","onDataChange","disclaimerEditor","addContent","panelClassName","panelReadyAriaLabel","onRequestClose","shouldCloseOnOverlayClick","overlayClassName","selectorContent","errorsContent","disableTitle","AllowDisclaimerEnabled","Checkbox","checked","isDisclaimerCheckboxDisabled","viewModelToBulkModelForDisclaimerAssociation","campaignViewModel","association","useStyles","adsStudioColorPicker","strokeWidthThin","colorNeutralStroke2","flex","justifyContent","alignItems","editBtn","borderRadiusCircular","colorNeutralBackground1","backdropFilter","delBtn","fontSizeBase300","colorNeutralForeground2","spacingVerticalM","flexColumn","hr","colorNeutralStroke1","tooltip","adsStudioColorPalette","paletteAddColor","borderRadiusXLarge","paletteColor","paletteBox","strokeWidthThick","newColor","colorPickerStyles","panel","root","flexPreviewBox","flexContainer","flexSlider","spacingHorizontalSNudge","borderRadiusMedium","colorRectangle","getSkeletonStyles","row","gap","colorNeutralStencil1","TooltipContent","colorData","onColorChange","onDelete","ColorPicker","HexCode","alphaType","showPreview","Button","isColorSelected","updateColor","onTooltipVisibilityChange","Tooltip","content","ev","colorObj","withArrow","relationship","positioning","visible","onVisibleChange","_ev","useHandleCloseColorPicker","isSelected","setIsSelected","popupRef","includes","hex","addEventListener","removeEventListener","useCheckDuplicateColor","allowDuplicates","paletteData","onUpdate","isDuplicate","setIsDuplicate","onUpdateColor","some","defaultState","BrandColors","showEditBtn","enableEditBtn","showTooltipOnSelect","defaultSelected","hideCaption","palletteBoxSize","paletteColorSize","setShowEditBtn","setColorData","onMouseEnter","onMouseLeave","tabIndex","onKeyDown","size","Caption1Strong","ColorAddButton","totalColors","PaletteSkeleton","Skeleton","SkeletonItem","subTitle","isLoading","maxColors","helpTopic","helpLabel","renderHelpBubble","HelpButton","FormCard","FormCardDefaultHeader","contentAfter","contentBefore","FormCardBody","Body1Strong","UnstyledDemographic","formatter","dimensions","availableDimensions","onChangeDimensions","popupId","needValidation","setErrorMessage","onToggleDimension","dimension","filter","d","_toConsumableArray","onToggleAll","keys","classNames","demographicContainer","Label","ActionButton","Demographic","themePrimary","columnGap","redDark","AgeRanges","EighteenToTwentyFour","TwentyFiveToThirtyFour","ThirtyFiveToFourtyNine","FiftyToSixtyFour","SixtyFiveAndAbove","Unknown","formatAgeRange","ageRange","formatAgeRanges","ageRanges","chain","sortBy","sortAgeRanges","join","Genders","Female","Male","formatGender","gender","formatGenders","genders","sortGenders","DeliveryStatus","UnderReview","Ready","Limited","BuildingTheAudience","WhitelistDeliveryStatus","legacyI18nKeys","Message_DeliveryStatus_Ready","Message_DeliveryStatus_BuildingTheAudience","Message_DeliveryStatus_AudienceTooSmall","Message_DeliveryStatus_NoActivityInThePast24Hrs","Message_DeliveryStatus_MissingTagOnTheSite","Message_DeliveryStatus_MissingCustomEventsOnTheTag","Message_DeliveryStatus_InactiveDueToTagUnavailable","Message_DeliveryStatus_RecalculatingAudienceSize","Message_DeliveryStatus_PossibleTagIssue","Message_DeliveryStatus_MissingComponentAudience","Message_DeliveryStatus_ReadyForAudienceCampaignNotSearchCampaign","Message_DeliveryStatus_ReadyForSearchCampaignNotAudienceCampaign","Grid_NextPage","Grid_Page_Colon","Grid_Page_Number","Grid_Page_Number_Label_Text","Grid_Page","Grid_PageOf","Grid_PreviousPage","AudienceStatus","_props$audienceGroup","audienceGroup","Dimensions","DeliveryStatusDetails","flatten","audience","compact","status","entityForDeliveryStatusPopupFactory","grid","gridView","keyOfElement","noop","itemWithKey","legacyI18n","containerRef","showDeliveryStatusDetails","DeliveryStatusPopupFactory","showRejectionPopup","view","popoverId","showDeliveryStatusDetailsByKey","keyCode","KeyCodes","enter","currentTarget","hideDeliveryStatusDetails","relatedTarget","closest","trigger","statusContainer","isEmpty","zIndex","deliveryStatusStyle","borderBottomColor","borderBottomStyle","borderBottomWidth","AudienceGroupNegativeReferenceId","initialAudienceGroupData","Audiences","Profiles","GenderTypes","GENERIC_ERROR_MESSAGE_KEY","audienceGroupResource","edmCampaign","types","resolve","ResourceIdentifier","whitelistedModelSchemaPropertyKeys","AudienceGroupOdataSchema","whitelistedBulkModelSchemaPropertyKeys","AudienceGroupBulkUpsertSchema","initialAudienceGroupViewModel","isDirty","modelToViewModelForAudienceGroup","audienceGroupModel","pick","audiences","CustomerData","Interests","profilesData","companyNameTargets","profile","Target","industry","jobTargets","first","viewModelToModelForAudienceGroup","audienceGroupViewModel","_audienceGroupViewMod","_audienceGroupViewMod2","_audienceGroupViewMod3","_audienceGroupViewMod4","profiles","union","bulkModelToViewModelForAudienceGroup","saveAudienceGroup","model","_audienceGroupViewMod5","_audienceGroupViewMod6","pluck","viewModelToBulkModelForAudienceGroup","bulkUpdate","bulkCreate","bulkResult","bulkOrSystemError","has","entity","reject","getBulkApiErrors","updateAudienceGroups","bulkUpdateMany","deleteAudienceGroups","audienceGroups","idList","attrList","bulkManyResult","UnstyledAudienceCard","isReadOnlyUser","onSelectAudienceSignal","onEditAudienceSignal","onRemoveAudienceSignal","onRenderActions","showActions","enableFocus","ServerContext","DynamicPermissions","Permissions","isLinkedInTargetingEnabled","AudienceSignalTargetSupportForPmax","_useMemo$data","demographics","customerData","interests","renderActions","_Fragment","IconButton","iconProps","iconName","onSelectByKey","cardContainer","FontIcon","ReactTemplate","dataTag","interest","AudienceCard","flexGrow","flexFlow","neutralLighter","registerIcons","icons","BrowseAudienceSignal","BrowseImg","CreateAudienceSignal","CreateImg","UnstyledAudienceActions","onBrowseAudienceSignal","onCreateAudienceSignal","actionsContainer","CompoundButton","secondaryText","AudienceActions","neutralLighterAlt","withoutEasyDismiss","Component","escape","UnstyledAudiencePicker","audienceType","onAudiencesChanged","perfMarker","clone","audienceList","setAudienceList","audienceAssociationRef","setAudienceAssociationRef","audienceAssociationView","associationView","AudienceAssociationView","scope","campaignType","associationType","AssociationTypes","Aim","isFromPerformanceMaxCampaign","isNewUI","refreshOnInitialize","canExpandAssociation","render","expandAssociation","onAdd","onAudienceListChanged","associationList","getLists","PrimaryButton","audienceOptions","doubleListBoxViewModel","configSettingsOptions","setSelectedCategory","append","el","ensureLoadedAsync","find","allAudiences","setLists","exclusionList","on","off","pickerContainer","PanelType","custom","customWidth","newRef","AudiencePicker","overflowY","audienceAssociationSectionStyle","singleListBoxWidth","commonDoubleListBoxStyle","paginationStyle","searchboxStyle","convertToLocalStyle","glyphIconStyle","helpbuttonStyle","listStyleType","white","neutralLight","UnstyledAudiencSection","descritpion","addLabel","addPanelTitle","addPanelDescription","removeLeadingSlash","onGenericError","updateValidation","wizardPerfMarker","createChild","autoEnd","audienceDimensions","setAudienceDimensions","showAudiencePicker","setShowAudiencePicker","onAddAudience","onRemoveAudience","slice","sectionContainer","_ref$Name","AudienceSection","withCustomValidation","neutralSecondary","ProfileType","initialDimensions","setDimensions","withError","UnstyledDemographicPicker","initialProfiles","setInitialProfiles","isSameProfile","profile1","profile2","demographicPickerContainer","ValidatedCompanyPicker","showExclusion","negativeCompanyNameTargets","ValidatedIndustryPicker","negativeIndustry","ValidatedJobFunctionPicker","negativeJobTargets","DemographicPicker","DemographicsSection","companyName","jobFunction","isPanelExpanded","setPanelExpanded","togglePanelExpanded","demographicsContainer","expanded","Heading","toggle","Collapse","Body","getAssetGroupsEDM","audienceGroupId","Customers","$withKey","Accounts","AudienceGroups","AssetGroupColumn","fieldName","headerClassName","sortable","isMultiline","isResizable","CampaignColumn","Grid","dispatch","GridContext","useCampaignGridDataSource","edm","odataParams","select","onError","columns","payload","ContextualDetailsList","availablePageSizes","setKey","stickyHeader","AssetGroupsGrid","initialGridContext","selectionMode","SelectionMode","none","pagination","GridContextProvider","SaveOption","UnstyledSaveDialog","onAudienceGroupChanged","onSaveInPlace","viewModel","setViewModel","serverErrors","setServerErrors","toggleAlwaysShowError","_useState7","_useState8","saveOption","setSaveOption","showSaveCopyFields","results","onSave","dialogContentProps","DialogType","normal","onRenderSaveOption","subText","onChangeSaveOption","_event","saveOptions","onRenderLabel","Dialog","hidden","container","usage","AssociationsCount","values","ChoiceGroup","options","AudienceGroup","RemainingCharsValidatedTextField","placeholder","DialogFooter","SaveDialog","withScope","getUIBlockerStyle","uiblockerStyle","i18nLegacy","window","globalLegacyI18n","get","UnstyledAudienceEditor","originalAudienceGroup","siteMap","audienceCampaignPageContext","CurrentAccount","CurrentCustomerId","CurrentCustomer","DependencyResolver","set","gridColumn","jsdata","odata","_useState9","_useState11","_useState13","_useState15","_useState17","_useState18","_useState19","_useState20","setAlwaysShowError","_useBoolean","useBoolean","_useBoolean2","showSaveDialog","toggleShowSaveDialog","AgeGenderDisclaimer","onGlobalShortcut","shiftKey","getElementsByClassName","onNavigateToAudiencesPage","route","getRoutePathById","remove","save","editorContainer","medium","FluentProvider","theme","webLightTheme","link","Link","underline","AudienceEditor","withSiteMap","_theme$palette","AudienceNoDataView","NoDataImg","UnstyledAudienceSelector","child","willInit","setIsLoading","listRef","setListRef","allAudienceGroups","setAllAudienceGroups","currentAudienceGroupIndex","setCurrentAudienceGroupIndex","_useState10","keyword","setKeyword","_useState12","showAudienceEditor","setShowAudienceEditor","showNoDataView","showNoSearchResultView","_useState14","setPageNumber","_useState16","setPageSize","pageTotal","setPageTotal","onPageChange","number","onPageSizeChange","pager","onSearch","trim","onClickAudienceGroup","theAudienceGroup","onEditAudienceGroup","onRenderAudienceGroup","fetchData","willFetchData","toLowerCase","toPromise","fetchAudienceGroups","willRender","done","getElementById","useLayoutEffect","selectorContainer","onOuterClick","SearchBox","keywordTag","List","Pagination","AudienceSelector","getAudienceWizardStyle","wizardContainer","UnstyledAudienceWizard","wizardRef","showAudienceSelector","setShowAudienceSelector","selectedAudienceGroup","setSelectedAudienceGroup","AlertHelper","showError","newAudienceGroup","fetchAudienceGroup","updatedAudienceGroup","AudienceWizard","compose","WrappedComponent","useCustomerLevelVariables","CurrentUser","customerId","userId","locator","descriptor","uid","customer_id","usePostponeReadVariables","lookupCacheByVariables","fetch","postponeRead","refetch","mutation","getPilotValueWithSignUp","ccuiPilotKey","ccDynamicPilotKey","ccuiPilotValue","ccuiPilotValueWithDynamic","getPilotValue","cmuiPilotKey","uflPilotKey","cmuiPilotValue","uflPilotValue","signupPilotValue","usePilotsValue","onlySignup","getPilot","useIsInternalUser","IsInternal","formatOptions","groupedByCategoryId","groupBy","idItr","getNextId","optionGroup","categoryId","CategoryId","CategoryName","optionId","FriendlyName","getSelectionFromCriterions","criterions","Criterion","ContextualTarget","TargetOptionId","CriterionId","applySelectionToTreeNodes","nodes","selections","allChildren","reduce","memo","cur","each","selection","targetOptionNode","node","selectionComparer","selection1","selection2","onlyInLeft","compareFunction","leftValue","rightValue","getContextualTargetInfo","newSelections","_getSelectionsByCompa","added","removed","getSelectionsByComparison","removedWithStatusUpdate","copied","IsRemoved","combinedSelectionWithStatus","criterion","BidAdjustment","CriterionType","getContextualRawAsync","config","oDataToken","getContextualOptionsAsync","getClassNames","onContextualSelectionChange","contextualSelection","hideHeader","initialNodes","setInitialNodes","setNodes","selectedNodes","selectedNodesCount","parentNode","getSelectionFromTreeNodes","contextualTargetTitle","targetsContainer","TreeView","treeViewClassNames","treeViewContainer","changedNodes","nodeRenderer","CheckBoxNode","autoHeight","selectionContainer","childNode","split","Glyphicon","glyph","ContextualTargetWithStyle","ValidatedContextualTarget","_ref2$data","_data$contextualTarge","contextualTargets","contextualTargetsFromProps","targets","setTargets","newData","isEqual","DoubleListBox","selectorHeader","setOptions","searchQuery","setQuery","notify","horizontal","horizontalAlign","adUnits","getAdUnitData","Key","getTriggerI18nMapping","NoTrigger","UserIdle5Seconds","AppOpenEdge","AppOpenExcel","AppOpenExcel2016","AppOpenPowerPoint","AppOpenPowerPoint2016","AppOpenWordAll","AppClosePhotoApp","UserIdle30Seconds","UserIdle5Min","AppClosedOneDrive","AppClosedSettings","AppOpenOneDrive","AppOpenSettings","AppOpenStore","AppOpenWord2016","AppOpenXbox","CustomerOpensEdge","DeviceUnlock","EdgeExtensionInstalled","UserAddsFavorite","UserClosesATabAndHasAtLeast3TabsOpen","UserOpensPhotosApp","getTriggerIdsData","isBoostTriggerEnabled","i18nMapping","String","BoostPlacementTarget","_React$Component","selectedOptions","getData","onChangeTrigger","selectedTrigger","BoostAdunitIds","BoostPublisherIds","BoostAccountIds","BoostTriggerIds","IsAmplifyEnabled","EnableBoostTriggerSetting","triggerOptions","selectionOptions","adUnit","_this$state2","Dropdown","selectedKey","boostSetting","adUnitIds","placementTargetingDetails","contextualTargetDetails","ValidatedBoostPlacementTarget","BudgetInput","budgetTitle","showDropdown","onBudgetInputValidate","onBudgetChange","validationKey","RANGE_STEP","isCurrencyDisabled","onSelectCurrency","selectedCurrencyText","currencies","onRenderInlineHelp","onRenderCurrencyDropDown","inputClassName","showCurrencyOnly","currencyText","displayCurrencySelection","dropdownContainer","inline","DropdownToggle","DropdownMenu","itemValue","MenuItem","eventKey","currency","currencyLocalizationKey","htmlFor","budgetDetailsContainer","budgetInputContainer","Input","step","inputText","EstimatedMonthlyBudget","budgetMonthly","CompetitorSliderView","budgetSuggestion","CompetitorBudgetLowerBound","CompetitorBudgetUpperBound","inlineHelpStyle","rawWidth","MinimumBudget","MaximumBudget","DailyBudget","getCompRangeWidth","rawLeft","getCompRangePosition","sliderOverlay","competitorHelpIndicator","competitorHelpText","getTextInputContainerStyles","TextInputContainer","BusinessNameWithValidation","maxLength","onBusinessNameChanged","showLabel","activity","ActivityContext","getErrorMessages","textLength","getLength","BusinessName","onChanged","signal","RemainingCharsUnvalidatedTextField","defaultValue","maxLengthHint","getCampaignAdgroupMultiSelectorStyle","textDecorationLine","processEdmResult","CampaignId","processEdmResultAccount","AccountInactiveReasonsCount","legacyI18nMap","CampaignSelector_List_Header","AdGroupSelector_List_Header","EmptyList_Content","CampaignSelector_SelectCampaign","CampaignSelector_SelectCampaigns","AdGroupSelector_SelectAdGroup","AdGroupSelector_SelectAdGroups","CampaignSelector_Result_List_Header","AdGroupSelector_Result_List_Header","Result_Action_Bar","Campaigns","Done","Search","CampaignSelector_Result_Action_Bar","AccountSelector_List_Header","AccountSelector_SelectAccounts","AccountSelector_Result_List_Header","CAMPAIGN_PAGESIZE","UnstyledCampaignAdgroupSelectorEdm","onSelectDone","onApply","fetchCampaign","_ref$pageNumber","_ref$pageSize","currentEntity","getEntityFromScope","campaignFilterCustomizer","campaign","containerClassName","selfRef","fetchAdgroup","_ref2$query","_ref2$pageNumber","_ref2$pageSize","_ref2$scopeParentItem","scopeParentItem","adGroupFilterCustomizer","AdGroups","adgroup","fetchAccount","_ref3$pageNumber","_ref3$pageSize","accountFilterCustomizer","onSelectCampaign","onSelectAdGroup","_this$props$scope$val","adGroupId","campaignAdgroupMultiSelector","isArray","extend","isCampaignMode","CampaignSelector","identity","isMultiMode","selectedItemsForMultiMode","onSelectCancel","withDropdownMenu","stringKeys","listHeader","selectEntities","emptyListContent","resultHeader","actionBar","CampaignAdgroupSelector","selectedCampaign","selectedAdgroupsForMultiMode","CampaignAdgroupSelectorEdm","_ref4$palette","ThemeFluent","ComponentSettings","entitySelectorStyle","CampaignAdgroupSelectorEdmView","_Backbone$View","ReactDOM","_superPropGet","Backbone","sharedStylesFromSelDesign","disclaimerPanelStyles","alertStyle","resize","settingsCommonStyles","internalLinkStyle","disclaimerSettingsStyles","campaignSettingsStyles","getInputBorderStyle","adgroupsKeywordsStyles","paddingBotton","black","neutralSecondaryAlt","outlineOffset","neutralPrimary","budgetBidsStyles","backgroundClip","adExtensionsStyles","clear","zoom","adsExtensionDoubleListStyle","adExtensionItemTemplateStyles","categoryContainerStyle","pointerEvents","tableLayout","dsaCampaignStyles","scrollbarStyle","pillControlStyle","overflowX","globalDsaCampaignStyles","convertToConcatStyle","adgroupCreationStyles","globalAdgroupCreationStyles","campaignCreationSearchShoppingStyles","creationCommonStyle","_ref2$isCreationPage","isCreationPage","assign","appearance","audienceCampaignSettingsStyles","criterionSettingAudienceStyles","fontsize","themeDarkAlt","linkedInTargetSelectionSyles","_ref3$companySearchTa","companySearchTableWidth","_ref3$companySearchTa2","companySearchTableCompanyNameWidth","_ref3$companyIconHeig","companyIconHeightWidth","_ref3$targetGridWidth","targetGridWidth","linkedInSharedStyles","_ref4$iconFontFamily","_ref5$companySearchTa","_ref5$companySearchTa2","_ref5$companyIconHeig","searchBoxStyles","_ref6$companySearchTa","criterionSettingCompanyStyles","_ref7$palette","_ref7$iconFontFamily","_ref8$companySearchTa","_ref8$companySearchTa2","_ref8$companyIconHeig","_ref8$targetGridWidth","criterionSettingIndustryStyles","_ref9","_ref9$palette","_ref9$iconFontFamily","_ref10","_ref10$companySearchT","_ref10$companySearchT2","_ref10$companyIconHei","_ref10$targetGridWidt","jobFunctionSearchStyles","_ref11","_ref11$companySearchT","criterionSettingJobFunctionStyles","_ref12$palette","_ref12$iconFontFamily","_ref13$companySearchT","_ref13$companySearchT2","_ref13$companyIconHei","_ref13$targetGridWidt","selectorContainerStyles","_ref14","_ref15","_ref14$palette","_ref14$iconFontFamily","_ref15$companySearchT","_ref15$companySearchT2","_ref15$companyIconHei","selectorContainerBtnStyles","_ref16","_ref16$iconFontFamily","audienceTargetsSettingsStyles","_ref17","_ref17$palette","_ref17$iconFontFamily","_ref18","_ref18$companySearchT","_ref18$companySearchT2","_ref18$companyIconHei","userSelect","themeDarker","audienceBudgetBidsStyles","audienceAdsStyles","audienceAdgroupStyles","_ref2$creationContain","creationContainerMarginLeft","audienceCampaignBmcRedirectStyles","raiseBidPopupStyles","colors","completedBorder","completedIcon","inProgressIcon","incompleteBorder","incompleteIcon","stepContentBorder","subtitle","smartShoppingStyles","order","borderLeftColor","getAjaxStubLogger","ajaxStubScenario","ajaxStubActivity","ajax","trace","getRequestPayloadLogger","addScenario","scenario","CampaignFetch","requestLogger","RequestPayload","responseLogger","Response","getDefaultOptions","_serverContext$Curren","AdvertiserCustomerID","isOnebox","ServicesEndpoints","CmAPI","indexOf","startTimes","httpMethods","ajaxStubLogger","finalOptions","headers","lcid","Locale","PageTrackingId","Authorization","Token","CustomerAccountId","CustomerId","DeveloperToken","cachePolicy","interceptors","request","reqId","generateGuid","httpMethod","method","requestId","getTimestamp","path","beforeFetch","fetchResponse","responseUrl","startTime","duration","pathname","ok","statusText","bodyText","afterFetch","CampaignFetchProvider","finalUrl","getDefaultUrl","InstrumentationContext","Provider","FetchError","_Error","_wrapNativeSuper","withCacheInvalidation","call","cache","getCallProxy","OperationErrors","err","Message","Details","_useFetch","useFetch","loading","wrappedRequest","del","post","put","patch","delete","CONFIRM_MESSAGES_TYPE","CONFIRM_MESSAGES","CONVERSION_SCOPE","targetBiddingSchemeTypeList","getMessageType","initialData","patchData","BiddingSchemeType","initialGoalSelection","goalSelection","hasAnyGoalSelections","initialGoalScope","newGoalScope","newGoalScopeValue","removedGoals","initialGoal","goal","TrackingStatus","getNeedConfirming","confirmDialogContent","useConfirmDialogConfigWithLogger","stateMatch","_useWizardService","useWizardService","wizardConfig","wizardState","wizardId","dialogConfig","confirmType","disableConfirmPopup","wizardData","currentStepId","getCurrentStepId","customConfirmMessages","messageType","foundMessage","useConfirmDialogConfig","onLog","onOpenFn","onConfirmFn","onCancelFn","dropdownStyles","dropdownItemHeader","ConstructOptionKey","categoryKey","optionKey","CategorizedDropdownListUnStyle","CategorizedDropdownListContainer","categories","onSelectionChange","dropdownStyle","forwardedRef","defaultSelectedKey","category","innerIndex","unshift","itemType","DropdownMenuItemType","Header","Divider","mapCatogriesToDropdownOptions","_React$useState","_React$useState2","setSelectedItem","componentRef","constructedOptionKey","_DeConstructOptionKey","calloutProps","calloutMaxHeight","CategorizedDropdownListStyled","CategorizedDropdownList","makeStyles","playPause","shorthands","colorNeutralForeground1","spacingVerticalXXS","spacingHorizontalS","rowGap","spacingHorizontalXS","colorNeutralBackground5","playerTimeSeparator","PlayPauseButton","usePlayPause","_usePlayPause","playing","mergeClasses","Pause20Regular","Play20Regular","scrubber","borderTopWidth","borderRightWidth","borderLeftWidth","borderTopStyle","borderRightStyle","borderLeftStyle","borderRightColor","scrubberThumb","scrubberRail","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","backgroundImage","Scrubber","usePlayerTime","usePlayerControls","time","_usePlayerControls","seek","seekDelta","delta","Slider","max","min","thumb","rail","sliderDirectionVar","sliderCSSVars","sliderProgressVar","volumeControls","volumeButton","spacingHorizontalXXS","volumeSlider","volumeSliderThumb","volumeSliderRail","colorNeutralStrokeAccessible","volumeButtonFocused","VolumeControls","setVolume","volume","showVolumeSlider","setShowVolumeSlider","volumeSliderRef","volumeButtonRef","SpeakerMute16Regular","Speaker216Regular","shape","isMuted","onFocus","onBlur","sliderValue","newVolume","MAX_VOLUME","Math","durationTextContainer","durationText","colorBrandBackgroundInverted","TimeAndDuration","useFormattedTimeAndDuration","_useFormattedTimeAndD","_useFormattedTimeAndD2","Caption1","PREVIEW_TYPES","ErrorBoundary","_PureComponent","logTrace","PureComponent","ClipchampPlayer","videoUrl","loadClipchampPlayer","poster","project","setProject","playerOptions","setPlayerOptions","setClasses","clipchamp","setClipchamp","loadingClipchamp","setLoadingClipchamp","setPreviewType","loadPlayer","player","playerContainer","playerActions","playerScrubber","spinnerContainer","spinnerOverlay","fetchDataAsync","_callee3","_context3","Request","json","assetResolver","proj","playerOpts","createAssetResolver","getAssetById","asset","assets","byId","handlers","UrlAssetFetchHandler","createHubbleAssetFetchHandler","_yield$assetResolver","_yield$assetResolver2","file","getTranscoderInputFile","permanentUrl","logError","lastDotIndex","lastIndexOf","substring","getUrlFileExtension","toUpperCase","videoRef","load","Player","Overlay","Spinner","useCustomSize","preload","kind","previewClipchampVideoModalStyles","dialog","dialogContentContainer","spacingHorizontalXXXL","detailsContainer","spacingVerticalL","textGroup","errorMsg","colorStatusDangerForeground1","dialogContent","PreviewClipchampVideoModal","DismissIcon","Dismiss20Regular","open","DialogSurface","DialogBody","DialogTitle","DialogContent","ColorPickerClickWrapper","_len","Array","_key","hideColorPicker","ColorPickerWithClickOutside","onClickOutside","useDebouncedState","initialState","delayMs","setValue","setNewValue","setValueDebouncedInternal","debounce","setValueDebounced","valueToSet","usePrevProp","areEqual","is","setPrevState","hasChanged","useRefInit","initializer","isInitialized","isFunction","mobileDeviceQuery","mobileDevice","onConfirm","confirmText","isConfirmButtonDisabled","secondaryButtons","hideCancelButton","cancelText","onCancel","helpLinkText","onHelpLink","modalProps","mobileDeviceMediaQuery","confirmDialog","main","showCloseButton","autoFocus","useCreatePromise","onCreate","statics","lastCreatedPromise","setLastCreatedPromise","createPromise","promise","params","resolvePromise","rejectPromise","resolveLastCreatedPromise","rejectLastCreatedPromise","SecondaryButton","buttonKey","dismissDialog","originalOnClick","shouldDismissDialog","useCreateHookResultPromise","_useCreatePromise","_useCreatePromise2","_useCreatePromise2$","useDeepMemo","useUserLevelPreference","preferenceName","preferenceDefaultValue","preferenceService","PreferenceContext","getPreferenceValue","pref","findByNameAtUserLevel","Data","preferenceValue","setPreferenceValue","read","update","setAtUserLevel","useResponsiveStyles","_options$offset","offset","_options$component","component","displayMode","useResponsiveSize","Constants","ResponsiveSizeBreakpoints","classNameWithDisplayMode","baseStyle","responsiveStyle","defaultActivityLogger","POPUP_WINDOW_WIDTH","POPUP_WINDOW_HEIGHT","defaultMatcher","isAuthCallback","useOpenPopupAndWaitForAuth","_ref$windowObject","windowObject","_ref$activity","getPopupWindowFeatures","screenX","outerWidth","screenY","outerHeight","_ref2$matcher","matcher","popupWindowFeatures","popupWindow","timer","setInterval","closed","clearInterval","URLSearchParams","search","hashParamsStartIndex","hash","parseUrlSearchAndHashParams","location","_unused","close","backupLogger","useInstrumentLogger","_ref$scenarioName","scenarioName","_ref$activityName","activityName","createScenario","createActivity","getInstrumentLogger","usePageActiveTimeTracker","pageName","activeTimeRef","lastActiveRef","intervalRef","idleTimerRef","startTracking","Date","now","resetIdleTimer","stopTracking","clearTimeout","setTimeout","logExitTime","handleUserActivity","handleVisibilityChange","handleFocus","handleBlur","ConditionalTooltipHost","condition","maximizeWidth","restProps","TooltipHost","ConfirmDialog","isDisplayed","errorText","confirmString","cancelString","onClickConfirm","onClickCancel","isUiBlocked","warningMsg","customStyle","animation","backdrop","onHide","bsSize","closeButton","Footer","EMPTY_ASSET_HINTS","headline","NO_FINAL_URL_HINT","NOT_SUPPORT_DYNAMIC_TEXT","POST_ASSET_EVENT_NAME","POST_ASSET_LIBRARY_EVENT_NAME","AssetLibraryEventRecordType","ENTER_ASSET_LIBRARY","ENTER_GENERATE_IMAGES_PANEL","GENERATE_IMAGES","RETURN_IMAGES","ADD_IMAGES_TO_ASSET_LIBRARY","AssetEventRecordType","ENTER_FLOW","RETURNED","VIEWED","APPLIED","FEATURE_USAGE","MAPPING","AssetEventOperationName","NON_ITERATIVE","REFRESH_THEME","DIFFERENT_BACKGROUND","REWRITE","FIND_SIMILAR","DIFFERENT_TONE","FINAL_URL_RECOMMENDATION","PREFILL","AssetEventFeature","RSA","PMAX","PMAX_LITE","DISPLAY_PLUS","MMA","AssetType","TEXT","IMAGE","THEME","VIDEO","AssetPropertyName","HEADLINE","DESCRIPTION","LONG_HEADLINE","AssetEngagementEventName","VIEW","ENTER","GENERATE","APPLY","REMOVE_ASSETS","REMOVE_SINGLE_ASSET","EDIT_SINGLE_ASSET","AD_STRENGTH","CopilotSuggestionsTracker","trackingData","initialSuggestionsData","recommendedAssets","finalUrlSuggestions","textSuggestions","ShortHeadlines","longHeadlines","LongHeadlines","Descriptions","TextAssets","headlineRecommendations","longHeadlineRecommendations","descriptionRecommendations","textRecommendations","textAsset","imageSuggestions","ImageAssets","imageAsset","suggestionIds","viewedSuggestions","property","remainingSuggestions","suggestion","suggestions","prefilledCount","prefillAssetsAppliedLog","Properties","PrefilledSuggestionsCount","propertyName","AppliedPrefilledSuggestionsCount","EventName","EventValue","RecordType","OperationName","useCopilotRecommendationSurvey","currentFeature","_useUserLevelPreferen","_useUserLevelPreferen2","features","updateFeatures","sort","survey","surveyManager","CopilotAssetRecommendationSatisfactionTrigger","CopilotRecommendationsSurveyCustomParams","triggerSurveyOnSubmit","triggerSurveyOnCancel","getCopilotRecommendationIdsFromThemes","themeRecommendations","themes","themeRecommendationIds","imageRecommendationIds","descriptionRecommendationIds","headlineRecommendationIds","longHeadlineRecommendationIds","v","suggestionId","RecommendationId","getSuggestedIdsAndAssetType","_ref$themeSuggestionI","themeSuggestionIds","_ref$textSuggestionId","textSuggestionIds","_ref$imageSuggestionI","imageSuggestionIds","_ref$videoSuggestionI","videoSuggestionIds","SuggestionIds","AssetTypes","fill","getSuggestedIdsAndAssetTypeFromAssetsRecommendation","assetsRecommendationData","_assetsRecommendation","RecommendedAssets","Themes","VideoAssets","getFormattedImage","thumbnailSrc","thumbnailUrl","getFormattedThemeForApplying","previewUrl","Images","getOperationName","requestType","useEventLog","postAssetEventLog","logEnterFlow","logFinalUrlRecommendations","logBannerGenerated","CurrentFinalUrl","_getSuggestedIdsAndAs","logBannerRefresh","EngagementEventName","logBannerRefreshCompleted","logFetch","logFetchSucceeded","_getSuggestedIdsAndAs2","logFetchAssetsSucceeded","_getSuggestedIdsAndAs3","logApplyThemes","_getSuggestedIdsAndAs4","logSuggestionsViewed","_getSuggestedIdsAndAs5","logSuggestionsApplied","AssetGroupId","appliedVideoAssetIds","_getSuggestedIdsAndAs6","AppliedVideoAssetIds","logTextAssetMenuOpen","TextAssetType","logTextAssetDialogOpen","logRefineTextAsset","logRefineTextAssetSucceeded","_getSuggestedIdsAndAs7","logTextAssetApplied","logPrefillAssets","logPrefillAssetsApplied","logPrefilledAdStrength","adStrength","AdStrength","Suggestions","logRemoveAssets","PropertyName","logRemoveSingleAsset","SuggestionId","logEditSingleAsset","useAssetLibraryEventHandler","_useAssetLibraryEvent","logEnterAssetLibrary","logEnterGenerateImagesPanel","logGenerateImages","prompt","Prompt","logReturnImages","logAddImagesToAssetLibrary","useAssetLibraryEventLog","onEnterAssetLibrary","onEnterGenerateImagesPanel","onGenerateImages","onReturnImages","onAddImagesToAssetLibrary","useLogRecommendationsApiError","isShiproomError","isShiproomErrorMessage","m","console","log","logCopilotRecommendations","recommendationContext","assetGroup","_ref5$campaignId","isEditing","copilotTracking","_getCopilotAppliedRec","assetType","appliedImageAssetIds","Headlines","currentTextAssets","copilotTextRecommendations","Text","copilotTextRecommendationIds","copilotHeadlineRecommendations","appliedHeadlines","ImageList","currentImageAssets","copilotImageRecommendations","appliedFinalUrlRecommendations","intersection","getCopilotAppliedRecommendations","eventValue","AppliedImageAssetIds","AppliedHeadlines","getInitialSuggestionsData","MaxAssetCountPerThemeToApply","getUniqueAssetMapFromThemes","maxSize","maxSizePerTheme","Map","assetsAddedFromTheme","j","getUniqueRecommendationIdsFromThemes","Number","MAX_SAFE_INTEGER","from","getUniqueAssetsFromThemes","LocalizedTemplateName","LocalizedTemplateDescription","useCopilotDomainDataRepository","_useCopilotDomainData","t0","getAudioListWithFilter","Mock","AudioFilter","getVideoTemplateListWithFilter","templateFilter","TemplateFilter","useCopilotDomainDataService","getAudioList","getVideoTemplates","_yield$getVideoTempla","localizedTemplates","updatedTemplates","videoTemplatesLocalized","Templates","localizedTemplate","TemplateId","_x3","_x4","withCopilotDomainDataService","Wrapper","dataService","copilotDomainDataService","displayName","getDisplayName","hoistNonReactStatics","DefaultMaxAssetsToPrefill","MaxAssetsToPrefillConfig","Default","LinkedIn","usePrefill","applyTextAssets","imageExperienceAddNewImageCallback","logAndTrackPrefillImages","cta","newCTACallback","currentCTA","_ref$feature","sendCopilotBannerNotification","useBannerService","send","maxAssetsToPrefill","getMaxAssetsToPrefill","newThemes","CopilotDKIRecommendation","DKITheme","normalThemes","newHeadlines","trackInitialSuggestions","newLongHeadlines","newDescriptions","newImages","ImageassetsConstants","imageOptionKeys","Image","imageAssets","CallToAction","CallToActionLanguage","Logo","useCopilot","maxUploadNum","addNewShortHeadlinesCallback","addNewLongHeadlinesCallback","addNewDescriptionCallback","onReset","isSaving","isCanceling","assetGroupId","_ref$enableCopilotRec","enableCopilotRecommendations","assetScenario","customBannerStrings","toastOffset","isBannerNarrow","_ref$skipBusinessName","skipBusinessNameRecommendation","postAssetEventScenario","AssetScenario","EDIT_WORK_FLOW","CREATE_WORK_FLOW","_useContext","RecommendationContext","_useContext2","setRecommendationContext","isRegionRestricted","setIsRegionRestricted","isCustomerIdInExclusionList","finalUrlRecommendations","finalUrls","applyRecommendationsResult","setApplyRecommendationsResult","AdsCopilot","usePostAssetEvent","shouldLog","channel","AssetChannel","WEB_UI","withCredentials","shouldPrefill","setShouldPrefill","FinalUrlForRecommendation","hasAssets","eventLog","_useRecommendations","useRecommendations","isDisplayPlus","isMMA","isSignup","handleCopilotBannerFetch","handleCopilotBannerFetchSucceeded","handleCopilotBannerFetchFailed","handleReset","removeAllInitialSuggestions","handleFetchAssetsSucceeded","trackReturnedTextAssets","formattedThemesAndAssets","applyFn","newTextAssets","newTextAssetRecommendationIds","viewedTextSuggestionIds","getUntrackedViewedSuggestionIds","trackViewedSuggestionIds","onApplyCopilotRecommendation","selectedThemes","selectedThemesAndAssets","uniqAssetRecommendationsInThemes","availableNewImages","viewedImageSuggestionIds","logCopilotViewedImageSuggestions","trackSelectedImageAssets","copilotBanner","CopilotRecommendationBannerWithDialog","onDialogFetchAssetsSucceeded","onFetchFailed","onFetchSucceeded","customStrings","narrow","isNewLogo","trackReturnedFinalUrlAssets","prefill","_useCopilotRecommenda","isSelenium","getParameter","useSurveyTriggers","LoggingContext","createContext","LoggingProvider","loggingContext","setLoggingContext","updateLoggingContext","newContext","prevContext","withLoggingContext","HoC","useInitCopilotLoggers","_ref$isEditScenario","isEditScenario","useCopilotLoggers","_useContext3","_ref3$postAssetEventL","_useEventLog","viewedVideoSuggestionIds","adgroupId","resizeImageWidth","imageToContainerRatio","cropSectionToImageRatio","negativeMarginX","negativeMarginY","resizeContainerStyle","resizeImageStyle","onContextMenu","getDateSettingDetails","startDate","endDate","start","dateFormatter","skeleton","end","startFromDate","endToDate","getDayPickerStrings","months","num","getMonth","shortMonths","days","day","getDayOfWeek","shortDays","goToToday","prevMonthAriaLabel","nextMonthAriaLabel","prevYearAriaLabel","nextYearAriaLabel","isRequiredErrorMessage","invalidInputErrorMessage","DatePickerBasic","maxDate","minDate","dateValue","onDateChange","onFormatDate","DatePicker","calendarProps","calendarDayProps","calendarMonthProps","formatDate","onSelectDate","handleDateSelection","strings","__","core","datePickerStyle","dateSettingContainer","advancedSettingsSectionStyle","toggleButtonStyle","DateSetting","adGroupStatus","activityLogger","currentDate","localDate","toLocaleString","timeZone","toIANATimeZone","TimeZone","getFullYear","getDate","savedStartDate","setSavedStartDate","rawStartDate","StartDate","rawEndDate","nextYearDateWithTimeZone","EndDate","hasFixedStartDate","hasEndDate","setHasEndDate","date","onStartDateChange","onEndDateChange","onRenderField","fieldProps","onEndDateChoiceChange","newChoiceValue","DateSettingWithCustomValidation","validateOnLoad","dataSettings","isInvalidState","setIsInvalidState","updatedDateSettings","setUpdatedDateSettings","validateDate","_ref2$hasFixedStartDa","validationErrors","shouldDirty","validationError","ValidatedDateSettingInternal","ValidatedDateSetting","bid","messageBar","DefaultBid","currencyCode","getRangeWaring","TextField","PriceModelToRange","EnhancedCpc","ManualCpc","ManualCpv","ManualCpm","DefaultBidWithValidation","withControlErrorHandling","withControlErrors","DefaultBidWithWaring","_getBidRange","bidCeil","bidFloor","getBidRange","CurrencyCode","minimum","maximum","ValidatedDefaultBid","onBidChange","onCountValidate","_result$messages","fieldValue","CustomValidatedDefaultBid","isAutoBidding","bidStrategyType","autoBidding","bidStratetyTypeValue","maximizeConversions","maximizeClicks","maxConversionValue","targetRoas","targetCpa","targetImpressionShare","costPerSale","getCollapsiblePanelStyles","components","getNativeAdsStyles","collapsiblePanel","extraPlacementInfo","_extraPlacementInfo","EPT","MSANV2","MSEdgeCarousel","previewTitle","previewHeaderTitle","customClassName","editingPlacementType","hasLogo","MSANBanner","MSANRiver","MSNCarousel","MSNPartnerStripe","MSNRestoday","MSANRectangle","MSEdgeMobile","Outlook","Mobile","Web","Responsive","MSAN","WideImage","disclaimerMessage","MSEdgeSingleCarousel","MSNInArticle","MSNSmallHeadline","SquareImage","Boost","WindowsSpotlight","hideHeaderButtons","DiscoverCard","StartMenu","ActionCenter","Banner","Prong1Prong2Feed","Coachmark","responsiveMsanMMAConfig","placementSetName","placementTypes","msanMMAV2Config","msanMMAConfig","responsiveMsanMMABoostConfig","responsiveMsanMMABoostConfigV2","msanMMABoostConfig","msanMMABoostConfigV2","AdPreviewOverideStylesByKey","mma_191x100","imagePreviewWidth","edge_178x100","msan_191x100","msan_150x100","ERROR_ENTITY","getIndicatorsWidth","placements","getImageExperienceStyles","extensionEditorStyles","nativeAdStepShell","nativeAdImagePreviewCarousel","transformations","indicatorsWidth","isMMAV2Enabled","rightStyles","leftStyles","headerStackStyles","imageExperienceStyle","textAssetStyle","businessNameStyle","imageListLoadingContainer","imageListErrorContainer","adPreviewPlacementHeader","adPreviewPlacementContainer","getNativeAdPanels","isVideo","isDisplay","multiAdFormatAdPanels","advancedPanels","AdvancedURLOptionsForVideo","AdvancedURLOptionsForDisplay","isImpressionTrackingForDisplayAndVideoEnabled","panels","basicPanels","VideoAsAnAsset","DisplayPlusAmplify","IsMSANLogoAndCTAForMMAEnabled","IsMSANDisclaimerEnabled","IsDomesticSimplifiedChineseEnabled","ValidatedCallToAction","languageValue","ctaText","ctaAriaText","ValidatedLegacyCallToAction","isBoostScenario","isBoostCustomCTAEnabled","formatImpressionTrackingSetting","impressionTrackingUrls","_extractImpressionTra","extractImpressionTrackingSetting","_extractImpressionTra2","firstUrl","secondUrl","getImpressionTrackingComponent","validatedImpressionTrackingSetting","impressionTrackingSettingRef","setImpressionTrackingSettingRef","ImpressionTrackingUrls","i18nMerged","mergeI18n","impressionTrackingViewReact","impressionTrackingView","ImpressionTrackingView","initialImpressionTrackingUrls","isIASSectionVisible","isVerticalUrlInput","innerHTML","disclaimerInfo","ValidatedAnchorAd","withUnvalidatedControlErrors","_validationProps$data","BoostAnchorsData","BoostAnchors","nativeAdMobileFinalUrlsProp","propertyIs","ServerValidatedMobileFinalUrl","ValidatedMobileUrl","impressionTrackingSettingsProp","ValidatedImpressionTrackingSetting","ImpressionTrackingSetting","AdvancedSettings","mobileFinalUrls","trackingUrlTemplate","finalUrlSuffix","urlCustomParameters","verifiedTrackingSettings","biddingScheme","CallToActionText","CallToActionAriaText","setNewCTACallback","shouldShowDisclaimerPanel","_useCollapseState","useCollapseState","_useCollapseState2","allAdvancedSettingsSections","advancedSettingsExpandedSections","setAdvancedSettingsExpandedSections","isThirdPartyMeasurementEnabled","verifiedTrackingSettingsValidationProps","VerifiedTrackingSettings","initialValue","allAdvancedSettingsExpand","collapseExpander","setActiveKeys","advancedSettingsSectionExpanded","setAdvancedSettingsSectionExpanded","onAdvancedSettingsSectionToggle","mobileFinalUrlValidationProps","MobileFinalUrls","urlOptions","TrackingUrlTemplate","FinalUrlSuffix","UrlCustomParameters","urlOptionsDetails","getUrlOptionsDetails","mobileFinalUrlDetails","isEmptyUrl","serverValidatedMobileFinalUrl","validateOnRender","validateOnDomain","validatedUrlOptionsParameter","ValidatedUrlOptionsParameter","thirdPartyMeasurementWithValidation","ThirdPartyMeasurementComponentWithValidation","ThirdPartyMeasurementV2WithValidation","ThirdPartyMeasurementWithValidation","adType","language","anchorAd","ValidatedBootstrapPanel","onToggle","actuationProps","expand","BootstrapPanel","allPanelItems","checkItems","skipItemsTypeCheck","activeKeys","MobileFinalUrlImg","expandKey","ValidatedFixedPanel","CallToActionImg","noOverflowHidden","relativePosition","UrlOptionsImg","ImpressionsTracking","formatThirdPartyMeasurementSetting","ConnectedImage","Disclaimer","HeadlinesWithRecommendationPrefillInternal","currentData","withInlineRecommendations","isAudienceAd","PermissionsContext","textAssetCollectionConfig","getTextAssetCollectionConfigByFeature","featureName","headlineConfig","getTextAssetCollectionConfig","headlinesRecommendationText","rec","prevHeadlineRecommendation","setPrevHeadlineRecommendation","Headline0","TextAssetCollectionWithRecommendations","isOptional","showDeleteButton","DisplayPlusCopilotRecommendations","HeadlinesWithRecommendationPrefill","LongHeadlinesWithRecommendationPrefill","longHeadlineConfig","longHeadlinesRecommendationText","prevLongHeadlineRecommendation","setPrevLongHeadlineRecommendation","LongHeadline0","DescriptionsWithRecommendationPrefill","descriptionsConfig","descriptionsRecommendationText","prevDescriptionRecommendation","setPrevDescriptionRecommendation","Description0","TextAssetCollectionWithRecommendationPrefillInternal","fetchRecommendationAssets","cancelFetchRecommendationAssetsJob","currentHeadlines","currentLongHeadlines","currentDescriptions","textAssetConfig","TextAssetCollectionWithRecommendationPrefill","TextAssetCollectionWithCoPilotInternal","setAddNewShortHeadlinesCallback","setAddNewLongHeadlinesCallback","setAddNewDescriptionCallback","headlineAssetCollection","HeadlineAssetCollection","longHeadlineAssetCollection","LongHeadlineAssetCollection","descriptionAssetCollection","DescriptionAssetCollection","TextAssetCollectionWithCoPilot","nativeAdHotspotsProp","andComp","entityIs","ValidatedHotspot","HotspotPanel","onUpdateHotspots","newHostpots","missField","uri","placement","any","hotspotStrings","desc","validateHotSpot","enableHotSpotPlacement","hideTitle","showHotspotCount","getMultiAdVideoPreviewStyles","adPreviewTitle","previewContainer","adPreviewHeader","adPreviewRoot","video","previewTag","MultiAdVideoPreview","_props$data","videos","_props$selectedVideoI","selectedVideoIdx","selectedVideo","setSelectedVideo","source","videoTemplateUIEnabled","VideoTemplateUI","srcLang","default","TAB_IMAGE_ADS","TAB_VIDEO_ADS","videoTypesWithOrder","advancedSettingsStyles","mergeStyles","nativeAdBusinessNameProp","nativeAdFinalUrlsProp","ValidatedFinalUrlWithStoreURL","withFinalUrlRecommendationUpdate","ValidatedFinalUrlWithRecommendations","ServerValidatedFinalUrl","getPlacementCount","IsMMAV2Enabled","DisplayPlusNativeAdsInternal","ads","editingAdId","supportImageFitting","setAds","_ref$loadClipchampPla","PerformanceMarkerContext","useClipchamp","UAPLNativeAdIntegration","CopilotCTALogoGeneration","_DynamicPermissions$I","ImageFittingMVP","_DynamicPermissions$I2","ImageFittingExlcudeMAE","ImageFittingUnifiedImageROI","AdPreviewRefresh","stylingProps","getClasses","LegacyResponsiveAd","isImageFittingEnabled","nativeAdPanels","allAdSettingsSections","adSettingsExpandedSections","setAdSettingsExpandedSections","_useCollapseState3","_useCollapseState4","finalUrlSection","finalUrlExpandedSection","setFinalUrlExpandedSection","finalUrlForCopilotRecommendations","setFinalUrlForCopilotRecommendations","setSelectedVideoIdx","selectedValue","setSelectedValue","imageExperiencePortalContainerState","setImageExperiencePortalContainerState","previewImageId","cropImageObj","previewImagesSharedState","setPreviewImagesSharedState","setImageExperienceAddNewImageCallback","_useState21","_useState22","assetAIEnhancementEnabled","setAssetAIEnhancementEnabled","_useState23","_useState24","assetAIEnhancementSettingsCalled","setAssetAIEnhancementSettingsCalled","_useState25","_useState26","useBrandKit","setUseBrandKit","imagesContainerRef","logosContainerRef","portraitContainerRef","getODataConfig","shouldLogosBeEnabled","shouldPortraitBeEnabled","collectionsSummary","collection","displayText","displayTextSingular","textCardSummaryDetails","getTextCardSummaryDetails","hotspotSummaryDetails","allAssetsExpand","finalUrlValidationProps","textAssetsValidationProps","ctaValidationProps","onTabSelect","tab","dataPatch","Headline1","Headline2","Description1","_useState27","_useState28","setShouldShowDisclaimerPanel","disclaimerRepositoryRef","Repository","DisclaimerAdExtension","skipExtensionCache","disclaimerdata","_useCopilot","updateFinalUrlForCopilotRecommendations","urlWithoutScheme","onFinalUrlFocusOut","onFinalUrlKeyUp","finalUrlAdditionalProps","onKeyUp","updateFinalUrlCallback","newFinalUrls","getAssetEnhancementSettings","settings","AssetAIEnhancementOptout","serverValidatedFinalUrl","additionalProperties","customUrlProtocol","imageListPortalContainer","ImageListPortalContainerWithControlErrorHandling","containerState","isLogos","PerfMaxImageSuggestionCarousel","addImageCallback","isCopilotRecommendations","storeBackedBusinessName","ValidatedStoreBackedBusinessName","formErrorProps","advancedSettings","placementCustomizationPredicate","adPreviewConfig","placementConfig","adPlacementsGroupType","AdPlacementsGroupType","msanImageAd","msanBoostImageAd","msanV2ImageAd","adPreview","PerfMaxAdPreviewComponent","PerfMaxAdPreviewUAPL","PerfMaxAdPreview","PerfMaxAdPreviewElement","imageList","updateImageList","displayUrl","isMSANAd","enableAutoPlay","customPlacementHeaderClassName","customPlacementContainerClassName","TabList","Tab","validatedImageExperienceWrapper","mappedPreviewImageSharedState","ValidatedImageExperienceWrapper","imagesContaineRef","logosContaineRef","isLogoEnabled","isBoostPortraitEnabled","updatePortalContainerState","isCombinedMsanAndMmaAspectRatios","customMaxImageCount","isMSANBoostEnabled","UAPLPMaxIntegration","showCopilotOptionForImage","IsBackgroundSceneEnabled","customAssetLibraryEventHandler","onUploadImage","anActivity","imgId","onImageListUpdate","newImageList","curImageList","newImageIdList","img","curImageIdList","AudienceImageUpscale","textAssetCollectionWithCopilot","logosContainer","portraitImageContainer","videosContainer","videoAd","ValidatedVideoExperienceWithRecommendationFetch","multiVideoMode","allowedVideoSizes","disableRemoveAll","hideRatioLabel","videoExperienceCircleUploadType","disableUploadTextField","videoPickerContainerHeight","copilotEnabled","CopilotRepositoryProvider","locale","getLocale","recommendationType","enableLogoAndCTA","getFinalUrlCardSummaryDetails","FinalUrlImg","ImageAssetsImg","iconAltText","ImageListSummaryCardDetails","VideoAssetsImg","isVideos","LogoAssetsImg","isPortrait","TextAssetsImg","hotspotImg","BusinessNameImg","ValidatedLegacyCallToActionWithLanguage","isDisplayPlusMMA","DisplayPlusNativeAds","withActivityContext","withBannerService","modelToViewModelForBulkErrors","bulkUpsertEntityErrorMap","errorType","mappedErrorType","mapBulkUpsertErrors","formatIntoTextArrayString","texts","res","textValue","entitySchema","viewModelToModelForAd","adsViewModel","adGroup","imageOdata","_ref$isImageFittingEn","isDeletedEntities","adViewModel","ad","subType","fields","Videos","HotSpots","ActionText","Description","Uri","Glyph","Placement","AdGroup","getVerifiedTrackingSettingWrite","originalData","UiUnsupportedRatios","isBoostCampaign","flattenedIncludedImageAssetList","getFlattenedImageAssetList","updateAssetsIdsAsync","updates","imageToGenerateThumbnail","originalThumbnailAsset","overrideInfo","copyThumbnailLookToNewImage","bingSrc","portraitImage","setMTImageModel","imageArray","isIncluded","isBoostPortraitImageEnabled","isBoost200x100ImageEnabled","IsBoost200x100ImageEnabled","isBoostNewAspectRatioSupportEnabled","IsBoostNewAspectRatioSupportEnabled","mtModel","getProcessedDataAsync","processTextAttribute","jsonTextAttribute","object","parse","textAttribute","bulkModelToViewModelForAd","adsModel","originalAdsModel","savedAd","VerifiedTrackingData","thirdPartyMeasurementStringToViewModel","currentPageIndex","adResource","updateData","bulkUpsertAdSettingsEntityErrorMap","ResponsiveAd","getBulkUploadEntityType","deleteAd","deleteAds","saveAds","oldAdsModel","_ref2$activity","_ref2$imageOdata","_ref4$isImageFittingE","_ref5$isImageFittingE","adIds","adsToCreate","adsToUpdate","adsToDelete","promises","createAds","updateAds","updatedAds","createdAds","deletedAds","adsNeededToCreate","adsNeededToUpdate","splitUpdateAndCreateAds","systemErrors","warn","stack","saveAdsWithMetadata","getLoggerWithoutPageInfo","getLogVersion","videoRepository","createVideoRepository","folderRepository","createFolderRepository","createImageRepository","videoPromises","uploadVideoMetadata","videoMetadata","newVideoFromMTObject","uploadVideoIfNeeded","titleContainer","adFormatContainer","radioGroup","radioOption","labelContainer","AdFormat","Native","Display","Video","OptionConfigs","getIcon","ContentViewRegular","ImageMultipleRegular","VideoRegular","AdFormatOption","showHeader","RadioGroup","AudienceBudgetBidStrategyInternal","campaignSubType","isEnableMSANDisplayCampaignsEnabled","isEnableMSANVideoCampaignsEnabled","setBudgetView","hideBidStrategy","bidStrategyName","sharedBudgetRef","setSharedBudgetRef","sharedBudget","sharedBudgetView","SharedBudgetSwitchView","newFactory","Budget","factory","accountCurrencyCode","withRealTimeUpdates","budget","BudgetId","Amount","budgetView","sharedBudgetSwitch","subscribe","isCPSSelected","BiddingScheme","sharedBudgetIsNotAllowedWarning","ValidatedLegacyBidStrategy","hideBudgetMinRecommendation","isCreation","i18nNewDesign","validateWithBudget","budgetAmount","protoTypes","PropTypes","isRequired","BidStrategyId","BidStrategyName","AudienceBudgetBidStrategy","audienceModalStyles","modalWidth","audienceExpressionStyle","audienceCombinedListStyle","containerBudgetStyle","sharedBudgetGridWrapper","tableStyle","SectionShimmer","Shimmer","formatCompany","UnstyledCompanyPicker","companyAssociationRef","setCompanyAssociationRef","currentLevelTargetInfo","AudienceTargetInfo","resourceName","isForVNext","initAudienceAssociationView","companyAssociationView","companyView","CompanyNameTargetSetting","criterionType","showBidOnlyNote","defaultBidAdjustment","updatedItems","getSnapshot","companyNameTarget","CompanyNameCriterion","negativeCompanyNameTarget","companies","currentTargets","currentNegativeTargets","isCompanyTargetSame","every","isNegativeCompanyTargetSame","companyTarget","criterionData","criterionHelper","buildLinkedInCriterion","createAsync","formatJobFunction","UnstyledJobFunctionPicker","jobFunctionAssociationRef","setJobFunctionAssociationRef","jobFunctionAssociationView","jobFunctionView","JobFunctionTargetSetting","jobTarget","JobFunctionCriterion","negativeJobTarget","searchView","initializeSearchDataTask","allJobTargets","searchResultView","selectedJobTargets","isSame","selectedNegativeJobTargets","formatIndustry","UnstyledIndustryPicker","industryAssociationRef","setIndustryAssociationRef","industryAssociationView","industryView","IndustryTargetSetting","industryTargets","IndustryCriterion","negativeIndustryTargets","searchTreeInitializationPromise","treeView","innerChildren","innerChild","flatIndustryTargets","selectedIndustries","selectedNegativeIndustries","titleText","PredictiveTargetingControlHeader","onToggleEnabledChanged","EnableMSANDisplayCampaigns","EnableMSANVideoCampaigns","UseOptimizedTargeting","isEnabled","doesAdGroupHaveAudienceTargeted","doesAdGroupHaveCompanyNameTarget","doesAdGroupHaveJobFunctionTarget","doesAdGroupHaveIndustryTarget","doesAdGroupHaveAgeTarget","doesAdGroupHaveGenderTarget","genderTypes","doesAdGroupHaveDeviceTarget","deviceTypes","isVideoCampaign","CampaignSubTypes","BrandAwarenessVideoAds","Toggle","inlineLabel","PredictiveTargetingDescription","PredictiveTargetingHeader","DataTrending","isActive","DynamicSearchAdPreviewUAPLUnstyled","_ref$data","TextPart2","DisplayUrl","Path1","Path2","domain","setDescription","urlPath1","setUrlPath1","urlPath2","setUrlPath2","urlDomain","getDomain","_useSinglePlacementLa","useSinglePlacementLayouts","groupType","placementFilterPredicate","tmp","SinglePlacementLayout","evaluateAdCustomizers","combineDescriptions","evaluatedText","adData","adPreviewContainer","DynamicSearchAdPreviewUAPL","pathProps","orComp","ServerValidatedUrlPath","ValidatedUrlPath","AdTextInternal","initializeAdCustomizer","deps","jsDataCampaign","showAdCustomizers","IsRSAIffPopupEnabledFromDeps","useAdCustomizer","AdTextImg","weight","ValidatedTextFieldWithAdCustomizer","containerSelector","DynamicSearchAd","configProps","MessageBarTitle","LearnMoreLink","linkText","AdText","editor","preview","DynamicSearchAdEditor","onAdChanged","ValidationStringMap","cachedAd","setCachedAd","allSections","expandedSections","setExpandedSections","settingsExpand","triggerTestUurl","fn","originalView","isInline","uurlLevels","testUurl","apiInLog","validatedAd","URLOptionsSection","token","getTheme","IMAGE_DIM","maxWidthOfUrlField","paddleWidth","imageExtConfigAll","ImageExt","BingDesktopSingleImage","BingDesktopMultiImage","BingMobileMultiImage","MSEdgeMediumHeadline","MSNSingleCarousel","MSNMediumHeadline","MSNDoubleCarousel","imageExtConfigAllV2","MMAV2MSNRiver","MMAV2MSNSingleCarousel","imageExtConfigSingleImage","imageExtConfigSingleImageV2","imageExtConfigAllMultiImage","ExtensionImagesControlBase","onImageListUpdated","cropImage","replaceImage","onImageListChanged","onImagePreviewRequested","previewCarouselRef","setPreviewIndexByType","onUpdateFinalUrlPrefix","newPrefix","protocol","onUpdateFinalUrl","newUrl","newUrlWithProtocol","finalUrlChanged","setFullUrl","onImageCropCancelled","onImageReplaceCancelled","setAddNewImageCallback","setOpenAddImageCallback","openAddImageCallback","newState","setError","fetchSuggestions","minimumSize","newI18n","oldI18n","defaultPreviewFields","getPreviewTexts","eligibleLayout","eligibleLayouts","ImageExtensionsEnhancements","subscribeToUrlChanged","setImageControlSetText","setText","setImageControlsValidate","setImageControlSetEligibleLayout","setEligibleLayout","adCreatorInstrumentation","enableAdPreviewLibrary","editImageActivity","errorMessages","newText","newEligibleLayout","processedText","imageListToValidate","typesPresent","imageExperienceImage","typesMissing","imageTypesWithOrder","typeMissingStrings","stringKey","errMsg","_this3","enhancedImageExperienceProps","finalUrlProtocol","enhancedPreviewCarouselProps","onCropImage","imgObj","onReplaceImage","customClasses","viewAllPlacementsButton","reCropButton","ThemeProvider","UiBlocker","blocking","blockCarousel","loadingText","ImageSuggestionCarousel","carouselParent","inProgress","isError","messageInfo","onSelectImage","websiteSuggestionCarouselActivity","onSelectSeeAll","isAdPreviewRefreshEnabled","PreviewCarouselComponent","UnifiedPreviewCarousel","PreviewCarousel","getUnifiedAdPreviewConfig","ImageExperience","isImageAdExtensionMode","genericImage","isStockPhotoEnabled","staticImagePath","recommendation","readOnly","instrumentationScenarios","preferencesService","isFinalUrlImageRetrievalEnabled","isImageExtensionsEnhancementsEnabled","enableUnifiedAdPreview","totalImageListCount","willFetchFile","ExtensionImagesControl","iconButtonStyles","cancelIcon","CloseIconButton","headerTextStyles","fontStyle","onCloseButtonClick","buttonStyles","withCustomStyle","ComponentWithStyles","FluentDefaultButton","FluentPrimaryButton","redemptionStepStyles","stepStyles","RedemptionStep","stepNumber","couponDaysLeftStyles","DaysRemaining","diffDays","getDaysToExpiration","expirationDateString","expirationDate","today","diff","abs","ceil","redemptionStepsStyles","couponTermsStyles","CouponDescription","coupon","steps","daysToExpiration","displayDaysLeft","stepIndex","rightHandButtonsStackTokens","Frontdoor","onNotInterested","onActivate","onRemindLater","couponLightboxTitle","displayRemindLater","descriptionStyles","NotInterested","couponDetailsUrl","confirmationButtonStyles","RemindLater","Claimed","buildCouponCalloutStateKey","couponId","getDaysFromNow","setDate","FAC_STATUS_ACTIVE","CCUIConstants","RecommendationAdoptionStatus","Active","CALLOUT_STATES","FRONTDOOR","NOT_INTERESTED","REMIND_LATER","CLAIMED","modalStyles","overlayStyles","FacCalloutInternal","userPreferenceService","legacyScope","legacyInstrumentation","refreshUserPreferencesCache","_ref$shouldHideForDay","shouldHideForDaysAfterDismiss","isModalOpen","_useBoolean2$","showModal","setTrue","hideModal","setFalse","currentStep","setCurrentStep","logWithPrefix","couponSteps","RecommendationIcon","CouponIcon","ScopeContext","finalScope","_finalScope$values","URI","rawData","_useHideCalloutPrefer","_ref$scope","_ref$refreshUserPrefe","userPreferencesLoaded","setUserPreferencesLoaded","hideCalloutPreference","setHideCalloutPreference","_scope$values","createScenarioAndActivity","userPreferences","userPreference","upkey","resultAsJsonString","preferenceJson","decodeURIComponent","hideCouponCallout","SyntaxError","setCalloutState","stateData","couponCalloutStateKey","unhideCallout","displayCouponCalloutData","hide","hideCallout","hideCouponCalloutData","hideCalloutForEver","hideCalloutFor7Days","hideCalloutFor14Days","isPreferenceSetToHidden","isAfterDismissEndDate","isDisplayCalloutQuery","displayQueryCallout","isCalloutVisible","isCalloutHidden","useHideCalloutPreference","hideForever","onNotInterestedFrontdoorClick","onRemindMeLaterFrontdoorClick","onRemindMeLaterClick","onActivateClick","onClaimedConfirmClick","onDismissClick","modalContent","Callout","overlay","isBlocking","CalloutWithLock","withLock","force","FacCallout","processorSet","basic","couponCalloutSharedKeyMap","FAC_Coupon_Banner_Title","Coupon_TermsAndConditions","Button_Confirm","Button_Cancel","Coupon_GotIt","Coupon_TagMessageNew","Coupon_TagFlyoutMessage","Coupon_OfferExpirationDateMessage","Coupon_LightboxTitleNew","Coupon_LightboxStepNumberNew","Coupon_LightboxStep3Title","Coupon_LightboxStep3Description","Coupon_LightboxStep3DescriptionNew","Coupon_Lightbox_LimitedTimeOffer","Coupon_Lightbox_LimitedTimeOffer_ActBy","GenericFACAdoptionStartErrorMessage","FACDepletedErrorMessage","Button_NotInterested","Button_ActivateNow","Button_RemindMeLater","Not_Interested_Title","Not_Interested_Description","Coupon_Page","RemindLater_Title","RemindLater_Description_Expiration","RemindLater_Description_Expiration_OneDay","RemindLater_Description_ActivationMessage_1","RemindLater_Description_ActivationMessageLink","RemindLater_Description_ActivationMessage_2","Button_Confirmation","Claimed_Title","Claimed_ConfirmationButton","Claimed_DontShowAgain","CloseButtonAria","couponCalloutShoppingKeyMap","Coupon_LightboxTitleNew_Shopping_Campaign","Summary_Card_Coupon_Title_Shopping_Campaign","Summary_Card_Coupon_Description_Title_Shopping_Campaign","Summary_Card_Coupon_Description_Shopping_Campaign","Summary_Card_Coupon_Tag_Message_Shopping_Campaign","Coupon_LightboxStep1Description_Shopping_Campaign","Coupon_LightboxStep2Description_Shopping_Campaign","Coupon_LightboxStep3Description_Shopping_Campaign","couponCalloutConversionTrackingKeyMap","Summary_Card_Coupon_Title_Conversion_Tracking","Summary_Card_Coupon_Description_Title_Conversion_Tracking","Summary_Card_Coupon_Description_Conversion_Tracking","Summary_Card_Coupon_Tag_Message_Conversion_Tracking","Coupon_LightboxStep1Description","Coupon_LightboxStep2Description","merchantcenterLink","getFACShoppingCampaignSteps","ScheduledIcon","FACCalloutView","useBrandKitDataService","getBrandKitDataByAccId","accId","AccountId","getBrandKitDataById","brandkitIds","BrandKitIds","createBrandKitData","brandKitData","BrandKits","updateBrandKitData","deleteBrandKitData","brandKitIds","transformPaletteRequest","palettesMap","palettes","ColorType","Colors","transformBrandkitResponse","brandkit","logos","squareLogosCount","landscapeLogosCount","SquareLogos","ImageType","LandscapeLogos","transformLogos","Palettes","transformPalette","transformImages","brandkitName","fonts","Fonts","useBrandKitRepository","brandkitResp","brandkitLoading","brandkitError","getBrandKits","async","brandKit","createBrandKits","brandKits","brandkits","squareLogos","landscapeLogos","updateBrandKit","useBrandKitService","brandKitDataService","brandkitApiState","BackgroundPreference","FontTextAssetType","Fontface","CropType","flexShrink","WebkitLineClamp","WebkitBoxOrient","hyphens","colorNeutralForeground3BrandHover","Navigation","SideNavigation","reserveSelectedTabSpace","useColorPickerStyles","spacingVerticalS","colorPreview","borderRadiusLarge","colorInput","typographyStyles","body1","onChangeColor","labelId","colorState","setColorState","_name","colorValue","_e","test","ColorPalette","Color","Body1","callToActionOptions","useCallToActionStyles","input","customTextContainer","inlinePopup","labelAction","onChangeCta","withCustomText","ctaValidations","isCustomTextOptionSelected","customInputText","setCustomInputText","optionText","ctaSchema","minLength","HelpPopupInline","Combobox","onOptionSelect","Option","TextFormattingButton","TextEditStyle16Regular","useTextFormattingDialogueStyles","containerWrapper","spacingHorizontalNone","backButton","spacingVerticalNone","spacingHorizontalMNudge","fontSelectorHeader","spacingVerticalXS","fontSelect","fontWeightSelect","fontContainer","contentDivider","spacingVerticalXL","overrideFontWeights","TextFormattingDialogue","onToggleBack","onFormatText","isUsedForButton","textFormatOptions","hideColorFormatting","font","ArrowLeft16Regular","FontsFamilySelector","selectClassName","FontsWeightSelector","useDefaultContainerStyles","collapseContainer","collectionConfig","placeholderText","singleAssetValidationPropsField","validationPropsField","addButtonText","copilotButtonLabel","deleteButtonLabel","minCollectionSize","maxCollectionSize","helpPopupTopic","helpPopupAriaLabel","inlineRecommendationsTitle","inlineRecommendationsHelpTopicKey","inlineRecommendationsHelpTopicAriaLabel","inlineRecommendationsDisabledItemTooltip","duplicateErrorMessage","useTextAssetPlaceholderStyles","spacingHorizontalM","TextAssetPlaceholder","isMultipleOptions","onFocusTextAsset","onDeleteTextAsset","onResetTextAssets","onApplyRecommendation","onToggleTextFormatting","longHeadlineAssetCollectionConfig","getLongHeadlineAssetCollectionConfig","recommendations","replaceExistingAssets","renderInlineCopilot","showAddButton","withDeleteIconDisabled","replaceMode","hideAddAllSuggestionsButton","enableCustomizer","setAddTextAssetCallback","overrideInputNode","ShortHeadlineAssetCollection","addNewShortHeadlineCallback","shortHeadlineAssetCollectionConfig","getShortHeadlineAssetCollectionConfig","addNewHeadlinesCallback","descriptionAssetCollectionConfig","getDescriptionAssetCollectionConfig","assetName","useTextAssetCollectionStyles","textDivider","disableCopilot","shortHeadlineValidations","longHeadlineValidations","descriptionValidations","onChangeTextAssetFormattingSection","shortHeadlineAssetCollection","onChangeTexts","helpButtonStyles","CurrentLocale","updatedDescriptionSchema","AssetGroup","acc","updatedValue","updatedHeadlineSchema","updatedLongHeadlineSchema","updatedAssetGroup","Headline","LongHeadline","onChangeTextsDebounced","textAssets","IsOptional","updatedTextAssets","newShortHeadline","newLongHeadline","newDescription","getskeletonStyles","displayColorPicker","colorPalette","helpButton","ListSkeleton","AdsStudioDisplayColorPicker","isBrandKitColor","UploadImage","withInstrumentation","maxLimit","elementType","onSelectImages","minSizeConfig","panelSubtitle","panelTitle","disabledAssetSources","ScenarioContext","privateUrl","setPrivateUrl","urlPrefixValue","prefix","scenarioValue","emptyFinalUrl","setIsOpen","newOpen","showPromotionBanner","isStockImageEnabled","imageExperienceProps","evt","original","managedViewSelectionState","updateManagedViewSelectionState","assetLibraryConfig","dateFormat","onImageAddError","enableStockMultipleSelection","enableWebsiteMultipleSelection","imageType","isAADUser","creativeEditorProps","applyZoom","zoomValue","parseInt","round","sizeCategories","Horizontal","Vertical","Square","aspectRatioLogoMapping","imageAspectRatioConfig","minCropSize","mapBrandKitImagesToDisplayAd","brandKitImage","logoConfig","isBrandKitImage","assetId","imageSize","CropWidth","CropHeight","cropSetting","sourceHeight","sourceWidth","sourceX","CropX","sourceY","CropY","getImageAssetConfigs","templateConfigs","targetSizes","displayBackground","apectRatioSet","Set","add","filterBrandKitLogos","logoAspectRatio","getBrandKitFilterLogos","filterLogos","addBrandKitToRecommendedAssets","themesImages","themesLogos","getAdSizeCategory","getAdConfig","templateConfig","assetProperties","getTextFormattingOptions","displayAds","prop","textFormattingColorOptions","textFormattingFontOptions","textFormattingWeightOptions","selectedColor","assetProperty","selectedFont","selectedWeight","isMultiple","getNewAssetProperties","newAssetProperties","newProp","findIndex","getColorContrastRatio","foregrounds","hexToRgb","hexCopy","r","g","b","exec","ratios","foreground","rgb1","rgb2","getContrastRatio","ratio","sum","element","divider","ActionPaneComp","isAssetsLoading","imagesUrl","logosUrl","actionPanelDisplayData","onImageChange","onLogoChange","backgroundColors","onBackgroundColorChange","showRecommendationsBanner","editPanel","setEditPanel","setAssetType","internalEffectSettings","setEffectSettings","logoAssets","maxColorsLimit","onDeleteColor","colorid","dataset","handleAssetChange","keepCropSettings","onReplacePreview","onDismissEditPanel","onSelectRecommendedImage","naturalWidth","naturalHeight","assetData","logoUrl","imageAspectRatio","baseImage","AltText","CropSetting","onEditPreview","hideEditPreviewBtnImage","hideCropImage","isMultpleImages","isMultpleLogos","onSaveEditImage","effectSettings","effectSrc","cropSettings","displayLogo","previewImage","hideEditPreviewBtn","isMultiplePreview","recommendedImages","uiBlocking","seeAllPanelTitle","onEditPreviewImage","onReplacePreviewImage","recommendedLoadingText","recommendationTitle","seeAllLinkText","showViewAllInHeader","M","disableCrop","isLogo","hasRightRail","Shutterstock","displayImage","finalUrlContainer","finalUrlInput","FinalUrl","setFinalUrl","localFinalUrl","setLocalFinalUrl","inputErrors","setInputErrors","handleSetFinalUrl","notifyFinalURLchange","handleKeyUp","ActionTypes","propApplicable","sizeConfig","updateAdProp","newPayload","currentColor","elementName","newColors","maxLengthInChar","updateColors","currentColors","updatedColors","editable","suffix","reducer","updateTargetSizes","adSizes","filterSizes","updateAssetPropertyAndColor","updateAssetPropertiesAndColor","updateFinalUrl","updateRecommendedAssets","assetsResponse","Cta","hasUpdateTemplate","recommendedHeadlineText","recommendedLongHeadlineText","recommendedDescriptionText","recommendedCtaText","updateWithRecommendedAssets","updateShortHeadLine","updateLongHeadLine","updateDescription","updateCallToAction","updateImage","updateLogo","updateBackground","updateAssetLoading","updateRecommendedAssetsWithBrandKit","updateRecommendedAssetsWithBrandKitData","adImages","displayAd","flat","o","s","highestColor","colorRatio","textColors","textColorStrings","colorObject","aspectRatioLogo","backgroundIndex","updatedAssetProperties","brandKitFonts","Typeface","Weight","getAssetPropertiesFromBrandKitFonts","updateAdsWithBrandKit","updateAdImages","setData","DisplayAdsContext","getImageData","newImage","getColorArray","returnArray","colorArray","getSerializedObjectAsArray","templateData","displayAdsTemplateDetails","defaultAssets","templateId2Size","templateSizeDetails","sizeKey","templateId","DisplayAdsProvider","propTypes","RecommendationsBanner","handleOnFetchSucceeded","showCopilotDialog","setShowCopilotDialog","lastFetchedUrl","setLastFetchedUrl","handleCopilotDialogClose","handleRefresh","copyOverrides","BannerServiceProvider","CopilotRecommendationBanner","isToastEnabled","onRefresh","vertical","shouldFetchRecommendations","CopilotThemesRecommendationDialog","onClosed","onFetchAssetsSucceeded","textCollection","spacingVerticalSNudge","shadow4","spacingVerticalXXL","spacingHorizontalL","getTextAssets","configs","minLengthInChar","AdjustView","onCtaChange","onChangeTextAssets","onAssetPropertiesWithColorChange","onFinalUrlChange","onRecommendedAssetsChange","activeTextFormattingSection","setActiveTextFormattingSection","copilotUrl","actionPanelPreviewData","imageUrls","logoUrls","colorsMap","logoData","colorCode","textFormattingOptions","shortHeadlineFormattingOptions","longHeadlineFormattingOptions","descriptionFormattingOptions","callToActionFormattingOptions","getAllTextFormattingOptions","newFormatting","section","formatConfig","getTransformedAssetProperties","handleChangeSectionAssetFormatting","SizesView","filterButton","FilterBar","selectionCallback","selectedFilter","setSelectedFilter","ToggleButton","previewStyles","justifySelf","adPreviews","centered","editButton","lineHeightBase400","fontSizeBase400","fontWeightSemibold","editIcon","spacingHorizontalXXL","imageContainer","shadow2","transition","sizeText","zoomDropDown","zoomOptions","ZoomControl","onZoomSelect","PreviewImage","adSize","editEnabled","editIndividualAdCallback","AdPreViews","isSinglePreviewSelected","filterSelectionCallback","showPreviewControls","a","saveButton","DisplayTemplateSummaryBarControl","isSaveDisabled","saveInNewFolder","onSaveSuccess","setIsSaving","folderId","summaryBar","setSummaryBar","isSingleAd","getFolder","createFolder","folderName","memoizedImageUpload","uploadImageByUrl","memoizedGetImageById","getImageById","uploadImageAsset","uploadImageAssets","all","logoAsset","folder","uploadAssets","adImage","adConfig","addImageWithBaseIdToFolder","imageSrc","metaData","customizedContent","summaryBarCustomizeEle","createPortal","NavigationIds","colorNeutralBackground2Hover","Wand","bundleIcon","Glance","DisplayAdsEditorComponent","showNavigation","displayTemplatesDataService","hasUpdateBrandKitData","hasFetchBrandKitData","showSummaryBarControl","onAdChange","setLoading","setDataLoaded","setIsSinglePreviewSelected","setZoomValue","loadingImage","setLoadingImage","hasFirstLoadWithAssets","groupedTabs","fetchNewAds","editDisplayAdsAssetRecommendations","fetchNewDisplayAds","getAdConfigs","loadingAds","newAdImages","adsToFetch","hasCropSettingsUpdated","Ads","generatedDisplayAds","generatedAd","adUrl","imageAdsCropSettings","logoAdsCropSettings","imageCropSettings","logoCropSettings","fetchBrandKits","onLongHeadlineChange","onShortHeadlineChange","onDescriptionChange","updateTextAssets","selectedSize","isBrandKitLoading","DisplayAdsEditor","remainingProps","Scenario","Activity","drawer","DisplayAdsEditorDrawer","onApplyCreative","templateDetails","setTemplateDetails","setAdData","saving","setSaving","versionForLog","setClarityTag","parentContainer","fetchDisplayAdsTemplateDefinition","templates","latestTemplate","displayAdsTemplateDefinitions","templateDefinition","version","addUrlImageToFolder","getImage","displayAdConfig","addCreative","mtObj","Drawer","modalType","separator","DrawerHeader","DrawerHeaderTitle","DrawerBody","DrawerFooter","RecommendationsSectionIcon","displayRecommendedImage","imagePreviewContainer","backgroundSize","backgroundPositionX","backgroundPositionY","checkerImage","colorBackgroundOverlay","multipleBtn","colorNeutralForeground4","fontSizeBase200","colorNeutralBackground3","actionBtns","borderRadiusSmall","getFullyShownImagesCount","itemWidth","floor","getCarouselStyles","_components","_palette","disabledCarouselParent","objectFit","imageContainerLeftMargin","isCollapsible","imageParentContainer","imageParentLeftOffset","numberOfImages","imageClickableContainer","panelHeading","panelIcon","panelHelpButton","imageHintRight","imageHintLeft","paddleBtn","moreIcon","seeAll","colorNeutralForeground2BrandSelected","seeAllInHeader","colorNeutralForeground3","ImagePreview","onReplace","hideEditBtn","hideReplaceBtn","showActionBtn","setShowActionBtn","isRecommendationEmpty","hideReplacePreviewBtn","isSuggestionsPanelOpen","setIsSuggestionsPanelOpen","imagesToSuggest","setImagesToSuggest","onSelectSeeAllRecommendedImages","truncatedImages","showShimmer","stylingOverrides","initialImageContainerLeftMargin","isMultiSelect","showThemes","hasMore"],"sourceRoot":""}