{"version":3,"file":"static/js/application.async.non-landing~ef272fa2.5063ffd7.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 }) {\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 });\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}) {\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 });\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,\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