{"version":3,"file":"static/js/application.async.non-landing~ef272fa2.c78ec569.chunk.js","mappings":"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","sources":["../../../node_modules/@bingads-webui-campaign-react/portfolio-bid-strategy-summary/src/toolbar-config.js","../../../node_modules/@bingads-webui-campaign-react/portfolio-bid-strategy-summary/src/selection-helper.js","../../../node_modules/@bingads-webui-campaign-react/portfolio-bid-strategy-summary/src/grid/grid-view.js","../../../node_modules/@bingads-webui-campaign-react/portfolio-bid-strategy-summary/src/grid/columns/base-column.js","../../../node_modules/@bingads-webui-campaign-react/portfolio-bid-strategy-summary/src/grid/columns/bid-strategy-name-column.js","../../../node_modules/@bingads-webui-campaign-react/portfolio-bid-strategy-summary/src/grid/columns/bid-strategy-type-column.js","../../../node_modules/@bingads-webui-campaign-react/portfolio-bid-strategy-summary/src/grid/columns/bid-strategy-status-column.js","../../../node_modules/@bingads-webui-campaign-react/portfolio-bid-strategy-summary/src/grid/columns/associated-campaigns-column.js","../../../node_modules/@bingads-webui-campaign-react/portfolio-bid-strategy-summary/src/grid/columns/campaign-type-column.js","../../../node_modules/@bingads-webui-campaign-react/portfolio-bid-strategy-summary/src/grid/columns/bid-strategy-target-cpa-column.js","../../../node_modules/@bingads-webui-campaign-react/portfolio-bid-strategy-summary/src/grid/columns/bid-strategy-target-roas-column.js","../../../node_modules/@bingads-webui-campaign-react/portfolio-bid-strategy-summary/src/grid/columns/bid-strategy-target-impression-share-column.js","../../../node_modules/@bingads-webui-campaign-react/portfolio-bid-strategy-summary/src/grid/columns/owner-column.js","../../../node_modules/@bingads-webui-campaign-react/portfolio-bid-strategy-summary/src/grid/columns/index.js","../../../node_modules/@bingads-webui-campaign-react/portfolio-bid-strategy-summary/src/grid/grid-config.js","../../../node_modules/@bingads-webui-campaign-react/portfolio-bid-strategy-summary/src/styles.js","../../../node_modules/@bingads-webui-campaign-react/portfolio-bid-strategy-summary/src/filter-config.js","../../../node_modules/@bingads-webui-campaign-react/portfolio-bid-strategy-summary/src/inline-edit.js","../../../node_modules/@bingads-webui-campaign-react/portfolio-bid-strategy-summary/src/reload-grid-when-date-change.js","../../../node_modules/@bingads-webui-campaign-react/portfolio-bid-strategy-summary/src/description.js","../../../node_modules/@bingads-webui-campaign-react/portfolio-bid-strategy-summary/src/index.js","../../../node_modules/@bingads-webui-campaign-react/portfolio-bid-strategy-summary/src/fetch-preferences.js","../../../node_modules/@bingads-webui-campaign-react/portfolio-bid-strategy-summary/src/toolbar-action.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-details-view/src/additional-pitching.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-details-view/src/details-summary.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-details-view/src/user-inputs-mapping-config.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-details-view/src/label-decorator.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-details-view/src/form-action-with-estimates.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-details-view/src/uneditable-label-decorator.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-details-view/src/uneditable-simple-form.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-details-view/src/grid-panel.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-details-view/src/grid-action-with-estimates.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-details-view/src/individual-recommendation.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-details-view/src/details-recommendations.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-details-view/src/details-toolbar.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-details-view/src/details-view.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-grid-container/src/grid-container.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-grid-container/src/toolbar-config.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-tab/src/recommendation-tab-view.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-tab/src/instrumentation-schema.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-tab/src/with-navigation.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-tab/src/recommendation-tab-container.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-tab/src/teaching-bubble.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-tab/src/optimization-score-teacching-bubble.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-tab/src/recommendations-auto-apply-settings.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-tab/src/style/apply-settings-style.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-tab/src/recommendation-tab.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-bulk-aar/src/const.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-bulk-aar/src/bulk-aar-upload.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-bulk-aar/src/index.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-bulk-aar/style/bulk-aar-header-style.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-tab/src/recommendations-bulk-aar.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-tab/src/recommendations-details-header.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-tab/src/recommendations-details-view.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-history-header/src/index.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-tab/src/recommendations-history.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-tab/style/history-page-style.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/consts.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/get-auto-apply-bulk-upload-style.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/styles/history-grid.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/styles/history-header.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/get-history-style.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/styles/contextual-attribute.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/styles/summary-page.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/styles/detail-page.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/styles/estimate-tile.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/styles/feedback-popup.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/styles/teaching-bubble.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/get-style.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/with-navigation.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/legacy-deps-list.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/with-legacy-deps.js","../../../node_modules/@bingads-webui-campaign-react/recommendation-tab/index.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/recommendations-factory.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/config.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/styles/recommendation-page-styles-fast.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/recommendations-page.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/with-alert-handler.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/styles/common.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/styles/inline-view/budget.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/styles/inline-view/reallocate-budget.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/styles/inline-view/ads.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/styles/inline-view/index.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/styles/inline-view/repair-keywords.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/styles/inline-view/ad-extension.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/styles/inline-view/ad-extension-editor.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/styles/inline-view/setup-conv-tracking.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/styles/inline-view/fix-conversion-goal-setting.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/styles/inline-view/create-conversion-goal.js","../../../node_modules/@bingads-webui-campaign-react/recommendations-page/src/styles/custom-grid-style.js","../../../node_modules/@bingads-webui-campaign-react/schedule-edit-create/src/components/build-url.js","../../../node_modules/@bingads-webui-campaign-react/schedule-edit-create/src/components/parse-url.js","../../../node_modules/@bingads-webui-campaign-react/schedule-edit-create/src/components/password-editor.js","../../../node_modules/@bingads-webui-campaign-react/schedule-edit-create/src/components/timezone-mapper.js","../../../node_modules/@bingads-webui-campaign-react/schedule-edit-create/src/components/humanize-date.js","../../../node_modules/@bingads-webui-campaign-react/schedule-edit-create/src/components/update-now-progress.js","../../../node_modules/@bingads-webui-campaign-react/schedule-edit-create/src/components/url-editor.js","../../../node_modules/@bingads-webui-campaign-react/schedule-edit-create/src/components/fluent-url-editor.js","../../../node_modules/@bingads-webui-campaign-react/schedule-edit-create/src/schedules-tab-header-view.js","../../../node_modules/@bingads-webui-campaign-react/schedule-edit-create/src/schedules-tab-no-schedule-view.js","../../../node_modules/@bingads-webui-campaign-react/schedule-edit-create/src/schedules-tab-schedule-edit.js","../../../node_modules/@bingads-webui-campaign-react/schedule-edit-create/src/schedules-tab-schedule-view.js","../../../node_modules/@bingads-webui-campaign-react/schedule-edit-create/src/new-schedule-tab-schedule-edit.js","../../../node_modules/@bingads-webui-campaign-react/sdk-post-signup-context/src/image-experience-legacy-strings.js","../../../node_modules/@bingads-webui-campaign-react/sdk-post-signup-context/src/overreact-fetcher.js","../../../node_modules/@bingads-webui-campaign-react/sdk-post-signup-context/src/sdk-post-signup-context.js","../../../node_modules/@bingads-webui-campaign-react/sdk-settings-page-common/src/use-back-to-overview.js","../../../node_modules/@bingads-webui-campaign-react/sdk-settings-page-common/src/navigation-header.tsx","../../../node_modules/@bingads-webui-campaign-react/sdk-settings-page-common/src/action-bar.tsx","../../../node_modules/@bingads-webui-campaign-react/sdk-settings-page-common/src/sdk-settings-form.js","../../../node_modules/@bingads-webui-campaign-react/sdk-settings-page-common/src/use-settings-form-actions.js","../../../node_modules/@bingads-webui-campaign-react/sdk-settings-page-common/src/sdk-settings-page.js","../../../node_modules/@bingads-webui-campaign-react/sdk-wizard-components/src/sdk-wizard-template.js","../../../node_modules/@bingads-webui-campaign-react/sdk-wizard-components/src/sdk-wizard-step-progress.js","../../../node_modules/@bingads-webui-campaign-react/sdk-wizard-components/src/sdk-wizard-step-list.js","../../../node_modules/@bingads-webui-campaign-react/sdk-wizard-components/src/use-pmax-campaign-api.js","../../../node_modules/@bingads-webui-campaign-react/sdk-wizard-components/src/custom-layout-container.js","../../../node_modules/@bingads-webui-campaign-react/pmax-lite-wizard/src/wizard-components/custom-footer.js","../../../node_modules/@bingads-webui-campaign-react/pmax-lite-wizard/src/wizard-components/with-loading-state.js","../../../node_modules/@bingads-webui-campaign-react/pmax-lite-wizard/src/wizard-components/processing-blocker.js","../../../node_modules/@bingads-webui-campaign-react/pmax-lite-wizard/src/wizard-components/preview-flow-template.js","../../../node_modules/@bingads-webui-campaign-react/pmax-lite-wizard/src/wizard-components/step-list-config.js","../../../node_modules/@bingads-webui-campaign-react/pmax-lite-wizard/src/wizard-components/preview-flow-step-list.js","../../../node_modules/@bingads-webui-campaign-react/pmax-lite-wizard/src/wizard-components/layout-config.js","../../../node_modules/@bingads-webui-campaign-react/processing-animation/src/styles.js","../../../node_modules/@bingads-webui-campaign-react/processing-animation/src/processing-animation.js","../../../node_modules/@bingads-webui-campaign-react/pmax-lite-wizard/src/wizard-components/animation-blocker.js","../../../node_modules/@bingads-webui-campaign-react/sdk-wizard-components/src/animation-blocker/normal-blocker.js","../../../node_modules/@bingads-webui-campaign-react/sdk-wizard-components/src/animation-blocker/no-final-url-blocker.tsx","../../../node_modules/@bingads-webui-campaign-react/sdk-wizard-components/src/animation-blocker/index.js","../../../node_modules/@bingads-webui-campaign-react/sdk-wizard-components/src/use-preferences-from-url.js","../../../node_modules/@bingads-webui-campaign-react/sdk-wizard-components/src/country-strings.js","../../../node_modules/@bingads-webui-campaign-react/pmax-support-components/src/support-menu.js","../../../node_modules/@bingads-webui-campaign-react/sdk-wizard-components/src/sdk-support-menu.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/i18n-map/i18n-map.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/i18n-map/scope-types.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/i18n-map/seasonality-schema.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/i18n-map/inline-edit.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/i18n-map/column-chooser.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/i18n-map/data-exclusions-schema.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/creation-form/sample-schema.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/adjustment-type.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/creation-form/seasonality-text-input.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/creation-form/error.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/i18n-map/campaign-selector-i18n.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/creation-form/seasonality-campaign-selector.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/creation-form/seasonality-scope-choice.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/creation-form/seasonality-device-choice.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/creation-form/seasonality-adjustment-rate-input.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/creation-form/seasonality-date-time-picker.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/i18n-map/error-map.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/i18n-map/localize-api-errors.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/creation-form/seasonality-adjustment-creation-form.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/pairs-to-map.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/selection-helper.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/grid/grid-view.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/grid/columns/seasonality-adjustment-name-column.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/grid/columns/base-column.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/grid/columns/scope-column.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/grid/columns/device-type-column.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/grid/columns/conversion-rate-adjustment.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/grid/columns/datetime-converter.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/grid/columns/date-column.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/grid/columns/description-column.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/grid/columns/index.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/grid/grid-config.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/styles.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/inline-edit.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/conversion-rate-prompt.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/description.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/seasonality-adjustment-page.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/fetch-preferences.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/filter-config.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/toolbar-action.js","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/toolbar-config.js","../../../node_modules/@bingads-webui-campaign-react/settings-page/src/styles/settings-summary-style.js","../../../node_modules/@bingads-webui-campaign-react/settings-page/src/additional-plugins.js","../../../node_modules/@bingads-webui-campaign-react/settings-page/src/settings-summary-page.js","../../../node_modules/@bingads-webui-campaign-react/settings-page/src/filter-config.js","../../../node_modules/@bingads-webui-campaign-react/settings-page/src/toolbar-config.js","../../../node_modules/@bingads-webui-campaign-react/settings-page/src/summary-legacy-deps-list.js","../../../node_modules/@bingads-webui-campaign-react/settings-page/src/get-injected-dependencies.js","../../../node_modules/@bingads-webui-campaign-react/settings-page/src/settings-summary-view.js","../../../node_modules/@bingads-webui-campaign-react/settings-page/src/form-legacy-deps-list.js","../../../node_modules/@bingads-webui-campaign-react/settings-page/src/styles/smart-shopping-campaign-override.js","../../../node_modules/@bingads-webui-campaign-react/settings-page/src/styles/custom-params.js","../../../node_modules/@bingads-webui-campaign-react/settings-page/src/styles/index.js","../../../node_modules/@bingads-webui-campaign-react/settings-page/src/all-settings-view.js","../../../node_modules/@bingads-webui-campaign-react/settings-page/src/ssc-redirect.js","../../../node_modules/@bingads-webui-campaign-react/with-prop-filter/src/with-prop-filter.js","../../../node_modules/@bingads-webui-campaign-react/settings-page/src/styles/page-container.js","../../../node_modules/@bingads-webui-campaign-react/settings-page/src/styles/override.js","../../../node_modules/@bingads-webui-campaign-react/settings-page/src/settings-page.js","../../../node_modules/@bingads-webui-campaign-react/settings-page/src/components/utils.js","../../../node_modules/@bingads-webui-campaign-react/settings-page/src/components/check-campaign-wrapper.js","../../../node_modules/@bingads-webui-campaign-react/settings-page/src/components/level-selector-wrapper.js","../../../node_modules/@bingads-webui-campaign-react/settings-page/src/components/shell-ctor.js","../../../node_modules/@bingads-webui-campaign-react/settings-page/src/styles/common-settings-page-style.js","../../../node_modules/@bingads-webui-campaign-react/side-panel/src/side-panel-context.js","../../../node_modules/@bingads-webui-campaign-react/side-panel/src/side-panel.js","../../../node_modules/@bingads-webui-campaign-react/side-panel/src/side-panel-container.js","../../../node_modules/@bingads-webui-campaign-react/subaccount-hotelgroup-selector/src/util.js","../../../node_modules/@bingads-webui-campaign-react/subaccount-hotelgroup-selector/src/hotelgroup-nav-tree.js","../../../node_modules/@bingads-webui-campaign-react/subaccount-hotelgroup-selector/src/subaccount-hotelgroup-selector.js","../../../node_modules/@bingads-webui-campaign-react/subaccount-hotelgroup-selector/src/style/hotelgroup-selector-style.js","../../../node_modules/@bingads-webui-campaign-react/subaccount-hotelgroup-selector/src/style/dialog-style.js","../../../node_modules/@bingads-webui-campaign-react/subaccount-hotelgroup-selector/src/delete-dialog.js","../../../node_modules/@bingads-webui-campaign-react/subaccount-hotelgroup-selector/src/rename-dialog.js","../../../node_modules/@bingads-webui-campaign-react/subaccount-hotelgroup-selector/src/edit-menu.js","../../../node_modules/@bingads-webui-campaign-react/subaccount-hotelgroup-selector/src/subaccount-hotelgroup-edit-panel.js","../../../node_modules/@bingads-webui-campaign-react/subaccount-hotelgroup-selector/src/style/edit-panel-style.js","../../../node_modules/@bingads-webui-campaign-react/transfer-request-summary/src/accounts-popover.js","../../../node_modules/@bingads-webui-campaign-react/transfer-request-summary/src/account-manager-popover.js","../../../node_modules/@bingads-webui-campaign-react/transfer-request-summary/src/button-or-static.js","../../../node_modules/@bingads-webui-campaign-react/transfer-request-summary/src/icons.js","../../../node_modules/@bingads-webui-campaign-react/transfer-request-summary/src/accountlinks-summary.js","../../../node_modules/@bingads-webui-campaign-react/transfer-request-summary/src/accountbilling-summary.js","../../../node_modules/@bingads-webui-campaign-react/transfer-request-summary/src/account-payment-summary.js","../../../node_modules/@bingads-webui-campaign-react/transfer-request-summary/src/insertion-orders-summary.js","../../../node_modules/@bingads-webui-campaign-react/transfer-request-summary/src/uet-tags-summary.js","../../../node_modules/@bingads-webui-campaign-react/transfer-request-summary/src/index.js","../../../node_modules/@bingads-webui-campaign-react/uet-setup-wizard/src/uet-setup-wizard-context.js","../../../node_modules/@bingads-webui-campaign-react/uet-setup-wizard/src/step-paths.js","../../../node_modules/@bingads-webui-campaign-react/uet-setup-wizard/src/uet-setup-wizard-reducer.js","../../../node_modules/@bingads-webui-campaign-react/uet-setup-wizard/src/shared/instrumentation-schema.js","../../../node_modules/@bingads-webui-campaign-react/uet-setup-wizard/src/shared/util.js","../../../node_modules/@bingads-webui-campaign-react/uet-setup-wizard/src/shared/clarity-uncheck-warning.js","../../../node_modules/@bingads-webui-campaign-react/uet-setup-wizard/src/steps/create-uet-tag/create-uet-tag-view.js","../../../node_modules/@bingads-webui-campaign-react/uet-setup-wizard/src/styles/shared-content-style.js","../../../node_modules/@bingads-webui-campaign-react/uet-setup-wizard/src/uet-tag-repository.js","../../../node_modules/@bingads-webui-campaign-react/uet-setup-wizard/src/steps/create-uet-tag/create-uet-tag-step.js","../../../node_modules/@bingads-webui-campaign-react/uet-setup-wizard/src/steps/tag-setup/tag-setup-method-step.js","../../../node_modules/@bingads-webui-campaign-react/uet-setup-wizard/src/steps/tag-setup/tag-setup-install-manually-step.js","../../../node_modules/@bingads-webui-campaign-react/uet-setup-wizard/src/steps/tag-setup/tag-setup-send-to-developer-step.js","../../../node_modules/@bingads-webui-campaign-react/uet-setup-wizard/src/steps/tag-setup/tag-setup-third-party-platform-step.js","../../../node_modules/@bingads-webui-campaign-react/uet-setup-wizard/src/steps/tag-setup/tag-setup-third-party-instructions-step.js","../../../node_modules/@bingads-webui-campaign-react/uet-setup-wizard/src/steps/tag-setup/tag-setup-gtm-step.js","../../../node_modules/@bingads-webui-campaign-react/uet-setup-wizard/src/styles/uet-insights-styles.js","../../../node_modules/@bingads-webui-campaign-react/uet-setup-wizard/src/steps/finish-step/finish-step.js","../../../node_modules/@bingads-webui-campaign-react/uet-setup-wizard/src/uet-setup-wizard.js","../../../node_modules/@bingads-webui-campaign-react/uet-setup-wizard/src/styles/get-styles.js","../../../node_modules/@bingads-webui-campaign-react/use-currency-country-mapping/src/use-currency-country-mapping.js","../../../node_modules/@bingads-webui-campaign-react/portfolio-bid-strategy-summary/src/grid/columns/link-template.pug","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/grid/columns/conversion-rate-adjustment.pug","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/grid/columns/device-type.pug","../../../node_modules/@bingads-webui-campaign-react/seasonality-adjustment-page/src/grid/columns/link-template.pug","../../../node_modules/@bingads-webui-campaign-react/sdk-utils/src/sdk-events.ts","../../../node_modules/@bingads-webui-campaign-react/sdk-utils/src/use-has-conversion-setup.ts","../../../node_modules/@bingads-webui-campaign-react/searchable-selector-with-default-list/src/components/styles.ts","../../../node_modules/@bingads-webui-campaign-react/searchable-selector-with-default-list/src/components/combobox.tsx","../../../node_modules/@bingads-webui-campaign-react/searchable-selector-with-default-list/src/searchable-selector-with-default-list.tsx","../../../node_modules/@bingads-webui-campaign-react/searchable-selector-with-default-list/src/hooks/use-fetching-state.ts","../../../node_modules/@bingads-webui-campaign-react/single-language-input/src/styles.ts","../../../node_modules/@bingads-webui-campaign-react/single-language-input/src/single-language-input.tsx"],"sourcesContent":["import _ from 'underscore';\r\nimport React from 'react';\r\nimport { i18nMap, pairsToMap } from '@bingads-webui-campaign-react/portfolio-bid-strategy-shared';\r\nimport { PortfolioBidStrategyCreationPanel, PortfolioBidStrategyPanelDisplayMode } from '@bingads-webui-campaign-react/portfolio-bid-strategy-creation-panel';\r\n\r\nconst { portfolioBidStrategyTypeWithPilot } = i18nMap;\r\n\r\nexport function getToolbarConfig({\r\n i18n,\r\n permissions,\r\n showTopOfGridPanel,\r\n lazyInject,\r\n}) {\r\n function withSelectedId(actionName) {\r\n return () => {\r\n const {\r\n toolbarAction,\r\n backboneGridView,\r\n } = lazyInject();\r\n\r\n const selectedItems = backboneGridView.grid.gridView.selectedItems();\r\n const portfolioIds = _.pluck(selectedItems, 'Id');\r\n\r\n toolbarAction[actionName](portfolioIds[0]);\r\n };\r\n }\r\n\r\n const toolbarSelectedConfig = pairsToMap([\r\n ['button-edit', {\r\n id: 'button-edit',\r\n type: 'dropdown',\r\n classes: ['btn-primary'],\r\n iconLeftGlyphName: 'ba-Edit',\r\n text: i18n.getString(_TL_('Edit')),\r\n menu: {\r\n items: [\r\n {\r\n id: 'button-delete',\r\n type: 'button',\r\n classes: ['portfolio-toolbar-delete-button'],\r\n iconLeftGlyphName: 'ba-Delete',\r\n text: i18n.getString(_TL_('Delete')),\r\n onClick: withSelectedId('onDeletePortfolio'),\r\n },\r\n {\r\n type: 'dropdown-divider',\r\n },\r\n {\r\n id: 'button-update',\r\n type: 'button',\r\n classes: ['portfolio-toolbar-change-settings-button'],\r\n text: i18n.getString(_TL_('Change settings')),\r\n onClick: withSelectedId('onEditPortfolio'),\r\n },\r\n ],\r\n },\r\n }],\r\n ['expander', {\r\n type: 'expander',\r\n }],\r\n ['button-clear-selection', {\r\n id: 'button-clear-selection',\r\n type: 'button-clear-selection',\r\n }],\r\n ]);\r\n\r\n const bidStrategyType = portfolioBidStrategyTypeWithPilot(permissions);\r\n\r\n const toolbarUnselectedConfig = pairsToMap([\r\n ['button-create', {\r\n id: 'button-create',\r\n type: 'dropdown',\r\n classes: ['btn-primary'],\r\n iconLeftGlyphName: 'ba-Add',\r\n text: i18n.getString(_TL_('Create')),\r\n menu: {\r\n items: _.map(bidStrategyType, (text, id) => ({\r\n id,\r\n text: i18n.getString(text),\r\n onClick: () => {\r\n const creationView = (\r\n {\r\n showTopOfGridPanel(null);\r\n lazyInject().reloadGrid();\r\n }}\r\n onPartialSuccess={() => {\r\n lazyInject().reloadGrid();\r\n }}\r\n onCancel={() => {\r\n showTopOfGridPanel(null);\r\n }}\r\n />\r\n );\r\n showTopOfGridPanel(creationView);\r\n },\r\n })),\r\n },\r\n }],\r\n ['predicate-list', {\r\n id: 'predicate-list',\r\n type: 'custom',\r\n }],\r\n ['expander', {\r\n type: 'expander',\r\n }],\r\n ['search-box-filter', {\r\n id: 'search-box-filter',\r\n type: 'search-box',\r\n }],\r\n ['dropdown-segment', {\r\n id: 'dropdown-segment',\r\n type: 'dropdown',\r\n }],\r\n ['dropdown-column-chooser', {\r\n id: 'dropdown-column-chooser',\r\n type: 'dropdown',\r\n }],\r\n ['button-download', {\r\n id: 'button-download',\r\n type: 'nav-item',\r\n iconLeftGlyphName: 'ba-Download',\r\n }],\r\n ]);\r\n\r\n return {\r\n toolbarSelectedConfig,\r\n toolbarUnselectedConfig,\r\n };\r\n}\r\n","\r\nexport function clearSelection(gridView) {\r\n const selection = {\r\n ...gridView.get('selection'),\r\n selected: [],\r\n };\r\n\r\n gridView.trigger('willSelect', selection.selected);\r\n gridView.set({ selection }, () => {\r\n gridView.trigger('didSelect', selection.selected);\r\n });\r\n}\r\n\r\nexport function toggleRadioButton(e, gridView) {\r\n const radioButton = e.target;\r\n const { selected } = gridView.get('selection');\r\n const key = gridView.keyOfElement(radioButton);\r\n\r\n if (selected.includes(key)) {\r\n radioButton.checked = false;\r\n clearSelection(gridView);\r\n }\r\n}\r\n","import projectionGrid from 'projection-grid';\r\nimport { DeterministicWrapperView } from '@bingads-webui/deterministic-wrapper-view';\r\nimport { perfMarkerPlugin } from '@bingads-webui-campaign/pgrid-performance-log';\r\nimport { a11yPlugin } from '@bingads-webui/projection-grid-a11y';\r\nimport { paginationPlugin } from '@bingads-webui/projection-grid-pagination';\r\nimport { placeholderPlugin } from '@bingads-webui/projection-grid-placeholder';\r\nimport { uiBlockerPlugin } from '@bingads-webui/projection-grid-uiblocker';\r\nimport { columnChooserPlugin } from '@bingads-webui-campaign/projection-grid-column-chooser';\r\nimport { editablePlugin } from '@bingads-webui-campaign/projection-grid-editable';\r\nimport { projectionGridScopeNavigator } from '@bingads-webui-campaign/projection-grid-scope-navigator';\r\nimport { dateFilterPlugin } from '@bingads-webui-campaign/projection-grid-date-filter';\r\nimport { periodOverPeriodPlugin } from '@bingads-webui-campaign/projection-grid-period-over-period';\r\nimport { segmentPlugin } from '@bingads-webui-campaign/projection-grid-segment';\r\nimport { projectionGridScrollbarPlugin } from '@bingads-webui-campaign/projection-grid-scrollbar';\r\nimport { projectionGridFlexColumnResize } from '@bingads-webui-campaign/projection-grid-flex-column-resize';\r\nimport { inlineDownloadWithoutFilterstatePlugin } from '@bingads-webui-campaign/projection-grid-inline-download';\r\nimport { jsdataRawDataPlugin } from '@bingads-webui-campaign/pgrid-js-data-raw-data';\r\nimport { toggleRadioButton } from '../selection-helper';\r\n\r\nexport class PortfolioBidStrategyGridView extends DeterministicWrapperView {\r\n viewFactory({\r\n config,\r\n permissions,\r\n toolbarPlugin,\r\n aggregatedRowsPlugin,\r\n }) {\r\n const gridFactory = projectionGrid\r\n .factory({ vnext: true })\r\n // For accurate grid init latency, PerfMarkerPlugin should be the first plugin to load.\r\n .use(perfMarkerPlugin)\r\n .use(a11yPlugin)\r\n .use(paginationPlugin)\r\n .use(placeholderPlugin)\r\n .use(uiBlockerPlugin)\r\n .use(toolbarPlugin.plugin)\r\n .use(jsdataRawDataPlugin)\r\n .use(aggregatedRowsPlugin)\r\n .use(columnChooserPlugin)\r\n .use(projectionGridScopeNavigator)\r\n .use(dateFilterPlugin)\r\n .use(periodOverPeriodPlugin)\r\n .use(segmentPlugin)\r\n .use(projectionGridScrollbarPlugin)\r\n .use(projectionGridFlexColumnResize)\r\n .use(inlineDownloadWithoutFilterstatePlugin);\r\n\r\n if (!permissions.IsReadOnlyUser) {\r\n gridFactory.use(editablePlugin);\r\n }\r\n\r\n this.grid = gridFactory.create(config);\r\n\r\n return this.grid.gridView;\r\n }\r\n\r\n get className() {\r\n return 'portfolio-bid-strategy-grid';\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .td[data-column=\"selection\"] input[type=\"radio\"].select-row': e => toggleRadioButton(e, this.grid.gridView),\r\n };\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { ProjectionGridBaseColumn } from '@bingads-webui/projection-grid-base-column';\r\n\r\n// eslint-disable-next-line\r\nconst dummyStrings = [\r\n _TL_('-'),\r\n];\r\n\r\nexport class BaseColumn extends ProjectionGridBaseColumn {\r\n constructor(options) {\r\n super(options);\r\n this.i18n = options.i18n;\r\n }\r\n\r\n // Override the default 'pickProperty' to pick multi properties.\r\n pickProperty(rowData) {\r\n /*\r\n For aggregated rows, rowData looks like\r\n {\r\n \"$total\": {\r\n \"type\": \"search\",\r\n \"text\": \"Search ads total\",\r\n \"helpId\": \"pop_BA_CampaignGrids_SearchTotal\"\r\n }\r\n }\r\n\r\n For regular rows, rowData looks like\r\n {\r\n \"Id\": 7146825580557,\r\n \"Name\": \"dummy name\",\r\n \"Type\": \"MaxClicks\",\r\n \"Status\": \"Misconfigured\",\r\n \"TargetCpa\": null,\r\n \"TargetRoas\": null,\r\n \"TargetAdPosition\": null,\r\n \"TargetImpressionShare\": null,\r\n \"AssociationCount\": 51,\r\n \"CampaignType\": \"Default\",\r\n \"MaxCpc\": {\r\n \"Amount\": 50\r\n },\r\n }\r\n */\r\n const keys = _.union(\r\n // this.property.key may be a string or an array, need to convert it to an array\r\n _.flatten([this.property.key]),\r\n ['$total']\r\n );\r\n return _.pick(rowData, keys);\r\n }\r\n}\r\n","import { BaseColumn } from './base-column';\r\nimport linkTemplate from './link-template.pug';\r\n\r\nexport class BidStrategyNameColumn extends BaseColumn {\r\n constructor({\r\n i18n,\r\n inlineEditConfig: {\r\n onEditName,\r\n } = {},\r\n scope,\r\n permissions,\r\n }) {\r\n super({\r\n name: 'PortfolioGridBidStrategyName',\r\n title: _TL_('Bid strategy'),\r\n i18n,\r\n property: ['Id', 'Name'],\r\n sortable: 'Name',\r\n group: 'freezing',\r\n enableEdit: (item) => {\r\n const {\r\n IsReadOnlyUser,\r\n dynamic = {},\r\n } = permissions;\r\n const {\r\n CrossAccountPortfolio,\r\n } = dynamic;\r\n const { cid, aid } = scope.values;\r\n const { Owner } = item;\r\n const { Id } = Owner || {}; // TODO llzhang. what's the value of Owner for legacy portfolio bid strategy?\r\n const enable = !CrossAccountPortfolio || (aid === Id) || (cid === Id); // assumption: agency customer can't create owner=agency cid portfolio bid strategy\r\n return enable && !IsReadOnlyUser;\r\n },\r\n });\r\n\r\n this.onEditName = onEditName;\r\n this.scope = scope;\r\n }\r\n\r\n template({\r\n value: {\r\n $total,\r\n Id,\r\n Name,\r\n },\r\n }) {\r\n // For aggregated rows\r\n if ($total) {\r\n return $total.text;\r\n }\r\n\r\n // For regular rows\r\n const { uid, cid, aid } = this.scope.values;\r\n const pathname = '/campaign/vnext/portfoliobidstrategy/performance';\r\n const customparams = `portfolioId=${Id}`;\r\n const href = `${pathname}?uid=${uid}&cid=${cid}&aid=${aid}&${customparams}`;\r\n const text = Name;\r\n\r\n return linkTemplate({\r\n pathname, customparams, href, text,\r\n });\r\n }\r\n\r\n onPrompt(...args) {\r\n return this.onEditName(...args);\r\n }\r\n}\r\n","import { i18nMap } from '@bingads-webui-campaign-react/portfolio-bid-strategy-shared';\r\nimport { BaseColumn } from './base-column';\r\n\r\nconst { portfolioBidStrategyType } = i18nMap;\r\n\r\nexport class BidStrategyTypeColumn extends BaseColumn {\r\n constructor(option) {\r\n super({\r\n name: 'BidStrategyType',\r\n title: _TL_('Bid strategy type'),\r\n i18n: option.i18n,\r\n property: 'Type',\r\n sortable: 'Type',\r\n helpId: 'pop_BA_PortfolioBidStrat_StratType',\r\n });\r\n }\r\n\r\n template({\r\n value: {\r\n $total,\r\n Type,\r\n },\r\n }) {\r\n // For aggregated rows\r\n if ($total) {\r\n return ' ';\r\n }\r\n\r\n // For regular rows\r\n return this.i18n.getString(portfolioBidStrategyType[Type] || '-');\r\n }\r\n}\r\n","import { i18nMap } from '@bingads-webui-campaign-react/portfolio-bid-strategy-shared';\r\nimport { BaseColumn } from './base-column';\r\n\r\nconst { bidStrategyStatus } = i18nMap;\r\n\r\nexport class BidStrategyStatusColumn extends BaseColumn {\r\n constructor(option) {\r\n super({\r\n name: 'BidStrategyStatus',\r\n title: _TL_('Status'),\r\n i18n: option.i18n,\r\n property: 'Status',\r\n sortable: 'Status',\r\n helpId: 'pop_BA_PortfolioBidStrat_Status',\r\n });\r\n }\r\n\r\n template({\r\n value: {\r\n $total,\r\n Status,\r\n },\r\n }) {\r\n // For aggregated rows\r\n if ($total) {\r\n return ' ';\r\n }\r\n\r\n // For regular rows\r\n return this.i18n.getString(bidStrategyStatus[Status] || '-');\r\n }\r\n}\r\n","import { BaseColumn } from './base-column';\r\nimport linkTemplate from './link-template.pug';\r\n\r\nexport class AssociatedCampaignsColumn extends BaseColumn {\r\n constructor(option) {\r\n super({\r\n name: 'AssociatedCampaigns',\r\n title: _TL_('Campaigns'),\r\n i18n: option.i18n,\r\n property: ['Name', 'AssociationCount'],\r\n sortable: 'AssociationCount',\r\n helpId: 'pop_BA_PortfolioBidStrat_Campaigns',\r\n });\r\n this.scope = option.scope;\r\n }\r\n\r\n template({\r\n value: {\r\n $total,\r\n Name,\r\n AssociationCount,\r\n },\r\n }) {\r\n // For aggregated rows\r\n if ($total) {\r\n return ' ';\r\n }\r\n\r\n // For regular rows\r\n const { uid, cid, aid } = this.scope.values;\r\n const pathname = '/campaign/vnext/campaigns';\r\n const customparams = `filterAlias=filterBidStrategy&filterArguments=${encodeURIComponent(Name)}`;\r\n const href = `${pathname}?uid=${uid}&cid=${cid}&aid=${aid}&${customparams}`;\r\n const text = AssociationCount || '0';\r\n\r\n return linkTemplate({\r\n pathname, customparams, href, text,\r\n });\r\n }\r\n}\r\n","import { i18nMap } from '@bingads-webui-campaign-react/portfolio-bid-strategy-shared';\r\nimport { BaseColumn } from './base-column';\r\n\r\nconst { portfolioCampaignType, portfolioCampaignTypeFromODataValue } = i18nMap;\r\n\r\nexport class CampaignTypeColumn extends BaseColumn {\r\n constructor({\r\n i18n,\r\n }) {\r\n super({\r\n name: 'CampaignType',\r\n title: _TL_('Campaign type'),\r\n i18n,\r\n property: 'CampaignType',\r\n sortable: 'CampaignType',\r\n helpId: 'pop_BA_PortfolioBidStrategy_CampaignType',\r\n });\r\n }\r\n\r\n template({\r\n value: {\r\n $total,\r\n CampaignType,\r\n },\r\n }) {\r\n // For aggregated rows\r\n if ($total) {\r\n return ' ';\r\n }\r\n\r\n // For regular rows\r\n return this.i18n.getString(portfolioCampaignType[portfolioCampaignTypeFromODataValue[CampaignType]] || '-');\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport decimal from '@bingads-webui-component-legacy/humanize/decimal';\r\nimport { BaseColumn } from './base-column';\r\n\r\nexport class BidStrategyTargetCpaColumn extends BaseColumn {\r\n constructor({\r\n i18n,\r\n inlineEditConfig: {\r\n onEditTargetCpa,\r\n } = {},\r\n }) {\r\n super({\r\n name: 'BidStrategyTargetCpa',\r\n title: _TL_('Target CPA'),\r\n i18n,\r\n property: 'TargetCpa',\r\n sortable: 'TargetCpa',\r\n helpId: 'pop_BA_CampaignGrids_TargetCPA',\r\n enableEdit: item =>\r\n item.Type === 'TargetCpa',\r\n });\r\n this.onEditTargetCpa = onEditTargetCpa;\r\n }\r\n\r\n template({\r\n value: {\r\n $total,\r\n TargetCpa,\r\n },\r\n }) {\r\n // For aggregated rows\r\n if ($total) {\r\n return ' ';\r\n }\r\n\r\n // For regular rows\r\n return _.isNull(TargetCpa) ? '-' : decimal.fromFloatToString(TargetCpa);\r\n }\r\n\r\n onPrompt(...args) {\r\n return this.onEditTargetCpa(...args);\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport decimal from '@bingads-webui-component-legacy/humanize/decimal';\r\nimport { BaseColumn } from './base-column';\r\n\r\nexport class BidStrategyTargetRoasColumn extends BaseColumn {\r\n constructor({\r\n i18n,\r\n inlineEditConfig: {\r\n onEditTargetRoas,\r\n } = {},\r\n }) {\r\n super({\r\n name: 'BidStrategyTargetRoas',\r\n title: _TL_('Target ROAS'),\r\n i18n,\r\n format: 'percentage-value',\r\n property: 'TargetRoas',\r\n sortable: 'TargetRoas',\r\n helpId: 'pop_BA_CampaignGrids_TargetROAS',\r\n enableEdit: item =>\r\n item.Type === 'TargetRoas' || (item.Type === 'MaxConversionValue' && item.TargetRoas),\r\n });\r\n this.onEditTargetRoas = onEditTargetRoas;\r\n }\r\n\r\n template({\r\n value: {\r\n $total,\r\n TargetRoas,\r\n },\r\n }) {\r\n // For aggregated rows\r\n if ($total) {\r\n return ' ';\r\n }\r\n\r\n // For regular rows\r\n return _.isNull(TargetRoas) ? '-' : decimal.fromFloatToPercentString(TargetRoas * 100);\r\n }\r\n\r\n onPrompt(...args) {\r\n return this.onEditTargetRoas(...args);\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport decimal from '@bingads-webui-component-legacy/humanize/decimal';\r\nimport { BaseColumn } from './base-column';\r\n\r\nexport class BidStrategyTargetImpressionShareColumn extends BaseColumn {\r\n constructor({\r\n i18n,\r\n inlineEditConfig: {\r\n onEditTargetImpressionShare,\r\n } = {},\r\n }) {\r\n super({\r\n name: 'BidStrategyTargetImpressionShare',\r\n title: _TL_('Target Impr. share'),\r\n i18n,\r\n property: 'TargetImpressionShare',\r\n format: 'percentage-value',\r\n sortable: 'TargetImpressionShare',\r\n helpId: 'pop_BA_CampaignGrids_TargetImprShare',\r\n enableEdit: item =>\r\n item.Type === 'TargetImpressionShare',\r\n });\r\n\r\n this.onEditTargetImpressionShare = onEditTargetImpressionShare;\r\n }\r\n\r\n template({\r\n value: {\r\n $total,\r\n TargetImpressionShare,\r\n },\r\n }) {\r\n // For aggregated rows\r\n if ($total) {\r\n return ' ';\r\n }\r\n\r\n // For regular rows\r\n return _.isNull(TargetImpressionShare) ? '-' : decimal.fromFloatToPercentString(TargetImpressionShare);\r\n }\r\n\r\n onPrompt(...args) {\r\n return this.onEditTargetImpressionShare(...args);\r\n }\r\n}\r\n","import { BaseColumn } from './base-column';\r\n\r\nexport class OwnerColumn extends BaseColumn {\r\n constructor(option) {\r\n super({\r\n name: 'Owner',\r\n title: _TL_('Owner'),\r\n i18n: option.i18n,\r\n property: ['Owner'],\r\n sortable: 'Owner',\r\n });\r\n this.scope = option.scope;\r\n }\r\n\r\n template({\r\n value: {\r\n $total,\r\n Name,\r\n Number,\r\n },\r\n }) {\r\n // $total For aggregated rows\r\n return $total ? ' ' : `${Name} (${Number})`;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { ColumnsConfigBuilder } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport {\r\n ColumnClicks,\r\n ColumnImpressions,\r\n ColumnCPA,\r\n ColumnPartialConversionCPA,\r\n ColumnConversions,\r\n ColumnConversionsCredit,\r\n ColumnAdvertiserReportedRevenue,\r\n} from '@bingads-webui-campaign/campaignui-common-columns';\r\nimport { BidStrategyNameColumn } from './bid-strategy-name-column';\r\nimport { BidStrategyTypeColumn } from './bid-strategy-type-column';\r\nimport { BidStrategyStatusColumn } from './bid-strategy-status-column';\r\nimport { AssociatedCampaignsColumn } from './associated-campaigns-column';\r\nimport { CampaignTypeColumn } from './campaign-type-column';\r\nimport { BidStrategyTargetCpaColumn } from './bid-strategy-target-cpa-column';\r\nimport { BidStrategyTargetRoasColumn } from './bid-strategy-target-roas-column';\r\nimport { BidStrategyTargetImpressionShareColumn } from './bid-strategy-target-impression-share-column';\r\nimport { OwnerColumn } from './owner-column';\r\n\r\nfunction getBuilder({ permissions }) {\r\n const {\r\n IsViewThroughConversionEnabled,\r\n // IsAudienceSOVEnabled,\r\n IsCallMeteringAllowed,\r\n dynamic = {},\r\n } = permissions;\r\n const {\r\n CrossAccountPortfolio,\r\n PartialConversions: IsPartialConversionsEnabled,\r\n ColumnConversion: IsColumnConversionEnabled,\r\n } = dynamic;\r\n\r\n const usePartialConversions = IsPartialConversionsEnabled && IsColumnConversionEnabled;\r\n\r\n const builder = new ColumnsConfigBuilder()\r\n .addCategory('Attributes', category => category.addColumns([\r\n BidStrategyNameColumn,\r\n BidStrategyTypeColumn,\r\n BidStrategyStatusColumn,\r\n AssociatedCampaignsColumn,\r\n CampaignTypeColumn,\r\n BidStrategyTargetCpaColumn,\r\n BidStrategyTargetRoasColumn,\r\n BidStrategyTargetImpressionShareColumn,\r\n ].concat(CrossAccountPortfolio ? [OwnerColumn] : [])))\r\n .addPerformanceCategoryForCampaign()\r\n .addConversionsCategory({\r\n IsViewThroughConversionEnabled,\r\n withPartialConversions: IsPartialConversionsEnabled,\r\n IsColumnConversionEnabled,\r\n });\r\n // Comment out SOV columns until backend ready.\r\n // .addCompetitiveCategoryForCampaignOrAdGroups({\r\n // IsAudienceSOVEnabled,\r\n // });\r\n\r\n if (IsCallMeteringAllowed) {\r\n builder.addCallDetailsCategoryForCampaigns();\r\n }\r\n\r\n builder\r\n .setLockedColumns([\r\n BidStrategyNameColumn,\r\n BidStrategyTypeColumn,\r\n BidStrategyStatusColumn,\r\n AssociatedCampaignsColumn,\r\n ])\r\n .setSelectedColumns(_.compact([\r\n CampaignTypeColumn,\r\n ColumnClicks,\r\n ColumnImpressions,\r\n !usePartialConversions && ColumnConversions,\r\n usePartialConversions && ColumnConversionsCredit,\r\n !usePartialConversions && ColumnCPA,\r\n usePartialConversions && ColumnPartialConversionCPA,\r\n ColumnAdvertiserReportedRevenue,\r\n BidStrategyTargetCpaColumn,\r\n BidStrategyTargetRoasColumn,\r\n BidStrategyTargetImpressionShareColumn,\r\n ]));\r\n\r\n return builder;\r\n}\r\n\r\nexport function getColumnsAndColumnChooserConfig({\r\n i18n,\r\n columnChooserPreferences: { Columns, SelectedColumns },\r\n inlineEditConfig,\r\n scope,\r\n permissions,\r\n appState,\r\n}) {\r\n const builder = getBuilder({ permissions });\r\n\r\n\r\n const columnsConfig = builder.getColumnsConfig({\r\n i18n,\r\n inlineEditConfig,\r\n scope,\r\n permissions,\r\n appState,\r\n });\r\n\r\n const columnChooserConfig = builder.getColumnChooserConfig({\r\n i18n,\r\n Columns,\r\n SelectedColumns,\r\n permissions,\r\n });\r\n\r\n columnChooserConfig.customToolbarIcon = 'ba-TripleColumnSolid';\r\n\r\n return {\r\n columnsConfig,\r\n columnChooserConfig,\r\n };\r\n}\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport odataSchemas from '@bingads-webui-campaign/campaign-ui-schemas';\r\nimport { getColumnsAndColumnChooserConfig } from './columns';\r\n\r\nexport class PortfolioBidStrategyGridConfig {\r\n constructor({\r\n gridName, i18n, dataSource, query, columnChooserPreferences, inlineEditConfig, scope, edm, getDateFilter, permissions, setSegType, getSegType, preferenceService, DownloadView, appState, filterService, s$i18n, perfMarker, globalConfig,\r\n blockerTarget,\r\n }) {\r\n const { columnsConfig, columnChooserConfig } = getColumnsAndColumnChooserConfig({\r\n i18n, columnChooserPreferences, inlineEditConfig, scope, permissions, appState,\r\n });\r\n\r\n const p$daterange = () => {\r\n const dateFilter = getDateFilter();\r\n return Promise.resolve(dateFilter);\r\n };\r\n\r\n const ReportEmailRule = appState.get('$ReportEmailRule');\r\n appState.unset('$ReportEmailRule');\r\n\r\n const pluginsConfig = {\r\n perfMarker: {\r\n appConfig: globalConfig,\r\n marker: perfMarker,\r\n },\r\n a11y: { i18n },\r\n pagination: {\r\n availablePageSizes: [20, 50, 100, 200],\r\n pageNumberLabelText: i18n.getString(_TL_('Page')),\r\n pageSizeText: i18n.getString(_TL_('Show rows:')),\r\n enableRandomPage: false,\r\n },\r\n uiBlocker: {\r\n el: blockerTarget,\r\n text: i18n.getString(_TL_('Loading...')),\r\n },\r\n placeholder: {\r\n container: '.grid-noresult',\r\n text: i18n.getString(_TL_('You have no portfolio bid strategies. Click Create to get started.')),\r\n filteredEmptyText: i18n.getString(_TL_('There are no results available based on your filtered search. Please revise your search.')),\r\n },\r\n columnChooser: columnChooserConfig,\r\n editable: {\r\n i18n,\r\n },\r\n projectionGridScopeNavigator: scope,\r\n dateFilter: {\r\n isForVNext: true,\r\n isOdataActionSource: true,\r\n edm,\r\n p$daterange,\r\n addDateChangeListener: _.noop,\r\n },\r\n popColumns: {\r\n i18n,\r\n },\r\n segment: {\r\n isOdataActionSource: true,\r\n permissions,\r\n edm,\r\n i18n,\r\n setSegType,\r\n getSegType,\r\n cellTemplates: {\r\n PortfolioGridBidStrategyName: 'default',\r\n },\r\n },\r\n projectionGridFlexColumnResize: {\r\n gridName,\r\n softDependencies: ['popColumns'],\r\n preferenceService,\r\n },\r\n projectionGridScrollbar: {\r\n scrollElementSelector: '.grid-group-other',\r\n },\r\n inlineDownload: {\r\n isForVNext: true,\r\n p$daterange,\r\n DownloadView,\r\n isAvailable: true,\r\n gridId: gridName,\r\n schema: odataSchemas.PortfolioBidStrategy,\r\n s$i18n,\r\n i18n,\r\n ReportEmailRule,\r\n },\r\n };\r\n\r\n const tableName = i18n.getString(_TL_('Portfolio bid strategy'));\r\n\r\n return {\r\n name: gridName,\r\n tableClasses: ['table'],\r\n tableAttributes: { 'aria-label': tableName },\r\n layout: 'flex',\r\n i18n,\r\n columns: columnsConfig,\r\n dataSource,\r\n query,\r\n rows: {\r\n headRows: [\r\n 'column-header-rows',\r\n ],\r\n },\r\n selection: {\r\n single: true,\r\n },\r\n scrolling: {\r\n header: {\r\n type: 'sticky',\r\n offset: () => $('.sticky-container').height(),\r\n attributes: {\r\n 'aria-label': i18n.getString(_TL_('{{tableName}} table header'), { tableName }),\r\n role: 'rowgroup',\r\n },\r\n },\r\n virtualized: true,\r\n // backbone-virtualized-listview listens to viewport element's resize and scroll events to refresh header's position.\r\n // Search keyword `_hookUpStickyHeader` to see more details.\r\n viewport: $('.table-page-container'),\r\n },\r\n plugins: pluginsConfig,\r\n // Needed by inline download plugin\r\n // projection-grid-inline-download/src/without-dependencies.js line 21\r\n filterService,\r\n // Needed by pagination plugin\r\n // projection-grid-pagination/src/index.es line 115\r\n preferenceService,\r\n config: globalConfig,\r\n };\r\n }\r\n}\r\n","import { gridFlexStyle } from '@bingads-webui-campaign-react/grid-flex-style';\r\n\r\nexport function getStyles(_, { palette = {} }) {\r\n return {\r\n portfolioTablePageContainer: {\r\n '& .toolbar .contextual-dropdown .btn-primary': {\r\n height: '32px',\r\n padding: '0 20px',\r\n // Begin: fix bug https://msasg.visualstudio.com/Bing_Ads/_workitems/edit/4114579\r\n color: '#ffffff',\r\n background: '#0078d4',\r\n // End\r\n '& .iconba-Add': {\r\n color: '#fff',\r\n },\r\n },\r\n },\r\n portfolioGridViewContainer: {\r\n // In the first column (selection column), hide redundant radio buttons\r\n '& .tbody .tr .td[data-column=\"selection\"] > input': {\r\n '&:before': {\r\n content: 'none',\r\n },\r\n '&:after': {\r\n content: 'none',\r\n },\r\n },\r\n },\r\n '@global': {\r\n ...gridFlexStyle({ palette }),\r\n },\r\n };\r\n}\r\n","import _ from 'underscore';\r\nimport { getCommonFilterConfig, PortfolioBidStrategySchemaProcessor } from '@bingads-webui-campaign/common-grid-config';\r\nimport odataSchemas from '@bingads-webui-campaign/campaign-ui-schemas';\r\nimport { sessionStore } from '@bingads-webui/js-data-storage';\r\nimport { FilterService } from '@bingads-webui/filter-service';\r\nimport { updateGridQuery } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { i18nMap } from '@bingads-webui-campaign-react/portfolio-bid-strategy-shared';\r\nimport decimal from '@bingads-webui-component-legacy/humanize/decimal';\r\n\r\nfunction mapKeyValue(object, fn) {\r\n return _.chain(object)\r\n .pairs()\r\n .map(fn)\r\n .object()\r\n .value();\r\n}\r\n\r\nfunction cookSchema({ rawSchema, permissions, i18n }) {\r\n const Name = {\r\n ...rawSchema.properties.Name,\r\n filterable: true,\r\n };\r\n\r\n const bidStrategyType = i18nMap.portfolioBidStrategyTypeWithPilot(permissions);\r\n const Type = {\r\n ...rawSchema.properties.Type,\r\n filterable: true,\r\n chooseType: 'checkbox',\r\n enumType: 'BiddingStrategyType',\r\n enum: _.intersection(rawSchema.properties.Type.enum, _.keys(bidStrategyType)),\r\n localized: mapKeyValue(bidStrategyType, ([key, value]) => [\r\n `Enum.BiddingStrategyType'${key}'`,\r\n i18n.getString(value),\r\n ]),\r\n };\r\n\r\n const Status = {\r\n ...rawSchema.properties.Status,\r\n filterable: true,\r\n chooseType: 'checkbox',\r\n enumType: 'PortfolioBidStrategyStatus',\r\n enum: _.intersection(rawSchema.properties.Status.enum, _.keys(i18nMap.bidStrategyStatus)),\r\n localized: mapKeyValue(i18nMap.bidStrategyStatus, ([key, value]) => [\r\n `Enum.PortfolioBidStrategyStatus'${key}'`,\r\n i18n.getString(value),\r\n ]),\r\n };\r\n\r\n const AssociationCount = {\r\n ...rawSchema.properties.AssociationCount,\r\n filterable: true,\r\n };\r\n\r\n const CampaignType = {\r\n ...rawSchema.properties.CampaignType,\r\n filterable: true,\r\n chooseType: 'checkbox',\r\n enum: _.intersection(rawSchema.properties.CampaignType.enum, _.keys(i18nMap.portfolioCampaignTypeFromODataValue)),\r\n localized: mapKeyValue(i18nMap.portfolioCampaignTypeFromODataValue, ([key, value]) => [\r\n `Enum.CampaignType'${key}'`,\r\n i18n.getString(i18nMap.portfolioCampaignType[value]),\r\n ]),\r\n };\r\n\r\n const PhonePerformanceMetrics = {\r\n ...rawSchema.properties.PhonePerformanceMetrics,\r\n filterable: ['ManualCalls', 'PhoneImpressions', 'PTR', 'ClickAndPhoneSpend'],\r\n };\r\n\r\n const TargetCpa = {\r\n ...rawSchema.properties.TargetCpa,\r\n filterable: true,\r\n };\r\n\r\n const TargetRoas = {\r\n ...rawSchema.properties.TargetRoas,\r\n filterable: true,\r\n isPercentValue: true,\r\n maximum: 100000,\r\n };\r\n\r\n const TargetImpressionShare = {\r\n ...rawSchema.properties.TargetImpressionShare,\r\n filterable: true,\r\n isPercentValue: true,\r\n };\r\n\r\n const Owner = {\r\n ...rawSchema.properties.Owner,\r\n filterable: permissions.dynamic && permissions.dynamic.CrossAccountPortfolio,\r\n $ref: 'Edm/String', // TODO llzhang remove this when backend is ready\r\n type: 'string',\r\n name: 'String',\r\n 'bulk-upload-header': 'Bid Strategy Owner',\r\n };\r\n\r\n const cookedSchema = {\r\n ...rawSchema,\r\n properties: {\r\n ...rawSchema.properties,\r\n Name,\r\n Type,\r\n Status,\r\n AssociationCount,\r\n CampaignType,\r\n TargetCpa,\r\n TargetRoas,\r\n TargetImpressionShare,\r\n PhonePerformanceMetrics,\r\n ...((permissions.dynamic && permissions.dynamic.CrossAccountPortfolio) ? { Owner } : {}),\r\n },\r\n };\r\n\r\n return cookedSchema;\r\n}\r\n\r\nexport function getFilterConfig({\r\n i18n,\r\n permissions,\r\n globalConfig,\r\n preferenceService,\r\n preferenceStoreFactory,\r\n getGridView,\r\n}) {\r\n const entitySchema = cookSchema({\r\n rawSchema: odataSchemas.PortfolioBidStrategy,\r\n permissions,\r\n i18n,\r\n });\r\n\r\n const filterConfig = getCommonFilterConfig({\r\n i18n,\r\n featureName: 'PortfolioBidStrategyGrid',\r\n entitySchema,\r\n globalConfig,\r\n preferenceService,\r\n preferenceStoreFactory,\r\n sessionStore,\r\n enableCampaignWaterfall: false,\r\n allowCampaignTypeWaterfall: false,\r\n searchbox: {\r\n placeholder: i18n.getString(_TL_('Bid strategy name')),\r\n searchProperty: 'Name',\r\n searchOperator: '$contains',\r\n },\r\n // schemaProcessor is used to append PoP properties\r\n schemaProcessor: new PortfolioBidStrategySchemaProcessor({\r\n i18n,\r\n }),\r\n });\r\n\r\n const filterService = new FilterService(filterConfig);\r\n\r\n filterService.on('filter-state-changed', (combinedFilter /* subStatus */) => {\r\n const gridView = getGridView();\r\n if (gridView) {\r\n if (combinedFilter.filter.query.TargetRoas) {\r\n const filterTargetRoas = combinedFilter.filter.query.TargetRoas;\r\n Object.keys(filterTargetRoas).forEach((key) => {\r\n // eslint-disable-next-line no-param-reassign\r\n combinedFilter.filter.query.TargetRoas[key] = decimal.fromLocalToFloat(filterTargetRoas[key] / 100.0, 4);\r\n });\r\n }\r\n updateGridQuery(gridView, combinedFilter.filter, true);\r\n }\r\n });\r\n\r\n return {\r\n ...filterConfig,\r\n filterService,\r\n };\r\n}\r\n","import { pick } from 'underscore';\r\nimport { InlineEditableColumnPrompt } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { localizeApiError, targetCpaInlineEditorView, targetImpressionShareInlineEditorView, targetAdPositionInlineEditorView, targetRoasInlineEditorView } from '@bingads-webui-campaign-react/portfolio-bid-strategy-shared';\r\nimport odataSchemas from '@bingads-webui-campaign/campaign-ui-schemas';\r\nimport PageContext from '@bingads-webui-static-legacy/page-context';\r\nimport * as PopupEditor from '@bingads-webui/popup-editor';\r\nimport { cloneDeep } from '@bingads-webui-universal/primitive-utilities';\r\nimport decimal from '@bingads-webui-component-legacy/humanize/decimal';\r\nimport { NumberRange } from '@bingads-webui-campaign-legacy/bidding-strategy/viewmodel/setting';\r\n\r\nconst schema = odataSchemas.PortfolioBidStrategy;\r\nconst inlineEditProperty = ['Id', 'Name', 'TargetCpa', 'TargetRoas', 'TargetAdPosition', 'TargetImpressionShare', 'Type', 'MaxCpc'];\r\n\r\nexport function inlineEditFactory({\r\n i18n,\r\n jsdata,\r\n currentAccount,\r\n getGridView,\r\n reloadGrid,\r\n}) {\r\n function onEditName({ item, newPosition: position }) {\r\n const fieldName = 'Name';\r\n\r\n return InlineEditableColumnPrompt({\r\n position,\r\n item,\r\n i18n,\r\n fieldName,\r\n schema,\r\n saveModel: (updated, editorView) => {\r\n const id = item.Id;\r\n const payload = pick(updated, inlineEditProperty);\r\n\r\n jsdata.PortfolioBidStrategy.update(id, payload, {\r\n entitySet: currentAccount.PortfolioBidStrategies,\r\n })\r\n .then(() => {\r\n editorView.trigger('save');\r\n reloadGrid();\r\n })\r\n .catch((error) => {\r\n const errorMessage = localizeApiError(error, i18n);\r\n editorView.setErrors({\r\n [fieldName]: errorMessage,\r\n });\r\n })\r\n .finally(withUiBlock(getGridView().$el));\r\n },\r\n });\r\n }\r\n\r\n function onEditTargetCpa({ item, newPosition: position }) {\r\n const minValue = (NumberRange && NumberRange.targetCpa && NumberRange.targetCpa.minValue) || 0.01;\r\n const maxValue = (NumberRange && NumberRange.targetCpa && NumberRange.targetCpa.maxValue) || 4000;\r\n const fieldName =\r\n {\r\n property: 'TargetCpa',\r\n control: targetCpaInlineEditorView,\r\n i18n: this.i18n,\r\n curTargetCpa: decimal.fromFloatToString(item.TargetCpa),\r\n minValue,\r\n maxValue,\r\n currencySymbol: this.i18n.getCurrencySymbol(PageContext.AccountCurrencyCode),\r\n currencySymbolClassName: `symbol-size-${this.i18n.getCurrencySymbol(PageContext.AccountCurrencyCode).length}`,\r\n };\r\n\r\n return InlineEditableColumnPrompt({\r\n position,\r\n item,\r\n i18n,\r\n fieldName,\r\n schema,\r\n saveModel: (updated, editorView) => {\r\n if (updated.TargetCpa < minValue || updated.TargetCpa > maxValue) {\r\n return;\r\n }\r\n const id = item.Id;\r\n const payload = pick(updated, inlineEditProperty);\r\n\r\n jsdata.PortfolioBidStrategy.update(id, payload, {\r\n entitySet: currentAccount.PortfolioBidStrategies,\r\n })\r\n .then(() => {\r\n editorView.trigger('save');\r\n reloadGrid();\r\n })\r\n .catch((error) => {\r\n const errorMessage = localizeApiError(error, i18n);\r\n editorView.setErrors({\r\n TargetCpa: errorMessage,\r\n });\r\n })\r\n .finally(withUiBlock(getGridView().$el));\r\n },\r\n });\r\n }\r\n\r\n function onEditTargetRoas({ item, newPosition: position }) {\r\n const model = cloneDeep(item);\r\n model.TargetRoas = decimal.fromLocalToFloat(item.TargetRoas * 100.0, 2);\r\n const fieldName = {\r\n property: 'TargetRoas',\r\n control: targetRoasInlineEditorView,\r\n i18n: this.i18n,\r\n curTargetRoas: decimal.fromFloatToString(item.TargetRoas * 100.0, 2),\r\n };\r\n\r\n return InlineEditableColumnPrompt({\r\n position,\r\n item: model,\r\n i18n,\r\n fieldName,\r\n schema,\r\n saveModel: (updated, editorView) => {\r\n if (updated.TargetRoas < 1.0 || updated.TargetRoas > 100000.0) {\r\n return;\r\n }\r\n const id = item.Id;\r\n const payload = pick(updated, inlineEditProperty);\r\n payload.TargetRoas = (updated.TargetRoas / 100.0).toFixed(4);\r\n jsdata.PortfolioBidStrategy.update(id, payload, {\r\n entitySet: currentAccount.PortfolioBidStrategies,\r\n })\r\n .then(() => {\r\n editorView.trigger('save');\r\n reloadGrid();\r\n })\r\n .catch((error) => {\r\n const errorMessage = localizeApiError(error, i18n);\r\n editorView.setErrors({\r\n TargetRoas: errorMessage,\r\n });\r\n })\r\n .finally(withUiBlock(getGridView().$el));\r\n },\r\n });\r\n }\r\n\r\n function onEditTargetImpressionShare({ item, newPosition: position }) {\r\n const fields =\r\n [{\r\n property: 'TargetImpressionShare',\r\n valueProperty: 'TargetAdPosition',\r\n control: targetImpressionShareInlineEditorView,\r\n i18n: this.i18n,\r\n curTargetImpressionShare: decimal.fromFloatToString(item.TargetImpressionShare),\r\n curTargetAdPosition: item.TargetAdPosition,\r\n }, {\r\n property: 'TargetAdPosition',\r\n control: targetAdPositionInlineEditorView,\r\n }];\r\n\r\n return PopupEditor.prompt({\r\n position,\r\n i18n,\r\n schema,\r\n model: item,\r\n fields,\r\n hasLabels: false,\r\n template: 'inline',\r\n saveModel: (updated, editorView) => {\r\n if (updated.TargetImpressionShare < 0.01 || updated.TargetImpressionShare > 100.0) {\r\n return;\r\n }\r\n const id = item.Id;\r\n const payload = pick(updated, inlineEditProperty);\r\n\r\n jsdata.PortfolioBidStrategy.update(id, payload, {\r\n entitySet: currentAccount.PortfolioBidStrategies,\r\n })\r\n .then(() => {\r\n editorView.trigger('save');\r\n reloadGrid();\r\n })\r\n .catch((error) => {\r\n const errorMessage = localizeApiError(error, i18n);\r\n editorView.setErrors({\r\n TargetImpressionShare: errorMessage,\r\n });\r\n })\r\n .finally(withUiBlock(getGridView().$el));\r\n },\r\n parentContainerSelector: '.grid-and-disclaim-container',\r\n });\r\n }\r\n\r\n return {\r\n onEditName,\r\n onEditTargetCpa,\r\n onEditTargetRoas,\r\n onEditTargetImpressionShare,\r\n };\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\n// Use React.memo so that the component will rerender ONLY IF props changed.\r\n// Avoid rerender the component if props not changed.\r\nexport const ReloadGridWhenDateChange = React.memo((props) => {\r\n const {\r\n // eslint-disable-next-line\r\n dateFilter,\r\n reloadGrid,\r\n } = props;\r\n\r\n reloadGrid();\r\n\r\n return null;\r\n});\r\n\r\nReloadGridWhenDateChange.propTypes = {\r\n dateFilter: PropTypes.shape({}).isRequired,\r\n reloadGrid: PropTypes.func.isRequired,\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { LearnMoreLink } from '@bingads-webui-campaign-react/help';\r\nimport { underlineLinkStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nconst getStyles = (_, { palette = {} }) => ({\r\n description: {\r\n marginTop: 10,\r\n marginBottom: 10,\r\n paddingLeft: 32,\r\n '& span': {\r\n whiteSpace: 'nowrap',\r\n ...underlineLinkStyle({ palette }),\r\n },\r\n },\r\n});\r\n\r\nfunction DescriptionBanner(props) {\r\n const { classes } = props;\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nDescriptionBanner.propTypes = {\r\n classes: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nconst Wrapped = withDefaultStyles(DescriptionBanner, getStyles);\r\nexport { Wrapped as DescriptionBanner };\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { StyledTablePageContainer } from '@bingads-webui-campaign-react/table-page-container';\r\nimport { StyledGridViewWrapper } from '@bingads-webui-campaign-react/grid-view-wrapper';\r\nimport { withTablePageStateManager } from '@bingads-webui-campaign-react/table-page-state-manager';\r\nimport { getToolbarEditor } from '@bingads-webui-campaign-react/toolbar-plugin';\r\nimport { FilterViewManagerWithGlobalFilterContext } from '@bingads-webui-campaign-react/filter-view-manager';\r\nimport { withLegacyDeps } from '@bingads-webui-campaign-react/legacy-deps-context';\r\nimport { withPreference } from '@bingads-webui-react/preference-context';\r\nimport { withScope, QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { getEntityFromScope } from '@bingads-webui/edm-campaign';\r\nimport { TopGridPanel } from '@bingads-webui-campaign-react/top-grid-panel';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { withServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { withGlobalFilter } from '@bingads-webui-react/global-filter-context';\r\nimport { WaterfallFilterType, waterfallDateFilterProcessor } from '@bingads-webui-campaign/filter-storage';\r\nimport { aggregatedRowsPluginBuilder } from '@bingads-webui-campaign/pgrid-aggregated-rows';\r\nimport { updateGridQuery, validateOrder } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { getGridPreferences } from './fetch-preferences';\r\nimport { getToolbarConfig } from './toolbar-config';\r\nimport { toolbarActionFactory } from './toolbar-action';\r\nimport { clearSelection } from './selection-helper';\r\nimport { PortfolioBidStrategyGridView } from './grid/grid-view';\r\nimport { PortfolioBidStrategyGridConfig } from './grid/grid-config';\r\nimport { getStyles } from './styles';\r\nimport { getFilterConfig } from './filter-config';\r\nimport { inlineEditFactory } from './inline-edit';\r\nimport { ReloadGridWhenDateChange } from './reload-grid-when-date-change';\r\nimport { DescriptionBanner } from './description';\r\n\r\nconst gridName = 'PortfolioBidStrategyGrid';\r\n\r\nclass PortfolioBidStrategySummary extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.renderFilterViewManager = _.once(this.renderFilterViewManager);\r\n this.renderGrid = _.once(this.renderGrid);\r\n this.renderLazyGrid = _.once(this.renderLazyGrid);\r\n\r\n this.p$componentMount = new Promise((resolve) => {\r\n this.setComponentMounted = resolve;\r\n });\r\n\r\n const { legacyDeps: { getSegPreference, fetchPaginationConfig, campaignCacheManager } } = props;\r\n this.p$preferenceConfig = getGridPreferences({\r\n gridName,\r\n getSegPreference,\r\n fetchPaginationConfig,\r\n });\r\n\r\n // Whenever enter portfolio grid, avoid cache in aggregator service and force reload data from DB.\r\n // To resolve cache issue like Bug 3381957.\r\n campaignCacheManager.invalidate('PortfolioBidStrategy');\r\n }\r\n\r\n componentDidMount() {\r\n this.setComponentMounted();\r\n }\r\n\r\n getRawDateFilter = () => this.props[WaterfallFilterType.DateFilter];\r\n\r\n getCookedDateFilter = () => {\r\n const { serverContext } = this.props;\r\n const rawDateFilter = this.getRawDateFilter();\r\n const cookedDateFilter = waterfallDateFilterProcessor([{ filter: rawDateFilter }], serverContext);\r\n\r\n return cookedDateFilter;\r\n }\r\n\r\n getGridView = () =>\r\n putil.get(this.backboneGridView, 'grid.gridView');\r\n\r\n clearSelection = () => clearSelection(this.getGridView());\r\n\r\n reloadGrid = ({\r\n resetSelection = false,\r\n } = {}) => {\r\n const gridView = this.getGridView();\r\n if (gridView) {\r\n if (resetSelection) {\r\n this.clearSelection();\r\n }\r\n gridView.refresh(true);\r\n }\r\n }\r\n\r\n renderFilterViewManager() {\r\n const {\r\n i18n,\r\n permissions,\r\n preferenceService,\r\n legacyDeps: { globalConfig, preferenceStoreFactory },\r\n toolbarSelectedConfig,\r\n toolbarUnselectedConfig,\r\n updateToolbar,\r\n resetToolbarVisibility,\r\n } = this.props;\r\n const { getGridView } = this;\r\n\r\n const filterConfig = getFilterConfig({\r\n i18n,\r\n permissions,\r\n globalConfig,\r\n preferenceService,\r\n preferenceStoreFactory,\r\n getGridView,\r\n });\r\n // Expose filterService so it could be consumed by the grid - inline download plugin and aggregated rows plugin\r\n this.filterService = filterConfig.filterService;\r\n\r\n const toolbarEditor = getToolbarEditor({\r\n toolbarConfig: { toolbarSelectedConfig, toolbarUnselectedConfig },\r\n updateToolbar,\r\n });\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderTopContent() {\r\n const { showTopGridPanel, panelView } = this.props;\r\n\r\n if (showTopGridPanel) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return null;\r\n }\r\n\r\n renderStickyTopContent() {\r\n return (\r\n \r\n {this.props.renderToolbarContainer({ isMultiPage: false })}\r\n {this.renderFilterViewManager()}\r\n \r\n );\r\n }\r\n\r\n renderLazyGrid() {\r\n const LazyGrid = React.lazy(() =>\r\n Promise.all([\r\n this.p$preferenceConfig,\r\n // Column freezing plugin requires .table-page-container to exist in DOM, before the plugin runs\r\n // @bingads-webui-campaign/projection-grid-scrollbar/src/plugin.js line 280\r\n // new ResizeObserver(lazyResizeCalculate).observe(document.querySelector(pageContainer));\r\n this.p$componentMount,\r\n ]).then(([preferenceConfig]) => ({\r\n default: () => this.renderGrid(preferenceConfig),\r\n })));\r\n\r\n return ();\r\n }\r\n\r\n renderGrid(preferenceConfig) {\r\n const {\r\n i18n,\r\n scope,\r\n permissions,\r\n legacyDeps: {\r\n jsdata, edm, columnChooserPreferences, setSegType, getSegType, DownloadView, appState, s$i18n, globalConfig, handleSortChange,\r\n },\r\n onGridInjected,\r\n toolbarPlugin,\r\n crossPageSelectPlugin,\r\n preferenceService,\r\n perfMarker,\r\n } = this.props;\r\n const { currentAccount } = getEntityFromScope(scope);\r\n const { getGridView, reloadGrid } = this;\r\n\r\n /**\r\n In order to set request body, the grid plugins use a hacky way:\r\n entitySet.navigation.parameters = {\r\n gridDataParameters: {\r\n DateRange: {\r\n StartDate,\r\n EndDate,\r\n },\r\n ComparisonDateRange: {\r\n StartDate,\r\n EndDate,\r\n },\r\n }\r\n };\r\n\r\n Then old js-data-odata adapter gets it and set to request body:\r\n findAll(definition, params, options)\r\n request body = options.entitySet.navigation.parameters\r\n\r\n But new edm does not support this. Have to fallback to old js-data & old edm.\r\n */\r\n const dataSource = {\r\n type: 'jsdata',\r\n entity: jsdata.PortfolioBidStrategy,\r\n options: {\r\n entitySet: edm.currentAccount.PortfolioBidStrategies['Default.GridData'].$call({\r\n // MT requires this, otherwise will get BadRequest with error code: InvalidGridDataParameters\r\n gridDataParameters: {},\r\n }),\r\n },\r\n };\r\n\r\n const query = {\r\n // UI must select BI columns explictly, otherwise MT will not return any BI data in the case PoP is turned on.\r\n // Here it only specifies basic BI columns, date filter plugin will add more columns if PoP is on. Search `defaultComparisonColumns` to see more details.\r\n select: [\r\n 'PerformanceMetrics',\r\n 'PhonePerformanceMetrics',\r\n ],\r\n };\r\n\r\n const inlineEditConfig = inlineEditFactory({\r\n i18n,\r\n jsdata,\r\n currentAccount,\r\n getGridView,\r\n reloadGrid,\r\n });\r\n\r\n const config = new PortfolioBidStrategyGridConfig({\r\n gridName,\r\n i18n,\r\n dataSource,\r\n query,\r\n columnChooserPreferences,\r\n inlineEditConfig,\r\n scope,\r\n edm,\r\n getDateFilter: this.getCookedDateFilter,\r\n permissions,\r\n setSegType,\r\n getSegType,\r\n preferenceService,\r\n DownloadView,\r\n appState,\r\n filterService: this.filterService,\r\n s$i18n,\r\n perfMarker,\r\n globalConfig,\r\n });\r\n\r\n validateOrder(preferenceConfig, config.columns, config.name, permissions);\r\n const finalConfig = putil.merge(config, preferenceConfig);\r\n\r\n const aggregatedRowsPlugin = aggregatedRowsPluginBuilder({\r\n i18n,\r\n keys: {\r\n overallI18nKey: _TL_('Overall total - {{number}} bid strategies'),\r\n filteredI18nKey: _TL_('Filtered total - {{number}} bid strategies'),\r\n waterfallFilterI18nKey: _TL_('All enabled total - {{number}} bid strategies'),\r\n },\r\n permissions,\r\n filterService: this.filterService,\r\n customConfig: {\r\n showSearchRow: false,\r\n showAudienceRow: false,\r\n showNativeRow: false,\r\n showDeletedRow: false,\r\n },\r\n });\r\n\r\n const backboneGridView = new PortfolioBidStrategyGridView({\r\n config: finalConfig,\r\n permissions,\r\n toolbarPlugin,\r\n aggregatedRowsPlugin,\r\n crossPageSelectPlugin,\r\n });\r\n\r\n _.extend(this, { backboneGridView });\r\n\r\n // Set filter to grid query after grid initialized. This is needed to fix Bug 3273908.\r\n // Note: do not rely on the other updateGridQuery in filter-config.js, because that will be executed before grid initialized.\r\n updateGridQuery(getGridView(), this.filterService.getCombinedFilter(), true);\r\n\r\n // Once sort changes, save to preference\r\n getGridView().on('willUpdate', (changes) => {\r\n handleSortChange(changes, getGridView(), gridName);\r\n });\r\n\r\n const toolbarAction = toolbarActionFactory({\r\n i18n,\r\n jsdata,\r\n scope,\r\n getGridView,\r\n reloadGrid,\r\n });\r\n\r\n onGridInjected({\r\n backboneGridView,\r\n reloadGrid,\r\n toolbarAction,\r\n deselectAll: this.clearSelection,\r\n });\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n render() {\r\n const {\r\n classes, forceResetScrollFlag, showTopGridPanel, serverContext,\r\n } = this.props;\r\n\r\n return (\r\n \r\n { !showTopGridPanel && }\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nPortfolioBidStrategySummary.propTypes = {\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n i18n: PropTypes.shape({}).isRequired,\r\n serverContext: PropTypes.shape({\r\n Token: PropTypes.string.isRequired,\r\n }).isRequired,\r\n legacyDeps: PropTypes.shape({}).isRequired,\r\n preferenceService: PropTypes.shape({}).isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n permissions: PropTypes.shape({}).isRequired,\r\n perfMarker: PropTypes.shape({}).isRequired,\r\n // Begin: injected by withTablePageStateManager\r\n toolbarSelectedConfig: PropTypes.shape({}).isRequired,\r\n toolbarUnselectedConfig: PropTypes.shape({}).isRequired,\r\n updateToolbar: PropTypes.func.isRequired,\r\n resetToolbarVisibility: PropTypes.func.isRequired,\r\n renderToolbarContainer: PropTypes.func.isRequired,\r\n onGridInjected: PropTypes.func.isRequired,\r\n showTopGridPanel: PropTypes.bool.isRequired,\r\n panelView: PropTypes.shape({}),\r\n toolbarPlugin: PropTypes.shape({\r\n plugin: PropTypes.func.isRequired,\r\n }).isRequired,\r\n crossPageSelectPlugin: PropTypes.shape({\r\n plugin: PropTypes.func.isRequired,\r\n }).isRequired,\r\n forceResetScrollFlag: PropTypes.bool.isRequired,\r\n // End: injected by withTablePageStateManager\r\n};\r\n\r\nPortfolioBidStrategySummary.defaultProps = {\r\n panelView: null,\r\n};\r\n\r\nconst Wrapped = _.compose(\r\n withI18nConsumer,\r\n withLegacyDeps,\r\n withPreference,\r\n withScope,\r\n withPermissions,\r\n withServerContext,\r\n withGlobalFilter,\r\n Comp => withDefaultStyles(Comp, getStyles),\r\n withTablePageStateManager({ getToolbarConfig })\r\n)(PortfolioBidStrategySummary);\r\n\r\nexport { Wrapped as PortfolioBidStrategySummary };\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\n\r\nexport function getGridPreferences({\r\n gridName,\r\n getSegPreference,\r\n fetchPaginationConfig,\r\n}) {\r\n const services = [\r\n fetchPaginationConfig(gridName),\r\n // Initialize segmentation preference, for segmentation plugin to consume later on\r\n getSegPreference(gridName),\r\n ];\r\n\r\n return Promise.all(services)\r\n .then(([paginationConfig]) => {\r\n const { pageSize, orderbyInfo, sortableHeader } = paginationConfig;\r\n const result = {\r\n dataSource: {},\r\n plugins: {\r\n pagination: {\r\n pageSize,\r\n },\r\n },\r\n };\r\n\r\n if (orderbyInfo && orderbyInfo.length > 0) {\r\n result.dataSource.orderby = orderbyInfo;\r\n result.sortableHeader = _.pick(sortableHeader, 'name', 'directionIndex');\r\n }\r\n\r\n return result;\r\n });\r\n}\r\n","import { getEntityFromScope } from '@bingads-webui/edm-campaign';\r\nimport { getRouterDep } from '@bingads-webui-campaign-react/legacy-router-dep';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { notificationApi } from '@bingads-webui-campaign/notification-center';\r\nimport { localizeApiError } from '@bingads-webui-campaign-react/portfolio-bid-strategy-shared';\r\n\r\nexport function toolbarActionFactory({\r\n i18n,\r\n jsdata,\r\n scope,\r\n getGridView,\r\n reloadGrid,\r\n}) {\r\n const { currentAccount } = getEntityFromScope(scope);\r\n const router = getRouterDep(scope);\r\n\r\n function onDeletePortfolio(portfolioId) {\r\n jsdata.PortfolioBidStrategy.destroy(portfolioId, {\r\n entitySet: currentAccount.PortfolioBidStrategies,\r\n })\r\n .then(() => {\r\n reloadGrid({ resetSelection: true });\r\n })\r\n .catch((error) => {\r\n notificationApi.showWarning(localizeApiError(error, i18n));\r\n })\r\n .finally(withUiBlock(getGridView().$el));\r\n }\r\n\r\n function onEditPortfolio(portfolioId) {\r\n router.navigateToRoute('portfolio_bid_strategy_settings', { portfolioId });\r\n }\r\n\r\n return {\r\n onDeletePortfolio,\r\n onEditPortfolio,\r\n };\r\n}\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n RECOMMENDATION_TYPES,\r\n} from '@bingads-webui-campaign/recommendation-core';\r\n\r\nexport const AdditionalPitching = props => (\r\n
\r\n {props.additionDetailPitchingConfig[props.type] &&\r\n
\r\n {props.i18n.getString(props.additionDetailPitchingConfig[props.type].detailPitching)}\r\n
\r\n }\r\n {props.needNRTDisclaimer &&\r\n
\r\n {props.i18n.getString(`Details_View_NRT_Disclaimer_${props.type}`) || props.i18n.getString('Details_View_NRT_Disclaimer')}\r\n
\r\n }\r\n {props.inProductUpdateConfig &&\r\n props.isDefinedAdditionalPitching &&\r\n props.isRSARecAutoApplyNotOptIn &&\r\n
\r\n {props.i18n.getString(props.inProductUpdateConfig.additionalPitching)}\r\n
\r\n }\r\n {props.type === RECOMMENDATION_TYPES.SSC_2_PMAX_MIGRATION &&\r\n
\r\n {props.newI18n.getString(_TL_('Expand your ad reach and drive your performance by upgrading your smart shopping campaigns to Performance Max campaigns. We\\'ll use your existing assets, settings, and budgets to create new Performance Max campaigns while maintaining performance insights from previous campaigns. This update usually takes about one day to complete.'))}\r\n
\r\n }\r\n {props.permissions.IsAccountEnabledForCrawlImagesFromLandingPage &&\r\n props.type === RECOMMENDATION_TYPES.IMAGE_EXTENSION &&\r\n
\r\n
\r\n {props.newI18n.getString(_TL_('Turning on the auto-retrieve image tool allows your ads to use images from your website, and you agree that all images belong to you under the'))}\r\n  \r\n \r\n {props.newI18n.getString(_TL_('Microsoft Advertising Agreement'))}\r\n \r\n .\r\n
\r\n
\r\n {props.newI18n.getString(_TL_('You can change your image auto-retrieval settings anytime'))}\r\n  \r\n \r\n {props.newI18n.getString(_TL_('here'))}\r\n \r\n .\r\n
\r\n
\r\n }\r\n
\r\n);\r\n\r\nAdditionalPitching.propTypes = {\r\n additionDetailPitchingConfig: PropTypes.objectOf(PropTypes.any),\r\n aid: PropTypes.number,\r\n cid: PropTypes.number,\r\n i18n: PropTypes.PropTypes.shape({\r\n getString: PropTypes.func,\r\n }),\r\n inProductUpdateConfig: PropTypes.objectOf(PropTypes.any),\r\n isDefinedAdditionalPitching: PropTypes.bool,\r\n isRSARecAutoApplyNotOptIn: PropTypes.bool,\r\n needNRTDisclaimer: PropTypes.bool,\r\n newI18n: PropTypes.PropTypes.shape({\r\n getString: PropTypes.func,\r\n }),\r\n permissions: PropTypes.objectOf(PropTypes.any),\r\n type: PropTypes.string,\r\n uid: PropTypes.number,\r\n};\r\n\r\nAdditionalPitching.defaultProps = {\r\n additionDetailPitchingConfig: {},\r\n aid: null,\r\n cid: null,\r\n i18n: {\r\n getString: _.noop,\r\n },\r\n inProductUpdateConfig: {},\r\n isDefinedAdditionalPitching: false,\r\n isRSARecAutoApplyNotOptIn: false,\r\n needNRTDisclaimer: false,\r\n newI18n: {\r\n getString: _.noop,\r\n },\r\n permissions: {},\r\n type: null,\r\n uid: null,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\n\r\nimport { EstimationTile, SummaryEstimation } from '@bingads-webui-campaign-react/recommendation-estimation-tile';\r\nimport { LearnMoreLink } from '@bingads-webui-campaign-react/help';\r\nimport {\r\n withAdsAutoApply,\r\n RECOMMENDATION_TYPES,\r\n recommendationInProductUpdateConfigs,\r\n additionDetailPitchingConfig,\r\n} from '@bingads-webui-campaign/recommendation-core';\r\nimport {\r\n isInProductUpdateBannerAvailable,\r\n isAdditionalPitchingAvailable,\r\n InProdUpdateNotificationBanner,\r\n WarnNotificationBanner\r\n} from '@bingads-webui-campaign/recommendation-notification';\r\nimport { CouponTagNew } from '@bingads-webui-react/feature-adoption-coupon';\r\nimport { RecommendationOptimizationScoreTag } from '@bingads-webui-campaign-react/recommendation-os-tag';\r\nimport { StyledRecommendationAutpApplyBanner } from '@bingads-webui-campaign-react/recommendation-auto-apply-banner';\r\nimport { MessageBar, MessageBarType } from '@bingads-webui-react/fabric-control';\r\nimport { AdditionalPitching } from './additional-pitching';\r\n\r\nexport class DetailsSummary extends React.PureComponent {\r\n static propTypes = {\r\n iconClasses: PropTypes.string.isRequired,\r\n iconClassesVNext: PropTypes.string.isRequired,\r\n title: PropTypes.string.isRequired,\r\n description: PropTypes.string.isRequired,\r\n pitching: PropTypes.string.isRequired,\r\n helpId: PropTypes.string.isRequired,\r\n estimates: PropTypes.objectOf(PropTypes.any),\r\n coupon: PropTypes.objectOf(PropTypes.any),\r\n i18n: PropTypes.PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n cid: PropTypes.number,\r\n uid: PropTypes.number,\r\n aid: PropTypes.number,\r\n odata: PropTypes.PropTypes.shape({\r\n get: PropTypes.func.isRequired,\r\n }),\r\n type: PropTypes.string,\r\n optInStatus: PropTypes.bool,\r\n applyDate: PropTypes.number,\r\n recommendationsCount: PropTypes.number,\r\n isEstimate: PropTypes.bool,\r\n needNRTDisclaimer: PropTypes.bool,\r\n appConfig: PropTypes.objectOf(PropTypes.any),\r\n isMCC: PropTypes.bool,\r\n isNrt: PropTypes.bool,\r\n hasAIAssetRecommendation: PropTypes.bool,\r\n accounts: PropTypes.arrayOf(PropTypes.shape({\r\n accountId: PropTypes.string,\r\n accountName: PropTypes.string,\r\n optInStatus: PropTypes.bool,\r\n adsByBingAutoApply: PropTypes.string,\r\n })),\r\n permissions: PropTypes.objectOf(PropTypes.any),\r\n optimizationScore: PropTypes.number,\r\n preferencesService: PropTypes.objectOf(PropTypes.any),\r\n overallOptimizationScoreBar: PropTypes.shape({\r\n Gained: PropTypes.number,\r\n Dismissed: PropTypes.number,\r\n Available: PropTypes.number,\r\n }),\r\n linkType: PropTypes.string,\r\n isOptimizationScoreOn: PropTypes.bool,\r\n newI18n: PropTypes.PropTypes.shape({\r\n getString: PropTypes.func,\r\n }),\r\n isDismissedCategory: PropTypes.bool,\r\n showAutoApplyBanner: PropTypes.bool,\r\n isAutoApplyRecommendationEnabled: PropTypes.bool,\r\n viewSettings: PropTypes.func,\r\n thirdPartyInfos: PropTypes.arrayOf(PropTypes.shape({\r\n Level: PropTypes.number,\r\n ThirdPartyName: PropTypes.string,\r\n })),\r\n isAutoApplyOptIn: PropTypes.bool,\r\n };\r\n\r\n static defaultProps = {\r\n estimates: null,\r\n cid: null,\r\n uid: null,\r\n aid: null,\r\n odata: null,\r\n type: null,\r\n optInStatus: false,\r\n applyDate: 0,\r\n recommendationsCount: 0,\r\n appConfig: null,\r\n isEstimate: true,\r\n needNRTDisclaimer: false,\r\n coupon: null,\r\n isMCC: false,\r\n isNrt: false,\r\n hasAIAssetRecommendation: false,\r\n accounts: [],\r\n permissions: {},\r\n optimizationScore: null,\r\n preferencesService: null,\r\n overallOptimizationScoreBar: null,\r\n linkType: 'helpPopup',\r\n isOptimizationScoreOn: false,\r\n newI18n: {\r\n getString: _.noop,\r\n },\r\n isDismissedCategory: false,\r\n showAutoApplyBanner: false,\r\n isAutoApplyRecommendationEnabled: false,\r\n viewSettings: _.noop,\r\n thirdPartyInfos: undefined,\r\n isAutoApplyOptIn: false,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n campaignAutoApplyStatus: {},\r\n };\r\n }\r\n\r\n render() {\r\n const {\r\n iconClasses,\r\n iconClassesVNext,\r\n description,\r\n estimates,\r\n pitching,\r\n helpId,\r\n i18n,\r\n title,\r\n cid,\r\n aid,\r\n uid,\r\n odata,\r\n type,\r\n optInStatus,\r\n applyDate,\r\n recommendationsCount,\r\n appConfig,\r\n isEstimate,\r\n needNRTDisclaimer,\r\n coupon,\r\n permissions,\r\n optimizationScore,\r\n isNrt,\r\n hasAIAssetRecommendation,\r\n preferencesService,\r\n overallOptimizationScoreBar,\r\n linkType,\r\n isOptimizationScoreOn,\r\n newI18n,\r\n isDismissedCategory,\r\n showAutoApplyBanner,\r\n isAutoApplyRecommendationEnabled,\r\n viewSettings,\r\n thirdPartyInfos,\r\n isMCC,\r\n isAutoApplyOptIn,\r\n } = this.props;\r\n\r\n const AutoApplyBanner = isAutoApplyRecommendationEnabled ?\r\n StyledRecommendationAutpApplyBanner : withAdsAutoApply(StyledRecommendationAutpApplyBanner);\r\n const withEstimateTileStyle = !isOptimizationScoreOn && estimates ? 'details-summary-with-estimate' : '';\r\n const withOptimizationScore = isOptimizationScoreOn ? 'with-optimization-score' : '';\r\n const summary = { isNrt, hasAIAssetRecommendation };\r\n const inProductUpdateConfig = recommendationInProductUpdateConfigs[type];\r\n const isDefinedAdditionalPitching = isAdditionalPitchingAvailable(type, permissions, summary);\r\n const isRSARecAutoApplyNotOptIn = type === RECOMMENDATION_TYPES.RESPONSIVE_SEARCH_ADS ?\r\n this.state.campaignAutoApplyStatus[RECOMMENDATION_TYPES.RESPONSIVE_SEARCH_ADS] !== 'true' :\r\n true;\r\n\r\n const tagManager = thirdPartyInfos && thirdPartyInfos.length > 0 ?\r\n thirdPartyInfos[0].ThirdPartyName : null;\r\n const additionalArgs = _.isNull(tagManager) ? {} : { tagManager };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
{title}
\r\n {coupon && (\r\n \r\n )}\r\n {isOptimizationScoreOn && !_.isEmpty(overallOptimizationScoreBar) &&\r\n !isDismissedCategory &&\r\n \r\n }\r\n
\r\n {inProductUpdateConfig && inProductUpdateConfig.warnNotification &&\r\n \r\n }\r\n {isInProductUpdateBannerAvailable(type, permissions, summary) &&\r\n \r\n }\r\n {type === RECOMMENDATION_TYPES.CREATE_CONVERSION_GOAL &&\r\n \r\n {newI18n.getString(_TL_('In the default setting, conversions from recommended goals will appear in the “Conversions” column and will affect any enabled automated bidding strategies.'))}\r\n \r\n }\r\n \r\n \r\n
\r\n
\r\n \r\n {type === RECOMMENDATION_TYPES.CREATE_CONVERSION_GOAL &&\r\n
\r\n \r\n
\r\n }\r\n \r\n
\r\n {isOptimizationScoreOn && estimates &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n {isEstimate && estimates && i18n.getString('Details_View_Past_Performance_Blurb')}\r\n {type === RECOMMENDATION_TYPES.IMPROVE_MULTIMEDIA_ADS &&\r\n
\r\n {isEstimate && estimates && newI18n.getString(_TL_('We recommend using these ad texts, headlines, and images generated from your websites.'))}\r\n
\r\n }\r\n
\r\n
\r\n {!isOptimizationScoreOn && estimates &&\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n }\r\n {showAutoApplyBanner &&\r\n {\r\n if (campaignAutoApplyStatus[type] !== this.state.campaignAutoApplyStatus[type]) {\r\n this.setState({ campaignAutoApplyStatus });\r\n }\r\n }}\r\n permissions={permissions}\r\n type={type}\r\n campaignAutoApplyStatus={isAutoApplyRecommendationEnabled ? { [type]: 'true' } : {}}\r\n optInStatus={optInStatus}\r\n isAutoApplyRecommendationEnabled={isAutoApplyRecommendationEnabled}\r\n viewSettings={viewSettings}\r\n />}\r\n
\r\n );\r\n }\r\n}\r\n\r\n","import {\r\n RECOMMENDATION_TYPES,\r\n} from '@bingads-webui-campaign/recommendation-core';\r\n\r\nconst defaultParser = (i18n, value) => i18n.parseDecimal(value);\r\n\r\n// for each type, key is MT field, value is UI property name used in recommendation-config.js.\r\nexport const userInputsMappingConfigForForm = {\r\n [RECOMMENDATION_TYPES.BUDGET]: {\r\n NewBudget: {\r\n property: 'budgetSuggested',\r\n parser: defaultParser,\r\n },\r\n },\r\n // deprecated in Oct 2023\r\n [RECOMMENDATION_TYPES.NEW_KEYWORD]: {\r\n NewBid: {\r\n property: 'suggestedBid',\r\n parser: defaultParser,\r\n },\r\n MatchType: {\r\n property: 'matchType',\r\n parser: defaultParser,\r\n },\r\n TargetAdGroupId: {\r\n property: 'AdGroupId',\r\n isFromTarget: true,\r\n },\r\n },\r\n};\r\n\r\nexport const userInputsMappingConfigForGrid = {\r\n [RECOMMENDATION_TYPES.COMPETITIVE_BID]: {\r\n selected: {\r\n nameInRequest: 'NewBid',\r\n property: 'suggestedBid',\r\n },\r\n },\r\n [RECOMMENDATION_TYPES.DEVICE_BID_BOOST]: {\r\n selected: {\r\n nameInRequest: 'NewBidBoost',\r\n property: 'suggestedBidAdjustmentPercent',\r\n },\r\n },\r\n [RECOMMENDATION_TYPES.LOCATION_BID_BOOST]: {\r\n selected: {\r\n nameInRequest: 'NewBidBoost',\r\n property: 'suggestedBidAdjustmentPercent',\r\n },\r\n },\r\n [RECOMMENDATION_TYPES.NEW_LOCATION]: {\r\n // no inputs besides opportunity id\r\n },\r\n [RECOMMENDATION_TYPES.SYNDICATION]: {\r\n // no inputs besides opportunity id\r\n },\r\n};\r\n","/* eslint-disable jsx-a11y/label-has-for */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport const LabelDecorator = props => (\r\n
\r\n \r\n
\r\n {props.children}\r\n
\r\n
);\r\n\r\nLabelDecorator.propTypes = {\r\n label: PropTypes.string,\r\n children: PropTypes.element.isRequired,\r\n};\r\n\r\nLabelDecorator.defaultProps = {\r\n label: '',\r\n};\r\n","/* eslint-disable jsx-a11y/label-has-for */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\n\r\nimport {\r\n APPLY_USERINPUT_TYPES,\r\n CHANNEL_TYPES,\r\n APPLY_ACTION_TYPES,\r\n} from '@bingads-webui-campaign/recommendation-core';\r\nimport { EstimationTile } from '@bingads-webui-campaign-react/recommendation-estimation-tile';\r\n\r\nimport { ErrorMessages } from '@bingads-webui-react/validation';\r\nimport { ValidatedInputLite } from '@bingads-webui-react/validation-controls';\r\nimport { RadioGroup } from '@bingads-webui-react/radio';\r\nimport { LearnMoreLink } from '@bingads-webui-campaign-react/help';\r\n\r\nimport { userInputsMappingConfigForForm } from './user-inputs-mapping-config';\r\nimport { LabelDecorator } from './label-decorator';\r\n\r\nexport class FormActionWithEstimates extends React.PureComponent {\r\n static propTypes = {\r\n title: PropTypes.string,\r\n fields: PropTypes.arrayOf(PropTypes.shape({\r\n type: PropTypes.string,\r\n label: PropTypes.string,\r\n text: PropTypes.string,\r\n value: PropTypes.string,\r\n enum: PropTypes.array,\r\n helpTopic: PropTypes.string,\r\n helpText: PropTypes.string,\r\n helpQuery: PropTypes.string,\r\n })).isRequired,\r\n i18n: PropTypes.PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n estimates: PropTypes.objectOf(PropTypes.any).isRequired,\r\n track: PropTypes.func.isRequired,\r\n type: PropTypes.string.isRequired,\r\n model: PropTypes.objectOf(PropTypes.any).isRequired,\r\n target: PropTypes.objectOf(PropTypes.any).isRequired,\r\n rowClass: PropTypes.string.isRequired,\r\n schema: PropTypes.objectOf(PropTypes.any).isRequired,\r\n currency: PropTypes.string.isRequired,\r\n logOpportunityEvent: PropTypes.func.isRequired,\r\n readOnly: PropTypes.bool.isRequired,\r\n context: PropTypes.shape({\r\n Level: PropTypes.string.isRequired,\r\n }).isRequired,\r\n guid: PropTypes.string.isRequired,\r\n logExpInfo: PropTypes.func.isRequired,\r\n };\r\n\r\n static defaultProps = {\r\n title: '',\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {};\r\n this.validationPropsDict = {};\r\n this.formattedFieldsDict = {};\r\n\r\n props.logOpportunityEvent({\r\n opportunityId: props.model.opportunityId,\r\n campaignId: props.target.CampaignId,\r\n context: props.context,\r\n });\r\n _.each(props.fields, (field) => {\r\n const {\r\n type, property, value, items,\r\n } = field;\r\n this.formattedFieldsDict[property] = field;\r\n\r\n if (type === 'input') {\r\n this.state[property] = { radio: items[0], suggested: true };\r\n\r\n // initalize error processor\r\n const propertySchema = props.schema.properties[property];\r\n const errorProcessor = errors => _.map(\r\n errors,\r\n (oldError, key) => {\r\n if (key === 'range') {\r\n return props.i18n.getString(`Validation_Number_Range_Between_${property}`, {\r\n min: propertySchema.minimum,\r\n max: propertySchema.maximum,\r\n currency: props.currency,\r\n });\r\n }\r\n return oldError;\r\n }\r\n );\r\n this.validationPropsDict[property] = {\r\n i18n: props.i18n,\r\n schema: props.schema,\r\n field: property,\r\n errorProcessor,\r\n onValidate: this.onValidate(property),\r\n };\r\n } else if (type === 'select') {\r\n this.state[property] = { suggested: true, value };\r\n }\r\n });\r\n }\r\n\r\n onUpdateState = (property, val) => {\r\n let input = val;\r\n\r\n this.setState((prevState) => {\r\n input = _.extend({}, prevState[property], val);\r\n\r\n return {\r\n [property]: input,\r\n };\r\n });\r\n }\r\n\r\n onInputChange = (e) => {\r\n const { name, value } = e.target;\r\n const { items } = this.formattedFieldsDict[name];\r\n\r\n this.onUpdateState(name, {\r\n radio: items[1],\r\n suggested: false,\r\n value,\r\n });\r\n }\r\n\r\n onRadioChange = property => (item) => {\r\n const { items } = this.formattedFieldsDict[property];\r\n\r\n this.onUpdateState(property, {\r\n radio: item,\r\n suggested: item === items[0],\r\n });\r\n }\r\n\r\n onSelectChange = (e) => {\r\n const { name, value } = e.target;\r\n const defaultSelectedValue = this.formattedFieldsDict[name].value;\r\n\r\n this.onUpdateState(name, {\r\n value,\r\n suggested: value === defaultSelectedValue,\r\n });\r\n }\r\n\r\n onValidate = property => ({ messages, isValid }) => {\r\n this.onUpdateState(property, {\r\n messages,\r\n isValid,\r\n });\r\n }\r\n\r\n getUserInputs(isApply, returnOnlyWhenModified = false) {\r\n let modified = false;\r\n\r\n const defaultUserInputObject = {\r\n OpportunityId: this.props.model.opportunityId,\r\n };\r\n\r\n const userInputObject = {};\r\n\r\n if (isApply) {\r\n const odataType = APPLY_USERINPUT_TYPES[this.props.type];\r\n if (odataType) {\r\n defaultUserInputObject['@odata.type'] = odataType;\r\n }\r\n\r\n const config = userInputsMappingConfigForForm[this.props.type];\r\n _.each(config, ({ property, parser, isFromTarget }, key) => {\r\n let value;\r\n if (isFromTarget) {\r\n value = this.props.target[property];\r\n } else {\r\n const propertyState = this.state[property];\r\n if (propertyState.suggested) {\r\n value = this.props.model[property];\r\n } else {\r\n value = parser(this.props.i18n, propertyState.value);\r\n modified = true;\r\n }\r\n }\r\n userInputObject[key] = value;\r\n });\r\n }\r\n\r\n if (returnOnlyWhenModified && !modified) return null;\r\n\r\n if (modified) {\r\n return [_.extend({}, defaultUserInputObject, userInputObject)];\r\n }\r\n return [defaultUserInputObject];\r\n }\r\n\r\n buildRequestOptions(isApply) {\r\n const campaignAdGroups = [{\r\n Key: this.props.target.CampaignId,\r\n Value: this.props.target.AdGroupId ? [this.props.target.AdGroupId] : [],\r\n }];\r\n\r\n const userAction = isApply ? APPLY_ACTION_TYPES.ACCEPT : APPLY_ACTION_TYPES.DISMISS;\r\n const userInputs = this.getUserInputs(isApply);\r\n\r\n return {\r\n userInputs,\r\n userAction,\r\n type: this.props.type,\r\n campaignAdGroups,\r\n channel: CHANNEL_TYPES.COMPETITION,\r\n context: this.props.context,\r\n guid: this.props.guid,\r\n };\r\n }\r\n\r\n hasError() {\r\n return _.some(this.state, ({\r\n suggested,\r\n isValid,\r\n }) => (!suggested && isValid === false));\r\n }\r\n\r\n apply = () => {\r\n if (this.hasError()) return;\r\n\r\n this.props.logExpInfo('1 recommendation applied');\r\n\r\n const ops = this.buildRequestOptions(true);\r\n this.props.track(ops);\r\n }\r\n\r\n dismiss = () => {\r\n if (this.hasError()) return;\r\n\r\n const ops = this.buildRequestOptions(false);\r\n this.props.track(ops);\r\n }\r\n\r\n renderRadioGroupItem = field => (item, index) => {\r\n const { property, value } = field;\r\n const propertyState = this.state[property];\r\n\r\n if (index === 0) {\r\n return this.props.i18n.getString('Details_View_Suggested_Suffix', {\r\n suggested_value: item,\r\n });\r\n }\r\n return (\r\n \r\n \r\n {!propertyState.suggested &&\r\n !propertyState.isValid &&\r\n }\r\n );\r\n };\r\n\r\n renderRadioGroup = field =>\r\n ();\r\n\r\n renderField = (field, index) => {\r\n let control = (\r\n \r\n
\r\n \r\n
\r\n
);\r\n\r\n switch (field.type) {\r\n case 'input': {\r\n control = (\r\n \r\n {this.renderRadioGroup(field)}\r\n );\r\n break;\r\n }\r\n case 'select': {\r\n const options = _.map(field.enum, ({ value, text }, key) => (\r\n \r\n ));\r\n control = (\r\n \r\n \r\n {options}\r\n \r\n );\r\n break;\r\n }\r\n case 'info':\r\n control = (\r\n
\r\n {field.text}\r\n
\r\n
\r\n \r\n
\r\n
);\r\n break;\r\n default:\r\n break;\r\n }\r\n return control;\r\n }\r\n\r\n renderFields = fields => _.map(fields, this.renderField)\r\n\r\n render() {\r\n const {\r\n i18n,\r\n title,\r\n fields,\r\n rowClass,\r\n readOnly,\r\n } = this.props;\r\n\r\n let suggested = true;\r\n _.each(this.state, (value, property) => {\r\n if (this.state[property] && this.state[property].suggested === false) {\r\n suggested = false;\r\n }\r\n });\r\n\r\n return (\r\n \r\n
\r\n
{title}
\r\n
\r\n {this.renderFields(fields)}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n {suggested &&\r\n }\r\n
\r\n \r\n );\r\n }\r\n}\r\n","/* eslint-disable jsx-a11y/label-has-for */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport const UnEditableLabelDecorator = props => (\r\n
\r\n
\r\n \r\n
\r\n
{props.text}
\r\n {props.children}\r\n
);\r\n\r\nUnEditableLabelDecorator.propTypes = {\r\n label: PropTypes.string.isRequired,\r\n text: PropTypes.string,\r\n children: PropTypes.objectOf(PropTypes.any),\r\n};\r\n\r\nUnEditableLabelDecorator.defaultProps = {\r\n children: null,\r\n text: '',\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\n\r\nimport { ProgressBar } from '@bingads-webui-campaign-react/recommendation-visuals';\r\n\r\nimport { UnEditableLabelDecorator } from './uneditable-label-decorator';\r\n\r\nexport const UnEditableSimpleForm = (props) => {\r\n const groups = _.map(props.fields, (field, index) => {\r\n let text = null;\r\n let children = null;\r\n if (field.useProgressBar) {\r\n children = ;\r\n } else {\r\n text = field.text || field.value;\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n );\r\n });\r\n\r\n return {groups};\r\n};\r\n\r\nUnEditableSimpleForm.propTypes = {\r\n fields: PropTypes.arrayOf(PropTypes.shape({\r\n label: PropTypes.string,\r\n text: PropTypes.string,\r\n value: PropTypes.string,\r\n })).isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport const GridPanel = props => (\r\n
\r\n
{props.title}{props.titleForm}
\r\n
\r\n {props.headers}\r\n {props.bodies}\r\n
\r\n
\r\n {props.children}\r\n
\r\n
\r\n);\r\n\r\nGridPanel.propTypes = {\r\n title: PropTypes.string.isRequired,\r\n headers: PropTypes.arrayOf(PropTypes.element).isRequired,\r\n bodies: PropTypes.arrayOf(PropTypes.element).isRequired,\r\n children: PropTypes.arrayOf(PropTypes.element),\r\n titleForm: PropTypes.element,\r\n};\r\n\r\nGridPanel.defaultProps = {\r\n children: null,\r\n titleForm: null,\r\n};\r\n","/* eslint-disable jsx-a11y/label-has-for */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\n\r\nimport {\r\n APPLY_USERINPUT_TYPES,\r\n CHANNEL_TYPES,\r\n APPLY_ACTION_TYPES,\r\n} from '@bingads-webui-campaign/recommendation-core';\r\n\r\nimport { Checkbox } from '@bingads-webui-react/checkbox';\r\nimport { HelpPopup } from '@bingads-webui-react/help-popup';\r\n\r\nimport { GridPanel } from './grid-panel';\r\nimport { userInputsMappingConfigForGrid } from './user-inputs-mapping-config';\r\n\r\nconst PLUS_CHARACTER = '+';\r\nconst formatIncreasedValue = (value, checker) => {\r\n if (checker && value[0] !== '-' && value[0] !== '0') {\r\n return `${PLUS_CHARACTER}${value}`;\r\n }\r\n return value;\r\n};\r\n\r\nexport class GridActionWithEstimates extends React.PureComponent {\r\n static propTypes = {\r\n title: PropTypes.string.isRequired,\r\n headers: PropTypes.arrayOf(PropTypes.string).isRequired,\r\n bodies: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)).isRequired,\r\n columns: PropTypes.arrayOf(PropTypes.object).isRequired,\r\n hasLastRowAsCurrent: PropTypes.bool,\r\n singleSelection: PropTypes.bool,\r\n i18n: PropTypes.PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n selectedRow: PropTypes.string.isRequired,\r\n name: PropTypes.string.isRequired,\r\n helpTopics: PropTypes.arrayOf(PropTypes.string),\r\n children: PropTypes.element,\r\n model: PropTypes.arrayOf(PropTypes.object).isRequired,\r\n track: PropTypes.func.isRequired,\r\n type: PropTypes.string.isRequired,\r\n target: PropTypes.objectOf(PropTypes.any).isRequired,\r\n rowClass: PropTypes.string.isRequired,\r\n logOpportunityEvent: PropTypes.func.isRequired,\r\n readOnly: PropTypes.bool.isRequired,\r\n context: PropTypes.shape({\r\n Level: PropTypes.string.isRequired,\r\n }).isRequired,\r\n guid: PropTypes.string.isRequired,\r\n logExpInfo: PropTypes.func.isRequired,\r\n };\r\n\r\n static defaultProps = {\r\n hasLastRowAsCurrent: false,\r\n singleSelection: false,\r\n helpTopics: [],\r\n children: null,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n _.each(props.model, ({\r\n opportunityId,\r\n }) => {\r\n props.logOpportunityEvent({\r\n opportunityId,\r\n campaignId: props.target.CampaignId,\r\n context: props.context,\r\n });\r\n });\r\n }\r\n\r\n state = {\r\n // this only applies to single selection grid.\r\n selectedRow: this.props.selectedRow,\r\n rowState: _.map(this.props.bodies, () => true),\r\n }\r\n\r\n getUserInputs(isApply, returnOnlyWhenModified = false) {\r\n let modified = false;\r\n\r\n const config = userInputsMappingConfigForGrid[this.props.type];\r\n const userInputs = [];\r\n if (this.props.singleSelection) {\r\n const selectedIndex = parseInt(this.state.selectedRow, 10);\r\n const selectedOpportunityModel = this.props.model[selectedIndex];\r\n const selectConfig = config.selected;\r\n\r\n modified = (this.state.selectedRow !== this.props.selectedRow);\r\n userInputs.push(_.extend({}, {\r\n OpportunityId: selectedOpportunityModel.opportunityId,\r\n }, isApply && modified && {\r\n [selectConfig.nameInRequest]: selectedOpportunityModel[selectConfig.property],\r\n }));\r\n } else {\r\n _.each(this.state.rowState, (checked, index) => {\r\n if (checked === true) {\r\n userInputs.push({\r\n OpportunityId: this.props.model[index].opportunityId,\r\n });\r\n } else {\r\n modified = true;\r\n }\r\n });\r\n }\r\n\r\n if (returnOnlyWhenModified && !modified) return null;\r\n\r\n const odataType = APPLY_USERINPUT_TYPES[this.props.type];\r\n\r\n if (isApply) {\r\n return _.map(userInputs, userInput => _.extend(userInput, odataType && {\r\n '@odata.type': odataType,\r\n }));\r\n }\r\n return userInputs;\r\n }\r\n\r\n handleRadioChange = (e) => {\r\n this.setState({\r\n selectedRow: e.target.value,\r\n });\r\n }\r\n\r\n handleCheckboxChange = (e) => {\r\n const rowIndex = parseInt(e.target.name, 10);\r\n\r\n if (rowIndex === -1) {\r\n this.setState({\r\n rowState: _.map(this.props.bodies, () => e.target.checked),\r\n });\r\n } else {\r\n this.setState(({ rowState }) => {\r\n const newState = [...rowState];\r\n newState[rowIndex] = !newState[rowIndex];\r\n\r\n return {\r\n rowState: newState,\r\n };\r\n });\r\n }\r\n }\r\n\r\n buildRequestOptions(isApply) {\r\n const campaignAdGroups = [{\r\n Key: this.props.target.CampaignId,\r\n Value: this.props.target.AdGroupId ? [this.props.target.AdGroupId] : [],\r\n }];\r\n\r\n const userAction = isApply ? APPLY_ACTION_TYPES.ACCEPT : APPLY_ACTION_TYPES.DISMISS;\r\n const userInputs = this.getUserInputs(isApply);\r\n\r\n return {\r\n userInputs,\r\n userAction,\r\n type: this.props.type,\r\n campaignAdGroups,\r\n channel: CHANNEL_TYPES.COMPETITION,\r\n context: this.props.context,\r\n guid: this.props.guid,\r\n };\r\n }\r\n\r\n apply = () => {\r\n this.props.logExpInfo('1 recommendation applied');\r\n const ops = this.buildRequestOptions(true);\r\n this.props.track(ops);\r\n }\r\n\r\n dismiss = () => {\r\n const ops = this.buildRequestOptions(false);\r\n this.props.track(ops);\r\n }\r\n\r\n isTheRowCurrent(rowIndex) {\r\n return this.props.hasLastRowAsCurrent &&\r\n rowIndex === this.props.bodies.length - 1;\r\n }\r\n\r\n generateInputId(index) {\r\n return `${this.props.name}_${index}`;\r\n }\r\n\r\n buildHeaders(hidenIndexes, end = this.props.headers.length) {\r\n const { headers, helpTopics, singleSelection } = this.props;\r\n const headersElements = [];\r\n _.each(\r\n headers.slice(0, end),\r\n (headerText, index) => {\r\n if (_.contains(hidenIndexes, index)) {\r\n return;\r\n }\r\n const originalIndex = index;\r\n const help = helpTopics[originalIndex] ?\r\n () : null;\r\n let header = null;\r\n\r\n if (originalIndex !== 0 || singleSelection) {\r\n header = headerText;\r\n } else {\r\n const inputId = this.generateInputId(-1);\r\n header = (\r\n \r\n {headerText}\r\n );\r\n }\r\n headersElements.push(
{header}{help}
);\r\n }\r\n );\r\n\r\n return headersElements;\r\n }\r\n\r\n buildActionPanel() {\r\n const {\r\n title, bodies, i18n, singleSelection, columns, children, readOnly,\r\n } = this.props;\r\n const currentString = `(${i18n.getString('Details_View_Current')})`;\r\n\r\n const bodiesElements = _.map(bodies, (row, rowIndex) => {\r\n const config = columns[0];\r\n let input = null;\r\n let value = formatIncreasedValue(row[0], config.isIncrease);\r\n let className = 'cell';\r\n\r\n const inputId = this.generateInputId(rowIndex);\r\n\r\n if (this.isTheRowCurrent(rowIndex)) {\r\n value = `${value} ${currentString}`;\r\n } else if (singleSelection) {\r\n input = ();\r\n className += ' radio';\r\n } else {\r\n input = (\r\n );\r\n className += ' checkbox';\r\n }\r\n\r\n return (\r\n
\r\n {input ? (\r\n ) : {value}\r\n }\r\n
\r\n );\r\n });\r\n\r\n const disabled = readOnly || (!singleSelection && !_.some(this.state.rowState));\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n buildEstimatesGridCell(rowIndex, colIndex, cellContent, config) {\r\n const isCurrentRow = this.isTheRowCurrent(rowIndex);\r\n\r\n let icon = null;\r\n if (config.enableCheckedIcon && this.props.singleSelection) {\r\n const hasIcon = rowIndex >= this.state.selectedRow;\r\n icon = ;\r\n }\r\n const cell = (\r\n
\r\n \r\n {cellContent && icon}\r\n {formatIncreasedValue(cellContent, config.isIncrease && !isCurrentRow)}\r\n \r\n
);\r\n\r\n return cell;\r\n }\r\n\r\n buildEstimatesPanel() {\r\n // Set auto hide columns\r\n const configs = this.props.columns;\r\n const hidenIndexes = [0];\r\n _.each(configs, (config, index) => {\r\n if (config && config.autoHide && _.every(this.props.bodies, body => body[index] === '0')) {\r\n hidenIndexes.push(index);\r\n }\r\n });\r\n\r\n const title = this.props.i18n.getString('Details_View_Weekly_Estimates');\r\n const bodiesElements = _.map(this.props.bodies, (row, rowIndex) => {\r\n const cells = [];\r\n _.each(row, (cell, col) => {\r\n if (!_.contains(hidenIndexes, col)) {\r\n cells.push(this.buildEstimatesGridCell(rowIndex, cells.length + 1, cell, configs[col]));\r\n }\r\n });\r\n return (\r\n \r\n {cells}\r\n \r\n );\r\n });\r\n\r\n return (\r\n } // this is for align action and estimates tables\r\n />);\r\n }\r\n\r\n render() {\r\n const { rowClass } = this.props;\r\n return (\r\n \r\n
\r\n {this.buildActionPanel()}\r\n
\r\n
\r\n {this.buildEstimatesPanel()}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { BingMapView } from '@bingads-webui-campaign-react/recommendation-visuals';\r\nimport { AdvisorChart } from '@bingads-webui-campaign-react/advisor-chart';\r\nimport {\r\n VISUAL_TYPES,\r\n withTrack,\r\n ADINSIGHT_LOG_API_NAME,\r\n ADINSIGHT_LOG_ACTION_TYPE,\r\n isCompetition,\r\n RECOMMENDATION_IDS,\r\n CHANNEL_TYPES,\r\n} from '@bingads-webui-campaign/recommendation-core';\r\n\r\nimport { FormActionWithEstimates } from './form-action-with-estimates';\r\nimport { UnEditableSimpleForm } from './uneditable-simple-form';\r\nimport { GridActionWithEstimates } from './grid-action-with-estimates';\r\n\r\nclass individualRecommendation extends React.PureComponent {\r\n static propTypes = {\r\n actionTitle: PropTypes.string,\r\n insightTitle: PropTypes.string.isRequired,\r\n visualType: PropTypes.string.isRequired,\r\n visualData: PropTypes.oneOfType([\r\n PropTypes.array,\r\n PropTypes.objectOf(PropTypes.any),\r\n ]).isRequired,\r\n estimates: PropTypes.objectOf(PropTypes.any),\r\n actionDataInForm: PropTypes.objectOf(PropTypes.any),\r\n actionDataInGrid: PropTypes.objectOf(PropTypes.any),\r\n actionTitleExtraForm: PropTypes.arrayOf(PropTypes.object),\r\n name: PropTypes.string.isRequired,\r\n deps: PropTypes.shape({\r\n i18n: PropTypes.PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n locationMap: PropTypes.func.isRequired,\r\n }).isRequired,\r\n track: PropTypes.func.isRequired,\r\n type: PropTypes.string.isRequired,\r\n index: PropTypes.number.isRequired,\r\n currency: PropTypes.string.isRequired,\r\n currentActivity: PropTypes.objectOf(PropTypes.any).isRequired,\r\n readOnly: PropTypes.bool.isRequired,\r\n context: PropTypes.shape({\r\n Level: PropTypes.string.isRequired,\r\n }).isRequired,\r\n guid: PropTypes.string.isRequired, // for adinsight view event log in aria\r\n logExpInfo: PropTypes.func.isRequired,\r\n };\r\n\r\n static defaultProps = {\r\n estimates: null,\r\n actionDataInForm: null,\r\n actionDataInGrid: null,\r\n actionTitleExtraForm: null,\r\n actionTitle: '',\r\n };\r\n\r\n constructor() {\r\n super();\r\n this.actionRef = React.createRef();\r\n }\r\n\r\n getUserInputs() {\r\n return this.actionRef.current.getUserInputs(true, true);\r\n }\r\n\r\n // this is for adinsight aria listener\r\n logOpportunityEvent = ({ opportunityId, campaignId }) => {\r\n let api = ADINSIGHT_LOG_API_NAME.RECOMMENDATION;\r\n let channel = CHANNEL_TYPES.RECOMMENDATION;\r\n if (isCompetition(this.props.type)) {\r\n api = ADINSIGHT_LOG_API_NAME.COMPETITION;\r\n channel = CHANNEL_TYPES.COMPETITION;\r\n }\r\n\r\n this.props.currentActivity.trace({\r\n id: opportunityId,\r\n type: this.props.type,\r\n typeId: RECOMMENDATION_IDS[this.props.type],\r\n action: ADINSIGHT_LOG_ACTION_TYPE.VIEW,\r\n campaignId,\r\n channel,\r\n context: JSON.stringify(this.props.context),\r\n guid: this.props.guid,\r\n }, api);\r\n }\r\n\r\n initializeChart() {\r\n const {\r\n visualType,\r\n visualData,\r\n deps: { locationMap, i18n },\r\n } = this.props;\r\n\r\n let chart = null;\r\n switch (visualType) {\r\n case VISUAL_TYPES.LINE_WEEKLY_CHART:\r\n case VISUAL_TYPES.COLUMN_CHART:\r\n case VISUAL_TYPES.LINE_CHART:\r\n case VISUAL_TYPES.LINE_COLUMN_CHART:\r\n case VISUAL_TYPES.SEARCH_TERMS_CHART:\r\n chart = ();\r\n break;\r\n case VISUAL_TYPES.TABLE:\r\n chart = ;\r\n break;\r\n case VISUAL_TYPES.MAP:\r\n chart = ;\r\n break;\r\n default:\r\n break;\r\n }\r\n return chart;\r\n }\r\n\r\n render() {\r\n const {\r\n deps: { i18n },\r\n insightTitle,\r\n actionTitle,\r\n actionDataInForm,\r\n estimates,\r\n actionDataInGrid,\r\n actionTitleExtraForm,\r\n name,\r\n type,\r\n track,\r\n currency,\r\n readOnly,\r\n context,\r\n guid,\r\n logExpInfo,\r\n } = this.props;\r\n\r\n const gridRowIndex = (this.props.index + 1) * 2;\r\n const gridSeparatorRowIndex = gridRowIndex + 1;\r\n const rowClass = `action-details-row-${gridRowIndex}`;\r\n const separatorRowClass = `action-details-row-${gridSeparatorRowIndex}`;\r\n\r\n const commonOptionsForActionAndEstimates = {\r\n title: actionTitle,\r\n i18n,\r\n track,\r\n type,\r\n ref: this.actionRef,\r\n logOpportunityEvent: this.logOpportunityEvent,\r\n readOnly,\r\n context,\r\n guid,\r\n logExpInfo,\r\n };\r\n let actionAndEstimates = null;\r\n if (actionDataInGrid) {\r\n actionAndEstimates = (\r\n \r\n {actionTitleExtraForm &&\r\n }\r\n );\r\n } else {\r\n actionAndEstimates = (\r\n );\r\n }\r\n\r\n return (\r\n \r\n
\r\n \r\n {this.initializeChart()}\r\n
\r\n
\r\n {actionAndEstimates}\r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nexport const IndividualRecommendation = withTrack(/* withAll */ false)(individualRecommendation);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\n\r\nimport {\r\n savePreferences,\r\n COMPETITION_RECOMMENDATION_PAGE_SIZES,\r\n} from '@bingads-webui-campaign/recommendation-core';\r\nimport { Pagination } from '@bingads-webui-react/pagination';\r\n\r\nimport { IndividualRecommendation } from './individual-recommendation';\r\n\r\nconst childName = index => `reco-${index}`;\r\n\r\nexport class DetailsRecommendations extends React.PureComponent {\r\n static propTypes = {\r\n data: PropTypes.arrayOf(PropTypes.any).isRequired,\r\n deps: PropTypes.shape({\r\n i18n: PropTypes.PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n locationMap: PropTypes.func.isRequired,\r\n preferencesService: PropTypes.objectOf(PropTypes.any).isRequired,\r\n }).isRequired,\r\n type: PropTypes.string.isRequired,\r\n dataService: PropTypes.objectOf(PropTypes.any).isRequired,\r\n reload: PropTypes.func.isRequired,\r\n el: PropTypes.string.isRequired,\r\n preferencesName: PropTypes.string.isRequired,\r\n pageSize: PropTypes.number.isRequired,\r\n pageNumber: PropTypes.number.isRequired,\r\n total: PropTypes.number.isRequired,\r\n currency: PropTypes.string.isRequired,\r\n currentActivity: PropTypes.objectOf(PropTypes.any).isRequired,\r\n readOnly: PropTypes.bool.isRequired,\r\n context: PropTypes.shape({\r\n Level: PropTypes.string.isRequired,\r\n }).isRequired,\r\n guid: PropTypes.string.isRequired, // for adinsight view event log in aria\r\n };\r\n\r\n constructor() {\r\n super();\r\n this.recommendationRefs = {};\r\n this.storeCurrentPageRecommendationRef = (ref) => {\r\n if (ref !== null) {\r\n const {\r\n props: { name },\r\n } = ref;\r\n this.recommendationRefs[name] = ref;\r\n }\r\n };\r\n }\r\n\r\n getUserInputs() {\r\n const inputs = [];\r\n _.each(this.props.data, (recommendation, index) => {\r\n const recommendationRef = this.recommendationRefs[childName(index)];\r\n const inputsArr = recommendationRef.getUserInputs();\r\n if (inputsArr) {\r\n inputs.push(...inputsArr);\r\n }\r\n });\r\n\r\n return _.isEmpty(inputs) ? null : inputs;\r\n }\r\n\r\n savePageInformationToPreference(pageSize) {\r\n savePreferences(\r\n this.props.deps.preferencesService,\r\n this.props.preferencesName,\r\n {\r\n pageSize,\r\n }\r\n );\r\n }\r\n\r\n handlePageSizeChange = (e) => {\r\n this.savePageInformationToPreference(parseInt(e.target.value, 10));\r\n this.props.reload({\r\n pageNumber: 0,\r\n });\r\n }\r\n\r\n handlePageNumberChange = (pageNumber) => {\r\n this.props.reload({\r\n pageNumber,\r\n });\r\n }\r\n\r\n render() {\r\n const {\r\n data, deps, reload, pageNumber, pageSize, total,\r\n } = this.props;\r\n const { i18n } = deps;\r\n\r\n const passThroughPropsToIndividual = [\r\n 'deps', 'type', 'dataService', 'el', 'currency',\r\n 'currentActivity', 'readOnly', 'context', 'guid',\r\n 'logExpInfo',\r\n ];\r\n const recommendationsInCurrentPage =\r\n _.map(data, (recommendation, index) =>\r\n ());\r\n\r\n const pageSizeOption = _.map(COMPETITION_RECOMMENDATION_PAGE_SIZES, (pageSizeVal, index) => (\r\n ));\r\n\r\n const pagination = (\r\n
\r\n
\r\n {i18n.getString('Details_View_Show_Rows')}\r\n
\r\n
\r\n \r\n
\r\n {total > pageSize &&\r\n
\r\n \r\n
\r\n }\r\n
);\r\n\r\n const isFormAction = !_.isEmpty(data[0].actionDataInForm);\r\n const gridStyle = isFormAction ? 'form-action-details-grid' : 'grid-action-details-grid';\r\n\r\n return (\r\n
\r\n
\r\n {i18n.getString('Details_View_Whats_Going_On')}\r\n
\r\n
\r\n
\r\n {i18n.getString('Details_View_What_You_Can_Do')}\r\n
\r\n\r\n
\r\n
\r\n {i18n.getString('Details_View_Whats_You_Could_Get')}\r\n
\r\n {recommendationsInCurrentPage}\r\n {pagination}\r\n
\r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\n\r\nimport { FeedbackModal } from '@bingads-webui-campaign-react/recommendation-feedback-modal';\r\nimport {\r\n CHANNEL_TYPES,\r\n APPLY_ACTION_TYPES,\r\n withTrack,\r\n isCompetition,\r\n} from '@bingads-webui-campaign/recommendation-core';\r\nimport {\r\n ToolbarButton,\r\n DownloadToolbarButton,\r\n} from '@bingads-webui-campaign-react/recommendation-visuals';\r\n\r\nclass detailsToolbar extends React.PureComponent {\r\n static propTypes = {\r\n title: PropTypes.string,\r\n i18n: PropTypes.PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n viewSummary: PropTypes.func.isRequired,\r\n getUserInputs: PropTypes.func.isRequired,\r\n type: PropTypes.string.isRequired,\r\n aggregateLevel: PropTypes.string,\r\n campaignAdGroups: PropTypes.arrayOf(PropTypes.object).isRequired,\r\n track: PropTypes.func.isRequired,\r\n callback: PropTypes.func.isRequired,\r\n children: PropTypes.element,\r\n total: PropTypes.number.isRequired,\r\n readOnly: PropTypes.bool.isRequired,\r\n context: PropTypes.shape({\r\n Level: PropTypes.string.isRequired,\r\n }).isRequired,\r\n guid: PropTypes.string.isRequired,\r\n logExpInfo: PropTypes.func.isRequired,\r\n updateToolbar: PropTypes.func,\r\n initialToolbarConfig: PropTypes.objectOf(PropTypes.any),\r\n scope: PropTypes.string,\r\n };\r\n\r\n static defaultProps = {\r\n title: '',\r\n children: null,\r\n aggregateLevel: null,\r\n updateToolbar: _.noop,\r\n initialToolbarConfig: null,\r\n scope: null,\r\n };\r\n\r\n state = {\r\n modal: {\r\n isOpen: false,\r\n },\r\n };\r\n\r\n componentDidMount() {\r\n const {\r\n i18n,\r\n viewSummary,\r\n total,\r\n readOnly,\r\n updateToolbar,\r\n initialToolbarConfig,\r\n scope,\r\n } = this.props;\r\n const shouldDisable = total === 0;\r\n const channel = isCompetition(this.props.type) ?\r\n CHANNEL_TYPES.COMPETITION : CHANNEL_TYPES.RECOMMENDATION;\r\n const enableToolbarVNext = initialToolbarConfig;\r\n if (enableToolbarVNext) {\r\n let toolbarItems = [{\r\n id: 'back-to-summary',\r\n content: this.getBackToSummaryButton(viewSummary, i18n),\r\n }];\r\n if (scope === 'AdGroup') {\r\n toolbarItems.push({\r\n id: 'expander',\r\n content:
,\r\n });\r\n }\r\n toolbarItems = toolbarItems.concat([\r\n {\r\n id: 'apply-all',\r\n content: this.getApplyAllButton(shouldDisable, readOnly, i18n),\r\n },\r\n {\r\n id: 'dismiss-all',\r\n content: this.getDismissAllButton(shouldDisable, readOnly, i18n),\r\n },\r\n {\r\n id: 'button-download',\r\n content: this.getDownloadButton(shouldDisable, channel),\r\n },\r\n {\r\n id: 'reject-all',\r\n content: this.getRejectAllButton(shouldDisable, i18n),\r\n },\r\n ]);\r\n updateToolbar(toolbarItems, true);\r\n }\r\n }\r\n\r\n getBackToSummaryButton = (viewSummary, i18n) => (\r\n \r\n {}\r\n {i18n.getString('Details_View_Back_To_Summary')}\r\n \r\n )\r\n\r\n getApplyAllButton = (shouldDisable, readOnly, i18n) => (\r\n \r\n { }\r\n {i18n.getString('Details_View_Apply_All')}\r\n \r\n )\r\n\r\n getDismissAllButton = (shouldDisable, readOnly, i18n) => (\r\n \r\n {}\r\n {i18n.getString('Details_View_Dismiss_All')}\r\n \r\n )\r\n\r\n getDownloadButton = (shouldDisable, channel) => (\r\n \r\n )\r\n\r\n getRejectAllButton = (shouldDisable, i18n) => (\r\n \r\n { }\r\n {i18n.getString('Details_View_Reject_All')}\r\n \r\n )\r\n\r\n buildDefaultRequestOptions = () => (\r\n {\r\n type: this.props.type,\r\n campaignAdGroups: this.props.campaignAdGroups,\r\n channel: isCompetition(this.props.type) ?\r\n CHANNEL_TYPES.COMPETITION : CHANNEL_TYPES.RECOMMENDATION,\r\n applyOpportunitiesLevel: this.props.aggregateLevel,\r\n context: this.props.context,\r\n guid: this.props.guid,\r\n }\r\n )\r\n\r\n applyAll = () => {\r\n const defaultOptions = this.buildDefaultRequestOptions();\r\n const userInputs = this.props.getUserInputs();\r\n const ops = _.extend(defaultOptions, {\r\n userAction: APPLY_ACTION_TYPES.ACCEPT,\r\n }, userInputs && { userInputs });\r\n\r\n // eslint-disable-next-line no-alert, no-restricted-globals\r\n if (!confirm(this.props.i18n.getString('Recommendation_Apply_All_Confirm', {\r\n count: this.props.total,\r\n }))) {\r\n return;\r\n }\r\n\r\n const action = `${this.props.total} recommendations applied`;\r\n this.props.logExpInfo(action);\r\n\r\n this.props.track(ops);\r\n }\r\n\r\n dismissAll = () => {\r\n const defaultOptions = this.buildDefaultRequestOptions();\r\n const ops = _.extend(defaultOptions, {\r\n userAction: APPLY_ACTION_TYPES.DISMISS,\r\n });\r\n\r\n // eslint-disable-next-line no-alert, no-restricted-globals\r\n if (!confirm(this.props.i18n.getString('Recommendation_Dismiss_All_Confirm', {\r\n count: this.props.total,\r\n }))) {\r\n return;\r\n }\r\n\r\n this.props.track(ops);\r\n }\r\n\r\n handleReject = () => {\r\n const defaultOptions = this.buildDefaultRequestOptions();\r\n\r\n this.setState({\r\n modal: {\r\n isOpen: true,\r\n recommendationDescription: this.props.title,\r\n isProvideFeedbackOnly: false,\r\n data: defaultOptions,\r\n },\r\n });\r\n }\r\n\r\n handleFeedbackSubmit = () => {\r\n this.setState({ modal: { isOpen: false } }, () => {\r\n this.props.callback();\r\n });\r\n };\r\n\r\n handleFeedbackCancel = () => {\r\n this.setState({ modal: { isOpen: false } });\r\n };\r\n\r\n render() {\r\n const {\r\n i18n,\r\n viewSummary,\r\n children,\r\n total,\r\n readOnly,\r\n initialToolbarConfig,\r\n } = this.props;\r\n const shouldDisable = total === 0;\r\n const channel = isCompetition(this.props.type) ?\r\n CHANNEL_TYPES.COMPETITION : CHANNEL_TYPES.RECOMMENDATION;\r\n const enableToolbarVNext = initialToolbarConfig;\r\n const toolbar = enableToolbarVNext ? (\r\n
\r\n {children}\r\n
\r\n ) : (\r\n
\r\n {this.getBackToSummaryButton(viewSummary, i18n)}\r\n {this.getApplyAllButton(shouldDisable, readOnly, i18n)}\r\n {this.getDismissAllButton(shouldDisable, readOnly, i18n)}\r\n {this.getDownloadButton(shouldDisable, channel)}\r\n { /* reject is not disabled for readOnly but the modal submit button is */ }\r\n {this.getRejectAllButton(shouldDisable, i18n)}\r\n {children}\r\n
\r\n );\r\n return (\r\n
\r\n {toolbar}\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport const DetailsToolbar = withTrack(/* withAll */ true)(detailsToolbar);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\n\r\nimport { OverridableToolbarView } from '@bingads-webui/toolbar';\r\nimport {\r\n CampaignAdgroupSelectorFilterAgent,\r\n EmptyFilterView,\r\n} from '@bingads-webui-campaign-react/campaign-adgroup-selector-filter';\r\n\r\nimport {\r\n withGetSummary,\r\n getDetailsViewModel,\r\n} from '@bingads-webui-campaign/recommendation-core';\r\n\r\nimport { DetailsSummary } from './details-summary';\r\nimport { DetailsRecommendations } from './details-recommendations';\r\n\r\nimport { DetailsToolbar } from './details-toolbar';\r\n\r\nclass detailsView extends React.PureComponent {\r\n static propTypes = {\r\n context: PropTypes.shape({\r\n Level: PropTypes.string.isRequired,\r\n }).isRequired,\r\n data: PropTypes.objectOf(PropTypes.any),\r\n campaignAdGroups: PropTypes.arrayOf(PropTypes.object),\r\n deps: PropTypes.shape({\r\n sessionStore: PropTypes.object.isRequired,\r\n i18n: PropTypes.object.isRequired,\r\n filterPreferences: PropTypes.shape({\r\n getFilters: PropTypes.func,\r\n }).isRequired,\r\n cacheService: PropTypes.object.isRequired,\r\n jsdata: PropTypes.object.isRequired,\r\n edmCampaign: PropTypes.object.isRequired,\r\n dataContextManager: PropTypes.object.isRequired,\r\n locationMap: PropTypes.func.isRequired,\r\n preferencesService: PropTypes.objectOf(PropTypes.any).isRequired,\r\n appConfig: PropTypes.objectOf(PropTypes.any).isRequired,\r\n constants: PropTypes.shape({\r\n imagePath: PropTypes.string.isRequired,\r\n }).isRequired,\r\n permissions: PropTypes.object.isRequired,\r\n }).isRequired,\r\n currency: PropTypes.string.isRequired,\r\n scope: PropTypes.shape({\r\n levelAt: PropTypes.string.isRequired,\r\n }).isRequired,\r\n type: PropTypes.string.isRequired,\r\n reload: PropTypes.func.isRequired,\r\n dataService: PropTypes.objectOf(PropTypes.any).isRequired,\r\n viewSummary: PropTypes.func.isRequired,\r\n el: PropTypes.string.isRequired,\r\n filterConfig: PropTypes.objectOf(PropTypes.any).isRequired,\r\n filterService: PropTypes.objectOf(PropTypes.any).isRequired,\r\n preferencesName: PropTypes.string.isRequired,\r\n pageSize: PropTypes.number,\r\n pageNumber: PropTypes.number,\r\n currentActivity: PropTypes.objectOf(PropTypes.any).isRequired,\r\n hasFilter: PropTypes.bool.isRequired,\r\n readOnly: PropTypes.bool,\r\n guid: PropTypes.string.isRequired, // for adinsight view event log in aria\r\n initialToolbarConfig: PropTypes.objectOf(PropTypes.any),\r\n // eslint-disable-next-line react/forbid-prop-types\r\n toolbar: PropTypes.any,\r\n };\r\n\r\n static defaultProps = {\r\n data: null,\r\n campaignAdGroups: null,\r\n pageSize: null,\r\n pageNumber: null,\r\n readOnly: false,\r\n initialToolbarConfig: null,\r\n toolbar: null,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.upperToolBarInstance = new OverridableToolbarView({\r\n items: [{\r\n type: 'dropdown',\r\n id: 'filter-menu',\r\n }],\r\n });\r\n this.recommendationsRef = React.createRef();\r\n this.state = {\r\n toolbarConfig: props.initialToolbarConfig,\r\n hideToolbar: false,\r\n appliedFilter: undefined,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.upperToolBarInstance.render();\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (this.props.type !== prevProps.type) {\r\n this.logMessage(`reload page: props.type changed from ${prevProps.type} to ${this.props.type}`);\r\n this.props.reload();\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.upperToolBarInstance.remove();\r\n }\r\n\r\n onFilterStateChanged = () => {\r\n this.logMessage('reload page: filter state changed');\r\n this.props.reload();\r\n }\r\n\r\n getUserInputs = () => {\r\n const instance = this.recommendationsRef.current;\r\n return instance.getUserInputs();\r\n }\r\n\r\n updateToolbar = (values, forceUpdate) => {\r\n _.each(_.isArray(values) ? values : [values], (value) => {\r\n const { id } = value;\r\n\r\n if (this.state.toolbarConfig.has(id)) {\r\n this.state.toolbarConfig.set(id, _.extend(this.state.toolbarConfig.get(id), value));\r\n this.setState({\r\n toolbarConfig: this.state.toolbarConfig,\r\n });\r\n if (id === 'predicate-list' && !_.isEqual(this.state.appliedFilter, this.props.filterService.editableFilter)) {\r\n this.setState({\r\n appliedFilter: this.props.filterService.editableFilter,\r\n });\r\n this.forceUpdate();\r\n } else if (forceUpdate) {\r\n this.forceUpdate();\r\n }\r\n }\r\n });\r\n }\r\n\r\n resetToolbarVisibility = ({ forceHideToolbar }) => {\r\n this.setState({\r\n hideToolbar: forceHideToolbar,\r\n });\r\n }\r\n\r\n logMessage(msg) {\r\n this.props.currentActivity.trace(msg, 'recommendation/details');\r\n }\r\n\r\n render() {\r\n this.logMessage(`view detailed competition recommendations for opportunity type ${this.props.type}`);\r\n\r\n const hasData = this.props.data && this.props.data[this.props.type];\r\n let summaryView = null;\r\n let detailsRecommendationsView = null;\r\n let emptyView = null;\r\n let opForToolBar = _.extend({\r\n i18n: this.props.deps.i18n,\r\n getUserInputs: this.getUserInputs,\r\n callback: this.props.viewSummary,\r\n total: 0,\r\n initialToolbarConfig: this.props.initialToolbarConfig,\r\n }, _.pick(this.props, 'context', 'dataService', 'downloadService', 'el', 'filterService', 'type', 'viewSummary', 'campaignAdGroups', 'readOnly', 'guid'));\r\n\r\n if (hasData) {\r\n const normalizedData = this.props.data[this.props.type];\r\n const {\r\n deps: {\r\n locationMap, i18n, preferencesService, appConfig,\r\n },\r\n } = this.props;\r\n const { summary, recommendations } = getDetailsViewModel(_.extend(\r\n {},\r\n normalizedData, {\r\n i18n,\r\n currency: this.props.currency,\r\n scope: this.props.scope.levelAt,\r\n appConfig,\r\n permissions: this.props.deps.permissions,\r\n }\r\n ));\r\n const op = _.defaults({\r\n data: recommendations,\r\n deps: { locationMap, i18n, preferencesService },\r\n total: normalizedData.recommendationsCount,\r\n }, _.pick(\r\n this.props,\r\n 'context',\r\n 'dataService',\r\n 'el',\r\n 'preferencesName',\r\n 'reload',\r\n 'type',\r\n 'pageSize',\r\n 'pageNumber',\r\n 'currency',\r\n 'currentActivity',\r\n 'readOnly',\r\n 'guid',\r\n 'logExpInfo'\r\n ));\r\n\r\n summaryView = ;\r\n detailsRecommendationsView = ();\r\n\r\n opForToolBar = _.extend(opForToolBar, {\r\n scope: this.props.scope.levelAt,\r\n aggregateLevel: normalizedData.level,\r\n total: op.total,\r\n logExpInfo: op.logExpInfo,\r\n updateToolbar: this.updateToolbar,\r\n }, summary);\r\n } else if (this.props.hasFilter) {\r\n this.logMessage('there is no filter result, will show empty filter view');\r\n emptyView = ();\r\n } else {\r\n this.logMessage('there is no data, will direct to summary view');\r\n this.props.viewSummary();\r\n }\r\n\r\n if (this.props.filterService) {\r\n this.props.filterService.on('filter-state-changed', this.onFilterStateChanged);\r\n }\r\n let toolbarVNext = null;\r\n if (this.props.initialToolbarConfig) {\r\n const ToolbarFilterbarSet = this.props.toolbar;\r\n toolbarVNext = ();\r\n }\r\n\r\n return (\r\n
\r\n {summaryView}\r\n \r\n {this.props.initialToolbarConfig ? toolbarVNext : (\r\n \r\n )}\r\n \r\n {detailsRecommendationsView}\r\n {emptyView}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport const DetailsView = withGetSummary(/* withDetails */ true)(detailsView);\r\n","import React, { Fragment } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport { levelAtConstant } from '@bingads-webui-campaign/scope-constants';\r\nimport {\r\n RECOMMENDATIOIN_SUMMARY_APPLY_FAILED_RESULTS,\r\n ADINSIGHT_LOG_API_NAME,\r\n CHANNEL_TYPES,\r\n RECOMMENDATION_IDS,\r\n ADINSIGHT_LOG_ACTION_TYPE,\r\n CONTEXTUAL_ENTITY_TYPE,\r\n DOWNLOAD_SCOPE,\r\n RECOMMENDATION_TYPES,\r\n} from '@bingads-webui-campaign/recommendation-core';\r\nimport { formatNotificationLocalizedKey } from '@bingads-webui-campaign/recommendation-notification';\r\nimport { RecommendationStatusLightbox } from '@bingads-webui-campaign/recommendation-status-lightbox';\r\nimport { getSessionStorage } from '@bingads-webui/storage';\r\n\r\nimport {\r\n NewRecommendationsGrid,\r\n getConfig,\r\n isPopupEditorEnabledRecommendationType,\r\n filterByOpportunityId,\r\n removeFilter,\r\n} from '@bingads-webui-campaign/recommendation-grid';\r\n\r\nimport { getToolbarConfig } from './toolbar-config';\r\n\r\nexport class RecommendationsGridContainer extends React.Component {\r\n static propTypes = {\r\n recommendationService: PropTypes.shape({\r\n getSummary: PropTypes.func.isRequired,\r\n getCount: PropTypes.func.isRequired,\r\n track: PropTypes.func.isRequired,\r\n }).isRequired,\r\n downloadService: PropTypes.objectOf(PropTypes.any),\r\n scope: PropTypes.shape({\r\n customerId: PropTypes.number.isRequired,\r\n accountId: PropTypes.number.isRequired,\r\n levelAt: PropTypes.string.isRequired,\r\n campaignId: PropTypes.number,\r\n }).isRequired,\r\n vnextDeps: PropTypes.shape({\r\n newI18n: PropTypes.PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n getCrossPageSelectPlugin: PropTypes.func.isRequired,\r\n getToolbarPlugin: PropTypes.func.isRequired,\r\n StyledGridViewWrapper: PropTypes.objectOf(PropTypes.any),\r\n StyledTablePageContainer: PropTypes.objectOf(PropTypes.any),\r\n ToolbarContainer: PropTypes.objectOf(PropTypes.any),\r\n GoalCreationRecommendationWizard: PropTypes.objectOf(PropTypes.any),\r\n }).isRequired,\r\n deps: PropTypes.objectOf(PropTypes.any),\r\n recommendationType: PropTypes.string,\r\n campaignType: PropTypes.number,\r\n onEvent: PropTypes.func.isRequired,\r\n context: PropTypes.shape({\r\n Level: PropTypes.string.isRequired,\r\n }).isRequired,\r\n i18n: PropTypes.PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n guid: PropTypes.string, // for adinsight view event log in aria\r\n version: PropTypes.number.isRequired,\r\n primaryEstimate: PropTypes.string,\r\n // eslint-disable-next-line react/forbid-prop-types, react/require-default-props\r\n perfMarker: PropTypes.object,\r\n isMCC: PropTypes.bool,\r\n topOfGridContent: PropTypes.node,\r\n readOnly: PropTypes.bool,\r\n channel: PropTypes.string,\r\n compact: PropTypes.bool,\r\n overallOptimizationScoreBar: PropTypes.shape({\r\n Gained: PropTypes.number,\r\n Dismissed: PropTypes.number,\r\n Available: PropTypes.number,\r\n }),\r\n viewDetails: PropTypes.func,\r\n recommendationTypesAvailable: PropTypes.arrayOf(PropTypes.string),\r\n newI18n: PropTypes.PropTypes.shape({\r\n getString: PropTypes.func,\r\n }),\r\n s$i18n: PropTypes.PropTypes.shape({\r\n value: PropTypes.func,\r\n }),\r\n data: PropTypes.objectOf(PropTypes.any),\r\n isOptimizationScoreOn: PropTypes.bool,\r\n serverContext: PropTypes.shape({}),\r\n setData: PropTypes.func.isRequired,\r\n setDataFromDetails: PropTypes.func.isRequired,\r\n viewUET: PropTypes.func,\r\n };\r\n\r\n static defaultProps = {\r\n deps: {},\r\n downloadService: null,\r\n recommendationType: null,\r\n campaignType: null,\r\n isMCC: false,\r\n guid: null,\r\n primaryEstimate: '',\r\n topOfGridContent: null,\r\n readOnly: false,\r\n channel: undefined,\r\n compact: false,\r\n overallOptimizationScoreBar: false,\r\n viewDetails: _.noop,\r\n recommendationTypesAvailable: [],\r\n newI18n: {\r\n getString: _.noop,\r\n },\r\n s$i18n: {\r\n value: _.noop,\r\n },\r\n data: {},\r\n isOptimizationScoreOn: false,\r\n serverContext: {},\r\n viewUET: _.noop,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n const {\r\n deps,\r\n i18n,\r\n recommendationType,\r\n recommendationService,\r\n downloadService,\r\n onEvent,\r\n context,\r\n guid,\r\n version,\r\n perfMarker,\r\n primaryEstimate,\r\n isMCC,\r\n vnextDeps,\r\n readOnly,\r\n channel,\r\n compact,\r\n } = props;\r\n\r\n if (perfMarker) {\r\n this.perfMarker = perfMarker.createChild('RecommendationDetailsGrid', { autoEnd: true });\r\n this.perfMarker.willInit();\r\n }\r\n\r\n this.crossPageSelectPlugin = vnextDeps.getCrossPageSelectPlugin({\r\n updateGridSelectionState: this.updateGridSelectionState,\r\n });\r\n this.onSelectCrossPage = this.crossPageSelectPlugin.onSelectCrossPage;\r\n\r\n // toolbar settings begin\r\n this.toolbarConfig = this.getNewToolbarConfig();\r\n\r\n this.state = {\r\n showToolbarUnselected: true,\r\n showToolbarSelected: false,\r\n toolbarSelectedConfig: this.toolbarConfig.toolbarSelectedConfig,\r\n toolbarUnselectedConfig: this.toolbarConfig.toolbarUnselectedConfig,\r\n forceHideToolbar: false,\r\n backboneGridView: null,\r\n recommendationsGrid: null,\r\n };\r\n\r\n this.filterState = {};\r\n\r\n this.newToolBarPlugin = vnextDeps.getToolbarPlugin({\r\n resetVisibility: ({ forceHideToolbar }) => {\r\n this.setState({\r\n forceHideToolbar,\r\n toolbarSelectedConfig: this.toolbarConfig.toolbarSelectedConfig,\r\n toolbarUnselectedConfig: this.toolbarConfig.toolbarUnselectedConfig,\r\n });\r\n },\r\n resetToolbarMode: ({ showToolbarSelected, showToolbarUnselected }) => {\r\n this.updateToolbarConfig({ showToolbarSelected, showToolbarUnselected });\r\n },\r\n toolbarConfig: {\r\n toolbarSelectedConfig: this.state.toolbarSelectedConfig,\r\n toolbarUnselectedConfig: this.state.toolbarUnselectedConfig,\r\n },\r\n updateToolbar: () => {\r\n this.updateToolbarConfig();\r\n },\r\n }).plugin;\r\n // toolbar settings end\r\n\r\n this.deps = deps;\r\n this.i18n = i18n;\r\n this.recommendationType = recommendationType;\r\n this.recommendationService = recommendationService;\r\n this.downloadService = downloadService;\r\n this.onEvent = onEvent;\r\n this.isMCC = isMCC;\r\n this.context = context;\r\n this.guid = guid;\r\n this.version = version;\r\n this.primaryEstimate = primaryEstimate || '';\r\n this.readOnly = readOnly;\r\n this.channel = channel;\r\n this.compact = compact;\r\n }\r\n\r\n componentDidMount() {\r\n const { StyledGridViewWrapper, GoalCreationRecommendationWizard } = this.props.vnextDeps;\r\n\r\n const config = getConfig({\r\n deps: this.deps,\r\n i18n: this.i18n,\r\n newI18n: this.props.newI18n,\r\n s$i18n: this.props.s$i18n,\r\n recommendationType: this.recommendationType,\r\n recommendationService: this.recommendationService,\r\n campaignType: this.props.campaignType,\r\n el: $('.grid-and-disclaim-container'),\r\n downloadService: this.downloadService,\r\n onEvent: this.onEvent,\r\n view: this,\r\n logOpportunityEvent: this.logOpportunityEvent,\r\n perfMarker: this.perfMarker,\r\n context: this.props.context,\r\n guid: this.guid,\r\n primaryEstimate: this.primaryEstimate,\r\n isMCC: this.isMCC,\r\n router: this.router.bind(this),\r\n readOnly: this.readOnly,\r\n channel: this.channel,\r\n compact: this.compact,\r\n isOptimizationScoreOn: this.props.isOptimizationScoreOn,\r\n viewDetails: this.props.viewDetails,\r\n recommendationTypesAvailable: this.props.recommendationTypesAvailable,\r\n scope: this.props.scope,\r\n filterState: this.filterState,\r\n data: this.props.data && this.props.data[this.recommendationType],\r\n serverContext: this.props.serverContext,\r\n setData: this.props.setData,\r\n setDataFromDetails: this.props.setDataFromDetails,\r\n getGoalCreationRecommendationWizard: GoalCreationRecommendationWizard,\r\n viewUET: this.props.viewUET,\r\n });\r\n\r\n const backboneGridView = new NewRecommendationsGrid({\r\n i18n: this.i18n,\r\n deps: this.deps,\r\n config,\r\n logOpportunityEvent: this.logOpportunityEvent,\r\n recommendationType: this.recommendationType,\r\n recommendationService: this.recommendationService,\r\n downloadService: this.downloadService,\r\n crossPageSelectPlugin: this.crossPageSelectPlugin,\r\n newToolBarPlugin: this.newToolBarPlugin,\r\n onEvent: this.onEvent,\r\n readOnly: this.readOnly,\r\n isMCC: this.isMCC,\r\n compact: this.compact,\r\n s$i18n: this.props.s$i18n,\r\n newI18n: this.props.newI18n,\r\n });\r\n\r\n this.grid = backboneGridView.grid;\r\n\r\n // eslint-disable-next-line react/no-did-mount-set-state\r\n this.setState({\r\n recommendationsGrid: (),\r\n backboneGridView,\r\n });\r\n\r\n\r\n // notification lightbox\r\n const applyFailedResults = getSessionStorage().get(RECOMMENDATIOIN_SUMMARY_APPLY_FAILED_RESULTS); // eslint-disable-line\r\n const applyFailed = applyFailedResults !== null && applyFailedResults.recommendationType === this.recommendationType; // eslint-disable-line\r\n\r\n this.statusLightBox = new RecommendationStatusLightbox({\r\n results: applyFailed ? applyFailedResults.results : null,\r\n i18n: this.i18n,\r\n newI18n: this.props.newI18n,\r\n view: backboneGridView,\r\n filterByOpportunityId,\r\n removeFilter,\r\n recommendationType: this.recommendationType,\r\n formatNotificationLocalizedKey,\r\n currentActivity: this.recommendationService.currentActivity,\r\n });\r\n this.statusLightBox.render();\r\n\r\n if (applyFailed) {\r\n this.statusLightBox.trigger('show');\r\n } else {\r\n getSessionStorage().clear();\r\n }\r\n\r\n $('.notification-container').append(this.statusLightBox.$el);\r\n }\r\n\r\n getNewToolbarConfig = () => {\r\n const {\r\n deps,\r\n i18n,\r\n newI18n,\r\n recommendationType,\r\n onEvent,\r\n readOnly,\r\n compact,\r\n context,\r\n } = this.props;\r\n\r\n const newToolbarConfig = getToolbarConfig({\r\n recommendationType,\r\n gridView: this.grid && this.grid.gridView,\r\n i18n,\r\n newI18n,\r\n onSelectCrossPage: this.onSelectCrossPage,\r\n onEvent,\r\n readOnly,\r\n compact,\r\n permissions: deps.permissions,\r\n context,\r\n });\r\n\r\n if (_.isUndefined(this.toolbarConfig)) {\r\n return newToolbarConfig;\r\n }\r\n\r\n // Save original dropdown date filter button text in dropdownDateFilterButtonText\r\n const dropdownDateFilter =\r\n this.toolbarConfig.toolbarUnselectedConfig.get('dropdown-date-filter');\r\n let dropdownDateFilterButtonText;\r\n if (!_.isUndefined(dropdownDateFilter)) {\r\n dropdownDateFilterButtonText = dropdownDateFilter.button.text;\r\n }\r\n\r\n // Merge new toolbar config into the current one\r\n this.toolbarConfig.toolbarSelectedConfig.forEach((component, key) =>\r\n _.merge(component, newToolbarConfig.toolbarSelectedConfig.get(key)));\r\n this.toolbarConfig.toolbarUnselectedConfig.forEach((component, key) =>\r\n _.merge(component, newToolbarConfig.toolbarUnselectedConfig.get(key)));\r\n\r\n // Restore the original dropdowm date filter button text\r\n if (!_.isUndefined(dropdownDateFilterButtonText)) {\r\n this.toolbarConfig.toolbarUnselectedConfig.get('dropdown-date-filter').button.text =\r\n dropdownDateFilterButtonText;\r\n }\r\n\r\n return this.toolbarConfig;\r\n }\r\n\r\n updateToolbarConfig = (state) => {\r\n const {\r\n toolbarSelectedConfig,\r\n toolbarUnselectedConfig,\r\n } = this.getNewToolbarConfig();\r\n this.setState({\r\n toolbarSelectedConfig,\r\n toolbarUnselectedConfig,\r\n ...state,\r\n });\r\n }\r\n\r\n updateGridSelectionState = ({\r\n selectionCount,\r\n totalCount,\r\n isMultiPage,\r\n isSinglePageAllSelected,\r\n isCrossPageAllSelected,\r\n }) => {\r\n this.setState({\r\n selectionCount,\r\n totalCount,\r\n isMultiPage,\r\n isSinglePageAllSelected,\r\n isCrossPageAllSelected,\r\n });\r\n }\r\n\r\n router(e, data = null) { // data for panelEdit\r\n const target = $(e.target);\r\n // only account or campaign or adgroup contextual attribute can be clicked to redirect\r\n if (!_.contains([\r\n CONTEXTUAL_ENTITY_TYPE.CAMPAIGN,\r\n CONTEXTUAL_ENTITY_TYPE.ADGROUP,\r\n CONTEXTUAL_ENTITY_TYPE.ACCOUNT,\r\n ], target.data('type'))) { // eslint-disable-line\r\n return;\r\n }\r\n const levelAt = target.data('type');\r\n const entityid = target.data('entityid');\r\n const campaignId = target.data('entitycampaignid');\r\n const { scope } = this.recommendationService;\r\n const key = $(e.target).parents('tr[data-key]').data('key') || $(e.target).parents('tr[key]').attr('key');\r\n const recommendation = this.grid.gridView.itemWithKey(key) || data; // data for panelEdit\r\n const accountId = recommendation.Target.AccountId;\r\n\r\n if (isPopupEditorEnabledRecommendationType(this.recommendationType)\r\n && levelAt === levelAtConstant.ADGROUP) {\r\n return;\r\n }\r\n if (levelAt !== scope.levelAt) {\r\n const scopedata = {\r\n ...scope,\r\n levelAt,\r\n adGroupId: entityid,\r\n campaignId: campaignId || entityid,\r\n accountId,\r\n };\r\n this.onEvent('updateScope', scopedata);\r\n }\r\n }\r\n\r\n logOpportunityEvent = ({\r\n opportunityId = null,\r\n campaignId = null,\r\n input = null,\r\n type,\r\n action,\r\n accountId,\r\n context = {},\r\n }) => {\r\n this.recommendationService.currentActivity.trace({\r\n id: opportunityId,\r\n type,\r\n typeId: RECOMMENDATION_IDS[type],\r\n action,\r\n campaignId,\r\n channel: this.props.isMCC ? CHANNEL_TYPES.MCCRECOMMENDATION : CHANNEL_TYPES.RECOMMENDATION,\r\n context: action === ADINSIGHT_LOG_ACTION_TYPE.DOWNLOAD ?\r\n JSON.stringify(_.extend({\r\n Version: this.version,\r\n DownloadScope: DOWNLOAD_SCOPE.INDIVIDUAL,\r\n }, this.props.context)) :\r\n JSON.stringify(_.extend({}, this.props.context, context)),\r\n guid: this.guid,\r\n input,\r\n accountId,\r\n }, ADINSIGHT_LOG_API_NAME.RECOMMENDATION);\r\n }\r\n\r\n render() {\r\n const {\r\n forceHideToolbar,\r\n isCrossPageAllSelected,\r\n isMultiPage,\r\n isSinglePageAllSelected,\r\n selectionCount,\r\n showToolbarSelected,\r\n showToolbarUnselected,\r\n toolbarSelectedConfig,\r\n toolbarUnselectedConfig,\r\n totalCount,\r\n } = this.state;\r\n\r\n const {\r\n StyledTablePageContainer,\r\n ToolbarContainer,\r\n } = this.props.vnextDeps;\r\n\r\n const stickyTopOfGridContent = (\r\n \r\n
\r\n {\r\n this.setState({\r\n showToolbarSelected: false,\r\n showToolbarUnselected: true,\r\n });\r\n this.state.backboneGridView.grid.gridView.deselectAll();\r\n }}\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}\r\n","import _ from 'underscore';\r\nimport {\r\n SUPPORT_APPLY_TYPES,\r\n SUPPORT_DOWNLOAD_TYPES,\r\n SUPPORT_DISMISS_TYPES,\r\n SUPPORT_RESUBMIT_TYPES,\r\n SUPPORT_DATE_FILTER_TYPES,\r\n} from '@bingads-webui-campaign/recommendation-grid';\r\nimport {\r\n RECOMMENDATION_CATEGORIES,\r\n RECOMMENDATION_TYPES,\r\n} from '@bingads-webui-campaign/recommendation-core';\r\n\r\nexport function getToolbarConfig({\r\n onSelectCrossPage,\r\n onEvent,\r\n newI18n,\r\n i18n,\r\n recommendationType,\r\n gridView,\r\n readOnly,\r\n compact,\r\n context,\r\n}) {\r\n const dismissBtnId = 'button-dismiss';\r\n const undismissBtnId = 'button-undismiss';\r\n const applyBtnId = 'button-apply';\r\n // eslint-disable-next-line\r\n const toolbarUnselectedConfig = new Map();\r\n if (!compact) {\r\n toolbarUnselectedConfig.set('button-recommendation-more', {\r\n id: 'button-more',\r\n type: 'button',\r\n iconLeftGlyphName: 'ba-Back',\r\n text: i18n.getString('Recommendation_More'),\r\n classes: ['btn', 'btn-navigate-back'],\r\n noResponsive: true,\r\n onClick: () => {\r\n onEvent('back');\r\n },\r\n });\r\n toolbarUnselectedConfig.set('expander', {\r\n type: 'expander',\r\n });\r\n }\r\n\r\n if (_.contains(SUPPORT_DATE_FILTER_TYPES, recommendationType)) {\r\n toolbarUnselectedConfig.set('dropdown-date-filter', {\r\n type: 'dropdown',\r\n button: {\r\n text: i18n.getString('Dropdown_Button_LastSixMonth'),\r\n },\r\n id: 'dropdown-date-filter',\r\n menu: {\r\n items: [{\r\n text: i18n.getString('Dropdown_Menu_LastThreeMonth'),\r\n id: 'dropdown-item-lastthreemonth',\r\n },\r\n {\r\n text: i18n.getString('Dropdown_Menu_LastSixMonth'),\r\n id: 'dropdown-item-lastsixmonth',\r\n }],\r\n },\r\n });\r\n }\r\n\r\n if (_.contains(SUPPORT_DOWNLOAD_TYPES, recommendationType)) {\r\n toolbarUnselectedConfig.set('button-download', {\r\n type: 'nav-item',\r\n id: 'button-download',\r\n iconLeftGlyphName: 'ba-Download',\r\n text: i18n.getString('Details_View_Download_All'),\r\n noResponsive: true,\r\n });\r\n }\r\n\r\n if (!compact) {\r\n if (_.result(context, 'Category', '') === RECOMMENDATION_CATEGORIES.DISMISSED) {\r\n toolbarUnselectedConfig.set('button-undismiss-all', {\r\n type: 'nav-item',\r\n id: 'button-undismiss-all',\r\n iconLeftGlyphName: 'ba-Undo',\r\n text: newI18n.getString(_TL_('Undismiss all')),\r\n noResponsive: true,\r\n disabled: readOnly,\r\n });\r\n } else {\r\n toolbarUnselectedConfig.set('reject-help-popup', {\r\n type: 'custom',\r\n id: 'reject-help-popup',\r\n disabled: readOnly,\r\n });\r\n }\r\n }\r\n\r\n // eslint-disable-next-line\r\n const toolbarSelectedConfig = new Map();\r\n toolbarSelectedConfig.set('selection-widget', {\r\n type: 'selection-widget',\r\n onSelectCrossPage,\r\n });\r\n\r\n if (_.contains(SUPPORT_APPLY_TYPES, recommendationType) ||\r\n _.contains(SUPPORT_RESUBMIT_TYPES, recommendationType)) {\r\n toolbarSelectedConfig.set('divider', {\r\n type: 'divider',\r\n });\r\n }\r\n\r\n if (_.contains(SUPPORT_APPLY_TYPES, recommendationType)) {\r\n toolbarSelectedConfig.set(applyBtnId, {\r\n type: 'button',\r\n id: applyBtnId,\r\n iconLeftGlyphName: 'ba-Accept',\r\n text: i18n.getString('Button_Apply'),\r\n classes: ['btn-primary'],\r\n disabled: readOnly,\r\n });\r\n }\r\n\r\n if (_.contains(SUPPORT_RESUBMIT_TYPES, recommendationType)) {\r\n toolbarSelectedConfig.set(applyBtnId, {\r\n type: 'button',\r\n id: applyBtnId,\r\n iconLeftGlyphName: 'ba-Accept',\r\n text: i18n.getString('Button_Resubmit'),\r\n classes: ['btn-primary'],\r\n disabled: readOnly || (!_.isUndefined(gridView) && !_.some(\r\n gridView.selectedItems(),\r\n selectedItem => _.first(selectedItem.Opportunities).IsAppealable\r\n )),\r\n });\r\n }\r\n\r\n if (recommendationType === RECOMMENDATION_TYPES.IMAGE_EXTENSION) {\r\n let disabled = false;\r\n if (!_.isUndefined(gridView) && !readOnly) {\r\n _.each(gridView.selectedItems(), (selectedItem) => {\r\n const opporunity = _.first(selectedItem.Opportunities);\r\n const stockImages = opporunity.StockImages;\r\n if ((!_.isEmpty(stockImages) && _.isEmpty(_.first(stockImages).ThumbnailURL))) {\r\n disabled = true;\r\n }\r\n });\r\n } else {\r\n disabled = true;\r\n }\r\n\r\n toolbarSelectedConfig.set(applyBtnId, {\r\n type: 'button',\r\n id: applyBtnId,\r\n iconLeftGlyphName: 'ba-Accept',\r\n text: i18n.getString('Button_Apply'),\r\n classes: ['btn-primary'],\r\n disabled,\r\n });\r\n }\r\n\r\n if (_.contains(SUPPORT_APPLY_TYPES, recommendationType) ||\r\n _.contains(SUPPORT_RESUBMIT_TYPES, recommendationType)) {\r\n toolbarSelectedConfig.set('expander', {\r\n type: 'expander',\r\n });\r\n }\r\n\r\n if (_.contains(SUPPORT_DISMISS_TYPES, recommendationType)) {\r\n if (_.result(context, 'Category', '') === RECOMMENDATION_CATEGORIES.DISMISSED) {\r\n toolbarSelectedConfig.set(undismissBtnId, {\r\n type: 'button',\r\n id: undismissBtnId,\r\n iconLeftGlyphName: 'ba-Undo',\r\n text: newI18n.getString(_TL_('Undismiss')),\r\n classes: ['btn-primary'],\r\n disabled: readOnly,\r\n });\r\n } else {\r\n toolbarSelectedConfig.set(dismissBtnId, {\r\n type: 'button',\r\n id: dismissBtnId,\r\n iconLeftGlyphName: 'ba-RemoveContent',\r\n text: i18n.getString('Button_Dismiss'),\r\n classes: ['btn-primary'],\r\n disabled: readOnly,\r\n });\r\n }\r\n }\r\n\r\n toolbarSelectedConfig.set('button-clear-selection', {\r\n type: 'button-clear-selection',\r\n });\r\n\r\n return {\r\n toolbarSelectedConfig,\r\n toolbarUnselectedConfig,\r\n };\r\n}\r\n","// TODO: this file only used for component test, not be used for production code, need to be updated in the future\r\nimport Backbone from 'backbone';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { VIEW_TYPES } from '@bingads-webui-campaign/recommendation-core';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PreferenceContext } from '@bingads-webui-react/preference-context';\r\nimport { staticI18nMock } from '@bingads-webui-test/i18n-mock';\r\nimport { PopupContextProvider } from '@bingads-webui-react/popup-manager';\r\n\r\nconst mockPreferenceService = () => {\r\n let preference = {\r\n Data: {},\r\n };\r\n\r\n return {\r\n findByNameAtUserLevel: () => preference,\r\n setAtUserLevel: (data) => {\r\n preference = data;\r\n },\r\n };\r\n};\r\nconst preferenceService = mockPreferenceService();\r\n\r\nexport class RecommendationTabView extends Backbone.View {\r\n initialize(state) {\r\n this.state = state;\r\n this.detailValid = true;\r\n this.categoryType = state.categoryType || 'All';\r\n this.lastCategoryType = this.categoryType;\r\n this.lastRecommendationType = undefined;\r\n this.lastCampaignId = undefined;\r\n this.lastAdGroupId = undefined;\r\n // initialize all legeacy dependencies\r\n const { legacyRouter } = globalContext.require('component/legacy-router/index');\r\n const CampaignEditor = globalContext.require('campaignui/feature/crud-campaign/view/create');\r\n const SearchBidView = globalContext.requireDefault('campaignui/feature/adgroup-create-advanced/view/steps/search-bid');\r\n const BiddingStrategyView = globalContext.requireDefault('campaignui/feature/bidding-strategy/view/setting');\r\n const adDisplayUrlService = globalContext.require('campaignui/feature/crud-ad/service/displayUrl');\r\n const combineText = globalContext.require('campaignui/feature/crud-ad/viewmodel/adsPreview/expandedTextAd');\r\n const appConfig = globalContext.require('component/config/index');\r\n const i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/competition-tab');\r\n const instrumentation = globalContext.requireDefault('campaignui/feature/instrumentation/index');\r\n const jsdata = globalContext.require('component/js-data-campaign/index');\r\n const CreateKeywordView = globalContext.requireDefault('campaignui/feature/crud-keywords/view/create-inline-recommendation');\r\n const pageContext = globalContext.require('PageContext');\r\n const permissions = appConfig.get('Permissions');\r\n const preferencesService = globalContext.requireDefault('component/preference/service/index');\r\n const constants = globalContext.require('Constants');\r\n const dataManager = globalContext.require('campaignui/feature/inline-opportunity/view/data-manager');\r\n const odata = globalContext.require('component/http/channel/odata');\r\n const UrlTestTool = globalContext.require('component/upgraded-url/view/urlTestTool');\r\n const TrackingTemplate = globalContext.require('component/upgraded-url/view/trackingTemplate');\r\n const UrlEditor = globalContext.require('component/url-input/view/url-input');\r\n const { testUurl, uurlLevels } = globalContext.require('component/upgraded-url/service/testUurl');\r\n const appState = globalContext.require('component/state/index');\r\n const s$i18n = globalContext.require('$/schema-i18n!campaign');\r\n const schemaCampaignVnext = globalContext.require('component/schema-campaign-vnext/index');\r\n const validator = globalContext.require('component/ko-validation/index');\r\n this.legacyDependencies = {\r\n CampaignEditor,\r\n SearchBidView,\r\n BiddingStrategyView,\r\n adDisplayUrlService,\r\n appConfig,\r\n combineText,\r\n i18n,\r\n instrumentation,\r\n jsdata,\r\n CreateKeywordView,\r\n legacyRouter,\r\n pageContext,\r\n permissions,\r\n preferencesService,\r\n constants,\r\n dataManager,\r\n odata,\r\n UrlTestTool,\r\n TrackingTemplate,\r\n UrlEditor,\r\n testUurl,\r\n uurlLevels,\r\n appState,\r\n s$i18n,\r\n schemaCampaignVnext,\r\n validator,\r\n };\r\n }\r\n validDetailPage = () => {\r\n this.detailValid = true;\r\n };\r\n render() {\r\n if (!_.isUndefined(this.el)) {\r\n import(/* webpackMode: 'eager' */'./recommendation-tab-container').then(({ RecommendationTabContainer }) => {\r\n ReactDOM.render(\r\n (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ), this.el\r\n );\r\n });\r\n }\r\n\r\n return this;\r\n }\r\n\r\n setState(state) {\r\n const newType = state.recommendationType;\r\n const oldType = this.state.recommendationType;\r\n this.lastCampaignId = this.state.scope && this.state.scope.campaignId;\r\n this.lastAdGroupId = this.state.scope && this.state.scope.adGroupId;\r\n this.state = state;\r\n if (!this.detailValid && newType === oldType) {\r\n this.state.viewType = VIEW_TYPES.SUMMARY;\r\n }\r\n\r\n if (this.state.viewType === VIEW_TYPES.SUMMARY) {\r\n this.categoryType = this.state.categoryType;\r\n this.lastCategoryType = this.categoryType;\r\n }\r\n\r\n if (this.state.viewType !== VIEW_TYPES.HISTORY) {\r\n this.lastRecommendationType = newType;\r\n }\r\n this.detailValid = false;\r\n this.render();\r\n }\r\n\r\n remove() {\r\n if (!_.isUndefined(this.el)) {\r\n ReactDOM.unmountComponentAtNode(this.el);\r\n }\r\n return super.remove();\r\n }\r\n}\r\n","export const schema = {\r\n scenario: [\r\n {\r\n name: 'loadRecommendationTab',\r\n value: 'LoadRecommendationTab',\r\n setting: {},\r\n activity: [\r\n {\r\n name: 'loadRecommendationTab',\r\n value: 'LoadRecommendationTab',\r\n },\r\n // Below activities are for performance logs.\r\n {\r\n name: 'getSummary',\r\n value: 'getsummary',\r\n },\r\n {\r\n name: 'getCoupons',\r\n value: 'getCoupons',\r\n },\r\n {\r\n name: 'getHistory',\r\n value: 'getHistory',\r\n },\r\n {\r\n name: 'getCount',\r\n value: 'getCount',\r\n },\r\n {\r\n name: 'track',\r\n value: 'track',\r\n },\r\n {\r\n name: 'viewCategory',\r\n value: 'ViewCategory',\r\n },\r\n {\r\n name: 'getAutoApplyOptInStatus',\r\n value: 'getAutoApplyOptInStatus',\r\n },\r\n {\r\n name: 'setAutoApplyOptInStatus',\r\n value: 'setAutoApplyOptInStatus',\r\n },\r\n {\r\n name: 'getBulkAarUploadBlobUrl',\r\n value: 'getBulkAarUploadBlobUrl',\r\n },\r\n {\r\n name: 'submitBulkAarOptInStatusTask',\r\n value: 'submitBulkAarOptInStatusTask',\r\n },\r\n {\r\n name: 'pollBulkAarOptInStatusTask',\r\n value: 'pollBulkAarOptInStatusTask',\r\n },\r\n ],\r\n },\r\n ],\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport hoistNonReactStatics from 'hoist-non-react-statics';\r\nimport { getDisplayName } from '@bingads-webui-react/hoc-utils';\r\nimport { levelAtConstant } from '@bingads-webui-campaign/scope-constants';\r\n\r\nconst historyLocation = 'recommendation_history';\r\n\r\nfunction navigate({\r\n routeLocation,\r\n additionalParams,\r\n navigateToRoute,\r\n scope,\r\n}, op = {}) {\r\n const {\r\n accountId,\r\n adGroupId,\r\n campaignId,\r\n customerId,\r\n } = scope;\r\n let levelAt = op.scope || scope.levelAt;\r\n\r\n // history page only support account level\r\n if (routeLocation === historyLocation) {\r\n levelAt = levelAtConstant.ACCOUNT;\r\n }\r\n\r\n let params = _.extend({\r\n account_id: accountId,\r\n adgroup_id: adGroupId,\r\n campaign_id: campaignId,\r\n customer_id: customerId,\r\n }, additionalParams);\r\n let route = '';\r\n\r\n switch (levelAt) {\r\n case levelAtConstant.CAMPAIGN:\r\n route = `campaign_${routeLocation}`;\r\n params = _.omit(params, 'adgroup_id');\r\n break;\r\n case levelAtConstant.ADGROUP:\r\n route = `adgroup_${routeLocation}`;\r\n break;\r\n case levelAtConstant.ACCOUNT:\r\n default:\r\n route = routeLocation;\r\n params = _.omit(params, 'campaign_id', 'adgroup_id');\r\n break;\r\n }\r\n\r\n navigateToRoute(route, params);\r\n}\r\n\r\nfunction viewCategory(navigateToRoute, scope, page, category) {\r\n return () => navigate({\r\n additionalParams: { category },\r\n navigateToRoute,\r\n routeLocation: page,\r\n scope,\r\n });\r\n}\r\n\r\nfunction backToRecommendation(\r\n navigateToRoute,\r\n scope,\r\n page,\r\n category,\r\n type,\r\n campaignId,\r\n adGroupId\r\n) {\r\n let routeLocation = page;\r\n let additionalParams = { category };\r\n if (type) {\r\n routeLocation = `${page}_details`;\r\n additionalParams = { type };\r\n }\r\n\r\n const tempScope = _.extend({}, scope);\r\n if (adGroupId) {\r\n tempScope.levelAt = levelAtConstant.ADGROUP;\r\n _.extend(additionalParams, {\r\n campaign_id: campaignId,\r\n adgroup_id: adGroupId,\r\n });\r\n } else if (campaignId) {\r\n tempScope.levelAt = levelAtConstant.CAMPAIGN;\r\n _.extend(additionalParams, {\r\n campaign_id: campaignId,\r\n });\r\n }\r\n\r\n return () => navigate({\r\n additionalParams,\r\n navigateToRoute,\r\n routeLocation,\r\n scope: tempScope,\r\n });\r\n}\r\n\r\nfunction viewHistory(navigateToRoute, scope, validDetailPage) {\r\n validDetailPage();\r\n return navigate({\r\n navigateToRoute,\r\n routeLocation: historyLocation,\r\n scope,\r\n });\r\n}\r\n\r\nfunction viewSummary(navigateToRoute, scope, page, op) {\r\n return navigate({\r\n navigateToRoute,\r\n routeLocation: page,\r\n scope,\r\n }, op);\r\n}\r\n\r\nfunction viewDetails(navigateToRoute, scope, page, validDetailPage, type, data = {}) {\r\n const newScope = { ...scope, ...data };\r\n validDetailPage();\r\n return () => navigate({\r\n additionalParams: { type },\r\n navigateToRoute,\r\n routeLocation: `${page}_details`,\r\n scope: newScope,\r\n });\r\n}\r\n\r\nexport const withNavigation = (WrappedComponent) => {\r\n const HoC = (props) => {\r\n const {\r\n scope,\r\n page,\r\n deps: {\r\n legacyRouter,\r\n },\r\n validDetailPage,\r\n /**\r\n * Only for test\r\n */\r\n testRef,\r\n } = props;\r\n\r\n const viewCategoryHandler = _.partial(viewCategory, legacyRouter.navigateToRoute, scope, page);\r\n const viewSummaryHandler = _.partial(viewSummary, legacyRouter.navigateToRoute, scope, page);\r\n const viewDetailsHandler = _.partial(\r\n viewDetails,\r\n legacyRouter.navigateToRoute,\r\n scope,\r\n page,\r\n validDetailPage\r\n );\r\n const viewHistoryHandler = _.partial(viewHistory, legacyRouter.navigateToRoute, scope, validDetailPage);\r\n\r\n if (testRef) {\r\n testRef.viewCategory = viewCategoryHandler;\r\n testRef.viewSummary = viewSummaryHandler;\r\n testRef.viewDetails = viewDetailsHandler;\r\n testRef.viewHistory = viewHistoryHandler;\r\n }\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n HoC.displayName = `withNavigation(${getDisplayName(WrappedComponent)})`;\r\n HoC.propTypes = {\r\n page: PropTypes.string,\r\n scope: PropTypes.shape({\r\n accountId: PropTypes.number,\r\n adGroupId: PropTypes.number,\r\n campaignId: PropTypes.number,\r\n customerId: PropTypes.number,\r\n levelAt: PropTypes.string,\r\n }),\r\n deps: PropTypes.shape({\r\n legacyRouter: PropTypes.object.isRequired,\r\n }).isRequired,\r\n validDetailPage: PropTypes.func.isRequired,\r\n };\r\n HoC.defaultProps = {\r\n page: 'recommendation',\r\n scope: {},\r\n };\r\n\r\n hoistNonReactStatics(HoC, WrappedComponent);\r\n\r\n return HoC;\r\n};\r\n","/* eslint-disable jsx-a11y/anchor-is-valid, no-script-url */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport * as urlUtil from '@bingads-webui/url-util';\r\nimport {\r\n RecommendationService,\r\n RecommendationDownloadService,\r\n withGetSummary,\r\n CHANNEL_TYPES,\r\n withRecommendationsScope as withScope,\r\n withCoupon,\r\n} from '@bingads-webui-campaign/recommendation-core';\r\nimport { withCcJsData } from '@bingads-webui-cc-react/js-data-rest';\r\nimport { schema } from './instrumentation-schema';\r\nimport { RecommendationTab } from './recommendation-tab';\r\nimport { withNavigation } from './with-navigation';\r\n\r\nconst RecommendationTabWithData = withGetSummary(false)(withCoupon(RecommendationTab));\r\n\r\nclass RecommendationTabContainerView extends React.Component {\r\n static propTypes = {\r\n scope: PropTypes.shape({\r\n customerId: PropTypes.number,\r\n accountId: PropTypes.number,\r\n levelAt: PropTypes.string,\r\n }),\r\n showAlertHandler: PropTypes.func,\r\n deps: PropTypes.shape({\r\n appConfig: PropTypes.objectOf(PropTypes.any).isRequired,\r\n appState: PropTypes.object.isRequired,\r\n i18n: PropTypes.object.isRequired,\r\n s$i18n: PropTypes.object,\r\n instrumentation: PropTypes.object.isRequired,\r\n jsdata: PropTypes.object.isRequired,\r\n legacyRouter: PropTypes.object.isRequired,\r\n pageContext: PropTypes.object.isRequired,\r\n permissions: PropTypes.object.isRequired,\r\n preferencesService: PropTypes.objectOf(PropTypes.any).isRequired,\r\n constants: PropTypes.shape({\r\n imagePath: PropTypes.string.isRequired,\r\n }).isRequired,\r\n combineText: PropTypes.func.isRequired,\r\n adDisplayUrlService: PropTypes.object.isRequired,\r\n odata: PropTypes.PropTypes.shape({\r\n get: PropTypes.func.isRequired,\r\n patch: PropTypes.func.isRequired,\r\n }).isRequired,\r\n schemaCampaignVnext: PropTypes.object,\r\n validator: PropTypes.object,\r\n }).isRequired,\r\n guid: PropTypes.string, // for adinsight view event log in aria\r\n viewType: PropTypes.string,\r\n ccJsData: PropTypes.object, // eslint-disable-line react/forbid-prop-types\r\n vnextDeps: PropTypes.object, // eslint-disable-line react/forbid-prop-types\r\n };\r\n\r\n static defaultProps = {\r\n scope: null,\r\n showAlertHandler: _.noop,\r\n guid: null,\r\n viewType: null,\r\n ccJsData: null,\r\n vnextDeps: null,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.initializeInstrumentation();\r\n // don't initialize if scope is not set\r\n if (this.props.scope != null) {\r\n this.initializeDataService();\r\n this.initializeDownloadService();\r\n }\r\n }\r\n initializeDownloadService() {\r\n const {\r\n pageContext,\r\n i18n,\r\n odata,\r\n } = this.props.deps;\r\n const { permissions } = this.props.deps;\r\n this.downloadService = null;\r\n this.downloadService = new RecommendationDownloadService({\r\n alertCenter: window.App.views.alertCenter,\r\n getODataErrors: _.noop,\r\n i18n,\r\n odata,\r\n pageContext,\r\n permissions,\r\n currentActivity: this.currentActivity,\r\n });\r\n }\r\n\r\n initializeInstrumentation() {\r\n const { instrumentation } = this.props.deps;\r\n instrumentation.addScenario(schema);\r\n this.currentScenario = instrumentation.loadRecommendationTab.create();\r\n this.currentActivity = this.currentScenario.loadRecommendationTab.create();\r\n }\r\n\r\n initializeDataService() {\r\n const {\r\n appConfig,\r\n permissions,\r\n pageContext,\r\n i18n,\r\n } = this.props.deps;\r\n const odataPath = appConfig.get('adinsight.odata.url');\r\n this.dataService = new RecommendationService({\r\n scope: this.props.scope,\r\n showAlertHandler: this.props.showAlertHandler,\r\n i18n,\r\n currentScenario: this.currentScenario,\r\n currentActivity: this.currentActivity,\r\n odataPath,\r\n permissions,\r\n lcid: pageContext.CultureLcid,\r\n pageContext,\r\n ccJsData: this.props.ccJsData || (this.props.vnextDeps && this.props.vnextDeps.ccJsData),\r\n alertCenter: window.App.views.alertCenter,\r\n channel: CHANNEL_TYPES.RECOMMENDATION,\r\n });\r\n }\r\n\r\n render() {\r\n const { appConfig, pageContext } = this.props.deps;\r\n const source = appConfig.get('recsrc') || urlUtil.getParameter('recsrc');\r\n\r\n // clean 'recsrc' after get the viewType, because sometimes this render() function will run\r\n // twice, so if clean the 'recsrc' at 1st time, we can't get 'recsrc' anymore\r\n if (this.props.viewType) {\r\n appConfig.set('recsrc', null);\r\n }\r\n\r\n return (\r\n
\r\n {this.props.scope && }\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport const RecommendationTabContainer =\r\n withCcJsData(withScope(withNavigation(RecommendationTabContainerView)));\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { FocusTrapCallout, Text, Stack, DirectionalHint, DefaultButton, PrimaryButton } from '@bingads-webui-react/fabric-control';\r\nimport { withLock, keyVault, priorityLevel } from '@bingads-webui-react/popup-manager';\r\n\r\nconst styles = {\r\n teachingBubble: 'recommendation-teaching-bubble',\r\n header: 'header',\r\n title: 'title',\r\n inner: 'inner',\r\n subtext: 'subtext',\r\n buttons: 'buttons',\r\n primaryButton: 'primary-button',\r\n secondaryButton: 'secondary-button',\r\n pageIndex: 'page-index',\r\n footer: 'footer',\r\n textStyle: {\r\n root: [\r\n {\r\n color: '#ffffff',\r\n },\r\n ],\r\n },\r\n};\r\n\r\nclass TeachingBubble extends React.PureComponent {\r\n static propTypes = {\r\n i18n: PropTypes.PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n title: PropTypes.string.isRequired,\r\n pageIndex: PropTypes.number,\r\n pageCount: PropTypes.number,\r\n primaryButtonContent: PropTypes.string.isRequired,\r\n secondaryButtonContent: PropTypes.string,\r\n target: PropTypes.string.isRequired,\r\n onDismiss: PropTypes.func.isRequired,\r\n onClose: PropTypes.func.isRequired,\r\n primaryButtonAction: PropTypes.func.isRequired,\r\n secondaryButtonAction: PropTypes.func,\r\n children: PropTypes.node.isRequired,\r\n withPages: PropTypes.bool,\r\n directionalHint: PropTypes.number,\r\n withCloseButton: PropTypes.bool,\r\n name: PropTypes.string,\r\n doNotLayer: PropTypes.bool,\r\n };\r\n\r\n static defaultProps = {\r\n secondaryButtonContent: null,\r\n secondaryButtonAction: () => null,\r\n withPages: true,\r\n withCloseButton: true,\r\n pageIndex: 0,\r\n pageCount: 0,\r\n directionalHint: DirectionalHint.bottomLeftEdge,\r\n name: '',\r\n doNotLayer: false,\r\n };\r\n\r\n onCalloutDismiss = (event) => {\r\n if (event && event.keyCode === 27) {\r\n // keyboard ESC click\r\n this.props.onDismiss();\r\n }\r\n };\r\n\r\n preventDismissOnEvent = (event) => {\r\n if (event && event.type === 'scroll') {\r\n // When grid table render, it will trigger resize, which will cause teaching bubble dismiss.\r\n // Add this check to prevent this dismiss.\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n render() {\r\n const {\r\n title,\r\n pageIndex,\r\n pageCount,\r\n primaryButtonContent,\r\n secondaryButtonContent,\r\n target,\r\n onClose,\r\n primaryButtonAction,\r\n secondaryButtonAction,\r\n children,\r\n i18n,\r\n withPages,\r\n directionalHint,\r\n withCloseButton,\r\n name,\r\n doNotLayer,\r\n } = this.props;\r\n\r\n\r\n return (\r\n \r\n
\r\n {title}\r\n
\r\n
\r\n
\r\n \r\n {children}\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n {primaryButtonContent}\r\n \r\n {secondaryButtonContent &&\r\n \r\n {secondaryButtonContent}\r\n }\r\n \r\n {withPages &&\r\n
\r\n {pageIndex} \r\n {i18n.getString(_TL_('of'))}\r\n \r\n {pageCount}\r\n
\r\n }\r\n
\r\n {withCloseButton &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\nexport const TeachingBubbleWithLock = withLock(TeachingBubble, {\r\n lockKey: keyVault.teachingBubble,\r\n priority: priorityLevel.teachingBubble,\r\n autoClose: true,\r\n});\r\n","/* eslint-disable jsx-a11y/anchor-is-valid, no-script-url, react/no-unused-prop-types */\r\nimport _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n withFilterCategory,\r\n CHANNEL_ALL_RECOMMENDATIONS,\r\n CHANNEL_TYPES,\r\n} from '@bingads-webui-campaign/recommendation-core';\r\nimport {\r\n getPreferences,\r\n PREFERENCES_ACTION_TYPES,\r\n} from '@bingads-webui-campaign/recommendation-preferences';\r\nimport { withUserGovernance } from '@bingads-webui-campaign-react/popup-components';\r\nimport { TeachingBubbleWithLock } from './teaching-bubble';\r\n\r\nclass optimizationScoreTeachingBubble extends React.Component {\r\n static propTypes = {\r\n i18n: PropTypes.PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n preferencesService: PropTypes.objectOf(PropTypes.any).isRequired,\r\n currentActivity: PropTypes.shape({\r\n trace: PropTypes.func.isRequired,\r\n error: PropTypes.func.isRequired,\r\n }).isRequired,\r\n overallOptimizationScoreBar: PropTypes.shape({\r\n Available: PropTypes.number,\r\n }),\r\n categoryScoreUpLifts: PropTypes.arrayOf(PropTypes.shape({\r\n Category: PropTypes.string,\r\n ScoreUpLift: PropTypes.number,\r\n })),\r\n type: PropTypes.string,\r\n data: PropTypes.shape(_.reduce(\r\n CHANNEL_ALL_RECOMMENDATIONS[CHANNEL_TYPES.RECOMMENDATION],\r\n recommendation => ({\r\n [recommendation]: PropTypes.object,\r\n }),\r\n {}\r\n )),\r\n onDone: PropTypes.func.isRequired,\r\n onClose: PropTypes.func.isRequired,\r\n onDismiss: PropTypes.func.isRequired,\r\n };\r\n\r\n static defaultProps = {\r\n overallOptimizationScoreBar: null,\r\n categoryScoreUpLifts: [],\r\n type: null,\r\n data: [],\r\n };\r\n\r\n state = {\r\n step: 0,\r\n };\r\n\r\n next = () => {\r\n this.setState({ step: this.state.step + 1 });\r\n }\r\n\r\n previous = () => {\r\n this.setState({ step: this.state.step - 1 });\r\n }\r\n\r\n isOnBoard() {\r\n return !_.result(\r\n getPreferences(this.props.preferencesService),\r\n PREFERENCES_ACTION_TYPES.OptimizationScoreOnboard\r\n );\r\n }\r\n\r\n render() {\r\n const {\r\n i18n,\r\n overallOptimizationScoreBar,\r\n categoryScoreUpLifts,\r\n type,\r\n data,\r\n onDone,\r\n onDismiss,\r\n onClose,\r\n } = this.props;\r\n\r\n const hasOptimizationScore = !_.isNull(overallOptimizationScoreBar)\r\n && !_.isUndefined(overallOptimizationScoreBar.Available);\r\n const anyCategoryOptimizationScore = !_.isEmpty(categoryScoreUpLifts);\r\n const anySummaryCardOptimizationScore =\r\n _.isNull(type) || _.isEmpty(type)\r\n ? _.any(_.map(data, typeLevelRecommendation =>\r\n !_.isNull(typeLevelRecommendation.optimizationScore)))\r\n : data[type] && !_.isNull(data[type].optimizationScore);\r\n\r\n let stepCount = 0;\r\n if (hasOptimizationScore) {\r\n if (anyCategoryOptimizationScore) {\r\n if (anySummaryCardOptimizationScore) {\r\n stepCount = 3;\r\n } else {\r\n stepCount = 2;\r\n }\r\n } else {\r\n stepCount = 1;\r\n }\r\n }\r\n\r\n const titles = [\r\n i18n.getString(_TL_('Optimization score: How well you\\'re set up to get the most from your account or campaign.')),\r\n i18n.getString(_TL_('Understanding score uplifts')),\r\n i18n.getString(_TL_('Boost your optimization score by applying individual recommendations')),\r\n ];\r\n\r\n const contents = [\r\n (\r\n
\r\n
\r\n {i18n.getString(_TL_('Your optimization score runs from 0% to 100%, with 100% meaning that your account or campaign can function at its full potential.'))}\r\n
\r\n
\r\n {i18n.getString(_TL_('Optimization score is only shown for active search campaigns at the campaign and account level.'))}\r\n
\r\n
\r\n ),\r\n i18n.getString(_TL_('This is the uplift to your optimization score if you adopt the recommendations in this category.')),\r\n i18n.getString(_TL_('Individual recommendations also have their own score uplift. Apply recommendations whenever you can to improve campaign performance!')),\r\n ];\r\n\r\n const targets = [\r\n '.overall-score-value',\r\n '.category-score-upLift',\r\n '.summary-card-os-tag-container',\r\n ];\r\n\r\n return stepCount > 0 && this.isOnBoard() && (\r\n
\r\n {\r\n _.map(_.range(stepCount), step =>\r\n this.state.step === step && (\r\n step + 1\r\n ? i18n.getString(_TL_('Next'))\r\n : i18n.getString(_TL_('Got it!'))\r\n }\r\n primaryButtonAction={\r\n stepCount > step + 1\r\n ? this.next\r\n : () => onDone()\r\n }\r\n secondaryButtonContent={\r\n step === 0\r\n ? ''\r\n : i18n.getString(_TL_('Previous'))\r\n }\r\n secondaryButtonAction={this.previous}\r\n target={targets[step]}\r\n onDismiss={onDismiss}\r\n onClose={onClose}\r\n >\r\n {contents[step]}\r\n \r\n ))\r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport const OptimizationScoreTeachingBubble =\r\n withFilterCategory(optimizationScoreTeachingBubble);\r\n\r\n\r\nexport const OptimizationScoreTeachingBubbleWithUserGovernance = withUserGovernance(OptimizationScoreTeachingBubble);\r\n","/* eslint-disable jsx-a11y/aria-role */\r\n/* eslint-disable no-cond-assign */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport classNames from 'classnames';\r\nimport { fromLegacyTimeZone, toIANATimeZone } from '@bingads-webui-universal/time-zone-converter';\r\nimport { Checkbox } from '@bingads-webui-react/checkbox';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { LearnMoreLink } from '@bingads-webui-campaign-react/help';\r\nimport {\r\n RECOMMENDATION_CATEGORIES_IDS,\r\n recommendationConfigs,\r\n withGetAutoApplyOptInStatus,\r\n RECOMMENDATION_CATEGORIES_WORDING,\r\n RECOMMENDATION_TYPES,\r\n RECOMMENDATION_AUTO_APPLY_SETTINGS_TOOLTIPS,\r\n} from '@bingads-webui-campaign/recommendation-core';\r\nimport { TooltipHost, DirectionalHint, TooltipDelay } from '@fluentui/react';\r\nimport { getAutpApplySettingsStyle } from './style/apply-settings-style';\r\n\r\nclass recommendationsAutoApplySettings extends React.PureComponent {\r\n static propTypes = {\r\n navigateBack: PropTypes.func.isRequired,\r\n data: PropTypes.objectOf(PropTypes.any).isRequired,\r\n optInStatus: PropTypes.objectOf(PropTypes.any).isRequired,\r\n getCategories: PropTypes.func.isRequired,\r\n i18n: PropTypes.PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n appConfig: PropTypes.objectOf(PropTypes.any).isRequired,\r\n newI18n: PropTypes.PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n readOnly: PropTypes.bool,\r\n dataService: PropTypes.shape({\r\n setAutoApplyOptInStatus: PropTypes.func.isRequired,\r\n }).isRequired,\r\n reload: PropTypes.func.isRequired,\r\n propsId: PropTypes.string.isRequired,\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n viewHistory: PropTypes.func.isRequired,\r\n reloadSummaryPage: PropTypes.func.isRequired,\r\n hideAutoApplyTeachingBubble: PropTypes.func.isRequired,\r\n scope: PropTypes.shape({\r\n customerId: PropTypes.string.isRequired,\r\n accountId: PropTypes.string.isRequired,\r\n levelAt: PropTypes.string.isRequired,\r\n campaignId: PropTypes.string,\r\n adGroupId: PropTypes.string,\r\n }).isRequired,\r\n permissions: PropTypes.shape({}),\r\n };\r\n\r\n static defaultProps = {\r\n readOnly: false,\r\n permissions: {},\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.props.hideAutoApplyTeachingBubble();\r\n this.state = {\r\n optInStatus: this.props.optInStatus,\r\n prevPropsId: this.props.propsId,\r\n };\r\n }\r\n\r\n static getDerivedStateFromProps(nextProps, state) {\r\n if (nextProps.propsId !== state.prevPropsId) {\r\n return {\r\n optInStatus: nextProps.optInStatus,\r\n prevPropsId: nextProps.propsId,\r\n };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n onSave = () => {\r\n const {\r\n data, dataService, reload, reloadSummaryPage,\r\n } = this.props;\r\n const isOptInStatusDelta = _.omit(this.state.optInStatus, (status, type) =>\r\n data[type].IsOptIn === status);\r\n dataService.setAutoApplyOptInStatus({ isOptInStatusDelta })\r\n .finally(withUiBlock($('.auto-apply-settings-container')))\r\n .finally(() => reloadSummaryPage())\r\n .finally(() => reload());\r\n }\r\n\r\n handleAutoApplyOptionChange = (type) => {\r\n const { optInStatus } = this.state;\r\n this.setState({\r\n optInStatus: { ...optInStatus, [type]: !optInStatus[type] },\r\n });\r\n }\r\n\r\n formatDateWithAccountTimeZone = (latestUpdateTime) => {\r\n const { i18n, appConfig } = this.props;\r\n const latestUpdatedDate = new Date(latestUpdateTime);\r\n const accountTimeZone = toIANATimeZone(fromLegacyTimeZone(appConfig.get('AccountTimeZone')));\r\n return i18n.formatDate(latestUpdatedDate, { timeZone: accountTimeZone });\r\n }\r\n\r\n render() {\r\n const {\r\n getCategories,\r\n navigateBack,\r\n i18n,\r\n newI18n,\r\n data,\r\n classes,\r\n viewHistory,\r\n scope,\r\n permissions,\r\n } = this.props;\r\n\r\n const categories = getCategories({}, data, { isAutoApplySettings: true });\r\n\r\n const hostStyles = {\r\n root: {\r\n display: 'inline-block',\r\n },\r\n };\r\n\r\n const calloutProps = { gapSpace: 7 };\r\n\r\n const tooltipProps = {\r\n maxWidth: '324px',\r\n styles: {\r\n root: {\r\n padding: '8px 10px',\r\n },\r\n },\r\n delay: TooltipDelay.long,\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n {i18n.getString('Back_To_Recommendation')}\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n {newI18n.getString(_TL_('Auto-apply recommendation settings'))}\r\n
\r\n
\r\n \r\n {newI18n.getString(_TL_('Select which type of recommendations to auto-apply to your account. When you opt in, we’ll let you know when recommendations designed to improve performance are ready for your review. After the review period, we will automatically apply them to your account.'))}\r\n \r\n \r\n |\r\n viewHistory()}\r\n >\r\n {newI18n.getString(_TL_('View recommendation apply history'))}\r\n \r\n
\r\n
\r\n {!permissions.IsRSAAndMMAOnboardAARSettingsPageEnabled ?\r\n (\r\n
\r\n \r\n {newI18n.getString(_TL_('Go to the '))}\r\n \r\n {newI18n.getString(_TL_('account level options page'))}\r\n \r\n \r\n {newI18n.getString(_TL_(' to update the auto-apply setting for Responsive Search ads and Multimedia ads.'))}\r\n \r\n
\r\n ) : null\r\n }\r\n
\r\n {_.map(RECOMMENDATION_CATEGORIES_IDS, (category) => {\r\n if (_.contains(categories, category)) {\r\n return (\r\n
\r\n
\r\n {newI18n.getString(_TL_(RECOMMENDATION_CATEGORIES_WORDING[category]))}\r\n
\r\n
\r\n {_.map(_.pick(data, _.matcher({ Category: category })), (entity) => {\r\n const type = entity.RecommendationType;\r\n const tooltipElement = (\r\n
\r\n \r\n {newI18n.getString(RECOMMENDATION_AUTO_APPLY_SETTINGS_TOOLTIPS[type].text)}\r\n \r\n \r\n
\r\n );\r\n return (\r\n \r\n this.handleAutoApplyOptionChange(type)}\r\n >\r\n {`${i18n.getString(recommendationConfigs[type].summaryTitle)}${entity.IsOptIn\r\n && type !== RECOMMENDATION_TYPES.RESPONSIVE_SEARCH_ADS\r\n && type !== RECOMMENDATION_TYPES.MULTIMEDIA_ADS ?\r\n ` (${_.isString(entity.LatestUpdateTime) ? i18n.getString('Recommendation_AutoApplySettings_OptInTime', { latestUpdateTime: this.formatDateWithAccountTimeZone(entity.LatestUpdateTime) }) : 'Recommended'})` : ''}`}\r\n \r\n \r\n );\r\n })}\r\n
\r\n
\r\n );\r\n }\r\n\r\n return null;\r\n })}\r\n
\r\n
\r\n \r\n {newI18n.getString(_TL_('Save'))}\r\n \r\n \r\n {newI18n.getString(_TL_('Cancel'))}\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport const RecommendationsAutoApplySettings =\r\n withDefaultStyles(\r\n withGetAutoApplyOptInStatus(recommendationsAutoApplySettings),\r\n getAutpApplySettingsStyle\r\n );\r\n\r\n","/* eslint-disable no-unused-vars */\r\nexport const getAutpApplySettingsStyle = (_, { palette = {} }) => ({\r\n recommendationAutoApplySettings: {\r\n '& .recommendation-navigate-back-ground': {\r\n height: 44,\r\n display: 'flex',\r\n background: '#F3F2F1',\r\n borderBottom: 'solid 1px #e1dfdd',\r\n '& .recommendation-navigate-back': {\r\n marginLeft: 10,\r\n '& .iconba-Back': {\r\n color: '#0078D4',\r\n },\r\n '& .recommendation-navigate-back-text': {\r\n color: '#0078D4',\r\n marginLeft: 8,\r\n },\r\n },\r\n },\r\n '& .auto-apply-settings-container': {\r\n marginTop: 24,\r\n marginLeft: 32,\r\n marginRight: 32,\r\n '& .auto-apply-settings-pitching': {\r\n marginTop: 24,\r\n borderBottom: `1px solid ${palette.neutralSecondary}`,\r\n paddingBottom: 24,\r\n '& .pitching-text': {\r\n lineHeight: '24px',\r\n },\r\n '& .HelpTopic': {\r\n textDecoration: 'unset',\r\n },\r\n '& .history-page-link, & .spliter': {\r\n color: '#0078d4',\r\n },\r\n },\r\n '& .auto-apply-settings-title': {\r\n fontSize: 20,\r\n fontWeight: 'bold',\r\n },\r\n '& .auto-apply-settings-group': {\r\n marginTop: 10,\r\n '& .category-group-container': {\r\n marginBottom: 36,\r\n '& .category-title': {\r\n marginBottom: 16,\r\n fontSize: 18,\r\n fontWeight: 'bold',\r\n },\r\n '& .category-group': {\r\n display: 'grid',\r\n gridTemplateColumns: '600px 600px',\r\n\r\n '& .ms-TooltipHost': {\r\n width: 'fit-content',\r\n },\r\n },\r\n },\r\n },\r\n '& .auto-apply-settings-action-buttons .btn-primary': {\r\n marginRight: 8,\r\n },\r\n '& .ad-settings-link': {\r\n marginTop: 24,\r\n marginBottom: 26,\r\n paddingTop: 8,\r\n paddingBottom: 8,\r\n paddingLeft: 8,\r\n background: palette.themeLighterAlt,\r\n '& a': {\r\n textDecoration: 'unset',\r\n },\r\n '& span, & a': {\r\n fontSize: 12,\r\n },\r\n '& .iconba': {\r\n marginRight: 8,\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","/* eslint-disable jsx-a11y/anchor-is-valid, react/no-unused-prop-types */\r\nimport _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { StateStore } from '@bingads-webui/state-store';\r\nimport { withStateStore } from '@bingads-webui/with-state-store';\r\nimport { notificationStore } from '@bingads-webui-react/notification-center';\r\nimport {\r\n CHANNEL_ALL_RECOMMENDATIONS,\r\n CHANNEL_TYPES,\r\n isReadOnly,\r\n RECOMMENDATION_CATEGORIES_IDS,\r\n RECOMMENDATION_CATEGORIES,\r\n NOT_SUPPORT_DOWNLOAD_TYPES,\r\n ADINSIGHT_LOG_API_NAME,\r\n ADINSIGHT_LOG_ACTION_TYPE,\r\n RECOMMENDATION_IDS,\r\n VIEW_TYPES,\r\n FAC_RECOMMENDATION_CONFIG,\r\n FAC_RECOMENDATIONTYPE_FEATUREID_MAPPING,\r\n sharedComponentFunctionStateStore,\r\n getRecommendationCache,\r\n setRecommendationCache,\r\n RECOMMENDATION_TYPES,\r\n} from '@bingads-webui-campaign/recommendation-core';\r\nimport { DownloadToolbarButton } from '@bingads-webui-campaign-react/recommendation-visuals';\r\nimport { RecommendationModal, AsyncApplyForm, ConfirmForm } from '@bingads-webui-campaign-react/recommendation-modal';\r\n\r\nimport * as adDisplayUrlService from '@bingads-webui-campaign-legacy/crud-ad/service/displayUrl';\r\nimport { combineText } from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsPreview/expandedTextAd';\r\nimport { TeachingBubble, getTeachingBubbleUserGovernanceConfig } from '@bingads-webui-campaign-react/popup-components';\r\nimport { findSiteMap } from '@bingads-webui-campaign-react/with-site-map';\r\n\r\nimport { OptimizationScoreTeachingBubbleWithUserGovernance } from './optimization-score-teacching-bubble';\r\nimport { RecommendationsAutoApplySettings } from './recommendations-auto-apply-settings';\r\n\r\nexport class recommendationTab extends React.Component {\r\n static propTypes = {\r\n campaignAdGroups: PropTypes.arrayOf(PropTypes.object),\r\n campaignType: PropTypes.number,\r\n categoryType: PropTypes.string,\r\n channel: PropTypes.string.isRequired,\r\n currentActivity: PropTypes.shape({\r\n trace: PropTypes.func.isRequired,\r\n error: PropTypes.func.isRequired,\r\n }).isRequired,\r\n data: PropTypes.shape(_.reduce(\r\n CHANNEL_ALL_RECOMMENDATIONS[CHANNEL_TYPES.RECOMMENDATION],\r\n recommendation => ({\r\n [recommendation]: PropTypes.object,\r\n }),\r\n {}\r\n )),\r\n dismissedData: PropTypes.shape(_.reduce(\r\n CHANNEL_ALL_RECOMMENDATIONS[CHANNEL_TYPES.RECOMMENDATION],\r\n recommendation => ({\r\n [recommendation]: PropTypes.object,\r\n }),\r\n {}\r\n )),\r\n dataService: PropTypes.shape({\r\n getSummary: PropTypes.func.isRequired,\r\n getCount: PropTypes.func.isRequired,\r\n track: PropTypes.func.isRequired,\r\n }).isRequired,\r\n el: PropTypes.string.isRequired,\r\n scope: PropTypes.shape({\r\n customerId: PropTypes.number.isRequired,\r\n accountId: PropTypes.number.isRequired,\r\n levelAt: PropTypes.string.isRequired,\r\n campaignId: PropTypes.number,\r\n adGroupId: PropTypes.number,\r\n }).isRequired,\r\n hasFilter: PropTypes.bool,\r\n recommendationType: PropTypes.string,\r\n reload: PropTypes.func,\r\n showAlertHandler: PropTypes.func.isRequired,\r\n source: PropTypes.string,\r\n setData: PropTypes.func.isRequired,\r\n hasLoadToken: PropTypes.func.isRequired,\r\n viewCategory: PropTypes.func.isRequired,\r\n backToRecommendation: PropTypes.func,\r\n lastRecommendationType: PropTypes.string,\r\n lastCampaignId: PropTypes.string,\r\n lastAdGroupId: PropTypes.string,\r\n viewDetails: PropTypes.func.isRequired,\r\n viewBAADetails: PropTypes.func,\r\n viewSummary: PropTypes.func.isRequired,\r\n viewHistory: PropTypes.func,\r\n viewType: PropTypes.string.isRequired,\r\n deps: PropTypes.shape({\r\n appConfig: PropTypes.objectOf(PropTypes.any).isRequired,\r\n appState: PropTypes.object.isRequired,\r\n i18n: PropTypes.object.isRequired,\r\n s$i18n: PropTypes.object,\r\n instrumentation: PropTypes.object.isRequired,\r\n jsdata: PropTypes.object.isRequired,\r\n legacyRouter: PropTypes.object.isRequired,\r\n pageContext: PropTypes.object.isRequired,\r\n permissions: PropTypes.object.isRequired,\r\n preferencesService: PropTypes.objectOf(PropTypes.any).isRequired,\r\n constants: PropTypes.shape({\r\n imagePath: PropTypes.string.isRequired,\r\n }).isRequired,\r\n combineText: PropTypes.func,\r\n adDisplayUrlService: PropTypes.object,\r\n odata: PropTypes.PropTypes.shape({\r\n get: PropTypes.func.isRequired,\r\n patch: PropTypes.func.isRequired,\r\n }).isRequired,\r\n schemaCampaignVnext: PropTypes.object,\r\n validator: PropTypes.object,\r\n cacheManager: PropTypes.object,\r\n }).isRequired,\r\n vnextDeps: PropTypes.shape({\r\n customMapperStore: PropTypes.PropTypes.shape({\r\n setState: PropTypes.func,\r\n }),\r\n recommendationDataStore: PropTypes.PropTypes.shape({\r\n setState: PropTypes.func,\r\n }),\r\n newI18n: PropTypes.object,\r\n }),\r\n guid: PropTypes.string, // for adinsight view event log in aria\r\n // eslint-disable-next-line react/forbid-prop-types, react/require-default-props\r\n perfMarker: PropTypes.object,\r\n isMCC: PropTypes.bool,\r\n // eslint-disable-next-line react/forbid-prop-types\r\n overallOptimizationScoreBar: PropTypes.object,\r\n categoryScoreUpLifts: PropTypes.arrayOf(PropTypes.object),\r\n serverContext: PropTypes.shape({}).isRequired,\r\n classes: PropTypes.objectOf(PropTypes.string),\r\n store: PropTypes.instanceOf(StateStore),\r\n availableCategories: PropTypes.arrayOf(PropTypes.string),\r\n rawCouponData: PropTypes.arrayOf(PropTypes.object),\r\n };\r\n\r\n static defaultProps = {\r\n campaignType: null,\r\n categoryType: null,\r\n recommendationType: null,\r\n source: null,\r\n isMCC: false,\r\n vnextDeps: {},\r\n guid: null,\r\n viewHistory: _.noop,\r\n viewBAADetails: _.noop,\r\n backToRecommendation: _.noop,\r\n lastRecommendationType: undefined,\r\n reload: _.noop,\r\n campaignAdGroups: [],\r\n hasFilter: false,\r\n data: {},\r\n dismissedData: {},\r\n lastCampaignId: undefined,\r\n lastAdGroupId: undefined,\r\n overallOptimizationScoreBar: {},\r\n categoryScoreUpLifts: [],\r\n classes: {},\r\n store: null,\r\n availableCategories: [],\r\n rawCouponData: null,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n const { permissions, preferencesService } = this.props.deps;\r\n const { isMCC, channel } = this.props;\r\n this.isOptimizationScoreOn = !isMCC && channel === CHANNEL_TYPES.RECOMMENDATION;\r\n this.isDismissedTabEnabled = this.isOptimizationScoreOn && _.result(permissions, 'IsDismissedTabEnabled');\r\n this.isAutoApplyRecommendationEnabled = !isMCC && _.result(permissions, 'IsAutoApplyRecommendationEnabled');\r\n this.recommendationsDetailsLazy = null;\r\n this.recommendationsHistoryLazy = null;\r\n this.recommendationsBulkAARLazy = null;\r\n this.filteredSummaryViewLazy = null;\r\n preferencesService.initialize();\r\n }\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n // if props passes in a category, that overrides the previous state\r\n const prevCategory = prevState && prevState.currentCategory;\r\n const currentCategory = nextProps.categoryType || prevCategory;\r\n\r\n return {\r\n currentCategory,\r\n };\r\n }\r\n\r\n state = {\r\n isAsyncApplyModalOpen: false,\r\n isApplyConfirmModalOpen: false,\r\n countRecommendation: 0,\r\n autoApplyTeachingBubbleVisible: !window.location.href.includes('isAutoApplyTeachingBubbleDisabled=true'),\r\n optimizationScoreTeachingBubbleVisible: !window.location.href.includes('isOSTeachingBubbleDisabled=true'),\r\n };\r\n\r\n componentDidMount() {\r\n if (window.survey && window.survey.surveyManager) {\r\n window.survey.surveyManager.trigger();\r\n }\r\n if (this.props.viewType !== VIEW_TYPES.HISTORY\r\n && this.props.viewType !== VIEW_TYPES.AUTO_APPLY_SETTINGS\r\n && this.props.viewType !== VIEW_TYPES.AUTO_APPLY_BULK_UPLOAD\r\n && this.props.viewType !== VIEW_TYPES.DETAILS) {\r\n this.updateSitemap();\r\n }\r\n\r\n if (this.props.viewType === VIEW_TYPES.SUMMARY\r\n && this.props.scope.levelAt === 'Campaign'\r\n && !_.isEmpty(this.props.data)) {\r\n this.checkCampaignStatus();\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const isFromDetail = (prevProps.viewType === VIEW_TYPES.DETAILS &&\r\n this.props.viewType === VIEW_TYPES.SUMMARY) && !this.props.hasLoadToken();\r\n if (prevProps.campaignType !== this.props.campaignType || isFromDetail) {\r\n this.props.reload();\r\n }\r\n if (prevProps.data !== this.props.data) {\r\n // Filter category for VNext but not for history, auto-apply-setting, auto-apply-bulk-upload page\r\n if (this.props.viewType !== VIEW_TYPES.HISTORY\r\n && this.props.viewType !== VIEW_TYPES.AUTO_APPLY_SETTINGS\r\n && this.props.viewType !== VIEW_TYPES.AUTO_APPLY_BULK_UPLOAD) {\r\n this.updateSitemap();\r\n }\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n const { permissions, cacheManager } = this.props.deps;\r\n if (this.props.isMCC) {\r\n this.props.deps.appState.unset('account_id');\r\n }\r\n if (this.floatingBannerId) {\r\n notificationStore.dismiss(this.floatingBannerId);\r\n }\r\n\r\n // After apply/dismiss trigger, invalidate campaign cache when leaving recommendation page.\r\n if (permissions.IsRecommendationDataCacheEnabled\r\n && !_.isNull(cacheManager)\r\n && !_.isUndefined(getRecommendationCache('need-invalidate-campaign-cache'))\r\n && getRecommendationCache('need-invalidate-campaign-cache') === true) {\r\n setRecommendationCache('need-invalidate-campaign-cache', false);\r\n cacheManager.invalidate('Campaign');\r\n }\r\n\r\n // Apply/dismiss recommendation: invalidate recommendation summary data cache.\r\n if (permissions.IsRecommendationCacheDetailPageDataEnabled\r\n && !_.isUndefined(getRecommendationCache('recommendation-summary-raw-data'))) {\r\n setRecommendationCache('recommendation-summary-raw-data', undefined);\r\n }\r\n }\r\n\r\n getCategories = (availableCategories = [], data = {}, op = {}) => {\r\n let categories;\r\n if (this.props.isMCC || !this.isOptimizationScoreOn) {\r\n categories = _.unique(_.pluck(data, op.isAutoApplySettings ? 'Category' : 'category'));\r\n } else {\r\n categories = op.isAutoApplySettings ?\r\n _.unique(_.pluck(data, 'Category')) : availableCategories;\r\n }\r\n\r\n if (_.isEmpty(categories)) {\r\n return [];\r\n } else if (op.isAutoApplySettings) {\r\n return categories;\r\n }\r\n\r\n return _.filter(RECOMMENDATION_CATEGORIES, category =>\r\n category === RECOMMENDATION_CATEGORIES.ALL ||\r\n _.contains(categories, RECOMMENDATION_CATEGORIES_IDS[category]));\r\n };\r\n\r\n checkCampaignStatus = () => {\r\n this.props.deps.jsdata.Campaign.findAll({\r\n limit: 1,\r\n select: ['DeliveryStatus'],\r\n where: { Id: { $eq: this.props.scope.campaignId } },\r\n }, {}).then((response) => {\r\n if (response.length && response.length > 0 && response[0].DeliveryStatus === 'CampaignUserPaused') {\r\n const customizedMessage = (\r\n
\r\n {this.props.vnextDeps.newI18n.getString(_TL_('Enable this paused campaign to start showing ads.'))}\r\n {\r\n this.props.store.state.updateCampaignStatus({ id: 'active' });\r\n notificationStore.dismiss(this.floatingBannerId);\r\n }}\r\n style={{\r\n background: '#FFFFFF',\r\n border: '1px solid #C8C6C4',\r\n boxSizing: 'border-box',\r\n borderRadius: 2,\r\n width: 105,\r\n height: 24,\r\n position: 'relative',\r\n left: 81,\r\n }}\r\n >\r\n {this.props.vnextDeps.newI18n.getString(_TL_('Click to enable'))}\r\n \r\n
\r\n );\r\n this.floatingBannerId = this.props.showAlertHandler({\r\n message: customizedMessage,\r\n level: 'Warning',\r\n dismissible: true,\r\n });\r\n }\r\n });\r\n };\r\n\r\n sitemapper = (siteMap) => {\r\n const { availableCategories, isMCC } = this.props;\r\n const recommendationSiteMap = findSiteMap(siteMap, ({ id }) => id === 'recommendations');\r\n if (recommendationSiteMap && _.size(recommendationSiteMap.children)) {\r\n recommendationSiteMap.children = _.filter(\r\n recommendationSiteMap.children,\r\n item => item.id === 'All'\r\n || (isMCC || !this.isOptimizationScoreOn ?\r\n (_.contains(this.getCategories([], this.props.data), item.id)\r\n || (this.isDismissedTabEnabled &&\r\n _.contains(this.getCategories([], this.props.dismissedData), item.id)))\r\n : _.contains(this.getCategories(availableCategories), item.id))\r\n );\r\n }\r\n return siteMap;\r\n };\r\n\r\n updateSitemap = () => {\r\n // renew sitemapper to update the categories\r\n // eslint-disable-next-line max-len\r\n this.props.vnextDeps.customMapperStore.setState({ customMapper: siteMap => this.sitemapper(siteMap) });\r\n };\r\n\r\n logOpportunityEvent = ({\r\n type = null,\r\n action,\r\n position = null,\r\n input = null,\r\n context = null,\r\n }) => {\r\n const guid = action === ADINSIGHT_LOG_ACTION_TYPE.FEEDBACK ?\r\n null :\r\n this.props.guid;\r\n\r\n this.props.currentActivity.trace({\r\n type: type || '',\r\n typeId: RECOMMENDATION_IDS[type],\r\n action,\r\n input,\r\n campaignId: this.props.scope.campaignId,\r\n channel: this.props.isMCC ? CHANNEL_TYPES.MCCRECOMMENDATION : CHANNEL_TYPES.RECOMMENDATION,\r\n position,\r\n guid,\r\n context: JSON.stringify(context),\r\n }, ADINSIGHT_LOG_API_NAME.RECOMMENDATION);\r\n };\r\n\r\n addCouponToRecommendations = (rawCouponData, rawRecommendationData) => {\r\n if (!_.isNull(rawCouponData) && rawCouponData.length) {\r\n const coupon = rawCouponData[0];\r\n const couponFeatureId = coupon.FeatureId.toString();\r\n if (_.isUndefined(FAC_RECOMMENDATION_CONFIG[couponFeatureId])) {\r\n return;\r\n }\r\n const priorities = FAC_RECOMMENDATION_CONFIG[couponFeatureId].priority;\r\n const types = _.keys(rawRecommendationData);\r\n\r\n const couponEligibleType = _.chain(types)\r\n .filter(type => _.contains(priorities, type))\r\n .sortBy(type => _.indexOf(priorities, type))\r\n .first()\r\n .value();\r\n\r\n if (couponEligibleType && _.isUndefined(rawRecommendationData[couponEligibleType].coupon)) {\r\n _.extend(rawRecommendationData[couponEligibleType], { coupon });\r\n }\r\n }\r\n };\r\n\r\n showAsyncApplyModal = (pollTask) => {\r\n this.pollTask = pollTask;\r\n this.setState({ isAsyncApplyModalOpen: true });\r\n };\r\n\r\n closeAsyncApplyModal = () => {\r\n this.pollTask.stop();\r\n this.setState({ isAsyncApplyModalOpen: false });\r\n };\r\n\r\n showApplyConfirmModal = ({\r\n onApply, countRecommendation, onReject = _.noop, type,\r\n }) => {\r\n _.defer(() => this.setState({ isApplyConfirmModalOpen: true, countRecommendation }));\r\n this.onApplyConfirm = onApply;\r\n this.onApplyReject = onReject;\r\n this.onApplyRecommendationType = type;\r\n };\r\n\r\n closeApplyConfirmModal = () => {\r\n this.setState({ isApplyConfirmModalOpen: false });\r\n };\r\n\r\n confirmApplyConfirmModal = () => {\r\n if (_.isFunction(this.onApplyConfirm)) {\r\n this.onApplyConfirm();\r\n }\r\n this.closeApplyConfirmModal();\r\n };\r\n\r\n rejectApplyConfirmModal = () => {\r\n if (_.isFunction(this.onApplyReject)) {\r\n this.onApplyReject();\r\n }\r\n this.closeApplyConfirmModal();\r\n };\r\n\r\n initLegacyDeps = () => {\r\n if (_.isUndefined(this.props.deps.adDisplayUrlService)) {\r\n this.props.deps.adDisplayUrlService = adDisplayUrlService;\r\n }\r\n if (_.isUndefined(this.props.deps.combineText)) {\r\n this.props.deps.combineText = combineText;\r\n }\r\n };\r\n\r\n renderDownloadButton = (context, isOptimizationScoreOn = false) => (\r\n \r\n );\r\n\r\n render() {\r\n let { currentCategory } = this.state;\r\n const currency = this.props.deps.pageContext.AccountCurrencyCode;\r\n const readOnly = isReadOnly && isReadOnly(this.props.deps.appConfig, this.props.isMCC);\r\n const {\r\n i18n,\r\n permissions,\r\n } = this.props.deps;\r\n const {\r\n overallOptimizationScoreBar,\r\n availableCategories,\r\n data,\r\n dismissedData,\r\n rawCouponData,\r\n } = this.props;\r\n\r\n let categories;\r\n if (this.props.isMCC || !this.isOptimizationScoreOn) {\r\n categories = this.isDismissedTabEnabled ?\r\n this.getCategories([], data).concat(this.getCategories([], dismissedData)) :\r\n this.getCategories([], data);\r\n } else {\r\n categories = this.getCategories(availableCategories);\r\n }\r\n this.categories = categories;\r\n\r\n // Resolve invalid category\r\n if (this.props.viewType === VIEW_TYPES.SUMMARY && !_.contains(categories, currentCategory)\r\n && currentCategory !== RECOMMENDATION_CATEGORIES.ALL\r\n ) {\r\n currentCategory = RECOMMENDATION_CATEGORIES.ALL;\r\n this.props.viewCategory(RECOMMENDATION_CATEGORIES.ALL)();\r\n }\r\n\r\n if (_.any(\r\n data,\r\n rec => _.has(FAC_RECOMENDATIONTYPE_FEATUREID_MAPPING, rec.type)\r\n )) {\r\n this.addCouponToRecommendations(rawCouponData, data);\r\n }\r\n\r\n const isDismissedCategory = currentCategory === RECOMMENDATION_CATEGORIES.DISMISSED;\r\n\r\n const context = {\r\n Source: null,\r\n Level: this.props.scope.levelAt,\r\n Category: this.props.channel !== 'competitionpage' ? currentCategory : null,\r\n CampaignIds: this.props.scope.campaignId ? [Number(this.props.scope.campaignId)] : [],\r\n AdGroupIds: this.props.scope.adGroupId ? [Number(this.props.scope.adGroupId)] : [],\r\n };\r\n\r\n // add Source if not from recommendation summary page\r\n if (this.props.viewType === VIEW_TYPES.DETAILS && this.props.source !== 'summarypage') {\r\n context.Source = this.props.source;\r\n }\r\n\r\n // set recommendation data for subpage menu\r\n if (this.isOptimizationScoreOn) {\r\n this.props.vnextDeps.recommendationDataStore.setState({\r\n overallOptimizationScoreBar,\r\n categoryScoreUpLifts: this.props.categoryScoreUpLifts,\r\n renderDownloadButton: _.partial(this.renderDownloadButton, context),\r\n isAutoApplyRecommendationEnabled: this.isAutoApplyRecommendationEnabled\r\n && !this.props.isMCC,\r\n });\r\n }\r\n\r\n let recommendationsDetails = null;\r\n if (this.props.viewType === VIEW_TYPES.DETAILS) {\r\n if (_.isNull(this.recommendationsDetailsLazy)) {\r\n this.recommendationsDetailsLazy = React.lazy(() => import(/* webpackMode: 'eager' */ './recommendations-details-view').then(({ RecommendationsDetails }) => ({ default: RecommendationsDetails })));\r\n }\r\n const RecommendationsDetailsLazy = this.recommendationsDetailsLazy;\r\n recommendationsDetails = ();\r\n }\r\n\r\n let recommendationsHistory = null;\r\n if (this.props.viewType === VIEW_TYPES.HISTORY) {\r\n if (_.isNull(this.recommendationsHistoryLazy)) {\r\n this.recommendationsHistoryLazy = React.lazy(() => import(/* webpackMode: 'eager' */ './recommendations-history').then(({ RecommendationsHistory }) => ({ default: RecommendationsHistory })));\r\n }\r\n const RecommendationsHistoryLazy = this.recommendationsHistoryLazy;\r\n recommendationsHistory = ();\r\n }\r\n\r\n let recommendationBulkAAR = null;\r\n if (this.props.viewType === VIEW_TYPES.AUTO_APPLY_BULK_UPLOAD) {\r\n if (_.isNull(this.recommendationsBulkAARLazy)) {\r\n this.recommendationsBulkAARLazy = React.lazy(() => import(/* webpackMode: 'eager' */ './recommendations-bulk-aar').then(({ RecommendationsBulkAAR }) => ({ default: RecommendationsBulkAAR })));\r\n }\r\n const RecommendationsBulkAARLazy = this.recommendationsBulkAARLazy;\r\n recommendationBulkAAR = ();\r\n }\r\n\r\n let filteredSummaryView = null;\r\n if (this.props.viewType === VIEW_TYPES.SUMMARY) {\r\n if (_.isNull(this.filteredSummaryViewLazy)) {\r\n this.filteredSummaryViewLazy = React.lazy(() => import(/* webpackMode: 'eager' */ '@bingads-webui-campaign-react/recommendation-summary-view').then(({ FilteredSummaryView }) => ({ default: FilteredSummaryView })));\r\n }\r\n this.initLegacyDeps();\r\n const FilteredSummaryViewLazy = this.filteredSummaryViewLazy;\r\n filteredSummaryView = ();\r\n }\r\n\r\n let confirmFormTitle;\r\n let confirmFormContent;\r\n if (this.onApplyRecommendationType === RECOMMENDATION_TYPES.SSC_2_PMAX_MIGRATION) {\r\n confirmFormTitle = this.state.countRecommendation === 1 ?\r\n this.props.vnextDeps.newI18n.getString(_TL_('Are you sure you want to upgrade smart shopping campaign to Performance Max campaigns?')) :\r\n this.props.vnextDeps.newI18n.getString(_TL_('Are you sure you want to upgrade all smart shopping campaigns to Performance Max campaigns?'));\r\n confirmFormContent = this.props.vnextDeps.newI18n.getString(_TL_('Once you confirm, the upgrade process will continue until it completes and cannot be discontinued.'));\r\n } else {\r\n confirmFormTitle = this.state.countRecommendation === 1 ?\r\n i18n.getString('Summary_Card_Apply') :\r\n i18n.getString('Summary_Card_Apply_All');\r\n confirmFormContent = this.state.countRecommendation === 1 ?\r\n i18n.getString('Recommendation_Apply_All_Confirm_Singular') :\r\n i18n.getString('Recommendation_Apply_All_Confirm', { count: this.state.countRecommendation });\r\n }\r\n\r\n return (\r\n
\r\n {this.props.viewType !== VIEW_TYPES.HISTORY\r\n && this.props.viewType !== VIEW_TYPES.AUTO_APPLY_SETTINGS\r\n && this.props.viewType !== VIEW_TYPES.AUTO_APPLY_BULK_UPLOAD &&\r\n
    \r\n {(this.props.viewType === VIEW_TYPES.SUMMARY &&\r\n _.difference(_.keys(this.props.data), NOT_SUPPORT_DOWNLOAD_TYPES).length !== 0) &&\r\n !this.props.isMCC && this.props.channel === CHANNEL_TYPES.COMPETITION &&\r\n
  • \r\n {this.renderDownloadButton(context)}\r\n
  • \r\n }\r\n \r\n
\r\n }\r\n {this.props.viewType === VIEW_TYPES.DETAILS &&\r\n
\r\n \r\n {recommendationsDetails}\r\n \r\n
\r\n }\r\n {this.props.viewType === VIEW_TYPES.SUMMARY &&\r\n
\r\n \r\n {filteredSummaryView}\r\n \r\n
\r\n }\r\n {this.props.viewType === VIEW_TYPES.HISTORY &&\r\n
\r\n \r\n {recommendationsHistory}\r\n \r\n
\r\n }\r\n {this.props.viewType === VIEW_TYPES.AUTO_APPLY_BULK_UPLOAD &&\r\n
\r\n \r\n {recommendationBulkAAR}\r\n \r\n
\r\n }\r\n {this.isAutoApplyRecommendationEnabled\r\n && this.props.viewType === VIEW_TYPES.AUTO_APPLY_SETTINGS &&\r\n
\r\n \r\n this.setState({ autoApplyTeachingBubbleVisible: false })}\r\n scope={this.props.scope}\r\n permissions={permissions}\r\n />\r\n
\r\n }\r\n \r\n {\r\n this.closeAsyncApplyModal();\r\n this.props.viewHistory();\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n this.isOptimizationScoreOn && this.state.optimizationScoreTeachingBubbleVisible && this.props.viewType === VIEW_TYPES.SUMMARY &&\r\n { this.setState({ optimizationScoreTeachingBubbleVisible: false }); }}\r\n onDismiss={() => { this.setState({ optimizationScoreTeachingBubbleVisible: false }); }}\r\n onClose={() => { this.setState({ optimizationScoreTeachingBubbleVisible: false }); }}\r\n userGovernanceConfig={getTeachingBubbleUserGovernanceConfig()}\r\n />\r\n }\r\n {this.isAutoApplyRecommendationEnabled &&\r\n this.state.autoApplyTeachingBubbleVisible && this.props.viewType === VIEW_TYPES.SUMMARY &&\r\n { this.setState({ autoApplyTeachingBubbleVisible: false }); }}\r\n onDismiss={() => { this.setState({ autoApplyTeachingBubbleVisible: false }); }}\r\n onClose={() => { this.setState({ autoApplyTeachingBubbleVisible: false }); }}\r\n primaryButtonText={this.props.vnextDeps.newI18n.getString(_TL_('Got it'))}\r\n targetElement={document.querySelector('.recommendation-auto-apply-item')}\r\n className=\"recommendation-auto-apply-teaching-bubble\"\r\n />\r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport const RecommendationTab =\r\n withStateStore(recommendationTab, sharedComponentFunctionStateStore);\r\n","export const TITLE = _TL_('Auto Apply Recommendation Bulk Update Tool');\r\nexport const HINT = _TL_('You can reference the sample payload below to prepare your CSV file to be uploaded.');\r\nexport const DESCRIPTION = _TL_('Please prepare a csv file with three columns \"Account ID\", \"Recommendation Type\" and \"Opt-in status\". Fill up the values of each row following the instructions below.\\nTo avoid naming confusion, suggest following the convention below to name your file each time:\\n\\nAAR_update_yyyy_mm__dd.csv');\r\nexport const UPLOAD_COMFIRM = _TL_('You are trying to make {{number}} updates, please confirm that you will make the change.');\r\n\r\nexport const LIMIT_UPLOAD_NUMBER = 2000;\r\nexport const INSTRUCTION_STRINGS = {\r\n LIMIT: _TL_('Don\\'t include more than {{number}} account id in each individual CSV file.'),\r\n ACCOUNT_ID: _TL_('Column \"Account ID\" requires a numeric value. For example, 35000220 is valid, but B00573KQ is not.'),\r\n RECOMMENDATION_TYPE: _TL_('Column \"Recommendation Type\" requires a valid value that must be selected from the following sample list. Any other texts are not accepted.'),\r\n OPTIN_STATUS: _TL_('Column \"Opt-in status\" requires a \"YES\" or \"NO\" text value. Setting it to \"YES\" means to opt-in, and \"NO\" to opt-out.'),\r\n};\r\nexport const STEP_STRINGS = [\r\n _TL_('Check the file format as well as the content. You may get error message if the format is not in CSV or the content is invalid.'),\r\n _TL_('Upload the CSV file to remote server where we store it temporarily.'),\r\n _TL_('Validate the account list that current user has access to update status for. You will get error prompts if you don\\'t have corresponding access.'),\r\n _TL_('Apply the changes for you.'),\r\n];\r\n\r\nexport const SUPPORT_RECOMMENDATION_TYPE_TITLE = [\r\n 'Create responsive search ads',\r\n 'Create multimedia ads',\r\n 'Fix conversion goal setting issues',\r\n 'Remove negative keyword conflicts',\r\n 'Create conversion goal',\r\n 'Repair missing keyword param issue',\r\n];\r\n\r\nexport const SAMPLE_TABLE_DATA = [\r\n {\r\n accountId: '35000220',\r\n recommendationType: SUPPORT_RECOMMENDATION_TYPE_TITLE[0],\r\n optIn: 'YES',\r\n },\r\n {\r\n accountId: '35000220',\r\n recommendationType: SUPPORT_RECOMMENDATION_TYPE_TITLE[1],\r\n optIn: 'NO',\r\n },\r\n {\r\n accountId: '35000220',\r\n recommendationType: SUPPORT_RECOMMENDATION_TYPE_TITLE[2],\r\n optIn: 'YES',\r\n },\r\n {\r\n accountId: '35000220',\r\n recommendationType: SUPPORT_RECOMMENDATION_TYPE_TITLE[3],\r\n optIn: 'NO',\r\n },\r\n {\r\n accountId: '35000220',\r\n recommendationType: SUPPORT_RECOMMENDATION_TYPE_TITLE[4],\r\n optIn: 'YES',\r\n },\r\n {\r\n accountId: '35000220',\r\n recommendationType: SUPPORT_RECOMMENDATION_TYPE_TITLE[5],\r\n optIn: 'YES',\r\n },\r\n];\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _, { result } from 'underscore';\r\nimport { RecommendationModal, AsyncBulkAarConfirmForm } from '@bingads-webui-campaign-react/recommendation-modal';\r\nimport { UPLOAD_COMFIRM, SUPPORT_RECOMMENDATION_TYPE_TITLE, LIMIT_UPLOAD_NUMBER } from './const';\r\n\r\nexport class BulkAARUpload extends React.PureComponent {\r\n static propTypes = {\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n i18n: PropTypes.shape({ getString: PropTypes.func }).isRequired,\r\n newI18n: PropTypes.shape({ getString: PropTypes.func }).isRequired,\r\n dataService: PropTypes.shape({\r\n getBulkAarUploadBlobUrl: PropTypes.func.isRequired,\r\n setBulkAarUploadBlob: PropTypes.func.isRequired,\r\n submitBulkAarOptInStatusTask: PropTypes.func.isRequired,\r\n pollBulkAarOptInStatusTask: PropTypes.func.isRequired,\r\n }).isRequired,\r\n serverContext: PropTypes.objectOf(PropTypes.any).isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.fileInput = React.createRef();\r\n this.state = {\r\n fileName: null,\r\n fileContent: null,\r\n errorMessage: '',\r\n isBulkAarUploadModalOpen: false,\r\n uploadContent: props.newI18n.getString(UPLOAD_COMFIRM, { number: 0 }),\r\n loading: false,\r\n stage: 0,\r\n };\r\n }\r\n\r\n onClick = () => {\r\n this.fileInput.current.value = '';\r\n this.fileInput.current.click();\r\n };\r\n\r\n filter = (element, seenRow, seenAccount) => {\r\n const rowChain = _.chain(element.split(/,/)).map(column => column.trim()).value();\r\n const accountIdRegex = /^[0-9]*$/;\r\n const optInRegex = /\\byes\\b|\\bno\\b/;\r\n\r\n if (rowChain[0] && rowChain[1] && rowChain[2]) {\r\n if (accountIdRegex.test(rowChain[0]) &&\r\n _.contains(SUPPORT_RECOMMENDATION_TYPE_TITLE, rowChain[1]) &&\r\n optInRegex.test(rowChain[2].toLowerCase())) {\r\n seenRow.add(`${rowChain[0]}, ${rowChain[1]}`);\r\n seenAccount.add(rowChain[0]);\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n parseCsvFromFile = (stream) => {\r\n if (!stream) {\r\n return 0;\r\n }\r\n\r\n const emptyRegex = /^,,$/; // stream should filter out lines containing only commas\r\n const rowCount = _.chain(stream.split(/\\r\\n|\\n/)).filter(row => !emptyRegex.test(row)).filter(row => row.trim()).value().length - 1; // minus 1 for the header row\r\n\r\n const seenRow = new Set();\r\n const seenAccount = new Set();\r\n const optIn = _.chain(stream.split(/\\r\\n|\\n/))\r\n .filter(row => this.filter(row, seenRow, seenAccount))\r\n .value();\r\n\r\n let output = 'Account Id, Recommendation Type, Opt-In\\n';\r\n _.each(optIn, (optInElement) => {\r\n const rowChain = _.chain(optInElement.split(/,/)).map(column => column.trim()).value();\r\n output += `${rowChain[0]}, ${rowChain[1]}, ${rowChain[2]}\\n`;\r\n });\r\n\r\n return {\r\n content: output,\r\n count: optIn.length,\r\n rowCount,\r\n uniqueCount: seenRow.size,\r\n accountCount: seenAccount.size,\r\n };\r\n };\r\n\r\n handleFile = (e) => {\r\n const { files } = e.target;\r\n if (files.length > 0 && files[0]) {\r\n const file = files[0];\r\n if (file.name.endsWith('.csv')) {\r\n this.saveCurrent(file);\r\n\r\n const reader = new FileReader();\r\n reader.readAsText(file);\r\n reader.onload = () => {\r\n const validContent = this.parseCsvFromFile(reader.result);\r\n\r\n if (validContent.count === validContent.rowCount &&\r\n validContent.count === validContent.uniqueCount &&\r\n validContent.accountCount <= LIMIT_UPLOAD_NUMBER) {\r\n this.setState({\r\n isBulkAarUploadModalOpen: true,\r\n uploadContent: this.props.newI18n.getString(UPLOAD_COMFIRM, { number: validContent.count }),\r\n fileContent: validContent.content,\r\n });\r\n } else if (validContent.accountCount > LIMIT_UPLOAD_NUMBER) {\r\n this.saveCurrent(file, this.props.newI18n.getString(_TL_('There are more than {{limit}} account id in the CSV file, please remove some and try again.'), { limit: LIMIT_UPLOAD_NUMBER }));\r\n } else if (validContent.count !== validContent.uniqueCount) {\r\n this.saveCurrent(file, this.props.newI18n.getString(_TL_('There are duplicated records in the CSV file, please fix them and then try again.')));\r\n } else {\r\n this.saveCurrent(file, this.props.newI18n.getString(_TL_('Some of rows in the CSV file have invalid account id, recommendation type name or opt-in status, please fix them and then try again.')));\r\n }\r\n };\r\n } else {\r\n this.saveCurrent(null, this.props.newI18n.getString(_TL_('The format of the file is not supported, please upload CSV file.')));\r\n }\r\n }\r\n };\r\n\r\n saveCurrent = (file, errorMessage = '') => {\r\n this.setState({\r\n fileName: file && `${result(this.props.serverContext, ['CurrentUser', 'Id'])}_${Date.now()}_${file.name}`,\r\n errorMessage,\r\n });\r\n };\r\n\r\n confirmBulkAarUploadModal = () => {\r\n const { fileName, fileContent } = this.state;\r\n this.setState({ loading: true, stage: 0 });\r\n this.props.dataService.getBulkAarUploadBlobUrl({ fileName })\r\n .then(({ data }) => {\r\n if (data) {\r\n return this.props.dataService.setBulkAarUploadBlob(data.value, fileContent);\r\n }\r\n return null;\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n this.setState({ stage: 1 });\r\n return this.props.dataService.submitBulkAarOptInStatusTask({ fileName });\r\n }\r\n return null;\r\n })\r\n .then(({ res }) => {\r\n if (res.value) {\r\n this.setState({ stage: 2 });\r\n return this.props.dataService.pollBulkAarOptInStatusTask({ reqId: res.value });\r\n }\r\n return null;\r\n })\r\n .then(() => {})\r\n .finally(() => { this.closeBulkAarUploadModalOpen(); });\r\n };\r\n\r\n closeBulkAarUploadModalOpen = () => {\r\n this.setState({\r\n fileName: '',\r\n isBulkAarUploadModalOpen: false,\r\n uploadContent: this.props.newI18n.getString(UPLOAD_COMFIRM, { number: 0 }),\r\n loading: false,\r\n errorMessage: '',\r\n });\r\n };\r\n\r\n render() {\r\n const {\r\n classes, i18n, newI18n,\r\n } = this.props;\r\n const {\r\n errorMessage, uploadContent,\r\n } = this.state;\r\n\r\n return (\r\n
\r\n \r\n \r\n {\r\n !_.isEmpty(errorMessage) &&\r\n
\r\n {errorMessage}\r\n
\r\n }\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n","import React, { PureComponent } from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport {\r\n TITLE,\r\n INSTRUCTION_STRINGS,\r\n DESCRIPTION,\r\n HINT,\r\n SAMPLE_TABLE_DATA,\r\n LIMIT_UPLOAD_NUMBER,\r\n STEP_STRINGS,\r\n} from './const';\r\nimport { BulkAARUpload } from './bulk-aar-upload';\r\nimport { getBulkAarHeaderStyle } from '../style/bulk-aar-header-style';\r\n\r\nexport class RecommendationBulkAAR extends PureComponent {\r\n static propTypes = {\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n newI18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n };\r\n\r\n renderColumn(string, newI18n) {\r\n return (\r\n
  • \r\n {newI18n.getString(string, { number: LIMIT_UPLOAD_NUMBER })}\r\n
  • \r\n );\r\n }\r\n\r\n renderSampleTableData(column) {\r\n return (\r\n \r\n {column.accountId}\r\n {column.recommendationType}\r\n {column.optIn}\r\n \r\n );\r\n }\r\n\r\n render() {\r\n const {\r\n i18n, newI18n, classes,\r\n } = this.props;\r\n\r\n const instructionStrings = _.map(INSTRUCTION_STRINGS, string => this.renderColumn(string, newI18n));\r\n const stepStrings = _.map(STEP_STRINGS, string => this.renderColumn(string, newI18n));\r\n const sampleTableData = _.map(SAMPLE_TABLE_DATA, data => this.renderSampleTableData(data));\r\n const sampleTable = (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {sampleTableData}\r\n \r\n
    Account IDRecommendation TypeOpt-in
    \r\n );\r\n\r\n return (\r\n
    \r\n

    \r\n {newI18n.getString(TITLE)}\r\n

    \r\n

    \r\n {newI18n.getString(DESCRIPTION)}\r\n

    \r\n \r\n
    \r\n
    \r\n {newI18n.getString(_TL_('Instructions:'))}\r\n
      \r\n {instructionStrings}\r\n
    \r\n
    \r\n
    \r\n

    \r\n {newI18n.getString(HINT)}\r\n

    \r\n {sampleTable}\r\n
    \r\n
    \r\n
    \r\n {newI18n.getString(_TL_('The bulk update tool follow the steps below to update AAR status:'))}\r\n
      \r\n {stepStrings}\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport const StyledRecommendationBulkAAR =\r\n withDefaultStyles(RecommendationBulkAAR, getBulkAarHeaderStyle);\r\n","export const getBulkAarHeaderStyle = (_, { palette = {} }) => ({\r\n title: {\r\n fontSize: 20,\r\n fontStyle: 'normal',\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 600,\r\n lineHeight: '27px',\r\n marginTop: 24,\r\n marginLeft: 27,\r\n marginBottom: 14,\r\n },\r\n bulkAarDescription: {\r\n paddingLeft: 27,\r\n marginTop: 20,\r\n marginBottom: 20,\r\n whiteSpace: 'pre-line',\r\n },\r\n bulkAarInstruction: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n marginBottom: 20,\r\n },\r\n bulkAarInstructionStep: {\r\n width: 500,\r\n padding: '10px 27px',\r\n lineHeight: '24px',\r\n borderRight: 'solid 0.5px #979797',\r\n '& ol': {\r\n marginTop: 9,\r\n paddingLeft: 20,\r\n },\r\n },\r\n '@media (max-width: 1100px)': {\r\n bulkAarInstruction: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n marginBottom: 20,\r\n },\r\n bulkAarInstructionStep: {\r\n borderRight: 'none',\r\n },\r\n },\r\n sampleTable: {\r\n width: 600,\r\n margin: '10px 27px',\r\n '& table': {\r\n marginLeft: 20,\r\n borderLeft: '2px solid #fff',\r\n borderRight: '2px solid #fff',\r\n },\r\n '& thead': {\r\n borderTop: '2px solid #979797',\r\n borderBottom: '2px solid #979797',\r\n fontWeight: 600,\r\n },\r\n '& td': {\r\n padding: '4px 8px',\r\n border: '1px solid #EDEBE9',\r\n },\r\n },\r\n bulkAarStep: {\r\n width: 500,\r\n padding: '10px 27px',\r\n paddingRight: 5,\r\n lineHeight: '24px',\r\n '& ol': {\r\n marginTop: 9,\r\n paddingLeft: 20,\r\n },\r\n },\r\n uploadContatiner: {\r\n marginLeft: 27,\r\n marginBottom: 16,\r\n '& #select-file-format': {\r\n marginRight: 6,\r\n fontColot: '#B3B0AD',\r\n height: 32,\r\n width: 220,\r\n },\r\n },\r\n uploadInput: {\r\n display: 'none !important',\r\n },\r\n fileUploadDescription: {\r\n fontSize: 12,\r\n opacity: 0.6,\r\n marginTop: 4,\r\n },\r\n fileRemove: {\r\n border: 'unset',\r\n background: 'unset',\r\n padding: 'unset',\r\n marginLeft: 12,\r\n fontSize: 14,\r\n color: palette.accent,\r\n },\r\n fileInfo: {\r\n display: 'inline',\r\n fontSize: 14,\r\n marginLeft: 5,\r\n },\r\n fileError: {\r\n marginTop: 6,\r\n fontSize: 14,\r\n color: '#A80000',\r\n },\r\n fileFormat: {\r\n marginTop: 6,\r\n fontSize: 14,\r\n color: '#A19F9D',\r\n },\r\n fileInfoContainer: {\r\n display: 'inline-flex',\r\n height: 32,\r\n alignItems: 'center',\r\n },\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _, { result } from 'underscore';\r\nimport { StyledRecommendationBulkAAR } from '@bingads-webui-campaign-react/recommendation-bulk-aar';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getHistoryPageStyle } from '../style/history-page-style';\r\n\r\nclass recommendationsBulkAAR extends React.PureComponent {\r\n static propTypes = {\r\n navigateBack: PropTypes.func.isRequired,\r\n deps: PropTypes.shape({\r\n appConfig: PropTypes.objectOf(PropTypes.any).isRequired,\r\n i18n: PropTypes.PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n preferencesService: PropTypes.objectOf(PropTypes.any).isRequired,\r\n }).isRequired,\r\n dataService: PropTypes.shape({\r\n getHistory: PropTypes.func.isRequired,\r\n downloadHistory: PropTypes.func.isRequired,\r\n }).isRequired,\r\n currentActivity: PropTypes.shape({\r\n trace: PropTypes.func.isRequired,\r\n error: PropTypes.func.isRequired,\r\n }).isRequired,\r\n perfMarker: PropTypes.shape({\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 newI18n: PropTypes.PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n viewSummary: PropTypes.func.isRequired,\r\n serverContext: PropTypes.shape({}).isRequired,\r\n isAutoApplyRecommendationEnabled: PropTypes.bool.isRequired,\r\n };\r\n\r\n static defaultProps = {\r\n perfMarker: {\r\n willInit: _.noop,\r\n willFetchData: _.noop,\r\n willRender: _.noop,\r\n done: _.noop,\r\n createChild: () => this,\r\n },\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.perfMarker = props.perfMarker.createChild('RecommendationHistoryGridOverall');\r\n if (_.isFunction(this.perfMarker.willInit)) {\r\n this.perfMarker.willInit();\r\n }\r\n this.perfMarkerDone = false;\r\n }\r\n\r\n componentDidMount = () => {\r\n if (_.isFunction(this.perfMarker.willFetchData)) {\r\n this.perfMarker.willFetchData();\r\n }\r\n if (result(this.props.serverContext, 'IsProdEnv') && result(result(this.props.serverContext, ['CurrentCustomer']), ['Id']) !== 252258370) {\r\n this.props.viewSummary();\r\n }\r\n };\r\n\r\n componentDidUpdate = () => {\r\n if (!this.perfMarkerDone) {\r\n if (_.isFunction(this.perfMarker.done)) {\r\n this.perfMarker.done();\r\n }\r\n this.perfMarkerDone = true;\r\n }\r\n };\r\n\r\n render() {\r\n if (_.isFunction(this.perfMarker.willRender)) {\r\n this.perfMarker.willRender();\r\n }\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport const RecommendationsBulkAAR =\r\n withDefaultStyles((recommendationsBulkAAR), getHistoryPageStyle);\r\n","/* eslint-disable jsx-a11y/aria-role */\r\nimport _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { DetailsSummary } from '@bingads-webui-campaign-react/recommendation-details-view';\r\nimport {\r\n getDetailsSummary,\r\n AUTO_APPLY_TYPES,\r\n SUPPORT_ADINSIGHT_AUTO_APPLY_TYPES,\r\n} from '@bingads-webui-campaign/recommendation-core';\r\n\r\nexport class RecommendationsDetailsHeader extends React.PureComponent {\r\n static propTypes = {\r\n data: PropTypes.objectOf(PropTypes.any),\r\n scope: PropTypes.shape({\r\n levelAt: PropTypes.string.isRequired,\r\n advertiserCustomerId: PropTypes.number.isRequired,\r\n userId: PropTypes.number.isRequired,\r\n accountId: PropTypes.number.isRequired,\r\n }).isRequired,\r\n type: PropTypes.string.isRequired,\r\n navigateBack: PropTypes.func.isRequired,\r\n currency: PropTypes.string.isRequired,\r\n deps: PropTypes.shape({\r\n i18n: PropTypes.PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n appConfig: PropTypes.objectOf(PropTypes.any).isRequired,\r\n permissions: PropTypes.object.isRequired,\r\n odata: PropTypes.PropTypes.shape({\r\n get: PropTypes.func.isRequired,\r\n patch: PropTypes.func.isRequired,\r\n }).isRequired,\r\n preferencesService: PropTypes.objectOf(PropTypes.any),\r\n }).isRequired,\r\n visible: PropTypes.bool.isRequired,\r\n isMCC: PropTypes.bool,\r\n overallOptimizationScoreBar: PropTypes.shape({\r\n Gained: PropTypes.number,\r\n Dismissed: PropTypes.number,\r\n Available: PropTypes.number,\r\n }),\r\n isOptimizationScoreOn: PropTypes.bool,\r\n context: PropTypes.shape({\r\n Source: PropTypes.string,\r\n Level: PropTypes.string,\r\n Category: PropTypes.string,\r\n }),\r\n newI18n: PropTypes.PropTypes.shape({\r\n getString: PropTypes.func,\r\n }),\r\n isAutoApplyRecommendationEnabled: PropTypes.bool,\r\n viewSettings: PropTypes.func,\r\n isDismissedCategory: PropTypes.bool,\r\n };\r\n\r\n static defaultProps = {\r\n data: null,\r\n isMCC: false,\r\n overallOptimizationScoreBar: null,\r\n isOptimizationScoreOn: false,\r\n context: null,\r\n newI18n: {\r\n getString: _.noop,\r\n },\r\n isAutoApplyRecommendationEnabled: false,\r\n viewSettings: _.noop,\r\n isDismissedCategory: false,\r\n };\r\n\r\n render() {\r\n if (!this.props.visible) {\r\n return (null);\r\n }\r\n // get summary model from data\r\n const normalizedData =\r\n _.isUndefined(this.props.data[this.props.type]) ?\r\n {} : this.props.data[this.props.type];\r\n let showAutoApplyBanner;\r\n if (this.props.isAutoApplyRecommendationEnabled) {\r\n showAutoApplyBanner = _.contains(\r\n _.keys(AUTO_APPLY_TYPES).concat(SUPPORT_ADINSIGHT_AUTO_APPLY_TYPES),\r\n this.props.type\r\n )\r\n && !this.props.isMCC\r\n && normalizedData.isAutoApplyOptIn\r\n && new URLSearchParams(window.location.search).get('IsRSAAutoApplyEnabled') !== 'false';\r\n } else {\r\n showAutoApplyBanner = _.contains(_.keys(AUTO_APPLY_TYPES), this.props.type)\r\n && !this.props.isMCC\r\n && this.props.deps.permissions.IsRSAAutoApplyEnabled\r\n && normalizedData.optInStatus\r\n && new URLSearchParams(window.location.search).get('IsRSAAutoApplyEnabled') !== 'false';\r\n }\r\n\r\n const { summary } = getDetailsSummary(_.extend(\r\n {},\r\n normalizedData,\r\n {\r\n i18n: this.props.deps.i18n,\r\n newI18n: this.props.newI18n,\r\n currency: this.props.currency,\r\n scope: this.props.scope.levelAt,\r\n appConfig: this.props.deps.appConfig,\r\n permissions: this.props.deps.permissions,\r\n isMCC: this.props.isMCC,\r\n showAutoApplyBanner,\r\n isAutoApplyRecommendationEnabled: this.props.isAutoApplyRecommendationEnabled,\r\n }\r\n ));\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n","/* eslint-disable jsx-a11y/aria-role */\r\n/* eslint-disable no-cond-assign */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { CHANNEL_TYPES } from '@bingads-webui-campaign/recommendation-core';\r\nimport * as adDisplayUrlService from '@bingads-webui-campaign-legacy/crud-ad/service/displayUrl';\r\nimport { combineText } from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/adsPreview/expandedTextAd';\r\nimport * as schemaCampaignVnext from '@bingads-webui-component-legacy/schema-campaign-vnext/index';\r\n\r\nexport class RecommendationsDetails extends React.PureComponent {\r\n static propTypes = {\r\n scope: PropTypes.shape({\r\n accountId: PropTypes.number.isRequired,\r\n adGroupId: PropTypes.number,\r\n campaignId: PropTypes.number,\r\n customerId: PropTypes.number.isRequired,\r\n levelAt: PropTypes.string.isRequired,\r\n }).isRequired,\r\n campaignType: PropTypes.number,\r\n source: PropTypes.string,\r\n setData: PropTypes.func.isRequired,\r\n prevCategoryType: PropTypes.string,\r\n navigateBack: PropTypes.func.isRequired,\r\n type: PropTypes.string.isRequired,\r\n currency: PropTypes.string.isRequired,\r\n deps: PropTypes.shape({\r\n i18n: PropTypes.PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n s$i18n: PropTypes.PropTypes.shape({\r\n value: PropTypes.func,\r\n }),\r\n appConfig: PropTypes.objectOf(PropTypes.any).isRequired,\r\n permissions: PropTypes.object.isRequired,\r\n odata: PropTypes.PropTypes.shape({\r\n get: PropTypes.func.isRequired,\r\n patch: PropTypes.func.isRequired,\r\n }).isRequired,\r\n adDisplayUrlService: PropTypes.object,\r\n schemaCampaignVnext: PropTypes.object,\r\n combineText: PropTypes.func,\r\n }).isRequired,\r\n dataService: PropTypes.shape({\r\n getSummary: PropTypes.func.isRequired,\r\n track: PropTypes.func.isRequired,\r\n }).isRequired,\r\n showAlertHandler: PropTypes.func.isRequired,\r\n reload: PropTypes.func.isRequired,\r\n guid: PropTypes.string.isRequired, // for adinsight view event log in aria\r\n downloadService: PropTypes.objectOf(PropTypes.any),\r\n viewDetails: PropTypes.func.isRequired,\r\n viewBAADetails: PropTypes.func,\r\n context: PropTypes.shape({\r\n Source: PropTypes.string,\r\n Level: PropTypes.string,\r\n Category: PropTypes.string,\r\n }),\r\n data: PropTypes.objectOf(PropTypes.any),\r\n // eslint-disable-next-line react/forbid-prop-types, react/require-default-props\r\n perfMarker: PropTypes.shape({\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 isMCC: PropTypes.bool,\r\n readOnly: PropTypes.bool,\r\n showAsyncApplyModal: PropTypes.func,\r\n closeAsyncApplyModal: PropTypes.func,\r\n showApplyConfirmModal: PropTypes.func,\r\n overallOptimizationScoreBar: PropTypes.shape({\r\n Gained: PropTypes.number,\r\n Dismissed: PropTypes.number,\r\n Available: PropTypes.number,\r\n }),\r\n isOptimizationScoreOn: PropTypes.bool,\r\n isAutoApplyRecommendationEnabled: PropTypes.bool,\r\n serverContext: PropTypes.shape({}),\r\n isDismissedCategory: PropTypes.bool,\r\n };\r\n\r\n static defaultProps = {\r\n campaignType: null,\r\n source: null,\r\n prevCategoryType: null,\r\n downloadService: null,\r\n context: null,\r\n data: null,\r\n perfMarker: {\r\n willInit: _.noop,\r\n willFetchData: _.noop,\r\n willRender: _.noop,\r\n done: _.noop,\r\n createChild: () => this,\r\n },\r\n readOnly: false,\r\n viewBAADetails: _.noop,\r\n isMCC: false,\r\n showAsyncApplyModal: _.noop,\r\n closeAsyncApplyModal: _.noop,\r\n showApplyConfirmModal: _.noop,\r\n overallOptimizationScoreBar: null,\r\n isOptimizationScoreOn: false,\r\n isAutoApplyRecommendationEnabled: false,\r\n serverContext: {},\r\n isDismissedCategory: false,\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.perfMarker = props.perfMarker.createChild('RecommendationDetailsGridOverall');\r\n if (_.isFunction(this.perfMarker.willInit)) {\r\n this.perfMarker.willInit();\r\n }\r\n this.hasSetData = false;\r\n this.recommendationsDetailsHeaderLazy = null;\r\n this.recommendationsGridContainerLazy = null;\r\n this.initLegacyDeps();\r\n }\r\n\r\n state = {\r\n showDetailsHeader: true,\r\n loaded: false,\r\n }\r\n\r\n componentDidMount = () => {\r\n if (_.isFunction(this.perfMarker.willFetchData)) {\r\n this.perfMarker.willFetchData();\r\n }\r\n };\r\n\r\n setDataFromDetails = () => {\r\n this.hasSetData = true;\r\n }\r\n\r\n initLegacyDeps = () => {\r\n if (_.isUndefined(this.props.deps.adDisplayUrlService)) {\r\n this.props.deps.adDisplayUrlService = adDisplayUrlService;\r\n }\r\n if (_.isUndefined(this.props.deps.schemaCampaignVnext)) {\r\n this.props.deps.schemaCampaignVnext = schemaCampaignVnext;\r\n }\r\n if (_.isUndefined(this.props.deps.combineText)) {\r\n this.props.deps.combineText = combineText;\r\n }\r\n }\r\n\r\n receiveMessage = (event, data = {}) => {\r\n const showInfoEvent = /showInfo:(.*)/g;\r\n const showWarningEvent = /showWarning:(.*)/g;\r\n let match;\r\n\r\n if (event === 'loaded') {\r\n if (!this.state.loaded) {\r\n if (_.isFunction(this.perfMarker.done)) {\r\n this.perfMarker.done();\r\n }\r\n }\r\n this.setState({ loaded: true });\r\n } else if (event === 'individualView') {\r\n this.setState({ showDetailsHeader: false });\r\n } else if (event === 'allView') {\r\n this.setState({ showDetailsHeader: true });\r\n } else if (event === 'back') {\r\n this.props.navigateBack();\r\n } else if (event === 'refreshSummary') {\r\n this.props.reload({ isFromApplyOrDismiss: data.isFromApplyOrDismiss });\r\n } else if ((match = showInfoEvent.exec(event)) !== null) {\r\n if (match.length === 2) {\r\n this.props.showAlertHandler({\r\n message: match[1],\r\n level: 'Info',\r\n dismissible: true,\r\n });\r\n }\r\n this.props.reload();\r\n } else if ((match = showWarningEvent.exec(event)) !== null) {\r\n if (match.length === 2) {\r\n this.props.showAlertHandler({\r\n message: match[1],\r\n level: 'Warning',\r\n dismissible: true,\r\n });\r\n }\r\n this.props.reload();\r\n } else if (event === 'updateScope') {\r\n if (this.props.isMCC) {\r\n this.props.viewBAADetails(this.props.type, data, this.props.prevCategoryType)();\r\n } else {\r\n this.props.viewDetails(this.props.type, data)();\r\n }\r\n } else if (event === 'showAsyncApplyModal') {\r\n this.props.showAsyncApplyModal(data);\r\n } else if (event === 'closeAsyncApplyModal') {\r\n this.props.closeAsyncApplyModal();\r\n } else if (event === 'showApplyConfirmModal') {\r\n this.props.showApplyConfirmModal(data);\r\n }\r\n }\r\n\r\n render() {\r\n if (_.isFunction(this.perfMarker.willRender)) {\r\n this.perfMarker.willRender();\r\n }\r\n\r\n const hasData = (this.props.data && this.props.data[this.props.type]) || {};\r\n if (this.hasSetData && _.isEmpty(hasData)) {\r\n this.props.navigateBack();\r\n return null;\r\n }\r\n\r\n if (_.isNull(this.recommendationsDetailsHeaderLazy)) {\r\n this.recommendationsDetailsHeaderLazy = React.lazy(() => import(/* webpackMode: 'eager' */ './recommendations-details-header').then(({ RecommendationsDetailsHeader }) => ({ default: RecommendationsDetailsHeader })));\r\n }\r\n const ReRecommendationsDetailsHeaderLazy = this.recommendationsDetailsHeaderLazy;\r\n\r\n const topOfGridContent = !_.isEmpty(hasData) ? (\r\n \r\n ) : null;\r\n\r\n let recommendationsGridContainer = null;\r\n if (_.isNull(this.recommendationsGridContainerLazy)) {\r\n this.recommendationsGridContainerLazy = React.lazy(() => import(/* webpackMode: 'eager' */ '@bingads-webui-campaign-react/recommendation-grid-container').then(({ RecommendationsGridContainer }) => ({ default: RecommendationsGridContainer })));\r\n }\r\n const RecommendationsGridContainerLazy = this.recommendationsGridContainerLazy;\r\n recommendationsGridContainer = ();\r\n\r\n return (\r\n
    \r\n \r\n {recommendationsGridContainer}\r\n \r\n
    \r\n );\r\n }\r\n}\r\n","import React, { PureComponent } from 'react';\r\nimport classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport class RecommendationHistoryHeader extends PureComponent {\r\n static propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n navigateBack: PropTypes.func.isRequired,\r\n }\r\n\r\n render() {\r\n const {\r\n i18n, navigateBack,\r\n } = this.props;\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n \r\n {i18n.getString('Back_To_Recommendation')}\r\n \r\n \r\n
    \r\n

    \r\n {i18n.getString('Apply_History')}\r\n

    \r\n
    \r\n {i18n.getString('Apply_History_Explanation')}\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n","/* eslint-disable jsx-a11y/aria-role */\r\n/* eslint-disable no-cond-assign */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { RecommendationHistoryHeader } from '@bingads-webui-campaign-react/recommendation-history-header';\r\nimport { RecommendationHistoryGrid } from '@bingads-webui-campaign/recommendation-history-grid';\r\nimport { BackboneInstanceWrapper } from '@bingads-webui-react/backbone-instance-wrapper';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { HISTORY_PAGE_TAB_TYPES } from '@bingads-webui-campaign/recommendation-core';\r\nimport { getHistoryPageStyle } from '../style/history-page-style';\r\n\r\nclass recommendationsHistory extends React.PureComponent {\r\n static propTypes = {\r\n navigateBack: PropTypes.func.isRequired,\r\n deps: PropTypes.shape({\r\n appConfig: PropTypes.objectOf(PropTypes.any).isRequired,\r\n i18n: PropTypes.PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n preferencesService: PropTypes.objectOf(PropTypes.any).isRequired,\r\n }).isRequired,\r\n dataService: PropTypes.shape({\r\n getHistory: PropTypes.func.isRequired,\r\n downloadHistory: PropTypes.func.isRequired,\r\n }).isRequired,\r\n currentActivity: PropTypes.shape({\r\n trace: PropTypes.func.isRequired,\r\n error: PropTypes.func.isRequired,\r\n }).isRequired,\r\n // eslint-disable-next-line react/forbid-prop-types, react/require-default-props\r\n perfMarker: PropTypes.shape({\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 newI18n: PropTypes.PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n isAutoApplyRecommendationEnabled: PropTypes.bool.isRequired,\r\n };\r\n\r\n static defaultProps = {\r\n perfMarker: {\r\n willInit: _.noop,\r\n willFetchData: _.noop,\r\n willRender: _.noop,\r\n done: _.noop,\r\n createChild: () => this,\r\n },\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.perfMarker = props.perfMarker.createChild('RecommendationHistoryGridOverall');\r\n this.grid = new RecommendationHistoryGrid({\r\n i18n: props.deps.i18n,\r\n newI18n: props.newI18n,\r\n recommendationService: props.dataService,\r\n appConfig: props.deps.appConfig,\r\n currentActivity: props.currentActivity,\r\n }).render();\r\n if (_.isFunction(this.perfMarker.willInit)) {\r\n this.perfMarker.willInit();\r\n }\r\n this.state = { currentTab: 'All' };\r\n this.perfMarkerDone = false;\r\n }\r\n\r\n componentDidMount = () => {\r\n if (_.isFunction(this.perfMarker.willFetchData)) {\r\n this.perfMarker.willFetchData();\r\n }\r\n };\r\n\r\n componentDidUpdate = () => {\r\n if (!this.perfMarkerDone) {\r\n if (_.isFunction(this.perfMarker.done)) {\r\n this.perfMarker.done();\r\n }\r\n this.perfMarkerDone = true;\r\n }\r\n }\r\n\r\n filterBySelectedTab = (selectedTab) => {\r\n this.grid.grid.gridView.set({\r\n query: _.defaults({\r\n selectedTab,\r\n }, this.grid.grid.gridView.get('query')),\r\n });\r\n this.setState({ currentTab: selectedTab });\r\n }\r\n\r\n render() {\r\n if (_.isFunction(this.perfMarker.willRender)) {\r\n this.perfMarker.willRender();\r\n }\r\n\r\n return (\r\n
    \r\n \r\n {this.props.isAutoApplyRecommendationEnabled &&\r\n
    \r\n this.filterBySelectedTab(HISTORY_PAGE_TAB_TYPES.ALL)}\r\n >\r\n {this.props.newI18n.getString(_TL_(HISTORY_PAGE_TAB_TYPES.ALL))}\r\n \r\n this.filterBySelectedTab(HISTORY_PAGE_TAB_TYPES.MANUAL)}\r\n >\r\n {this.props.newI18n.getString(_TL_('Manually applied'))}\r\n \r\n this.filterBySelectedTab(HISTORY_PAGE_TAB_TYPES.AUTO)}\r\n >\r\n {this.props.newI18n.getString(_TL_('Auto applied'))}\r\n \r\n
    \r\n }\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport const RecommendationsHistory =\r\n withDefaultStyles((recommendationsHistory), getHistoryPageStyle);\r\n","export const getHistoryPageStyle = (_, { palette = {} }) => ({\r\n historyPageContainer: {\r\n '& #tab-selector-container': {\r\n marginLeft: 32,\r\n marginBottom: 12,\r\n '& button': {\r\n height: 39,\r\n background: palette.neutralLighter,\r\n border: 'none',\r\n paddingLeft: 12,\r\n paddingRight: 12,\r\n '&.selected': {\r\n background: palette.themeLighterAlt,\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","export const VIEW_TYPES = {\r\n SUMMARY: 'recommendation-summary',\r\n DETAILS: 'recommendation-details',\r\n HISTORY: 'recommendation-history',\r\n AUTO_APPLY_SETTINGS: 'recommendation-auto-apply-settings',\r\n AUTO_APPLY_BULK_UPLOAD: 'recommendation-auto-apply-bulk-upload',\r\n};\r\n","import {\r\n glyphIconStyle,\r\n helpbuttonStyle,\r\n statusStyle,\r\n uiblockerStyle,\r\n} from '@bingads-webui-campaign-react/common-styles';\r\nimport { getApplyFormStyles, getFeedbackModalStyles } from '@bingads-webui-campaign-react/recommendation-shared-styles';\r\nimport { extend } from 'underscore';\r\nimport { getCommonStyles } from './styles/common';\r\n\r\nexport const getRecommendationsAutoApplyBulkUploadPageStyles = (_, { palette = {} }) => ({\r\n pageContainer: Object.assign(\r\n {},\r\n getCommonStyles(),\r\n statusStyle({ palette }),\r\n helpbuttonStyle({ palette })\r\n ),\r\n '@global': extend(\r\n {},\r\n glyphIconStyle({ palette }),\r\n uiblockerStyle({ palette }),\r\n getApplyFormStyles({ palette }),\r\n getFeedbackModalStyles({ palette })\r\n ),\r\n});\r\n","import _ from 'underscore';\r\nimport { helpbuttonStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nexport const getHistoryGridStyles = ({ palette = {} }) => ({\r\n // recommendation-history-grid\r\n '& .recommendation-result-grid': {\r\n marginLeft: 32,\r\n marginRight: 32,\r\n\r\n '& table.sticky-header': {\r\n borderBottomStyle: 'solid',\r\n backgroundColor: palette.white,\r\n zIndex: '1000',\r\n\r\n '& tr': {\r\n '& th': {\r\n borderBottomWidth: '2px',\r\n borderBottomColor: '#81868B',\r\n borderTopWidth: '2px',\r\n borderTopColor: '#81868B',\r\n lineHeight: '19px',\r\n '& .helpbutton': helpbuttonStyle({ palette })['.helpbutton'],\r\n '& .helpbutton::before': _.defaults({\r\n top: 0,\r\n }, helpbuttonStyle({ palette })['.helpbutton::before']),\r\n },\r\n },\r\n },\r\n\r\n '& table.data-table': {\r\n '& td': {\r\n lineHeight: '19px',\r\n verticalAlign: 'middle',\r\n\r\n '& h6': {\r\n lineHeight: '19px',\r\n fontWeight: 'normal',\r\n },\r\n\r\n '& .iconba': {\r\n marginRight: '4px',\r\n },\r\n\r\n '& .recommendation-success': {\r\n marginRight: '24px',\r\n },\r\n\r\n '& .recommendation-fail': {\r\n marginRight: '12px',\r\n },\r\n },\r\n\r\n '& tfoot': {\r\n '& .pagination-control': {\r\n '& .text': {\r\n display: 'inline-block',\r\n },\r\n\r\n '& .page-size-selector': {\r\n marginLeft: '5px',\r\n },\r\n\r\n '& .pager': {\r\n display: 'inline-block',\r\n marginTop: 0,\r\n alignItems: 'center',\r\n marginLeft: 20,\r\n marginBottom: 0,\r\n\r\n '& .nav-button.prev': {\r\n background: palette.white,\r\n width: '25px',\r\n minWidth: '15px',\r\n padding: 0,\r\n marginRight: '10px',\r\n },\r\n\r\n '& .nav-button.next': {\r\n background: palette.white,\r\n width: '25px',\r\n minWidth: '15px',\r\n padding: 0,\r\n marginLeft: '10px',\r\n },\r\n\r\n '& .page-number-input': {\r\n width: 75,\r\n marginRight: 5,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& table': {\r\n borderStyle: 'hidden',\r\n fontSize: '14px',\r\n\r\n // column width\r\n '& colgroup.column-group': {\r\n '& col': {\r\n '&.col-StartTime': {\r\n width: '170px',\r\n minWidth: '170px',\r\n },\r\n '&.col-RecommendationType': {\r\n width: '310px',\r\n minWidth: '310px',\r\n },\r\n '&.col-NumberOfRecommendation': {\r\n width: '170px',\r\n minWidth: '170px',\r\n },\r\n '&.col-EditedBy': {\r\n width: '220px',\r\n minWidth: '220px',\r\n },\r\n '&.col-Status': {\r\n width: '338px',\r\n minWidth: '338px',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","export const getHistoryHeaderStyles = ({ palette = {} }) => ({\r\n // recommendation-history-header\r\n '& .recommendation-history-header': {\r\n '& .recommendation-navigate-back-ground': {\r\n height: 44,\r\n display: 'flex',\r\n background: palette.neutralLighter,\r\n alignItems: 'stretch',\r\n borderBottom: 'solid 1px #e1dfdd',\r\n flexDirection: 'row',\r\n position: 'relative',\r\n\r\n '& .recommendation-navigate-back': {\r\n display: 'flex',\r\n padding: '6px 15px 6px 16px',\r\n marginTop: 'auto',\r\n alignItems: 'baseline',\r\n whiteSpace: 'nowrap',\r\n marginBottom: 'auto',\r\n\r\n '& .iconba': {\r\n marginRight: 8,\r\n },\r\n\r\n '& .recommendation-navigate-back-text': {\r\n fontFamily: 'Segoe UI',\r\n fontSize: 14,\r\n lineHeight: '16px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n color: palette.themeDarkAlt,\r\n },\r\n },\r\n },\r\n\r\n '& .recommendation-history-title': {\r\n marginLeft: 32,\r\n fontFamily: 'Segoe UI',\r\n fontStyle: 'normal',\r\n fontWeight: 600,\r\n fontSize: '20px',\r\n lineHeight: '27px',\r\n marginTop: '24px',\r\n marginBottom: '14px',\r\n },\r\n\r\n '& .recommendation-history-pitching': {\r\n marginLeft: 33,\r\n fontFamily: 'Segoe UI',\r\n fontSize: '14px',\r\n lineHeight: '24px',\r\n marginBottom: '12px',\r\n },\r\n\r\n '& .recommendation-history-toggle': {\r\n marginLeft: 33,\r\n\r\n '& .recommendation-history-auto-refresh': {\r\n fontFamily: 'Segoe UI',\r\n fontStyle: 'normal',\r\n fontWeight: 600,\r\n fontSize: '14px',\r\n lineHeight: '19px',\r\n },\r\n },\r\n },\r\n});\r\n","import {\r\n glyphIconStyle,\r\n helpbuttonStyle,\r\n statusStyle,\r\n uiblockerStyle,\r\n} from '@bingads-webui-campaign-react/common-styles';\r\nimport { extend } from 'underscore';\r\nimport { getCommonStyles } from './styles/common';\r\nimport { getCustomGridStyles } from './styles/custom-grid-style';\r\nimport { getHistoryGridStyles } from './styles/history-grid';\r\nimport { getHistoryHeaderStyles } from './styles/history-header';\r\n\r\nexport const getRecommendationsHistoryPageStyles = (_, { palette = {} }) => ({\r\n pageContainer: Object.assign(\r\n {},\r\n getCommonStyles(),\r\n getCustomGridStyles({ palette }),\r\n getHistoryGridStyles({ palette }),\r\n getHistoryHeaderStyles({ palette }),\r\n statusStyle({ palette }),\r\n helpbuttonStyle({ palette })\r\n ),\r\n '@global': extend(\r\n {},\r\n glyphIconStyle({ palette }),\r\n uiblockerStyle({ palette })\r\n ),\r\n});\r\n","export const contextualAttributeStyle = {\r\n '& .contextual-inline': {\r\n display: 'inline',\r\n '& .contextual-tooltip': {\r\n color: '#0078d4',\r\n position: 'relative',\r\n display: 'inline',\r\n '&:hover': {\r\n color: '#004578',\r\n },\r\n '& div[class^=\\'contextual-attribute-\\']': {\r\n position: 'absolute',\r\n left: '0',\r\n },\r\n '& div[class^=\\'expanding-contextual-attribute-\\']': {\r\n position: 'absolute',\r\n left: '0',\r\n },\r\n '& .contextual-tooltip-container': {\r\n border: 'solid 1px #dddddd',\r\n boxShadow: '3px 3px 4px #dddddd',\r\n background: '#fff',\r\n padding: '5px 15px 5px 15px',\r\n marginTop: 5,\r\n position: 'absolute',\r\n zIndex: '1',\r\n top: '100%',\r\n left: '0',\r\n display: 'none',\r\n '& .title': {\r\n color: '#333333',\r\n fontSize: 12,\r\n fontWeight: 'bold',\r\n lineHeight: '15px',\r\n },\r\n '& .contextual-content': {\r\n color: '#333333',\r\n fontSize: 12,\r\n lineHeight: '15px',\r\n '& .status': {\r\n fontSize: 11,\r\n float: 'left',\r\n fontWeight: '400',\r\n marginRight: '0',\r\n },\r\n '& .statusEnabled_icon': {\r\n float: 'left',\r\n marginLeft: 3,\r\n marginRight: 3,\r\n },\r\n '& .status_warning': {\r\n float: 'left',\r\n marginLeft: 3,\r\n marginRight: 3,\r\n color: '#FF9900',\r\n },\r\n '& h6': {\r\n marginTop: '10px !important',\r\n marginBottom: '10px !important',\r\n fontSize: '11px',\r\n lineHeight: '15px',\r\n fontWeight: '400',\r\n },\r\n },\r\n },\r\n },\r\n '& span[data-type^=\\'Campaign\\']': {\r\n '& .contextual-content': {\r\n width: 'auto',\r\n height: 'auto',\r\n minWidth: 225,\r\n minHeight: 85,\r\n },\r\n },\r\n '& span[data-type^=\\'AdGroup\\']': {\r\n '& .contextual-content': {\r\n width: 'auto',\r\n height: 'auto',\r\n minWidth: 225,\r\n minHeight: 5,\r\n },\r\n },\r\n '& span[data-type^=\\'Audience\\']': {\r\n color: '#323130',\r\n borderBottom: '1px dashed #0078d4',\r\n '&:hover': {\r\n color: '#323130',\r\n borderBottom: '1px dashed #004578',\r\n },\r\n '& .contextual-content': {\r\n width: 'auto',\r\n height: 'auto',\r\n minWidth: 140,\r\n minHeight: 5,\r\n },\r\n },\r\n '& span[data-type^=\\'Keyword\\']': {\r\n color: '#323130',\r\n position: 'relative',\r\n display: 'inline',\r\n borderBottom: '1px dashed #0078d4',\r\n '&:hover': {\r\n color: '#323130',\r\n borderBottom: '1px dashed #004578',\r\n },\r\n '& .contextual-content': {\r\n width: 'auto',\r\n height: 'auto',\r\n minWidth: 100,\r\n minHeight: 5,\r\n },\r\n },\r\n '& span[data-type^=\\'adoptAutoBidding\\']': {\r\n color: '#323130',\r\n borderBottom: '1px dashed #0078d4',\r\n '&:hover': {\r\n color: '#323130',\r\n borderBottom: '1px dashed #004578',\r\n },\r\n '& .contextual-content': {\r\n width: 'auto',\r\n height: 'auto',\r\n minWidth: '350px',\r\n minHeight: '5px',\r\n '& h6': {\r\n lineHeight: '20px',\r\n },\r\n },\r\n },\r\n '& span[data-type^=\\'SharedBudget\\']': {\r\n color: '#323130',\r\n borderBottom: '1px dashed #0078d4',\r\n '&:hover': {\r\n color: '#323130',\r\n borderBottom: '1px dashed #004578',\r\n },\r\n '& .contextual-content': {\r\n width: 'auto',\r\n height: 'auto',\r\n minWidth: '225px',\r\n minHeight: '5px',\r\n },\r\n },\r\n '& span[data-type^=\\'Account\\']': {\r\n '& .contextual-content': {\r\n width: 'auto',\r\n height: 'auto',\r\n minWidth: '225px',\r\n minHeight: '5px',\r\n },\r\n },\r\n '& span[data-type^=\\'GeneratedFrom\\']': {\r\n borderBottomColor: '#0078d4',\r\n borderBottomStyle: 'dashed',\r\n borderBottomWidth: '1px',\r\n },\r\n '& span[data-type^=\\'Goal\\']': {\r\n color: '#333333',\r\n borderBottom: '1px dashed #0078D4',\r\n '&:hover': {\r\n color: '#333333',\r\n },\r\n },\r\n '& span[data-type^=\\'CurrentSetting\\']': {\r\n color: '#A80000',\r\n '&:hover': {\r\n color: '#A80000',\r\n },\r\n },\r\n '& span[data-type^=\\'SuggestedSetting\\']': {\r\n color: '#107C10',\r\n '&:hover': {\r\n color: '#107C10',\r\n },\r\n },\r\n '& span[data-type^=\\'MoreImages\\']': {\r\n color: '#323130',\r\n position: 'relative',\r\n display: 'inline',\r\n borderBottom: '1px dashed #0078d4',\r\n '&:hover': {\r\n color: '#323130',\r\n borderBottom: '1px dashed #004578',\r\n },\r\n },\r\n '& span[data-type^=\\'MoreConversionClarityButtons\\']': {\r\n color: '#323130',\r\n position: 'relative',\r\n display: 'inline',\r\n borderBottom: '1px dashed #0078d4',\r\n '&:hover': {\r\n color: '#323130',\r\n borderBottom: '1px dashed #004578',\r\n },\r\n },\r\n },\r\n};\r\n","import _ from 'underscore';\r\nimport { crudAdStyle, underlineLinkStyle, helpbuttonStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport { getHeaderStyles } from '@bingads-webui-campaign-react/recommendation-shared-styles';\r\n\r\nexport const getSummaryPageStyles = ({ palette = {} }) =>\r\n ({\r\n '& .recommendation-summary-view': {\r\n '& >.toolbar': {\r\n marginLeft: 10,\r\n '& .upper-toolbar': {\r\n display: 'inline-block',\r\n },\r\n },\r\n '& .empty-buttons': {\r\n marginTop: 36,\r\n },\r\n\r\n // empty view\r\n '& .empty-filter-view': {\r\n margin: '160px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n\r\n '& .empty-icon': {\r\n display: 'inline-block',\r\n marginRight: 62,\r\n\r\n img: {\r\n width: 200,\r\n height: 200,\r\n },\r\n },\r\n\r\n '& .empty-details': {\r\n display: 'inline-block',\r\n color: '#605E5C',\r\n gridRow: '1',\r\n gridColumn: '2',\r\n '& .empty-title': {\r\n maxWidth: 688,\r\n fontSize: 26,\r\n margin: '0 0 8.5px',\r\n },\r\n '& .empty-sub-title': {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n ...underlineLinkStyle({ palette }),\r\n },\r\n '& .buttons-container': {\r\n display: 'inline-flex',\r\n '& .view-account-recommendations': {\r\n marginRight: 8,\r\n },\r\n '& .view-dismissed-recommendations button': {\r\n border: '1px solid #8A8886',\r\n height: 27,\r\n fontWeight: 'bold',\r\n borderRadius: 2,\r\n },\r\n },\r\n },\r\n },\r\n\r\n // summary cards\r\n '& .recommendation-summary-cards': {\r\n width: '100%',\r\n minWidth: 1000,\r\n maxWidth: 1200,\r\n transformStyle: 'preserve-3d',\r\n '& .btn-primary': {\r\n fontFamily: 'Arial, Helvetica, sans-serif',\r\n fontSize: 14,\r\n height: '32px',\r\n backgroundColor: palette.themePrimary,\r\n color: palette.white,\r\n padding: '5px 10px',\r\n borderRadius: '2px',\r\n margin: '0 5px 0 0',\r\n '&:hover': {\r\n backgroundColor: '#106ebe',\r\n },\r\n },\r\n '& .recommendation-summary-card': {\r\n minHeight: 120,\r\n marginBottom: 20,\r\n width: 510,\r\n border: 'solid 1px #dddddd',\r\n boxShadow: '3px 3px 4px #dddddd',\r\n fontFamily: '\\'Segoe UI\\', Arial, sans-serif',\r\n fontSize: 12,\r\n color: '#333333',\r\n gridTemplateColumns: '100%',\r\n gridTemplateRows: 'repeat(4,auto)',\r\n '& .summary-header': {\r\n paddingTop: '10px',\r\n paddingRight: '16px',\r\n paddingLeft: '16px',\r\n gridRow: '1',\r\n '& .recommendation-summary-header': {\r\n ...getHeaderStyles({ palette }),\r\n },\r\n },\r\n '& .summary-summary': {\r\n borderTop: 'solid 1px #dddddd',\r\n marginTop: 10,\r\n gridRow: '2',\r\n gridTemplateRows: 'repeat(2,auto)',\r\n '& .summary-notification': {\r\n '& .recommendation-notification-container': {\r\n background: '#EFF6FC !important',\r\n display: 'flex',\r\n '& .recommendation-notification-text': {\r\n maxWidth: '90%',\r\n padding: '5px 0 5px 24px',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n '& .recommendation-notification-help': {\r\n maxWidth: '10%',\r\n padding: '5px 10px 5px 0',\r\n },\r\n },\r\n '& .recommendation-notification-warning-container': {\r\n '& .ms-MessageBar': {\r\n background: '#FFF4CE !important',\r\n },\r\n },\r\n '& .helpbutton': helpbuttonStyle({ palette })['.helpbutton'],\r\n '& .helpbutton::before': _.defaults({\r\n top: 0,\r\n }, helpbuttonStyle({ palette })['.helpbutton::before']),\r\n },\r\n '& .summary-banner': {\r\n background: '#DDDDDD',\r\n gridRow: '1',\r\n '& .summary-banner-title': {\r\n display: 'table-cell',\r\n verticalAlign: 'middle',\r\n fontWeight: 'bold',\r\n color: '#333333',\r\n height: 30,\r\n padding: '0px 24px',\r\n },\r\n },\r\n '& .summary-summary-content': {\r\n borderBottom: 'solid 1px #dddddd',\r\n padding: 24,\r\n display: 'grid',\r\n gridRow: '3',\r\n gridTemplateColumns: '126px 10px 294px',\r\n '&.with-optimization-score': {\r\n display: 'block',\r\n },\r\n '& .summary-info': {\r\n gridColumn: '3',\r\n '& .summary-description': {\r\n fontSize: 16,\r\n fontWeight: 'bold',\r\n color: '#323130',\r\n },\r\n '& .summary-pitching': {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n color: '#484644',\r\n marginTop: 10,\r\n '& > span': {\r\n ...underlineLinkStyle({ palette }),\r\n },\r\n },\r\n },\r\n '& .recommendation-estimation': {\r\n display: 'inline-flex',\r\n marginTop: 8,\r\n '& .estimate-note': {\r\n color: '#797775',\r\n fontWeight: 'bold',\r\n marginRight: 8,\r\n },\r\n '& .estimate-primary': {\r\n '& .iconba-Trending12': {\r\n marginRight: 8,\r\n },\r\n },\r\n '& .second-primary': {\r\n marginLeft: 8,\r\n },\r\n '& .positive-estimate': {\r\n color: palette.green,\r\n },\r\n '& .estimate-secondary': {\r\n marginLeft: 8,\r\n },\r\n '& .estimate-cost': {\r\n marginLeft: 8,\r\n },\r\n },\r\n },\r\n '& .summary-estimates': {\r\n gridColumn: '1',\r\n },\r\n },\r\n '& .summary-sample': {\r\n paddingRight: '16px',\r\n paddingLeft: '16px',\r\n gridRow: '3',\r\n '& .recommendation-sample': {\r\n '& .sample-insight-title': {\r\n marginTop: 15,\r\n fontSize: 13,\r\n fontWeight: 'normal',\r\n color: '#333333',\r\n },\r\n '& .sample-insight': {\r\n margin: '10px 0 0 0',\r\n fontSize: 13,\r\n fontWeight: 'normal',\r\n color: '#666666',\r\n },\r\n '& .sample-visual, & .sample-action-table': {\r\n margin: '15px 0 0 0',\r\n },\r\n '& .sample-horizontal-separator': {\r\n margin: '15px 0',\r\n borderTop: '1px solid #ececec',\r\n },\r\n '& .sample-action-title': {\r\n fontSize: 13,\r\n fontWeight: 'normal',\r\n color: '#333333',\r\n },\r\n '& .sample-more-recommendations': {\r\n margin: '15px 0 0 0',\r\n },\r\n '& .recommendation-suggested-ads-container': {\r\n width: '100%',\r\n display: 'flex',\r\n padding: '10px 10px 10px 10px',\r\n fontSize: 14,\r\n minWidth: 280,\r\n textAlign: 'left',\r\n wordBreak: 'break-word',\r\n border: '1px solid #EDEBE9',\r\n marginTop: 16,\r\n marginBottom: 33,\r\n minHeight: 101,\r\n '& .previewImage': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n '& img': {\r\n float: 'left',\r\n marginRight: 5,\r\n width: 114,\r\n height: 60,\r\n },\r\n },\r\n '& .moreHint': {\r\n color: '#979797',\r\n fontSize: 13,\r\n },\r\n '& .previewTitleAd': {\r\n color: '#001BA0',\r\n lineHeight: '16px',\r\n fontSize: 20,\r\n },\r\n '& .previewText': {\r\n color: '#666666',\r\n fontSize: 13,\r\n },\r\n },\r\n '& .new-preview-carousel-container': {\r\n '& .carousel-control': {\r\n left: 172,\r\n top: 152,\r\n color: '#0078d4',\r\n background: 'transparent',\r\n textShadow: 'none',\r\n position: 'absolute',\r\n fontSize: 14,\r\n },\r\n '& .carousel-control.right': {\r\n left: 273,\r\n },\r\n '& .carousel-indicators': {\r\n transform: 'translate(-50%)',\r\n left: '50%',\r\n bottom: -1,\r\n position: 'absolute',\r\n width: 85,\r\n '& li': {\r\n width: 8,\r\n border: '1px solid #605E5C',\r\n height: 8,\r\n margin: '0 10px 0 0',\r\n background: 'none',\r\n borderRadius: 10,\r\n },\r\n '& .active': {\r\n border: '1px solid #0078d4',\r\n background: '#0078d4',\r\n },\r\n },\r\n },\r\n },\r\n ...crudAdStyle({ palette }), // TODO: remove duplicated crudAdStyle if toolbar style conflict is resolved\r\n '& .ad-preview-header': {\r\n fontWeight: 700,\r\n fontDize: 12,\r\n color: '#323130',\r\n },\r\n '& .recommendation-suggested-ads-column': {\r\n padding: '10px 10px 10px 10px',\r\n '& .recommendation-summary-ad-preview': {\r\n width: '100%',\r\n padding: '15px 15px 15px 15px',\r\n background: palette.white,\r\n border: 'solid 1px #dddddd',\r\n },\r\n },\r\n },\r\n '& .summary-footer': {\r\n paddingBottom: '16px',\r\n paddingRight: '16px',\r\n paddingLeft: '16px',\r\n margin: '20px 0 0 0',\r\n gridRow: '4',\r\n '& .primary-button': {\r\n '& button': {\r\n fontFamily: 'Arial, Helvetica, sans-serif',\r\n fontWeight: 'bold',\r\n fontSize: 13,\r\n backgroundColor: palette.themePrimary,\r\n color: palette.white,\r\n padding: '5px 10px',\r\n border: '1px black solid',\r\n margin: '0 8px 0 0',\r\n '&:hover': {\r\n backgroundColor: '#006464',\r\n },\r\n },\r\n },\r\n '& .secondary-button': {\r\n '& button': {\r\n fontFamily: 'Arial, Helvetica, sans-serif',\r\n fontWeight: 'bold',\r\n fontSize: 13,\r\n backgroundColor: palette.white,\r\n color: '#000000',\r\n padding: '5px 10px',\r\n border: '1px black solid',\r\n margin: '0 8px 0 0',\r\n '&:hover': {\r\n backgroundColor: '#a8a8a8',\r\n },\r\n },\r\n },\r\n },\r\n '& .btn-default': {\r\n position: 'absolute',\r\n fontFamily: 'Arial, Helvetica, sans-serif',\r\n fontSize: 14,\r\n padding: '5px 10px',\r\n margin: '0 5px',\r\n borderRadius: '2px',\r\n height: '32px',\r\n boxSizing: 'border-box',\r\n border: '1px solid #8A8886',\r\n fontWeight: 'bold',\r\n '&[disabled]': {\r\n opacity: 0.5,\r\n },\r\n },\r\n '& .auto-apply-banner': {\r\n height: 29,\r\n },\r\n },\r\n },\r\n '& .split-line': {\r\n height: 2,\r\n width: 1040,\r\n background: '#E6E6E6',\r\n marginLeft: 20,\r\n },\r\n '& .auto-apply-summary-header': {\r\n marginLeft: 20,\r\n fontSize: 18,\r\n marginTop: 20,\r\n fontWeight: 'bold',\r\n display: 'inline-flex',\r\n },\r\n '& .helpbutton': {\r\n color: palette.themePrimary,\r\n fontSize: 16,\r\n marginLeft: 5,\r\n },\r\n '& .helpbutton:before': {\r\n top: 3,\r\n content: '\"\\\\E9CE\"',\r\n position: 'relative',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n },\r\n },\r\n // recommendation visual\r\n '& .action-table': {\r\n marginTop: 10,\r\n fontFamily: '\\'Segoe UI\\', Arial, sans-serif',\r\n '& thead': {\r\n '& th': {\r\n fontSize: 12,\r\n color: '#323130',\r\n fontWeight: 'bold',\r\n paddingBottom: '16px',\r\n paddingRight: '16px',\r\n '&:last-child': {\r\n paddingRight: '0px',\r\n },\r\n },\r\n },\r\n '& tbody': {\r\n '& th': {\r\n fontSize: 12,\r\n color: '#323130',\r\n },\r\n },\r\n '& td': {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n color: '#333333',\r\n paddingBottom: 5,\r\n verticalAlign: 'top',\r\n paddingRight: '16px',\r\n 'word-break': 'break-word',\r\n '&:last-child': {\r\n paddingRight: '0px',\r\n },\r\n '& .progress-bar-with-right-label': {\r\n marginLeft: 10,\r\n gridTemplateColumns: '80% 20%',\r\n alignItems: 'center',\r\n '& .progress': {\r\n marginRight: 5,\r\n gridRow: '1',\r\n gridColumn: '1',\r\n },\r\n '& .right-label': {\r\n gridRow: '1',\r\n gridColumn: '2',\r\n },\r\n },\r\n '& .one-column-in-table': {\r\n display: 'block',\r\n maxWidth: 480,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n '& .two-columns-in-table': {\r\n display: 'block',\r\n maxWidth: 240,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n '& .three-columns-in-table': {\r\n display: 'block',\r\n maxWidth: 180,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n '& .four-columns-in-table': {\r\n display: 'block',\r\n maxWidth: 120,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n },\r\n },\r\n '& .navbar-nav': {\r\n '& .recommendation-download': {\r\n paddingLeft: 20,\r\n paddingTop: 6,\r\n marginBottom: '-15px',\r\n '& #button-download': {\r\n background: '#FFFFFF',\r\n border: '1px solid #8A8886',\r\n boxSizing: 'border-box',\r\n borderRadius: '2px',\r\n fontSize: '14px',\r\n marginLeft: '770px',\r\n zIndex: '1',\r\n },\r\n },\r\n },\r\n '& .nav-pills': {\r\n '& li': {\r\n border: '1px solid #505050',\r\n '&.active, &.active a': {\r\n backgroundColor: '#e7f0f6',\r\n color: '#666',\r\n fontWeight: 'bold',\r\n },\r\n '&:nth-child(1)': {\r\n borderRight: '0',\r\n },\r\n '& a': {\r\n padding: '5px 20px 4px 20px',\r\n border: 'none',\r\n fontWeight: 'normal',\r\n },\r\n },\r\n },\r\n '& .filter-editor': {\r\n '& .selector-container': {\r\n '& button': {\r\n border: '1px solid #BBB',\r\n padding: '3px 5px 5px 5px',\r\n textAlign: 'right',\r\n },\r\n },\r\n '& .selector-v2': {\r\n width: 400,\r\n },\r\n },\r\n });\r\n","\r\nimport _ from 'underscore';\r\nimport { underlineLinkStyle, helpbuttonStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nexport const getDetailPageStyles = ({ palette = {} }) =>\r\n ({\r\n '& .recommendation-details-view': {\r\n '& .recommendation-details-summary': {\r\n position: 'relative',\r\n fontSize: 12,\r\n gridRow: '1',\r\n display: 'grid',\r\n margin: '6px 21px 6px 31px',\r\n border: 'solid 1px #eee',\r\n boxShadow: '0px 0.3px 0.9px rgba(0, 0, 0, 0.108), 0px 1.6px 3.6px rgba(0, 0, 0, 0.132)',\r\n borderRadius: 2,\r\n '&.with-optimization-score': {\r\n display: 'block',\r\n },\r\n '&.details-summary-with-estimate': {\r\n gridTemplateColumns: 'auto 1px 160px',\r\n '-ms-grid-columns': '1fr 1px 160px',\r\n },\r\n '& .details-summary-left': {\r\n '& .details-summary-icon': {\r\n padding: '10px 16px 10px 16px',\r\n gridRow: '1',\r\n display: 'grid',\r\n gridTemplateColumns: '24px min-content auto min-content',\r\n borderBottom: 'solid 1px rgba(0, 0, 0, 0.1)',\r\n '& .details-header-icon': {\r\n position: 'relative',\r\n borderRadius: '50%',\r\n width: 24,\r\n height: 24,\r\n '& span': {\r\n color: palette.white,\r\n position: 'absolute',\r\n fontSize: 13,\r\n left: '25%',\r\n right: '25%',\r\n top: '25%',\r\n bottom: '25%',\r\n },\r\n },\r\n '& .details-summary-title': {\r\n fontSize: 14,\r\n fontWeight: '600',\r\n marginLeft: 10,\r\n gridColumn: '2',\r\n alignSelf: 'center',\r\n color: palette.neutralPrimary,\r\n lineHeight: '20px',\r\n whiteSpace: 'nowrap',\r\n },\r\n '& .details-summary-label': {\r\n alignSelf: 'center',\r\n marginLeft: 8,\r\n gridColumn: '3',\r\n fontSize: 12,\r\n background: '#EFF6FC',\r\n border: '1px solid #FFFFFF',\r\n boxSizing: 'border-box',\r\n borderRadius: 12,\r\n width: 48,\r\n padding: '0 10px 0 10px',\r\n },\r\n '& .summary-card-os-tag-container': {\r\n marginLeft: 8,\r\n alignSelf: 'center',\r\n '& .not-available-line': {\r\n paddingLeft: 10,\r\n paddingRight: 10,\r\n },\r\n '& .iconba.iconba-Trending12': {\r\n paddingLeft: 8,\r\n paddingRight: 8,\r\n paddingBottom: 3,\r\n },\r\n },\r\n },\r\n '& .summary-notification': {\r\n '& .recommendation-notification-container': {\r\n background: '#EFF6FC !important',\r\n display: 'flex',\r\n '& .recommendation-notification-text': {\r\n maxWidth: '90%',\r\n padding: '5px 0 5px 24px',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n '& .recommendation-notification-help': {\r\n maxWidth: '10%',\r\n padding: '5px 10px 5px 0',\r\n },\r\n },\r\n '& .recommendation-notification-warning-container': {\r\n '& .ms-MessageBar': {\r\n background: '#FFF4CE !important',\r\n },\r\n },\r\n '& .helpbutton': helpbuttonStyle({ palette })['.helpbutton'],\r\n '& .helpbutton::before': _.defaults({\r\n top: 0,\r\n }, helpbuttonStyle({ palette })['.helpbutton::before']),\r\n },\r\n '& .details-summary-description': {\r\n padding: '10px 10px 0px 16px',\r\n fontSize: 16,\r\n fontWeight: '750',\r\n lineHeight: '1.3em',\r\n color: palette.neutralPrimary,\r\n },\r\n '& .message-bar': {\r\n background: '#EFF6FC',\r\n },\r\n '& .details-summary-pitching': {\r\n padding: '10px 10px 0 16px',\r\n fontSize: 12,\r\n color: '#484644',\r\n lineHeight: '16px',\r\n fontWeight: '600',\r\n '& > span': {\r\n ...underlineLinkStyle({ palette }),\r\n },\r\n '& .detail-summary-additional-pitching': {\r\n position: 'absolute',\r\n bottom: '10px',\r\n },\r\n },\r\n '& .recommendation-estimation': {\r\n display: 'inline-flex',\r\n marginTop: 8,\r\n padding: '0 0 0 16px',\r\n '& .estimate-note': {\r\n color: '#797775',\r\n fontWeight: 'bold',\r\n marginRight: 8,\r\n },\r\n '& .second-primary': {\r\n marginLeft: 8,\r\n },\r\n '& .positive-estimate': {\r\n color: palette.green,\r\n },\r\n '& .estimate-secondary': {\r\n marginLeft: 8,\r\n },\r\n '& .estimate-cost': {\r\n marginLeft: 8,\r\n },\r\n },\r\n '& .details-auto-apply-pitching-point': {\r\n padding: '10px 10px 0 16px',\r\n fontSize: 13,\r\n color: palette.neutralSecondary,\r\n\r\n '& .HelpTopic': {\r\n textDecoration: 'underline',\r\n },\r\n\r\n '& .recommendation-new-ads-more-account-button': {\r\n textDecoration: 'underline',\r\n position: 'relative',\r\n\r\n '& .recommendation-new-ads-more-account-container': {\r\n textDecoration: 'none',\r\n position: 'absolute',\r\n left: 0,\r\n marginTop: '5px',\r\n padding: '16px',\r\n boxShadow: '0px 0.6px 1.8px rgba(0, 0, 0, 0.108), 0px 3.2px 7.2px rgba(0, 0, 0, 0.132)',\r\n border: 'none',\r\n zIndex: 10,\r\n backgroundColor: palette.white,\r\n whiteSpace: 'nowrap',\r\n minWidth: '288px',\r\n\r\n '& .recommendation-new-ads-accounts': {\r\n marginRight: '20px',\r\n },\r\n },\r\n },\r\n },\r\n '& .details-past-performance-blurb': {\r\n padding: '45px 0 10px 16px',\r\n fontSize: 13,\r\n color: '#484644',\r\n lineHeight: '16px',\r\n fontWeight: '600',\r\n '&.with-optimization-score': {\r\n paddingTop: 20,\r\n },\r\n },\r\n },\r\n '& .separator-col': {\r\n borderLeft: '1px solid #E1DFDD',\r\n },\r\n '& .details-summary-estimates': {\r\n padding: 10,\r\n gridColumn: '3',\r\n },\r\n '& .recommendation-alert-content': {\r\n '& .filterBannerLink, & .split-line, & .HelpTopic': {\r\n marginLeft: 5,\r\n },\r\n },\r\n '& .auto-apply-banner': {\r\n height: 29,\r\n },\r\n },\r\n },\r\n });\r\n","/* eslint-disable @typescript-eslint/no-unused-vars */\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nexport const getEstimateTileStyles = ({ palette = {} }) => ({\r\n '& .recommendation-estimation-tile': {\r\n color: '#484644',\r\n fontSize: 12,\r\n fontFamily: '\\'Segoe UI\\', Arial, sans-serif',\r\n display: 'grid',\r\n fallbacks: [\r\n {\r\n display: '-ms-grid',\r\n },\r\n ],\r\n gridTemplateRows: 'repeat(7,auto)',\r\n fontWeight: 'normal',\r\n '& .positive-estimate': {\r\n color: '#107C10',\r\n },\r\n '& .neutral-estimate': {\r\n color: '#333333',\r\n },\r\n '& .estimate-primary-titile': {\r\n width: 124,\r\n // lineHeight: 15,\r\n // fontWeight: 'bold',\r\n M: '1',\r\n gridRow: '1',\r\n },\r\n '& .estimate-primary-increase, .estimate-second-primary-increase': {\r\n width: 124,\r\n lineHeight: '36px',\r\n height: '40px',\r\n M: '2',\r\n gridRow: '2',\r\n fontSize: 28,\r\n fontWeight: 'bold',\r\n '& div, & .iconba': {\r\n fontSize: 'inherit !important',\r\n },\r\n },\r\n '& .long-text': {\r\n fontSize: 20,\r\n lineHeight: '28px',\r\n },\r\n '& .estimate-primary-from-to': {\r\n fontSize: 12,\r\n // lineHeight: 15,\r\n width: 126,\r\n whiteSpace: 'pre-wrap',\r\n M: '3',\r\n gridRow: '3',\r\n },\r\n '& .estimate-secondary': {\r\n margin: '10px 0 0 0',\r\n fontSize: 12,\r\n // lineHeight: 15,\r\n M: '4',\r\n gridRow: '4',\r\n '& .estimate-secondary-value': {\r\n // fontWeight: 'bold',\r\n },\r\n '& .estimate-secondary-title': {\r\n // fontWeight: 'normal',\r\n },\r\n },\r\n '& .estimate-tertiary': {\r\n fontSize: 12,\r\n // lineHeight: 15,\r\n M: '5',\r\n gridRow: '5',\r\n '& .estimate-tertiary-value': {\r\n // fontWeight: 'bold',\r\n },\r\n '& .estimate-tertiary-title': {\r\n // fontWeight: 'normal',\r\n },\r\n },\r\n '& .estimate-cost': {\r\n fontSize: 12,\r\n // lineHeight: 15,\r\n color: '#333333',\r\n M: '6',\r\n gridRow: '6',\r\n '& .estimate-cost-value': {\r\n // fontWeight: 'bold',\r\n },\r\n '& .estimate-cost-title': {\r\n // fontWeight: 'normal',\r\n },\r\n },\r\n '& .estimate-note': {\r\n margin: '10px 0 0 0',\r\n fontSize: 12,\r\n // lineHeight: 15,\r\n M: '7',\r\n gridRow: '7',\r\n },\r\n },\r\n});\r\n","export const getFeedbackPopupStyles = ({ palette = {} }) => ({\r\n // navigate modal\r\n '.navigate-overlay': {\r\n position: 'fixed',\r\n top: '0',\r\n left: '0',\r\n right: '0',\r\n bottom: '0',\r\n backgroundColor: 'rgba(51,51,51,0.3)',\r\n zIndex: '1062',\r\n '& .navigate-modal': {\r\n '& .navigate-text': {\r\n width: 248,\r\n },\r\n '& .close': {\r\n right: 5,\r\n top: 5,\r\n position: 'relative',\r\n },\r\n '& .navigate-action': {\r\n paddingTop: 16,\r\n display: 'inline-block',\r\n },\r\n '& .navigate-button': {\r\n width: 58,\r\n height: 32,\r\n marginRight: 16,\r\n border: '1px solid #8A8886',\r\n fontWeight: 'bold',\r\n },\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n overflow: 'auto',\r\n outline: 'none',\r\n transform: 'translate(-50%,-50%)',\r\n marginRight: '-50%',\r\n width: 336,\r\n height: 156,\r\n padding: 20,\r\n border: '1px solid #d9d9d9',\r\n background: '#fff',\r\n color: '#333',\r\n },\r\n },\r\n\r\n // dismiss-all-recommendations-feedback-modal\r\n '.dismiss-all-recommendation-feedback-overlay': {\r\n position: 'fixed',\r\n top: '0',\r\n left: '0',\r\n right: '0',\r\n bottom: '0',\r\n backgroundColor: 'rgba(51,51,51,0.3)',\r\n zIndex: '1061',\r\n '& .dismiss-all-recommendation-feedback-modal': {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n overflow: 'auto',\r\n outline: 'none',\r\n transform: 'translate(-50%,-50%)',\r\n marginRight: '-50%',\r\n width: 480,\r\n padding: 20,\r\n border: '1px solid #d9d9d9',\r\n background: '#fff',\r\n color: '#333',\r\n '& .dismiss-all-recommendation-feedback-form-head': {\r\n paddingLeft: 8,\r\n '& .dismiss-all-recommendation-feedback-form-title': {\r\n width: 392,\r\n fontWeight: 'bold',\r\n fontSize: '20px',\r\n },\r\n },\r\n\r\n '& textarea#comments': {\r\n display: 'inline-block',\r\n marginRight: '8px',\r\n },\r\n '& div.comments-character-count': {\r\n display: 'inline-block',\r\n },\r\n '& .form-inline': {\r\n '& .btn': {\r\n marginRight: 8,\r\n },\r\n },\r\n '& button.close': {\r\n marginTop: 3,\r\n },\r\n '& button:disabled': {\r\n color: '#666',\r\n backgroundColor: '#F4F4F4',\r\n border: '1px solid #CCC',\r\n },\r\n '& h3': {\r\n fontWeight: '600',\r\n marginTop: 0,\r\n marginBottom: 30,\r\n },\r\n '& p, & .radio': {\r\n paddingLeft: 10,\r\n fontFamily: '\\'Segoe UI\\', Arial, sans-serif',\r\n\r\n '&[data-checked=true]': {\r\n backgroundColor: '#DEECF9',\r\n },\r\n },\r\n '& div.reasons': {\r\n margin: '20px 0',\r\n '& .reason-comment': {\r\n marginLeft: '8px',\r\n },\r\n },\r\n '& div.comments': {\r\n marginBottom: '0px',\r\n marginTop: '15px',\r\n '& textarea': {\r\n height: 75,\r\n width: 330,\r\n border: '1px #bbb solid',\r\n background: '#fff',\r\n marginBottom: 5,\r\n },\r\n },\r\n },\r\n },\r\n\r\n // recommendations-dismiss-feedback\r\n '.budget-landscape-dismiss-popup': {\r\n position: 'fixed',\r\n right: 10,\r\n bottom: 70,\r\n zIndex: '2000',\r\n '& .close': {\r\n right: 5,\r\n top: 5,\r\n position: 'relative',\r\n },\r\n },\r\n '.single-choice-feedback-form': {\r\n width: 408,\r\n padding: 20,\r\n boxShadow: '0 0 5px #ccc',\r\n backgroundColor: '#fff',\r\n '& .single-choice-feedback-form-head': {\r\n paddingLeft: 8,\r\n '& .single-choice-feedback-form-title': {\r\n width: 392,\r\n fontWeight: 'bold',\r\n fontSize: '20px',\r\n },\r\n '& .single-choice-feedback-form-description': {\r\n color: '#797775',\r\n },\r\n },\r\n '& .reason-input': {\r\n marginLeft: 8,\r\n '& .input-wrapper': {\r\n position: 'relative',\r\n },\r\n '& .percent-suffix': {\r\n position: 'absolute',\r\n top: '5px',\r\n left: '80px',\r\n },\r\n '& .percent-input': {\r\n width: 98,\r\n paddingRight: '20px',\r\n },\r\n '& .number-input': {\r\n width: 98,\r\n },\r\n '& .input-comment': {\r\n paddingTop: 6,\r\n paddingBottom: 6,\r\n },\r\n },\r\n '& p, & .radio': {\r\n paddingLeft: 10,\r\n fontFamily: '\\'Segoe UI\\', Arial, sans-serif',\r\n\r\n '&[data-checked=true]': {\r\n backgroundColor: '#DEECF9',\r\n },\r\n '& button:disabled': {\r\n color: '#a2a2a2',\r\n backgroundColor: palette.themePrimary,\r\n border: '1px solid #0078d4',\r\n },\r\n },\r\n '& .form-group': {\r\n marginBottom: '0px !important',\r\n marginTop: 10,\r\n },\r\n '& div.comments': {\r\n '& textarea': {\r\n height: 72,\r\n width: 296,\r\n border: '1px #bbb solid',\r\n background: '#fff',\r\n marginBottom: 5,\r\n },\r\n },\r\n '& .actions': {\r\n paddingTop: 8,\r\n '& .checkbox.preference': {\r\n paddingTop: 12,\r\n color: '#bbb',\r\n paddingLeft: 10,\r\n '& .not-show-again-text': {\r\n paddingLeft: 8,\r\n width: 312,\r\n display: 'inline-block',\r\n verticalAlign: 'top',\r\n },\r\n },\r\n '& .submit': {\r\n marginRight: 10,\r\n },\r\n },\r\n '& .error': {\r\n color: '#A80000', // error-icon color in color.less file\r\n fontSize: '12px',\r\n },\r\n },\r\n});\r\n","export const getTeachingBubbleStyles = ({ palette = {} }) => ({\r\n // recommendation-modal\r\n '.recommendation-teaching-bubble': {\r\n '& .ms-Callout-main': {\r\n backgroundColor: palette.themePrimary,\r\n color: palette.white,\r\n maxWidth: '400px',\r\n padding: '20px',\r\n\r\n '& .closeimage': {\r\n fontFamily: 'MsAds MDL2 Assets !important',\r\n background: 'none',\r\n padding: 0,\r\n position: 'absolute',\r\n top: '4px',\r\n right: '4px',\r\n border: 'none',\r\n color: palette.white,\r\n float: 'right',\r\n backgroundColor: 'transparent',\r\n '&:focus': {\r\n outlineColor: 'white !important',\r\n },\r\n '&:hover': {\r\n color: 'rgb(255, 255, 255) !important',\r\n background: 'rgb(16, 110, 190)',\r\n border: 'none',\r\n },\r\n },\r\n\r\n '& .header': {\r\n marginBottom: '8px',\r\n\r\n '& .title': {\r\n fontFamily: 'Segoe UI',\r\n fontStyle: 'normal',\r\n fontWeight: 600,\r\n fontSize: '20px',\r\n lineHeight: '28px',\r\n },\r\n },\r\n\r\n '& .inner': {\r\n marginBottom: '16px',\r\n\r\n '& .first-paragraph': {\r\n marginBottom: '8px',\r\n fontFamily: 'Segoe UI',\r\n fontSize: '14px',\r\n lineHeight: '19px',\r\n },\r\n\r\n '& .second-paragraph': {\r\n fontFamily: 'Segoe UI',\r\n fontStyle: 'normal',\r\n fontWeight: 600,\r\n fontSize: '14px',\r\n lineHeight: '18px',\r\n },\r\n },\r\n\r\n '& .footer': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n\r\n '& .buttons': {\r\n display: 'inline-block',\r\n\r\n '& .ms-Button--default': {\r\n background: palette.white,\r\n borderRadius: '2px',\r\n border: 'none',\r\n color: palette.themePrimary,\r\n },\r\n\r\n '& .ms-Button--primary': {\r\n marginLeft: '9px',\r\n color: palette.white,\r\n background: 'none',\r\n borderColor: palette.white,\r\n border: '1px solid',\r\n borderRadius: '2px',\r\n },\r\n },\r\n\r\n '& .page-index': {\r\n display: 'inline-block',\r\n marginLeft: '20px',\r\n },\r\n },\r\n },\r\n\r\n '& .ms-Callout-beak': {\r\n backgroundColor: palette.themePrimary,\r\n },\r\n },\r\n});\r\n","import {\r\n glyphIconStyle,\r\n helpbuttonStyle,\r\n keywordPlannerStyle,\r\n searchboxStyle,\r\n statusStyle,\r\n uiblockerStyle,\r\n} from '@bingads-webui-campaign-react/common-styles';\r\nimport { getApplyFormStyles, getFeedbackModalStyles } from '@bingads-webui-campaign-react/recommendation-shared-styles';\r\nimport { adEditorPanelOverrideStyle } from '@bingads-webui-campaign-react/ad-editor-styles';\r\nimport { extend } from 'underscore';\r\n\r\nimport { getCommonStyles } from './styles/common';\r\nimport { contextualAttributeStyle } from './styles/contextual-attribute';\r\nimport { getCustomGridStyles } from './styles/custom-grid-style';\r\nimport { getSummaryPageStyles } from './styles/summary-page';\r\nimport { getDetailPageStyles } from './styles/detail-page';\r\nimport { getEstimateTileStyles } from './styles/estimate-tile';\r\nimport { getFeedbackPopupStyles } from './styles/feedback-popup';\r\nimport { getTeachingBubbleStyles } from './styles/teaching-bubble';\r\n\r\nconst flexStyle = {\r\n display: 'flex',\r\n flex: '1 1 1px',\r\n overflow: 'auto',\r\n flexDirection: 'column',\r\n};\r\n\r\n// Transfered from advisor package\r\nexport const getRecommendationsPageStyles = (_, { palette = {} }) => ({\r\n pageContainer: Object.assign(\r\n {},\r\n getCommonStyles(),\r\n getCustomGridStyles({ palette }),\r\n getSummaryPageStyles({ palette }),\r\n getDetailPageStyles({ palette }),\r\n contextualAttributeStyle,\r\n statusStyle({ palette }),\r\n helpbuttonStyle({ palette }),\r\n getEstimateTileStyles({ palette }),\r\n keywordPlannerStyle({ palette }),\r\n searchboxStyle({ palette })\r\n ),\r\n '@global': extend(\r\n {},\r\n glyphIconStyle({ palette }),\r\n uiblockerStyle({ palette }),\r\n getFeedbackPopupStyles({ palette }),\r\n getApplyFormStyles({ palette }),\r\n getFeedbackModalStyles({ palette }),\r\n getTeachingBubbleStyles({ palette }),\r\n {\r\n '.recommendations-page': flexStyle,\r\n '.recommendations-tab-view': flexStyle,\r\n '.recommendations-details': flexStyle,\r\n '.details-view-container': flexStyle,\r\n '.recommendation-grid': flexStyle,\r\n\r\n '.keyword_inline_action': {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n },\r\n\r\n '.grid-popupeditor': {\r\n zIndex: 100,\r\n '& .popover-edit-bid': {\r\n '& >span': {\r\n display: 'block',\r\n marginBottom: 16,\r\n '& >label:first-child': {\r\n display: 'none',\r\n },\r\n '& >label:last-child': {\r\n paddingLeft: 0,\r\n '& >input:first-child': {\r\n display: 'none',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n\r\n '.select-budget-container': {\r\n display: 'none',\r\n },\r\n\r\n '.new-campaign-adgroup-selector': {\r\n width: 350,\r\n '& button.btn.btn-default.dropdown-toggle': {\r\n width: 350,\r\n overflow: 'hidden',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n '&::after': {\r\n border: 'none',\r\n },\r\n '& .selected-item': {\r\n width: 275,\r\n '& .selected-item': {\r\n textAlign: 'left',\r\n textOverflow: 'ellipsis',\r\n display: 'block',\r\n overflow: 'hidden',\r\n },\r\n },\r\n '& .glyphicon-triangle-bottom:before': {\r\n content: '\"\\\\E76C\"',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n },\r\n '& .glyphicon-pencil:before': {\r\n color: '#000000',\r\n },\r\n '& .glyphicon': {\r\n marginBottom: 2,\r\n },\r\n },\r\n '& .dropdown-menu': {\r\n marginTop: 2.5,\r\n margin: 5,\r\n padding: 10,\r\n paddingBottom: 4,\r\n width: 350,\r\n transform: 'translateY(0px)',\r\n '& .ba-entity-selector': {\r\n height: 280,\r\n },\r\n '& .search-box__input-group': {\r\n position: 'relative',\r\n '& .form-control': {\r\n paddingLeft: 30,\r\n },\r\n '& .search-box__icon:before': {\r\n top: 7,\r\n left: 7,\r\n position: 'absolute',\r\n color: '#0078d4',\r\n content: '\"\\\\E721\"',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n },\r\n },\r\n '& .ba-list-selector': {\r\n height: 200,\r\n marginTop: 5,\r\n border: 'solid 1px black',\r\n borderRadius: '1px',\r\n overflow: 'hidden',\r\n overflowY: 'auto',\r\n '& h4': {\r\n fontSize: 14,\r\n },\r\n '& .selected': {\r\n background: '#edebe9',\r\n },\r\n '& .empty-content': {\r\n height: 40,\r\n padding: '10px 20px',\r\n },\r\n '& .item-content': {\r\n height: 40,\r\n padding: 10,\r\n paddingRight: 20,\r\n cursor: 'pointer',\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n '&:hover': {\r\n background: '#f3f2f1',\r\n },\r\n '& .statusIcon': {\r\n marginRight: 10,\r\n verticalAlign: 'text-top',\r\n },\r\n },\r\n },\r\n '& .ba-pagination': {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n height: 45,\r\n '& .prev + .text': {\r\n display: 'none',\r\n },\r\n '& .text': {\r\n marginTop: 4,\r\n },\r\n '& .pager-input': {\r\n textAlign: 'center',\r\n marginTop: 4,\r\n },\r\n '& .pager-totalCount': {\r\n marginLeft: 5,\r\n },\r\n '& .btn[disabled]': {\r\n background: 'none',\r\n color: '#BEBBB8',\r\n },\r\n '& button': {\r\n '& .glyphicon.glyphicon-triangle-left:before': {\r\n content: '\"\\\\E76B\"',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n },\r\n '& .glyphicon.glyphicon-triangle-right:before': {\r\n content: '\"\\\\E76C\"',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n },\r\n minWidth: 10,\r\n maxWidth: 10,\r\n border: 'none',\r\n marginLeft: 50,\r\n marginRight: 50,\r\n marginTop: 4,\r\n '& .glyphicon': {\r\n right: 8,\r\n top: 2,\r\n margin: 0,\r\n color: 'inherit',\r\n },\r\n },\r\n '& input': {\r\n width: 40,\r\n marginRight: 5,\r\n },\r\n },\r\n },\r\n },\r\n '.keyword_inline_selection': {\r\n marginBottom: 16,\r\n '& .warning-message': {\r\n display: 'flex',\r\n width: 328,\r\n lineHeight: 'normal',\r\n background: '#FFF4CE',\r\n marginTop: 6,\r\n '& .iconba-Warning': {\r\n fontSize: 16,\r\n minWidth: 16,\r\n minHeight: 16,\r\n display: 'flex',\r\n flexShrink: 0,\r\n color: palette.orange,\r\n margin: '6px 8px 24px 5px',\r\n },\r\n '& .warning': {\r\n margin: '6px 8px 8px 0px',\r\n fontSize: 12,\r\n },\r\n },\r\n },\r\n '.bid-textbox': {\r\n marginTop: 5,\r\n },\r\n '.popover-view': {\r\n boxShadow: '0px 0.6px 1.8px rgba(0, 0, 0, 0.108), 0px 3.2px 7.2px rgba(0, 0, 0, 0.132)',\r\n border: 'none',\r\n '& .popover-view__dismiss': {\r\n padding: '16px 16px 0 0',\r\n },\r\n '& .popover-view__content': {\r\n '& .react-highchart-wrapper': {\r\n padding: '0 15px 15px 15px',\r\n },\r\n '& .more-tooltip-container': {\r\n padding: 16,\r\n '& .close-button': {\r\n display: 'none',\r\n },\r\n '& .more-content': {\r\n marginRight: 20,\r\n '& tr.title': {\r\n fontSize: 14,\r\n fontWeight: '600',\r\n },\r\n '& td': {\r\n padding: '0',\r\n paddingBottom: 10,\r\n border: 'none',\r\n borderRight: 'none !important',\r\n '& .glyphicon-arrow-up:before': {\r\n content: '\"\\\\EE68\"',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n },\r\n '& .glyphicon-arrow-down:before': {\r\n content: '\"\\\\EE69\"',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n },\r\n },\r\n '& .gap-td': {\r\n paddingBottom: 5,\r\n },\r\n '& .left-col': {\r\n minWidth: 120,\r\n maxWidth: 200,\r\n },\r\n '& .right-col': {\r\n minWidth: 82,\r\n maxWidth: 200,\r\n paddingLeft: 15,\r\n boxSizing: 'content-box',\r\n },\r\n '& tr:last-child td': {\r\n padding: '0',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n\r\n '.keyword_inline_selection_instruction': {\r\n '& .keywordSelectedSelection': {\r\n textDecoration: 'none',\r\n cursor: 'default !important',\r\n color: 'black !important',\r\n },\r\n\r\n '& span': {\r\n paddingRight: 5,\r\n },\r\n\r\n '& a:nth-child(4)': {\r\n textTransform: 'capitalize',\r\n },\r\n\r\n '& span:nth-child(3)': {\r\n paddingLeft: 5,\r\n },\r\n },\r\n\r\n // Below style is transfered from advisor/ packages\r\n // recommendation-tab\r\n '.recommendations-container': {\r\n minHeight: 150,\r\n },\r\n '.recommendations-details-view': {\r\n paddingRight: 30,\r\n },\r\n '.iframe-panel': {\r\n minWidth: 1280,\r\n minHeight: 500,\r\n },\r\n '.panel-content': {\r\n maxWidth: '100vw',\r\n overflow: 'auto',\r\n },\r\n '.panel.ad-editor-panel.recommend-ad-editor-panel.recommend-improve-rsa-editor-panel': {\r\n '& .headlines-container': {\r\n marginTop: '0px !important',\r\n },\r\n\r\n '& .ad-rsa-pin-group': {\r\n display: 'none !important',\r\n },\r\n\r\n '& .description-header': {\r\n width: '550px !important',\r\n },\r\n\r\n '& .alert-info': {\r\n width: '480px !important',\r\n },\r\n },\r\n '.panel.ad-editor-panel.recommend-ad-editor-panel.recommend-create-conversion-goal-editor-panel': {\r\n '& .create-conversion-goal-view-content': {\r\n display: 'flex',\r\n margin: '16px 24px',\r\n flexFlow: 'column',\r\n borderTop: '1px solid #edebe9',\r\n '& .memo-row': {\r\n color: '#979797',\r\n fontSize: '12px',\r\n marginTop: '10px',\r\n },\r\n '& .view-content-row': {\r\n color: '#323130',\r\n fontSize: '14px',\r\n marginTop: '10px',\r\n },\r\n },\r\n },\r\n '.panel.ad-editor-panel.recommend-ad-editor-panel': {\r\n ...adEditorPanelOverrideStyle({ palette }),\r\n '& .alert-info': {\r\n width: '500px !important',\r\n },\r\n\r\n '& .recommendation-new-ads-inline-view': {\r\n paddingLeft: 12,\r\n '& #crawlImgAgreementLink': {\r\n textDecoration: 'none',\r\n },\r\n },\r\n\r\n '& div.contextual-inline, & div.contextual-inline div': {\r\n display: 'inline',\r\n },\r\n\r\n '& .image-suggestion-carousel .panel-title': {\r\n fontSize: '14px !important',\r\n },\r\n\r\n '& .call-to-action-section': {\r\n '& .actionextension-search-dropdown-container, & .dropdown-search-selector__dropdown': {\r\n marginLeft: 0,\r\n },\r\n\r\n '& .dropdown-search-selector__options': {\r\n width: 200,\r\n height: 200,\r\n paddingLeft: 0,\r\n },\r\n\r\n '& .dropdown-toggle': {\r\n width: '200px !important',\r\n },\r\n },\r\n },\r\n '.loading-panel': {\r\n margin: '15px 5px',\r\n },\r\n '.loading-panel .blocker-indicator': {\r\n zIndex: 'inherit',\r\n },\r\n '.recommendation-arrow-icon': {\r\n marginRight: '5px !important',\r\n },\r\n '.recommendation-arrow-icon:before': {\r\n fontSize: '11px !important',\r\n },\r\n }\r\n ),\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport queryString from 'query-string';\r\nimport hoistNonReactStatics from 'hoist-non-react-statics';\r\nimport { getDisplayName } from '@bingads-webui-react/hoc-utils';\r\nimport { levelAtConstant } from '@bingads-webui-campaign/scope-constants';\r\nimport { CHANNEL_TYPES, RECOMMENDATION_CATEGORIES } from '@bingads-webui-campaign/recommendation-core';\r\n\r\nconst pathNamePrefix = '/campaign/vnext/recommendations/';\r\nconst pathNamePrefixMCC = '/campaign/vnext/accounts/recommendations/';\r\n\r\nfunction getPathNamePrefix(isMCC) {\r\n return isMCC ? pathNamePrefixMCC : pathNamePrefix;\r\n}\r\n\r\nfunction getSearchQuery({\r\n currentSearch, type, scope, keepType = false, recsrc = null,\r\n}) {\r\n let query = queryString.parse(currentSearch);\r\n if (type) {\r\n _.extend(query, { recommendationType: type });\r\n } else if (!keepType) {\r\n query = _.omit(query, 'recommendationType');\r\n }\r\n if (scope) {\r\n const {\r\n adGroupId, campaignId, accountId, levelAt,\r\n } = scope;\r\n switch (levelAt) {\r\n case levelAtConstant.ADGROUP:\r\n _.extend(query, { aid: accountId, campaignId, adGroupId });\r\n break;\r\n case levelAtConstant.CAMPAIGN:\r\n query = _.chain(query)\r\n .omit('adGroupId')\r\n .extend({ aid: accountId, campaignId })\r\n .value();\r\n break;\r\n case levelAtConstant.ACCOUNT:\r\n query = _.chain(query)\r\n .omit('campaignId', 'adGroupId')\r\n .extend({ aid: accountId })\r\n .value();\r\n break;\r\n case levelAtConstant.CUSTOMER:\r\n default:\r\n query = _.omit(query, 'aid', 'campaignId', 'adGroupId');\r\n break;\r\n }\r\n }\r\n if (_.isNull(recsrc)) {\r\n query = _.omit(query, 'recsrc');\r\n } else {\r\n _.extend(query, { recsrc });\r\n }\r\n return queryString.stringify(query);\r\n}\r\n\r\nfunction viewHistory(history, isMCC) {\r\n history.push({\r\n pathname: `${getPathNamePrefix(isMCC)}history`,\r\n search: getSearchQuery({ currentSearch: history.location.search, keepType: true }),\r\n });\r\n}\r\n\r\nfunction viewSettings(history, isRecommendationSettings) {\r\n history.push({\r\n pathname: isRecommendationSettings ? `${getPathNamePrefix(false)}AutoApplySettings` : '/campaign/vnext/accountsettings',\r\n search: getSearchQuery({ currentSearch: history.location.search, keepType: true }),\r\n });\r\n}\r\n\r\nfunction viewUET(history) {\r\n window.open(`/campaign/vnext/uettag?${getSearchQuery({ currentSearch: history.location.search, keepType: false })}`);\r\n}\r\n\r\nfunction viewCategory(history, isMCC, category) {\r\n return () => {\r\n history.push({\r\n pathname: `${getPathNamePrefix(isMCC)}${category}`,\r\n search: getSearchQuery({ currentSearch: history.location.search }),\r\n });\r\n };\r\n}\r\n\r\nfunction backToRecommendation(history, isMCC) {\r\n const previousRoute = _.property(['location', 'state', 'previousRoute'])(history);\r\n const lastCategoryType = !_.isEmpty(previousRoute) ?\r\n previousRoute.substring(previousRoute.lastIndexOf('/') + 1, previousRoute.lastIndexOf('?')) : '';\r\n return () => {\r\n history.push({\r\n pathname: `${getPathNamePrefix(isMCC)}${_.contains(RECOMMENDATION_CATEGORIES, lastCategoryType) ?\r\n lastCategoryType : RECOMMENDATION_CATEGORIES.ALL}`,\r\n search: getSearchQuery({ currentSearch: history.location.search, keepType: true }),\r\n });\r\n };\r\n}\r\n\r\nfunction viewSummary(history, isMCC) {\r\n history.push({\r\n pathname: `${getPathNamePrefix(isMCC)}All`,\r\n search: getSearchQuery({\r\n currentSearch: history.location.search,\r\n scope: {\r\n levelAt: isMCC ? levelAtConstant.CUSTOMER : levelAtConstant.ACCOUNT,\r\n },\r\n }),\r\n });\r\n}\r\n\r\nfunction viewDetails(history, validDetailPage, type, data = null) {\r\n validDetailPage();\r\n return () => {\r\n history.push({\r\n search: getSearchQuery({\r\n currentSearch: history.location.search,\r\n type,\r\n scope: data,\r\n }),\r\n });\r\n };\r\n}\r\n\r\nfunction viewBAADetails(history, validDetailPage, type, data, category) {\r\n validDetailPage();\r\n return () => {\r\n history.push({\r\n pathname: `${getPathNamePrefix(false)}${category}`,\r\n search: getSearchQuery({\r\n currentSearch: history.location.search,\r\n type,\r\n scope: data,\r\n recsrc: CHANNEL_TYPES.MCCRECOMMENDATION,\r\n }),\r\n });\r\n };\r\n}\r\n\r\nexport const withNavigation = (WrappedComponent) => {\r\n const HoC = (props) => {\r\n const {\r\n validDetailPage,\r\n history,\r\n isMCC,\r\n } = props;\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n HoC.displayName = `withNavigation(${getDisplayName(WrappedComponent)})`;\r\n HoC.propTypes = {\r\n deps: PropTypes.shape({\r\n legacyRouter: PropTypes.object.isRequired,\r\n }).isRequired,\r\n validDetailPage: PropTypes.func.isRequired,\r\n history: PropTypes.shape({\r\n push: PropTypes.func,\r\n }).isRequired,\r\n isMCC: PropTypes.bool,\r\n };\r\n HoC.defaultProps = {\r\n isMCC: false,\r\n };\r\n\r\n hoistNonReactStatics(HoC, WrappedComponent);\r\n\r\n return HoC;\r\n};\r\n","/* eslint-disable import/first */\r\n/* eslint-disable import/extensions */\r\n\r\n/* eslint-disable import/no-unresolved */\r\n// eslint-disable-next-line\r\nimport _bingads_webui_component_legacy_legacy_router_index from '@bingads-webui-component-legacy/legacy-router/index';\r\n// eslint-disable-next-line\r\nconst { legacyRouter } = _bingads_webui_component_legacy_legacy_router_index;\r\nimport CampaignEditor from '@bingads-webui-campaign-legacy/crud-campaign/view/create';\r\nimport SearchBidView from '@bingads-webui-campaign-legacy/adgroup-create-advanced/view/steps/search-bid';\r\nimport BiddingStrategyView from '@bingads-webui-campaign-legacy/bidding-strategy/view/setting';\r\nimport appConfig from '@bingads-webui-component-legacy/config/index';\r\nimport appState from '@bingads-webui-component-legacy/state/index';\r\nimport instrumentation from '@bingads-webui-campaign-legacy/instrumentation/index';\r\nimport jsdata from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport CreateKeywordView from '@bingads-webui-campaign-legacy/crud-keywords/view/create-inline-recommendation';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport preferencesService from '@bingads-webui-component-legacy/preference/service/index';\r\nimport dataManager from '@bingads-webui-campaign-legacy/inline-opportunity/view/data-manager';\r\nimport odata from '@bingads-webui-component-legacy/http/channel/odata';\r\nimport TrackingTemplate from '@bingads-webui-component-legacy/upgraded-url/view/trackingTemplate';\r\nimport UrlEditor from '@bingads-webui-component-legacy/url-input/view/url-input';\r\nimport { testUurl, uurlLevels } from '@bingads-webui-component-legacy/upgraded-url/service/testUurl';\r\nimport validator from '@bingads-webui-component-legacy/ko-validation/index';\r\nimport constants from '@bingads-webui-static-legacy/constants';\r\nimport cacheManager from '@bingads-webui-campaign-legacy/cache-manager/index';\r\nimport { importFreqColDataToTemplate } from '@bingads-webui-campaign-legacy/scheduled-import/view/shared-column-configs/import-freq-col';\r\nimport * as importScheduleConstants from '@bingads-webui-campaign-legacy/scheduled-import/view/import-schedule-constants';\r\n\r\nconst competitionTabI18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/competition-tab');\r\nconst i18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/competition-tab');\r\nconst permissions = appConfig.get('Permissions');\r\nconst s$i18n = window.globalLegacyI18n.get('$/schema-i18n!campaign');\r\n\r\nexport const legacyDepsList = {\r\n '@bingads-webui/i18n-amd-loader!campaignui/feature/competition-tab': competitionTabI18n,\r\n 'campaignui/feature/crud-campaign/view/create': CampaignEditor,\r\n 'campaignui/feature/adgroup-create-advanced/view/steps/search-bid': SearchBidView,\r\n 'campaignui/feature/bidding-strategy/view/setting': BiddingStrategyView,\r\n 'campaignui/feature/inline-opportunity/view/data-manager': dataManager,\r\n 'campaignui/feature/instrumentation/index': instrumentation,\r\n 'component/config/index': appConfig,\r\n 'component/state/index': appState,\r\n 'component/js-data-campaign/index': jsdata,\r\n 'component/legacy-router/index': { legacyRouter },\r\n 'component/preference/service/index': preferencesService,\r\n PageContext: pageContext,\r\n Constants: constants,\r\n 'component/http/channel/odata': odata,\r\n 'campaignui/feature/crud-keywords/view/create-inline-recommendation': CreateKeywordView,\r\n 'component/url-input/view/url-input': UrlEditor,\r\n 'component/upgraded-url/view/trackingTemplate': TrackingTemplate,\r\n 'component/upgraded-url/service/testUurl': { testUurl, uurlLevels },\r\n '$/schema-i18n!campaign': s$i18n,\r\n 'component/ko-validation/index': validator,\r\n 'campaignui/feature/cache-manager/index': cacheManager,\r\n};\r\n\r\nexport function getDeps() {\r\n return {\r\n deps: {\r\n CampaignEditor,\r\n SearchBidView,\r\n BiddingStrategyView,\r\n appConfig,\r\n appState,\r\n i18n,\r\n instrumentation,\r\n jsdata,\r\n CreateKeywordView,\r\n legacyRouter,\r\n pageContext,\r\n permissions,\r\n preferencesService,\r\n constants,\r\n dataManager,\r\n odata,\r\n TrackingTemplate,\r\n UrlEditor,\r\n testUurl,\r\n uurlLevels,\r\n s$i18n,\r\n validator,\r\n cacheManager,\r\n importFreqColDataToTemplate,\r\n importScheduleConstants,\r\n },\r\n };\r\n}\r\n","import React from 'react';\r\nimport hoistNonReactStatics from 'hoist-non-react-statics';\r\nimport { getDisplayName } from '@bingads-webui-react/hoc-utils';\r\nimport { getDeps } from './legacy-deps-list';\r\n\r\nexport const withLegacyDeps = (WrappedComponent) => {\r\n const HoC = props => (\r\n \r\n );\r\n\r\n HoC.displayName = `withLegacyDeps(${getDisplayName(WrappedComponent)})`;\r\n\r\n hoistNonReactStatics(HoC, WrappedComponent);\r\n\r\n return HoC;\r\n};\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport pkg from './package.json';\r\n\r\nexport const { version } = pkg;\r\n\r\nexport default globalContext.define(\r\n pkg.legacyDependencies,\r\n Promise => import(/* webpackMode: 'eager' */ './src/index') // eslint-disable-line no-unused-vars\r\n);\r\n","import Promise from 'bluebird';\r\nimport recommendationTabContainer from '@bingads-webui-campaign-react/recommendation-tab';\r\nimport { legacyDepsList } from './legacy-deps-list';\r\n\r\nlet recommendationsPromise = null;\r\n\r\nexport function recommendationsPromiseFactory() {\r\n if (recommendationsPromise == null) {\r\n recommendationsPromise = new Promise((resolve) => {\r\n recommendationTabContainer(legacyDepsList)\r\n .then((result) => {\r\n resolve(result);\r\n });\r\n });\r\n\r\n return recommendationsPromise;\r\n }\r\n\r\n return recommendationsPromise;\r\n}\r\n","export const odataPath = window.location.host.indexOf('ads') > 0 ? '/ODataApi/' : 'http://advertiseruibox.redmond.corp.microsoft.com:823/ODataApi/';\r\n\r\nexport const schema = {\r\n scenario: [\r\n {\r\n name: 'loadRecommendationTab',\r\n value: 'LoadRecommendationTab',\r\n setting: {},\r\n activity: [\r\n {\r\n name: 'loadRecommendationTab',\r\n value: 'LoadRecommendationTab',\r\n },\r\n // Below activities are for performance logs.\r\n {\r\n name: 'getSummary',\r\n value: 'getsummary',\r\n },\r\n {\r\n name: 'getHistory',\r\n value: 'gethistory',\r\n },\r\n {\r\n name: 'getCoupons',\r\n value: 'getCoupons',\r\n },\r\n {\r\n name: 'getCount',\r\n value: 'getCount',\r\n },\r\n {\r\n name: 'track',\r\n value: 'track',\r\n },\r\n {\r\n name: 'viewCategory',\r\n value: 'ViewCategory',\r\n },\r\n {\r\n name: 'getAutoApplyOptInStatus',\r\n value: 'getAutoApplyOptInStatus',\r\n },\r\n {\r\n name: 'setAutoApplyOptInStatus',\r\n value: 'setAutoApplyOptInStatus',\r\n },\r\n {\r\n name: 'getBulkAarUploadBlobUrl',\r\n value: 'getBulkAarUploadBlobUrl',\r\n },\r\n {\r\n name: 'submitBulkAarOptInStatusTask',\r\n value: 'submitBulkAarOptInStatusTask',\r\n },\r\n {\r\n name: 'pollBulkAarOptInStatusTask',\r\n value: 'pollBulkAarOptInStatusTask',\r\n },\r\n ],\r\n },\r\n ],\r\n};\r\n","import { isFunction, some, isEmpty } from 'underscore';\r\nimport { merge } from '@bingads-webui/primitive-utilities';\r\nimport {\r\n uiblockerStyle,\r\n} from '@bingads-webui-campaign-react/common-styles';\r\n\r\nfunction resolveStyles(theme, ...styles) {\r\n const resolvedStyles = styles.map(s => (isFunction(s) ? s(theme) : s));\r\n if (some(resolvedStyles, isEmpty)) {\r\n throw new Error('Cannot pass in empty style!');\r\n }\r\n return resolvedStyles;\r\n}\r\nexport const getRecommendationPageFastStyle = (_, { palette = {} }) => {\r\n const globalStyles = merge(\r\n {},\r\n ...resolveStyles({ palette }, uiblockerStyle)\r\n );\r\n return {\r\n '@global': globalStyles,\r\n };\r\n};\r\n","import _ from 'underscore';\r\nimport React, { Fragment } from 'react';\r\nimport classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport { withRouter } from '@bingads-webui-campaign-react/router';\r\nimport queryString from 'query-string';\r\n\r\n// vnextDeps\r\nimport { customMapperStore } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { recommendationDataStore } from '@bingads-webui-campaign-react/sub-page-menu-container';\r\nimport {\r\n ProgressiveLoadingBlock,\r\n getFilteredCampaignTypeFromRawFilter,\r\n} from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { getCrossPageSelectPlugin } from '@bingads-webui-campaign-react/cross-page-select-plugin';\r\nimport { StyledGridViewWrapper } from '@bingads-webui-campaign-react/grid-view-wrapper';\r\nimport { ToolbarContainer } from '@bingads-webui-campaign-react/toolbar-container';\r\nimport { getToolbarPlugin } from '@bingads-webui-campaign-react/toolbar-plugin';\r\nimport { StyledTablePageContainer } from '@bingads-webui-campaign-react/table-page-container';\r\nimport { GoalCreationRecommendationWizard } from '@bingads-webui-campaign-react/goal-creation-wizard';\r\n\r\nimport { WaterfallFilterType } from '@bingads-webui-campaign/filter-storage';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\n\r\nimport {\r\n withGetSummary,\r\n CHANNEL_ALL_RECOMMENDATIONS,\r\n CHANNEL_TYPES,\r\n withRecommendationsScope as withScope,\r\n withCoupon,\r\n} from '@bingads-webui-campaign/recommendation-core';\r\nimport { withRecommendationServices as withServices } from '@bingads-webui-campaign-react/with-recommendation-services';\r\nimport { generateGuid } from '@bingads-webui-universal/primitive-utilities';\r\nimport { withCcJsData } from '@bingads-webui-cc-react/js-data-rest';\r\n\r\nimport { withDelayedStyles } from '@bingads-webui-campaign-react/common-utils';\r\n\r\nimport eventDispatcher from '@bingads-webui-component-legacy/event-dispatcher/index';\r\n\r\nimport { withNavigation } from './with-navigation';\r\nimport { withAlertHandler } from './with-alert-handler';\r\nimport { withLegacyDeps } from './with-legacy-deps';\r\nimport { recommendationsPromiseFactory } from './recommendations-factory';\r\nimport { VIEW_TYPES } from './consts';\r\nimport {\r\n odataPath,\r\n schema,\r\n} from './config';\r\nimport { getDeps } from './legacy-deps-list';\r\n\r\nimport { getRecommendationPageFastStyle } from './styles/recommendation-page-styles-fast';\r\n\r\nconst getDelayedRecommendationPageStyles = () => (\r\n import(/* webpackMode: 'eager' */'./get-style')\r\n .then(({ getRecommendationsPageStyles }) => ({\r\n getDelayedStyles: getRecommendationsPageStyles,\r\n }))\r\n);\r\n\r\nconst getDelayedRecommendationHistoryPageStyles = () => (\r\n import(/* webpackMode: 'eager' */'./get-history-style')\r\n .then(({ getRecommendationsHistoryPageStyles }) => ({\r\n getDelayedStyles: getRecommendationsHistoryPageStyles,\r\n }))\r\n);\r\n\r\nconst getDelayedRecommendationAutoApplyBulkUploadPageStyles = () => (\r\n import(/* webpackMode: 'eager' */'./get-auto-apply-bulk-upload-style')\r\n .then(({ getRecommendationsAutoApplyBulkUploadPageStyles }) => ({\r\n getDelayedStyles: getRecommendationsAutoApplyBulkUploadPageStyles,\r\n }))\r\n);\r\n\r\nclass Recommendations extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.recommendationGuid = generateGuid();\r\n this.RecommendationViewLazyWrap = this.createPage();\r\n this.queryParams = queryString.parse(this.props.location.search);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps[WaterfallFilterType.CampaignType] !== this.props[WaterfallFilterType.CampaignType] ||\r\n prevProps.scope !== this.props.scope) {\r\n if (prevProps.categoryType !== this.props.categoryType ||\r\n prevProps[WaterfallFilterType.CampaignType] !== this.props[WaterfallFilterType.CampaignType]) {\r\n if (this.props.viewType !== VIEW_TYPES.HISTORY && prevProps.viewType !== VIEW_TYPES.HISTORY) {\r\n this.removeRecommendationRelatedQueryParam();\r\n }\r\n }\r\n if (this.scopeChanged(this.queryParams, queryString.parse(this.props.history.location.search))) { // eslint-disable-line{\r\n this.recommendationGuid = generateGuid(); // refresh guid\r\n }\r\n this.queryParams = queryString.parse(this.props.location.search);\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n if (!this.isToRecommendationPage()) {\r\n this.removeRecommendationRelatedQueryParam();\r\n }\r\n }\r\n\r\n createPage = () => {\r\n const {\r\n serverContext,\r\n scope,\r\n permissions,\r\n preferenceService,\r\n isMCC,\r\n } = this.props;\r\n\r\n return React.lazy(() => { // eslint-disable-line arrow-body-style\r\n return recommendationsPromiseFactory({\r\n serverContext, scope, permissions, preferenceService,\r\n }).then(({ RecommendationTab }) => {\r\n const { deps: { instrumentation } } = getDeps();\r\n instrumentation.addScenario(schema);\r\n const currentScenario = instrumentation.loadRecommendationTab.create();\r\n const currentActivity = currentScenario.loadRecommendationTab.create();\r\n const RecommendationTabWithData = isMCC ?\r\n withGetSummary(false)(RecommendationTab) : withGetSummary(false)(withCoupon(RecommendationTab));\r\n const RecommendationTabView = withAlertHandler(withLegacyDeps(withScope(withRouter(withNavigation(withCcJsData(withServices({\r\n currentScenario,\r\n currentActivity,\r\n odataPath,\r\n })(RecommendationTabWithData)))))));\r\n return {\r\n default: RecommendationTabView,\r\n };\r\n });\r\n });\r\n }\r\n\r\n scopeChanged = (previousQueryParams, currentQueryParams) => (\r\n !_.isEqual(\r\n _.pick(previousQueryParams, 'campaignId', 'adGroupId'),\r\n _.pick(currentQueryParams, 'campaignId', 'adGroupId')\r\n )\r\n )\r\n\r\n removeRecommendationRelatedQueryParam = () => {\r\n const currentQueryParams = queryString.parse(this.props.history.location.search);\r\n if (this.queryParams.recommendationType || this.queryParams.recsrc) {\r\n this.props.history.push({\r\n search: queryString.stringify(_.omit(\r\n currentQueryParams,\r\n 'recommendationType',\r\n 'recsrc'\r\n )),\r\n });\r\n }\r\n }\r\n\r\n validDetailPage = () => {\r\n this.detailValid = true;\r\n };\r\n\r\n isToRecommendationPage = () => {\r\n const { history } = this.props;\r\n\r\n return history.location.pathname.startsWith('/campaign/vnext/recommendations') ||\r\n history.location.pathname.startsWith('/campaign/vnext/accounts/recommendations');\r\n }\r\n\r\n render() {\r\n const {\r\n serverContext,\r\n scope,\r\n permissions,\r\n categoryType,\r\n i18n,\r\n perfMarker,\r\n viewType,\r\n isMCC,\r\n recommendationCustomizedDataFilterFunc,\r\n } = this.props;\r\n\r\n const newCampaignType = getFilteredCampaignTypeFromRawFilter(this.props[WaterfallFilterType.CampaignType]);\r\n this.queryParams = queryString.parse(this.props.location.search);\r\n const { recommendationType } = this.queryParams;\r\n const channel = isMCC ? CHANNEL_TYPES.MCCRECOMMENDATION : CHANNEL_TYPES.RECOMMENDATION;\r\n const config = {\r\n el: '.recommendations-page',\r\n permissions,\r\n scope: {\r\n accountId: scope.values.aid,\r\n adGroupId: scope.values.adGroupId,\r\n advertiserCustomerId: serverContext.CurrentAccount.AdvertiserCustomerID,\r\n userId: serverContext.CurrentUser.Id,\r\n campaignId: scope.values.campaignId,\r\n customerId: scope.values.cid,\r\n token: serverContext.Token,\r\n },\r\n channel,\r\n viewType: viewType || (_.contains(CHANNEL_ALL_RECOMMENDATIONS[channel], recommendationType) ?\r\n VIEW_TYPES.DETAILS : VIEW_TYPES.SUMMARY),\r\n perfMarker,\r\n };\r\n const vnextDeps = {\r\n customMapperStore,\r\n recommendationDataStore,\r\n getCrossPageSelectPlugin,\r\n getToolbarPlugin,\r\n newI18n: i18n,\r\n StyledGridViewWrapper,\r\n StyledTablePageContainer,\r\n ToolbarContainer,\r\n GoalCreationRecommendationWizard,\r\n eventDispatcher,\r\n };\r\n\r\n return (\r\n \r\n
    \r\n }>\r\n \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nRecommendations.propTypes = {\r\n serverContext: PropTypes.shape({\r\n CurrentAccount: PropTypes.object.isRequired,\r\n CurrentCustomer: PropTypes.object.isRequired,\r\n CurrentUser: PropTypes.object.isRequired,\r\n }),\r\n scope: PropTypes.shape({\r\n values: {\r\n adGroupId: PropTypes.number,\r\n campaignId: PropTypes.number,\r\n },\r\n }),\r\n permissions: PropTypes.shape({\r\n }),\r\n preferenceService: PropTypes.shape({\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n categoryType: PropTypes.string.isRequired,\r\n classes: PropTypes.shape({\r\n pageContainer: PropTypes.string.isRequired,\r\n }).isRequired,\r\n history: PropTypes.shape({\r\n push: PropTypes.func,\r\n location: PropTypes.shape({\r\n search: PropTypes.string,\r\n pathname: PropTypes.string,\r\n }).isRequired,\r\n }).isRequired,\r\n location: PropTypes.shape({\r\n search: PropTypes.string,\r\n }).isRequired,\r\n currentCampaign: PropTypes.shape({}),\r\n currentAdGroup: PropTypes.shape({}),\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n viewType: PropTypes.string,\r\n isMCC: PropTypes.bool,\r\n recommendationCustomizedDataFilterFunc: PropTypes.func,\r\n};\r\n\r\nRecommendations.defaultProps = {\r\n serverContext: {},\r\n scope: {},\r\n permissions: {},\r\n currentCampaign: null,\r\n currentAdGroup: null,\r\n viewType: '',\r\n isMCC: false,\r\n recommendationCustomizedDataFilterFunc: null,\r\n};\r\n\r\nexport const StyledRecommendations =\r\n withDelayedStyles(Recommendations, getRecommendationPageFastStyle, getDelayedRecommendationPageStyles, 'recommendation_view_loaded');\r\n\r\nexport const StyledRecommendationHistory =\r\n withDelayedStyles(Recommendations, getRecommendationPageFastStyle, getDelayedRecommendationHistoryPageStyles, 'recommendation_view_loaded');\r\n\r\nexport const StyledRecommendationAutoApplyBulkUpload =\r\n withDelayedStyles(Recommendations, getRecommendationPageFastStyle, getDelayedRecommendationAutoApplyBulkUploadPageStyles, 'recommendation_view_loaded');\r\n","import React from 'react';\r\nimport hoistNonReactStatics from 'hoist-non-react-statics';\r\nimport { getDisplayName } from '@bingads-webui-react/hoc-utils';\r\n\r\nexport const withAlertHandler = (WrappedComponent) => {\r\n const config = {\r\n showAlertHandler:\r\n window.App.views.alertCenter.show.bind(window.App.views.alertCenter),\r\n };\r\n const HoC = props => (\r\n \r\n );\r\n\r\n HoC.displayName = `withAlertHandler(${getDisplayName(WrappedComponent)})`;\r\n\r\n hoistNonReactStatics(HoC, WrappedComponent);\r\n\r\n return HoC;\r\n};\r\n\r\n","import { getIconStyles } from '@bingads-webui-campaign-react/recommendation-shared-styles';\r\n\r\nexport const getCommonStyles = () =>\r\n ({\r\n ...getIconStyles(),\r\n\r\n '& .custom-params-template .custom-param-entry': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n '& .custom-params-template .custom-param-entry td': {\r\n display: 'flex',\r\n alignItems: 'baseline',\r\n },\r\n '& .custom-params-template .flex-row-fixed.custom-param__key-container': {\r\n display: 'flex',\r\n alignItems: 'baseline',\r\n },\r\n '& .custom-params-template .flex-row-fixed.custom-param__key-container .control-label': {\r\n whiteSpace: 'pre',\r\n },\r\n '& .custom-params-template .flex-row-fixed.custom-param__key-container input.form-control.custom-param__key-field': {\r\n margin: '0px 5px',\r\n },\r\n '& .custom-params-template .flex-row-dynamic input.form-control.custom-param__value-field': {\r\n marginLeft: '5px',\r\n },\r\n '& .custom-params-template .closeimage.custom-param__close-button': {\r\n height: '20px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n\r\n '&:before': {\r\n fontFamily: '\"MsAds MDL2 Assets\"',\r\n content: '\"\\\\E711\"',\r\n },\r\n },\r\n '& .custom-param__close-button': {\r\n marginLeft: 10,\r\n cursor: 'pointer',\r\n },\r\n });\r\n","export const budgetStyle = {\r\n '& .recommendation-inline-budget-view': {\r\n overflow: 'hidden',\r\n\r\n '& shared-budget-info': {\r\n marginBottom: '30px',\r\n },\r\n\r\n '& input[type=radio]:before': {\r\n left: 'inherit',\r\n },\r\n '& input[type=radio]:after': {\r\n left: 'inherit',\r\n marginLeft: '5px',\r\n },\r\n '& .budget-landscape-container': {\r\n display: 'grid',\r\n gridTemplateColumns: '60% auto',\r\n },\r\n '& .landscape-chart': {\r\n marginLeft: 15,\r\n marginRight: 15,\r\n display: 'grid',\r\n '& > div': {\r\n display: 'grid',\r\n },\r\n '& .anchor': {\r\n position: 'relative',\r\n },\r\n '& .no-conversion-chart': {\r\n verticalAlign: 'middle',\r\n textAlign: 'center',\r\n display: 'grid',\r\n alignItems: 'center',\r\n padding: 10,\r\n position: 'absolute',\r\n top: 48,\r\n bottom: '0',\r\n width: '100%',\r\n '& .chart-nodata': {\r\n marginBottom: 5,\r\n },\r\n },\r\n '& .column-chart-title': {\r\n paddingTop: 6,\r\n paddingBottom: 6,\r\n height: 48,\r\n display: 'table',\r\n '& span': {\r\n display: 'table-cell',\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n },\r\n '& .landscape-table': {\r\n marginRight: 20,\r\n '& td': {\r\n border: 'none !important',\r\n },\r\n '& .tip-message': {\r\n marginTop: 15,\r\n\r\n '& .iconba.iconba-Warning': {\r\n color: '#FF9900 !important',\r\n },\r\n },\r\n '& span.status': {\r\n marginRight: 5,\r\n },\r\n '& table': {\r\n width: '100%',\r\n position: 'relative',\r\n '& th.selected': {\r\n background: 'rgba(237, 237, 237, 0.5)',\r\n },\r\n '& th': {\r\n paddingLeft: 10,\r\n paddingRight: 10,\r\n color: '#86837c',\r\n fontWeight: 'normal',\r\n height: 48,\r\n },\r\n '& td.user-input-cell': {\r\n paddingLeft: 1,\r\n lineHeight: '17px',\r\n },\r\n '& tr': {\r\n height: 30,\r\n '& td': {\r\n paddingTop: '0px !important',\r\n paddingBottom: '0px !important',\r\n },\r\n },\r\n '& tr.selected': {\r\n color: '#333',\r\n fontWeight: 'bold',\r\n backgroundColor: '#DEECF9 !important',\r\n position: 'relative',\r\n },\r\n '& tr.selected::after': {\r\n borderBottom: '15px solid transparent',\r\n borderLeft: 'none',\r\n borderTop: '15px solid transparent',\r\n height: '0',\r\n width: '0',\r\n content: '\\'\\'',\r\n position: 'absolute',\r\n },\r\n '& .user-input': {\r\n position: 'relative',\r\n '& .currency-symbol': {\r\n position: 'absolute',\r\n top: 2,\r\n left: 9,\r\n },\r\n '& input': {\r\n paddingLeft: 16,\r\n borderWidth: 1,\r\n borderColor: '#BBB',\r\n },\r\n '& .symbol-size-2 + input': {\r\n paddingLeft: 25,\r\n },\r\n '& .symbol-size-3 + input': {\r\n paddingLeft: 35,\r\n },\r\n },\r\n },\r\n },\r\n '& .budget-landscape-actions': {\r\n float: 'right',\r\n '& .movable-margin': {\r\n height: 15,\r\n },\r\n '& .btn-primary': {\r\n marginRight: '8px',\r\n marginBottom: '16px',\r\n },\r\n '& .btn-default': {\r\n marginRight: '16px',\r\n },\r\n '& .btn:disabled': {\r\n backgroundColor: '#F4F4F4',\r\n borderColor: '#CCC',\r\n borderWidth: 1,\r\n color: '#666',\r\n },\r\n },\r\n },\r\n};\r\n","/* eslint-disable @typescript-eslint/no-unused-vars */\r\nconst colorGrey = '#323130';\r\nconst detaultFontSize = '14px';\r\nexport const getReallocateBudgetStyle = () => ({\r\n '& .recommendation-reallocate-budget': {\r\n fontFamily: 'Segoe UI',\r\n fontStyle: 'normal',\r\n fontSize: detaultFontSize,\r\n lineHeight: '20px',\r\n color: '#333333',\r\n minWidth: '1000px',\r\n '& .rba-detail-actions': {\r\n textAlign: 'right',\r\n '& .btn-primary': {\r\n marginRight: '8px',\r\n marginBottom: '16px',\r\n },\r\n '& .btn-default': {\r\n marginRight: '16px',\r\n },\r\n },\r\n '& .padding-zero': {\r\n padding: '0!important',\r\n },\r\n '& .error-msg': {\r\n color: '#A80000',\r\n paddingLeft: '25px',\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n },\r\n '& .warning': {\r\n color: colorGrey,\r\n paddingLeft: '25px',\r\n fontSize: '12px',\r\n '& .iconba-Warning': {\r\n marginRight: '5px',\r\n marginLeft: '-20px',\r\n color: '#D83B01',\r\n },\r\n },\r\n '& .rba-campaign-name': {\r\n marginBottom: '16px',\r\n '& .title': {\r\n marginTop: '0px',\r\n marginBottom: '10px',\r\n color: colorGrey,\r\n fontSize: detaultFontSize,\r\n '&>a': {\r\n display: 'inline-block',\r\n },\r\n },\r\n },\r\n '& .rba-content': {\r\n marginBottom: '16px',\r\n overflow: 'hidden',\r\n width: '1047px',\r\n '& .iconba-Trending12': {\r\n fontSize: '28px',\r\n lineHeight: '36px',\r\n transform: 'rotate(75deg)',\r\n webkitTransform: 'rotate(75deg)',\r\n },\r\n '& .budget-type': {\r\n paddingRight: '40px',\r\n minWidth: '250px',\r\n '& .title': {\r\n marginTop: '0px',\r\n marginBottom: '16px',\r\n color: colorGrey,\r\n fontSize: detaultFontSize,\r\n },\r\n '& .radio-block': {\r\n marginBottom: '10px',\r\n '& .radio-inline': {\r\n marginRight: '5px',\r\n },\r\n },\r\n '& .input-group': {\r\n marginTop: '5px',\r\n marginLeft: '25px',\r\n border: '1px solid #888888',\r\n padding: '5px 10px',\r\n display: 'block',\r\n '&.error-input': {\r\n border: '1px solid #A80000',\r\n },\r\n '&.disabled': {\r\n borderColor: '#ccc',\r\n backgroundColor: '#f4f4f4',\r\n },\r\n '& .inline-input': {\r\n border: 'none',\r\n paddingLeft: '10px',\r\n outline: 'none',\r\n background: 'transparent',\r\n maxWidth: '150px',\r\n },\r\n },\r\n },\r\n '& .campaign-info': {\r\n borderLeft: '1px solid #ccc',\r\n paddingLeft: '40px',\r\n '& > div': {\r\n padding: '0px',\r\n },\r\n '& .arrow': {\r\n paddingTop: '50px',\r\n textAlign: 'center',\r\n width: 'auto',\r\n paddingLeft: '32px',\r\n paddingRight: '32px',\r\n },\r\n '& .rba-campaign-name': {\r\n color: colorGrey,\r\n marginBottom: '5px',\r\n },\r\n '& .positive-delta': {\r\n color: '#107C10',\r\n },\r\n '& .rba-detail-estvalue': {\r\n fontSize: '28px',\r\n marginBottom: '12px',\r\n lineHeight: '36px',\r\n fontWeight: 'bold',\r\n },\r\n '& .rba-current-budget': {\r\n color: '#605E5C',\r\n marginBottom: '16px',\r\n },\r\n '& .rba-detail-desc-top': {\r\n color: '#888888',\r\n },\r\n '& .rba-detail-overview-item': {\r\n '& .col-sm-6': {\r\n paddingLeft: 0,\r\n '& .rba-detail-desc-top': {\r\n marginBottom: '5px',\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n },\r\n '& .rba-detail-estvalue': {\r\n marginBottom: '0px',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n '& .block': {\r\n display: 'block',\r\n },\r\n '& .inline-block': {\r\n display: 'inline-block',\r\n },\r\n },\r\n});\r\n","import { adEditorOverrideStyle } from '@bingads-webui-campaign-react/ad-editor-styles';\r\nimport {\r\n crudAdStyle,\r\n alertStyle as alertOverrideStyle,\r\n adCustomizersStyle,\r\n locationMapStyle,\r\n} from '@bingads-webui-campaign-react/common-styles';\r\n\r\nconst colorGrey = '#323130';\r\nconst detaultFontSize = '14px';\r\nexport const getFixAdDestinationStyle = ({ palette = {} }) => ({\r\n '& .recommendation-fix-ad-destination': {\r\n fontFamily: 'Segoe UI',\r\n fontStyle: 'normal',\r\n fontSize: detaultFontSize,\r\n lineHeight: '20px',\r\n color: '#333333',\r\n minWidth: '1000px',\r\n ...adEditorOverrideStyle({ palette }),\r\n '& .row': {\r\n marginLeft: 0,\r\n marginRight: 0,\r\n },\r\n '& .row.form-group': {\r\n display: 'block!important',\r\n '& .col-sm-3, & .col-sm-9': {\r\n width: '100%!important',\r\n },\r\n },\r\n '& .rba-detail-actions': {\r\n textAlign: 'right',\r\n '& .btn-primary': {\r\n marginRight: '8px',\r\n marginBottom: '16px',\r\n },\r\n '& .btn-default': {\r\n marginRight: '16px',\r\n },\r\n },\r\n '& .padding-zero': {\r\n padding: '0!important',\r\n },\r\n '& .error-msg': {\r\n color: '#A80000',\r\n paddingLeft: '25px',\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n },\r\n '& .warning': {\r\n color: colorGrey,\r\n paddingLeft: '25px',\r\n fontSize: '12px',\r\n marginTop: '10px',\r\n '& .iconba-Warning': {\r\n marginRight: '5px',\r\n marginLeft: '0px',\r\n color: '#D83B01',\r\n },\r\n },\r\n '& .warning-info': {\r\n backgroundColor: '#FFF4CE',\r\n },\r\n '& .rba-title': {\r\n marginBottom: '15px',\r\n '& .title': {\r\n marginTop: '0px',\r\n marginBottom: '5px',\r\n display: 'block',\r\n textDecoration: 'underline',\r\n },\r\n },\r\n '& .rba-content': {\r\n marginBottom: '30px',\r\n width: '1290px',\r\n '& .rba-content-left': {\r\n paddingLeft: 0,\r\n '& .info-url': {\r\n marginBottom: '20px',\r\n '& .final-url': {\r\n '&.container-fluid': {\r\n padding: 0,\r\n },\r\n },\r\n },\r\n '& .info-affected': {\r\n '& .title': {\r\n marginBottom: '10px',\r\n fontSize: '14px',\r\n fontWeight: 'bold',\r\n },\r\n '& .col-sm-6': {\r\n paddingLeft: 0,\r\n '& .rba-detail-desc-top': {\r\n marginBottom: '5px',\r\n },\r\n },\r\n },\r\n },\r\n '& .rba-content-right': {\r\n '& .preview-container': {\r\n border: '1px solid #C8C8C8',\r\n padding: '15px',\r\n '& .title': {\r\n textAlign: 'center',\r\n fontSize: detaultFontSize,\r\n fontWeight: 'bold',\r\n },\r\n '& .carousel-control': {\r\n backgroundColor: '#fff',\r\n color: '#0078d4',\r\n textAlign: 'right',\r\n textShadow: 'none',\r\n bottom: '23px',\r\n right: '15px',\r\n top: 'auto',\r\n left: 'auto',\r\n margin: 0,\r\n width: 'auto',\r\n height: 'auto',\r\n '&:focus,&:hover,&:active': {\r\n color: '#0078d4',\r\n },\r\n '&>div': {\r\n width: '16px',\r\n height: '16px',\r\n color: '#0078d4',\r\n outline: 'none',\r\n display: 'inline-block',\r\n },\r\n '& .disabled': {\r\n color: '#ccc',\r\n },\r\n '& .carousel-control__arrow-right': {\r\n '&:before': {\r\n content: '\"\\\\E76C\"',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n },\r\n },\r\n '& .carousel-control__arrow-left': {\r\n marginRight: '15px',\r\n '&:before': {\r\n content: '\"\\\\E76B\"',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n },\r\n },\r\n },\r\n '& .carousel-indicators': {\r\n bottom: '10px',\r\n margin: 0,\r\n position: 'relative',\r\n left: '35px',\r\n textAlign: 'left',\r\n '& li': {\r\n height: '8px',\r\n width: '8px',\r\n margin: '0px',\r\n marginRight: '10px!important',\r\n backgroundSize: '100%',\r\n borderRadius: '50%',\r\n border: '1px solid #605e5c',\r\n backgroundColor: '#fff',\r\n },\r\n '& .active': {\r\n backgroundColor: '#0078d4',\r\n border: 'none',\r\n },\r\n },\r\n '& .ad-preview': {\r\n backgroundColor: '#fff',\r\n paddingBottom: '15px',\r\n '& .ad-preview-bing-searchbox-icon': {\r\n marginBottom: '15px',\r\n width: '100%',\r\n },\r\n '& .ad-preview-info': {\r\n margin: '5px 35px',\r\n },\r\n },\r\n },\r\n },\r\n '& .rba-detail-estvalue': {\r\n fontSize: '28px',\r\n lineHeight: '36px',\r\n fontWeight: 'bold',\r\n },\r\n '& .rba-detail-desc-top': {\r\n color: '#888888',\r\n fontSize: '12px',\r\n },\r\n },\r\n '& .block': {\r\n display: 'block',\r\n },\r\n '& .inline-block': {\r\n display: 'inline-block',\r\n },\r\n },\r\n});\r\n\r\nexport const newAdsStyle = ({ palette }) => ({\r\n '& .hide-overflow': {\r\n overflow: 'hidden',\r\n },\r\n\r\n '& .recommendation-new-ads-inline-view': {\r\n ...adEditorOverrideStyle({ palette }),\r\n\r\n margin: '10px 10px 10px 0px',\r\n\r\n '& .new-ads-preview': {\r\n padding: 30,\r\n },\r\n\r\n '& .action-panel': {\r\n '& .btn-primary': {\r\n marginRight: '8px',\r\n marginBottom: '16px',\r\n },\r\n '& .btn-default': {\r\n marginRight: '16px',\r\n },\r\n },\r\n },\r\n});\r\n\r\nexport const dynamicSearchAdsStyle = ({ palette, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '& .recommendation-dynamic-search-ads-inline-view': {\r\n ...crudAdStyle({ palette }),\r\n ...alertOverrideStyle({ palette }),\r\n ...adEditorOverrideStyle({ palette }),\r\n ...adCustomizersStyle({ palette, iconFontFamily }),\r\n ...locationMapStyle({ palette }),\r\n\r\n margin: '10px 10px 10px 0px',\r\n overflow: 'hidden',\r\n position: 'relative',\r\n\r\n // Disable some fields in inline editor\r\n '& .location-target-physical-intent': {\r\n display: 'none',\r\n },\r\n\r\n '& .budget': {\r\n display: 'none',\r\n },\r\n\r\n '& .ads-preview-label': {\r\n display: 'none',\r\n },\r\n\r\n // Layout preview items\r\n '& .description-header': {\r\n marginBottom: '-40px',\r\n },\r\n\r\n '& .preview-label': {\r\n fontSize: '14px',\r\n fontWeight: 600,\r\n },\r\n\r\n '& .preview-search-examples-label': {\r\n marginBottom: '15px',\r\n },\r\n\r\n '& .preview-search-examples': {\r\n marginBottom: '20px',\r\n width: '600px',\r\n },\r\n\r\n '& .search-examples-container': {\r\n position: 'absolute',\r\n left: '55%',\r\n top: '90px',\r\n },\r\n\r\n '& .preview-container': {\r\n marginTop: '10px',\r\n },\r\n\r\n // Layout fields\r\n '& .adgroupEditor-container': {\r\n marginTop: '30px',\r\n },\r\n\r\n '& .adEditor-container': {\r\n marginTop: '40px',\r\n },\r\n\r\n '& .website-language-setting': {\r\n marginBottom: '20px',\r\n },\r\n\r\n '& .col-sm-3.form-control-static': {\r\n marginLeft: '10px',\r\n },\r\n\r\n '& .input-group .form-control': {\r\n zIndex: 0,\r\n },\r\n\r\n // Adjust style for shared components\r\n '& .location-manage .location-manage-box': {\r\n display: 'flex',\r\n\r\n '& .location-popup-editor .form-group .col-sm-12': {\r\n padding: '10px, 5px',\r\n marginBottom: 5,\r\n },\r\n\r\n '& tbody': {\r\n '& tr:hover': {\r\n background: 'none',\r\n },\r\n\r\n '& td': {\r\n border: 'none !important',\r\n },\r\n\r\n '& td:first-child': {\r\n paddingLeft: 0,\r\n },\r\n },\r\n },\r\n\r\n '& .location-target-grid': {\r\n paddingLeft: '0px',\r\n },\r\n\r\n '& .MicrosoftMap div': {\r\n zIndex: '0 !important',\r\n },\r\n\r\n '& .col-sm-4 .control-label': {\r\n display: 'inline-block',\r\n },\r\n\r\n '& .shared-budget-switch-editor-radio': {\r\n paddingTop: '0px',\r\n paddingLeft: '0px',\r\n minHeight: '0px !important',\r\n },\r\n\r\n '& .recommendation-dynamic-search-ads-inline-view': {\r\n maxHeight: '800px',\r\n },\r\n\r\n '& .bidding-strategy-container .col-sm-2': {\r\n paddingRight: '0px',\r\n },\r\n\r\n '& .btn-primary': {\r\n marginRight: '8px',\r\n },\r\n },\r\n});\r\n","import { extend } from 'underscore';\r\nimport { convertToLocalStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport { budgetStyle } from './budget';\r\nimport { repairKeywordsStyle } from './repair-keywords';\r\nimport { getAdExtensionStyle } from './ad-extension';\r\nimport { getAdExtensionEditorStyles } from './ad-extension-editor';\r\nimport { getReallocateBudgetStyle } from './reallocate-budget';\r\nimport { getSetupConvTrackingStyle } from './setup-conv-tracking';\r\nimport { getFixConversionGoalSettingStyle } from './fix-conversion-goal-setting';\r\nimport { getCreateConversionGoalStyle } from './create-conversion-goal';\r\nimport {\r\n newAdsStyle,\r\n dynamicSearchAdsStyle,\r\n getFixAdDestinationStyle,\r\n} from './ads';\r\n\r\nexport const getInlineViewStyles = (_, { palette = {} }) => extend(\r\n budgetStyle,\r\n newAdsStyle({ palette }),\r\n dynamicSearchAdsStyle({ palette }),\r\n repairKeywordsStyle({ palette }),\r\n getAdExtensionStyle(_, { palette }),\r\n convertToLocalStyle(getAdExtensionEditorStyles({ palette })),\r\n getReallocateBudgetStyle(),\r\n getFixAdDestinationStyle({ palette }),\r\n getSetupConvTrackingStyle(),\r\n getFixConversionGoalSettingStyle({ palette }),\r\n getCreateConversionGoalStyle()\r\n);\r\n","import { crudKeywordStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nexport const repairKeywordsStyle = ({ palette }) => ({\r\n '& .recommendation-repair-keywords-inline-view': {\r\n margin: '10px 10px 10px 0px',\r\n overflow: 'hidden',\r\n ...crudKeywordStyle({ palette }),\r\n\r\n '& .create-keyword-container': {\r\n '& .add-keywords-root': {\r\n margin: 30,\r\n\r\n '& .panel-body': {\r\n '& .col-sm-4': {\r\n margin: 0,\r\n\r\n '& .parser': {\r\n position: 'relative',\r\n },\r\n },\r\n\r\n '& .row:nth-child(3)': {\r\n padding: 0,\r\n },\r\n '& .keyword-planner-inline': {\r\n '& .form-group': {\r\n margin: '0px !important ',\r\n width: '100%',\r\n\r\n '& .form-control-feedback.glyphicon': {\r\n position: 'absolute',\r\n },\r\n\r\n '& .table>thead>tr>th': {\r\n verticalAlign: 'top',\r\n textAlign: 'left',\r\n border: `1px solid ${palette.neutralLight}`,\r\n fontWeight: 'normal',\r\n },\r\n\r\n '& .pagination': {\r\n '& span': {\r\n lineHeight: 1.5,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& button': {\r\n marginLeft: 10,\r\n },\r\n },\r\n});\r\n","/* eslint-disable @typescript-eslint/no-unused-vars */\r\nexport const getAdExtensionStyle = (_, { palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '& .recommendation-inline-ad-extension-view': {\r\n width: '100%',\r\n\r\n '& .table-container table.table thead.header tr th.column-header': {\r\n borderBottomColor: '#979797',\r\n },\r\n\r\n '& .detail-opportunity': {\r\n overflow: 'hidden',\r\n },\r\n\r\n '& .col-AdExtension': {\r\n border: '1px solid #EDEBE9',\r\n wordWrap: 'break-word',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n\r\n '& .table-container colgroup.column-group col.col-Status': {\r\n width: 100,\r\n minWidth: 100,\r\n },\r\n\r\n '& .delivery-info': {\r\n '& .status-icon': {\r\n marginRight: 5,\r\n position: 'static',\r\n },\r\n '& .status-warning': {\r\n color: '#D83B01',\r\n },\r\n '& .iconba-Warning': {\r\n color: '#D83B01',\r\n },\r\n '& .status-error': {\r\n color: '#A80000',\r\n },\r\n '& .iconba-ErrorBadge': {\r\n color: '#A80000',\r\n },\r\n },\r\n\r\n '& .trigger-popup': {\r\n width: 'fit-content',\r\n cursor: 'pointer',\r\n display: 'inline',\r\n borderBottom: '1px dashed #0078D4',\r\n },\r\n\r\n '& .form-group': {\r\n padding: 0,\r\n marginBottom: 0,\r\n },\r\n\r\n '& .row': {\r\n margin: 0,\r\n },\r\n\r\n '& .panel-form': {\r\n border: 'none',\r\n boxShadow: 'none',\r\n },\r\n '& .panel-body': {\r\n padding: '0',\r\n\r\n '& h5': {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n margin: '0 0 10px 0',\r\n },\r\n },\r\n\r\n '& .extension-editor-dblist-container': {\r\n marginLeft: 2,\r\n },\r\n\r\n '& .doubleListBox': {\r\n\r\n '& .layout-columns-container ': {\r\n\r\n minHeight: 261,\r\n\r\n '& .layout-columns-element[data-bind=\"visible: features.filtering || showMaximumSelectionAlert\"]': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n\r\n '& .form-group[data-bind=\"visible: features.filtering\"]': {\r\n order: 2,\r\n },\r\n\r\n '& >div[data-bind=\"visible: showMaximumSelectionAlert\"]': {\r\n order: 1,\r\n marginBottom: 10.5,\r\n },\r\n },\r\n\r\n '& .dlb-filter-alignPlaceholder': {\r\n paddingBottom: 5,\r\n paddingLeft: 15,\r\n position: 'absolute',\r\n\r\n '& .searchbox': {\r\n width: 300,\r\n\r\n '& .form-control': {\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n borderBottom: 0,\r\n height: 48,\r\n },\r\n\r\n '& .form-control-feedback': {\r\n zIndex: 0,\r\n position: 'absolute',\r\n left: 0,\r\n lineHeight: '46px',\r\n pointerEvents: 'auto',\r\n },\r\n },\r\n },\r\n\r\n\r\n '& .layout-columns-element:nth-child(2)': {\r\n width: 300,\r\n height: 'auto',\r\n marginRight: 8,\r\n marginTop: 45,\r\n padding: 0,\r\n\r\n\r\n '& .row.form-group': {\r\n overflowY: 'auto',\r\n height: 216,\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n },\r\n\r\n '& .layout-columns-element:nth-child(3)': {\r\n width: 300,\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n marginRight: 8,\r\n padding: 0,\r\n height: 261,\r\n\r\n '& .panel-body': {\r\n height: 213,\r\n overflowY: 'auto',\r\n },\r\n '& .statusIcon': {\r\n float: 'left',\r\n marginRight: 10,\r\n },\r\n },\r\n\r\n '& .panel-heading': {\r\n padding: 0,\r\n\r\n '& .panel-title': {\r\n fontSize: 14,\r\n height: 'auto',\r\n lineHeight: '36px',\r\n padding: '0 8px',\r\n },\r\n },\r\n\r\n '& .col-sm-12': {\r\n padding: 0,\r\n },\r\n },\r\n\r\n '& .dlbItem, & .dlb-source-header, & .dlb-selected-header, & .k-loading-mask': {\r\n padding: '0 8px',\r\n },\r\n\r\n '& .dlbItem:hover': {\r\n background: '#EDEBE9',\r\n },\r\n\r\n '& .dlbItem-content': {\r\n minHeight: 36,\r\n lineHeight: '36px',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n\r\n '& .wordwrap, .itemTemplate-text, .appListItem-text': {\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n\r\n '& .type-bold': {\r\n fontWeight: 600,\r\n },\r\n },\r\n\r\n '& .dlbItem-actions': {\r\n float: 'right',\r\n marginTop: 8,\r\n '& .dlbItem-customAction': {\r\n lineHeight: 'inherit',\r\n },\r\n },\r\n\r\n '& .dlb-selectAll': {\r\n marginLeft: 5,\r\n },\r\n\r\n '& .dlb-deselectAll': {\r\n marginBottom: 10,\r\n marginRight: 8,\r\n marginLeft: 5,\r\n },\r\n\r\n '& .arrow-button.enabled': {\r\n marginLeft: 10,\r\n overflow: 'visible !important',\r\n textDecoration: 'none !important',\r\n background: 'none !important',\r\n fontFamily: iconFontFamily,\r\n cursor: 'pointer',\r\n },\r\n\r\n '& .arrow-button.enabled:before': {\r\n content: '\"\\\\E710\"',\r\n },\r\n\r\n '& .arrow-button.remove': {\r\n marginRight: 10,\r\n marginTop: 8,\r\n float: 'right',\r\n fontFamily: iconFontFamily,\r\n padding: 0,\r\n },\r\n\r\n '& .arrow-button.remove:before': {\r\n content: '\"\\\\E738\"',\r\n },\r\n\r\n '& .arrow-button.remove+a': {\r\n width: 'fit-content',\r\n padding: 0,\r\n },\r\n\r\n '& .itemTemplate-text': {\r\n '& li': {\r\n height: 32,\r\n lineHeight: '32px',\r\n\r\n '& a': {\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n },\r\n\r\n\r\n '& .pager': {\r\n height: 'auto',\r\n\r\n '& .pager-page': {\r\n float: 'right',\r\n\r\n '& span': {\r\n marginLeft: 6,\r\n verticalAlign: 'baseline',\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .create-link-Container': {\r\n marginLeft: 2,\r\n marginTop: 10,\r\n },\r\n\r\n '& .save-bar': {\r\n marginTop: 10,\r\n marginBottom: 10,\r\n borderTop: `1px solid ${palette.neutralLight}`,\r\n },\r\n\r\n '& .create-extension': {\r\n padding: '8px 0',\r\n\r\n '& .glyphicon-plus': {\r\n marginRight: 12,\r\n verticalAlign: 'inherit',\r\n },\r\n },\r\n\r\n '& #selector-control-container': {\r\n width: '70%',\r\n },\r\n\r\n // estimation\r\n '& .panel-title': {\r\n '& span': {\r\n color: '#444444 !important',\r\n },\r\n },\r\n '& .ad-extension-detail-actions': {\r\n float: 'right',\r\n '& .btn-primary': {\r\n marginRight: '8px',\r\n marginBottom: '16px',\r\n },\r\n '& .btn-default': {\r\n marginRight: '16px',\r\n },\r\n },\r\n '& .ad-extension-opportunity-hint.form-group': {\r\n marginLeft: 3,\r\n marginTop: 18,\r\n '& div': {\r\n color: '#333333',\r\n },\r\n },\r\n '& .ad-extension-detail-overview-item': {\r\n position: 'relative',\r\n float: 'left',\r\n width: 134,\r\n paddingTop: '16px',\r\n height: 100,\r\n background: '#fff',\r\n marginRight: 36,\r\n '& .ad-extension-detail-desc-top': {\r\n fontSize: 12,\r\n lineHeight: '1.4',\r\n color: '#797775',\r\n },\r\n '& .ad-extension-detail-desc-middle': {\r\n paddingTop: 5,\r\n paddingBottom: 5,\r\n fontSize: 28,\r\n fontWeight: 'bold',\r\n lineHeight: '1.2',\r\n color: '#107C10',\r\n '& .increase-symbol': {\r\n bottom: 1,\r\n position: 'relative',\r\n fontWeight: 'bolder',\r\n color: '#008272',\r\n },\r\n '&[type=\\'negative\\']': {\r\n color: '#333333 !important',\r\n },\r\n },\r\n '& .ad-extension-detail-desc-bottom': {\r\n fontSize: 12,\r\n color: '#797775',\r\n lineHeight: '1.4',\r\n },\r\n },\r\n '& .ad-extension-detail-overview-item-cpc': {\r\n position: 'relative',\r\n float: 'left',\r\n width: 310,\r\n paddingTop: '16px',\r\n height: 100,\r\n background: '#fff',\r\n marginRight: 36,\r\n '& .ad-extension-detail-desc-top': {\r\n fontSize: 12,\r\n lineHeight: '1.4',\r\n color: '#797775',\r\n },\r\n '& .ad-extension-detail-desc-middle': {\r\n paddingTop: 5,\r\n paddingBottom: 5,\r\n fontSize: 28,\r\n fontWeight: 'bold',\r\n lineHeight: '1.2',\r\n color: '#107C10',\r\n '&[type=\\'negative\\']': {\r\n color: '#333333 !important',\r\n },\r\n },\r\n '& .ad-extension-detail-desc-bottom': {\r\n fontSize: 12,\r\n color: '#797775',\r\n lineHeight: '1.4',\r\n },\r\n '& a': {\r\n color: '#404040',\r\n position: 'relative',\r\n marginLeft: 5,\r\n top: 2,\r\n float: 'left',\r\n },\r\n '& h5, & .cpcIncreaseText': {\r\n float: 'left',\r\n },\r\n },\r\n '& .ad-extension-est': {\r\n marginTop: 36,\r\n },\r\n // popup dialog\r\n '& .tipClick': {\r\n display: 'block',\r\n position: 'relative',\r\n '& > a:focus + .tooltipT': {\r\n display: 'block!important',\r\n },\r\n },\r\n '& .tooltipT': {\r\n display: 'none',\r\n position: 'absolute',\r\n background: '#fff',\r\n M: '0 0 6px 1px #666666',\r\n W: '0 0 6px 1px #666666',\r\n boxShadow: '0 0 6px 1px #666666',\r\n border: 'solid #FFFFFF',\r\n color: '#636363',\r\n padding: '2px 2px 2px 2px',\r\n fontFamily: 'Arial',\r\n fontSize: 11,\r\n textAlign: 'left',\r\n fallbacks: [\r\n {\r\n textAlign: 'center',\r\n },\r\n ],\r\n top: -6,\r\n left: 200,\r\n right: -320,\r\n zIndex: '10',\r\n maxWidth: 300,\r\n '& p': {\r\n margin: 10,\r\n },\r\n '& span': {\r\n position: 'absolute',\r\n top: 10,\r\n right: 10,\r\n fontSize: 0,\r\n lineHeight: '1',\r\n '& a': {\r\n textDecoration: 'none',\r\n color: '#00529B',\r\n },\r\n '&:focus': {\r\n '& .tooltipT': {\r\n display: 'none',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","import {\r\n extensionEditorStyles,\r\n messageBarStyle,\r\n searchboxStyle,\r\n selectElementStyle,\r\n scrollbarStyle,\r\n convertToGlobalStyle\r\n} from '@bingads-webui-campaign-react/common-styles';\r\n\r\nexport const getAdExtensionEditorStyles = ({ palette = {} }) => ({\r\n ...extensionEditorStyles({ palette }),\r\n ...messageBarStyle({ palette }),\r\n ...convertToGlobalStyle([searchboxStyle({ palette }), selectElementStyle({ palette })]),\r\n ...scrollbarStyle({ palette }),\r\n});\r\n","const detaultFontSize = '14px';\r\nexport const getSetupConvTrackingStyle = () => ({\r\n '& .recommendation-setup-conversion-tracking': {\r\n fontFamily: 'Segoe UI',\r\n fontStyle: 'normal',\r\n fontSize: detaultFontSize,\r\n lineHeight: '20px',\r\n color: '#333333',\r\n minWidth: '1020px',\r\n padding: '16px 0',\r\n '& .row': {\r\n marginLeft: 0,\r\n marginRight: 0,\r\n '& .col-sm-4': {\r\n padding: 0,\r\n },\r\n },\r\n '& .rba-detail-actions': {\r\n textAlign: 'right',\r\n marginTop: '24px',\r\n '& .btn-primary': {\r\n marginRight: '8px',\r\n marginBottom: '16px',\r\n },\r\n '& .btn-default': {\r\n marginRight: '16px',\r\n },\r\n },\r\n '& .padding-zero': {\r\n padding: '0!important',\r\n },\r\n '& .block': {\r\n display: 'block',\r\n },\r\n '& .inline-block': {\r\n display: 'inline-block',\r\n },\r\n '& .setup-conv-tracking-todo': {\r\n display: 'inline-block',\r\n width: '455px',\r\n paddingRight: '16px',\r\n marginRight: '120px',\r\n '& .step-title': {\r\n fontWeight: 'normal',\r\n margin: '0 0 8px',\r\n },\r\n },\r\n '& .setup-conv-tracking-performance': {\r\n display: 'inline-block',\r\n padding: '16px',\r\n width: '438px',\r\n border: '1px solid #E1DFDD',\r\n verticalAlign: 'top',\r\n },\r\n },\r\n});\r\n","export const getFixConversionGoalSettingStyle = ({ palette }) => ({\r\n '& .hide-overflow': {\r\n overflow: 'hidden',\r\n },\r\n\r\n '& .recommendation-inline-fix-conversion-goal-setting-view': {\r\n margin: '10px 10px 10px 0px',\r\n\r\n '& .title': {\r\n fontSize: 14,\r\n marginBottom: 16,\r\n },\r\n\r\n '& .estimation': {\r\n fontSize: 14,\r\n marginTop: 4,\r\n marginLeft: 16,\r\n },\r\n\r\n '& .main-content': {\r\n '& .goal-setting-current': {\r\n display: 'table-cell',\r\n fontSize: '14px',\r\n verticalAlign: 'top',\r\n width: '400px',\r\n '& .grid-column-goal-setting-current': {\r\n padding: '16px 16px 16px 16px',\r\n background: '#fff',\r\n border: 'solid 1px #dddddd',\r\n display: 'inline-block',\r\n width: '100%',\r\n '& .goal-setting-container': {\r\n margin: '0px 16px 8px 16px',\r\n '& .goal-setting-warning': {\r\n cursor: 'pointer',\r\n display: 'inline-block',\r\n color: '#A80000',\r\n '& .cell-with-popove': {\r\n borderBottom: {\r\n width: 1,\r\n style: 'dashed',\r\n color: palette.themePrimary,\r\n },\r\n },\r\n },\r\n },\r\n '& .current-setting-name': {\r\n color: '#A80000',\r\n },\r\n },\r\n '& .subtitle': {\r\n fontSize: 14,\r\n fontWeight: 600,\r\n marginBottom: 4,\r\n },\r\n },\r\n\r\n '& .goal-setting-arrow': {\r\n display: 'table-cell',\r\n verticalAlign: 'middle',\r\n padding: '0px 24px 0px 24px',\r\n textAlign: 'center',\r\n },\r\n\r\n '& .goal-setting-suggested': {\r\n display: 'table-cell',\r\n fontSize: '14px',\r\n verticalAlign: 'top',\r\n width: '600px',\r\n '& .grid-column-goal-setting-suggested': {\r\n padding: '16px 16px 16px 16px',\r\n background: '#fff',\r\n border: 'solid 1px #dddddd',\r\n display: 'inline-block',\r\n width: '100%',\r\n '& .suggested-goal-setting-container': {\r\n margin: '0px 16px 8px 16px',\r\n '& .inactive': {\r\n color: '#a19f9d',\r\n },\r\n '& .control-label': {\r\n width: '100%',\r\n },\r\n '& .error': {\r\n color: '#A80000',\r\n fontSize: '14px',\r\n },\r\n '& .error-bottom': {\r\n color: '#A80000',\r\n fontSize: '14px',\r\n marginTop: '10px',\r\n },\r\n },\r\n '& .suggested-setting-name': {\r\n color: '#107C10',\r\n },\r\n '& .suggested.same-goal-value.not-assign-goal-value.title': {\r\n fontWeight: 600,\r\n },\r\n '& .suggested.same-goal-value.not-assign-goal-value.input-container': {\r\n display: 'flex',\r\n '& input': {\r\n width: 131,\r\n marginTop: 24,\r\n marginRight: 16,\r\n },\r\n '& .currency': {\r\n marginTop: 28,\r\n },\r\n },\r\n '& .suggested.various-goal-value.link': {\r\n color: palette.themePrimary,\r\n cursor: 'pointer',\r\n },\r\n },\r\n '& .subtitle': {\r\n fontSize: 14,\r\n fontWeight: 600,\r\n marginBottom: 4,\r\n },\r\n },\r\n },\r\n\r\n '& .action-panel': {\r\n '& .btn-primary': {\r\n marginRight: '8px',\r\n marginBottom: '16px',\r\n },\r\n '& .btn-default': {\r\n marginRight: '16px',\r\n },\r\n },\r\n },\r\n});\r\n","export const getCreateConversionGoalStyle = () => ({\r\n '& .hide-overflow': {\r\n overflow: 'hidden',\r\n },\r\n\r\n '& .recommendation-inline-create-conversion-goal-view': {\r\n margin: '10px 10px 10px 0px',\r\n\r\n '& .create-conversion-goal-edit-content': {\r\n '& .ms-Dropdown-title': {\r\n lineHeight: '30px !important',\r\n },\r\n '& .ms-Dropdown-caretDownWrapper': {\r\n lineHeight: '30px !important',\r\n },\r\n },\r\n\r\n '& .create-conversion-goal-view-content': {\r\n display: 'flex',\r\n padding: '16px 24px',\r\n flexFlow: 'column',\r\n borderTop: '1px solid #edebe9',\r\n '& .memo-row': {\r\n color: '#979797',\r\n fontSize: '12px',\r\n marginTop: '10px',\r\n },\r\n '& .view-content-row': {\r\n color: '#323130',\r\n fontSize: '14px',\r\n marginTop: '10px',\r\n },\r\n },\r\n\r\n '& .action-panel': {\r\n '& .btn-primary': {\r\n marginRight: '8px',\r\n marginBottom: '16px',\r\n },\r\n '& .btn-default': {\r\n marginRight: '16px',\r\n },\r\n },\r\n },\r\n});\r\n","import _ from 'underscore';\r\nimport { crudAdStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport { getInlineViewStyles } from './inline-view/index';\r\n\r\nimport CircleSolidSmall from '../../media/CircleSolidSmall.svg';\r\nimport DiamondSolidSmall from '../../media/DiamondSolidSmall.svg';\r\nimport TriangleDownSolidSmall from '../../media/TriangleDownSolidSmall.svg';\r\nimport TriangleUpSolidSmall from '../../media/TriangleUpSolidSmall.svg';\r\nimport SquareSolidSmall from '../../media/SquareSolidSmall.svg';\r\nimport SquareSolidSmallSecondary from '../../media/SquareSolidSmallSecondary.svg';\r\nimport CircleSolidSmallSecondary from '../../media/CircleSolidSmallSecondary.svg';\r\nimport DiamondSolidSmallSecondary from '../../media/DiamondSolidSmallSecondary.svg';\r\nimport TriangleDownSolidSmallSecondary from '../../media/TriangleDownSolidSmallSecondary.svg';\r\nimport TriangleUpSolidSmallSecondary from '../../media/TriangleUpSolidSmallSecondary.svg';\r\n\r\nexport const getCustomGridStyles = ({ palette = {} }) =>\r\n ({\r\n // toolbar\r\n '& .toolbar': {\r\n '& .btn': {\r\n '& .iconba': {\r\n color: `${palette.themePrimary} !important`,\r\n },\r\n },\r\n '& .btn-navigate-back': {\r\n padding: '0 5px 0 2px',\r\n color: palette.themePrimary,\r\n border: 'none',\r\n backgroundColor: palette.white,\r\n '&:hover': {\r\n '& span': {\r\n color: `${palette.themeDarker} !important`,\r\n textDecorationLine: 'underline',\r\n },\r\n '& .iconba': {\r\n color: palette.themeDarker,\r\n textDecorationLine: 'none',\r\n },\r\n },\r\n },\r\n '& .reject-nav-item': {\r\n height: 56,\r\n '& .reject-masker': {\r\n position: 'absolute',\r\n width: '100%',\r\n height: '100%',\r\n display: 'none',\r\n },\r\n '&.disabled': {\r\n opacity: 0.5,\r\n '& .reject-masker': {\r\n display: 'block',\r\n },\r\n },\r\n '&.enabled:hover': {\r\n cursor: 'pointer',\r\n backgroundColor: '#f3f2f1',\r\n },\r\n '& #button-reject': {\r\n display: 'inline-block',\r\n lineHeight: '24px',\r\n paddingTop: 16,\r\n paddingLeft: 8,\r\n paddingRight: 8,\r\n paddingBottom: 16,\r\n '& .iconba': {\r\n color: '#106ebe',\r\n fontSize: 16,\r\n marginLeft: 4,\r\n marginRight: 4,\r\n },\r\n },\r\n },\r\n '& .helpbutton': {\r\n display: 'inline-block',\r\n lineHeight: '20px',\r\n paddingTop: 16,\r\n paddingRight: 8,\r\n paddingBottom: 16,\r\n },\r\n },\r\n '& .toolbar-edit': {\r\n '& .btn': {\r\n height: 56,\r\n },\r\n '& .btn.disabled,& .btn.disabled:active,& .btn[disabled],& .btn[disabled]:active': {\r\n backgroundColor: 'transparent',\r\n color: '#a19f9d',\r\n },\r\n },\r\n // notification lightbox\r\n '& .notification-container': {\r\n backgroundColor: palette.white,\r\n '& .panel': {\r\n margin: 0,\r\n padding: '16px 10px 16px 32px',\r\n '& .panel-heading': {\r\n border: 'none',\r\n fontSize: 14,\r\n fontWeight: '600',\r\n padding: '11px 24px 0 24px',\r\n backgroundColor: '#F3F2F1',\r\n },\r\n '& .panel-footer': {\r\n border: 'none',\r\n padding: '0 21px 16px 31px',\r\n backgroundColor: '#F3F2F1',\r\n '& .recommendation-alerts': {\r\n gridRow: 1,\r\n display: 'grid',\r\n paddingTop: 16,\r\n gridTemplateColumns: '25px auto',\r\n '& .status_warning': {\r\n top: 4,\r\n color: '#D83B01',\r\n },\r\n '& .status_success': {\r\n top: 4,\r\n color: '#107C10',\r\n },\r\n '& .recommendation-alert-content': {\r\n gridColumn: 2,\r\n alignSelf: 'center',\r\n },\r\n },\r\n },\r\n '& .cancel': {\r\n marginTop: 12,\r\n },\r\n },\r\n },\r\n // filter banner\r\n '& .filterBanner-container': {\r\n backgroundColor: palette.themeLighter,\r\n\r\n '& .filterBanner': {\r\n padding: '10px 24px',\r\n },\r\n },\r\n // grid content\r\n '& .recommendations-grid-view': {\r\n '& .table-container': {\r\n '& .sticky-header': {\r\n zIndex: 10,\r\n },\r\n '& thead.header': {\r\n '& .recommendation-grid-capping-row': {\r\n borderTopStyle: 'hidden',\r\n\r\n '& th': {\r\n paddingLeft: '0 !important',\r\n paddingTop: '0 !important',\r\n\r\n '& .iconba.iconba-Info': {\r\n fontSize: '16px',\r\n position: 'relative',\r\n top: '-1px',\r\n marginRight: '8px',\r\n fontWeight: '600',\r\n },\r\n\r\n '& .grid-capping-content': {\r\n lineHeight: '16px',\r\n fontSize: '12px',\r\n },\r\n },\r\n },\r\n '& tr th:nth-child(2)': {\r\n borderRight: '1px solid #EDEBE9 !important',\r\n },\r\n '& tr th': {\r\n minHeight: '47px',\r\n },\r\n },\r\n '& tbody': {\r\n '& tr.row-selected td a': {\r\n fontWeight: 'normal !important',\r\n },\r\n '& tr td:nth-child(2)': {\r\n borderRight: '1px solid #f3f2f1 !important',\r\n },\r\n '& h5': {\r\n fontWeight: 'normal',\r\n },\r\n // more tooltip\r\n '& .more-tooltip': {\r\n display: 'inline-block',\r\n position: 'relative',\r\n '& .more-link': {\r\n cursor: 'pointer',\r\n textDecoration: 'underline',\r\n '&:hover': {\r\n color: palette.themeDarker,\r\n },\r\n },\r\n '& .more-top-search-term': {\r\n color: '#0078D4',\r\n cursor: 'pointer',\r\n textDecoration: 'underline',\r\n '&:hover': {\r\n color: palette.themeDarker,\r\n },\r\n },\r\n '& .width-expander': {\r\n minWidth: 500,\r\n bottom: '0',\r\n position: 'absolute',\r\n },\r\n '& .more-tooltip-container': {\r\n display: 'none',\r\n position: 'absolute',\r\n left: '0%',\r\n zIndex: '1',\r\n border: 'solid 1px #dddddd',\r\n boxShadow: '3px 3px 4px #dddddd',\r\n background: '#fff',\r\n padding: 15,\r\n '& .title': {\r\n color: '#333333',\r\n fontSize: 14,\r\n fontWeight: '500',\r\n // lineHeight: 15,\r\n },\r\n '& .content': {\r\n color: '#333333',\r\n '& td': {\r\n fontSize: 12,\r\n },\r\n // lineHeight: 15,\r\n },\r\n '& .more-top-search-term-content': {\r\n color: '#333333',\r\n fontFamily: 'Arial',\r\n fontSize: 12,\r\n // lineHeight: 15,\r\n margin: '15px 15px 15px 15px',\r\n minWidth: 500,\r\n },\r\n '& .close-button': {\r\n color: '#333333',\r\n cursor: 'pointer',\r\n float: 'right',\r\n position: 'relative',\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n },\r\n // action buttons\r\n '& .action-panel .pull-right .btn-primary': {\r\n marginRight: 8,\r\n },\r\n // inline action column\r\n '& .inline-action-view-column': {\r\n '& .inline-action-view': {\r\n background: 'inherit',\r\n '&.btn-primary': {\r\n background: palette.blue,\r\n '&:hover': {\r\n background: palette.themeDarkAlt,\r\n },\r\n },\r\n },\r\n },\r\n '& .inline-action-edit-apply-column, & .inline-action-panel-edit-apply-column, & .inline-action-hybrid-column, & .inline-action-edit-resubmit-column, & .inline-action-image-extension-column': {\r\n '& .inline-action-apply': {\r\n marginRight: '8px',\r\n },\r\n },\r\n '& tr:hover .loadContainer': {\r\n background: '#f3f2f1 !important',\r\n },\r\n '& .row-selected .loadContainer': {\r\n background: '#EDEBE9 !important',\r\n },\r\n '& .row-selected:hover .loadContainer': {\r\n background: '#e1dfdd !important',\r\n },\r\n '& .inline-action-image-extension-column': {\r\n position: 'relative',\r\n '& .loadContainer': {\r\n background: 'white',\r\n position: 'absolute',\r\n display: 'flex',\r\n alignItems: 'center',\r\n margin: '0px',\r\n height: '35px',\r\n width: '180px',\r\n padding: '5px 75px',\r\n zIndex: '5',\r\n },\r\n },\r\n '& .loadImage': {\r\n display: 'inline-block',\r\n width: '20px !important',\r\n height: '20px !important',\r\n margin: '5px',\r\n border: '2px solid',\r\n animation: 'spinner 1s linear infinite',\r\n borderRadius: '50%',\r\n borderTopColor: '#c7e0f4',\r\n borderLeftColor: '#0078d4',\r\n borderRightColor: '#c7e0f4',\r\n borderBottomColor: '#c7e0f4',\r\n },\r\n '& .loadText': {\r\n display: 'inline-block',\r\n margin: '10px 5px',\r\n color: palette.themePrimary,\r\n fontSize: 14,\r\n },\r\n // inline action container\r\n '& .inline-action-container': {\r\n ...getInlineViewStyles(_, { palette }),\r\n fontSize: 14,\r\n\r\n '&:hover': {\r\n backgroundColor: `${palette.white} !important`,\r\n },\r\n\r\n '& ol, ul': {\r\n listStyle: 'none',\r\n paddingLeft: 0,\r\n },\r\n\r\n 'input.error, select.error, textarea.error': {\r\n border: '1px solid #A80000 !important',\r\n },\r\n\r\n '& .error': {\r\n color: '#A80000',\r\n fontSize: 12,\r\n },\r\n },\r\n // column\r\n '& .grid-column-BudgetDelta, & .grid-column-BidAdjustmentTodo, & .text-left': {\r\n '& h5': {\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n },\r\n '& .more-link': {\r\n color: '#0078D4',\r\n },\r\n '& .more-content': {\r\n marginRight: 20,\r\n '& td': {\r\n padding: '0',\r\n paddingBottom: 10,\r\n border: 'none',\r\n borderRight: 'none !important',\r\n '& .glyphicon-arrow-up:before': {\r\n content: '\"\\\\EE68\"',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n },\r\n '& .glyphicon-arrow-down:before': {\r\n content: '\"\\\\EE69\"',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n },\r\n },\r\n '& .gap-td': {\r\n paddingBottom: 5,\r\n },\r\n '& .left-col': {\r\n minWidth: 120,\r\n maxWidth: 200,\r\n },\r\n '& .right-col': {\r\n minWidth: 82,\r\n maxWidth: 200,\r\n paddingLeft: 15,\r\n boxSizing: 'content-box',\r\n },\r\n '& tr:last-child td': {\r\n padding: '0',\r\n },\r\n },\r\n },\r\n '& .grid-column-CampaignAdGroup': {\r\n '& .link': {\r\n color: palette.themePrimary,\r\n cursor: 'pointer',\r\n '&:hover': {\r\n color: palette.themeDarker,\r\n },\r\n },\r\n '& span.link': {\r\n textDecoration: 'underline',\r\n },\r\n '& .glyphicon-pencil': {\r\n marginRight: '8px',\r\n },\r\n },\r\n '& .suggested-ads-preview-column': {\r\n ...crudAdStyle({ palette }),\r\n '& .recommendation-suggested-ads-column': {\r\n padding: '10px 10px 10px 10px',\r\n '& .iconba.iconba-Lightbulb': {\r\n color: '#0078D4',\r\n fontSize: '12px',\r\n paddingBottom: '10px',\r\n },\r\n '& .numberOfSuggestedHeadlineDescription': {\r\n backgroundColor: 'transparent',\r\n border: 'none',\r\n color: '#0078D4',\r\n fontFamily: 'Segoe UI',\r\n fontSize: '12px',\r\n paddingLeft: '5px',\r\n },\r\n '& .recommendation-ad-preview': {\r\n width: '100%',\r\n padding: '7px 10px 7px 10px',\r\n background: '#fff',\r\n border: 'solid 1px #dddddd',\r\n },\r\n '& .recommendation-ad-start-date': {\r\n marginTop: '10px',\r\n lineHeight: '16px',\r\n fontSize: '14px',\r\n },\r\n '& .moreHint': {\r\n color: '#979797',\r\n },\r\n },\r\n },\r\n '& .suggested-mma-preview-column': {\r\n ...crudAdStyle({ palette }),\r\n '& .recommendation-suggested-ads-column': {\r\n display: 'flex',\r\n padding: '10px 10px 10px 10px',\r\n width: '100%',\r\n fontSize: '13px',\r\n minWidth: '280px',\r\n textAlign: 'left',\r\n wordBreak: 'break-word',\r\n '& .previewImage': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n '& .moreHint': {\r\n color: '#979797',\r\n },\r\n '& .previewTitleAd': {\r\n color: '#001BA0',\r\n cursor: 'pointer',\r\n fontSize: '20px',\r\n },\r\n '& .previewUrlAd': {\r\n color: '#006D21',\r\n cursor: 'pointer',\r\n fontSize: '11px',\r\n },\r\n '& .previewText': {\r\n color: '#666666',\r\n },\r\n '& img': {\r\n float: 'left',\r\n marginRight: 5,\r\n },\r\n },\r\n },\r\n '& .suggested-improve-mma-preview-column': {\r\n ...crudAdStyle({ palette }),\r\n '& .recommendation-suggested-ads-column': {\r\n display: 'flex',\r\n padding: '10px 10px 10px 10px',\r\n width: '100%',\r\n fontSize: '13px',\r\n minWidth: '280px',\r\n textAlign: 'left',\r\n wordBreak: 'break-word',\r\n flexDirection: 'column',\r\n '& .suggestedImageHeadline': {\r\n marginBottom: 10,\r\n '& .iconba.iconba-Lightbulb': {\r\n color: '#0078D4',\r\n fontSize: '12px',\r\n },\r\n '& .numberOfSuggestedImageHeadline': {\r\n backgroundColor: 'transparent',\r\n border: 'none',\r\n color: '#0078D4',\r\n fontFamily: 'Segoe UI',\r\n fontSize: '12px',\r\n paddingLeft: '5px',\r\n },\r\n },\r\n '& .previewImageContainer': {\r\n display: 'flex',\r\n width: '100%',\r\n fontSize: '13px',\r\n minWidth: '280px',\r\n textAlign: 'left',\r\n wordBreak: 'break-word',\r\n '& .previewImage': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n '& .moreHint': {\r\n color: '#979797',\r\n width: 'fit-content',\r\n },\r\n '& .previewTitleAd': {\r\n color: '#001BA0',\r\n fontSize: '20px',\r\n },\r\n '& .previewUrlAd': {\r\n color: '#006D21',\r\n cursor: 'pointer',\r\n fontSize: '11px',\r\n },\r\n '& .previewText': {\r\n color: '#666666',\r\n },\r\n '& img': {\r\n float: 'left',\r\n marginRight: 5,\r\n },\r\n },\r\n },\r\n },\r\n '& .suggested-image-extension-preview-column': {\r\n ...crudAdStyle({ palette }),\r\n '& .recommendation-suggested-ads-column': {\r\n display: 'block',\r\n padding: '10px 10px 10px 10px',\r\n width: '100%',\r\n fontFamily: 'Segoe UI',\r\n fontSize: '12px',\r\n fontStyle: 'normal',\r\n lineHeight: '19px',\r\n minWidth: '280px',\r\n textAlign: 'left',\r\n wordBreak: 'break-word',\r\n position: 'relative',\r\n '& .previewImage': {\r\n display: 'block',\r\n flexDirection: 'column',\r\n '& div': {\r\n float: 'left',\r\n height: 60,\r\n width: 114,\r\n marginRight: 5,\r\n background: '#F3F2F1',\r\n '& button': {\r\n height: 60,\r\n width: 114,\r\n border: 'unset',\r\n background: 'unset',\r\n padding: 'unset',\r\n '& span.iconba.iconba-Add': {\r\n height: 60,\r\n width: 114,\r\n padding: 21,\r\n cursor: 'pointer',\r\n color: '#0078d4',\r\n },\r\n },\r\n },\r\n },\r\n '& .previewTexts': {\r\n minHeight: 57,\r\n },\r\n '& .previewText': {\r\n color: '#605E5C',\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n minHeight: 19,\r\n },\r\n '& .noImage': {\r\n color: '#605E5C',\r\n },\r\n '& img': {\r\n height: 60,\r\n width: 114,\r\n float: 'left',\r\n marginRight: 5,\r\n },\r\n '& .loadContainer': {\r\n background: 'white',\r\n position: 'absolute',\r\n display: 'flex',\r\n alignItems: 'center',\r\n height: 60,\r\n width: 460,\r\n zIndex: '5',\r\n left: -60,\r\n paddingLeft: 80,\r\n },\r\n },\r\n },\r\n '& .grid-column-FixConversionTrackingSummary': {\r\n '& .title': {\r\n fontSize: '14px',\r\n lineHeight: '16px',\r\n marginBottom: '12px',\r\n },\r\n '& .summary-detail': {\r\n display: 'flex',\r\n '& .description': {\r\n lineHeight: '16px',\r\n fontSize: '12px',\r\n },\r\n '& .vertical-wrap': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n marginLeft: '48px',\r\n marginRight: '48px',\r\n\r\n '& .arrow': {\r\n fontSize: '24px',\r\n },\r\n },\r\n '& .wrap': {\r\n width: '100%',\r\n position: 'relative',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n '& .number': {\r\n fontSize: '28px',\r\n lineHeight: '36px',\r\n fontWeight: '600',\r\n },\r\n },\r\n },\r\n },\r\n '& .grid-column-FixConversionTrackingTodo': {\r\n '& .title': {\r\n lineHeight: '20px',\r\n fontSize: '14px',\r\n marginTop: '6px',\r\n marginBottom: '4px',\r\n fontWeight: '600',\r\n },\r\n '& .description': {\r\n lineHeight: '19px',\r\n fontSize: '14px',\r\n paddingLeft: '14px',\r\n },\r\n '& .learn_more_link': {\r\n lineHeight: '19px',\r\n fontSize: '14px',\r\n marginTop: '20px',\r\n marginBottom: '6px',\r\n },\r\n },\r\n '& .landing-page-url-column': {\r\n wordBreak: 'break-word',\r\n },\r\n '& .text-left': {\r\n overflowWrap: 'break-word',\r\n wordBreak: 'break-word',\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n },\r\n '& .text-right': {\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n '& .delta-number': {\r\n fontWeight: 600,\r\n fontSize: '18px',\r\n lineHeight: '24px',\r\n color: '#484644',\r\n },\r\n '& .delta-number.with-optimization-score': {\r\n fontSize: '12px',\r\n },\r\n '& .positive-delta': {\r\n color: '#107C10',\r\n },\r\n '& .delta-range': {\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n color: '#484644',\r\n },\r\n },\r\n },\r\n '& .grid-column-setupConversionTrackingToDo, & .grid-column-FixConversionTrackingTodo, & .column-name-setupConversionTrackingToDo, & .column-name-FixConversionTrackingTodo': {\r\n borderRight: '1px solid #EDEBE9 !important',\r\n },\r\n '& .grid-column-policy': {\r\n '& .policy-title': {\r\n fontWeight: 600,\r\n fontSize: '14px',\r\n marginBottom: '4px',\r\n },\r\n\r\n '& .policy-description': {\r\n fontSize: '12px',\r\n marginTop: '4px',\r\n },\r\n },\r\n '& .grid-column-RejectedAdsKeyword': {\r\n '& .disapproved': {\r\n marginBottom: '4px',\r\n },\r\n '& .limited-approved': {\r\n marginBottom: '8px',\r\n },\r\n '& .iconba': {\r\n position: 'relative',\r\n top: '2px',\r\n lineHeight: '16px',\r\n fontSize: '16px',\r\n marginRight: '4px',\r\n },\r\n },\r\n '& .grid-column-RejectedAdsKeyword.with-optimization-score': {\r\n '& .disapproved, .limited-approved': {\r\n fontSize: 12,\r\n },\r\n '& .iconba': {\r\n fontSize: 14,\r\n },\r\n },\r\n '& .grid-column-goal-setting': {\r\n '& .goal-setting-container': {\r\n margin: '0px 16px 8px 16px',\r\n '& .goal-setting-warning': {\r\n cursor: 'pointer',\r\n display: 'inline-block',\r\n color: '#A80000',\r\n '& .cell-with-popove': {\r\n borderBottom: {\r\n width: 1,\r\n style: 'dashed',\r\n color: palette.themePrimary,\r\n },\r\n },\r\n },\r\n '& .goal-setting-suggested': {\r\n cursor: 'pointer',\r\n display: 'inline-block',\r\n color: '#107C10',\r\n '& .cell-with-popove': {\r\n borderBottom: {\r\n width: 1,\r\n style: 'dashed',\r\n color: palette.themePrimary,\r\n },\r\n },\r\n },\r\n },\r\n '& .current-setting-title, .suggested-setting-title': {\r\n marginLeft: 16,\r\n fontWeight: '600',\r\n },\r\n '& .current-setting-name': {\r\n marginLeft: 16,\r\n color: '#A80000',\r\n },\r\n '& .suggested-setting-name': {\r\n marginLeft: 16,\r\n color: '#107C10',\r\n },\r\n '& .suggested.various-goal-value': {\r\n marginLeft: 16,\r\n fontStyle: 'oblique',\r\n },\r\n '& .current.various-goal-value, & .current.same-goal-value, & .suggested.same-goal-value.not-assign-goal-value, & .current.not-assign-goal-value': {\r\n marginLeft: 16,\r\n },\r\n },\r\n '& .grid-column-goalSetting': {\r\n '& .suggestedGoalItem': {\r\n marginBottom: 8,\r\n '& label': {\r\n display: 'inline',\r\n },\r\n },\r\n '& #clarityEventButtonText': {\r\n fontWeight: 'bold',\r\n },\r\n '& .clarityEventGoalSetting': {\r\n wordBreak: 'break-all',\r\n },\r\n },\r\n '& .grid-column-searchVolumeDelta': {\r\n fontSize: '18px !important',\r\n color: palette.green,\r\n textAlign: 'right',\r\n },\r\n '& .grid-column-searchVolumeDelta.with-optimization-score': {\r\n fontSize: '12px !important',\r\n },\r\n '& .grid-column-searchVolume': {\r\n textAlign: 'right',\r\n },\r\n '& .grid-column-searchVolume, & .grid-column-currentClick, & .grid-column-estimateSearch, & .grid-column-currentClick, & .grid-column-currentCost, & .grid-column-currentImpression, & .grid-column-numberRejectedAds, & .grid-column-numberRejectedKeywords': {\r\n '&.with-optimization-score': {\r\n fontSize: 12,\r\n },\r\n },\r\n '& .grid-column-productTargeted': {\r\n color: palette.green,\r\n },\r\n // column width\r\n '& colgroup.column-group': {\r\n '& col': {\r\n '&.col-repair': {\r\n width: '110px',\r\n minWidth: '110px',\r\n },\r\n '&.col-selection': {\r\n width: '60px',\r\n minWidth: '60px',\r\n },\r\n '&.col-SuggestedBid': {\r\n width: '100px',\r\n minWidth: '100px',\r\n },\r\n '&.col-edit': {\r\n width: '110px',\r\n minWidth: '110px',\r\n },\r\n '&.col-apply': {\r\n width: '110px',\r\n minWidth: '110px',\r\n },\r\n '&.col-applyEdit': {\r\n width: '230px',\r\n minWidth: '230px',\r\n },\r\n '&.col-applyPanelEdit': {\r\n width: '230px',\r\n minWidth: '230px',\r\n },\r\n '&.col-longText': {\r\n width: '200px',\r\n minWidth: '200px',\r\n },\r\n '&.col-middleText': {\r\n width: '150px',\r\n minWidth: '150px',\r\n },\r\n '&.col-normalText': {\r\n width: '100px',\r\n minWidth: '100px',\r\n },\r\n '&.col-shortText': {\r\n width: '80px',\r\n minWidth: '80px',\r\n },\r\n '&.col-mediumText': {\r\n width: '150px',\r\n minWidth: '150px',\r\n },\r\n '&.col-superLongText': {\r\n width: '400px',\r\n minWidth: '400px',\r\n },\r\n '&.col-numberEst, &.col-currentMatchType, &.col-matchType, &.col-searchVolume': {\r\n width: '120px',\r\n minWidth: '120px',\r\n },\r\n '&.col-number': {\r\n width: '100px',\r\n minWidth: '100px',\r\n },\r\n '&.col-shortNumber': {\r\n width: '80px',\r\n minWidth: '80px',\r\n },\r\n '&.col-keyword': {\r\n width: '250px',\r\n minWidth: '250px',\r\n },\r\n '&.col-ads-preview': {\r\n width: '430px',\r\n minWidth: '430px',\r\n },\r\n '&.rsa-col-ads-preview': {\r\n width: '430px',\r\n minWidth: '430px',\r\n },\r\n '&.col-resubmitEdit': {\r\n width: '230px',\r\n minWidth: '230px',\r\n },\r\n '&.col-searchVolumeDelta': {\r\n width: '150px',\r\n minWidth: '150px',\r\n },\r\n '&.mma-col-ads-preview': {\r\n width: '430px',\r\n minWidth: '430px',\r\n },\r\n '&.col-GoalSetting': {\r\n width: '320px',\r\n minWidth: '320px',\r\n },\r\n '&.col-GeneratedFrom': {\r\n width: '200px',\r\n minWidth: '200px',\r\n },\r\n },\r\n },\r\n '& .setup-conv-tracking-todo': {\r\n fontSize: '14px',\r\n color: '#323130',\r\n lineHeight: '20px',\r\n '& .step-title': {\r\n fontWeight: 'bold',\r\n display: 'block',\r\n margin: '8px 0',\r\n },\r\n '& .step-wrap': {\r\n position: 'relative',\r\n lineHeight: '25px',\r\n marginBottom: '12px',\r\n '& .todo-item': {\r\n position: 'relative',\r\n '&:before': {\r\n content: '\"\"',\r\n display: 'inline-block',\r\n position: 'absolute',\r\n zIndex: 0,\r\n left: '7px',\r\n top: '5px',\r\n width: 0,\r\n height: '100%',\r\n borderLeft: '2px solid #EBEBEB',\r\n },\r\n },\r\n '& .todo-item:last-child': {\r\n '&:before': {\r\n display: 'none',\r\n },\r\n },\r\n '& .step-icon': {\r\n overflow: 'visible !important',\r\n textDecoration: 'none !important',\r\n display: 'inline-block',\r\n background: '#fff',\r\n color: '#2daaf3',\r\n marginRight: '10px',\r\n position: 'relative',\r\n borderRadius: '50%',\r\n width: '16px',\r\n height: '16px',\r\n zIndex: 1,\r\n top: '2px',\r\n },\r\n '& .status-current .step-icon': {\r\n backgroundColor: '#C0DEF6',\r\n },\r\n '& .status-next .step-icon': {\r\n backgroundColor: '#fff',\r\n border: '2px solid #edebe9',\r\n },\r\n '& .status-complete': {\r\n color: '#797775',\r\n '& .step-icon': {\r\n '&:before': {\r\n content: '\"\\\\EC61\"',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n display: 'inline-block',\r\n fontWeight: 'normal',\r\n fontStyle: 'normal',\r\n fontSize: '16px',\r\n color: '#0078d4',\r\n },\r\n },\r\n },\r\n },\r\n '& .HelpTopic': {\r\n fontSize: '12px!important',\r\n lineHeight: '16px',\r\n },\r\n },\r\n '& .setup-conv-tracking-performance': {\r\n fontSize: '14px',\r\n color: '#323130',\r\n lineHeight: '20px',\r\n '& .performance-title': {\r\n color: '#333',\r\n fontWeight: 'bold',\r\n marginBottom: '8px',\r\n },\r\n '& .rba-detail-overview-item': {\r\n marginBottom: '8px',\r\n '& .rba-detail-desc-top': {\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n },\r\n '& .rba-detail-estvalue': {\r\n fontSize: '28px',\r\n lineHeight: '36px',\r\n fontWeight: 'bold',\r\n },\r\n },\r\n '& .performance-description': {\r\n color: '#000',\r\n },\r\n },\r\n '& .grid-column-suggestedBid': {\r\n '& .auto-bidding': {\r\n marginRight: '24px',\r\n },\r\n },\r\n '& .has-feedback .form-control-feedback': {\r\n position: 'absolute',\r\n left: 0,\r\n lineHeight: '35px',\r\n },\r\n '& .excluded-location-target-grid': {\r\n paddingLeft: 0,\r\n },\r\n },\r\n },\r\n '& .search-term-chart-container': {\r\n '& .advisor-chart': {\r\n '& .chart-tooltip': {\r\n padding: '8px',\r\n boxShadow: '0 3.2px 7.2px 0 rgba(0,0,0,.132), 0 0.6px 1.8px 0 rgba(0,0,0,.108)',\r\n backgroundColor: 'rgba(255, 255, 255, 0.95)',\r\n '@supports (backdrop-filter: blur(60px))': {\r\n backdropFilter: 'blur(60px)',\r\n backgroundColor: 'rgba(255, 255, 255, 0.25)',\r\n },\r\n },\r\n '& .vnext-legend-labels-container': {\r\n paddingLeft: 10,\r\n paddingTop: 10,\r\n paddingRight: 10,\r\n paddingBottom: 5,\r\n '& ul': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n flexWrap: 'wrap',\r\n listStyle: 'none',\r\n paddingLeft: 0,\r\n '& li': {\r\n minWidth: 60,\r\n marginBottom: '2px',\r\n flex: '1 1 auto',\r\n '& .legend-label': {\r\n height: 20,\r\n paddingLeft: '15PX !important',\r\n backgroundRepeat: 'no-repeat',\r\n backgroundPosition: 'left',\r\n backgroundSize: '12px 20px',\r\n marginRight: 5,\r\n marginLeft: 5,\r\n marginTop: 1,\r\n cursor: 'pointer',\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n },\r\n\r\n '& .legend-label.disabled': {\r\n opacity: '50%',\r\n },\r\n },\r\n '& li:nth-child(1) .legend-label.column': {\r\n backgroundImage: `url(\"${CircleSolidSmall}\")`,\r\n },\r\n '& li:nth-child(2) .legend-label.column': {\r\n backgroundImage: `url(\"${DiamondSolidSmall}\")`,\r\n },\r\n '& li:nth-child(3) .legend-label.column': {\r\n backgroundImage: `url(\"${TriangleDownSolidSmall}\")`,\r\n },\r\n '& li:nth-child(4) .legend-label.column': {\r\n backgroundImage: `url(\"${TriangleUpSolidSmall}\")`,\r\n },\r\n '& li:nth-child(5) .legend-label.column': {\r\n backgroundImage: `url(\"${SquareSolidSmall}\")`,\r\n },\r\n '& li:nth-child(6) .legend-label.column': {\r\n backgroundImage: `url(\"${CircleSolidSmallSecondary}\")`,\r\n },\r\n '& li:nth-child(7) .legend-label.column': {\r\n backgroundImage: `url(\"${DiamondSolidSmallSecondary}\")`,\r\n },\r\n '& li:nth-child(8) .legend-label.column': {\r\n backgroundImage: `url(\"${TriangleDownSolidSmallSecondary}\")`,\r\n },\r\n '& li:nth-child(9) .legend-label.column': {\r\n backgroundImage: `url(\"${TriangleUpSolidSmallSecondary}\")`,\r\n },\r\n '& li:nth-child(10) .legend-label.column': {\r\n backgroundImage: `url(\"${SquareSolidSmallSecondary}\")`,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n });\r\n","import _ from 'underscore';\r\n\r\nconst defaultProtocols = [{\r\n value: 'https',\r\n text: 'https://',\r\n}, {\r\n value: 'http',\r\n text: 'http://',\r\n}];\r\n\r\nexport const buildUrl = ({ protocol, url, protocols = defaultProtocols }) => {\r\n const prefix = (_.findWhere(\r\n protocols,\r\n { value: protocol }\r\n )).text;\r\n return `${prefix}${url}`;\r\n};\r\n","export const parseUrl = (url) => {\r\n const urlRegex = new RegExp('^(?:\\\\s*(?:(\\\\S+):\\\\/\\\\/)?(?:(.+))?)?', 'i');\r\n const regexResult = urlRegex.exec(url);\r\n return { protocol: regexResult && regexResult[1], url: regexResult && regexResult[2] };\r\n};\r\n","import { repeat } from 'underscore.string';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useState, memo } from 'react';\r\n\r\nimport { AdapterFactory, withValidation, withError } from '@bingads-webui-react/validation';\r\nimport { Input } from '@bingads-webui-react/primitive';\r\n\r\nconst randomPasswordMask = () => repeat('*', 4 + (Math.random() * 5));\r\n\r\nexport const PasswordEditor = memo((props) => {\r\n const [isFakePassword, setIsFakePassword] = useState(props.hasPassword && !props.password);\r\n const [fakePassword] = useState(randomPasswordMask());\r\n const [password, setPassword] =\r\n useState(isFakePassword ? fakePassword : (props.password || ''));\r\n\r\n const onPasswordChange = ({ target: { value } }) => {\r\n setIsFakePassword(false);\r\n setPassword(value);\r\n props.onChange(value);\r\n };\r\n\r\n const onPasswordFocus = () => {\r\n if (isFakePassword) {\r\n setPassword('');\r\n }\r\n };\r\n\r\n const onPasswordBlur = () => {\r\n if (isFakePassword) {\r\n setPassword(fakePassword);\r\n }\r\n };\r\n\r\n return (\r\n \r\n );\r\n});\r\n\r\nPasswordEditor.propTypes = {\r\n id: PropTypes.string,\r\n password: PropTypes.string,\r\n hasPassword: PropTypes.bool,\r\n onChange: PropTypes.func.isRequired,\r\n};\r\n\r\nPasswordEditor.defaultProps = {\r\n id: undefined,\r\n password: '',\r\n hasPassword: false,\r\n};\r\n\r\n\r\nconst PasswordEditorValidationAdapter = AdapterFactory({\r\n valueToInject: 'password',\r\n});\r\n\r\nexport const PasswordEditorWithValidation = withError(withValidation(\r\n PasswordEditor,\r\n PasswordEditorValidationAdapter\r\n));\r\n","import _ from 'underscore';\r\n\r\nimport { toLegacyTimeZone, fromLegacyTimeZone } from '@bingads-webui-universal/time-zone-converter';\r\n\r\nimport { timeZoneOffset } from './humanize-date';\r\n\r\nexport function getTimeZoneOptions(s$Campaign, i18n) {\r\n return _.chain(s$Campaign.properties.TimeZone.enum)\r\n .map(timeZone =>\r\n ({\r\n index: String(toLegacyTimeZone(timeZone)),\r\n text: i18n.getString(`TimeZone_${timeZone}`).replace(/\\{0\\}\\s*\\{1\\}\\s*/, ''),\r\n value: timeZone,\r\n }))\r\n .sortBy(option => timeZoneOffset(option.text))\r\n .value();\r\n}\r\n\r\nexport function getTimeZoneText(i18n, timeZoneId) {\r\n const text = i18n.getString(`TimeZone_${fromLegacyTimeZone(Number(timeZoneId))}`);\r\n return _.isString(text) ? text.replace(/\\{0\\}\\s*\\{1\\}\\s*/, '') : null;\r\n}\r\n","// taken from component/timezonemapper/index\r\nexport function timeZoneOffset(timeZone) {\r\n const re = /^\\(GMT([+-]\\d{1,2}):(\\d{1,2})\\).*$/;\r\n return parseInt(timeZone.replace(re, '$1.$2'), 10) || 0;\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { Alert } from '@bingads-webui-react/alert';\r\n\r\nexport function UpdateNowProgress({\r\n i18n, updateNowQueuedText, progressPercentage, isForVNext,\r\n}) {\r\n return (\r\n {updateNowQueuedText}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {!isForVNext && i18n.getString('Feeds_FeedUpload_PercentageFormatter', {\r\n percentage: progressPercentage.toFixed(0),\r\n })}\r\n
    \r\n
    \r\n {isForVNext && ( {i18n.getString('Feeds_FeedUpload_PercentageFormatter', { percentage: progressPercentage.toFixed(0) })} )}\r\n
    \r\n \r\n )}\r\n level=\"Warning\"\r\n dismissible={false}\r\n icon={()}\r\n />);\r\n}\r\n\r\nUpdateNowProgress.propTypes = {\r\n updateNowQueuedText: PropTypes.string.isRequired,\r\n progressPercentage: PropTypes.number.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n isForVNext: PropTypes.bool,\r\n};\r\n\r\nUpdateNowProgress.defaultProps = {\r\n isForVNext: false,\r\n};\r\n","import _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport classnames from 'classnames';\r\n\r\nimport { AdapterFactory, withValidation, withError } from '@bingads-webui-react/validation';\r\nimport { Input, Select } from '@bingads-webui-react/primitive';\r\n\r\nimport { parseUrl } from './parse-url';\r\nimport { buildUrl } from './build-url';\r\n\r\nconst protocols = [{\r\n value: 'https',\r\n text: 'https://',\r\n}, {\r\n value: 'http',\r\n text: 'http://',\r\n}];\r\n\r\nexport class UrlEditor extends React.Component {\r\n static propTypes = {\r\n id: PropTypes.string,\r\n url: PropTypes.string,\r\n onChange: PropTypes.func.isRequired,\r\n protocols: PropTypes.arrayOf(PropTypes.shape({\r\n value: PropTypes.string.isRequired,\r\n text: PropTypes.string.isRequired,\r\n })),\r\n ariaLabelledby: PropTypes.string,\r\n i18n: PropTypes.shape({ getString: PropTypes.func }),\r\n };\r\n\r\n static defaultProps = {\r\n id: undefined,\r\n url: '',\r\n protocols,\r\n ariaLabelledby: '',\r\n i18n: _.noop,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n let { protocol, url } = parseUrl(props.url);\r\n protocol = protocol || _.first(props.protocols).value;\r\n url = url || '';\r\n this.state = { protocol, url };\r\n }\r\n\r\n onUrlChange = (url) => {\r\n this.props.onChange(url);\r\n }\r\n\r\n onUrlPartChange = (e) => {\r\n const rawInput = e.target.value;\r\n let { protocol, url } = parseUrl(rawInput);\r\n if (!protocol || (protocol && !_.findWhere(this.props.protocols, { value: protocol }))) {\r\n // ignoring not supported protocols\r\n // and keeping URL input's value\r\n protocol = null;\r\n url = rawInput;\r\n }\r\n\r\n const newUrl = url || '';\r\n const newProtocol = protocol || this.state.protocol;\r\n\r\n const fullUrl = url ? this.buildFullUrl({\r\n protocol: newProtocol,\r\n url: newUrl.trim(),\r\n }) : '';\r\n\r\n this.setState({ url: newUrl, protocol: newProtocol });\r\n this.onUrlChange(fullUrl);\r\n }\r\n\r\n onProtocolPartChange = (e) => {\r\n e.stopPropagation();\r\n const protocol = e.target.value;\r\n const url = this.state.url.trim();\r\n\r\n const fullUrl = url ? this.buildFullUrl({\r\n protocol,\r\n url,\r\n }) : '';\r\n\r\n this.setState({ protocol });\r\n this.onUrlChange(fullUrl);\r\n }\r\n\r\n buildFullUrl = ({ protocol, url }) => buildUrl({ protocol, url, protocols: this.props.protocols })\r\n\r\n render() {\r\n const { protocol, url } = this.state;\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n {this.props.protocols.map(option => (\r\n \r\n ))}\r\n \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst UrlEditorValidationAdapter = AdapterFactory({\r\n valueToInject: 'url',\r\n});\r\n\r\nexport const UrlEditorWithValidation = withError(withValidation(\r\n UrlEditor,\r\n UrlEditorValidationAdapter\r\n));\r\n","import _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport classnames from 'classnames';\r\n\r\nimport { AdapterFactory, withValidation, withError } from '@bingads-webui-react/validation';\r\nimport { Dropdown, TextField } from '@bingads-webui-react/fabric-control';\r\n\r\nimport { parseUrl } from './parse-url';\r\nimport { buildUrl } from './build-url';\r\n\r\nconst protocols = [{\r\n value: 'https',\r\n text: 'https://',\r\n}, {\r\n value: 'http',\r\n text: 'http://',\r\n}];\r\n\r\nconst textFieldStyle = {\r\n root: {\r\n width: 300,\r\n display: 'inline-block',\r\n paddingLeft: 10,\r\n },\r\n};\r\n\r\nconst protocolDropdownStyle = {\r\n root: {\r\n display: 'inline-block',\r\n selectors: {\r\n '& .ms-Dropdown-title': {\r\n 'margin-bottom': '-10px',\r\n },\r\n },\r\n marginRight: 15,\r\n },\r\n};\r\n\r\nexport class FluentUrlEditor extends React.Component {\r\n static propTypes = {\r\n id: PropTypes.string,\r\n url: PropTypes.string,\r\n onChange: PropTypes.func.isRequired,\r\n protocols: PropTypes.arrayOf(PropTypes.shape({\r\n value: PropTypes.string.isRequired,\r\n text: PropTypes.string.isRequired,\r\n })),\r\n ariaLabelledby: PropTypes.string,\r\n i18n: PropTypes.shape({ getString: PropTypes.func }),\r\n };\r\n\r\n static defaultProps = {\r\n id: undefined,\r\n url: '',\r\n protocols,\r\n ariaLabelledby: '',\r\n i18n: _.noop,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n let { protocol, url } = parseUrl(props.url);\r\n protocol = protocol || _.first(props.protocols).value;\r\n url = url || '';\r\n this.state = { protocol, url };\r\n }\r\n\r\n onUrlChange = (url) => {\r\n this.props.onChange(url);\r\n }\r\n\r\n onUrlPartChange = (e, rawInput) => {\r\n let { protocol, url } = parseUrl(rawInput);\r\n if (!protocol || (protocol && !_.findWhere(this.props.protocols, { value: protocol }))) {\r\n // ignoring not supported protocols\r\n // and keeping URL input's value\r\n protocol = null;\r\n url = rawInput;\r\n }\r\n\r\n const newUrl = url || '';\r\n const newProtocol = protocol || this.state.protocol;\r\n\r\n const fullUrl = url ? this.buildFullUrl({\r\n protocol: newProtocol,\r\n url: newUrl.trim(),\r\n }) : '';\r\n\r\n this.setState({ url: newUrl, protocol: newProtocol });\r\n this.onUrlChange(fullUrl);\r\n }\r\n\r\n onProtocolPartChange = (e, { key }) => {\r\n const protocol = key;\r\n const url = this.state.url.trim();\r\n\r\n const fullUrl = url ? this.buildFullUrl({\r\n protocol,\r\n url,\r\n }) : '';\r\n\r\n this.setState({ protocol });\r\n this.onUrlChange(fullUrl);\r\n }\r\n\r\n buildFullUrl = ({ protocol, url }) => buildUrl({ protocol, url, protocols: this.props.protocols })\r\n\r\n render() {\r\n const { protocol, url } = this.state;\r\n\r\n const dropdownItems = this.props.protocols.map(option => ({\r\n key: option.value,\r\n text: option.text,\r\n }));\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst FluentUrlEditorValidationAdapter = AdapterFactory({\r\n valueToInject: 'url',\r\n});\r\n\r\nexport const FluentUrlEditorWithValidation = withError(withValidation(\r\n FluentUrlEditor,\r\n FluentUrlEditorValidationAdapter\r\n));\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { LearnMoreLink } from '@bingads-webui-campaign-react/help';\r\n\r\nexport function SchedulesTabHeaderView(props) {\r\n const { i18n } = props.deps;\r\n\r\n const headerText = i18n.getString('Feeds_FeedItems_SchedulesTab_HeaderText');\r\n const learnMoreText = i18n.getString('Control_PaneHelp_LearnMore');\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nSchedulesTabHeaderView.propTypes = {\r\n deps: PropTypes.shape({\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { Button } from '@bingads-webui-react/primitive';\r\n\r\nimport { SchedulesTabHeaderView } from './schedules-tab-header-view';\r\n\r\nexport class SchedulesTabNoScheduleView extends React.PureComponent {\r\n static propTypes = {\r\n deps: PropTypes.shape({\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n enableHeader: PropTypes.bool,\r\n onCreateSchedule: PropTypes.func.isRequired,\r\n disabled: PropTypes.bool,\r\n };\r\n\r\n static defaultProps = {\r\n enableHeader: true,\r\n disabled: false,\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n const { i18n } = props.deps;\r\n\r\n this.addScheduleButtonText = i18n.getString('Feeds_FeedItems_SchedulesTab_AddScheduleButton_Text');\r\n this.onCreateClicked = this.onCreateClicked.bind(this);\r\n }\r\n\r\n onCreateClicked(event) {\r\n this.props.onCreateSchedule({ event });\r\n }\r\n\r\n render() {\r\n const { deps } = this.props;\r\n\r\n return (\r\n
    \r\n {this.props.enableHeader && }\r\n
    \r\n \r\n {this.addScheduleButtonText}\r\n \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\n\r\nimport { Button, Label, Select } from '@bingads-webui-react/primitive';\r\nimport { ErrorMessages, withError } from '@bingads-webui-react/validation';\r\nimport { Input, ValidationGroup } from '@bingads-webui-react/primitive-validation';\r\nimport { HelpIcon } from '@bingads-webui-campaign-react/help';\r\nimport { Alert } from '@bingads-webui-react/alert';\r\nimport { CronFormatter } from '@bingads-webui/cron-formatter';\r\nimport { CronFrequencyEditorWithValidation } from '@bingads-webui-campaign-react/cron-frequency-editor';\r\n\r\nimport { UrlEditorWithValidation, PasswordEditorWithValidation, parseUrl, getTimeZoneOptions, buildUrl } from './components';\r\nimport { SchedulesTabHeaderView } from './schedules-tab-header-view';\r\n\r\nconst CronFrequencyEditorWithValidationSingleLine = withError(props => (\r\n
    \r\n \r\n
    \r\n));\r\n\r\nconst isInsecureProtocol = (fullUrl) => {\r\n const { protocol } = parseUrl(fullUrl);\r\n return protocol === 'http' || protocol === 'ftp';\r\n};\r\n\r\nconst schema = {\r\n name: 'Schedule Schema',\r\n type: 'object',\r\n properties: {\r\n cron: {\r\n type: 'string',\r\n required: true,\r\n },\r\n url: {\r\n type: 'string',\r\n required: true,\r\n },\r\n username: {\r\n type: 'string',\r\n required: false,\r\n },\r\n password: {\r\n type: 'string',\r\n required: false,\r\n },\r\n },\r\n};\r\n\r\nexport class SchedulesTabScheduleEdit extends React.Component {\r\n static propTypes = {\r\n deps: PropTypes.shape({\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n enableHeader: PropTypes.bool,\r\n onSaveSchedule: PropTypes.func.isRequired,\r\n onCancelEditSchedule: PropTypes.func.isRequired,\r\n schedule: PropTypes.shape({\r\n Id: PropTypes.number,\r\n Cron: PropTypes.string,\r\n TimeZoneId: PropTypes.number,\r\n Url: PropTypes.string,\r\n Protocol: PropTypes.string,\r\n State: PropTypes.string,\r\n Username: PropTypes.string,\r\n Password: PropTypes.string,\r\n }),\r\n lastError: PropTypes.arrayOf(PropTypes.string),\r\n };\r\n\r\n static defaultProps = {\r\n enableHeader: true,\r\n schedule: undefined,\r\n lastError: [],\r\n }\r\n\r\n static getDerivedStateFromProps(props/* , state */) {\r\n return {\r\n errorMessages: props.lastError,\r\n };\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n const { i18n, timeZoneId: accountTimeZoneId, campaignSchema } = props.deps;\r\n\r\n this.timeZoneOptions = getTimeZoneOptions(campaignSchema, i18n);\r\n\r\n this.cronFormatter = new CronFormatter({ i18n });\r\n this.cronFrequencies = this.cronFormatter.getCronFrequenciesEnum();\r\n this.enabledFrequencies = [\r\n this.cronFrequencies.DAILY,\r\n this.cronFrequencies.WEEKLY,\r\n this.cronFrequencies.MONTHLY,\r\n this.cronFrequencies.EVERY_6_HOURS,\r\n this.cronFrequencies.EVERY_12_HOURS,\r\n ];\r\n\r\n this.saveScheduleButtonText = i18n.getString('Form_SaveButton');\r\n this.cancelEditScheduleButtonText = i18n.getString('Form_CancelButton');\r\n\r\n this.frequencyLabelText = i18n.getString('Feeds_FeedItems_SchedulesTab_Frequency_Label');\r\n this.frequencyHelpId = 'pop_BA_AdCustomizerFeeds_Frequency';\r\n this.timeZoneLabelText = i18n.getString('Feeds_FeedItems_SchedulesTab_TimeZone_Label');\r\n this.timeZoneHelpId = 'pop_BA_AdCustomizerFeeds_TimeZone';\r\n this.urlLabelText = i18n.getString('Feeds_FeedItems_SchedulesTab_URL_Label');\r\n this.urlHelpId = 'pop_BA_AdCustomizerFeeds_URL';\r\n this.urlInsecureProtocolWarning = i18n.getString('Feeds_FeedItems_SchedulesTab_URL_InsecureProtocolWarning');\r\n this.usernameLabelText = i18n.getString('Feeds_FeedItems_SchedulesTab_Username_Label');\r\n this.usernameHelpId = 'pop_BA_AdCustomizerFeeds_Username';\r\n this.passwordLabelText = i18n.getString('Feeds_FeedItems_SchedulesTab_Password_Label');\r\n this.passwordHelpId = 'pop_BA_AdCustomizerFeeds_Password';\r\n\r\n this.onSaveClicked = this.onSaveClicked.bind(this);\r\n this.onCancelClicked = this.onCancelClicked.bind(this);\r\n\r\n const {\r\n schedule: {\r\n Cron: cron, TimeZoneId: timeZoneId, Url: url, Protocol: protocol,\r\n } = {},\r\n lastError: errorMessages = [],\r\n } = props;\r\n\r\n this.supportedProtocols = [{\r\n value: 'https',\r\n text: 'https://',\r\n }, {\r\n value: 'http',\r\n text: 'http://',\r\n }, {\r\n value: 'sftp',\r\n text: 'sftp://',\r\n }, {\r\n value: 'ftp',\r\n text: 'ftp://',\r\n }];\r\n\r\n this.state = {\r\n url: url ? buildUrl({ url, protocol, protocols: this.supportedProtocols }) : '',\r\n cron,\r\n timeZoneId: timeZoneId || accountTimeZoneId,\r\n errorMessages,\r\n isValid: false,\r\n };\r\n\r\n const {\r\n schedule: {\r\n Username: username,\r\n } = {},\r\n } = props;\r\n this.state.username = username;\r\n this.state.clearPassword = false;\r\n this.state.passwordKey = 1;\r\n }\r\n\r\n onSaveClicked = (event) => {\r\n this.props.onSaveSchedule({ event, schedule: this.getSchedule() });\r\n this.setState({\r\n errorMessages: [],\r\n });\r\n }\r\n\r\n onCancelClicked = (event) => {\r\n this.props.onCancelEditSchedule({ event, schedule: this.props.schedule });\r\n }\r\n\r\n onUrlChange = (url) => {\r\n this.setState({ url });\r\n this.removeNonDirtyPassword();\r\n }\r\n\r\n onCronChange = (cron) => {\r\n this.setState({ cron });\r\n }\r\n\r\n onTimeZoneChange = (event) => {\r\n this.setState({ timeZoneId: parseInt(event.target.value, 10) });\r\n }\r\n\r\n onUsernameChange = (event) => {\r\n this.setState({ username: event.target.value });\r\n this.removeNonDirtyPassword();\r\n }\r\n\r\n onPasswordChange = (password) => {\r\n this.setState({ password, clearPassword: false });\r\n }\r\n\r\n onValidate = (result) => {\r\n this.setState({ isValid: result.isValid, errorMessages: [] });\r\n }\r\n\r\n getSchedule() {\r\n const { protocol, url } = parseUrl(this.state.url);\r\n const schedule = {\r\n Id: (this.props.schedule && this.props.schedule.Id) || undefined,\r\n Cron: this.state.cron,\r\n TimeZoneId: this.state.timeZoneId,\r\n Protocol: protocol,\r\n Url: url,\r\n State: (this.props.schedule && this.props.schedule.State) || undefined,\r\n };\r\n\r\n schedule.Username = this.state.username;\r\n schedule.Password = this.state.password;\r\n schedule.ClearPassword = this.state.clearPassword;\r\n\r\n return schedule;\r\n }\r\n\r\n removeNonDirtyPassword = () => {\r\n if (!this.passwordRef.state.isDirty && !this.state.clearPassword) {\r\n this.setState({ clearPassword: true, passwordKey: 2 });\r\n }\r\n }\r\n\r\n renderTimezoneOptions() {\r\n return this.timeZoneOptions.map(({ value, index, text }) =>\r\n (\r\n \r\n ));\r\n }\r\n\r\n render() {\r\n const { deps, deps: { i18n } } = this.props;\r\n const {\r\n url, cron, timeZoneId, isValid, errorMessages,\r\n } = this.state;\r\n\r\n const {\r\n username, password, clearPassword, passwordKey,\r\n } = this.state;\r\n const showInsecureProtocolWarning = isInsecureProtocol(url);\r\n\r\n return (\r\n
    \r\n {this.props.enableHeader && }\r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n {this.renderTimezoneOptions()}\r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n {showInsecureProtocolWarning ? (\r\n )}\r\n dismissible={false}\r\n />\r\n ) : null}\r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n { this.passwordRef = ref; }}\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","import _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { Button, Label } from '@bingads-webui-react/primitive';\r\nimport { HelpIcon } from '@bingads-webui-campaign-react/help';\r\nimport { CronFormatter } from '@bingads-webui/cron-formatter';\r\nimport { Alert } from '@bingads-webui-react/alert';\r\n\r\nimport { getTimeZoneText, UpdateNowProgress } from './components';\r\nimport { SchedulesTabHeaderView } from './schedules-tab-header-view';\r\n\r\nfunction getScheduleText(cronFormatter, { Cron }) {\r\n return cronFormatter.formatCronString(Cron);\r\n}\r\n\r\n// TODO: uncomment when MT starts sending the data back\r\n// function getLastUploadTimeText(/* schedule */) {\r\n// return 'TBD';\r\n// }\r\n\r\nfunction formatUrl(schedule) {\r\n return schedule.Url && schedule.Protocol ? `${schedule.Protocol}://${schedule.Url}` : '';\r\n}\r\n\r\nconst isUpdateNowQueue = updateNowTask =>\r\n (updateNowTask && updateNowTask.updateRuleId && !updateNowTask.isFinished);\r\n\r\nexport class SchedulesTabScheduleView extends React.Component {\r\n static propTypes = {\r\n deps: PropTypes.shape({\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n enableHeader: PropTypes.bool,\r\n onEditSchedule: PropTypes.func.isRequired,\r\n onPauseSchedule: PropTypes.func.isRequired,\r\n onEnableSchedule: PropTypes.func.isRequired,\r\n onUpdateNow: PropTypes.func.isRequired,\r\n onRemoveSchedule: PropTypes.func.isRequired,\r\n schedule: PropTypes.shape({\r\n Cron: PropTypes.string,\r\n TimeZoneId: PropTypes.number,\r\n Url: PropTypes.string,\r\n Protocol: PropTypes.string,\r\n State: PropTypes.string,\r\n }).isRequired,\r\n updateNowTask: PropTypes.shape({\r\n updateRuleId: PropTypes.number,\r\n rowsProcessed: PropTypes.number,\r\n totalCount: PropTypes.number,\r\n isFinished: PropTypes.bool,\r\n isFailed: PropTypes.bool,\r\n }).isRequired,\r\n updateNowTaskObservable: PropTypes.shape({\r\n subscribe: PropTypes.func,\r\n }).isRequired,\r\n lastError: PropTypes.arrayOf(PropTypes.string),\r\n isForVNext: PropTypes.bool,\r\n dsiableEdit: PropTypes.bool,\r\n };\r\n\r\n static defaultProps = {\r\n enableHeader: true,\r\n lastError: [],\r\n isForVNext: false,\r\n dsiableEdit: false,\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n const {\r\n deps, lastError: errorMessages = [], updateNowTask,\r\n } = props;\r\n const { i18n } = deps;\r\n\r\n this.cronFormatter = new CronFormatter({ i18n });\r\n\r\n this.editScheduleButtonText = i18n.getString('Feeds_FeedItems_SchedulesTab_EditScheduleButton_Text');\r\n this.pauseScheduleButtonText = i18n.getString('Feeds_FeedItems_SchedulesTab_PauseScheduleButton_Text');\r\n this.enableScheduleButtonText = i18n.getString('Feeds_FeedItems_SchedulesTab_EnableScheduleButton_Text');\r\n this.updateNowButtonText = i18n.getString('Feeds_FeedItems_SchedulesTab_UpdateNowButton_Text');\r\n this.removeScheduleButtonText = i18n.getString('Feeds_FeedItems_SchedulesTab_RemoveScheduleButton_Text');\r\n\r\n this.scheduleIsPausedText = i18n.getString('Feeds_FeedItems_SchedulesTab_Schedule_Paused_Alert_Text');\r\n this.updateNowQueuedText = i18n.getString('Feeds_FeedItems_SchedulesTab_Update_Now_Queued_Alert_Text');\r\n\r\n this.frequencyLabelText = i18n.getString('Feeds_FeedItems_SchedulesTab_Frequency_Label');\r\n this.frequencyHelpId = 'pop_BA_AdCustomizerFeeds_Frequency';\r\n this.timeZoneLabelText = i18n.getString('Feeds_FeedItems_SchedulesTab_TimeZone_Label');\r\n this.timeZoneHelpId = 'pop_BA_AdCustomizerFeeds_TimeZone';\r\n this.lastUploadTimeLabelText = i18n.getString('Feeds_FeedItems_SchedulesTab_Last_Upload_Time_Label');\r\n this.lastUploadTimeHelpId = 'pop_BA_AdCustomizerFeeds_LastUpdate';\r\n this.urlLabelText = i18n.getString('Feeds_FeedItems_SchedulesTab_URL_Label');\r\n this.urlHelpId = 'pop_BA_AdCustomizerFeeds_URL';\r\n\r\n this.state = {\r\n errorMessages,\r\n updateNowQueued: isUpdateNowQueue(updateNowTask),\r\n updateNowTask,\r\n lastError: props.lastError,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.updateNowTaskSubscription = this.props.updateNowTaskObservable.subscribe({\r\n next: (model, updateNowTask) => {\r\n this.setState({\r\n updateNowTask: _.clone(updateNowTask),\r\n updateNowQueued: isUpdateNowQueue(updateNowTask),\r\n });\r\n },\r\n });\r\n }\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n if (nextProps.lastError !== prevState.lastError) {\r\n return { errorMessages: nextProps.lastError, lastError: nextProps.lastError };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.updateNowTaskSubscription) {\r\n this.updateNowTaskSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n onEditClicked = (event) => {\r\n this.props.onEditSchedule({ event, schedule: this.props.schedule });\r\n const { updateNowTask } = this.state;\r\n this.setState({\r\n errorMessages: [],\r\n updateNowQueued: isUpdateNowQueue(updateNowTask),\r\n });\r\n }\r\n\r\n onPauseClicked = (event) => {\r\n this.props.onPauseSchedule({ event, schedule: this.props.schedule });\r\n const { updateNowTask } = this.state;\r\n this.setState({\r\n errorMessages: [],\r\n updateNowQueued: isUpdateNowQueue(updateNowTask),\r\n });\r\n }\r\n\r\n onEnableClicked = (event) => {\r\n this.props.onEnableSchedule({ event, schedule: this.props.schedule });\r\n const { updateNowTask } = this.state;\r\n this.setState({\r\n errorMessages: [],\r\n updateNowQueued: isUpdateNowQueue(updateNowTask),\r\n });\r\n }\r\n\r\n onUpdateNowClicked = (event) => {\r\n this.props.onUpdateNow({ event, schedule: this.props.schedule });\r\n this.setState({\r\n errorMessages: [],\r\n updateNowQueued: true,\r\n });\r\n }\r\n\r\n onRemoveClicked = (event) => {\r\n this.props.onRemoveSchedule({ event, schedule: this.props.schedule });\r\n const { updateNowTask } = this.state;\r\n this.setState({\r\n errorMessages: [],\r\n updateNowQueued: isUpdateNowQueue(updateNowTask),\r\n });\r\n }\r\n\r\n render() {\r\n const {\r\n deps, schedule, isForVNext, dsiableEdit,\r\n } = this.props;\r\n const { i18n } = deps;\r\n const isPaused = schedule && schedule.State !== 'Active';\r\n const hasErrors = !_.isEmpty(this.state.errorMessages);\r\n const { updateNowQueued, updateNowTask } = this.state;\r\n let progressPercentage = 0;\r\n if (updateNowTask.isFinished) {\r\n progressPercentage = 100;\r\n } else if (updateNowTask.totalCount) {\r\n progressPercentage = (updateNowTask.rowsProcessed * 100) /\r\n updateNowTask.totalCount;\r\n }\r\n const frequencyText = getScheduleText(this.cronFormatter, schedule);\r\n const timeZoneText = getTimeZoneText(i18n, schedule.TimeZoneId);\r\n // TODO: uncomment when MT starts sending the data back\r\n // const lastUploadTimeText = getLastUploadTimeText(schedule);\r\n const url = formatUrl(schedule);\r\n\r\n return (\r\n
    \r\n {this.props.enableHeader && }\r\n {(isPaused || hasErrors || updateNowQueued) && (\r\n
    \r\n {hasErrors && (\r\n
    \r\n {this.state.errorMessages.map(errorMessage => (\r\n )}\r\n />\r\n ))}\r\n
    \r\n )}\r\n {isPaused && (\r\n
    \r\n )}\r\n />\r\n
    \r\n )}\r\n {updateNowQueued && (\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 {frequencyText}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {timeZoneText}\r\n
    \r\n\r\n {/*\r\n // TODO: uncomment when MT starts sending the data back\r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n {lastUploadTimeText}\r\n
    \r\n */}\r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {url}\r\n
    \r\n
    \r\n
    \r\n \r\n {!isPaused &&\r\n }\r\n {isPaused &&\r\n }\r\n \r\n \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\n\r\nimport { Button, Label } from '@bingads-webui-react/primitive';\r\nimport { Dropdown } from '@bingads-webui-react/fabric-control';\r\nimport { HelpLink } from '@bingads-webui-react/help-link';\r\n\r\nimport { ErrorMessages, withError } from '@bingads-webui-react/validation';\r\nimport { Input, ValidationGroup } from '@bingads-webui-react/primitive-validation';\r\nimport { HelpIcon } from '@bingads-webui-campaign-react/help';\r\nimport { Alert } from '@bingads-webui-react/alert';\r\nimport { CronFormatter } from '@bingads-webui/cron-formatter';\r\nimport { CronFrequencyEditorWithValidation } from '@bingads-webui-campaign-react/fluent-cron-frequency-editor';\r\n\r\nimport { FluentUrlEditorWithValidation, PasswordEditorWithValidation, parseUrl, getTimeZoneOptions, buildUrl } from './components';\r\n\r\nconst CronFrequencyEditorWithValidationSingleLine = withError(props => (\r\n \r\n));\r\n\r\nconst isInsecureProtocol = (fullUrl) => {\r\n const { protocol } = parseUrl(fullUrl);\r\n return protocol === 'http' || protocol === 'ftp';\r\n};\r\n\r\nconst schema = {\r\n name: 'Schedule Schema',\r\n type: 'object',\r\n properties: {\r\n cron: {\r\n type: 'string',\r\n required: true,\r\n },\r\n url: {\r\n type: 'string',\r\n required: true,\r\n },\r\n username: {\r\n type: 'string',\r\n required: false,\r\n },\r\n password: {\r\n type: 'string',\r\n required: false,\r\n },\r\n },\r\n};\r\n\r\nexport class NewSchedulesTabScheduleEdit extends React.Component {\r\n static propTypes = {\r\n deps: PropTypes.shape({\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n onSaveSchedule: PropTypes.func.isRequired,\r\n onCancelEditSchedule: PropTypes.func.isRequired,\r\n schedule: PropTypes.shape({\r\n Id: PropTypes.number,\r\n Cron: PropTypes.string,\r\n TimeZoneId: PropTypes.number,\r\n Url: PropTypes.string,\r\n Protocol: PropTypes.string,\r\n State: PropTypes.string,\r\n Username: PropTypes.string,\r\n Password: PropTypes.string,\r\n }),\r\n lastError: PropTypes.arrayOf(PropTypes.string),\r\n i18nStrings: PropTypes.shape({}).isRequired,\r\n };\r\n\r\n static defaultProps = {\r\n schedule: undefined,\r\n lastError: [],\r\n };\r\n\r\n static getDerivedStateFromProps(props/* , state */) {\r\n return {\r\n errorMessages: props.lastError,\r\n };\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n const { i18n, timeZoneId: accountTimeZoneId, campaignSchema } = props.deps;\r\n\r\n this.timeZoneOptions = getTimeZoneOptions(campaignSchema, i18n);\r\n\r\n this.cronFormatter = new CronFormatter({ i18n });\r\n this.cronFrequencies = this.cronFormatter.getCronFrequenciesEnum();\r\n this.enabledFrequencies = [\r\n this.cronFrequencies.DAILY,\r\n this.cronFrequencies.WEEKLY,\r\n this.cronFrequencies.MONTHLY,\r\n this.cronFrequencies.EVERY_6_HOURS,\r\n this.cronFrequencies.EVERY_12_HOURS,\r\n ];\r\n\r\n this.saveScheduleButtonText = i18n.getString('Form_SaveButton');\r\n this.cancelEditScheduleButtonText = i18n.getString('Form_CancelButton');\r\n\r\n const { i18nStrings } = props;\r\n this.frequencyLabelText = i18nStrings.frequencyLabelText;\r\n this.frequencyHelpId = i18nStrings.frequencyHelpId;\r\n this.timeZoneLabelText = i18nStrings.timeZoneLabelText;\r\n this.timeZoneHelpId = i18nStrings.timeZoneHelpId;\r\n this.urlLabelText = i18nStrings.urlLabelText;\r\n this.urlHelpId = i18nStrings.urlHelpId;\r\n this.descriptionHelpId = i18nStrings.descriptionHelpId;\r\n this.urlInsecureProtocolWarning = i18nStrings.urlInsecureProtocolWarning;\r\n this.usernameLabelText = i18nStrings.usernameLabelText;\r\n this.usernameHelpId = i18nStrings.usernameHelpId;\r\n this.passwordLabelText = i18nStrings.passwordLabelText;\r\n this.passwordHelpId = i18nStrings.passwordHelpId;\r\n\r\n this.onSaveClicked = this.onSaveClicked.bind(this);\r\n this.onCancelClicked = this.onCancelClicked.bind(this);\r\n\r\n const {\r\n schedule: {\r\n Cron: cron, TimeZoneId: timeZoneId, Url: url, Protocol: protocol,\r\n } = {},\r\n lastError: errorMessages = [],\r\n } = props;\r\n\r\n this.supportedProtocols = [{\r\n value: 'https',\r\n text: 'https://',\r\n }, {\r\n value: 'http',\r\n text: 'http://',\r\n }, {\r\n value: 'sftp',\r\n text: 'sftp://',\r\n }, {\r\n value: 'ftp',\r\n text: 'ftp://',\r\n }];\r\n\r\n this.state = {\r\n url: url ? buildUrl({ url, protocol, protocols: this.supportedProtocols }) : '',\r\n cron,\r\n timeZoneId: timeZoneId || accountTimeZoneId,\r\n errorMessages,\r\n isValid: false,\r\n };\r\n\r\n const {\r\n schedule: {\r\n Username: username,\r\n } = {},\r\n } = props;\r\n this.state.username = username;\r\n this.state.clearPassword = false;\r\n this.state.passwordKey = 1;\r\n }\r\n\r\n onSaveClicked = (event) => {\r\n this.props.onSaveSchedule({ event, schedule: this.getSchedule() });\r\n this.setState({\r\n errorMessages: [],\r\n });\r\n };\r\n\r\n onCancelClicked = (event) => {\r\n this.props.onCancelEditSchedule({ event, schedule: this.props.schedule });\r\n };\r\n\r\n onUrlChange = (url) => {\r\n this.setState({ url });\r\n this.removeNonDirtyPassword();\r\n };\r\n\r\n onCronChange = (cron) => {\r\n this.setState({ cron });\r\n };\r\n\r\n onTimeZoneChange = (e, { key }) => {\r\n this.setState({ timeZoneId: parseInt(key, 10) });\r\n };\r\n\r\n onUsernameChange = (event) => {\r\n this.setState({ username: event.target.value });\r\n this.removeNonDirtyPassword();\r\n };\r\n\r\n onPasswordChange = (password) => {\r\n this.setState({ password, clearPassword: false });\r\n };\r\n\r\n onValidate = (result) => {\r\n this.setState({ isValid: result.isValid, errorMessages: [] });\r\n };\r\n\r\n getSchedule() {\r\n const { protocol, url } = parseUrl(this.state.url);\r\n const schedule = {\r\n Id: (this.props.schedule && this.props.schedule.Id) || undefined,\r\n Cron: this.state.cron,\r\n TimeZoneId: this.state.timeZoneId,\r\n Protocol: protocol,\r\n Url: url,\r\n State: (this.props.schedule && this.props.schedule.State) || undefined,\r\n };\r\n\r\n schedule.Username = this.state.username;\r\n schedule.Password = this.state.password;\r\n schedule.ClearPassword = this.state.clearPassword;\r\n\r\n return schedule;\r\n }\r\n\r\n removeNonDirtyPassword = () => {\r\n if (!this.passwordRef.state.isDirty && !this.state.clearPassword) {\r\n this.setState({ clearPassword: true, passwordKey: 2 });\r\n }\r\n };\r\n render() {\r\n const { deps, deps: { i18n, newI18n } } = this.props;\r\n const {\r\n url, cron, timeZoneId, isValid, errorMessages,\r\n } = this.state;\r\n\r\n const timeZoneDropdownOptions = this.timeZoneOptions.map(({ index, text }) => ({\r\n key: index,\r\n text,\r\n }));\r\n\r\n const {\r\n username, password, clearPassword, passwordKey,\r\n } = this.state;\r\n const showInsecureProtocolWarning = isInsecureProtocol(url);\r\n\r\n return (\r\n
    \r\n
    \r\n

    {newI18n.getString(_TL_('Schedule conversions'))}

    \r\n {newI18n.getString(_TL_('Tell us where your conversion file is, and we’ll upload it on a regular basis.'))}\r\n {` ${newI18n.getString(_TL_('Learn more'))}`}\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n {showInsecureProtocolWarning ? (\r\n )}\r\n dismissible={false}\r\n />\r\n ) : null}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n { this.passwordRef = ref; }}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n","export const imageExperienceLegacyStrings = {\r\n ImageExperience_RemoveAllImages: _TL_('I don\\'t want to display images in my ads'),\r\n Audience_Campaign_Ad_Preview_Default_ShortHeadline: _TL_('Short headline'),\r\n Audience_Campaign_Ad_Preview_Default_LongHeadline: _TL_('Long headline'),\r\n Audience_Campaign_Ad_Preview_Default_Description: _TL_('Ad text'),\r\n Audience_Campaign_Ad_Preview_Default_BusinessName: _TL_('Business name'),\r\n Audience_Campaign_Ad_Preview_Default_CallToAction: _TL_('Shop Now'),\r\n ImageOptionDropdown_Image: _TL_('Image'),\r\n ImageOptionDropdown_Logo: _TL_('Logo'),\r\n ImageOptionDropdown_Portrait: _TL_('Portrait'),\r\n ImageExperience_Sort_Recent_Upload: _TL_('Most recently uploaded'),\r\n ImageExperience_Sort_Image_Text: _TL_('Image name'),\r\n ImageExperience_Existing_Images: _TL_('Existing images'),\r\n ImageExperience_Stock_Images: _TL_('Stock images'),\r\n ImageExperience_Website_Suggestions: _TL_('Website images'),\r\n ImageExperience_New: _TL_('New'),\r\n ImageExperience_Upload: _TL_('Upload'),\r\n ImageExperience_Ad_Preview_Title: _TL_('Ad preview'),\r\n Entity_Ads: _TL_('Ad'),\r\n FilePicker_FileExtensionInvalid: _TL_('File extension is invalid'),\r\n FilePicker_FileInvalid: _TL_('File is invalid'),\r\n ImageExperience_Ad_Preview_Next: _TL_('Next ad preview'),\r\n ImageExperience_Ad_Preview_Previous: _TL_('Previous ad preview'),\r\n ImageExperience_Ad_Preview_Ratio_Title_Template: _TL_('{{ratio}} aspect ratio'),\r\n ImageExperience_Ad_Preview_Title_Template: _TL_('Ad preview ({{ratio}} aspect ratio)'),\r\n ImageExperience_Add_Video_File_AriaLabel: _TL_('Selected video to upload'),\r\n ImageExperience_Add_Video_File_Placeholder: _TL_('Select a video to upload'),\r\n ImageExperience_Add_Video_Option_Local: _TL_('Upload from this PC'),\r\n ImageExperience_Add_Video_Option_URL: _TL_('Upload from a URL'),\r\n ImageExperience_AddImageDescription: _TL_('Choose from your existing uploaded images, stock images, or images from your website.'),\r\n ImageExperience_AddImageTitle: _TL_('Add an image'),\r\n ImageExperience_Additional_Disclaimer_Message_MultimediaAd: _TL_('The preview only includes images. Headlines and ad text are coming soon.'),\r\n ImageExperience_Additional_Disclaimer_Message: _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 ImageExperience_AddLogoDescription: _TL_(\"Choose an image you've already uploaded or browse for a new one. Move your mouse over the image to see options to name or delete it.\"),\r\n ImageExperience_AddLogoTitle: _TL_('Add a logo'),\r\n ImageExperience_AddVideoDescription: _TL_('Choose a video you\\'ve already uploaded to the Asset Library or add a new one. Move your mouse over the thumbnail to see options to name or delete it.'),\r\n ImageExperience_AddVideoTitle: _TL_('Add a video'),\r\n ImageExperience_ApplyClipNoticeDescription: _TL_('We noticed that you made edit to the video length. Please make sure your previous caption file still works.'),\r\n ImageExperience_ApplyClipNoticeTitle: _TL_('New captions needed?'),\r\n ImageExperience_ApplyTrimAndCaptionToAllRatio: _TL_('Apply {{effects}} to all other aspect ratios of the same video.'),\r\n ImageExperience_Asset_Title: _TL_('Assets'),\r\n ImageExperience_AutomaticThumbnail: _TL_('Automatic'),\r\n ImageExperience_AutomaticThumbnailDescription: _TL_('In this mode, the thumbnail is generated automatically from the video.'),\r\n ImageExperience_BestPracticeHelp_Video: _TL_('Best practices for audience ad videos.'),\r\n ImageExperience_BestPracticeHelp: _TL_('Best practices for audience ad images.'),\r\n ImageExperience_Cancel: _TL_('Cancel'),\r\n ImageExperience_CaptionAlert: _TL_('Please be aware that changes to captions you make here will be effective immediately.'),\r\n ImageExperience_Choose_File_Description: _TL_(\"Don't see an image you want to use?\"),\r\n ImageExperience_Choose_Video_Description: _TL_(\"Don't see a video you want to use?\"),\r\n ImageExperience_ChooseThumbnail: _TL_('Select from image library'),\r\n ImageExperience_ClipperDescription: _TL_('Highlight the best moments of your video. Slide the sides of the trimmer to adjust your video length.'),\r\n ImageExperience_Confirm: _TL_('OK'),\r\n ImageExperience_CropperDescription: _TL_('Crop your video manually.'),\r\n ImageExperience_DeleteCaptionDescription: _TL_('Are you sure you want to delete this video caption?'),\r\n ImageExperience_DeleteCaptionTitle: _TL_('Delete caption'),\r\n ImageExperience_Drag_File_Description: _TL_('Upload or drag and drop your images here'),\r\n ImageExperience_Drag_File_Maximum_Upload_Num: _TL_('You can upload up to {{maxCount}} images to your ad.'),\r\n ImageExperience_Drag_File_Minimum_Size_Tip: _TL_('Minimum size: {{width}} x {{height}} pixels'),\r\n ImageExperience_Drop_File_Description: _TL_('Drop your files to upload'),\r\n ImageExperience_Drop_Image_Description: _TL_('Drag and drop your images here to upload them'),\r\n ImageExperience_Edit_Aspect_Ratio: _TL_('Edit aspect ratio'),\r\n ImageExperience_Edit_Image_Label: _TL_('Edit image of aspect ratio {{ratio}}'),\r\n ImageExperience_Edit_Image_Name: _TL_('Edit image name'),\r\n ImageExperience_Edit_Image_Placement: _TL_('Edit aspect ratio'),\r\n ImageExperience_Edit_Image_Template: _TL_('Re-crop image: {{ratio}} aspect ratio'),\r\n ImageExperience_Edit_Image: _TL_('Edit Image'),\r\n ImageExperience_Edit_Logo_Template: _TL_('Re-crop logo: {{ratio}} aspect ratio'),\r\n ImageExperience_Edit_Url: _TL_('Enter URL'),\r\n ImageExperience_Edit_Video_Label: _TL_('Edit video of aspect ratio {{ratio}}'),\r\n ImageExperience_EditCaptionDescription: _TL_('Placeholder texts video captions.'),\r\n ImageExperience_EditCaptionTitle: _TL_('Upload captions (optional)'),\r\n ImageExperience_EditThumbnailTitle: _TL_('Image library'),\r\n ImageExperience_EditVideo_Captions: _TL_('Captions'),\r\n ImageExperience_EditVideo_Crop: _TL_('Crop'),\r\n ImageExperience_EditVideo_Thumbnail: _TL_('Thumbnail'),\r\n ImageExperience_EditVideo_Trim_And_Captions: _TL_('trim and captions'),\r\n ImageExperience_EditVideo_Trim_Only: _TL_('trim'),\r\n ImageExperience_EditVideo_Trim: _TL_('Trim'),\r\n ImageExperience_EditVideo: _TL_('Edit video'),\r\n ImageExperience_EmptyURL: _TL_('Please enter your website’s URL. We’ll extract images from your website.'),\r\n ImageExperience_Error_AnimatedImageNotAllowed: _TL_('Animated images are not allowed.'),\r\n ImageExperience_Error_AssetDataEncodingInvalid: _TL_('Data in one of the media entities is not valid format.'),\r\n ImageExperience_Error_AssetDataInvalid: _TL_('Data in one or more the media is not a supported format.'),\r\n ImageExperience_Error_GenericUploadErrorMessage: _TL_(\"We're unable to save your image due to an error. Try again or upload another file.\"),\r\n ImageExperience_Error_ImageMimeTypeInvalid: _TL_(\"The image's MIME type is not supported.\"),\r\n ImageExperience_Error_ImagesLimitExceededPerAccount: _TL_('Limit of images saved per account reached.'),\r\n ImageExperience_Error_MediaFormatNotSupported: _TL_('That file type isn’t supported. Please select a different file.'),\r\n ImageExperience_Error_StockImageLimitExceededPerCustomer: _TL_(\"We're unable to use the stock photo as you have reached the customer limit.\"),\r\n ImageExperience_Error_StockPhoto_Generic: _TL_('Our stock photo service is having an issue. Please try again later.'),\r\n ImageExperience_Error_CampaignServiceMediaDataEncodingInvalid: _TL_('Data in one of the media entities is not valid format.'),\r\n ImageExperience_Error_ValidationError: _TL_('The recommended images were not added to your asset group because their resolution was too low. Please remove these from your selection and try again.'),\r\n ImageExperience_Error_APIError: _TL_('The recommended images were not added to your asset group. Please try again later.'),\r\n ImageExperience_Error_MixedError: _TL_('The recommended images were not added to your asset group. Please try again later.'),\r\n ImageExperience_Error_CampaignServiceMediaFormatNotSupported: _TL_(\"That file type isn't supported. Please select a different file.\"),\r\n ImageExperience_ExistCaptionTitle: _TL_('Existing captions'),\r\n ImageExperience_Existing_Videos: _TL_('Existing videos'),\r\n ImageExperience_FileSize_Too_Big_Template: _TL_('Your image is too large to upload ({{fileSize}} MB). Please upload an image that is smaller than {{maximumFileSize}} MB.'),\r\n ImageExperience_Get_Video_Label: _TL_('Get video'),\r\n ImageExperience_Image_Delete_Confirm: _TL_('Are you sure you want to delete selected image?'),\r\n ImageExperience_Image_List_Description: _TL_('Add your own images to your ad, or choose from the most recently used images.'),\r\n ImageExperience_Image_List_Label: _TL_('Images'),\r\n ImageExperience_Image_Picker_No_Image_Label: _TL_('There are no images available.'),\r\n ImageExperience_Image_Placement_Optional: _TL_('Optional'),\r\n ImageExperience_Image_Placement_Required_Message: _TL_('This placement is required and cannot be excluded.'),\r\n ImageExperience_Image_Placement_Required: _TL_('Required'),\r\n ImageExperience_Image_Ratio_133x100: _TL_('1.33 : 1'),\r\n ImageExperience_Image_Ratio_150x100: _TL_('1.5 : 1'),\r\n ImageExperience_Image_Ratio_155x100: _TL_('1.55 : 1'),\r\n ImageExperience_Image_Ratio_169x100: _TL_('1.69 : 1'),\r\n ImageExperience_Image_Ratio_172x100: _TL_('1.72 : 1'),\r\n ImageExperience_Image_Ratio_178x100: _TL_('1.78 : 1'),\r\n ImageExperience_Image_Ratio_191x100: _TL_('1.91 : 1'),\r\n ImageExperience_Image_Ratio_1x1: _TL_('1 : 1'),\r\n ImageExperience_Image_Ratio_1x2: _TL_('1 : 2'),\r\n ImageExperience_Image_Ratio_4x1: _TL_('4 : 1'),\r\n ImageExperience_Image_Ratio_93x100: _TL_('0.93 : 1'),\r\n ImageExperience_Image_Ratio_ImageOriginal: _TL_('Original'),\r\n ImageExperience_Image_Ratio_201x100: _TL_('2.01 : 1'),\r\n ImageExperience_Image_Ratio_200x100: _TL_('2 : 1'),\r\n ImageExperience_Image_Ratio_153x100: _TL_('1.53 : 1'),\r\n ImageExperience_Image_Ratio_124x100: _TL_('1.24 : 1'),\r\n ImageExperience_Image_Ratio_120x100: _TL_('1.2 : 1'),\r\n ImageExperience_Image_ReCrop_Description: _TL_('Crop your image to how you want it appearing in your ad.'),\r\n ImageExperience_Image: _TL_('Image'),\r\n ImageExperience_ImageAddDescription: _TL_('Add your own images to your ad, or choose from the most recently used images.'),\r\n ImageExperience_ImagesAspectRatioRequired: _TL_('You need to add an image and include an aspect ratio before saving your ad.'),\r\n ImageExperience_ImagesRequired: _TL_('You need to add an image before saving your ad.'),\r\n ImageExperience_ImageSuggestion_ImagesFound: _TL_(\"We've found images from your Final URL:\"),\r\n ImageExperience_ImageSuggestion_Subdomain_Placeholder: _TL_('Enter your subdomain'),\r\n ImageExperience_InProgress: _TL_('We are retrieving your images. This might take longer than usual. Please wait or check back later.'),\r\n ImageExperience_InvalidURL: _TL_('Please enter a valid Final URL to see images from your website.'),\r\n ImageExperience_InvalidVideo: _TL_('One or more of your videos are invalid. Please select another video for the placement.'),\r\n ImageExperience_LandscapeImageRequired: _TL_('A 1.91:1 image is required to create a responsive ad'),\r\n ImageExperience_OriginalImageRequired: _TL_('An original image is required to create a responsive ad'),\r\n ImageExperience_LoadImage_Description: _TL_('You can add up to 16 images to your ad.'),\r\n ImageExperience_LoadImage: _TL_('Add image'),\r\n ImageExperience_LoadLogo_Description: _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 ImageExperience_LoadLogo: _TL_('Add logo'),\r\n ImageExperience_LoadVideo: _TL_('Add video'),\r\n ImageExperience_Logo_Add_Button: _TL_('Load Logo'),\r\n ImageExperience_Logo_Add_Description: _TL_('Add a logo to your ad. Logo ratio should be 1 : 1.'),\r\n ImageExperience_Logo_Edit_Button: _TL_('Edit image'),\r\n ImageExperience_Logo_Label: _TL_('Logo (optional)'),\r\n ImageExperience_Logo_List_Label: _TL_('Logos'),\r\n ImageExperience_Logo_ReCrop_Description: _TL_('Crop your logo to how you want it appearing in your ad.'),\r\n ImageExperience_ManualThumbnail: _TL_('Manual'),\r\n ImageExperience_Media_Delete_Error_UseInDraft: _TL_('The selected media is currently associated with an audience ad. Please ensure that the media is not being used before deleting it.'),\r\n ImageExperience_MinimumAspectRatioRequired: _TL_('You need to add at least 1 image with 1.91:1 aspect ratio and 1 image with 1:1 aspect ratio to the ad.'),\r\n ImageExperience_Multimedia_Delete_Error_UseInDraft: _TL_('The selected media is currently associated with an ad. Please ensure that the media is not being used before deleting it.'),\r\n ImageExperience_MultipleUpload_Error_MediaFormatNotSupported: _TL_('One or more file types aren’t supported. Please select different file(s).'),\r\n ImageExperience_MultipleUpload_FileSize_TooBig: _TL_('One or more of your image sizes exceed the supported limit ({{maximumFileSize}} MB).'),\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_NoCaptionFile: _TL_(\"You don't have any captions.\"),\r\n ImageExperience_NoSuggestion: _TL_('No suggestion found from your site.'),\r\n ImageExperience_Preview_Type_133x100: _TL_('MSN small headline'),\r\n ImageExperience_Preview_Type_150x100: _TL_('MSN in-article ad'),\r\n ImageExperience_Preview_Type_155x100: _TL_('MSN medium headline'),\r\n ImageExperience_Preview_Type_169x100: _TL_('MSN carousel'),\r\n ImageExperience_Preview_Type_172x100: _TL_('Microsoft edge medium headline'),\r\n ImageExperience_Preview_Type_178x100: _TL_('Microsoft edge single carousel'),\r\n ImageExperience_Preview_Type_191x100: _TL_('MSN feed'),\r\n ImageExperience_Preview_Type_191x100_V2: _TL_('MSN feed'),\r\n ImageExperience_Preview_Type_ImageOriginal: _TL_('Original Image'),\r\n ImageExperience_Preview_Type_201x100: _TL_('Microsoft Edge carousel'),\r\n ImageExperience_Preview_Type_200x100: _TL_('MSN banner'),\r\n ImageExperience_Preview_Type_169x100_V2: _TL_('MSN carousel'),\r\n ImageExperience_Preview_Type_153x100: _TL_('MSN partner stripe'),\r\n ImageExperience_Preview_Type_124x100: _TL_('MSN Restoday'),\r\n ImageExperience_Preview_Type_120x100: _TL_('MSN rectangle image'),\r\n ImageExperience_Preview_Type_1x1: _TL_('MSN square image'),\r\n ImageExperience_Preview_Type_1x1_V2: _TL_('Microsoft Edge mobile'),\r\n ImageExperience_Preview_Type_93x100: _TL_('MSN double carousel'),\r\n ImageExperience_Preview_Type_BingDeskMulti: _TL_('Bing Desktop Multi-Image Extension'),\r\n ImageExperience_Preview_Type_BingSingleImage: _TL_('Bing Desktop Single-Image Extension'),\r\n ImageExperience_Preview_Type_MobileMulti: _TL_('Bing Mobile Multi-Image Extension'),\r\n ImageExperience_Preview_Type_MultimediaAd_191x100: _TL_('Landscape Image Multimedia Ad'),\r\n ImageExperience_Preview_Type_MultimediaAd_1x1: _TL_('Square Image Multimedia Ad'),\r\n ImageExperience_Preview_Type_MultimediaAd_1x2: _TL_('Vertical Image Multimedia Ad'),\r\n ImageExperience_Preview_Type_MultimediaAd_4x1: _TL_('Wide Image Multimedia Ad'),\r\n ImageExperience_PreviewTitle: _TL_('Preview'),\r\n ImageExperience_Proceed: _TL_('Proceed'),\r\n ImageExperience_ReCrop: _TL_('Re-crop'),\r\n ImageExperience_Remove_Image: _TL_('Remove this image'),\r\n ImageExperience_Remove: _TL_('Remove'),\r\n ImageExperience_RemoveAllVideos: _TL_('Remove all videos'),\r\n ImageExperience_Replace: _TL_('Replace'),\r\n ImageExperience_ReplaceImageTitle: _TL_('Replace image'),\r\n ImageExperience_ReplaceVideoTitle: _TL_('Replace video'),\r\n ImageExperience_Review_Image_Policy: _TL_('Learn more'),\r\n ImageExperience_Search_Placeholder: _TL_('Image names'),\r\n ImageExperience_SelectedImage: _TL_('Selected image'),\r\n ImageExperience_ShutterStock_Disclaimer_Image_Policy: _TL_('There may be images provided by Shutterstock that do not adhere to the Microsoft image policy.'),\r\n ImageExperience_ShutterStock_Disclaimer_Watermark: _TL_('The Shutterstock watermark appearing on the stock images below will not appear in your ad.'),\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_Sort_Video_Text: _TL_('Video name'),\r\n ImageExperience_SortBy: _TL_('Sort by'),\r\n ImageExperience_Stock_Search_Placeholder: _TL_('Search stock images (provided by Shutterstock)'),\r\n ImageExperience_SuggestionExceedsMaximum: _TL_('Suggestions found from your site exceed the maximum. We will restrict to max {{imageSize}} images.'),\r\n ImageExperience_Thumbnail: _TL_('Edit thumbnail'),\r\n ImageExperience_ThumbnailDescription: _TL_('Thumbnail images show before a video starts and after it ends.'),\r\n ImageExperience_Timeout: _TL_('Scan your site timeout.'),\r\n ImageExperience_UnsavedDraft_Warn: _TL_('Remember to click the Save button in the bottom to apply the changes to the videos.'),\r\n ImageExperience_UploadCaptionFilePlaceholder: _TL_('Upload SRT files.'),\r\n ImageExperience_Video_Delete_Confirm: _TL_('Are you sure you want to delete selected video?'),\r\n ImageExperience_Video_Editor_Description: _TL_('Edit your video to how you want it appearing in your ad.'),\r\n ImageExperience_Video_Error_AssetDataInvalidAspect: _TL_('Video aspect must range from 16:9 to 9:16.'),\r\n ImageExperience_Video_Error_AssetDataInvalidHeight: _TL_('Video height must be between 120 and 2160 pixels.'),\r\n ImageExperience_Video_Error_AssetDataInvalidWidth: _TL_('Video width must be between 120 and 4096 pixels.'),\r\n ImageExperience_Video_Error_AssetIsUsed: _TL_('This video can’t be deleted because it’s associated with another ad. To delete a video, you must first remove it from all of the ads that are using it.'),\r\n ImageExperience_Video_Error_DuplicateVideoResource: _TL_('The captions file you selected contain locale that had been applied to video, please remove and try again.'),\r\n ImageExperience_Video_Error_FileNameWrongFormat: _TL_('You uploaded a caption file with an incorrect file name or unsupported locale. Please use this format: filename.locale.srt. And make sure the locale is in the support list.'),\r\n ImageExperience_Video_Error_InvalidDuration: _TL_('Video must range from 6 to 120 seconds in duration.'),\r\n ImageExperience_Video_Error_InvalidId: _TL_('The video you select is not valid.'),\r\n ImageExperience_Video_Error_InvalidUrl: _TL_('The URL you gave us doesn’t link to a working video. Please check the URL and try again.'),\r\n ImageExperience_Video_Error_LoadVideoFail_Template: _TL_('Error occurred during video loading: {{error}}.'),\r\n ImageExperience_Video_Error_UploadFileFormatNotSupported: _TL_('Data in the file your selected is not a supported format.'),\r\n ImageExperience_Video_Error_VideoOverweight: _TL_('Video is too large.'),\r\n ImageExperience_Video_FileSize_Too_Big_Template: _TL_('Your video file size is greater than the allowable limit. Please upload a video that is less than {{maximumFileSize}} GB.'),\r\n ImageExperience_Video_List_Description: _TL_('Add your own videos to your ad, or choose from the most recently used videos.'),\r\n ImageExperience_Video_List_Label: _TL_('Videos'),\r\n ImageExperience_Video_Label: _TL_('Video'),\r\n ImageExperience_Video_NewName: _TL_('New video name'),\r\n ImageExperience_Video_NoPreview: _TL_('Preview is unavailable when video is not ready or valid.'),\r\n ImageExperience_Video_Ratio_16x9: _TL_('16 : 9'),\r\n ImageExperience_Video_Ratio_1x1: _TL_('1 : 1'),\r\n ImageExperience_Video_Ratio_4x5: _TL_('4 : 5'),\r\n ImageExperience_Video_Ratio_5x4: _TL_('5 : 4'),\r\n ImageExperience_Video_Ratio_9x16: _TL_('9 : 16'),\r\n ImageExperience_Video_RemoveAllWithUpload_Confirm: _TL_('Do you want to stop uploading the video?'),\r\n ImageExperience_Video_Requirement: _TL_('Video requirement'),\r\n ImageExperience_Video_Status_Encoding: _TL_('Processing...'),\r\n ImageExperience_Video_Status_Failed: _TL_('Invalid video'),\r\n ImageExperience_Video_Status_Unverified: _TL_('Downloading...'),\r\n ImageExperience_Video_Upload_Cancel_Confirm: _TL_('This will stop the video upload. Do you want to proceed?'),\r\n ImageExperience_Video_UploadError_InternetLost: _TL_('It looks like your internet connection was lost. Check your connection and try again.'),\r\n ImageExperience_Video_UploadError_NoInternet: _TL_('Upload failed: Please check your internet connection and try again.'),\r\n ImageExperience_Video_UploadError_Template: _TL_('Upload failed: Please check your internet connection and try again. '),\r\n ImageExperience_VideoEditFail: _TL_('Edit video failed.'),\r\n ImageExperience_VideoNoCustomThumbnail_NoPreview: _TL_('Select image to see preview.'),\r\n ImageExperience_VideosMissing: _TL_('Your ad is missing a video with all of the required aspect ratios.'),\r\n ImageExperience_VideosRequired: _TL_('You need to add a video to save your audience ad.'),\r\n ImageExperience_VideosUploading: _TL_('You can cancel or save the ad after the video has been uploaded.'),\r\n ImageExperience_VideoUrlValidationFailTemplate: _TL_('Video url validate failed: {{error}}'),\r\n ImageExperience_View_Placements_Example: _TL_('View example placements'),\r\n};\r\n","import _ from 'underscore';\r\nimport React, { useCallback, useContext, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n DataFetcher,\r\n Store,\r\n middlewareTypes,\r\n createInstrumentationMiddleware,\r\n createErrorMiddleware,\r\n} from '@bingads-webui-react/overreact';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { InstrumentationContext } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { useCCEnvironment } from '@bingads-webui/overreact-cc';\r\nimport {\r\n getRequestor as getCampaignRequestor,\r\n getEnvironmentInstance as getCampaignEnvInstance,\r\n middlewares,\r\n} from '@bingads-webui/overreact-odata-campaign';\r\nimport { getDefaultHeaderObj } from '@bingads-webui/overreact-bingads';\r\nimport { getConfig } from '@bingads-webui-campaign/odata-config';\r\nimport { redirectToLogin } from '@bingads-webui-campaign/global-app-init';\r\n\r\nconst ExpectedErrorStrings = [\r\n 'TypeError: Failed to fetch',\r\n 'TypeError: Load failed',\r\n 'TypeError: NetworkError when attempting to fetch resource',\r\n '{\"readyState\":0,\"status\":0,\"statusText\":\"error\",\"headers\":{}}',\r\n].map(errorString => errorString.toLowerCase());\r\nfunction isExpectedErrorString(error) {\r\n if (!error) {\r\n return false;\r\n }\r\n\r\n const errorMessage = _.isError(error) ? error : JSON.stringify(error);\r\n const errorMessageInLowerCase = _.isFunction(_.get(errorMessage, 'toLowerCase')) ? errorMessage.toLowerCase() : '';\r\n return _.some(\r\n ExpectedErrorStrings,\r\n errorString => errorMessageInLowerCase.indexOf(errorString) > -1\r\n );\r\n}\r\n\r\nconst store = new Store();\r\n\r\nfunction useCampaignEnvironment(params) {\r\n const {\r\n serviceRoot, token, middleWares,\r\n } = params;\r\n\r\n return useMemo(() => {\r\n const requestor = getCampaignRequestor(\r\n serviceRoot,\r\n {\r\n ...getDefaultHeaderObj(),\r\n Authorization: `CCMTSmallToken ${token}`,\r\n }\r\n );\r\n\r\n return getCampaignEnvInstance(requestor, store, middleWares);\r\n }, [middleWares, serviceRoot, token]);\r\n}\r\n\r\nexport const OverreactDataFetcher = (props) => {\r\n const serverContext = useContext(ServerContext);\r\n const {\r\n Token,\r\n CurrentLocale,\r\n ServicesEndpoints: {\r\n ClientCenterUIAPI,\r\n CampaignAPI, // path to ODataApi root, should have trailing slash\r\n },\r\n PageTrackingId,\r\n CurrentUser,\r\n } = serverContext;\r\n const CampaignAPIPath = 'Campaign/V2';\r\n const CultureLcid = serverContext.CurrentUser.LocaleID;\r\n\r\n const {\r\n LocaleID,\r\n Locale,\r\n } = CurrentUser || {};\r\n\r\n const lcid = CultureLcid || LocaleID || Locale;\r\n const instrumentation = useContext(InstrumentationContext);\r\n const activity = useMemo(\r\n () => {\r\n const scenario = instrumentation && instrumentation.overreactRequest && instrumentation.overreactRequest.create();\r\n const act = scenario ? scenario.logger.create() : {\r\n trace: _.noop,\r\n error: _.noop,\r\n ajax: _.noop,\r\n };\r\n return act;\r\n },\r\n [instrumentation]\r\n );\r\n\r\n const errorProcessor = useCallback((error) => {\r\n if (error && error.status === 401) {\r\n activity.trace('overreact data fetcher starts sign out redirection');\r\n redirectToLogin(serverContext);\r\n }\r\n }, [activity, serverContext]);\r\n\r\n const instrumentationMiddleware = useMemo(() => ({\r\n [middlewareTypes.ERROR]: createErrorMiddleware({\r\n errorProcessor,\r\n }),\r\n [middlewareTypes.INSTRUMENTATION]: createInstrumentationMiddleware({\r\n pageTrackingId: PageTrackingId,\r\n // traceFunc is called on error and the error is mapped to user error using errorMappers\r\n // errorFunc is called on error (no result - server or network error)\r\n // perfFunc is called pre and post request\r\n loggerFunc: {\r\n traceFunc: ({\r\n requestId, message, api, httpMethod,\r\n }) => {\r\n activity.trace(message || '', api, requestId, httpMethod);\r\n },\r\n errorFunc: ({\r\n requestId, api, httpMethod, message,\r\n }) => {\r\n activity.error(message || '', api, requestId, null /* impact user */, httpMethod);\r\n },\r\n perfFunc: ({\r\n requestId, api, httpMethod, timeTaken, message, isMethodEnter,\r\n }) => {\r\n activity.ajax(\r\n requestId, api, isMethodEnter,\r\n httpMethod, timeTaken, null /* pass */, message\r\n );\r\n },\r\n },\r\n errorMappers: [{\r\n check: (error) => {\r\n if (!error) {\r\n return false;\r\n }\r\n return isExpectedErrorString(error);\r\n },\r\n }],\r\n stubOptions: { lcid },\r\n }),\r\n }), [PageTrackingId, activity, errorProcessor, lcid]);\r\n\r\n const allMiddlewares = useMemo(\r\n () => ({ ...middlewares, ...instrumentationMiddleware }),\r\n [instrumentationMiddleware]\r\n );\r\n\r\n const campaignOdataRoot = useMemo(() => {\r\n const odataConfig = getConfig();\r\n const odataPath = CampaignAPIPath || odataConfig.odataPath;\r\n return `${CampaignAPI}${odataPath}`;\r\n }, [CampaignAPI, CampaignAPIPath]);\r\n\r\n const overreactCcEnv = useCCEnvironment({\r\n serviceRoot: ClientCenterUIAPI,\r\n store,\r\n middlewares: allMiddlewares,\r\n locale: CurrentLocale,\r\n });\r\n\r\n const overreactCampaignEnv = useCampaignEnvironment({\r\n serviceRoot: campaignOdataRoot,\r\n token: Token,\r\n middlewares: allMiddlewares,\r\n });\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nOverreactDataFetcher.propTypes = {\r\n children: PropTypes.oneOfType([\r\n PropTypes.arrayOf(PropTypes.node),\r\n PropTypes.node,\r\n ]).isRequired,\r\n};\r\n","import React, { useMemo, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { FluentProvider, webLightTheme } from '@fluentui/react-components';\r\nimport { buildLegacyI18n, validationLocalization } from '@bingads-webui/build-legacy-i18n';\r\nimport classNames from 'classnames';\r\nimport { ValidationStringMap } from '@bingads-webui/validation-string-map';\r\nimport ablEnforcementLegacyStrings from '@bingads-webui-cc-react/abl-enforcement-legacy-strings';\r\nimport ablLegacyStrings from '@bingads-webui-cc-react/address-tax-form-legacy-strings';\r\nimport pidlLegacyString from '@bingads-webui-cc-react/pidl-payment-method-actions-base-legacy-strings';\r\nimport entityUtilLegacyString from '@bingads-webui-clientcenter/entity-utils-legacy-strings';\r\nimport termAndConditionsLegacyString from '@bingads-webui-cc-react/terms-and-conditions-legacy-strings';\r\nimport autoPbcLightboxLegacyStrings from '@bingads-webui-cc-react/auto-pbc-lightbox-legacy-strings';\r\nimport offlinePiLegacyStrings from '@bingads-webui-cc-react/check-bank-transfer-legacy-strings';\r\nimport addFundsLegacyString from '@bingads-webui-cc-react/signup-add-funds-legacy-strings';\r\nimport { aggregateStrings } from '@bingads-webui-cc-react/account-business-location-legacy-strings';\r\nimport { fileDraggerLegacyString } from '@bingads-webui-campaign-react/file-dragger';\r\nimport { msSupportChatLocalization, requestCallModalLocalization } from '@bingads-webui-react/bingads-backbone-header-strings';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { LegacyI18nContext } from '@bingads-webui-react/legacy-i18n-context';\r\nimport { PerformanceMarkerProvider } from '@bingads-webui-campaign-react/performance-marker-provider';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getInstrumentation, getInstrumentationService, InstrumentationWithServiceProvider } from '@bingads-webui-campaign-react/pmax-lite-instrumentation';\r\nimport { ServerContext, ServerContextWithActionProvider, withServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { imageExperienceLegacyStrings } from './image-experience-legacy-strings';\r\nimport { OverreactDataFetcher } from './overreact-fetcher';\r\n\r\nconst getStyles = () => ({\r\n container: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n flex: 1,\r\n overflow: 'hidden',\r\n '& .fui-FluentProvider': {\r\n overflow: 'auto',\r\n flex: 1,\r\n },\r\n '& .collapse-content .fui-FluentProvider': {\r\n overflow: 'visible',\r\n },\r\n },\r\n '@global': {\r\n '.fui-Toaster': {\r\n bottom: '100px !important',\r\n left: '60px !important',\r\n },\r\n },\r\n});\r\n\r\nconst SDKPostSignUpContextInteranal = React.memo(({\r\n serverContext,\r\n subSystemName,\r\n perfMarkerName,\r\n children,\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n const legacyI18n = useMemo(() => buildLegacyI18n(i18n, [\r\n ValidationStringMap,\r\n validationLocalization,\r\n ablEnforcementLegacyStrings,\r\n autoPbcLightboxLegacyStrings,\r\n ablLegacyStrings,\r\n offlinePiLegacyStrings,\r\n pidlLegacyString,\r\n entityUtilLegacyString,\r\n termAndConditionsLegacyString,\r\n addFundsLegacyString,\r\n msSupportChatLocalization,\r\n requestCallModalLocalization,\r\n aggregateStrings,\r\n fileDraggerLegacyString,\r\n imageExperienceLegacyStrings,\r\n ]), [i18n]);\r\n const finalServerContext = useMemo(() => ({\r\n ...serverContext,\r\n CCBaseUrl: serverContext.Urls.ClientCenterBaseUrl,\r\n }), [serverContext]);\r\n\r\n const instrumentation = useMemo(() => getInstrumentation({\r\n serverContext,\r\n devConfig: {},\r\n subSystemName,\r\n }), [serverContext, subSystemName]);\r\n\r\n const instrumentationService = useMemo(() => getInstrumentationService({\r\n instrumentation,\r\n serverContext,\r\n }), [instrumentation, serverContext]);\r\n\r\n const styles = useDefaultStyles(getStyles);\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n});\r\n\r\nSDKPostSignUpContextInteranal.propTypes = {\r\n serverContext: PropTypes.shape({\r\n Urls: PropTypes.shape({\r\n ClientCenterBaseUrl: PropTypes.string.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n subSystemName: PropTypes.string,\r\n perfMarkerName: PropTypes.string,\r\n children: PropTypes.element.isRequired,\r\n};\r\n\r\nSDKPostSignUpContextInteranal.defaultProps = {\r\n subSystemName: 'sdk-campaign-overview',\r\n perfMarkerName: 'MSAdsSDK',\r\n};\r\n\r\nexport const SDKPostSignUpContext = withServerContext(SDKPostSignUpContextInteranal);\r\n","import { useCallback, useContext } from 'react';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { getRoutePathById } from '@bingads-webui-react/with-site-map';\r\n\r\nexport const useBackToOverview = ({ siteMap }) => {\r\n const { scope } = useContext(ScopeContext);\r\n\r\n const backToOverviewPage = useCallback(() => {\r\n const route = getRoutePathById(siteMap, 'sdk-campaign-overview');\r\n scope.save(route);\r\n }, [scope, siteMap]);\r\n\r\n return {\r\n backToOverviewPage,\r\n };\r\n};\r\n","/* eslint-disable react/prop-types */\r\nimport React from 'react';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport classnames from 'classnames';\r\nimport { ArrowLeft24Regular } from '@fluentui/react-icons';\r\nimport { Button } from '@fluentui/react-components';\r\n\r\nconst getStyles = () => ({\r\n sdkPageNavigationHeader: {\r\n marginTop: 12,\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n height: 32,\r\n padding: '0 43px',\r\n },\r\n backBtn: {\r\n color: '#0F6CBD',\r\n },\r\n title: {\r\n margin: 0,\r\n fontSize: 26,\r\n lineHeight: '32px',\r\n color: '#242424',\r\n },\r\n});\r\n\r\ninterface ISDKPageNavigationHeader {\r\n title: string;\r\n onClickBackButton: () => void;\r\n}\r\n\r\nexport const SDKPageNavigationHeader: React.FC = React.memo(({ title, onClickBackButton }) => {\r\n const classes = useDefaultStyles(getStyles);\r\n\r\n return (\r\n
    \r\n }\r\n onClick={onClickBackButton}\r\n />\r\n

    {title}

    \r\n
    \r\n );\r\n});\r\n","/* eslint-disable react/prop-types */\r\nimport React, { useContext } from 'react';\r\nimport classnames from 'classnames';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { Button } from '@fluentui/react-components';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\n\r\nconst getStyles = () => ({\r\n sdkSettingsActionBar: {\r\n padding: '12px 38px',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n },\r\n cancelBtn: {\r\n '&.fui-Button': {\r\n marginRight: 8,\r\n },\r\n },\r\n});\r\n\r\ninterface ISDKSettingsActionBar {\r\n onCancel: () => void;\r\n onSubmit: () => void;\r\n}\r\n\r\nexport const SDKSettingsActionBar: React.FC = React.memo(({\r\n onCancel,\r\n onSubmit,\r\n}) => {\r\n const classes = useDefaultStyles(getStyles);\r\n const i18n = useContext(I18nContext) as any;\r\n\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n );\r\n});\r\n","import React, { useCallback, useContext, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { FORM_STATES, Form, useFormService } from '@bingads-webui-react/form';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { UiBlocker } from '@bingads-webui-react/ui-blocker';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { withSiteMap, processorSet, processor } from '@bingads-webui-react/with-site-map';\r\nimport { useBackToOverview } from './use-back-to-overview';\r\nimport { useSettingsFormAction } from './use-settings-form-actions';\r\nimport { SDKSettingsActionBar } from './action-bar';\r\n\r\nconst getStyles = () => ({\r\n sdkSettingsFormWrapper: {\r\n flex: 1,\r\n display: 'flex',\r\n overflow: 'hidden',\r\n flexDirection: 'column',\r\n margin: '24px 43px 27px 43px',\r\n boxShadow: '0px 0px 2px 0px rgba(0, 0, 0, 0.12), 0px 2px 4px 0px rgba(0, 0, 0, 0.14)',\r\n border: '1px solid transparent',\r\n '& .react-block-ui, & .react-block-ui-none': {\r\n flex: 1,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n overflow: 'hidden',\r\n },\r\n },\r\n sdkSettingsForm: {\r\n flex: 1,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n overflow: 'auto',\r\n borderRadius: 4,\r\n background: '#f9f9f9',\r\n padding: '24px 32px 24px 32px',\r\n },\r\n});\r\n\r\nconst SDKSettingsViewInternal = React.memo((props) => {\r\n const {\r\n ContentComponent, siteMap,\r\n } = props;\r\n const i18n = useContext(I18nContext);\r\n const classes = useDefaultStyles(getStyles);\r\n const { backToOverviewPage } = useBackToOverview({ siteMap });\r\n const { onClickSaveButton } = useSettingsFormAction(props);\r\n const { state } = useFormService();\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n});\r\nSDKSettingsViewInternal.propTypes = {\r\n siteMap: PropTypes.shape({}).isRequired,\r\n ContentComponent: PropTypes.func.isRequired,\r\n repository: PropTypes.func.isRequired,\r\n};\r\n\r\nconst SDKSettingsView = withSiteMap(SDKSettingsViewInternal, [processor.processPath, ...processorSet.basic]);\r\n\r\nconst SDKSettingsFormInternal = ({\r\n id, ContentComponent, repository, viewProps, siteMap,\r\n}) => {\r\n const FormViewWrapper = useCallback(({\r\n data,\r\n onDataChange,\r\n }) => (\r\n \r\n ), [ContentComponent, repository, viewProps]);\r\n\r\n const { backToOverviewPage } = useBackToOverview({ siteMap });\r\n const config = useMemo(() => ({\r\n id,\r\n view: FormViewWrapper,\r\n repository,\r\n machineOptions: {\r\n initialState: FORM_STATES.FETCHING,\r\n actions: {\r\n onDoneSaving: backToOverviewPage,\r\n },\r\n },\r\n }), [FormViewWrapper, backToOverviewPage, id, repository]);\r\n\r\n return (\r\n
    \r\n );\r\n};\r\n\r\nSDKSettingsFormInternal.propTypes = {\r\n siteMap: PropTypes.shape({}).isRequired,\r\n id: PropTypes.string.isRequired,\r\n ContentComponent: PropTypes.func.isRequired,\r\n repository: PropTypes.func.isRequired,\r\n viewProps: PropTypes.shape({}),\r\n};\r\n\r\nSDKSettingsFormInternal.defaultProps = {\r\n viewProps: {},\r\n};\r\n\r\nexport const SDKSettingsForm = withSiteMap(SDKSettingsFormInternal, [processor.processPath, ...processorSet.basic]);\r\n","import { useCallback } from 'react';\r\nimport { useFormService, FORM_EVENTS } from '@bingads-webui-react/form';\r\nimport { useBackToOverview } from './use-back-to-overview';\r\n\r\n\r\nexport const useSettingsFormAction = ({ siteMap }) => {\r\n const { send } = useFormService();\r\n\r\n const { backToOverviewPage } = useBackToOverview({ siteMap });\r\n // const [isSaving, setIsSaving] = useState(false);\r\n // const { save } = repository();\r\n const onClickSaveButton = useCallback(() => {\r\n send(FORM_EVENTS.SAVE);\r\n }, [send]);\r\n\r\n return {\r\n onClickBackButton: backToOverviewPage,\r\n onClickSaveButton,\r\n };\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { SDKPostSignUpContext } from '@bingads-webui-campaign-react/sdk-post-signup-context';\r\nimport { withSiteMap, processorSet, processor } from '@bingads-webui-react/with-site-map';\r\nimport { useBackToOverview } from './use-back-to-overview';\r\nimport { SDKPageNavigationHeader } from './navigation-header';\r\nimport { SDKSettingsForm } from './sdk-settings-form';\r\n\r\nconst getStyles = () => ({\r\n sdkSettingsPage: {\r\n flex: 1,\r\n overflow: 'hidden',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n sdkSettingsFormWrapper: {\r\n flex: 1,\r\n display: 'flex',\r\n overflow: 'hidden',\r\n flexDirection: 'column',\r\n margin: '24px 43px 27px 43px',\r\n boxShadow: '0px 0px 2px 0px rgba(0, 0, 0, 0.12), 0px 2px 4px 0px rgba(0, 0, 0, 0.14)',\r\n border: '1px solid transparent',\r\n '& .react-block-ui, & .react-block-ui-none': {\r\n flex: 1,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n overflow: 'auto',\r\n },\r\n },\r\n sdkSettingsForm: {\r\n flex: 1,\r\n display: 'flex',\r\n overflow: 'hidden',\r\n borderRadius: 4,\r\n background: '#f9f9f9',\r\n padding: '24px 32px 24px 32px',\r\n },\r\n '@global': {\r\n '& .fui-FluentProvider': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n },\r\n});\r\n\r\nconst SDKSettingsPageInternal = React.memo(({\r\n siteMap,\r\n title,\r\n className,\r\n formProps,\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n const classes = useDefaultStyles(getStyles);\r\n const { backToOverviewPage } = useBackToOverview({ siteMap });\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n});\r\n\r\nSDKSettingsPageInternal.propTypes = {\r\n siteMap: PropTypes.shape({}).isRequired,\r\n view: PropTypes.func.isRequired,\r\n title: PropTypes.string.isRequired,\r\n className: PropTypes.string,\r\n formProps: PropTypes.shape({\r\n id: PropTypes.string.isRequired,\r\n ContentComponent: PropTypes.func.isRequired,\r\n repository: PropTypes.func.isRequired,\r\n }).isRequired,\r\n};\r\n\r\nSDKSettingsPageInternal.defaultProps = {\r\n className: '',\r\n};\r\n\r\nexport const SDKSettingsPage = withSiteMap(SDKSettingsPageInternal, [processor.processPath, ...processorSet.basic]);\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\n\r\nexport const wizardContentStyle = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n flex: 1,\r\n overflow: 'hidden',\r\n borderRadius: 4,\r\n boxShadow: '0px 0px 2px 0px rgba(0, 0, 0, 0.12), 0px 2px 4px 0px rgba(0, 0, 0, 0.14)',\r\n border: '1px solid transparent',\r\n margin: '24px 43px 27px 43px',\r\n};\r\n\r\nconst getStyles = (_, { palette }) => ({\r\n defaultLayout: {\r\n height: '100%',\r\n width: '100%',\r\n '& .react-block-ui-none, .react-block-ui': {\r\n height: '100%',\r\n width: '100%',\r\n },\r\n '& .error': {\r\n color: '#A80000',\r\n },\r\n },\r\n mainContainer: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n overflow: 'hidden',\r\n height: '100%',\r\n width: '100%',\r\n },\r\n stepListContainer: {\r\n minWidth: '228px',\r\n overflow: 'hidden auto',\r\n },\r\n wizardContent: wizardContentStyle,\r\n stepContentContainer: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n flex: 1,\r\n overflow: 'auto',\r\n background: palette.neutralLighterAlt,\r\n padding: '24px 32px',\r\n '&>div': {\r\n marginBottom: 48,\r\n },\r\n '& .pmax-targeting-step-shell, & .budget-step': {\r\n paddingTop: 20,\r\n },\r\n },\r\n footerContainer: {\r\n borderTop: `1px solid ${palette.neutralQuaternaryAlt}`,\r\n padding: '16px 32px',\r\n },\r\n '@global': {\r\n '.fui-Toaster': {\r\n bottom: '100px !important',\r\n left: '60px !important',\r\n },\r\n },\r\n});\r\n\r\nexport const SDKWizardTemplate = ({ items }) => {\r\n const {\r\n Blocker = React.Fragment,\r\n LoadingShimmer,\r\n StepList,\r\n StepContainer,\r\n Footer,\r\n } = items;\r\n const classes = useDefaultStyles(getStyles);\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nSDKWizardTemplate.propTypes = {\r\n items: PropTypes.shape({\r\n Blocker: PropTypes.func,\r\n LoadingShimmer: PropTypes.func,\r\n StepList: PropTypes.func,\r\n StepContainer: PropTypes.func.isRequired,\r\n Footer: PropTypes.func,\r\n CancelDialog: PropTypes.func,\r\n StepHeader: PropTypes.func,\r\n }).isRequired,\r\n config: PropTypes.shape({\r\n title: PropTypes.string.isRequired,\r\n description: PropTypes.string.isRequired,\r\n }).isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport const SDKWizardStepProgress = React.memo(({ status }) => {\r\n if (status === 'selected') {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else if (status === 'default') {\r\n return (\r\n \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\r\nSDKWizardStepProgress.propTypes = {\r\n status: PropTypes.oneOf(['selected', 'behind', 'default']).isRequired,\r\n};\r\n","import React, { useMemo, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport {\r\n useWizardService,\r\n getCurrentStepId,\r\n} from '@bingads-webui-react/wizard';\r\nimport { StepList as ResponsiveStepList } from '@bingads-webui-react/wizard-ui-library';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { getAllExpandStepIds, parseStepConfig, getDefaultItemAriaLabel } from '@bingads-webui-react/step-progress-indicator';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport classNames from 'classnames';\r\nimport { CheckmarkCircle20Regular, Circle20Filled, Circle20Regular } from '@fluentui/react-icons';\r\nimport { SDKWizardStepProgress } from './sdk-wizard-step-progress';\r\n\r\nconst getStyles = () => ({\r\n listContainer: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n padding: 16,\r\n borderBottom: '1px solid #E0E0E0',\r\n },\r\n listItem: {\r\n cursor: 'pointer',\r\n },\r\n listItemProgress: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n icon: {\r\n '&.sdk-step-list-icon-selected': {\r\n color: '#0078D4',\r\n },\r\n '&.sdk-step-list-icon-behind': {\r\n color: '#107C10',\r\n },\r\n '&.sdk-step-list-icon-default': {\r\n color: '#C8C6C4',\r\n },\r\n },\r\n title: {\r\n '&.sdk-wizard-step-title-selected': {\r\n fontWeight: 'bold',\r\n },\r\n '&.sdk-wizard-step-title-default': {\r\n color: '#A19F9D',\r\n },\r\n },\r\n});\r\n\r\nconst getIcon = (step, styles) => {\r\n if (step.isSelected || step.containsSelected) {\r\n return ;\r\n } else if (step.isBehind) {\r\n return ;\r\n }\r\n\r\n return ;\r\n};\r\n\r\nconst getProgressStatus = (step) => {\r\n let status = 'default';\r\n if (step.isSelected || step.containsSelected) {\r\n status = 'selected';\r\n } else if (step.isBehind) {\r\n status = 'behind';\r\n }\r\n return status;\r\n};\r\n\r\nexport const SDKWizardStepListComponent = ({ steps, getOnItemClickFn, getItemAriaLabel }) => {\r\n const styles = useDefaultStyles(getStyles);\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n
    \r\n {_.map(steps, (step, i) => {\r\n if (!step.isEnabled || !step.title) {\r\n return null;\r\n }\r\n\r\n const nextStep = i < steps.length - 1 ? steps[i + 1] : null;\r\n const icon = getIcon(step, styles);\r\n const onItemClick = getOnItemClickFn ? getOnItemClickFn(step) : undefined;\r\n const onItemKeyDown = onItemClick ? (e) => {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n onItemClick();\r\n }\r\n } : undefined;\r\n\r\n const itemAriaLabel = getItemAriaLabel ? getItemAriaLabel(step) : getDefaultItemAriaLabel(step, i18n);\r\n const a11yProps = onItemClick ? {\r\n role: 'button',\r\n tabIndex: 0,\r\n onClick: onItemClick,\r\n onKeyDown: onItemKeyDown,\r\n 'aria-label': itemAriaLabel,\r\n } : {};\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n {icon}\r\n
    \r\n {i < steps.length - 1 && }\r\n
    \r\n
    \r\n {step.title}\r\n
    \r\n {step.renderDescription && step.renderDescription(step)}\r\n
    \r\n );\r\n })}\r\n
    \r\n );\r\n};\r\n\r\nSDKWizardStepListComponent.propTypes = {\r\n steps: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.string.isRequired,\r\n title: PropTypes.string,\r\n })).isRequired,\r\n getOnItemClickFn: PropTypes.func.isRequired,\r\n getItemAriaLabel: PropTypes.func.isRequired,\r\n};\r\n\r\nexport const SDKWizardStepListInternal = (props) => {\r\n const {\r\n config, getOnItemClickFn, getItemAriaLabel,\r\n } = props;\r\n const { state } = useWizardService();\r\n const currentStepId = getCurrentStepId(state);\r\n const currentFlow = useMemo(() => {\r\n if (state.context.currentFlow) {\r\n return state.context.currentFlow;\r\n }\r\n return getAllExpandStepIds(config);\r\n }, [config, state.context.currentFlow]);\r\n const steps = useMemo(() => parseStepConfig(config, currentStepId, currentFlow).filter(step => step.isEnabled && step.title), [config, currentFlow, currentStepId]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nSDKWizardStepListInternal.propTypes = {\r\n config: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.string.isRequired,\r\n title: PropTypes.string,\r\n steps: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.string.isRequired,\r\n title: PropTypes.string,\r\n })),\r\n })).isRequired,\r\n getOnItemClickFn: PropTypes.func.isRequired,\r\n getItemAriaLabel: PropTypes.func.isRequired,\r\n};\r\n\r\nexport const SDKWizardStepList = props => (\r\n \r\n);\r\n","import { useCallback, useContext } from 'react';\r\nimport { createOrUpdateCampaign } from '@bingads-webui-campaign-react/perf-max-data';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport Promise from 'bluebird';\r\n\r\nconst DEFAULT_CAMPAIGN_NAME = `Performance-Max-${Math.floor(Math.random() * 100)}`;\r\n\r\nexport function usePmaxCampaignAPI() {\r\n const { scope } = useContext(ScopeContext);\r\n const { campaignId } = scope.values;\r\n const createOrUpdateCampaignPromise = useCallback(({ Name, Language, Status } = { Name: DEFAULT_CAMPAIGN_NAME, Language: 'English', Status: 'Active' }) => {\r\n const campaignData = {\r\n Name,\r\n Status,\r\n Budget: {\r\n Amount: 25,\r\n Type: 'DailyStandard',\r\n },\r\n TimeZone: 'PacificTimeUSCanadaTijuana',\r\n CampaignType: 'PerformanceMax',\r\n BiddingScheme: {\r\n Type: 'MaxConversions', // Enhanced CPC will be supported for Performance Max campaigns in Q1\r\n },\r\n Languages: [Language],\r\n };\r\n\r\n let campaignPromise = () => Promise.resolve();\r\n if (!campaignId) {\r\n campaignPromise = () => createOrUpdateCampaign(campaignData).then((campaign) => {\r\n scope.append({ campaignId: campaign.Id });\r\n scope.history.replace({\r\n pathname: scope.history.location.pathname,\r\n search: scope.stringify(),\r\n });\r\n return campaign;\r\n });\r\n }\r\n\r\n return campaignPromise();\r\n }, [campaignId, scope]);\r\n\r\n return {\r\n createOrUpdateCampaignPromise,\r\n };\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n LayoutContainer,\r\n Layout,\r\n StepContainer,\r\n} from '@bingads-webui-react/wizard';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { CardFooter, SaveBlocker } from '@bingads-webui-react/wizard-ui-library';\r\n\r\nconst EmptyComponent = () => null;\r\n\r\nconst getStyles = () => ({\r\n '@global': {\r\n '.default-layout': {\r\n '& .main-container': {\r\n flexDirection: 'column',\r\n },\r\n '& .step-content-and-footer': {\r\n overflow: 'hidden',\r\n height: 'auto',\r\n },\r\n '& .step-content-container': {\r\n overflow: 'auto',\r\n },\r\n },\r\n },\r\n});\r\n\r\nexport const CustomLayoutContainer = ({\r\n template,\r\n Footer,\r\n StepList,\r\n stepListProps,\r\n InlineSupport,\r\n}) => {\r\n useDefaultStyles(getStyles);\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nCustomLayoutContainer.propTypes = {\r\n Footer: PropTypes.func.isRequired,\r\n StepList: PropTypes.func.isRequired,\r\n stepListProps: PropTypes.shape({}).isRequired,\r\n template: PropTypes.func.isRequired,\r\n InlineSupport: PropTypes.func,\r\n};\r\n\r\nCustomLayoutContainer.defaultProps = {\r\n InlineSupport: EmptyComponent,\r\n};\r\n\r\n","import React, { useContext, useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { Constants } from '@bingads-webui-theme-2018/theme-fluent';\r\nimport { useResponsiveSize } from '@bingads-webui-react/with-responsive-size';\r\nimport { Stack, ActionButton, DefaultButton } from '@fluentui/react';\r\nimport {\r\n useWizardService,\r\n getIsLastStep,\r\n getCurrentStepId,\r\n WIZARD_EVENTS,\r\n matchStepState,\r\n STEP_STATES,\r\n} from '@bingads-webui-react/wizard';\r\nimport {\r\n NextButton,\r\n BackButton,\r\n} from '@bingads-webui-react/wizard-ui-library';\r\nimport { PMAX_LITE_WIZARD_STEP_PATHS, useSubmitToMainBundle } from '@bingads-webui-campaign-react/pmax-lite-wizard-utils';\r\nimport { useIsInternalUser, usePilotsValue } from '@bingads-webui-campaign-react/basic-context-utils';\r\n\r\nconst getStyles = () => ({\r\n 'footerContainer-s': {\r\n margin: '-8px -16px',\r\n '& .step-back-button, .step-next-button': {\r\n width: 54,\r\n padding: '0px 8px',\r\n },\r\n '& .set-payment-later-link': {\r\n '& .ms-Button-label': {\r\n display: 'none',\r\n },\r\n },\r\n },\r\n 'footerContainer-m': {\r\n '& .step-back-button, .step-next-button': {\r\n width: 54,\r\n padding: '0px 8px',\r\n },\r\n '& .set-payment-later-link': {\r\n '& .ms-Button-label': {\r\n display: 'none',\r\n },\r\n },\r\n },\r\n});\r\n\r\nexport const CustomFooter = ({ supportMenu: SupportMenu, hideBackButton }) => {\r\n const i18n = useContext(I18nContext);\r\n const classes = useDefaultStyles(getStyles);\r\n const displayMode = useResponsiveSize(Constants.ResponsiveSizeBreakpoints);\r\n const isSmallSize = displayMode === 's' || displayMode === 'm';\r\n const isInternalUser = useIsInternalUser();\r\n const isChinaSignup = usePilotsValue('isCNMarketExpansionEnabled');\r\n\r\n const submitToMainBundle = useSubmitToMainBundle();\r\n const { state, send } = useWizardService();\r\n const isLastStep = getIsLastStep(state);\r\n const currentStepId = getCurrentStepId(state);\r\n const nextButtonText = isLastStep ? i18n.getString(_TL_('Go live')) : undefined;\r\n\r\n const isBlocking = matchStepState(state, STEP_STATES.FETCHING)\r\n || matchStepState(state, STEP_STATES.LOADING)\r\n || matchStepState(state, STEP_STATES.SAVING);\r\n\r\n // In Add funds step, account and campaign should already be activated, user cannot go back\r\n const shouldHideBackButton = hideBackButton\r\n || currentStepId === PMAX_LITE_WIZARD_STEP_PATHS.ADD_FUNDS\r\n || currentStepId === PMAX_LITE_WIZARD_STEP_PATHS.PREVIEW_ADD_FUNDS;\r\n\r\n const isPaymentStep = currentStepId === PMAX_LITE_WIZARD_STEP_PATHS.PAYMENT\r\n || currentStepId === PMAX_LITE_WIZARD_STEP_PATHS.PREVIEW_PAYMENT;\r\n\r\n const onClickSkipPayment = useCallback(() => {\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { isSkippingPayment: true });\r\n }, [send]);\r\n\r\n return (\r\n \r\n {currentStepId === PMAX_LITE_WIZARD_STEP_PATHS.CONVERSION_UPSELL ?\r\n \r\n {i18n.getString(_TL_('Skip'))}\r\n :\r\n \r\n {!shouldHideBackButton && }\r\n \r\n \r\n }\r\n \r\n {isPaymentStep &&\r\n \r\n {i18n.getString(_TL_('Set up payment later'))}\r\n \r\n }\r\n {!isChinaSignup && }\r\n \r\n \r\n );\r\n};\r\n\r\nCustomFooter.propTypes = {\r\n supportMenu: PropTypes.func.isRequired,\r\n hideBackButton: PropTypes.bool,\r\n};\r\n\r\nCustomFooter.defaultProps = {\r\n hideBackButton: false,\r\n};\r\n","import React from 'react';\r\nimport hoistNonReactStatics from 'hoist-non-react-statics';\r\nimport { getDisplayName } from '@bingads-webui-react/hoc-utils';\r\nimport { useWizardService, matchStepState, STEP_STATES } from '@bingads-webui-react/wizard';\r\n\r\nexport const withLoadingState = (WrappedComponent) => {\r\n const HOC = (props) => {\r\n const { state } = useWizardService();\r\n const isLoading = matchStepState(state, STEP_STATES.FETCHING) || matchStepState(state, STEP_STATES.LOADING);\r\n\r\n if (!isLoading) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n HOC.displayName = `withFetchingState(${getDisplayName(WrappedComponent)})`;\r\n\r\n hoistNonReactStatics(HOC, WrappedComponent);\r\n\r\n return HOC;\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 { BusyBlocker } from '@bingads-webui-react/wizard-ui-library';\r\n\r\nexport const ProcessingBlocker = ({ children }) => {\r\n const i18n = useContext(I18nContext);\r\n const loadingText = i18n.getString(_TL_('Processing...'));\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nProcessingBlocker.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { Constants } from '@bingads-webui-theme-2018/theme-fluent';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { useResponsiveSize } from '@bingads-webui-react/with-responsive-size';\r\n\r\nconst getStyles = (_, { palette }) => ({\r\n previewFlowLayout: {\r\n height: '100%',\r\n width: '100%',\r\n '& .react-block-ui-none, .react-block-ui': {\r\n height: '100%',\r\n width: '100%',\r\n },\r\n '& .error': {\r\n color: '#A80000',\r\n },\r\n background: palette.neutralLighterAlt,\r\n },\r\n stepContentAndFooter: {\r\n overflow: 'hidden',\r\n width: '100%',\r\n height: '100%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n scrollContainer: {\r\n width: '100%',\r\n height: '100%',\r\n overflow: 'auto',\r\n },\r\n stepContentContainer: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n maxWidth: '1080px',\r\n width: '100%',\r\n padding: '24px',\r\n margin: '0px auto',\r\n },\r\n stepListContainer: {\r\n maxWidth: '610px',\r\n marginBottom: '24px',\r\n },\r\n footerContainer: {\r\n borderTop: `1px solid ${palette.neutralQuaternaryAlt}`,\r\n padding: '16px 32px',\r\n },\r\n});\r\n\r\nexport const PreviewFlowTemplate = ({ items }) => {\r\n const {\r\n Blocker = React.Fragment,\r\n LoadingShimmer,\r\n StepList,\r\n StepContainer,\r\n Footer,\r\n } = items;\r\n const classes = useDefaultStyles(getStyles);\r\n const displayMode = useResponsiveSize(Constants.ResponsiveSizeBreakpoints);\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {StepList &&\r\n
    \r\n \r\n
    \r\n }\r\n {LoadingShimmer && }\r\n \r\n
    \r\n
    \r\n {Footer &&\r\n
    \r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nPreviewFlowTemplate.propTypes = {\r\n items: PropTypes.shape({\r\n Blocker: PropTypes.func,\r\n LoadingShimmer: PropTypes.func,\r\n StepList: PropTypes.func,\r\n StepContainer: PropTypes.func.isRequired,\r\n Footer: PropTypes.func,\r\n }).isRequired,\r\n};\r\n","import { useContext, useMemo } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport {\r\n useWizardService,\r\n getCurrentStepId,\r\n} from '@bingads-webui-react/wizard';\r\nimport { PMAX_LITE_WIZARD_STEP_PATHS } from '@bingads-webui-campaign-react/pmax-lite-wizard-utils';\r\n\r\nconst DISABLED_ON_ITEM_CLICK_FN = () => undefined;\r\n\r\nexport const useStepListConfig = () => {\r\n const i18n = useContext(I18nContext);\r\n const { state } = useWizardService();\r\n\r\n // In Add funds step, account and campaign should already be activated, user cannot go back\r\n const disableActionInStepList = getCurrentStepId(state) === PMAX_LITE_WIZARD_STEP_PATHS.ADD_FUNDS\r\n || getCurrentStepId(state) === PMAX_LITE_WIZARD_STEP_PATHS.PREVIEW_ADD_FUNDS;\r\n\r\n // Add some onboarding step id in config so user can click back button on horizontal step list\r\n const config = useMemo(() => ([{\r\n id: PMAX_LITE_WIZARD_STEP_PATHS.CAMPAIGN_MODE,\r\n }, {\r\n id: PMAX_LITE_WIZARD_STEP_PATHS.SMART_PAGE_EDITOR,\r\n }, {\r\n id: PMAX_LITE_WIZARD_STEP_PATHS.SMART_PAGE_CUSTOM_DOMAIN,\r\n }, {\r\n id: PMAX_LITE_WIZARD_STEP_PATHS.AD_ASSETS,\r\n title: i18n.getString(_TL_('Asset group')),\r\n }, {\r\n id: PMAX_LITE_WIZARD_STEP_PATHS.TARGETING,\r\n title: i18n.getString(_TL_('Targeting')),\r\n }, {\r\n id: PMAX_LITE_WIZARD_STEP_PATHS.BUDGET,\r\n title: i18n.getString(_TL_('Budget & bid strategy')),\r\n }, {\r\n id: PMAX_LITE_WIZARD_STEP_PATHS.PREVIEW_ASSETS,\r\n title: i18n.getString(_TL_('Preview campaign')),\r\n }, {\r\n id: PMAX_LITE_WIZARD_STEP_PATHS.ACCOUNT_DETAILS,\r\n title: i18n.getString(_TL_('Account details')),\r\n }, {\r\n id: PMAX_LITE_WIZARD_STEP_PATHS.PAYMENT,\r\n title: i18n.getString(_TL_('Payment')),\r\n }, {\r\n id: PMAX_LITE_WIZARD_STEP_PATHS.ADD_FUNDS,\r\n title: i18n.getString(_TL_('Add funds')),\r\n }, {\r\n id: PMAX_LITE_WIZARD_STEP_PATHS.PREVIEW_ACCOUNT,\r\n title: i18n.getString(_TL_('Account details')),\r\n }, {\r\n id: PMAX_LITE_WIZARD_STEP_PATHS.PREVIEW_PAYMENT,\r\n title: i18n.getString(_TL_('Payment')),\r\n }, {\r\n id: PMAX_LITE_WIZARD_STEP_PATHS.PREVIEW_ADD_FUNDS,\r\n title: i18n.getString(_TL_('Add funds')),\r\n }, {\r\n id: PMAX_LITE_WIZARD_STEP_PATHS.CONVERSION_UPSELL,\r\n }]), [i18n]);\r\n\r\n return useMemo(() => ({\r\n config,\r\n getOnItemClickFn: disableActionInStepList ? DISABLED_ON_ITEM_CLICK_FN : undefined,\r\n }), [config, disableActionInStepList]);\r\n};\r\n","import React from 'react';\r\nimport { StepList } from '@bingads-webui-react/wizard-ui-library';\r\nimport { HorizontalStepList } from '@bingads-webui-react/step-progress-indicator';\r\n\r\nimport { useStepListConfig } from './step-list-config';\r\n\r\nexport const PreviewFlowStepList = (props) => {\r\n const stepListProps = useStepListConfig();\r\n\r\n return (\r\n \r\n );\r\n};\r\n","import { CardTemplate, BlankTemplate, DefaultTemplate } from '@bingads-webui-react/wizard-ui-library';\r\nimport { PMAX_LITE_WIZARD_STEP_PATHS } from '@bingads-webui-campaign-react/pmax-lite-wizard-utils';\r\nimport {\r\n LanguageCountryStepShimmer,\r\n WebsiteStepShimmer,\r\n CampaignModeStepShimmer,\r\n} from '@bingads-webui-campaign-react/pmax-lite-shimmers';\r\n\r\nimport { withLoadingState } from './with-loading-state';\r\nimport { ProcessingBlocker } from './processing-blocker';\r\nimport { PreviewFlowTemplate } from './preview-flow-template';\r\nimport { PreviewFlowStepList } from './preview-flow-step-list';\r\n\r\nexport const layoutConfig = {\r\n [PMAX_LITE_WIZARD_STEP_PATHS.CAMPAIGN_CREATION_METHOD]: {\r\n template: CardTemplate,\r\n customShimmer: withLoadingState(LanguageCountryStepShimmer),\r\n },\r\n [PMAX_LITE_WIZARD_STEP_PATHS.LANGUAGE_COUNTRY]: {\r\n template: CardTemplate,\r\n customShimmer: withLoadingState(LanguageCountryStepShimmer),\r\n },\r\n [PMAX_LITE_WIZARD_STEP_PATHS.WEBSITE]: {\r\n template: CardTemplate,\r\n customShimmer: withLoadingState(WebsiteStepShimmer),\r\n },\r\n [PMAX_LITE_WIZARD_STEP_PATHS.GOOGLE_IMPORT]: {\r\n template: BlankTemplate,\r\n },\r\n [PMAX_LITE_WIZARD_STEP_PATHS.FACEBOOK_IMPORT]: {\r\n template: BlankTemplate,\r\n },\r\n [PMAX_LITE_WIZARD_STEP_PATHS.SMART_PAGE_SIGNUP]: {\r\n template: CardTemplate,\r\n customBlocker: ProcessingBlocker,\r\n },\r\n [PMAX_LITE_WIZARD_STEP_PATHS.SMART_PAGE_EDITOR]: {\r\n template: DefaultTemplate,\r\n noStepList: true,\r\n customBlocker: ProcessingBlocker,\r\n },\r\n [PMAX_LITE_WIZARD_STEP_PATHS.SMART_PAGE_CUSTOM_DOMAIN]: {\r\n template: DefaultTemplate,\r\n noStepList: true,\r\n customBlocker: ProcessingBlocker,\r\n },\r\n [PMAX_LITE_WIZARD_STEP_PATHS.CAMPAIGN_MODE]: {\r\n template: CardTemplate,\r\n customShimmer: withLoadingState(CampaignModeStepShimmer),\r\n },\r\n [PMAX_LITE_WIZARD_STEP_PATHS.AD_ASSETS]: {\r\n template: DefaultTemplate,\r\n },\r\n [PMAX_LITE_WIZARD_STEP_PATHS.TARGETING]: {\r\n template: DefaultTemplate,\r\n },\r\n [PMAX_LITE_WIZARD_STEP_PATHS.BUDGET]: {\r\n template: DefaultTemplate,\r\n },\r\n [PMAX_LITE_WIZARD_STEP_PATHS.PREVIEW_ASSETS]: {\r\n template: PreviewFlowTemplate,\r\n customStepList: PreviewFlowStepList,\r\n },\r\n [PMAX_LITE_WIZARD_STEP_PATHS.ACCOUNT_DETAILS]: {\r\n template: DefaultTemplate,\r\n },\r\n [PMAX_LITE_WIZARD_STEP_PATHS.PAYMENT]: {\r\n template: DefaultTemplate,\r\n customBlocker: ProcessingBlocker,\r\n },\r\n [PMAX_LITE_WIZARD_STEP_PATHS.ADD_FUNDS]: {\r\n template: DefaultTemplate,\r\n customBlocker: ProcessingBlocker,\r\n },\r\n [PMAX_LITE_WIZARD_STEP_PATHS.PREVIEW_ACCOUNT]: {\r\n template: PreviewFlowTemplate,\r\n customStepList: PreviewFlowStepList,\r\n },\r\n [PMAX_LITE_WIZARD_STEP_PATHS.PREVIEW_PAYMENT]: {\r\n template: PreviewFlowTemplate,\r\n customStepList: PreviewFlowStepList,\r\n },\r\n [PMAX_LITE_WIZARD_STEP_PATHS.PREVIEW_ADD_FUNDS]: {\r\n template: PreviewFlowTemplate,\r\n customStepList: PreviewFlowStepList,\r\n },\r\n [PMAX_LITE_WIZARD_STEP_PATHS.CONVERSION_UPSELL]: {\r\n template: DefaultTemplate,\r\n noStepList: true,\r\n },\r\n};\r\n","export const getStyles = () => ({\r\n animationContainer: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n '& .ms-ProgressIndicator': {\r\n width: 370,\r\n marginTop: 30,\r\n '@media (max-width:600px)': {\r\n width: 200,\r\n },\r\n },\r\n },\r\n});\r\n\r\nexport const getStylesForFluentUi = mobileDeviceQuery => ({\r\n animationImage: {\r\n root: {\r\n minHeight: 240,\r\n marginTop: 34,\r\n },\r\n image: {\r\n maxHeight: 310,\r\n [mobileDeviceQuery]: {\r\n width: '100%',\r\n },\r\n },\r\n },\r\n animationLabel: {\r\n root: {\r\n textAlign: 'center',\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n});\r\n","import React, { useCallback, useContext, useState, useEffect, useRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\n\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { Label, Image, ProgressIndicator } from '@fluentui/react';\r\nimport { TileHeader } from '@bingads-webui-campaign-react/goals-and-website-tile';\r\n\r\nimport { getStyles, getStylesForFluentUi } from './styles';\r\nimport animationImg from '../media/animation.gif';\r\n\r\nconst TEXT_SWITCHING_INTERVAL = 3 * 1000;\r\n\r\nexport function ProcessingAnimation(props) {\r\n const {\r\n title,\r\n description,\r\n rollingTexts,\r\n rollingInterval,\r\n mobileDeviceQuery,\r\n customImg,\r\n showIcon,\r\n useProgressIndicator,\r\n displayMode,\r\n } = props;\r\n const classes = useDefaultStyles(getStyles);\r\n const i18n = useContext(I18nContext);\r\n\r\n const [rollingTextIndex, setRollingTextIndex] = useState(0);\r\n const timerRef = useRef(null);\r\n\r\n const styles = getStylesForFluentUi(mobileDeviceQuery);\r\n\r\n const stopRolling = useCallback(() => {\r\n if (timerRef && timerRef.current) {\r\n clearInterval(timerRef.current);\r\n }\r\n setRollingTextIndex(0);\r\n }, []);\r\n\r\n const startRolling = useCallback(() => {\r\n if (timerRef && timerRef.current) {\r\n clearInterval(timerRef.current);\r\n }\r\n timerRef.current = setInterval(() => {\r\n if (rollingTextIndex === rollingTexts.length - 1) {\r\n setRollingTextIndex(0);\r\n } else {\r\n setRollingTextIndex(rollingTextIndex + 1);\r\n }\r\n }, rollingInterval);\r\n }, [rollingInterval, rollingTextIndex, rollingTexts.length]);\r\n\r\n useEffect(() => {\r\n startRolling();\r\n }, [startRolling]);\r\n\r\n useEffect(() => () => {\r\n stopRolling();\r\n }, [stopRolling]);\r\n\r\n return (\r\n
    \r\n {description}}\r\n displayMode={displayMode}\r\n hideIcon={!showIcon}\r\n />\r\n
    \r\n {useProgressIndicator && }\r\n {!useProgressIndicator && }\r\n \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nProcessingAnimation.propTypes = {\r\n title: PropTypes.string,\r\n description: PropTypes.string,\r\n rollingTexts: PropTypes.arrayOf(PropTypes.string),\r\n rollingInterval: PropTypes.number,\r\n mobileDeviceQuery: PropTypes.string,\r\n customImg: PropTypes.string,\r\n displayMode: PropTypes.string,\r\n showIcon: PropTypes.bool,\r\n useProgressIndicator: PropTypes.bool,\r\n};\r\n\r\nProcessingAnimation.defaultProps = {\r\n title: '',\r\n description: '',\r\n rollingTexts: [],\r\n rollingInterval: TEXT_SWITCHING_INTERVAL,\r\n mobileDeviceQuery: '@media (max-width:600px)',\r\n customImg: null,\r\n displayMode: '',\r\n showIcon: false,\r\n useProgressIndicator: false,\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { Constants } from '@bingads-webui-theme-2018/theme-fluent';\r\nimport { useResponsiveSize } from '@bingads-webui-react/with-responsive-size';\r\nimport { ProcessingAnimation } from '@bingads-webui-campaign-react/processing-animation';\r\nimport { useWizardService, getWizardData } from '@bingads-webui-react/wizard';\r\n\r\nconst getStyles = () => ({\r\n animationContainer: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n height: '100%',\r\n width: '100%',\r\n overflow: 'auto',\r\n background: '#ffffff',\r\n backgroundImage: 'radial-gradient(at 2.7% 92.9%, hsl(200, 35%, 93%) 0px, transparent 50%),radial-gradient(at 100.2% 77.6%, hsl(200, 35%, 93%) 0px, transparent 50%),radial-gradient(at 1.3% 13.0%, #f0f3f5 0px, transparent 50%),radial-gradient(at 55.5% 13.8%, #fcf9f5 0px, transparent 50%),radial-gradient(at 55.7% 72.1%, #ffffff 0px, transparent 50%),radial-gradient(at 96.0% 12.2%, hsl(200, 35%, 93%) 0px, transparent 50%)',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n zIndex: 1100, // To cover the ui-blocker\r\n '& .processing-animation-container': {\r\n width: 700,\r\n display: 'flex',\r\n flexFlow: 'column',\r\n alignItems: 'center',\r\n padding: '30px 60px',\r\n background: '#FFFFFF',\r\n boxShadow: '0px 0.3px 0.9px rgba(0, 0, 0, 0.1), 0px 1.6px 3.6px rgba(0, 0, 0, 0.13)',\r\n borderRadius: '2px',\r\n },\r\n },\r\n 'animationContainer-l': {\r\n '& .processing-animation-container': {\r\n width: 618,\r\n },\r\n },\r\n 'animationContainer-m': {\r\n '& .processing-animation-container': {\r\n width: 424,\r\n padding: 20,\r\n },\r\n },\r\n 'animationContainer-s': {\r\n '& .processing-animation-container': {\r\n width: 312,\r\n padding: 16,\r\n },\r\n },\r\n});\r\n\r\nexport const AnimationBlockerView = (props) => {\r\n const i18n = useContext(I18nContext);\r\n const classes = useDefaultStyles(getStyles);\r\n const displayMode = useResponsiveSize(Constants.ResponsiveSizeBreakpoints);\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nAnimationBlockerView.propTypes = {\r\n title: PropTypes.string,\r\n description: PropTypes.string,\r\n rollingTexts: PropTypes.arrayOf(PropTypes.string),\r\n className: PropTypes.string,\r\n showIcon: PropTypes.bool,\r\n useProgressIndicator: PropTypes.bool,\r\n};\r\n\r\nAnimationBlockerView.defaultProps = {\r\n title: '',\r\n description: '',\r\n rollingTexts: null,\r\n className: '',\r\n showIcon: null,\r\n useProgressIndicator: null,\r\n};\r\n\r\nexport const AnimationBlocker = (props) => {\r\n const { state } = useWizardService();\r\n const { isShowingAnimation } = getWizardData(state);\r\n\r\n if (!isShowingAnimation) {\r\n return null;\r\n }\r\n\r\n return ;\r\n};\r\n","import React, { useContext } from 'react';\r\nimport { AnimationBlockerView } from '@bingads-webui-campaign-react/pmax-lite-wizard';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport bingAdsIcon from './bing-ads-icon.png';\r\n\r\nconst getStyles = () => ({\r\n sdkNormalBlocker: {\r\n '&.animation-blocker': {\r\n background: '#fff',\r\n '& .processing-animation-container': {\r\n boxShadow: 'none',\r\n },\r\n },\r\n '& .animation-description': {\r\n fontSize: 14,\r\n },\r\n '& .animation-container .ms-Label': {\r\n fontSize: 12,\r\n },\r\n },\r\n header: {\r\n display: 'block',\r\n textAlign: 'center',\r\n '& h1': {\r\n margin: '8px 0',\r\n fontSize: 20,\r\n lineHeight: '28px',\r\n },\r\n },\r\n bingAdsIcon: {\r\n width: 36,\r\n height: 32,\r\n },\r\n});\r\n\r\nexport const SDKNormalBlocker = () => {\r\n const i18n = useContext(I18nContext);\r\n const classes = useDefaultStyles(getStyles);\r\n\r\n return (\r\n \r\n {i18n.getString(_TL_('Microsoft\r\n

    {i18n.getString(_TL_('Checking your website'))}

    \r\n
    \r\n )}\r\n description={i18n.getString(_TL_('We\\'ll use your website content to customize your campaign setup and suggest settings to help you get your desired results.'))}\r\n rollingTexts={[\r\n i18n.getString(_TL_('Please wait while we crawl your website.')),\r\n i18n.getString(_TL_('Almost ready...')),\r\n ]}\r\n showIcon={false}\r\n useProgressIndicator={false}\r\n />\r\n );\r\n};\r\n","import React, { useContext } from 'react';\r\nimport {\r\n Spinner,\r\n} from '@fluentui/react-components';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport bingAdsIcon from './bing-ads-icon.png';\r\n\r\nconst getStyles = () => ({\r\n sdkNoFinalUrlBlocker: {\r\n height: '100%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n '& svg .fui-Spinner__Tail': {\r\n animationDuration: '2s !important',\r\n animationIterationCount: 'infinite !important',\r\n },\r\n },\r\n blockerContent: {\r\n textAlign: 'center',\r\n },\r\n bingAdsIcon: {\r\n marginBottom: 16,\r\n },\r\n});\r\n\r\nexport const SDKNoFinalUrlBlocker = () => {\r\n const i18n = useContext(I18nContext) as any;\r\n const classes = useDefaultStyles(getStyles);\r\n\r\n return (\r\n
    \r\n
    \r\n {i18n.getString(_TL_('Microsoft\r\n \r\n
    \r\n
    \r\n );\r\n};\r\n","import React from 'react';\r\nimport { getFinalURL } from '@bingads-webui-campaign-react/sdk-utils';\r\nimport { SDKNormalBlocker } from './normal-blocker';\r\nimport { SDKNoFinalUrlBlocker } from './no-final-url-blocker';\r\n\r\nexport const SDKWizardAnimationBlocker = () => {\r\n const hasFinalUrl = !!getFinalURL();\r\n\r\n return hasFinalUrl ? : ;\r\n};\r\nexport { SDKNormalBlocker };\r\n","import _ from 'underscore';\r\nimport { useEffect, useContext, useState } from 'react';\r\nimport { getSDKParams, getLanguageFromMkt } from '@bingads-webui-campaign-react/sdk-utils';\r\nimport { PreferenceContext } from '@bingads-webui-react/preference-context';\r\nimport { usePreference, preferenceNames } from '@bingads-webui-campaign-react/pmax-lite-data';\r\n\r\n\r\nexport const useUpdatePreferencesFromURL = (afterResetPreferences) => {\r\n const preferenceService = useContext(PreferenceContext);\r\n const [{ value: websiteUrlPreference }, { update: updateWebsitePreference }] = usePreference(preferenceNames.WebsiteUrl);\r\n const [, { update: updateLanguagePreference }] = usePreference(preferenceNames.SelectedLanguage);\r\n const [, { update: updateCountryPreference }] = usePreference(preferenceNames.SelectedCountry);\r\n const [, { update: updateMktPrefillEnabledPreference }]\r\n = usePreference(preferenceNames.MarketPrefillEnabled);\r\n const { mkt, finalUrl, country } = getSDKParams();\r\n const language = getLanguageFromMkt(mkt);\r\n const [preferenceReady, setPreferenceReady] = useState(false);\r\n\r\n useEffect(() => {\r\n if (preferenceService && _.isFunction(preferenceService.setAtUserLevel) && !preferenceReady) {\r\n updateMktPrefillEnabledPreference(false);\r\n updateWebsitePreference(finalUrl);\r\n updateLanguagePreference(language);\r\n updateCountryPreference(country);\r\n setPreferenceReady(true);\r\n\r\n if (afterResetPreferences) {\r\n afterResetPreferences({\r\n websiteUrlPreference,\r\n finalUrl,\r\n language,\r\n country,\r\n });\r\n }\r\n }\r\n }, [preferenceService.setAtUserLevel, country, finalUrl, language, updateCountryPreference, updateLanguagePreference, updateWebsitePreference, preferenceService, updateMktPrefillEnabledPreference, websiteUrlPreference, preferenceReady, afterResetPreferences]);\r\n\r\n return {\r\n preferenceReady,\r\n };\r\n};\r\n","import { COUNTRY_STRINGS as ORIGINLA_COUNTRY_STRINGS } from '@bingads-webui-campaign/ads-globalization';\r\n\r\nexport const COUNTRY_STRINGS = {\r\n ...ORIGINLA_COUNTRY_STRINGS,\r\n CN: _TL_('China'),\r\n};\r\n","import _ from 'underscore';\r\nimport React, { useContext, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { Constants } from '@bingads-webui-theme-2018/theme-fluent';\r\nimport { useResponsiveSize } from '@bingads-webui-react/with-responsive-size';\r\nimport { MSSupportMenuButton } from '@bingads-webui-react/support-help-options-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { InstrumentationContext } from '@bingads-webui-react/hoc-with-instrumentation';\r\n\r\nconst getStyles = () => ({\r\n container: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n height: '100%',\r\n borderLeft: '1px solid #F2F2F2',\r\n },\r\n 'container-m': {\r\n '& .ms-support-menu-button-contact-us': {\r\n fontSize: '12px !important',\r\n },\r\n },\r\n 'container-s': {\r\n '& .ms-support-menu-button-contact-us': {\r\n fontSize: '12px !important',\r\n },\r\n },\r\n});\r\n\r\nexport const SupportMenuComponent = ({ supportOptions }) => {\r\n const i18n = useContext(I18nContext);\r\n const classes = useDefaultStyles(getStyles);\r\n const displayMode = useResponsiveSize(Constants.ResponsiveSizeBreakpoints);\r\n const instrumentation = useContext(InstrumentationContext);\r\n\r\n const uiActivity = useMemo(() => {\r\n if (instrumentation && instrumentation.pmaxLiteSignup) {\r\n return instrumentation.pmaxLiteSignup.create().supportControl.create();\r\n }\r\n return { trace: _.noop, error: _.noop };\r\n }, [instrumentation]);\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nSupportMenuComponent.propTypes = {\r\n supportOptions: PropTypes.shape({\r\n IfShowLiveChat: PropTypes.bool,\r\n RequestCallText: PropTypes.string,\r\n headerText: PropTypes.string,\r\n customSupportOptions: PropTypes.shape({\r\n headerText: PropTypes.string,\r\n supportOptions: PropTypes.arrayOf(PropTypes.shape({\r\n text: PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.element,\r\n ]),\r\n onClick: PropTypes.func,\r\n })),\r\n }),\r\n }).isRequired,\r\n};\r\n\r\nexport const SupportMenu = () => {\r\n const serverContext = useContext(ServerContext);\r\n\r\n return (\r\n \r\n );\r\n};\r\n","import React, { useContext } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { SupportMenuComponent } from '@bingads-webui-campaign-react/pmax-support-components';\r\n\r\nexport const SDKSupportMenu = () => {\r\n const { SupportOptions } = useContext(ServerContext);\r\n const i18n = useContext(I18nContext);\r\n const headerText = i18n.getString(_TL_('Microsoft Advertising'));\r\n return (\r\n \r\n );\r\n};\r\n","import { CampaignTypes, DeviceTypes, seasonalityCampaignTypeFromODataValue } from './scope-types';\r\nimport { SeasonalitySchema } from './seasonality-schema';\r\nimport { DataExclusionSchema } from './data-exclusions-schema';\r\nimport { InlineEdit } from './inline-edit';\r\nimport { columnChooser } from './column-chooser';\r\n\r\nexport const i18nMap = {\r\n CampaignTypes,\r\n DeviceTypes,\r\n SeasonalitySchema,\r\n InlineEdit,\r\n seasonalityCampaignTypeFromODataValue,\r\n columnChooser,\r\n DataExclusionSchema,\r\n};\r\n\r\nexport function safeGetString(i18n, map, key, defaultStmt) {\r\n const englishString = map[key];\r\n\r\n if (!englishString) {\r\n // TODO: log error to kusto\r\n if (!defaultStmt) {\r\n return key;\r\n }\r\n return i18n.getString(defaultStmt);\r\n }\r\n\r\n return i18n.getString(englishString);\r\n}\r\n","export const CampaignTypes = {\r\n Shopping: _TL_('Shopping'),\r\n Default: _TL_('Search'),\r\n PerformanceMax: _TL_('Performance Max'),\r\n Audience: _TL_('Audience'),\r\n};\r\n\r\nexport const DeviceTypes = {\r\n Computers: _TL_('Computers'),\r\n Smartphones: _TL_('Smartphones'),\r\n Tablets: _TL_('Tablets'),\r\n};\r\n\r\nexport const seasonalityCampaignTypeToBulkUpsertValue = {\r\n Search: 'Search',\r\n Shopping: 'Shopping',\r\n PerformanceMax: 'PerformanceMax',\r\n Audience: 'Audience',\r\n};\r\n\r\nexport const seasonalityCampaignTypeFromODataValue = {\r\n Default: 'Default',\r\n Shopping: 'Shopping',\r\n PerformanceMax: 'PerformanceMax',\r\n Audience: 'Audience',\r\n};\r\n","export const SeasonalitySchema = {\r\n Schema_SeasonalityAdjustment_Property_Name: _TL_('Seasonality adjustment name'),\r\n Schema_SeasonalityAdjustment_Property_CampaignName: _TL_('Campaign name'),\r\n Schema_SeasonalityAdjustment_Property_CampaignTypeFilter: _TL_('Campaign type'),\r\n Schema_SeasonalityAdjustment_Property_DeviceTypeFilter: _TL_('Device type'),\r\n Schema_SeasonalityAdjustment_Property_AdjustmentPercentage: _TL_('Adjustment percentage'),\r\n Schema_SeasonalityAdjustment_Property_StartDate: _TL_('Start time'),\r\n Schema_SeasonalityAdjustment_Property_EndDate: _TL_('End time'),\r\n};\r\n","export const InlineEdit = {\r\n Grid_Edit_Cell: _TL_('Edit cell of column {{columnName}} and row {{rowIndex}}'),\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 KoSchema_String_RemainingCharactersText: _TL_('{{count}} characters remaining'),\r\n KoSchema_String_ExceededCharactersText: _TL_('Exceeded by {{count}} characters'),\r\n SimpleForm_Button_Save: _TL_('Save'),\r\n SimpleForm_Button_Cancel: _TL_('Cancel'),\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 conversionAdjustment_Options: _TL_('conversion adjustment options'),\r\n conversionAdjustment_Multiplier: _TL_('conversion rate adjustment'),\r\n};\r\n","export const columnChooser = {\r\n Attributes: _TL_('Attributes'),\r\n ColumnChooser_Add: _TL_('Add'),\r\n ColumnChooser_AddAllInList: _TL_('Add all columns'),\r\n ColumnChooser_AddColumn: _TL_('Add Column {{columnName}}'),\r\n ColumnChooser_Added: _TL_('Added'),\r\n ColumnChooser_Apply: _TL_('Apply'),\r\n ColumnChooser_ApplySavedColumns: _TL_('Apply'),\r\n ColumnChooser_AvailableColumnsHeader: _TL_('Available columns'),\r\n ColumnChooser_Cancel: _TL_('Cancel'),\r\n ColumnChooser_CancelReplace: _TL_('Cancel'),\r\n ColumnChooser_ConfirmCancel: _TL_('Cancel'),\r\n ColumnChooser_ConfirmRemove: _TL_('Remove'),\r\n ColumnChooser_ColumnNameAlreadyExistsPrompt: _TL_('There is already a set of columns with this name: {0}'),\r\n ColumnChooser_CustomColumnsCategory: _TL_('Custom Columns'),\r\n ColumnChooser_Disabled: _TL_('Add'),\r\n ColumnChooser_Entry: _TL_('Columns'),\r\n ColumnChooser_Header: _TL_('Modify columns'),\r\n ColumnChooser_IfReplaceColumnName: _TL_('Do you want to replace it?'),\r\n ColumnChooser_ModifyColumns: _TL_('Modify columns'),\r\n ColumnChooser_PromptBeforeRemove: _TL_('Are you sure you want to remove saved item: {0}'),\r\n ColumnChooser_Remove: _TL_('Remove'),\r\n ColumnChooser_RemoveAllInList: _TL_('Remove all columns'),\r\n ColumnChooser_RemoveAllSelected: _TL_('Remove all selected columns'),\r\n ColumnChooser_NoSearchResult: _TL_('No results found'),\r\n ColumnChooser_RemoveColumn: _TL_('Remove Column {{columnName}}'),\r\n ColumnChooser_RemoveSavedColumns: _TL_('Remove'),\r\n ColumnChooser_SaveColumnDescription: _TL_('Save this set of columns'),\r\n ColumnChooser_Search_Column: _TL_('Search column'),\r\n ColumnChooser_SelectedColumnsHeader: _TL_('Selected columns (drag and drop to reorder)'),\r\n ColumnChooser_SelectedColumnsHeader_BottomHalf: _TL_('Selected columns'),\r\n ColumnChooser_SelectedColumnsHeader_TopHalf: _TL_('Selected rows'),\r\n ColumnChooser_SubHeader: _TL_(''),\r\n ColumnChooser_ConfirmReplace: _TL_('Replace'),\r\n ColumnsMenu_Custom: _TL_('Custom'),\r\n CustomColumn_DoesNotExist: _TL_('This custom column does not exists.'),\r\n ColumnName_Clicks: _TL_('Clicks'),\r\n ColumnName_Impressions: _TL_('Impr.'),\r\n ColumnName_Spend: _TL_('Spend'),\r\n ColumnChooser_LiftColumn: _TL_('You have lifted the {{columnName}} column in position {{positionFrom}}.'),\r\n ColumnChooser_MoveColumn: _TL_('You have moved the {{columnName}} column from position {{positionFrom}} to position {{positionTo}}.'),\r\n ColumnChooser_DropColumn: _TL_('You have dropped the {{columnName}} column. You have moved the {{columnName}} column from position {{positionFrom}} to position {{positionTo}}.'),\r\n ColumnChooser_RemovedColumns: _TL_('You have removed the {{columnNames}} columns.'),\r\n ColumnChooser_RemovedColumn: _TL_('You have removed the {{columnNames}} column.'),\r\n ColumnChooser_AddedColumns: _TL_('You have added the {{columnNames}} columns.'),\r\n ColumnChooser_AddedColumn: _TL_('You have added the {{columnNames}} column.'),\r\n};\r\n","export const DataExclusionSchema = {\r\n Schema_SeasonalityAdjustment_Property_Name: _TL_('Data exclusion name'),\r\n Schema_SeasonalityAdjustment_Property_CampaignName: _TL_('Campaign name'),\r\n Schema_SeasonalityAdjustment_Property_CampaignTypeFilter: _TL_('Campaign type'),\r\n Schema_SeasonalityAdjustment_Property_DeviceTypeFilter: _TL_('Device type'),\r\n Schema_SeasonalityAdjustment_Property_AdjustmentPercentage: _TL_('Adjustment percentage'),\r\n Schema_SeasonalityAdjustment_Property_StartDate: _TL_('Start time'),\r\n Schema_SeasonalityAdjustment_Property_EndDate: _TL_('End time'),\r\n};\r\n","export const sampleSchema = {\r\n name: 'Seasonality Schema',\r\n type: 'object',\r\n properties: {\r\n Name: {\r\n type: 'string',\r\n required: true,\r\n maxLength: 255,\r\n },\r\n Description: {\r\n type: 'string',\r\n maxLength: 1000,\r\n },\r\n AdjustmentPercentage: {\r\n // type: 'number',\r\n // seems like this is totally useless\r\n type: 'decimal',\r\n required: true,\r\n minimum: 0,\r\n maximum: 900,\r\n },\r\n },\r\n};\r\n","export const AdjustmentType = {\r\n SeasonalityAdjustment: 'SeasonalityAdjustment',\r\n DataExclusion: 'DataExclusion',\r\n};\r\n\r\nexport function isDataExclusion(adjustmentType) {\r\n return adjustmentType === AdjustmentType.DataExclusion;\r\n}","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { Label } from '@bingads-webui-react/primitive';\r\nimport { ValidationGroup, Input } from '@bingads-webui-react/primitive-validation';\r\nimport { sampleSchema } from './sample-schema';\r\nimport { AdjustmentType, isDataExclusion } from '../adjustment-type';\r\n\r\nconst schema = sampleSchema;\r\n\r\nfunction getStyles() {\r\n return {\r\n textInput: {\r\n width: '50%',\r\n marginBottom: '16px',\r\n '& div[role=alert]': {\r\n paddingTop: 5,\r\n fontSize: 12,\r\n },\r\n },\r\n };\r\n}\r\n\r\nfunction SeasonalityTextInput(props) {\r\n const {\r\n classes,\r\n i18n,\r\n showValidationError,\r\n onValidate,\r\n onChangeName,\r\n onChangeDescription,\r\n name,\r\n description,\r\n adjustmentType,\r\n } = props;\r\n\r\n function onChange(result) {\r\n onValidate(result.isValid);\r\n onChangeName(result.data.Name);\r\n onChangeDescription(result.data.Description);\r\n }\r\n\r\n return (\r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nSeasonalityTextInput.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n classes: PropTypes.shape({}).isRequired,\r\n onChangeName: PropTypes.func.isRequired,\r\n onChangeDescription: PropTypes.func.isRequired,\r\n onValidate: PropTypes.func.isRequired,\r\n adjustmentType: PropTypes.oneOf([AdjustmentType.DataExclusion, AdjustmentType.SeasonalityAdjustment]).isRequired,\r\n showValidationError: PropTypes.bool,\r\n name: PropTypes.string,\r\n description: PropTypes.string,\r\n};\r\n\r\nSeasonalityTextInput.defaultProps = {\r\n showValidationError: false,\r\n name: undefined,\r\n description: undefined,\r\n};\r\n\r\nconst Wrapped = _.compose(\r\n withI18nConsumer,\r\n Comp => withDefaultStyles(Comp, getStyles)\r\n)(SeasonalityTextInput);\r\n\r\nexport { Wrapped as SeasonalityTextInput };\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nfunction getStyles(__, { palette = {} }) {\r\n return {\r\n errorContainer: {\r\n color: palette.redDark,\r\n fontSize: 12, // If not set, the default font size is 14px\r\n },\r\n };\r\n}\r\n\r\nfunction Error(props) {\r\n const { classes, message } = props;\r\n\r\n return (\r\n
    \r\n {message}\r\n
    \r\n );\r\n}\r\n\r\nError.propTypes = {\r\n classes: PropTypes.shape({}).isRequired,\r\n message: PropTypes.string,\r\n};\r\n\r\nError.defaultProps = {\r\n message: '',\r\n};\r\n\r\nconst Wrapped = withDefaultStyles(Error, getStyles);\r\n\r\nexport { Wrapped as Error };\r\n","export const i18nData = {\r\n CampaignSelector_List_Header: _TL_('Available entities: {{itemCount}}'),\r\n CampaignSelector_EmptyList_Content: _TL_('No items found'),\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 EntitySelector_Search_Placeholder: _TL_('search'),\r\n CampaignSelector_SelectCampaign: _TL_('Select campaign'),\r\n CampaignSelector_SelectCampaigns: _TL_('Select campaigns'),\r\n CampaignSelector_Result_List_Header: _TL_('selected entities: {{itemCount}}'),\r\n CampaignSelector_Result_Action_Bar: _TL_('Select all on this page'),\r\n 'Remove all': _TL_('Remove all'),\r\n Done: _TL_('Done'),\r\n Cancel: _TL_('Cancel'),\r\n};\r\n\r\n","/* eslint-disable jsx-a11y/label-has-for */\r\nimport React, { useRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { CampaignSelector } from '@bingads-webui-campaign-react/campaign-selector';\r\nimport { campaignMultiSelectorWithoutDropdownStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport jsdata from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport { buildMergedI18n } from '@bingads-webui-campaign-react/portfolio-bid-strategy-shared';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { Error } from './error';\r\nimport { i18nData } from '../i18n-map/campaign-selector-i18n';\r\nimport { AdjustmentType, isDataExclusion } from '../adjustment-type';\r\n\r\nconst PAGE_SIZE = 20;\r\n\r\nfunction getStyles(dummy, { palette = {} }) {\r\n const textOverflowStyle = {\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n };\r\n\r\n return {\r\n campaignSelector: {\r\n ...campaignMultiSelectorWithoutDropdownStyle({ palette }),\r\n '& .ba-campaign-selector .multi-selector-content > .ba-entity-selector': {\r\n minWidth: 600,\r\n },\r\n marginTop: 8,\r\n marginLeft: 30,\r\n marginBottom: 20,\r\n position: 'relative',\r\n\r\n '& .error': {\r\n marginTop: 5,\r\n },\r\n },\r\n rowItem: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: 8,\r\n maxWidth: 'unset !important',\r\n },\r\n campaignNameColumn: {\r\n width: 300,\r\n marginRight: 10,\r\n ...textOverflowStyle,\r\n },\r\n campaignTypeColumn: {\r\n width: 130,\r\n marginRight: 10,\r\n ...textOverflowStyle,\r\n },\r\n arrowIcon: {\r\n marginLeft: '0 !important',\r\n marginRight: '0 !important',\r\n },\r\n selectionCount: {\r\n position: 'absolute',\r\n top: 36,\r\n left: 9,\r\n background: '#fff',\r\n pointerEvents: 'none',\r\n },\r\n };\r\n}\r\n\r\nfunction getErrorMessage(selectedCampaigns) {\r\n if (_.isEmpty(selectedCampaigns)) {\r\n return _TL_('Campaign is required. Select one or more campaigns.');\r\n }\r\n\r\n return _TL_('');\r\n}\r\n\r\nexport function validator(selectedCampaigns) {\r\n return _.isEmpty(getErrorMessage(selectedCampaigns));\r\n}\r\n\r\nfunction renderHeaderFactory({ classes, i18n, isSelected }) {\r\n return function renderHeader(itemCount) {\r\n return (\r\n
    \r\n
    \r\n \r\n {`${i18n.getString(isSelected ? _TL_('Selected campaigns:') : _TL_('Campaigns:'))} ${itemCount}`}\r\n \r\n
    \r\n
    \r\n \r\n {i18n.getString(_TL_('Campaign type'))}\r\n \r\n
    \r\n
    \r\n );\r\n };\r\n}\r\n\r\nfunction renderItemFactory({\r\n classes, i18n, isSelected, permissions,\r\n}) {\r\n return function renderItem(item, index, forwardedRef) {\r\n const { isAddedToResultList } = item;\r\n const rowItemClass = isAddedToResultList ? 'added-to-result-list' : '';\r\n const addIconClass = isAddedToResultList ? 'disabled' : 'enabled';\r\n const CampaignTypeMapping = {\r\n Default: 'Search',\r\n Shopping: 'Shopping',\r\n };\r\n if (permissions.dynamic.PerformanceMaxCampaigns) {\r\n CampaignTypeMapping.PerformanceMax = 'PerformanceMax';\r\n }\r\n if (permissions.IsDataExclusionForAudienceCampaignEnabled) {\r\n CampaignTypeMapping.Audience = 'Audience';\r\n }\r\n const campaignType = i18n.getString(_TL_(CampaignTypeMapping[item.CampaignType]));\r\n\r\n return (\r\n
    \r\n
    \r\n {item.name}\r\n
    \r\n
    \r\n {campaignType}\r\n
    \r\n {isSelected ?\r\n :\r\n \r\n }\r\n
    \r\n );\r\n };\r\n}\r\n\r\nfunction SeasonalityCampaignSelector(props) {\r\n const {\r\n classes,\r\n selectedCampaigns,\r\n onSelectCampaigns,\r\n showValidationError,\r\n i18n,\r\n adjustmentType,\r\n permissions,\r\n } = props;\r\n\r\n const selectorRef = useRef(null);\r\n\r\n const errorMessage = showValidationError ? i18n.getString(getErrorMessage(selectedCampaigns)) : '';\r\n\r\n const mergedI18n = buildMergedI18n({ i18n, legacyStringMap: i18nData });\r\n\r\n const campaignType = [\"Enum.CampaignType'Default'\", \"Enum.CampaignType'Shopping'\"];\r\n\r\n if (permissions.dynamic.PerformanceMaxCampaigns) {\r\n campaignType.push(\"Enum.CampaignType'PerformanceMax'\");\r\n }\r\n\r\n if (permissions.IsDataExclusionForAudienceCampaignEnabled && isDataExclusion(adjustmentType)) {\r\n campaignType.push(\"Enum.CampaignType'Audience'\");\r\n }\r\n\r\n const whereClause = {\r\n CampaignType: {\r\n $in: campaignType,\r\n },\r\n };\r\n\r\n function fetchCampaigns({\r\n pageNumber,\r\n pageSize,\r\n query,\r\n }) {\r\n const odataParams = {\r\n select: ['Id', 'Name', 'CampaignType'],\r\n limit: pageSize,\r\n offset: pageNumber * pageSize,\r\n where: whereClause,\r\n };\r\n\r\n if (query) {\r\n odataParams.where = {\r\n $and: [\r\n odataParams.where,\r\n {\r\n Name: { $contains: query },\r\n },\r\n ],\r\n };\r\n }\r\n\r\n return jsdata.Campaign.findAll(odataParams)\r\n .then((cmps) => {\r\n const { totalCount } = cmps;\r\n const items = _.map(cmps, cmp => ({\r\n Id: cmp.Id,\r\n name: cmp.Name,\r\n CampaignType: cmp.CampaignType,\r\n }));\r\n\r\n return {\r\n items,\r\n totalCount,\r\n };\r\n })\r\n .catch(() =>\r\n ({\r\n items: [],\r\n totalCount: 0,\r\n }));\r\n }\r\n\r\n function onSelectDone(items) {\r\n onSelectCampaigns(items);\r\n }\r\n\r\n function onSelectCancel() {\r\n // Nothing to do\r\n }\r\n\r\n return (\r\n
    \r\n (selectedCampaigns.length > 0 ?\r\n i18n.getString(_TL_('{{count}} campaign(s) selected'), { count: selectedCampaigns.length }) : i18n.getString(_TL_('Select campaigns')))\r\n }\r\n ref={selectorRef}\r\n />\r\n \r\n
    \r\n );\r\n}\r\n\r\n\r\nSeasonalityCampaignSelector.propTypes = {\r\n classes: PropTypes.shape({}).isRequired,\r\n i18n: PropTypes.shape({}).isRequired,\r\n selectedCampaigns: PropTypes.arrayOf(PropTypes.object).isRequired,\r\n onSelectCampaigns: PropTypes.func.isRequired,\r\n adjustmentType: PropTypes.oneOf([AdjustmentType.DataExclusion, AdjustmentType.SeasonalityAdjustment]).isRequired,\r\n showValidationError: PropTypes.bool,\r\n permissions: PropTypes.shape({\r\n dynamic: PropTypes.shape({\r\n PerformanceMaxCampaigns: PropTypes.bool,\r\n }),\r\n }).isRequired,\r\n};\r\n\r\nSeasonalityCampaignSelector.defaultProps = {\r\n showValidationError: PropTypes.false,\r\n};\r\n\r\nconst Wrapped = _.compose(\r\n React.memo,\r\n Comp => withDefaultStyles(Comp, getStyles),\r\n withPermissions\r\n)(SeasonalityCampaignSelector);\r\n\r\nexport { Wrapped as SeasonalityCampaignSelector };\r\n","import React, { useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { ChoiceGroup, Checkbox, Label } from '@bingads-webui-react/fabric-control';\r\nimport { HelpPopupInline } from '@bingads-webui-react/help-popup';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { SeasonalityCampaignSelector, validator as campaignSelectionValidator } from './seasonality-campaign-selector';\r\nimport { Error } from './error';\r\nimport { AdjustmentType, isDataExclusion } from '../adjustment-type';\r\n\r\nfunction getStyles() {\r\n return {\r\n scopeChoices: {\r\n marginBottom: '10px',\r\n },\r\n scopeCheckbox: {\r\n marginLeft: '30px',\r\n '& div[role=alert]': {\r\n paddingTop: 5,\r\n },\r\n },\r\n };\r\n}\r\n\r\nconst getErrorMessage = (selectedCampaignTypes, selectedScope) => {\r\n if (selectedScope === 'type') {\r\n if (_.isEmpty(selectedCampaignTypes)) {\r\n return _TL_('Campaign type is required. Select one or more campaign types.');\r\n }\r\n }\r\n return _TL_('');\r\n};\r\n\r\nconst choiceOptionStyle = {\r\n root: {\r\n '& > div > div > label': {\r\n padding: '0',\r\n },\r\n },\r\n};\r\n\r\nexport function validateScope({ selectedScope, selectedCampaignTypes, selectedCampaigns }) {\r\n const isTypeValid = _.isEmpty(getErrorMessage(selectedCampaignTypes, selectedScope));\r\n const isCampaignSelectionValid = selectedScope === 'specific' ? campaignSelectionValidator(selectedCampaigns) : true;\r\n\r\n return isTypeValid && isCampaignSelectionValid;\r\n}\r\n\r\nfunction SeasonalityScopeChoice(props) {\r\n const {\r\n classes,\r\n i18n,\r\n selectedScope,\r\n setSelectedScope,\r\n selectedCampaignTypes,\r\n selectedCampaigns,\r\n onSelectCampaigns,\r\n onSelectedCampaignTypeChanged,\r\n showValidationError,\r\n adjustmentType,\r\n permissions,\r\n } = props;\r\n\r\n const errorMessage = useMemo(\r\n () => (showValidationError ? i18n.getString(getErrorMessage(selectedCampaignTypes, selectedScope)) : ''),\r\n [i18n, selectedCampaignTypes, selectedScope, showValidationError]\r\n );\r\n\r\n const options = useMemo(() => [\r\n {\r\n key: 'type',\r\n text: i18n.getString(_TL_('Campaign type')),\r\n onRenderLabel: () => (\r\n \r\n \r\n {i18n.getString(_TL_('Campaign type'))}\r\n \r\n \r\n \r\n ),\r\n onRenderField: (optionProps, render) => (\r\n
    \r\n {optionProps && render(optionProps)}\r\n {optionProps.checked &&\r\n (\r\n
    \r\n type === 'Default')}\r\n />\r\n type === 'Shopping')}\r\n />\r\n {\r\n permissions.dynamic.PerformanceMaxCampaigns &&\r\n type === 'PerformanceMax')}\r\n />\r\n }\r\n {\r\n permissions.IsDataExclusionForAudienceCampaignEnabled && isDataExclusion(adjustmentType) &&\r\n type === 'Audience')}\r\n />\r\n }\r\n \r\n
    \r\n )\r\n }\r\n
    \r\n ),\r\n styles: choiceOptionStyle,\r\n },\r\n {\r\n key: 'specific',\r\n text: i18n.getString(_TL_('Specific campaigns')),\r\n onRenderField: (optionProps, render) => (\r\n
    \r\n {optionProps && render(optionProps)}\r\n {optionProps.checked && (\r\n \r\n )}\r\n
    \r\n ),\r\n styles: choiceOptionStyle,\r\n },\r\n ], [classes.scopeCheckbox, errorMessage, i18n, onSelectCampaigns, onSelectedCampaignTypeChanged, selectedCampaignTypes, selectedCampaigns, showValidationError, adjustmentType, permissions.dynamic.PerformanceMaxCampaigns]);\r\n\r\n const onChange = (_event, option) => {\r\n setSelectedScope(option.key);\r\n };\r\n\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n );\r\n}\r\n\r\nSeasonalityScopeChoice.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n classes: PropTypes.shape({}).isRequired,\r\n selectedCampaignTypes: PropTypes.arrayOf(PropTypes.string).isRequired,\r\n setSelectedScope: PropTypes.func.isRequired,\r\n selectedScope: PropTypes.string.isRequired,\r\n showValidationError: PropTypes.bool.isRequired,\r\n onSelectedCampaignTypeChanged: PropTypes.func.isRequired,\r\n selectedCampaigns: PropTypes.arrayOf(PropTypes.shape()).isRequired,\r\n onSelectCampaigns: PropTypes.func.isRequired,\r\n adjustmentType: PropTypes.oneOf([AdjustmentType.DataExclusion, AdjustmentType.SeasonalityAdjustment]).isRequired,\r\n permissions: PropTypes.shape({\r\n dynamic: PropTypes.shape({\r\n PerformanceMaxCampaigns: PropTypes.bool,\r\n }),\r\n }).isRequired,\r\n};\r\n\r\nconst Wrapped = _.compose(Comp => withDefaultStyles(Comp, getStyles), withPermissions)(SeasonalityScopeChoice);\r\n\r\nexport { Wrapped as SeasonalityScopeChoice };\r\n","import React, { useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { Label } from '@bingads-webui-react/primitive';\r\nimport { Stack, Checkbox } from '@bingads-webui-react/fabric-control';\r\nimport { HelpPopupInline } from '@bingads-webui-react/help-popup';\r\nimport { Error } from './error';\r\nimport { AdjustmentType, isDataExclusion } from '../adjustment-type';\r\n\r\nfunction getStyles() {\r\n return {\r\n deviceChoices: {\r\n marginBottom: '16px',\r\n '& div[role=alert]': {\r\n paddingTop: 5,\r\n },\r\n },\r\n };\r\n}\r\nconst device = {\r\n Computers: 'Computers',\r\n Smartphones: 'Smartphones',\r\n Tablets: 'Tablets',\r\n};\r\n\r\nconst getErrorMessage = (selectedDevices) => {\r\n if (_.isEmpty(selectedDevices)) return _TL_('Device is required. Select one or more devices.');\r\n return _TL_('');\r\n};\r\nconst stackTokens = { childrenGap: 40 };\r\n\r\nexport function validateDevices(selectedDevices) {\r\n return _.isEmpty(getErrorMessage(selectedDevices));\r\n}\r\nfunction SeasonalityDeviceChoice(props) {\r\n const {\r\n classes, i18n, selectedDevices, onSelectedDevicesChanged, showValidationError, adjustmentType\r\n } = props;\r\n\r\n const errorMessage = useMemo(() => (showValidationError ? i18n.getString(getErrorMessage(selectedDevices)) : ''), [i18n, selectedDevices, showValidationError]);\r\n const isComputerSelected = useMemo(() => _.contains(selectedDevices, device.Computers), [selectedDevices]);\r\n const isSmartphoneSelected = useMemo(() => _.contains(selectedDevices, device.Smartphones), [selectedDevices]);\r\n const isTabletSelected = useMemo(() => _.contains(selectedDevices, device.Tablets), [selectedDevices]);\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n}\r\n\r\nSeasonalityDeviceChoice.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n classes: PropTypes.shape({}).isRequired,\r\n selectedDevices: PropTypes.arrayOf(PropTypes.string).isRequired,\r\n onSelectedDevicesChanged: PropTypes.func.isRequired,\r\n showValidationError: PropTypes.bool.isRequired,\r\n adjustmentType: PropTypes.oneOf([AdjustmentType.DataExclusion, AdjustmentType.SeasonalityAdjustment]).isRequired,\r\n};\r\n\r\nconst Wrapped = _.compose(\r\n withI18nConsumer,\r\n Comp => withDefaultStyles(Comp, getStyles)\r\n)(SeasonalityDeviceChoice);\r\n\r\nexport { Wrapped as SeasonalityDeviceChoice };\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { Label } from '@bingads-webui-react/primitive';\r\nimport { withValidation, withError } from '@bingads-webui-react/validation';\r\nimport { Stack, Dropdown, TextField } from '@bingads-webui-react/fabric-control';\r\nimport { HelpPopupInline } from '@bingads-webui-react/help-popup';\r\nimport { sampleSchema as schema } from './sample-schema';\r\nimport { Error } from './error';\r\n\r\nconst ValidatedInput = withError(withValidation(TextField));\r\n\r\nfunction getStyles() {\r\n return {\r\n adjustmentInput: {\r\n marginBottom: 10,\r\n },\r\n };\r\n}\r\n\r\nconst getErrorMessage = (selectedSymbol, adjustmentRate) => {\r\n if (!adjustmentRate) return _TL_('Conversion rate is required. Enter a percentage.');\r\n if ((adjustmentRate < 0) || isNaN(adjustmentRate) ||\r\n (selectedSymbol === 'increase' && adjustmentRate > 900) ||\r\n (selectedSymbol === 'decrease' && adjustmentRate > 90)) {\r\n return _TL_('Percentage is not valid. Enter a conversion rate between -90% and 900%.');\r\n }\r\n return _TL_('');\r\n};\r\n\r\nexport function validateConversionRate(selectedSymbol, adjustmentRate) {\r\n return _.isEmpty(getErrorMessage(selectedSymbol, adjustmentRate));\r\n}\r\n\r\nfunction SeasonalityAdjustmentRateInput(props) {\r\n const {\r\n classes, i18n, onValidate, setAdjustmentRate, setSelectedSymbol, selectedSymbol, adjustmentRate, showValidationError,\r\n } = props;\r\n\r\n function onChangePercentageInput(result) {\r\n onValidate(result.isValid);\r\n setAdjustmentRate(result.data.AdjustmentPercentage);\r\n }\r\n\r\n const onSymbolChange = (event, option) => {\r\n setSelectedSymbol(option.key);\r\n };\r\n\r\n const options = [\r\n {\r\n key: 'increase',\r\n text: i18n.getString(_TL_('Increase')),\r\n },\r\n {\r\n key: 'decrease',\r\n text: i18n.getString(_TL_('Decrease')),\r\n },\r\n ];\r\n\r\n const errorMessage = showValidationError ? i18n.getString(getErrorMessage(selectedSymbol, adjustmentRate)) : '';\r\n\r\n const stackTokens = { childrenGap: 10 };\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n}\r\n\r\nSeasonalityAdjustmentRateInput.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n classes: PropTypes.shape({}).isRequired,\r\n setSelectedSymbol: PropTypes.func.isRequired,\r\n onValidate: PropTypes.func.isRequired,\r\n setAdjustmentRate: PropTypes.func.isRequired,\r\n selectedSymbol: PropTypes.string.isRequired,\r\n adjustmentRate: PropTypes.string.isRequired,\r\n showValidationError: PropTypes.bool.isRequired,\r\n};\r\n\r\nconst Wrapped = _.compose(\r\n withI18nConsumer,\r\n Comp => withDefaultStyles(Comp, getStyles)\r\n)(SeasonalityAdjustmentRateInput);\r\n\r\nexport { Wrapped as SeasonalityAdjustmentRateInput };\r\n","/* istanbul ignore file */\r\nimport React, { useCallback, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport classNames from 'classnames';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { Label } from '@bingads-webui-react/primitive';\r\nimport { Stack } from '@bingads-webui-react/fabric-control';\r\nimport { DateTimePicker } from '@bingads-webui-react/date-time-picker';\r\nimport { HelpPopupInline } from '@bingads-webui-react/help-popup';\r\nimport { Error } from './error';\r\nimport { AdjustmentType, isDataExclusion } from '../adjustment-type';\r\n\r\nfunction getStyles() {\r\n return {\r\n seasonalityDateTimePicker: {\r\n marginBottom: '16px',\r\n '& div[role=alert]': {\r\n paddingTop: 5,\r\n },\r\n },\r\n };\r\n}\r\n\r\nconst getDifferenceInDays = (date1, date2) => {\r\n const diffInMs = (date2 - date1);\r\n return diffInMs / (1000 * 60 * 60 * 24);\r\n};\r\n\r\n// validation\r\n// start date > end date\r\n// 0 < range < 14\r\nconst getErrorMessage = (selectedStartDate, selectedStartTime, selectedEndDate, selectedEndTime) => {\r\n if (!selectedStartDate || !selectedStartTime || !selectedEndDate || !selectedEndTime) {\r\n return _TL_('Time is required. Select a time.');\r\n }\r\n\r\n const startDateTime = new Date(selectedStartDate).setHours(selectedStartTime);\r\n const endDateTime = new Date(selectedEndDate).setHours(selectedEndTime);\r\n\r\n if (startDateTime >= endDateTime) return _TL_('Date range is not valid. End date should be after the start date.');\r\n if (getDifferenceInDays(startDateTime, endDateTime) > 14) return _TL_('Date range is not valid. Enter a date range that is 14 days or less.');\r\n\r\n return _TL_('');\r\n};\r\n\r\nexport function validateDateTimeRange(selectedStartDate, selectedStartTime, selectedEndDate, selectedEndTime) {\r\n return _.isEmpty(getErrorMessage(selectedStartDate, selectedStartTime, selectedEndDate, selectedEndTime));\r\n}\r\n\r\nfunction getDate(date) {\r\n const newDate = new Date(Date.UTC(date.year, date.month - 1, date.day, 0, 0, 0));\r\n\r\n return newDate;\r\n}\r\n\r\nfunction SeasonalityDateTimePicker(props) {\r\n const {\r\n i18n, classes, selectedStartDate, setSelectedStartDate,\r\n selectedEndDate, setSelectedEndDate, selectedStartTime,\r\n setSelectedStartTime, selectedEndTime, setSelectedEndTime,\r\n showValidationError, adjustmentType,\r\n } = props;\r\n\r\n const onStartDateChange = useCallback((date) => {\r\n setSelectedStartDate(getDate(date));\r\n }, [setSelectedStartDate]);\r\n\r\n const onEndDateChange = useCallback((date) => {\r\n setSelectedEndDate(getDate(date));\r\n }, [setSelectedEndDate]);\r\n\r\n const onStartTimeChange = useCallback(\r\n option => setSelectedStartTime(option.key),\r\n [setSelectedStartTime]\r\n );\r\n\r\n const onEndTimeChange = useCallback(\r\n option => setSelectedEndTime(option.key),\r\n [setSelectedEndTime]\r\n );\r\n\r\n const errorMessage = useMemo(\r\n () => (\r\n showValidationError ?\r\n i18n.getString(getErrorMessage(selectedStartDate, selectedStartTime, selectedEndDate, selectedEndTime)) : ''),\r\n [i18n, selectedEndDate, selectedEndTime, selectedStartDate, selectedStartTime, showValidationError]\r\n );\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n );\r\n}\r\n\r\nSeasonalityDateTimePicker.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n classes: PropTypes.shape({}).isRequired,\r\n setSelectedStartDate: PropTypes.func.isRequired,\r\n selectedStartDate: PropTypes.instanceOf(Date).isRequired,\r\n setSelectedEndDate: PropTypes.func.isRequired,\r\n selectedEndDate: PropTypes.instanceOf(Date).isRequired,\r\n selectedStartTime: PropTypes.string.isRequired,\r\n selectedEndTime: PropTypes.string.isRequired,\r\n setSelectedStartTime: PropTypes.func.isRequired,\r\n setSelectedEndTime: PropTypes.func.isRequired,\r\n showValidationError: PropTypes.bool.isRequired,\r\n adjustmentType: PropTypes.oneOf([AdjustmentType.DataExclusion, AdjustmentType.SeasonalityAdjustment]).isRequired,\r\n};\r\n\r\nconst Wrapped = _.compose(\r\n withI18nConsumer,\r\n Comp => withDefaultStyles(Comp, getStyles)\r\n)(SeasonalityDateTimePicker);\r\n\r\nexport { Wrapped as SeasonalityDateTimePicker };\r\n","const generalErrorMap = {\r\n NameExceededMaxLen: _TL_('Name exceeds the limit of 255 characters.'),\r\n DescriptionExceededMaxLen: _TL_('Description exceeds the limit of 2048 characters.'),\r\n CampaignAssociationsLimitExceeded: _TL_('Campaign association exceeds the limit of 2,000.'),\r\n InvalidDateTime: _TL_('Date range is not valid. End date should be after the start date.'),\r\n InvalidDateRange: _TL_('Date range is not valid. Enter a date range that is 14 days or less.'),\r\n DeviceTypeFilterIsNullOrEmpty: _TL_('Device is required. Select one or more devices.'),\r\n SeasonalityAdjustmentIsNull: _TL_('Conversion rate is required. Enter a percentage.'),\r\n InvalidAdjustmentPercentage: _TL_('Percentage is not valid. Enter a conversion rate between -90% and 900%.'),\r\n};\r\n\r\nexport const seasonalityErrorMap = {\r\n ...generalErrorMap,\r\n EntityDoesNotExist: _TL_('This seasonality adjustment does not exist.'),\r\n InvalidSeasonalityAdjustmentId: _TL_('This seasonality adjustment does not exist.'),\r\n NameIsNullOrEmpty: _TL_(\"Seasonality adjustment Name can't be empty.\"),\r\n InvalidCampaignAssociationsAndCampaignTypeFilterCombination: _TL_(\"Seasonality adjustment campaign associations and campaign type filter can't both be empty or both not empty.\"),\r\n};\r\n\r\nexport const dataExclusionErrorMap = {\r\n ...generalErrorMap,\r\n EntityDoesNotExist: _TL_('This data exclusion does not exist.'),\r\n InvalidSeasonalityAdjustmentId: _TL_('This data exclusion does not exist.'),\r\n NameIsNullOrEmpty: _TL_(\"Data exclusion Name can't be empty.\"),\r\n InvalidCampaignAssociationsAndCampaignTypeFilterCombination: _TL_(\"Data exclusion campaign associations and campaign type filter can't both be empty or both not empty.\"),\r\n};\r\n","import * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport { AdjustmentType } from '../adjustment-type';\r\nimport { dataExclusionErrorMap, seasonalityErrorMap } from './error-map';\r\n\r\nexport function localizeErrorCode(errorCode, i18n, adjustmentType) {\r\n if (errorCode) {\r\n const errorString = adjustmentType === AdjustmentType.SeasonalityAdjustment ?\r\n seasonalityErrorMap[errorCode] :\r\n dataExclusionErrorMap[errorCode];\r\n if (errorString) {\r\n return i18n.getString(errorString);\r\n }\r\n }\r\n return i18n.getString(_TL_(\"We've encountered an error and could not finish this task. Please try again or contact support.\"));\r\n}\r\n\r\nexport function localizeApiError(error, i18n, adjustmentType) {\r\n const firstError = putil.get(error, 'errors[0]', {});\r\n const errorCode =\r\n // for OData error\r\n firstError.Code ||\r\n // for bulk upsert error\r\n firstError.Error;\r\n\r\n return localizeErrorCode(errorCode, i18n, adjustmentType);\r\n}\r\n","import _ from 'underscore';\r\nimport React, { useContext, useState, useCallback, useEffect, Fragment } from 'react';\r\nimport { CivilDate } from 'tc39-proposal-temporal';\r\nimport classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { DefaultButton, PrimaryButton } from '@bingads-webui-react/fabric-control';\r\nimport { Separator } from '@fluentui/react';\r\nimport { UiBlocker } from '@bingads-webui-react/ui-blocker';\r\nimport jsdata from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { notificationApi } from '@bingads-webui-campaign/notification-center';\r\nimport { storeSeasonalityAdjustmentName, getSeasonalityAdjustmentName } from '@bingads-webui-campaign/seasonality-id-name-utils';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { SeasonalityTextInput } from './seasonality-text-input';\r\nimport { SeasonalityScopeChoice, validateScope } from './seasonality-scope-choice';\r\nimport { SeasonalityDeviceChoice, validateDevices } from './seasonality-device-choice';\r\nimport { SeasonalityAdjustmentRateInput, validateConversionRate } from './seasonality-adjustment-rate-input';\r\nimport { SeasonalityDateTimePicker, validateDateTimeRange } from './seasonality-date-time-picker';\r\nimport { localizeApiError } from '../i18n-map/localize-api-errors';\r\nimport { Error } from './error';\r\nimport { AdjustmentType, isDataExclusion } from '../adjustment-type';\r\n\r\nfunction getStyles() {\r\n return {\r\n saveButton: {\r\n marginRight: 8,\r\n },\r\n };\r\n}\r\n\r\nfunction SeasonalityAdjustmentCreationPanel(props) {\r\n const {\r\n onCancel,\r\n onSuccess,\r\n seasonalityId,\r\n isUpdate,\r\n scope,\r\n classes,\r\n adjustmentType,\r\n permissions,\r\n } = props;\r\n const i18n = useContext(I18nContext);\r\n const campaignTypes = ['Default', 'Shopping'];\r\n\r\n if (permissions.dynamic.PerformanceMaxCampaigns) {\r\n campaignTypes.push('PerformanceMax');\r\n }\r\n\r\n if (permissions.IsDataExclusionForAudienceCampaignEnabled && isDataExclusion(adjustmentType)) {\r\n campaignTypes.push('Audience');\r\n }\r\n\r\n const [seasonalityName, setSeasonalityName] = useState('');\r\n const [seasonalityDescription, setSeasonalityDescription] = useState('');\r\n const [selectedStartDate, setSelectedStartDate] = useState(undefined);\r\n const [selectedEndDate, setSelectedEndDate] = useState(undefined);\r\n const [selectedStartTime, setSelectedStartTime] = useState('');\r\n const [selectedEndTime, setSelectedEndTime] = useState('');\r\n const [selectedScope, setSelectedScope] = useState('type');\r\n const [selectedCampaigns, setSelectedCampaigns] = useState([]);\r\n const [isValidText, setIsValidText] = useState(false);\r\n const [showValidationError, setShowValidationError] = useState(false);\r\n const [selectedCampaignTypes, setSelectedCampaignTypes] = useState(campaignTypes);\r\n const [selectedDevices, setSelectedDevices] = useState(['Computers', 'Smartphones', 'Tablets']);\r\n const [selectedSymbol, setSelectedSymbol] = useState('increase');\r\n const initialAdjustmentRate = isDataExclusion(adjustmentType) ? '0' : '';\r\n const [adjustmentRate, setAdjustmentRate] = useState(initialAdjustmentRate);\r\n const [isValidRate, setIsValidRate] = useState(true);\r\n const [isLoading, setIsLoading] = useState(isUpdate);\r\n const [apiError, setApiError] = useState('');\r\n\r\n /* istanbul ignore next */\r\n useEffect(() => {\r\n if (isUpdate) {\r\n setIsLoading(true);\r\n\r\n jsdata.SeasonalityAdjustment.find(seasonalityId).then((response) => {\r\n setSeasonalityName(response.Name);\r\n setSeasonalityDescription(response.Description);\r\n setSelectedDevices(response.DeviceTypeFilter);\r\n const startDate = i18n.dateParser({\r\n raw: 'yyyy-MM-ddTHH:mm:ss',\r\n })(response.StartDate.substr(0, 19));\r\n const endDate = i18n.dateParser({\r\n raw: 'yyyy-MM-ddTHH:mm:ss',\r\n })(response.EndDate.substr(0, 19));\r\n\r\n setSelectedStartDate(new CivilDate(\r\n startDate.getFullYear(),\r\n startDate.getMonth() + 1,\r\n startDate.getDate()\r\n ));\r\n setSelectedEndDate(new CivilDate(\r\n endDate.getFullYear(),\r\n endDate.getMonth() + 1,\r\n endDate.getDate()\r\n ));\r\n\r\n setSelectedStartTime(startDate.getHours().toString());\r\n setSelectedEndTime(endDate.getHours().toString());\r\n setSelectedScope(_.isEmpty(response.CampaignTypeFilter) ? 'specific' : 'type');\r\n setSelectedCampaignTypes(response.CampaignTypeFilter);\r\n setSelectedCampaigns(_.map(response.CampaignAssociations, cmp => ({\r\n Id: cmp.CampaignId,\r\n name: cmp.CampaignName,\r\n CampaignType: cmp.CampaignType,\r\n })));\r\n setSelectedSymbol(response.AdjustmentPercentage > 0 ? 'increase' : 'decrease');\r\n setAdjustmentRate(Math.abs(response.AdjustmentPercentage).toString());\r\n }).catch((response) => {\r\n const fetchErrorMsg = localizeApiError(response, i18n, adjustmentType);\r\n notificationApi.showWarning(fetchErrorMsg);\r\n onSuccess();\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n }\r\n }, [i18n, isUpdate, onSuccess, scope, seasonalityId]);\r\n\r\n const onSelectedCampaignTypeChanged = useCallback((event, item) => {\r\n setSelectedCampaignTypes(item ? [...selectedCampaignTypes, event.target.name] :\r\n _.without(selectedCampaignTypes, event.target.name));\r\n }, [selectedCampaignTypes]);\r\n\r\n const onSelectedDevicesChanged = useCallback((event, item) => {\r\n setSelectedDevices(item ? [...selectedDevices, event.target.name] :\r\n _.without(selectedDevices, event.target.name));\r\n }, [selectedDevices]);\r\n\r\n const validate = useCallback(() => {\r\n const validators = [\r\n () => isValidText,\r\n () => isValidRate,\r\n () => validateScope({ selectedScope, selectedCampaignTypes, selectedCampaigns }),\r\n () => validateDevices(selectedDevices),\r\n () => validateConversionRate(selectedSymbol, adjustmentRate),\r\n () => validateDateTimeRange(selectedStartDate, selectedStartTime, selectedEndDate, selectedEndTime),\r\n ];\r\n const validationResults = validators.map(fn => fn());\r\n const allValid = _.all(validationResults);\r\n if (!allValid) {\r\n setShowValidationError(true);\r\n }\r\n return allValid;\r\n }, [adjustmentRate, isValidRate, isValidText,\r\n selectedCampaignTypes, selectedCampaigns,\r\n selectedDevices, selectedEndDate, selectedEndTime,\r\n selectedScope, selectedStartDate, selectedStartTime, selectedSymbol]);\r\n\r\n /* istanbul ignore next */\r\n const onSubmit = useCallback(() => {\r\n if (!validate()) {\r\n return;\r\n }\r\n\r\n const startDateTime = new Date(selectedStartDate);\r\n const endDateTime = new Date(selectedEndDate);\r\n const convertedCampaigns = selectedCampaigns.map(item => ({\r\n CampaignId: item.Id,\r\n }));\r\n\r\n startDateTime.setUTCHours(selectedStartTime);\r\n endDateTime.setUTCHours(selectedEndTime);\r\n\r\n const data = {\r\n Name: seasonalityName,\r\n Description: seasonalityDescription,\r\n AdjustmentPercentage: selectedSymbol === 'increase' ? adjustmentRate : `-${adjustmentRate}`,\r\n DeviceTypeFilter: selectedDevices,\r\n StartDate: startDateTime.toISOString(),\r\n EndDate: endDateTime.toISOString(),\r\n AdjustmentType: adjustmentType,\r\n };\r\n\r\n // extend for edit\r\n if (isUpdate) {\r\n _.extend(data, {\r\n Id: seasonalityId,\r\n });\r\n }\r\n\r\n if (selectedScope === 'type') {\r\n _.extend(data, {\r\n CampaignTypeFilter: selectedCampaignTypes,\r\n });\r\n } else {\r\n _.extend(data, {\r\n CampaignAssociations: convertedCampaigns,\r\n CampaignAssociationsCount: _.size(selectedCampaigns),\r\n });\r\n }\r\n\r\n setIsLoading(true);\r\n setApiError('');\r\n\r\n const jsdataCall = jsdata.SeasonalityAdjustment.create(data);\r\n jsdataCall\r\n .then(() => {\r\n if (isUpdate) {\r\n const storedName = getSeasonalityAdjustmentName(seasonalityId);\r\n if (storedName && (storedName !== seasonalityName)) {\r\n storeSeasonalityAdjustmentName({ id: seasonalityId, name: seasonalityName });\r\n }\r\n }\r\n onSuccess();\r\n })\r\n .catch((response) => {\r\n if (!isUpdate && (Number(response.entity.Id) > 0)) {\r\n onSuccess();\r\n }\r\n setApiError(localizeApiError(response, i18n, adjustmentType));\r\n })\r\n .finally(() => {\r\n setIsLoading(false);\r\n });\r\n }, [adjustmentRate, i18n, isUpdate, onSuccess, adjustmentType,\r\n seasonalityDescription, seasonalityId,\r\n seasonalityName, selectedCampaignTypes,\r\n selectedCampaigns, selectedDevices,\r\n selectedEndDate, selectedEndTime, selectedScope,\r\n selectedStartDate, selectedStartTime, selectedSymbol, validate]);\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n {i18n.getString(isDataExclusion(adjustmentType) ? _TL_('Create a data exclusion') : _TL_('Create a seasonality adjustment'))}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n {adjustmentType === AdjustmentType.SeasonalityAdjustment &&\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\nSeasonalityAdjustmentCreationPanel.propTypes = {\r\n onSuccess: PropTypes.func,\r\n onCancel: PropTypes.func,\r\n seasonalityId: PropTypes.number,\r\n isUpdate: PropTypes.bool,\r\n scope: PropTypes.shape(),\r\n adjustmentType: PropTypes.oneOf([AdjustmentType.DataExclusion, AdjustmentType.SeasonalityAdjustment]),\r\n classes: PropTypes.shape().isRequired,\r\n permissions: PropTypes.shape({\r\n dynamic: PropTypes.shape({\r\n PerformanceMaxCampaigns: PropTypes.bool,\r\n }),\r\n }).isRequired,\r\n};\r\n\r\nSeasonalityAdjustmentCreationPanel.defaultProps = {\r\n onSuccess: _.noop,\r\n onCancel: _.noop,\r\n seasonalityId: undefined,\r\n isUpdate: false,\r\n scope: undefined,\r\n adjustmentType: AdjustmentType.SeasonalityAdjustment,\r\n};\r\n\r\nconst Wrapped = withPermissions(withDefaultStyles(SeasonalityAdjustmentCreationPanel, getStyles));\r\n\r\nexport { Wrapped as SeasonalityAdjustmentCreationPanel };\r\n","import _ from 'underscore';\r\n\r\n/* global Map */\r\n\r\nexport function pairsToMap(pairs) {\r\n return _.reduce(pairs, (memo, [key, value]) => {\r\n memo.set(key, value);\r\n return memo;\r\n }, new Map());\r\n}\r\n","export function clearSelection(gridView) {\r\n const selection = {\r\n ...gridView.get('selection'),\r\n selected: [],\r\n };\r\n\r\n gridView.trigger('willSelect', selection.selected);\r\n gridView.set({ selection }, () => {\r\n gridView.trigger('didSelect', selection.selected);\r\n });\r\n}\r\n\r\nexport function toggleRadioButton(e, gridView) {\r\n const radioButton = e.target;\r\n const { selected } = gridView.get('selection');\r\n const key = gridView.keyOfElement(radioButton);\r\n\r\n if (selected.includes(key)) {\r\n radioButton.checked = false;\r\n clearSelection(gridView);\r\n }\r\n}\r\n","import projectionGrid from 'projection-grid';\r\nimport { DeterministicWrapperView } from '@bingads-webui/deterministic-wrapper-view';\r\nimport { perfMarkerPlugin } from '@bingads-webui-campaign/pgrid-performance-log';\r\nimport { a11yPlugin } from '@bingads-webui/projection-grid-a11y';\r\nimport { paginationPlugin } from '@bingads-webui/projection-grid-pagination';\r\nimport { placeholderPlugin } from '@bingads-webui/projection-grid-placeholder';\r\nimport { uiBlockerPlugin } from '@bingads-webui/projection-grid-uiblocker';\r\nimport { columnChooserPlugin } from '@bingads-webui-campaign/projection-grid-column-chooser';\r\nimport { editablePlugin } from '@bingads-webui-campaign/projection-grid-editable';\r\nimport { projectionGridScopeNavigator } from '@bingads-webui-campaign/projection-grid-scope-navigator';\r\nimport { projectionGridScrollbarPlugin } from '@bingads-webui-campaign/projection-grid-scrollbar';\r\nimport { projectionGridFlexColumnResize } from '@bingads-webui-campaign/projection-grid-flex-column-resize';\r\nimport { jsdataRawDataPlugin } from '@bingads-webui-campaign/pgrid-js-data-raw-data';\r\nimport { toggleRadioButton } from '../selection-helper';\r\n\r\nexport class SeasonalityAdjustmentGridView extends DeterministicWrapperView {\r\n viewFactory({\r\n config,\r\n permissions,\r\n toolbarPlugin,\r\n }) {\r\n const gridFactory = projectionGrid\r\n .factory({ vnext: true })\r\n // For accurate grid init latency, PerfMarkerPlugin should be the first plugin to load.\r\n .use(perfMarkerPlugin)\r\n .use(a11yPlugin)\r\n .use(paginationPlugin)\r\n .use(placeholderPlugin)\r\n .use(uiBlockerPlugin)\r\n .use(toolbarPlugin.plugin)\r\n .use(columnChooserPlugin)\r\n .use(jsdataRawDataPlugin)\r\n .use(projectionGridScopeNavigator)\r\n .use(projectionGridScrollbarPlugin)\r\n .use(projectionGridFlexColumnResize);\r\n\r\n if (!permissions.IsReadOnlyUser) {\r\n gridFactory.use(editablePlugin);\r\n }\r\n\r\n this.grid = gridFactory.create(config);\r\n\r\n return this.grid.gridView;\r\n }\r\n\r\n get className() {\r\n return 'seasonality-adjustment-grid';\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .td[data-column=\"selection\"] input[type=\"radio\"].select-row': e => toggleRadioButton(e, this.grid.gridView),\r\n };\r\n }\r\n}\r\n","import { ProjectionGridBaseColumn } from '@bingads-webui/projection-grid-base-column';\r\n\r\nexport class SeasonalityAdjustmentNameColumn extends ProjectionGridBaseColumn {\r\n constructor({\r\n i18n,\r\n inlineEditConfig: {\r\n onEditName,\r\n } = {},\r\n scope,\r\n }) {\r\n super({\r\n name: 'SeasonalityAdjustmentName',\r\n title: _TL_('Name'),\r\n i18n,\r\n property: 'Name',\r\n sortable: 'Name',\r\n group: 'freezing',\r\n });\r\n this.onEditName = onEditName;\r\n this.scope = scope;\r\n }\r\n\r\n onPrompt(...args) {\r\n return this.onEditName(...args);\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { ProjectionGridBaseColumn } from '@bingads-webui/projection-grid-base-column';\r\n\r\nexport class BaseColumn extends ProjectionGridBaseColumn {\r\n constructor(options) {\r\n super(options);\r\n this.i18n = options.i18n;\r\n }\r\n\r\n // Override the default 'pickProperty' to pick multi properties.\r\n pickProperty(rowData) {\r\n const keys = _.union(\r\n // this.property.key may be a string or an array, need to convert it to an array\r\n _.flatten([this.property.key]),\r\n ['$total']\r\n );\r\n return _.pick(rowData, keys);\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nimport { BaseColumn } from './base-column';\r\nimport linkTemplate from './link-template.pug';\r\nimport { i18nMap, safeGetString } from '../../i18n-map/i18n-map';\r\nimport { isDataExclusion } from '../../adjustment-type';\r\n\r\nexport class ScopeColumn extends BaseColumn {\r\n constructor(option) {\r\n const title = _TL_('Scope');\r\n\r\n super({\r\n name: 'Scope',\r\n title,\r\n i18n: option.i18n,\r\n property: ['Name', 'CampaignAssociationsCount', 'CampaignTypeFilter', 'Id'],\r\n sortable: 'CampaignAssociationsCount',\r\n helpId: isDataExclusion(option.adjustmentType) ? 'pop_BA_DataExclusions_Scope' : 'pop_BA_SeasonalityAdjustments_Scope',\r\n helpAriaLabel: option.i18n.getString(_TL_('Click to learn more about {{item}}'), { item: option.i18n.getString(title) }),\r\n });\r\n this.scope = option.scope;\r\n this.adjustmentType = option.adjustmentType;\r\n }\r\n\r\n template({\r\n value: {\r\n CampaignAssociationsCount,\r\n CampaignTypeFilter,\r\n Id,\r\n Name,\r\n },\r\n }) {\r\n const { uid, cid, aid } = this.scope.values;\r\n const pathname = '/campaign/vnext/campaigns';\r\n let customParams;\r\n let campaignTypeItems;\r\n\r\n const filterAlias = isDataExclusion(this.adjustmentType) ? 'filterDataExclusionId' : 'filterSeasonalityId';\r\n\r\n if (!_.isEmpty(CampaignTypeFilter)) {\r\n const campaignTypeEnum = _.map(CampaignTypeFilter, item => (`Enum.CampaignType'${item}'`));\r\n customParams = `filterAlias=filterSeasonalityCampaignType&filterArguments=${campaignTypeEnum}`;\r\n const globalizedCampaignTypes = CampaignTypeFilter.map(item => (safeGetString(this.i18n, i18nMap.CampaignTypes, item)));\r\n campaignTypeItems = globalizedCampaignTypes.join(this.i18n.getString(_TL_(', ')));\r\n } else {\r\n customParams = `filterAlias=${filterAlias}&filterArguments=${Id}, ${encodeURIComponent(Name)}`;\r\n }\r\n\r\n const href = `${pathname}?uid=${uid}&cid=${cid}&aid=${aid}&${customParams}`;\r\n const filterType = campaignTypeItems || CampaignAssociationsCount || '0';\r\n const text = `${filterType} ${this.i18n.getString(_TL_('Campaigns'))}`;\r\n\r\n return linkTemplate({\r\n pathname, customParams, href, text,\r\n });\r\n }\r\n}\r\n","import { BaseColumn } from './base-column';\r\nimport template from './device-type.pug';\r\nimport { i18nMap, safeGetString } from '../../i18n-map/i18n-map';\r\nimport { isDataExclusion } from '../../adjustment-type';\r\n\r\nexport class DeviceTypeColumn extends BaseColumn {\r\n constructor(option) {\r\n const title = _TL_('Devices');\r\n\r\n super({\r\n name: 'Devices',\r\n title,\r\n i18n: option.i18n,\r\n property: ['DeviceTypeFilter'],\r\n sortable: 'DeviceTypeSort',\r\n helpId: isDataExclusion(option.adjustmentType) ? 'pop_BA_DataExclusions_Devices' : 'pop_BA_SeasonalityAdjustments_Devices',\r\n helpAriaLabel: option.i18n.getString(_TL_('Click to learn more about {{item}}'), { item: option.i18n.getString(title) }),\r\n });\r\n }\r\n\r\n template({\r\n value: {\r\n DeviceTypeFilter,\r\n },\r\n }) {\r\n let deviceTypeItems;\r\n if (DeviceTypeFilter) {\r\n const globalizedDeviceTypes = DeviceTypeFilter.map(item => (safeGetString(this.i18n, i18nMap.DeviceTypes, item)));\r\n deviceTypeItems = globalizedDeviceTypes.join(this.i18n.getString(_TL_(', ')));\r\n }\r\n\r\n const items = `${deviceTypeItems}`;\r\n\r\n return template({\r\n items,\r\n });\r\n }\r\n}\r\n","import { CONSTANTS, ProjectionGridBaseColumn } from '@bingads-webui/projection-grid-base-column';\r\nimport template from './conversion-rate-adjustment.pug';\r\n\r\nexport class ConversionRateColumn extends ProjectionGridBaseColumn {\r\n constructor({\r\n i18n,\r\n inlineEditConfig: {\r\n onEditRate,\r\n } = {},\r\n }) {\r\n const title = _TL_('Conversion rate adjustment');\r\n super({\r\n name: 'AdjustmentPercentage',\r\n title,\r\n i18n,\r\n property: 'AdjustmentPercentage',\r\n sortable: 'AdjustmentPercentage',\r\n type: CONSTANTS.COLUMN_TYPES.NUMBER,\r\n format: CONSTANTS.COLUMN_FORMATS.PERCENTAGE_VALUE,\r\n helpId: 'pop_BA_SeasonalityAdjustments_ConversionRate',\r\n helpAriaLabel: i18n.getString(_TL_('Click to learn more about {{item}}'), { item: i18n.getString(title) }),\r\n });\r\n this.onEditRate = onEditRate;\r\n this.i18n = i18n;\r\n }\r\n\r\n template({ value }) {\r\n let multiplier = '';\r\n const formattedValue = this.formatter(Math.abs(value));\r\n if (value < 0) {\r\n multiplier = `-${formattedValue}`;\r\n } else {\r\n multiplier = `+${formattedValue}`;\r\n }\r\n return template({\r\n conversionRate: multiplier,\r\n i18n: this.i18n,\r\n });\r\n }\r\n\r\n onPrompt(...args) {\r\n /* istanbul ignore next */\r\n this.onEditRate(...args);\r\n }\r\n}\r\n\r\n","export const fromServerDateTimeToLocalized = ({\r\n i18n,\r\n serverDateTime,\r\n}) => i18n.formatDate(i18n.dateParser({\r\n raw: 'yyyy-MM-ddTHH:mm:ss',\r\n})(serverDateTime.substr(0, 19)), {\r\n datetime: 'short',\r\n});\r\n","import { ProjectionGridBaseColumn } from '@bingads-webui/projection-grid-base-column';\r\nimport { fromServerDateTimeToLocalized } from './datetime-converter';\r\nimport { isDataExclusion } from '../../adjustment-type';\r\n\r\nexport class StartTimeColumn extends ProjectionGridBaseColumn {\r\n constructor(option) {\r\n const title = _TL_('Start time');\r\n\r\n super({\r\n title,\r\n name: 'StartTime',\r\n bodyClasses: ['cell-start-time'],\r\n i18n: option.i18n,\r\n property: 'StartDate',\r\n sortable: 'StartDate',\r\n helpId: isDataExclusion(option.adjustmentType) ? 'pop_BA_DataExclusions_StartTime' : 'pop_BA_SeasonalityAdjustments_StartTime',\r\n helpAriaLabel: option.i18n.getString(_TL_('Click to learn more about {{item}}'), { item: option.i18n.getString(title) }),\r\n });\r\n }\r\n\r\n template({ value }) {\r\n if (value) {\r\n return fromServerDateTimeToLocalized({\r\n serverDateTime: value,\r\n i18n: this.config.i18n,\r\n });\r\n }\r\n return '-';\r\n }\r\n}\r\n\r\nexport class EndTimeColumn extends ProjectionGridBaseColumn {\r\n constructor(option) {\r\n const title = _TL_('End time');\r\n super({\r\n title,\r\n name: 'EndTime',\r\n bodyClasses: ['cell-end-time'],\r\n i18n: option.i18n,\r\n property: 'EndDate',\r\n sortable: 'EndDate',\r\n helpId: isDataExclusion(option.adjustmentType) ? 'pop_BA_DataExclusions_EndTime' : 'pop_BA_SeasonalityAdjustments_EndTime',\r\n helpAriaLabel: option.i18n.getString(_TL_('Click to learn more about {{item}}'), { item: option.i18n.getString(title) }),\r\n });\r\n }\r\n\r\n template({ value }) {\r\n if (value) {\r\n return fromServerDateTimeToLocalized({\r\n serverDateTime: value,\r\n i18n: this.config.i18n,\r\n });\r\n }\r\n return '-';\r\n }\r\n}\r\n","import { ProjectionGridBaseColumn } from '@bingads-webui/projection-grid-base-column';\r\nimport { isDataExclusion } from '../../adjustment-type';\r\n\r\nexport class DescriptionColumn extends ProjectionGridBaseColumn {\r\n constructor(option) {\r\n const title = _TL_('Description');\r\n super({\r\n name: 'Description',\r\n title,\r\n i18n: option.i18n,\r\n property: 'Description',\r\n sortable: 'Description',\r\n helpId: isDataExclusion(option.adjustmentType) ? 'pop_BA_DataExclusions_Description' : 'pop_BA_SeasonalityAdjustments_Description',\r\n helpAriaLabel: option.i18n.getString(_TL_('Click to learn more about {{item}}'), { item: option.i18n.getString(title) }),\r\n });\r\n }\r\n}\r\n","\r\nimport { ColumnsConfigBuilder } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { SeasonalityAdjustmentNameColumn } from './seasonality-adjustment-name-column';\r\nimport { ScopeColumn } from './scope-column';\r\nimport { DeviceTypeColumn } from './device-type-column';\r\nimport { ConversionRateColumn } from './conversion-rate-adjustment';\r\nimport { StartTimeColumn, EndTimeColumn } from './date-column';\r\nimport { DescriptionColumn } from './description-column';\r\nimport { AdjustmentType } from '../../adjustment-type';\r\n\r\nfunction isDefined(p) { return !!p; }\r\n\r\nfunction getBuilder(adjustmentType) {\r\n const builder = new ColumnsConfigBuilder()\r\n .addCategory('Attributes', category => category.addColumns([\r\n SeasonalityAdjustmentNameColumn,\r\n ScopeColumn,\r\n DeviceTypeColumn,\r\n adjustmentType === AdjustmentType.SeasonalityAdjustment ? ConversionRateColumn : undefined,\r\n StartTimeColumn,\r\n EndTimeColumn,\r\n DescriptionColumn,\r\n ].filter(isDefined)))\r\n .setLockedColumns([\r\n SeasonalityAdjustmentNameColumn,\r\n ]).setSelectedColumns([\r\n ScopeColumn,\r\n DeviceTypeColumn,\r\n adjustmentType === AdjustmentType.SeasonalityAdjustment ? ConversionRateColumn : undefined,\r\n StartTimeColumn,\r\n EndTimeColumn,\r\n ].filter(isDefined));\r\n\r\n return builder;\r\n}\r\n\r\nexport function getColumnsAndColumnChooserConfig({\r\n i18n,\r\n columnChooserPreferences: { Columns, SelectedColumns },\r\n inlineEditConfig,\r\n scope,\r\n adjustmentType,\r\n}) {\r\n const builder = getBuilder(adjustmentType);\r\n\r\n\r\n const columnsConfig = builder.getColumnsConfig({\r\n i18n,\r\n inlineEditConfig,\r\n scope,\r\n adjustmentType,\r\n });\r\n\r\n const columnChooserConfig = builder.getColumnChooserConfig({\r\n i18n,\r\n Columns,\r\n SelectedColumns,\r\n });\r\n\r\n columnChooserConfig.customToolbarIcon = 'ba-TripleColumnSolid';\r\n\r\n return {\r\n columnsConfig,\r\n columnChooserConfig,\r\n };\r\n}\r\n","import $ from 'jquery';\r\nimport { isDataExclusion } from '../adjustment-type';\r\nimport { getColumnsAndColumnChooserConfig } from './columns';\r\n\r\nexport class SeasonalityAdjustmentGridConfig {\r\n constructor({\r\n gridName, i18n, dataSource, scope, columnChooserPreferences, preferenceService, filterService, perfMarker, globalConfig,\r\n blockerTarget, inlineEditConfig, adjustmentType,\r\n }) {\r\n const { columnsConfig, columnChooserConfig } = getColumnsAndColumnChooserConfig({\r\n i18n, columnChooserPreferences, inlineEditConfig, scope, adjustmentType,\r\n });\r\n\r\n const pluginsConfig = {\r\n perfMarker: {\r\n appConfig: globalConfig,\r\n marker: perfMarker,\r\n },\r\n a11y: { i18n },\r\n pagination: {\r\n availablePageSizes: [20, 50, 100, 200],\r\n pageNumberLabelText: i18n.getString(_TL_('Page')),\r\n pageSizeText: i18n.getString(_TL_('Show rows:')),\r\n enableRandomPage: false,\r\n },\r\n uiBlocker: {\r\n el: blockerTarget,\r\n text: i18n.getString(_TL_('Loading...')),\r\n },\r\n placeholder: {\r\n container: '.grid-noresult',\r\n text: i18n.getString(isDataExclusion(adjustmentType) ?\r\n _TL_('You have no data exclusions. Click Create to get started.')\r\n : _TL_('You have no seasonality adjustments. Click Create to get started.')),\r\n filteredEmptyText: i18n.getString(_TL_('There are no results available based on your filtered search. Please revise your search.')),\r\n },\r\n columnChooser: columnChooserConfig,\r\n editable: {\r\n i18n,\r\n },\r\n projectionGridScopeNavigator: scope,\r\n projectionGridFlexColumnResize: {\r\n gridName,\r\n preferenceService,\r\n },\r\n projectionGridScrollbar: {\r\n scrollElementSelector: '.grid-group-other',\r\n },\r\n };\r\n\r\n const tableName = i18n.getString(isDataExclusion(adjustmentType) ? _TL_('Data exclusions') : _TL_('Seasonality Adjustment'));\r\n\r\n return {\r\n name: gridName,\r\n tableClasses: ['table'],\r\n tableAttributes: { 'aria-label': tableName },\r\n layout: 'flex',\r\n i18n,\r\n columns: columnsConfig,\r\n dataSource,\r\n rows: {\r\n headRows: [\r\n 'column-header-rows',\r\n ],\r\n },\r\n selection: {\r\n single: true,\r\n },\r\n scrolling: {\r\n header: {\r\n type: 'sticky',\r\n offset: () => $('.sticky-container').height(),\r\n attributes: {\r\n 'aria-label': i18n.getString(_TL_('{{tableName}} table header'), { tableName }),\r\n role: 'rowgroup',\r\n },\r\n },\r\n virtualized: true,\r\n // backbone-virtualized-listview listens to viewport element's resize and scroll events to refresh header's position.\r\n // Search keyword `_hookUpStickyHeader` to see more details.\r\n viewport: $('.table-page-container'),\r\n },\r\n plugins: pluginsConfig,\r\n // Needed by inline download plugin\r\n // projection-grid-inline-download/src/without-dependencies.js line 21\r\n filterService,\r\n // Needed by pagination plugin\r\n // projection-grid-pagination/src/index.es line 115\r\n preferenceService,\r\n config: globalConfig,\r\n };\r\n }\r\n}\r\n","import { gridFlexStyle } from '@bingads-webui-campaign-react/grid-flex-style';\r\n\r\nexport function getStyles(_, { palette = {} }) {\r\n return {\r\n seasonalityTablePageContainer: {\r\n '& .toolbar .contextual-dropdown .btn-primary': {\r\n height: '32px',\r\n padding: '0 20px',\r\n '& .iconba-Add': {\r\n color: '#fff',\r\n },\r\n },\r\n '& .search-box': {\r\n width: '300px',\r\n },\r\n '& .popover': {\r\n maxWidth: 'fit-content',\r\n },\r\n '& .conversion-rate-adjustment-view': {\r\n '& .form-inline .form-group': {\r\n display: 'block',\r\n },\r\n '& .conversion-rate-adjustment-input-group': {\r\n marginLeft: '10px',\r\n },\r\n '& .input-group .form-control': {\r\n borderRightColor: 'transparent',\r\n },\r\n },\r\n },\r\n seasonalityGridViewContainer: {\r\n // In the first column (selection column), hide redundant radio buttons\r\n '& .tbody .tr .td[data-column=\"selection\"] > input': {\r\n '&:before': {\r\n content: 'none',\r\n },\r\n '&:after': {\r\n content: 'none',\r\n },\r\n },\r\n },\r\n '@global': {\r\n ...gridFlexStyle({ palette }),\r\n },\r\n };\r\n}\r\n","/* istanbul ignore file */\r\nimport _ from 'underscore';\r\nimport { InlineEditableColumnPrompt } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport odataSchemas from '@bingads-webui-campaign/campaign-ui-schemas';\r\nimport { triggerContainerResizing } from '@bingads-webui-campaign-react/virtual-scrollbar-recalculate-trigger';\r\nimport { localizeApiError } from './i18n-map/localize-api-errors';\r\nimport { ConversionRateInlineEditableColumnPrompt } from './conversion-rate-prompt';\r\n\r\nconst schema = odataSchemas.SeasonalityAdjustment;\r\n\r\nfunction triggerScrollbarRepositionOnElementMount(selector, interval = 50) {\r\n const token = setInterval(() => {\r\n if (document.querySelector(selector)) {\r\n triggerContainerResizing();\r\n clearInterval(token);\r\n }\r\n }, interval);\r\n}\r\n\r\nfunction updateSeasonalityAdjustment({\r\n id,\r\n payload,\r\n jsdata,\r\n editorView,\r\n reloadGrid,\r\n i18n,\r\n getGridView,\r\n fieldName,\r\n adjustmentType,\r\n}) {\r\n // update\r\n jsdata.SeasonalityAdjustment.update(id, payload, {\r\n }).then(() => {\r\n editorView.trigger('save');\r\n reloadGrid();\r\n }).catch((error) => {\r\n const errorMessage = localizeApiError(error, i18n, adjustmentType);\r\n editorView.setErrors({\r\n [fieldName]: errorMessage,\r\n });\r\n })\r\n .finally(withUiBlock(getGridView().$el));\r\n}\r\n\r\nfunction updateWithAssoicatedCamapign({\r\n id,\r\n payload,\r\n jsdata,\r\n editorView,\r\n reloadGrid,\r\n i18n,\r\n getGridView,\r\n fieldName,\r\n adjustmentType,\r\n}) {\r\n // get associated campaigns if it is null\r\n jsdata.SeasonalityAdjustment.find(id, {\r\n }).then((response) => {\r\n const convertedCampaigns = response.CampaignAssociations;\r\n _.extend(payload, {\r\n CampaignAssociations: convertedCampaigns,\r\n });\r\n updateSeasonalityAdjustment({\r\n id,\r\n payload,\r\n jsdata,\r\n editorView,\r\n reloadGrid,\r\n i18n,\r\n getGridView,\r\n fieldName,\r\n }).catch((error) => {\r\n const errorMessage = localizeApiError(error, i18n, adjustmentType);\r\n editorView.setErrors({\r\n [fieldName]: errorMessage,\r\n });\r\n });\r\n });\r\n}\r\n\r\nexport function inlineEditFactory({\r\n i18n,\r\n jsdata,\r\n getGridView,\r\n reloadGrid,\r\n adjustmentType,\r\n}) {\r\n function onEditRate({ item, newPosition }) {\r\n const fieldName = 'AdjustmentPercentage';\r\n\r\n triggerScrollbarRepositionOnElementMount('.popup-editor');\r\n\r\n return ConversionRateInlineEditableColumnPrompt({\r\n item,\r\n newPosition,\r\n fieldName,\r\n i18n,\r\n saveModel: (updated, editorView) => {\r\n const id = item.Id;\r\n const payload = updated;\r\n if (payload.CampaignAssociationsCount > 0 && _.isEmpty(payload.CampaignAssociations)) {\r\n updateWithAssoicatedCamapign({\r\n id,\r\n payload,\r\n jsdata,\r\n editorView,\r\n reloadGrid,\r\n i18n,\r\n getGridView,\r\n fieldName,\r\n adjustmentType,\r\n });\r\n } else {\r\n updateSeasonalityAdjustment({\r\n id,\r\n payload,\r\n jsdata,\r\n editorView,\r\n reloadGrid,\r\n i18n,\r\n getGridView,\r\n fieldName,\r\n adjustmentType,\r\n });\r\n }\r\n },\r\n });\r\n }\r\n\r\n function onEditName({ item, newPosition: position }) {\r\n const fieldName = 'Name';\r\n\r\n triggerScrollbarRepositionOnElementMount('.popup-editor');\r\n\r\n return InlineEditableColumnPrompt({\r\n position,\r\n item,\r\n i18n,\r\n fieldName,\r\n schema,\r\n saveModel: (updated, editorView) => {\r\n const id = item.Id;\r\n const payload = updated;\r\n if (payload.CampaignAssociationsCount > 0 && _.isEmpty(payload.CampaignAssociations)) {\r\n updateWithAssoicatedCamapign({\r\n id,\r\n payload,\r\n jsdata,\r\n editorView,\r\n reloadGrid,\r\n i18n,\r\n getGridView,\r\n adjustmentType,\r\n });\r\n } else {\r\n updateSeasonalityAdjustment({\r\n id,\r\n payload,\r\n jsdata,\r\n editorView,\r\n reloadGrid,\r\n i18n,\r\n getGridView,\r\n adjustmentType,\r\n });\r\n }\r\n },\r\n });\r\n }\r\n\r\n return {\r\n onEditRate,\r\n onEditName,\r\n };\r\n}\r\n","/* istanbul ignore file */\r\nimport _ from 'underscore';\r\nimport { GridCustomizedPopupEditor } from '@bingads-webui-campaign/grid-customized-popup-editor';\r\nimport { ConversionRateAdjustmentView } from '@bingads-webui-campaign/conversion-rate-adjustment';\r\n\r\nexport function ConversionRateInlineEditableColumnPrompt({\r\n item,\r\n newPosition,\r\n i18n,\r\n fieldName,\r\n saveModel,\r\n}) {\r\n const conversionRateAdjustmentView = new ConversionRateAdjustmentView({\r\n value: item.AdjustmentPercentage,\r\n i18n,\r\n });\r\n\r\n const editorView = new GridCustomizedPopupEditor({\r\n editorView: conversionRateAdjustmentView.render(),\r\n cellPosition: newPosition,\r\n tableContainer: '.bingadsgrid',\r\n parentContainerSelector: '.grid-and-disclaim-container',\r\n }).render();\r\n\r\n editorView.on('close', (model) => {\r\n const changed = model && (item.AdjustmentPercentage !== model.AdjustmentPercentage);\r\n if (changed) {\r\n const updated = _.extendOwn({}, item);\r\n updated[fieldName] = model.AdjustmentPercentage;\r\n saveModel(updated, conversionRateAdjustmentView);\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 { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { LearnMoreLink } from '@bingads-webui-campaign-react/help';\r\nimport { underlineLinkStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport { AdjustmentType } from './adjustment-type';\r\n\r\nconst getDescriptionStyle = (_, { palette = {} }) => ({\r\n description: {\r\n marginTop: 10,\r\n marginBottom: 10,\r\n paddingLeft: 32,\r\n '& span': {\r\n whiteSpace: 'nowrap',\r\n ...underlineLinkStyle({ palette }),\r\n },\r\n },\r\n});\r\n\r\nconst DescriptionBanner = ({ classes, i18n, adjustmentType }) => (\r\n
    \r\n {adjustmentType === AdjustmentType.SeasonalityAdjustment ?\r\n \r\n :\r\n \r\n }\r\n
    \r\n);\r\n\r\nDescriptionBanner.propTypes = {\r\n classes: PropTypes.shape({\r\n disclaimer: PropTypes.string.isRequired,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n adjustmentType: PropTypes.oneOf([AdjustmentType.DataExclusion, AdjustmentType.SeasonalityAdjustment]).isRequired,\r\n};\r\n\r\nexport const StyledDescriptionBanner = withDefaultStyles(\r\n withI18nConsumer(DescriptionBanner),\r\n getDescriptionStyle\r\n);\r\n","import React, { Fragment } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport classNames from 'classnames';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { ProgressiveLoadingBlock } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { StyledTablePageContainer } from '@bingads-webui-campaign-react/table-page-container';\r\nimport { StyledGridViewWrapper } from '@bingads-webui-campaign-react/grid-view-wrapper';\r\nimport { withTablePageStateManager } from '@bingads-webui-campaign-react/table-page-state-manager';\r\nimport { getToolbarEditor } from '@bingads-webui-campaign-react/toolbar-plugin';\r\nimport { FilterViewManagerWithGlobalFilterContext } from '@bingads-webui-campaign-react/filter-view-manager';\r\nimport { withLegacyDeps } from '@bingads-webui-campaign-react/legacy-deps-context';\r\nimport { withPreference } from '@bingads-webui-react/preference-context';\r\nimport { withScope, QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { getEntityFromScope } from '@bingads-webui/edm-campaign';\r\nimport { TopGridPanel } from '@bingads-webui-campaign-react/top-grid-panel';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { withServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { withGlobalFilter } from '@bingads-webui-react/global-filter-context';\r\nimport { WaterfallFilterType, waterfallDateFilterProcessor } from '@bingads-webui-campaign/filter-storage';\r\nimport { updateGridQuery } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { buildMergedI18n } from '@bingads-webui-campaign-react/portfolio-bid-strategy-shared';\r\nimport { i18nMap } from './i18n-map/i18n-map';\r\n/* eslint-disable */\r\nimport globalConfig from '@bingads-webui-component-legacy/config/index';\r\nimport * as columnChooserPreferences from '@bingads-webui-component-legacy/bingads-grid/service/column-chooser-preferences';\r\nimport { getFilters as preferenceStoreFactory } from '@bingads-webui-component-legacy/bingads-grid/service/filter-preferences';\r\nimport jsdata from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport edm from '@bingads-webui-component-legacy/edm-campaign/index';\r\n// import { DownloadView } from '@bingads-webui-campaign-legacy/griddownload/view/adapter';\r\nimport appState from '@bingads-webui-component-legacy/state/index';\r\nimport { constructSchemaI18n } from '@bingads-webui-component-legacy/schema-i18n/loader';\r\nimport { fetchPaginationConfig } from '@bingads-webui-component-legacy/bingads-grid/service/fetch-pagination';\r\nimport { handleSortChange } from '@bingads-webui-campaign-legacy/bingadsgrid/service/state-manager-helper';\r\n/* eslint-enable */\r\nimport { getGridPreferences } from './fetch-preferences';\r\nimport { getToolbarConfig } from './toolbar-config';\r\nimport { toolbarActionFactory } from './toolbar-action';\r\nimport { clearSelection } from './selection-helper';\r\nimport { SeasonalityAdjustmentGridView } from './grid/grid-view';\r\nimport { SeasonalityAdjustmentGridConfig } from './grid/grid-config';\r\nimport { getStyles } from './styles';\r\nimport { getFilterConfig } from './filter-config';\r\nimport { inlineEditFactory } from './inline-edit';\r\nimport { StyledDescriptionBanner } from './description';\r\nimport { AdjustmentType, isDataExclusion } from './adjustment-type';\r\n\r\nconst gridName = 'SeasonalityAdjustmentGrid';\r\n\r\nclass SeasonalityAdjustmentPage extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.renderFilterViewManager = _.once(this.renderFilterViewManager);\r\n this.renderGrid = _.once(this.renderGrid);\r\n this.renderLazyGrid = _.once(this.renderLazyGrid);\r\n\r\n this.p$componentMount = new Promise((resolve) => {\r\n this.setComponentMounted = resolve;\r\n });\r\n\r\n this.p$preferenceConfig = getGridPreferences({\r\n gridName,\r\n fetchPaginationConfig,\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n this.setComponentMounted();\r\n }\r\n\r\n getRawDateFilter = () => this.props[WaterfallFilterType.DateFilter];\r\n\r\n getCookedDateFilter = () => {\r\n const { serverContext } = this.props;\r\n const rawDateFilter = this.getRawDateFilter();\r\n const cookedDateFilter = waterfallDateFilterProcessor([{ filter: rawDateFilter }], serverContext);\r\n\r\n return cookedDateFilter;\r\n }\r\n\r\n getGridView = () =>\r\n putil.get(this.backboneGridView, 'grid.gridView');\r\n\r\n clearSelection = () => clearSelection(this.getGridView());\r\n\r\n reloadGrid = ({\r\n resetSelection = false,\r\n } = {}) => {\r\n const gridView = this.getGridView();\r\n if (gridView) {\r\n if (resetSelection) {\r\n this.clearSelection();\r\n }\r\n gridView.refresh(true);\r\n }\r\n }\r\n\r\n renderFilterViewManager() {\r\n const {\r\n i18n,\r\n preferenceService,\r\n toolbarSelectedConfig,\r\n toolbarUnselectedConfig,\r\n updateToolbar,\r\n resetToolbarVisibility,\r\n permissions,\r\n adjustmentType,\r\n } = this.props;\r\n\r\n const { getGridView } = this;\r\n\r\n const legacyStringMap = isDataExclusion(adjustmentType) ?\r\n { ...i18nMap.DataExclusionSchema } :\r\n { ...i18nMap.SeasonalitySchema };\r\n\r\n const mergedI18n = buildMergedI18n({ i18n, legacyStringMap });\r\n\r\n const filterConfig = getFilterConfig({\r\n i18n: mergedI18n,\r\n globalConfig,\r\n preferenceService,\r\n preferenceStoreFactory,\r\n getGridView,\r\n adjustmentType,\r\n });\r\n\r\n this.filterService = filterConfig.filterService;\r\n\r\n const toolbarEditor = getToolbarEditor({\r\n toolbarConfig: { toolbarSelectedConfig, toolbarUnselectedConfig },\r\n updateToolbar,\r\n });\r\n\r\n return (\r\n );\r\n }\r\n\r\n renderLazyGrid() {\r\n const LazyGrid = React.lazy(() =>\r\n Promise.all([\r\n this.p$preferenceConfig,\r\n this.p$componentMount,\r\n ]).then(([preferenceConfig]) => ({\r\n default: () => this.renderGrid(preferenceConfig),\r\n })));\r\n\r\n return ();\r\n }\r\n\r\n renderGrid(preferenceConfig) {\r\n const {\r\n i18n,\r\n scope,\r\n permissions,\r\n onGridInjected,\r\n toolbarPlugin,\r\n crossPageSelectPlugin,\r\n preferenceService,\r\n perfMarker,\r\n mockData,\r\n showTopOfGridPanel,\r\n adjustmentType,\r\n } = this.props;\r\n const { currentAccount } = getEntityFromScope(scope);\r\n const { getGridView, reloadGrid } = this;\r\n\r\n let dataSource;\r\n if (mockData) {\r\n dataSource = mockData;\r\n } else {\r\n dataSource = {\r\n type: 'jsdata',\r\n entity: jsdata.SeasonalityAdjustment,\r\n options: {\r\n entitySet: edm.currentAccount.SeasonalityAdjustments['Default.GridData'].$call({\r\n gridDataParameters: {},\r\n adjustmentType,\r\n }),\r\n usePendingFindAll: false,\r\n },\r\n };\r\n }\r\n\r\n const legacyStringMap = {\r\n ...i18nMap.InlineEdit,\r\n ...i18nMap.columnChooser,\r\n };\r\n\r\n const mergedI18n = buildMergedI18n({ i18n, legacyStringMap });\r\n const inlineEditConfig = inlineEditFactory({\r\n i18n: mergedI18n,\r\n jsdata,\r\n currentAccount,\r\n getGridView,\r\n reloadGrid,\r\n adjustmentType,\r\n });\r\n\r\n const config = new SeasonalityAdjustmentGridConfig({\r\n adjustmentType,\r\n gridName,\r\n i18n: mergedI18n,\r\n dataSource,\r\n columnChooserPreferences,\r\n inlineEditConfig,\r\n scope,\r\n permissions,\r\n preferenceService,\r\n // DownloadView,\r\n appState,\r\n filterService: this.filterService,\r\n // s$i18n,\r\n perfMarker,\r\n globalConfig,\r\n });\r\n\r\n const finalConfig = putil.merge(config, preferenceConfig);\r\n\r\n const backboneGridView = new SeasonalityAdjustmentGridView({\r\n config: finalConfig,\r\n permissions,\r\n toolbarPlugin,\r\n crossPageSelectPlugin,\r\n });\r\n\r\n _.extend(this, { backboneGridView });\r\n\r\n updateGridQuery(getGridView(), this.filterService.getCombinedFilter(), true);\r\n\r\n // Once sort changes, save to preference\r\n getGridView().on('willUpdate', (changes) => {\r\n handleSortChange(changes, getGridView(), gridName);\r\n });\r\n\r\n const toolbarAction = toolbarActionFactory({\r\n i18n,\r\n jsdata,\r\n scope,\r\n getGridView,\r\n reloadGrid,\r\n showTopOfGridPanel,\r\n adjustmentType,\r\n });\r\n\r\n onGridInjected({\r\n backboneGridView,\r\n reloadGrid,\r\n toolbarAction,\r\n deselectAll: this.clearSelection,\r\n });\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n render() {\r\n const {\r\n classes,\r\n forceResetScrollFlag,\r\n showTopGridPanel,\r\n panelView,\r\n renderToolbarContainer,\r\n adjustmentType,\r\n } = this.props;\r\n\r\n const topGridPanel = showTopGridPanel ?\r\n () : null;\r\n\r\n const description = showTopGridPanel ? null : ();\r\n\r\n const topOfGridContent = (\r\n }>\r\n \r\n {topGridPanel}\r\n {description}\r\n \r\n \r\n );\r\n\r\n const stickyTopOfGridContent = (\r\n \r\n {renderToolbarContainer({ isMultiPage: false })}\r\n {this.renderFilterViewManager()}\r\n \r\n );\r\n\r\n return (\r\n }>\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nSeasonalityAdjustmentPage.propTypes = {\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n serverContext: PropTypes.shape({\r\n Token: PropTypes.string.isRequired,\r\n }).isRequired,\r\n legacyDeps: PropTypes.shape({}).isRequired,\r\n preferenceService: PropTypes.shape({}).isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n permissions: PropTypes.shape({}).isRequired,\r\n perfMarker: PropTypes.shape({}).isRequired,\r\n adjustmentType: PropTypes.oneOf([AdjustmentType.DataExclusion, AdjustmentType.SeasonalityAdjustment]).isRequired,\r\n // Begin: injected by withTablePageStateManager\r\n toolbarSelectedConfig: PropTypes.shape({}).isRequired,\r\n toolbarUnselectedConfig: PropTypes.shape({}).isRequired,\r\n updateToolbar: PropTypes.func.isRequired,\r\n resetToolbarVisibility: PropTypes.func.isRequired,\r\n renderToolbarContainer: PropTypes.func.isRequired,\r\n onGridInjected: PropTypes.func.isRequired,\r\n showTopGridPanel: PropTypes.bool.isRequired,\r\n panelView: PropTypes.shape({}),\r\n toolbarPlugin: PropTypes.shape({\r\n plugin: PropTypes.func.isRequired,\r\n }).isRequired,\r\n crossPageSelectPlugin: PropTypes.shape({\r\n plugin: PropTypes.func.isRequired,\r\n }).isRequired,\r\n forceResetScrollFlag: PropTypes.bool.isRequired,\r\n mockData: PropTypes.shape({}),\r\n showTopOfGridPanel: PropTypes.func.isRequired,\r\n // End: injected by withTablePageStateManager\r\n};\r\n\r\nSeasonalityAdjustmentPage.defaultProps = {\r\n panelView: null,\r\n mockData: null,\r\n};\r\n\r\nconst Wrapped = _.compose(\r\n withI18nConsumer,\r\n withLegacyDeps,\r\n withPreference,\r\n withScope,\r\n withPermissions,\r\n withServerContext,\r\n withGlobalFilter,\r\n Comp => withDefaultStyles(Comp, getStyles),\r\n withTablePageStateManager({ getToolbarConfig })\r\n)(SeasonalityAdjustmentPage);\r\n\r\nWrapped.defaultProps = {\r\n adjustmentType: AdjustmentType.SeasonalityAdjustment, // so that getToolbarConfig could get default value\r\n};\r\n\r\nexport { Wrapped as StyledSeasonalityAdjustmentPage };\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\n\r\nexport function getGridPreferences({\r\n gridName,\r\n fetchPaginationConfig,\r\n}) {\r\n const services = [\r\n fetchPaginationConfig(gridName),\r\n ];\r\n\r\n return Promise.all(services)\r\n .then(([paginationConfig]) => {\r\n const { pageSize, orderbyInfo, sortableHeader } = paginationConfig;\r\n const result = {\r\n dataSource: {},\r\n plugins: {\r\n pagination: {\r\n pageSize,\r\n },\r\n },\r\n };\r\n\r\n if (orderbyInfo && orderbyInfo.length > 0) {\r\n result.dataSource.orderby = orderbyInfo;\r\n result.sortableHeader = _.pick(sortableHeader, 'name', 'directionIndex');\r\n }\r\n\r\n return result;\r\n });\r\n}\r\n","import { getCommonFilterConfig } from '@bingads-webui-campaign/common-grid-config';\r\nimport odataSchemas from '@bingads-webui-campaign/campaign-ui-schemas';\r\nimport { sessionStore } from '@bingads-webui/js-data-storage';\r\nimport { FilterService } from '@bingads-webui/filter-service';\r\nimport { updateGridQuery } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { isDataExclusion } from './adjustment-type';\r\n\r\nexport function getFilterConfig({\r\n i18n,\r\n globalConfig,\r\n preferenceService,\r\n preferenceStoreFactory,\r\n getGridView,\r\n adjustmentType,\r\n}) {\r\n const searchboxPlaceholderText = isDataExclusion(adjustmentType) ? _TL_('Data exclusion name') : _TL_('Seasonality adjustment name');\r\n const featureName = isDataExclusion(adjustmentType) ? 'DataExclusionGrid' : 'SeasonalityAdjustmentGrid';\r\n const filterConfig = getCommonFilterConfig({\r\n i18n,\r\n featureName,\r\n entitySchema: odataSchemas.SeasonalityAdjustment,\r\n globalConfig,\r\n preferenceService,\r\n preferenceStoreFactory,\r\n sessionStore,\r\n enableCampaignWaterfall: false,\r\n allowCampaignTypeWaterfall: false,\r\n updatePilot: false,\r\n searchbox: {\r\n placeholder: i18n.getString(searchboxPlaceholderText),\r\n searchProperty: 'Name',\r\n searchOperator: '$contains',\r\n },\r\n });\r\n\r\n const filterService = new FilterService(filterConfig);\r\n\r\n filterService.on('filter-state-changed', (combinedFilter /* subStatus */) => {\r\n const gridView = getGridView();\r\n if (gridView) {\r\n updateGridQuery(gridView, combinedFilter.filter, true);\r\n }\r\n });\r\n\r\n return {\r\n ...filterConfig,\r\n filterService,\r\n };\r\n}\r\n\r\n","import React from 'react';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { notificationApi } from '@bingads-webui-campaign/notification-center';\r\nimport { storeSeasonalityAdjustmentName, getSeasonalityAdjustmentName } from '@bingads-webui-campaign/seasonality-id-name-utils';\r\nimport { SeasonalityAdjustmentCreationPanel } from './creation-form/seasonality-adjustment-creation-form';\r\nimport { localizeApiError } from './i18n-map/localize-api-errors';\r\n\r\nexport function toolbarActionFactory({\r\n i18n,\r\n jsdata,\r\n scope,\r\n getGridView,\r\n reloadGrid,\r\n showTopOfGridPanel,\r\n adjustmentType,\r\n}) {\r\n function onDeleteSeasonality(seasonalityId) {\r\n jsdata.SeasonalityAdjustment.destroy(seasonalityId)\r\n .then(() => {\r\n reloadGrid({ resetSelection: true });\r\n const storedName = getSeasonalityAdjustmentName(seasonalityId);\r\n if (storedName) {\r\n storeSeasonalityAdjustmentName({ id: seasonalityId, name: i18n.getString(_TL_('(deleted)')) });\r\n }\r\n })\r\n .catch((error) => {\r\n reloadGrid({ resetSelection: true });\r\n notificationApi.showWarning(localizeApiError(error, i18n, adjustmentType));\r\n })\r\n .finally(withUiBlock(getGridView().$el));\r\n }\r\n\r\n function onEditSeasonality(seasonalityId) {\r\n const creationView = (\r\n {\r\n showTopOfGridPanel(null);\r\n reloadGrid();\r\n }}\r\n onCancel={() => {\r\n showTopOfGridPanel(null);\r\n }}\r\n seasonalityId={seasonalityId}\r\n isUpdate\r\n scope={scope}\r\n />\r\n );\r\n showTopOfGridPanel(creationView);\r\n }\r\n\r\n return {\r\n onDeleteSeasonality,\r\n onEditSeasonality,\r\n };\r\n}\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport { SeasonalityAdjustmentCreationPanel } from './creation-form/seasonality-adjustment-creation-form';\r\nimport { pairsToMap } from './pairs-to-map';\r\n\r\n\r\nexport function getToolbarConfig({\r\n showTopOfGridPanel,\r\n lazyInject,\r\n i18n,\r\n adjustmentType,\r\n}) {\r\n function withSelectedId(actionName) {\r\n return () => {\r\n const {\r\n toolbarAction,\r\n backboneGridView,\r\n } = lazyInject();\r\n\r\n const selectedItems = backboneGridView.grid.gridView.selectedItems();\r\n const seasonalityIds = _.pluck(selectedItems, 'Id');\r\n\r\n toolbarAction[actionName](seasonalityIds[0]);\r\n };\r\n }\r\n\r\n const toolbarSelectedConfig = pairsToMap([\r\n ['button-edit', {\r\n id: 'button-edit',\r\n type: 'dropdown',\r\n classes: ['btn-primary'],\r\n iconLeftGlyphName: 'ba-Edit',\r\n text: i18n.getString(_TL_('Edit')),\r\n menu: {\r\n items: [\r\n {\r\n id: 'button-delete',\r\n type: 'button',\r\n classes: ['seasonality-toolbar-delete-button'],\r\n iconLeftGlyphName: 'ba-Delete',\r\n text: i18n.getString(_TL_('Delete')),\r\n onClick: withSelectedId('onDeleteSeasonality'),\r\n },\r\n {\r\n type: 'dropdown-divider',\r\n },\r\n {\r\n id: 'button-update',\r\n type: 'button',\r\n classes: ['seasonality-toolbar-change-settings-button'],\r\n text: i18n.getString(_TL_('Change settings')),\r\n onClick: withSelectedId('onEditSeasonality'),\r\n },\r\n ],\r\n },\r\n }],\r\n ['expander', {\r\n type: 'expander',\r\n }],\r\n ['button-clear-selection', {\r\n id: 'button-clear-selection',\r\n type: 'button-clear-selection',\r\n }],\r\n ]);\r\n\r\n const toolbarUnselectedConfig = pairsToMap([\r\n ['button-seasonality-adjustment-create', {\r\n id: 'button-seasonality-adjustment-create',\r\n text: i18n.getString(_TL_('Create')),\r\n type: 'button',\r\n classes: ['btn-primary'],\r\n iconLeftGlyphName: 'ba-Add',\r\n noResponsive: true,\r\n onClick: () => {\r\n const creationView = (\r\n {\r\n showTopOfGridPanel(null);\r\n lazyInject().reloadGrid();\r\n }}\r\n onCancel={() => {\r\n showTopOfGridPanel(null);\r\n }}\r\n />\r\n );\r\n showTopOfGridPanel(creationView);\r\n },\r\n }],\r\n ['predicate-list', {\r\n id: 'predicate-list',\r\n type: 'custom',\r\n }],\r\n ['search-box-filter', {\r\n id: 'search-box-filter',\r\n type: 'search-box',\r\n }],\r\n ['dropdown-column-chooser', {\r\n id: 'dropdown-column-chooser',\r\n type: 'dropdown',\r\n }],\r\n ]);\r\n\r\n return {\r\n toolbarSelectedConfig,\r\n toolbarUnselectedConfig,\r\n };\r\n}\r\n\r\n","const inlineRecommendationLocationStyle = {\r\n '.settings-grid-view .inline-recommendation-grid-icon': {\r\n color: '#1470A5',\r\n display: 'inline-block',\r\n overflow: 'visible',\r\n background: '#e6f5fa',\r\n },\r\n '.settings-grid-view .inline-recommendation-grid-icon:before': {\r\n fontSize: 14,\r\n },\r\n};\r\n\r\nexport const allSettingsSummaryStyle = Object.assign({}, inlineRecommendationLocationStyle);\r\n","import _ from 'underscore';\r\nimport { projectionGridScopeNavigator } from '@bingads-webui-campaign/projection-grid-scope-navigator';\r\nimport { placeholderPlugin } from '@bingads-webui/projection-grid-placeholder';\r\nimport { getPGridColumnResizePlugin } from '@bingads-webui-campaign/projection-grid-column-resize-helper';\r\n\r\nconst { noop } = _;\r\n\r\nexport const getAdditionalPlugins = ({\r\n gridName,\r\n permissions,\r\n preferenceService,\r\n crossPageSelectPlugin,\r\n toolbarPlugin,\r\n scope,\r\n i18n,\r\n}) => () => _.compact([\r\n crossPageSelectPlugin,\r\n toolbarPlugin,\r\n {\r\n plugin: definePlugin => definePlugin('filterState', [], noop),\r\n }, {\r\n plugin: projectionGridScopeNavigator,\r\n config: scope,\r\n }, {\r\n plugin: placeholderPlugin,\r\n config: {\r\n container: '.all-settings-page .grid-noresult',\r\n text: i18n.getString('Grid_NoRecords'),\r\n filteredEmptyText: i18n.getString('Grid_NoFilteredRecords'),\r\n },\r\n },\r\n getPGridColumnResizePlugin({\r\n gridName,\r\n preferenceService,\r\n permissions,\r\n }),\r\n]);\r\n","import $ from 'jquery';\r\nimport { noop, compose, extend, chain } from 'underscore';\r\nimport React, { Fragment } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { FilterService } from '@bingads-webui/filter-service';\r\nimport { StyledGridViewWrapper } from '@bingads-webui-campaign-react/grid-view-wrapper';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { closeImageStyle, InlineEditorStyle, uiblockerStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport { TargetingSettingsContext } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport { withGlobalFilter } from '@bingads-webui-campaign-react/global-filter-context';\r\nimport { TopGridPanel } from '@bingads-webui-campaign-react/top-grid-panel';\r\nimport { StyledTablePageContainer } from '@bingads-webui-campaign-react/table-page-container';\r\nimport { createAllSettingsGrid } from '@bingads-webui-campaign/all-settings-grid';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { withSiteMap } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { pagePaddingStyle } from '@bingads-webui-campaign-react/page-padding-style';\r\nimport { withTablePageStateManager } from '@bingads-webui-campaign-react/table-page-state-manager';\r\nimport { withInstrumentation } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { ProgressiveLoadingBlock, getFilteredCampaignTypeFromRawFilter } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { WaterfallFilterStorage, WaterfallFilterType } from '@bingads-webui-campaign/filter-storage';\r\nimport { allSettingsSummaryStyle } from './styles/settings-summary-style';\r\nimport { getFilterConfig } from './filter-config';\r\nimport { getAdditionalPlugins } from './additional-plugins';\r\nimport { getToolbarConfig } from './toolbar-config';\r\n\r\nconst getSettingsSummaryPageStyles = (_, { palette = {} }) => extend({\r\n topGridPanelCustomStyles: {\r\n '& .previewTable': {\r\n wordBreak: 'break-word',\r\n },\r\n },\r\n '@global': Object.assign(\r\n {},\r\n pagePaddingStyle(),\r\n allSettingsSummaryStyle,\r\n InlineEditorStyle(),\r\n closeImageStyle({ palette }),\r\n uiblockerStyle({ palette })\r\n ),\r\n});\r\n\r\nconst StyledGridViewWrapperWithFilterContext = withGlobalFilter(StyledGridViewWrapper);\r\n\r\nexport class SettingsSummary extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n backboneGridView: null,\r\n };\r\n this.willUnMount = false;\r\n this.columnAction = noop;\r\n this.viewport = React.createRef();\r\n\r\n this.createGrid();\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.state.backboneGridView) {\r\n this.state.backboneGridView.remove();\r\n }\r\n this.willUnMount = true;\r\n }\r\n\r\n getGridName() {\r\n return 'Settings';\r\n }\r\n\r\n createGrid() {\r\n const {\r\n p$legacyInit,\r\n scope,\r\n preferenceService,\r\n crossPageSelectPlugin,\r\n toolbarPlugin,\r\n onGridInjected,\r\n perfMarker,\r\n permissions,\r\n prefetchChunks,\r\n } = this.props;\r\n\r\n if (this.state && this.state.backboneGridView) {\r\n this.state.backboneGridView.remove();\r\n }\r\n if (this.state) {\r\n this.setState({ backboneGridView: null });\r\n }\r\n\r\n // merge the scopeService instance and scope entity object together\r\n const scopeAdapter = extend({\r\n customerId: scope.values.cid,\r\n accountId: scope.values.aid,\r\n campaignId: scope.values.campaignId,\r\n }, scope);\r\n\r\n const AllSettingsGridView = React.lazy(() => { // eslint-disable-line arrow-body-style\r\n return p$legacyInit.bind(this)\r\n .then(() => TargetingSettingsContext.fetchPreferenceConfig(this.getGridName()))\r\n .then((preferenceConfig) => {\r\n if (this.willUnMount) {\r\n return {};\r\n }\r\n\r\n const filterConfig = getFilterConfig({\r\n entitySchema: TargetingSettingsContext.CampaignSchema,\r\n i18n: TargetingSettingsContext.i18n,\r\n sessionStore: TargetingSettingsContext.jsDataSessionStore,\r\n preferenceStoreFactory: TargetingSettingsContext.preferenceStoreFactory.getFilters,\r\n legacyGlobalI18n: TargetingSettingsContext.legacyGlobalI18n,\r\n schemaI18nCampaign: TargetingSettingsContext.s$i18n,\r\n cacheService: TargetingSettingsContext.cacheService,\r\n dataContextManager: TargetingSettingsContext.dataContextManager,\r\n preferenceService,\r\n appConfig: TargetingSettingsContext.config,\r\n jsData: TargetingSettingsContext.jsDataCampaign,\r\n });\r\n\r\n const filterService = new FilterService(filterConfig);\r\n if (scopeAdapter.campaignId) {\r\n TargetingSettingsContext.state.set('campaign_id', scopeAdapter.campaignId);\r\n } else {\r\n TargetingSettingsContext.state.unset('campaign_id');\r\n }\r\n\r\n const waterfallFilterStorage = new WaterfallFilterStorage({\r\n preferenceService,\r\n });\r\n const getCampaignTypeGlobalFilter = () => {\r\n const filters = waterfallFilterStorage.getFilters([WaterfallFilterType.CampaignType]);\r\n const rawFilter = chain(filters).first().result('filter').value();\r\n return getFilteredCampaignTypeFromRawFilter(rawFilter);\r\n };\r\n\r\n const gridView = createAllSettingsGrid({\r\n filterService,\r\n gridName: this.getGridName(),\r\n getAdditionalPlugins: getAdditionalPlugins({\r\n gridName: this.getGridName(),\r\n permissions,\r\n preferenceService,\r\n toolbarPlugin,\r\n crossPageSelectPlugin,\r\n scope,\r\n i18n: TargetingSettingsContext.i18n,\r\n }),\r\n perfMarker,\r\n preferenceConfig,\r\n prefetchChunks,\r\n viewport: $('.all-settings-page'),\r\n customHeaderOffset: () => $('.sticky-container').height(),\r\n getCampaignTypeGlobalFilter,\r\n instrumentation: this.props.instrumentation,\r\n });\r\n\r\n this.setState({\r\n backboneGridView: gridView,\r\n });\r\n\r\n onGridInjected({\r\n backboneGridView: gridView,\r\n deselectAll: gridView.grid.gridView.deselectAll.bind(gridView.grid.gridView),\r\n });\r\n\r\n return {\r\n default: () => (),\r\n };\r\n });\r\n });\r\n\r\n this.allSettingsGrid = ();\r\n }\r\n\r\n render() {\r\n const {\r\n serverContext: {\r\n CurrentAccount: { TimeZone },\r\n },\r\n panelView,\r\n showTopGridPanel,\r\n renderToolbarContainer,\r\n } = this.props;\r\n const topGridPanel = showTopGridPanel ? () : null;\r\n\r\n const topOfGridContent = (\r\n }>\r\n \r\n {topGridPanel}\r\n \r\n \r\n );\r\n\r\n const stickyTopOfGridContent = (\r\n \r\n {renderToolbarContainer()}\r\n \r\n );\r\n\r\n return (\r\n }>\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nSettingsSummary.propTypes = {\r\n p$legacyInit: PropTypes.func.isRequired,\r\n serverContext: PropTypes.shape({\r\n CurrentAccount: PropTypes.object.isRequired,\r\n CurrentCustomer: PropTypes.object.isRequired,\r\n }).isRequired,\r\n preferenceService: PropTypes.shape({}).isRequired,\r\n permissions: PropTypes.shape({}).isRequired,\r\n scope: PropTypes.shape({\r\n values: PropTypes.shape({}),\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n topGridPanelCustomStyles: PropTypes.object.isRequired,\r\n }).isRequired,\r\n crossPageSelectPlugin: PropTypes.shape({\r\n plugin: PropTypes.func.isRequired,\r\n }).isRequired,\r\n toolbarPlugin: PropTypes.shape({\r\n plugin: PropTypes.func.isRequired,\r\n }).isRequired,\r\n panelView: PropTypes.func.isRequired,\r\n onGridInjected: PropTypes.func.isRequired,\r\n showTopGridPanel: PropTypes.bool.isRequired,\r\n renderToolbarContainer: PropTypes.func.isRequired,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n forceHideToolbar: PropTypes.bool.isRequired,\r\n forceResetScrollFlag: PropTypes.bool.isRequired,\r\n prefetchChunks: PropTypes.func.isRequired,\r\n};\r\n\r\nexport const ManagedSettingsSummary = compose(\r\n withInstrumentation,\r\n withSiteMap,\r\n WrappedComponent => withDefaultStyles(WrappedComponent, getSettingsSummaryPageStyles),\r\n withTablePageStateManager({ getToolbarConfig })\r\n)((SettingsSummary));\r\n\r\n","import { getCommonFilterConfig } from '@bingads-webui-campaign/common-grid-config';\r\n\r\nexport function getFilterConfig({\r\n entitySchema,\r\n i18n,\r\n sessionStore,\r\n preferenceStoreFactory,\r\n legacyGlobalI18n,\r\n schemaI18nCampaign,\r\n cacheService,\r\n dataContextManager,\r\n preferenceService,\r\n appConfig,\r\n jsData,\r\n}) {\r\n const filterConfig = getCommonFilterConfig({\r\n preferenceService,\r\n featureName: 'AllSettingsGrid',\r\n entitySchema,\r\n i18n,\r\n legacyGlobalI18n,\r\n sessionStore,\r\n preferenceStoreFactory,\r\n globalConfig: appConfig,\r\n schemaI18nCampaign,\r\n cacheService,\r\n dataContextManager,\r\n jsdata: jsData,\r\n enableCampaignWaterfall: true,\r\n enableAdGroupWaterfall: false,\r\n editor: {},\r\n selector: {\r\n items: [\r\n {\r\n key: 'all',\r\n text: i18n.getString('Dashboard_AllCampaigns'),\r\n value: {\r\n query: null, // {}\r\n },\r\n },\r\n {\r\n key: 'active',\r\n text: i18n.getString('Dashboard_AllEnabledCampaigns'),\r\n value: {\r\n query: {\r\n Status: {\r\n $in: [\r\n 'Enum.CampaignStatus\\'Active\\'',\r\n 'Enum.CampaignStatus\\'BudgetPaused\\'',\r\n ],\r\n },\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n });\r\n\r\n return filterConfig;\r\n}\r\n","import _ from 'underscore';\r\nimport { getRoutePathById } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { getLocalStorage } from '@bingads-webui/storage';\r\n\r\n/* global Map */\r\nexport function getToolbarConfig({\r\n onSelectCrossPage,\r\n scope,\r\n i18n,\r\n siteMap,\r\n permissions,\r\n serverContext,\r\n}) {\r\n const isCurrentAccountInActive = serverContext.CurrentAccount.Status === 32; // 32 is InActive\r\n\r\n const toolbarSelectedConfig = _.reduce(\r\n [\r\n ['selection-widget', {\r\n type: 'selection-widget',\r\n onSelectCrossPage,\r\n }],\r\n ['divider', {\r\n type: 'divider',\r\n }],\r\n ['dropdown-edit', {\r\n id: 'dropdown-edit',\r\n type: 'dropdown',\r\n disabled: permissions.IsReadOnlyUser || isCurrentAccountInActive,\r\n }],\r\n ['expander', {\r\n type: 'expander',\r\n }],\r\n ['button-clear-selection', {\r\n type: 'button-clear-selection',\r\n }],\r\n ], (map, [key, value]) => {\r\n map.set(key, value);\r\n return map;\r\n },\r\n new Map()\r\n );\r\n\r\n const toolbarUnselectedConfig = _.reduce(\r\n _.compact([\r\n ['button-campaign-create', {\r\n id: 'button-campaign-create',\r\n type: 'button',\r\n text: i18n.getString(_TL_('Create campaign')),\r\n classes: ['btn-primary'],\r\n iconLeftGlyphName: 'ba-Add',\r\n noResponsive: true,\r\n onClick: () => {\r\n scope.save(getRoutePathById(siteMap, 'campaign-create-objective'));\r\n const localStorage = getLocalStorage();\r\n if (localStorage.supportsStorage()) {\r\n localStorage.set('fromPathId', 'settings');\r\n }\r\n },\r\n disabled: permissions.IsReadOnlyUser || isCurrentAccountInActive,\r\n }],\r\n ['expander', {\r\n type: 'expander',\r\n }],\r\n ['dropdown-column-chooser', {\r\n id: 'dropdown-column-chooser',\r\n type: 'dropdown',\r\n pullRight: true,\r\n }],\r\n ['Expand table', {\r\n type: 'expand-table',\r\n }],\r\n ]), (map, [key, value]) => {\r\n map.set(key, value);\r\n return map;\r\n },\r\n new Map()\r\n );\r\n return {\r\n toolbarSelectedConfig,\r\n toolbarUnselectedConfig,\r\n };\r\n}\r\n","/* eslint-disable import/extensions */\r\n/* eslint-disable import/no-unresolved */\r\n\r\n\r\nimport * as httpUtils from '@bingads-webui/http-util';\r\nimport { AlertHelper } from '@bingads-webui-campaign/alert-helper';\r\nimport * as recommendationRepository from '@bingads-webui-campaign/recommendation-repository';\r\nimport { Campaign } from '@bingads-webui-campaign/campaign-ui-schemas';\r\n\r\nimport * as i18nErrors from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\nimport ChangeStatusView from '@bingads-webui-static-legacy/bulk-edit/view/campaign/changeStatus';\r\nimport ChangeStatusModel from '@bingads-webui-static-legacy/bulk-edit/model/campaign/changeStatus';\r\nimport ChangeUrlOptionsView from '@bingads-webui-static-legacy/bulk-edit/view/shared/changeUrlOptions';\r\nimport ChangeUrlOptionsModel from '@bingads-webui-static-legacy/bulk-edit/model/shared/changeUrlOptions';\r\nimport ChangeRsaAutoAssetsView from '@bingads-webui-static-legacy/bulk-edit/view/shared/changeRsaAutoAssets';\r\nimport ChangeRsaAutoAssetsModel from '@bingads-webui-static-legacy/bulk-edit/model/shared/changeRsaAutoAssets';\r\nimport InlineBudgetEditor from '@bingads-webui-campaign-legacy/budget/view/inline-budget-editor';\r\nimport InlineSharedBudgetEditor from '@bingads-webui-campaign-legacy/shared-budget/view/campaigns-grid-inline-shared-budget-editor';\r\nimport { Columns, SelectedColumns } from '@bingads-webui-component-legacy/bingads-grid/service/column-chooser-preferences';\r\nimport { LegacyColumns, LegacySelectedColumns } from '@bingads-webui-component-legacy/bingads-grid/service/legacy-column-chooser-preferences';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport campaignStatus from '@bingads-webui-static-legacy/schema/campaign/status';\r\nimport logger from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport edmCampaign from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport jsDataCampaign from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport preferencesService from '@bingads-webui-component-legacy/preference/service/index';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\nimport { handleSortChange } from '@bingads-webui-campaign-legacy/bingadsgrid/service/state-manager-helper';\r\nimport * as criterionLoader from '@bingads-webui-campaign-legacy/base-targets/util/criterionLoader';\r\nimport LocationMap from '@bingads-webui-campaign-legacy/location-targets/view/locationMap';\r\nimport * as locationTargetConverter from '@bingads-webui-campaign-legacy/location-targets/util/locationTargetConverter';\r\nimport CampaignCacheManager from '@bingads-webui-campaign-legacy/cache-manager/index';\r\nimport constants from '@bingads-webui-static-legacy/instrumentation/constants';\r\nimport sessionStorage from '@bingads-webui-component-legacy/storage/sessionStorage';\r\nimport jsDataSessionStore from '@bingads-webui-component-legacy/js-data-storage/session-storage';\r\nimport { getFilters } from '@bingads-webui-component-legacy/bingads-grid/service/filter-preferences';\r\nimport { setSegType, getSegType } from '@bingads-webui-component-legacy/bingads-grid/service/segmentation-preferences';\r\nimport dataContextManager from '@bingads-webui-static-legacy/summary/SummaryDataContextManager'; // eslint-disable-line dot-notation\r\nimport decimal from '@bingads-webui-component-legacy/humanize/decimal';\r\n\r\n\r\nexport function getDeps(contexts) {\r\n const {\r\n serverContext: {\r\n CurrentAccount: {\r\n AdvertiserCustomerID,\r\n Id,\r\n },\r\n Token,\r\n ServicesEndpoints: { CampaignAPI },\r\n },\r\n } = contexts;\r\n\r\n return {\r\n deps: {\r\n isNewUI: true,\r\n CampaignSchema: Campaign,\r\n ChangeStatusView,\r\n ChangeStatusModel,\r\n ChangeUrlOptionsView,\r\n ChangeUrlOptionsModel,\r\n ChangeRsaAutoAssetsView,\r\n ChangeRsaAutoAssetsModel,\r\n Columns,\r\n InlineBudgetEditor,\r\n InlineSharedBudgetEditor,\r\n LegacyColumns,\r\n LegacySelectedColumns,\r\n logger,\r\n SelectedColumns,\r\n campaignStatus,\r\n config,\r\n criterionLoader,\r\n edmCampaign,\r\n handleSortChange,\r\n i18nErrors,\r\n jsDataCampaign,\r\n pageContext,\r\n preferencesService,\r\n state,\r\n s$i18n: window.globalLegacyI18n.get('$/schema-i18n!campaign'),\r\n i18n: window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/targeting-settings'),\r\n i18nGlobal: window.globalLegacyI18n.get('module/extension/requirejs/i18n!global'),\r\n legacyGlobalI18n: window.globalLegacyI18n.get('component/i18n/loader!legacy/global'),\r\n LocationMap,\r\n locationTargetConverter,\r\n odataOptions: {\r\n host: CampaignAPI,\r\n oDataToken: Token,\r\n params: {\r\n customer_id: AdvertiserCustomerID,\r\n account_id: Id,\r\n },\r\n },\r\n httpUtils,\r\n AlertHelper,\r\n recommendationRepository,\r\n CampaignCacheManager,\r\n constants,\r\n sessionStorage,\r\n jsDataSessionStore,\r\n preferenceStoreFactory: {\r\n getFilters,\r\n },\r\n segmentPreference: {\r\n getSegType,\r\n setSegType,\r\n },\r\n dataContextManager,\r\n decimal,\r\n },\r\n };\r\n}\r\n","/* eslint-disable import/no-unresolved */\r\n\r\n/* eslint-disable import/extensions */\r\nimport Promise from 'bluebird';\r\nimport { omit } from 'underscore';\r\nimport { getGridPreferences } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { TargetingSettingsContext } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport {\r\n convertStringToEnumForCampaign,\r\n convertStringToEnumForAdGroup,\r\n} from '@bingads-webui-campaign-react/use-current-scope-entity';\r\nimport PageContext from '@bingads-webui-static-legacy/page-context';\r\nimport { getSegPreference, getSegType } from '@bingads-webui-component-legacy/bingads-grid/service/segmentation-preferences';\r\nimport segmentTimeChecker from '@bingads-webui-component-legacy/bingads-grid/shared/timeRangeChecker';\r\nimport { fetchPaginationConfig } from '@bingads-webui-component-legacy/bingads-grid/service/fetch-pagination';\r\nimport appState from '@bingads-webui-component-legacy/state/index';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\n\r\nconst pageContext = PageContext;\r\n\r\nfunction getLegacyDependencies(contexts, getDeps) {\r\n if (!contexts.campaignContext) {\r\n return Promise.resolve(getDeps(contexts));\r\n }\r\n\r\n const {\r\n campaignContext: {\r\n currentCampaign,\r\n currentAdGroup,\r\n },\r\n scope: {\r\n values: {\r\n campaignId,\r\n adGroupId,\r\n },\r\n },\r\n } = contexts;\r\n const updatedProps = {};\r\n\r\n if (currentCampaign && campaignId) {\r\n updatedProps.currentCampaign = convertStringToEnumForCampaign(currentCampaign);\r\n }\r\n\r\n if (currentAdGroup && adGroupId) {\r\n updatedProps.currentAdGroup = convertStringToEnumForAdGroup(currentAdGroup);\r\n }\r\n\r\n // removed the dependency on app-legacy-bootstrap-webpack so assigning updated values to page context here.\r\n Object.assign(pageContext, { CurrentCampaign: updatedProps.currentCampaign, CurrentAdGroup: updatedProps.currentAdGroup });\r\n\r\n config.set({\r\n CurrentCampaign: updatedProps.currentCampaign,\r\n });\r\n\r\n return Promise.resolve(getDeps(contexts));\r\n}\r\n\r\nfunction fetchPreferenceConfig(gridName) {\r\n return new Promise((resolve) => {\r\n getGridPreferences({ // bluebird promise\r\n gridName, // should be the same as the grid config\r\n dateUtil: {\r\n format: value => TargetingSettingsContext.i18n.formatDate(value),\r\n },\r\n state: appState,\r\n getSegPreference,\r\n getSegType,\r\n segmentTimeChecker,\r\n fetchPaginationConfig,\r\n }).then((preferenceConfig) => {\r\n // eslint-disable-next-line no-param-reassign\r\n preferenceConfig.dataSource = omit(preferenceConfig.dataSource, 'query');\r\n resolve(preferenceConfig);\r\n });\r\n });\r\n}\r\n\r\nexport function initializeWithLegacyDependencies(options, getDeps) {\r\n const {\r\n serverContext, scope, permissions, history, preferenceService,\r\n } = options;\r\n\r\n const campaignContext = (options.currentCampaign || options.currentAdGroup) ?\r\n {\r\n currentCampaign: options.currentCampaign,\r\n currentAdGroup: options.currentAdGroup,\r\n } : undefined;\r\n\r\n return getLegacyDependencies({\r\n serverContext, scope, permissions, campaignContext, history, preferenceService,\r\n }, getDeps).then((deps) => {\r\n TargetingSettingsContext.initialize(deps);\r\n TargetingSettingsContext.fetchPreferenceConfig = fetchPreferenceConfig;\r\n return deps;\r\n });\r\n}\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { ManagedSettingsSummary } from './settings-summary-page';\r\nimport { getDeps } from './summary-legacy-deps-list';\r\nimport { initializeWithLegacyDependencies } from './get-injected-dependencies';\r\n\r\nclass SettingsSummary extends React.PureComponent {\r\n render() {\r\n this.p$legacyInit = initializeWithLegacyDependencies(this.props, getDeps);\r\n return (\r\n );\r\n }\r\n}\r\n\r\nSettingsSummary.propTypes = {\r\n serverContext: PropTypes.shape({\r\n CurrentAccount: PropTypes.object.isRequired,\r\n CurrentCustomer: PropTypes.object.isRequired,\r\n }),\r\n scope: PropTypes.shape({\r\n values: {\r\n adGroupId: PropTypes.number,\r\n campaignId: PropTypes.number,\r\n },\r\n }).isRequired,\r\n permissions: PropTypes.shape({\r\n }),\r\n classes: PropTypes.shape({\r\n pageContainer: PropTypes.string.isRequired,\r\n settingsFormContainer: PropTypes.string.isRequired,\r\n }).isRequired,\r\n currentCampaign: PropTypes.shape({}),\r\n currentAdGroup: PropTypes.shape({}),\r\n preferenceService: PropTypes.shape({}).isRequired,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n prefetchChunks: PropTypes.func.isRequired,\r\n};\r\n\r\nSettingsSummary.defaultProps = {\r\n serverContext: {},\r\n permissions: {},\r\n currentCampaign: null,\r\n currentAdGroup: null,\r\n};\r\n\r\nexport const SettingsSummaryView = SettingsSummary;\r\n\r\n","/* eslint-disable import/extensions */\r\n/* eslint-disable import/no-unresolved */\r\n\r\nimport * as httpUtils from '@bingads-webui/http-util';\r\nimport { AlertHelper } from '@bingads-webui-campaign/alert-helper';\r\nimport * as recommendationRepository from '@bingads-webui-campaign/recommendation-repository';\r\nimport * as gmcToMMCGridDeps from '@bingads-webui-campaign-react/gmc-to-mmc-mapping-grid-shared';\r\n\r\nimport * as i18nErrors from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\nimport editAdGroupPage from '@bingads-webui-campaign-legacy/adgroup-settings/view/index';\r\nimport editCampaignPage from '@bingads-webui-campaign-legacy/campaign-settings/view/index';\r\nimport editShoppingCampaignPage from '@bingads-webui-campaign-legacy/shopping-campaign/view/campaign-creation/update';\r\nimport editSmartShoppingCampaignPage from '@bingads-webui-campaign-legacy/shopping-campaign/view/campaign-creation/smart-shopping-campaign-settings';\r\nimport { AudienceAdgroupSettingsWizard } from '@bingads-webui-campaign-legacy/audience-campaign/loader';\r\nimport logger from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport * as criterionLoader from '@bingads-webui-campaign-legacy/base-targets/util/criterionLoader';\r\nimport LocationMap from '@bingads-webui-campaign-legacy/location-targets/view/locationMap';\r\nimport * as locationTargetConverter from '@bingads-webui-campaign-legacy/location-targets/util/locationTargetConverter';\r\nimport CampaignCacheManager from '@bingads-webui-campaign-legacy/cache-manager/index';\r\nimport constants from '@bingads-webui-static-legacy/instrumentation/constants';\r\nimport sessionStorage from '@bingads-webui-component-legacy/storage/sessionStorage';\r\nimport decimal from '@bingads-webui-component-legacy/humanize/decimal';\r\n\r\n\r\nexport function getDeps(contexts) {\r\n const {\r\n serverContext: {\r\n CurrentAccount: {\r\n AdvertiserCustomerID,\r\n Id,\r\n },\r\n Token,\r\n ServicesEndpoints: { CampaignAPI },\r\n },\r\n } = contexts;\r\n\r\n return {\r\n deps: {\r\n isNewUI: true,\r\n AudienceAdgroupSettingsWizard,\r\n logger,\r\n criterionLoader,\r\n editAdGroupPage,\r\n editCampaignPage,\r\n editShoppingCampaignPage,\r\n editSmartShoppingCampaignPage,\r\n i18nErrors,\r\n pageContext,\r\n i18n: window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/targeting-settings'),\r\n i18nGlobal: window.globalLegacyI18n.get('module/extension/requirejs/i18n!global'),\r\n legacyGlobalI18n: window.globalLegacyI18n.get('component/i18n/loader!legacy/global'),\r\n LocationMap,\r\n locationTargetConverter,\r\n odataOptions: {\r\n host: CampaignAPI,\r\n oDataToken: Token,\r\n // SessionId: _.result(config.get('Omniture'), 'SessionId'),\r\n // [shasharm]Maybe not needed, add back if window.required\r\n params: {\r\n customer_id: AdvertiserCustomerID,\r\n account_id: Id,\r\n },\r\n },\r\n httpUtils,\r\n AlertHelper,\r\n recommendationRepository,\r\n CampaignCacheManager,\r\n constants,\r\n sessionStorage,\r\n decimal,\r\n gmcToMMCGridDeps,\r\n },\r\n };\r\n}\r\n","import { uurlTestToolStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nexport const getSmartShoppingCampaignOverrideStyles = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '.smart-shopping-settings': {\r\n '& .bidding-strategy__container': {\r\n '& .custom-param__key-field': {\r\n width: 85,\r\n display: 'inline-block',\r\n marginLeft: 5,\r\n marginRight: 5,\r\n },\r\n '& .col-sm-6': {\r\n width: 438,\r\n boxSizing: 'content-box',\r\n paddingTop: 5,\r\n '& .alert': {\r\n marginTop: 6,\r\n },\r\n },\r\n },\r\n '& .campaign-settings-title, & .advaced-settings-title': {\r\n display: 'none',\r\n },\r\n '& .adschedule-targets-container': {\r\n borderTop: 'none',\r\n '& .col-sm-2, & .col-sm-10': {\r\n paddingLeft: 0,\r\n },\r\n '& #adScheduleDisplayTimeLabel': {\r\n display: 'block',\r\n },\r\n },\r\n '& .advanced-settings': {\r\n paddingBottom: 20,\r\n '& .form-group': {\r\n marginLeft: 0,\r\n },\r\n '&>div>.form-horizontal>.form-group>a[data-target=\"#setAdvancedSettings\"]': {\r\n fontSize: 18,\r\n marginBottom: 15,\r\n marginLeft: 0,\r\n paddingLeft: 0,\r\n '&:hover, &:focus': {\r\n border: 'none',\r\n textDecoration: 'none',\r\n backgroundColor: '#F3F2F1',\r\n },\r\n },\r\n ...uurlTestToolStyle({ palette, iconFontFamily }),\r\n },\r\n },\r\n});\r\n","export const customParamsStyle = {\r\n '#customParametersSettings': {\r\n '& .custom-param__key-field': {\r\n width: '155px',\r\n display: 'inline-block',\r\n },\r\n '& .closeimage.custom-param__close-button': {\r\n position: 'static',\r\n },\r\n '& .custom-param__value-field': {\r\n width: '260px',\r\n display: 'inline-block',\r\n },\r\n '& .custom-param-entry': {\r\n '& .control-label': {\r\n display: 'inline-block',\r\n },\r\n '& input.form-control': {\r\n display: 'inline-block',\r\n },\r\n '& label.control-label': {\r\n display: 'inline-block',\r\n marginLeft: '5px',\r\n marginRight: '5px',\r\n },\r\n },\r\n '& .custom-param__key-container': {\r\n display: 'inline-block',\r\n },\r\n '& .flex-row-dynamic': {\r\n verticalAlign: 'initial',\r\n },\r\n },\r\n '.custom-parameters': {\r\n width: 600,\r\n },\r\n '.bidding-strategy__container': {\r\n '& .custom-param__key-field': {\r\n display: 'inline-block',\r\n width: '85px',\r\n 'margin-left': '5px',\r\n 'margin-right': '5px',\r\n },\r\n '& #currencyLabelTargetCpa': {\r\n display: 'inline-block',\r\n 'vertical-align': 'initial',\r\n marginTop: 0,\r\n },\r\n '& #currencyLabelTargetRoas': {\r\n display: 'inline-block',\r\n 'vertical-align': 'initial',\r\n marginTop: 0,\r\n },\r\n '& .alert.alert-info': {\r\n marginTop: 8,\r\n },\r\n '& .alert-image': {\r\n paddingTop: 3,\r\n },\r\n '& a.helpbutton': {\r\n 'margin-left': '5px',\r\n },\r\n },\r\n};\r\n","import { merge } from '@bingads-webui/primitive-utilities';\r\nimport { isFunction, some, isEmpty } from 'underscore';\r\nimport {\r\n campaignSettingsStyles, budgetBidsStyles, adgroupCreationStyles,\r\n creationCommonStyle, dsaCampaignStyles, audienceTargetsSettingsStyles,\r\n audienceCampaignSettingsStyles, audienceAdgroupStyles, audienceBudgetBidsStyles,\r\n disclaimerPanelStyles, globalDsaCampaignStyles, sharedStylesFromSelDesign\r\n} from '@bingads-webui-campaign-react/campaign-adgroup-settings-shared-styles';\r\nimport {\r\n uiblockerStyle,\r\n toggleButtonStyle,\r\n messageBarStyle,\r\n searchboxStyle,\r\n tableStyle,\r\n btnStyle,\r\n linkStyle,\r\n paginationStyle,\r\n statusStyle,\r\n controlStyle,\r\n floatButtonStyle,\r\n getLocalBlockerStyle,\r\n advancedSettingsSectionStyle,\r\n containerBudgetStyle,\r\n locationBidGridStyle,\r\n keywordPlannerStyle,\r\n locationMapStyle,\r\n glyphIconStyle,\r\n sharedBudgetGridWrapper,\r\n audienceReachEstimateContainerStyle,\r\n selectElementStyle,\r\n audienceAssociationSectionStyle,\r\n scrollbarStyle,\r\n audienceModalStyles,\r\n audienceExpressionStyle,\r\n audienceCombinedListStyle,\r\n datePickerStyle,\r\n targetLocationRecommendationStyle,\r\n closeImageStyle,\r\n alertStyle,\r\n helpbuttonStyle,\r\n experimentSettingsStyle,\r\n entitySelectorStyle,\r\n} from '@bingads-webui-campaign-react/common-styles';\r\n\r\nimport { getOverrideStyles } from './override';\r\nimport { getSmartShoppingCampaignOverrideStyles } from './smart-shopping-campaign-override';\r\nimport { customParamsStyle } from './custom-params';\r\nimport { getPageContainerStyles } from './page-container';\r\n\r\nfunction resolveStyles({ theme }, ...styles) {\r\n const resolvedStyles = styles.map(s => (isFunction(s) ? s(theme) : s));\r\n\r\n if (some(resolvedStyles, isEmpty)) {\r\n throw new Error('Cannot pass in empty style!');\r\n }\r\n\r\n return resolvedStyles;\r\n}\r\n\r\nconst glyphIconStyleOverride = (theme) => {\r\n const original = glyphIconStyle(theme);\r\n original['input[type=\"radio\"]'] = {};\r\n return original;\r\n};\r\n\r\nexport const getSettingsPageStyles = (_, theme) => {\r\n const { palette } = theme;\r\n\r\n return {\r\n ...getPageContainerStyles(),\r\n audienceAdGroupPage: {\r\n position: 'relative',\r\n minWidth: 1400,\r\n },\r\n settingsFormContainer: {\r\n marginLeft: '32px',\r\n marginBottom: '32px',\r\n ...merge(\r\n {},\r\n {\r\n '@global': merge(\r\n {}, ...resolveStyles(\r\n { theme },\r\n messageBarStyle,\r\n btnStyle,\r\n controlStyle,\r\n floatButtonStyle,\r\n getLocalBlockerStyle,\r\n glyphIconStyleOverride,\r\n customParamsStyle,\r\n scrollbarStyle,\r\n closeImageStyle\r\n ),\r\n experimentSettingsStyle(theme),\r\n getOverrideStyles(theme),\r\n getSmartShoppingCampaignOverrideStyles(theme)\r\n ),\r\n },\r\n ...resolveStyles(\r\n { theme },\r\n dsaCampaignStyles,\r\n campaignSettingsStyles,\r\n budgetBidsStyles,\r\n adgroupCreationStyles,\r\n audienceCampaignSettingsStyles,\r\n audienceBudgetBidsStyles,\r\n containerBudgetStyle,\r\n keywordPlannerStyle,\r\n searchboxStyle,\r\n locationBidGridStyle,\r\n locationMapStyle,\r\n sharedBudgetGridWrapper,\r\n tableStyle,\r\n toggleButtonStyle,\r\n linkStyle,\r\n selectElementStyle\r\n )\r\n ),\r\n ...paginationStyle(theme),\r\n ...alertStyle(theme),\r\n ...statusStyle(theme),\r\n ...audienceReachEstimateContainerStyle(theme, { leftMargin: 'unset', rightMargin: 440 }),\r\n ...audienceAssociationSectionStyle(theme, { singleListBoxWidth: 510 }),\r\n ...audienceTargetsSettingsStyles(theme, { companySearchTableWidth: 813, companySearchTableCompanyNameWidth: 721, companyIconHeightWidth: 32 }),\r\n ...audienceAdgroupStyles(theme, { creationContainerMarginLeft: 0 }),\r\n ...advancedSettingsSectionStyle(theme, { advancedSectionMarginLeft: 0 }),\r\n ...creationCommonStyle(theme, { isCreationPage: false }),\r\n },\r\n '@global': merge(\r\n {},\r\n uiblockerStyle(theme),\r\n datePickerStyle({ palette }),\r\n targetLocationRecommendationStyle({ palette }),\r\n glyphIconStyleOverride(theme),\r\n disclaimerPanelStyles({ palette }),\r\n globalDsaCampaignStyles({ palette }),\r\n {\r\n '.ui-next-summary-bar .summary-bar-settings .fall-back-settings': {\r\n display: 'none',\r\n },\r\n '.audience-modal.create-audience': {\r\n width: 700,\r\n },\r\n '.ima-reach-warning-container': {\r\n marginLeft: '15px',\r\n marginTop: '5px',\r\n marginBottom: '15px',\r\n },\r\n },\r\n audienceModalStyles(theme, { modalWidth: 500 }),\r\n audienceExpressionStyle(),\r\n audienceCombinedListStyle({ palette }),\r\n helpbuttonStyle(theme),\r\n sharedStylesFromSelDesign(),\r\n entitySelectorStyle({ palette }),\r\n paginationStyle({ palette })\r\n ),\r\n };\r\n};\r\n","import { isEqual, omit, result, get } from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { withPropFilter } from '@bingads-webui-campaign-react/with-prop-filter';\r\n\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { AllSettingsView } from '@bingads-webui-campaign/all-settings';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { withSiteMap, getRoutePathById } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { EventDelegator } from '@bingads-webui-campaign-react/event-delegator';\r\nimport { getRouterDep } from '@bingads-webui-campaign-react/legacy-router-dep';\r\nimport { CampaignSubTypeMapping, isAudienceNativeAdsCampaign, isAudienceCampaign, isSearchShoppingCampaign, isAudienceShoppingCampaign, isSearchCampaign } from '@bingads-webui-campaign-react/constants';\r\nimport { CampaignType } from '@bingads-webui-campaign/campaign-ui-common';\r\nimport { ContentFooter } from '@bingads-webui-campaign-react/content-footer';\r\nimport { SponsoredCampaignSettingsPage } from '@bingads-webui-campaign-react/sponsored-campaign-creation';\r\nimport { isMSStoreAdsCampaign } from '@bingads-webui-campaign-react/ms-store-ads-common';\r\nimport { withCcJsData } from '@bingads-webui-cc-react/js-data-rest';\r\n\r\nimport {\r\n getScope,\r\n TargetingScope,\r\n} from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport { BackboneInstanceWrapper } from '@bingads-webui-react/backbone-instance-wrapper';\r\nimport { HotelCampaignSettings } from '@bingads-webui-campaign/hotel-campaign-upsert';\r\nimport { HotelAdGroupSettings } from '@bingads-webui-campaign/hotel-adgroup-upsert';\r\nimport { PerfMaxCampaignSettingsPage } from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\nimport { PerfMaxNorthStarSettingWizard } from '@bingads-webui-campaign-react/perf-max-wizard-north-star';\r\nimport { LinkedInCampaignSettingsWizard, LinkedInAdGroupSettingsWizard } from '@bingads-webui-campaign-react/linkedin-campaign-wizard';\r\nimport { DisplayPlusEditCampaignWizard, DisplayPlusEditAdGroupWizard } from '@bingads-webui-campaign-react/display-plus-campaigns';\r\nimport { XandrVideoCampaignSettingsPage, XandrVideoAdGroupSettingsPage } from '@bingads-webui-campaign-react/xandr-video-campaign';\r\nimport { XandrDisplayAdsAdGroupSettingsPage, XandrDisplayAdsCampaignSettingsPage } from '@bingads-webui-campaign-react/xandr-display-ads-campaign';\r\nimport { AppAdsCampaignEditPage } from '@bingads-webui-campaign-react/app-ads-campaigns';\r\nimport { UnifiedAppEditCampaignSettingsWizard } from '@bingads-webui-campaign-react/unified-app-campaign-wizard';\r\nimport { withCurrentExpandedScope } from '@bingads-webui-campaign-react/use-current-scope-entity';\r\nimport { StandardShoppingCampaignWizard, CREATE_SCENARIO } from '@bingads-webui-campaign-react/standard-shopping-wizard';\r\nimport { SearchCampaignEditWizard, SearchAdGroupEditWizard } from '@bingads-webui-campaign-react/search-campaign-wizard';\r\nimport { setClarityTag } from '@bingads-webui-universal/clarity';\r\nimport { getDeps } from './form-legacy-deps-list';\r\nimport { initializeWithLegacyDependencies } from './get-injected-dependencies';\r\nimport { redirectToAdsPageIfCurrentCampaignIsSSCAndUserIsInAdGroupLevel } from './ssc-redirect';\r\nimport { getSettingsPageStyles } from './styles/index';\r\n\r\nconst getIsNewShoppingWizard = ({ currentCampaign, permissions }) => {\r\n const isPAAIMConsolidation = get(permissions, ['dynamic', 'PAAIMConsolidation'], false);\r\n const isSearchShoppingWizard = get(permissions, ['dynamic', 'SearchShoppingWizard'], false);\r\n if (currentCampaign) {\r\n const { CampaignType: CType, CampaignSubType: SubCType } = currentCampaign;\r\n if (isSearchShoppingCampaign(CType, SubCType) && isSearchShoppingWizard) {\r\n return true;\r\n } else if (isAudienceShoppingCampaign(CType, SubCType) && isPAAIMConsolidation) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nconst propFilter = (props) => {\r\n const { currentCampaign, currentAdGroup, permissions } = props;\r\n\r\n const formatCurrentCampaign = {\r\n ...currentCampaign,\r\n CampaignSubType: CampaignSubTypeMapping[currentCampaign.CampaignSubType],\r\n };\r\n\r\n const { campaignId, adGroupId } = props.scope.values;\r\n const scope = getScope(campaignId, adGroupId);\r\n\r\n const isHotelCampaign = currentCampaign && currentCampaign.CampaignType === 'Hotel';\r\n\r\n // Exclude Campaign, AdGroup status from props because settings pages don't need to change\r\n // based on status.\r\n const omittedAdGroupProps = [\r\n 'Status',\r\n 'EntityStatus',\r\n ...getIsNewShoppingWizard({ currentCampaign, permissions }) ? [] : ['AdRotation'],\r\n ];\r\n const filteredProps = {\r\n currentCampaign: (isHotelCampaign && scope === TargetingScope.Campaign) ? omit(formatCurrentCampaign, 'Name', 'BiddingScheme') : formatCurrentCampaign,\r\n currentAdGroup: currentAdGroup ? omit(currentAdGroup, ...omittedAdGroupProps) : currentAdGroup,\r\n };\r\n\r\n return {\r\n ...props,\r\n ...filteredProps,\r\n };\r\n};\r\n\r\n// Thin wrapper over the ContentFooter which, using { margin-top: 'auto' }\r\n// makes footer move to the bottom of the container.\r\n// While the actual settings page is loading, the footer will be\r\n// at the bottom of the page. After page renders, it will expand\r\n// the parent's height more than the view-port allows, which\r\n// will collapse the margin above the footer, making it just follow\r\n// the page contents.\r\nconst BottomStickingContentFooter = props => (\r\n
    \r\n \r\n
    \r\n);\r\n\r\nconst lazyWrap = p$view => React.lazy(() => p$view.then(instance => ({ default: () => instance })));\r\nclass UnStyledAllSettings extends React.Component {\r\n componentDidMount() {\r\n const {\r\n currentCampaign, currentAdGroup, scope, siteMap,\r\n } = this.props;\r\n const adsPageRoutePath = getRoutePathById(siteMap, 'ads');\r\n redirectToAdsPageIfCurrentCampaignIsSSCAndUserIsInAdGroupLevel(scope, currentCampaign, currentAdGroup, adsPageRoutePath);\r\n }\r\n\r\n shouldComponentUpdate(nextProps, nextState) {\r\n // Currently there's no state in this component, so second half is just a guardrail.\r\n return !isEqual(nextProps, this.props) || nextState !== this.state;\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.backboneSettingsView) {\r\n this.backboneSettingsView.remove();\r\n }\r\n }\r\n\r\n isHotelCampaign() {\r\n const {\r\n currentCampaign,\r\n permissions,\r\n } = this.props;\r\n const { campaignId, adGroupId } = this.props.scope.values;\r\n const scope = getScope(campaignId, adGroupId);\r\n const isHotelEnabled = permissions && permissions.dynamic && permissions.dynamic.HotelCampaign;\r\n const isHotelCampaign = currentCampaign && currentCampaign.CampaignType === 'Hotel';\r\n return scope !== TargetingScope.Account && isHotelEnabled && isHotelCampaign;\r\n }\r\n\r\n isPerfMaxCampaign() {\r\n const {\r\n currentCampaign,\r\n permissions,\r\n } = this.props;\r\n const { campaignId, adGroupId } = this.props.scope.values;\r\n const isCampaignScope = campaignId && !adGroupId;\r\n const isPerfMaxCampaignEnabled = permissions && permissions.dynamic && permissions.dynamic.PerformanceMaxCampaigns;\r\n const isPerfMaxCampaign = currentCampaign && CampaignType[currentCampaign.CampaignType] === CampaignType.PerformanceMax;\r\n return isCampaignScope && isPerfMaxCampaignEnabled && isPerfMaxCampaign;\r\n }\r\n\r\n isXandrVideoCampaign() {\r\n const {\r\n currentCampaign,\r\n permissions,\r\n } = this.props;\r\n const isXandrVideoCampaignEnabled = permissions && permissions.dynamic && permissions.dynamic.XandrVideoCampaigns;\r\n const isXandrVideoCampaign = currentCampaign && currentCampaign.CampaignSubType === CampaignSubTypeMapping.BrandAwarenessVideoAds;\r\n return isXandrVideoCampaignEnabled && isXandrVideoCampaign;\r\n }\r\n\r\n isAppAdsCampaign() {\r\n const {\r\n currentCampaign,\r\n permissions,\r\n } = this.props;\r\n const isAppAdsCampaignEnabled = permissions && permissions.dynamic && permissions.dynamic.AppAdsCampaignPhaseOne;\r\n const isAppAdsCampaign = currentCampaign && CampaignType[currentCampaign.CampaignType] === CampaignType.App;\r\n return isAppAdsCampaignEnabled && isAppAdsCampaign;\r\n }\r\n\r\n isUnifiedAppAdsCampaign() {\r\n const {\r\n currentCampaign,\r\n } = this.props;\r\n const appCampaignSettings = currentCampaign && currentCampaign.CampaignSettings && currentCampaign.CampaignSettings.find(setting => setting['@odata.type'] === '#Model.AppSetting');\r\n const isUnifiedAppAdsCampaignEnabled = appCampaignSettings ? (appCampaignSettings.IsUniversalAppCampaign) : false;\r\n\r\n const isMobileAppStore = appCampaignSettings && (appCampaignSettings.AppStore === 'GoogleAppStore' || appCampaignSettings.AppStore === 'AppleAppStore');\r\n const isUnifiedAppAdsCampaign = currentCampaign && CampaignType[currentCampaign.CampaignType] === CampaignType.App;\r\n return (isUnifiedAppAdsCampaignEnabled || isMobileAppStore) && isUnifiedAppAdsCampaign;\r\n }\r\n\r\n isDisplayPlusNativeAdsCampaign() {\r\n const {\r\n currentCampaign,\r\n permissions,\r\n } = this.props;\r\n const isDisplayPlusEditEnabled = permissions && permissions.dynamic && permissions.dynamic.DisplayPlusEdit;\r\n const isAudienceCampaignType = currentCampaign && isAudienceCampaign(currentCampaign.CampaignType);\r\n const isNativeAdsCampaign = currentCampaign && isAudienceNativeAdsCampaign(currentCampaign.CampaignSubType);\r\n return isDisplayPlusEditEnabled && isAudienceCampaignType && isNativeAdsCampaign;\r\n }\r\n\r\n isXandrDisplayAdsCampaign() {\r\n const {\r\n currentCampaign,\r\n permissions,\r\n } = this.props;\r\n const isXandrDisplayAdsCampaignEnabled = permissions && permissions.dynamic && permissions.dynamic.XandrDisplayAdsCampaigns;\r\n const isXandrDisplayAdsCampaign = currentCampaign && currentCampaign.CampaignSubType === CampaignSubTypeMapping.DisplayAds;\r\n return isXandrDisplayAdsCampaignEnabled && isXandrDisplayAdsCampaign;\r\n }\r\n\r\n isCTVCampaign() {\r\n const { currentCampaign } = this.props;\r\n return this.isXandrVideoCampaign() && currentCampaign.BiddingScheme && currentCampaign.BiddingScheme.Type === 'ManualCpv';\r\n }\r\n\r\n isDealCampaign() {\r\n const { currentCampaign } = this.props;\r\n return this.isXandrVideoCampaign() && currentCampaign.IsDealCampaign;\r\n }\r\n\r\n isSimplifiedSponsoredCampaign() {\r\n const { currentCampaign, permissions } = this.props;\r\n const isSPAv2Enabled = permissions && permissions.IsSPAv2Enabled;\r\n const isDomesticSimplifiedChineseEnabled = permissions && permissions.IsDomesticSimplifiedChineseEnabled;\r\n const isSponsoredCampaign = currentCampaign && currentCampaign.CampaignSubType === CampaignSubTypeMapping.ShoppingSponsoredProductAd;\r\n\r\n if (isSponsoredCampaign && (isSPAv2Enabled && !isDomesticSimplifiedChineseEnabled)) {\r\n return !isMSStoreAdsCampaign(currentCampaign);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n isNewShoppingWizard() {\r\n const { currentCampaign, permissions } = this.props;\r\n return getIsNewShoppingWizard({ currentCampaign, permissions });\r\n }\r\n\r\n isLinkedInCampaign() {\r\n const { currentCampaign, permissions } = this.props;\r\n const isLinkedInEnabled = permissions && permissions.dynamic && permissions.dynamic.LinkedInCampaigns;\r\n const isLinkedInCampaign = currentCampaign && currentCampaign.CampaignType === 'LinkedIn';\r\n return isLinkedInEnabled && isLinkedInCampaign;\r\n }\r\n\r\n isSearchRevamp() {\r\n const { currentCampaign, permissions } = this.props;\r\n const isSearchCampaignCreationEnabled = permissions && permissions.dynamic && permissions.dynamic.SearchCampaignCreationRevamp;\r\n const isSearchRevampPhase2Enabled = permissions && permissions.dynamic && permissions.dynamic.SearchRevampPhase2;\r\n const isSearchSearchCampaign = currentCampaign && isSearchCampaign(currentCampaign.CampaignType, currentCampaign.CampaignSubType);\r\n return isSearchCampaignCreationEnabled && isSearchRevampPhase2Enabled && isSearchSearchCampaign;\r\n }\r\n\r\n render() {\r\n this.p$legacyInit = initializeWithLegacyDependencies(this.props, getDeps);\r\n const { campaignId, adGroupId } = this.props.scope.values;\r\n const scope = getScope(campaignId, adGroupId);\r\n\r\n const { perfMarker, ccJsData, permissions } = this.props;\r\n perfMarker.willFetchFile();\r\n\r\n let LazyView = null;\r\n let pageContainerClassName = this.props.classes.pageContainer;\r\n let needsFooter = true;\r\n\r\n if (this.isHotelCampaign()) {\r\n switch (scope) {\r\n case TargetingScope.Campaign:\r\n LazyView = HotelCampaignSettings;\r\n break;\r\n case TargetingScope.AdGroup:\r\n LazyView = HotelAdGroupSettings;\r\n break;\r\n default:\r\n throw new Error('Unexpected targeting settings scope!');\r\n }\r\n } else if (this.isPerfMaxCampaign()) {\r\n setClarityTag({\r\n IsPmaxNorthStarSetting: permissions.dynamic.PmaxNorthStarSetting,\r\n });\r\n LazyView = permissions.dynamic.PmaxNorthStarSetting ? PerfMaxNorthStarSettingWizard : PerfMaxCampaignSettingsPage;\r\n pageContainerClassName = this.props.classes.pageContainerExpandingToParent;\r\n needsFooter = false;\r\n } else if (this.isXandrVideoCampaign()) {\r\n const isCTVAndDealToDisplayPlusEnabled = permissions.dynamic.CTVAndDealToDisplayPlus;\r\n if (isCTVAndDealToDisplayPlusEnabled && (this.isCTVCampaign() || this.isDealCampaign())) {\r\n switch (scope) {\r\n case TargetingScope.Campaign:\r\n LazyView = DisplayPlusEditCampaignWizard;\r\n break;\r\n case TargetingScope.AdGroup:\r\n LazyView = DisplayPlusEditAdGroupWizard;\r\n break;\r\n default:\r\n throw new Error('Unexpected targeting settings scope!');\r\n }\r\n } else {\r\n switch (scope) {\r\n case TargetingScope.Campaign:\r\n LazyView = XandrVideoCampaignSettingsPage;\r\n break;\r\n case TargetingScope.AdGroup:\r\n LazyView = XandrVideoAdGroupSettingsPage;\r\n break;\r\n default:\r\n throw new Error('Unexpected targeting settings scope!');\r\n }\r\n }\r\n pageContainerClassName = this.props.classes.pageContainerExpandingToParent;\r\n needsFooter = false;\r\n } else if (this.isDisplayPlusNativeAdsCampaign()) {\r\n setClarityTag({\r\n IsDisplayPlusAudienceNative: true,\r\n CampaignSubType: this.props.currentCampaign.CampaignSubType,\r\n });\r\n switch (scope) {\r\n case TargetingScope.Campaign:\r\n LazyView = DisplayPlusEditCampaignWizard;\r\n break;\r\n case TargetingScope.AdGroup:\r\n LazyView = DisplayPlusEditAdGroupWizard;\r\n break;\r\n default:\r\n throw new Error('Unexpected targeting settings scope!');\r\n }\r\n pageContainerClassName = this.props.classes.pageContainerExpandingToParent;\r\n needsFooter = false;\r\n } else if (this.isUnifiedAppAdsCampaign()) {\r\n LazyView = UnifiedAppEditCampaignSettingsWizard;\r\n pageContainerClassName = this.props.classes.pageContainerExpandingToParent;\r\n needsFooter = false;\r\n } else if (this.isAppAdsCampaign()) {\r\n LazyView = AppAdsCampaignEditPage;\r\n pageContainerClassName = this.props.classes.pageContainerExpandingToParent;\r\n needsFooter = false;\r\n } else if (this.isXandrDisplayAdsCampaign()) {\r\n switch (scope) {\r\n case TargetingScope.Campaign:\r\n LazyView = XandrDisplayAdsCampaignSettingsPage;\r\n break;\r\n case TargetingScope.AdGroup:\r\n LazyView = XandrDisplayAdsAdGroupSettingsPage;\r\n break;\r\n default:\r\n throw new Error('Unexpected targeting settings scope!');\r\n }\r\n pageContainerClassName = this.props.classes.pageContainerExpandingToParent;\r\n needsFooter = false;\r\n } else if (this.isSimplifiedSponsoredCampaign() && scope === TargetingScope.Campaign) {\r\n const cashbackSettings = result(this.props.currentCampaign, 'CampaignCashback');\r\n const isSPBCampaign = (cashbackSettings && cashbackSettings.IsPromotionsForBrands) === true;\r\n LazyView = props => ;\r\n } else if (this.isNewShoppingWizard()) {\r\n switch (scope) {\r\n case TargetingScope.Campaign:\r\n LazyView = props => ;\r\n break;\r\n case TargetingScope.AdGroup:\r\n LazyView = props => ;\r\n break;\r\n default:\r\n throw new Error('Unexpected targeting settings scope!');\r\n }\r\n pageContainerClassName = this.props.classes.pageContainerExpandingToParent;\r\n needsFooter = false;\r\n } else if (this.isLinkedInCampaign()) {\r\n switch (scope) {\r\n case TargetingScope.Campaign:\r\n LazyView = LinkedInCampaignSettingsWizard;\r\n break;\r\n case TargetingScope.AdGroup:\r\n LazyView = LinkedInAdGroupSettingsWizard;\r\n break;\r\n default:\r\n throw new Error('Unexpected targeting settings scope!');\r\n }\r\n } else if (this.isSearchRevamp()) {\r\n switch (scope) {\r\n case TargetingScope.Campaign:\r\n LazyView = SearchCampaignEditWizard;\r\n break;\r\n case TargetingScope.AdGroup:\r\n LazyView = SearchAdGroupEditWizard;\r\n break;\r\n default:\r\n throw new Error('Unexpected targeting settings scope!');\r\n }\r\n pageContainerClassName = this.props.classes.pageContainerExpandingToParent;\r\n needsFooter = false;\r\n } else {\r\n const view = this.p$legacyInit.then(({ deps }) => {\r\n const legacyView = new AllSettingsView({\r\n campaignId,\r\n adgroupId: adGroupId,\r\n scope,\r\n perfMarker,\r\n ccJsData,\r\n serverContext: this.props.serverContext,\r\n scopeServiceScope: this.props.scope,\r\n deps: {\r\n ...deps,\r\n router: getRouterDep(this.props.scope, this.props.siteMap),\r\n eventDelegator: new EventDelegator(),\r\n i18nNewDesign: this.props.i18n,\r\n },\r\n });\r\n\r\n this.backboneSettingsView = legacyView;\r\n\r\n const isAudienceAdGroupSettingsPage = deps.pageContext.CurrentCampaign.CampaignType === 8 &&\r\n deps.pageContext.CurrentAdGroup;\r\n const classes = isAudienceAdGroupSettingsPage ?\r\n [this.props.classes.settingsFormContainer, this.props.classes.audienceAdGroupPage] :\r\n [this.props.classes.settingsFormContainer];\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n });\r\n\r\n LazyView = lazyWrap(view);\r\n }\r\n return (\r\n \r\n
    \r\n \r\n {needsFooter && }\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\nUnStyledAllSettings.propTypes = {\r\n serverContext: PropTypes.shape({\r\n CurrentAccount: PropTypes.shape({}).isRequired,\r\n CurrentCustomer: PropTypes.shape({}).isRequired,\r\n }),\r\n scope: PropTypes.shape({\r\n values: {\r\n adGroupId: PropTypes.number,\r\n campaignId: PropTypes.number,\r\n },\r\n }).isRequired,\r\n siteMap: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n permissions: PropTypes.shape({\r\n IsSPAv2Enabled: PropTypes.bool,\r\n IsDomesticSimplifiedChineseEnabled: PropTypes.bool,\r\n dynamic: PropTypes.shape({\r\n HotelCampaign: PropTypes.bool,\r\n PerformanceMaxCampaigns: PropTypes.bool,\r\n XandrVideoCampaigns: PropTypes.bool,\r\n XandrDisplayAdsCampaigns: PropTypes.bool,\r\n AppAdsCampaignPhaseOne: PropTypes.bool,\r\n PAAIMConsolidation: PropTypes.bool,\r\n DisplayPlusEdit: PropTypes.bool,\r\n LinkedInCampaign: PropTypes.bool,\r\n CTVAndDealToDisplayPlus: PropTypes.bool,\r\n UnifiedAppAds: PropTypes.bool,\r\n }),\r\n }),\r\n classes: PropTypes.shape({\r\n pageContainer: PropTypes.string.isRequired,\r\n settingsFormContainer: PropTypes.string.isRequired,\r\n audienceAdGroupPage: PropTypes.string.isRequired,\r\n pageContainerExpandingToParent: PropTypes.string.isRequired,\r\n }).isRequired,\r\n currentCampaign: PropTypes.shape({\r\n CampaignType: PropTypes.string,\r\n CampaignSubType: PropTypes.number,\r\n BiddingScheme: PropTypes.shape({\r\n Type: PropTypes.string,\r\n }),\r\n IsDealCampaign: PropTypes.bool,\r\n }),\r\n currentAdGroup: PropTypes.shape({}),\r\n preferenceService: PropTypes.shape({}).isRequired,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n ccJsData: PropTypes.shape({}).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n};\r\n\r\nUnStyledAllSettings.defaultProps = {\r\n serverContext: {},\r\n permissions: {},\r\n currentCampaign: null,\r\n currentAdGroup: null,\r\n};\r\nconst SettingsWithPropFilter = withCcJsData(withPropFilter(UnStyledAllSettings, propFilter));\r\n\r\nexport const StyledAllSettingsView = withDefaultStyles(\r\n withSiteMap(withCurrentExpandedScope(SettingsWithPropFilter)),\r\n getSettingsPageStyles\r\n);\r\n\r\n","import { CampaignSubTypeMapping } from '@bingads-webui-campaign-react/constants';\r\n\r\n/**\r\n * if current campaign is smart shopping campaign and user is in ad group level\r\n * there should be no ad group settings page\r\n * however the scope service seems not do the redirect automatically so we have to do it manually\r\n * @param {Scope} scope scope\r\n * @param {Campaign} currentCampaign currentCampaign\r\n * @param {AdGroup} currentAdGroup currentAdGroup\r\n * @param {string} adsPageRoutePath the path of ads page\r\n * @returns {void}\r\n */\r\nexport function redirectToAdsPageIfCurrentCampaignIsSSCAndUserIsInAdGroupLevel(scope, currentCampaign, currentAdGroup, adsPageRoutePath) {\r\n const isSmartShoppingCampaign = currentCampaign != null &&\r\n currentCampaign.CampaignSubType === CampaignSubTypeMapping.ShoppingSmartAds;\r\n\r\n if (isSmartShoppingCampaign && currentAdGroup != null) {\r\n const { location, history } = scope;\r\n const { search } = location;\r\n history.replace({\r\n pathname: adsPageRoutePath,\r\n search,\r\n });\r\n }\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport hoistNonReactStatics from 'hoist-non-react-statics';\r\nimport { getDisplayName } from '@bingads-webui-react/hoc-utils';\r\n\r\nexport const withPropFilter = (WrappedComponent, propFilter) => {\r\n const Wrapper = (props) => {\r\n const filteredProps = propFilter(props);\r\n\r\n return ;\r\n };\r\n\r\n Wrapper.displayName = `withPropFilter(\r\n ${getDisplayName(WrappedComponent)}\r\n )`;\r\n\r\n hoistNonReactStatics(Wrapper, WrappedComponent);\r\n\r\n Wrapper.propTypes = {\r\n props: PropTypes.shape({}),\r\n };\r\n\r\n Wrapper.defaultProps = {\r\n props: PropTypes.undefined,\r\n };\r\n\r\n return Wrapper;\r\n};\r\n","export const getPageContainerStyles = () => ({\r\n pageContainer: {\r\n display: 'flex',\r\n flex: '1 1 1px',\r\n flexDirection: 'column',\r\n overflow: 'auto',\r\n },\r\n\r\n // Use this pageContainer style for settings pages\r\n // which need to inherit parent's height, instead of making\r\n // the parent expand vertically, beyond the available heigh\r\n // in the viewport, to accomodate the page's contents.\r\n pageContainerExpandingToParent: {\r\n display: 'flex',\r\n flex: '1 1 1px',\r\n flexDirection: 'column',\r\n overflowY: 'hidden',\r\n },\r\n});\r\n","import _ from 'underscore';\r\nimport { draftAlertStyles } from '@bingads-webui-campaign-react/gmc-to-mmc-mapping-grid-shared';\r\n\r\nexport const getOverrideStyles = () => ({\r\n '.adgroup-settings-container .bid-section': {\r\n marginTop: '-45px',\r\n paddingBottom: '15px',\r\n },\r\n '.adgroup-settings-container .advanced-settings-section': {\r\n marginTop: '42px',\r\n },\r\n '.adgroup-settings-container .audience-advanced-target-settings': {\r\n paddingTop: 0,\r\n },\r\n\r\n h1: {\r\n margin: '0 0 0 32px',\r\n fontSize: 20,\r\n color: '#323130',\r\n },\r\n\r\n '.radio.filteredProducts .helpbutton': {\r\n marginLeft: 5,\r\n },\r\n\r\n hr: {\r\n marginBottom: 1,\r\n },\r\n\r\n '#siteExclusionSettings .col-sm-3,#ipExclusionSettings .col-sm-3': {\r\n width: '100%',\r\n },\r\n\r\n '.audience-adgroup-settings-wizard-container .action-buttons-container.row': {\r\n height: 32,\r\n float: 'left',\r\n clear: 'both',\r\n marginBottom: 32,\r\n },\r\n\r\n h3: {\r\n borderTop: '1px solid #605E5C',\r\n fontFamily: 'Segoe UI',\r\n fontSize: '18px',\r\n lineHeight: '24px',\r\n marginBottom: '21px',\r\n paddingTop: '5px',\r\n },\r\n\r\n '.url-options > div > .form-group': {\r\n marginLeft: 0,\r\n },\r\n\r\n '.custom-param__close-button': {\r\n marginLeft: '5px',\r\n },\r\n\r\n '.audience-adgroup-targets-container': {\r\n paddingLeft: 0,\r\n },\r\n\r\n 'span.level-toggle': {\r\n float: 'left',\r\n marginRight: '10px',\r\n },\r\n 'span.bold': {\r\n fontWeight: 1000,\r\n },\r\n '.alert-budget-button': {\r\n marginLeft: '10px',\r\n paddingTop: '5px',\r\n '& button': {\r\n color: 'black',\r\n fontSize: '13px',\r\n fontWeight: 500,\r\n borderColor: '#edebe9',\r\n },\r\n },\r\n\r\n // DSA campaign Targeting source Page feeds search box\r\n '.pagefeed-selector-container .dlb-filter-alignPlaceholder': {\r\n paddingRight: 0,\r\n },\r\n\r\n 'a.helpbutton': {\r\n fontWeight: 'normal',\r\n marginRight: '5px',\r\n },\r\n '.location-bid-grid-message': {\r\n marginRight: '7px',\r\n },\r\n '.setting-container .btn-save': {\r\n marginRight: '8.3px',\r\n },\r\n '.alert.alert-info.form-group.page-alert': {\r\n paddingBottom: '13px',\r\n width: '100%',\r\n marginBottom: '10px',\r\n },\r\n '.btn-primary': {\r\n marginRight: '10px',\r\n },\r\n '.displayNone': {\r\n display: 'none',\r\n },\r\n '.advanced-settings-section': {\r\n marginTop: '20px',\r\n\r\n '& .advanced-scheduling-grid .ad-scheduling-panel table': {\r\n '& tr:nth-child(3)': {\r\n '& .radio-inline:nth-child(2), .radio-inline:nth-child(3)': {\r\n left: 0,\r\n },\r\n },\r\n },\r\n },\r\n\r\n '.settings-view .campaign-settings__container .form-group:last-child .col-sm-2': {\r\n display: 'block',\r\n },\r\n '.settings-view .adgroup-settings .form-group:last-child .col-sm-2': {\r\n display: 'block',\r\n },\r\n\r\n 'span.is-error': {\r\n color: 'red',\r\n },\r\n\r\n // Fix overlap of site exclusion setting and label after it\r\n '#siteExclusionSettings .col-sm-5': {\r\n width: 'auto',\r\n },\r\n '.all-settings-view hr': {\r\n visibility: 'hidden',\r\n marginTop: '1px',\r\n },\r\n\r\n '.toggle-campaign-settings-switch': {\r\n display: 'inline-block',\r\n float: 'left',\r\n marginRight: '10px',\r\n },\r\n '.update-container .advanced-settings-section': {\r\n marginTop: '34px',\r\n },\r\n // Fix Campaign Budget \"USD | per day\" misaligned\r\n '.container-budget > .row:first-child > .form-control-static': {\r\n paddingTop: '2px',\r\n },\r\n '.audience-target-settings-container .bid-adjustment-grids-container table tbody tr td': {\r\n '& select.form-control,input.form-control': {\r\n display: 'inline-block',\r\n },\r\n },\r\n\r\n '.campaign-settings__container .budget .container-budget .input-group .budget-amount': {\r\n width: '150px',\r\n },\r\n\r\n '.default-bid-container': {\r\n '& input.Amount-value': {\r\n width: '150px',\r\n },\r\n '& span.input-group-addon': {\r\n float: 'left',\r\n },\r\n },\r\n\r\n 'input.searchbid.form-control': {\r\n width: '150px',\r\n },\r\n\r\n '.bidWarning': {\r\n marginTop: 6,\r\n },\r\n\r\n '.glyphicon-pencil': {\r\n marginRight: '5px',\r\n },\r\n\r\n '.form-horizontal .form-group': {\r\n marginRight: 0,\r\n },\r\n\r\n '.target-or-bid-selector-content label.radio-inline div': {\r\n display: 'inline-block',\r\n },\r\n\r\n '#TrackingTemplateErrors': {\r\n color: '#A80000',\r\n },\r\n\r\n // In campaign location targeting, the margin is broken\r\n '.btn-primary.location-target-done': {\r\n marginLeft: 15,\r\n },\r\n\r\n 'input.form-control[disabled]': {\r\n color: '#a19f9d',\r\n cursor: 'default',\r\n background: '#F3F2F1',\r\n },\r\n\r\n // Fix website exclusions style\r\n '#siteExclusionSettings .row .pull-right': {\r\n float: 'none!important',\r\n },\r\n\r\n '.draft-store-alert-container .draft-store-alert': _.extend(\r\n draftAlertStyles({ iconFontFamily: {}, palette: {} }),\r\n {\r\n // Intentionally overriding the width to match the styling of other alerts on this page\r\n maxWidth: '1070px',\r\n marginTop: '35px',\r\n marginLeft: '15px',\r\n }\r\n ),\r\n});\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getScope, TargetingScope } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { getPageContainerStyles } from './styles/page-container';\r\nimport { SettingsSummaryView } from './settings-summary-view';\r\nimport { StyledAllSettingsView } from './all-settings-view';\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nclass AllSettings extends React.Component {\r\n render() {\r\n const { campaignId, adGroupId } = this.props.scope.values;\r\n const scope = getScope(campaignId, adGroupId);\r\n const settingsPageContainerClass = scope === TargetingScope.Account ?\r\n this.props.classes.pageContainer :\r\n this.props.classes.pageContainerExpandingToParent;\r\n return (\r\n
    \r\n {scope === TargetingScope.Account ?\r\n :\r\n \r\n }\r\n
    \r\n );\r\n }\r\n}\r\n\r\nAllSettings.propTypes = {\r\n serverContext: PropTypes.shape({\r\n CurrentAccount: PropTypes.shape({}).isRequired,\r\n CurrentCustomer: PropTypes.shape({}).isRequired,\r\n }),\r\n scope: PropTypes.shape({\r\n values: {\r\n adGroupId: PropTypes.number,\r\n campaignId: PropTypes.number,\r\n },\r\n }).isRequired,\r\n siteMap: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n permissions: PropTypes.shape({\r\n }),\r\n classes: PropTypes.shape({\r\n pageContainer: PropTypes.string.isRequired,\r\n pageContainerExpandingToParent: PropTypes.string.isRequired,\r\n }).isRequired,\r\n currentCampaign: PropTypes.shape({}),\r\n currentAdGroup: PropTypes.shape({}),\r\n preferenceService: PropTypes.shape({}).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n};\r\n\r\nAllSettings.defaultProps = {\r\n serverContext: {},\r\n permissions: {},\r\n currentCampaign: null,\r\n currentAdGroup: null,\r\n};\r\n\r\nexport const StyledSettings =\r\n withI18nConsumer(withDefaultStyles(AllSettings, () => getPageContainerStyles()));\r\n","export function navigateToTargetLevel(level, scope, urls, shouldReplace = false) {\r\n if (shouldReplace) {\r\n scope.history.replace({\r\n pathname: urls[level],\r\n search: scope.stringify(),\r\n });\r\n return;\r\n }\r\n scope.save(urls[level]);\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { compose } from 'underscore';\r\nimport { getFilteredCampaignTypeFromRawFilter, getLevelItems, SelectorLevels, CampaignType } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { WaterfallFilterType } from '@bingads-webui-campaign/filter-storage';\r\nimport { getLevel, setLevel, TargetingLevel } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport { withCurrentExpandedScope } from '@bingads-webui-campaign-react/use-current-scope-entity';\r\nimport { isXandrServing } from '@bingads-webui-campaign-react/constants';\r\nimport { navigateToTargetLevel } from './utils';\r\n\r\nconst withCheckCampaign = (LevelSelectorWrapper) => {\r\n class CheckCampaignWrapper extends React.PureComponent {\r\n static propTypes = {\r\n scope: PropTypes.shape({\r\n values: {\r\n adGroupId: PropTypes.number,\r\n campaignId: PropTypes.number,\r\n },\r\n }),\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n urls: PropTypes.arrayOf(PropTypes.string).isRequired,\r\n currentCampaign: PropTypes.shape({}).isRequired,\r\n };\r\n\r\n static defaultProps = {\r\n scope: {},\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n const {\r\n i18n,\r\n } = props;\r\n this.levelItems = getLevelItems({ i18n });\r\n this.checkCampaign();\r\n }\r\n\r\n componentDidUpdate(prevProp) {\r\n if ((prevProp.currentCampaign !== this.props.currentCampaign) ||\r\n getFilteredCampaignTypeFromRawFilter(prevProp[WaterfallFilterType.CampaignType]) !==\r\n getFilteredCampaignTypeFromRawFilter(this.props[WaterfallFilterType.CampaignType])) {\r\n this.checkCampaign();\r\n this.forceUpdate();\r\n }\r\n }\r\n\r\n isSmartShoppingCampaign() {\r\n const { currentCampaign } = this.props;\r\n return currentCampaign && currentCampaign.CampaignSubType === 'ShoppingSmartAds';\r\n }\r\n\r\n isHotelCampaign() {\r\n const { currentCampaign } = this.props;\r\n return currentCampaign && currentCampaign.CampaignType === 'Hotel';\r\n }\r\n\r\n isHotelCampaignType() {\r\n const selectedCampaignType = getFilteredCampaignTypeFromRawFilter(this.props[WaterfallFilterType.CampaignType]);\r\n return selectedCampaignType === CampaignType.Hotel;\r\n }\r\n\r\n isPmaxCampaign() {\r\n const { currentCampaign } = this.props;\r\n return currentCampaign && currentCampaign.CampaignType === 'PerformanceMax';\r\n }\r\n\r\n isPmaxCampaignType() {\r\n const selectedCampaignType = getFilteredCampaignTypeFromRawFilter(this.props[WaterfallFilterType.CampaignType]);\r\n return selectedCampaignType === CampaignType.PerformanceMax;\r\n }\r\n\r\n isAppCampaign() {\r\n const { currentCampaign } = this.props;\r\n return currentCampaign && currentCampaign.CampaignType === 'App';\r\n }\r\n\r\n isAppCampaignType() {\r\n const selectedCampaignType = getFilteredCampaignTypeFromRawFilter(this.props[WaterfallFilterType.CampaignType]);\r\n return selectedCampaignType === CampaignType.App;\r\n }\r\n\r\n isXandrCampaign() {\r\n const { currentCampaign } = this.props;\r\n return currentCampaign && isXandrServing(currentCampaign.CampaignSubType, currentCampaign.CampaignSettings);\r\n }\r\n\r\n isLocation() {\r\n const {\r\n urls,\r\n } = this.props;\r\n return urls && urls.length && (urls[0].includes('/locations/'));\r\n }\r\n\r\n isExcludedLocation() {\r\n const {\r\n urls,\r\n } = this.props;\r\n return urls && urls.length && (urls[0].includes('/excluded/'));\r\n }\r\n\r\n isAdSchedule() {\r\n const {\r\n urls,\r\n } = this.props;\r\n return urls && urls.length && urls[0].includes('/adschedule/');\r\n }\r\n\r\n isDevices() {\r\n const {\r\n urls,\r\n } = this.props;\r\n return urls && urls.length && urls[0].includes('/devices');\r\n }\r\n\r\n forceToCampaign() {\r\n const {\r\n scope,\r\n urls,\r\n } = this.props;\r\n const selectedLevel = getLevel(scope.values.adGroupId, true);\r\n if (selectedLevel !== TargetingLevel.Campaign) {\r\n setLevel(TargetingLevel.Campaign, true);\r\n navigateToTargetLevel(TargetingLevel.Campaign, scope, urls);\r\n }\r\n this.levelItems = this.levelItems.filter(item => item.value === SelectorLevels.Campaign);\r\n }\r\n\r\n forceToAdGroup() {\r\n const {\r\n scope,\r\n urls,\r\n } = this.props;\r\n const selectedLevel = getLevel(scope.values.adGroupId, true);\r\n if (selectedLevel !== TargetingLevel.AdGroup) {\r\n setLevel(TargetingLevel.AdGroup, true);\r\n navigateToTargetLevel(TargetingLevel.AdGroup, scope, urls);\r\n }\r\n this.levelItems = this.levelItems.filter(item => item.value === SelectorLevels.AdGroup);\r\n }\r\n\r\n isOnlyCampaignLevelSupported() {\r\n const isSmartShoppingCampaign = this.isSmartShoppingCampaign();\r\n const isHotelCampaign = this.isHotelCampaign();\r\n const isAssetGroupBasedCampaign = this.isPmaxCampaign() || this.isAppCampaign();\r\n const isAssetGroupBasedCampaignType = this.isPmaxCampaignType() || this.isAppCampaignType();\r\n if (isSmartShoppingCampaign) {\r\n return true;\r\n } else if (isHotelCampaign && (this.isAdSchedule() || this.isLocation() || this.isExcludedLocation())) {\r\n return true;\r\n } else if (this.isHotelCampaignType() && (this.isAdSchedule() || this.isLocation() || this.isExcludedLocation())) {\r\n return true;\r\n } else if (isAssetGroupBasedCampaign && (this.isAdSchedule() || this.isLocation() || this.isExcludedLocation() || this.isDevices())) {\r\n return true;\r\n } else if (isAssetGroupBasedCampaignType && (this.isAdSchedule() || this.isLocation() || this.isExcludedLocation() || this.isDevices())) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n isOnlyAdGroupLevelSupported() {\r\n if (this.isXandrCampaign()) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n checkCampaign() {\r\n const {\r\n i18n,\r\n } = this.props;\r\n if (this.isOnlyCampaignLevelSupported()) {\r\n this.forceToCampaign();\r\n } else if (this.isOnlyAdGroupLevelSupported()) {\r\n this.forceToAdGroup();\r\n } else {\r\n this.levelItems = getLevelItems({ i18n });\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n }\r\n return CheckCampaignWrapper;\r\n};\r\n\r\nexport const withCheckCampaignWithScope = compose(withCurrentExpandedScope, withCheckCampaign);\r\n","import React, { Fragment } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { ScopeSelector } from '@bingads-webui-react/scope-selector';\r\nimport { getLevel, setLevel, TargetingLevel } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport { getLevelItems, SelectorLevels } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { withCheckCampaignWithScope } from './check-campaign-wrapper';\r\n\r\nimport { navigateToTargetLevel } from './utils';\r\n\r\nclass LevelSelectorWrapper extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n switchLevel: false,\r\n };\r\n }\r\n\r\n componentDidUpdate() {\r\n if (this.state.switchLevel) {\r\n // eslint-disable-next-line react/no-did-update-set-state\r\n this.setState({\r\n switchLevel: false,\r\n });\r\n }\r\n }\r\n\r\n OnLevelChange({ index }) {\r\n const {\r\n scope,\r\n urls,\r\n levelItems,\r\n } = this.props;\r\n const selectedItem = levelItems[index];\r\n\r\n let level = TargetingLevel.Campaign;\r\n if (selectedItem.value === SelectorLevels.Campaign) {\r\n level = TargetingLevel.Campaign;\r\n } else if (selectedItem.value === SelectorLevels.AdGroup) {\r\n level = TargetingLevel.AdGroup;\r\n }\r\n\r\n setLevel(level, true);\r\n this.setState({ switchLevel: true });\r\n navigateToTargetLevel(level, scope, urls);\r\n }\r\n\r\n render() {\r\n const {\r\n scope,\r\n component,\r\n levelItems,\r\n } = this.props;\r\n\r\n const selectedLevel = getLevel(scope.values.adGroupId, true);\r\n\r\n const levelIndex = levelItems.findIndex(item =>\r\n (selectedLevel === TargetingLevel.AdGroup && item.value === SelectorLevels.AdGroup) ||\r\n (selectedLevel === TargetingLevel.Campaign && item.value === SelectorLevels.Campaign));\r\n\r\n const levelSelector = scope.values.adGroupId > 0 ?\r\n null :\r\n (\r\n this.OnLevelChange({ index }),\r\n levelItems,\r\n }}\r\n />\r\n );\r\n const Component = component;\r\n return (\r\n \r\n {levelSelector}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nLevelSelectorWrapper.propTypes = {\r\n scope: PropTypes.shape({\r\n values: {\r\n adGroupId: PropTypes.number,\r\n campaignId: PropTypes.number,\r\n },\r\n }),\r\n component: PropTypes.elementType.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n urls: PropTypes.arrayOf(PropTypes.string).isRequired,\r\n currentCampaign: PropTypes.shape({}).isRequired,\r\n checkCampaign: PropTypes.bool,\r\n levelItems: PropTypes.arrayOf(PropTypes.shape({\r\n name: PropTypes.string,\r\n value: PropTypes.number,\r\n })),\r\n};\r\n\r\nLevelSelectorWrapper.defaultProps = {\r\n scope: {},\r\n checkCampaign: false,\r\n levelItems: [],\r\n};\r\n\r\nexport const DefaultLevelSelectorWrapper = (props) => {\r\n const {\r\n i18n,\r\n } = props;\r\n\r\n const levelItems = getLevelItems({ i18n });\r\n return ();\r\n};\r\n\r\nDefaultLevelSelectorWrapper.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n};\r\n\r\nexport const LevelSelectorWrapperWithCheckCampaign = withCheckCampaignWithScope(LevelSelectorWrapper);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Route, Switch } from '@bingads-webui-campaign-react/router';\r\nimport { getLevel, setLevel, TargetingLevel } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { navigateToTargetLevel } from './utils';\r\n\r\nexport const ShellCtor = (urls, levelSelector) => class Shell extends React.PureComponent {\r\n static propTypes = {\r\n scope: PropTypes.shape({\r\n values: {\r\n adGroupId: PropTypes.number,\r\n campaignId: PropTypes.number,\r\n },\r\n }),\r\n component: PropTypes.elementType.isRequired,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n }\r\n\r\n static defaultProps = {\r\n scope: {},\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {\r\n const {\r\n scope,\r\n } = this.props;\r\n const level = getLevel(scope.values.adGroupId, true);\r\n navigateToTargetLevel(level, scope, urls, true);\r\n }}\r\n />\r\n {\r\n const {\r\n scope,\r\n component,\r\n } = this.props;\r\n if (scope.values.adGroupId > 0) {\r\n // go to an ad group at campaign level\r\n setLevel(TargetingLevel.AdGroup, true);\r\n navigateToTargetLevel(TargetingLevel.AdGroup, scope, urls);\r\n return;\r\n }\r\n const LevelSelector = levelSelector;\r\n setLevel(TargetingLevel.Campaign, true);\r\n // eslint-disable-next-line consistent-return\r\n return (\r\n \r\n );\r\n }}\r\n />\r\n {\r\n const {\r\n component,\r\n } = this.props;\r\n const LevelSelector = levelSelector;\r\n setLevel(TargetingLevel.AdGroup, true);\r\n // eslint-disable-next-line consistent-return\r\n return (\r\n \r\n );\r\n }}\r\n />\r\n \r\n );\r\n }\r\n};\r\n","import {\r\n mergeStyles,\r\n uiblockerStyle,\r\n getColumnSolidBorderStyle,\r\n messageBarStyle,\r\n advancedSettingsSectionStyle,\r\n tableStyle,\r\n targetLocationRecommendationStyle,\r\n toggleButtonStyle,\r\n statusStyle,\r\n entitySelectorStyle,\r\n InlineEditorStyle,\r\n paginationStyle,\r\n} from '@bingads-webui-campaign-react/common-styles';\r\nimport { pagePaddingStyle } from '@bingads-webui-campaign-react/page-padding-style';\r\nimport { inlineChartContainerStyle } from '@bingads-webui-campaign-react/inline-chart-style';\r\nimport { cashbackPercentGridCommonStyle } from '@bingads-webui-campaign/personalized-offer-columns';\r\n\r\nfunction globalAdapter(theme, ...styles) {\r\n return {\r\n div: {\r\n ...mergeStyles(theme, ...styles),\r\n },\r\n };\r\n}\r\n\r\n// For circular dependency, we cannot import creationCommonStyle directly\r\n// Use IoC, to inject the creationCommonStyle\r\n// TODO: The level of common-settings-page-style.js is not the same as the others in the common-styles\r\nexport const getCommonSettingsPageStyles = (formEditorStyles, ...moreStyles) => (_, theme) => {\r\n const { palette } = theme;\r\n return {\r\n inlineChartContainer: inlineChartContainerStyle(palette),\r\n topGridPanelCustomStyles: {\r\n '@global': {\r\n ...mergeStyles(\r\n { theme },\r\n {\r\n '.settings-top-grid-panel-container': {\r\n '@global': {\r\n ...mergeStyles(\r\n { theme },\r\n formEditorStyles(theme),\r\n {\r\n div: { // this div is to add the priority for this override styles\r\n '& .alert': {\r\n // override the behavior\r\n display: 'block',\r\n padding: '8px 32px 20px 8px',\r\n },\r\n '& .ima-reach-alert': {\r\n padding: '8px 32px 8px 8px !important',\r\n },\r\n '& .alert.alert-recommendation': {\r\n background: '#EFF6FC',\r\n border: '1px solid #0078D4 !important',\r\n padding: '10px 32px 10px 8px !important',\r\n lineHeight: '16px !important',\r\n fontWeight: 600,\r\n '& .alert-info-inline': {\r\n marginLeft: '12px',\r\n },\r\n '& .recommendation-light-bulb': {\r\n color: '#0078D4',\r\n overflow: 'visible',\r\n background: '#EFF6FC',\r\n marginRight: '2px',\r\n paddingRight: '0px !important',\r\n '&:before': {\r\n content: \"'\\\\EA80'\",\r\n lineHeight: '22px',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n fontSize: '16px',\r\n },\r\n },\r\n },\r\n '& .alert-image': {\r\n float: 'left',\r\n },\r\n '& .alert-info-inline': {\r\n marginLeft: '24px',\r\n },\r\n '& .HelpTopic': {\r\n marginLeft: '4px',\r\n },\r\n '& .toggle-campaign-settings-switch': {\r\n paddingRight: '8px !important',\r\n marginTop: 3,\r\n display: 'inline-block',\r\n float: 'left',\r\n },\r\n '& .col-sm-10, .col-sm-2, .col-sm-4': {\r\n paddingLeft: '0',\r\n },\r\n '& .control-label': {\r\n marginTop: '0px',\r\n },\r\n '& .ba-campaign-selector, .ba-campaign-adgroup-selector, .col-sm-10 .control-label': {\r\n marginTop: '8px !important',\r\n marginBottom: '8px !important',\r\n },\r\n '& .alert.alert-info.form-group': {\r\n marginBottom: '33px',\r\n },\r\n '& table': {\r\n marginTop: '8px',\r\n },\r\n '& p': {\r\n display: 'flex',\r\n },\r\n '& .form-group[data-property=\"BidMultiplier\"]': {\r\n padding: '8px 0px',\r\n },\r\n // campaign selector style is influenced by .settings-top-grid-panel-container ol\r\n // only campaign selector is influenced as it use ul element for dropdown menu\r\n '& .ba-campaign-selector .dropdown-menu': {\r\n paddingLeft: '8px !important',\r\n },\r\n },\r\n }\r\n ),\r\n },\r\n },\r\n },\r\n messageBarStyle,\r\n {\r\n '.settings-top-grid-panel-container': {\r\n borderTop: 'unset !important',\r\n '& .radio-with-icon': {\r\n paddingTop: '12px',\r\n paddingBottom: '5px',\r\n '& label, .helpbutton': {\r\n display: 'inline',\r\n },\r\n },\r\n },\r\n },\r\n ...moreStyles // by pass the styles to the mergeStyles function\r\n ),\r\n },\r\n ...mergeStyles(\r\n { theme },\r\n tableStyle,\r\n advancedSettingsSectionStyle,\r\n toggleButtonStyle,\r\n paginationStyle\r\n ),\r\n },\r\n '@global': {\r\n '.smart-shopping-campaign-settings-grid #bulk-edit-bid-multiplier[disabled]': {\r\n display: 'none',\r\n },\r\n '.locations-table, .ad-schedule-table, .devices-table': {\r\n '& .bingadsgrid': {\r\n ...getColumnSolidBorderStyle(1, 2),\r\n },\r\n },\r\n '.excluded-locations-view': {\r\n ...getColumnSolidBorderStyle(1, 2),\r\n },\r\n '.devices-page': {\r\n '& .bid-adjustment-disclaimer': {\r\n marginTop: '12px',\r\n },\r\n },\r\n ...cashbackPercentGridCommonStyle({ palette }),\r\n // FIXME: since now paginationStyle, statusStyle and entitySelectorStyle are not global, we need\r\n // this work around to make jss happy.\r\n ...globalAdapter(\r\n { theme },\r\n statusStyle,\r\n entitySelectorStyle\r\n ),\r\n ...pagePaddingStyle(),\r\n ...targetLocationRecommendationStyle(theme),\r\n ...uiblockerStyle({ palette }),\r\n ...InlineEditorStyle(),\r\n },\r\n };\r\n};\r\n\r\n","import _ from 'underscore';\r\nimport React, { createContext, useCallback, useMemo, useRef, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport const SidePanelContext = createContext({\r\n containerId: null,\r\n onPanelOpenStateChange: _.noop,\r\n setPanelContainerInfo: _.noop,\r\n});\r\n\r\nexport const SidePanelContextProvider = ({ children }) => {\r\n const { current: statics } = useRef({\r\n openedPanels: {},\r\n hasOpenPanel: false,\r\n showPanelContainer: _.noop,\r\n });\r\n const [containerId, setContainerId] = useState(null);\r\n\r\n const onPanelOpenStateChange = useCallback((panelId, isOpen) => {\r\n let hasOpenPanel = true;\r\n if (isOpen) {\r\n statics.openedPanels[panelId] = true;\r\n } else {\r\n delete statics.openedPanels[panelId];\r\n hasOpenPanel = !_.isEmpty(statics.openedPanels);\r\n }\r\n\r\n if (hasOpenPanel !== statics.hasOpenPanel) {\r\n statics.hasOpenPanel = hasOpenPanel;\r\n statics.showPanelContainer(hasOpenPanel);\r\n }\r\n }, [statics]);\r\n\r\n const setPanelContainerInfo = useCallback(({ id, showPanelContainer }) => {\r\n statics.showPanelContainer = showPanelContainer || _.noop;\r\n setContainerId(id);\r\n }, [statics]);\r\n\r\n const value = useMemo(() => ({\r\n containerId,\r\n onPanelOpenStateChange,\r\n setPanelContainerInfo,\r\n }), [\r\n containerId,\r\n onPanelOpenStateChange,\r\n setPanelContainerInfo,\r\n ]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nSidePanelContextProvider.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n};\r\n","import _ from 'underscore';\r\nimport React, { useContext, useEffect, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Panel } from '@fluentui/react';\r\n\r\nimport { SidePanelContext } from './side-panel-context';\r\n\r\nexport function SidePanel(props) {\r\n const { containerId, onPanelOpenStateChange } = useContext(SidePanelContext);\r\n\r\n const newProps = {\r\n onOuterClick: _.noop,\r\n ...props,\r\n layerProps: {\r\n ...props.layerProps,\r\n hostId: containerId,\r\n },\r\n };\r\n\r\n const panelId = useMemo(() => _.uniqueId('side-panel-'), []);\r\n const { isOpen } = props;\r\n\r\n useEffect(() => {\r\n onPanelOpenStateChange(panelId, isOpen);\r\n\r\n return () => onPanelOpenStateChange(panelId, false);\r\n }, [isOpen, onPanelOpenStateChange, panelId]);\r\n\r\n return ();\r\n}\r\n\r\nSidePanel.propTypes = {\r\n isOpen: PropTypes.bool.isRequired,\r\n layerProps: PropTypes.shape({}),\r\n};\r\n\r\nSidePanel.defaultProps = {\r\n layerProps: null,\r\n};\r\n","import _ from 'underscore';\r\nimport React, { useContext, useEffect, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { SidePanelContext } from './side-panel-context';\r\n\r\nexport const SidePanelContainer = (props) => {\r\n const { setPanelContainerInfo } = useContext(SidePanelContext);\r\n\r\n const {\r\n showPanelContainer,\r\n id: idInProps,\r\n ...divProps\r\n } = props;\r\n\r\n const id = useMemo(() => idInProps || _.uniqueId('side-panel-container-'), [idInProps]);\r\n\r\n useEffect(() => {\r\n setPanelContainerInfo({ id, showPanelContainer });\r\n\r\n return () => setPanelContainerInfo({});\r\n }, [showPanelContainer, setPanelContainerInfo, id]);\r\n\r\n return (\r\n
    \r\n );\r\n};\r\n\r\nSidePanelContainer.propTypes = {\r\n showPanelContainer: PropTypes.func,\r\n id: PropTypes.string,\r\n};\r\n\r\nSidePanelContainer.defaultProps = {\r\n showPanelContainer: _.noop,\r\n id: null,\r\n};\r\n","import _ from 'underscore';\r\n\r\nexport const getDefaultSubAccount = i18n => ({\r\n key: 'selectAllSubAccount',\r\n name: i18n.getString('HotelCenter_Subheader_All_SubAccount_Label'),\r\n});\r\n\r\nexport const getModelItem = item => ({\r\n Id: item.key,\r\n Name: item.name,\r\n});\r\n\r\nexport const getSelectionItem = item => ({\r\n key: item.Id,\r\n name: item.Name,\r\n});\r\n\r\nexport const getChildUngroupId = (hotelGroups, subAccountId) => {\r\n const ungroup = _.find(\r\n hotelGroups,\r\n item => item.SubAccountId === subAccountId && item.Name === 'Ungrouped'\r\n );\r\n return ungroup ? ungroup.Id : '';\r\n};\r\n\r\nexport const getFirstChildGroup = (hotelGroups, subAccountId) => (\r\n _.find(hotelGroups, item => item.SubAccountId === subAccountId)\r\n);\r\n\r\nexport const getHotelGroupById = (hotelGroups, hotelGroupId) => (\r\n _.find(hotelGroups, item => item.Id === hotelGroupId)\r\n);\r\n\r\nexport const getSubAccountById = (hotelGroups, subAccountId) => {\r\n const group = _.find(hotelGroups, item => item.SubAccountId === subAccountId);\r\n return group ? {\r\n key: group.SubAccountId,\r\n name: group.SubAccountName,\r\n } : undefined;\r\n};\r\n\r\nexport const getAllChildrenGroupsId = (hotelGroups, subAccountId) => (\r\n _.chain(hotelGroups)\r\n .filter(item => item.SubAccountId === subAccountId)\r\n .pluck('Id')\r\n .value()\r\n);\r\n\r\nexport const buildHotelGroupLinks = (hotelGroups, onSubAccountClick, onHotelGroupClick, i18n) => (\r\n _.reduce(hotelGroups, (memo, hotelGroup) => {\r\n const subAccount = _.find(memo, item => item.key === hotelGroup.SubAccountId);\r\n const itemName = i18n.getString('HotelCenter_Assignment_GroupList_Item_Format', {\r\n groupName: hotelGroup.Name,\r\n associationCount: hotelGroup.HotelAssociationCount,\r\n });\r\n const hotelGrouplink = {\r\n key: hotelGroup.Id,\r\n name: itemName,\r\n automationId: `nav-hotelgroup-${hotelGroup.Id}`,\r\n onClick: onHotelGroupClick,\r\n url: '#',\r\n };\r\n\r\n if (hotelGroup.Name === 'Ungrouped') {\r\n hotelGrouplink.name = i18n.getString('HotelCenter_Group_GroupList_Ungrouped');\r\n }\r\n\r\n if (subAccount) {\r\n subAccount.links.push(hotelGrouplink);\r\n } else {\r\n memo.push({\r\n key: hotelGroup.SubAccountId,\r\n name: hotelGroup.SubAccountName,\r\n automationId: `nav-subaccount-${hotelGroup.SubAccountId}`,\r\n onClick: onSubAccountClick,\r\n url: '#',\r\n links: [hotelGrouplink],\r\n });\r\n }\r\n return memo;\r\n }, [])\r\n);\r\n\r\nexport const filterHotelGroupsByName = (hotelGroups, query) => (\r\n _.filter(hotelGroups, item => item.Name.indexOf(query) >= 0)\r\n);\r\n\r\nexport const getHotelGroupNameById = (hotelGroups, id) => {\r\n const hotelGroup = _.find(hotelGroups, item => item.Id === id);\r\n return hotelGroup.Name;\r\n};\r\n\r\nexport const getUngroupList = hotelGroups => (\r\n _.filter(hotelGroups, item => item.Name === 'Ungrouped')\r\n);\r\n\r\nexport const isUngrouped = (unGroupedList, key) => {\r\n const result = _.find(unGroupedList, item => item.Id === key);\r\n return result !== undefined;\r\n};\r\n\r\nexport const getHotelGroupAssociations = (hotelGroups, hotelGroupId) => {\r\n const hotelGroup = _.find(hotelGroups, item => item.Id === hotelGroupId);\r\n return hotelGroup ? hotelGroup.HotelAssociationCount : 0;\r\n};\r\n\r\nexport const getSubAccountAssociations = (hotelGroups, subAccountId) => (\r\n _.chain(hotelGroups)\r\n .filter(item => item.SubAccountId === subAccountId)\r\n .reduce((total, item) => total + item.HotelAssociationCount, 0)\r\n .value()\r\n);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { Nav } from '@bingads-webui-react/fabric-control';\r\nimport { Glyphicon } from '@bingads-webui-react/primitive';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport {\r\n buildHotelGroupLinks,\r\n getHotelGroupNameById,\r\n getUngroupList,\r\n isUngrouped,\r\n getHotelGroupAssociations,\r\n getSubAccountAssociations,\r\n} from './util';\r\n\r\nconst pageContext = globalContext.require('PageContext');\r\nconst permissions = pageContext && pageContext.Permissions;\r\nconst isHotelCenterDeprecation = permissions && permissions.dynamic.HotelCenterDeprecation;\r\n\r\nexport const HotelGroupNavTree = (props) => {\r\n const unGroupList = getUngroupList(props.hotelGroups);\r\n\r\n const onSubAccountClick = (event, item) => {\r\n props.onSubAccountClick(event, {\r\n key: item.key,\r\n name: item.name,\r\n hasHotelAssociation: getSubAccountAssociations(props.hotelGroups, item.key) > 0,\r\n });\r\n };\r\n\r\n const onCreateLinkClick = () => {\r\n if (!isHotelCenterDeprecation) {\r\n props.onCreateLinkClick();\r\n }\r\n };\r\n\r\n const onHotelGroupClick = (event, item) => {\r\n const hotelGroupName = getHotelGroupNameById(props.hotelGroups, item.key);\r\n props.onHotelGroupClick(event, {\r\n key: item.key,\r\n name: hotelGroupName,\r\n isUngroup: isUngrouped(unGroupList, item.key),\r\n hasHotelAssociation: getHotelGroupAssociations(props.hotelGroups, item.key) > 0,\r\n });\r\n };\r\n\r\n const allSubaccountLink = {\r\n key: 'selectAllSubAccount',\r\n name: props.i18n.getString('HotelCenter_Subheader_All_SubAccount_Label'),\r\n automationId: 'nav-action-select-all',\r\n url: '#',\r\n onClick: onSubAccountClick,\r\n };\r\n\r\n const createLink = {\r\n key: 'createNew',\r\n name: props.i18n.getString('HotelCenter_Subheader_CreateSubAccount_Label'),\r\n automationId: 'nav-action-create-new',\r\n url: '#',\r\n onClick: onCreateLinkClick,\r\n disabled: isHotelCenterDeprecation,\r\n };\r\n\r\n const hotelGroupLinks = buildHotelGroupLinks(\r\n props.hotelGroups,\r\n onSubAccountClick,\r\n onHotelGroupClick,\r\n props.i18n\r\n );\r\n\r\n const navLinkGroups = [{\r\n links: _.flatten([\r\n allSubaccountLink,\r\n hotelGroupLinks,\r\n createLink], true),\r\n }];\r\n\r\n const onRenderLink = link => (\r\n \r\n {\r\n link.key === 'createNew' ?\r\n
    \r\n \r\n {link.name}\r\n
    :\r\n {link.name}\r\n }\r\n
    \r\n );\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nHotelGroupNavTree.propTypes = {\r\n onSubAccountClick: PropTypes.func.isRequired,\r\n onHotelGroupClick: PropTypes.func.isRequired,\r\n onCreateLinkClick: PropTypes.func.isRequired,\r\n hotelGroups: PropTypes.arrayOf(PropTypes.shape({\r\n Id: PropTypes.string,\r\n Name: PropTypes.string,\r\n SubAccountId: PropTypes.string,\r\n SubAccountName: PropTypes.string,\r\n HotelAssociationCount: PropTypes.number,\r\n })).isRequired,\r\n selectedKey: PropTypes.string,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n};\r\n\r\nHotelGroupNavTree.defaultProps = {\r\n selectedKey: 'selectAllSubAccount',\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Dropdown, SearchBox, Label } from '@bingads-webui-react/fabric-control';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { getHotelGroupStyles } from './style/hotelgroup-selector-style';\r\nimport { HotelGroupNavTree } from './hotelgroup-nav-tree';\r\nimport {\r\n filterHotelGroupsByName,\r\n getDefaultSubAccount,\r\n} from './util';\r\n\r\nconst pageContext = globalContext.require('PageContext');\r\nconst permissions = pageContext && pageContext.Permissions;\r\nconst isHotelCenterDeprecation = permissions && permissions.dynamic.HotelCenterDeprecation;\r\n\r\nclass UnstyledSubAccountHotelGroupSelector extends React.PureComponent {\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n const nextState = {};\r\n\r\n if (nextProps.selectedItem &&\r\n (nextProps.selectedItem.key !== prevState.selectedItem.key ||\r\n nextProps.selectedItem.name !== prevState.selectedItem.name)) {\r\n nextState.selectedItem = nextProps.selectedItem;\r\n }\r\n\r\n return nextState;\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n currentGroups: this.props.hotelGroups,\r\n selectedItem: this.props.selectedItem,\r\n };\r\n\r\n this.dropdownRef = React.createRef();\r\n this.onRenderDropdownList = this.onRenderDropdownList.bind(this);\r\n this.defaultSubaccount = getDefaultSubAccount(props.i18n);\r\n }\r\n\r\n componentDidMount() {\r\n // eslint-disable-next-line no-underscore-dangle\r\n this.baseKeyDown = this.dropdownRef.current._onZoneKeyDown;\r\n // eslint-disable-next-line no-underscore-dangle\r\n this.dropdownRef.current._onZoneKeyDown = this.onDropdownListKeyDown;\r\n }\r\n\r\n onSubAccountClick = (event, item) => {\r\n this.setState({\r\n selectedItem: item,\r\n });\r\n this.dropdownRef.current._onDismiss(); // eslint-disable-line no-underscore-dangle\r\n this.props.onSubAccountClick(item);\r\n }\r\n\r\n onHotelGroupClick = (event, item) => {\r\n this.setState({\r\n selectedItem: item,\r\n });\r\n this.dropdownRef.current._onDismiss(); // eslint-disable-line no-underscore-dangle\r\n this.props.onHotelGroupClick(item);\r\n }\r\n\r\n onCreateLinkClick = () => {\r\n this.dropdownRef.current._onDismiss(); // eslint-disable-line no-underscore-dangle\r\n this.props.onCreateLinkClick();\r\n }\r\n\r\n onSearch = (query) => {\r\n const filtered = filterHotelGroupsByName(this.props.hotelGroups, query);\r\n this.setState({\r\n currentGroups: filtered,\r\n });\r\n this.props.onSearch(query);\r\n }\r\n\r\n onSearchClear = () => {\r\n this.setState({\r\n currentGroups: this.props.hotelGroups,\r\n });\r\n this.props.onSearchClear();\r\n }\r\n\r\n onDropdownListKeyDown = (e) => {\r\n const currentFocus = document.activeElement;\r\n const allSubAccountLink = document.getElementById('nav-action-select-all').parentNode.parentNode;\r\n const search = document.getElementById('search-container').querySelector('input');\r\n\r\n if (e.keyCode === 40 && // DOWN\r\n currentFocus.tagName.toLowerCase() === 'input') {\r\n allSubAccountLink.focus();\r\n e.stopPropagation();\r\n e.preventDefault();\r\n } else if (e.keyCode === 38 && // UP\r\n currentFocus.text === this.defaultSubaccount.name) {\r\n search.focus();\r\n e.stopPropagation();\r\n e.preventDefault();\r\n } else {\r\n this.baseKeyDown(e);\r\n }\r\n }\r\n\r\n onRenderDropdownList() {\r\n const { i18n } = this.props;\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n this.state.currentGroups.length === 0 ?\r\n
    \r\n \r\n
    : null\r\n }\r\n \r\n
    \r\n );\r\n }\r\n\r\n render() {\r\n const { i18n, classes } = this.props;\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nUnstyledSubAccountHotelGroupSelector.propTypes = {\r\n onSubAccountClick: PropTypes.func.isRequired,\r\n onHotelGroupClick: PropTypes.func.isRequired,\r\n onCreateLinkClick: PropTypes.func.isRequired,\r\n onSearch: PropTypes.func.isRequired,\r\n onSearchClear: PropTypes.func.isRequired,\r\n hotelGroups: PropTypes.arrayOf(PropTypes.shape({\r\n Id: PropTypes.string,\r\n Name: PropTypes.string,\r\n SubAccountId: PropTypes.string,\r\n SubAccountName: PropTypes.string,\r\n HotelAssociationCount: PropTypes.number,\r\n })),\r\n isSubAccountSelected: PropTypes.bool.isRequired,\r\n selectedItem: PropTypes.objectOf(PropTypes.shape({\r\n key: PropTypes.string,\r\n name: PropTypes.string,\r\n })).isRequired,\r\n classes: PropTypes.objectOf(PropTypes.any).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n};\r\n\r\nUnstyledSubAccountHotelGroupSelector.defaultProps = {\r\n hotelGroups: [],\r\n};\r\n\r\nexport const SubAccountHotelGroupSelector = withDefaultStyles(\r\n UnstyledSubAccountHotelGroupSelector,\r\n getHotelGroupStyles\r\n);\r\n","export const getHotelGroupStyles = () => ({\r\n hotelGroupSelector: {\r\n '& .ms-Dropdown-container': {\r\n width: 300,\r\n },\r\n },\r\n // Dropdown callout is directly under body\r\n '@global': {\r\n '.ms-Dropdown-callout': {\r\n '& .no-result': {\r\n lineHeight: '44px',\r\n paddingLeft: 10,\r\n },\r\n '& .ms-SearchBox-iconContainer': {\r\n width: 32,\r\n '& .ms-SearchBox-icon': {\r\n opacity: 1,\r\n },\r\n },\r\n '& .ms-SearchBox:hover .ms-SearchBox-iconContainer': {\r\n width: 32,\r\n },\r\n '& .ms-Nav-group .ms-Nav-groupContent': {\r\n marginBottom: 0,\r\n '& > ul > li:last-child': {\r\n borderTop: '1px solid lightgray',\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","export const getDialogStyles = () => ({\r\n renameDialog: {\r\n '& .ms-Dialog-title': {\r\n wordBreak: 'break-word',\r\n },\r\n },\r\n deleteDialog: {\r\n '& .ms-Dialog-title': {\r\n wordBreak: 'break-word',\r\n },\r\n },\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n PrimaryButton,\r\n DefaultButton,\r\n Dialog,\r\n DialogType,\r\n DialogFooter,\r\n} from '@bingads-webui-react/fabric-control';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getDialogStyles } from './style/dialog-style';\r\n\r\nexport const DeleteDialog = (props) => {\r\n const { i18n } = props;\r\n\r\n const classes = useDefaultStyles(() => getDialogStyles());\r\n\r\n const onConfirmClick = () => {\r\n props.onConfirmClick();\r\n };\r\n\r\n const onCancelClick = () => {\r\n props.onCancelClick();\r\n };\r\n\r\n return (\r\n \r\n \r\n );\r\n};\r\n\r\nDeleteDialog.propTypes = {\r\n hideDialog: PropTypes.bool.isRequired,\r\n isUndeletable: PropTypes.bool.isRequired,\r\n undeletableMessage: PropTypes.string.isRequired,\r\n dialogTitle: PropTypes.string.isRequired,\r\n onConfirmClick: PropTypes.func.isRequired,\r\n onCancelClick: PropTypes.func.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport {\r\n PrimaryButton,\r\n DefaultButton,\r\n TextField,\r\n Dialog,\r\n DialogType,\r\n DialogFooter,\r\n} from '@bingads-webui-react/fabric-control';\r\nimport { getDialogStyles } from './style/dialog-style';\r\n\r\nclass UnstyledRenameDialog extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n newName: '',\r\n errorMessage: '',\r\n disableConfirmButton: true,\r\n };\r\n }\r\n\r\n onConfirmClick = () => (\r\n this.props.onConfirmClick(this.state.newName)\r\n )\r\n\r\n onCancelClick = () => (\r\n this.props.onCancelClick()\r\n )\r\n\r\n validateName = (event, newValue) => {\r\n if (newValue && newValue.trim() !== '') {\r\n this.setState({\r\n errorMessage: '',\r\n disableConfirmButton: false,\r\n newName: newValue,\r\n });\r\n } else {\r\n this.setState({\r\n errorMessage: this.props.i18n.getString('Filter_Validation_Common_Required'),\r\n disableConfirmButton: true,\r\n newName: newValue,\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n const { i18n, classes } = this.props;\r\n\r\n return (\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nUnstyledRenameDialog.propTypes = {\r\n classes: PropTypes.shape({}).isRequired,\r\n hideDialog: PropTypes.bool.isRequired,\r\n dialogTitle: PropTypes.string.isRequired,\r\n onConfirmClick: PropTypes.func.isRequired,\r\n onCancelClick: PropTypes.func.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n};\r\n\r\nexport const RenameDialog = withDefaultStyles(\r\n UnstyledRenameDialog,\r\n getDialogStyles\r\n);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport {\r\n CommandButton,\r\n} from '@bingads-webui-react/fabric-control';\r\nimport { Glyphicon } from '@bingads-webui-react/primitive';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { DeleteDialog } from './delete-dialog';\r\nimport { RenameDialog } from './rename-dialog';\r\nimport { getModelItem } from './util';\r\n\r\nconst pageContext = globalContext.require('PageContext');\r\nconst permissions = pageContext && pageContext.Permissions;\r\nconst isHotelCenterDeprecation = permissions && permissions.dynamic.HotelCenterDeprecation;\r\n\r\nexport class EditMenu extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n hideRenameDialog: true,\r\n hideDeleteDialog: true,\r\n };\r\n }\r\n\r\n onConfirmRenameClick = (newName) => {\r\n const updatedItem = {\r\n Id: this.props.selectedItem.key,\r\n Name: this.props.selectedItem.name,\r\n NewName: newName,\r\n };\r\n\r\n if (this.props.isAtSubaccountLevel) {\r\n this.props.onRenameSubaccountSubmit(updatedItem);\r\n } else {\r\n this.props.onRenameHotelGroupSubmit(updatedItem);\r\n }\r\n\r\n this.closeDialog();\r\n }\r\n\r\n onConfirmDeleteClick = () => {\r\n const model = getModelItem(this.props.selectedItem);\r\n\r\n if (this.props.isAtSubaccountLevel) {\r\n this.props.onDeleteSubaccountSubmit(model);\r\n } else {\r\n this.props.onDeleteHotelGroupSubmit(model);\r\n }\r\n\r\n this.closeDialog();\r\n }\r\n\r\n openDialog = (dialogName) => {\r\n if (dialogName === 'rename') {\r\n this.setState({\r\n hideRenameDialog: false,\r\n hideDeleteDialog: true,\r\n });\r\n } else {\r\n this.setState({\r\n hideRenameDialog: true,\r\n hideDeleteDialog: false,\r\n });\r\n }\r\n }\r\n\r\n closeDialog = () => (\r\n this.setState({\r\n hideRenameDialog: true,\r\n hideDeleteDialog: true,\r\n })\r\n )\r\n\r\n renderEditIcon = () => (\r\n \r\n )\r\n\r\n render() {\r\n const {\r\n isAtSubaccountLevel,\r\n selectedItem,\r\n i18n,\r\n } = this.props;\r\n\r\n const menuName = isAtSubaccountLevel ?\r\n i18n.getString('HotelCenter_EditMenu_Subaccount') :\r\n i18n.getString('HotelCenter_EditMenu_HotelGroup');\r\n const editText = `${i18n.getString('HotelCenter_Group_Edit_Label')} ${menuName}`;\r\n const renameDialogTitle = selectedItem ?\r\n `${i18n.getString('HotelCenter_Group_Rename_Label')} ${selectedItem.name} ${menuName}` :\r\n `${i18n.getString('HotelCenter_Group_Rename_Label')} ${menuName}`;\r\n const deleteDialogTitle = selectedItem ?\r\n `${i18n.getString('HotelCenter_Group_Delete_Label')} ${selectedItem.name} ${menuName}` :\r\n `${i18n.getString('HotelCenter_Group_Delete_Label')} ${menuName}`;\r\n const undeletableMessage = isAtSubaccountLevel ?\r\n i18n.getString('HotelCenter_SubAccount_Not_Empty_Delete_Error_Message') :\r\n i18n.getString('HotelCenter_Group_Not_Empty_Delete_Error_Message');\r\n\r\n const menuProps = {\r\n items: [\r\n {\r\n key: 'rename',\r\n text: `${i18n.getString('HotelCenter_EditMenu_RenameThis')} ${menuName}`,\r\n onClick: () => this.openDialog('rename'),\r\n },\r\n {\r\n key: 'delete',\r\n text: `${i18n.getString('HotelCenter_EditMenu_DeleteThis')} ${menuName}`,\r\n onClick: () => this.openDialog('delete'),\r\n },\r\n ],\r\n };\r\n\r\n const disableEdit = !selectedItem ||\r\n selectedItem.key === 'selectAllSubAccount' ||\r\n (!isAtSubaccountLevel && _.has(selectedItem, 'isUngroup') && selectedItem.isUngroup) ||\r\n isHotelCenterDeprecation;\r\n const isUndeletable = _.has(selectedItem, 'hasHotelAssociation') &&\r\n selectedItem.hasHotelAssociation === true;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n\r\n \r\n );\r\n }\r\n}\r\n\r\nEditMenu.propTypes = {\r\n isAtSubaccountLevel: PropTypes.bool.isRequired,\r\n onRenameSubaccountSubmit: PropTypes.func.isRequired,\r\n onDeleteSubaccountSubmit: PropTypes.func.isRequired,\r\n onRenameHotelGroupSubmit: PropTypes.func.isRequired,\r\n onDeleteHotelGroupSubmit: PropTypes.func.isRequired,\r\n selectedItem: PropTypes.objectOf(PropTypes.any),\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n};\r\n\r\nEditMenu.defaultProps = {\r\n selectedItem: null,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getEditPanelStyles } from './style/edit-panel-style';\r\nimport { SubAccountHotelGroupSelector } from './subaccount-hotelgroup-selector';\r\nimport { EditMenu } from './edit-menu';\r\nimport {\r\n getDefaultSubAccount,\r\n getSubAccountById,\r\n getModelItem,\r\n getFirstChildGroup,\r\n getChildUngroupId,\r\n getAllChildrenGroupsId,\r\n getHotelGroupById,\r\n} from './util';\r\n\r\nclass UnstyledSubAccountHotelGroupEditPanel extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n const initialSelection = getSubAccountById(this.props.hotelGroups, this.props.preSelectedKey) ||\r\n getDefaultSubAccount(props.i18n);\r\n\r\n this.state = {\r\n subaccount: initialSelection,\r\n hotelGroup: null,\r\n };\r\n }\r\n\r\n onSubAccountClick = (item) => {\r\n const { hotelGroups } = this.props;\r\n const subAccountModel = getModelItem(item);\r\n const child = getFirstChildGroup(hotelGroups, item.key);\r\n\r\n subAccountModel.UngroupChildId = getChildUngroupId(hotelGroups, item.key);\r\n subAccountModel.SelectedGroupId = child ? child.Id : '';\r\n subAccountModel.SelectedGroupName = child ? child.Name : '';\r\n subAccountModel.SelectedGroupAssociationCount = child ? child.HotelAssociationCount : 0;\r\n subAccountModel.ChildrenKeys = getAllChildrenGroupsId(hotelGroups, item.key);\r\n\r\n this.setState({\r\n subaccount: item,\r\n hotelGroup: null,\r\n });\r\n\r\n this.props.onSubAccountClick(subAccountModel);\r\n };\r\n\r\n onHotelGroupClick = (item) => {\r\n const { hotelGroups } = this.props;\r\n const hotelModel = getHotelGroupById(hotelGroups, item.key);\r\n\r\n hotelModel.ParentId = hotelModel ? hotelModel.SubAccountId : '';\r\n hotelModel.SiblingUngroup = hotelModel.ParentId ?\r\n getChildUngroupId(hotelGroups, hotelModel.ParentId) : '';\r\n hotelModel.SiblingKeys = hotelModel.ParentId ?\r\n getAllChildrenGroupsId(hotelGroups, hotelModel.ParentId) : '';\r\n\r\n this.setState({\r\n subaccount: null,\r\n hotelGroup: item,\r\n });\r\n\r\n this.props.onHotelGroupClick(hotelModel);\r\n };\r\n\r\n onRenameSubaccount = (item) => {\r\n this.setState({\r\n subaccount: {\r\n key: item.Id,\r\n name: item.NewName,\r\n },\r\n });\r\n this.props.onRenameSubaccountSubmit(item);\r\n }\r\n\r\n onRenameHotelGroup = (item) => {\r\n this.setState({\r\n hotelGroup: {\r\n key: item.Id,\r\n name: item.NewName,\r\n },\r\n });\r\n this.props.onRenameHotelGroupSubmit(item);\r\n }\r\n\r\n onDeleteSubaccount = (item) => {\r\n this.resetSelection();\r\n this.props.onDeleteSubaccountSubmit(item);\r\n }\r\n\r\n onDeleteHotelGroup = (item) => {\r\n this.resetSelection();\r\n this.props.onDeleteHotelGroupSubmit(item);\r\n }\r\n\r\n resetSelection = () => {\r\n const defaultSubaccount = getDefaultSubAccount(this.props.i18n);\r\n\r\n this.setState({\r\n subaccount: defaultSubaccount,\r\n hotelGroup: null,\r\n });\r\n }\r\n\r\n render() {\r\n const {\r\n hotelGroups,\r\n isSubAccountSelected,\r\n i18n,\r\n } = this.props;\r\n\r\n return (\r\n
    \r\n this.props.onCreateLinkClick()}\r\n onSearch={query => this.props.onSearch(query)}\r\n onSearchClear={() => this.props.onSearchClear()}\r\n i18n={i18n}\r\n />\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nUnstyledSubAccountHotelGroupEditPanel.propTypes = {\r\n onSubAccountClick: PropTypes.func.isRequired,\r\n onHotelGroupClick: PropTypes.func.isRequired,\r\n onCreateLinkClick: PropTypes.func.isRequired,\r\n onSearch: PropTypes.func.isRequired,\r\n onSearchClear: PropTypes.func.isRequired,\r\n onRenameSubaccountSubmit: PropTypes.func.isRequired,\r\n onDeleteSubaccountSubmit: PropTypes.func.isRequired,\r\n onRenameHotelGroupSubmit: PropTypes.func.isRequired,\r\n onDeleteHotelGroupSubmit: PropTypes.func.isRequired,\r\n hotelGroups: PropTypes.arrayOf(PropTypes.shape({\r\n Id: PropTypes.string,\r\n Name: PropTypes.string,\r\n SubAccountId: PropTypes.string,\r\n SubAccountName: PropTypes.string,\r\n HotelAssociationCount: PropTypes.number,\r\n })),\r\n isSubAccountSelected: PropTypes.bool.isRequired,\r\n preSelectedKey: PropTypes.string.isRequired,\r\n classes: PropTypes.objectOf(PropTypes.any).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n};\r\n\r\nUnstyledSubAccountHotelGroupEditPanel.defaultProps = {\r\n hotelGroups: [],\r\n};\r\n\r\nexport const SubAccountHotelGroupEditPanel = withDefaultStyles(\r\n UnstyledSubAccountHotelGroupEditPanel,\r\n getEditPanelStyles\r\n);\r\n","export const getEditPanelStyles = () => ({\r\n editPanel: {\r\n display: 'inline-block',\r\n '& .subaccount-hotelgroup-selector-container': {\r\n display: 'inline-block',\r\n },\r\n '& > button.ms-Button--action': {\r\n display: 'inline-block',\r\n verticalAlign: 'bottom',\r\n },\r\n },\r\n // Dropdown callout and dialog are directly under body\r\n '@global': {\r\n '.ms-Dropdown-callout .ms-Nav-group .ms-Nav-groupContent': {\r\n marginBottom: 0,\r\n },\r\n '.nav-tree-container .ms-Nav-group.is-expanded': {\r\n overflowY: 'auto',\r\n maxHeight: 400,\r\n '& .create-new-link[disabled]': {\r\n color: '#BEBBB8',\r\n cursor: 'not-allowed',\r\n '& .create-new-icon': {\r\n color: 'inherit',\r\n },\r\n },\r\n },\r\n '.ms-Dialog .ms-Dialog-main': {\r\n minHeight: 'fit-content',\r\n '& .ms-Dialog-actions .ms-Dialog-actionsRight': {\r\n textAlign: 'left',\r\n },\r\n },\r\n },\r\n});\r\n","import React, { useState, useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport URI from 'urijs';\r\nimport classNames from 'classnames';\r\n\r\nimport { Button, NavItem } from '@bingads-webui-react/primitive';\r\nimport { SearchBox } from '@bingads-webui-react/search-box';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { FocusLock } from '@bingads-webui-react/focus-lock';\r\n\r\nimport { TransferSummaryLocStrings as LocStrings, CommonLocStrings } from '@bingads-webui-campaign-react/account-reparenting-localization';\r\nimport { accountsPopoverClassesProps, getAccountsPopoverStyles } from '@bingads-webui-campaign-react/account-reparenting-styles';\r\nimport { BasicAccountPropType, I18nPropTypes, CustomerPropType, UserPropType } from '@bingads-webui-campaign-react/account-reparenting-props';\r\nimport { stringContains } from '@bingads-webui-campaign-react/account-reparenting-utils';\r\n\r\nconst matchSearchAccount = (account, srcText) =>\r\n _.isEmpty(srcText) ||\r\n stringContains(account.Name.toLowerCase(), srcText) ||\r\n stringContains(account.Number.toLowerCase(), srcText) ||\r\n stringContains(account.Id.toString().toLowerCase(), srcText);\r\n\r\nconst AccountsPopover = ({\r\n i18n,\r\n classes,\r\n sourceCustomer,\r\n currentUser,\r\n accounts,\r\n onAccountDelete,\r\n isShowing,\r\n onCancelClick,\r\n}) => {\r\n const [searchText, setSearchText] = useState('');\r\n const accountsList = _.filter(\r\n accounts,\r\n acc => matchSearchAccount(acc, searchText.toLowerCase().trim())\r\n );\r\n const onAccountDeleteCb = useCallback((accountId) => {\r\n onAccountDelete(accountId);\r\n }, [onAccountDelete]);\r\n\r\n const buildCampaignsUrl = useCallback(aid =>\r\n new URI(`${window.location.origin}/campaign/vnext/campaigns`)\r\n .search({ uid: currentUser.Id, cid: sourceCustomer.Id, aid })\r\n .href(), [currentUser, sourceCustomer]);\r\n\r\n const className = classNames(\r\n classes.accountsPopover,\r\n isShowing ? 'open' : '',\r\n 'accounts-list-popover-dialog'\r\n );\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n

    {i18n.getString(LocStrings.SelectedAccountsLabel)}

    \r\n \r\n {\r\n _.map(accountsList, acc => (\r\n
    \r\n \r\n {acc.Name}\r\n \r\n onAccountDeleteCb(acc.Id)}\r\n >\r\n {i18n.getString(LocStrings.RemoveAccount)}\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\nAccountsPopover.propTypes = {\r\n classes: accountsPopoverClassesProps.isRequired,\r\n i18n: I18nPropTypes.isRequired,\r\n sourceCustomer: CustomerPropType.isRequired,\r\n currentUser: UserPropType.isRequired,\r\n accounts: PropTypes.arrayOf(BasicAccountPropType).isRequired,\r\n onAccountDelete: PropTypes.func.isRequired,\r\n isShowing: PropTypes.bool.isRequired,\r\n onCancelClick: PropTypes.func.isRequired,\r\n};\r\n\r\nexport const ARWAccountsPopover = withI18nConsumer(withDefaultStyles(\r\n AccountsPopover,\r\n getAccountsPopoverStyles\r\n));\r\n","import React, { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport classNames from 'classnames';\r\n\r\nimport { Button, NavItem } from '@bingads-webui-react/primitive';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { SearchBox } from '@bingads-webui-react/search-box';\r\nimport { FocusLock } from '@bingads-webui-react/focus-lock';\r\n\r\nimport { TransferSummaryLocStrings as LocStrings, CommonLocStrings } from '@bingads-webui-campaign-react/account-reparenting-localization';\r\nimport { accountsPopoverClassesProps, getAccountsPopoverStyles } from '@bingads-webui-campaign-react/account-reparenting-styles';\r\nimport { I18nPropTypes } from '@bingads-webui-campaign-react/account-reparenting-props';\r\nimport { stringContains } from '@bingads-webui-campaign-react/account-reparenting-utils';\r\n\r\nconst matchSearchAccount = (account, srcText) =>\r\n _.isEmpty(srcText) ||\r\n stringContains(account.Account.Name.toLowerCase(), srcText) ||\r\n stringContains(account.Account.Number.toLowerCase(), srcText) ||\r\n stringContains(account.Account.Id.toString().toLowerCase(), srcText) ||\r\n stringContains(account.Manager.Name.toLowerCase(), srcText) ||\r\n stringContains(account.Manager.Number.toLowerCase(), srcText) ||\r\n stringContains(account.Manager.Id.toString().toLowerCase(), srcText);\r\n\r\nconst AccountManagerPopover = ({\r\n i18n,\r\n classes,\r\n accounts,\r\n isShowing,\r\n popoverTitle,\r\n onCancelClick,\r\n onAccountClickUrl,\r\n onManagerClickUrl,\r\n}) => {\r\n const [searchText, setSearchText] = useState('');\r\n const accountsList = _.filter(\r\n accounts,\r\n acc => matchSearchAccount(acc, searchText.toLowerCase().trim())\r\n );\r\n const className = classNames(\r\n classes.accountsPopover,\r\n isShowing ? 'open' : '',\r\n 'accounts-managers-popover-dialog'\r\n );\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n

    {popoverTitle}

    \r\n \r\n {\r\n accountsList && _.map(accountsList, acc => (\r\n
    \r\n \r\n {acc.Account.Name}\r\n \r\n \r\n {acc.Manager.Name}\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\nAccountManagerPopover.propTypes = {\r\n classes: accountsPopoverClassesProps.isRequired,\r\n i18n: I18nPropTypes.isRequired,\r\n popoverTitle: PropTypes.string.isRequired,\r\n accounts: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n isShowing: PropTypes.bool.isRequired,\r\n onCancelClick: PropTypes.func.isRequired,\r\n onAccountClickUrl: PropTypes.func.isRequired,\r\n onManagerClickUrl: PropTypes.func.isRequired,\r\n};\r\n\r\nexport const ARWAccountManagerPopover =\r\n withI18nConsumer(withDefaultStyles(AccountManagerPopover, getAccountsPopoverStyles));\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\n\r\nimport { Button } from '@bingads-webui-react/primitive';\r\n\r\nconst StaticText = (props) => {\r\n const classes = props.className.replace('btn-link', '');\r\n const withouEvents = _.omit(props, 'onClick');\r\n return ({props.children});\r\n};\r\n\r\nStaticText.propTypes = {\r\n children: PropTypes.oneOfType([\r\n PropTypes.node,\r\n PropTypes.arrayOf(PropTypes.node),\r\n ]),\r\n className: PropTypes.string,\r\n};\r\n\r\nStaticText.defaultProps = {\r\n children: null,\r\n className: {},\r\n};\r\n\r\nexport const ButtonOrStatic = (props) => {\r\n const Component = props.isButton ? Button : StaticText;\r\n const newProps = _.omit(props, 'isButton');\r\n return (\r\n {props.children}\r\n );\r\n};\r\n\r\nButtonOrStatic.propTypes = {\r\n isButton: PropTypes.bool,\r\n children: PropTypes.oneOfType([\r\n PropTypes.node,\r\n PropTypes.arrayOf(PropTypes.node),\r\n ]),\r\n};\r\n\r\nButtonOrStatic.defaultProps = {\r\n isButton: true,\r\n children: null,\r\n};\r\n","import React from 'react';\r\nimport { Glyphicon } from '@bingads-webui-react/primitive';\r\n\r\nconst iconStyle = {\r\n fontWeight: '600',\r\n margin: '0 4px',\r\n fontSize: '16px',\r\n};\r\n\r\nexport const OkIcon = () => ;\r\nexport const WarningIcon = () => ;\r\n","import React, { useMemo, useState, useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport URI from 'urijs';\r\n\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { I18nPropTypes, CustomerPropType, UserPropType } from '@bingads-webui-campaign-react/account-reparenting-props';\r\nimport { TransferSummaryLocStrings as LocStrings } from '@bingads-webui-campaign-react/account-reparenting-localization';\r\n\r\nimport { ARWAccountManagerPopover } from './account-manager-popover';\r\nimport { ButtonOrStatic } from './button-or-static';\r\nimport { WarningIcon, OkIcon } from './icons';\r\n\r\nconst AccountLinksSummary = ({\r\n i18n,\r\n accounts,\r\n currentUser,\r\n sourceCustomer,\r\n}) => {\r\n const [isUnlinkedAccountsModalDisplayed, setIsUnlinkedAccountsModalDisplayed] = useState(false);\r\n const [isRetainedAccountsModalDisplayed, setIsRetainedAccountsModalDisplayed] = useState(false);\r\n\r\n const showUnlinkedAccountsModal = useCallback(() => {\r\n setIsUnlinkedAccountsModalDisplayed(true);\r\n }, [setIsUnlinkedAccountsModalDisplayed]);\r\n const hideUnlinkedAccountsModal = useCallback(() => {\r\n setIsUnlinkedAccountsModalDisplayed(false);\r\n }, [setIsUnlinkedAccountsModalDisplayed]);\r\n\r\n const showRetainedAccountsModal = useCallback(() => {\r\n setIsRetainedAccountsModalDisplayed(true);\r\n }, [setIsRetainedAccountsModalDisplayed]);\r\n const hideRetainedAccountsModal = useCallback(() => {\r\n setIsRetainedAccountsModalDisplayed(false);\r\n }, [setIsRetainedAccountsModalDisplayed]);\r\n\r\n const buildCampaignsUrl = useCallback(aid =>\r\n new URI(`${window.location.origin}/campaign/vnext/campaigns`)\r\n .search({ uid: currentUser.Id, cid: sourceCustomer.Id, aid })\r\n .href(), [currentUser, sourceCustomer]);\r\n const buildAccountsUrl = useCallback(cid =>\r\n new URI(`${window.location.origin}/campaign/vnext/accounts/management`)\r\n .search({ uid: currentUser.Id, cid: cid || sourceCustomer.Id })\r\n .href(), [currentUser, sourceCustomer]);\r\n\r\n const { unlinkedAccounts, retainedAccounts } = useMemo(() => {\r\n const retained = [];\r\n const unlinked = [];\r\n _.each(accounts, (acc) => {\r\n _.each(acc.LinkedManagers, (manager) => {\r\n const accountManager = {\r\n Id: `${acc.Id}-${manager.Id}`,\r\n Account: acc,\r\n Manager: manager,\r\n };\r\n if (manager.Unlink) {\r\n unlinked.push(accountManager);\r\n } else {\r\n retained.push(accountManager);\r\n }\r\n });\r\n });\r\n return { unlinkedAccounts: unlinked, retainedAccounts: retained };\r\n }, [accounts]);\r\n\r\n return (\r\n
    \r\n \r\n {i18n.getString(LocStrings.RetainedAccountsLabel, { count: retainedAccounts.length })}\r\n \r\n \r\n \r\n {i18n.getString(LocStrings.UnlinkedAccountsLabel, { count: unlinkedAccounts.length })}\r\n \r\n \r\n buildCampaignsUrl(aid)}\r\n onManagerClickUrl={cid => buildAccountsUrl(cid)}\r\n />\r\n buildCampaignsUrl(aid)}\r\n onManagerClickUrl={cid => buildAccountsUrl(cid)}\r\n />\r\n
    \r\n );\r\n};\r\n\r\nAccountLinksSummary.propTypes = {\r\n i18n: I18nPropTypes.isRequired,\r\n sourceCustomer: CustomerPropType.isRequired,\r\n currentUser: UserPropType.isRequired,\r\n accounts: PropTypes.arrayOf(PropTypes.shape({\r\n LinkedManagers: PropTypes.arrayOf(PropTypes.shape({\r\n Unlink: PropTypes.bool,\r\n })),\r\n })).isRequired,\r\n};\r\n\r\nexport const ARWAccountLinksSummary = withI18nConsumer(AccountLinksSummary);\r\n","import React, { useMemo, useState, useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport URI from 'urijs';\r\n\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { I18nPropTypes, CustomerPropType, UserPropType } from '@bingads-webui-campaign-react/account-reparenting-props';\r\nimport { TransferSummaryLocStrings as LocStrings } from '@bingads-webui-campaign-react/account-reparenting-localization';\r\n\r\nimport { ARWAccountManagerPopover } from './account-manager-popover';\r\nimport { ButtonOrStatic } from './button-or-static';\r\nimport { OkIcon } from './icons';\r\n\r\nconst AccountBillingSummary = ({\r\n i18n,\r\n accounts,\r\n sourceCustomer,\r\n currentUser,\r\n clientCenterUIAPI,\r\n}) => {\r\n const [isNewBillToAccountsModalDisplayed, setIsNewBillToAccountsModalDisplayed] = useState(false);\r\n const [isRetainedAccountsModalDisplayed, setIsRetainedAccountsModalDisplayed] = useState(false);\r\n\r\n const showNewBillToAccountsModal = useCallback(() => {\r\n setIsNewBillToAccountsModalDisplayed(true);\r\n }, [setIsNewBillToAccountsModalDisplayed]);\r\n const hideNewBillToAccountsModal = useCallback(() => {\r\n setIsNewBillToAccountsModalDisplayed(false);\r\n }, [setIsNewBillToAccountsModalDisplayed]);\r\n\r\n const showRetainedAccountsModal = useCallback(() => {\r\n setIsRetainedAccountsModalDisplayed(true);\r\n }, [setIsRetainedAccountsModalDisplayed]);\r\n const hideRetainedAccountsModal = useCallback(() => {\r\n setIsRetainedAccountsModalDisplayed(false);\r\n }, [setIsRetainedAccountsModalDisplayed]);\r\n\r\n const { retainedAccounts, newBillToAccounts } = useMemo(() => {\r\n const retained = _.filter(\r\n accounts,\r\n acc => acc.BillToManager && acc.BillToManager.BillTo\r\n );\r\n const newBillTo = _.filter(\r\n accounts,\r\n acc => !acc.BillToManager || !acc.BillToManager.BillTo\r\n );\r\n return { newBillToAccounts: newBillTo, retainedAccounts: retained };\r\n }, [accounts]);\r\n\r\n const toAccountManagerMap = useCallback(account => ({\r\n Id: `${account.Id}-${account.BillToManager.Id}`,\r\n Account: account,\r\n Manager: account.BillToManager,\r\n }), []);\r\n\r\n const buildBillingUrl = useCallback((cid, aid) =>\r\n new URI(`${clientCenterUIAPI}billing`)\r\n .search({ uid: currentUser.Id, cid: cid || sourceCustomer.Id, aid })\r\n .href(), [currentUser, sourceCustomer, clientCenterUIAPI]);\r\n\r\n return (\r\n
    \r\n \r\n {i18n.getString(LocStrings.NewBillToLabel, { count: newBillToAccounts.length })}\r\n \r\n \r\n \r\n {i18n.getString(LocStrings.RetainedBillToLabel, { count: retainedAccounts.length })}\r\n \r\n \r\n toAccountManagerMap(acc))}\r\n isShowing={isNewBillToAccountsModalDisplayed}\r\n onCancelClick={hideNewBillToAccountsModal}\r\n onAccountClickUrl={aid => buildBillingUrl(null, aid)}\r\n onManagerClickUrl={cid => buildBillingUrl(cid)}\r\n />\r\n toAccountManagerMap(acc))}\r\n isShowing={isRetainedAccountsModalDisplayed}\r\n onCancelClick={hideRetainedAccountsModal}\r\n onAccountClickUrl={aid => buildBillingUrl(null, aid)}\r\n onManagerClickUrl={cid => buildBillingUrl(cid)}\r\n />\r\n
    \r\n );\r\n};\r\n\r\nAccountBillingSummary.propTypes = {\r\n i18n: I18nPropTypes.isRequired,\r\n sourceCustomer: CustomerPropType.isRequired,\r\n currentUser: UserPropType.isRequired,\r\n clientCenterUIAPI: PropTypes.string.isRequired,\r\n accounts: PropTypes.arrayOf(PropTypes.shape({\r\n BillToManager: PropTypes.shape({\r\n BillTo: PropTypes.bool,\r\n }),\r\n })).isRequired,\r\n};\r\n\r\nexport const ARWAccountBillingSummary = withI18nConsumer(AccountBillingSummary);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { Label, FormGroup } from '@bingads-webui-react/primitive';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { I18nPropTypes } from '@bingads-webui-campaign-react/account-reparenting-props';\r\nimport { paymentOptionIdToKeyMap, TransferSummaryLocStrings as LocStrings } from '@bingads-webui-campaign-react/account-reparenting-localization';\r\n\r\nexport const AccountPaymentSummary = ({ i18n, paymentOptionId }) => {\r\n const paymentOptionKey = paymentOptionIdToKeyMap[paymentOptionId];\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nAccountPaymentSummary.propTypes = {\r\n i18n: I18nPropTypes.isRequired,\r\n paymentOptionId: PropTypes.number,\r\n};\r\n\r\nAccountPaymentSummary.defaultProps = {\r\n paymentOptionId: null,\r\n};\r\n\r\nexport const ARWAccountPaymentSummary = withI18nConsumer(AccountPaymentSummary);\r\n","import React, { useMemo, useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport URI from 'urijs';\r\nimport { Constants } from '@bingads-webui-clientcenter/entity-utils';\r\nimport { Label, FormGroup } from '@bingads-webui-react/primitive';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { CustomerPropType, I18nPropTypes, UserPropType } from '@bingads-webui-campaign-react/account-reparenting-props';\r\nimport { TransferSummaryLocStrings as LocStrings } from '@bingads-webui-campaign-react/account-reparenting-localization';\r\nimport { WarningIcon, OkIcon } from './icons';\r\nimport { ButtonOrStatic } from './button-or-static';\r\n\r\nconst InsertionOrdersSummary = ({\r\n accounts,\r\n clientCenterUIAPI,\r\n currentUser,\r\n i18n,\r\n reparentingId,\r\n sourceCustomer,\r\n}) => {\r\n // TODO: Move construction to client center repo (its repeated in a few places)\r\n const preApprovalIOPageUrl = useMemo(\r\n () => new URI(`${clientCenterUIAPI}InsertionOrder/PreApprove`)\r\n .search({\r\n rpid: reparentingId,\r\n iosrc: Constants.IOCreationSource.Reparenting,\r\n uid: currentUser.Id,\r\n cid: sourceCustomer.Id,\r\n }).href(),\r\n [reparentingId, currentUser.Id, sourceCustomer.Id, clientCenterUIAPI]\r\n );\r\n\r\n const ioStatusCounts = useMemo(\r\n () => {\r\n const accountsBillToChange = _.filter(\r\n _.pluck(\r\n accounts,\r\n 'BillToChange'\r\n ),\r\n billToChange => !!billToChange\r\n );\r\n\r\n return _.reduce(\r\n accountsBillToChange,\r\n (counts, { InsertionOrder }) => {\r\n if (!InsertionOrder) {\r\n return counts;\r\n }\r\n\r\n switch (InsertionOrder.ioStatus) {\r\n case Constants.InsertionOrderStatus.PendingBillToPartyChangeAndUserReview:\r\n return { ...counts, pending: counts.pending + 1 };\r\n\r\n case Constants.InsertionOrderStatus.PendingBillToPartyChange:\r\n return { ...counts, approved: counts.approved + 1 };\r\n\r\n case Constants.InsertionOrderStatus.Declined:\r\n return { ...counts, declined: counts.declined + 1 };\r\n\r\n default:\r\n return counts;\r\n }\r\n },\r\n { approved: 0, declined: 0, pending: 0 }\r\n );\r\n },\r\n [accounts]\r\n );\r\n\r\n const navigateToIOApprovalPage = useCallback(\r\n /* istanbul ignore next */\r\n () => {\r\n window.location.href = preApprovalIOPageUrl;\r\n },\r\n [preApprovalIOPageUrl]\r\n );\r\n\r\n const renderCountsRow = (locKey, count, icon) => (\r\n \r\n {\r\n i18n.getString(locKey, { count })\r\n }\r\n\r\n {icon}\r\n \r\n );\r\n\r\n const approvedLabel = ioStatusCounts.approved > 0 ? (\r\n renderCountsRow(LocStrings.InsertionOrdersApproved, ioStatusCounts.approved, )\r\n ) : null;\r\n\r\n const declinedLabel = ioStatusCounts.declined > 0 ? (\r\n renderCountsRow(LocStrings.InsertionOrdersDeclined, ioStatusCounts.declined, )\r\n ) : null;\r\n\r\n const pendingLabel = ioStatusCounts.pending > 0 ? (\r\n renderCountsRow(LocStrings.InsertionOrdersPending, ioStatusCounts.pending, )\r\n ) : null;\r\n\r\n if (!approvedLabel && !pendingLabel && !declinedLabel) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n\r\n
    \r\n {approvedLabel}\r\n {declinedLabel}\r\n {pendingLabel}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\n\r\nInsertionOrdersSummary.propTypes = {\r\n i18n: I18nPropTypes.isRequired,\r\n sourceCustomer: CustomerPropType.isRequired,\r\n currentUser: UserPropType.isRequired,\r\n clientCenterUIAPI: PropTypes.string.isRequired,\r\n reparentingId: PropTypes.number.isRequired,\r\n accounts: PropTypes.arrayOf(PropTypes.shape({\r\n BillToChange: PropTypes.object,\r\n })).isRequired,\r\n};\r\n\r\nexport const ARWInsertionOrdersSummary = withI18nConsumer(InsertionOrdersSummary);\r\n","import React, { useState, useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport URI from 'urijs';\r\n\r\nimport { getRoutePathById, allSiteMap } from '@bingads-webui-react/with-site-map';\r\nimport { FormGroup, Label } from '@bingads-webui-react/primitive';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { I18nPropTypes, CustomerPropType, UserPropType, UETTagsPropTypes } from '@bingads-webui-campaign-react/account-reparenting-props';\r\nimport { TransferSummaryLocStrings as LocStrings } from '@bingads-webui-campaign-react/account-reparenting-localization';\r\nimport { stringContains } from '@bingads-webui-campaign-react/account-reparenting-utils';\r\nimport { ARWEntityPopover } from '@bingads-webui-campaign-react/account-reparenting-popover';\r\n\r\nimport { ButtonOrStatic } from './button-or-static';\r\nimport { WarningIcon, OkIcon } from './icons';\r\n\r\nconst matchSearchAccount = (account, srcText) =>\r\n _.isEmpty(srcText) ||\r\n stringContains(account.Name.toLowerCase(), srcText) ||\r\n stringContains(account.Number.toLowerCase(), srcText) ||\r\n stringContains(account.Id.toString().toLowerCase(), srcText);\r\n\r\nconst matchSearchTag = (tag, srcText) =>\r\n _.isEmpty(srcText) ||\r\n stringContains(tag.Name.toLowerCase(), srcText) ||\r\n stringContains(tag.Id.toString().toLowerCase(), srcText);\r\n\r\nconst UETTagsSummary = ({\r\n i18n,\r\n currentUser,\r\n sourceCustomer,\r\n uetTags,\r\n}) => {\r\n const [isUETPanelDisplayed, setIsUETPanelDisplayed] = useState(false);\r\n const [isAccountPanelDisplayed, setIsAccountPanelDisplayed] = useState(false);\r\n const showUETPanel = useCallback(() => {\r\n setIsUETPanelDisplayed(true);\r\n }, [setIsUETPanelDisplayed]);\r\n const hideUETPanel = useCallback(() => {\r\n setIsUETPanelDisplayed(false);\r\n }, [setIsUETPanelDisplayed]);\r\n\r\n const showAccountsPanel = useCallback(() => {\r\n setIsAccountPanelDisplayed(true);\r\n }, [setIsAccountPanelDisplayed]);\r\n const hideAccountsPanel = useCallback(() => {\r\n setIsAccountPanelDisplayed(false);\r\n }, [setIsAccountPanelDisplayed]);\r\n\r\n const transferTags = _.filter(uetTags, tag => tag.Move);\r\n const loseAccessAccounts = _.map(_.uniq(_.reduce(\r\n uetTags, (memo, tag) => [\r\n ...memo,\r\n ...(tag.Move ? tag.TagUsedByInfosImpactedByTransfer : tag.TagUsedByInfosImpactedByKeep),\r\n ],\r\n []\r\n ), false, accounts => accounts.Account.Id), obj => obj.Account);\r\n\r\n\r\n const buildCampaignsUrl = useCallback(({ Id }) =>\r\n new URI(`${window.location.origin}${getRoutePathById(allSiteMap, 'campaigns')}`)\r\n .search({ uid: currentUser.Id, cid: sourceCustomer.Id, aid: Id })\r\n // TODO not sourceCustomer for cid-cid link\r\n .href(), [currentUser, sourceCustomer]);\r\n\r\n const buildUETUrl = useCallback(({ Id }) =>\r\n new URI(`${window.location.origin}${getRoutePathById(allSiteMap, 'uet-tag')}`)\r\n .search({\r\n uid: currentUser.Id,\r\n cid: sourceCustomer.Id,\r\n filterExpressions: JSON.stringify([{\r\n SelectedColumn: 'Id',\r\n SelectedOperator: 'Equal',\r\n Values: [Id],\r\n }]),\r\n })\r\n .href(), [currentUser, sourceCustomer]);\r\n const uets = _.map(transferTags, item => _.extend({}, item, {\r\n Url: buildUETUrl(item),\r\n }));\r\n const accounts = _.map(loseAccessAccounts, item => _.extend({}, item, {\r\n Url: buildCampaignsUrl(item),\r\n }));\r\n\r\n return (\r\n \r\n \r\n
    \r\n
    \r\n \r\n {\r\n transferTags.length !== 1 ?\r\n i18n.getString(LocStrings.UETTagsTransfered, { count: transferTags.length }) :\r\n i18n.getString(LocStrings.UETTagTransfered)\r\n }\r\n \r\n \r\n \r\n {\r\n loseAccessAccounts.length !== 1 ?\r\n i18n.getString(LocStrings.AccountsLoseAccess, {\r\n count: loseAccessAccounts.length,\r\n }) :\r\n i18n.getString(LocStrings.AccountLoseAccess)\r\n }\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nUETTagsSummary.propTypes = {\r\n i18n: I18nPropTypes.isRequired,\r\n sourceCustomer: CustomerPropType.isRequired,\r\n currentUser: UserPropType.isRequired,\r\n uetTags: PropTypes.arrayOf(UETTagsPropTypes).isRequired,\r\n};\r\n\r\nexport const ARWUETTagsSummary = withI18nConsumer(UETTagsSummary);\r\n","import React, { useState, useCallback } from 'react';\r\nimport classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport URI from 'urijs';\r\n\r\nimport { downloadifyBlob } from '@bingads-webui/download-service';\r\nimport { FormGroup, Label, NavItem, Glyphicon, Button } from '@bingads-webui-react/primitive';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { Constants } from '@bingads-webui-clientcenter/entity-utils';\r\nimport {\r\n I18nPropTypes,\r\n BasicAccountPropType,\r\n CustomerPropType,\r\n UserPropType,\r\n NewBillToPropType,\r\n UETTagsPropTypes,\r\n} from '@bingads-webui-campaign-react/account-reparenting-props';\r\nimport { TransferSummaryLocStrings as LocStrings } from '@bingads-webui-campaign-react/account-reparenting-localization';\r\nimport { useUETTagActions } from '@bingads-webui-campaign-react/account-reparenting-actions';\r\nimport { useARWContextPermissions } from '@bingads-webui-campaign-react/account-reparenting-context-provider';\r\n\r\nimport { ARWAccountsPopover } from './accounts-popover';\r\nimport { ARWAccountLinksSummary } from './accountlinks-summary';\r\nimport { ARWAccountBillingSummary } from './accountbilling-summary';\r\nimport { ARWAccountPaymentSummary } from './account-payment-summary';\r\nimport { ARWInsertionOrdersSummary } from './insertion-orders-summary';\r\nimport { ARWUETTagsSummary } from './uet-tags-summary';\r\nimport { ButtonOrStatic } from './button-or-static';\r\n\r\nconst RequestSummaryPane = ({\r\n i18n,\r\n currentUser,\r\n sourceCustomer,\r\n targetCustomer,\r\n accounts,\r\n newBillTo,\r\n onAccountDelete,\r\n reparentingId,\r\n clientCenterUIAPI,\r\n paymentOptionId,\r\n uetTags,\r\n showSummaryPaneLinkSettings,\r\n showSummaryPaneBillingSetting,\r\n}) => {\r\n const [isAccountsListPopoverDisplayed, setIsAccountsListPopoverDisplayed] = useState(false);\r\n const showAccountsListPopover = useCallback(() => {\r\n setIsAccountsListPopoverDisplayed(true);\r\n }, [setIsAccountsListPopoverDisplayed]);\r\n const hideAccountsListPopover = useCallback(() => {\r\n setIsAccountsListPopoverDisplayed(false);\r\n }, [setIsAccountsListPopoverDisplayed]);\r\n const uetActions = useUETTagActions();\r\n const isUETEnabled = useARWContextPermissions().IsAccountReparentingUETEnabled;\r\n const downloadSummary = useCallback(() => {\r\n uetActions.download().then((response) => {\r\n downloadifyBlob(response, 'AccountTransferSummary.xlsx');\r\n }).catch((e) => {\r\n throw e;\r\n });\r\n }, [uetActions]);\r\n\r\n const buildTransferSummaryDownloadUrl = useCallback(() =>\r\n new URI(`${clientCenterUIAPI}api/reparenting/RenderAccountTransferSummaryExcel`)\r\n .search({\r\n id: reparentingId,\r\n uid: currentUser.Id,\r\n cid: sourceCustomer.Id,\r\n sourceCid: sourceCustomer.Id,\r\n })\r\n .href(), [currentUser, clientCenterUIAPI, sourceCustomer, reparentingId]);\r\n\r\n return (\r\n
    \r\n
    \r\n {i18n.getString(LocStrings.SummaryPaneHeader)}\r\n
    \r\n { sourceCustomer && sourceCustomer.Name && (\r\n \r\n \r\n \r\n \r\n )}\r\n { accounts && accounts.length && (\r\n \r\n \r\n \r\n {i18n.getString(LocStrings.NumberOfAccounts, { count: accounts.length })}\r\n \r\n \r\n \r\n )}\r\n { targetCustomer && targetCustomer.Name && (\r\n \r\n \r\n \r\n \r\n )}\r\n { accounts && showSummaryPaneLinkSettings && (\r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n )}\r\n { accounts && showSummaryPaneBillingSetting && (\r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n )}\r\n { newBillTo && newBillTo.Customer && _.isNumber(paymentOptionId) &&\r\n \r\n }\r\n {\r\n sourceCustomer &&\r\n newBillTo &&\r\n newBillTo.Customer &&\r\n paymentOptionId === Constants.PaymentOptionId.Invoice &&\r\n \r\n }\r\n {\r\n uetTags && uetTags.saved &&\r\n \r\n }\r\n {\r\n isUETEnabled ?\r\n \r\n \r\n {i18n.getString(LocStrings.DownloadSummaryLinkLabel)}\r\n :\r\n \r\n \r\n {i18n.getString(LocStrings.DownloadSummaryLinkLabel)}\r\n \r\n }\r\n
    \r\n );\r\n};\r\n\r\nRequestSummaryPane.propTypes = {\r\n i18n: I18nPropTypes.isRequired,\r\n sourceCustomer: CustomerPropType.isRequired,\r\n targetCustomer: CustomerPropType,\r\n currentUser: UserPropType.isRequired,\r\n accounts: PropTypes.arrayOf(BasicAccountPropType),\r\n newBillTo: NewBillToPropType,\r\n onAccountDelete: PropTypes.func,\r\n reparentingId: PropTypes.number.isRequired,\r\n clientCenterUIAPI: PropTypes.string.isRequired,\r\n paymentOptionId: PropTypes.number,\r\n uetTags: PropTypes.arrayOf(UETTagsPropTypes),\r\n showSummaryPaneBillingSetting: PropTypes.bool,\r\n showSummaryPaneLinkSettings: PropTypes.bool,\r\n};\r\n\r\nRequestSummaryPane.defaultProps = {\r\n onAccountDelete: _.noop,\r\n targetCustomer: null,\r\n accounts: null,\r\n newBillTo: null,\r\n paymentOptionId: null,\r\n uetTags: [],\r\n showSummaryPaneBillingSetting: false,\r\n showSummaryPaneLinkSettings: false,\r\n};\r\n\r\nexport const TransferRequestSummary = withI18nConsumer(RequestSummaryPane);\r\n","import React from 'react';\r\n\r\nexport const UetSetupWizardContext = React.createContext();\r\n","export const STEP_PATHS = {\r\n uetTag: { id: 'uet-tag' },\r\n tagSetup: {\r\n id: 'setupTag',\r\n noTag: {\r\n id: 'setupTag.noTag',\r\n selectTagMethod: { id: 'setupTag.noTag.selectTagMethod' },\r\n installTag: { id: 'setupTag.noTag.installTag' },\r\n emailTag: { id: 'setupTag.noTag.emailTag' },\r\n platformTag: { id: 'setupTag.noTag.platformTag' },\r\n gtmTag: { id: 'setupTag.noTag.gtmTag' },\r\n platformTagInstructions: { id: 'setupTag.noTag.platformTagInstructions' },\r\n },\r\n addEventTag: { id: 'setupTag.addEventTag' },\r\n },\r\n endFlow: {\r\n id: 'endFlow',\r\n },\r\n};\r\n","import _ from 'underscore';\r\nimport { STEP_PATHS } from './step-paths';\r\n\r\nexport const defaultState = {\r\n tagContext: {},\r\n GTMContext: {\r\n IsGTMCloningChecked: true,\r\n AllowTagCloning: true,\r\n },\r\n currentStep: STEP_PATHS.uetTag.id,\r\n steps: [],\r\n loggingSteps: [],\r\n};\r\n\r\nexport const WIZARD_ACTIONS = {\r\n WIZARD_NAVIGATE_NEXT: 'WIZARD_NAVIGATE_NEXT',\r\n WIZARD_NAVIGATE_BACK: 'WIZARD_NAVIGATE_BACK',\r\n SAVE_TAG_AND_NEXT: 'SAVE_TAG_AND_NEXT',\r\n SELECT_TAG_SETUP_METHOD: 'SELECT_TAG_SETUP_METHOD',\r\n GO_TO_EMAIL_DEVELOPER_STEP: 'GO_TO_EMAIL_DEVELOPER_STEP',\r\n NAVIGATE_WITH_PLATFORM: 'NAVIGATE_WITH_PLATFORM',\r\n WIZARD_UPDATE_GTM_SESSION_CONTEXT: 'WIZARD_UPDATE_GTM_SESSION_CONTEXT',\r\n};\r\n\r\nconst basicSteps = [\r\n STEP_PATHS.uetTag.id,\r\n STEP_PATHS.tagSetup.noTag.selectTagMethod.id,\r\n STEP_PATHS.endFlow.id,\r\n];\r\n\r\nfunction goToNextStep(state, currentStep) {\r\n const rootStep = currentStep.split('.').shift();\r\n const currentStepIndex = _.findIndex(basicSteps, step => step.split('.').shift() === rootStep);\r\n\r\n return {\r\n ...state,\r\n currentStep: basicSteps[currentStepIndex + 1],\r\n steps: [...state.steps, currentStep],\r\n loggingSteps: [...state.steps, currentStep],\r\n };\r\n}\r\n\r\nfunction goToPreviousStep(state) {\r\n return {\r\n ...state,\r\n steps: state.steps.slice(0, -1),\r\n currentStep: state.steps[state.steps.length - 1],\r\n loggingSteps: [...state.steps, state.currentStep],\r\n };\r\n}\r\n\r\nfunction goToStep(state, currentStep, nextStep) {\r\n return {\r\n ...state,\r\n currentStep: nextStep,\r\n steps: [...state.steps, currentStep],\r\n loggingSteps: [...state.steps, currentStep],\r\n };\r\n}\r\n\r\nexport const uetSetupWizardReducer = (state, action) => {\r\n switch (action.type) {\r\n case WIZARD_ACTIONS.WIZARD_NAVIGATE_NEXT:\r\n return goToNextStep({ ...state, ...action.data }, state.currentStep);\r\n case WIZARD_ACTIONS.WIZARD_NAVIGATE_BACK:\r\n return goToPreviousStep(state);\r\n case (WIZARD_ACTIONS.SAVE_TAG_AND_NEXT): {\r\n const updatedState = {\r\n ...state,\r\n tagContext: { ...action.data },\r\n isSaveDone: true,\r\n };\r\n return goToNextStep(updatedState, state.currentStep);\r\n }\r\n case WIZARD_ACTIONS.SELECT_TAG_SETUP_METHOD:\r\n return goToStep({\r\n ...state,\r\n ...action.data,\r\n }, state.currentStep, STEP_PATHS.tagSetup.noTag[action.data.selectedTagSetupMethod].id);\r\n case WIZARD_ACTIONS.GO_TO_EMAIL_DEVELOPER_STEP:\r\n return goToStep(state, state.currentStep, STEP_PATHS.tagSetup.noTag.emailTag.id);\r\n case WIZARD_ACTIONS.NAVIGATE_WITH_PLATFORM:\r\n return goToStep({\r\n ...state,\r\n ...action.data,\r\n }, state.currentStep, STEP_PATHS.tagSetup.noTag.platformTagInstructions.id);\r\n case WIZARD_ACTIONS.WIZARD_UPDATE_GTM_SESSION_CONTEXT: {\r\n return {\r\n ...state,\r\n GTMContext: { ...action.GTMContext },\r\n };\r\n }\r\n default:\r\n throw new Error('invalid goal creation wizard action');\r\n }\r\n};\r\n","const activities = [\r\n {\r\n name: 'uet-tag',\r\n value: 'uet-tag',\r\n },\r\n {\r\n name: 'setupTag',\r\n value: 'setupTag',\r\n },\r\n {\r\n name: 'setupTag.selectTag',\r\n value: 'setupTag.selectTag',\r\n },\r\n {\r\n name: 'setupTag.noTag',\r\n value: 'setupTag.noTag',\r\n },\r\n {\r\n name: 'setupTag.noTag.selectTagMethod',\r\n value: 'setupTag.noTag.selectTagMethod',\r\n },\r\n {\r\n name: 'setupTag.noTag.installTag',\r\n value: 'setupTag.noTag.installTag',\r\n },\r\n {\r\n name: 'setupTag.noTag.emailTag',\r\n value: 'setupTag.noTag.emailTag',\r\n },\r\n {\r\n name: 'setupTag.noTag.platformTag',\r\n value: 'setupTag.noTag.platformTag',\r\n },\r\n {\r\n name: 'setupTag.noTag.platformTagInstructions',\r\n value: 'setupTag.noTag.platformTagInstructions',\r\n },\r\n {\r\n name: 'setupTag.noTag.gtmTag',\r\n value: 'setupTag.noTag.gtmTag',\r\n },\r\n {\r\n name: 'endFlow',\r\n value: 'endFlow',\r\n },\r\n];\r\n\r\nexport const instrumentationSchema = {\r\n scenario: [\r\n // All activities must be under this scenario so that we can later use SceId to string together a session.\r\n {\r\n name: 'uetSetupWizard',\r\n value: 'uetSetupWizard',\r\n activity: activities,\r\n },\r\n ],\r\n};\r\n","import _ from 'underscore';\r\n\r\nexport const markTime = () => ({\r\n time: performance.now(),\r\n activeTime: _.result(performance, 'activeTime', NaN),\r\n});\r\n\r\nexport const startActivity = (activity) => {\r\n const { time, activeTime } = markTime();\r\n // eslint-disable-next-line no-param-reassign\r\n activity.properties = {\r\n startTime: time,\r\n activeStartTime: activeTime,\r\n };\r\n activity.trace(`startTime: ${time}, activeStartTime: ${activeTime}`);\r\n};\r\n\r\nexport const endActivity = (activity) => {\r\n const { time, activeTime } = markTime();\r\n const { activeStartTime, startTime } = activity.properties || {};\r\n const activeDuration = activeStartTime ? activeTime - activeStartTime : 0;\r\n const duration = startTime ? time - startTime : 0;\r\n activity.trace(`endTime: ${time}, activeEndTime: ${activeTime}, activeDuration: ${activeDuration}, duration: ${duration}`);\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport React from 'react';\r\nimport { PrimaryButton, DefaultButton, Dialog, DialogType, DialogFooter } from '@fluentui/react';\r\n\r\nexport const DialogTexts = {\r\n Title: _TL_('Disabling Microsoft Clarity may impact your custom-event conversions'),\r\n Body: _TL_('Disabling Microsoft Clarity for this UET tag will deactivate any associated conversion goals that were setup using the \"Code-free with Clarity\" method. You will stop receiving conversions data for those goals.'),\r\n Primary: _TL_('Disable anyway'),\r\n Secondary: _TL_('Cancel'),\r\n};\r\n\r\nfunction DialogContent(props) {\r\n const {\r\n primaryButtonCallback,\r\n secondaryButtonCallback,\r\n i18n,\r\n } = props;\r\n\r\n const titleText = i18n.getString(DialogTexts.Title);\r\n const bodyText = i18n.getString(DialogTexts.Body);\r\n const primaryText = i18n.getString(DialogTexts.Primary);\r\n const secondaryText = i18n.getString(DialogTexts.Secondary);\r\n\r\n return (\r\n
    \r\n
    \r\n

    {titleText}

    \r\n
    \r\n
    \r\n {bodyText}\r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n}\r\n\r\nDialogContent.defaultProps = {\r\n primaryButtonCallback: _.noop,\r\n secondaryButtonCallback: _.noop,\r\n};\r\nDialogContent.propTypes = {\r\n primaryButtonCallback: PropTypes.func,\r\n secondaryButtonCallback: PropTypes.func,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n};\r\n\r\n// a blocking non-draggable fabric dialog to confirm user choice for not including conversion dialog\r\nexport function ClarityUncheckWarningDialog(props) {\r\n const {\r\n i18n,\r\n shouldShowDialog,\r\n checkIncludeCallback,\r\n uncheckIncludeCallback,\r\n } = props;\r\n\r\n return (\r\n