{"version":3,"file":"static/js/application.async.landing~1d9a3a88.3db11425.chunk.js","mappings":"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AAOm5H,EAAW1zH,QAAQ,IAAK,IAC/B,kBAAgB,eAChBkvB,eAAep0B,EAAAA,EAAAA,KAACo5H,EAAAA,EAAK,CAAClmG,KAAM,IAAItzB,SAAC,MACjCiiB,SAAUA,EACVliB,WAAW+3D,EAAAA,EAAAA,GAAa,cAAervD,EAAQkwH,mBAKzD,EAUA7oG,EAAYjvB,aAAe,CACzBkK,MAAO,KACPhL,UAAW,GACX+4H,cAAe,WAAO,G,gEChIXW,EAAmB11H,cAEnB21H,EAAsB,CACjCD,EACA11H,UACAA,YACAA,UACAA,UACAA,aACAA,aACAA,WACAA,YACAA,UACAA,WACAA,UACAA,aACAA,UACAA,aACAA,SACAA,WACAA,YACAA,aACAA,WACAA,WACAA,aACAA,YACAA,aACAA,aACAA,aACAA,YACAA,WACAA,YACAA,YACAA,aACAA,WACAA,aACAA,aACAA,SACAA,YACAA,YACAA,WACAA,WACAA,WACAA,YACAA,aACAA,WACAA,UACAA,UACAA,WACAA,WACAA,WACAA,WACAA,aACAA,YACAA,aACAA,WACAA,WACAA,WACAA,YACAA,UACAA,UACAA,YACAA,YACAA,aACAA,aACAA,UACAA,YACAA,YACAA,cACAA,cACAA,WACAA,QACAA,aACAA,aC1DI41H,GAAwB3iE,EAAAA,EAAAA,GAAW,CACvCnoC,KAAM,CACJ9yB,QAAS,OACToB,cAAe,UAEjB4N,MAAO,CACLhP,QAAS,OACTuxB,eAAgB,gBAChBC,WAAY,UAEd+d,OAAQ,CACNxwC,MAAO,QAET8+H,MAAO,CACL9+H,MAAO,QAET++H,oBAAqB,CACnB,0BAA2B,CACzB/+H,MAAO,WAKA0jF,EAAe,SAAHtkF,GAYlB,IAXLgjF,EAAGhjF,EAAHgjF,IACA78E,EAAInG,EAAJmG,KACA0K,EAAK7Q,EAAL6Q,MACA+uH,EAAW5/H,EAAX4/H,YACAC,EAAW7/H,EAAX6/H,YACAvrF,EAAWt0C,EAAXs0C,YACAwrF,EAAW9/H,EAAX8/H,YACAC,EAAc//H,EAAd+/H,eACAC,EAAchgI,EAAdggI,eACAjmG,EAAS/5B,EAAT+5B,UACAC,EAASh6B,E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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-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 perfMarker: PropTypes.shape({\r\n willInit: PropTypes.func,\r\n done: PropTypes.func,\r\n }),\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 perfMarker: null,\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 if (this.props.perfMarker) {\r\n this.props.perfMarker.willInit();\r\n }\r\n\r\n this.props.repository.create(dataToBeSaved)\r\n .then(() => {\r\n if (this.props.perfMarker) {\r\n this.props.perfMarker.done();\r\n }\r\n\r\n this.props.onClose();\r\n this.props.onDisclaimerAddOrUpdated(dataToBeSaved);\r\n })\r\n .catch((errors) => {\r\n if (this.props.perfMarker) {\r\n this.props.perfMarker.done();\r\n }\r\n\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 perfMarker: PropTypes.shape({\r\n willInit: PropTypes.func,\r\n done: PropTypes.func,\r\n }),\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 perfMarker: null,\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, { useState } from 'react';\r\nimport { ColorPicker, IColor } from '@fluentui/react';\r\nimport { DeleteRegular } from '@fluentui/react-icons';\r\nimport {\r\n Popover, tokens, Button, PopoverTrigger, PopoverSurface,\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 const [announce, setAnnounce] = useState();\r\n const onDeleteClick = (ev) => {\r\n onDelete && onDelete(ev);\r\n setAnnounce(i18n.getString(_TL_('{{a}} Color deleted'), { a: colorData.HexCode }));\r\n };\r\n return (\r\n
    \r\n \r\n {onDelete &&\r\n <>\r\n
    \r\n \r\n {announce}\r\n
    \r\n }\r\n data-colorid={colorData.Name}\r\n onClick={onDeleteClick}\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 onKeyPaletteDown,\r\n closeTooltip,\r\n updateColor,\r\n onVisibilityChange,\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 const onKeyDown = (e: React.KeyboardEvent) => {\r\n if (e.key === 'Escape') {\r\n closeTooltip();\r\n e.stopPropagation();\r\n }\r\n };\r\n const onOpenChange = (ev, data) => {\r\n onKeyPaletteDown && onKeyPaletteDown(ev);\r\n onVisibilityChange && onVisibilityChange(data.isVisible);\r\n };\r\n return (\r\n \r\n \r\n {React.isValidElement(children) ? children : null}\r\n \r\n\r\n \r\n \r\n \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 const handleKeyDown = useCallback((event) => {\r\n if (event.key === 'Enter' && isSelected) {\r\n colorData.HexCode && updateColor(colorData.Name, { hex: colorData.HexCode, str: colorData.HexCode } as IColor);\r\n setIsSelected(false);\r\n }\r\n }, [colorData.HexCode, colorData.Name, isSelected, setIsSelected, updateColor]);\r\n\r\n useEffect(() => {\r\n const colorPickerPopup = document.querySelector('.color_picker_tooltip');\r\n if (isSelected) {\r\n document.addEventListener('click', handleClickOutside);\r\n colorPickerPopup && colorPickerPopup.addEventListener('keydown', handleKeyDown);\r\n } else {\r\n document.removeEventListener('click', handleClickOutside);\r\n colorPickerPopup && colorPickerPopup.removeEventListener('keydown', handleKeyDown);\r\n }\r\n\r\n return () => {\r\n document.removeEventListener('click', handleClickOutside);\r\n colorPickerPopup && colorPickerPopup.removeEventListener('keydown', handleKeyDown);\r\n };\r\n }, [handleClickOutside, handleKeyDown, 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 onVisibilityChange,\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 closeTooltip = () => {\r\n setIsSelected(false);\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 const onKeyPaletteDown = (ev) => {\r\n if (ev.type === 'click') {\r\n onEdit();\r\n return;\r\n }\r\n if (ev.key === 'Escape') {\r\n closeTooltip();\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 tabIndex={-1}\r\n aria-hidden=\"true\"\r\n aria-label={i18n.getString(_TL_('Edit Button'))}\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 closeTooltip = () => {\r\n setIsSelected(false);\r\n };\r\n const onAdd = () => {\r\n setIsSelected(true);\r\n };\r\n const onKeyPaletteDown = (ev) => {\r\n if (ev.type === 'click') {\r\n onAdd();\r\n return;\r\n }\r\n if (ev.key === 'Escape') {\r\n closeTooltip();\r\n }\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 tabIndex={-1}\r\n aria-hidden=\"true\"\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, useRef, useEffect } 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 popupOpenRef = useRef(false);\r\n\r\n const onDismiss = useCallback((e) => {\r\n if (e && (e.type === 'mousedown' || (e.type === 'keydown' && e.keyCode === KeyCodes.escape && popupOpenRef.current))) {\r\n return;\r\n }\r\n onClose();\r\n }, [onClose]);\r\n\r\n useEffect(() => {\r\n if (!window.PopupController) {\r\n return undefined;\r\n }\r\n\r\n const handleKeyDown = (e) => {\r\n if (e.key === 'Escape' && popupOpenRef.current) {\r\n e.stopPropagation();\r\n popupOpenRef.current = false;\r\n }\r\n };\r\n\r\n const { ShowElementAtPosition: originalShowFn, HideElement: originalHideFn } = window.PopupController;\r\n\r\n window.PopupController.ShowElementAtPosition = function ShowElementAtPosition(...args) {\r\n popupOpenRef.current = true;\r\n return originalShowFn.apply(this, args);\r\n };\r\n\r\n window.PopupController.HideElement = function HideElement(...args) {\r\n popupOpenRef.current = false;\r\n return originalHideFn.apply(this, args);\r\n };\r\n\r\n document.addEventListener('keydown', handleKeyDown, true);\r\n\r\n return () => {\r\n document.removeEventListener('keydown', handleKeyDown, true);\r\n window.PopupController.ShowElementAtPosition = originalShowFn;\r\n window.PopupController.HideElement = originalHideFn;\r\n };\r\n }, []);\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\n\r\nCroppedImageView.propTypes = {\r\n originalWidth: PropTypes.number.isRequired,\r\n resizeImageHeight: PropTypes.number.isRequired,\r\n aspectRatio: PropTypes.number.isRequired,\r\n SourceWidth: PropTypes.number,\r\n SourceX: PropTypes.number,\r\n SourceY: PropTypes.number,\r\n src: PropTypes.string.isRequired,\r\n borderRadius: PropTypes.number,\r\n};\r\n\r\nCroppedImageView.defaultProps = {\r\n SourceWidth: null,\r\n SourceX: null,\r\n SourceY: null,\r\n borderRadius: null,\r\n};\r\n","import _ from 'underscore';\r\n\r\nexport const getDateSettingDetails = (i18n, startDate, endDate) => {\r\n const start = startDate ? i18n.getString(_TL_('Starting from {{startDate}}'), { startDate: i18n.dateFormatter({ skeleton: 'yMd' })(startDate) }) : '';\r\n\r\n const end = endDate ? i18n.getString(_TL_('to {{endDate}}'), { endDate: i18n.dateFormatter({ skeleton: 'yMd' })(endDate) }) : '';\r\n\r\n return i18n.getString(_TL_('{{startFromDate}} {{endToDate}}'), { startFromDate: start, endToDate: end });\r\n};\r\n\r\nexport const getDayPickerStrings = i18n => ({\r\n months: _.range(1, 13).map(num => i18n.getMonth(num, { style: 'wide' })),\r\n shortMonths: _.range(1, 13).map(num => i18n.getMonth(num, { style: 'abbreviated' })),\r\n days: _.map(\r\n ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'],\r\n day => i18n.getDayOfWeek(day, { style: 'wide' })\r\n ),\r\n shortDays: _.map(\r\n ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'],\r\n day => i18n.getDayOfWeek(day, { style: 'narrow' })\r\n ),\r\n goToToday: i18n.getString(_TL_('Go to today')),\r\n prevMonthAriaLabel: i18n.getString(_TL_('Go to previous month')),\r\n nextMonthAriaLabel: i18n.getString(_TL_('Go to next month')),\r\n prevYearAriaLabel: i18n.getString(_TL_('Go to previous year')),\r\n nextYearAriaLabel: i18n.getString(_TL_('Go to next year')),\r\n closeButtonAriaLabel: i18n.getString(_TL_('Close date picker')),\r\n isRequiredErrorMessage: i18n.getString(_TL_('Start date is required.')),\r\n invalidInputErrorMessage: i18n.getString(_TL_('Invalid date format.')),\r\n});\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport {\r\n DatePicker,\r\n} from '@fluentui/react';\r\nimport PropTypes from 'prop-types';\r\nimport { getDayPickerStrings } from './utils';\r\n\r\nexport const DatePickerBasic = (props) => {\r\n const {\r\n label, maxDate, minDate, dateValue, placeholder, ariaLabel, onDateChange, disabled, onFormatDate, className, i18n,\r\n } = props;\r\n const handleDateSelection = (d) => {\r\n onDateChange(d);\r\n };\r\n\r\n return (\r\n
    \r\n handleDateSelection(d)}\r\n ariaLabel={ariaLabel}\r\n disabled={disabled}\r\n label={label}\r\n strings={getDayPickerStrings(i18n)}\r\n />\r\n
    \r\n );\r\n};\r\n\r\nDatePickerBasic.propTypes = {\r\n maxDate: PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.object,\r\n ]),\r\n minDate: PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.object,\r\n ]),\r\n dateValue: PropTypes.shape({}),\r\n placeholder: PropTypes.string,\r\n ariaLabel: PropTypes.string,\r\n onDateChange: PropTypes.func.isRequired,\r\n disabled: PropTypes.bool,\r\n onFormatDate: PropTypes.func.isRequired,\r\n label: PropTypes.string,\r\n className: PropTypes.string,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n};\r\n\r\nDatePickerBasic.defaultProps = {\r\n className: '',\r\n maxDate: '',\r\n minDate: '',\r\n dateValue: undefined,\r\n placeholder: 'Select a date...',\r\n ariaLabel: 'Select a date',\r\n disabled: false,\r\n label: '',\r\n};\r\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\r\nimport classnames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport { datePickerStyle, advancedSettingsSectionStyle, toggleButtonStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport { creationCommonStyle } from '@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { ChoiceGroup, Label } from '@fluentui/react';\r\nimport { toIANATimeZone } from '@bingads-webui-universal/time-zone-converter';\r\nimport { DatePickerBasic } from './date-picker-basic';\r\n\r\nconst getStyles = (__, core) =>\r\n ({\r\n '@global': {\r\n ...datePickerStyle(core),\r\n },\r\n dateSettingContainer: {\r\n ...creationCommonStyle(core),\r\n ...advancedSettingsSectionStyle(core),\r\n ...toggleButtonStyle(core),\r\n '& .date-settings-intro': {\r\n paddingLeft: 0,\r\n },\r\n '& .date-settings': {\r\n '& .ms-ChoiceField': {\r\n '& .ms-ChoiceField-input': {\r\n position: 'absolute',\r\n opacity: 0,\r\n top: 0,\r\n right: 0,\r\n width: '100%',\r\n height: '100%',\r\n margin: 0,\r\n },\r\n '& .ms-ChoiceField-field': {\r\n padding: 0,\r\n marginRight: 8,\r\n '& .ms-ChoiceFieldLabel': {\r\n verticalAlign: 'baseline',\r\n fontWeight: 400,\r\n },\r\n },\r\n },\r\n '& .date-content': {\r\n width: 140,\r\n },\r\n '& .end-by-container': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n width: 220,\r\n },\r\n },\r\n '& .alert-danger': {\r\n backgroundColor: 'unset',\r\n color: '#A80000',\r\n },\r\n },\r\n });\r\n\r\nexport const DateSetting = (props) => {\r\n const {\r\n label,\r\n data,\r\n i18n,\r\n adGroupStatus,\r\n onChange,\r\n activityLogger,\r\n } = props;\r\n const classes = useDefaultStyles(getStyles);\r\n const currentDate = useMemo(() => {\r\n const localDate = new Date(new Date().toLocaleString('en-US', { timeZone: toIANATimeZone(data.TimeZone) }));\r\n return new Date(localDate.getFullYear(), localDate.getMonth(), localDate.getDate(), 0, 0, 0, 0);\r\n }, [data.TimeZone]);\r\n const [savedStartDate, setSavedStartDate] = useState();\r\n const rawStartDate = useMemo(() => data.StartDate || currentDate, [currentDate, data.StartDate]);\r\n const rawEndDate = useMemo(() => {\r\n const localDate = new Date(new Date().toLocaleString('en-US', { timeZone: toIANATimeZone(data.TimeZone) }));\r\n const nextYearDateWithTimeZone = new Date(localDate.getFullYear() + 1, localDate.getMonth(), localDate.getDate(), 0, 0, 0, 0);\r\n return data.EndDate || nextYearDateWithTimeZone;\r\n }, [data.EndDate, data.TimeZone]);\r\n const hasFixedStartDate = useMemo(() => !((savedStartDate > currentDate) || adGroupStatus === 'Draft'), [adGroupStatus, currentDate, savedStartDate]);\r\n const [hasEndDate, setHasEndDate] = useState(() => (!!data.EndDate));\r\n const onFormatDate = useCallback(date => (!date ? '' : i18n.formatDate(date)), [i18n]);\r\n const onStartDateChange = useCallback((date) => {\r\n if (activityLogger) {\r\n activityLogger.signal('start date changed', 'ad schedule');\r\n }\r\n onChange({\r\n StartDate: date,\r\n EndDate: hasEndDate ? rawEndDate : null,\r\n hasFixedStartDate,\r\n });\r\n }, [activityLogger, hasEndDate, hasFixedStartDate, onChange, rawEndDate]);\r\n\r\n const onEndDateChange = useCallback((date) => {\r\n if (activityLogger) {\r\n activityLogger.signal('end date changed', 'ad schedule');\r\n }\r\n onChange({\r\n StartDate: rawStartDate,\r\n // eslint-disable-next-line no-nested-ternary\r\n EndDate: hasEndDate ? date : null,\r\n hasFixedStartDate,\r\n });\r\n }, [activityLogger, hasEndDate, hasFixedStartDate, onChange, rawStartDate]);\r\n\r\n const options = useMemo(() => [\r\n {\r\n key: 'false',\r\n text: i18n.getString(_TL_('No end date')),\r\n ariaLabel: i18n.getString(_TL_('No end date')),\r\n },\r\n {\r\n key: 'true',\r\n text: i18n.getString(_TL_('End by')),\r\n ariaLabel: i18n.getString(_TL_('End by')),\r\n onRenderField: (fieldProps, render) => (\r\n
    \r\n
    \r\n {render(fieldProps)}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n ),\r\n },\r\n ], [hasEndDate, onEndDateChange, onFormatDate, rawEndDate, i18n]);\r\n\r\n const onEndDateChoiceChange = useCallback((ev, option) => {\r\n const newChoiceValue = option.key;\r\n setHasEndDate(newChoiceValue === 'true');\r\n\r\n if (activityLogger) {\r\n activityLogger.signal(`has end date change: ${newChoiceValue}`, 'ad schedule');\r\n }\r\n onChange({\r\n StartDate: rawStartDate,\r\n EndDate: newChoiceValue === 'true' ? rawEndDate : null,\r\n hasFixedStartDate,\r\n });\r\n }, [activityLogger, hasFixedStartDate, onChange, rawEndDate, rawStartDate]);\r\n\r\n useEffect(() => {\r\n if (!!data.EndDate !== hasEndDate) {\r\n setHasEndDate(data.EndDate);\r\n }\r\n }, [data.EndDate, hasEndDate]);\r\n\r\n useEffect(() => {\r\n if (data.StartDate && !savedStartDate) {\r\n setSavedStartDate(data.StartDate);\r\n }\r\n }, [data.StartDate, savedStartDate]);\r\n\r\n return (\r\n \r\n
    \r\n {label || i18n.getString(_TL_('How long do you want your ads to run?'))}\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \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 constants,\r\n ImageExperienceImage,\r\n} from '@bingads-webui-campaign-react/image-experience-model';\r\nimport {\r\n ImageExperience,\r\n PreviewCarousel,\r\n UnifiedPreviewCarousel,\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 customTextOption = _TL_('Custom Text');\r\n\r\nexport const callToActionOptions = [\r\n customTextOption,\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, customTextOption } 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 availableOptions = withCustomText ? callToActionOptions : callToActionOptions.slice(1);\r\n const isCustomTextOptionSelected = withCustomText ? cta && (cta === callToActionOptions[0] || !callToActionOptions.includes(cta)) : false;\r\n\r\n const [selectedOption, setSelectedOption] = React.useState(isCustomTextOptionSelected ? callToActionOptions[0] : cta);\r\n const [customInputText, setCustomInputText] = React.useState(isCustomTextOptionSelected ? cta : '');\r\n\r\n const handleSelect = (_ev, data) => {\r\n if (!data || !data.optionText) return;\r\n setSelectedOption(data.optionText);\r\n if (withCustomText) {\r\n onChangeCta(data.optionText === callToActionOptions[0] ? customInputText || '' : data.optionText);\r\n } else {\r\n onChangeCta(data.optionText);\r\n }\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={i18n.getString(selectedOption)}\r\n selectedOptions={[selectedOption]}\r\n onOptionSelect={handleSelect}\r\n >\r\n {availableOptions.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 || selectedOption === customTextOption) && (\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, useRef } 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 lastFocusedElementRef = useRef<Element | null>(null);\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 lastFocusedElementRef.current?.focus();\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 if (lastFocusedElementRef && lastFocusedElementRef.current) {\r\n lastFocusedElementRef.current = document.activeElement;\r\n }\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 if (lastFocusedElementRef && lastFocusedElementRef.current) {\r\n lastFocusedElementRef.current = document.activeElement;\r\n }\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 onDismissEditPanel();\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={i18n.getString(_TL_('Learn more about logos'))}\r\n themes={themesLogos || []}\r\n seeAllPanelTitle={_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={i18n.getString(_TL_('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 aria-label={i18n.getString(_TL_('Replace image.'))}\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","perfMarker","willInit","create","done","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","announce","setAnnounce","ColorPicker","HexCode","alphaType","showPreview","clip","Button","ev","a","isColorSelected","onKeyPaletteDown","closeTooltip","updateColor","onVisibilityChange","Popover","withArrow","trapFocus","positioning","open","onOpenChange","isVisible","PopoverTrigger","PopoverSurface","onKeyDown","colorObj","useHandleCloseColorPicker","isSelected","setIsSelected","popupRef","includes","hex","handleKeyDown","colorPickerPopup","addEventListener","removeEventListener","useCheckDuplicateColor","allowDuplicates","paletteData","onUpdate","isDuplicate","setIsDuplicate","onUpdateColor","some","defaultState","BrandColors","showEditBtn","enableEditBtn","showTooltipOnSelect","defaultSelected","hideCaption","palletteBoxSize","paletteColorSize","setShowEditBtn","setColorData","onMouseEnter","onMouseLeave","tabIndex","size","Caption1Strong","ColorAddButton","totalColors","onAdd","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","HOC","popupOpenRef","escape","window","PopupController","_window$PopupControll","originalShowFn","ShowElementAtPosition","originalHideFn","HideElement","_len","Array","_key","_len2","_key2","UnstyledAudiencePicker","audienceType","onAudiencesChanged","clone","audienceList","setAudienceList","audienceAssociationRef","setAudienceAssociationRef","audienceAssociationView","associationView","AudienceAssociationView","scope","campaignType","associationType","AssociationTypes","Aim","isFromPerformanceMaxCampaign","isNewUI","refreshOnInitialize","canExpandAssociation","render","expandAssociation","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","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","headerTextProps","medium","FluentProvider","theme","webLightTheme","link","Link","underline","AudienceEditor","withSiteMap","_theme$palette","AudienceNoDataView","NoDataImg","UnstyledAudienceSelector","child","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","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","content","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","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","trace","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","duration","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","player","playerContainer","playerActions","playerScrubber","spinnerContainer","spinnerOverlay","ClipchampPlayer","videoUrl","loadClipchampPlayer","poster","project","setProject","playerOptions","setPlayerOptions","clipchamp","setClipchamp","loadingClipchamp","setLoadingClipchamp","setPreviewType","loadPlayer","fetchDataAsync","_callee3","request","_context3","Request","json","assetResolver","proj","playerOpts","createAssetResolver","getAssetById","asset","assets","byId","handlers","UrlAssetFetchHandler","createHubbleAssetFetchHandler","_yield$assetResolver","_yield$assetResolver2","file","getTranscoderInputFile","permanentUrl","logError","pathname","lastDotIndex","lastIndexOf","substring","getUrlFileExtension","toUpperCase","videoRef","load","Player","Overlay","Spinner","useCustomSize","preload","kind","previewClipchampVideoModalStyles","dialog","dialogContentContainer","spacingHorizontalXXXL","detailsContainer","spacingVerticalL","textGroup","errorMsg","colorStatusDangerForeground1","dialogContent","PreviewClipchampVideoModal","onShowChange","DismissIcon","Dismiss20Regular","DialogSurface","DialogBody","DialogTitle","DialogContent","ColorPickerClickWrapper","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","indexOf","parseUrlSearchAndHashParams","location","_unused","close","backupLogger","useInstrumentLogger","_ref$scenarioName","scenarioName","_ref$activityName","activityName","InstrumentationContext","scenario","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","finalUrl","_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","requestId","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","post","useFetch","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","Provider","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","CampaignFetchProvider","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","err","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","Token","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","put","del","cache","loading","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","customTextOption","callToActionOptions","useCallToActionStyles","input","customTextContainer","inlinePopup","labelAction","onChangeCta","withCustomText","ctaValidations","availableOptions","isCustomTextOptionSelected","selectedOption","setSelectedOption","_React$useState3","_React$useState4","customInputText","setCustomInputText","_ev","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","lastFocusedElementRef","editPanel","setEditPanel","setAssetType","internalEffectSettings","setEffectSettings","logoAssets","maxColorsLimit","onDeleteColor","colorid","dataset","handleAssetChange","keepCropSettings","onReplacePreview","onDismissEditPanel","onSelectRecommendedImage","naturalWidth","naturalHeight","assetData","logoUrl","imageAspectRatio","baseImage","AltText","CropSetting","onEditPreview","activeElement","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","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":""}