{"version":3,"file":"static/js/application.initial.react~4d4fb437.300f5160.js","mappings":"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","sources":["../../../node_modules/@bingads-webui-campaign-react/router/src/index.js","../../../node_modules/@bingads-webui-campaign-react/scope-panel/src/campaign-scope-panel.js","../../../node_modules/@bingads-webui-campaign-react/scope-panel/src/styles.js","../../../node_modules/@bingads-webui-campaign-react/scope-panel/src/scope-panel.js","../../../node_modules/@bingads-webui-campaign-react/scope-selector/src/config.js","../../../node_modules/@bingads-webui-campaign-react/scope-selector/src/with-campaign-data.js","../../../node_modules/@bingads-webui-campaign-react/scope-selector/src/helper/scope-helper.js","../../../node_modules/@bingads-webui-campaign-react/scope-selector/src/with-campaign-filter.js","../../../node_modules/@bingads-webui-campaign-react/scope-selector/src/media/linkedin-icon.js","../../../node_modules/@bingads-webui-campaign-react/scope-selector/src/filters/filter-options.js","../../../node_modules/@bingads-webui-campaign-react/scope-selector/src/filters/adgroup-status-filter.js","../../../node_modules/@bingads-webui-campaign-react/scope-selector/src/filters/campaign-status-filter.js","../../../node_modules/@bingads-webui-campaign-react/scope-selector/src/filters/campaign-type-filter.js","../../../node_modules/@bingads-webui-campaign-react/scope-selector/src/filters/campaign-filters.js","../../../node_modules/@bingads-webui-campaign-react/scope-selector/src/filters/helper.js","../../../node_modules/@bingads-webui-campaign-react/server-context/src/server-context-props.js","../../../node_modules/@bingads-webui-campaign-react/server-context/src/server-context.js","../../../node_modules/@bingads-webui-campaign-react/server-context/src/convert-legacy-context.js","../../../node_modules/@bingads-webui-campaign-react/server-context/src/use-update-server-context.js","../../../node_modules/@bingads-webui-campaign-react/shared-image-preview-styles/src/crud-ad-image-preview-styles.js","../../../node_modules/@bingads-webui-campaign-react/shared-image-preview-styles/src/extension-preview-styles.js","../../../node_modules/@bingads-webui-campaign-react/shared-image-preview-styles/src/mma-preview-styles.js","../../../node_modules/@bingads-webui-campaign-react/shared-image-preview-styles/src/msan-preview-styles.js","../../../node_modules/@bingads-webui-campaign-react/sharing-scope-editor/src/tree-operations.js","../../../node_modules/@bingads-webui-campaign-react/sharing-scope-editor/src/shapes.js","../../../node_modules/@bingads-webui-campaign-react/sharing-scope-editor/src/scope-editor-source-panel.js","../../../node_modules/@bingads-webui-campaign-react/sharing-scope-editor/src/scope-editor-target-panel.js","../../../node_modules/@bingads-webui-campaign-react/sharing-scope-editor/src/index.js","../../../node_modules/@bingads-webui-campaign-react/shared-library-scopes/src/util.js","../../../node_modules/@bingads-webui-campaign-react/shared-library-scopes/src/account-list-popover.js","../../../node_modules/@bingads-webui-campaign-react/shared-library-scopes/src/audience-scope-editor.js","../../../node_modules/@bingads-webui-campaign-react/shared-library-scopes/src/audience-sharing-view.js","../../../node_modules/@bingads-webui-campaign-react/shared-library-scopes/src/uet-tag-scope-editor.js","../../../node_modules/@bingads-webui-campaign-react/shared-library-scopes/src/uet-tag-manage-scope-view.js","../../../node_modules/@bingads-webui-campaign-react/shell-ui-common/src/enums/constants.js","../../../node_modules/@bingads-webui-campaign-react/shell-ui-common/src/mainmenu-placeholder-with-responsive-size.js","../../../node_modules/@bingads-webui-campaign-react/shell-ui-common/src/global-menu-wrapper-placeholder.js","../../../node_modules/@bingads-webui-campaign-react/shell-ui-common/src/new-global-menu-wrapper-placeholder.js","../../../node_modules/@bingads-webui-campaign-react/shell-ui-common/src/primary-navigation-placeholder.js","../../../node_modules/@bingads-webui-campaign-react/shell-ui-common/src/secondary-navigation-placeholder.js","../../../node_modules/@bingads-webui-campaign-react/shell-ui-common/src/scope-panel-placeholder.js","../../../node_modules/@bingads-webui-campaign-react/shell-ui-common/src/entity-converter/campaign-converter.js","../../../node_modules/@bingads-webui-campaign-react/shell-ui-common/src/entity-converter/adgroup-converter.js","../../../node_modules/@bingads-webui-campaign-react/shell-ui-common/src/spinner/spinner-with-label.js","../../../node_modules/@bingads-webui-campaign-react/shell-ui-common/src/spinner/spinner-with-label-styles.js","../../../node_modules/@bingads-webui-campaign-react/shell-ui-common/src/scope-selector-container/level-selector-items.js","../../../node_modules/@bingads-webui-campaign-react/shell-ui-common/src/enums/shell-tips.js","../../../node_modules/@bingads-webui-campaign-react/smart-campaigns-popup/src/smart-campaigns-popup.js","../../../node_modules/@bingads-webui-campaign-react/smart-campaigns-popup/src/styles.js","../../../node_modules/@bingads-webui-campaign-react/smart-i18n/src/build-legacy-i18n.js","../../../node_modules/@bingads-webui-campaign-react/smart-i18n/src/i18n/legacy-keys.js","../../../node_modules/@bingads-webui-campaign-react/sub-page-menu-container/src/default-sub-page-menu-loader.js","../../../node_modules/@bingads-webui-campaign-react/sub-page-menu-container/src/experiment-sub-page-menu-loader.js","../../../node_modules/@bingads-webui-campaign-react/sub-page-menu-container/src/hotel-center-sub-page-menu-loader.js","../../../node_modules/@bingads-webui-campaign-react/sub-page-menu-container/src/hotel-center-v2-sub-page-menu-loader.js","../../../node_modules/@bingads-webui-campaign-react/sub-page-menu-container/src/mmc-sub-page-menu-loader.js","../../../node_modules/@bingads-webui-campaign-react/sub-page-menu-container/src/recommendation-sub-page-menu-loader.js","../../../node_modules/@bingads-webui-campaign-react/sub-page-menu-container/src/uet-tag-sub-page-menu.js","../../../node_modules/@bingads-webui-campaign-react/sub-page-menu-container/src/budget-center-sub-page-menu-loader.js","../../../node_modules/@bingads-webui-campaign-react/sub-page-menu-container/src/sub-page-menu-container.js","../../../node_modules/@bingads-webui-campaign-react/sub-page-menu-container/src/budget-center-sub-page-menu.js","../../../node_modules/@bingads-webui-campaign-react/sub-page-menu-container/src/styles/budget-center-sub-page-style.js","../../../node_modules/@bingads-webui-campaign-react/sub-page-menu-container/src/experiment-sub-page-menu.js","../../../node_modules/@bingads-webui-campaign-react/sub-page-menu-container/src/recommendation-sub-page-menu.js","../../../node_modules/@bingads-webui-campaign-react/sub-page-menu/src/components/disabled-date-picker.js","../../../node_modules/@bingads-webui-campaign-react/sub-page-menu/src/styles/tab-bar-styles.js","../../../node_modules/@bingads-webui-campaign-react/sub-page-menu/src/components/tab-bar.js","../../../node_modules/@bingads-webui-campaign-react/sub-page-menu/src/components/date-picker.js","../../../node_modules/@bingads-webui-campaign-react/sub-page-menu/src/components/history-button.js","../../../node_modules/@bingads-webui-campaign-react/sub-page-menu/src/styles/history-button-styles.js","../../../node_modules/@bingads-webui-campaign-react/sub-page-menu/src/components/auto-apply-button.js","../../../node_modules/@bingads-webui-campaign-react/sub-page-menu/src/styles/auto-apply-button-styles.js","../../../node_modules/@bingads-webui-campaign-react/sub-page-menu/src/sub-page-menu.js","../../../node_modules/@bingads-webui-campaign-react/sub-page-menu/src/common/router-helper.js","../../../node_modules/@bingads-webui-campaign-react/sub-page-menu/src/styles/sub-page-menu-styles.js","../../../node_modules/@bingads-webui-campaign-react/sub-tab-container/src/default-sub-tab-loader.js","../../../node_modules/@bingads-webui-campaign-react/sub-tab-container/src/utils.js","../../../node_modules/@bingads-webui-campaign-react/sub-tab-container/src/sub-tab-container.js","../../../node_modules/@bingads-webui-campaign-react/with-last-url/src/smart-last-url.js","../../../node_modules/@bingads-webui-campaign-react/with-last-url/src/with-last-url.js","../../../node_modules/@bingads-webui-campaign-react/scope-bar/src/styles.js","../../../node_modules/@bingads-webui-campaign-react/scope-bar/src/campaign-status-menu-button/status-icon.js","../../../node_modules/@bingads-webui-campaign-react/scope-bar/src/campaign-status-menu-button/campaign-status-menu-button.js","../../../node_modules/@bingads-webui-campaign-react/scope-bar/src/teaching-bubble.js","../../../node_modules/@bingads-webui-campaign-react/scope-bar/src/campaign-scope-bar.js","../../../node_modules/@bingads-webui-campaign-react/scope-bar/src/scope-bar-loader.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar-container/src/campaign-summary-bar-loader.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar-container/src/shared-budget-summary-bar-loader.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar-container/src/accounts-summary-bar-loader.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar-container/src/simple-summary-bar-loader.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar-container/src/general-summary-bar-loader.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar-container/src/site-exclusion-list-linked-page-loader.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar-container/src/negative-keywords-list-details-summary-bar-loader.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar-container/src/portfolio-details-summary-bar-loader.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar-container/src/merchant-center-summary-bar-loader.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar-container/src/query-insights-summary-bar-loader.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar-container/src/web-insights-editor.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar-container/src/uet-dashboard-summary-bar-loader.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar-container/styles/summary-bar-style.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar-container/src/asset-library-summary-bar-loader.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar-container/src/ad-studio-summary-bar-loader.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar-container/src/pmax-asset-details-summary-bar-loader.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar-container/src/budget-center-summary-bar-loader.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar-container/src/hotel-center-v2-summary-bar-loader.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar-container/src/ad-editor-summary-bar-loader.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar-container/src/general-summary-bar-configs/bulk-edit-detail.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar-container/src/general-summary-bar-configs/rule-detail.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar-container/src/general-summary-bar-configs/scripts-detail.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar-container/src/general-summary-bar-configs/bulk-uploads-build-spreadsheet.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar-container/src/brand-lists-details-page-loader.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar-container/src/summary-bar-container.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/ad-summary-bar.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/ad-group-summary-bar.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/campaign-summary-bar.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/experiment-ad-group-summary-bar.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/experiment-campaign-summary-bar.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/summary-bar.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/summary-bar-with-scope.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/components/simple-breadcrumb.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/accounts-summary-bar.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/simple-summary-bar.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/shared-budget-summary-bar.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/helpers/merchant-center-config.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/merchant-center-summary-bar.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/query-insights-summary-bar.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/global-menu-entity-bar.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/asset-library-summary-bar.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/styles/asset-library-summary-bar-style.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/ad-studio-summary-bar.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/styles/ad-studio-summary-bar-style.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/pmax-asset-details-summary-bar.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/budget-center-summary-bar.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/components/summary-bar-breadcrumb.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/components/editable-item.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/components/summary-bar-factory.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/components/overflow-entity-item.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/components/summary-bar-items-resize-group.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/components/overflow-sub-menu.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/components/summary-bar-items.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/helpers/entity-converter.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/helpers/campaign-types.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/helpers/router-helper.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/helpers/summary-bar-scopes.js","../../../node_modules/@bingads-webui-campaign-react/status-dropdown/src/styles.js","../../../node_modules/@bingads-webui-campaign-react/status-dropdown/src/status-dropdown.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/helpers/settings-item.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/helpers/criteria-items-content.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/helpers/repository-consumer.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/editors/campaign-budget/budget-not-editable.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/editors/campaign-budget/budget-landscape-legacy-strings.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/editors/campaign-budget/budget-landscape-table.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/editors/campaign-budget/budget-landscape.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/editors/base-editor.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/editors/budget-base-component.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/editors/campaign-budget/inline-budget-editor.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/editors/shared-budget-editor.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/editors/campaign-budget/shared-budget-editor.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/editors/campaign-budget/index.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/editors/adgroup-bid-editor.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/editors/experiment-campaign/base-date-editor.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/editors/experiment-campaign/start-date.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/editors/experiment-campaign/end-date.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/components/optimization-score-item.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/components/navigation-item.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/helpers/entity-items-config.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/helpers/repository-error-handler.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/helpers/server-error-mapping.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/helpers/breadcrumb-item-converter.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/helpers/shared-budget-consumer.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/repository/campaign-repository.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/repository/ad-group-repository.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/repository/experiment-repository.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/repository/shared-budget-repository.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/repository/campaign-criterion-repository.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/repository/ad-group-criterion-repository.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/repository/campaign-audience-repository.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/repository/ad-group-audience-repository.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/repository/bulk-update-repository.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/repository/patch-experiment-repository.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/repository/optimization-score-repository.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/styles/base-editor-style.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/styles/summary-bar-style.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/styles/budget-editor-style.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/styles/bid-editor-style.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/styles/date-editor-style.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/styles/simple-summary-bar-style.js","../../../node_modules/@bingads-webui-campaign-react/summary-bar/src/styles/budget-center-summary-bar-style.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/survey-status.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/survey-preference-service.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/base-survey.js","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/survey.types.ts","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/survey-construction/validator/validator.ts","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/survey-construction/configurator/question.tsx","../../../node_modules/@bingads-webui-campaign-react/survey-context/src/survey-context.ts","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/styles.ts","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/survey-construction/view/page/header.tsx","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/survey-construction/view/page/footer.tsx","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/survey-construction/view/page/page.tsx","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/survey-construction/view/question/common.tsx","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/survey-construction/view/question/option.tsx","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/utility.ts","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/survey-construction/view/question/title.tsx","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/survey-construction/view/question/single-selection.tsx","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/survey-construction/view/question/multiple-selection.tsx","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/survey-construction/view/question/rating.tsx","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/survey-construction/view/question/email.tsx","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/survey-construction/view/question/comment.tsx","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/survey-construction/validator/comment.ts","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/survey-construction/configurator/comment.tsx","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/survey-construction/validator/single-selection.ts","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/survey-construction/validator/email.ts","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/survey-construction/configurator/email.tsx","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/survey-construction/validator/multiple-selection.ts","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/survey-construction/configurator/multiple-selection.tsx","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/survey-construction/configurator/single-selection.tsx","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/survey-construction/configurator/rating.tsx","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/survey-construction/configurator/page.tsx","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/survey-construction/configurator/survey.tsx","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/survey-construction/view/survey.tsx","../../../node_modules/@bingads-webui-campaign-react/survey-factory-tools/src/survey-factory.tsx","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/webui-user-survey/factory-view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/webui-user-survey/styles.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/webui-user-survey/view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/webui-user-survey/index.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/copilot-asset-recommendation-satisfaction-survey/factory-view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/copilot-asset-recommendation-satisfaction-survey/view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/utils.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/copilot-asset-recommendation-satisfaction-survey/index.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/esc-webui-user-survey/factory-view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/esc-webui-user-survey/view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/esc-webui-user-survey/index.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/esc-webui-user-pause-campaign-survey/factory-view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/esc-webui-user-pause-campaign-survey/view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/esc-webui-user-pause-campaign-survey/index.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/esc-webui-campaign-feedback-survey/factory-view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/esc-webui-campaign-feedback-survey/view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/esc-webui-campaign-feedback-survey/index.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/esc-webui-automated-ad-deletion-survey/factory-view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/esc-webui-automated-ad-deletion-survey/view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/esc-webui-automated-ad-deletion-survey/index.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/adinsight-recommendation-survey/factory-view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/adinsight-recommendation-survey/index.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/adinsight-recommendation-mcc-survey/factory-view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/adinsight-recommendation-mcc-survey/index.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/esc-webui-user-cancel-signup-survey/factory-view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/esc-webui-user-cancel-signup-survey/view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/esc-webui-user-cancel-signup-survey/index.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/mcm-webui-opt-out-survey/factory-view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/mcm-webui-opt-out-survey/view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/mcm-webui-opt-out-survey/index.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/mcm-webui-mandatory-opt-out-survey/factory-view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/mcm-webui-mandatory-opt-out-survey/view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/mcm-webui-mandatory-opt-out-survey/index.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/asset-library-app-survey/factory-view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/asset-library-app-survey/view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/asset-library-app-survey/index.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/asset-library-picker-survey/factory-view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/asset-library-picker-survey/view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/asset-library-picker-survey/index.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/asset-library-aigc-survey/factory-view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/asset-library-aigc-survey/view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/asset-library-aigc-survey/index.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/reporting-webui-user-survey/factory-view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/reporting-webui-user-survey/view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/reporting-webui-user-survey/index.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/rsa-llm-overall-survey/factory-view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/rsa-llm-overall-survey/index.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/rsa-llm-most-wanted-survey/factory-view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/rsa-llm-most-wanted-survey/index.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/campaign-onboarding-survey/factory-view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/campaign-onboarding-survey/view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/campaign-onboarding-survey/index.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/transparent-image-annotation-survey/factory-view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/transparent-image-annotation-survey/view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/transparent-image-annotation-survey/index.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/budget-center-overall-satisfaction-survey/factory-view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/budget-center-overall-satisfaction-survey/view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/budget-center-overall-satisfaction-survey/index.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/constants.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/budget-center-one-time-user-survey/factory-view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/budget-center-one-time-user-survey/view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/budget-center-one-time-user-survey/index.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/ads-studio-app-survey/factory-view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/ads-studio-app-survey/view.js","../../../node_modules/@bingads-webui-campaign-react/survey-core/src/ads-studio-app-survey/index.js","../../../node_modules/@bingads-webui-campaign-react/survey-manager/src/survey-list.js","../../../node_modules/@bingads-webui-campaign-react/survey-data-service/src/survey-data-source.js","../../../node_modules/@bingads-webui-campaign-react/survey-data-service/src/survey-data-service.js","../../../node_modules/@bingads-webui-campaign-react/survey-manager/src/survey-container.js","../../../node_modules/@bingads-webui-campaign-react/survey-manager/src/util.js","../../../node_modules/@bingads-webui-campaign-react/survey-manager/src/survey-manager.js","../../../node_modules/@bingads-webui-campaign-react/survey-manager/src/setup.js","../../../node_modules/@bingads-webui-campaign-react/toolbar-container/src/with-toggle-chart.js","../../../node_modules/@bingads-webui-campaign-react/toolbar-container/src/label-style.js","../../../node_modules/@bingads-webui-campaign-react/toolbar-container/src/toolbar-container.js","../../../node_modules/@bingads-webui-campaign-react/toolbar-container/src/global-styles.js","../../../node_modules/@bingads-webui-campaign-react/tree-menu/src/styles/icon-class-name-map.js","../../../node_modules/@bingads-webui-campaign-react/tree-menu/src/utils/router-utility.js","../../../node_modules/@bingads-webui-campaign-react/tree-menu/src/utils/node-renderer.js","../../../node_modules/@bingads-webui-campaign-react/tree-menu/src/tree-menu.js","../../../node_modules/@bingads-webui-campaign-react/tree-menu/src/styles/tree-view-styles.js","../../../node_modules/@bingads-webui-campaign-react/update-date-range/src/update-date-range.js","../../../node_modules/@bingads-webui-campaign-react/use-current-scope-entity/src/convert-to-enum.js","../../../node_modules/@bingads-webui-campaign-react/use-current-scope-entity/src/use-current.js","../../../node_modules/@bingads-webui-campaign-react/use-current-scope-entity/src/with-current-expanded-scope.js","../../../node_modules/@bingads-webui-campaign-react/webview-context/src/schema-validation.js","../../../node_modules/@bingads-webui-campaign-react/webview-context/src/instrumentation-schema.js","../../../node_modules/@bingads-webui-campaign-react/webview-context/src/use-messaging-channel.js","../../../node_modules/@bingads-webui-campaign-react/webview-context/src/webview-context-provider.js","../../../node_modules/@bingads-webui-campaign-react/with-campaign-legacy/index.js","../../../node_modules/@bingads-webui-campaign-react/with-campaign-type/src/campaign-type-map.js","../../../node_modules/@bingads-webui-campaign-react/with-campaign-type/src/index.js","../../../node_modules/@bingads-webui-campaign-react/with-default-landing-page/src/with-default-landing-page.js","../../../node_modules/@bingads-webui-campaign-react/with-opportunity-id/src/with-opportunity-id.js","../../../node_modules/@bingads-webui-campaign-react/with-site-map/src/processors/processor-helpers.js","../../../node_modules/@bingads-webui-campaign-react/with-site-map/src/processors/campaign-type-processor.js","../../../node_modules/@bingads-webui-campaign-react/with-site-map/src/processors/campaign-id-processor.js","../../../node_modules/@bingads-webui-campaign-react/with-site-map/src/processors/smart-campaign-processor.js","../../../node_modules/@bingads-webui-campaign-react/with-site-map/src/processors/pmax-campaign-page-menu-processor.js","../../../node_modules/@bingads-webui-campaign-react/with-site-map/src/processors/pmax-campaign-store-processor.js","../../../node_modules/@bingads-webui-campaign-react/with-site-map/src/processors/smart-shopping-campaign-processor.js","../../../node_modules/@bingads-webui-campaign-react/with-site-map/src/processors/hotel-campaign-processor.js","../../../node_modules/@bingads-webui-campaign-react/with-site-map/src/processors/mixed-mode-adgroup-processor.js","../../../node_modules/@bingads-webui-campaign-react/with-site-map/src/processors/global-filter-processor.js","../../../node_modules/@bingads-webui-campaign-react/with-site-map/src/processors/import-center-mode-processor.js","../../../node_modules/@bingads-webui-campaign-react/with-site-map/src/processors/asset-report-ad-type-processor.js","../../../node_modules/@bingads-webui-campaign-react/with-site-map/src/processors/mmc-menu-processor.js","../../../node_modules/@bingads-webui-campaign-react/with-site-map/src/processors/copilot-region-restriction-processor.js","../../../node_modules/@bingads-webui-campaign-react/with-site-map/src/with-site-map.js","../../../node_modules/@bingads-webui-campaign-react/with-waterfall-filter-storage/src/with-waterfall-filter-storage.js","../../../node_modules/@bingads-webui-campaign-react/sdk-utils/src/utils.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card-const/src/index.ts","../../../node_modules/@bingads-webui-campaign-react/validated-form-cards/src/with-collapse-adapter.tsx","../../../node_modules/@bingads-webui-campaign-react/validated-form-cards/src/index.ts","../../../node_modules/@bingads-webui-campaign-react/validated-form-cards/src/with-help-button.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Switch as ReactSwitch, Redirect as ReactRedirect } from 'react-router';\r\nimport { Link as ReactLink, matchPath as reactMatchPath } from 'react-router-dom';\r\n\r\nimport {\r\n Router as SharedRouter,\r\n Route as SharedRoute,\r\n withRouter as sharedWithRouter,\r\n MemoryRouter as SharedMemoryRouter,\r\n HashRouter as SharedHashRouter,\r\n} from '@bingads-webui-react/router';\r\n\r\n/*\r\n * @bingads-webui-react/router elements\r\n */\r\nexport const Router = props => ;\r\n\r\nexport const Route = props => ;\r\n\r\nexport const withRouter = sharedWithRouter;\r\n\r\nexport const MemoryRouter = props => ;\r\n\r\nexport const HashRouter = props => ;\r\n\r\n/*\r\n * react-router elements\r\n */\r\nexport const Switch = ReactSwitch;\r\n\r\nexport const Redirect = ReactRedirect;\r\n\r\n/*\r\n * react-router-dom elements\r\n */\r\nexport const Link = ReactLink;\r\n\r\nexport const matchPath = reactMatchPath;\r\n","import PropTypes from 'prop-types';\r\nimport React, { useMemo } from 'react';\r\nimport {\r\n getCurrentScopeFromService,\r\n Scope,\r\n CampaignType,\r\n StatusWaterfallFilterOptions\r\n} from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport {\r\n ScopeSelector,\r\n ScopeFilters,\r\n useFocusedEntityContext\r\n} from '@bingads-webui-fluent-component/scope-selector-menu';\r\nimport {\r\n withCampaignData,\r\n withCampaignFilter,\r\n useCampaignFilter,\r\n getScopeAdder,\r\n getScopeRemover,\r\n shouldRenderAdGroupFilter,\r\n CampaignFilters,\r\n AdGroupStatusFilter,\r\n Campaign,\r\n} from '@bingads-webui-campaign-react/scope-selector';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\n\r\nconst CampaignScopePanel = (props) => {\r\n const { scope, ...rest } = props;\r\n const currentScope = getCurrentScopeFromService(scope);\r\n const { i18n, selectedEntity } = props;\r\n const { focusedEntity } = useFocusedEntityContext();\r\n const { selectedCampaignTypeFilter, selectedCampaignStatusFilter, selectedAdGroupStatusFilter } = useCampaignFilter();\r\n\r\n const hasRootEntityFilter = selectedCampaignTypeFilter !== CampaignType.All || selectedCampaignStatusFilter !== StatusWaterfallFilterOptions.All;\r\n const hasSubEntityFilter = selectedAdGroupStatusFilter !== StatusWaterfallFilterOptions.All;\r\n const shouldRenderAdGroup = useMemo(\r\n () => shouldRenderAdGroupFilter(currentScope, selectedEntity, selectedCampaignTypeFilter),\r\n [currentScope, selectedEntity, selectedCampaignTypeFilter]\r\n );\r\n const isCampaignScope = useMemo(() => selectedEntity && selectedEntity.entityType === Campaign.entityType, [selectedEntity]);\r\n const addScope = getScopeAdder(scope);\r\n const removeScope = getScopeRemover(scope);\r\n\r\n const scopeSelectorProps = {\r\n addScope,\r\n removeScope,\r\n hideSubEntitySelector: !shouldRenderAdGroup && isCampaignScope && (focusedEntity !== 'All'),\r\n hasRootEntityFilter,\r\n hasSubEntityFilter,\r\n className: 'scope-bar-scope-selector',\r\n ...rest,\r\n };\r\n\r\n return (\r\n \r\n \r\n {currentScope < Scope.Campaign && }\r\n {shouldRenderAdGroup && }\r\n \r\n \r\n );\r\n};\r\n\r\nCampaignScopePanel.propTypes = {\r\n scope: PropTypes.shape({}).isRequired,\r\n selectedEntity: PropTypes.shape({\r\n entityType: PropTypes.string,\r\n }),\r\n i18n: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nCampaignScopePanel.defaultProps = {\r\n selectedEntity: undefined,\r\n};\r\n\r\nconst CampaignScopePanelWithData = withScope(withCampaignData(withCampaignFilter((CampaignScopePanel))));\r\n\r\nexport { CampaignScopePanelWithData as CampaignScopePanel };\r\n","import { makeStyles, shorthands, tokens } from '@fluentui/react-components';\r\n\r\nexport const useScopePanelStyles = makeStyles({\r\n scopePanelContainer: {\r\n width: '224px',\r\n height: '100%',\r\n ...shorthands.padding('4px'),\r\n ...shorthands.borderRight('1px', 'solid', tokens.colorNeutralStroke2),\r\n backgroundColor: tokens.colorNeutralBackground3,\r\n },\r\n});\r\n","import { get, find } from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useMemo, useContext } from 'react';\r\nimport { mergeClasses } from '@fluentui/react-components';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { withLayoutSizeContext, useLayoutSizeContext, LayoutSizeScale } from '@bingads-webui-fluent-component/layout-size';\r\nimport { isTableExpanded as getIsTableExpanded, getConfigComponents } from '@bingads-webui-campaign-react/toolbar-container';\r\nimport { withLayoutContext, Mode } from '@bingads-webui-react/app-layout-container';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport {\r\n withSiteMap,\r\n processor,\r\n navRefreshSiteMap\r\n} from '@bingads-webui-campaign-react/with-site-map';\r\nimport { processorSet } from '@bingads-webui-react/with-site-map';\r\nimport { PreferenceContext } from '@bingads-webui-react/preference-context';\r\nimport { CampaignScopePanel } from './campaign-scope-panel';\r\nimport { useScopePanelStyles } from './styles';\r\n\r\nconst navRefreshProcessorSet = [\r\n processor.processImportCenterMode,\r\n processor.processMixedModeAdGroup,\r\n processor.processGlobalFilter,\r\n processor.processCampaignType,\r\n processor.processCampaignId,\r\n processor.processSmartCampaign,\r\n processor.processSmartShoppingCampaign,\r\n processor.processHotelCampaign,\r\n processor.processPmaxCampaignPageMenu,\r\n processor.processPmaxRetailCampaignPageMenu,\r\n ...processorSet.navRefresh,\r\n];\r\n\r\nconst ScopeViewOnTopKey = 'ScopeViewOnTop';\r\n\r\nconst ScopePanel = (props) => {\r\n const styles = useScopePanelStyles();\r\n const { layoutSize } = useLayoutSizeContext();\r\n const { siteMap, changeLayout, layoutConfig } = props;\r\n\r\n const { scope } = useContext(ScopeContext);\r\n const preferenceService = useContext(PreferenceContext);\r\n const scopeViewOnTopPreference = preferenceService.findByNameAtUserLevel(ScopeViewOnTopKey);\r\n const isScopeViewOnTop = get(scopeViewOnTopPreference, 'Data', true);\r\n\r\n const campaignsRouteSelected = useMemo(() => {\r\n const selectedSiteMap = find(siteMap, item => !!item.selected);\r\n return get(selectedSiteMap, 'id', '') === 'advertise';\r\n }, [siteMap]);\r\n\r\n const isTableExpanded = useMemo(\r\n () => (getIsTableExpanded(getConfigComponents(layoutConfig))),\r\n [layoutConfig]\r\n );\r\n\r\n if (LayoutSizeScale[layoutSize] < LayoutSizeScale.XL || !campaignsRouteSelected || isScopeViewOnTop ||\r\n !get(scope, ['values', 'aid'])) {\r\n changeLayout({ scopePanel: { mode: Mode.Hidden } });\r\n return null;\r\n }\r\n\r\n if (!isTableExpanded && layoutConfig && layoutConfig.scopePanel.mode !== Mode.Expanded) {\r\n changeLayout({ scopePanel: { mode: Mode.Expanded } });\r\n }\r\n\r\n if (layoutConfig.scopePanel.mode !== Mode.Expanded) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nScopePanel.propTypes = {\r\n siteMap: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n changeLayout: PropTypes.func.isRequired,\r\n layoutConfig: PropTypes.shape({\r\n scopePanel: PropTypes.shape({\r\n mode: PropTypes.string,\r\n }),\r\n }).isRequired,\r\n};\r\n\r\nconst ScopePanelWithResizeContext = withLayoutContext(withLayoutSizeContext(withI18nConsumer(withSiteMap(ScopePanel, navRefreshProcessorSet, navRefreshSiteMap))));\r\n\r\nexport { ScopePanelWithResizeContext as ScopePanel };\r\n","import {\r\n CampaignType\r\n} from '@bingads-webui-campaign-react/shell-ui-common';\r\n\r\nexport const AdGroup = {\r\n name: _TL_('Ad group'),\r\n nameLowerCasePlural: _TL_('ad groups'),\r\n entityType: 'AdGroup',\r\n campaignTypes: [CampaignType.Default, CampaignType.Shopping, CampaignType.Audience,\r\n CampaignType.DynamicSearchAds, CampaignType.Smart, CampaignType.Hotel],\r\n};\r\n\r\nexport const Campaign = {\r\n name: _TL_('Campaign'),\r\n nameLowerCasePlural: _TL_('campaigns'),\r\n entityType: 'Campaign',\r\n};\r\n","import _ from 'underscore';\r\nimport React, { useMemo, useRef, useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { CampaignOData } from '@bingads-webui-react/campaign-odata';\r\nimport { withInstrumentation } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { getCampaignOdataConfig } from '@bingads-webui-campaign-react/campaign-entity-search';\r\nimport { notificationApi } from '@bingads-webui-campaign/notification-center';\r\nimport {\r\n convertToCampaign,\r\n convertToAdGroup,\r\n shellTips,\r\n Scope,\r\n getCurrentScopeFromService,\r\n CampaignType,\r\n} from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport {\r\n withFocusedEntityContext,\r\n useFocusedEntityContext,\r\n} from '@bingads-webui-fluent-component/scope-selector-menu';\r\nimport { Campaign, AdGroup } from './config';\r\n\r\nconst MAXIMUM_AD_GROUP_COUNT_UNDER_ACCOUNT = 20000;\r\n\r\nconst withCampaignData = (Component, setCampaignTypes = _.noop) => {\r\n const HOC = (props) => {\r\n const {\r\n i18n,\r\n scope,\r\n instrumentation,\r\n } = props;\r\n\r\n const previousEntityListProps = useRef({});\r\n const previousSelectedEntity = useRef(null);\r\n const { focusedEntity, setFocusedEntity } = useFocusedEntityContext();\r\n\r\n const currentScope = getCurrentScopeFromService(scope);\r\n const {\r\n campaignId: selectedCampaignId,\r\n adGroupId: selectedAdGroupId,\r\n } = scope.values;\r\n\r\n const hasSelectedEntityChanged = useMemo(() => {\r\n const prevSelectedEntity = previousSelectedEntity.current;\r\n const prevSelectedEntityId = prevSelectedEntity && prevSelectedEntity.id;\r\n const prevSelectedEntityType = prevSelectedEntity && prevSelectedEntity.entityType;\r\n\r\n if (selectedAdGroupId) {\r\n return prevSelectedEntityType !== AdGroup.entityType || prevSelectedEntityId !== selectedAdGroupId;\r\n }\r\n\r\n if (selectedCampaignId) {\r\n return prevSelectedEntityType !== Campaign.entityType || prevSelectedEntityId !== selectedCampaignId;\r\n }\r\n\r\n return previousSelectedEntity.current !== null;\r\n }, [selectedCampaignId, selectedAdGroupId, previousSelectedEntity.current]);\r\n\r\n if (hasSelectedEntityChanged) {\r\n setFocusedEntity(null);\r\n }\r\n\r\n const rootEntityTypeDisplayName = useMemo(() => i18n.getString(Campaign.nameLowerCasePlural), [i18n]);\r\n const adgoupsDisplayText = useMemo(() => i18n.getString(AdGroup.nameLowerCasePlural), [i18n]);\r\n\r\n const commonComponentProps = {\r\n rootEntityTypeDisplayName,\r\n };\r\n\r\n const campaignsLoadFallback = (\r\n \r\n );\r\n\r\n const { activity } = instrumentation.createScenarioAndActivity({\r\n scenarioName: 'LoadCampaignData',\r\n activityName: 'LoadCampaignData',\r\n });\r\n\r\n const removeId = useCallback((id) => {\r\n scope.remove(id);\r\n scope.save();\r\n }, [scope]);\r\n\r\n return (\r\n currentAccount.Campaigns.get(getCampaignOdataConfig())}\r\n escapeHatch={({ currentAccount }) => (currentAccount ? undefined : { value: [] })}\r\n fallback={campaignsLoadFallback}\r\n onError={() => {\r\n notificationApi.showWarning(i18n.getString(shellTips.shellDataError));\r\n return campaignsLoadFallback;\r\n }}\r\n >\r\n {\r\n (campaignLoadResult) => {\r\n setCampaignTypes(_.get(campaignLoadResult, 'value', []));\r\n\r\n const existingCampaignTypes = new Set([CampaignType.All]);\r\n const campaigns = campaignLoadResult.value.map((campaignInOdata) => {\r\n const campaign = convertToCampaign(campaignInOdata);\r\n campaign.entityTypeDisplayName = rootEntityTypeDisplayName;\r\n existingCampaignTypes.add(campaign.campaignType);\r\n\r\n // exclude performance max and smart campaigns from lazy loading sub entity\r\n if (campaign.campaignType !== CampaignType.PerformanceMax && campaign.campaignType !== CampaignType.Smart) {\r\n campaign.subEntityTypeDisplayName = adgoupsDisplayText;\r\n }\r\n return campaign;\r\n });\r\n\r\n const adGroupLoadFallback = (\r\n \r\n );\r\n const adGroupCampaignId = focusedEntity && focusedEntity.entityType === Campaign.entityType\r\n ? focusedEntity.id\r\n : selectedCampaignId;\r\n\r\n return (\r\n (\r\n currentAccount.Campaigns.$withKey(adGroupCampaignId).AdGroups.get({\r\n top: MAXIMUM_AD_GROUP_COUNT_UNDER_ACCOUNT,\r\n select: ['Id', 'Name', 'Status'],\r\n orderby: { Name: 1 },\r\n })\r\n )\r\n }\r\n escapeHatch={({ currentAccount }) => (\r\n currentAccount && adGroupCampaignId ?\r\n undefined : { value: [] }\r\n )}\r\n fallback={adGroupLoadFallback}\r\n onError={() => {\r\n notificationApi.showWarning(i18n.getString(shellTips.shellDataError));\r\n return adGroupLoadFallback;\r\n }}\r\n >\r\n {\r\n (adGroupLoadResult) => {\r\n const adGroups = adGroupLoadResult.value.map((adGroupInOdata) => {\r\n const adGroup = convertToAdGroup({ ...adGroupInOdata, Campaign: { Id: adGroupCampaignId } });\r\n adGroup.entityTypeDisplayName = adgoupsDisplayText;\r\n\r\n return adGroup;\r\n });\r\n\r\n let selectedEntity = null;\r\n const entityListProps = (currentScope >= Scope.Campaign ||\r\n (focusedEntity && focusedEntity.entityType === Campaign.entityType)) &&\r\n !(focusedEntity && focusedEntity === 'All')\r\n ? {\r\n entityList: adGroups,\r\n entityListType: AdGroup.entityType,\r\n entityTypeDisplayName: adgoupsDisplayText,\r\n }\r\n : {\r\n entityList: campaigns,\r\n entityListType: Campaign.entityType,\r\n entityTypeDisplayName: rootEntityTypeDisplayName,\r\n };\r\n\r\n previousEntityListProps.current = entityListProps;\r\n\r\n if (currentScope === Scope.Campaign && hasSelectedEntityChanged) {\r\n selectedEntity = campaigns.find(campaign => campaign.id === selectedCampaignId);\r\n\r\n if (!selectedEntity) {\r\n activity.trace(`previousSelectedEntity: ${JSON.stringify(previousSelectedEntity.current)}, scope: ${currentScope}, campaign id ${selectedCampaignId} not found in the list of campaigns: ${JSON.stringify(campaigns)}`);\r\n removeId('campaignId');\r\n } else {\r\n selectedEntity.subEntityTypeDisplayName = adgoupsDisplayText;\r\n }\r\n }\r\n\r\n if (currentScope === Scope.AdGroup && hasSelectedEntityChanged) {\r\n selectedEntity = adGroups.find(adgroup => adgroup.id === selectedAdGroupId);\r\n const parentCampaign = campaigns.find(campaign => campaign.id === selectedCampaignId);\r\n\r\n if (!parentCampaign) {\r\n activity.trace(`previousSelectedEntity: ${JSON.stringify(previousSelectedEntity.current)}, scope: ${currentScope}, campaign id ${selectedCampaignId} not found in the list of campaigns: ${JSON.stringify(campaigns)}`);\r\n removeId('campaignId');\r\n } else {\r\n parentCampaign.subEntityTypeDisplayName = adgoupsDisplayText;\r\n }\r\n\r\n if (!selectedEntity) {\r\n activity.trace(`previousSelectedEntity: ${JSON.stringify(previousSelectedEntity.current)}, scope: ${currentScope}, adgroup id ${selectedAdGroupId} not found in the list of adgroups: ${JSON.stringify(adGroups)}`);\r\n removeId('adGroupId');\r\n } else {\r\n selectedEntity.parentEntity = parentCampaign;\r\n }\r\n }\r\n\r\n if (hasSelectedEntityChanged) {\r\n previousSelectedEntity.current = selectedEntity;\r\n } else {\r\n selectedEntity = previousSelectedEntity.current;\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 HOC.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n scope: PropTypes.shape({\r\n values: PropTypes.shape({\r\n campaignId: PropTypes.string,\r\n adGroupId: PropTypes.string,\r\n }),\r\n }).isRequired,\r\n instrumentation: PropTypes.shape({\r\n createScenarioAndActivity: PropTypes.func.isRequired,\r\n }).isRequired,\r\n };\r\n\r\n HOC.displayName = `withCampaignData(${Component.displayName || Component.name})`;\r\n\r\n return withFocusedEntityContext(withInstrumentation(HOC));\r\n};\r\n\r\nexport { withCampaignData };\r\n","import { CampaignType } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { AdGroup, Campaign } from '../config';\r\n\r\nexport const EntityScopeProperty = {\r\n Campaign: 'campaignId',\r\n AdGroup: 'adGroupId',\r\n Assets: 'assetId',\r\n};\r\n\r\nexport const addScope = (entity, scope) => {\r\n const scopeProperty = EntityScopeProperty[entity.entityType];\r\n\r\n if (scopeProperty) {\r\n scope.append({ [scopeProperty]: entity.id });\r\n\r\n if (entity.entityType === Campaign.entityType) {\r\n scope.remove(EntityScopeProperty.AdGroup);\r\n scope.remove(EntityScopeProperty.Assets);\r\n }\r\n\r\n if (entity.entityType === AdGroup.entityType) {\r\n const campaignId = entity.parentId;\r\n if (campaignId) {\r\n scope.append({ [EntityScopeProperty.Campaign]: campaignId });\r\n }\r\n }\r\n\r\n scope.save();\r\n }\r\n};\r\n\r\nexport function getSmartPath(scope) {\r\n const { uid, cid, aid } = scope.values;\r\n return `/campaign/smart?uid=${uid}&cid=${cid}&aid=${aid}`;\r\n}\r\n\r\nexport function getSmartCampaignUrl(node, scope) {\r\n const path = getSmartPath(scope);\r\n return node.rawStatus === 'InProgress' ?\r\n `${path}#/CreateCampaign/${node.id}` :\r\n `${path}#/campaign/${node.id}`;\r\n}\r\n\r\nexport const getScopeAdder = scope => (entity) => {\r\n if (entity.campaignType === CampaignType.Smart) {\r\n window.location.href = getSmartCampaignUrl(entity, scope);\r\n return;\r\n }\r\n addScope(entity, scope);\r\n};\r\n\r\nexport const removeScope = (entity, scope) => {\r\n if (!entity) {\r\n scope.remove(EntityScopeProperty.Campaign);\r\n scope.remove(EntityScopeProperty.AdGroup);\r\n scope.remove(EntityScopeProperty.Assets);\r\n\r\n scope.save();\r\n return;\r\n }\r\n\r\n const scopeProperty = EntityScopeProperty[entity.entityType];\r\n\r\n if (scopeProperty) {\r\n scope.remove(scopeProperty);\r\n\r\n scope.save();\r\n }\r\n};\r\n\r\nexport const getScopeRemover = scope => (entity) => {\r\n removeScope(entity, scope);\r\n};\r\n","import hoistNonReactStatics from 'hoist-non-react-statics';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useContext } from 'react';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { withGlobalFilter } from '@bingads-webui-campaign-react/global-filter-context';\r\nimport { WaterfallFilterType } from '@bingads-webui-campaign/filter-storage';\r\nimport {\r\n getFilteredCampaignTypeFromRawFilter,\r\n getFilteredCampaignStatusFromRawFilter,\r\n getFilteredAdGroupStatusFromRawFilter,\r\n convertFilteredCampaignTypeToFilter,\r\n CampaignType,\r\n StatusWaterfallFilterOptions\r\n} from '@bingads-webui-campaign-react/shell-ui-common';\r\n\r\nimport { getSmartPath } from './helper/scope-helper';\r\n\r\nexport const CampaignFilterContext = React.createContext();\r\n\r\nexport const useCampaignFilter = () => React.useContext(CampaignFilterContext);\r\n\r\nexport const withCampaignFilter = (Component) => {\r\n const HOC = (props) => {\r\n const {\r\n entityList, entityListType, updateWaterfallFilter, existingCampaignTypes, ...rest\r\n } = props;\r\n const { scope } = useContext(ScopeContext);\r\n const selectedCampaignTypeFilter = getFilteredCampaignTypeFromRawFilter(props[WaterfallFilterType.CampaignType]);\r\n const selectedCampaignStatusFilter = getFilteredCampaignStatusFromRawFilter(props[WaterfallFilterType.CampaignStatus]);\r\n const selectedAdGroupStatusFilter = getFilteredAdGroupStatusFromRawFilter(props[WaterfallFilterType.AdGroupStatus]);\r\n\r\n const filterCampaigns = campaigns => campaigns.filter(campaign =>\r\n (selectedCampaignTypeFilter === CampaignType.All || selectedCampaignTypeFilter === campaign.campaignType) &&\r\n (selectedCampaignStatusFilter === StatusWaterfallFilterOptions.All || campaign.status === 'Active') &&\r\n campaign.rawStatus !== 'InProgress');\r\n\r\n const filterAdsGroups = adGroups => adGroups.filter(adGroup =>\r\n selectedAdGroupStatusFilter === StatusWaterfallFilterOptions.All || adGroup.status === 'Active');\r\n\r\n let filteredEntityList;\r\n\r\n switch (entityListType) {\r\n case 'Campaign':\r\n filteredEntityList = filterCampaigns(entityList);\r\n filteredEntityList = filteredEntityList.map(campaign => ({\r\n ...campaign,\r\n subEntityList: campaign.subEntityList\r\n ? filterAdsGroups(campaign.subEntityList)\r\n : campaign.subEntityList,\r\n }));\r\n break;\r\n case 'AdGroup':\r\n filteredEntityList = filterAdsGroups(entityList);\r\n break;\r\n default:\r\n filteredEntityList = entityList;\r\n }\r\n\r\n const updateCampaignTypeFilter = (campaignType) => {\r\n if (!existingCampaignTypes.has(campaignType)) {\r\n updateWaterfallFilter({\r\n filterType: WaterfallFilterType.CampaignType,\r\n filter: convertFilteredCampaignTypeToFilter(CampaignType.All),\r\n });\r\n return;\r\n }\r\n\r\n if (campaignType === CampaignType.Smart) {\r\n window.location.href = getSmartPath(scope);\r\n return;\r\n }\r\n\r\n updateWaterfallFilter({\r\n filterType: WaterfallFilterType.CampaignType,\r\n filter: convertFilteredCampaignTypeToFilter(campaignType),\r\n });\r\n };\r\n\r\n const updateCampaignStatusFilter = (campaignStatusFilter) => {\r\n updateWaterfallFilter({\r\n filterType: WaterfallFilterType.CampaignStatus,\r\n filter: campaignStatusFilter,\r\n });\r\n };\r\n\r\n const updateAdGroupStatusFilter = (adGroupStatusFilter) => {\r\n updateWaterfallFilter({\r\n filterType: WaterfallFilterType.AdGroupStatus,\r\n filter: adGroupStatusFilter,\r\n });\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n };\r\n\r\n HOC.propTypes = {\r\n entityList: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.string.isRequired,\r\n name: PropTypes.string.isRequired,\r\n status: PropTypes.string.isRequired,\r\n entityType: PropTypes.string.isRequired,\r\n })).isRequired,\r\n entityListType: PropTypes.string,\r\n updateWaterfallFilter: PropTypes.func.isRequired,\r\n existingCampaignTypes: PropTypes.instanceOf(Set),\r\n };\r\n\r\n HOC.defaultProps = {\r\n entityListType: undefined,\r\n existingCampaignTypes: new Set(),\r\n };\r\n\r\n HOC.displayName = `withCampaignFilter(${Component.displayName || Component.name})`;\r\n\r\n return withGlobalFilter(hoistNonReactStatics(HOC, Component));\r\n};\r\n","import React from 'react';\r\n\r\nexport const LinkedInRegular = () => (\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 { get, filter } from 'underscore';\r\nimport React from 'react';\r\nimport {\r\n AppsRegular,\r\n ArrowTrendingSparkleRegular,\r\n LuggageRegular,\r\n PeopleAudienceRegular,\r\n ShoppingBagRegular,\r\n SlideMultipleSearchRegular,\r\n StoreMicrosoftRegular,\r\n TextboxSettingsRegular,\r\n} from '@fluentui/react-icons';\r\nimport { CampaignType, StatusWaterfallFilterOptions } from '@bingads-webui-campaign-react/shell-ui-common';\r\n\r\nimport { LinkedInRegular } from '../media/linkedin-icon';\r\n\r\nexport const getCampaignTypeFilterOptions = ({ i18n, permissions, existingCampaignTypes }) => {\r\n const IsRenameHotelToLodgingEnabled = get(permissions, ['dynamic', 'IsRenameHotelToLodgingEnabled']);\r\n const isAppAdsCampaignEnabled = permissions && permissions.dynamic && permissions.dynamic.AppAdsCampaignPhaseOne;\r\n const isLinkedInEnabled = permissions && permissions.dynamic && permissions.dynamic.LinkedInCampaigns;\r\n const isUnifiedAppCampaignEnabled = permissions && permissions.dynamic && permissions.dynamic.UnifiedAppAds;\r\n\r\n const menuItems = [\r\n {\r\n key: CampaignType.All,\r\n icon: ,\r\n description: i18n.getString(_TL_('All Types')),\r\n name: i18n.getString(_TL_('All campaigns')),\r\n defaultChecked: true,\r\n id: 'campaign-type-All',\r\n },\r\n {\r\n key: CampaignType.Default,\r\n icon: ,\r\n description: i18n.getString(_TL_('Search')),\r\n name: i18n.getString(_TL_('Search campaigns')),\r\n id: 'campaign-type-Search',\r\n },\r\n {\r\n key: CampaignType.Audience,\r\n icon: ,\r\n description: i18n.getString(_TL_('Audience')),\r\n name: i18n.getString(_TL_('Audience campaigns')),\r\n id: 'campaign-type-Audience',\r\n },\r\n {\r\n key: CampaignType.Shopping,\r\n icon: ,\r\n description: i18n.getString(_TL_('Shopping')),\r\n name: i18n.getString(_TL_('Shopping campaigns')),\r\n id: 'campaign-type-Shopping',\r\n },\r\n {\r\n key: CampaignType.Smart,\r\n icon: ,\r\n description: _TL_('Smart'),\r\n name: _TL_('Smart campaigns'),\r\n id: 'campaign-type-Smart',\r\n },\r\n {\r\n key: CampaignType.Hotel,\r\n icon: ,\r\n description: IsRenameHotelToLodgingEnabled ? i18n.getString(_TL_('Lodging')) : i18n.getString(_TL_('Hotel')),\r\n name: IsRenameHotelToLodgingEnabled ? i18n.getString(_TL_('Lodging campaigns')) : i18n.getString(_TL_('Hotel campaigns')),\r\n id: 'campaign-type-Lodging',\r\n },\r\n {\r\n key: CampaignType.PerformanceMax,\r\n icon: ,\r\n description: i18n.getString(_TL_('Performance Max')),\r\n name: i18n.getString(_TL_('Performance Max campaigns')),\r\n id: 'campaign-type-PerformanceMax',\r\n },\r\n ...((isAppAdsCampaignEnabled || isUnifiedAppCampaignEnabled) ? [{\r\n key: CampaignType.App,\r\n icon: ,\r\n description: i18n.getString(_TL_('App')),\r\n name: i18n.getString(_TL_('App campaigns')),\r\n }] : []),\r\n ...(isLinkedInEnabled ? [{\r\n key: CampaignType.LinkedIn,\r\n icon: ,\r\n description: i18n.getString(_TL_('LinkedIn')),\r\n name: i18n.getString(_TL_('LinkedIn campaigns')),\r\n id: 'campaign-type-LinkedIn',\r\n }] : []),\r\n ];\r\n\r\n return {\r\n key: 'campaign-type',\r\n name: i18n.getString(_TL_('Campaign type')),\r\n menuItems: filter(menuItems, item => existingCampaignTypes.has(item.key)),\r\n };\r\n};\r\n\r\n\r\nexport const getCampaignStatusFilterOptions = i18n => ({\r\n key: 'campaign-status',\r\n name: i18n.getString(_TL_('Campaign status')),\r\n menuItems: [\r\n {\r\n key: StatusWaterfallFilterOptions.All,\r\n description: i18n.getString(_TL_('Enabled, Paused')),\r\n name: i18n.getString(_TL_('All')),\r\n defaultChecked: true,\r\n id: 'campaign-status-all',\r\n },\r\n {\r\n key: StatusWaterfallFilterOptions.AllEnabled,\r\n description: i18n.getString(_TL_('Enabled')),\r\n name: i18n.getString(_TL_('All enabled')),\r\n id: 'campaign-status-all-enabled',\r\n },\r\n ],\r\n});\r\n\r\nexport const getAdGroupStatusFilterOptions = i18n => ({\r\n key: 'adgroup-status',\r\n name: i18n.getString(_TL_('Ad Group Status')),\r\n menuItems: [\r\n {\r\n key: StatusWaterfallFilterOptions.All,\r\n description: i18n.getString(_TL_('Enabled, Paused')),\r\n name: i18n.getString(_TL_('All')),\r\n defaultChecked: true,\r\n id: 'adgroup-status-all',\r\n },\r\n {\r\n key: StatusWaterfallFilterOptions.AllEnabled,\r\n description: i18n.getString(_TL_('Enabled')),\r\n name: i18n.getString(_TL_('All enabled')),\r\n id: 'adgroup-status-all-enabled',\r\n },\r\n ],\r\n});\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { ScopeFilterMenu } from '@bingads-webui-fluent-component/scope-selector-menu';\r\nimport {\r\n convertFilteredAdGroupStatusToFilter,\r\n StatusWaterfallFilterOptions,\r\n} from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { getAdGroupStatusFilterOptions } from './filter-options';\r\nimport { useCampaignFilter } from './../with-campaign-filter';\r\n\r\nexport const AdGroupStatusFilter = (props) => {\r\n const {\r\n i18n,\r\n inPopover,\r\n } = props;\r\n\r\n const adGroupStatusFilterMenuOptions = getAdGroupStatusFilterOptions(i18n);\r\n const menuItemsGroupList = [\r\n adGroupStatusFilterMenuOptions,\r\n ];\r\n\r\n const { selectedAdGroupStatusFilter, updateAdGroupStatusFilter } = useCampaignFilter();\r\n\r\n const selectedValues = {\r\n [adGroupStatusFilterMenuOptions.key]: [selectedAdGroupStatusFilter],\r\n };\r\n\r\n const onAdGroupStatusChange = (item) => {\r\n const adGroupStatusFilterValues = item[adGroupStatusFilterMenuOptions.key];\r\n const adGroupStatusFilterValue = adGroupStatusFilterValues && adGroupStatusFilterValues.length > 0\r\n ? adGroupStatusFilterValues[0]\r\n : StatusWaterfallFilterOptions.All;\r\n const filter = convertFilteredAdGroupStatusToFilter(adGroupStatusFilterValue);\r\n\r\n updateAdGroupStatusFilter(filter);\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nAdGroupStatusFilter.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n inPopover: PropTypes.bool,\r\n};\r\n\r\nAdGroupStatusFilter.defaultProps = {\r\n inPopover: false,\r\n};\r\n\r\n","import React, { useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { ScopeFilterMenu } from '@bingads-webui-fluent-component/scope-selector-menu';\r\nimport {\r\n convertFilteredCampaignStatusToFilter,\r\n StatusWaterfallFilterOptions,\r\n} from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { getCampaignStatusFilterOptions } from './filter-options';\r\nimport { useCampaignFilter } from '../with-campaign-filter';\r\n\r\nexport const CampaignStatusFilter = (props) => {\r\n const {\r\n i18n,\r\n inPopover,\r\n } = props;\r\n\r\n const campaignStatusFilterMenuOptions = getCampaignStatusFilterOptions(i18n);\r\n\r\n const menuItemsGroupList = [\r\n campaignStatusFilterMenuOptions,\r\n ];\r\n\r\n const { selectedCampaignStatusFilter, updateCampaignStatusFilter } = useCampaignFilter();\r\n\r\n const selectedValues = {\r\n [campaignStatusFilterMenuOptions.key]: [selectedCampaignStatusFilter],\r\n };\r\n\r\n const onCampaignStatusChange = useCallback((item) => {\r\n const campaignStatusFilterValues = item[campaignStatusFilterMenuOptions.key];\r\n const campaignStatusFilterValue = campaignStatusFilterValues && campaignStatusFilterValues.length > 0\r\n ? campaignStatusFilterValues[0]\r\n : StatusWaterfallFilterOptions.All;\r\n\r\n const filter = convertFilteredCampaignStatusToFilter(campaignStatusFilterValue);\r\n\r\n updateCampaignStatusFilter(filter);\r\n }, [campaignStatusFilterMenuOptions, updateCampaignStatusFilter]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nCampaignStatusFilter.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n inPopover: PropTypes.bool,\r\n};\r\n\r\nCampaignStatusFilter.defaultProps = {\r\n inPopover: false,\r\n};\r\n","import React, { useContext, useEffect, useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { ScopeFilterMenu } from '@bingads-webui-fluent-component/scope-selector-menu';\r\nimport {\r\n CampaignType\r\n} from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { withHotKeys, ShortcutType } from '@bingads-webui-react/hot-keys';\r\nimport { usePrevious } from '@bingads-webui-react/primitive-hooks';\r\nimport { PermissionsContext } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { getCampaignTypeFilterOptions } from './filter-options';\r\nimport { useCampaignFilter } from '../with-campaign-filter';\r\n\r\nconst CampaignTypeFilter = (props) => {\r\n const {\r\n i18n,\r\n inPopover,\r\n hotKey,\r\n count,\r\n } = props;\r\n\r\n const permissions = useContext(PermissionsContext);\r\n const previousCount = usePrevious(count);\r\n const {\r\n selectedCampaignTypeFilter,\r\n updateCampaignTypeFilter,\r\n existingCampaignTypes,\r\n } = useCampaignFilter();\r\n\r\n const campaignTypeFilterMenuOptions = getCampaignTypeFilterOptions({ i18n, permissions, existingCampaignTypes });\r\n\r\n const menuItemsGroupList = [\r\n campaignTypeFilterMenuOptions,\r\n ];\r\n\r\n\r\n const selectedValues = {\r\n [campaignTypeFilterMenuOptions.key]: [selectedCampaignTypeFilter],\r\n };\r\n\r\n useEffect(() => {\r\n if (!existingCampaignTypes.has(selectedCampaignTypeFilter)) {\r\n updateCampaignTypeFilter(CampaignType.All);\r\n }\r\n }, [existingCampaignTypes, selectedCampaignTypeFilter, updateCampaignTypeFilter]);\r\n\r\n const onCampaignTypeChange = useCallback((item) => {\r\n const campaignTypeFilterValues = item[campaignTypeFilterMenuOptions.key];\r\n const campaignTypeFilterValue = campaignTypeFilterValues && campaignTypeFilterValues.length > 0 ?\r\n campaignTypeFilterValues[0] : CampaignType.All;\r\n\r\n updateCampaignTypeFilter(campaignTypeFilterValue);\r\n }, [campaignTypeFilterMenuOptions.key, updateCampaignTypeFilter]);\r\n\r\n useEffect(() => {\r\n if (previousCount !== count) {\r\n if (hotKey === 'shift+a') {\r\n updateCampaignTypeFilter(CampaignType.All);\r\n } else if (hotKey === 'shift+s') {\r\n updateCampaignTypeFilter(CampaignType.Default);\r\n } else if (hotKey === 'shift+p') {\r\n updateCampaignTypeFilter(CampaignType.Shopping);\r\n } else if (hotKey === 'shift+d') {\r\n updateCampaignTypeFilter(CampaignType.Audience);\r\n } else if (hotKey === 'shift+l') {\r\n updateCampaignTypeFilter(CampaignType.Hotel);\r\n } else if (hotKey === 'shift+t') {\r\n updateCampaignTypeFilter(CampaignType.Smart);\r\n }\r\n }\r\n }, [count, existingCampaignTypes, hotKey, onCampaignTypeChange, previousCount, updateCampaignTypeFilter]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nCampaignTypeFilter.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n inPopover: PropTypes.bool,\r\n hotKey: PropTypes.string.isRequired,\r\n count: PropTypes.number.isRequired,\r\n};\r\n\r\nCampaignTypeFilter.defaultProps = {\r\n inPopover: false,\r\n};\r\n\r\n\r\nconst CampaignFiltersWithHotKeys = withHotKeys(CampaignTypeFilter, ShortcutType.CampaignTypes);\r\n\r\nexport { CampaignFiltersWithHotKeys as CampaignTypeFilter };\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { ScopeFilterMenu } from '@bingads-webui-fluent-component/scope-selector-menu';\r\nimport {\r\n CampaignType,\r\n convertFilteredCampaignStatusToFilter,\r\n StatusWaterfallFilterOptions,\r\n} from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { PermissionsContext } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { getCampaignTypeFilterOptions, getCampaignStatusFilterOptions } from './filter-options';\r\nimport { useCampaignFilter } from '../with-campaign-filter';\r\n\r\nexport const CampaignFilters = (props) => {\r\n const {\r\n i18n,\r\n inPopover,\r\n } = props;\r\n\r\n const permissions = useContext(PermissionsContext);\r\n const {\r\n selectedCampaignTypeFilter,\r\n selectedCampaignStatusFilter,\r\n updateCampaignTypeFilter,\r\n updateCampaignStatusFilter,\r\n existingCampaignTypes,\r\n } = useCampaignFilter();\r\n const campaignTypeFilterMenuOptions = getCampaignTypeFilterOptions({ i18n, permissions, existingCampaignTypes });\r\n const campaignStatusFilterMenuOptions = getCampaignStatusFilterOptions(i18n);\r\n\r\n const menuItemsGroupList = [\r\n campaignTypeFilterMenuOptions,\r\n campaignStatusFilterMenuOptions,\r\n ];\r\n\r\n\r\n const selectedValues = {\r\n [campaignTypeFilterMenuOptions.key]: [selectedCampaignTypeFilter],\r\n [campaignStatusFilterMenuOptions.key]: [selectedCampaignStatusFilter],\r\n };\r\n\r\n const onCampaignStatusChange = (item) => {\r\n const campaignTypeFilterValues = item[campaignTypeFilterMenuOptions.key];\r\n const campaignTypeFilterValue = campaignTypeFilterValues && campaignTypeFilterValues.length > 0 ?\r\n campaignTypeFilterValues[0] : CampaignType.All;\r\n\r\n const campaignStatusFilterValues = item[campaignStatusFilterMenuOptions.key];\r\n const campaignStatusFilterValue = campaignStatusFilterValues && campaignStatusFilterValues.length > 0\r\n ? campaignStatusFilterValues[0]\r\n : StatusWaterfallFilterOptions.All;\r\n\r\n updateCampaignTypeFilter(campaignTypeFilterValue);\r\n updateCampaignStatusFilter(convertFilteredCampaignStatusToFilter(campaignStatusFilterValue));\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nCampaignFilters.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n inPopover: PropTypes.bool,\r\n};\r\n\r\nCampaignFilters.defaultProps = {\r\n inPopover: true,\r\n};\r\n","import { Scope, CampaignType } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { AdGroup, Campaign } from '../config';\r\n\r\nexport const shouldRenderAdGroupFilter = (currentScope, selectedEntity, selectedCampaignTypeFilter) => {\r\n const entity = selectedEntity && selectedEntity.entityType === AdGroup.entityType\r\n ? selectedEntity.parentEntity\r\n : selectedEntity;\r\n\r\n const selectedCampaignType = entity && entity.entityType === Campaign.entityType\r\n ? [entity.campaignType]\r\n : [];\r\n\r\n const filteredCampaignType = selectedCampaignTypeFilter && selectedCampaignTypeFilter !== CampaignType.All\r\n ? [selectedCampaignTypeFilter]\r\n : [];\r\n\r\n const campaignTypesInScope = [...selectedCampaignType, ...filteredCampaignType];\r\n const isMappedToAdGroup = campaignType => AdGroup.campaignTypes.includes(campaignType);\r\n\r\n if (!campaignTypesInScope.every(isMappedToAdGroup)) {\r\n return false;\r\n }\r\n\r\n return currentScope <= Scope.AdGroup;\r\n};\r\n","import PropTypes from 'prop-types';\r\n\r\nexport const legacyServerContextProps = PropTypes.shape({\r\n // Required\r\n CurrentLocale: PropTypes.string.isRequired,\r\n PageTrackingId: PropTypes.string.isRequired,\r\n ServicesEndpoints: PropTypes.shape({\r\n AdInsightAPI: PropTypes.string,\r\n CampaignAPI: PropTypes.string.isRequired,\r\n }).isRequired,\r\n CampaignAPIPath: PropTypes.string.isRequired,\r\n\r\n // Not Required (e.g. not logged in yet)\r\n CurrentUser: PropTypes.shape({\r\n UserId: PropTypes.number,\r\n UserName: PropTypes.string,\r\n Email: PropTypes.string,\r\n Lcid: PropTypes.number,\r\n CustomerMarket: PropTypes.string,\r\n }),\r\n CurrentCustomer: PropTypes.shape({\r\n CustomerId: PropTypes.number.isRequired,\r\n CustomerNumber: PropTypes.string.isRequired,\r\n CustomerName: PropTypes.string.isRequired,\r\n }),\r\n CurrentAccount: PropTypes.shape({\r\n AccountId: PropTypes.number.isRequired,\r\n AccountNumber: PropTypes.string.isRequired,\r\n AdvertiserCustomerId: PropTypes.number,\r\n AccountMode: PropTypes.number,\r\n LifecycleStatus: PropTypes.number,\r\n CurrencyType: PropTypes.string,\r\n CountryCode: PropTypes.string,\r\n }),\r\n Token: PropTypes.string,\r\n CCBaseUrl: PropTypes.string.isRequired,\r\n PidlConfiguration: PropTypes.shape({\r\n PidlEnvironment: PropTypes.string.isRequired,\r\n PidlEnabledCountries: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.string)).isRequired,\r\n ExcludedCountriesByCardType: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.string)).isRequired,\r\n ThreatMetrixUrl: PropTypes.string.isRequired,\r\n MsaDelegateAuthUrl: PropTypes.string.isRequired,\r\n PidlErrorFormattingStrings: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.string)).isRequired,\r\n PidlSupportedCultureMapping: PropTypes.objectOf(PropTypes.string).isRequired,\r\n FriendlySepaMaxNameLength: PropTypes.number.isRequired,\r\n }).isRequired,\r\n CCUIPilots: PropTypes.objectOf(PropTypes.bool).isRequired,\r\n PaymentInstrumentConfigs: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.number.isRequired,\r\n supportedPaymentType: PropTypes.number,\r\n supportedCurrencies: PropTypes.arrayOf(PropTypes.string.isRequired),\r\n useSupportedCountryList: PropTypes.bool.isRequired,\r\n supportedCountries: PropTypes.arrayOf(PropTypes.string.isRequired),\r\n })).isRequired,\r\n AuthType: PropTypes.string.isRequired,\r\n CookieDomain: PropTypes.string.isRequired,\r\n CookiePath: PropTypes.string.isRequired,\r\n});\r\n\r\nexport const serverContextProps = PropTypes.shape({\r\n CurrentAccount: PropTypes.shape({\r\n Id: PropTypes.number.isRequired,\r\n AccountNumber: PropTypes.string.isRequired,\r\n AdvertiserCustomerID: PropTypes.number,\r\n CurrencyCode: PropTypes.string.isRequired,\r\n Name: PropTypes.string.isRequired,\r\n Number: PropTypes.string.isRequired,\r\n Status: PropTypes.number,\r\n }),\r\n CurrentCustomer: PropTypes.shape({\r\n Id: PropTypes.number.isRequired,\r\n Name: PropTypes.string.isRequired,\r\n }),\r\n CurrentLocale: PropTypes.string.isRequired,\r\n CurrentUser: PropTypes.shape({\r\n Id: PropTypes.number.isRequired,\r\n Email: PropTypes.string.isRequired,\r\n Market: PropTypes.string.isRequired,\r\n Name: PropTypes.string.isRequired,\r\n }),\r\n PageTrackingId: PropTypes.string.isRequired,\r\n Token: PropTypes.string,\r\n UserPreferences: PropTypes.shape({\r\n AccountLevelPreferences: PropTypes.string,\r\n UserLevelPreferences: PropTypes.string,\r\n }).isRequired,\r\n McaServiceRoot: PropTypes.string.isRequired,\r\n Permissions: PropTypes.objectOf(PropTypes.bool),\r\n});\r\n","import _ from 'underscore';\r\nimport React, { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { serverContextProps } from './server-context-props';\r\n\r\nexport const ServerContext = React.createContext();\r\n\r\nexport const withServerContext = WrappedComponent => (\r\n props => (\r\n \r\n {(serverContext =>\r\n ())}\r\n \r\n )\r\n);\r\n\r\nexport const ServerContextAction = React.createContext(_.noop);\r\n\r\nexport const ServerContextWithActionProvider = (props) => {\r\n const {\r\n context,\r\n children,\r\n } = props;\r\n\r\n const [serverContext, setServerContext] = useState(context);\r\n\r\n return (\r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n};\r\n\r\nServerContextWithActionProvider.propTypes = {\r\n context: serverContextProps.isRequired,\r\n children: PropTypes.oneOfType([\r\n PropTypes.arrayOf(PropTypes.node),\r\n PropTypes.node,\r\n ]).isRequired,\r\n};\r\n","import _ from 'underscore';\r\n\r\nconst convertAccountMode = accountMode => (_.isFinite(accountMode) ? Number(accountMode) : null);\r\n\r\n/**\r\n * Convert a legacy ServerContext from CCUI server\r\n * to a new ServerContext that modern bundle uses\r\n * @param {Object} context - legacy server context\r\n * @returns {Object} - new server context\r\n */\r\nexport const convertLegacyContext = ({\r\n CurrentCustomer,\r\n CurrentAccount,\r\n CurrentUser,\r\n ...rest\r\n}) => ({\r\n ...rest,\r\n CurrentAccount: CurrentAccount ? {\r\n Id: Number(CurrentAccount.AccountId),\r\n AccountNumber: CurrentAccount.AccountNumber,\r\n AccountMode: convertAccountMode(CurrentAccount.AccountMode),\r\n AdvertiserCustomerID: Number(CurrentAccount.AdvertiserCustomerId),\r\n CountryCode: CurrentAccount.CountryCode,\r\n CurrencyCode: CurrentAccount.CurrencyType,\r\n Name: CurrentCustomer.CustomerName,\r\n Number: CurrentAccount.AccountNumber,\r\n } : null,\r\n CurrentCustomer: CurrentCustomer ? {\r\n Id: Number(CurrentCustomer.CustomerId),\r\n Name: CurrentCustomer.CustomerName,\r\n AppScope: Number(CurrentCustomer.AppScope),\r\n } : null,\r\n CurrentUser: CurrentUser ? {\r\n Id: Number(CurrentUser.UserId),\r\n Email: CurrentUser.Email,\r\n Market: CurrentUser.CustomerMarket,\r\n Name: CurrentUser.UserName,\r\n LocaleID: CurrentUser.Lcid,\r\n IsInternal: rest.IsInternal,\r\n } : null,\r\n});\r\n","import _ from 'underscore';\r\nimport { useContext, useCallback } from 'react';\r\n\r\nimport { convertLegacyContext } from './convert-legacy-context';\r\nimport { ServerContextAction, ServerContext } from './server-context';\r\n\r\n// This updateServerContextFn should be used for the response from user creation API CustomerAccountUserSignup\r\nexport function useUpdateServerContext() {\r\n const serverContext = useContext(ServerContext);\r\n const setServerContext = useContext(ServerContextAction);\r\n\r\n const isValidServerContext = useCallback((response) => {\r\n const isValid = response && response.CurrentAccount && response.CurrentAccount.AccountId\r\n && response.CurrentCustomer && response.CurrentCustomer.CustomerId\r\n && response.CurrentUser && response.CurrentUser.UserId\r\n && response.Token;\r\n return !!isValid;\r\n }, []);\r\n\r\n const updateServerContextFn = useCallback((response, logActivity, overrideProperties = {}) => {\r\n if (!isValidServerContext(response) && logActivity && _.functions(logActivity.error)) {\r\n logActivity.error(`Invalid server context response. response: ${JSON.stringify(_.pick(response, 'CurrentAccount', 'CurrentCustomer', 'CurrentUser', 'Token'))}`);\r\n }\r\n\r\n const newContext = convertLegacyContext(response);\r\n const context = {\r\n ...serverContext,\r\n ...newContext,\r\n ...overrideProperties,\r\n };\r\n\r\n setServerContext(context);\r\n if (_.isFunction(_.get(logActivity, 'trace'))) {\r\n logActivity.trace(`delta newContext: ${JSON.stringify(newContext)}`);\r\n }\r\n\r\n if (window.seleniumTestContext) {\r\n window.seleniumTestContext = {\r\n Token: context.Token,\r\n CustomerId: context.CurrentCustomer.Id,\r\n AccountId: context.CurrentAccount.Id,\r\n AdvertiserCustomerId: context.CurrentAccount.AdvertiserCustomerID,\r\n };\r\n }\r\n return context;\r\n }, [isValidServerContext, serverContext, setServerContext]);\r\n\r\n return updateServerContextFn;\r\n}\r\n","// originally from crud-ad-style in ui-next/common-styles\r\nexport const getCrudAdImagePreviewStyles = (_, { palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '& .new-preview-carousel-container': {\r\n border: '1px solid #C8C8C8',\r\n margin: 0,\r\n width: '100%',\r\n minWidth: 669,\r\n\r\n '& .preview-header': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n\r\n '& .ad-preview-title.with-additional-tag': {\r\n marginRight: 8,\r\n display: 'inline-block',\r\n flexGrow: 0,\r\n },\r\n\r\n '& .flex-grow': {\r\n flexGrow: 1,\r\n },\r\n\r\n '& .ad-preview-actions.inline-title': {\r\n display: 'inline-block',\r\n flexGrow: 0,\r\n marginRight: 16,\r\n },\r\n },\r\n\r\n '& .ad-preview-title': {\r\n fontSize: 18,\r\n fontWeight: 'normal',\r\n lineHeight: '24px',\r\n margin: '20px 24px 16px 24px',\r\n '&.with-additional-tag': {\r\n marginRight: 8,\r\n display: 'inline-block',\r\n },\r\n },\r\n\r\n '& .improve-mma-title-container': {\r\n marginTop: 14,\r\n marginLeft: 24,\r\n '& .iconba.iconba-Lightbulb.new-preview-carousel': {\r\n color: palette.accent,\r\n fontSize: 16,\r\n marginRight: 3,\r\n },\r\n },\r\n\r\n '& .ad-preview-actions': {\r\n textAlign: 'center',\r\n\r\n '& span.action-label': {\r\n fontSize: 16,\r\n lineHeight: 2,\r\n marginRight: 16,\r\n },\r\n },\r\n\r\n '& .carousel-inner': {\r\n paddingBottom: 64,\r\n '& > .item.active': {\r\n paddingLeft: 24,\r\n paddingRight: 24,\r\n },\r\n },\r\n\r\n '& ol.carousel-indicators': {\r\n position: 'absolute',\r\n bottom: 0,\r\n left: 0,\r\n margin: '20px 24px',\r\n width: 'auto',\r\n\r\n '& li': {\r\n background: 'none',\r\n border: '1px solid #605E5C',\r\n borderRadius: 10,\r\n margin: '0 10px 0 0',\r\n height: 10,\r\n width: 10,\r\n },\r\n\r\n '& li.active': {\r\n background: palette.themePrimary,\r\n border: `1px solid ${palette.themePrimary}`,\r\n },\r\n },\r\n\r\n '& .carousel-controls': {\r\n display: 'none',\r\n },\r\n\r\n '& .carousel-control': {\r\n color: palette.themePrimary,\r\n position: 'absolute',\r\n left: 'auto',\r\n top: 'auto',\r\n right: 0,\r\n bottom: 0,\r\n height: 32,\r\n width: 20,\r\n margin: '20px 24px',\r\n textShadow: 'none',\r\n\r\n '&:focus': {\r\n outline: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n\r\n '&.left': {\r\n marginRight: 76,\r\n },\r\n\r\n '& .glyphicon-chevron-left, & .glyphicon-chevron-right': {\r\n fontFamily: iconFontFamily,\r\n position: 'relative',\r\n top: 'auto',\r\n right: 'auto',\r\n bottom: 'auto',\r\n left: 'auto',\r\n margin: 0,\r\n fontSize: 16,\r\n lineHeight: 1,\r\n verticalAlign: 0,\r\n },\r\n },\r\n\r\n '& .boost-carousel': {\r\n '& .carousel-control.right': {\r\n position: 'absolute',\r\n left: 190,\r\n bottom: -7,\r\n },\r\n },\r\n\r\n '& .boost-carousel-new-support': {\r\n '& .carousel-control.right': {\r\n position: 'absolute',\r\n left: 330,\r\n bottom: -7,\r\n },\r\n },\r\n\r\n '& .new-carousel-navigation': {\r\n '& .carousel-control.left': {\r\n position: 'absolute',\r\n left: 0,\r\n marginLeft: 15,\r\n bottom: -7,\r\n },\r\n '& .carousel-control.right': {\r\n position: 'absolute',\r\n left: 45,\r\n bottom: -7,\r\n },\r\n '& .carousel-indicators': {\r\n left: 20,\r\n },\r\n },\r\n\r\n '& .new-carousel-navigation-mma': {\r\n '& .carousel-control.left': {\r\n position: 'absolute',\r\n left: 0,\r\n marginLeft: 15,\r\n bottom: -7,\r\n },\r\n '& .carousel-control.right': {\r\n position: 'absolute',\r\n left: 0,\r\n bottom: -7,\r\n },\r\n '& .carousel-indicators': {\r\n left: 20,\r\n },\r\n },\r\n\r\n '& .new-carousel-navigation .carousel-control.right': {\r\n marginLeft: 155,\r\n },\r\n\r\n '& .new-carousel-navigation-v2 .carousel-control.right': {\r\n marginLeft: 230,\r\n },\r\n\r\n\r\n '& .new-carousel-navigation-mma .carousel-control.right': {\r\n marginLeft: 135,\r\n },\r\n\r\n '& .new-carousel-navigation-mma .carousel-inner > .item.active': {\r\n paddingLeft: 0,\r\n paddingRight: 0,\r\n },\r\n\r\n '& .new-responsive-ad-preview-container': {\r\n height: 500,\r\n overflow: 'hidden',\r\n\r\n '& .responsive-ad-preview-content': {\r\n border: '1px solid #C8C8C8',\r\n\r\n '& .ad-logo': {\r\n width: 'auto',\r\n padding: '0 4px',\r\n marginRight: 4,\r\n\r\n '& p': {\r\n margin: 0,\r\n position: 'relative',\r\n top: 0,\r\n },\r\n },\r\n\r\n '& .business-name': {\r\n height: 'auto',\r\n padding: 0,\r\n },\r\n },\r\n\r\n '& .preview-type-string': {\r\n bottom: 50,\r\n fontSize: 14,\r\n lineHeight: '20px',\r\n paddingTop: 12,\r\n },\r\n\r\n '& .video-ad-preview-type-name': {\r\n fontSize: 22,\r\n position: 'absolute',\r\n bottom: 20,\r\n transform: 'translateX(-50%)',\r\n left: '50%',\r\n },\r\n },\r\n\r\n '& .new-responsive-ad-preview-container.preview-16-9-homepage, & .new-responsive-ad-preview-container.preview-16-9-infopane': {\r\n '& .responsive-video-ad-preview-content': {\r\n boxShadow: '0px 1.6px 3.6px rgba(0, 0, 0, 0.13), 0px 0px 2.9px rgba(0, 0, 0, 0.11)',\r\n },\r\n '& .responsive-ad-preview-content': {\r\n '& > div > div:nth-child(3)': {\r\n color: 'white',\r\n '& i': {\r\n marginTop: 12,\r\n marginBottom: 12,\r\n },\r\n '& i:first-child': {\r\n marginLeft: 16,\r\n },\r\n '& i:last-child': {\r\n marginRight: 16,\r\n },\r\n '& .ms-Slider-container': {\r\n marginLeft: 16,\r\n marginRight: 16,\r\n },\r\n },\r\n '& .responsive-ad-preview-content-link': {\r\n color: 'inherit',\r\n },\r\n '& .responsive-ad-preview-content-link:hover': {\r\n textDecoration: 'none',\r\n },\r\n },\r\n '& .video-ad-preview-shadow': {\r\n background: 'linear-gradient(transparent, black)',\r\n position: 'absolute',\r\n bottom: 0,\r\n height: 150,\r\n width: '100%',\r\n pointerEvents: 'none',\r\n transition: 'opacity 0.3s',\r\n },\r\n // Video control styles\r\n '& video::-webkit-media-controls-panel': {\r\n background: '0 0',\r\n },\r\n '& video::-webkit-media-controls-fullscreen-button': {\r\n display: 'none',\r\n },\r\n\r\n '& .text-container': {\r\n position: 'absolute',\r\n marginBottom: 50,\r\n color: 'white',\r\n '& .long-headline .multi-line-processed-text': {\r\n fontSize: 28,\r\n lineHeight: '34px',\r\n },\r\n '& .multi-line-processed-text': {\r\n height: 40,\r\n },\r\n '& .business-name-with-ads': {\r\n marginTop: 13,\r\n '& .adslabel': {\r\n fontSize: 10,\r\n borderRadius: '4px',\r\n background: '#107C10',\r\n height: 16,\r\n padding: '2px 4px 2px 4px',\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .new-responsive-ad-preview-container.preview-16-9-inarticlead': {\r\n '& .responsive-video-ad-preview-content': {\r\n boxShadow: '0px 1.6px 3.6px rgba(0, 0, 0, 0.13), 0px 0px 2.9px rgba(0, 0, 0, 0.11)',\r\n },\r\n '& .responsive-ad-preview-content': {\r\n '& > div > div:nth-child(3)': {\r\n color: 'white',\r\n '& i': {\r\n marginTop: 12,\r\n marginBottom: 12,\r\n },\r\n '& i:first-child': {\r\n marginLeft: 16,\r\n },\r\n '& i:last-child': {\r\n marginRight: 16,\r\n },\r\n '& .ms-Slider-container': {\r\n marginLeft: 16,\r\n marginRight: 16,\r\n },\r\n },\r\n '& .responsive-ad-preview-content-link': {\r\n color: 'inherit',\r\n },\r\n '& .responsive-ad-preview-content-link:hover': {\r\n textDecoration: 'none',\r\n },\r\n },\r\n // Video control styles\r\n '& video::-webkit-media-controls-current-time-display, & video::-webkit-media-controls-time-remaining-display, & video::-webkit-media-controls-fullscreen-button': {\r\n display: 'none',\r\n },\r\n\r\n '& .text-container': {\r\n padding: 8,\r\n '& .long-headline ': {\r\n '& .multi-line-processed-text': {\r\n fontSize: 14,\r\n lineHeight: '20px',\r\n color: '#2B2B2B',\r\n },\r\n },\r\n '& .multi-line-processed-text': {\r\n height: 40,\r\n },\r\n '& .business-name-with-ads': {\r\n position: 'absolute',\r\n bottom: 8,\r\n '& .adslabel': {\r\n fontSize: 10,\r\n borderRadius: '4px',\r\n background: '#107C10',\r\n height: 16,\r\n padding: '2px 4px 2px 4px',\r\n },\r\n '& .business-name': {\r\n color: '#555555',\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .disclaimer-info, & .additional-disclaimer': {\r\n fontSize: 12,\r\n lineHeight: '20px',\r\n textAlign: 'left',\r\n },\r\n\r\n '& .disclaimer-info': {\r\n padding: '0 24px 20px 24px',\r\n },\r\n\r\n '& .additional-disclaimer': {\r\n bottom: 0,\r\n padding: '0 24px',\r\n },\r\n\r\n '& button.view-placements': {\r\n position: 'absolute',\r\n right: 20,\r\n bottom: 70,\r\n color: palette.themePrimary,\r\n },\r\n '& button.view-placements .iconba': {\r\n top: 1,\r\n fontSize: 16,\r\n },\r\n },\r\n});\r\n","export const getExtensionPreviewStyles = () => ({\r\n '& .bing-desktop-img': {\r\n border: '0.5px solid #ddd',\r\n width: '548px',\r\n height: '242px',\r\n padding: '10px',\r\n '& .text-container': {\r\n height: '110px',\r\n '& .ad-logo': {\r\n position: 'absolute',\r\n color: '#999',\r\n fontWeight: 'bold',\r\n backgroundColor: '#fff',\r\n lineHeight: '0.05em',\r\n fontSize: '7px',\r\n border: '0.5px solid #ddd',\r\n borderRadius: '4px',\r\n padding: '4px 1px 0px 1px',\r\n '& p': {\r\n margin: '0 0 5px !important',\r\n },\r\n },\r\n '& .long-headline': {\r\n fontSize: '20px',\r\n fontWeight: 'bold',\r\n width: '548px',\r\n position: 'relative',\r\n overflow: 'hidden',\r\n color: '#003DC1',\r\n lineHeight: '25px',\r\n },\r\n '& .final-url': {\r\n width: '548px',\r\n position: 'relative',\r\n overflow: 'hidden',\r\n color: '#0b6a0b',\r\n fontSize: '12px',\r\n },\r\n '& .description': {\r\n margin: '2px 0px 7px 0px',\r\n color: '#333',\r\n fontSize: '12px',\r\n },\r\n },\r\n '& .image-combo-contanier': {\r\n float: 'left',\r\n marginRight: '5px',\r\n height: '135px',\r\n borderRadius: '6px',\r\n border: '0.5px solid #ddd',\r\n width: '130px',\r\n overflow: 'hidden',\r\n '& .image-container': {\r\n overflow: 'hidden',\r\n },\r\n '& .text-container': {\r\n height: '45px',\r\n padding: '2px',\r\n '& .extension-headline': {\r\n fontSize: '13px',\r\n lineHeight: '15px',\r\n height: '32px',\r\n color: '#003DC1',\r\n fontWeight: 'normal',\r\n },\r\n },\r\n },\r\n },\r\n '& .mobile-multi-img': {\r\n borderRadius: '6px',\r\n border: '0.5px solid #ddd',\r\n '& .ad-logo': {\r\n position: 'absolute',\r\n color: '#fff',\r\n backgroundColor: '#666',\r\n top: '10px',\r\n left: '5px',\r\n lineHeight: '0.1em',\r\n border: '1px solid #ddd',\r\n borderRadius: '6px',\r\n padding: '5px 1px 2px 1px',\r\n '& p': {\r\n margin: '0 0 5px !important',\r\n },\r\n },\r\n '& .text-container': {\r\n height: '118px',\r\n padding: '10px',\r\n width: '400px',\r\n '& .long-headline': {\r\n fontWeight: '400',\r\n fontSize: '18px',\r\n width: '100%',\r\n height: '24px',\r\n color: '#003DC1',\r\n },\r\n '& .final-url': {\r\n width: '100%',\r\n height: '20px',\r\n position: 'relative',\r\n overflow: 'hidden',\r\n color: '#0b6a0b',\r\n borderBottom: '1px solid #ddd',\r\n paddingBottom: '6px',\r\n marginBottom: '6px',\r\n fontWeight: '400',\r\n fontSize: '14px',\r\n },\r\n '& .description': {\r\n height: '40px',\r\n margin: '2px 0px 7px 0px',\r\n color: '#333',\r\n fontSize: '14px',\r\n fontWeight: '400',\r\n lineHeight: '20px',\r\n },\r\n },\r\n },\r\n '& .bing-single-image': {\r\n border: '0.5px solid #ddd',\r\n width: '608px',\r\n height: '110px',\r\n padding: '3px',\r\n '& .image-container': {\r\n float: 'right',\r\n transform: 'translate(20px,20px)',\r\n width: '100px',\r\n height: '75px',\r\n margin: '8px',\r\n },\r\n '& .text-container': {\r\n margin: '4px 8px 0px 8px',\r\n '& .long-headline': {\r\n fontWeight: '400',\r\n fontSize: '20px',\r\n lineHeight: '24px',\r\n height: '28px',\r\n overflow: 'hidden',\r\n },\r\n '& .final-url': {\r\n overflow: 'hidden',\r\n color: '#0b6a0b',\r\n fontSize: '14px',\r\n height: '20px',\r\n },\r\n '& .description': {\r\n color: '#333',\r\n fontSize: '13px',\r\n },\r\n },\r\n },\r\n});\r\n\r\nexport const multiImageInnerCarouselStyles = (palette, iconFontFamily) => ({\r\n '& .mobile-multi-img .image-combo-contanier': {\r\n '& .carousel-inner': {\r\n paddingBottom: 0,\r\n },\r\n },\r\n\r\n '& .ad-preview-title': {\r\n fontSize: 18,\r\n fontWeight: 'normal',\r\n lineHeight: '24px',\r\n margin: '20px 24px 16px 24px',\r\n },\r\n\r\n '& .carousel-inner': {\r\n paddingBottom: 64,\r\n '& > .item.active': {\r\n paddingLeft: 0,\r\n paddingRight: 0,\r\n },\r\n },\r\n\r\n '& ol.carousel-indicators': {\r\n position: 'absolute',\r\n bottom: 0,\r\n left: 0,\r\n margin: '20px 24px',\r\n width: 'auto',\r\n\r\n '& li': {\r\n background: 'rgba(255, 255, 255, 0.8)',\r\n border: '1px solid #605E5C',\r\n borderRadius: 10,\r\n margin: '0 10px 0 0',\r\n height: 10,\r\n width: 10,\r\n },\r\n\r\n '& li.active': {\r\n background: palette.themePrimary,\r\n border: `1px solid ${palette.themePrimary}`,\r\n },\r\n },\r\n\r\n '& .carousel-controls': {\r\n display: 'none',\r\n },\r\n\r\n '& .carousel-control': {\r\n color: palette.themePrimary,\r\n position: 'absolute',\r\n left: 'auto',\r\n top: 'auto',\r\n right: 0,\r\n bottom: 0,\r\n height: 32,\r\n width: 16,\r\n paddingRight: 4,\r\n margin: '20px 24px',\r\n textShadow: 'none',\r\n background: 'rgba(255, 255, 255, 0.6)',\r\n\r\n '&.left': {\r\n marginRight: 76,\r\n },\r\n\r\n '& .glyphicon-chevron-left, & .glyphicon-chevron-right': {\r\n fontFamily: iconFontFamily,\r\n position: 'relative',\r\n top: 'auto',\r\n right: 'auto',\r\n bottom: 'auto',\r\n left: 'auto',\r\n margin: 0,\r\n fontSize: 16,\r\n lineHeight: 1,\r\n verticalAlign: 0,\r\n },\r\n },\r\n});\r\n","export const getMMAPreviewStyles = () => ({\r\n '& .new-responsive-ad-preview-container': {\r\n height: 500,\r\n wordBreak: 'break-word',\r\n\r\n '& .responsive-ad-preview-content': {\r\n top: '45%',\r\n },\r\n\r\n '& .preview-type-string': {\r\n bottom: 40,\r\n },\r\n\r\n '& .additional-disclaimer': {\r\n padding: 0,\r\n },\r\n\r\n '& .ads-label': {\r\n position: 'absolute',\r\n backgroundColor: 'white',\r\n color: 'black',\r\n fontSize: 11,\r\n borderRadius: 5,\r\n padding: '1.2px 6px 1.8px 6px',\r\n margin: '7px',\r\n opacity: '90%',\r\n },\r\n\r\n '& .multimedia-ad-wide-image': {\r\n '& .text-container': {\r\n position: 'absolute',\r\n left: 0,\r\n paddingLeft: 32,\r\n '& .short-headline': {\r\n position: 'relative',\r\n bottom: 15,\r\n fontSize: 24,\r\n color: 'white',\r\n },\r\n '& .final-url': {\r\n position: 'relative',\r\n bottom: 10,\r\n fontSize: 10,\r\n color: 'white',\r\n },\r\n '& .description': {\r\n position: 'relative',\r\n bottom: 5,\r\n fontSize: 14,\r\n color: 'white',\r\n },\r\n '& .action-button': {\r\n position: 'relative',\r\n borderRadius: 32,\r\n border: 'none',\r\n padding: '7px 16px 8px 16px',\r\n fontSize: 16,\r\n color: '#666',\r\n backgroundColor: '#EEE',\r\n opacity: '70%',\r\n fontWeight: 'bold',\r\n },\r\n },\r\n '& .gradient': {\r\n display: 'block',\r\n position: 'absolute',\r\n backgroundImage: 'linear-gradient(to left, transparent 0, black 100%)',\r\n height: 152,\r\n width: '100%',\r\n content: '',\r\n },\r\n '& .ads-label': {\r\n right: '0%',\r\n },\r\n },\r\n\r\n '& .multimedia-ad-landscape-image': {\r\n height: 'fit-content',\r\n '& .text-container': {\r\n bottom: 0,\r\n left: 0,\r\n padding: '8px 20px 20px 20px',\r\n lineHeight: 1.1,\r\n maxWidth: '-webkit-fill-available',\r\n width: 466,\r\n '& .short-headline': {\r\n bottom: 20,\r\n fontSize: 24,\r\n color: 'black',\r\n marginBottom: 8,\r\n },\r\n '& .final-url': {\r\n bottom: 18,\r\n fontSize: 10,\r\n color: 'green',\r\n marginBottom: 8,\r\n },\r\n '& .description': {\r\n bottom: 8,\r\n fontSize: 14,\r\n color: 'black',\r\n maxWidth: 250,\r\n paddingRight: 16,\r\n wordWrap: 'break-word',\r\n },\r\n '& .action-button': {\r\n position: 'absolute',\r\n bottom: 15,\r\n right: 15,\r\n borderRadius: 32,\r\n border: 'none',\r\n padding: '6px 16px 8px 16px',\r\n fontSize: 16,\r\n backgroundColor: '#a19f9d',\r\n color: 'white',\r\n opacity: '90%',\r\n fontWeight: 'bold',\r\n },\r\n },\r\n },\r\n\r\n '& .multimedia-ad-square-image': {\r\n '& .text-container': {\r\n position: 'absolute',\r\n left: 0,\r\n paddingLeft: 32,\r\n lineHeight: 1.1,\r\n '& .short-headline': {\r\n position: 'relative',\r\n bottom: 20,\r\n fontSize: 24,\r\n color: 'white',\r\n },\r\n '& .final-url': {\r\n position: 'relative',\r\n bottom: 18,\r\n fontSize: 10,\r\n color: 'green',\r\n },\r\n '& .description': {\r\n position: 'relative',\r\n bottom: 8,\r\n fontSize: 14,\r\n color: 'white',\r\n },\r\n '& .action-button': {\r\n position: 'relative',\r\n borderRadius: 32,\r\n border: 'none',\r\n padding: '6px 16px 8px 16px',\r\n fontSize: 16,\r\n backgroundColor: '#a19f9d',\r\n color: 'white',\r\n opacity: '90%',\r\n fontWeight: 'bold',\r\n },\r\n },\r\n '& .gradient': {\r\n display: 'block',\r\n position: 'absolute',\r\n backgroundImage: 'linear-gradient(to bottom, transparent 0, black 100%)',\r\n height: 400,\r\n width: '100%',\r\n content: '',\r\n },\r\n },\r\n\r\n '& .multimedia-ad-vertical-image': {\r\n '& .text-container': {\r\n position: 'absolute',\r\n left: 0,\r\n paddingLeft: 32,\r\n lineHeight: 1.1,\r\n '& .short-headline': {\r\n position: 'relative',\r\n bottom: 20,\r\n fontSize: 24,\r\n color: 'white',\r\n },\r\n '& .final-url': {\r\n position: 'relative',\r\n bottom: 15,\r\n fontSize: 10,\r\n color: 'green',\r\n },\r\n '& .description': {\r\n position: 'relative',\r\n bottom: 5,\r\n fontSize: 14,\r\n color: 'white',\r\n },\r\n '& .action-button': {\r\n position: 'relative',\r\n top: 5,\r\n borderRadius: 3,\r\n border: 'solid 1px #dddddd',\r\n padding: '5px 16px 6px 16px',\r\n fontSize: 14,\r\n backgroundColor: '#a19f9d',\r\n color: 'white',\r\n opacity: '90%',\r\n fontWeight: 'bold',\r\n },\r\n },\r\n '& .gradient': {\r\n display: 'block',\r\n position: 'absolute',\r\n backgroundImage: 'linear-gradient(to bottom, transparent 0, black 100%)',\r\n height: 400,\r\n width: '100%',\r\n content: '',\r\n },\r\n },\r\n },\r\n});\r\n","// originally from edit-image-common-style in ui-next/common-styles\r\n\r\nexport const getMsanPreviewStyles = () => ({\r\n '& .new-responsive-ad-preview-container .additional-disclaimer': {\r\n position: 'absolute',\r\n bottom: 35,\r\n fontSize: 12,\r\n textAlign: 'center',\r\n width: '100%',\r\n },\r\n '& .new-responsive-ad-preview-container .text-container': {\r\n bottom: 25,\r\n left: 20,\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n // '& .new-responsive-ad-preview-container .text-container .short-headline': {\r\n // overflow: 'hidden',\r\n // fontWeight: '200',\r\n // paddingBottom: 1,\r\n // },\r\n '& .new-responsive-ad-preview-container .text-container .short-headline': {\r\n fontWeight: '200',\r\n fontSize: 20,\r\n paddingBottom: 5,\r\n },\r\n '& .new-responsive-ad-preview-container .text-container .business-name-with-ads': {\r\n marginTop: 9,\r\n padding: '1px 0',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n '& .new-responsive-ad-preview-container .text-container .business-name-with-ads .business-name': {\r\n fontSize: 11,\r\n lineHeight: '1.364',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n '& .new-responsive-ad-preview-container .msn-single-carousel .text-container, .new-responsive-ad-preview-container .msn-single-carousel-v2 .text-container, .new-responsive-ad-preview-container .edge-single-carousel .text-container, .new-responsive-ad-preview-container .msn-double-carousel .text-container, .new-responsive-ad-preview-container .edge-medium-headline .text-container': {\r\n position: 'absolute',\r\n color: '#bebebe',\r\n },\r\n '& .new-responsive-ad-preview-container .msn-single-carousel .text-container .long-headline, .new-responsive-ad-preview-container .msn-single-carousel-v2 .text-container .long-headline, .new-responsive-ad-preview-container .edge-single-carousel .text-container .short-headline, .new-responsive-ad-preview-container .msn-double-carousel .text-container .long-headline, .new-responsive-ad-preview-container .edge-medium-carousel .text-container .long-headline': {\r\n color: 'white',\r\n },\r\n '& .new-responsive-ad-preview-container .msn-single-carousel .text-container .short-headline, .new-responsive-ad-preview-container .msn-single-carousel-v2 .text-container .short-headline, .new-responsive-ad-preview-container .edge-single-carousel .text-container .short-headline, .new-responsive-ad-preview-container .msn-double-carousel .text-container .short-headline, .new-responsive-ad-preview-container .edge-medium-headline .text-container .short-headline': {\r\n color: 'white',\r\n },\r\n '& .new-responsive-ad-preview-container .msn-single-carousel .gradient::after, .new-responsive-ad-preview-container .msn-single-carousel-v2 .gradient::after, .new-responsive-ad-preview-container .edge-single-carousel .gradient::after, .new-responsive-ad-preview-container .msn-double-carousel .gradient::after': {\r\n display: 'block',\r\n position: 'relative',\r\n backgroundImage: 'linear-gradient(to bottom, transparent 0, black 100%)',\r\n marginTop: -250,\r\n height: 280,\r\n width: '100%',\r\n content: '\\'\\'',\r\n },\r\n '& .new-responsive-ad-preview-container .boost-windows': {\r\n border: 'none',\r\n '& .hardcode-time': {\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n position: 'absolute',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n top: 20,\r\n left: '50%',\r\n color: 'white',\r\n transform: 'translate(-50%)',\r\n '& .welcome': {\r\n marginBottom: 10,\r\n },\r\n '& .time': {\r\n fontSize: 40,\r\n },\r\n },\r\n '& .text-container': {\r\n display: 'flex',\r\n right: 80,\r\n top: 20,\r\n color: 'white',\r\n bottom: 'unset',\r\n left: 'unset',\r\n padding: 10,\r\n fontSize: 8,\r\n position: 'absolute',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: 130,\r\n height: 130,\r\n backgroundColor: '#272a14',\r\n opacity: 0.8,\r\n borderRadius: 5,\r\n },\r\n '& .hotspot0': {\r\n position: 'absolute',\r\n color: 'white',\r\n top: 20,\r\n left: 80,\r\n display: 'flex',\r\n padding: 10,\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: 130,\r\n height: 130,\r\n fontSize: 8,\r\n backgroundColor: '#272a14',\r\n opacity: 0.8,\r\n borderRadius: 5,\r\n '& .hotspot-action': {\r\n marginTop: 10,\r\n curosr: 'pointer',\r\n },\r\n },\r\n '& .hotspot1': {\r\n position: 'absolute',\r\n color: 'white',\r\n top: '50%',\r\n left: '50%',\r\n padding: 10,\r\n transform: 'translate(-50%, -50%)',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: 130,\r\n height: 130,\r\n fontSize: 8,\r\n backgroundColor: '#272a14',\r\n opacity: 0.8,\r\n borderRadius: 5,\r\n '& .hotspot-action': {\r\n marginTop: 10,\r\n curosr: 'pointer',\r\n },\r\n },\r\n '& .hotspot2': {\r\n position: 'absolute',\r\n color: 'white',\r\n top: 250,\r\n right: 80,\r\n padding: 10,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: 130,\r\n height: 130,\r\n fontSize: 8,\r\n backgroundColor: '#272a14',\r\n opacity: 0.8,\r\n borderRadius: 5,\r\n '& .hotspot-action': {\r\n marginTop: 10,\r\n curosr: 'pointer',\r\n },\r\n },\r\n },\r\n '& .new-responsive-ad-preview-container .boost-discover-card': {\r\n width: 280,\r\n height: 400,\r\n borderRadius: 5,\r\n '& .hardcode-discover': {\r\n position: 'absolute',\r\n left: 0,\r\n top: 0,\r\n width: '100%',\r\n fontSize: 16,\r\n color: 'black',\r\n borderBottom: '1px solid #C8C8C8',\r\n paddingLeft: 10,\r\n },\r\n '& .image-container': {\r\n position: 'absolute',\r\n left: '50%',\r\n top: 27,\r\n transform: 'translateX(-50%)',\r\n },\r\n '& .short-headline': {\r\n left: 15,\r\n top: 288,\r\n position: 'absolute',\r\n width: 250,\r\n fontSize: 12,\r\n fontWeight: 'bold',\r\n color: 'black',\r\n },\r\n '& .description': {\r\n left: 15,\r\n top: 310,\r\n fontSize: 12,\r\n position: 'absolute',\r\n color: 'black',\r\n },\r\n '& .action-button': {\r\n backgroundColor: 'transparent',\r\n position: 'absolute',\r\n left: 15,\r\n top: 353,\r\n padding: 0,\r\n fontSize: 12,\r\n border: 'none',\r\n borderRadius: 5,\r\n },\r\n },\r\n '& .new-responsive-ad-preview-container .boost-start-menu': {\r\n width: 280,\r\n height: 60,\r\n backgroundColor: '#262632',\r\n '& .logo-container': {\r\n position: 'absolute',\r\n top: '50%',\r\n left: 10,\r\n transform: 'translateY(-50%)',\r\n },\r\n '& .short-headline': {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n fontSize: 12,\r\n width: 200,\r\n color: 'white',\r\n },\r\n '& .long-headline': {\r\n position: 'absolute',\r\n top: 15,\r\n left: 40,\r\n fontSize: 12,\r\n color: 'white',\r\n },\r\n },\r\n '& .new-responsive-ad-preview-container .boost-actionCenter': {\r\n width: 280,\r\n height: 150,\r\n backgroundColor: '#e8e9eb',\r\n '& .logo-container': {\r\n position: 'absolute',\r\n top: 20,\r\n left: 20,\r\n },\r\n '& .short-headline': {\r\n position: 'absolute',\r\n top: 20,\r\n left: 80,\r\n width: 180,\r\n fontSize: 12,\r\n color: 'black',\r\n fontWeight: 'bold',\r\n },\r\n '& .description': {\r\n position: 'absolute',\r\n top: 50,\r\n fontSize: 12,\r\n left: 80,\r\n width: 180,\r\n color: 'black',\r\n },\r\n '& .action-button': {\r\n position: 'absolute',\r\n left: 20,\r\n top: 120,\r\n color: 'black',\r\n width: 120,\r\n backgroundColor: 'white',\r\n border: 'none',\r\n height: 20,\r\n },\r\n '& .dismiss-button': {\r\n position: 'absolute',\r\n left: 150,\r\n top: 120,\r\n width: 120,\r\n color: 'black',\r\n backgroundColor: 'white',\r\n border: 'none',\r\n height: 20,\r\n },\r\n },\r\n '& .new-responsive-ad-preview-container .boost-coachmark': {\r\n width: 280,\r\n height: 300,\r\n '& .short-headline': {\r\n left: 20,\r\n top: 180,\r\n position: 'absolute',\r\n fontWeight: 'bold',\r\n color: 'black',\r\n },\r\n '& .description': {\r\n left: 20,\r\n top: 210,\r\n fontSize: 20,\r\n position: 'absolute',\r\n color: 'black',\r\n },\r\n '& .action-button': {\r\n backgroundColor: '#0078d4',\r\n position: 'absolute',\r\n left: 20,\r\n top: 260,\r\n padding: 8,\r\n fontSize: 15,\r\n border: 'none',\r\n color: 'white',\r\n borderRadius: 5,\r\n },\r\n },\r\n '& .new-responsive-ad-preview-container .boost-banner': {\r\n height: 35,\r\n width: 600,\r\n '& .logo-container': {\r\n position: 'absolute',\r\n top: '50%',\r\n left: 10,\r\n transform: 'translateY(-50%)',\r\n },\r\n '& .short-headline': {\r\n position: 'absolute',\r\n top: '50%',\r\n left: 40,\r\n fontSize: 12,\r\n color: 'black',\r\n transform: 'translateY(-50%)',\r\n width: 220,\r\n },\r\n '& .action-button': {\r\n position: 'absolute',\r\n top: '50%',\r\n left: 450,\r\n padding: '5px 10px',\r\n border: 'none',\r\n color: 'white',\r\n borderRadius: 10,\r\n backgroundColor: '#0078d4',\r\n transform: 'translateY(-50%)',\r\n },\r\n '& .dismiss-button': {\r\n position: 'absolute',\r\n top: '50%',\r\n left: 520,\r\n border: 'none',\r\n padding: '5px 10px',\r\n borderRadius: 10,\r\n color: 'black',\r\n transform: 'translateY(-50%)',\r\n },\r\n },\r\n '& .new-responsive-ad-preview-container .boost-191X1': {\r\n width: 268,\r\n height: 270,\r\n background: '#262632 !important',\r\n borderRadius: 8,\r\n '& .image-container': {\r\n position: 'absolute',\r\n width: '100%',\r\n height: 140,\r\n top: 0,\r\n },\r\n '& .long-headline': {\r\n position: 'absolute',\r\n width: 250,\r\n fontSize: 18,\r\n left: 20,\r\n top: 180,\r\n color: 'white',\r\n fontWeight: 600,\r\n },\r\n '& .business-name-with-ads': {\r\n position: 'absolute',\r\n top: 140,\r\n left: 20,\r\n color: 'white',\r\n },\r\n },\r\n '& .new-responsive-ad-preview-container .video-ad-text .business-name-with-ads .adslabel': {\r\n fontSize: 11,\r\n lineHeight: '1.364',\r\n margin: '0 5px 0 0',\r\n background: '#1e6525',\r\n borderRadius: 2,\r\n color: '#fff',\r\n fontFamily: '\"Segoe UI\",\"Segoe WP\",Arial,Sans-Serif',\r\n fontWeight: '400',\r\n padding: '1.2px 6px 1.8px 6px',\r\n width: 'auto',\r\n },\r\n '& .new-responsive-ad-preview-container .edge-medium-headline .gradient::after': {\r\n display: 'block',\r\n position: 'relative',\r\n backgroundImage: 'linear-gradient(to bottom, transparent 0, rgb(46, 46, 46) 100%)',\r\n marginTop: -279,\r\n height: 280,\r\n width: '100%',\r\n content: '\\'\\'',\r\n },\r\n '& .new-responsive-ad-preview-container .msn-single-carousel:hover, .new-responsive-ad-preview-container .msn-single-carousel-v2:hover, .new-responsive-ad-preview-container .edge-single-carousel:hover, .new-responsive-ad-preview-container .msn-double-carousel:hover, .new-responsive-ad-preview-container .edge-medium-headline:hover': {\r\n cursor: 'pointer',\r\n },\r\n '& .new-responsive-ad-preview-container .msn-single-carousel:hover .long-headline, .new-responsive-ad-preview-container .msn-single-carousel-v2:hover .long-headline, .new-responsive-ad-preview-container .edge-single-carousel:hover .long-headline, .new-responsive-ad-preview-container .msn-double-carousel:hover .long-headline, .new-responsive-ad-preview-container .msn-single-carousel:hover .short-headline, .new-responsive-ad-preview-container .edge-single-carousel:hover .short-headline, .new-responsive-ad-preview-container .msn-double-carousel:hover .short-headline': {\r\n textDecoration: 'underline',\r\n },\r\n '& .new-responsive-ad-preview-container .msn-single-carousel:hover .gradient::after, .new-responsive-ad-preview-container .msn-single-carousel-v2:hover .gradient::after, .new-responsive-ad-preview-container .edge-single-carousel:hover .gradient::after, .new-responsive-ad-preview-container .msn-double-carousel:hover .gradient::after, .new-responsive-ad-preview-container .edge-medium-headline:hover .gradient::after': {\r\n marginTop: -450,\r\n height: 480,\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-wide, .new-responsive-ad-preview-container .msn-medium-headline, .new-responsive-ad-preview-container .msn-in-article, .new-responsive-ad-preview-container .msn-small-headline, .new-responsive-ad-preview-container .msn-restoday, .new-responsive-ad-preview-container .audience-network-square-image, .new-responsive-ad-preview-container .msn-partner-stripe, .new-responsive-ad-preview-container .audience-network-banner, .new-responsive-ad-preview-container .mobile-web-outlook': {\r\n margin: 'auto',\r\n background: '#fff',\r\n border: 'solid',\r\n borderWidth: 'thin',\r\n color: '#ddd',\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-rectangle .text-container': {\r\n position: 'absolute',\r\n // color: '#bebebe',\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-rectangle .gradient::after': {\r\n display: 'block',\r\n position: 'relative',\r\n backgroundImage: 'linear-gradient(to bottom, transparent 0, black 100%)',\r\n marginTop: -250,\r\n height: 280,\r\n width: '100%',\r\n content: '\\'\\'',\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-rectangle:hover': {\r\n cursor: 'pointer',\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-rectangle:hover .short-headline': {\r\n textDecoration: 'underline',\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-rectangle:hover .gradient::after': {\r\n marginTop: -450,\r\n height: 480,\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-rectangle': {\r\n width: 300,\r\n height: 250,\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-rectangle .text-container .short-headline': {\r\n fontSize: 20,\r\n fontWeight: 200,\r\n fontFamily: 'Segoe UI Semibold',\r\n width: 268,\r\n marginBottom: 20,\r\n lineHeight: '26px',\r\n color: '#fff',\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-rectangle .text-container .long-headline .multi-line-processed-text': {\r\n position: 'absolute',\r\n bottom: 30,\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-wide .text-container, .new-responsive-ad-preview-container .audience-network-rectangle .text-container, .new-responsive-ad-preview-container .msn-medium-headline .text-container, .new-responsive-ad-preview-container .msn-in-article .text-container, .new-responsive-ad-preview-container .msn-small-headline .text-container, .new-responsive-ad-preview-container .msn-restoday .text-container, .new-responsive-ad-preview-container .audience-network-square-image .text-container, .new-responsive-ad-preview-container .msn-partner-stripe .text-container, .new-responsive-ad-preview-container .audience-network-banner .text-container, .new-responsive-ad-preview-container .mobile-web-outlook .text-container': {\r\n color: '#333',\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-wide .text-container .business-name-with-ads .business-name, .new-responsive-ad-preview-container .msn-medium-headline .text-container .business-name-with-ads .business-name, .new-responsive-ad-preview-container .msn-in-article .text-container .business-name-with-ads .business-name, .new-responsive-ad-preview-container .msn-small-headline .text-container .business-name-with-ads .business-name, .new-responsive-ad-preview-container .audience-network-square-image .text-container .business-name-with-ads .business-name, .new-responsive-ad-preview-container .msn-restoday .text-container .business-name-with-ads .business-name, .new-responsive-ad-preview-container .msn-partner-stripe .text-container .business-name-with-ads .business-name, .new-responsive-ad-preview-container .audience-network-banner .text-container .business-name-with-ads .business-name, .new-responsive-ad-preview-container .mobile-web-outlook .text-container .business-name-with-ads .business-name': {\r\n color: '#333',\r\n },\r\n '& .new-responsive-ad-preview-container .msn-single-carousel': {\r\n width: 622,\r\n height: 368,\r\n },\r\n '& .new-responsive-ad-preview-container .msn-single-carousel .text-container .long-headline': {\r\n width: 575,\r\n height: 80,\r\n fontSize: 28,\r\n lineHeight: '1.214',\r\n },\r\n '& .new-responsive-ad-preview-container .msn-single-carousel .text-container .long-headline .multi-line-processed-text': {\r\n position: 'absolute',\r\n bottom: 30,\r\n },\r\n '& .new-responsive-ad-preview-container .edge-single-carousel': {\r\n width: 624,\r\n height: 350,\r\n },\r\n '& .new-responsive-ad-preview-container .edge-single-carousel .text-container .short-headline': {\r\n height: 73,\r\n fontSize: 28,\r\n lineHeight: '33.99px',\r\n width: 590,\r\n marginBottom: 20,\r\n },\r\n '& .new-responsive-ad-preview-container .edge-single-carousel .text-container .short-headline .multi-line-processed-text': {\r\n position: 'absolute',\r\n bottom: 30,\r\n },\r\n '& .new-responsive-ad-preview-container .edge-carousel': {\r\n width: 612,\r\n height: 304,\r\n border: 0,\r\n },\r\n '& .new-responsive-ad-preview-container .edge-carousel .text-container .short-headline': {\r\n fontSize: 28,\r\n fontWeight: 600,\r\n lineHeight: '36px',\r\n width: 592,\r\n height: 'auto',\r\n maxHeight: 108,\r\n marginBottom: 0,\r\n color: 'white',\r\n },\r\n // '& .new-responsive-ad-preview-container .edge-carousel .text-container .short-headline .multi-line-processed-text': {\r\n // position: 'absolute',\r\n // bottom: 30,\r\n // },\r\n '& .new-responsive-ad-preview-container .edge-carousel:hover': {\r\n cursor: 'pointer',\r\n },\r\n '& .new-responsive-ad-preview-container .edge-carousel:hover .short-headline': {\r\n textDecoration: 'underline',\r\n color: 'white',\r\n },\r\n '& .new-responsive-ad-preview-container .edge-carousel:hover .gradient::after': {\r\n marginTop: -450,\r\n height: 480,\r\n },\r\n '& .new-responsive-ad-preview-container .edge-carousel .text-container': {\r\n position: 'absolute',\r\n color: '#bebebe',\r\n left: 0,\r\n padding: 16,\r\n bottom: 0,\r\n },\r\n '& .new-responsive-ad-preview-container .edge-carousel .gradient::after': {\r\n display: 'block',\r\n position: 'relative',\r\n backgroundImage: 'linear-gradient(to bottom, transparent 0, black 100%)',\r\n marginTop: -250,\r\n height: 280,\r\n width: '100%',\r\n content: '\\'\\'',\r\n },\r\n '& .new-responsive-ad-preview-container .msn-single-carousel-v2': {\r\n width: 628,\r\n height: 372,\r\n },\r\n '& .new-responsive-ad-preview-container .msn-single-carousel-v2 .text-container .long-headline': {\r\n maxHeight: 108,\r\n fontSize: 28,\r\n lineHeight: '36px',\r\n width: 576,\r\n marginBottom: 0,\r\n fontWeight: 600,\r\n },\r\n '& .new-responsive-ad-preview-container .msn-single-carousel-v2 .text-container .long-headline .multi-line-processed-text': {\r\n position: 'absolute',\r\n bottom: 30,\r\n },\r\n '& .new-responsive-ad-preview-container .msn-double-carousel': {\r\n width: 310,\r\n height: 333,\r\n },\r\n '& .new-responsive-ad-preview-container .msn-double-carousel .text-container .short-headline': {\r\n fontSize: 20,\r\n lineHeight: '1.3',\r\n height: 54,\r\n width: 280,\r\n },\r\n '& .new-responsive-ad-preview-container .msn-double-carousel .text-container .short-headline .multi-line-processed-text': {\r\n position: 'absolute',\r\n bottom: 30,\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-wide': {\r\n width: 382,\r\n height: 364,\r\n padding: 3,\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-wide .text-container': {\r\n padding: 10,\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-wide .text-container .short-headline': {\r\n fontSize: 18,\r\n lineHeight: '1.2',\r\n height: 60,\r\n position: 'relative',\r\n top: -6,\r\n color: '#207697',\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-wide .text-container .description': {\r\n height: 45,\r\n margin: '5px 0 10px 0',\r\n fontSize: 14,\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-wide-v2': {\r\n width: 300,\r\n height: 304,\r\n border: 0,\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-wide-v2 .image-container': {\r\n // position: 'absolute',\r\n width: 300,\r\n height: 157,\r\n left: 0,\r\n top: 0,\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-wide-v2 .text-container': {\r\n width: 300,\r\n height: 147,\r\n padding: '12px 12px 12px 12px',\r\n background: 'linear-gradient(112.05deg, #FFFFFF 35.59%, #E1E1E1 100%)',\r\n },\r\n // '& .new-responsive-ad-preview-container .audience-network-wide-v2 .text-container .gradient::after': {\r\n // // display: 'block',\r\n // position: 'relative',\r\n // background: 'linear-gradient(to bottom, transparent 0, #E1E1E1 100%)',\r\n // // marginTop: -279,\r\n // // height: 280,\r\n // // width: '100%',\r\n // // content: '\\'\\'',\r\n // },\r\n '& .new-responsive-ad-preview-container .audience-network-wide-v2 .text-container .short-headline': {\r\n width: 268,\r\n // height: 44,\r\n fontFamily: 'Segoe UI Variable Static Text',\r\n fontStyle: 'normal',\r\n fontWeight: 600,\r\n fontSize: 20,\r\n lineHeight: 1.1,\r\n color: '#1A1A1A',\r\n position: 'relative',\r\n top: 0,\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-wide-v2 .text-container .description': {\r\n width: 268,\r\n // height: 40,\r\n fontFamily: 'Segoe UI Variable Static Text',\r\n fontStyle: 'normal',\r\n marginTop: 4,\r\n lineHeight: 1.43,\r\n fontWeight: 400,\r\n fontSize: 14,\r\n color: '#4D4C4C',\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-wide-v2 .text-container .business-name-with-ads .business-name, ': {\r\n color: '#333',\r\n },\r\n\r\n '& .new-responsive-ad-preview-container .msn-in-article': {\r\n width: 300,\r\n height: 364,\r\n padding: 3,\r\n },\r\n '& .new-responsive-ad-preview-container .msn-in-article .text-container': {\r\n height: 98,\r\n padding: 10,\r\n },\r\n '& .new-responsive-ad-preview-container .msn-in-article .text-container .short-headline': {\r\n fontSize: 15,\r\n lineHeight: '1.2',\r\n height: 60,\r\n position: 'relative',\r\n top: -6,\r\n overflow: 'hidden',\r\n color: '#207697',\r\n },\r\n '& .new-responsive-ad-preview-container .msn-in-article .text-container .description': {\r\n height: 45,\r\n margin: '5px 0 10px 0',\r\n fontSize: 14,\r\n color: '#333',\r\n },\r\n '& .new-responsive-ad-preview-container .msn-partner-stripe': {\r\n width: 302,\r\n height: 296,\r\n padding: 0,\r\n },\r\n '& .new-responsive-ad-preview-container .msn-partner-stripe .text-container': {\r\n height: 98,\r\n padding: 10,\r\n width: 282,\r\n },\r\n '& .new-responsive-ad-preview-container .msn-partner-stripe .text-container .long-headline': {\r\n fontSize: 14,\r\n width: 282,\r\n height: 40,\r\n margin: 0,\r\n overflow: 'hidden',\r\n lineHeight: '20px',\r\n position: 'relative',\r\n top: -6,\r\n color: '#2b2b2b',\r\n },\r\n '& .new-responsive-ad-preview-container .msn-medium-headline': {\r\n width: 300,\r\n height: 296,\r\n padding: 3,\r\n },\r\n '& .new-responsive-ad-preview-container .msn-medium-headline .text-container': {\r\n height: 98,\r\n padding: '15px 13px',\r\n },\r\n '& .new-responsive-ad-preview-container .msn-medium-headline .text-container .short-headline': {\r\n fontSize: 15,\r\n lineHeight: '1.467',\r\n height: 47,\r\n position: 'relative',\r\n top: -6,\r\n overflow: 'hidden',\r\n },\r\n '& .new-responsive-ad-preview-container .edge-medium-headline .text-container .short-headline .multi-line-processed-text': {\r\n position: 'absolute',\r\n bottom: 30,\r\n },\r\n '& .new-responsive-ad-preview-container .edge-medium-headline': {\r\n width: 300,\r\n height: 250,\r\n backgroundColor: 'rgb(46, 46, 46)',\r\n },\r\n '& .new-responsive-ad-preview-container .edge-medium-headline .text-container .short-headline': {\r\n fontSize: 20,\r\n lineHeight: '1.3',\r\n height: 54,\r\n color: 'white',\r\n width: 280,\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-square-image': {\r\n width: 300,\r\n height: 90,\r\n padding: 3,\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-square-image .image-container': {\r\n float: 'left',\r\n transform: 'none',\r\n width: 80,\r\n height: 75,\r\n margin: 8,\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-square-image .short-headline': {\r\n fontWeight: '600',\r\n fontSize: 13,\r\n lineHeight: '1.384',\r\n height: 45,\r\n margin: '8px 8px 0 8px',\r\n overflow: 'hidden',\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-square-image-v2': {\r\n margin: 'auto',\r\n background: '#fff',\r\n border: 'solid',\r\n borderWidth: 'thin',\r\n color: '#ddd',\r\n width: 240,\r\n height: 90,\r\n padding: 3,\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-square-image-v2 .image-container': {\r\n float: 'right',\r\n transform: 'none',\r\n width: 80,\r\n height: 75,\r\n margin: 8,\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-square-image-v2 .text-container': {\r\n marginLeft: 8,\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-square-image-v2 .short-headline': {\r\n fontWeight: '600',\r\n fontSize: 14,\r\n lineHeight: '22px',\r\n height: 45,\r\n margin: '8px 0 8px 0',\r\n overflow: 'hidden',\r\n color: 'black',\r\n fontFamily: 'Segoe UI',\r\n },\r\n '& .new-responsive-ad-preview-container .msn-restoday': {\r\n width: 306,\r\n height: 100,\r\n padding: 3,\r\n },\r\n '& .new-responsive-ad-preview-container .msn-restoday .image-container': {\r\n float: 'left',\r\n transform: 'none',\r\n width: 108,\r\n height: 84,\r\n margin: '8px 4px 0 8px',\r\n },\r\n '& .new-responsive-ad-preview-container .msn-restoday .text-container': {\r\n padding: 2,\r\n },\r\n '& .new-responsive-ad-preview-container .msn-restoday .text-container .short-headline': {\r\n fontWeight: '600',\r\n fontSize: 16,\r\n lineHeight: '22px',\r\n overflow: 'hidden',\r\n color: '#2b2b2b',\r\n height: 55,\r\n paddingTop: 5,\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-banner': {\r\n width: 360,\r\n height: 88,\r\n padding: 0,\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-banner .image-container': {\r\n float: 'left',\r\n transform: 'none',\r\n width: 180,\r\n height: 90,\r\n marginRight: 10,\r\n },\r\n '& .new-responsive-ad-preview-container .audience-network-banner .short-headline': {\r\n fontWeight: '600',\r\n fontSize: 15,\r\n fontFamily: 'Segoe UI Semibold',\r\n lineHeight: '22px',\r\n height: 45,\r\n margin: '8px 8px 0 8px',\r\n overflow: 'hidden',\r\n color: 'rgba(0, 0, 0, 0.83)',\r\n },\r\n '& .new-responsive-ad-preview-container .msn-small-headline': {\r\n width: 300,\r\n height: 90,\r\n padding: 3,\r\n },\r\n '& .new-responsive-ad-preview-container .msn-small-headline .image-container': {\r\n float: 'left',\r\n transform: 'none',\r\n width: 100,\r\n height: 75,\r\n margin: 8,\r\n },\r\n '& .new-responsive-ad-preview-container .msn-small-headline .short-headline': {\r\n fontWeight: '600',\r\n fontSize: 13,\r\n lineHeight: '1.384',\r\n height: 52,\r\n margin: '4px 8px 0 8px',\r\n overflow: 'hidden',\r\n },\r\n '& .new-responsive-ad-preview-container .web-desktop-outlook': {\r\n margin: '25px auto 0 auto',\r\n background: '#fff',\r\n border: 'solid',\r\n borderWidth: 'thin',\r\n color: '#ddd',\r\n height: 25,\r\n minWidth: 500,\r\n marginTop: 25,\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n },\r\n '& .new-responsive-ad-preview-container .web-desktop-outlook .ad-logo, .new-responsive-ad-preview-container .web-desktop-outlook .down-arrow, .new-responsive-ad-preview-container .web-desktop-outlook .short-headline, .new-responsive-ad-preview-container .web-desktop-outlook .description-separator, .new-responsive-ad-preview-container .web-desktop-outlook .description, .new-responsive-ad-preview-container .web-desktop-outlook .business-name': {\r\n display: 'inline-block',\r\n padding: 4,\r\n },\r\n '& .new-responsive-ad-preview-container .web-desktop-outlook .ad-logo': {\r\n verticalAlign: 'middle',\r\n backgroundColor: 'blue',\r\n width: 20,\r\n borderRadius: 4,\r\n height: 13,\r\n marginLeft: 4,\r\n },\r\n '& .new-responsive-ad-preview-container .web-desktop-outlook .ad-logo p': {\r\n position: 'absolute',\r\n top: 3,\r\n fontSize: 10,\r\n color: 'white',\r\n },\r\n '& .new-responsive-ad-preview-container .web-desktop-outlook .business-name': {\r\n marginRight: 40,\r\n color: 'black',\r\n },\r\n '& .new-responsive-ad-preview-container .web-desktop-outlook .down-arrow': {\r\n border: 'solid gray',\r\n borderWidth: '0 1.5px 1.5px 0',\r\n display: 'inline-block',\r\n padding: 2,\r\n transform: 'rotate(45deg) translateY(-3px)',\r\n W: 'rotate(45deg) translateY(-3px)',\r\n marginRight: 10,\r\n },\r\n '& .new-responsive-ad-preview-container .web-desktop-outlook .short-headline': {\r\n color: 'blue',\r\n },\r\n '& .new-responsive-ad-preview-container .web-desktop-outlook .description, .new-responsive-ad-preview-container .web-desktop-outlook .description-separator': {\r\n color: 'gray',\r\n },\r\n '& .new-responsive-ad-preview-container .mobile-web-outlook': {\r\n width: 340,\r\n height: 80,\r\n padding: '5px 10px 5px 15px',\r\n },\r\n '& .new-responsive-ad-preview-container .mobile-web-outlook .ad-logo, .new-responsive-ad-preview-container .mobile-web-outlook .business-name': {\r\n display: 'inline-block',\r\n padding: 4,\r\n overflow: 'hidden',\r\n maxWidth: 300,\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n height: 30,\r\n fontSize: 20,\r\n verticalAlign: 'middle',\r\n },\r\n '& .new-responsive-ad-preview-container .mobile-web-outlook .ad-logo': {\r\n verticalAlign: 'middle',\r\n backgroundColor: '#006ed4',\r\n width: 20,\r\n borderRadius: 4,\r\n height: 15,\r\n },\r\n '& .new-responsive-ad-preview-container .mobile-web-outlook .ad-logo p': {\r\n position: 'absolute',\r\n top: 11.5,\r\n fontSize: 10,\r\n color: 'white',\r\n },\r\n '& .new-responsive-ad-preview-container .mobile-web-outlook .business-name': {\r\n color: 'black',\r\n paddingTop: 6,\r\n },\r\n '& .new-responsive-ad-preview-container .mobile-web-outlook .short-headline': {\r\n color: '#1081d9',\r\n },\r\n '& .new-responsive-ad-preview-container .mobile-web-outlook .description': {\r\n color: 'gray',\r\n padding: '0',\r\n },\r\n '& .new-responsive-ad-preview-container .mobile-web-outlook .description, .new-responsive-ad-preview-container .mobile-web-outlook .short-headline': {\r\n fontSize: 13,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n marginTop: 2,\r\n },\r\n});\r\n","import _ from 'underscore';\r\n\r\n/**\r\n * sort children of each nodes in the following order:\r\n * owned accounts\r\n * linked accounts\r\n * customers\r\n * @param {array} nodes - tree structure\r\n * @returns {array} tree nodes sorted\r\n */\r\nexport const sortedByNodeType = nodes =>\r\n _.map(nodes, node => ({\r\n ...node,\r\n children: _.sortBy(\r\n sortedByNodeType(node.children),\r\n child => (child.isCustomer * 100) + (child.isLinkedAccount * 10)\r\n ),\r\n }));\r\n\r\n/**\r\n * Add helper properties to each node in the tree\r\n * @param {array} nodes - tree structure\r\n * @param {array} parents - all parent node ids along the path from root\r\n * @returns {array} tree with helper properties\r\n */\r\nexport const nodesWithHelpers = (nodes, parents = []) =>\r\n _.map(nodes, node => ({\r\n ...node,\r\n state: {\r\n ...(node.state || {}),\r\n expanded: true, // expand all by default\r\n },\r\n deepness: parents.length,\r\n parents,\r\n children: nodesWithHelpers(node.children, [...parents, node.id]),\r\n }));\r\n\r\n/**\r\n * Filter a tree, return nodes pass the truth test.\r\n * Parent node on the path from root will be kept.\r\n * @param {array} nodes - tree structure\r\n * @param {function} predicate - truth test\r\n * @returns {array} filtered tree\r\n */\r\nexport const filteredNodes = (nodes, predicate) =>\r\n _.reduce(nodes, (memo, node) => {\r\n const filteredChildren = filteredNodes(node.children, predicate);\r\n return predicate(node) || !_.isEmpty(filteredChildren) ?\r\n [\r\n ...memo,\r\n {\r\n ...node,\r\n children: filteredChildren,\r\n },\r\n ] : memo;\r\n }, []);\r\n\r\n/**\r\n * Filter a tree, return nodes pass the truth test, and return a flattened list.\r\n * For accounts, also keep their customers\r\n * @param {array} nodes - tree structure\r\n * @param {function} predicate - truth test\r\n * @returns {array} the result tree\r\n */\r\nexport const compactCustomers = (nodes, predicate) =>\r\n _.reduce(nodes, (memo, node) => {\r\n const children = compactCustomers(node.children, predicate);\r\n const childCustomers = _.filter(children, child => child.isCustomer);\r\n const childAccounts = _.filter(children, child => !child.isCustomer);\r\n memo.push(...childCustomers);\r\n if (predicate(node) || !_.isEmpty(childAccounts)) {\r\n memo.push({\r\n ...node,\r\n children: childAccounts,\r\n });\r\n }\r\n\r\n return memo;\r\n }, []);\r\n\r\n/**\r\n * Patch state of all nodes\r\n * @param {array} nodes - tree structure\r\n * @param {Object} statePatch - the state to patch\r\n * @returns {array} updated nodes\r\n */\r\nexport const patchedNodes = (nodes, statePatch) =>\r\n // update only leaf node(ad account)\r\n _.map(nodes, node => (node.isLinkedAccount || node.isCustomer ? node : ({\r\n ...node,\r\n state: { ...(node.state || {}), ...statePatch },\r\n })));\r\n\r\n/**\r\n * return a deep copy of the tree with the updatedNode and its child accounts state updated\r\n * @param {array} nodes - tree structure\r\n * @param {Object} updatedNode - the tree node whose state is changed\r\n * @returns {array} the updated tree\r\n */\r\nexport const updatedTree = (nodes, updatedNode) => {\r\n const { id, state: statePatch = {} } = updatedNode;\r\n const updatedTreeNodes = _.map(nodes, (node) => {\r\n if (node.id === id) {\r\n const state = { ...(node.state || {}), ...statePatch, indeterminate: false };\r\n return {\r\n ...node,\r\n state,\r\n children: patchedNodes(node.children, {\r\n ...statePatch,\r\n // disable child accounts if customer is checked\r\n disabled: state.checked,\r\n }),\r\n };\r\n }\r\n\r\n return {\r\n ...node,\r\n children: updatedTree(node.children, updatedNode),\r\n };\r\n });\r\n\r\n return updatedTreeNodes;\r\n};\r\n\r\n/**\r\n * Disable all nodes that pass the truth test\r\n * @param {array} nodes - tree structure\r\n * @param {function} predicate - truth test\r\n * @returns {array} - the updated tree\r\n */\r\nexport const disableNodes = (nodes, predicate) =>\r\n _.reduce(nodes, (memo, node) => {\r\n const updatedChildren = disableNodes(node.children, predicate);\r\n const updatedNode =\r\n {\r\n ...node,\r\n state: {\r\n ...(node.state || {}),\r\n ...(predicate(node) ? { disabled: true } : {}),\r\n },\r\n children: updatedChildren,\r\n };\r\n\r\n memo.push(updatedNode);\r\n return memo;\r\n }, []);\r\n\r\n/**\r\n * Create a piping function that apply all functions in order\r\n * @param {...function} fnsToApply - array of functions to apply\r\n * @returns {function} piping function\r\n */\r\nexport const pipe = (...fnsToApply) =>\r\n nodes => _.reduce(\r\n _.compact(fnsToApply),\r\n (memo, fn) => fn(memo),\r\n nodes\r\n );\r\n\r\n/**\r\n * @param {array} nodes - tree structure\r\n * @param {bool} checked - select or deselect\r\n * @returns {array} a deep copy of the updated tree\r\n */\r\nexport const selectAll = (nodes, checked = true) =>\r\n _.map(nodes, node => (\r\n node.isLinkedAccount || (node.isCustomer && node.state.disabled) ? ({\r\n ...node,\r\n children: _.filter(node.children, child => !child.isCustomer)\r\n .concat(selectAll(_.filter(node.children, child => child.isCustomer), checked)),\r\n }) : ({\r\n ...node,\r\n state: {\r\n ...(node.state || {}),\r\n checked,\r\n ...(!node.isCustomer ? { disabled: checked } : {}),\r\n },\r\n children: selectAll(node.children, checked),\r\n })));\r\n\r\n/**\r\n * @param {array} nodes - tree structure\r\n * @param {Object} updatedNode - the tree node whose state is changed\r\n * @returns {array} a deep copy of the updated tree\r\n */\r\nexport const expandTree = (nodes, updatedNode) =>\r\n _.map(nodes, (node) => {\r\n if (node.id === updatedNode.id) {\r\n return {\r\n ...node,\r\n state: {\r\n ...(node.state || {}),\r\n expanded: updatedNode.state.expanded,\r\n },\r\n };\r\n }\r\n\r\n return {\r\n ...node,\r\n children: expandTree(node.children, updatedNode),\r\n };\r\n });\r\n","import PropTypes from 'prop-types';\r\nimport { NodeOperations } from '@bingads-webui-react/tree-view';\r\n\r\nexport const HierarchyNodesProp = PropTypes.shape({\r\n id: PropTypes.number.isRequired,\r\n number: PropTypes.string.isRequired,\r\n name: PropTypes.string.isRequired,\r\n isCustomer: PropTypes.bool.isRequired,\r\n});\r\n\r\nexport const AccountProp = PropTypes.shape({\r\n Id: PropTypes.number.isRequired,\r\n Number: PropTypes.string.isRequired,\r\n Name: PropTypes.string.isRequired,\r\n});\r\n\r\nexport const SharingScopeProp = PropTypes.shape({\r\n Customers: PropTypes.arrayOf(AccountProp),\r\n Accounts: PropTypes.arrayOf(AccountProp),\r\n});\r\n\r\nexport const NodeUpdateHandlersProp = PropTypes.shape({\r\n [NodeOperations.SELECTED]: PropTypes.func.isRequired,\r\n [NodeOperations.EXPANDED]: PropTypes.func.isRequired,\r\n [NodeOperations.COLLAPSED]: PropTypes.func.isRequired,\r\n});\r\n","import _ from 'underscore';\r\nimport React, { PureComponent } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { SearchBox, SearchResultLiveRegion } from '@bingads-webui-react/search-box';\r\nimport { CheckBoxNode, TreeView } from '@bingads-webui-react/tree-view';\r\nimport { compactCustomers } from './tree-operations';\r\nimport { HierarchyNodesProp, NodeUpdateHandlersProp } from './shapes';\r\n\r\nexport class ScopeEditorSrcPanel extends PureComponent {\r\n static propTypes = {\r\n data: PropTypes.arrayOf(HierarchyNodesProp).isRequired,\r\n deps: PropTypes.shape({\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n nodeUpdateHandlers: NodeUpdateHandlersProp.isRequired,\r\n onTreeUpdated: PropTypes.func.isRequired,\r\n onSelectAll: PropTypes.func.isRequired,\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.onSearch = _.debounce(this.onSearch, 500);\r\n }\r\n\r\n state = {\r\n query: '',\r\n searchText: '',\r\n }\r\n\r\n onSearch = () => {\r\n this.setState(prevState => ({ query: prevState.searchText }));\r\n }\r\n\r\n onQueryChange = (searchText) => {\r\n this.setState({ searchText });\r\n this.onSearch();\r\n }\r\n\r\n onKeyDown = (event) => {\r\n if (event.key === 'Enter') {\r\n this.props.onSelectAll();\r\n }\r\n }\r\n\r\n matchNode(query) {\r\n return ({ name, number }) => {\r\n const lowerCaseQuery = query.toLowerCase();\r\n return name.toString().toLowerCase().indexOf(lowerCaseQuery) >= 0 ||\r\n number.toString().toLowerCase().indexOf(lowerCaseQuery) >= 0;\r\n };\r\n }\r\n\r\n renderTree(nodes) {\r\n const { nodeUpdateHandlers, onTreeUpdated } = this.props;\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderNodeLabel = (node) => {\r\n const { deps: { i18n } } = this.props;\r\n const labelText = `${node.name} (${node.number})`;\r\n\r\n return (\r\n node.isLinkedAccount\r\n ? (\r\n \r\n {`${labelText} - ${i18n.getString('SharingScopeEditor_Linked_Label')}`}\r\n )\r\n : ({labelText})\r\n );\r\n }\r\n\r\n render() {\r\n const {\r\n query,\r\n searchText,\r\n } = this.state;\r\n const {\r\n data,\r\n deps: { i18n },\r\n onSelectAll,\r\n } = this.props;\r\n\r\n const relevantNodes = query ? compactCustomers(data, this.matchNode(query)) : data;\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n {i18n.getString('SharingScopeEditor_AddAll')}\r\n \r\n \r\n
\r\n
\r\n {this.renderTree(relevantNodes)}\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n","import React, { PureComponent } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Checkbox } from '@bingads-webui-react/checkbox';\r\nimport { ExpandableNode, NodeOperations, TreeView } from '@bingads-webui-react/tree-view';\r\nimport { get } from '@bingads-webui-universal/primitive-utilities';\r\nimport { compactCustomers } from './tree-operations';\r\nimport { HierarchyNodesProp, NodeUpdateHandlersProp } from './shapes';\r\n\r\nexport class ScopeEditorTargetPanel extends PureComponent {\r\n static propTypes = {\r\n data: PropTypes.arrayOf(HierarchyNodesProp).isRequired,\r\n deps: PropTypes.shape({\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n nodeUpdateHandlers: NodeUpdateHandlersProp.isRequired,\r\n onTreeUpdated: PropTypes.func.isRequired,\r\n onRemoveAll: PropTypes.func.isRequired,\r\n }\r\n\r\n onKeyDown = (event) => {\r\n if (event.key === 'Enter') {\r\n this.props.onRemoveAll();\r\n }\r\n }\r\n\r\n checkBoxNodeRender = (node, args) => {\r\n const { state = {} } = node;\r\n const { checked, disabled, indeterminate } = state;\r\n const onChange = () => {\r\n const updatedNode = node;\r\n updatedNode.state = {\r\n ...state,\r\n checked: !checked,\r\n indeterminate: false,\r\n };\r\n args.onChange({\r\n node: updatedNode,\r\n type: NodeOperations.SELECTED,\r\n });\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {args.nodeChildRenderer(node)}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderNodeLabel = (node) => {\r\n const labelText = `${node.name} (${node.number})`;\r\n\r\n return {labelText};\r\n }\r\n\r\n renderTree(nodes) {\r\n const { nodeUpdateHandlers, onTreeUpdated } = this.props;\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n render() {\r\n const {\r\n data,\r\n deps: { i18n },\r\n onRemoveAll,\r\n } = this.props;\r\n const relevantNodes = compactCustomers(data, node => get(node, 'state.checked', false));\r\n const shouldDisableRemoveAll = relevantNodes.length === 1 &&\r\n relevantNodes[0].isCustomer &&\r\n relevantNodes[0].state.checked &&\r\n relevantNodes[0].state.disabled;\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n {i18n.getString('SharingScopeEditor_RemoveAll')}\r\n \r\n
\r\n
\r\n {this.renderTree(relevantNodes)}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport React, { PureComponent } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { NodeOperations } from '@bingads-webui-react/tree-view';\r\nimport { Grid, Col, Row } from '@bingads-webui-react/primitive';\r\nimport { ScopeEditorSrcPanel } from './scope-editor-source-panel';\r\nimport { ScopeEditorTargetPanel } from './scope-editor-target-panel';\r\nimport {\r\n disableNodes,\r\n expandTree,\r\n nodesWithHelpers,\r\n pipe,\r\n selectAll,\r\n sortedByNodeType,\r\n updatedTree,\r\n} from './tree-operations';\r\nimport {\r\n AccountProp,\r\n SharingScopeProp,\r\n HierarchyNodesProp,\r\n} from './shapes';\r\n\r\nexport class SharingScopeEditor extends PureComponent {\r\n static propTypes = {\r\n deps: PropTypes.shape({\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }),\r\n }).isRequired,\r\n onSelectionUpdated: PropTypes.func,\r\n availableEntities: PropTypes.arrayOf(HierarchyNodesProp).isRequired,\r\n selectedEntities: SharingScopeProp.isRequired,\r\n owner: AccountProp.isRequired,\r\n editorProps: PropTypes.shape({\r\n sourceboxTitle: PropTypes.string.isRequired,\r\n targetboxTitle: PropTypes.string.isRequired,\r\n }).isRequired,\r\n children: PropTypes.node,\r\n }\r\n\r\n static defaultProps = {\r\n onSelectionUpdated: () => { },\r\n children: null,\r\n }\r\n\r\n state = {\r\n treeNodes: this.generateTreeNodes(),\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const {\r\n availableEntities,\r\n selectedEntities,\r\n owner,\r\n } = this.props;\r\n\r\n if (_.any(\r\n !_.isEqual(availableEntities, prevProps.availableEntities),\r\n !_.isEqual(selectedEntities, prevProps.selectedEntities),\r\n !_.isEqual(owner, prevProps.owner)\r\n )) {\r\n // eslint-disable-next-line\r\n this.setState({\r\n treeNodes: this.generateTreeNodes(),\r\n });\r\n }\r\n }\r\n\r\n onTreeUpdated = (updatedTreeNodes) => {\r\n this.setState({ treeNodes: updatedTreeNodes });\r\n }\r\n\r\n onSelectAll = () => {\r\n const { onSelectionUpdated } = this.props;\r\n const { treeNodes } = this.state;\r\n this.setState({\r\n treeNodes: selectAll(treeNodes, true),\r\n }, () => onSelectionUpdated(this.state.treeNodes));\r\n }\r\n\r\n onRemoveAll = () => {\r\n const { onSelectionUpdated } = this.props;\r\n const { treeNodes } = this.state;\r\n this.setState({\r\n treeNodes: selectAll(treeNodes, false),\r\n }, () => onSelectionUpdated(this.state.treeNodes));\r\n }\r\n\r\n generateTreeNodes() {\r\n const {\r\n availableEntities,\r\n selectedEntities,\r\n owner,\r\n } = this.props;\r\n\r\n let treeNodes = [];\r\n if (availableEntities) {\r\n treeNodes = pipe(\r\n sortedByNodeType,\r\n // add helper properties to each node\r\n nodesWithHelpers,\r\n // disable linked accounts\r\n nodes => disableNodes(nodes, node => node.isLinkedAccount),\r\n // owner node are selected by default, and can not be removed from sharing scope\r\n nodes => updatedTree(nodes, {\r\n id: owner.Id,\r\n state: {\r\n checked: true,\r\n disabled: true,\r\n },\r\n })\r\n )(availableEntities);\r\n\r\n // update state for each selected accounts\r\n _.each(selectedEntities.Accounts, ({ Id: aid }) => {\r\n treeNodes = updatedTree(treeNodes, {\r\n id: aid,\r\n state: {\r\n checked: true,\r\n },\r\n });\r\n });\r\n\r\n // update state for each selected customers\r\n _.each(selectedEntities.Customers, ({ Id: cid }) => {\r\n treeNodes = updatedTree(treeNodes, {\r\n id: cid,\r\n state: {\r\n checked: true,\r\n },\r\n });\r\n });\r\n }\r\n\r\n return treeNodes;\r\n }\r\n\r\n nodeSelectHandler = (visibleNodes, updatedNode) => {\r\n const updatedTreeNodes = updatedTree(this.state.treeNodes, {\r\n ...updatedNode,\r\n state: _.pick(updatedNode.state, 'checked'),\r\n });\r\n\r\n this.props.onSelectionUpdated(updatedTreeNodes);\r\n\r\n return updatedTreeNodes;\r\n }\r\n\r\n nodeExpandHandler = (visibleNodes, updatedNode) => expandTree(this.state.treeNodes, updatedNode)\r\n\r\n nodeUpdateHandlers = {\r\n [NodeOperations.SELECTED]: this.nodeSelectHandler,\r\n [NodeOperations.EXPANDED]: this.nodeExpandHandler,\r\n [NodeOperations.COLLAPSED]: this.nodeExpandHandler,\r\n }\r\n\r\n render() {\r\n const { treeNodes } = this.state;\r\n const {\r\n deps: { i18n },\r\n editorProps: {\r\n sourceboxTitle,\r\n targetboxTitle,\r\n },\r\n } = this.props;\r\n\r\n return (\r\n \r\n { this.props.children }\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n

{sourceboxTitle}

\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

{targetboxTitle}

\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 Promise from 'bluebird';\r\nimport { compactCustomers } from '@bingads-webui-campaign-react/sharing-scope-editor';\r\nimport { http } from '@bingads-webui/http-util';\r\nimport { getSessionStorage } from '@bingads-webui/storage';\r\nimport { getParameter } from '@bingads-webui/url-util';\r\n\r\nexport const isLinkedAccount = (appConfig) => {\r\n const { Id: currentCid } = appConfig.get('CurrentCustomer');\r\n const currentAccount = appConfig.get('CurrentAccount');\r\n let { AdvertiserCustomerID: parentCid } = currentAccount || {};\r\n // in case AdvertiserCustomerID is cleared, try get from config.advertiserCustomerID\r\n if (!_.isFinite(parentCid)) {\r\n parentCid = appConfig.get('advertiserCustomerID');\r\n }\r\n return _.isFinite(parentCid) && parentCid !== currentCid;\r\n};\r\n\r\nexport const isEntityOwner = (entity, appConfig) => {\r\n const { Owner: { Id } = {} } = entity;\r\n\r\n return Id === appConfig.get('CurrentCustomer').Id;\r\n};\r\n\r\n/**\r\n * return current scope (manager dashboard or campaign page) by checking fragment identifier.\r\n * @param {object} location - current location object\r\n * @returns {bool} true if we're in account scope\r\n */\r\nexport const isInAccountScope = (location = window.location) => {\r\n const matchResult = (/customer\\/(\\d+)(?:\\/account\\/(\\d+))?/).exec(location.hash);\r\n let [customerId, accountId] = matchResult ? _.tail(matchResult) : [];\r\n if (!customerId) {\r\n customerId = getParameter('cid', location.href);\r\n accountId = getParameter('aid', location.href);\r\n }\r\n\r\n return _.isString(customerId) && _.isString(accountId);\r\n};\r\n\r\nconst findNode = (nodes, { id }) =>\r\n _.reduce(nodes, (memo, node) => {\r\n if (memo) {\r\n return memo;\r\n }\r\n\r\n if (node.id === id) {\r\n return node;\r\n }\r\n\r\n return findNode(node.children, { id });\r\n }, undefined);\r\n\r\n/**\r\n * Check if a customer has child customers in the given customer hierarchy.\r\n *\r\n * @param {array} customerHierarchy - the customer hierarchy.\r\n * @param {object} customer - customer to search for.\r\n * @returns {bool} true if it has child customers, false otherwise.\r\n */\r\nexport const hasChildCustomers = (customerHierarchy, { cid }) => {\r\n const node = findNode(customerHierarchy, { id: cid });\r\n\r\n if (node) {\r\n return _.any(node.children, child => child.isCustomer);\r\n }\r\n\r\n return false;\r\n};\r\n\r\n/**\r\n * Check if current user is super admin on the customers\r\n * @param {number} cid - customer to verify\r\n * @returns {bool} true if it is super admin\r\n */\r\nexport const isSuperAdmin = ({ cid, uid }) => {\r\n const sessionStorage = getSessionStorage();\r\n const hasPermission = sessionStorage.get(`SharedLibrary_Permission_${uid}_${cid}`);\r\n if (_.isBoolean(hasPermission)) {\r\n return hasPermission;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst getAllCustomerIdsFromHierarchy = customerHierarchy =>\r\n _.reduce(customerHierarchy, (memo, node) => {\r\n if (node.isCustomer) {\r\n return [...memo, node.id, ...getAllCustomerIdsFromHierarchy(node.children)];\r\n }\r\n\r\n return memo;\r\n }, []);\r\n\r\nexport const fetchUserPermissions = ({\r\n uid,\r\n cid,\r\n customerIds,\r\n customerHierarchy,\r\n}) => {\r\n const sessionStorage = getSessionStorage();\r\n const allCustomerIds = _.union(customerIds, getAllCustomerIdsFromHierarchy(customerHierarchy));\r\n\r\n const allCached = _.every(_.map(allCustomerIds, (customerId) => {\r\n const hasPermission = sessionStorage.get(`SharedLibrary_Permission_${uid}_${customerId}`);\r\n\r\n return _.isBoolean(hasPermission);\r\n }));\r\n\r\n if (allCached) {\r\n return Promise.resolve(true);\r\n }\r\n\r\n return http.post(`/campaign/users/HierarchyPermission?uid=${uid}&cid=${cid}`, {\r\n data: JSON.stringify({ UserId: uid, CustomerIds: allCustomerIds }),\r\n }).then((response) => {\r\n if (response && response.Errors && response.Errors.length > 0) {\r\n return Promise.reject(response.Errors[0]);\r\n }\r\n const { UserId, Permissions } = response;\r\n\r\n _.each(Permissions, ({ CustomerId, hasPermisson }) => {\r\n sessionStorage.set(`SharedLibrary_Permission_${UserId}_${CustomerId}`, hasPermisson);\r\n });\r\n\r\n return false;\r\n });\r\n};\r\n\r\nexport const Scopes = Object.freeze({\r\n ACCOUNT: 'account-scope',\r\n CUSTOMER: 'customer-scope',\r\n HIERARCHY: 'hierarchy-scope',\r\n});\r\n\r\nexport const treeToSharingScope = (treeNodes) => {\r\n const sharingScope = {\r\n Customers: [],\r\n Accounts: [],\r\n Others: 0,\r\n Total: 0,\r\n };\r\n const flatCustomers = compactCustomers(treeNodes, node => _.result(node.state, 'checked', false));\r\n const result = _.reduce(flatCustomers, (memo, node) => {\r\n if (_.result(node.state, 'checked', false)) {\r\n memo.Customers.push({\r\n Id: node.id,\r\n Name: node.name,\r\n Number: node.number,\r\n });\r\n } else {\r\n memo.Accounts.push(..._.map(node.children, child => ({\r\n Id: child.id,\r\n Name: child.name,\r\n Number: child.number,\r\n })));\r\n }\r\n\r\n return memo;\r\n }, sharingScope);\r\n\r\n return result;\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { Callout } from '@bingads-webui-react/callout';\r\n\r\nexport const AccountList = (props) => {\r\n const {\r\n i18n,\r\n description,\r\n accounts: {\r\n adAccounts = [],\r\n managerAccounts = [],\r\n others = 0,\r\n },\r\n } = props;\r\n const adAccountLabel = i18n.getString('Ad_Account');\r\n const managerAccountLabel = i18n.getString('Manager_Account');\r\n\r\n return (\r\n
\r\n {description &&\r\n

\r\n {description}\r\n

\r\n }\r\n
    \r\n {\r\n adAccounts.map(({ Name, Number }) => (\r\n
  • \r\n {`${Name} (${Number}) - `}\r\n {adAccountLabel}\r\n
  • \r\n ))\r\n }\r\n {\r\n managerAccounts.map(({ Name, Number }) => (\r\n
  • \r\n {`${Name} (${Number}) - `}\r\n {managerAccountLabel}\r\n
  • \r\n ))\r\n }\r\n {others > 0 ? i18n.getString('AudiencesGrid_Popover_Number_Other_Accounts', { number: others }) : null}\r\n
\r\n
\r\n );\r\n};\r\n\r\nAccountList.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n description: PropTypes.string,\r\n accounts: PropTypes.shape({\r\n adAccounts: PropTypes.arrayOf(PropTypes.shape({\r\n Name: PropTypes.string.isRequired,\r\n Number: PropTypes.string.isRequired,\r\n })),\r\n managerAccounts: PropTypes.arrayOf(PropTypes.shape({\r\n Name: PropTypes.string.isRequired,\r\n Number: PropTypes.string.isRequired,\r\n })),\r\n others: PropTypes.number,\r\n }).isRequired,\r\n};\r\n\r\nAccountList.defaultProps = {\r\n description: null,\r\n};\r\n\r\nexport class AccountListPopover extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n show: false,\r\n };\r\n }\r\n\r\n show = () => {\r\n this.setState({ show: true });\r\n }\r\n\r\n hide = () => {\r\n this.setState({ show: false });\r\n }\r\n\r\n render() {\r\n const {\r\n description, accountInfo, i18n, popoverId, placement, className, text, title,\r\n } = this.props;\r\n const classes = classNames('text-with-popover', 'clickable', className);\r\n const content = (\r\n );\r\n return (\r\n
\r\n \r\n \r\n {text}\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nAccountListPopover.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n text: PropTypes.string.isRequired,\r\n title: PropTypes.string.isRequired,\r\n description: PropTypes.string,\r\n className: PropTypes.string,\r\n popoverId: PropTypes.string.isRequired,\r\n placement: PropTypes.string,\r\n accountInfo: PropTypes.arrayOf(PropTypes.shape({\r\n Name: PropTypes.string.isRequired,\r\n Number: PropTypes.string.isRequired,\r\n })).isRequired,\r\n};\r\n\r\nAccountListPopover.defaultProps = {\r\n description: '',\r\n className: '',\r\n placement: 'right',\r\n};\r\n","import _ from 'underscore';\r\nimport React, { PureComponent } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { RadioGroup } from '@bingads-webui-react/radio';\r\nimport {\r\n AccountProp,\r\n HierarchyNodesProp,\r\n SharingScopeEditor,\r\n SharingScopeProp,\r\n} from '@bingads-webui-campaign-react/sharing-scope-editor';\r\nimport { Scopes } from './util';\r\nimport { AccountListPopover } from './account-list-popover';\r\n\r\nexport class AudiencesSharingEditor extends PureComponent {\r\n static propTypes = {\r\n availableScope: PropTypes.arrayOf(HierarchyNodesProp).isRequired,\r\n deps: PropTypes.shape({\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }),\r\n }).isRequired,\r\n scopeOptions: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.string.isRequired,\r\n text: PropTypes.string.isRequired,\r\n })).isRequired,\r\n audienceEntity: PropTypes.shape({\r\n IsAccountLevel: PropTypes.bool.isRequired,\r\n SharingScope: SharingScopeProp,\r\n Owner: AccountProp,\r\n }),\r\n onSelectedOptionChanged: PropTypes.func.isRequired,\r\n onTreeSelectionUpdated: PropTypes.func.isRequired,\r\n disabled: PropTypes.bool,\r\n tagEntityName: PropTypes.string,\r\n }\r\n\r\n static defaultProps = {\r\n audienceEntity: {},\r\n disabled: false,\r\n tagEntityName: null,\r\n }\r\n\r\n state = {\r\n selected: _.result(_.findWhere(this.props.scopeOptions, { selected: true }) || _.first(this.props.scopeOptions), 'id'),\r\n }\r\n\r\n onRadioChange = item => this.setState({\r\n selected: item,\r\n }, () => this.props.onSelectedOptionChanged(this.state.selected))\r\n\r\n renderItem = (item) => {\r\n const currentScopeOption = _.findWhere(this.props.scopeOptions, { id: item });\r\n\r\n if (currentScopeOption && !_.isObject(currentScopeOption.text)) {\r\n return _.result(currentScopeOption, 'text');\r\n }\r\n return ();\r\n }\r\n\r\n render() {\r\n const {\r\n availableScope,\r\n onTreeSelectionUpdated,\r\n deps,\r\n audienceEntity,\r\n scopeOptions,\r\n disabled,\r\n tagEntityName,\r\n } = this.props;\r\n const { SharingScope, Owner } = audienceEntity;\r\n const { selected } = this.state;\r\n const { i18n } = deps;\r\n\r\n return (\r\n
\r\n \r\n {\r\n selected === Scopes.HIERARCHY && (\r\n \r\n {\r\n tagEntityName && (\r\n
\r\n
\r\n
{i18n.getString('SharingScopeEditor_Audience_Banner', { tagName: tagEntityName })}
\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 Backbone from 'backbone';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { disableNodes } from '@bingads-webui-campaign-react/sharing-scope-editor';\r\nimport { AudiencesSharingEditor } from './audience-scope-editor';\r\nimport { Scopes, treeToSharingScope } from './util';\r\n\r\nexport class AudienceSharingView extends Backbone.View {\r\n initialize({\r\n customerHierarchy,\r\n deps,\r\n scopeOptions,\r\n selectedOption = Scopes.ACCOUNT,\r\n audienceEntity,\r\n tagEntity,\r\n disabled = false,\r\n }) {\r\n this.customerHierarchy = customerHierarchy;\r\n this.deps = deps;\r\n this.audienceEntity = audienceEntity;\r\n this.tagEntity = tagEntity;\r\n this.selectedOption = selectedOption;\r\n this.treeSelection = audienceEntity.SharingScope;\r\n this.scopeOptions = scopeOptions;\r\n this.disabled = disabled;\r\n }\r\n\r\n onSelectedOptionChanged = (radio) => {\r\n this.selectedOption = radio;\r\n }\r\n\r\n onTreeSelectionUpdated = (treeNodes) => {\r\n this.treeSelection = treeToSharingScope(treeNodes);\r\n }\r\n\r\n getSharingScope() {\r\n return {\r\n selectedOption: this.selectedOption,\r\n ...(this.selectedOption === Scopes.HIERARCHY ? { treeSelection: this.treeSelection } : {}),\r\n };\r\n }\r\n\r\n getAvailableScope() {\r\n // Intersection of customer hierarchy and the scope of selected tag\r\n if (_.isUndefined(this.tagEntity)) {\r\n return this.customerHierarchy;\r\n }\r\n const { SharingScope: { Customers } = {} } = this.tagEntity;\r\n const customerSet = _.indexBy(Customers, 'Id');\r\n const result = disableNodes(\r\n this.customerHierarchy,\r\n (node) => {\r\n if (node.isCustomer) {\r\n return !_.has(customerSet, node.id);\r\n }\r\n\r\n return !_.has(customerSet, node.parentCustomerId);\r\n }\r\n );\r\n return result;\r\n }\r\n\r\n render() {\r\n ReactDOM.render((\r\n ), this.el);\r\n\r\n return this;\r\n }\r\n\r\n remove() {\r\n ReactDOM.unmountComponentAtNode(this.el);\r\n return super.remove();\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport React, { PureComponent } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { RadioGroup } from '@bingads-webui-react/radio';\r\nimport {\r\n SharingScopeEditor,\r\n AccountProp,\r\n HierarchyNodesProp,\r\n SharingScopeProp,\r\n filteredNodes,\r\n} from '@bingads-webui-campaign-react/sharing-scope-editor';\r\nimport { Scopes } from './util';\r\n\r\nexport class UETTagScopeEditor extends PureComponent {\r\n static propTypes = {\r\n customerHierarchy: PropTypes.arrayOf(HierarchyNodesProp).isRequired,\r\n deps: PropTypes.shape({\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }),\r\n }).isRequired,\r\n onSave: PropTypes.func,\r\n onCancel: PropTypes.func,\r\n onSelectedOptionChanged: PropTypes.func.isRequired,\r\n onTreeSelectionUpdated: PropTypes.func.isRequired,\r\n scopeOptions: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.string.isRequired,\r\n text: PropTypes.string.isRequired,\r\n })).isRequired,\r\n selectedOption: PropTypes.string.isRequired,\r\n tagEntity: PropTypes.shape({\r\n SharingScope: SharingScopeProp,\r\n Owner: AccountProp,\r\n }),\r\n }\r\n\r\n static defaultProps = {\r\n tagEntity: {},\r\n onSave: null,\r\n onCancel: null,\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n const { customerHierarchy } = this.props;\r\n\r\n this.nodes = filteredNodes(customerHierarchy, node => node.isCustomer);\r\n }\r\n\r\n state = {\r\n selected: this.props.selectedOption,\r\n }\r\n\r\n onRadioChange = item => this.setState({\r\n selected: item,\r\n }, () => this.props.onSelectedOptionChanged(this.state.selected))\r\n\r\n renderItem = item => _.result(_.findWhere(this.props.scopeOptions, { id: item }), 'text')\r\n\r\n render() {\r\n const {\r\n scopeOptions,\r\n onTreeSelectionUpdated,\r\n tagEntity: {\r\n SharingScope,\r\n Owner,\r\n },\r\n onSave,\r\n onCancel,\r\n deps,\r\n } = this.props;\r\n const { i18n } = deps;\r\n const { selected } = this.state;\r\n const footer = (\r\n
\r\n
\r\n
\r\n
{i18n.getString('SharedLibrary_Tag_ManageScope_Alert')}
\r\n
\r\n
\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 selected === Scopes.HIERARCHY && (\r\n \r\n )\r\n }\r\n
\r\n {\r\n !_.isNull(onSave) && footer\r\n }\r\n
\r\n );\r\n }\r\n}\r\n","import { decorate } from '@bingads-webui/dialog';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport Backbone from 'backbone';\r\nimport { UETTagScopeEditor } from './uet-tag-scope-editor';\r\nimport { Scopes, treeToSharingScope } from './util';\r\n\r\nexport class UETTagManageSopeView extends Backbone.View {\r\n initialize({\r\n customerHierarchy,\r\n scopeOptions,\r\n selectedOption = Scopes.CUSTOMER,\r\n tagEntity,\r\n deps,\r\n withFooter = false,\r\n }) {\r\n this.customerHierarchy = customerHierarchy;\r\n this.scopeOptions = scopeOptions;\r\n this.selectedOption = selectedOption;\r\n this.treeSelection = tagEntity.SharingScope;\r\n this.tagEntity = tagEntity;\r\n this.deps = deps;\r\n this.withFooter = withFooter;\r\n }\r\n\r\n get className() {\r\n return 'shared-library-audience-scope-editor';\r\n }\r\n\r\n onSelectedOptionChanged = (radio) => {\r\n this.selectedOption = radio;\r\n }\r\n\r\n onTreeSelectionUpdated = (treeNodes) => {\r\n this.treeSelection = treeToSharingScope(treeNodes);\r\n }\r\n\r\n getSharingScope() {\r\n return {\r\n selectedOption: this.selectedOption,\r\n ...(this.selectedOption === Scopes.HIERARCHY ? { treeSelection: this.treeSelection } : {}),\r\n };\r\n }\r\n\r\n render() {\r\n ReactDOM.render(\r\n (\r\n \r\n ), this.el\r\n );\r\n\r\n return this;\r\n }\r\n\r\n remove() {\r\n ReactDOM.unmountComponentAtNode(this.el);\r\n return super.remove();\r\n }\r\n\r\n save = () => {\r\n this.trigger('save', this.getSharingScope());\r\n }\r\n\r\n cancel = () => {\r\n this.trigger('close');\r\n }\r\n}\r\n\r\nexport const UETTagManageScopeDialog = decorate(UETTagManageSopeView, {\r\n position: 'center',\r\n minWidth: 720,\r\n maxWidth: 2000,\r\n});\r\n","\r\nexport const largeSize = 1366;\r\n\r\nexport const COPILOT_WIDTH = 320;\r\n\r\nexport const sizes = [\r\n {\r\n name: 'small',\r\n minWidth: 0,\r\n },\r\n {\r\n name: 'large',\r\n minWidth: largeSize,\r\n },\r\n];\r\n\r\nexport const CAMPAIGN_MAIN_MENU_MODE = 'WebApp.CampaignUI.New.ManiMenuMode';\r\nexport const MERCHANT_MAIN_MENU_MODE = 'WebApp.CampaignUI.New.MerchantCenterManiMenuMode';\r\n","import React from 'react';\r\nimport Media from 'react-media';\r\nimport PropTypes from 'prop-types';\r\nimport { result } from 'underscore';\r\nimport { MainMenuPlaceholder } from '@bingads-webui-react/ui-next-placeholder';\r\nimport { withPreference } from '@bingads-webui-react/preference-context';\r\nimport { Mode } from '@bingads-webui-react/app-layout-container';\r\nimport { CAMPAIGN_MAIN_MENU_MODE, largeSize as minWidth } from './enums/constants';\r\n\r\nclass PlaceholderWrapper extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isViewportSizeLarge: true,\r\n preferencedMainMenuMode: result(props.preferenceService.findByNameAtUserLevel(props.modePreferenceName), 'Data', null),\r\n };\r\n\r\n if (props.changeLayout) {\r\n props.changeLayout({\r\n nav: {\r\n mode: this.state.preferencedMainMenuMode || Mode.Collapsed,\r\n },\r\n });\r\n }\r\n\r\n this.handleMediaChange = this.handleMediaChange.bind(this);\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (!this.props.changeLayout || this.props.mode === Mode.Hidden) {\r\n return;\r\n }\r\n\r\n // resize window from large size to small size\r\n if (prevState.isViewportSizeLarge && !this.state.isViewportSizeLarge) {\r\n this.props.changeLayout({\r\n nav: {\r\n mode: Mode.Collapsed,\r\n },\r\n });\r\n }\r\n\r\n // resize window from small size to large size\r\n if (!prevState.isViewportSizeLarge && this.state.isViewportSizeLarge) {\r\n if (this.state.preferencedMainMenuMode === Mode.Expanded || this.state.preferencedMainMenuMode === null) {\r\n this.props.changeLayout({\r\n nav: {\r\n mode: Mode.Expanded,\r\n },\r\n });\r\n }\r\n }\r\n }\r\n\r\n handleMediaChange(matches) {\r\n this.setState({ isViewportSizeLarge: matches });\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {() => }\r\n \r\n );\r\n }\r\n}\r\n\r\nPlaceholderWrapper.propTypes = {\r\n changeLayout: PropTypes.func,\r\n preferenceService: PropTypes.shape({\r\n setAtUserLevel: PropTypes.func,\r\n findByNameAtUserLevel: PropTypes.func,\r\n }).isRequired,\r\n mode: PropTypes.string,\r\n modePreferenceName: PropTypes.string,\r\n};\r\n\r\nPlaceholderWrapper.defaultProps = {\r\n changeLayout: undefined,\r\n mode: undefined,\r\n modePreferenceName: CAMPAIGN_MAIN_MENU_MODE,\r\n};\r\n\r\nexport const placeholderWithResponsiveSize = withPreference(PlaceholderWrapper);\r\n","import React from 'react';\r\n\r\nexport function GlobalMenueWrapperPlaceholder() {\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","import React from 'react';\r\n\r\nexport function NewGlobalMenueWrapperPlaceholder() {\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","import React from 'react';\r\n\r\nexport const PrimaryNavigationPlaceholder = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n);\r\n","import React, { useContext, useState, useEffect } from 'react';\r\nimport { PreferenceContext } from '@bingads-webui-react/preference-context';\r\nimport { LayoutContext, Mode } from '@bingads-webui-react/app-layout-container';\r\n\r\nconst SecondaryNavigationCollapsedKey = 'SecondaryNavigationCollapsed';\r\nconst MediaQuery = '(max-width: 1025px)';\r\nexport const SecondaryNavigationPlaceholder = () => {\r\n const preferenceService = useContext(PreferenceContext);\r\n const preferences = (preferenceService && preferenceService.findByNameAtUserLevel(SecondaryNavigationCollapsedKey)) || { Data: false };\r\n const { config: layoutConfig } = useContext(LayoutContext);\r\n const [matches, setMatches] = useState(window.matchMedia(MediaQuery).matches);\r\n\r\n useEffect(() => {\r\n window\r\n .matchMedia(MediaQuery)\r\n .addEventListener('change', e => setMatches(e.matches));\r\n }, []);\r\n\r\n\r\n if (preferences.Data || layoutConfig.menu.mode !== Mode.Expanded || matches) {\r\n return null;\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","import React from 'react';\r\n\r\nexport const ScopePanelPlaceholder = () => (\r\n \r\n \r\n \r\n
\r\n)","import { CampaignTypeByODataValue } from '@bingads-webui-campaign/campaign-ui-common';\r\n\r\nconst convertToCampaignStatus = (statusFromOdata) => {\r\n if (statusFromOdata === 'Active' ||\r\n statusFromOdata === 'BudgetPaused' ||\r\n statusFromOdata === 'InProgress'\r\n ) {\r\n return 'Active';\r\n }\r\n\r\n return 'Paused';\r\n};\r\n\r\n// TODO: currently the structure only used by Main menu and summary bar.\r\n// Will consider to have a better structure when serving more components.\r\nexport const convertToCampaign = campaignFromOData => ({\r\n id: campaignFromOData.Id,\r\n name: campaignFromOData.Name,\r\n status: convertToCampaignStatus(campaignFromOData.Status),\r\n rawStatus: campaignFromOData.Status,\r\n entityType: 'Campaign',\r\n campaignType: CampaignTypeByODataValue[campaignFromOData.CampaignType],\r\n isExperiment: campaignFromOData.ExperimentId !== null && campaignFromOData.ExperimentId !== undefined,\r\n ImportProperties: campaignFromOData.ImportProperties,\r\n});\r\n","const convertToAdGroupStatus = (statusFromOdata) => {\r\n if (statusFromOdata === 'Active'\r\n || statusFromOdata === 'CampaignBudgetPaused') {\r\n return 'Active';\r\n }\r\n\r\n return 'Paused';\r\n};\r\n\r\n// TODO: currently the structure only used by Main menu and summary bar.\r\n// Will consider to have a better structure when serving more components.\r\nexport const convertToAdGroup = adGroupFromOData => ({\r\n id: adGroupFromOData.Id,\r\n name: adGroupFromOData.Name,\r\n status: convertToAdGroupStatus(adGroupFromOData.Status),\r\n entityType: 'AdGroup',\r\n parentId: adGroupFromOData.Campaign.Id,\r\n isExperiment: false,\r\n predictiveTargeting: adGroupFromOData.UseOptimizedTargeting,\r\n dealMinimumBid: adGroupFromOData.DealMinimumBid,\r\n});\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nimport { getSpinnerWithLabelStyles } from './spinner-with-label-styles';\r\n\r\nexport function SpinnerWithLabel({ classes, label }) {\r\n return (\r\n \r\n
\r\n {label}\r\n \r\n );\r\n}\r\n\r\nSpinnerWithLabel.propTypes = {\r\n classes: PropTypes.shape({\r\n spinnerContainer: PropTypes.string.isRequired,\r\n labelContainer: PropTypes.string.isRequired,\r\n }).isRequired,\r\n label: PropTypes.string.isRequired,\r\n};\r\n\r\nexport const StyledSpinnerWithLabel = withDefaultStyles(SpinnerWithLabel, getSpinnerWithLabelStyles);\r\n","import { getBlockerStyle, spinnerKeyframe } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nexport const getSpinnerWithLabelStyles = (spinnerWithLabel, { palette = {} }) => ({\r\n spinnerContainer: getBlockerStyle(14, palette),\r\n ...spinnerKeyframe,\r\n labelContainer: {\r\n fontSize: 12,\r\n color: palette.themePrimary,\r\n },\r\n});\r\n","export const SelectorLevels = {\r\n Acount: 'Account',\r\n Campaign: 'Campaign',\r\n AdGroup: 'AdGroup',\r\n};\r\n\r\nexport function getLevelItems({ i18n, levels = 2 }) {\r\n const levelItems = [];\r\n if (levels === 3) {\r\n levelItems.push({\r\n name: i18n.getString(_TL_('Account')),\r\n value: SelectorLevels.Acount,\r\n });\r\n }\r\n\r\n levelItems.push({\r\n name: i18n.getString(_TL_('Campaign')),\r\n value: SelectorLevels.Campaign,\r\n }, {\r\n name: i18n.getString(_TL_('Ad group')),\r\n value: SelectorLevels.AdGroup,\r\n });\r\n\r\n return levelItems;\r\n}\r\n","export const shellTips = {\r\n shellDataError: _TL_('Microsoft Advertising problem, try again later.'),\r\n};\r\n","import $ from 'jquery';\r\nimport React, { useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { FallbackCallout } from '@bingads-webui-react/fallback-feature';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nimport { getStyles } from './styles';\r\n\r\n// The selector is case sensitive, so this should cover all variations\r\nconst SELECTOR = 'a[href*=\"ampaign/Smart\"], a[href*=\"ampaign/smart\"]';\r\n\r\nexport const SmartCampaignsPopup = withDefaultStyles(({ i18n, classes }) => {\r\n useEffect(() => {\r\n const smartNavigate = (event) => {\r\n event.stopPropagation();\r\n window.location.href = event.target.href;\r\n\r\n // We want to suppress the hyperlink navigation\r\n return false;\r\n };\r\n\r\n const rootFunction = (e) => {\r\n // We need to dynamically bind on mousedown otherwise our event doesn't trigger\r\n $(e.target).off('click', smartNavigate);\r\n $(e.target).on('click', smartNavigate);\r\n };\r\n\r\n $('#root').on(\r\n 'mousedown',\r\n SELECTOR,\r\n rootFunction\r\n );\r\n\r\n return () => {\r\n $('#root').off(\r\n 'mousedown',\r\n SELECTOR,\r\n rootFunction\r\n );\r\n };\r\n }, []);\r\n\r\n return (\r\n );\r\n}, getStyles);\r\n\r\nSmartCampaignsPopup.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n calloutTargetContainer: PropTypes.string.isRequired,\r\n }).isRequired,\r\n};\r\n","export const getStyles = () => ({\r\n calloutTargetContainer: {\r\n width: '100%',\r\n },\r\n});\r\n\r\n","import _ from 'underscore';\r\nimport { I18nModel } from '@bingads-webui-universal/i18n-model';\r\nimport { toIANATimeZone, fromLegacyTimeZone } from '@bingads-webui-universal/time-zone-converter';\r\n\r\nconst buildStringsMap = legacyKeys => _.extend(\r\n {},\r\n ...(_.flatten([legacyKeys]))\r\n);\r\n\r\nconst buildLegacyStrings =\r\n (i18n, allStrings) => _.mapObject(buildStringsMap(allStrings), str => i18n.getString(str));\r\n\r\n/**\r\n * buildLegacyI18n\r\n * @param {object} i18n translation object\r\n * @param {*} legacyKeys array of keys to _TL_ strings\r\n * @param {*} param2 extra options\r\n * @returns {object} built legacy i18n\r\n */\r\nexport const buildLegacyI18n = (i18n, legacyKeys, {\r\n timeZone,\r\n currency,\r\n} = {}) =>\r\n // rely on global locale\r\n new I18nModel({\r\n timeZone: _.isNumber(timeZone) ?\r\n toIANATimeZone(fromLegacyTimeZone(timeZone)) :\r\n undefined,\r\n currency,\r\n loadTranslationData: () => buildLegacyStrings(i18n, legacyKeys),\r\n loadCLDRData(locale) { return locale; },\r\n failFast: true,\r\n });\r\n","export const validationLocalization = {\r\n Validation_Base_Field_Not_Valid: _TL_('Field is not valid'),\r\n Validation_NotEmpty_Required_Field: _TL_('Required field'),\r\n Validation_String_Max_Length: _TL_('Field should not exceed {{maxlength}} characters'),\r\n Validation_String_Min_Length: _TL_('Field should exceed {{minlength}} characters'),\r\n Validation_String_Invalid_Characters: _TL_('Field contains invalid characters'),\r\n Validation_Number_Require_Numeric: _TL_('Field requires numeric value'),\r\n Validation_Number_Max_Length: _TL_('Number should not exceed max length'),\r\n Validation_Number_Range_Min: _TL_('Number should be larger than {{min}}'),\r\n Validation_Number_Range_Max: _TL_('Number should be smaller than {{max}}'),\r\n Validation_Number_Range_Between: _TL_('Number should be between {{min}} and {{max}}'),\r\n Validation_Array_Size_Max: _TL_('List should have at most {{max}} items'),\r\n Validation_Array_Size_Between: _TL_('List should have at least {{min}} and at most {{max}} items'),\r\n Validation_Array_Items_Invalid: _TL_('Some of items in list are invalid'),\r\n Validation_Array_Items_Duplicate: _TL_('List has duplicate items'),\r\n Validation_NegativeKeywords_ListName_Required: _TL_('The list name is required.'),\r\n Validation_NegativeKeywords_Max_Count: _TL_('Maximum of 5,000 negative keywords'),\r\n Validation_NegativeKeywords_Invalid_Keywords: _TL_('Some of the keyword(s) are invalid: {{invalidKeywords}}'),\r\n Validation_NegativeKeywords_Required: _TL_('At least 1 negative keyword is required.'),\r\n};\r\n\r\nexport const ImportNotificationLocalization = {\r\n Campaign_Status_Change_Overwrite_Notification_Message: _TL_('You’ve paused or unpaused a campaign that will have its status changed when your next scheduled import runs. To maintain this campaign’s current status even after import, go to your {{redirectLink}}Import schedule{{/redirectLink}} and deselect Campaigns under Customize status.'),\r\n Campaign_Budget_Change_Overwrite_Notification_Message: _TL_('Your edits to this campaign’s budget may be overwritten when your next scheduled import runs. To maintain these edits even after import, go to your {{redirectLink}}scheduled import{{/redirectLink}} and deselect {{bold}}Sync your bid strategies{{/bold}} under {{bold}}Customize bids{{/bold}}.'),\r\n Campaign_BidStrategy_Change_Overwrite_Notification_Message: _TL_('Your edits to this campaign’s bid strategy may be overwritten when your next scheduled import runs. To maintain these edits even after import, go to your {{redirectLink}}scheduled import{{/redirectLink}} and deselect {{bold}}Sync your campaign budgets{{/bold}} under {{bold}}Customize budgets{{/bold}}.'),\r\n Campaign_Budget_And_BidStrategy_Change_Overwrite_Notification_Message: _TL_('Your edits to this campaign’s budget and bid strategy may be overwritten when your next scheduled import runs. To maintain these edits even after import, go to your {{redirectLink}}scheduled import{{/redirectLink}}, deselect {{bold}}Sync your campaign budgets{{/bold}} under {{bold}}Customize budgets{{/bold}} and {{bold}}Sync your bid strategies{{/bold}} under {{bold}}Customize bids{{/bold}}.'),\r\n};\r\n","import _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useEffect } from 'react';\r\nimport { siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { StyledSubPageMenu } from '@bingads-webui-campaign-react/sub-page-menu';\r\nimport { Activity, Scenario } from '@bingads-webui-react/hoc-with-signal';\r\n\r\nexport const Loader = (props) => {\r\n const { siteMap, updateAvailability } = props;\r\n\r\n const selectedParent = _.findWhere(siteMap, { selected: true });\r\n const available = !_.isEmpty(selectedParent);\r\n useEffect(() => {\r\n updateAvailability(available);\r\n });\r\n\r\n return props.isVisible ? (\r\n \r\n \r\n \r\n \r\n \r\n ) : null;\r\n};\r\n\r\nLoader.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n updateAvailability: PropTypes.func,\r\n isVisible: PropTypes.bool.isRequired,\r\n changeLayout: PropTypes.func.isRequired,\r\n};\r\n\r\nLoader.defaultProps = {\r\n updateAvailability: _.noop,\r\n};\r\n\r\nexport const DefaultSubPageMenuLoader = React.memo(Loader);\r\n","import _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useEffect } from 'react';\r\nimport {\r\n withCampaignSiteMap,\r\n siteMapPropType,\r\n processor,\r\n} from '@bingads-webui-campaign-react/with-site-map';\r\nimport { useCurrentCampaign, useCurrentAdGroup } from '@bingads-webui-campaign-react/use-current-scope-entity';\r\nimport { withLayoutContext } from '@bingads-webui-react/app-layout-container';\r\n\r\n\r\nconst isExperimentCampaign = (campaign, adGroup) => !!(campaign && campaign.ExperimentId > 0 && !adGroup);\r\nconst ExperimentSubPageMenu = React.lazy(() => import(/* webpackMode: 'eager' */ './experiment-sub-page-menu').then(({ StyledExperimentSubPageMenu }) => ({ default: StyledExperimentSubPageMenu })));\r\n\r\nexport const Loader = (props) => {\r\n const { siteMap, updateAvailability, layoutConfig } = props;\r\n const campaign = useCurrentCampaign();\r\n const adGroup = useCurrentAdGroup();\r\n\r\n const selectedParent = _.findWhere(siteMap, { selected: true });\r\n // add judgement to fix the experiment part is blank when the score card hidden.\r\n const showCard = layoutConfig.tab.mode && layoutConfig.tab.mode === 'hidden';\r\n const available = isExperimentCampaign(campaign, adGroup) && !_.isEmpty(selectedParent) && !showCard;\r\n useEffect(() => {\r\n updateAvailability(available);\r\n });\r\n\r\n return props.isVisible ? (\r\n \r\n \r\n \r\n ) : null;\r\n};\r\n\r\nLoader.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n isVisible: PropTypes.bool.isRequired,\r\n updateAvailability: PropTypes.func,\r\n layoutConfig: PropTypes.shape({\r\n header: PropTypes.object.isRequired,\r\n nav: PropTypes.object.isRequired,\r\n menu: PropTypes.object.isRequired,\r\n status: PropTypes.object.isRequired,\r\n tab: PropTypes.object.isRequired,\r\n subTab: PropTypes.object.isRequired,\r\n content: PropTypes.object.isRequired,\r\n }).isRequired,\r\n};\r\n\r\nLoader.defaultProps = {\r\n updateAvailability: _.noop,\r\n};\r\n\r\nexport const ExperimentSubPageMenuLoader = withLayoutContext(withCampaignSiteMap(\r\n React.memo(Loader),\r\n [processor.processPermissions, processor.processPath]\r\n));\r\n","/* eslint-disable no-param-reassign */\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useEffect } from 'react';\r\nimport {\r\n withHotelCenterSiteMap,\r\n siteMapPropType,\r\n processorSet,\r\n} from '@bingads-webui-campaign-react/with-site-map';\r\nimport { StyledSubPageMenu } from '@bingads-webui-campaign-react/sub-page-menu';\r\nimport { Activity, Scenario } from '@bingads-webui-react/hoc-with-signal';\r\n\r\nconst hotelCenterPageCategory = {\r\n 'hotel-center-overview': true,\r\n 'hotel-center-assignment': true,\r\n 'hotel-center-intelligence': true,\r\n 'hotel-center-setup': true,\r\n feedupload: true,\r\n report: true,\r\n adExtensions: true,\r\n reconciliationreport: true,\r\n};\r\n\r\nconst idsToHideChildren = ['hotel-center-overview'];\r\n\r\nconst locateSiteMap = (siteMap, category) => {\r\n const dfsSearch = (target, options) => {\r\n const { getChildren, predicate, onFound } = options;\r\n\r\n if (predicate(target)) {\r\n onFound(target);\r\n\r\n const children = getChildren(target);\r\n _.each(children, x => dfsSearch(x, options));\r\n }\r\n };\r\n\r\n const virtualRoot = { children: siteMap, selected: true };\r\n const selectedRoad = [];\r\n const searchOptions = {\r\n getChildren: x => x.children || [],\r\n predicate: x => x.selected === true,\r\n onFound: x => selectedRoad.push(x),\r\n };\r\n\r\n dfsSearch(virtualRoot, searchOptions);\r\n\r\n const deepestNodeWithCategory = _.chain(selectedRoad)\r\n .map(x => (category[x.id] ? x : null))\r\n .compact()\r\n .last()\r\n .value();\r\n\r\n // No mapped category found, the sub page menu will be blank\r\n if (!deepestNodeWithCategory) {\r\n return [];\r\n }\r\n\r\n\r\n if (_.indexOf(idsToHideChildren, deepestNodeWithCategory.id) !== -1) {\r\n deepestNodeWithCategory.children = [];\r\n }\r\n\r\n // Normal category with children\r\n if (deepestNodeWithCategory.children && deepestNodeWithCategory.children.length > 0) {\r\n return [deepestNodeWithCategory];\r\n }\r\n\r\n // Category with no children, will create a vertual node to contain it\r\n const nodeWrapper = _.clone(deepestNodeWithCategory);\r\n nodeWrapper.children = [deepestNodeWithCategory];\r\n\r\n return [nodeWrapper];\r\n};\r\n\r\nexport const Loader = (props) => {\r\n const { siteMap, updateAvailability } = props;\r\n\r\n const selectedParent = _.findWhere(siteMap, { selected: true });\r\n const available = !_.isEmpty(selectedParent);\r\n useEffect(() => {\r\n updateAvailability(available);\r\n });\r\n\r\n const relocatedSiteMap = locateSiteMap(siteMap, hotelCenterPageCategory);\r\n return props.isVisible ? (\r\n \r\n \r\n \r\n \r\n ) : null;\r\n};\r\n\r\nLoader.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n updateAvailability: PropTypes.func,\r\n isVisible: PropTypes.bool.isRequired,\r\n changeLayout: PropTypes.func.isRequired,\r\n};\r\n\r\nLoader.defaultProps = {\r\n updateAvailability: _.noop,\r\n};\r\n\r\nexport const HotelCenterSubPageMenuLoader = withHotelCenterSiteMap(\r\n React.memo(Loader),\r\n processorSet.all\r\n);\r\n","/* eslint-disable no-param-reassign */\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useEffect } from 'react';\r\nimport {\r\n withHotelCenterV2SiteMap,\r\n siteMapPropType,\r\n processorSet,\r\n} from '@bingads-webui-campaign-react/with-site-map';\r\nimport { StyledSubPageMenu } from '@bingads-webui-campaign-react/sub-page-menu';\r\nimport { Activity, Scenario } from '@bingads-webui-react/hoc-with-signal';\r\n\r\nconst hotelCenterPageCategory = {\r\n 'property-center-overview': true,\r\n 'property-center-logos': true,\r\n 'property-center-properties': true,\r\n 'property-center-landingpage': true,\r\n 'property-center-pricing': true,\r\n 'property-center-shareofvoice': true,\r\n 'property-center-bookingreport': true,\r\n 'property-center-reconciliationreport': true,\r\n};\r\n\r\nconst idsToHideChildren = [\r\n 'property-center-properties',\r\n 'property-center-landingpage-detail',\r\n];\r\n\r\nconst locateSiteMap = (siteMap, category) => {\r\n const dfsSearch = (target, options) => {\r\n const { getChildren, predicate, onFound } = options;\r\n\r\n if (predicate(target)) {\r\n onFound(target);\r\n\r\n const children = getChildren(target);\r\n _.each(children, x => dfsSearch(x, options));\r\n }\r\n };\r\n\r\n const virtualRoot = { children: siteMap, selected: true };\r\n const selectedRoad = [];\r\n const searchOptions = {\r\n getChildren: x => x.children || [],\r\n predicate: x => x.selected === true,\r\n onFound: x => selectedRoad.push(x),\r\n };\r\n\r\n dfsSearch(virtualRoot, searchOptions);\r\n\r\n const deepestNodeWithCategory = _.chain(selectedRoad)\r\n .map(x => (category[x.id] ? x : null))\r\n .compact()\r\n .last()\r\n .value();\r\n\r\n // No mapped category found, the sub page menu will be blank\r\n if (!deepestNodeWithCategory) {\r\n return [];\r\n }\r\n\r\n\r\n if (_.indexOf(idsToHideChildren, deepestNodeWithCategory.id) !== -1) {\r\n deepestNodeWithCategory.children = [];\r\n }\r\n\r\n // Normal category with children\r\n if (deepestNodeWithCategory.children && deepestNodeWithCategory.children.length > 0) {\r\n return [deepestNodeWithCategory];\r\n }\r\n\r\n // Category with no children, will create a vertual node to contain it\r\n const nodeWrapper = _.clone(deepestNodeWithCategory);\r\n nodeWrapper.children = [deepestNodeWithCategory];\r\n\r\n return [nodeWrapper];\r\n};\r\n\r\nexport const Loader = (props) => {\r\n const { siteMap, updateAvailability } = props;\r\n\r\n const selectedParent = _.findWhere(siteMap, { selected: true });\r\n const available = !_.isEmpty(selectedParent);\r\n useEffect(() => {\r\n updateAvailability(available);\r\n });\r\n\r\n const relocatedSiteMap = locateSiteMap(siteMap, hotelCenterPageCategory);\r\n return props.isVisible ? (\r\n \r\n \r\n \r\n \r\n ) : null;\r\n};\r\n\r\nLoader.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n updateAvailability: PropTypes.func,\r\n isVisible: PropTypes.bool.isRequired,\r\n changeLayout: PropTypes.func.isRequired,\r\n location: PropTypes.shape({\r\n pathname: PropTypes.string.isRequired,\r\n }).isRequired,\r\n};\r\n\r\nLoader.defaultProps = {\r\n updateAvailability: _.noop,\r\n};\r\n\r\nexport const HotelCenterV2SubPageMenuLoader = withHotelCenterV2SiteMap(\r\n React.memo(Loader),\r\n processorSet.all\r\n);\r\n","import _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { storeQueries, MmcDataSourceInitializer } from '@bingads-webui-campaign-react/merchant-shared';\r\nimport { siteMapPropType, withToolsSiteMap, processorSet } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { StyledSubPageMenu } from '@bingads-webui-campaign-react/sub-page-menu';\r\nimport { Activity, Scenario } from '@bingads-webui-react/hoc-with-signal';\r\nimport { MmcNotificationTopBanner } from '@bingads-webui-campaign-react/merchant-center-notification';\r\n\r\nconst StyledIssuesCount = (props) => {\r\n const { issuesCount } = props;\r\n\r\n return (\r\n \r\n {issuesCount}\r\n \r\n );\r\n};\r\n\r\nStyledIssuesCount.propTypes = {\r\n issuesCount: PropTypes.number.isRequired,\r\n};\r\n\r\nconst MmcStoreSummarySubPageMenu = (props) => {\r\n const {\r\n scope: {\r\n values: {\r\n storeId,\r\n },\r\n },\r\n } = props;\r\n const [issuesCounts, setIssuesCounts] = useState({});\r\n\r\n useEffect(() => {\r\n if (storeId) {\r\n storeQueries.getIssuesCount(storeId)\r\n .then(mtResponse => setIssuesCounts({\r\n productIssues: mtResponse.ProductIssues,\r\n feedIssues: mtResponse.FeedIssues,\r\n storeIssues: mtResponse.StoreIssues,\r\n }));\r\n }\r\n }, [storeId]);\r\n\r\n const onTabItemRender = (item) => {\r\n const {\r\n productIssues, feedIssues, storeIssues,\r\n } = issuesCounts;\r\n\r\n if ((productIssues || productIssues === 0) && item.id === 'mmc-store-summary-productissues') {\r\n return ();\r\n } else if ((feedIssues || feedIssues === 0) && item.id === 'mmc-store-summary-feedissues') {\r\n return ();\r\n } else if ((storeIssues || storeIssues === 0) && item.id === 'mmc-store-summary-storeissues') {\r\n return ();\r\n }\r\n\r\n return null;\r\n };\r\n\r\n const {\r\n productIssues, feedIssues, storeIssues,\r\n } = issuesCounts;\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nMmcStoreSummarySubPageMenu.propTypes = {\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n};\r\n\r\nexport const Loader = (props) => {\r\n const {\r\n siteMap,\r\n updateAvailability,\r\n permissions,\r\n } = props;\r\n\r\n const selectedParent = _.findWhere(siteMap, { selected: true });\r\n const available = !_.isEmpty(selectedParent);\r\n\r\n useEffect(() => {\r\n updateAvailability(available);\r\n });\r\n\r\n return (\r\n \r\n \r\n { props.isVisible ?\r\n \r\n \r\n {permissions.dynamic.FeedLabelGmcMigration && !permissions.dynamic.FeedLabelBlockList && }\r\n {selectedParent && selectedParent.id === 'mmc-store-summary' ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n : null }\r\n \r\n );\r\n};\r\n\r\nLoader.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n updateAvailability: PropTypes.func,\r\n isVisible: PropTypes.bool.isRequired,\r\n changeLayout: PropTypes.func.isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n permissions: PropTypes.shape({\r\n dynamic: PropTypes.shape({\r\n FeedLabelGmcMigration: PropTypes.bool,\r\n FeedLabelBlockList: PropTypes.bool,\r\n }),\r\n }).isRequired,\r\n};\r\n\r\nLoader.defaultProps = {\r\n updateAvailability: _.noop,\r\n};\r\n\r\nexport const MmcStoreSubPageMenuLoader = withToolsSiteMap(\r\n React.memo(Loader),\r\n processorSet.all,\r\n [\r\n 'mmc-store-summary/mmc-store-summary',\r\n 'mmc-stores',\r\n 'mmc-feeds',\r\n 'mmc-promotions',\r\n 'mmc-import/mmc-import',\r\n 'mmc-settings/mmc-settings',\r\n 'mmc-products',\r\n ]\r\n);\r\n","import _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useEffect } from 'react';\r\nimport {\r\n withSiteMap,\r\n siteMapPropType,\r\n processorSet,\r\n allSiteMap,\r\n} from '@bingads-webui-campaign-react/with-site-map';\r\n\r\nconst RecommendationSubPageMenu = React.lazy(() => import(/* webpackMode: 'eager' */ './recommendation-sub-page-menu').then(({ StyledRecommendationSubPageMenu }) => ({ default: StyledRecommendationSubPageMenu })));\r\n\r\nexport const Loader = (props) => {\r\n const { siteMap, updateAvailability } = props;\r\n\r\n const selectedParent = _.findWhere(siteMap, { selected: true });\r\n const available = !_.isEmpty(selectedParent)\r\n && selectedParent.id === 'recommendations';\r\n useEffect(() => {\r\n updateAvailability(available);\r\n });\r\n\r\n return props.isVisible ? (\r\n \r\n \r\n \r\n ) : null;\r\n};\r\n\r\nLoader.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n isVisible: PropTypes.bool.isRequired,\r\n updateAvailability: PropTypes.func,\r\n};\r\n\r\nLoader.defaultProps = {\r\n updateAvailability: _.noop,\r\n};\r\n\r\nexport const RecommendationSubPageMenuLoader = withSiteMap(React.memo(Loader), processorSet.all, allSiteMap, 'recommendations');\r\n","import _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useCallback, useEffect, useContext } from 'react';\r\nimport { siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { StyledSubPageMenu } from '@bingads-webui-campaign-react/sub-page-menu';\r\nimport { Activity, Scenario } from '@bingads-webui-react/hoc-with-signal';\r\nimport { StyledMenuItemTag } from '@bingads-webui-react/menu-item-tag';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\n\r\nexport const Loader = (props) => {\r\n const { siteMap, updateAvailability } = props;\r\n const i18n = useContext(I18nContext);\r\n\r\n const onTabItemRender = useCallback((item) => {\r\n if (item.id === 'uet-tag-insights') {\r\n const pillStyle = { marginLeft: 5, verticalAlign: 'top', display: 'inline-block' };\r\n\r\n return (\r\n
\r\n \r\n
);\r\n }\r\n return null;\r\n }, [i18n]);\r\n\r\n const selectedParent = _.findWhere(siteMap, { selected: true });\r\n const available = !_.isEmpty(selectedParent);\r\n useEffect(() => {\r\n updateAvailability(available);\r\n });\r\n\r\n return props.isVisible ? (\r\n \r\n \r\n \r\n \r\n \r\n ) : null;\r\n};\r\n\r\nLoader.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n updateAvailability: PropTypes.func,\r\n isVisible: PropTypes.bool.isRequired,\r\n changeLayout: PropTypes.func.isRequired,\r\n};\r\n\r\nLoader.defaultProps = {\r\n updateAvailability: _.noop,\r\n};\r\n\r\nexport const UetTagSubPageMenu = React.memo(Loader);\r\n","import _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useEffect } from 'react';\r\nimport {\r\n withToolsSiteMap,\r\n siteMapPropType,\r\n processorSet,\r\n} from '@bingads-webui-campaign-react/with-site-map';\r\n\r\nconst BudgetCenterSubPageMenu = React.lazy(() => import(/* webpackMode: 'eager' */ './budget-center-sub-page-menu').then(({ StyledBudgetCenterSubPageMenu }) => ({ default: StyledBudgetCenterSubPageMenu })));\r\n\r\nexport const Loader = (props) => {\r\n const { siteMap, updateAvailability } = props;\r\n\r\n const selectedParent = _.findWhere(siteMap, { selected: true });\r\n const available = !_.isEmpty(selectedParent)\r\n && selectedParent.id === 'budget-center';\r\n useEffect(() => {\r\n updateAvailability(available);\r\n });\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nLoader.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n isVisible: PropTypes.bool.isRequired,\r\n updateAvailability: PropTypes.func,\r\n};\r\n\r\nLoader.defaultProps = {\r\n updateAvailability: _.noop,\r\n};\r\n\r\nexport const BudgetCenterSubPageMenuLoader = withToolsSiteMap(React.memo(Loader), processorSet.all, 'budget-center');\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { ElementSelector } from '@bingads-webui-campaign-react/element-selector';\r\nimport { withSiteMap, withToolsSiteMap, processorSet, withImportSiteMap } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { isNavigationRefreshOn } from '@bingads-webui-react/preference-utility';\r\n\r\nimport { DefaultSubPageMenuLoader } from './default-sub-page-menu-loader';\r\nimport { ExperimentSubPageMenuLoader } from './experiment-sub-page-menu-loader';\r\nimport { HotelCenterSubPageMenuLoader } from './hotel-center-sub-page-menu-loader';\r\nimport { HotelCenterV2SubPageMenuLoader } from './hotel-center-v2-sub-page-menu-loader';\r\nimport { MmcStoreSubPageMenuLoader } from './mmc-sub-page-menu-loader';\r\nimport { RecommendationSubPageMenuLoader } from './recommendation-sub-page-menu-loader';\r\nimport { UetTagSubPageMenu } from './uet-tag-sub-page-menu';\r\nimport { BudgetCenterSubPageMenuLoader } from './budget-center-sub-page-menu-loader';\r\n\r\nconst BusinessDataSubPageMenuLoader = withToolsSiteMap(\r\n DefaultSubPageMenuLoader,\r\n processorSet.all,\r\n 'business-data/business-data/*'\r\n);\r\n\r\nconst ImportCenterSubPageMenuLoader = withImportSiteMap(\r\n DefaultSubPageMenuLoader,\r\n processorSet.all,\r\n 'import-center/import-center/*'\r\n);\r\n\r\nconst AutomatedRuleSubPageMenuLoader = withToolsSiteMap(DefaultSubPageMenuLoader, processorSet.all, 'rules');\r\nconst BulkEditSubPageMenuLoader = withToolsSiteMap(DefaultSubPageMenuLoader, processorSet.all, 'bulk-edits');\r\nconst ScriptsSubPageMenuLoader = withToolsSiteMap(DefaultSubPageMenuLoader, processorSet.all, 'scripts');\r\nconst BulkUploadsSubPageMenuLoader = withToolsSiteMap(DefaultSubPageMenuLoader, processorSet.all, 'bulk-uploads');\r\nconst OfflineConversionsSubPageMenuLoader = withToolsSiteMap(DefaultSubPageMenuLoader, processorSet.all, 'offline-conversions');\r\nconst UetTagSubPageMenuLoader = withToolsSiteMap(UetTagSubPageMenu, processorSet.all, 'uet-tag');\r\n\r\nconst CampaignSubPageMenuLoader = withSiteMap(DefaultSubPageMenuLoader, processorSet.all);\r\n\r\nconst SubpageMenuContainerInternal = React.memo((props) => {\r\n const isNavigationRefreshBudgetCenterOn = isNavigationRefreshOn(props.permissions) && props.permissions.dynamic.NavigationRefreshBudgetCenter;\r\n return (\r\n \r\n {isNavigationRefreshBudgetCenterOn && }\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\nSubpageMenuContainerInternal.propTypes = {\r\n permissions: PropTypes.shape({\r\n dynamic: PropTypes.shape({\r\n NavigationRefresh: PropTypes.bool,\r\n NavigationRefreshBudgetCenter: PropTypes.bool,\r\n }),\r\n }).isRequired,\r\n};\r\n\r\nexport const SubpageMenuContainer = withPermissions(SubpageMenuContainerInternal);\r\n","import React from 'react';\r\nimport classnames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport { Activity, Scenario } from '@bingads-webui-react/hoc-with-signal';\r\nimport { MonthPicker } from '@bingads-webui-campaign-react/budget-center-component';\r\nimport { withComponentErrorLogging } from '@bingads-webui-campaign-react/global-error-options';\r\nimport { SecondaryNavigationExpandButton } from '@bingads-webui-campaign-react/secondary-navigation-expand-button';\r\nimport { navRefreshSiteMap, withSiteMap } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { ScopeBarLeftContent } from '@bingads-webui-fluent-component/scope-selector-menu';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { processorSet } from '@bingads-webui-react/with-site-map';\r\n\r\nimport { getBudgetCenterSubPageMenuStyles } from './styles/budget-center-sub-page-style';\r\n\r\nconst ExpandButton = withComponentErrorLogging(withSiteMap(SecondaryNavigationExpandButton, processorSet.navRefresh, navRefreshSiteMap), 'NavigationRefreshSecondaryNavigationExpandButton');\r\n\r\nclass BudgetCenterSubPageMenu extends React.Component {\r\n static defaultProps = {};\r\n\r\n componentDidMount() {\r\n }\r\n\r\n componentWillUnmount() {\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\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport const StyledBudgetCenterSubPageMenu = withI18nConsumer(withDefaultStyles(BudgetCenterSubPageMenu, getBudgetCenterSubPageMenuStyles));\r\n\r\nBudgetCenterSubPageMenu.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n classes: PropTypes.shape({\r\n BudgetCenterMenuBar: PropTypes.shape({}),\r\n LeftContent: PropTypes.shape({}),\r\n }).isRequired,\r\n};\r\n","export const getBudgetCenterSubPageMenuStyles = (_components, { palette }) => ({\r\n BudgetCenterMenuBar: {\r\n fontSize: 20,\r\n fontWeight: 600,\r\n lineHeight: '28px',\r\n paddingLeft: 32,\r\n paddingTop: 14,\r\n paddingBottom: 14,\r\n borderBottom: `1px solid ${palette.neutralLight}`,\r\n display: 'flex',\r\n flexDirection: 'row',\r\n },\r\n LeftContent: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n },\r\n});\r\n","/* eslint-disable no-param-reassign */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { ExperimentScoreCard2, parseDateRangeToQuery } from '@bingads-webui-campaign/experiment-score-card';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withGlobalFilter } from '@bingads-webui-campaign-react/global-filter-context';\r\nimport { withServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { WaterfallFilterStorage, WaterfallFilterType, waterfallDateFilterProcessor } from '@bingads-webui-campaign/filter-storage';\r\nimport { StyledSubPageMenu } from '@bingads-webui-campaign-react/sub-page-menu';\r\nimport { getEntityFromScope } from '@bingads-webui/edm-campaign';\r\nimport {\r\n withSiteMap,\r\n processorSet,\r\n} from '@bingads-webui-campaign-react/with-site-map';\r\nimport { odata } from '@bingads-webui/http-util';\r\nimport { Activity, Scenario } from '@bingads-webui-react/hoc-with-signal';\r\n\r\nconst withContexts = _.compose(withI18nConsumer, withServerContext, withPermissions, withScope);\r\nconst ExpScorecard = withContexts(ExperimentScoreCard2);\r\nconst WithSiteMapSubPageMenu = withSiteMap(\r\n React.memo(StyledSubPageMenu),\r\n processorSet.all\r\n);\r\n\r\nclass ExperimentSubPageMenu extends React.Component {\r\n static defaultProps = {\r\n showDatePicker: true,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.waterfallFilterStorage = new WaterfallFilterStorage({\r\n preferenceService: this.props.preferenceService,\r\n });\r\n this.forceResetLayout = true;\r\n }\r\n\r\n componentDidMount() {\r\n this.props.changeLayout({ tab: { showExperimentScoreCard: true } });\r\n }\r\n\r\n componentWillUnmount() {\r\n this.props.changeLayout({ tab: { showExperimentScoreCard: false } });\r\n }\r\n\r\n renderScorecard() {\r\n const dateFilter = waterfallDateFilterProcessor(\r\n this.waterfallFilterStorage.getFilters([WaterfallFilterType.DateFilter]),\r\n this.props.serverContext\r\n );\r\n const { currentAccount } = getEntityFromScope(this.props.scope);\r\n\r\n if (currentAccount && this.props.experimentId) {\r\n const expItemFromEdm = currentAccount.Experiments.$withKey(this.props.experimentId);\r\n\r\n const ExpScorecardLazy = React.lazy(() =>\r\n odata.get(expItemFromEdm.odataURL, {\r\n data: parseDateRangeToQuery(dateFilter),\r\n oDataToken: this.props.serverContext.Token,\r\n }).then(experimentFromOData => ({\r\n default: () => ,\r\n })).catch(() => ({\r\n default: () => null,\r\n })));\r\n\r\n return ;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.renderScorecard()}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport const StyledExperimentSubPageMenu = withScope(withGlobalFilter(ExperimentSubPageMenu));\r\n\r\nExperimentSubPageMenu.propTypes = {\r\n changeLayout: PropTypes.func.isRequired,\r\n available: PropTypes.bool.isRequired,\r\n isVisible: PropTypes.bool.isRequired,\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 DecimalFormatter: PropTypes.object.isRequired,\r\n Token: PropTypes.string.isRequired,\r\n }).isRequired,\r\n showDatePicker: PropTypes.bool,\r\n siteMap: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n scope: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n preferenceService: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n experimentId: PropTypes.number.isRequired,\r\n};\r\n","/* eslint-disable no-param-reassign */\r\nimport _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { StateStore } from '@bingads-webui/state-store';\r\nimport { withStateStore } from '@bingads-webui/with-state-store';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\nimport { withGlobalFilter } from '@bingads-webui-campaign-react/global-filter-context';\r\nimport { StyledSubPageMenu, HistoryButton, AutoApplyButton } from '@bingads-webui-campaign-react/sub-page-menu';\r\nimport {\r\n withSiteMap,\r\n processorSet,\r\n} from '@bingads-webui-campaign-react/with-site-map';\r\nimport { formatPercentOneDecimal } from '@bingads-webui-campaign/recommendation-core';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { StyledRecOptimizationOverallScore } from '@bingads-webui-campaign-react/recommendation-os-overall';\r\nimport { Activity, Scenario } from '@bingads-webui-react/hoc-with-signal';\r\n\r\nexport const recommendationDataStore = new StateStore({});\r\n\r\nconst WithSiteMapSubPageMenu = withSiteMap(\r\n React.memo(StyledSubPageMenu),\r\n processorSet.all\r\n);\r\n\r\nclass RecommendationSubPageMenu extends React.Component {\r\n static defaultProps = {\r\n showDatePicker: false,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.renderCategoryOptimizationScore = this.renderCategoryOptimizationScore.bind(this);\r\n this.getTabItems = this.getTabItems.bind(this);\r\n }\r\n\r\n getTabItems(tabItems) {\r\n const categoryScoreUpLifts = this.props.store.state.categoryScoreUpLifts &&\r\n _.map(this.props.store.state.categoryScoreUpLifts, e =>\r\n ({ ScoreUpLift: e.ScoreUpLift, Category: e.Category.split(' ')[0] }));\r\n return _.map(tabItems, (item) => {\r\n const categoryScoreUpLift = _.findWhere(categoryScoreUpLifts, { Category: item.id });\r\n return _.extend(\r\n {},\r\n item,\r\n { scoreUpLift: categoryScoreUpLift && categoryScoreUpLift.ScoreUpLift }\r\n );\r\n });\r\n }\r\n\r\n changeLayout = (params) => {\r\n const { overallOptimizationScoreBar } = this.props.store.state;\r\n\r\n if (params.tab && params.tab.mode && !_.isEmpty(overallOptimizationScoreBar)) {\r\n params.tab.mode = 'optimizationScore';\r\n }\r\n\r\n this.props.changeLayout(params);\r\n }\r\n\r\n renderMainOptScore() {\r\n const {\r\n overallOptimizationScoreBar,\r\n renderDownloadButton,\r\n isAutoApplyRecommendationEnabled,\r\n } = this.props.store.state;\r\n\r\n return (\r\n }\r\n renderDownloadButton={renderDownloadButton}\r\n renderHistoryButton={() => }\r\n i18n={this.props.i18n}\r\n scope={this.props.scope}\r\n isAsyncApplyEnabled={this.props.permissions.IsBAARecommendationsAsyncApplyEnabled}\r\n isAutoApplyRecommendationEnabled={isAutoApplyRecommendationEnabled}\r\n showDownloadButton={!this.props.scope.values.recommendationType}\r\n />\r\n );\r\n }\r\n\r\n renderCategoryOptimizationScore(categoryItem) {\r\n let categoryScore = '';\r\n\r\n if (categoryItem.scoreUpLift && categoryItem.scoreUpLift !== 0) {\r\n categoryScore = `+${formatPercentOneDecimal(categoryItem.scoreUpLift, this.props.i18n)}`;\r\n }\r\n\r\n return !_.isUndefined(categoryItem.scoreUpLift) && (\r\n
{categoryScore}
\r\n );\r\n }\r\n\r\n render() {\r\n const { permissions, scope } = this.props;\r\n const {\r\n overallOptimizationScoreBar,\r\n categoryScoreUpLifts,\r\n renderDownloadButton,\r\n isAutoApplyRecommendationEnabled,\r\n } = this.props.store.state;\r\n\r\n return (\r\n \r\n {!_.isEmpty(overallOptimizationScoreBar) && renderDownloadButton && this.renderMainOptScore()}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport const StyledRecommendationSubPageMenu =\r\n withStateStore(withScope(withGlobalFilter(withI18nConsumer(RecommendationSubPageMenu))), recommendationDataStore);\r\n\r\nRecommendationSubPageMenu.propTypes = {\r\n changeLayout: PropTypes.func.isRequired,\r\n available: PropTypes.bool.isRequired,\r\n isVisible: PropTypes.bool.isRequired,\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 DecimalFormatter: PropTypes.object.isRequired,\r\n Token: PropTypes.string.isRequired,\r\n }).isRequired,\r\n showDatePicker: PropTypes.bool,\r\n siteMap: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n scope: PropTypes.shape({\r\n values: PropTypes.shape({\r\n recommendationType: PropTypes.string,\r\n }).isRequired,\r\n }).isRequired,\r\n preferenceService: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n store: PropTypes.instanceOf(StateStore).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n permissions: PropTypes.shape({\r\n IsBAARecommendationsAsyncApplyEnabled: PropTypes.bool.isRequired,\r\n }).isRequired,\r\n};\r\n","import React, { useContext } from 'react';\r\nimport { Glyphicon, Button } from '@bingads-webui-react/primitive';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\n\r\nfunction DisabledDatePicker() {\r\n const today = new Date();\r\n const fourteenDaysAgo = new Date(\r\n today.getFullYear(),\r\n today.getMonth(),\r\n today.getDate() - 13,\r\n today.getHours(),\r\n today.getMinutes()\r\n );\r\n const i18n = useContext(I18nContext);\r\n const formattedToday = today.toLocaleDateString();\r\n const formattedStartDate = fourteenDaysAgo.toLocaleDateString();\r\n const buttonText = `${i18n.getString(_TL_('Last 14 days: '))}${formattedStartDate} - ${formattedToday}`;\r\n\r\n return (\r\n {buttonText}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default DisabledDatePicker;\r\n","import { Constants } from '@bingads-webui-theme-2018/theme-fluent';\r\n\r\nconst paddingLeft = Constants.PagePadding.smallMainSectionLeftPadding;\r\n\r\nexport const getTabBarStyles = (_, { palette = {} }) => ({\r\n menuContainer: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'stretch',\r\n marginLeft: '23px',\r\n '& .ms-Pivot': {\r\n height: '100%',\r\n overflow: 'hidden',\r\n '& .ms-Button': {\r\n height: '100%',\r\n outlineOffset: '-1px',\r\n '& a': {\r\n textDecoration: 'none',\r\n },\r\n '& .category-score-upLift': {\r\n display: 'inline',\r\n marginLeft: 8,\r\n fontWeight: 600,\r\n fontSize: 18,\r\n color: palette.themePrimary,\r\n },\r\n },\r\n },\r\n '&.campaigns, &.adgroups, &.ads-and-extensions, &.keywords, &.audiences': {\r\n marginLeft: paddingLeft - 8, // 8 is internal tab button padding\r\n },\r\n '& #bingads-campaign-react-sub-page-menu-tabs-tab-Dismissed:before': {\r\n backgroundColor: palette.neutralQuaternaryAlt,\r\n bottom: 14,\r\n width: 1,\r\n content: '\\'\\'',\r\n height: 30,\r\n left: -4,\r\n position: 'absolute',\r\n },\r\n '& button.ms-Pivot-link:active #bingads-campaign-react-sub-page-menu-tabs-tab-Dismissed:before': {\r\n left: -12,\r\n },\r\n },\r\n onlyOneTabItem: {\r\n '& .nav-tabs>li.active': {\r\n '&:hover': {\r\n backgroundColor: palette.white,\r\n },\r\n\r\n '& a': {\r\n fontSize: '26px !important',\r\n '&:before': {\r\n border: 'none',\r\n },\r\n '&:hover': {\r\n backgroundColor: palette.white,\r\n },\r\n },\r\n },\r\n },\r\n notAvailableTextContainer: {\r\n color: palette.white,\r\n '&:hover': {\r\n color: palette.themePrimary,\r\n textDecoration: 'none',\r\n '& .iconba-OpenInNewWindow': {\r\n opacity: 1,\r\n },\r\n },\r\n '&:active': {\r\n color: palette.themePrimary,\r\n textDecoration: 'none',\r\n '& .iconba-OpenInNewWindow': {\r\n opacity: 1,\r\n },\r\n },\r\n '&:focus': {\r\n color: palette.themePrimary,\r\n textDecoration: 'none',\r\n '& .iconba-OpenInNewWindow': {\r\n opacity: 1,\r\n },\r\n },\r\n textDecoration: 'none',\r\n },\r\n availableTextContainer: {\r\n color: palette.white,\r\n textDecoration: 'none',\r\n },\r\n selectedTextContainer: {\r\n color: palette.white,\r\n },\r\n fallBackTextContainer: {\r\n color: palette.themePrimary,\r\n '& .iconba-OpenInNewWindow': {\r\n opacity: 1,\r\n },\r\n },\r\n text: {\r\n color: palette.neutralPrimary,\r\n },\r\n fallbackGlyph: {\r\n fontSize: 16,\r\n paddingLeft: '3px',\r\n color: 'inherit',\r\n opacity: 0,\r\n },\r\n singleItem: {\r\n fontSize: 26,\r\n fontWeight: 800,\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n paddingLeft: 8,\r\n paddingRight: 8,\r\n marginRight: 8,\r\n justifyContent: 'center',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n expandButtonContainer: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n});\r\n","import React from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\nimport { CampaignType } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { Glyphicon } from '@bingads-webui-react/primitive';\r\nimport { Pivot, PivotItem, PivotLinkSize, FocusZone, IconButton } from '@fluentui/react';\r\nimport { FallbackCallout } from '@bingads-webui-react/fallback-feature';\r\nimport { SecondaryNavigationExpandButton } from '@bingads-webui-campaign-react/secondary-navigation-expand-button';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { isNavigationRefreshOn } from '@bingads-webui-react/preference-utility';\r\nimport {\r\n siteMapPropType,\r\n withSiteMap,\r\n processor,\r\n navRefreshSiteMap\r\n} from '@bingads-webui-campaign-react/with-site-map';\r\nimport { processorSet } from '@bingads-webui-react/with-site-map';\r\nimport { withComponentErrorLogging } from '@bingads-webui-campaign-react/global-error-options';\r\n\r\nimport { getTabBarStyles } from '../styles/tab-bar-styles';\r\n\r\nconst DROP_DOWN_PIVOT_ITEM = 'dropdown-pivot';\r\n\r\nconst navRefreshProcessorSet = [\r\n processor.processImportCenterMode,\r\n processor.processMixedModeAdGroup,\r\n processor.processGlobalFilter,\r\n processor.processCampaignType,\r\n processor.processCampaignId,\r\n processor.processSmartCampaign,\r\n processor.processSmartShoppingCampaign,\r\n processor.processHotelCampaign,\r\n processor.processPmaxCampaignPageMenu,\r\n processor.processPmaxRetailCampaignPageMenu,\r\n ...processorSet.navRefresh,\r\n];\r\n\r\nconst ExpandButton = withComponentErrorLogging(withSiteMap(SecondaryNavigationExpandButton, navRefreshProcessorSet, navRefreshSiteMap), 'NavigationRefreshSecondaryNavigationExpandButton');\r\n\r\nclass TabBar extends React.PureComponent {\r\n static defaultProps = { fallBackTabItem: null };\r\n\r\n constructor(props) {\r\n super(props);\r\n const {\r\n classes,\r\n className,\r\n tabItems,\r\n responsiveSize,\r\n } = props;\r\n\r\n const subMenuClassNamePrefix = 'bingads-campaign-react-tab-bar';\r\n this.menuContainerPartClassName = classNames([\r\n classes.menuContainer,\r\n subMenuClassNamePrefix,\r\n className,\r\n 'large-links',\r\n `maxTabSize${responsiveSize}`]);\r\n if (tabItems.length === 1) {\r\n this.menuContainerPartClassName = classNames([this.menuContainerPartClassName, this.props.classes.onlyOneTabItem]);\r\n }\r\n this.moreButtonRef = React.createRef();\r\n }\r\n\r\n onSelectPivotItem = (item) => {\r\n if (item.props.itemKey !== DROP_DOWN_PIVOT_ITEM) {\r\n this.props.onSelect(item.props.itemKey);\r\n } else {\r\n this.moreButtonRef.current.openMenu();\r\n }\r\n };\r\n\r\n genereateOverflowMenuItemProps = (leftOverItems) => {\r\n const { i18n } = this.props;\r\n const menuProps = {};\r\n menuProps.items = [];\r\n _.each(leftOverItems, (item, index) => {\r\n menuProps.items[index] = {};\r\n const menuItem = menuProps.items[index];\r\n menuItem.key = item.id;\r\n menuItem.text = i18n.getString(item.name);\r\n menuItem.onClick = () => this.props.onSelect(item.id);\r\n });\r\n return menuProps;\r\n };\r\n\r\n generateTabItemsFragment = (items) => {\r\n const tabItemsFragement = items.map(item => ((\r\n this.title(item)}\r\n />\r\n )));\r\n\r\n return tabItemsFragement;\r\n };\r\n\r\n title = (item) => {\r\n const {\r\n classes,\r\n i18n,\r\n fallBackTabItem,\r\n handleClose,\r\n availableTabItems,\r\n onTabItemRender,\r\n renderExtraContent,\r\n selectedTabItem,\r\n } = this.props;\r\n const classNameArray = [classes.textContainer];\r\n\r\n const localizedName = i18n.getString(item.name);\r\n if (_.find(availableTabItems, tabItem => tabItem.id === item.id)) {\r\n const isSelected = selectedTabItem.id === item.id;\r\n return ((\r\n \r\n \r\n \r\n {localizedName}\r\n \r\n {onTabItemRender && onTabItemRender(item)}\r\n \r\n {renderExtraContent(item)}\r\n \r\n ));\r\n }\r\n\r\n classNameArray.push(classes.notAvailableTextContainer);\r\n if (fallBackTabItem === item) {\r\n classNameArray.push(classes.fallBackTextContainer);\r\n }\r\n\r\n return ((\r\n \r\n
\r\n {localizedName}\r\n \r\n
\r\n \r\n ));\r\n };\r\n\r\n renderExpandButton = () => {\r\n const { classes, permissions } = this.props;\r\n if (!isNavigationRefreshOn(permissions)) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n };\r\n\r\n render() {\r\n const {\r\n selectedTabItem,\r\n tabItems,\r\n responsiveSize,\r\n i18n,\r\n classes,\r\n className,\r\n } = this.props;\r\n\r\n let orderedTabItems = [];\r\n let tabItemsFragement = null;\r\n\r\n // tab bar must not be present when there's no selected item. Happens in rare scenarios such as when\r\n // user switches from an account which has lot of campaings to an account which has none. If the current\r\n // page is not part of the scope, tab bar will throw an error and crash the page since selectedTabItem is\r\n // empty.\r\n if (_.isEmpty(selectedTabItem)) {\r\n return null;\r\n }\r\n\r\n const selectedIndex = _.findIndex(tabItems, item => item.id === selectedTabItem.id);\r\n\r\n // rearranging logic.\r\n // responsive size 0 is show all tabs.\r\n // responsibe size 1,2,3 corresponds to number of tabs we can show.\r\n // if responsize size is 0 we show all the tabs.\r\n // if responsive size is either 1,2,3 and the selectedTab's Index is not within responsive size range, we replace the last item in the tabs with the selected item\r\n // and fill in the other items.\r\n // for responsive size = 3 and tabItems = 5 selectedIndex = 3 well have\r\n // firstSetOfTabs = [0, 1]\r\n // selectedIndex = [3]\r\n // restOfTheTabs = [2, 4]\r\n // after rearranging [0,1,3,2,4]\r\n\r\n if (responsiveSize === 0) {\r\n // this is when we have space to show all the elements.\r\n tabItemsFragement = this.generateTabItemsFragment(tabItems);\r\n } else {\r\n if (selectedIndex >= responsiveSize) {\r\n const firstSetOfTabs = tabItems.slice(0, responsiveSize - 1);\r\n const restOfTheTabs = _.filter(tabItems.slice(responsiveSize - 1, tabItems.length), item => item.id !== selectedTabItem.id);\r\n orderedTabItems = [...firstSetOfTabs, selectedTabItem, ...restOfTheTabs];\r\n } else {\r\n orderedTabItems = tabItems;\r\n }\r\n\r\n tabItemsFragement = this.generateTabItemsFragment(orderedTabItems);\r\n }\r\n\r\n let newItems = tabItemsFragement;\r\n let leftOverItems = [];\r\n\r\n if (responsiveSize > 0) {\r\n newItems = newItems.slice(0, responsiveSize);\r\n leftOverItems = orderedTabItems.slice(responsiveSize, orderedTabItems.length);\r\n }\r\n\r\n if (leftOverItems.length > 0) {\r\n const moreIcon = {\r\n iconName: 'More',\r\n };\r\n\r\n const contextualMenu = (\r\n null}\r\n />\r\n );\r\n\r\n const pivotOverflowItem = (\r\n contextualMenu}\r\n itemKey={DROP_DOWN_PIVOT_ITEM}\r\n key={DROP_DOWN_PIVOT_ITEM}\r\n />\r\n );\r\n newItems.push(pivotOverflowItem);\r\n }\r\n if (tabItems.length === 1) {\r\n return (\r\n
\r\n {this.renderExpandButton()}\r\n \r\n {i18n.getString(tabItems[0].name)}\r\n \r\n
\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n {this.renderExpandButton()}\r\n \r\n {newItems}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nTabBar.propTypes = {\r\n classes: PropTypes.shape(_.mapObject(\r\n getTabBarStyles({}, {}),\r\n _.constant(PropTypes.string.isRequired)\r\n )).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n className: PropTypes.string.isRequired,\r\n responsiveSize: PropTypes.number,\r\n onSelect: PropTypes.func.isRequired,\r\n handleClose: PropTypes.func.isRequired,\r\n tabItems: siteMapPropType.isRequired,\r\n availableTabItems: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.string,\r\n name: PropTypes.string,\r\n route: PropTypes.string,\r\n selected: PropTypes.bool,\r\n campaignTypes: PropTypes.arrayOf(PropTypes.oneOf([\r\n CampaignType.None,\r\n CampaignType.Default,\r\n CampaignType.Shopping,\r\n CampaignType.DynamicSearchAds,\r\n CampaignType.Audience,\r\n CampaignType.Smart,\r\n CampaignType.Hotel,\r\n CampaignType.All,\r\n ])),\r\n available: PropTypes.bool,\r\n })).isRequired,\r\n selectedTabItem: PropTypes.shape({\r\n id: PropTypes.string,\r\n name: PropTypes.string,\r\n route: PropTypes.string,\r\n selected: PropTypes.bool,\r\n campaignTypes: PropTypes.arrayOf(PropTypes.oneOf([\r\n CampaignType.None,\r\n CampaignType.Default,\r\n CampaignType.Shopping,\r\n CampaignType.DynamicSearchAds,\r\n CampaignType.Audience,\r\n CampaignType.Smart,\r\n CampaignType.Hotel,\r\n CampaignType.All,\r\n ])),\r\n available: PropTypes.bool,\r\n }).isRequired,\r\n fallBackTabItem: PropTypes.shape({\r\n id: PropTypes.string,\r\n name: PropTypes.string,\r\n route: PropTypes.string,\r\n selected: PropTypes.bool,\r\n campaignTypes: PropTypes.arrayOf(PropTypes.oneOf([\r\n CampaignType.None,\r\n CampaignType.Default,\r\n CampaignType.Shopping,\r\n CampaignType.DynamicSearchAds,\r\n CampaignType.Audience,\r\n CampaignType.Smart,\r\n CampaignType.Hotel,\r\n CampaignType.All,\r\n ])),\r\n available: PropTypes.bool,\r\n }),\r\n onTabItemRender: PropTypes.func,\r\n renderExtraContent: PropTypes.func,\r\n permissions: PropTypes.shape({\r\n dynamic: PropTypes.shape({\r\n NavigationRefresh: PropTypes.bool,\r\n }),\r\n }).isRequired,\r\n};\r\n\r\nTabBar.defaultProps = {\r\n responsiveSize: 0,\r\n onTabItemRender: null,\r\n renderExtraContent: () => null,\r\n};\r\nexport const StyledTabBar =\r\n withPermissions(withScope(withDefaultStyles(TabBar, getTabBarStyles)));\r\n","/* eslint-disable react-hooks/rules-of-hooks */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { CivilDate } from 'tc39-proposal-temporal';\r\nimport { ComparedDateRangePicker } from '@bingads-webui-react/compared-date-range-picker';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\nimport { setClarityTag } from '@bingads-webui-universal/clarity';\r\nimport { withInstrumentation } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { generateDateData, getRangesFromData, translateLegacyToIANATimezone } from '@bingads-webui-universal/temporal-utitlities';\r\n\r\nconst updateToWaterfallFilter = (props, dateFromDatePicker) => {\r\n const data = generateDateData(\r\n props.i18n,\r\n dateFromDatePicker,\r\n props.dateFormat,\r\n props.lcid,\r\n translateLegacyToIANATimezone(props.timeZone)\r\n );\r\n props.updateWaterfallFilter(data);\r\n};\r\n\r\nconst DatePicker = React.memo((props) => {\r\n const {\r\n i18n,\r\n dateFilter,\r\n dateFormat,\r\n lcid,\r\n timeZone,\r\n onSwitchCompare,\r\n instrumentation,\r\n disableCompare,\r\n minDate,\r\n serverContext,\r\n rangeIds,\r\n } = props;\r\n const { selectedRange, selectedComparedRange } =\r\n getRangesFromData(i18n, dateFilter, dateFormat, lcid);\r\n\r\n const dateRangePickedLogger = instrumentation.datePicker.create().dateRangePicked.create();\r\n\r\n const dateRangeLogger = (dateRange) => {\r\n dateRangePickedLogger.trace({\r\n dateRange,\r\n });\r\n if (dateRange != null && dateRange.method === 'onApply') {\r\n setClarityTag({ DatePickerOnApply: 'true' });\r\n }\r\n if (dateRange != null && dateRange.method === 'onQuickApply') {\r\n setClarityTag({ DatePickerOnQuickApply: 'true' });\r\n }\r\n };\r\n\r\n const isImprovedDateRangePickerEnabled = serverContext.DynamicPermissions && serverContext.DynamicPermissions.ImprovedDateFilter;\r\n\r\n if (isImprovedDateRangePickerEnabled) {\r\n useDefaultStyles(() => ({\r\n '@global': {\r\n 'main .app-shell-tab .compared-date-range-picker': {\r\n minWidth: '375px',\r\n '& .compared-date-range-picker-input': {\r\n minWidth: '375px',\r\n textAlign: 'right',\r\n },\r\n },\r\n },\r\n }));\r\n }\r\n\r\n return (\r\n updateToWaterfallFilter(props, dateFromDatePicker)}\r\n onSwitchCompare={onSwitchCompare}\r\n dateRangeLogger={dateRangeLogger}\r\n disableCompare={disableCompare}\r\n rangeIds={rangeIds}\r\n minDate={minDate}\r\n />);\r\n});\r\n\r\nDatePicker.propTypes = {\r\n dateFilter: PropTypes.shape({\r\n RangeStartDate: PropTypes.string,\r\n RangeEndDate: PropTypes.string,\r\n RangeId: PropTypes.number,\r\n Rangelcid: PropTypes.number,\r\n RangeIndex: PropTypes.number,\r\n RangeDays: PropTypes.number,\r\n compared: PropTypes.shape({\r\n start: PropTypes.instanceOf(Date),\r\n end: PropTypes.instanceOf(Date),\r\n formattedStart: PropTypes.string,\r\n formattedEnd: PropTypes.string,\r\n key: PropTypes.string,\r\n text: PropTypes.string,\r\n }),\r\n }),\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n // eslint-disable-next-line\r\n lcid: PropTypes.number.isRequired,\r\n timeZone: PropTypes.number.isRequired,\r\n dateFormat: PropTypes.string.isRequired,\r\n onSwitchCompare: PropTypes.func.isRequired,\r\n // eslint-disable-next-line react/forbid-prop-types\r\n instrumentation: PropTypes.object.isRequired,\r\n disableCompare: PropTypes.bool,\r\n serverContext: PropTypes.shape({\r\n DynamicPermissions: PropTypes.shape({\r\n ImprovedDateFilter: PropTypes.bool,\r\n }),\r\n }),\r\n rangeIds: PropTypes.object,\r\n minDate: PropTypes.instanceOf(CivilDate),\r\n};\r\n\r\nDatePicker.defaultProps = {\r\n dateFilter: {},\r\n disableCompare: false,\r\n minDate: null,\r\n serverContext: {},\r\n rangeIds: {},\r\n};\r\n\r\nexport const DatePickerWithScope = withInstrumentation(withScope(DatePicker));\r\n","import React from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { Glyphicon } from '@bingads-webui-react/primitive';\r\nimport { withSiteMap, getRoutePathById } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { QueryParam, withScope } from '@bingads-webui-react/scope-service';\r\nimport { Callout } from '@bingads-webui-react/callout';\r\n\r\nimport { getHistoryButtonStyles } from '../styles/history-button-styles';\r\n\r\nfunction historyClickHandler(siteMap, scope, accountId) {\r\n scope.save(getRoutePathById(\r\n siteMap,\r\n _.isUndefined(accountId) ?\r\n 'mcc-recommendation-history' :\r\n 'baa-recommendation-history'\r\n ));\r\n}\r\n\r\nclass historyButton extends React.Component {\r\n state = { showPopover: false };\r\n\r\n toggle = () => {\r\n this.setState(state => ({ showPopover: !state.showPopover }));\r\n }\r\n\r\n render() {\r\n const {\r\n i18n, scope, siteMap, classes,\r\n } = this.props;\r\n const { aid: accountId } = scope.values;\r\n\r\n return (\r\n
\r\n {i18n.getString(_TL_('My applied recommendation history'))}\r\n }\r\n placement=\"bottom\"\r\n closeButton={false}\r\n >\r\n historyClickHandler(siteMap, scope, accountId)}\r\n onFocus={this.toggle}\r\n onBlur={this.toggle}\r\n onMouseOver={this.toggle}\r\n onMouseOut={this.toggle}\r\n className={classes.entityContentRecommendationHistory}\r\n aria-label={i18n.getString(_TL_('My Applied Recommendation History'))}\r\n >\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nhistoryButton.propTypes = {\r\n classes: PropTypes.shape(_.mapObject(\r\n getHistoryButtonStyles({}, {}),\r\n _.constant(PropTypes.string.isRequired)\r\n )).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n siteMap: PropTypes.arrayOf(PropTypes.any).isRequired,\r\n};\r\n\r\nconst HistoryButton = withI18nConsumer(withSiteMap(withScope(withDefaultStyles(historyButton, getHistoryButtonStyles))));\r\n\r\nexport {\r\n HistoryButton,\r\n};\r\n","export const getHistoryButtonStyles = (_, { palette = {} }) => ({\r\n recommendationHistoryItem: {\r\n position: 'relative',\r\n top: '5px',\r\n marginRight: '19px',\r\n textAlign: 'right',\r\n },\r\n entityContentRecommendationHistory: {\r\n border: 'none',\r\n cursor: 'pointer',\r\n overflow: 'hidden',\r\n outline: 'none',\r\n backgroundColor: 'Transparent',\r\n backgroundRepeat: 'no-repeat',\r\n },\r\n entityIcon: {\r\n position: 'relative',\r\n lineHeight: '16px',\r\n fontSize: '16px',\r\n color: palette.themePrimary,\r\n },\r\n entityContent: {\r\n lineHeight: '16px',\r\n fontSize: '12px',\r\n color: palette.neutralPrimary,\r\n whiteSpace: 'nowrap',\r\n },\r\n recommendationHistoryPopover: {\r\n '& .popover-content': {\r\n padding: '11px 18px',\r\n },\r\n },\r\n});\r\n","import React from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { Glyphicon } from '@bingads-webui-react/primitive';\r\nimport { withSiteMap, getRoutePathById } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { QueryParam, withScope } from '@bingads-webui-react/scope-service';\r\nimport { Callout } from '@bingads-webui-react/callout';\r\nimport { StyledMenuItemTag } from '@bingads-webui-react/menu-item-tag';\r\n\r\nimport { getAutoApplyItemButtonStyles } from '../styles/auto-apply-button-styles';\r\n\r\nfunction autoApplyClickHandler(siteMap, scope) {\r\n scope.save(getRoutePathById(\r\n siteMap,\r\n 'recommendation-auto-apply-settings'\r\n ));\r\n}\r\n\r\nclass autoApplyButton extends React.Component {\r\n state = { showPopover: false };\r\n\r\n toggle = () => {\r\n this.setState(state => ({ showPopover: !state.showPopover }));\r\n }\r\n\r\n render() {\r\n const showTag = {\r\n text: _TL_('BETA'),\r\n expDate: new Date('2023/03/31'),\r\n };\r\n const {\r\n i18n, scope, siteMap, classes,\r\n } = this.props;\r\n\r\n return (\r\n
\r\n {i18n.getString(_TL_('Auto-apply setting'))}\r\n }\r\n placement=\"bottom\"\r\n closeButton={false}\r\n >\r\n autoApplyClickHandler(siteMap, scope)}\r\n onFocus={this.toggle}\r\n onBlur={this.toggle}\r\n onMouseOver={this.toggle}\r\n onMouseOut={this.toggle}\r\n className={classes.entityContentRecommendationAutoApply}\r\n aria-label={i18n.getString(_TL_('Auto-apply setting'))}\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\nautoApplyButton.propTypes = {\r\n classes: PropTypes.shape(_.mapObject(\r\n getAutoApplyItemButtonStyles({}, {}),\r\n _.constant(PropTypes.string.isRequired)\r\n )).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n siteMap: PropTypes.arrayOf(PropTypes.any).isRequired,\r\n};\r\n\r\nconst AutoApplyButton = withI18nConsumer(withSiteMap(withScope(withDefaultStyles(autoApplyButton, getAutoApplyItemButtonStyles))));\r\n\r\nexport {\r\n AutoApplyButton,\r\n};\r\n","export const getAutoApplyItemButtonStyles = (_, { palette = {} }) => ({\r\n entityContentRecommendationAutoApply: {\r\n border: 'none',\r\n cursor: 'pointer',\r\n overflow: 'hidden',\r\n outline: 'none',\r\n backgroundColor: 'Transparent',\r\n backgroundRepeat: 'no-repeat',\r\n },\r\n entityIcon: {\r\n position: 'relative',\r\n lineHeight: '16px',\r\n fontSize: '16px',\r\n color: palette.themePrimary,\r\n },\r\n entityContent: {\r\n lineHeight: '16px',\r\n fontSize: '12px',\r\n color: palette.neutralPrimary,\r\n whiteSpace: 'nowrap',\r\n },\r\n recommendationAutoApplyPopover: {\r\n '& .popover-content': {\r\n padding: '11px 18px',\r\n },\r\n },\r\n betaTagContainer: {\r\n top: -16,\r\n right: -32,\r\n position: 'absolute',\r\n },\r\n});\r\n","import React from 'react';\r\nimport $ from 'jquery';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport _ from 'underscore';\r\nimport queryString from 'query-string';\r\nimport { CivilDate } from 'tc39-proposal-temporal';\r\nimport { findSelectedNode } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { components, LayoutContext } from '@bingads-webui-react/app-layout-container';\r\nimport { COPILOT_WIDTH } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withGlobalFilter } from '@bingads-webui-campaign-react/global-filter-context';\r\nimport { WaterfallFilterType } from '@bingads-webui-campaign/filter-storage';\r\nimport { QueryParam, withScope } from '@bingads-webui-react/scope-service';\r\nimport { RANGES } from '@bingads-webui-react/compared-date-range-picker';\r\nimport { withResponsiveSize } from '@bingads-webui-react/with-responsive-size';\r\nimport { withPageReady } from '@bingads-webui-react/with-page-ready';\r\nimport { withActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport DisabledDatePicker from './components/disabled-date-picker';\r\nimport { StyledTabBar } from './components/tab-bar';\r\nimport { getSubPageMenuStyles } from './styles/sub-page-menu-styles';\r\nimport { DatePickerWithScope } from './components/date-picker';\r\nimport { HistoryButton } from './components/history-button';\r\nimport { AutoApplyButton } from './components/auto-apply-button';\r\nimport { getPathNameOfSubPageItem } from './common/router-helper';\r\n\r\nconst getSelectedItemsFromMap = items => _.find(items, item => item.selected);\r\nconst getAvailableItemsFromMap = items => _.filter(items, item => item.available);\r\nconst subPageMenuTabFont = '600 18px Segoe UI';\r\nconst paddingLeft = 8;\r\nconst paddingRight = 8;\r\nconst marginRight = 8;\r\nconst subPageMenuTabSpaceBetween = paddingLeft + paddingRight + marginRight;\r\n\r\nclass SubPageMenuInternal extends React.Component {\r\n static defaultProps = {\r\n showDatePicker: true,\r\n showDisabledDatePicker: false,\r\n singleTabMode: false,\r\n initialResetLayout: true,\r\n forceResetLayout: false,\r\n showHistoryButton: false,\r\n showDownloadButton: false,\r\n showAutoApplyButton: false,\r\n getTabItems: _.identity,\r\n disableCompare: false,\r\n onTabItemRender: null,\r\n renderExtraContent: () => null,\r\n renderDownloadButton: () => null,\r\n minDate: null,\r\n selectedParent: '',\r\n activity: { signal: _.noop },\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n fallBackTabItem: null,\r\n SubPageMenuResponsiveSizes: [],\r\n subMenuClassName: '',\r\n pickerContainerPartClassName: '',\r\n tabBarPreFixClassName: '',\r\n datePickerWidth: 0,\r\n };\r\n if (props.initialResetLayout) {\r\n this.resetLayout(true);\r\n }\r\n this.ResponsiveTabBar = StyledTabBar;\r\n this.canvas = document.createElement('canvas');\r\n }\r\n\r\n componentDidMount() {\r\n this.getResponsiveTabBar();\r\n }\r\n\r\n shouldComponentUpdate(nextProps, nextState) {\r\n if (this.props.siteMap !== nextProps.siteMap) {\r\n this.ResponsiveTabBar = StyledTabBar;\r\n }\r\n\r\n if (nextProps.scope !== this.props.scope\r\n || nextProps.serverContext !== this.props.serverContext\r\n || nextProps.showDatePicker !== this.props.showDatePicker\r\n || nextProps.showDisabledDatePicker !== this.props.showDisabledDatePicker\r\n || nextProps.disableCompare !== this.props.disableCompare\r\n || nextProps.showHistoryButton !== this.props.showHistoryButton\r\n || nextProps.showAutoApplyButton !== this.props.showAutoApplyButton\r\n || nextProps.showDownloadButton !== this.props.showDownloadButton\r\n || nextProps.siteMap !== this.props.siteMap\r\n || nextState.SubPageMenuResponsiveSizes !== this.state.SubPageMenuResponsiveSizes\r\n || nextState.fallBackTabItem !== this.state.fallBackTabItem\r\n || nextProps.mode !== this.props.mode\r\n || nextState.subMenuClassName !== this.state.subMenuClassName\r\n || nextState.pickerContainerPartClassName !== this.state.pickerContainerPartClassName\r\n || nextState.tabBarPreFixClassName !== this.state.tabBarPreFixClassName\r\n || nextState.datePickerWidth !== this.state.datePickerWidth\r\n || nextProps.singleTabMode !== this.props.singleTabMode\r\n || this.getIsCopilotExpanded(nextProps) !== this.getIsCopilotExpanded(this.props)\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (this.props.siteMap !== prevProps.siteMap || this.getIsCopilotExpanded(prevProps) !== this.getIsCopilotExpanded(this.props) || this.props.singleTabMode !== prevProps.singleTabMode) {\r\n this.getResponsiveTabBar();\r\n }\r\n\r\n if (prevProps.showDisabledDatePicker !== this.props.showDisabledDatePicker\r\n || prevProps.showDatePicker !== this.props.showDatePicker\r\n || prevProps.disableCompare !== this.props.disableCompare\r\n || prevProps.mode !== this.props.mode\r\n || this.props.forceResetLayout) {\r\n this.resetLayout();\r\n }\r\n }\r\n\r\n onSelect = (selectedKey) => {\r\n const { activity } = this.props;\r\n activity.signal(`sub page menu item clicked, name: ${selectedKey}`);\r\n\r\n if (!this.selectedTabItem || selectedKey !== this.selectedTabItem.id) {\r\n const [clickedTabItem] = _.filter(this.tabItems, item => item.id === selectedKey);\r\n if (clickedTabItem.available) {\r\n this.setState({ fallBackTabItem: null });\r\n const pathname = getPathNameOfSubPageItem(clickedTabItem);\r\n let { search } = this.props.scope.history.location;\r\n if (pathname.includes('vnext/recommendations')) {\r\n search = queryString.parse(search);\r\n search = _.omit(search, 'recommendationType');\r\n search = queryString.stringify(search);\r\n }\r\n this.props.scope.history.push({\r\n pathname,\r\n search,\r\n });\r\n } else {\r\n this.setState({ fallBackTabItem: clickedTabItem });\r\n }\r\n } else {\r\n this.setState({ fallBackTabItem: null });\r\n }\r\n };\r\n\r\n onSwitchCompare = ({ isChecked }) => {\r\n if (isChecked) {\r\n this.props.changeLayout({ tab: { mode: 'expanded' } });\r\n this.setClassName('expanded');\r\n } else {\r\n this.props.changeLayout({ tab: { mode: 'collapsed' } });\r\n this.setClassName('collapsed');\r\n }\r\n };\r\n\r\n getTextWidth = (text) => {\r\n const context = this.canvas.getContext('2d');\r\n context.font = subPageMenuTabFont;\r\n const metrics = context.measureText(text);\r\n return metrics.width;\r\n };\r\n\r\n getIsCopilotExpanded(props) {\r\n const isCopilotExpanded = _.chain(props).result('layoutConfig').result('copilot').result('mode')\r\n .value() === 'expanded';\r\n return isCopilotExpanded;\r\n }\r\n\r\n getResponsiveTabBar() {\r\n const isCopilotExpanded = this.getIsCopilotExpanded(this.props);\r\n const SubPageMenuResponsiveSizes = [];\r\n let currentMinWidth = 100;\r\n for (let i = 0; i < this.tabItems.length; i += 1) {\r\n const currentItemWidth = this.getTextWidth(this.props.i18n.getString(this.tabItems[i].name));\r\n SubPageMenuResponsiveSizes.push({\r\n name: i + 1,\r\n minWidth: currentMinWidth + currentItemWidth + subPageMenuTabSpaceBetween + (isCopilotExpanded ? COPILOT_WIDTH : 0),\r\n });\r\n currentMinWidth += (currentItemWidth + subPageMenuTabSpaceBetween);\r\n }\r\n this.setState({ SubPageMenuResponsiveSizes }); //eslint-disable-line\r\n this.ResponsiveTabBar = this.tabItems.length > 0 && SubPageMenuResponsiveSizes.length > 0 ?\r\n withResponsiveSize(StyledTabBar, SubPageMenuResponsiveSizes) : StyledTabBar;\r\n }\r\n\r\n setClassName = (mode, init) => {\r\n let subMenuClassNamePrefix;\r\n if (mode === 'expanded') {\r\n subMenuClassNamePrefix = classNames('bingads-campaign-react-sub-page-menu', 'expanded');\r\n } else {\r\n subMenuClassNamePrefix = classNames('bingads-campaign-react-sub-page-menu', 'collapsed');\r\n }\r\n const subMenuClassName = classNames([this.props.classes.container, subMenuClassNamePrefix]);\r\n const pickerContainerPartClassName = classNames([this.props.classes.pickerContainer, subMenuClassNamePrefix]\r\n .concat(this.isImprovedDateRangePickerEnabled() ? [this.props.classes.pickerQuickContainer] : []));\r\n const tabBarPreFixClassName = mode;\r\n if (init) {\r\n this.state.subMenuClassName = subMenuClassName;\r\n this.state.pickerContainerPartClassName = pickerContainerPartClassName;\r\n this.state.tabBarPreFixClassName = tabBarPreFixClassName;\r\n } else {\r\n this.setState({\r\n subMenuClassName,\r\n pickerContainerPartClassName,\r\n tabBarPreFixClassName,\r\n });\r\n }\r\n };\r\n\r\n getOffset = (navMode, menuMode) => (components.nav[navMode].width || 0) + (components.menu[menuMode].width || 0);\r\n\r\n isImprovedDateRangePickerEnabled() {\r\n return this.props.serverContext.DynamicPermissions && this.props.serverContext.DynamicPermissions.ImprovedDateFilter;\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({ fallBackTabItem: null });\r\n };\r\n\r\n updateDatePickerWidth = (newWidth) => {\r\n if (this.state.datePickerWidth !== newWidth && newWidth > 0) {\r\n this.setState({ datePickerWidth: newWidth });\r\n }\r\n };\r\n\r\n resetLayout = (init) => {\r\n if (this.props.mode !== 'hidden') {\r\n if (this.props.showDatePicker\r\n && this.props[WaterfallFilterType.DateFilter]\r\n && this.props[WaterfallFilterType.DateFilter].compared\r\n && !this.props.disableCompare\r\n ) {\r\n this.props.changeLayout({ tab: { mode: 'expanded' } });\r\n this.setClassName('expanded', init);\r\n } else {\r\n this.props.changeLayout({ tab: { mode: 'collapsed' } });\r\n this.setClassName('collapsed', init);\r\n }\r\n }\r\n };\r\n\r\n // Date picker need some initialization from parent components, which is not available for lazy load async\r\n renderDatePicker = () => {\r\n const {\r\n minDate,\r\n } = this.props;\r\n const civilMinDate = minDate ? new CivilDate(minDate.year, minDate.month, minDate.day) : minDate;\r\n\r\n const DatePickerWithPageReady = withPageReady(() => (\r\n
\r\n this.props.updateWaterfallFilter({\r\n filterType: WaterfallFilterType.DateFilter,\r\n filter: data,\r\n })}\r\n serverContext={this.props.serverContext}\r\n {...(this.props.location.pathname === '/campaign/vnext/uettag' || this.props.location.pathname === '/campaign/vnext/uettaginsights' ? {\r\n rangeIds: [\r\n RANGES.Custom,\r\n RANGES.Today,\r\n RANGES.Yesterday,\r\n RANGES.ThisWeek,\r\n RANGES.ThisWeekMon,\r\n RANGES.Last7Days,\r\n RANGES.LastWeek,\r\n RANGES.LastWeekMon,\r\n RANGES.Last14Days,\r\n RANGES.ThisMonth,\r\n RANGES.LastMonth,\r\n RANGES.Last30Days,\r\n RANGES.Last3Months,\r\n RANGES.Last6Months,\r\n RANGES.EntireTime,\r\n ],\r\n } : {})}\r\n minDate={civilMinDate}\r\n />\r\n
\r\n ), null);\r\n\r\n return ();\r\n };\r\n\r\n renderDisabledDatePicker = () => {\r\n const DisabledDatePickerWithPageReady = withPageReady(() => (\r\n
\r\n \r\n
\r\n ), null);\r\n\r\n return ();\r\n };\r\n\r\n renderHistoryButton = () => (\r\n \r\n \r\n
\r\n );\r\n\r\n renderDownloadButton = () => (\r\n
\r\n {this.props.renderDownloadButton(true)}\r\n
\r\n );\r\n\r\n renderAutoApplyButton = () => (\r\n
\r\n \r\n
\r\n );\r\n\r\n render() {\r\n this.tabItems = [];\r\n if (this.props.singleTabMode) {\r\n const selectedleafItem = findSelectedNode(this.props.siteMap);\r\n if (selectedleafItem) {\r\n this.tabItems = [selectedleafItem];\r\n }\r\n } else {\r\n this.selectedPageMenu = getSelectedItemsFromMap(this.props.siteMap);\r\n if (this.selectedPageMenu) {\r\n this.tabItems = this.selectedPageMenu.children;\r\n }\r\n }\r\n\r\n const { getTabItems } = this.props;\r\n this.tabItems = getTabItems(this.tabItems);\r\n\r\n // in the case singleTabMode is set\r\n // both selectedTabItem and availableTabItems would be the selected leaf item\r\n this.selectedTabItem = getSelectedItemsFromMap(this.tabItems);\r\n this.availableTabItems = getAvailableItemsFromMap(this.tabItems);\r\n const datePickerShowOrHideClass = this.props.showDatePicker ? 'datePickerShow' : 'datePickerHide';\r\n const disabledDatePickerShowOrHideClass = this.props.showDisabledDatePicker ? 'disabledDatePickerShow' : 'disabledDatePickerHide';\r\n const currDatePickerWidth = $('.compared-date-range-picker button')[0] ? $('.compared-date-range-picker button')[0].clientWidth + 10 : 0;\r\n this.updateDatePickerWidth(currDatePickerWidth);\r\n const datePickerOffset = this.props.showDatePicker ? this.state.datePickerWidth : 0;\r\n const disabledDatePickerOffset = this.props.showDisabledDatePicker ? this.state.datePickerWidth : 0;\r\n const AutoApplyButtonWidth = this.props.showAutoApplyButton && $('.recommendation-auto-apply-item')[0] ?\r\n $('.recommendation-auto-apply-item')[0].clientWidth + 10 : 0;\r\n const AutoApplyButtonOffset = this.props.showAutoApplyButton ? AutoApplyButtonWidth : 0;\r\n const historyButtonWidth = this.props.showHistoryButton && $('.recommendation-history-item')[0] ?\r\n $('.recommendation-history-item')[0].clientWidth + 10 : 0;\r\n const historyButtonOffset = this.props.showHistoryButton ? historyButtonWidth : 0;\r\n const downloadButtonWidth = this.props.showDownloadButton && $('.recommendation-download-button')[0] ?\r\n $('.recommendation-download-button')[0].clientWidth + 10 : 0;\r\n const downloadButtonOffset = this.props.showDownloadButton ? downloadButtonWidth : 0;\r\n const layout = { config: this.props.layoutConfig };\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nSubPageMenuInternal.propTypes = {\r\n classes: PropTypes.shape(_.mapObject(\r\n getSubPageMenuStyles({}, {}),\r\n _.constant(PropTypes.string.isRequired)\r\n )).isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n updateWaterfallFilter: PropTypes.func.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n changeLayout: PropTypes.func.isRequired,\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 DynamicPermissions: PropTypes.object.isRequired,\r\n }).isRequired,\r\n showDatePicker: PropTypes.bool,\r\n showDisabledDatePicker: PropTypes.bool,\r\n showHistoryButton: PropTypes.bool,\r\n showAutoApplyButton: PropTypes.bool,\r\n showDownloadButton: PropTypes.bool,\r\n siteMap: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.string,\r\n })).isRequired,\r\n mode: PropTypes.string.isRequired,\r\n singleTabMode: PropTypes.bool,\r\n initialResetLayout: PropTypes.bool,\r\n forceResetLayout: PropTypes.bool,\r\n getTabItems: PropTypes.func,\r\n disableCompare: PropTypes.bool,\r\n onTabItemRender: PropTypes.func,\r\n renderExtraContent: PropTypes.func,\r\n renderDownloadButton: PropTypes.func,\r\n minDate: PropTypes.shape({\r\n year: PropTypes.number,\r\n month: PropTypes.number,\r\n day: PropTypes.number,\r\n }),\r\n selectedParent: PropTypes.string,\r\n activity: PropTypes.shape({\r\n signal: PropTypes.func.isRequired,\r\n trace: PropTypes.func.isRequired,\r\n }),\r\n layoutConfig: PropTypes.shape({\r\n copilot: PropTypes.shape({\r\n mode: PropTypes.string,\r\n }),\r\n }).isRequired,\r\n permissions: PropTypes.shape({ dynamic: PropTypes.shape({}) }).isRequired,\r\n};\r\n\r\nconst SubpageMenuInternalWithStyle = withDefaultStyles(SubPageMenuInternal, getSubPageMenuStyles);\r\n\r\nconst SubPageMenu = props => (\r\n \r\n {({ config, change }) => ()}\r\n \r\n);\r\n\r\nexport const StyledSubPageMenu =\r\n withActivityContext(withGlobalFilter(withScope(withI18nConsumer(SubPageMenu))));\r\n","const pathNamePrefix = '/campaign/vnext/';\r\n\r\nexport const getPathNameOfSubPageItem = subPageItem =>\r\n `${pathNamePrefix}${subPageItem.route}`;\r\n","import {\r\n comparedPickerSharedStyle,\r\n} from '@bingads-webui-react/quick-date-left-right-picker';\r\n\r\nexport const getSubPageMenuStyles = (subPageMenu, { palette = {} }) => ({\r\n container: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n marginLeft: 0,\r\n height: 58,\r\n overflow: 'auto',\r\n whiteSpace: 'nowrap',\r\n alignItems: 'stretch',\r\n backgroundColor: palette.white,\r\n '& .overflow-tab-bar-items': {\r\n paddingTop: 10,\r\n '& .icon-button': {\r\n backgroundColor: palette.white,\r\n },\r\n },\r\n '&.expanded': {\r\n height: 72,\r\n },\r\n },\r\n pickerContainer: {\r\n marginTop: '13px',\r\n marginBottom: '12px',\r\n marginRight: '16px',\r\n marginLeft: 'auto',\r\n '&.expanded': {\r\n marginTop: '8px',\r\n },\r\n '&.with-left-margin': {\r\n marginLeft: 8,\r\n },\r\n '& .history-item': {\r\n fontSize: '18px',\r\n\r\n '& button.history': {\r\n border: 'none',\r\n backgroundColor: 'transparent',\r\n '& .iconba-History': {\r\n marginRight: '10px',\r\n fontSize: '18px',\r\n color: palette.blue,\r\n },\r\n },\r\n },\r\n '& .recommendation-download-button': {\r\n top: 2,\r\n backgroundColor: 'transparent',\r\n border: 'none',\r\n fontSize: 18,\r\n padding: 'unset',\r\n minWidth: 'unset',\r\n height: 'fit-content',\r\n color: palette.themeDarkAlt,\r\n },\r\n '& .recommendation-auto-apply-item': {\r\n top: 5,\r\n position: 'relative',\r\n },\r\n },\r\n pickerQuickContainer: {\r\n ...(comparedPickerSharedStyle || {}),\r\n },\r\n subMenuSeperator: {\r\n height: '1px',\r\n marginLeft: '0px',\r\n border: 'none',\r\n backgroundColor: palette.neutralLighter,\r\n },\r\n summaryButton: {\r\n display: 'inline',\r\n verticalAlign: 'top !important',\r\n marginTop: '4px !important',\r\n marginBottom: '4px !important',\r\n },\r\n});\r\n","/* eslint-disable no-param-reassign */\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useEffect } from 'react';\r\nimport { siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { ScopeSelector } from '@bingads-webui-react/scope-selector';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { findParentNodeByLevel } from './utils';\r\n\r\nexport const Loader = (props) => {\r\n const { siteMap, updateAvailability, level } = props;\r\n\r\n const selectedParent = findParentNodeByLevel(siteMap, level); // level index 0 for PageMenu, 1 for SubPageMenu and 2 for subTab\r\n const available = !_.isEmpty(selectedParent);\r\n\r\n useEffect(() => {\r\n updateAvailability(available);\r\n });\r\n\r\n if (available) {\r\n const levelItems = selectedParent.children.map(child => ({\r\n name: props.i18n.getString(child.name),\r\n href: `/campaign/vnext/${child.route}`,\r\n ariaDescription: child.ariaDescription ? props.i18n.getString(child.ariaDescription) : '',\r\n }));\r\n\r\n const currentPath = props.location.pathname;\r\n const currentIndex = levelItems.findIndex(item => item.href === currentPath);\r\n\r\n const onItemChange = ({ index }) => {\r\n props.scope.save(levelItems[index].href);\r\n };\r\n\r\n const pillControlParams = { levelIndex: currentIndex, onItemChange, levelItems };\r\n return ;\r\n }\r\n\r\n return null;\r\n};\r\n\r\nLoader.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n level: PropTypes.number,\r\n updateAvailability: PropTypes.func,\r\n scope: PropTypes.shape({\r\n save: PropTypes.func.isRequired,\r\n }),\r\n location: PropTypes.shape({\r\n pathname: PropTypes.string.isRequired,\r\n }),\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n};\r\n\r\nLoader.defaultProps = {\r\n updateAvailability: _.noop,\r\n level: 2,\r\n scope: {\r\n save: _.noop,\r\n },\r\n location: {\r\n pathname: '/campaign/vnext/labelscampaign',\r\n },\r\n};\r\n\r\nexport const DefaultSubTabLoader = React.memo(withI18nConsumer(Loader));\r\n","import _ from 'underscore';\r\n\r\n/**\r\n * findParentNodeByLevel(map, index)\r\n * Will return parent node who has children selected with certain level index\r\n * @param {map} map a site map\r\n * @param {number} index level index starting from 0\r\n * @returns {object} node || undefinded if not found\r\n */\r\nexport function findParentNodeByLevel(map, index) {\r\n let level = 0;\r\n let currentNode = _.findWhere(map, { selected: true });\r\n if (index <= 0) {\r\n return undefined;\r\n }\r\n\r\n while (level !== index) {\r\n if (!currentNode || !currentNode.children) {\r\n return undefined;\r\n }\r\n\r\n const selectedChild = _.find(currentNode.children, node => node.selected === true);\r\n if (selectedChild && level === index - 1) {\r\n return currentNode;\r\n }\r\n currentNode = selectedChild;\r\n level += 1;\r\n }\r\n\r\n return undefined;\r\n}\r\n","import React from 'react';\r\nimport { ElementSelector } from '@bingads-webui-campaign-react/element-selector';\r\nimport {\r\n withSiteMap,\r\n processorSet,\r\n} from '@bingads-webui-campaign-react/with-site-map';\r\n\r\nimport { DefaultSubTabLoader } from './default-sub-tab-loader';\r\n\r\nconst CampaignSubTabLoader = withSiteMap(DefaultSubTabLoader, processorSet.all);\r\n\r\nexport const SubTabContainer = React.memo(props => (\r\n \r\n \r\n \r\n));\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n findSiteMap,\r\n siteMapPropType,\r\n} from '@bingads-webui-campaign-react/with-site-map';\r\nimport { QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { withServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { ACCOUNT_MODE } from '@bingads-webui-campaign/campaign-ui-common';\r\n\r\nexport class SmartLastURLInternal extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n lastUrl: this.formatUrl('', props.scope, false),\r\n };\r\n }\r\n\r\n componentDidUpdate() {\r\n this.updateLastUrl();\r\n }\r\n\r\n leafCondition = item => item.children.length === 0 && item.selected === true;\r\n\r\n formatUrl = (url, scope, backToSmartCampaign = false) => {\r\n if (backToSmartCampaign && scope.values.aid) { // back to smart campaign\r\n return `/campaign/smart?uid=${scope.values.uid}&cid=${scope.values.cid}&aid=${scope.values.aid}`;\r\n }\r\n if (scope.values.aid) { // when we have aid, we can fallback to campaign pages and it will go to default landing apge.\r\n return `/campaign/vnext/${url}?uid=${scope.values.uid}&cid=${scope.values.cid}&aid=${scope.values.aid}`;\r\n } else if (url === '') { // If no aid or url (means user directely landed here) we go to account summary pages.\r\n return `/campaign/vnext/accounts?uid=${scope.values.uid}&cid=${scope.values.cid}`;\r\n }\r\n return `/campaign/vnext/${url}?uid=${scope.values.uid}&cid=${scope.values.cid}`; // the last url the user visited, works for both campaign and accounts\r\n }\r\n\r\n updateLastUrl = () => {\r\n const {\r\n siteMap, scope, serverContext, allowBackToSmartCampaign,\r\n } = this.props;\r\n const { CurrentAccount } = serverContext;\r\n if (CurrentAccount && CurrentAccount.AccountMode === ACCOUNT_MODE.SMART && allowBackToSmartCampaign) {\r\n this.setState({\r\n lastUrl: this.formatUrl('', scope, true),\r\n });\r\n } else {\r\n const selectedChildItem = findSiteMap(siteMap, this.leafCondition);\r\n if (selectedChildItem) {\r\n this.setState({\r\n lastUrl: this.formatUrl(selectedChildItem.route, scope, false),\r\n });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.render(this.state)}\r\n \r\n );\r\n }\r\n}\r\n\r\nSmartLastURLInternal.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n render: PropTypes.func.isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n serverContext: PropTypes.shape({\r\n }).isRequired,\r\n allowBackToSmartCampaign: PropTypes.bool,\r\n};\r\n\r\nSmartLastURLInternal.defaultProps = {\r\n allowBackToSmartCampaign: false,\r\n};\r\n\r\nexport const SmartLastURL = withServerContext(SmartLastURLInternal);\r\n","/* eslint-disable @typescript-eslint/no-unused-vars */\r\nimport _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n processor,\r\n withCampaignSiteMap,\r\n withAccountsSiteMap,\r\n} from '@bingads-webui-campaign-react/with-site-map';\r\nimport { withScope, QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { SmartLastURL } from './smart-last-url';\r\n\r\nexport const withLastURL = (WrappedComponent) => {\r\n const LastCampaignURL = withCampaignSiteMap(SmartLastURL, [processor.processPath]);\r\n const LastAccountsURL = withAccountsSiteMap(SmartLastURL, [processor.processPath]);\r\n class LastUrl extends React.PureComponent {\r\n renderWrappedComponent = (buttonText, lastUrl) => {\r\n const {\r\n backButtonUrl,\r\n backButtonText,\r\n i18n,\r\n ...others\r\n } = this.props;\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n render() {\r\n const {\r\n scope,\r\n allowBackToSmartCampaign,\r\n } = this.props;\r\n\r\n if (_.has(scope.values, 'aid')) {\r\n return (\r\n this.renderWrappedComponent('Back to campaigns', lastUrlState.lastUrl)} allowBackToSmartCampaign={allowBackToSmartCampaign} />\r\n );\r\n }\r\n\r\n return (\r\n this.renderWrappedComponent('Back to accounts', lastUrlState.lastUrl)} allowBackToSmartCampaign={allowBackToSmartCampaign} />\r\n );\r\n }\r\n }\r\n\r\n LastUrl.propTypes = {\r\n backButtonUrl: PropTypes.string,\r\n backButtonText: PropTypes.string,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n i18n: PropTypes.shape({}).isRequired,\r\n allowBackToSmartCampaign: PropTypes.bool,\r\n };\r\n\r\n LastUrl.defaultProps = {\r\n backButtonUrl: '',\r\n backButtonText: '',\r\n allowBackToSmartCampaign: false,\r\n };\r\n\r\n return withI18nConsumer(withScope(LastUrl));\r\n};\r\n","import { makeStyles, shorthands, tokens } from '@fluentui/react-components';\r\n\r\nexport const useCampaignScopeBarStyles = makeStyles({\r\n scopeBarLeftContent: {\r\n flexShrink: 1,\r\n minWidth: '50px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-start',\r\n ...shorthands.gap('10px'),\r\n },\r\n});\r\n\r\nexport const useCampaignStatusMenuButtonStyles = makeStyles({\r\n menuButton: {\r\n fontWeight: 'normal',\r\n },\r\n});\r\n\r\nexport const useStatusIconStyles = makeStyles({\r\n activeStatus: {\r\n color: tokens.colorPaletteGreenForeground1,\r\n fontSize: '10px',\r\n },\r\n pausedStatus: {\r\n color: tokens.colorNeutralForeground3,\r\n fontSize: '10px',\r\n },\r\n});\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { CircleFilled, PauseFilled } from '@fluentui/react-icons';\r\nimport { useStatusIconStyles } from '../styles';\r\n\r\nexport const StatusIcon = ({ status }) => {\r\n const styles = useStatusIconStyles();\r\n\r\n if (!status) return null;\r\n\r\n if (status === 'Active') {\r\n return ;\r\n }\r\n\r\n return ;\r\n};\r\n\r\nStatusIcon.propTypes = {\r\n status: PropTypes.string,\r\n};\r\n\r\nStatusIcon.defaultProps = {\r\n status: undefined,\r\n};\r\n","import React, { useContext, useCallback, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { isFunction } from 'underscore';\r\nimport {\r\n Menu,\r\n MenuButton,\r\n MenuItem,\r\n MenuList,\r\n MenuPopover,\r\n MenuTrigger,\r\n mergeClasses,\r\n} from '@fluentui/react-components';\r\n\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { edmCampaign } from '@bingads-webui/edm-campaign';\r\nimport { AlertHelper } from '@bingads-webui-campaign/alert-helper';\r\n\r\nimport { StatusIcon } from './status-icon';\r\nimport { useCampaignStatusMenuButtonStyles } from '../styles';\r\n\r\nconst StatusText = {\r\n Active: _TL_('Enabled'),\r\n Pause: _TL_('Paused'),\r\n};\r\n\r\nexport const CampaignStatusMenuButton = ({\r\n id,\r\n status,\r\n i18n,\r\n importNotificationCallback,\r\n}) => {\r\n const styles = useCampaignStatusMenuButtonStyles();\r\n const buttonText = status === 'Active' ? StatusText.Active : StatusText.Pause;\r\n\r\n const { scope } = useContext(ScopeContext);\r\n const alertHelper = useMemo(() => new AlertHelper({ i18n }), [i18n]);\r\n const {\r\n values: {\r\n cid,\r\n aid,\r\n },\r\n } = scope;\r\n const onClick = useCallback(newStatus => () => {\r\n if (newStatus === status) {\r\n return;\r\n }\r\n edmCampaign\r\n .Customers.$withKey(cid)\r\n .Accounts.$withKey(aid)\r\n .Campaigns.$withKey(id)\r\n .bulkUpdate({\r\n Id: id,\r\n Status: newStatus,\r\n }).then(() => {\r\n if (importNotificationCallback && isFunction(importNotificationCallback)) {\r\n // call import notifications callback for campaign status change in scope menu bar\r\n // convert the paused status text to be consistent with other scenarios\r\n importNotificationCallback({ updateStatus: newStatus === 'Paused' ? 'UserPaused' : newStatus });\r\n }\r\n }, () => {\r\n alertHelper.showError(i18n.getString(_TL_('We’ve encountered an error and can’t continue. Please contact support for further assistance.')));\r\n });\r\n }, [aid, alertHelper, cid, i18n, id, status]);\r\n const onClickEnable = useMemo(() => onClick('Active'), [onClick]);\r\n const onClickPause = useMemo(() => onClick('Paused'), [onClick]);\r\n\r\n return (\r\n \r\n \r\n }\r\n className={mergeClasses(styles.menuButton, 'campaign-status-menu-trigger')}\r\n >\r\n {i18n.getString(buttonText)}\r\n \r\n \r\n\r\n \r\n \r\n }\r\n >\r\n {i18n.getString(_TL_('Enable'))}\r\n \r\n }\r\n >\r\n {i18n.getString(_TL_('Pause'))}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nCampaignStatusMenuButton.propTypes = {\r\n id: PropTypes.number.isRequired,\r\n status: PropTypes.string.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n};\r\n\r\nCampaignStatusMenuButton.defaultProps = {\r\n\r\n};\r\n","import React, { useContext, useEffect, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n triggerMultiStepTeachingBubbleWithLock,\r\n MultiStepTeachingBubbleContext,\r\n} from '@bingads-webui-campaign-react/multi-step-teaching-bubble';\r\nimport { TeachingBubbleConfigs } from '@bingads-webui-campaign-react/navigation-refresh-teaching-bubble-config';\r\nimport { LayoutSizeScale, useLayoutResizeObserver } from '@bingads-webui-fluent-component/layout-size';\r\nimport { LayoutContext, Mode } from '@bingads-webui-react/app-layout-container';\r\nimport { getParameter } from '@bingads-webui/url-util';\r\n\r\nconst getModeByLayoutSize = (layoutSize) => {\r\n const result = LayoutSizeScale[layoutSize] >= LayoutSizeScale.XL;\r\n\r\n return result;\r\n};\r\n\r\nexport const BubbleRenderer = ({ isAccountScope, entityCount }) => {\r\n const bubbleContext = useContext(MultiStepTeachingBubbleContext);\r\n const [layoutSize, setLayoutSize] = React.useState('S');\r\n useLayoutResizeObserver(setLayoutSize);\r\n const largeSize = getModeByLayoutSize(layoutSize);\r\n const { config: layoutConfig } = useContext(LayoutContext);\r\n const ise2etest = getParameter('ise2etest') === 'true';\r\n const showForTest = getParameter('showNavRefreshTeachingBubble') === 'true';\r\n\r\n const showBubble = useMemo(\r\n () => isAccountScope && entityCount > 1 && largeSize &&\r\n layoutConfig.menu.mode === Mode.Expanded &&\r\n (!ise2etest || showForTest),\r\n [entityCount, isAccountScope, largeSize, layoutConfig.menu.mode, ise2etest, showForTest]\r\n );\r\n\r\n useEffect(() => {\r\n if (showBubble) {\r\n triggerMultiStepTeachingBubbleWithLock({\r\n ...bubbleContext,\r\n featureName: TeachingBubbleConfigs.featureName,\r\n });\r\n }\r\n }, [bubbleContext, showBubble]);\r\n\r\n return
;\r\n};\r\n\r\nBubbleRenderer.propTypes = {\r\n isAccountScope: PropTypes.bool,\r\n entityCount: PropTypes.number.isRequired,\r\n};\r\n\r\nBubbleRenderer.defaultProps = {\r\n isAccountScope: false,\r\n};\r\n\r\n","import PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport React, { useMemo, useContext, useCallback, useEffect, useState } from 'react';\r\nimport { showPausedCampaignNotifications } from '@bingads-webui-campaign/import-shared-utils';\r\nimport {\r\n ScopeBar,\r\n ScopeFilters,\r\n ScopeFiltersOverflow,\r\n ScopeSelectorDropdown,\r\n ScopeSelector,\r\n ScopeBarLeftContent,\r\n useFocusedEntityContext,\r\n} from '@bingads-webui-fluent-component/scope-selector-menu';\r\nimport { withInstrumentation } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\nimport { setCampaignTypes } from '@bingads-webui-campaign-react/with-campaign-type';\r\nimport {\r\n getCurrentScopeFromService,\r\n Scope,\r\n CampaignType,\r\n StatusWaterfallFilterOptions\r\n} from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport {\r\n withCampaignData,\r\n withCampaignFilter,\r\n useCampaignFilter,\r\n getScopeAdder,\r\n getScopeRemover,\r\n shouldRenderAdGroupFilter,\r\n CampaignFilters,\r\n AdGroupStatusFilter,\r\n CampaignTypeFilter,\r\n CampaignStatusFilter,\r\n Campaign,\r\n} from '@bingads-webui-campaign-react/scope-selector';\r\nimport { withComponentErrorLogging } from '@bingads-webui-campaign-react/global-error-options';\r\nimport {\r\n CopilotSummaryButton,\r\n getIsCopilotSummaryButtonEnabled,\r\n getIsInCampaignsOrOverviewPage,\r\n} from '@bingads-webui-campaign-react/reporting-insights-components';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { CampaignStatusMenuButton } from './campaign-status-menu-button/campaign-status-menu-button';\r\nimport { BubbleRenderer } from './teaching-bubble';\r\nimport { useCampaignScopeBarStyles } from './styles';\r\n\r\nconst CampaignScopeBar = ({ isLoading, ...rest }) => {\r\n const {\r\n scope,\r\n i18n,\r\n instrumentation,\r\n rootEntityTypeDisplayName,\r\n selectedEntity,\r\n entityList,\r\n permissions,\r\n } = rest;\r\n\r\n const styles = useCampaignScopeBarStyles();\r\n const currentScope = getCurrentScopeFromService(scope);\r\n const addScope = getScopeAdder(scope);\r\n const removeScope = getScopeRemover(scope);\r\n const { focusedEntity } = useFocusedEntityContext();\r\n\r\n const handleBackClick = useMemo(() => {\r\n if (currentScope < Scope.Campaign) {\r\n return undefined;\r\n }\r\n\r\n return removeScope;\r\n }, [currentScope, removeScope]);\r\n\r\n const { selectedCampaignTypeFilter, selectedCampaignStatusFilter, selectedAdGroupStatusFilter } = useCampaignFilter();\r\n\r\n const shouldRenderAdGroup = useMemo(\r\n () => shouldRenderAdGroupFilter(currentScope, selectedEntity, selectedCampaignTypeFilter),\r\n [currentScope, selectedEntity, selectedCampaignTypeFilter]\r\n );\r\n\r\n const isCampaignScope = useMemo(() => selectedEntity && selectedEntity.entityType === Campaign.entityType, [selectedEntity]);\r\n const isExperimentCampaign = isCampaignScope && selectedEntity.isExperiment;\r\n\r\n const reportingInsightsScenario = instrumentation.reportingInsightsScenario.create();\r\n const logger = reportingInsightsScenario.summaryButton.create();\r\n\r\n const onCopilotSummaryButtonRender = useCallback(() => {\r\n logger.trace('CopilotSummaryButton displayed in CampaignScopeBar');\r\n }, [logger]);\r\n\r\n const onCopilotSummaryButtonClick = useCallback((message) => {\r\n const isNewLogo = _.get(permissions, ['dynamic', 'AdsCopilotUxImprovements']);\r\n logger.trace(`CopilotSummaryButton clicked in CampaignScopeBar, message=${message} isNewLogo:${isNewLogo}`);\r\n }, [logger, permissions]);\r\n\r\n const serverContext = useContext(ServerContext);\r\n const [isCopilotSummaryButtonEnabled, setIsCopilotSummaryButtonEnabled] = useState();\r\n useEffect(() => {\r\n getIsCopilotSummaryButtonEnabled({ serverContext, permissions }).then(setIsCopilotSummaryButtonEnabled);\r\n }, [scope, permissions]);\r\n\r\n if (isLoading) {\r\n return null;\r\n }\r\n\r\n const scopeBarProps = {\r\n i18n,\r\n onBackClick: handleBackClick,\r\n selectedEntity,\r\n };\r\n\r\n const hasRootEntityFilter = selectedCampaignTypeFilter !== CampaignType.All || selectedCampaignStatusFilter !== StatusWaterfallFilterOptions.All;\r\n\r\n const hasSubEntityFilter = selectedAdGroupStatusFilter !== StatusWaterfallFilterOptions.All;\r\n\r\n const scopeSelectorDropdownProps = {\r\n i18n,\r\n rootEntityTypeDisplayName,\r\n selectedEntity,\r\n hasRootEntityFilter,\r\n };\r\n\r\n const scopeSelectorProps = {\r\n inMenuPopover: true,\r\n addScope,\r\n removeScope,\r\n hideSubEntitySelector: !shouldRenderAdGroup && isCampaignScope && (focusedEntity !== 'All'),\r\n hasRootEntityFilter,\r\n hasSubEntityFilter,\r\n className: 'scope-bar-scope-selector',\r\n ...rest,\r\n };\r\n\r\n // TODO: support new entity in campaign-converter.js after MT ready\r\n const { activity: pausedCampaignImportNotificationActivity } = rest.instrumentation.createScenarioAndActivity({\r\n scenarioName: 'PausedCampaignImportNotification',\r\n activityName: 'ScopeBar',\r\n });\r\n const importNotificationCallback = ({ updateStatus }) => {\r\n // show paused campaign notifications based on specific conditions\r\n showPausedCampaignNotifications({ campaignItemList: [selectedEntity], updateStatus, activity: pausedCampaignImportNotificationActivity });\r\n };\r\n\r\n const isInCampaignsOrOverviewPage = getIsInCampaignsOrOverviewPage();\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n {currentScope < Scope.Campaign && }\r\n {shouldRenderAdGroup && }\r\n \r\n \r\n }\r\n />\r\n {isCampaignScope && !isExperimentCampaign &&\r\n \r\n }\r\n {isCopilotSummaryButtonEnabled &&\r\n isInCampaignsOrOverviewPage &&\r\n }\r\n \r\n \r\n {\r\n currentScope < Scope.Campaign &&\r\n \r\n }\r\n {// filters child needs to flat for Overflow menu to keep id unique\r\n currentScope < Scope.Campaign &&\r\n \r\n }\r\n {\r\n shouldRenderAdGroup && \r\n }\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nCampaignScopeBar.propTypes = {\r\n scope: PropTypes.shape({\r\n values: PropTypes.shape({\r\n campaignId: PropTypes.string,\r\n adGroupId: PropTypes.string,\r\n }),\r\n }).isRequired,\r\n isLoading: PropTypes.bool,\r\n entityList: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.string.isRequired,\r\n name: PropTypes.string.isRequired,\r\n status: PropTypes.string.isRequired,\r\n entityType: PropTypes.string.isRequired,\r\n })).isRequired,\r\n selectedEntity: PropTypes.shape({\r\n id: PropTypes.string.isRequired,\r\n name: PropTypes.string.isRequired,\r\n status: PropTypes.string.isRequired,\r\n }),\r\n rootEntityTypeDisplayName: PropTypes.string.isRequired,\r\n onSubMenuOpen: PropTypes.func,\r\n};\r\n\r\n\r\nCampaignScopeBar.defaultProps = {\r\n isLoading: false,\r\n selectedEntity: undefined,\r\n onSubMenuOpen: undefined,\r\n};\r\n\r\nconst CampaignScopeBarWithData = withComponentErrorLogging(\r\n withScope(withCampaignData(withInstrumentation(withCampaignFilter((CampaignScopeBar))), setCampaignTypes)),\r\n 'NavigationRefreshScopedBar'\r\n);\r\n\r\nexport { CampaignScopeBarWithData as CampaignScopeBar };\r\n","import _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useEffect, useMemo } from 'react';\r\nimport {\r\n withCampaignSiteMap,\r\n siteMapPropType,\r\n processorSet,\r\n} from '@bingads-webui-campaign-react/with-site-map';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\nimport { withLayoutContext, Mode } from '@bingads-webui-react/app-layout-container';\r\nimport { isTableExpanded as getIsTableExpanded, getConfigComponents } from '@bingads-webui-campaign-react/toolbar-container';\r\nimport { CampaignScopeBar } from './campaign-scope-bar';\r\n\r\nconst isInCampaignAdGroupCreationPage = () => (\r\n window.location.href.indexOf('createcampaign') > -1 ||\r\n window.location.href.indexOf('createadgroup') > -1 ||\r\n window.location.href.indexOf('conversiongoals/create') > -1 ||\r\n window.location.href.indexOf('conversiongoals/autocreate') > -1 ||\r\n window.location.href.indexOf('conversiongoals/edit') > -1 ||\r\n window.location.href.indexOf('uettags/create') > -1 ||\r\n window.location.href.indexOf('uettags/edit') > -1 ||\r\n window.location.href.indexOf('audience/create') > -1 ||\r\n window.location.href.indexOf('audience/edit') > -1 ||\r\n window.location.href.indexOf('createassociation') > -1 ||\r\n window.location.href.indexOf('recommendations/history') > -1 ||\r\n window.location.href.indexOf('recommendations/AutoApplySettings') > -1 ||\r\n window.location.href.indexOf('reports-v4') > -1\r\n);\r\n\r\nexport const Loader = (props) => {\r\n const {\r\n siteMap, updateAvailability, changeLayout, scope, layoutConfig, ...others\r\n } = props;\r\n\r\n const selectedParent = _.findWhere(siteMap, { selected: true });\r\n\r\n const isTableExpanded = useMemo(\r\n () => (getIsTableExpanded(getConfigComponents(layoutConfig))),\r\n [layoutConfig]\r\n );\r\n\r\n useEffect(() => {\r\n updateAvailability(!_.isEmpty(selectedParent));\r\n });\r\n\r\n if (_.isEmpty(selectedParent) || (scope && !scope.values.aid)) {\r\n return null;\r\n }\r\n\r\n if (!isTableExpanded &&\r\n layoutConfig && layoutConfig.status.mode !== Mode.Expanded &&\r\n !isInCampaignAdGroupCreationPage(siteMap)) {\r\n changeLayout({ status: { mode: Mode.Expanded } });\r\n }\r\n\r\n return ;\r\n};\r\n\r\nLoader.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n updateAvailability: PropTypes.func,\r\n scope: PropTypes.shape({\r\n values: PropTypes.shape({\r\n aid: PropTypes.string,\r\n }),\r\n }).isRequired,\r\n changeLayout: PropTypes.func.isRequired,\r\n layoutConfig: PropTypes.shape({\r\n status: PropTypes.string.isRequired,\r\n scopePanel: PropTypes.string.isRequired,\r\n }).isRequired,\r\n};\r\n\r\nLoader.defaultProps = {\r\n updateAvailability: _.noop,\r\n};\r\n\r\nexport const CampaignScopeBarLoader = withLayoutContext(withScope((withCampaignSiteMap(\r\n React.memo(Loader),\r\n processorSet.all\r\n))));\r\n","import _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useEffect, useMemo } from 'react';\r\nimport {\r\n withCampaignSiteMap,\r\n siteMapPropType,\r\n processorSet,\r\n} from '@bingads-webui-campaign-react/with-site-map';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\nimport { withLayoutContext, Mode } from '@bingads-webui-react/app-layout-container';\r\nimport { SummaryBar } from '@bingads-webui-campaign-react/summary-bar';\r\n\r\nconst isInCampaignAdGroupCreationPage = () => (\r\n window.location.href.indexOf('createcampaign') > -1 ||\r\n window.location.href.indexOf('createadgroup') > -1 ||\r\n window.location.href.indexOf('conversiongoals/create') > -1 ||\r\n window.location.href.indexOf('conversiongoals/autocreate') > -1 ||\r\n window.location.href.indexOf('conversiongoals/edit') > -1 ||\r\n window.location.href.indexOf('conversionvaluerules/create') > -1 ||\r\n window.location.href.indexOf('conversionvaluerules/edit') > -1 ||\r\n window.location.href.indexOf('uettags/create') > -1 ||\r\n window.location.href.indexOf('uettags/edit') > -1 ||\r\n window.location.href.indexOf('audience/create') > -1 ||\r\n window.location.href.indexOf('audience/edit') > -1 ||\r\n window.location.href.indexOf('createassociation') > -1 ||\r\n window.location.href.indexOf('recommendations/history') > -1 ||\r\n window.location.href.indexOf('recommendations/AutoApplySettings') > -1 ||\r\n window.location.href.indexOf('reports-v4') > -1\r\n);\r\n\r\nexport const Loader = (props) => {\r\n const {\r\n siteMap, updateAvailability, changeLayout, scope, layoutConfig, ...others\r\n } = props;\r\n\r\n const FullScreenWithTabConfig = {\r\n header: {\r\n mode: Mode.Hidden,\r\n },\r\n nav: {\r\n mode: Mode.Hidden,\r\n },\r\n status: {\r\n mode: Mode.Hidden,\r\n },\r\n menu: {\r\n mode: Mode.Hidden,\r\n },\r\n subTab: {\r\n mode: Mode.Hidden,\r\n },\r\n };\r\n\r\n const selectedParent = _.findWhere(siteMap, { selected: true });\r\n\r\n const getConfigComponents = config => ({\r\n ..._.pick(config, 'header', 'nav', 'status', 'menu', 'subTab'),\r\n menu: {\r\n mode: config.menu && config.menu.mode,\r\n },\r\n });\r\n\r\n const isTableExpanded = useMemo(\r\n () => (\r\n _.isEqual(\r\n getConfigComponents(layoutConfig),\r\n FullScreenWithTabConfig\r\n )),\r\n [FullScreenWithTabConfig, layoutConfig]\r\n );\r\n useEffect(() => {\r\n updateAvailability(!_.isEmpty(selectedParent));\r\n });\r\n\r\n if (selectedParent && scope && !scope.values.campaignId) {\r\n changeLayout({ status: { mode: Mode.Hidden } });\r\n return null;\r\n }\r\n if (!isTableExpanded &&\r\n layoutConfig && layoutConfig.status.mode !== Mode.Expanded &&\r\n !isInCampaignAdGroupCreationPage(siteMap)) {\r\n changeLayout({ status: { mode: Mode.Expanded } });\r\n }\r\n\r\n return selectedParent ? () : null;\r\n};\r\n\r\nLoader.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n updateAvailability: PropTypes.func,\r\n scope: PropTypes.shape({\r\n values: PropTypes.object.isRequired,\r\n }).isRequired,\r\n changeLayout: PropTypes.func.isRequired,\r\n layoutConfig: PropTypes.shape({\r\n status: PropTypes.string.isRequired,\r\n }).isRequired,\r\n};\r\n\r\nLoader.defaultProps = {\r\n updateAvailability: _.noop,\r\n};\r\n\r\nexport const CampaignSummaryBarLoader = withLayoutContext(withScope((withCampaignSiteMap(\r\n React.memo(Loader),\r\n processorSet.all\r\n))));\r\n","import _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useEffect } from 'react';\r\nimport { QueryParam } from '@bingads-webui-react/scope-service';\r\nimport {\r\n withStandaloneSiteMap,\r\n siteMapPropType,\r\n processorSet,\r\n} from '@bingads-webui-campaign-react/with-site-map';\r\nimport { SharedBudgetSummaryBar } from '@bingads-webui-campaign-react/summary-bar';\r\n\r\nexport const Loader = (props) => {\r\n const { siteMap, updateAvailability, ...others } = props;\r\n const { scope } = props;\r\n\r\n const selectedParent = _.findWhere(siteMap, { selected: true });\r\n\r\n useEffect(() => {\r\n updateAvailability(!_.isEmpty(selectedParent));\r\n });\r\n\r\n if (_.has(scope.values, 'budgetId')) {\r\n return ();\r\n }\r\n\r\n return selectedParent ? () : null;\r\n};\r\n\r\nLoader.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n updateAvailability: PropTypes.func,\r\n};\r\n\r\nLoader.defaultProps = {\r\n updateAvailability: _.noop,\r\n};\r\n\r\nexport const SharedBudgetSummaryBarLoader = withStandaloneSiteMap(\r\n React.memo(Loader),\r\n processorSet.all,\r\n 'shared-budgets-edit'\r\n);\r\n","import _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useEffect } from 'react';\r\nimport {\r\n withAccountsSiteMap,\r\n siteMapPropType,\r\n processor,\r\n} from '@bingads-webui-campaign-react/with-site-map';\r\nimport { AccountsSummaryBar } from '@bingads-webui-campaign-react/summary-bar';\r\n\r\nexport const Loader = (props) => {\r\n const { siteMap, updateAvailability, ...others } = props;\r\n\r\n const selectedParent = _.findWhere(siteMap, { selected: true });\r\n\r\n useEffect(() => {\r\n updateAvailability(!_.isEmpty(selectedParent));\r\n });\r\n\r\n return selectedParent\r\n ? ()\r\n : null;\r\n};\r\n\r\nLoader.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n updateAvailability: PropTypes.func,\r\n};\r\n\r\nLoader.defaultProps = {\r\n updateAvailability: _.noop,\r\n};\r\n\r\nconst processors = [processor.processPermissions, processor.processPath];\r\n\r\nexport const AccountsSummaryBarLoader = withAccountsSiteMap(\r\n React.memo(Loader),\r\n processors\r\n);\r\n","import _ from 'underscore';\r\nimport React, { useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { SimpleSummaryBar } from '@bingads-webui-campaign-react/summary-bar';\r\n\r\nconst Loader = (props) => {\r\n const {\r\n siteMap,\r\n breadCrumbText,\r\n backButtonText,\r\n backButtonUrl,\r\n updateAvailability,\r\n isVisible,\r\n ...others\r\n } = props;\r\n\r\n const selectedParent = _.findWhere(siteMap, { selected: true });\r\n\r\n useEffect(() => {\r\n updateAvailability(!_.isEmpty(selectedParent));\r\n });\r\n\r\n return isVisible\r\n ? (\r\n )\r\n : null;\r\n};\r\n\r\nLoader.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n breadCrumbText: PropTypes.string,\r\n backButtonText: PropTypes.string,\r\n backButtonUrl: PropTypes.string,\r\n updateAvailability: PropTypes.func,\r\n isVisible: PropTypes.bool,\r\n};\r\n\r\nLoader.defaultProps = {\r\n breadCrumbText: null,\r\n backButtonText: null,\r\n backButtonUrl: null,\r\n updateAvailability: _.noop,\r\n isVisible: false,\r\n};\r\n\r\nexport const SimpleSummaryBarLoader = React.memo(Loader);\r\n","import _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useEffect } from 'react';\r\nimport {\r\n siteMapPropType,\r\n} from '@bingads-webui-campaign-react/with-site-map';\r\nimport { SummaryBarFactory } from '@bingads-webui-campaign-react/summary-bar';\r\n\r\nexport const GeneralSummaryBarLoader = (props) => {\r\n const {\r\n siteMap,\r\n updateAvailability,\r\n backButtonText,\r\n backButtonUrl,\r\n backButtonProps,\r\n ...others\r\n } = props;\r\n\r\n const selectedParent = _.findWhere(siteMap, { selected: true });\r\n\r\n useEffect(() => {\r\n updateAvailability(!_.isEmpty(selectedParent));\r\n });\r\n // empty backbutton props mean we fill in with the LASTURL hoc.\r\n // null backbutton props means we dont show the backbutton at all.\r\n\r\n if (selectedParent) {\r\n if (_.isNull(backButtonProps) || backButtonUrl === null) {\r\n const modifiedBackButtonProps = {\r\n url: backButtonUrl,\r\n buttonText: backButtonText,\r\n };\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\nGeneralSummaryBarLoader.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n updateAvailability: PropTypes.func,\r\n backButtonProps: PropTypes.shape({}),\r\n backButtonUrl: PropTypes.string,\r\n backButtonText: PropTypes.string,\r\n};\r\n\r\nGeneralSummaryBarLoader.defaultProps = {\r\n updateAvailability: _.noop,\r\n backButtonProps: null,\r\n backButtonUrl: null,\r\n backButtonText: null,\r\n};\r\n\r\n","import _ from 'underscore';\r\nimport React, { useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withRouter } from '@bingads-webui-campaign-react/router';\r\nimport { siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { SimpleSummaryBar } from '@bingads-webui-campaign-react/summary-bar';\r\nimport { CampaignOData } from '@bingads-webui-react/campaign-odata';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\n\r\nconst CampaignODataCallForCustomerLevel = (props) => {\r\n const {\r\n selSummaryBarFallback,\r\n scope,\r\n selectedParent,\r\n breadCrumbText,\r\n backButtonText,\r\n backButtonUrl,\r\n breadcrumbUrl,\r\n ...others\r\n } = props;\r\n\r\n return (\r\n {\r\n // TODO: if custom list limit > 100, we will need to write code to fix this.\r\n // Known issue: if > 20 lists, $top:20 query param will break this functionality.\r\n // Workaround: supply top param with a value > 20.\r\n return currentCustomer.PlacementExclusionLists.get({ top: 100 });\r\n }\r\n }\r\n fallback={selSummaryBarFallback}\r\n // If the list name call fails, show empty string.\r\n onError={() => selSummaryBarFallback}\r\n >\r\n {\r\n (response) => {\r\n const predicate = item => item.Id === scope.values.selListId;\r\n\r\n if (response.value && _.find(response.value, predicate)) {\r\n const list = _.find(response.value, predicate);\r\n const additionalItems = [];\r\n additionalItems.push({\r\n key: `navigate-selListId-${list.Id}`,\r\n text: list.Name,\r\n });\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n return selSummaryBarFallback;\r\n }\r\n }\r\n \r\n );\r\n};\r\n\r\nCampaignODataCallForCustomerLevel.propTypes = {\r\n selSummaryBarFallback: PropTypes.element.isRequired,\r\n scope: PropTypes.shape({\r\n values: PropTypes.shape({\r\n selListId: PropTypes.number,\r\n }).isRequired,\r\n }).isRequired,\r\n selectedParent: PropTypes.shape({\r\n id: PropTypes.string,\r\n name: PropTypes.string,\r\n url: PropTypes.string,\r\n }).isRequired,\r\n breadCrumbText: PropTypes.string,\r\n backButtonText: PropTypes.string,\r\n backButtonUrl: PropTypes.string,\r\n breadcrumbUrl: PropTypes.string.isRequired,\r\n};\r\n\r\nCampaignODataCallForCustomerLevel.defaultProps = {\r\n breadCrumbText: null,\r\n backButtonText: null,\r\n backButtonUrl: null,\r\n};\r\n\r\nconst CampaignODataCallForAccountLevel = (props) => {\r\n const {\r\n selSummaryBarFallback,\r\n scope,\r\n selectedParent,\r\n breadCrumbText,\r\n backButtonText,\r\n backButtonUrl,\r\n breadcrumbUrl,\r\n ...others\r\n } = props;\r\n\r\n return (\r\n {\r\n // Get the association between this account and this list to display the list name.\r\n // This is to verify the account is associated before showing the list name.\r\n return currentAccount.PlacementExclusionLists.$withKey(scope.values.selListId)['Default.GetAccountAssociation'].$makeCall({\r\n payload: {},\r\n });\r\n }\r\n }\r\n fallback={selSummaryBarFallback}\r\n // If the list name call fails, show empty string.\r\n onError={() => selSummaryBarFallback}\r\n >\r\n {\r\n (response) => {\r\n if (response.value && response.value.length === 1) {\r\n const association = response.value[0];\r\n const additionalItems = [];\r\n additionalItems.push({\r\n key: `navigate-selListId-${association.SharedEntityId}`,\r\n text: association.SharedEntityName,\r\n });\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n return selSummaryBarFallback;\r\n }\r\n }\r\n \r\n );\r\n};\r\n\r\nCampaignODataCallForAccountLevel.propTypes = {\r\n selSummaryBarFallback: PropTypes.element.isRequired,\r\n scope: PropTypes.shape({\r\n values: PropTypes.shape({\r\n selListId: PropTypes.number,\r\n }).isRequired,\r\n }).isRequired,\r\n selectedParent: PropTypes.shape({\r\n id: PropTypes.string,\r\n name: PropTypes.string,\r\n url: PropTypes.string,\r\n }).isRequired,\r\n breadCrumbText: PropTypes.string,\r\n backButtonText: PropTypes.string,\r\n backButtonUrl: PropTypes.string,\r\n breadcrumbUrl: PropTypes.string.isRequired,\r\n};\r\n\r\nCampaignODataCallForAccountLevel.defaultProps = {\r\n breadCrumbText: null,\r\n backButtonText: null,\r\n backButtonUrl: null,\r\n};\r\n\r\nexport const Loader = (props) => {\r\n const {\r\n siteMap,\r\n breadCrumbText,\r\n backButtonText,\r\n backButtonUrl,\r\n updateAvailability,\r\n scope,\r\n ...others\r\n } = props;\r\n\r\n const selectedParent = _.findWhere(siteMap, { selected: true });\r\n\r\n useEffect(() => {\r\n updateAvailability(!_.isEmpty(selectedParent));\r\n });\r\n\r\n const selSummaryBarFallback = (\r\n \r\n );\r\n\r\n // Add Site Exclusion List breadcrumb.\r\n // The parent ID is shared by the account-level and customer-level entrypoints in the sitemap.\r\n if (scope.values.selListId && selectedParent && selectedParent.id === 'site-exclusion-lists-entrypoint') {\r\n let queryString = '';\r\n let breadcrumbUrl = '';\r\n\r\n // Navigated to page via account-level entrypoint\r\n if (scope.values.aid) {\r\n queryString = `?uid=${scope.values.uid}&cid=${scope.values.cid}&aid=${scope.values.aid}`;\r\n breadcrumbUrl = `/campaign/vnext/${selectedParent.route}${queryString}`;\r\n\r\n return CampaignODataCallForAccountLevel({\r\n selSummaryBarFallback, scope, selectedParent, breadCrumbText, backButtonText, backButtonUrl, breadcrumbUrl, ...others,\r\n });\r\n }\r\n\r\n // Otherwise navigated to page via customer-level entrypoint\r\n queryString = `?uid=${scope.values.uid}&cid=${scope.values.cid}`;\r\n breadcrumbUrl = `/campaign/vnext/${selectedParent.route}${queryString}`;\r\n\r\n return CampaignODataCallForCustomerLevel({\r\n selSummaryBarFallback, scope, selectedParent, breadCrumbText, backButtonText, backButtonUrl, breadcrumbUrl, ...others,\r\n });\r\n }\r\n\r\n return selectedParent ? selSummaryBarFallback : null;\r\n};\r\n\r\nLoader.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n breadCrumbText: PropTypes.string,\r\n backButtonText: PropTypes.string,\r\n backButtonUrl: PropTypes.string,\r\n updateAvailability: PropTypes.func,\r\n scope: PropTypes.shape({\r\n values: PropTypes.shape({\r\n selListId: PropTypes.number,\r\n }).isRequired,\r\n }).isRequired,\r\n};\r\n\r\nLoader.defaultProps = {\r\n breadCrumbText: null,\r\n backButtonText: null,\r\n backButtonUrl: null,\r\n updateAvailability: _.noop,\r\n};\r\n\r\n// This is the loader for the summary bar used by the linked pages in the SEL feature.\r\n// The linked pages are the \"page 2s\" of the customer-level and account-level scopes.\r\n// Those include the customer-level list-edit page and the account-level view-exclusions page.\r\nexport const SiteExclusionListLinkedPageLoader = withScope(withRouter(React.memo(Loader)));\r\n","/* eslint-disable @typescript-eslint/no-unused-vars */\r\nimport _ from 'underscore';\r\nimport React, { useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withRouter } from '@bingads-webui-campaign-react/router';\r\nimport { siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { SimpleSummaryBar } from '@bingads-webui-campaign-react/summary-bar';\r\nimport { CampaignOData } from '@bingads-webui-react/campaign-odata';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\n\r\nexport const Loader = (props) => {\r\n const {\r\n siteMap,\r\n backButtonText,\r\n backButtonUrl,\r\n updateAvailability,\r\n scope,\r\n i18n,\r\n isVisible,\r\n ...others\r\n } = props;\r\n\r\n const selectedParent = _.findWhere(siteMap, { selected: true });\r\n const pathname = `/campaign/vnext/negativekeywordlistslibrary?uid=${scope.values.uid}&cid=${scope.values.cid}&aid=${scope.values.aid}`;\r\n\r\n useEffect(() => {\r\n updateAvailability(!_.isEmpty(selectedParent));\r\n });\r\n\r\n if (selectedParent) {\r\n const defaultSummaryBarFallback = (\r\n \r\n );\r\n\r\n if (scope.values.nkl && isVisible) {\r\n return (\r\n currentAccount.NegativeKeywordLists.get()}\r\n escapeHatch={({ currentAccount }) => (currentAccount ? undefined : { value: defaultSummaryBarFallback })}\r\n fallback={defaultSummaryBarFallback}\r\n // If the list name call fails, show empty string.\r\n onError={() => defaultSummaryBarFallback}\r\n >\r\n {\r\n (response) => {\r\n const predicate = item => item.Id === scope.values.nkl;\r\n\r\n if (response.value && _.find(response.value, predicate)) {\r\n const list = _.find(response.value, predicate);\r\n const additionalItems = [];\r\n additionalItems.push({\r\n key: 'item',\r\n text: list.Name,\r\n 'aria-label': i18n.getString(_TL_('Negative Keyword List Name')),\r\n });\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n return defaultSummaryBarFallback;\r\n }\r\n }\r\n \r\n );\r\n }\r\n\r\n return defaultSummaryBarFallback;\r\n }\r\n\r\n return null;\r\n};\r\n\r\nLoader.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n backButtonText: PropTypes.string,\r\n backButtonUrl: PropTypes.string,\r\n updateAvailability: PropTypes.func,\r\n scope: PropTypes.shape({\r\n values: PropTypes.shape({\r\n selListId: PropTypes.number,\r\n }).isRequired,\r\n }).isRequired,\r\n isVisible: PropTypes.bool.isRequired,\r\n};\r\n\r\nLoader.defaultProps = {\r\n backButtonText: null,\r\n backButtonUrl: null,\r\n updateAvailability: _.noop,\r\n};\r\n\r\nexport const NegativeKeywordsListDetailsLoader = withScope(withRouter(React.memo(Loader)));\r\n","import _ from 'underscore';\r\nimport React, { useEffect, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withRouter } from '@bingads-webui-campaign-react/router';\r\nimport { siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { SummaryBarFactory } from '@bingads-webui-campaign-react/summary-bar';\r\nimport { CampaignOData } from '@bingads-webui-react/campaign-odata';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\nimport { PermissionsContext } from '@bingads-webui-react/hoc-with-permissions';\r\n\r\nfunction getConfig(props) {\r\n const {\r\n i18n, scope, portfolioName, permissions,\r\n } = props;\r\n\r\n let pathname = '/campaign/vnext/portfoliobidstrategy';\r\n\r\n const isDataExclusionEnabled = (permissions.IsDataExclusionEnabled || permissions.dynamic.DataExclusions);\r\n // If data exclusion is enabled, the routing of portfoliobidstrategy is also changed\r\n if (isDataExclusionEnabled) {\r\n pathname = '/campaign/vnext/bidstrategies/portfoliobidstrategy';\r\n }\r\n const search = scope.stringify(_.omit(scope.values, 'portfolioId'));\r\n\r\n return {\r\n backButtonProps: {\r\n url: `${pathname}?${search}`,\r\n buttonText: i18n.getString(_TL_('Back to portfolio bid strategies')),\r\n },\r\n breadcrumbsGeneralConfigs: {\r\n items: [\r\n {\r\n key: 'portfolio-bid-strategies',\r\n text: i18n.getString(_TL_('Portfolio bid strategies')),\r\n 'aria-label': i18n.getString(_TL_('Portfolio bid strategies')),\r\n onClick: () => {\r\n scope.history.push({ pathname, search });\r\n },\r\n }, {\r\n key: 'portfolio-bid-strategy-details',\r\n text: portfolioName || i18n.getString(_TL_('Details')),\r\n 'aria-label': i18n.getString(_TL_('Details')),\r\n isCurrentItem: true,\r\n },\r\n ],\r\n maxDisplayedItems: 2,\r\n },\r\n };\r\n}\r\n\r\n\r\nconst Loader = (props) => {\r\n const { updateAvailability, isVisible, ...others } = props;\r\n const { i18n, siteMap, scope } = others;\r\n const permissions = useContext(PermissionsContext);\r\n\r\n const selectedParent = _.findWhere(siteMap, { selected: true });\r\n\r\n useEffect(() => {\r\n updateAvailability(!_.isEmpty(selectedParent));\r\n });\r\n\r\n if (selectedParent) {\r\n const summaryBarFallback = ;\r\n\r\n const { portfolioId } = scope.values;\r\n\r\n if (portfolioId && isVisible) {\r\n return (\r\n currentAccount.PortfolioBidStrategies.$withKey(portfolioId).get()}\r\n escapeHatch={({ currentAccount }) => (currentAccount ? undefined : { value: summaryBarFallback })}\r\n fallback={summaryBarFallback}\r\n onError={() => summaryBarFallback}\r\n >\r\n {(response) => {\r\n const portfolioName = response.Name;\r\n\r\n return portfolioName ?\r\n :\r\n summaryBarFallback;\r\n }}\r\n \r\n );\r\n }\r\n\r\n return summaryBarFallback;\r\n }\r\n\r\n return null;\r\n};\r\n\r\nLoader.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n updateAvailability: PropTypes.func,\r\n scope: PropTypes.shape({\r\n values: PropTypes.shape({\r\n selListId: PropTypes.number,\r\n }).isRequired,\r\n }).isRequired,\r\n isVisible: PropTypes.bool.isRequired,\r\n};\r\n\r\nLoader.defaultProps = {\r\n updateAvailability: _.noop,\r\n};\r\n\r\nexport const PortfolioDetailsLoader = withScope(withRouter(React.memo(Loader)));\r\n","import _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useEffect } from 'react';\r\nimport {\r\n withToolsSiteMap,\r\n siteMapPropType,\r\n processorSet,\r\n} from '@bingads-webui-campaign-react/with-site-map';\r\nimport { MerchantCenterSummaryBar } from '@bingads-webui-campaign-react/summary-bar';\r\n\r\nexport const Loader = (props) => {\r\n const { siteMap, updateAvailability, ...others } = props;\r\n\r\n const selectedParent = _.findWhere(siteMap, { selected: true });\r\n\r\n useEffect(() => {\r\n updateAvailability(!_.isEmpty(selectedParent));\r\n });\r\n\r\n return ();\r\n};\r\n\r\nLoader.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n updateAvailability: PropTypes.func,\r\n};\r\n\r\nLoader.defaultProps = {\r\n updateAvailability: _.noop,\r\n};\r\n\r\nexport const MerchantCenterSummaryBarLoader = withToolsSiteMap(\r\n React.memo(Loader),\r\n processorSet.all,\r\n ['mmc-stores/*', 'mmc-store-summary/*', 'mmc-feeds/*', 'mmc-promotions/*', 'mmc-import/*', 'mmc-settings/*']\r\n);\r\n","import _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useEffect } from 'react';\r\nimport { QueryParam } from '@bingads-webui-react/scope-service';\r\nimport {\r\n withStandaloneSiteMap,\r\n siteMapPropType,\r\n processorSet,\r\n} from '@bingads-webui-campaign-react/with-site-map';\r\nimport { QueryInsightsSummaryBar } from '@bingads-webui-campaign-react/summary-bar';\r\n\r\nexport const Loader = (props) => {\r\n const {\r\n isVisible,\r\n siteMap,\r\n updateAvailability,\r\n ...others\r\n } = props;\r\n\r\n const selectedParent = _.findWhere(siteMap, { selected: true });\r\n\r\n useEffect(() => {\r\n updateAvailability(!_.isEmpty(selectedParent));\r\n });\r\n\r\n return isVisible ? : null;\r\n};\r\n\r\nLoader.propTypes = {\r\n isVisible: PropTypes.bool,\r\n siteMap: siteMapPropType.isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n updateAvailability: PropTypes.func,\r\n};\r\n\r\nLoader.defaultProps = {\r\n isVisible: false,\r\n updateAvailability: _.noop,\r\n};\r\n\r\nexport const QueryInsightsSummaryBarLoader = withStandaloneSiteMap(\r\n React.memo(Loader),\r\n processorSet.default,\r\n 'query-insights-details/*'\r\n);\r\n","import React, { useState, useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { DefaultButton, PrimaryButton } from '@fluentui/react';\r\nimport { edmCampaign } from '@bingads-webui/edm-campaign';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport { Toggle } from '@fluentui/react/lib/Toggle';\r\n\r\nexport function WebInsightsEditor(props) {\r\n const {\r\n i18n, scope, onCancel, isInsightOn, onSave,\r\n } = props;\r\n const { tagId } = scope.values;\r\n const [isToggleOn, setIsToggleOn] = useState(isInsightOn);\r\n\r\n const triggerDocumentEvent = useCallback(() => {\r\n const event = new CustomEvent('toggleWebInsight', { detail: { tagId, isToggleOn } });\r\n document.dispatchEvent(event);\r\n }, [isToggleOn, tagId]);\r\n\r\n const onToggleClick = (event, checked) => {\r\n setIsToggleOn(checked);\r\n };\r\n\r\n const onSaveClick = useCallback(() => {\r\n const value = {\r\n Id: tagId,\r\n IsWebInsightsEnabled: isToggleOn,\r\n };\r\n const { Id: cid } = config.get('CurrentCustomer');\r\n const { Id: aid, AdvertiserCustomerID: acid } = config.get('CurrentAccount');\r\n const isAgencyScenario = acid && (acid !== cid) && scope.values.aid;\r\n const edmHolder = isAgencyScenario ? edmCampaign.Customers.$withKey(acid).Accounts.$withKey(aid) : edmCampaign.Customers.$withKey(cid);\r\n\r\n edmHolder\r\n .Tags['Default.UpdateTagsWebInsightsSetting']\r\n .$makeCall({ payload: { Tags: [value] } })\r\n .toPromise().then(() => {\r\n onSave(isToggleOn);\r\n triggerDocumentEvent();\r\n });\r\n }, [isToggleOn, onSave, scope, tagId, triggerDocumentEvent]);\r\n\r\n const onCancelClick = useCallback(() => {\r\n onCancel();\r\n }, [onCancel]);\r\n\r\n return (\r\n
\r\n
\r\n {i18n.getString(_TL_('Click the toggle to enable or disable UET Insights. You can edit this setting at anytime.'))}\r\n
\r\n \r\n {i18n.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\nWebInsightsEditor.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n scope: PropTypes.shape({\r\n aid: PropTypes.number,\r\n values: PropTypes.shape({\r\n cid: PropTypes.number,\r\n uid: PropTypes.number,\r\n aid: PropTypes.number,\r\n tagId: PropTypes.number,\r\n }).isRequired,\r\n }).isRequired,\r\n onSave: PropTypes.func.isRequired,\r\n onCancel: PropTypes.func.isRequired,\r\n isInsightOn: PropTypes.bool.isRequired,\r\n tag: PropTypes.shape({\r\n Id: PropTypes.string.isRequired,\r\n }).isRequired,\r\n};\r\n","import _ from 'underscore';\r\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withRouter } from '@bingads-webui-campaign-react/router';\r\nimport { Callout } from '@bingads-webui-react/callout';\r\nimport { siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { withServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { SummaryBarContainer } from '@bingads-webui-react/summary-bar';\r\nimport { SummaryBarItemsResizeGroup } from '@bingads-webui-campaign-react/summary-bar/src/components/summary-bar-items-resize-group';\r\nimport { SimpleSummaryBar } from '@bingads-webui-campaign-react/summary-bar';\r\nimport { Breadcrumb } from '@bingads-webui-react/breadcrumb';\r\nimport { CampaignOData } from '@bingads-webui-react/campaign-odata';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getUetDashboardSummaryBarStyle } from '../styles/summary-bar-style';\r\nimport { WebInsightsEditor } from './web-insights-editor';\r\n\r\nexport const Loader = (props) => {\r\n const {\r\n siteMap,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n backButtonText,\r\n backButtonUrl,\r\n updateAvailability,\r\n scope,\r\n i18n,\r\n isVisible,\r\n permissions,\r\n canEdit,\r\n ...others\r\n } = props;\r\n const uetDashboardPilotEnabled = permissions.dynamic.UETDashboard;\r\n const selectedParent = _.findWhere(siteMap, { selected: true });\r\n const trackingStatusMap = useMemo(() => ({\r\n Inactive: i18n.getString(_TL_('Inactive')),\r\n Unverified: i18n.getString(_TL_('Unverified')),\r\n Active: i18n.getString(_TL_('Active')),\r\n }), [i18n]);\r\n\r\n const [insightSettingOverride, setInsightSettingOverride] = useState({});\r\n const updateInsightSettingOverride = useCallback((tagIds, isInsightOn) => {\r\n setInsightSettingOverride(insight => ({\r\n ...insight,\r\n ..._.object(_.map(tagIds, tagId => [tagId, isInsightOn])),\r\n }));\r\n }, [setInsightSettingOverride]);\r\n\r\n useEffect(() => {\r\n const updateInsightSetting = event => updateInsightSettingOverride(event.detail.tagIds, true);\r\n\r\n document.addEventListener('turnOnInsightSummaryBar', updateInsightSetting);\r\n return () => {\r\n document.removeEventListener('turnOnInsightSummaryBar', updateInsightSetting);\r\n };\r\n }, [updateInsightSettingOverride]);\r\n\r\n useEffect(() => {\r\n updateAvailability(!_.isEmpty(selectedParent) && uetDashboardPilotEnabled);\r\n });\r\n\r\n if (selectedParent && uetDashboardPilotEnabled) {\r\n const defaultSummaryBarFallback = (\r\n \r\n );\r\n\r\n if (scope.values.aid) {\r\n scope.acid = props.serverContext.CurrentAccount.AdvertiserCustomerID;\r\n }\r\n if (scope.values.tagId && isVisible && permissions.dynamic.UETDashboard) {\r\n return (\r\n (scope.values.aid ? currentAccount.Tags.get({ top: 200 }) : currentCustomer.Tags.get({ top: 200 }))}\r\n escapeHatch={({ currentAccount, currentCustomer }) => (currentAccount || currentCustomer ? undefined : { value: defaultSummaryBarFallback })}\r\n fallback={defaultSummaryBarFallback}\r\n // If the list name call fails, show empty string.\r\n onError={() => defaultSummaryBarFallback}\r\n >\r\n {\r\n (response) => {\r\n const predicate = item => item.Id === scope.values.tagId;\r\n\r\n const backButtonProps = {\r\n url: `/campaign/vnext/uettag?uid=${scope.values.uid}&cid=${scope.values.cid}&aid=${scope.values.aid}`,\r\n buttonText: i18n.getString(_TL_('Back to All tags')),\r\n };\r\n\r\n if (response.value && _.find(response.value, predicate)) {\r\n const list = _.find(response.value, predicate);\r\n const renderBreadCrumb = () => {\r\n const items = [{\r\n key: 'uet-dashboard-tag',\r\n text: i18n.getString(_TL_('UET tag')),\r\n }, {\r\n key: 'uet-dashboard-tag-name',\r\n text: list.Name,\r\n }];\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n };\r\n\r\n const resizeGroup = [{\r\n label: i18n.getString(_TL_('Tag ID')),\r\n className: 'summary-bar-tag-id',\r\n renderContent: () => list.Id,\r\n ariaLabel: i18n.getString(_TL_('Tag ID')),\r\n canEdit: false,\r\n }, {\r\n label: i18n.getString(_TL_('Tracking Status')),\r\n className: 'summary-bar-tracking-status',\r\n renderContent: () => (!list.IsReadOnly ? (trackingStatusMap[list.TrackingStatus] || list.TrackingStatus) : trackingStatusMap.Active),\r\n ariaLabel: i18n.getString(_TL_('Tracking Status')),\r\n canEdit: false,\r\n }, {\r\n label: i18n.getString(_TL_('Goals')),\r\n className: 'summary-bar-goals',\r\n renderContent: () => list.GoalsCount,\r\n ariaLabel: i18n.getString(_TL_('Goals')),\r\n canEdit: false,\r\n }, {\r\n label: i18n.getString(_TL_('Audiences')),\r\n className: 'summary-bar-audiences',\r\n renderContent: () => list.AudiencesCount,\r\n ariaLabel: i18n.getString(_TL_('Audiences')),\r\n canEdit: false,\r\n }];\r\n\r\n if (permissions.dynamic.UETTagInsights) {\r\n resizeGroup.push({\r\n label: i18n.getString(_TL_('Insights')),\r\n className: 'summary-bar-insights',\r\n renderContent: () => {\r\n const isInsightOn = !_.isUndefined(insightSettingOverride[list.Id]) ? insightSettingOverride[list.Id] : list.IsWebInsightsEnabled;\r\n return (\r\n
\r\n {isInsightOn ? i18n.getString(_TL_('Enabled')) : i18n.getString(_TL_('Disabled'))}\r\n \r\n
\r\n );\r\n },\r\n ariaLabel: i18n.getString(_TL_('Insights')),\r\n canEdit,\r\n Editor: Callout,\r\n getEditorProps: (show, closeEditor) => ({\r\n title: i18n.getString(_TL_('Edit your Insights setting')),\r\n content: (\r\n {\r\n // eslint-disable-next-line no-param-reassign\r\n list.IsWebInsightsEnabled = newIsInsightOn;\r\n updateInsightSettingOverride([list.Id], newIsInsightOn);\r\n closeEditor();\r\n }}\r\n onCancel={() => {\r\n closeEditor();\r\n }}\r\n />\r\n ),\r\n show,\r\n onClose: closeEditor,\r\n closeButton: true,\r\n target: null,\r\n placement: 'bottom',\r\n popoverId: 'summary-bar-insights-editor',\r\n popoverClassName: 'summary-bar-insights-editor',\r\n closeButtonAriaLabel: i18n.getString(_TL_('Close')),\r\n focusLockContent: true,\r\n }),\r\n });\r\n }\r\n\r\n return (\r\n }\r\n />\r\n );\r\n }\r\n\r\n return defaultSummaryBarFallback;\r\n }\r\n }\r\n \r\n );\r\n }\r\n\r\n return defaultSummaryBarFallback;\r\n }\r\n\r\n return null;\r\n};\r\n\r\nLoader.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n serverContext: PropTypes.shape({\r\n CurrentAccount: PropTypes.isRequired,\r\n }).isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n backButtonText: PropTypes.string,\r\n backButtonUrl: PropTypes.string,\r\n updateAvailability: PropTypes.func,\r\n scope: PropTypes.shape({\r\n acid: PropTypes.number,\r\n values: PropTypes.shape({\r\n cid: PropTypes.number,\r\n uid: PropTypes.number,\r\n aid: PropTypes.number,\r\n tagId: PropTypes.number,\r\n }).isRequired,\r\n }).isRequired,\r\n isVisible: PropTypes.bool.isRequired,\r\n permissions: PropTypes.shape({\r\n dynamic: PropTypes.shape({\r\n UETDashboard: PropTypes.bool.isRequired,\r\n UETTagInsights: PropTypes.bool.isRequired,\r\n }),\r\n }).isRequired,\r\n};\r\n\r\nLoader.defaultProps = {\r\n backButtonText: null,\r\n backButtonUrl: null,\r\n updateAvailability: _.noop,\r\n};\r\n\r\nexport const UetDashboardLoader = withDefaultStyles(withServerContext(withScope(withRouter(React.memo(Loader)))), getUetDashboardSummaryBarStyle);\r\n","export const getUetDashboardSummaryBarStyle = () => ({\r\n '@global': {\r\n '.summary-bar-items > div': {\r\n '& > div:nth-child(2)': {\r\n minHeight: '0px !important',\r\n },\r\n '& .edit-icon': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n '& .entity-label': {\r\n padding: '0px !important',\r\n },\r\n '& .edit-icon .web-insights': {\r\n marginRight: '8px',\r\n },\r\n '& .edit-icon .glyphicon-pencil': {\r\n fontSize: '16px',\r\n opacity: 0,\r\n transition: 'opacity 0.3s ease',\r\n },\r\n '&:hover, &:active, &:focus': {\r\n background: 'transparent !important',\r\n '& .edit-icon .glyphicon-pencil': {\r\n opacity: 1,\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","import _ from 'underscore';\r\nimport React, { useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { findSiteMap, siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { AssetLibrarySummaryBar } from '@bingads-webui-campaign-react/summary-bar';\r\n\r\nconst isLeafNode = item => item && item.children.length === 0 && item.selected === true;\r\n\r\nconst Loader = (props) => {\r\n const {\r\n siteMap,\r\n updateAvailability,\r\n isVisible,\r\n i18n,\r\n history,\r\n location,\r\n permissions,\r\n } = props;\r\n\r\n const selectedParent = _.findWhere(siteMap, { selected: true });\r\n const selectedChild = selectedParent && findSiteMap([selectedParent], isLeafNode);\r\n\r\n useEffect(() => {\r\n updateAvailability(!_.isEmpty(selectedParent));\r\n });\r\n\r\n return isVisible ? (\r\n \r\n ) : null;\r\n};\r\n\r\nLoader.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n updateAvailability: PropTypes.func,\r\n isVisible: PropTypes.bool,\r\n history: PropTypes.shape({\r\n replace: PropTypes.func,\r\n }).isRequired,\r\n location: PropTypes.shape({\r\n search: PropTypes.string,\r\n }).isRequired,\r\n permissions: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nLoader.defaultProps = {\r\n updateAvailability: _.noop,\r\n isVisible: false,\r\n};\r\n\r\nexport const AssetLibrarySummaryBarLoader = React.memo(Loader);\r\n","import _ from 'underscore';\r\nimport React, { useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { findSiteMap, siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { AdStudioSummaryBar } from '@bingads-webui-campaign-react/summary-bar';\r\n\r\nconst isLeafNode = item => item && item.children.length === 0 && item.selected === true;\r\n\r\nconst Loader = (props) => {\r\n const {\r\n siteMap,\r\n updateAvailability,\r\n isVisible,\r\n i18n,\r\n history,\r\n location,\r\n permissions,\r\n } = props;\r\n\r\n const selectedParent = _.findWhere(siteMap, { selected: true });\r\n const selectedChild = selectedParent && findSiteMap([selectedParent], isLeafNode);\r\n\r\n useEffect(() => {\r\n updateAvailability(!_.isEmpty(selectedParent));\r\n });\r\n\r\n return isVisible ? (\r\n \r\n ) : null;\r\n};\r\n\r\nLoader.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n updateAvailability: PropTypes.func,\r\n isVisible: PropTypes.bool,\r\n history: PropTypes.shape({\r\n replace: PropTypes.func,\r\n }).isRequired,\r\n location: PropTypes.shape({\r\n search: PropTypes.string,\r\n }).isRequired,\r\n permissions: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nLoader.defaultProps = {\r\n updateAvailability: _.noop,\r\n isVisible: false,\r\n};\r\n\r\nexport const AdStudioSummaryBarLoader = React.memo(Loader);\r\n","import _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useEffect } from 'react';\r\nimport { QueryParam } from '@bingads-webui-react/scope-service';\r\nimport {\r\n siteMapPropType,\r\n findSiteMap,\r\n} from '@bingads-webui-campaign-react/with-site-map';\r\nimport { PmaxAssetDetailsSummaryBar } from '@bingads-webui-campaign-react/summary-bar';\r\n\r\nconst isLeafNode = item => item && item.children.length === 0 && item.selected === true;\r\n\r\nexport const Loader = (props) => {\r\n const {\r\n isVisible,\r\n siteMap,\r\n updateAvailability,\r\n scope,\r\n ...others\r\n } = props;\r\n\r\n const selectedParent = _.findWhere(siteMap, { selected: true });\r\n const selectedChild = selectedParent && findSiteMap([selectedParent], isLeafNode);\r\n\r\n useEffect(() => {\r\n updateAvailability(!_.isEmpty(selectedParent) && !_.isEmpty(selectedParent.id) && scope.values.assetGroupId);\r\n });\r\n\r\n return isVisible ? (\r\n \r\n ) : null;\r\n};\r\n\r\nLoader.propTypes = {\r\n isVisible: PropTypes.bool,\r\n siteMap: siteMapPropType.isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n updateAvailability: PropTypes.func,\r\n};\r\n\r\nLoader.defaultProps = {\r\n isVisible: false,\r\n updateAvailability: _.noop,\r\n};\r\n\r\nexport const PmaxAssetDetailsSummaryBarLoader = React.memo(Loader);\r\n","import React, { useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\n\r\nimport { siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { BudgetCenterSummaryBar } from '@bingads-webui-campaign-react/summary-bar';\r\n\r\nconst Loader = ({\r\n updateAvailability,\r\n siteMap,\r\n isVisible,\r\n}) => {\r\n const selectedParent = _.findWhere(siteMap, { selected: true });\r\n\r\n useEffect(() => {\r\n updateAvailability(!_.isEmpty(selectedParent));\r\n });\r\n\r\n return isVisible ? () : null;\r\n};\r\n\r\nLoader.propTypes = {\r\n updateAvailability: PropTypes.func,\r\n siteMap: siteMapPropType.isRequired,\r\n isVisible: PropTypes.bool,\r\n};\r\n\r\nLoader.defaultProps = {\r\n updateAvailability: _.noop,\r\n isVisible: false,\r\n};\r\n\r\nexport const BudgetCenterSummaryBarLoader = React.memo(Loader);\r\n","import _ from 'underscore';\r\nimport React, { useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { SimpleSummaryBar } from '@bingads-webui-campaign-react/summary-bar';\r\n\r\nconst Loader = (props) => {\r\n const {\r\n i18n,\r\n siteMap,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n breadCrumbText,\r\n backButtonText,\r\n backButtonUrl,\r\n updateAvailability,\r\n isVisible,\r\n ...others\r\n } = props;\r\n\r\n\r\n const selectedParent = _.findWhere(siteMap, { selected: true });\r\n\r\n useEffect(() => {\r\n updateAvailability(!_.isEmpty(selectedParent));\r\n });\r\n\r\n if (!isVisible) {\r\n return null;\r\n }\r\n\r\n return ();\r\n};\r\n\r\nLoader.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n breadCrumbText: PropTypes.string,\r\n backButtonText: PropTypes.string,\r\n backButtonUrl: PropTypes.string,\r\n updateAvailability: PropTypes.func,\r\n isVisible: PropTypes.bool,\r\n location: PropTypes.shape({\r\n pathname: PropTypes.string.isRequired,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n};\r\n\r\nLoader.defaultProps = {\r\n breadCrumbText: null,\r\n backButtonText: null,\r\n backButtonUrl: null,\r\n updateAvailability: _.noop,\r\n isVisible: false,\r\n};\r\n\r\nexport const HotelCenterV2SummaryBarLoader = React.memo(Loader);\r\n","import _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useEffect, useMemo } from 'react';\r\n\r\nimport { QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { SimpleSummaryBar } from '@bingads-webui-campaign-react/summary-bar';\r\n\r\n// TODO: Mave logic shared\r\nconst getBackButtonProps = (scope) => {\r\n const previousRoute = _.get(scope, 'location.state.previousRoute');\r\n\r\n if (previousRoute && previousRoute.includes('campaign/vnext')) {\r\n const url = new URL(previousRoute);\r\n\r\n return {\r\n text: undefined,\r\n pathname: url.pathname,\r\n search: url.search,\r\n };\r\n }\r\n\r\n return {\r\n text: _TL_('Back to overview'),\r\n pathname: '/campaign/vnext/overview',\r\n search: `?uid=${scope.values.uid}&cid=${scope.values.cid}&aid=${scope.values.aid}`,\r\n };\r\n};\r\n\r\nconst Loader = (props) => {\r\n const {\r\n i18n,\r\n siteMap,\r\n scope,\r\n updateAvailability,\r\n isVisible,\r\n ...others\r\n } = props;\r\n\r\n const selectedParent = _.findWhere(siteMap, { selected: true });\r\n const { text, pathname, search } = useMemo(() => getBackButtonProps(scope), [scope]);\r\n\r\n const url = `${pathname}${search}`;\r\n const title = i18n.getString(scope.values.adId ? _TL_('Edit ad') : _TL_('Create ad'));\r\n\r\n useEffect(() => { updateAvailability(!_.isEmpty(selectedParent)); });\r\n\r\n return isVisible\r\n ? (\r\n )\r\n : null;\r\n};\r\n\r\nLoader.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n updateAvailability: PropTypes.func,\r\n isVisible: PropTypes.bool,\r\n};\r\n\r\nLoader.defaultProps = {\r\n updateAvailability: _.noop,\r\n isVisible: false,\r\n};\r\n\r\nexport const AdEditorSummaryBarLoader = React.memo(Loader);\r\n","import { omit } from 'underscore';\r\nimport { getRoutePathById } from '@bingads-webui-campaign-react/with-site-map';\r\n\r\nexport function getBulkDetailConfig(props) {\r\n const { i18n, scope, siteMap } = props;\r\n const pathname = getRoutePathById(siteMap, 'bulk-edits');\r\n const search = scope.stringify(omit(scope.values, 'bulkEditSessionId'));\r\n\r\n return {\r\n backButtonProps: {\r\n url: `${pathname}?${search}`,\r\n buttonText: i18n.getString(_TL_('Back to Bulk edits')),\r\n },\r\n breadcrumbsGeneralConfigs: {\r\n items: [\r\n {\r\n key: 'bulkedits',\r\n text: i18n.getString(_TL_('Bulk edits')),\r\n onClick: () => {\r\n scope.history.push({\r\n pathname,\r\n search,\r\n });\r\n },\r\n 'aria-label': 'Bulk edits',\r\n }, {\r\n key: 'details',\r\n text: i18n.getString(_TL_('Details')),\r\n 'aria-label': 'Details',\r\n isCurrentItem: true,\r\n },\r\n ],\r\n maxDisplayedItems: 2,\r\n },\r\n };\r\n}\r\n","import { omit } from 'underscore';\r\nimport { getRoutePathById } from '@bingads-webui-campaign-react/with-site-map';\r\n\r\nexport function getRuleDetailConfig(props) {\r\n const { i18n, scope, siteMap } = props;\r\n const pathname = getRoutePathById(siteMap, 'rules');\r\n const search = scope.stringify(omit(scope.values, 'executionId'));\r\n\r\n return {\r\n backButtonProps: {\r\n url: `${pathname}?${search}`,\r\n buttonText: i18n.getString(_TL_('Back to rules')),\r\n },\r\n breadcrumbsGeneralConfigs: {\r\n items: [\r\n {\r\n key: 'automatedrules',\r\n text: i18n.getString(_TL_('Automated rules')),\r\n onClick: () => {\r\n scope.history.push({\r\n pathname,\r\n search,\r\n });\r\n },\r\n 'aria-label': 'Automated rules',\r\n }, {\r\n key: 'details',\r\n text: i18n.getString(_TL_('Details')),\r\n 'aria-label': 'Details',\r\n isCurrentItem: true,\r\n },\r\n ],\r\n maxDisplayedItems: 2,\r\n },\r\n };\r\n}\r\n","import { getRoutePathById } from '@bingads-webui-campaign-react/with-site-map';\r\n\r\nexport function getScriptsDetailConfig(props) {\r\n // eslint-disable-next-line\r\n const { i18n, scope, siteMap, location } = props;\r\n const pageLocation = location.pathname.split('/')[location.pathname.split('/').length - 1];\r\n let pageName = '';\r\n let buttonContext = i18n.getString(_TL_('Back to scripts'));\r\n let pathname = getRoutePathById(siteMap, 'scripts');\r\n\r\n if (pageLocation === 'scriptslogs') {\r\n pageName = i18n.getString(_TL_('Details'));\r\n pathname = getRoutePathById(siteMap, 'scripts-history');\r\n buttonContext = i18n.getString(_TL_('Back to scripts history'));\r\n } else if (pageLocation === 'scriptsedit') {\r\n pageName = i18n.getString(_TL_('Edit Script'));\r\n pathname = getRoutePathById(siteMap, 'scripts-page');\r\n } else if (pageLocation === 'scriptscreate') {\r\n pageName = i18n.getString(_TL_('Create Script'));\r\n pathname = getRoutePathById(siteMap, 'scripts-page');\r\n }\r\n\r\n pathname += `?uid=${scope.values.uid}&cid=${scope.values.cid}`;\r\n\r\n if (scope.values.aid) {\r\n pathname += `&aid=${scope.values.aid}`;\r\n }\r\n\r\n return {\r\n backButtonProps: {\r\n url: pathname,\r\n buttonText: buttonContext,\r\n },\r\n breadcrumbsGeneralConfigs: {\r\n items: [\r\n {\r\n key: 'bulkActions',\r\n text: i18n.getString(_TL_('Bulk actions')),\r\n 'aria-label': 'Bulk actions',\r\n },\r\n {\r\n key: 'scripts',\r\n text: i18n.getString(_TL_('Scripts')),\r\n onClick: () => {\r\n window.location.href = pathname;\r\n },\r\n 'aria-label': 'Scripts',\r\n }, {\r\n key: 'details',\r\n text: pageName,\r\n 'aria-label': pageName,\r\n isCurrentItem: true,\r\n },\r\n ],\r\n maxDisplayedItems: 3,\r\n },\r\n };\r\n}\r\n","import { getRoutePathById } from '@bingads-webui-campaign-react/with-site-map';\r\n\r\nexport function getBulkUploadsBuildSpreadsheetConfig(props) {\r\n const { i18n, scope, siteMap } = props;\r\n const pathname = getRoutePathById(siteMap, 'bulk-download-history');\r\n const search = scope.stringify(scope.values);\r\n\r\n return {\r\n backButtonProps: {\r\n url: `${pathname}?${search}`,\r\n buttonText: i18n.getString(_TL_('Back to bulk uploads')),\r\n },\r\n breadcrumbsGeneralConfigs: {\r\n items: [\r\n {\r\n key: 'bulkActions',\r\n text: i18n.getString(_TL_('Bulk actions')),\r\n 'aria-label': 'Bulk actions',\r\n },\r\n {\r\n key: 'bulkUploads',\r\n text: i18n.getString(_TL_('Bulk uploads')),\r\n onClick: () => {\r\n scope.history.push({\r\n pathname,\r\n search,\r\n });\r\n },\r\n 'aria-label': 'Bulk uploads',\r\n }, {\r\n key: 'buildSpreadsheet',\r\n text: i18n.getString(_TL_('Build spreadsheet')),\r\n 'aria-label': 'Build spreadsheet',\r\n isCurrentItem: true,\r\n },\r\n ],\r\n maxDisplayedItems: 3,\r\n },\r\n };\r\n}\r\n","import _ from 'underscore';\r\nimport URI from 'urijs';\r\nimport React, { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withRouter } from '@bingads-webui-campaign-react/router';\r\nimport { siteMapPropType, getRoutePathById } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { SimpleSummaryBar } from '@bingads-webui-campaign-react/summary-bar';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\nimport { getBrandListById } from '@bingads-webui-campaign-react/brand-lists-data';\r\n\r\nconst SITE_MAP_ID = 'brand-lists';\r\n\r\nexport const Loader = (props) => {\r\n const {\r\n siteMap,\r\n breadCrumbText,\r\n backButtonText,\r\n backButtonUrl,\r\n updateAvailability,\r\n scope,\r\n ...others\r\n } = props;\r\n\r\n const selectedParent = _.findWhere(siteMap, { selected: true });\r\n\r\n const {\r\n values: {\r\n uid,\r\n cid,\r\n aid,\r\n brandListId,\r\n },\r\n } = scope;\r\n const [listName, setListName] = useState('');\r\n\r\n useEffect(() => {\r\n updateAvailability(!_.isEmpty(selectedParent));\r\n });\r\n\r\n useEffect(() => {\r\n async function fetchData() {\r\n try {\r\n const brandList = await getBrandListById({ cid, aid, brandListId });\r\n setListName(brandList ? brandList.Name : '');\r\n } catch (error) {\r\n // No error notification here since it's summary bar, which won't block the normal workflow.\r\n setListName('');\r\n }\r\n }\r\n\r\n if (brandListId) {\r\n fetchData();\r\n }\r\n }, [aid, brandListId, cid]);\r\n\r\n // Add Brand List breadcrumb.\r\n // The parent ID is shared by the account-level entrypoints in the sitemap.\r\n if (scope.values.brandListId && selectedParent && selectedParent.id === SITE_MAP_ID && scope.location.pathname.includes('details')) {\r\n const path = getRoutePathById(siteMap, SITE_MAP_ID);\r\n const breadcrumbUrl = new URI(path)\r\n .addQuery({ uid, cid, aid })\r\n .toString();\r\n\r\n const additionalItems = [];\r\n additionalItems.push({\r\n key: `navigate-brandListId-${brandListId}`,\r\n text: listName,\r\n });\r\n\r\n return (\r\n \r\n );\r\n }\r\n return selectedParent ? (\r\n \r\n ) : null;\r\n};\r\n\r\nLoader.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n breadCrumbText: PropTypes.string,\r\n backButtonText: PropTypes.string,\r\n backButtonUrl: PropTypes.string,\r\n updateAvailability: PropTypes.func,\r\n scope: PropTypes.shape({\r\n values: PropTypes.shape({\r\n brandListId: PropTypes.number,\r\n uid: PropTypes.string,\r\n cid: PropTypes.string,\r\n aid: PropTypes.string,\r\n }).isRequired,\r\n location: PropTypes.shape({\r\n pathname: PropTypes.string.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n};\r\n\r\nLoader.defaultProps = {\r\n breadCrumbText: null,\r\n backButtonText: null,\r\n backButtonUrl: null,\r\n updateAvailability: _.noop,\r\n};\r\n\r\nexport const BrandListsDetailsPageLoader = withScope(withRouter(React.memo(Loader)));\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n getRoutePathById,\r\n withStandaloneSiteMap,\r\n withToolsSiteMap,\r\n withImportSiteMap,\r\n withHotelCenterSiteMap,\r\n withHotelCenterV2SiteMap,\r\n withAdInsightSiteMap,\r\n withBidStrategiesSiteMap,\r\n withSiteMap,\r\n processor,\r\n} from '@bingads-webui-campaign-react/with-site-map';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { ElementSelector } from '@bingads-webui-campaign-react/element-selector';\r\nimport { withLastURL } from '@bingads-webui-campaign-react/with-last-url';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { isNavigationRefreshOn } from '@bingads-webui-react/preference-utility';\r\nimport { SummaryBarPlaceholder } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { CampaignScopeBarLoader } from '@bingads-webui-campaign-react/scope-bar';\r\nimport { CampaignSummaryBarLoader } from './campaign-summary-bar-loader';\r\nimport { SharedBudgetSummaryBarLoader } from './shared-budget-summary-bar-loader';\r\nimport { AccountsSummaryBarLoader } from './accounts-summary-bar-loader';\r\nimport { SimpleSummaryBarLoader } from './simple-summary-bar-loader';\r\nimport { GeneralSummaryBarLoader } from './general-summary-bar-loader';\r\nimport { SiteExclusionListLinkedPageLoader } from './site-exclusion-list-linked-page-loader';\r\nimport { NegativeKeywordsListDetailsLoader } from './negative-keywords-list-details-summary-bar-loader';\r\nimport { PortfolioDetailsLoader } from './portfolio-details-summary-bar-loader';\r\nimport { MerchantCenterSummaryBarLoader } from './merchant-center-summary-bar-loader';\r\nimport { QueryInsightsSummaryBarLoader } from './query-insights-summary-bar-loader';\r\nimport { UetDashboardLoader } from './uet-dashboard-summary-bar-loader';\r\nimport { AssetLibrarySummaryBarLoader as AssetLibrarySummaryBarLoaderInternal } from './asset-library-summary-bar-loader';\r\nimport { AdStudioSummaryBarLoader as AdStudioSummaryBarLoaderInternal } from './ad-studio-summary-bar-loader';\r\nimport { PmaxAssetDetailsSummaryBarLoader } from './pmax-asset-details-summary-bar-loader';\r\nimport { BudgetCenterSummaryBarLoader as BudgetCenterSummaryBarLoaderInternal } from './budget-center-summary-bar-loader';\r\nimport { HotelCenterV2SummaryBarLoader as HotelCenterV2SummaryBarLoaderInternal } from './hotel-center-v2-summary-bar-loader';\r\nimport { AdEditorSummaryBarLoader as AdEditorSummaryBarLoaderInternal } from './ad-editor-summary-bar-loader';\r\n\r\nimport {\r\n getBulkDetailConfig,\r\n getRuleDetailConfig,\r\n getScriptsDetailConfig,\r\n getBulkUploadsBuildSpreadsheetConfig,\r\n} from './general-summary-bar-configs/index';\r\nimport { BrandListsDetailsPageLoader } from './brand-lists-details-page-loader';\r\n\r\nconst summaryBarProcessors = [processor.processPermissions, processor.processPath];\r\n\r\nconst RuleDetailSummaryBarLoader = withLastURL(withStandaloneSiteMap(React.memo(GeneralSummaryBarLoader), summaryBarProcessors, 'rule-detail'));\r\nconst BulkDetailSummaryBarLoader = withLastURL(withStandaloneSiteMap(React.memo(GeneralSummaryBarLoader), summaryBarProcessors, 'bulk-edits-detail'));\r\nconst ScriptsDetailSummaryBarLoader = withLastURL(withStandaloneSiteMap(React.memo(GeneralSummaryBarLoader), summaryBarProcessors, 'scripts-detail'));\r\nconst BulkUploadsBuildSpreadsheetSummaryBarLoader = withLastURL(withStandaloneSiteMap(React.memo(GeneralSummaryBarLoader), summaryBarProcessors, 'bulk-uploads-build-spreadsheet'));\r\nconst NegativeKeywordsListDetailsSummaryBarLoader = withStandaloneSiteMap(React.memo(NegativeKeywordsListDetailsLoader), summaryBarProcessors, 'negative-keywords-lists-detail');\r\nconst PortfolioDetailsSummaryBarLoader = withStandaloneSiteMap(React.memo(PortfolioDetailsLoader), summaryBarProcessors, 'portfolio-bid-strategy-details');\r\nconst CampaignSummaryBarWithLastUrl = withLastURL(CampaignSummaryBarLoader);\r\nconst QueryInsightsSummaryBarWithLastUrl = withLastURL(QueryInsightsSummaryBarLoader);\r\nconst UetDashboardSummaryBarWithLastUrl = withLastURL(withToolsSiteMap(UetDashboardLoader, summaryBarProcessors, 'uet-tag'));\r\nconst SharedBudgetSummaryBarWithLastUrl = withLastURL(SharedBudgetSummaryBarLoader);\r\nconst StandaloneSummaryBarLoader = withLastURL(withStandaloneSiteMap(SimpleSummaryBarLoader, summaryBarProcessors));\r\nconst SiteExclusionListLinkedPageSummaryBarLoader = withLastURL(withToolsSiteMap(SiteExclusionListLinkedPageLoader, summaryBarProcessors));\r\nconst ToolsPageSummaryBarLoader = withLastURL(withToolsSiteMap(SimpleSummaryBarLoader, summaryBarProcessors));\r\nconst AudiencePlannerSummaryBarLoader = withLastURL(withToolsSiteMap(SimpleSummaryBarLoader, summaryBarProcessors, 'audience-planner'));\r\nconst FeedItemsPageSummaryBarLoader = withStandaloneSiteMap(\r\n SimpleSummaryBarLoader,\r\n summaryBarProcessors,\r\n ['ad-customizer-feeds-items', 'dynamic-data-feeds-items', 'page-feed-item']\r\n);\r\nconst AdEditorSummaryBarLoader = withStandaloneSiteMap(\r\n AdEditorSummaryBarLoaderInternal,\r\n summaryBarProcessors,\r\n ['ad-editor']\r\n);\r\nconst PerformanceTargetsPageSummaryBarLoader = withStandaloneSiteMap(\r\n SimpleSummaryBarLoader,\r\n summaryBarProcessors,\r\n ['performance-targets-create', 'performance-targets-overview']\r\n);\r\nconst StandaloneAccountsSummaryBarLoader = withStandaloneSiteMap(\r\n SimpleSummaryBarLoader,\r\n summaryBarProcessors,\r\n ['account-create', 'account-linking', 'accounts-unlinking', 'accounts-transfer', 'pending-transfer-request']\r\n);\r\nconst ImportPageSummaryBarLoader = withLastURL(withImportSiteMap(SimpleSummaryBarLoader, summaryBarProcessors));\r\nconst HotelCenterSummaryBarLoader = withLastURL(withHotelCenterSiteMap(SimpleSummaryBarLoader, summaryBarProcessors));\r\nconst HotelCenterV2SummaryBarLoader = withLastURL(withHotelCenterV2SiteMap(HotelCenterV2SummaryBarLoaderInternal, summaryBarProcessors));\r\nconst AdInsightSummaryBarLoader = withLastURL(withAdInsightSiteMap(SimpleSummaryBarLoader, summaryBarProcessors));\r\nconst AssetLibrarySummaryBarLoader = withLastURL(withToolsSiteMap(AssetLibrarySummaryBarLoaderInternal, summaryBarProcessors, 'creative-studio-asset-library'));\r\nconst AdStudioSummaryBarLoader = withLastURL(withToolsSiteMap(AdStudioSummaryBarLoaderInternal, summaryBarProcessors, 'ad-studio-app-entry'));\r\nconst BidStrategiesSummaryBarLoader = withLastURL(withBidStrategiesSiteMap(SimpleSummaryBarLoader, summaryBarProcessors));\r\nconst AssetGroupCreateAndEditSummaryBarWithLastUrl = withLastURL(withStandaloneSiteMap(\r\n SimpleSummaryBarLoader,\r\n summaryBarProcessors,\r\n ['asset-group-create', 'asset-group-edit']\r\n));\r\nconst BudgetCenterSummaryBarLoader = withToolsSiteMap(BudgetCenterSummaryBarLoaderInternal, summaryBarProcessors, 'budget-center');\r\nconst BrandListsDetailsPageSummaryBarLoader = withLastURL(withToolsSiteMap(BrandListsDetailsPageLoader, summaryBarProcessors, 'brand-lists'));\r\n\r\nexport const SummaryBarContainerInternal = React.memo((props) => {\r\n const isNavRefresh = isNavigationRefreshOn(props.permissions);\r\n const isNavigationRefreshBudgetCenterOn = isNavRefresh && props.permissions.dynamic.NavigationRefreshBudgetCenter;\r\n return (\r\n )}>\r\n \r\n \r\n {\r\n props.scope.remove(['assetGroupId']);\r\n props.scope.save(getRoutePathById(props.siteMap, 'asset-groups'));\r\n },\r\n }]}\r\n />\r\n \r\n {\r\n isNavRefresh\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 {!isNavigationRefreshBudgetCenterOn && }\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\nSummaryBarContainerInternal.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n scope: PropTypes.shape({\r\n remove: PropTypes.func.isRequired,\r\n save: PropTypes.func.isRequired,\r\n }).isRequired,\r\n siteMap: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n permissions: PropTypes.shape({\r\n dynamic: PropTypes.shape({\r\n NavigationRefresh: PropTypes.bool,\r\n NavigationRefreshBudgetCenter: PropTypes.bool,\r\n }),\r\n }).isRequired,\r\n};\r\n\r\nexport const SummaryBarContainer = withSiteMap(withScope(withI18nConsumer(withPermissions(SummaryBarContainerInternal))));\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { values, result } from 'underscore';\r\nimport { CampaignType } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { SummaryBarFactory } from './components';\r\n\r\nexport const AdSummaryBar = ({\r\n adGroup,\r\n i18n,\r\n scope,\r\n siteMap,\r\n summaryBarActivityLogger,\r\n permissions,\r\n}) => {\r\n const {\r\n id,\r\n name,\r\n campaignType,\r\n campaignId,\r\n campaignName,\r\n } = adGroup;\r\n\r\n const queryParam = new QueryParam(scope.history.location, scope.history);\r\n const { adType } = queryParam.values;\r\n queryParam.remove(['adId']);\r\n if (adType) {\r\n queryParam.remove(['adType']);\r\n }\r\n\r\n const backButtonUrl = `/campaign/vnext/ads?${queryParam.stringify()}`;\r\n const adName = {\r\n Responsive: i18n.getString(_TL_('Responsive ad')),\r\n ResponsiveSearch: i18n.getString(_TL_('Responsive search ad')),\r\n DynamicSearch: i18n.getString(_TL_('Dynamic search ad')),\r\n DynamicResponsive: i18n.getString(_TL_('Responsive ad')),\r\n };\r\n\r\n const summaryBarProps = {\r\n backButtonProps: {\r\n url: backButtonUrl,\r\n buttonText: i18n.getString(_TL_('Back to ads')),\r\n },\r\n breadcrumbsProps: {\r\n campaignName,\r\n campaignId,\r\n // Fallback to 'All campaigns' if campaign type filter is not 'Search campaigns'\r\n campaignType: campaignType === CampaignType.Default ? campaignType : CampaignType.All,\r\n adGroupId: id,\r\n adGroupName: name,\r\n adName: adName[adType],\r\n maxDisplayedItems: 4,\r\n },\r\n i18n,\r\n summaryBarActivityLogger,\r\n scope,\r\n siteMap,\r\n };\r\n\r\n const isAppBarBreadcrumbEnabled = result(permissions.dynamic, 'AppBarBreadcrumb', false);\r\n return ();\r\n};\r\n\r\nAdSummaryBar.propTypes = {\r\n adGroup: PropTypes.shape({\r\n id: PropTypes.number.isRequired,\r\n name: PropTypes.string.isRequired,\r\n campaignId: PropTypes.number.isRequired,\r\n campaignName: PropTypes.string.isRequired,\r\n status: PropTypes.string.isRequired,\r\n campaignType: PropTypes.oneOf(values(CampaignType)).isRequired,\r\n bid: PropTypes.number.isRequired,\r\n bidStrategy: PropTypes.string.isRequired,\r\n locations: PropTypes.array,\r\n audiences: PropTypes.array,\r\n devices: PropTypes.array,\r\n }).isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n summaryBarActivityLogger: PropTypes.shape({\r\n changeScopeActivity: PropTypes.any,\r\n }).isRequired,\r\n permissions: PropTypes.shape({}).isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { values, result } from 'underscore';\r\nimport { CampaignType } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { SummaryBarFactory } from './components';\r\nimport { adGroupEntityItems, showErrorWithAlertCenter } from './helpers';\r\nimport { convertToSummaryBarStatusPatch } from './helpers/entity-converter';\r\n\r\nexport const AdGroupSummaryBar = ({\r\n adGroup,\r\n i18n,\r\n updateAdGroup,\r\n canEdit,\r\n scope,\r\n siteMap,\r\n summaryBarActivityLogger,\r\n permissions,\r\n excludedLocationOnly,\r\n}) => {\r\n const changeStatus = selectedStatus => updateAdGroup({\r\n adGroup,\r\n patch: { status: selectedStatus.id },\r\n converter: convertToSummaryBarStatusPatch,\r\n }).catch((response) => {\r\n showErrorWithAlertCenter(response, i18n);\r\n });\r\n\r\n const updateBid = patch => updateAdGroup({\r\n adGroup,\r\n patch,\r\n });\r\n\r\n const adGroupSummaryBarItems = adGroupEntityItems({\r\n changeStatus, scope, siteMap, i18n, ...adGroup, canEdit, updateBid, permissions, summaryBarActivityLogger, excludedLocationOnly,\r\n });\r\n\r\n const {\r\n id,\r\n name,\r\n campaignType,\r\n campaignId,\r\n campaignName,\r\n } = adGroup;\r\n\r\n const isAppBarBreadcrumbEnabled = result(permissions.dynamic, 'AppBarBreadcrumb', false);\r\n const summaryBarProps = {\r\n breadcrumbsProps: {\r\n campaignName,\r\n campaignId,\r\n campaignType,\r\n adGroupId: id,\r\n adGroupName: name,\r\n },\r\n summaryBarItems: adGroupSummaryBarItems,\r\n i18n,\r\n summaryBarActivityLogger,\r\n scope,\r\n siteMap,\r\n };\r\n\r\n return ();\r\n};\r\n\r\nAdGroupSummaryBar.propTypes = {\r\n adGroup: PropTypes.shape({\r\n id: PropTypes.number.isRequired,\r\n name: PropTypes.string.isRequired,\r\n campaignId: PropTypes.number.isRequired,\r\n campaignName: PropTypes.string.isRequired,\r\n status: PropTypes.string.isRequired,\r\n campaignType: PropTypes.oneOf(values(CampaignType)).isRequired, // campaignType is for breadscrumb\r\n currentCampaignType: PropTypes.oneOf(values(CampaignType)).isRequired,\r\n campaignSubType: PropTypes.string,\r\n displayBiddingStrategyType: PropTypes.string.isRequired,\r\n bid: PropTypes.number.isRequired,\r\n bidStrategy: PropTypes.string.isRequired,\r\n locations: PropTypes.array,\r\n audiences: PropTypes.array,\r\n devices: PropTypes.array,\r\n }).isRequired,\r\n excludedLocationOnly: PropTypes.bool.isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n updateAdGroup: PropTypes.func.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n canEdit: PropTypes.bool.isRequired,\r\n summaryBarActivityLogger: PropTypes.shape({\r\n changeScopeActivity: PropTypes.any,\r\n }).isRequired,\r\n permissions: PropTypes.shape({}).isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { values, result } from 'underscore';\r\nimport { CampaignType } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { sharedComponentFunctionStateStore } from '@bingads-webui-campaign/recommendation-core';\r\nimport campaignCacheManager from '@bingads-webui-campaign-legacy/cache-manager/index';\r\nimport { SummaryBarFactory } from './components';\r\nimport { campaignEntityItems, showErrorWithAlertCenter } from './helpers';\r\nimport { convertToSummaryBarStatusPatch } from './helpers/entity-converter';\r\n\r\nexport const CampaignSummaryBar = ({\r\n campaign,\r\n osData,\r\n i18n,\r\n updateCampaign,\r\n canEdit,\r\n scope,\r\n siteMap,\r\n permissions,\r\n skipInvalidateCache,\r\n summaryBarActivityLogger,\r\n excludedLocationOnly,\r\n}) => {\r\n const changeStatus = selectedStatus => updateCampaign({\r\n campaign,\r\n patch: ({ status: selectedStatus.id }),\r\n converter: convertToSummaryBarStatusPatch,\r\n }).catch((response) => {\r\n showErrorWithAlertCenter(response, i18n);\r\n });\r\n const updateInlineBudget = patch => updateCampaign({\r\n campaign,\r\n patch,\r\n converter: item => ({ Budget: item.budget }),\r\n });\r\n const updateSharedBudget = patch => updateCampaign({\r\n campaign,\r\n patch,\r\n updateLevel: 'Budget',\r\n budgetId: campaign.budget.Id,\r\n }).then(() => {\r\n // update shared budget can't be detected by campaign odata cache manager\r\n // need to do it manually\r\n // skipInvalidateCache is for the test\r\n if (!skipInvalidateCache) {\r\n campaignCacheManager.invalidate('Campaign');\r\n }\r\n });\r\n\r\n const campaignSummaryBarItems = campaignEntityItems({\r\n changeStatus, scope, siteMap, permissions, i18n, ...campaign, osData, canEdit, updateInlineBudget, updateSharedBudget, summaryBarActivityLogger, excludedLocationOnly,\r\n });\r\n\r\n sharedComponentFunctionStateStore.setState({ updateCampaignStatus: changeStatus });\r\n\r\n const { id, name, campaignType } = campaign;\r\n\r\n const summaryBarProps = {\r\n breadcrumbsProps: { campaignName: name, campaignId: id, campaignType },\r\n summaryBarItems: campaignSummaryBarItems,\r\n i18n,\r\n summaryBarActivityLogger,\r\n scope,\r\n siteMap,\r\n };\r\n\r\n const isAppBarBreadcrumbEnabled = result(permissions.dynamic, 'AppBarBreadcrumb', false);\r\n return ();\r\n};\r\n\r\nCampaignSummaryBar.propTypes = {\r\n campaign: PropTypes.shape({\r\n id: PropTypes.number.isRequired,\r\n name: PropTypes.string.isRequired,\r\n status: PropTypes.string.isRequired,\r\n campaignType: PropTypes.oneOf(values(CampaignType)).isRequired,\r\n currentCampaignType: PropTypes.oneOf(values(CampaignType)).isRequired,\r\n campaignSubType: PropTypes.string,\r\n budget: PropTypes.shape({}).isRequired,\r\n bidStrategy: PropTypes.string.isRequired,\r\n locations: PropTypes.array,\r\n audiences: PropTypes.array,\r\n devices: PropTypes.array,\r\n hasBudgetLandscape: PropTypes.bool,\r\n }).isRequired,\r\n osData: PropTypes.shape({\r\n OverallOptimizationScoreBar: PropTypes.exact({\r\n Available: PropTypes.number,\r\n Dismissed: PropTypes.number,\r\n Gained: PropTypes.number,\r\n }),\r\n }).isRequired,\r\n excludedLocationOnly: PropTypes.bool.isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n permissions: PropTypes.shape({}).isRequired,\r\n updateCampaign: PropTypes.func.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n canEdit: PropTypes.bool.isRequired,\r\n summaryBarActivityLogger: PropTypes.shape({\r\n changeScopeActivity: PropTypes.any,\r\n }).isRequired,\r\n skipInvalidateCache: PropTypes.bool.isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { values, result } from 'underscore';\r\nimport { CampaignType } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { SummaryBarFactory } from './components';\r\nimport { experimentAdGroupEntityItems, showErrorWithAlertCenter } from './helpers';\r\nimport { convertToSummaryBarStatusPatch } from './helpers/entity-converter';\r\n\r\nexport const ExperimentAdGroupSummaryBar = ({\r\n adGroup,\r\n i18n,\r\n scope,\r\n siteMap,\r\n updateAdGroup,\r\n canEdit,\r\n summaryBarActivityLogger,\r\n permissions,\r\n excludedLocationOnly,\r\n}) => {\r\n const changeStatus = selectedStatus => updateAdGroup({\r\n adGroup,\r\n patch: { status: selectedStatus.id },\r\n converter: convertToSummaryBarStatusPatch,\r\n }).catch((response) => {\r\n showErrorWithAlertCenter(response, i18n);\r\n });\r\n\r\n const updateBid = patch => updateAdGroup({\r\n adGroup,\r\n patch,\r\n });\r\n\r\n const adGroupSummaryBarItems = experimentAdGroupEntityItems({\r\n changeStatus, scope, siteMap, i18n, ...adGroup, canEdit, updateBid, permissions, summaryBarActivityLogger, excludedLocationOnly,\r\n });\r\n\r\n const {\r\n id,\r\n name,\r\n campaignType,\r\n campaignId,\r\n campaignName,\r\n } = adGroup;\r\n\r\n const summaryBarProps = {\r\n breadcrumbsProps: {\r\n campaignName,\r\n campaignId,\r\n campaignType,\r\n adGroupId: id,\r\n adGroupName: name,\r\n },\r\n summaryBarItems: adGroupSummaryBarItems,\r\n i18n,\r\n summaryBarActivityLogger,\r\n scope,\r\n siteMap,\r\n };\r\n\r\n const isAppBarBreadcrumbEnabled = result(permissions.dynamic, 'AppBarBreadcrumb', false);\r\n return ();\r\n};\r\n\r\nExperimentAdGroupSummaryBar.propTypes = {\r\n adGroup: PropTypes.shape({\r\n id: PropTypes.number.isRequired,\r\n name: PropTypes.string.isRequired,\r\n campaignId: PropTypes.number.isRequired,\r\n campaignName: PropTypes.string.isRequired,\r\n status: PropTypes.string.isRequired,\r\n campaignType: PropTypes.oneOf(values(CampaignType)).isRequired, // campaignType is for breadscrumb\r\n currentCampaignType: PropTypes.oneOf(values(CampaignType)).isRequired,\r\n campaignSubType: PropTypes.string,\r\n bid: PropTypes.number.isRequired,\r\n displayBiddingStrategyType: PropTypes.string.isRequired,\r\n bidStrategy: PropTypes.string.isRequired,\r\n locations: PropTypes.array,\r\n audiences: PropTypes.array,\r\n devices: PropTypes.array,\r\n }).isRequired,\r\n excludedLocationOnly: PropTypes.bool.isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n updateAdGroup: PropTypes.func.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n canEdit: PropTypes.bool.isRequired,\r\n summaryBarActivityLogger: PropTypes.shape({\r\n changeScopeActivity: PropTypes.any,\r\n }).isRequired,\r\n permissions: PropTypes.shape({}).isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { values, result } from 'underscore';\r\nimport { QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { CampaignType } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { SummaryBarFactory } from './components';\r\nimport { experimentCampaignEntityItems } from './helpers';\r\n\r\nexport const ExperimentCampaignSummaryBar = ({\r\n campaign,\r\n i18n,\r\n scope,\r\n siteMap,\r\n permissions,\r\n canEdit,\r\n summaryBarActivityLogger,\r\n updateExperimentCampaign,\r\n excludedLocationOnly,\r\n}) => {\r\n const changeStartDate = patch => updateExperimentCampaign({\r\n campaign,\r\n patch,\r\n converter: item => ({ StartDate: item.startDate }),\r\n });\r\n\r\n const changeEndDate = patch => updateExperimentCampaign({\r\n campaign,\r\n patch,\r\n converter: item => ({ EndDate: item.endDate }),\r\n });\r\n\r\n const campaignSummaryBarItems = experimentCampaignEntityItems({\r\n i18n, scope, permissions, siteMap, ...campaign, canEdit, summaryBarActivityLogger, changeStartDate, changeEndDate, excludedLocationOnly,\r\n });\r\n\r\n const { id, name, campaignType } = campaign;\r\n\r\n const summaryBarProps = {\r\n breadcrumbsProps: { campaignName: name, campaignId: id, campaignType },\r\n summaryBarItems: campaignSummaryBarItems,\r\n i18n,\r\n summaryBarActivityLogger,\r\n scope,\r\n siteMap,\r\n };\r\n\r\n const isAppBarBreadcrumbEnabled = result(permissions.dynamic, 'AppBarBreadcrumb', false);\r\n return ();\r\n};\r\n\r\nExperimentCampaignSummaryBar.propTypes = {\r\n campaign: PropTypes.shape({\r\n id: PropTypes.number.isRequired,\r\n name: PropTypes.string.isRequired,\r\n status: PropTypes.string.isRequired,\r\n startDate: PropTypes.string.isRequired,\r\n endDate: PropTypes.string.isRequired,\r\n originalCampaignName: PropTypes.string.isRequired,\r\n originalCampaignId: PropTypes.number.isRequired,\r\n campaignType: PropTypes.oneOf(values(CampaignType)).isRequired,\r\n currentCampaignType: PropTypes.oneOf(values(CampaignType)).isRequired,\r\n campaignSubType: PropTypes.string,\r\n budget: PropTypes.shape({}).isRequired,\r\n experimentId: PropTypes.number,\r\n bidStrategy: PropTypes.string.isRequired,\r\n locations: PropTypes.array,\r\n audiences: PropTypes.array,\r\n devices: PropTypes.array,\r\n }).isRequired,\r\n excludedLocationOnly: PropTypes.bool.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n permissions: PropTypes.shape({}).isRequired,\r\n canEdit: PropTypes.bool.isRequired,\r\n summaryBarActivityLogger: PropTypes.shape({\r\n changeScopeActivity: PropTypes.any,\r\n }).isRequired,\r\n updateExperimentCampaign: PropTypes.func.isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { defaults, has, values, chain } from 'underscore';\r\nimport { CampaignType } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { AdSummaryBar } from './ad-summary-bar';\r\nimport { AdGroupSummaryBar } from './ad-group-summary-bar';\r\nimport { CampaignSummaryBar } from './campaign-summary-bar';\r\nimport { ExperimentAdGroupSummaryBar } from './experiment-ad-group-summary-bar';\r\nimport { ExperimentCampaignSummaryBar } from './experiment-campaign-summary-bar';\r\nimport { SummaryBarFactory } from './components';\r\nimport { getSummaryBarStyle } from './styles';\r\n\r\nexport class SummaryBarInternal extends React.PureComponent {\r\n componentDidMount() {\r\n if (this.props.perfMarker) {\r\n this.props.perfMarker.done();\r\n }\r\n }\r\n\r\n render() {\r\n const {\r\n adGroup,\r\n updateAdGroup,\r\n campaign,\r\n osData,\r\n updateCampaign,\r\n campaignType,\r\n summaryBarActivityLogger,\r\n scope,\r\n siteMap,\r\n permissions,\r\n canEdit,\r\n skipInvalidateCache,\r\n updateExperimentCampaign,\r\n } = this.props;\r\n\r\n const summaryBarSharedProps = {\r\n summaryBarActivityLogger,\r\n scope,\r\n siteMap,\r\n permissions,\r\n canEdit,\r\n skipInvalidateCache,\r\n excludedLocationOnly: chain(campaign).result('bidStrategy').value() === 'Commission',\r\n };\r\n let currentSummaryBar = i18n => (\r\n \r\n );\r\n\r\n if (adGroup) {\r\n if (has(scope.values, 'adId')) {\r\n currentSummaryBar = i18n => (\r\n \r\n );\r\n } else {\r\n currentSummaryBar = i18n => (adGroup.isExperiment ?\r\n () :\r\n ());\r\n }\r\n } else if (campaign) {\r\n currentSummaryBar = i18n => (campaign.isExperiment ?\r\n () :\r\n ());\r\n }\r\n\r\n return (\r\n \r\n {i18n => currentSummaryBar(i18n)}\r\n \r\n );\r\n }\r\n}\r\n\r\nSummaryBarInternal.propTypes = {\r\n adGroup: PropTypes.shape({\r\n isExperiment: PropTypes.bool,\r\n id: PropTypes.number.isRequired,\r\n name: PropTypes.string.isRequired,\r\n campaignId: PropTypes.number.isRequired,\r\n campaignName: PropTypes.string.isRequired,\r\n currentCampaignType: PropTypes.oneOf(values(CampaignType)).isRequired,\r\n campaignSubType: PropTypes.string,\r\n status: PropTypes.string,\r\n bid: PropTypes.number.isRequired,\r\n bidStrategy: PropTypes.string.isRequired,\r\n locations: PropTypes.array,\r\n audiences: PropTypes.array,\r\n devices: PropTypes.array,\r\n }),\r\n updateAdGroup: PropTypes.func,\r\n campaign: PropTypes.shape({\r\n isExperiment: PropTypes.bool,\r\n id: PropTypes.number.isRequired,\r\n name: PropTypes.string.isRequired,\r\n status: PropTypes.string,\r\n currentCampaignType: PropTypes.oneOf(values(CampaignType)).isRequired,\r\n campaignSubType: PropTypes.string,\r\n startDate: PropTypes.string,\r\n endDate: PropTypes.string,\r\n originalCampaignName: PropTypes.string,\r\n originalCampaignId: PropTypes.number,\r\n budget: PropTypes.shape({}).isRequired,\r\n bidStrategy: PropTypes.string.isRequired,\r\n locations: PropTypes.array,\r\n audiences: PropTypes.array,\r\n devices: PropTypes.array,\r\n experimentId: PropTypes.number,\r\n hasBudgetLandscape: PropTypes.bool,\r\n }),\r\n osData: PropTypes.shape({\r\n OverallOptimizationScoreBar: PropTypes.exact({\r\n Available: PropTypes.number,\r\n Dismissed: PropTypes.number,\r\n Gained: PropTypes.number,\r\n }),\r\n }),\r\n updateCampaign: PropTypes.func,\r\n updateExperimentCampaign: PropTypes.func,\r\n campaignType: PropTypes.oneOf(values(CampaignType)).isRequired,\r\n canEdit: PropTypes.bool,\r\n perfMarker: PropTypes.shape({\r\n done: PropTypes.func.isRequired,\r\n }),\r\n summaryBarActivityLogger: PropTypes.shape({\r\n changeScopeActivity: PropTypes.any,\r\n }).isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n permissions: PropTypes.shape({}).isRequired,\r\n skipInvalidateCache: PropTypes.bool,\r\n};\r\n\r\nSummaryBarInternal.defaultProps = {\r\n adGroup: null,\r\n updateAdGroup: null,\r\n campaign: null,\r\n osData: null,\r\n updateCampaign: null,\r\n updateExperimentCampaign: null,\r\n canEdit: false,\r\n perfMarker: null,\r\n skipInvalidateCache: false,\r\n};\r\n\r\nexport const SummaryBar = withDefaultStyles(\r\n SummaryBarInternal,\r\n getSummaryBarStyle\r\n);\r\n","/* istanbul ignore file */ // ignore this file for component test as we cover it in selenium test\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'lodash';\r\nimport { compose, defaults, omit } from 'underscore';\r\nimport { withInstrumentation } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { withScope, QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { withSiteMap, siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport {\r\n getFilteredCampaignTypeFromRawFilter,\r\n} from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { withGlobalFilter } from '@bingads-webui-campaign-react/global-filter-context';\r\nimport { WaterfallFilterType } from '@bingads-webui-campaign/filter-storage';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { edmCampaign } from '@bingads-webui/edm-campaign';\r\nimport { SummaryBar } from './summary-bar';\r\nimport {\r\n convertToSummaryBarCampaign,\r\n convertToSummaryBarAdGroup,\r\n convertToSummaryBarExperimentCampaign,\r\n} from './helpers/entity-converter';\r\nimport {\r\n WithCampaignRepository,\r\n WithAdGroupRepository,\r\n WithExperimentRepository,\r\n WithBulkUpdateRepository,\r\n WithPatchExperimentRepository,\r\n WithOptimizationScoreRepository,\r\n} from './repository';\r\n\r\nclass UpdatableSummaryBar extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.campaignSummarybarPerfMarker = props.appPerfMarker.createChild('Campaigns_Summary_Bar');\r\n this.markAction('willInit');\r\n\r\n this.summaryBarActivityLogger = props.instrumentation.summaryBarScenario.create();\r\n\r\n this.previousCampaign = null;\r\n this.previousAdGroup = null;\r\n }\r\n\r\n state = {\r\n patchAdGroup: null,\r\n patchCampaign: null,\r\n };\r\n\r\n shouldComponentUpdate(nextProps, nextState) {\r\n const skipUpdateAdGroup = nextState.patchAdGroup !== this.state.patchAdGroup && nextState.patchAdGroup === null;\r\n const skipUpdateCampaign = nextState.patchCampaign !== this.state.patchCampaign && nextState.patchCampaign === null;\r\n\r\n if (skipUpdateAdGroup || skipUpdateCampaign) {\r\n return false;\r\n }\r\n return !(_.isEqual(nextState, this.state) && _.isEqual(nextProps, this.props));\r\n }\r\n\r\n get getFinalProps() {\r\n const campaignType\r\n = getFilteredCampaignTypeFromRawFilter(this.props[WaterfallFilterType.CampaignType]);\r\n const props = {\r\n ...this.props,\r\n updateAdGroup: this.updateAdGroup,\r\n updateCampaign: this.updateCampaign,\r\n updateExperimentCampaign: this.updateExperimentCampaign,\r\n campaignType,\r\n };\r\n\r\n return props;\r\n }\r\n\r\n get getCampaignLoadFallback() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n markAction = (action) => {\r\n if (this.campaignSummarybarPerfMarker && action) {\r\n this.campaignSummarybarPerfMarker[action]();\r\n }\r\n };\r\n\r\n updateAdGroup = ({ adGroup, patch, converter = null }) => WithBulkUpdateRepository({\r\n patch: converter ? converter(patch) : patch,\r\n scope: this.props.scope,\r\n edmCampaign,\r\n updateLevel: 'AdGroup',\r\n }).then(() => {\r\n let newAdGroup = adGroup;\r\n\r\n if (patch.SearchBid || patch.CpmBid || patch.CpvBid) { // only one column will have value in one data row\r\n newAdGroup.bid = patch.SearchBid || patch.CpmBid || patch.CpvBid;\r\n } else {\r\n newAdGroup = defaults({}, patch, adGroup);\r\n }\r\n this.previousAdGroup = newAdGroup;\r\n\r\n // update finished means no error\r\n // show update result in advance for summary bar performance\r\n this.setState({\r\n patchAdGroup: newAdGroup,\r\n });\r\n });\r\n\r\n updateCampaign = ({\r\n campaign, patch, converter, ...others\r\n }) => WithBulkUpdateRepository({\r\n patch: converter ? converter(patch) : patch,\r\n scope: this.props.scope,\r\n edmCampaign,\r\n updateLevel: 'Campaign',\r\n ...others,\r\n }).then(() => {\r\n const { updateLevel: finalUpdateLevel } = others;\r\n const newCampaign = _.merge({}, campaign, finalUpdateLevel === 'Budget' ? { budget: patch } : patch);\r\n this.previousCampaign = newCampaign;\r\n\r\n // update finished means no error\r\n // show update result in advance for summary bar performance\r\n this.setState({\r\n patchCampaign: newCampaign,\r\n });\r\n });\r\n\r\n updateExperimentCampaign = ({\r\n campaign, patch, converter,\r\n }) => WithPatchExperimentRepository({\r\n patch: converter ? converter(patch) : patch,\r\n scope: this.props.scope,\r\n edmCampaign,\r\n experimentId: campaign.experimentId,\r\n });\r\n\r\n consumeOdataResults = RenderSummaryBar => ({\r\n adGroupFromOData,\r\n campaignFromOData,\r\n osData,\r\n }) => {\r\n this.markAction('willRender');\r\n\r\n const campaign = campaignFromOData\r\n ? convertToSummaryBarCampaign(campaignFromOData)\r\n : null;\r\n\r\n const adGroup = adGroupFromOData\r\n ? convertToSummaryBarAdGroup({\r\n ...adGroupFromOData,\r\n Status: adGroupFromOData.EntityStatus,\r\n Campaign: campaignFromOData,\r\n })\r\n : null;\r\n\r\n if (campaignFromOData && campaignFromOData.ExperimentId) {\r\n const experimentId = campaignFromOData.ExperimentId;\r\n const extendedCampaign = { experimentId, ...campaign };\r\n\r\n return ();\r\n }\r\n\r\n return ();\r\n };\r\n\r\n consumeAdGroupRepository = SummaryBarWithAdGroupCriterionResults => passThroughProps => (\r\n (\r\n \r\n )\r\n );\r\n\r\n consumeCampaignRepository = SummaryBarWithCampaignCriterionResults => (\r\n (\r\n \r\n )\r\n );\r\n\r\n consumeOptimizationScoreRepository = SummaryBarWithCampaignAdGroupCriterionResults => passThroughProps => (\r\n (\r\n \r\n )\r\n );\r\n\r\n renderSummaryBar = () => ({\r\n experimentFromOData,\r\n campaign,\r\n adGroup: summaryBarAdGroup,\r\n osData,\r\n }) => {\r\n const props = this.getFinalProps;\r\n const summaryBarCampaign = experimentFromOData ?\r\n convertToSummaryBarExperimentCampaign(experimentFromOData, campaign)\r\n : campaign;\r\n const omitCampaignType = item => omit(item, 'campaignType');\r\n const willUpdate = (item, comparableItem) => item && !_.isEqual(omitCampaignType(comparableItem), omitCampaignType(item));\r\n const didUpdate = (item, comparableItem) => item && _.isEqual(omitCampaignType(comparableItem), omitCampaignType(item));\r\n\r\n const { patchAdGroup, patchCampaign } = this.state;\r\n const willAdGroupUpdated = willUpdate(patchAdGroup, summaryBarAdGroup);\r\n const willCampaignUpdated = willUpdate(patchCampaign, summaryBarCampaign);\r\n const didAdGroupUpdated = didUpdate(patchAdGroup, summaryBarAdGroup);\r\n const didCampaignUpdated = didUpdate(patchCampaign, summaryBarCampaign);\r\n\r\n // reset patchAdGroup\r\n if (didAdGroupUpdated && patchAdGroup) {\r\n this.setState({\r\n patchAdGroup: null,\r\n });\r\n }\r\n\r\n if (didCampaignUpdated && patchCampaign) {\r\n this.setState({\r\n patchCampaign: null,\r\n });\r\n }\r\n\r\n const finalCampaign = willCampaignUpdated ? patchCampaign : summaryBarCampaign;\r\n const finalAdGroup = willAdGroupUpdated ? patchAdGroup : summaryBarAdGroup;\r\n\r\n this.previousCampaign = finalCampaign;\r\n this.previousAdGroup = finalAdGroup;\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n render() {\r\n this.markAction('willFetchData');\r\n\r\n const { permissions } = this.props;\r\n const isOptimizationScoreOn = permissions.dynamic.OptimizationScore;\r\n\r\n const renderSummaryBarWithData = isOptimizationScoreOn ? compose(\r\n this.consumeCampaignRepository,\r\n this.consumeAdGroupRepository,\r\n this.consumeOptimizationScoreRepository,\r\n this.consumeOdataResults,\r\n this.renderSummaryBar\r\n ) : compose(\r\n this.consumeCampaignRepository,\r\n this.consumeAdGroupRepository,\r\n this.consumeOdataResults,\r\n this.renderSummaryBar\r\n );\r\n\r\n return renderSummaryBarWithData();\r\n }\r\n}\r\n\r\nUpdatableSummaryBar.propTypes = {\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n permissions: PropTypes.shape({}).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n appPerfMarker: PropTypes.shape({\r\n createChild: PropTypes.func.isRequired,\r\n }),\r\n instrumentation: PropTypes.shape({\r\n summaryBarScenario: PropTypes.any,\r\n }).isRequired,\r\n};\r\n\r\nUpdatableSummaryBar.defaultProps = {\r\n appPerfMarker: null,\r\n};\r\n\r\nexport const SummaryBarWithScope\r\n = withInstrumentation(withSiteMap(withGlobalFilter(withScope(withI18nConsumer(UpdatableSummaryBar)))));\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { findSiteMap } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { Breadcrumb } from '@bingads-webui-react/breadcrumb';\r\nimport { StyledMenuItemTag } from '@bingads-webui-react/menu-item-tag';\r\n\r\nconst isLeafNode = item => item && item.children.length === 0 && item.selected === true;\r\nexport class SimpleBreadcrumb extends React.PureComponent {\r\n render() {\r\n const {\r\n maxDisplayedItems,\r\n selectedItem,\r\n breadCrumbText,\r\n i18n,\r\n breadcrumbUrl,\r\n additionalPrefixItems, // shown before the main breadcrumb item\r\n additionalItems,\r\n onClick,\r\n showTag,\r\n tagClass,\r\n } = this.props;\r\n\r\n let selectedChild;\r\n if (selectedItem) {\r\n selectedChild = findSiteMap([selectedItem], isLeafNode);\r\n }\r\n const standardItems = (breadCrumbText !== null || selectedChild != null) ? [\r\n {\r\n key: breadCrumbText !== null ? breadCrumbText : selectedChild.id,\r\n text: breadCrumbText !== null ? breadCrumbText : i18n.getString(selectedChild.name),\r\n isCurrentItem: true,\r\n url: breadcrumbUrl,\r\n onClick,\r\n },\r\n ] : [];\r\n\r\n const items = (additionalPrefixItems || []).concat(standardItems).concat(additionalItems || []);\r\n\r\n return (\r\n
\r\n \r\n {\r\n showTag && (\r\n \r\n \r\n \r\n )\r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nSimpleBreadcrumb.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n maxDisplayedItems: PropTypes.number.isRequired,\r\n selectedItem: PropTypes.shape({\r\n id: PropTypes.string.isRequired,\r\n name: PropTypes.string.isRequired,\r\n url: PropTypes.string,\r\n }),\r\n breadCrumbText: PropTypes.string,\r\n breadcrumbUrl: PropTypes.string,\r\n additionalItems: PropTypes.arrayOf(PropTypes.shape({\r\n key: PropTypes.string,\r\n text: PropTypes.string,\r\n })),\r\n additionalPrefixItems: PropTypes.arrayOf(PropTypes.shape({\r\n key: PropTypes.string,\r\n text: PropTypes.string,\r\n })),\r\n onClick: PropTypes.func,\r\n showTag: PropTypes.string,\r\n tagClass: PropTypes.string,\r\n};\r\n\r\nSimpleBreadcrumb.defaultProps = {\r\n breadCrumbText: null,\r\n selectedItem: null,\r\n breadcrumbUrl: null,\r\n additionalItems: [],\r\n additionalPrefixItems: [],\r\n onClick: null,\r\n showTag: '',\r\n tagClass: '',\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { SummaryBarContainer } from '@bingads-webui-react/summary-bar';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { isNavigationRefreshOn } from '@bingads-webui-react/preference-utility';\r\nimport { SimpleBreadcrumb } from './components/simple-breadcrumb';\r\n\r\nclass AccountsSummaryBarInternal extends React.PureComponent {\r\n render() {\r\n const {\r\n i18n,\r\n selectedParent,\r\n breadCrumbText,\r\n permissions,\r\n } = this.props;\r\n\r\n return (\r\n }\r\n showScopeBackButton={isNavigationRefreshOn(permissions)}\r\n i18n={i18n}\r\n />\r\n );\r\n }\r\n}\r\n\r\nAccountsSummaryBarInternal.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n selectedParent: PropTypes.shape({\r\n id: PropTypes.string,\r\n name: PropTypes.string,\r\n url: PropTypes.string,\r\n }),\r\n breadCrumbText: PropTypes.string,\r\n permissions: PropTypes.shape({\r\n dynamic: PropTypes.shape({\r\n NavigationRefresh: PropTypes.bool,\r\n }),\r\n }).isRequired,\r\n};\r\n\r\nAccountsSummaryBarInternal.defaultProps = {\r\n breadCrumbText: null,\r\n selectedParent: null,\r\n};\r\n\r\nexport const AccountsSummaryBar = withPermissions(withI18nConsumer(AccountsSummaryBarInternal));\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { isEmpty, isFunction, each } from 'underscore';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { SummaryBarContainer } from '@bingads-webui-react/summary-bar';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { isNavigationRefreshOn } from '@bingads-webui-react/preference-utility';\r\nimport { SimpleBreadcrumb } from './components/simple-breadcrumb';\r\nimport { getSimpleSummaryBarStyle } from './styles';\r\n\r\nconst isHideBreadCrumbBack = (backButtonText, i18n) => backButtonText !== i18n.getString(_TL_('Back to campaigns'))\r\n&& backButtonText !== i18n.getString(_TL_('Back to accounts'));\r\n\r\nclass SimpleSummaryBarInternal extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.customSummaryBarItemsRef = React.createRef();\r\n }\r\n\r\n componentDidUpdate() {\r\n if (this.customSummaryBarItemsRef && this.customSummaryBarItemsRef.current) {\r\n this.customSummaryBarItemsRef.current.innerText = '';\r\n }\r\n }\r\n\r\n render() {\r\n const {\r\n i18n,\r\n selectedParent,\r\n breadCrumbText,\r\n backButtonText,\r\n backButtonUrl,\r\n onClickBackButton,\r\n customSummaryBarItemsId,\r\n isVisible,\r\n additionalPrefixItems,\r\n additionalItems,\r\n onClick,\r\n showTag,\r\n tagClass,\r\n permissions,\r\n } = this.props;\r\n const buttonText = backButtonText === null ? i18n.getString(_TL_('Back')) : backButtonText;\r\n const backButtonProps = isHideBreadCrumbBack(backButtonText, i18n) ? Object.assign({\r\n url: backButtonUrl,\r\n buttonText,\r\n }, onClickBackButton ? {\r\n onClick: onClickBackButton,\r\n } : {}) : null;\r\n each(additionalItems, (additionalItem, index) => {\r\n if (!isFunction(additionalItem.onClick)) {\r\n additionalItems[index].onClick = null;\r\n }\r\n });\r\n const breadcrumb = (!isEmpty(breadCrumbText) || selectedParent) ? (\r\n \r\n ) : null;\r\n const summaryBar = customSummaryBarItemsId ? (\r\n
\r\n ) : null;\r\n\r\n return isVisible ? (\r\n \r\n ) : null;\r\n }\r\n}\r\n\r\nSimpleSummaryBarInternal.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n selectedParent: PropTypes.shape({\r\n id: PropTypes.string,\r\n name: PropTypes.string,\r\n url: PropTypes.string,\r\n }),\r\n breadCrumbText: PropTypes.string,\r\n backButtonText: PropTypes.string,\r\n backButtonUrl: PropTypes.string,\r\n onClickBackButton: PropTypes.func,\r\n breadcrumbUrl: PropTypes.string,\r\n additionalPrefixItems: PropTypes.arrayOf(PropTypes.shape({\r\n key: PropTypes.string,\r\n text: PropTypes.string,\r\n })),\r\n additionalItems: PropTypes.arrayOf(PropTypes.shape({\r\n key: PropTypes.string,\r\n text: PropTypes.string,\r\n })),\r\n customSummaryBarItemsId: PropTypes.string,\r\n isVisible: PropTypes.bool,\r\n onClick: PropTypes.func,\r\n showTag: PropTypes.string,\r\n tagClass: PropTypes.string,\r\n permissions: PropTypes.shape({\r\n dynamic: PropTypes.shape({\r\n NavigationRefresh: PropTypes.bool,\r\n }),\r\n }).isRequired,\r\n};\r\n\r\nSimpleSummaryBarInternal.defaultProps = {\r\n breadCrumbText: null,\r\n backButtonText: null,\r\n backButtonUrl: null,\r\n onClickBackButton: null,\r\n selectedParent: null,\r\n breadcrumbUrl: null,\r\n additionalPrefixItems: [],\r\n additionalItems: [],\r\n customSummaryBarItemsId: null,\r\n isVisible: true,\r\n onClick: null,\r\n showTag: '',\r\n tagClass: '',\r\n};\r\n\r\nexport const SimpleSummaryBar = withPermissions(withI18nConsumer(withDefaultStyles(\r\n SimpleSummaryBarInternal,\r\n getSimpleSummaryBarStyle\r\n)));\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { values, compose } from 'underscore';\r\nimport { withInstrumentation } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { CampaignType } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { withSiteMap, siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { SummaryBarContainer } from '@bingads-webui-react/summary-bar';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { edmCampaign } from '@bingads-webui/edm-campaign';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { isNavigationRefreshOn } from '@bingads-webui-react/preference-utility';\r\nimport { SharedBudgetConsumer } from './helpers/shared-budget-consumer';\r\nimport { sharedBudgetItems } from './helpers';\r\nimport { SummaryBarItemsResizeGroup } from './components/summary-bar-items-resize-group';\r\nimport { getSummaryBarStyle } from './styles';\r\nimport { WithBulkUpdateRepository, WithSharedBudgetRepository } from './repository';\r\n\r\nconst SharedBudgetSummaryBarInternal = ({\r\n i18n,\r\n scope,\r\n siteMap,\r\n canEdit,\r\n instrumentation,\r\n permissions,\r\n}) => {\r\n const consumeSharedBudgetRepository = SummaryBarWithBudgetCriterionResults => (\r\n (\r\n \r\n )\r\n );\r\n\r\n // eslint-disable-next-line react/prop-types\r\n const renderSharedBudgetSummaryBar = () => ({ sharedBudgetFromOData: budget }) => {\r\n const updateSharedBudget = patch => WithBulkUpdateRepository({\r\n patch,\r\n scope,\r\n edmCampaign,\r\n updateLevel: 'Budget',\r\n });\r\n\r\n const summaryBarActivityLogger = instrumentation.summaryBarScenario.create();\r\n\r\n const sharedBudgetBarItems = sharedBudgetItems({\r\n scope, i18n, canEdit, updateSharedBudget, summaryBarActivityLogger, budget,\r\n });\r\n\r\n const repositoryConsumer = new SharedBudgetConsumer({ scope, i18n, budget });\r\n const { renderSharedBudgetBreadCrumb } = repositoryConsumer.criteriaRenderer;\r\n const { uid, cid, aid } = scope.values;\r\n\r\n const backButtonProps = {\r\n url: `/campaign/vnext/sharedbudgets?uid=${uid}&cid=${cid}&aid=${aid}`,\r\n buttonText: i18n.getString(_TL_('Back to shared budgets')),\r\n };\r\n\r\n return (\r\n }\r\n showScopeBackButton={isNavigationRefreshOn(permissions)}\r\n i18n={i18n}\r\n />\r\n );\r\n };\r\n\r\n return compose(consumeSharedBudgetRepository, renderSharedBudgetSummaryBar)();\r\n};\r\n\r\nSharedBudgetSummaryBarInternal.propTypes = {\r\n campaign: PropTypes.shape({\r\n id: PropTypes.number.isRequired,\r\n name: PropTypes.string.isRequired,\r\n status: PropTypes.string.isRequired,\r\n campaignType: PropTypes.oneOf(values(CampaignType)).isRequired,\r\n budget: PropTypes.number.isRequired,\r\n bidStrategy: PropTypes.string.isRequired,\r\n locations: PropTypes.array,\r\n audiences: PropTypes.array,\r\n devices: PropTypes.array,\r\n }).isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n canEdit: PropTypes.bool,\r\n instrumentation: PropTypes.shape({\r\n summaryBarScenario: PropTypes.any,\r\n }).isRequired,\r\n permissions: PropTypes.shape({\r\n dynamic: PropTypes.shape({\r\n NavigationRefresh: PropTypes.bool,\r\n }),\r\n }).isRequired,\r\n};\r\n\r\nSharedBudgetSummaryBarInternal.defaultProps = {\r\n canEdit: false,\r\n};\r\n\r\nexport const SharedBudgetSummaryBar = withPermissions(withInstrumentation(withSiteMap(withDefaultStyles(\r\n SharedBudgetSummaryBarInternal,\r\n getSummaryBarStyle\r\n))));\r\n","import { findSelectedNode, trimScope, Scope } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { getRouterDep } from '@bingads-webui-campaign-react/legacy-router-dep';\r\nimport { i18nMap, safeGetString } from '@bingads-webui-campaign-react/merchant-shared';\r\n\r\nconst storeNameBreadcrumbItem = (scope, storeName) => {\r\n const { storeId } = scope.values;\r\n return {\r\n key: storeName,\r\n text: storeName,\r\n onClick: () => {\r\n getRouterDep(scope).navigateToRoute('merchant_product_issues', { storeId });\r\n },\r\n 'aria-label': storeName,\r\n };\r\n};\r\n\r\nconst allStoresBreadcrumbItemWithoughtClick = (i18n) => {\r\n const allStoresText = i18n.getString(_TL_('Merchant Center'));\r\n\r\n return {\r\n key: 'stores',\r\n text: allStoresText,\r\n 'aria-label': allStoresText,\r\n };\r\n};\r\n\r\nconst allStoresBreadcrumbItem = (scope, i18n) => {\r\n const allStoresText = i18n.getString(_TL_('Merchant Center'));\r\n\r\n return {\r\n key: 'stores',\r\n text: allStoresText,\r\n onClick: () => {\r\n scope.remove('storeId');\r\n getRouterDep(scope).navigateToRoute('merchant_stores');\r\n },\r\n 'aria-label': allStoresText,\r\n };\r\n};\r\n\r\nconst summaryBreadcrumbItem = (scope, i18n) => {\r\n const { storeId } = scope.values;\r\n const summaryText = i18n.getString(_TL_('Summary'));\r\n\r\n return {\r\n key: 'summary',\r\n text: summaryText,\r\n onClick: () => {\r\n getRouterDep(scope).navigateToRoute('merchant_product_issues', { storeId });\r\n },\r\n 'aria-label': summaryText,\r\n };\r\n};\r\n\r\nconst feedDetailsItems = (props) => {\r\n const {\r\n i18n,\r\n scope,\r\n storeName,\r\n feedName,\r\n } = props;\r\n const { storeId } = scope.values;\r\n const feedsText = i18n.getString(_TL_('Feeds'));\r\n\r\n return [\r\n allStoresBreadcrumbItem(scope, i18n),\r\n storeNameBreadcrumbItem(scope, storeName),\r\n {\r\n key: 'feeds',\r\n text: feedsText,\r\n onClick: () => {\r\n getRouterDep(scope).navigateToRoute('merchant_feeds', { storeId });\r\n },\r\n 'aria-label': feedsText,\r\n }, {\r\n key: 'feedName',\r\n text: feedName,\r\n 'aria-label': feedName,\r\n }];\r\n};\r\n\r\nconst createStoreItems = (props) => {\r\n const {\r\n i18n,\r\n scope,\r\n } = props;\r\n const merchantCenterText = i18n.getString(_TL_('Merchant Center'));\r\n const createStoreText = i18n.getString(_TL_('Create store'));\r\n\r\n return [{\r\n key: 'merchantcenter',\r\n text: merchantCenterText,\r\n onClick: () => {\r\n getRouterDep(scope).navigateToRoute('merchant_stores');\r\n },\r\n 'aria-label': merchantCenterText,\r\n }, {\r\n key: 'mmc-create-store',\r\n text: createStoreText,\r\n 'aria-label': createStoreText,\r\n }];\r\n};\r\n\r\nconst importStepsItems = (props) => {\r\n const {\r\n i18n,\r\n scope: {\r\n values: {\r\n editMode,\r\n },\r\n },\r\n } = props;\r\n const importsText = i18n.getString(_TL_('Imports'));\r\n const createImportText = i18n.getString(_TL_('Create new import'));\r\n const updateImportText = i18n.getString(_TL_('Update import'));\r\n\r\n return editMode !== 'true' ? [{\r\n key: 'imports',\r\n text: importsText,\r\n 'aria-label': importsText,\r\n }, {\r\n key: 'mmc-create-import',\r\n text: createImportText,\r\n isCurrentItem: true,\r\n 'aria-label': createImportText,\r\n }] : [{\r\n key: 'imports',\r\n text: importsText,\r\n 'aria-label': importsText,\r\n }, {\r\n key: 'mmc-update-import',\r\n text: updateImportText,\r\n isCurrentItem: true,\r\n 'aria-label': updateImportText,\r\n }];\r\n};\r\n\r\nconst placeholderStoresItems = (props) => {\r\n const {\r\n i18n,\r\n scope,\r\n } = props;\r\n const merchantCenterText = i18n.getString(_TL_('Merchant Center'));\r\n const placeholderStoresText = i18n.getString(_TL_('Draft stores'));\r\n\r\n return [{\r\n key: 'merchantcenter',\r\n text: merchantCenterText,\r\n onClick: () => {\r\n getRouterDep(scope).navigateToRoute('merchant_stores');\r\n },\r\n 'aria-label': merchantCenterText,\r\n }, {\r\n key: 'mmc-placeholder-stores',\r\n text: placeholderStoresText,\r\n 'aria-label': placeholderStoresText,\r\n }];\r\n};\r\n\r\nconst editorialProductIssuesItems = (props) => {\r\n const {\r\n i18n,\r\n scope,\r\n storeName,\r\n } = props;\r\n const editorialProductIssuesText = i18n.getString(_TL_('Policy violation details'));\r\n\r\n return [\r\n allStoresBreadcrumbItem(scope, i18n),\r\n storeNameBreadcrumbItem(scope, storeName),\r\n summaryBreadcrumbItem(scope, i18n),\r\n {\r\n key: 'editorial-product-issues',\r\n text: editorialProductIssuesText,\r\n 'aria-label': editorialProductIssuesText,\r\n },\r\n ];\r\n};\r\n\r\nconst reviewRejectionsItems = (props) => {\r\n const {\r\n i18n,\r\n scope,\r\n storeName,\r\n } = props;\r\n const { storeId, flagAreaIdCode } = scope.values;\r\n const editorialProductIssuesText = i18n.getString(_TL_('Policy violation details'));\r\n const editorialProductIssueTitleText = safeGetString(i18n, i18nMap.IssueCodes, flagAreaIdCode);\r\n const params = { storeId };\r\n\r\n return [\r\n allStoresBreadcrumbItem(scope, i18n),\r\n storeNameBreadcrumbItem(scope, storeName),\r\n summaryBreadcrumbItem(scope, i18n),\r\n {\r\n key: 'editorial-product-issues',\r\n text: editorialProductIssuesText,\r\n onClick: () => {\r\n getRouterDep(scope).navigateToRoute('merchant_policy_violation_details', params);\r\n },\r\n 'aria-label': editorialProductIssuesText,\r\n },\r\n {\r\n key: 'editorial-product-issue-title',\r\n text: editorialProductIssueTitleText,\r\n 'aria-label': editorialProductIssueTitleText,\r\n },\r\n ];\r\n};\r\n\r\nexport function getMerchantCenterConfig(props) {\r\n const {\r\n i18n,\r\n scope,\r\n storeName,\r\n siteMap,\r\n } = props;\r\n const { storeId } = scope.values;\r\n\r\n const maxDisplayedItems = 5;\r\n\r\n const currentPage = findSelectedNode(siteMap);\r\n const defaultBackButtonProps = {\r\n buttonText: i18n.getString(_TL_('Back')),\r\n onClick: (e) => {\r\n e.preventDefault();\r\n window.history.back();\r\n },\r\n };\r\n const defaultBreadcrumbsGeneralConfigs = {\r\n maxDisplayedItems,\r\n items: [\r\n allStoresBreadcrumbItem(scope, i18n),\r\n {\r\n key: storeName,\r\n text: storeName,\r\n onClick: () => {\r\n getRouterDep(scope).navigateToRoute('merchant_product_issues', { storeId });\r\n },\r\n 'aria-label': storeName,\r\n }, {\r\n key: currentPage.id,\r\n text: i18n.getString(currentPage.name),\r\n 'aria-label': i18n.getString(currentPage.name),\r\n }],\r\n };\r\n\r\n const defaultBreadcrumbsManageConfigs = {\r\n maxDisplayedItems,\r\n items: [\r\n allStoresBreadcrumbItem(scope, i18n)],\r\n };\r\n\r\n switch (currentPage.id) {\r\n case 'mmc-feed-details':\r\n return {\r\n backButtonProps: defaultBackButtonProps,\r\n breadcrumbsGeneralConfigs: {\r\n maxDisplayedItems,\r\n items: feedDetailsItems(props),\r\n },\r\n };\r\n case 'mmc-stores':\r\n return {\r\n backButtonProps: null,\r\n breadcrumbsGeneralConfigs: {\r\n maxDisplayedItems,\r\n items: [allStoresBreadcrumbItemWithoughtClick(i18n)],\r\n },\r\n };\r\n case 'mmc-create-store':\r\n return {\r\n backButtonProps: null,\r\n breadcrumbsGeneralConfigs: {\r\n maxDisplayedItems,\r\n items: createStoreItems(props),\r\n },\r\n };\r\n case 'mmc_placeholder_stores':\r\n return {\r\n backButtonProps: defaultBackButtonProps,\r\n breadcrumbsGeneralConfigs: {\r\n maxDisplayedItems,\r\n items: placeholderStoresItems(props),\r\n },\r\n };\r\n case 'mmc-import-steps':\r\n return {\r\n backButtonProps: {\r\n url: `/campaign/vnext/merchantcenter/import${trimScope([Scope.Store], scope)}`,\r\n buttonText: i18n.getString(_TL_('Back')),\r\n },\r\n breadcrumbsGeneralConfigs: {\r\n maxDisplayedItems,\r\n items: importStepsItems(props),\r\n },\r\n };\r\n case 'mmc-store-summary-productissuedetails':\r\n return {\r\n backButtonProps: defaultBackButtonProps,\r\n breadcrumbsGeneralConfigs: defaultBreadcrumbsGeneralConfigs,\r\n };\r\n case 'mmc-store-summary-policyviolationdetails':\r\n return {\r\n backButtonProps: defaultBackButtonProps,\r\n breadcrumbsGeneralConfigs: {\r\n maxDisplayedItems,\r\n items: editorialProductIssuesItems(props),\r\n },\r\n };\r\n case 'mmc-store-summary-reviewrejections':\r\n return {\r\n backButtonProps: defaultBackButtonProps,\r\n breadcrumbsGeneralConfigs: {\r\n maxDisplayedItems,\r\n items: reviewRejectionsItems(props),\r\n },\r\n };\r\n default:\r\n return {\r\n breadcrumbsGeneralConfigs: storeId ? defaultBreadcrumbsGeneralConfigs : defaultBreadcrumbsManageConfigs,\r\n };\r\n }\r\n}\r\n","import React, { useState, useRef, useEffect, useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { compose } from 'underscore';\r\nimport { withScope, QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { siteMapPropType, findSelectedNode } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { withServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport {\r\n storeQueries as defaultStoreQueries,\r\n feedQueries as defaultFeedQueries,\r\n MmcDataSourceInitializer\r\n} from '@bingads-webui-campaign-react/merchant-shared';\r\nimport { SummaryBarFactory } from './components';\r\nimport { getMerchantCenterConfig } from './helpers/merchant-center-config';\r\n\r\nconst MerchantCenterSummaryBar = (props) => {\r\n const customSummaryBarItemsRef = useRef();\r\n const [storeName, setStoreName] = useState(null);\r\n const [feedName, setFeedName] = useState(null);\r\n\r\n const getStateFromProps = useCallback(() => {\r\n const {\r\n scope,\r\n storeQueries,\r\n feedQueries,\r\n } = props;\r\n const { storeId, feedId } = scope.values;\r\n\r\n if (storeId) {\r\n storeQueries.getStore(storeId, true).then((store) => {\r\n setStoreName(store.Name);\r\n });\r\n }\r\n\r\n if (storeId && feedId) {\r\n feedQueries.getFeedDetails(storeId, feedId).then((feed) => {\r\n setFeedName(feed.Name);\r\n });\r\n }\r\n }, [props]);\r\n\r\n useEffect(() => {\r\n if (customSummaryBarItemsRef && customSummaryBarItemsRef.current) {\r\n customSummaryBarItemsRef.current.innerText = '';\r\n }\r\n getStateFromProps();\r\n }, [getStateFromProps]);\r\n\r\n const {\r\n i18n,\r\n siteMap,\r\n scope,\r\n } = props;\r\n\r\n return findSelectedNode(siteMap) ? (\r\n \r\n \r\n \r\n \r\n ) : ;\r\n};\r\n\r\nMerchantCenterSummaryBar.propTypes = {\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 feedQueries: PropTypes.shape({}),\r\n storeQueries: PropTypes.shape({}),\r\n siteMap: siteMapPropType.isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n};\r\n\r\nMerchantCenterSummaryBar.defaultProps = {\r\n storeQueries: defaultStoreQueries,\r\n feedQueries: defaultFeedQueries,\r\n};\r\n\r\nconst StyledMerchantCenterSummaryBar = compose(\r\n withServerContext,\r\n withI18nConsumer,\r\n withScope\r\n)(MerchantCenterSummaryBar);\r\n\r\nexport { StyledMerchantCenterSummaryBar as MerchantCenterSummaryBar };\r\n","import $ from 'jquery';\r\nimport { result } from 'underscore';\r\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { InsightType, Metrics, formatInsightDetails } from '@bingads-webui-campaign-react/query-insights-common';\r\nimport { SummaryBarMetricsPicker } from '@bingads-webui-campaign-react/query-insights-summary-bar-metrics-picker';\r\nimport { siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nimport { SummaryBarFactory } from './components';\r\nimport { getSummaryBarStyle } from './styles';\r\n\r\nconst QueryInsightsSummaryBarUnstyled = ({\r\n i18n,\r\n scope,\r\n siteMap,\r\n summaryBarActivityLogger,\r\n backButtonUrl,\r\n}) => {\r\n const [summaryDetails, setSummaryDetails] = useState(null);\r\n\r\n const formattedSummary = useMemo(() => formatInsightDetails(i18n, summaryDetails), [i18n, summaryDetails]);\r\n\r\n const summaryBarProps = useMemo(() => ({\r\n i18n,\r\n scope,\r\n siteMap,\r\n summaryBarActivityLogger,\r\n backButtonProps: {\r\n buttonText: i18n.getString(_TL_('Back')),\r\n url: backButtonUrl,\r\n },\r\n breadcrumbsGeneralConfigs: {\r\n maxDisplayedItems: 3,\r\n items: [{\r\n key: 'query-insights',\r\n text: i18n.getString(_TL_('Search insights')),\r\n isLongText: true,\r\n 'aria-label': i18n.getString(_TL_('Search insights')),\r\n onClick: () => {\r\n scope.remove(['trendPeriod', 'country', 'vertical']);\r\n scope.save(scope.location.pathname.replace(/\\/details$/, ''));\r\n },\r\n }, ...formattedSummary ? [{\r\n key: 'query-insights-details',\r\n text: formattedSummary,\r\n isCurrentItem: true,\r\n isLongText: true,\r\n 'aria-label': formattedSummary,\r\n }] : []],\r\n },\r\n summaryBarItems: result(summaryDetails, 'InsightType') === InsightType.AccountOptimization ? [{\r\n className: 'summary-bar-metrics',\r\n canEdit: true,\r\n noOverflow: true,\r\n renderEntityItem: () => (\r\n \r\n ),\r\n }] : [],\r\n }), [backButtonUrl, formattedSummary, i18n, scope, siteMap, summaryBarActivityLogger, summaryDetails]);\r\n\r\n const onDetailsUpdated = useCallback((e, details) => {\r\n setSummaryDetails(details);\r\n }, []);\r\n\r\n useEffect(() => {\r\n $(document).on('qiDetailsUpdated', onDetailsUpdated);\r\n\r\n return () => {\r\n $(document).off('qiDetailsUpdated', onDetailsUpdated);\r\n };\r\n }, [onDetailsUpdated]);\r\n\r\n return ();\r\n};\r\n\r\nQueryInsightsSummaryBarUnstyled.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n summaryBarActivityLogger: PropTypes.shape({\r\n changeScopeActivity: PropTypes.any,\r\n }).isRequired,\r\n backButtonUrl: PropTypes.string.isRequired,\r\n};\r\n\r\nexport const QueryInsightsSummaryBar = withDefaultStyles(QueryInsightsSummaryBarUnstyled, getSummaryBarStyle);\r\n","/* istanbul ignore file */ // ignore this file for component test as we cover it in selenium test\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { compose, findWhere, result, defaults, has } from 'underscore';\r\nimport { withInstrumentation } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { withScope, QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { withSiteMap, siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport {\r\n getFilteredCampaignTypeFromRawFilter,\r\n CampaignType,\r\n} from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { withGlobalFilter } from '@bingads-webui-campaign-react/global-filter-context';\r\nimport { WaterfallFilterType } from '@bingads-webui-campaign/filter-storage';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { EntityBreadcrumb } from '@bingads-webui-react/global-menu';\r\nimport { setClarityTag } from '@bingads-webui-universal/clarity';\r\nimport {\r\n convertToSummaryBarCampaign,\r\n convertToSummaryBarAdGroup,\r\n convertToSummaryBarExperimentCampaign,\r\n} from './helpers/entity-converter';\r\nimport {\r\n campaignTypes,\r\n convertToBreadCrumbItems,\r\n} from './helpers';\r\nimport {\r\n WithCampaignRepository,\r\n WithAdGroupRepository,\r\n WithExperimentRepository,\r\n} from './repository';\r\n\r\nclass GlobalMenuEntityBarInternal extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.campaignSummarybarPerfMarker = props.appPerfMarker.createChild('GlobalMenu_Entity_Bar');\r\n this.markAction('willInit');\r\n this.summaryBarActivityLogger = props.instrumentation.globalMenuEntityBarScenario.create();\r\n }\r\n\r\n componentDidMount() {\r\n this.markAction('done');\r\n }\r\n\r\n get getCampaignType() {\r\n return getFilteredCampaignTypeFromRawFilter(this.props[WaterfallFilterType.CampaignType]);\r\n }\r\n\r\n get getFinalProps() {\r\n const campaignType = this.getCampaignType;\r\n const props = {\r\n ...this.props,\r\n campaignType,\r\n summaryBarActivityLogger: this.summaryBarActivityLogger,\r\n setClarityTag: this.setClarityTag,\r\n };\r\n\r\n return props;\r\n }\r\n\r\n get getCampaignLoadFallback() {\r\n const props = this.getFinalProps;\r\n\r\n const items = convertToBreadCrumbItems(props);\r\n const currentCampaignType = findWhere(campaignTypes, { id: props.campaignType });\r\n const overflowAriaLabel = props.i18n.getString(result(currentCampaignType, 'i18nKey'));\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n setClarityTag = () => {\r\n setClarityTag({ GlobalMenuEntityBar: 'true' });\r\n }\r\n\r\n markAction = (action) => {\r\n if (this.campaignSummarybarPerfMarker && action) {\r\n this.campaignSummarybarPerfMarker[action]();\r\n }\r\n }\r\n\r\n consumeOdataResults = RenderSummaryBar => ({\r\n adGroupFromOData,\r\n campaignFromOData,\r\n osData,\r\n }) => {\r\n this.markAction('willRender');\r\n\r\n const campaign = campaignFromOData\r\n ? convertToSummaryBarCampaign(campaignFromOData)\r\n : null;\r\n\r\n const adGroup = adGroupFromOData\r\n ? convertToSummaryBarAdGroup({\r\n ...adGroupFromOData,\r\n Status: adGroupFromOData.EntityStatus,\r\n Campaign: campaignFromOData,\r\n })\r\n : null;\r\n\r\n if (campaignFromOData && campaignFromOData.ExperimentId) {\r\n const experimentId = campaignFromOData.ExperimentId;\r\n const extendedCampaign = { experimentId, ...campaign };\r\n\r\n return ();\r\n }\r\n\r\n return ();\r\n };\r\n\r\n consumeAdGroupRepository = SummaryBarWithAdGroupCriterionResults => passThroughProps => (\r\n (\r\n \r\n )\r\n );\r\n\r\n consumeCampaignRepository = SummaryBarWithCampaignCriterionResults => (\r\n (\r\n \r\n )\r\n );\r\n\r\n renderSummaryBar = () => ({\r\n experimentFromOData,\r\n campaign,\r\n adGroup: summaryBarAdGroup,\r\n }) => {\r\n const { i18n, scope, siteMap } = this.props;\r\n const summaryBarCampaign = experimentFromOData ?\r\n convertToSummaryBarExperimentCampaign(experimentFromOData, campaign)\r\n : campaign;\r\n\r\n const campaignType = this.getCampaignType;\r\n let breadcrumbsProps = { campaignType };\r\n if (summaryBarAdGroup) {\r\n const {\r\n id,\r\n name,\r\n campaignId,\r\n campaignName,\r\n } = summaryBarAdGroup;\r\n if (has(scope.values, 'adId')) {\r\n breadcrumbsProps = {\r\n campaignName,\r\n campaignId,\r\n campaignType: campaignType === CampaignType.Default ? campaignType : CampaignType.All,\r\n adGroupId: id,\r\n adGroupName: name,\r\n adName: i18n.getString(_TL_('Responsive search ad')),\r\n };\r\n } else {\r\n breadcrumbsProps = {\r\n campaignName,\r\n campaignId,\r\n campaignType,\r\n adGroupId: id,\r\n adGroupName: name,\r\n };\r\n }\r\n } else if (summaryBarCampaign) {\r\n const { id, name } = summaryBarCampaign;\r\n breadcrumbsProps = { campaignName: name, campaignId: id, campaignType };\r\n }\r\n\r\n const items = convertToBreadCrumbItems(defaults({\r\n i18n,\r\n scope,\r\n siteMap,\r\n summaryBarActivityLogger: this.summaryBarActivityLogger,\r\n setClarityTag: this.setClarityTag,\r\n }, breadcrumbsProps));\r\n const currentCampaignType = findWhere(campaignTypes, { id: campaignType });\r\n const overflowAriaLabel = i18n.getString(result(currentCampaignType, 'i18nKey'));\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n render() {\r\n this.markAction('willFetchData');\r\n const renderSummaryBarWithData = compose(\r\n this.consumeCampaignRepository,\r\n this.consumeAdGroupRepository,\r\n this.consumeOdataResults,\r\n this.renderSummaryBar\r\n );\r\n\r\n return renderSummaryBarWithData();\r\n }\r\n}\r\n\r\nGlobalMenuEntityBarInternal.propTypes = {\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n appPerfMarker: PropTypes.shape({\r\n createChild: PropTypes.func.isRequired,\r\n }),\r\n instrumentation: PropTypes.shape({\r\n globalMenuEntityBarScenario: PropTypes.any,\r\n }).isRequired,\r\n};\r\n\r\nGlobalMenuEntityBarInternal.defaultProps = {\r\n appPerfMarker: null,\r\n};\r\n\r\nexport const GlobalMenuEntityBar\r\n = withInstrumentation(withSiteMap(withGlobalFilter(withScope(withI18nConsumer(GlobalMenuEntityBarInternal)))));\r\n","import classNames from 'classnames';\r\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { SummaryBarContainer } from '@bingads-webui-react/summary-bar';\r\nimport { ActionButton } from '@bingads-webui-react/fabric-control';\r\nimport { getSessionStorage } from '@bingads-webui/storage';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { isNavigationRefreshOn } from '@bingads-webui-react/preference-utility';\r\nimport { getAssetLibrarySummaryBarStyle } from './styles/asset-library-summary-bar-style';\r\n\r\nconst SessionStorage = getSessionStorage();\r\nconst SESSION_KEY = 'ASSET_LIBRARY_STORAGE';\r\nconst QUERY_INTERVAL = 1 * 1000;\r\nconst MAX_QUERY_COUNT = (30 * 1000) / QUERY_INTERVAL; // query few more seconds after count is 0\r\n\r\nconst AssetLibrarySummaryBarInternal = ({\r\n selectedParent,\r\n selectedChild,\r\n location,\r\n permissions,\r\n i18n,\r\n classes,\r\n} = {}) => {\r\n //\r\n const [inProgressTaskCount, setInProgressTaskCount] = useState(0);\r\n\r\n // query in progress tasks count\r\n useEffect(() => {\r\n if (!selectedChild || selectedChild.id !== 'creative-studio-asset-library') {\r\n return null;\r\n }\r\n let counter = 0;\r\n let timerId = setInterval(() => {\r\n let { inProgressTaskCount: val } = SessionStorage.get(SESSION_KEY) || {};\r\n val = val || 0;\r\n setInProgressTaskCount(val);\r\n\r\n // stop query after task count becomes 0 for a while\r\n counter = val > 0 ? 0 : counter + 1;\r\n if (!val && counter > MAX_QUERY_COUNT) {\r\n clearInterval(timerId);\r\n timerId = undefined;\r\n }\r\n }, QUERY_INTERVAL);\r\n return () => {\r\n if (timerId !== undefined) {\r\n clearInterval(timerId);\r\n }\r\n };\r\n }, [selectedChild]);\r\n\r\n const backButtonProps = useMemo(() => {\r\n if (location && selectedParent && selectedChild\r\n && selectedChild.id === 'creative-studio-asset-library-image-edit') {\r\n return {\r\n url: `${selectedParent.routePrefix}${selectedParent.route}${location.search}`,\r\n buttonText: i18n.getString(_TL_('Back')),\r\n };\r\n }\r\n return null;\r\n }, [i18n, location, selectedChild, selectedParent]);\r\n\r\n const renderInProgressContent = useCallback(() => {\r\n // only show when there are in progress tasks\r\n if (inProgressTaskCount) {\r\n return (\r\n
\r\n {\r\n // history.push(`${selectedParent.routePrefix}assetlibrary/taskprogress${location.search}`);\r\n }}\r\n >\r\n {inProgressTaskCount > 1\r\n ? i18n.getString(_TL_('Updating {{count}} items'), { count: inProgressTaskCount })\r\n : i18n.getString(_TL_('Updating 1 item'))}\r\n \r\n
\r\n );\r\n }\r\n return null;\r\n }, [classes, i18n, inProgressTaskCount]);\r\n\r\n const summaryBar = useMemo(() => (\r\n
\r\n
\r\n {/* render breadcrumb here using React.createPortal */}\r\n
\r\n {\r\n renderInProgressContent()\r\n }\r\n
\r\n ), [classes, renderInProgressContent]);\r\n\r\n const ariaLabel = useMemo(() => ({\r\n ariaLabel: i18n.getString(_TL_('Summary bar')),\r\n }), [i18n]);\r\n\r\n return selectedParent && selectedChild ? (\r\n \r\n ) : null;\r\n};\r\n\r\nAssetLibrarySummaryBarInternal.propTypes = {\r\n classes: PropTypes.shape({\r\n assetLibrarySummaryBar: PropTypes.string,\r\n inProgressContent: PropTypes.string,\r\n }).isRequired,\r\n selectedParent: PropTypes.shape({\r\n id: PropTypes.string,\r\n name: PropTypes.string,\r\n url: PropTypes.string,\r\n }).isRequired,\r\n selectedChild: PropTypes.shape({\r\n id: PropTypes.string,\r\n name: PropTypes.string,\r\n url: PropTypes.string,\r\n }).isRequired,\r\n history: PropTypes.shape({\r\n replace: PropTypes.func,\r\n }).isRequired,\r\n location: PropTypes.shape({\r\n search: PropTypes.string,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n permissions: PropTypes.shape({\r\n dynamic: PropTypes.shape({\r\n NavigationRefresh: PropTypes.bool,\r\n }),\r\n }).isRequired,\r\n};\r\n\r\nAssetLibrarySummaryBarInternal.defaultProps = {\r\n};\r\n\r\nexport const AssetLibrarySummaryBar = withPermissions(withDefaultStyles(\r\n AssetLibrarySummaryBarInternal,\r\n getAssetLibrarySummaryBarStyle\r\n));\r\n","export const getAssetLibrarySummaryBarStyle = () => ({\r\n '@keyframes inProgressSpin': {\r\n from: { transform: 'rotate(0deg)' },\r\n to: { transform: 'rotate(360deg)' },\r\n },\r\n\r\n assetLibrarySummaryBar: {\r\n width: '100%',\r\n position: 'relative',\r\n '& .breadcrumb-wrapper': {\r\n width: '100%',\r\n paddingLeft: '6px',\r\n },\r\n },\r\n\r\n inProgressContent: {\r\n position: 'absolute',\r\n right: 40,\r\n top: 0,\r\n '& .in-progress-button': {\r\n '& i': {\r\n animationName: '$inProgressSpin',\r\n animationDuration: '1.5s',\r\n animationIterationCount: 'infinite',\r\n animationTimingFunction: 'linear',\r\n },\r\n },\r\n },\r\n});\r\n","import React, { useMemo, useState, useEffect, useCallback } from 'react';\r\nimport {\r\n Dialog,\r\n DialogSurface,\r\n DialogTitle,\r\n DialogContent,\r\n DialogActions,\r\n DialogTrigger,\r\n DialogBody,\r\n Button,\r\n} from '@fluentui/react-components';\r\n\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { getSessionStorage } from '@bingads-webui/storage';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { SummaryBarContainer } from '@bingads-webui-react/summary-bar';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { isNavigationRefreshOn } from '@bingads-webui-react/preference-utility';\r\nimport { ActionButton } from '@bingads-webui-react/fabric-control';\r\nimport { withScope, QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { getAdStudioSummaryBarStyle } from './styles/ad-studio-summary-bar-style';\r\nimport { SimpleBreadcrumb } from './components/simple-breadcrumb';\r\n\r\nconst SessionStorage = getSessionStorage();\r\nconst SESSION_KEY = 'ASSET_LIBRARY_STORAGE';\r\nconst QUERY_INTERVAL = 1 * 1000;\r\nconst MAX_QUERY_COUNT = (30 * 1000) / QUERY_INTERVAL; // query few more seconds after count is 0\r\n\r\nconst AdStudioSummaryBarInternal = ({\r\n selectedParent,\r\n selectedChild,\r\n location,\r\n permissions,\r\n i18n,\r\n classes,\r\n scope,\r\n} = {}) => {\r\n const [inProgressTaskCount, setInProgressTaskCount] = useState(0);\r\n const [dialogOpen, setDialogOpen] = useState(false);\r\n\r\n // query in progress tasks count\r\n useEffect(() => {\r\n if (!selectedParent || selectedParent.id !== 'ad-studio-app-entry') {\r\n return null;\r\n }\r\n let counter = 0;\r\n let timerId = setInterval(() => {\r\n let { inProgressTaskCount: val } = SessionStorage.get(SESSION_KEY) || {};\r\n val = val || 0;\r\n setInProgressTaskCount(val);\r\n\r\n // stop query after task count becomes 0 for a while\r\n counter = val > 0 ? 0 : counter + 1;\r\n if (!val && counter > MAX_QUERY_COUNT) {\r\n clearInterval(timerId);\r\n timerId = undefined;\r\n }\r\n }, QUERY_INTERVAL);\r\n return () => {\r\n if (timerId !== undefined) {\r\n clearInterval(timerId);\r\n }\r\n };\r\n }, [selectedParent]);\r\n\r\n const onExit = useCallback(() => {\r\n setDialogOpen(false);\r\n const previousRoute = location.state && location.state.previousRoute;\r\n const url = previousRoute ? `${new URL(previousRoute).pathname}` : `${selectedParent.routePrefix}${selectedParent.route}`;\r\n scope.remove(['templateGroupId', 'templateId']);\r\n scope.save(url);\r\n }, [scope, selectedParent, location]);\r\n\r\n const onCancelDialog = useCallback(() => {\r\n document.querySelector('.ui-next-summary-bar .back-button').focus();\r\n }, []);\r\n\r\n const backButtonProps = useMemo(() => {\r\n if (location && selectedParent && selectedChild\r\n && (selectedChild.id === 'ad-studio-generate-image-page' ||\r\n selectedChild.id === 'ad-studio-edit-image-page' ||\r\n selectedChild.id === 'ad-studio-display-template-create-page' ||\r\n selectedChild.id === 'ad-studio-display-template-edit-page' ||\r\n selectedChild.id === 'ad-studio-video-template-page' ||\r\n selectedChild.id === 'ad-studio-video-create-page' ||\r\n selectedChild.id === 'ad-studio-video-edit-page'\r\n )) {\r\n let previousRoute = location.state && location.state.previousRoute;\r\n\r\n let onClick;\r\n const isTemplateCreationEditPage = selectedChild.id === 'ad-studio-display-template-create-page' ||\r\n selectedChild.id === 'ad-studio-display-template-edit-page' ||\r\n selectedChild.id === 'ad-studio-video-edit-page' ||\r\n selectedChild.id === 'ad-studio-video-create-page';\r\n if (isTemplateCreationEditPage) {\r\n onClick = (event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n setDialogOpen(true);\r\n };\r\n }\r\n\r\n if (selectedChild.id === 'ad-studio-video-template-page' && previousRoute && previousRoute.indexOf('/video/create?') > -1) {\r\n previousRoute = previousRoute.replace('/video/create?', '/videos?');\r\n }\r\n\r\n return {\r\n url: previousRoute ? `${new URL(previousRoute).pathname}${location.search}` : `${selectedParent.routePrefix}${selectedParent.route}${location.search}`,\r\n buttonText: i18n.getString(_TL_('Back')),\r\n ...(onClick ? { onClick } : {}),\r\n };\r\n }\r\n return null;\r\n }, [i18n, location, selectedChild, selectedParent, setDialogOpen]);\r\n\r\n // MAE needs the ability to hide back buttons that lead outside of Ads Studio\r\n // This will prevent users from navigating to the campaign/account pages\r\n const hideBackButton = useMemo(() => {\r\n if (location) {\r\n const urlParams = new URLSearchParams(location.search);\r\n return urlParams.get('applicationName') === 'BingAdsEditor' && backButtonProps === null;\r\n }\r\n return false;\r\n }, [location, backButtonProps]);\r\n\r\n const renderInProgressContent = useCallback(() => {\r\n // only show when there are in progress tasks\r\n if (inProgressTaskCount) {\r\n return (\r\n
\r\n {\r\n // history.push(`${selectedParent.routePrefix}assetlibrary/taskprogress${location.search}`);\r\n }}\r\n >\r\n {inProgressTaskCount > 1\r\n ? i18n.getString(_TL_('Updating {{count}} items'), { count: inProgressTaskCount })\r\n : i18n.getString(_TL_('Updating 1 item'))}\r\n \r\n
\r\n );\r\n }\r\n return null;\r\n }, [classes, i18n, inProgressTaskCount]);\r\n\r\n const summaryBar = useMemo(() => (\r\n
\r\n
\r\n \r\n
\r\n
\r\n {/* render customized content here using React.createPortal */}\r\n
\r\n {\r\n renderInProgressContent()\r\n }\r\n
\r\n ), [classes.adStudioSummaryBar, i18n, renderInProgressContent, selectedParent]);\r\n\r\n const ariaLabel = useMemo(() => ({\r\n ariaLabel: i18n.getString(_TL_('Summary bar')),\r\n }), [i18n]);\r\n\r\n return selectedParent && selectedChild ? (\r\n
\r\n \r\n {\r\n setDialogOpen(data.open);\r\n }}\r\n >\r\n \r\n \r\n {i18n.getString(_TL_('Are you sure you want to exit?'))}\r\n \r\n {i18n.getString(_TL_('If you exit now, your changes may not be saved.'))}\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 ) : null;\r\n};\r\n\r\nAdStudioSummaryBarInternal.propTypes = {\r\n classes: PropTypes.shape({\r\n adStudioSummaryBar: PropTypes.string,\r\n inProgressContent: PropTypes.string,\r\n summaryBar: PropTypes.string,\r\n }).isRequired,\r\n selectedParent: PropTypes.shape({\r\n id: PropTypes.string,\r\n name: PropTypes.string,\r\n url: PropTypes.string,\r\n }).isRequired,\r\n selectedChild: PropTypes.shape({\r\n id: PropTypes.string,\r\n name: PropTypes.string,\r\n url: PropTypes.string,\r\n }).isRequired,\r\n history: PropTypes.shape({\r\n replace: PropTypes.func,\r\n }).isRequired,\r\n location: PropTypes.shape({\r\n search: PropTypes.string,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n permissions: PropTypes.shape({\r\n dynamic: PropTypes.shape({\r\n NavigationRefresh: PropTypes.bool,\r\n }),\r\n }).isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n};\r\n\r\nAdStudioSummaryBarInternal.defaultProps = {\r\n};\r\n\r\nexport const AdStudioSummaryBar = withScope(withPermissions(withDefaultStyles(\r\n AdStudioSummaryBarInternal,\r\n getAdStudioSummaryBarStyle\r\n)));\r\n","export const getAdStudioSummaryBarStyle = () => ({\r\n '@keyframes inProgressSpin': {\r\n from: { transform: 'rotate(0deg)' },\r\n to: { transform: 'rotate(360deg)' },\r\n },\r\n\r\n adStudioSummaryBar: {\r\n display: 'flex',\r\n width: '100%',\r\n position: 'relative',\r\n '& .breadcrumb-wrapper': {\r\n width: '100%',\r\n paddingLeft: '6px',\r\n },\r\n },\r\n\r\n summaryBar: {\r\n '& .back-button:focus': {\r\n border: '1px solid black',\r\n },\r\n },\r\n\r\n inProgressContent: {\r\n position: 'absolute',\r\n right: 40,\r\n top: 0,\r\n '& .in-progress-button': {\r\n '& i': {\r\n animationName: '$inProgressSpin',\r\n animationDuration: '1.5s',\r\n animationIterationCount: 'infinite',\r\n animationTimingFunction: 'linear',\r\n },\r\n },\r\n },\r\n});\r\n","import _ from 'underscore';\r\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getRoutePathById, withCampaignSiteMap } from '@bingads-webui-react/with-site-map';\r\nimport { edmCampaign } from '@bingads-webui/edm-campaign';\r\n\r\nimport { SummaryBarFactory } from './components';\r\nimport { getSummaryBarStyle } from './styles';\r\n\r\nconst PmaxAssetDetailsSummaryBarUnstyled = ({\r\n selectedParent,\r\n selectedChild,\r\n siteMap,\r\n i18n,\r\n scope,\r\n summaryBarActivityLogger,\r\n}) => {\r\n const {\r\n aid, campaignId, cid, assetGroupId,\r\n } = scope.values;\r\n\r\n const readCampaign = useCallback(() => edmCampaign\r\n .Customers.$withKey(cid)\r\n .Accounts.$withKey(aid)\r\n .Campaigns.$withKey(campaignId)\r\n .get()\r\n .toPromise(), [aid, campaignId, cid]);\r\n\r\n const readAssetGroup = useCallback(() => edmCampaign\r\n .Customers.$withKey(cid)\r\n .Accounts.$withKey(aid)\r\n .Campaigns.$withKey(campaignId)\r\n .AssetGroups.$withKey(assetGroupId)\r\n .get()\r\n .toPromise(), [aid, assetGroupId, campaignId, cid]);\r\n\r\n const isListingGroup = useMemo(() => scope.location.pathname.includes('listinggroups'), [scope.location.pathname]);\r\n\r\n const [campaignName, setCampaignName] = useState();\r\n const [assetGroupName, setAssetGroupName] = useState();\r\n\r\n useEffect(() => {\r\n readCampaign().then((response) => {\r\n setCampaignName(response.Name);\r\n });\r\n }, [readCampaign]);\r\n\r\n useEffect(() => {\r\n if (!_.isUndefined(assetGroupId)) {\r\n readAssetGroup().then((response) => {\r\n setAssetGroupName(response.Name);\r\n });\r\n }\r\n }, [assetGroupId, readAssetGroup]);\r\n\r\n const breadcrumbsGeneralConfigs = useMemo(() => ({\r\n maxDisplayedItems: 3,\r\n items: [{\r\n key: 'all-campaigns',\r\n text: i18n.getString(_TL_('All campaigns')),\r\n isLongText: true,\r\n 'aria-label': i18n.getString(_TL_('All campaigns')),\r\n onClick: () => {\r\n scope.remove(['campaignId', 'assetGroupId']);\r\n scope.save(getRoutePathById(siteMap, 'campaigns'));\r\n },\r\n }, {\r\n key: 'asset-groups',\r\n text: campaignName,\r\n isLongText: true,\r\n 'aria-label': campaignName,\r\n onClick: () => {\r\n scope.remove(['assetGroupId']);\r\n scope.save(getRoutePathById(siteMap, isListingGroup ? 'listing-groups' : 'asset-groups'));\r\n },\r\n }, (selectedChild ?\r\n {\r\n key: selectedChild.id,\r\n text: assetGroupName,\r\n isCurrentItem: true,\r\n isLongText: true,\r\n 'aria-label': assetGroupName,\r\n } : {}\r\n )],\r\n }), [assetGroupName, campaignName, i18n, isListingGroup, scope, selectedChild, siteMap]);\r\n\r\n const summaryBarProps = useMemo(() => ({\r\n i18n,\r\n scope,\r\n siteMap,\r\n summaryBarActivityLogger,\r\n }), [i18n, scope, siteMap, summaryBarActivityLogger]);\r\n\r\n return selectedParent && selectedChild ? (\r\n \r\n ) : null;\r\n};\r\n\r\nPmaxAssetDetailsSummaryBarUnstyled.propTypes = {\r\n selectedParent: PropTypes.shape({\r\n id: PropTypes.string,\r\n name: PropTypes.string,\r\n url: PropTypes.string,\r\n }).isRequired,\r\n selectedChild: PropTypes.shape({\r\n id: PropTypes.string,\r\n name: PropTypes.string,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n summaryBarActivityLogger: PropTypes.shape().isRequired,\r\n};\r\n\r\nexport const PmaxAssetDetailsSummaryBar = withCampaignSiteMap(withDefaultStyles(PmaxAssetDetailsSummaryBarUnstyled, getSummaryBarStyle));\r\n","import React, { useState, useMemo, useEffect, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport _ from 'underscore';\r\n\r\nimport { DefaultButton, Callout, DirectionalHint } from '@fluentui/react';\r\nimport { Glyphicon } from '@bingads-webui-react/primitive';\r\nimport { SingleMonthCalendar } from '@bingads-webui-react/single-month-calendar';\r\nimport { translateLegacyToIANATimezone, parseCivilDate, compareCivilMonth } from '@bingads-webui-universal/temporal-utitlities';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { SummaryBarContainer } from '@bingads-webui-react/summary-bar';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { withGlobalFilter } from '@bingads-webui-campaign-react/global-filter-context';\r\nimport { WaterfallFilterType } from '@bingads-webui-campaign/filter-storage';\r\nimport { Scenario, Activity, ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { isNavigationRefreshOn } from '@bingads-webui-react/preference-utility';\r\n\r\nimport { getBudgetCenterSummaryBarStyle } from './styles';\r\nimport { SimpleBreadcrumb } from './components/simple-breadcrumb';\r\n\r\nconst isoDateFormat = 'yyyy-MM-dd';\r\n\r\nconst BudgetCenterSummaryBarInternal = ({\r\n i18n,\r\n serverContext,\r\n selectedParent,\r\n [WaterfallFilterType.BudgetCenterMonthFilter]: monthFilter,\r\n updateWaterfallFilter,\r\n permissions,\r\n}) => {\r\n const classes = useDefaultStyles(getBudgetCenterSummaryBarStyle);\r\n const buttonClass = 'budget-center-summary-bar-month-picker-button';\r\n const timeZone = _.get(serverContext, ['CurrentAccount', 'TimeZone']);\r\n const activity = useContext(ActivityContext);\r\n const civilDateToday = useMemo(() => {\r\n const isoDateString = i18n.formatDate(new Date(), {\r\n timeZone: translateLegacyToIANATimezone(timeZone),\r\n raw: isoDateFormat,\r\n });\r\n return parseCivilDate({\r\n i18n,\r\n dateString: isoDateString,\r\n dateFormat: isoDateFormat,\r\n });\r\n }, [i18n, timeZone]);\r\n const earliestDate = _.get(monthFilter, 'earliestDate');\r\n const selectedDate = _.get(monthFilter, 'selectedDate', civilDateToday);\r\n const minDate = useMemo(() => earliestDate, [earliestDate]);\r\n const maxDate = useMemo(() => civilDateToday, [civilDateToday]);\r\n\r\n useEffect(() => {\r\n updateWaterfallFilter({\r\n filterType: WaterfallFilterType.BudgetCenterMonthFilter,\r\n filter: { civilDateToday, selectedDate: civilDateToday },\r\n });\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n const [navigatedDate, setNavigatedDate] = useState(civilDateToday);\r\n const [isCalloutVisible, setIsCalloutVisible] = useState(false);\r\n const monthText = useMemo(() => i18n.formatCivilDate(selectedDate, { skeleton: 'MMMM' }), [i18n, selectedDate]);\r\n const isMonthPickerButtonDisabled = useMemo(() => !minDate, [minDate]);\r\n const isPrevMonthButtonDisabled = useMemo(() => !minDate || compareCivilMonth(selectedDate, minDate) === 0, [minDate, selectedDate]);\r\n const isNextMonthButtonDisabled = useMemo(() => !minDate || compareCivilMonth(selectedDate, maxDate) === 0, [minDate, maxDate, selectedDate]);\r\n const toggleIsCalloutVisible = () => setIsCalloutVisible(visible => !visible);\r\n const updateSelectedDate = (date) => {\r\n updateWaterfallFilter({\r\n filterType: WaterfallFilterType.BudgetCenterMonthFilter,\r\n filter: {\r\n ...monthFilter,\r\n selectedDate: date,\r\n },\r\n });\r\n };\r\n const logTrace = ({ date, api }) => {\r\n if (activity) {\r\n activity.trace(date.toString(), api);\r\n }\r\n };\r\n const onSelectDate = (date) => {\r\n logTrace({ date, api: 'onSelectDate' });\r\n updateSelectedDate(date);\r\n setIsCalloutVisible(false);\r\n };\r\n const onPrevMonthClick = () => {\r\n const newDate = selectedDate.plus({ months: -1 });\r\n if (compareCivilMonth(newDate, minDate) >= 0) {\r\n logTrace({ date: newDate, api: 'onPrevMonthClick' });\r\n updateSelectedDate(newDate);\r\n setNavigatedDate(newDate);\r\n }\r\n };\r\n const onNextMonthClick = () => {\r\n const newDate = selectedDate.plus({ months: 1 });\r\n if (compareCivilMonth(newDate, maxDate) <= 0) {\r\n logTrace({ date: newDate, api: 'onNextMonthClick' });\r\n updateSelectedDate(newDate);\r\n setNavigatedDate(newDate);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (selectedDate.year !== navigatedDate.year) {\r\n setNavigatedDate(selectedDate);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [selectedDate]);\r\n\r\n const summaryBar = (\r\n
\r\n
\r\n
\r\n \r\n \r\n {`${monthText} ${selectedDate.year}`}\r\n \r\n \r\n
\r\n }\r\n className={classnames(buttonClass, classes.monthPickerButton, isCalloutVisible ? 'dialog-visible' : 'dialog-invisible')}\r\n onClick={toggleIsCalloutVisible}\r\n disabled={isMonthPickerButtonDisabled}\r\n />\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n {isCalloutVisible ? (\r\n \r\n \r\n \r\n ) : null}\r\n
\r\n );\r\n const breadcrumb = (\r\n \r\n );\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nBudgetCenterSummaryBarInternal.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n formatDate: PropTypes.func,\r\n formatCivilDate: PropTypes.func,\r\n }).isRequired,\r\n serverContext: PropTypes.shape({\r\n CurrentAccount: PropTypes.shape({\r\n TimeZone: PropTypes.number,\r\n }),\r\n }).isRequired,\r\n selectedParent: PropTypes.shape({\r\n id: PropTypes.string,\r\n name: PropTypes.string,\r\n url: PropTypes.string,\r\n }).isRequired,\r\n updateWaterfallFilter: PropTypes.func,\r\n};\r\n\r\nBudgetCenterSummaryBarInternal.defaultProps = {\r\n updateWaterfallFilter: _.noop,\r\n};\r\n\r\nexport const BudgetCenterSummaryBar = _.compose(\r\n withServerContext,\r\n withI18nConsumer,\r\n withGlobalFilter,\r\n withPermissions\r\n)(props => (\r\n \r\n \r\n \r\n \r\n \r\n));\r\n","import { findWhere, result, values } from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { Breadcrumb } from '@bingads-webui-react/breadcrumb';\r\nimport { CampaignType } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport {\r\n campaignTypes,\r\n convertToBreadCrumbItems,\r\n} from '../helpers';\r\n\r\nexport class SummaryBarBreadcrumb extends React.PureComponent {\r\n render() {\r\n const {\r\n campaignType,\r\n classes,\r\n i18n,\r\n maxDisplayedItems,\r\n } = this.props;\r\n\r\n const items = convertToBreadCrumbItems(this.props);\r\n const currentCampaignType = findWhere(campaignTypes, { id: campaignType });\r\n const campaignTypeI18nText = i18n.getString(result(currentCampaignType, 'i18nKey'));\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nSummaryBarBreadcrumb.propTypes = {\r\n classes: PropTypes.shape({\r\n summaryBarBreadcrumb: PropTypes.string,\r\n }),\r\n campaignType: PropTypes.oneOf(values(CampaignType)).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n maxDisplayedItems: PropTypes.number,\r\n summaryBarActivityLogger: PropTypes.shape({\r\n changeScopeActivity: PropTypes.any,\r\n }),\r\n};\r\n\r\nSummaryBarBreadcrumb.defaultProps = {\r\n classes: {\r\n summaryBarBreadcrumb: 'summary-bar-breadcrumb',\r\n },\r\n maxDisplayedItems: 3,\r\n summaryBarActivityLogger: null,\r\n};\r\n","import React, { Fragment } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport class EditableItem extends React.PureComponent {\r\n state = {\r\n isOpen: false,\r\n itemProps: {},\r\n };\r\n\r\n closeEditor = () => this.setState({ isOpen: false });\r\n\r\n showEditor = ({ itemProps }) => {\r\n this.setState({\r\n isOpen: true, itemProps,\r\n });\r\n };\r\n\r\n render() {\r\n const {\r\n renderEditableItem,\r\n renderEditor,\r\n } = this.props;\r\n const { itemProps } = this.state;\r\n\r\n return (\r\n \r\n {renderEditableItem(this.showEditor)}\r\n {renderEditor(this.state.isOpen, this.closeEditor, { itemProps })}\r\n \r\n );\r\n }\r\n}\r\n\r\nEditableItem.propTypes = {\r\n renderEditableItem: PropTypes.func.isRequired,\r\n renderEditor: PropTypes.func.isRequired,\r\n};\r\n","import React, { Fragment } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { values } from 'underscore';\r\nimport { QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { CampaignType } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { Breadcrumb } from '@bingads-webui-react/breadcrumb';\r\nimport { SummaryBarContainer } from '@bingads-webui-react/summary-bar';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { isNavigationRefreshOn } from '@bingads-webui-react/preference-utility';\r\nimport { SummaryBarBreadcrumb } from './index';\r\nimport { SummaryBarItemsResizeGroup } from './summary-bar-items-resize-group';\r\n\r\nclass SummaryBarFactory extends React.PureComponent {\r\n render() {\r\n const {\r\n backButtonProps,\r\n breadcrumbsProps,\r\n breadcrumbsGeneralConfigs,\r\n summaryBarItems,\r\n i18n,\r\n summaryBarActivityLogger,\r\n scope,\r\n siteMap,\r\n hideBreadcrumb,\r\n permissions,\r\n } = this.props;\r\n const summaryBarProps = {\r\n summaryBarItems,\r\n overflowAriaLabel: i18n.getString(_TL_('More options')),\r\n scope,\r\n siteMap,\r\n };\r\n\r\n let breadcrumb = null;\r\n if (breadcrumbsGeneralConfigs) {\r\n breadcrumb = (\r\n
\r\n \r\n
\r\n );\r\n } else {\r\n breadcrumb = (\r\n );\r\n }\r\n\r\n let summaryBar = null;\r\n if (summaryBarItems.length > 0) {\r\n summaryBar = (\r\n \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\nSummaryBarFactory.propTypes = {\r\n backButtonProps: PropTypes.shape({\r\n url: PropTypes.string,\r\n buttonText: PropTypes.string.isRequired,\r\n onClick: PropTypes.func,\r\n }),\r\n breadcrumbsProps: PropTypes.shape({\r\n campaignId: PropTypes.number,\r\n campaignName: PropTypes.string,\r\n adgroupId: PropTypes.number,\r\n adgroupName: PropTypes.string,\r\n campaignType: PropTypes.oneOf(values(CampaignType)),\r\n }),\r\n // eslint-disable-next-line react/forbid-prop-types\r\n breadcrumbsGeneralConfigs: PropTypes.object,\r\n summaryBarItems: PropTypes.arrayOf(PropTypes.shape({\r\n label: PropTypes.string,\r\n className: PropTypes.string,\r\n text: PropTypes.string,\r\n canEdit: PropTypes.bool,\r\n renderContent: PropTypes.func,\r\n onClick: PropTypes.func,\r\n })),\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n isAccountsSummary: PropTypes.bool,\r\n summaryBarActivityLogger: PropTypes.shape({\r\n changeScopeActivity: PropTypes.any,\r\n }),\r\n hideBreadcrumb: PropTypes.bool,\r\n permissions: PropTypes.shape({\r\n dynamic: PropTypes.shape({\r\n NavigationRefresh: PropTypes.bool,\r\n }),\r\n }).isRequired,\r\n};\r\n\r\nSummaryBarFactory.defaultProps = {\r\n summaryBarItems: [],\r\n breadcrumbsProps: {},\r\n breadcrumbsGeneralConfigs: null,\r\n backButtonProps: null,\r\n isAccountsSummary: false,\r\n summaryBarActivityLogger: null,\r\n hideBreadcrumb: false,\r\n};\r\n\r\nconst wrapped = withPermissions(SummaryBarFactory);\r\n\r\nexport { wrapped as SummaryBarFactory };\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { Glyphicon, OverlayTrigger, Tooltip } from '@bingads-webui-react/primitive';\r\nimport { siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { withOverflowProp } from '@bingads-webui-react/with-overflow-prop';\r\n\r\nexport const OverflowContent = withOverflowProp(({\r\n text,\r\n isTextOverflow,\r\n forwardedRef,\r\n tooltipPlacement,\r\n entityClassName = 'entity-text',\r\n href = null,\r\n ...passBy\r\n}) => (\r\n \r\n {text}\r\n \r\n }\r\n >\r\n { href ? ({text}) :\r\n ({text}) }\r\n ));\r\n\r\nexport const OverflowEntityItem = ({\r\n canEdit,\r\n label,\r\n text,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n onClick,\r\n ariaLabel,\r\n tooltipPlacement,\r\n renderContent,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n siteMap,\r\n className,\r\n ...others\r\n}) => (\r\n \r\n \r\n \r\n {renderContent ? renderContent({ canEdit: false, ...others }) : ()}\r\n
);\r\n\r\nOverflowEntityItem.propTypes = {\r\n label: PropTypes.string.isRequired,\r\n text: PropTypes.string,\r\n onClick: PropTypes.func,\r\n canEdit: PropTypes.bool,\r\n ariaLabel: PropTypes.string,\r\n tooltipPlacement: PropTypes.string,\r\n renderContent: PropTypes.func,\r\n className: PropTypes.string,\r\n siteMap: siteMapPropType.isRequired,\r\n};\r\n\r\nOverflowEntityItem.defaultProps = {\r\n onClick: null,\r\n canEdit: true,\r\n ariaLabel: '',\r\n text: '',\r\n tooltipPlacement: 'top',\r\n renderContent: null,\r\n className: '',\r\n};\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Media from 'react-media';\r\nimport { ResizeGroup } from '@fluentui/react';\r\nimport { QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { LayoutContext } from '@bingads-webui-react/app-layout-container';\r\nimport { SummaryBarItems, SummaryBarItemPropType } from './summary-bar-items';\r\n\r\nexport class SummaryBarItemsResizeGroup extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n // Resize group naturally works when dragging the window size, but does not seem to work correctly for\r\n // larger window size changes. To work around this, we are using a Media query to detect a larger screen\r\n // change, and then using this resizeGroupKey to force ResizeGroup to update.\r\n this.state = {\r\n resizeGroupKey: 0,\r\n };\r\n }\r\n\r\n onReduceData = (currentData) => {\r\n const newOverflowIndex = this.getNextOverflow(currentData);\r\n if (newOverflowIndex === -1) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n summaryBarItems: currentData.summaryBarItems,\r\n overflowIndex: newOverflowIndex,\r\n };\r\n };\r\n\r\n onGrowData = (currentData) => {\r\n const { overflowIndex, summaryBarItems } = currentData;\r\n if (overflowIndex === summaryBarItems.length) {\r\n return undefined;\r\n }\r\n\r\n let newOverflowIndex = _.findIndex(summaryBarItems.slice(overflowIndex + 1), item => !item.noOverflow);\r\n if (newOverflowIndex === -1) {\r\n newOverflowIndex = summaryBarItems.length; // Set to length so no items overflow\r\n } else {\r\n // Since we sliced, we need to add back the index\r\n newOverflowIndex += (overflowIndex + 1);\r\n }\r\n\r\n return {\r\n summaryBarItems: currentData.summaryBarItems,\r\n overflowIndex: newOverflowIndex,\r\n };\r\n };\r\n\r\n getNextOverflow = (data) => {\r\n const { summaryBarItems, overflowIndex } = data;\r\n return _.findLastIndex(summaryBarItems.slice(0, overflowIndex), item => !item.noOverflow);\r\n }\r\n\r\n getWindowWidth = () => {\r\n const body = document.getElementsByTagName('body')[0];\r\n return window.innerWidth || document.documentElement.clientWidth || body.clientWidth;\r\n }\r\n\r\n handleMediaChange = (matches) => {\r\n if (matches) {\r\n this.setState(state => ({ resizeGroupKey: state.resizeGroupKey + 1 }));\r\n }\r\n }\r\n\r\n render() {\r\n const { resizeGroupKey } = this.state;\r\n const {\r\n summaryBarItems, overflowAriaLabel, scope, siteMap,\r\n } = this.props;\r\n\r\n const startingData = {\r\n summaryBarItems,\r\n overflowIndex: summaryBarItems.length,\r\n };\r\n\r\n return (\r\n
\r\n {/* Use a media query to trigger an event when we see a large window size change.\r\n This will allow us to force ResizeGroup to update by changing the key */}\r\n \r\n\r\n \r\n {layout => (\r\n (\r\n \r\n )}\r\n />)}\r\n \r\n\r\n
);\r\n }\r\n}\r\n\r\nSummaryBarItemsResizeGroup.propTypes = {\r\n overflowAriaLabel: PropTypes.string,\r\n summaryBarItems: PropTypes.arrayOf(SummaryBarItemPropType).isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n};\r\n\r\nSummaryBarItemsResizeGroup.defaultProps = {\r\n overflowAriaLabel: '',\r\n};\r\n","import React from 'react';\r\nimport { Glyphicon } from '@bingads-webui-react/primitive';\r\nimport { Callout } from '@bingads-webui-react/callout';\r\n\r\nconst renderCalloutSubMenu = (content, item) => (\r\n
\r\n

{item.title}

\r\n
\r\n {content}\r\n \r\n \r\n \r\n
\r\n
);\r\n\r\nexport const getOverflowSubMenuProps = (item) => {\r\n if (item.canEdit && item.Editor === Callout) {\r\n return {\r\n subMenuProps: {\r\n items: [{\r\n key: `${item.className}-editor`,\r\n onRender: (_, onDismiss) => {\r\n const editorProps = item.getEditorProps(true, onDismiss, true, { itemProps: item });\r\n\r\n return renderCalloutSubMenu(editorProps.content, editorProps);\r\n },\r\n }],\r\n calloutProps: {\r\n preventDismissOnLostFocus: true,\r\n },\r\n },\r\n };\r\n } else if (item.canEdit) {\r\n let onClick = null;\r\n\r\n if (item.onClick) {\r\n // eslint-disable-next-line prefer-destructuring\r\n onClick = item.onClick;\r\n } else if (item.getEditorProps) {\r\n const editorProps = item.getEditorProps(true);\r\n\r\n if (editorProps.shouldNavigate && item.onNavigate) {\r\n onClick = item.onNavigate;\r\n }\r\n }\r\n\r\n return {\r\n onClick,\r\n };\r\n }\r\n return {};\r\n};\r\n","import _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport classNames from 'classnames';\r\nimport { siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { DirectionalHint } from '@fluentui/react';\r\nimport { ContextualMenuIconButton } from '@bingads-webui-campaign-react/contextual-menu-icon-button';\r\nimport { EntityItem } from '@bingads-webui-campaign-react/entity-item';\r\nimport { EditableItem, OverflowEntityItem } from './index';\r\nimport { getOverflowSubMenuProps } from './overflow-sub-menu';\r\n\r\nexport class SummaryBarItems extends React.PureComponent {\r\n renderSummryBarItem = (item, ItemComponent) => {\r\n const {\r\n Editor,\r\n getEditorProps,\r\n onClick: onItemClick,\r\n ...other\r\n } = item;\r\n\r\n if (Editor) {\r\n const renderEditor = (isOpen, closeEditor, passThroughData) => {\r\n const editorProps = getEditorProps(isOpen, closeEditor, passThroughData);\r\n const { getChildren, ...rest } = editorProps;\r\n return (\r\n \r\n {getChildren && getChildren()}\r\n \r\n );\r\n };\r\n\r\n const renderEditableItem = (showEditor) => {\r\n const onClick = (event) => {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n showEditor({ itemProps: other });\r\n if (onItemClick) {\r\n onItemClick();\r\n }\r\n };\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n return ();\r\n }\r\n\r\n return ();\r\n }\r\n\r\n renderOverflowDropdown = (overflowItems) => {\r\n if (!overflowItems || overflowItems.length === 0) {\r\n return null;\r\n }\r\n\r\n const {\r\n overflowAriaLabel,\r\n } = this.props;\r\n const overflowDropdownProps = {\r\n items: overflowItems.reduce((memo, item) => memo.concat({\r\n itemProps: { siteMap: this.props.siteMap, ...item },\r\n disabled: !item.canEdit,\r\n ...getOverflowSubMenuProps(item),\r\n }), []),\r\n iconName: 'More',\r\n 'aria-label': overflowAriaLabel,\r\n contextualMenuProps: {\r\n doNotLayer: true,\r\n DirectionalHint: DirectionalHint.bottomRightEdge,\r\n contextualMenuItemAs: OverflowEntityItem,\r\n onDismiss: (event) => {\r\n const target = event && event.target;\r\n\r\n if (target) {\r\n const isInsideDatePicker = target && _.isFunction(target.closest) && target.closest('.k-calendar');\r\n\r\n if (isInsideDatePicker) {\r\n event.preventDefault();\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 render() {\r\n const {\r\n summaryBarItems,\r\n overflowIndex,\r\n } = this.props;\r\n const overflowItems = _.reject(summaryBarItems.slice(overflowIndex), item => item.noOverflow);\r\n const isEditable = item => item.canEdit;\r\n let entityItems = [];\r\n\r\n if (summaryBarItems.length > 0) {\r\n entityItems = summaryBarItems.map((item) => {\r\n if (_.contains(overflowItems, item)) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n {item.className === 'overflow-entity-items'\r\n ? this.renderOverflowDropdown(overflowItems)\r\n : this.renderSummryBarItem(item, EntityItem)\r\n }\r\n
\r\n );\r\n });\r\n }\r\n\r\n const overflowLabel = overflowItems.length === 0 ? 'none' : overflowIndex;\r\n return (\r\n
\r\n {entityItems}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport const SummaryBarItemPropType = PropTypes.shape({\r\n label: PropTypes.string,\r\n className: PropTypes.string,\r\n text: PropTypes.string,\r\n canEdit: PropTypes.bool,\r\n renderContent: PropTypes.func,\r\n onClick: PropTypes.func,\r\n renderEntityItem: PropTypes.func,\r\n});\r\n\r\nSummaryBarItems.propTypes = {\r\n overflowAriaLabel: PropTypes.string,\r\n summaryBarItems: PropTypes.arrayOf(SummaryBarItemPropType.isRequired).isRequired,\r\n overflowIndex: PropTypes.number.isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n};\r\n\r\nSummaryBarItems.defaultProps = {\r\n overflowAriaLabel: '',\r\n};\r\n","import { chain, pick, isEmpty, omit, contains } from 'underscore';\r\nimport { include } from 'underscore.string';\r\nimport { convertToCampaign, convertToAdGroup, CampaignTypeByODataValue } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { curlyTemplate } from '@bingads-webui-universal/primitive-utilities';\r\nimport { isXandrCampaign } from '@bingads-webui-campaign-react/constants';\r\n\r\nconst BUDGET_SUGGESTION = 'BudgetSuggestions';\r\nconst devicesMap = i18n => ({\r\n Smartphones: i18n.getString(_TL_('Smartphone')),\r\n Computers: i18n.getString(_TL_('Computer')),\r\n Tablets: i18n.getString(_TL_('Tablet')),\r\n ConnectedTVs: i18n.getString(_TL_('CTV')),\r\n});\r\n\r\nconst statusMap = {\r\n active: 'Active',\r\n paused: 'Paused',\r\n};\r\n\r\nexport const convertToSummaryBarCampaign = (campaignFromOData) => {\r\n const campaign = omit(convertToCampaign(campaignFromOData), 'rawStatus');\r\n campaign.status = campaign.status.toLowerCase();\r\n const {\r\n Budget, BiddingScheme, ExperimentId, CampaignSubType, DeliveryStatus, DeliveryStatusDetails,\r\n } = campaignFromOData;\r\n\r\n return {\r\n ...campaign,\r\n currentCampaignType: campaign.campaignType,\r\n budget: Budget,\r\n hasBudgetLandscape: contains(DeliveryStatusDetails, BUDGET_SUGGESTION) ||\r\n DeliveryStatus === BUDGET_SUGGESTION,\r\n bidStrategy: BiddingScheme.Type,\r\n isExperiment: ExperimentId !== null,\r\n campaignSubType: CampaignSubType,\r\n };\r\n};\r\n\r\nexport const getAdGroupDisplayBiddingStrategyType = (adGroupFromOData) => {\r\n if (adGroupFromOData.DisplayBiddingStrategyType === 'InheritFromParent') {\r\n return adGroupFromOData.Campaign.BiddingScheme && adGroupFromOData.Campaign.BiddingScheme.Type;\r\n }\r\n return adGroupFromOData.DisplayBiddingStrategyType;\r\n};\r\n\r\nexport const convertToSummaryBarAdGroup = (adGroupFromOData) => {\r\n const adGroup = convertToAdGroup(adGroupFromOData);\r\n adGroup.status = adGroup.status.toLowerCase();\r\n const bidMapping = {\r\n ManualCpc: 'SearchBid',\r\n ManualCpv: 'CpvBid',\r\n ManualCpm: 'CpmBid',\r\n };\r\n const bidKey = (adGroupFromOData.Campaign.BiddingScheme.Type && bidMapping[adGroupFromOData.Campaign.BiddingScheme.Type]) || 'SearchBid';\r\n\r\n return {\r\n ...adGroup,\r\n displayBiddingStrategyType: getAdGroupDisplayBiddingStrategyType(adGroupFromOData),\r\n currentCampaignType: CampaignTypeByODataValue[adGroupFromOData.Campaign.CampaignType],\r\n campaignId: adGroupFromOData.Campaign.Id,\r\n campaignName: adGroupFromOData.Campaign.Name,\r\n bid: adGroupFromOData[bidKey],\r\n bidStrategy: adGroupFromOData.Campaign.BiddingScheme.Type,\r\n isExperiment: adGroupFromOData.Campaign.ExperimentId !== null,\r\n campaignSubType: adGroupFromOData.Campaign.CampaignSubType,\r\n };\r\n};\r\n\r\nexport const convertToSummaryBarExperimentCampaign = (experimentFromOData, campaign) => ({\r\n ...campaign,\r\n startDate: experimentFromOData.StartDate,\r\n endDate: experimentFromOData.EndDate,\r\n originalCampaignName: experimentFromOData.BaseCampaignName,\r\n originalCampaignId: experimentFromOData.BaseCampaignId,\r\n status: experimentFromOData.Status,\r\n experimentType: experimentFromOData.ExperimentType,\r\n});\r\n\r\nconst getNameForRadiusLocation = (i18n, lat, long) => {\r\n const latComputed = Math.round(lat * 100) / 100;\r\n const longComputed = Math.round(long * 100) / 100;\r\n\r\n return curlyTemplate(i18n.getString(_TL_('Lat: {{Latitude}} Long: {{Longitude}}')))({\r\n Latitude: latComputed,\r\n Longitude: longComputed,\r\n });\r\n};\r\n\r\nconst getCriterion = (criterionType, criterionFromOData) => chain(criterionFromOData)\r\n .filter(item => item && item['@odata.type'] && !include(item['@odata.type'], 'Negative'))\r\n .map(item => pick(item, 'Criterion'))\r\n .filter(item => item && item.Criterion && item.Criterion['@odata.type'] === `#Model.${criterionType}Criterion`);\r\n\r\nexport const convertToSummaryBarLocationsAndDevices = (criterionFromOData, i18n, parentResults = null, campaignSubType = null) => {\r\n let results = {\r\n locations: [],\r\n devices: i18n.getString(_TL_('None')),\r\n };\r\n\r\n if (!criterionFromOData && !parentResults) {\r\n return results;\r\n }\r\n\r\n if (criterionFromOData && criterionFromOData.dataNotReady) {\r\n return {\r\n locations: ['-'],\r\n devices: ['-'],\r\n };\r\n }\r\n\r\n if (criterionFromOData) {\r\n const locationCriterion = getCriterion('Location', criterionFromOData.value)\r\n .map(item => pick(item.Criterion, 'Name', 'LocationType'))\r\n .sortBy('Name')\r\n .sortBy('LocationType')\r\n .map(item => item.Name)\r\n .value();\r\n\r\n const radiusCriterion = getCriterion('Radius', criterionFromOData.value)\r\n .map(item => pick(item.Criterion, 'RadiusUnit', 'Name', 'Latitude', 'Longitude', 'Radius'))\r\n .map((item) => {\r\n const unit = item.RadiusUnit.toLowerCase() === 'miles' ? i18n.getString(_TL_('miles'))\r\n : i18n.getString(_TL_('kilometers'));\r\n const location = isEmpty(item.Name) ? getNameForRadiusLocation(i18n, item.Latitude, item.Longitude) : item.Name;\r\n\r\n return curlyTemplate(i18n.getString(_TL_('{{radius}} {{unit}} around {{location}}')))({\r\n radius: item.Radius,\r\n unit,\r\n location,\r\n });\r\n })\r\n .value();\r\n\r\n const devicesI18nMap = devicesMap(i18n);\r\n const deviceCriterion = chain(criterionFromOData.value)\r\n .map(item => pick(item, 'Criterion', 'CriterionBid'))\r\n .filter(item => item && item.Criterion &&\r\n item.Criterion['@odata.type'] === '#Model.DeviceCriterion' &&\r\n item.CriterionBid &&\r\n ((isXandrCampaign(campaignSubType) && item.CriterionBid.Multiplier !== -100) || (!isXandrCampaign(campaignSubType) && item.CriterionBid.Multiplier !== 0)))\r\n .map(item => devicesI18nMap[item.Criterion.DeviceName])\r\n .value();\r\n\r\n results = {\r\n locations: locationCriterion.concat(radiusCriterion),\r\n devices: deviceCriterion.length ? [deviceCriterion.join(',')] : [],\r\n };\r\n }\r\n\r\n if (parentResults) {\r\n results = {\r\n locations: results.locations.length ? results.locations : parentResults.locations,\r\n devices: results.devices.length ? results.devices : parentResults.devices,\r\n };\r\n }\r\n\r\n return results;\r\n};\r\n\r\nexport const convertToSummaryBarAudiences = (audienceFromOData) => {\r\n let result = [];\r\n\r\n if (audienceFromOData && audienceFromOData.value) {\r\n result = chain(audienceFromOData.value).map(item => item && item.AudienceCriterion)\r\n .map(item => item && item.AudienceName)\r\n .sortBy('AudienceName')\r\n .value();\r\n result.totalCount = audienceFromOData['@odata.count'];\r\n } else if (audienceFromOData && audienceFromOData.dataNotReady) {\r\n result.totalCount = 1;\r\n result = ['-'];\r\n }\r\n return result;\r\n};\r\n\r\nexport const convertToSummaryBarStatusPatch = patch => ({\r\n Status: statusMap[patch.status],\r\n});\r\n","// use object here in case we may need to extend other fields in the future\r\nimport _ from 'underscore';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport { CampaignType } from '@bingads-webui-campaign-react/shell-ui-common';\r\n\r\nconst dynamicPermissions = _.result(config.get('permissions'), 'dynamic', {});\r\nconst { IsRenameHotelToLodgingEnabled } = dynamicPermissions;\r\n\r\nexport const campaignTypes = [\r\n {\r\n id: CampaignType.All,\r\n i18nKey: _TL_('All campaigns'),\r\n }, {\r\n id: CampaignType.Default,\r\n i18nKey: _TL_('Search campaigns'),\r\n }, {\r\n id: CampaignType.Shopping,\r\n i18nKey: _TL_('Shopping campaigns'),\r\n }, {\r\n id: CampaignType.Audience,\r\n i18nKey: _TL_('Audience campaigns'),\r\n }, {\r\n id: CampaignType.Smart,\r\n i18nKey: _TL_('Smart campaigns'),\r\n },\r\n {\r\n id: CampaignType.Hotel,\r\n i18nKey: IsRenameHotelToLodgingEnabled ? _TL_('Lodging campaigns') : _TL_('Hotel campaigns'),\r\n },\r\n {\r\n id: CampaignType.PerformanceMax,\r\n i18nKey: _TL_('Performance Max campaigns'),\r\n },\r\n {\r\n id: CampaignType.App,\r\n i18nKey: _TL_('App campaigns'),\r\n },\r\n];\r\n","import { has } from 'underscore';\r\nimport { $current } from '@bingads-webui-react/scope-service';\r\nimport { getRoutePathById, Configs } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { Scope } from '@bingads-webui-campaign-react/shell-ui-common';\r\n\r\nexport function breadcrumbClickHandler(breadcrumbScope, routerScope, siteMap) {\r\n switch (breadcrumbScope) {\r\n case Scope.Account:\r\n routerScope.remove(['campaignId', 'adGroupId']);\r\n break;\r\n case Scope.Campaign:\r\n routerScope.remove(['adGroupId']);\r\n break;\r\n default: break;\r\n }\r\n\r\n // align with google, click account scope link will show campaigns grid\r\n const route = breadcrumbScope === Scope.Account\r\n ? getRoutePathById(Configs.campaignSiteMap, 'campaigns')\r\n : getRoutePathById(siteMap, 'ads');\r\n if (has(routerScope.values, 'adId')) {\r\n routerScope.remove(['adId']);\r\n routerScope.save(route);\r\n } else if (breadcrumbScope === Scope.Account) {\r\n routerScope.save(route);\r\n } else {\r\n routerScope.save();\r\n }\r\n}\r\n\r\nexport function campaignClickHandler(event, campaignId, scope) {\r\n if (event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n\r\n scope.set({\r\n cid: $current,\r\n aid: $current,\r\n uid: $current,\r\n campaignId,\r\n });\r\n\r\n scope.save();\r\n return false;\r\n}\r\n\r\nexport function getCampaignUrl(campaignId, scope) {\r\n const { cid, aid, uid } = scope.values;\r\n return `${scope.location.pathname}?uid=${uid}&cid=${cid}&aid=${aid}&campaignId=${campaignId}`;\r\n}\r\n\r\nexport function pageClickHandler(siteMap, scope, targetPage) {\r\n scope.save(getRoutePathById(siteMap, targetPage));\r\n}\r\n","export const summaryBarScopes = {\r\n campaignType: {\r\n id: 'campaign-type',\r\n },\r\n campaign: {\r\n id: 'campaign',\r\n },\r\n adGroup: {\r\n id: 'ad-group',\r\n },\r\n accounts: {\r\n id: 'accounts',\r\n },\r\n ad: {\r\n id: 'ad',\r\n },\r\n};\r\n","// the default style follows figma and adwords\r\n// https://www.figma.com/file/UiSbekGiA9XqEL6WM2v5allf/Bing-Ads-HIG-0.01.01?node-id=0%3A8166\r\nconst theme = {\r\n minWidth: '100px',\r\n fontSize: '14px',\r\n};\r\n\r\n// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\r\nexport const getStatusDropdownStyles = ({ statusDropdown = {} }, { palette = {} }) => ({\r\n statusDropdown: {\r\n '& .status-dropdown': {\r\n position: 'relative',\r\n minWidth: theme.minWidth,\r\n },\r\n '& .dropdown-toggle[disabled]': {\r\n cursor: 'default',\r\n },\r\n '& .dropdown-toggle': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n border: 'none',\r\n fontWeight: 'normal',\r\n fontSize: theme.fontSize,\r\n backgroundColor: palette.neutralLighter,\r\n '& > div': {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n '& > div': {\r\n display: 'flex',\r\n },\r\n },\r\n '& .overflow-status-text': {\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n '& .status-icon': {\r\n flexShrink: 0,\r\n },\r\n },\r\n '& .dropdown-toggle:focus': {\r\n outline: 'none',\r\n },\r\n '& .icon-status-draft, & .icon-status-expired, & .icon-status-paused': {\r\n marginRight: '5px',\r\n fontSize: theme.fontSize,\r\n },\r\n '& .icon-status-expired': {\r\n color: '#CF2837',\r\n },\r\n '& .icon-status-active': {\r\n marginRight: '5px',\r\n fontSize: theme.fontSize,\r\n color: '#107C10',\r\n },\r\n '& .dropdown-menu': {\r\n minWidth: theme.minWidth,\r\n },\r\n '& .list-selector-item': {\r\n display: 'block',\r\n padding: '7px 10px',\r\n clear: 'both',\r\n fontSize: theme.fontSize,\r\n fontWeight: 'normal',\r\n color: palette.neutralDark,\r\n whiteSpace: 'nowrap',\r\n },\r\n '& .list-selector-item:hover': {\r\n textDecoration: 'none',\r\n backgroundColor: palette.neutralLighter,\r\n },\r\n '& .dropdown-menu .selected': {\r\n backgroundColor: palette.neutralLighter,\r\n },\r\n '& .icon-ChevronDown': {\r\n margin: '4px 10px',\r\n color: palette.neutralSecondary,\r\n fontSize: '12px',\r\n },\r\n },\r\n});\r\n","import React from 'react';\r\nimport { findWhere, mapObject, constant, contains } from 'underscore';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport PropTypes from 'prop-types';\r\nimport { ListSelector } from '@bingads-webui-react/list-selector';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { withOverflowProp } from '@bingads-webui-react/with-overflow-prop';\r\nimport { Glyphicon, OverlayTrigger, Tooltip } from '@bingads-webui-react/primitive';\r\nimport { FocusLock } from '@bingads-webui-react/focus-lock';\r\nimport { FocusContext } from '@bingads-webui-campaign-react/react-focus-context';\r\nimport onClickOutside from 'react-onclickoutside';\r\nimport { getStatusDropdownStyles } from './styles';\r\n\r\nconst OverflowStatusText = withOverflowProp(({\r\n item, isTextOverflow, i18n, forwardedRef,\r\n}) => (\r\n \r\n {i18n.getString(item.i18nText)}\r\n \r\n }\r\n >\r\n {i18n.getString(item.i18nText)}\r\n \r\n));\r\n\r\nclass StatusDropdown extends React.PureComponent {\r\n static contextType = FocusContext\r\n\r\n constructor(props) {\r\n super(props);\r\n this.buttonRef = React.createRef(null);\r\n }\r\n\r\n state = {\r\n isOpen: false,\r\n };\r\n\r\n componentDidUpdate() {\r\n const { suscribeFocusElement } = this.context;\r\n suscribeFocusElement({ scenario: 'StatusDropdown', componentRef: this.buttonRef });\r\n }\r\n\r\n componentWillUnmount() {\r\n const { suscribeFocusElement } = this.context;\r\n suscribeFocusElement({ scenario: 'StatusDropdown', componentRef: null });\r\n }\r\n\r\n onSelect = (selectedStatus) => {\r\n this.toggle();\r\n this.props.changeStatus(selectedStatus);\r\n };\r\n\r\n get dropdownItems() {\r\n return [{\r\n id: 'active',\r\n leftIcon: this.props.isExperiment ? 'TestBeakerSolid' : 'RadioBullet2',\r\n i18nText: _TL_('Enabled'),\r\n }, {\r\n id: 'paused',\r\n leftIcon: this.props.isExperiment ? 'TestBeaker' : 'PauseListView12',\r\n i18nText: _TL_('Paused'),\r\n }];\r\n }\r\n\r\n get items() {\r\n return this.dropdownItems.concat([{\r\n id: 'expired',\r\n leftIcon: 'Remove',\r\n i18nText: _TL_('Expired'),\r\n }, {\r\n id: 'draft',\r\n leftIcon: this.props.isExperiment ? 'TestBeaker' : 'PauseListView12',\r\n i18nText: _TL_('Draft'),\r\n }, {\r\n id: 'BudgetPaused',\r\n leftIcon: this.props.isExperiment ? 'TestBeaker' : 'PauseListView12',\r\n i18nText: _TL_('Budget paused'),\r\n }, {\r\n id: 'BudgetUserPaused',\r\n leftIcon: this.props.isExperiment ? 'TestBeaker' : 'PauseListView12',\r\n i18nText: _TL_('Budget and user paused'),\r\n }, {\r\n id: 'Suspended',\r\n leftIcon: 'Remove',\r\n i18nText: _TL_('Suspended'),\r\n }]);\r\n }\r\n\r\n toggle = () => {\r\n this.setState(state => ({ isOpen: !state.isOpen }));\r\n };\r\n\r\n handleClickOutside = () => {\r\n if (this.state.isOpen) {\r\n this.toggle();\r\n }\r\n };\r\n\r\n renderItem = item => (\r\n \r\n {\r\n i18n => (\r\n
\r\n \r\n \r\n
\r\n )\r\n }\r\n
\r\n )\r\n\r\n renderSelectedItem = (item) => {\r\n // paused is the default selected icon\r\n const selectedItem = findWhere(this.items, { id: item.id }) || this.dropdownItems[1];\r\n return this.renderItem(selectedItem);\r\n };\r\n\r\n render() {\r\n const {\r\n classes,\r\n selectedStatus,\r\n 'aria-label': ariaLabel,\r\n label,\r\n enableDropdownStatus,\r\n } = this.props;\r\n const enableDropdown\r\n = contains(['active', 'paused', ...enableDropdownStatus], selectedStatus.id);\r\n\r\n return (\r\n
\r\n
\r\n \r\n {label && {label}}\r\n
\r\n {this.renderSelectedItem(selectedStatus)}\r\n {enableDropdown && ()}\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\nStatusDropdown.propTypes = {\r\n classes: PropTypes.shape(mapObject(\r\n getStatusDropdownStyles({}, {}),\r\n constant(PropTypes.string.isRequired)\r\n )).isRequired,\r\n changeStatus: PropTypes.func.isRequired,\r\n selectedStatus: PropTypes.shape({\r\n id: PropTypes.any.isRequired,\r\n }).isRequired,\r\n isExperiment: PropTypes.bool,\r\n 'aria-label': PropTypes.string,\r\n label: PropTypes.string,\r\n enableDropdownStatus: PropTypes.arrayOf(PropTypes.string),\r\n};\r\n\r\nStatusDropdown.defaultProps = {\r\n isExperiment: false,\r\n label: '',\r\n 'aria-label': '',\r\n enableDropdownStatus: [],\r\n};\r\n\r\nexport const StyledStatusDropdown =\r\n withDefaultStyles(onClickOutside(StatusDropdown), getStatusDropdownStyles);\r\n","import React from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { submitEvent } from '@bingads-webui-universal/accessibility-helper';\r\nimport { Glyphicon } from '@bingads-webui-react/primitive';\r\nimport { QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { pageClickHandler } from './router-helper';\r\n\r\nexport const SettingsItem = ({ i18n, scope, siteMap }) => {\r\n const { adGroupId, campaignId } = scope.values;\r\n const isSettingsTab = _.result(_.find(siteMap, i => i.selected), 'id') === 'settings';\r\n if (isSettingsTab && (adGroupId || campaignId)) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n pageClickHandler(siteMap, scope, 'settings')}\r\n onKeyDown={submitEvent(() => pageClickHandler(siteMap, scope, 'settings'))}\r\n className=\"entity-content-settings\"\r\n aria-label={i18n.getString(_TL_('Go to settings'))}\r\n type=\"button\"\r\n >\r\n \r\n {i18n.getString(_TL_('Go to settings'))}\r\n \r\n
);\r\n};\r\n\r\nSettingsItem.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n siteMap: PropTypes.arrayOf(PropTypes.any).isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { OverlayTrigger, Tooltip, Glyphicon } from '@bingads-webui-react/primitive';\r\nimport { withOverflowProp } from '@bingads-webui-react/with-overflow-prop';\r\nimport { curlyTemplate } from '@bingads-webui-universal/primitive-utilities';\r\n\r\nconst OverflowCriteriaItemsContent = withOverflowProp(({\r\n targets, isTextOverflow, forwardedRef, i18n, renderEditIcon,\r\n}) => (\r\n
\r\n \r\n {targets[0]}\r\n \r\n }\r\n >\r\n {targets[0]}\r\n \r\n {targets.length > 1 && (\r\n \r\n {curlyTemplate(i18n.getString(_TL_('and {{restNumber}} More...')))({\r\n restNumber: targets.totalCount && targets.totalCount > 1 ? targets.totalCount - 1 : targets.length - 1,\r\n })}\r\n )\r\n }\r\n {renderEditIcon()}\r\n
\r\n));\r\n\r\nconst CriteriaItemsInternal = ({\r\n targets, emptyValue, i18n, canEdit,\r\n}) => {\r\n const renderEditIcon = () => (canEdit ? (\r\n \r\n ) : null);\r\n\r\n if (!(targets && targets.length)) {\r\n return (\r\n
\r\n {emptyValue}\r\n {renderEditIcon()}\r\n
\r\n );\r\n }\r\n\r\n return ();\r\n};\r\n\r\nCriteriaItemsInternal.propTypes = {\r\n /* eslint-disable react/forbid-prop-types */\r\n targets: PropTypes.array,\r\n emptyValue: PropTypes.string.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n canEdit: PropTypes.bool,\r\n};\r\n\r\nCriteriaItemsInternal.defaultProps = {\r\n targets: [],\r\n canEdit: false,\r\n};\r\n\r\nexport const CriteriaItems = CriteriaItemsInternal;\r\n","import React from 'react';\r\nimport { compose } from 'underscore';\r\nimport {\r\n WithCampaignAudienceRepository,\r\n WithAdGroupAudienceRepository,\r\n WithAdGroupCriterionRepository,\r\n WithCampaignCriterionRepository,\r\n} from '../repository';\r\nimport {\r\n convertToSummaryBarAudiences,\r\n convertToSummaryBarLocationsAndDevices,\r\n} from './entity-converter';\r\nimport { CriteriaItems } from './criteria-items-content';\r\n\r\nexport class RepositoryConsumer {\r\n constructor({ scope, i18n }) {\r\n this.scope = scope;\r\n this.i18n = i18n;\r\n }\r\n\r\n get criteriaRenderer() {\r\n return {\r\n renderCamapignAudience: compose(this.consumeCampaignAudienceRepository, this.renderAudienceContent),\r\n renderAdGroupAudience: compose(this.consumeAdGroupAudienceRepository, this.renderAudienceContent),\r\n renderCampaignLocationDevice: isLocation => compose(this.consumeCampaignCriterionRepository, this.renderCampaignLocationDevicesContent(isLocation)),\r\n renderAdGroupLocationDevice: (isLocation, campaignSubType) => compose(this.consumeCampaignCriterionRepository, this.consumeAdGroupCriterionRepository, this.renderAgGroupLocationDeviceContent(isLocation, campaignSubType)),\r\n };\r\n }\r\n // audience\r\n renderAudienceContent = ({\r\n canEdit, ariaLabel, onClick,\r\n } = {}) => ({\r\n audienceFromOData,\r\n }) => {\r\n const audiences = audienceFromOData ? convertToSummaryBarAudiences(audienceFromOData)\r\n : null;\r\n\r\n return ();\r\n };\r\n\r\n consumeCampaignAudienceRepository = CampaignAudience => (\r\n (\r\n \r\n )\r\n );\r\n\r\n consumeAdGroupAudienceRepository = AdGroupAudience => (\r\n (\r\n \r\n )\r\n );\r\n\r\n // locations and devices\r\n renderLocationDeviceContent = (isLocation, locations, devices, {\r\n canEdit, ariaLabel, onClick, excludedLocationOnly,\r\n }) => (isLocation ?\r\n () : ());\r\n\r\n renderCampaignLocationDevicesContent = isLocation => ({\r\n canEdit, ariaLabel, onClick, excludedLocationOnly,\r\n } = {}) => ({\r\n campaignCriterionFromOData,\r\n }) => {\r\n const campaignLocationsAndDevices = convertToSummaryBarLocationsAndDevices(campaignCriterionFromOData, this.i18n);\r\n const { locations, devices } = campaignLocationsAndDevices;\r\n\r\n return this.renderLocationDeviceContent(isLocation, locations, devices, {\r\n canEdit, ariaLabel, onClick, excludedLocationOnly,\r\n });\r\n };\r\n\r\n renderAgGroupLocationDeviceContent = (isLocation, campaignSubType) => ({\r\n canEdit, ariaLabel, onClick, excludedLocationOnly,\r\n } = {}) => ({\r\n adGroupCriterionFromOData,\r\n campaignCriterionFromOData,\r\n }) => {\r\n const campaignLocationsAndDevices = convertToSummaryBarLocationsAndDevices(campaignCriterionFromOData, this.i18n);\r\n const adGroupLocationsAndDevices = convertToSummaryBarLocationsAndDevices(adGroupCriterionFromOData, this.i18n, campaignLocationsAndDevices, campaignSubType);\r\n const { locations, devices } = adGroupLocationsAndDevices;\r\n\r\n return this.renderLocationDeviceContent(isLocation, locations, devices, {\r\n canEdit, ariaLabel, onClick, excludedLocationOnly,\r\n });\r\n };\r\n\r\n consumeCampaignCriterionRepository = CampaignCriterion => (\r\n (\r\n \r\n )\r\n );\r\n\r\n consumeAdGroupCriterionRepository = AdGroupCriterion => passThroughProps => (\r\n (\r\n \r\n )\r\n );\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\n\r\nconst BudgetNotEditableInternal = ({ i18n }) => (\r\n
\r\n {i18n.getString(_TL_('To change an experiment’s budget, you’ll need to change the budget of its original campaign.'))}\r\n
\r\n);\r\n\r\nBudgetNotEditableInternal.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n};\r\n\r\nexport const BudgetNotEditable = withI18nConsumer(BudgetNotEditableInternal);\r\n","export const budgetLandscapeLegacyStrings = [{\r\n ColumnName_EstimatedSharedBudget: _TL_('Shared budget'),\r\n ColumnName_SharedBudgetAmount: _TL_('Shared budget'),\r\n ColumnName_BudgetAmount: _TL_('Budget'),\r\n ColumnName_EstimatedBudget: _TL_('Budget'),\r\n ColumnName_EstimatedImpressions: _TL_('Weekly est. impr.'),\r\n ColumnName_EstimatedClicks: _TL_('Estimated clicks'),\r\n ColumnName_EstimatedConversions: _TL_('Estimated conversions'),\r\n ColumnName_EstimatedCost: _TL_('Weekly est. spend'),\r\n BudgetLandscape_Table_Budget_Tip_Forecasting: _TL_('Your campaign may be limited by budget in the coming weeks if you select an amount less than {0}.'),\r\n BudgetLandscape_Table_Budget_Tip_Recovery: _TL_('Your campaign may be limited by budget if you select an amount less than {0}.'),\r\n BudgetLandscape_Table_Budget_Tip: _TL_('Your campaign might still be limited by its budget if you select an amount less than {0}.'),\r\n ErrorMessage_InputNumericValue: _TL_('Please enter a numeric value, such as 100.'),\r\n BudgetSuggestionsValidationMsg: _TL_('The budget amount must be between {0} {1} and {2} {3}.'),\r\n BudgetLandscape_Comment_Recommended: _TL_('(Recommended)'),\r\n BudgetLandscape_Comment_Current: _TL_('(Current)'),\r\n BudgetLandscape_Table_CustomInput: _TL_('Other budget'),\r\n BudgetLandscape_Comment_Suggested: _TL_('(Suggested)'),\r\n Apply: _TL_('Apply'),\r\n Cancel: _TL_('Cancel'),\r\n BudgetLandscape_ConversionStatus_0_linkText: _TL_('UET/Conversion tracking'),\r\n BudgetLandscape_ConversionStatus_0_line1: _TL_('Budget opportunity support conversion estimation now.'),\r\n BudgetLandscape_ConversionStatus_0_line2: _TL_('Go to set {0} in order to see conversion information.'),\r\n BudgetLandscape_ConversionStatus_1: _TL_('Conversion data is not enough.'),\r\n Validation_Base_Field_Not_Valid: _TL_('Field is not valid'),\r\n Validation_NotEmpty_Required_Field: _TL_('Required field'),\r\n Validation_String_Max_Length: _TL_('Field should not exceed {{maxlength}} characters'),\r\n Validation_String_Min_Length: _TL_('Field should exceed {{minlength}} characters'),\r\n Validation_String_Invalid_Characters: _TL_('Field contains invalid characters'),\r\n Validation_Number_Require_Numeric: _TL_('Field requires numeric value'),\r\n Validation_Number_Max_Length: _TL_('Number should not exceed max length'),\r\n Validation_Number_Range_Min: _TL_('Number should be larger than {{min}}'),\r\n Validation_Number_Range_Max: _TL_('Number should be smaller than {{max}}'),\r\n Validation_Number_Range_Between: _TL_('Number should be between {{min}} and {{max}}'),\r\n Validation_Array_Size_Max: _TL_('List should have at most {{max}} items'),\r\n Validation_Array_Size_Between: _TL_('List should have at least {{min}} and at most {{max}} items'),\r\n Validation_Array_Items_Invalid: _TL_('Some of items in list are invalid'),\r\n Validation_Array_Items_Duplicate: _TL_('List has duplicate items'),\r\n Validation_NegativeKeywords_ListName_Required: _TL_('The list name is required.'),\r\n Validation_NegativeKeywords_Max_Count: _TL_('Maximum of 5,000 negative keywords'),\r\n Validation_NegativeKeywords_Invalid_Keywords: _TL_('Some of the keyword(s) are invalid: {{invalidKeywords}}'),\r\n Validation_NegativeKeywords_Required: _TL_('At least 1 negative keyword is required.'),\r\n 'Click to learn more about {{item}}': _TL_('Click to learn more about {{item}}'),\r\n 'Click to scope to campaign {{campaignName}}': _TL_('Click to scope to campaign {{campaignName}}'),\r\n}];\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { buildLegacyI18n } from '@bingads-webui/build-legacy-i18n';\r\nimport { BudgetLandScapeTable } from '@bingads-webui-campaign/recommendation-inline-budget-view';\r\nimport { budgetLandscapeLegacyStrings } from './budget-landscape-legacy-strings';\r\n\r\nconst getBudgetLandscapeUrl = ({\r\n adInsightApi,\r\n customerId,\r\n accountId,\r\n campaignId,\r\n isSharedBudget,\r\n budgetId,\r\n}) => {\r\n if (isSharedBudget) {\r\n return `${adInsightApi}AdInsight/V2/Customers(${customerId})/Accounts(${accountId})/Recommendation.GetSharedBudgetLandscape(SharedBudgetId=${budgetId})`;\r\n }\r\n\r\n return `${adInsightApi}AdInsight/V2/Customers(${customerId})/Accounts(${accountId})/Campaigns(${campaignId})/Opportunity.GetBudgetLandscape`;\r\n};\r\n\r\nconst fetchBudgetLandscape = ({\r\n serverContext,\r\n scope,\r\n isSharedBudget,\r\n budgetId,\r\n}) => new Promise((resolve, reject) => {\r\n const {\r\n Token,\r\n ServicesEndpoints,\r\n } = serverContext;\r\n const {\r\n AdInsightAPI: adInsightApi,\r\n } = ServicesEndpoints;\r\n const { aid: accountId, cid: customerId, campaignId } = scope.values;\r\n const url = getBudgetLandscapeUrl({\r\n adInsightApi,\r\n customerId,\r\n accountId,\r\n campaignId,\r\n isSharedBudget,\r\n budgetId,\r\n });\r\n\r\n return $.ajax({\r\n url,\r\n type: 'GET',\r\n headers: {\r\n Authorization: `CCMTSmallToken ${Token}`,\r\n },\r\n }).then(results => resolve(results), reject);\r\n});\r\n\r\nexport const getBudgetLandscapeTableView = ({\r\n serverContext,\r\n scope,\r\n currentBudgetAmount,\r\n isSharedBudget,\r\n budgetId,\r\n i18n,\r\n activityLogger,\r\n}) => fetchBudgetLandscape({\r\n serverContext,\r\n scope,\r\n isSharedBudget,\r\n budgetId,\r\n}).then((res) => {\r\n const rawData = _.chain(res).result('value').first().value();\r\n const {\r\n BudgetRange,\r\n CurrentAccount,\r\n } = serverContext;\r\n let tableView = null;\r\n\r\n const budgetRange = {\r\n CeilingValue: BudgetRange.DailyRange.CeilingValue,\r\n FloorValue: BudgetRange.DailyRange.FloorValue,\r\n };\r\n\r\n if (rawData) {\r\n tableView = new BudgetLandScapeTable({\r\n opportunityData: rawData,\r\n i18n: buildLegacyI18n(i18n, budgetLandscapeLegacyStrings, {\r\n currency: CurrentAccount.CurrencyCode,\r\n timeZone: CurrentAccount.TimeZone,\r\n }),\r\n conversionSummaryStatus: rawData.ConversionStatus,\r\n budgetRange,\r\n currentBudget: currentBudgetAmount,\r\n fromBudgetColumn: true,\r\n fromCampaignTab: true,\r\n isSharedBudget,\r\n });\r\n\r\n tableView.render();\r\n\r\n const { campaignId } = scope.values;\r\n\r\n activityLogger.trace(\r\n {\r\n campaignId,\r\n budgetId,\r\n component: 'campaign summary bar fetch budget landscape',\r\n opportunityId: rawData.OpportunityId,\r\n opportunityData: rawData,\r\n currency: tableView.i18n.currency,\r\n ActionName: 'View',\r\n Channel: 'ClientName:bingadsweb[SummaryBarEditing]',\r\n },\r\n 'AdInsight.Budget'\r\n );\r\n }\r\n\r\n return tableView;\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { BackboneInstanceWrapper } from '@bingads-webui-react/backbone-instance-wrapper';\r\nimport { getBudgetLandscapeTableView } from './budget-landscape-table';\r\n\r\nclass BudgetEditorWithLandscapeInternal extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n const {\r\n serverContext,\r\n scope,\r\n budgetAmount,\r\n i18n,\r\n activityLogger,\r\n isSharedBudget,\r\n budgetId,\r\n } = this.props;\r\n\r\n this.budgetLandscapeTable = React.lazy(() => getBudgetLandscapeTableView({\r\n serverContext,\r\n scope,\r\n currentBudgetAmount: budgetAmount,\r\n i18n,\r\n activityLogger,\r\n isSharedBudget,\r\n budgetId,\r\n }).then((tableView) => {\r\n this.props.setTableView(tableView);\r\n\r\n return {\r\n default: () => (\r\n
\r\n \r\n
),\r\n };\r\n }));\r\n }\r\n\r\n render() {\r\n const BudgetLandscapeTable = this.budgetLandscapeTable;\r\n\r\n return (\r\n {this.props.i18n.getString(_TL_('Loading...'))}
}>\r\n \r\n );\r\n }\r\n}\r\n\r\nBudgetEditorWithLandscapeInternal.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n serverContext: PropTypes.shape({\r\n BudgetRange: PropTypes.shape({}).isRequired,\r\n CurrentAccount: PropTypes.shape({}).isRequired,\r\n }).isRequired,\r\n budgetAmount: PropTypes.number,\r\n setTableView: PropTypes.func.isRequired,\r\n activityLogger: PropTypes.shape({\r\n trace: PropTypes.func.isRequired,\r\n }).isRequired,\r\n isSharedBudget: PropTypes.bool,\r\n budgetId: PropTypes.number,\r\n};\r\n\r\nBudgetEditorWithLandscapeInternal.defaultProps = {\r\n budgetAmount: null,\r\n isSharedBudget: false,\r\n budgetId: 0,\r\n};\r\n\r\nconst Wrapped = withServerContext(BudgetEditorWithLandscapeInternal);\r\n\r\nexport { Wrapped as BudgetEditorWithLandscape };\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { UiBlocker } from '@bingads-webui-react/ui-blocker';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { Button } from '@bingads-webui-react/primitive';\r\nimport classNames from 'classnames';\r\nimport { getBaseEditorStyle } from '../styles';\r\n\r\n// TODO: this is a shared editor footer, migrigated it to shared component later.\r\nclass BaseEditorInternal extends React.Component {\r\n static propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n classes: PropTypes.shape({}).isRequired,\r\n onSave: PropTypes.func.isRequired,\r\n onCancel: PropTypes.func.isRequired,\r\n children: PropTypes.node.isRequired,\r\n isValid: PropTypes.bool.isRequired,\r\n isLoading: PropTypes.bool.isRequired,\r\n };\r\n\r\n onSave() {\r\n this.props.onSave();\r\n }\r\n\r\n onCancel() {\r\n this.props.onCancel();\r\n }\r\n\r\n render() {\r\n const {\r\n i18n, classes, children, isValid, isLoading,\r\n } = this.props;\r\n\r\n return (\r\n \r\n
\r\n {children}\r\n
\r\n
\r\n this.onSave()}\r\n >{i18n.getString(_TL_('Save'))}\r\n \r\n this.onCancel()}\r\n >{i18n.getString(_TL_('Cancel'))}\r\n \r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nconst wrappers = [\r\n withI18nConsumer,\r\n _.partial(withDefaultStyles, _, getBaseEditorStyle),\r\n];\r\n\r\nconst Wrapped = _.compose(...wrappers)(BaseEditorInternal);\r\n\r\nexport const KEYSENTER = 13;\r\nexport { Wrapped as BaseEditor };\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { HelpIcon } from '@bingads-webui-campaign-react/help';\r\nimport { Input, Select } from '@bingads-webui-react/primitive-validation';\r\nimport { Button } from '@bingads-webui-react/primitive';\r\nimport PageContext from '@bingads-webui-static-legacy/page-context';\r\n\r\nexport const BudgetAmountEditor = ({\r\n i18n, errorProcessor, showPerDay, inputClassName, onKeyDown, helpId,\r\n}) => (\r\n
\r\n
\r\n {i18n.getString(_TL_('Budget'))}\r\n \r\n
\r\n
\r\n {showPerDay && (\r\n \r\n {i18n.getString(_TL_('per day'))}\r\n \r\n )}\r\n \r\n
\r\n
);\r\n\r\nBudgetAmountEditor.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n errorProcessor: PropTypes.func,\r\n showPerDay: PropTypes.bool,\r\n inputClassName: PropTypes.string,\r\n onKeyDown: PropTypes.func.isRequired,\r\n helpId: PropTypes.string.isRequired,\r\n};\r\n\r\nBudgetAmountEditor.defaultProps = {\r\n errorProcessor: null,\r\n showPerDay: true,\r\n inputClassName: 'inline-budget-edit-value',\r\n};\r\n\r\nexport const BudgetMinRecommend = ({\r\n i18n, applyRecommend, minBudget,\r\n}) => {\r\n const currencySymbol = i18n.getCurrencySymbol(PageContext.AccountCurrencyCode);\r\n return (\r\n
\r\n
\r\n
\r\n {i18n.getString(_TL_('To best optimize your campaigns, we recommend a minimum budget of '))}\r\n {currencySymbol + minBudget}\r\n {i18n.getString(_TL_('.'))}\r\n
\r\n
\r\n \r\n {i18n.getString(_TL_('Apply recommendation'))}\r\n \r\n
\r\n\r\n
\r\n );\r\n};\r\n\r\nBudgetMinRecommend.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n getCurrencySymbol: PropTypes.func,\r\n }).isRequired,\r\n applyRecommend: PropTypes.func.isRequired,\r\n minBudget: PropTypes.number.isRequired,\r\n};\r\n\r\n\r\nexport const getBudgetTypes = (isDeprecateAcceleratedBudgetEnabled, selectedBudgetType) => ([\r\n ...(isDeprecateAcceleratedBudgetEnabled && selectedBudgetType === 'DailyStandard' ? [] : [{\r\n text: _TL_('Daily accelerated'),\r\n value: 'DailyAccelerated',\r\n }]), {\r\n text: _TL_('Daily standard'),\r\n value: 'DailyStandard',\r\n }]);\r\n\r\nexport const BudgetTypeEditor = ({\r\n permissions, i18n, selectedBudgetType, isDisabled, onSelect,\r\n}) => {\r\n const isDeprecateAcceleratedBudgetEnabled = permissions.IsDeprecateAcceleratedBudgetEnabled;\r\n const budgetTypes = getBudgetTypes(isDeprecateAcceleratedBudgetEnabled, selectedBudgetType);\r\n\r\n return (\r\n
\r\n {i18n.getString(_TL_('Budget type'))}\r\n \r\n {budgetTypes.map(item => (\r\n \r\n ))}\r\n \r\n
);\r\n};\r\n\r\nBudgetTypeEditor.propTypes = {\r\n permissions: PropTypes.shape({\r\n IsDeprecateAcceleratedBudgetEnabled: PropTypes.bool.isRequired,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n selectedBudgetType: PropTypes.PropTypes.oneOf([\r\n 'DailyStandard',\r\n 'DailyAccelerated',\r\n ]).isRequired,\r\n onSelect: PropTypes.func.isRequired,\r\n isDisabled: PropTypes.bool,\r\n};\r\n\r\nBudgetTypeEditor.defaultProps = {\r\n isDisabled: false,\r\n};\r\n","/* eslint-disable react/jsx-no-target-blank */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { Budget } from '@bingads-webui-campaign/campaign-ui-schemas';\r\nimport { CampaignType } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { Form } from '@bingads-webui-react/primitive';\r\nimport { ErrorMessages } from '@bingads-webui-react/validation';\r\nimport { curlyTemplate } from '@bingads-webui-universal/primitive-utilities';\r\nimport { ValidationGroup } from '@bingads-webui-react/primitive-validation';\r\nimport { withServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { MinXandrDailyBudgetRangePerCurrency } from '@bingads-webui-campaign-legacy/common-grid-config/budget/get-budget-range';\r\nimport { isXandrCampaign } from '@bingads-webui-campaign-react/constants';\r\nimport { BudgetEditorWithLandscape } from './budget-landscape';\r\nimport { getBudgetEditorStyle } from '../../styles';\r\nimport { BaseEditor, KEYSENTER } from '../base-editor';\r\nimport { getBulkEditResponseErrors } from '../../helpers';\r\nimport { BudgetAmountEditor, BudgetTypeEditor, BudgetMinRecommend } from '../budget-base-component';\r\n\r\nconst budgetSchema = {\r\n ...Budget,\r\n properties: {\r\n ...Budget.properties,\r\n Amount: {\r\n ...Budget.properties.Amount,\r\n nullable: false,\r\n type: 'number',\r\n maxLength: 15,\r\n },\r\n },\r\n};\r\n\r\nclass CampaignInlineBudgetEditorInternal extends React.Component {\r\n static propTypes = {\r\n permissions: PropTypes.shape({\r\n IsDeprecateAcceleratedBudgetEnabled: PropTypes.bool.isRequired,\r\n IsDeprecateAcceleratedBudgetOptoutEnabled: PropTypes.bool.isRequired,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n serverContext: PropTypes.shape({\r\n BudgetRange: PropTypes.shape({\r\n DailyRange: PropTypes.shape({\r\n FloorValue: PropTypes.number.isRequired,\r\n CeilingValue: PropTypes.number.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n CurrentAccount: PropTypes.shape({ CurrencyCode: PropTypes.string }).isRequired,\r\n }).isRequired,\r\n data: PropTypes.shape({\r\n Amount: PropTypes.number,\r\n Type: PropTypes.string.isRequired,\r\n }).isRequired,\r\n hasBudgetLandscape: PropTypes.bool.isRequired,\r\n campaignType: PropTypes.number.isRequired,\r\n budget: PropTypes.shape({\r\n Type: PropTypes.string.isRequired,\r\n }).isRequired,\r\n classes: PropTypes.shape({}).isRequired,\r\n onSave: PropTypes.func.isRequired,\r\n onCancel: PropTypes.func.isRequired,\r\n updateInlineBudget: PropTypes.func.isRequired,\r\n summaryBarActivityLogger: PropTypes.shape({\r\n summaryBarBudgetActivity: PropTypes.shape({ create: PropTypes.func }).isRequired,\r\n }).isRequired,\r\n campaignSubType: PropTypes.string.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.activityLogger = props.summaryBarActivityLogger\r\n && props.summaryBarActivityLogger.summaryBarBudgetActivity.create();\r\n\r\n const { serverContext, campaignSubType } = props;\r\n\r\n const { BudgetRange } = serverContext;\r\n\r\n this.minimumBudget = BudgetRange.DailyRange.FloorValue;\r\n this.maximumBudget = BudgetRange.DailyRange.CeilingValue;\r\n\r\n if (isXandrCampaign(campaignSubType) && MinXandrDailyBudgetRangePerCurrency[serverContext.CurrentAccount.CurrencyCode]) {\r\n this.minimumBudget = MinXandrDailyBudgetRangePerCurrency[serverContext.CurrentAccount.CurrencyCode];\r\n }\r\n }\r\n\r\n state = {\r\n isValid: false,\r\n data: this.props.data,\r\n serverErrors: [],\r\n };\r\n\r\n onKeyDown = (e) => {\r\n if (e && e.which === KEYSENTER) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.onSave();\r\n }\r\n };\r\n\r\n onValidate = (result) => {\r\n if (result.data.Amount !== this.state.data.Amount) {\r\n this.setState({\r\n isValid: result.isValid,\r\n data: { ...this.state.data, Amount: result.data.Amount },\r\n });\r\n }\r\n };\r\n\r\n onSave = () => {\r\n if (this.state.isValid) {\r\n const updateBudget = (hasBudgetLandscape = false) => this.props.updateInlineBudget({ budget: this.state.data })\r\n .then((response) => {\r\n this.props.onSave(response);\r\n if (this.activityLogger) {\r\n if (this.props.data.Amount && this.props.data.Amount >= 0.1 && this.state.data && this.state.data.Amount < ((this.props.data.Amount)) * 0.5.toFixed(2)) {\r\n this.activityLogger.trace(`Bid${this.state.data.Amount} Less than 50% of current budget${this.props.data.Amount}`);\r\n }\r\n this.activityLogger.trace(\r\n {\r\n updateStatus: 'successful',\r\n value: this.state.data,\r\n component: 'campaign summary bar',\r\n budgetType: 'inline budget',\r\n hasBudgetLandscape,\r\n ...(hasBudgetLandscape ? {\r\n ActionName: 'Accept',\r\n Channel: 'ClientName:bingadsweb[SummaryBarEditing]',\r\n campaignId: this.tableView.campaignId,\r\n opportunityId: this.tableView.opportunityId,\r\n suggestedBudget: this.tableView.ko_model.rawSuggestedBudget,\r\n currency: this.tableView.i18n.currency,\r\n } : {}),\r\n },\r\n 'AdInsight.Budget'\r\n );\r\n }\r\n })\r\n .catch((response) => {\r\n const serverErrors = getBulkEditResponseErrors(response, this.props.i18n);\r\n this.setState({ serverErrors });\r\n\r\n // server error is reported to user trace here as well\r\n if (this.activityLogger) {\r\n this.activityLogger.trace({\r\n updateStatus: 'failed',\r\n serverErrors,\r\n component: 'campaign summary bar',\r\n budgetType: 'inline budget',\r\n hasBudgetLandscape,\r\n });\r\n }\r\n });\r\n\r\n if (this.tableView) {\r\n if (this.tableView.getSelectedNewBudget() === '') {\r\n this.props.onCancel();\r\n } else {\r\n this.setState({ data: { ...this.state.data, Amount: this.tableView.getSelectedNewBudget() } }, () => updateBudget(true));\r\n }\r\n } else {\r\n updateBudget();\r\n }\r\n }\r\n };\r\n\r\n onSelect = (value) => {\r\n this.setState({ data: { ...this.state.data, Type: value } });\r\n };\r\n\r\n setTableView = (tableView) => {\r\n this.tableView = tableView;\r\n\r\n this.tableView.on('saveCustomValueWithKeyboard', () => {\r\n this.onSave();\r\n });\r\n };\r\n\r\n updateBudgetSchemaRange = () => {\r\n budgetSchema.properties.Amount.minimum = this.minimumBudget;\r\n budgetSchema.properties.Amount.maximum = this.maximumBudget;\r\n };\r\n\r\n errorProcessor = (errors) => {\r\n const { serverContext, i18n } = this.props;\r\n const { CurrentAccount } = serverContext;\r\n const { CurrencyCode } = CurrentAccount;\r\n\r\n const customErrors = {\r\n range: curlyTemplate(i18n.getString(_TL_('Your budget should be greater than {{accountCurrencyCode}} {{dailyRangeFloorValue}} and less than your daily max. The daily max. is your monthly budget averaged out over the number of days left in the month.')))({\r\n accountCurrencyCode: CurrencyCode,\r\n dailyRangeFloorValue: this.minimumBudget.toFixed(2),\r\n }),\r\n };\r\n return _.map(\r\n errors,\r\n (oldError, key) => customErrors[key] || oldError\r\n );\r\n };\r\n\r\n applyRecommend = () => {\r\n if (this.activityLogger) {\r\n this.activityLogger.trace('BCCForBudgetMinimumRecommendation: apply');\r\n }\r\n this.setState({\r\n data: { ...this.state.data, Amount: (this.props.data.Amount * 0.5).toFixed(2) },\r\n });\r\n };\r\n\r\n renderInlineBudget = (i18n, data, permissions, isDisabled, showBudgetMinRecommend) => (\r\n
\r\n \r\n {showBudgetMinRecommend ? : null}\r\n \r\n
);\r\n\r\n renderInlineBudgetWithLandscape = (i18n, data, permissions, isDisabled, scope) => (\r\n
\r\n \r\n \r\n
);\r\n\r\n render() {\r\n const {\r\n i18n, classes, onCancel, campaignType, permissions, hasBudgetLandscape, scope, campaignSubType,\r\n } = this.props;\r\n const {\r\n data,\r\n serverErrors,\r\n isValid,\r\n } = this.state;\r\n const isDisabled = campaignType === CampaignType.Smart;\r\n this.showBudgetLandscape = hasBudgetLandscape && permissions.IsBudgetInlineSuggestionEnabled;\r\n\r\n this.updateBudgetSchemaRange(budgetSchema);\r\n this.showBudgetMinRecommend = permissions.dynamic && permissions.dynamic.BCCBudgetImprovementEnabled && this.props.data.Amount && this.props.data.Amount >= 0.1 && data.Amount && (data.Amount < (this.props.data.Amount * 0.5).toFixed(2)) && !isXandrCampaign(campaignSubType);\r\n\r\n if (this.activityLogger && this.showBudgetMinRecommend) {\r\n this.activityLogger.trace('BCCForBudgetMinimumRecommendation: show');\r\n }\r\n\r\n return (\r\n \r\n \r\n
\r\n {this.showBudgetLandscape ? this.renderInlineBudgetWithLandscape(i18n, data, permissions, isDisabled, scope) : this.renderInlineBudget(i18n, data, permissions, isDisabled, this.showBudgetMinRecommend)}\r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst wrappers = [\r\n withServerContext,\r\n _.partial(withDefaultStyles, _, getBudgetEditorStyle),\r\n];\r\n\r\nconst Wrapped = _.compose(...wrappers)(CampaignInlineBudgetEditorInternal);\r\n\r\nexport { Wrapped as CampaignInlineBudgetEditor };\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { Budget } from '@bingads-webui-campaign/campaign-ui-schemas';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { Form } from '@bingads-webui-react/primitive';\r\nimport { ErrorMessages } from '@bingads-webui-react/validation';\r\nimport { ValidationGroup } from '@bingads-webui-react/primitive-validation';\r\nimport { QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { getBudgetEditorStyle } from '../styles';\r\nimport { BaseEditor, KEYSENTER } from './base-editor';\r\nimport { getBulkEditResponseErrors } from '../helpers';\r\nimport { BudgetAmountEditor } from './budget-base-component';\r\nimport { BudgetEditorWithLandscape } from './campaign-budget/budget-landscape';\r\n\r\nconst budgetSchema = {\r\n ...Budget,\r\n properties: {\r\n ...Budget.properties,\r\n Amount: {\r\n ...Budget.properties.Amount,\r\n nullable: false,\r\n type: 'number',\r\n maxLength: 15,\r\n },\r\n },\r\n};\r\n\r\nclass SharedBudgetEditorInternal extends React.Component {\r\n static propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n data: PropTypes.shape({\r\n Amount: PropTypes.number,\r\n }).isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n classes: PropTypes.shape({}).isRequired,\r\n onSave: PropTypes.func.isRequired,\r\n onCancel: PropTypes.func.isRequired,\r\n renderCustomContent: PropTypes.func,\r\n updateSharedBudget: PropTypes.func.isRequired,\r\n summaryBarActivityLogger: PropTypes.shape({\r\n summaryBarBudgetActivity: PropTypes.any,\r\n }).isRequired,\r\n helpId: PropTypes.isRequired,\r\n showBudgetLandscape: PropTypes.bool,\r\n budgetId: PropTypes.isRequired,\r\n };\r\n\r\n static defaultProps = {\r\n renderCustomContent: null,\r\n showBudgetLandscape: false,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.activityLogger = props.summaryBarActivityLogger\r\n && props.summaryBarActivityLogger.summaryBarBudgetActivity.create();\r\n }\r\n\r\n state = {\r\n isValid: false,\r\n data: this.props.data,\r\n serverErrors: [],\r\n }\r\n\r\n onValidate = (result) => {\r\n if (result.data.Amount !== this.state.data.Amount) {\r\n this.setState({\r\n isValid: result.isValid,\r\n data: { Amount: result.data.Amount },\r\n });\r\n }\r\n }\r\n\r\n onKeyDown = (e) => {\r\n if (e && e.which === KEYSENTER) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.onSave();\r\n }\r\n }\r\n\r\n onSave = () => {\r\n if (this.state.isValid) {\r\n const updateSharedBudget = (hasBudgetLandscape = false) => this.props.updateSharedBudget(this.state.data)\r\n .then((response) => {\r\n this.props.onSave(response);\r\n if (this.activityLogger) {\r\n this.activityLogger.trace(\r\n {\r\n updateStatus: 'successful',\r\n value: this.state.data,\r\n component: 'campaign summary bar',\r\n budgetType: 'inline shared budget',\r\n hasBudgetLandscape,\r\n ...(hasBudgetLandscape ? {\r\n ActionName: 'Accept',\r\n budgetId: this.props.budgetId,\r\n Channel: 'ClientName:bingadsweb[SummaryBarEditing]',\r\n campaignId: this.tableView.campaignId,\r\n opportunityId: this.tableView.opportunityId,\r\n suggestedBudget: this.tableView.ko_model.rawSuggestedBudget,\r\n currency: this.tableView.i18n.currency,\r\n } : {}),\r\n },\r\n 'AdInsight.Budget'\r\n );\r\n }\r\n })\r\n .catch((response) => {\r\n const serverErrors = getBulkEditResponseErrors(response, this.props.i18n);\r\n this.setState({ serverErrors });\r\n\r\n // server error is reported to user trace here as well\r\n if (this.activityLogger) {\r\n this.activityLogger.trace({\r\n updateStatus: 'failed',\r\n serverErrors,\r\n component: 'campaign summary bar',\r\n budgetType: 'inline shared budget',\r\n hasBudgetLandscape,\r\n });\r\n }\r\n });\r\n\r\n if (this.tableView) {\r\n if (this.tableView.getSelectedNewBudget() === '') {\r\n // User did nothing on on the table.\r\n this.props.onCancel();\r\n } else {\r\n this.setState({ data: { ...this.state.data, Amount: this.tableView.getSelectedNewBudget() } }, () => updateSharedBudget(true));\r\n }\r\n } else {\r\n updateSharedBudget();\r\n }\r\n }\r\n }\r\n\r\n setTableView = (tableView) => {\r\n if (tableView) {\r\n this.tableView = tableView;\r\n this.tableView.on('saveCustomValueWithKeyboard', () => {\r\n this.onSave();\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n const {\r\n i18n,\r\n classes,\r\n onCancel,\r\n renderCustomContent,\r\n helpId,\r\n showBudgetLandscape,\r\n scope,\r\n budgetId,\r\n } = this.props;\r\n const {\r\n data,\r\n serverErrors,\r\n isValid,\r\n } = this.state;\r\n\r\n return (\r\n \r\n \r\n
{\r\n showBudgetLandscape ? (\r\n
\r\n \r\n
) : (\r\n \r\n )}\r\n {renderCustomContent && renderCustomContent()}\r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst wrappers = [\r\n withI18nConsumer,\r\n _.partial(withDefaultStyles, _, getBudgetEditorStyle),\r\n];\r\n\r\nconst Wrapped = _.compose(...wrappers)(SharedBudgetEditorInternal);\r\n\r\nexport { Wrapped as SharedBudgetEditor };\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { getRouterDep } from '@bingads-webui-campaign-react/legacy-router-dep';\r\nimport { SharedBudgetEditor } from '../shared-budget-editor';\r\n\r\nexport class CampaignSharedBudgetEditor extends React.Component {\r\n static propTypes = {\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n data: PropTypes.shape({\r\n Amount: PropTypes.number,\r\n }).isRequired,\r\n budgetId: PropTypes.number.isRequired,\r\n updateSharedBudget: PropTypes.func.isRequired,\r\n campaignId: PropTypes.number.isRequired,\r\n onSave: PropTypes.func.isRequired,\r\n onCancel: PropTypes.func.isRequired,\r\n summaryBarActivityLogger: PropTypes.shape({\r\n summaryBarBudgetActivity: PropTypes.any,\r\n }).isRequired,\r\n hasBudgetLandscape: PropTypes.bool.isRequired,\r\n };\r\n\r\n\r\n getRouteUrl(routeName, params) {\r\n const { scope, siteMap } = this.props;\r\n\r\n const { getRouteUrl } = getRouterDep(scope, siteMap);\r\n\r\n return getRouteUrl(routeName, params);\r\n }\r\n\r\n getBudgetLink(budgetId) {\r\n return this.getRouteUrl('shared_budget_edit', { budget_id: budgetId });\r\n }\r\n\r\n getCampaignSettingsLink(campaignId) {\r\n return this.getRouteUrl('campaign_edit', { campaign_id: campaignId });\r\n }\r\n\r\n renderBudgetMessage = () => {\r\n const {\r\n i18n, budgetId, campaignId,\r\n } = this.props;\r\n const budgetLink = this.getBudgetLink(budgetId);\r\n const campaignSettingsLink = this.getCampaignSettingsLink(campaignId);\r\n\r\n return (\r\n );\r\n };\r\n\r\n render() {\r\n const {\r\n onSave,\r\n onCancel,\r\n data,\r\n updateSharedBudget,\r\n summaryBarActivityLogger,\r\n hasBudgetLandscape,\r\n scope,\r\n budgetId,\r\n } = this.props;\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { BudgetNotEditable } from './budget-not-editable';\r\nimport { CampaignInlineBudgetEditor } from './inline-budget-editor';\r\nimport { CampaignSharedBudgetEditor } from './shared-budget-editor';\r\n\r\nexport const CampaignBudgetEditor = ({\r\n experimentId, budget, campaignType, campaignId, onSave, onCancel, updateInlineBudget, updateSharedBudget, hasBudgetLandscape, summaryBarActivityLogger, scope, siteMap, i18n, permissions, campaignSubType,\r\n}) => {\r\n if (experimentId > 0) {\r\n return ();\r\n }\r\n\r\n if (budget && budget.Id) {\r\n const data = _.pick(budget, 'Amount');\r\n\r\n return ();\r\n }\r\n\r\n if (budget && budget.Amount) {\r\n const data = _.pick(budget, 'Amount', 'Type');\r\n\r\n return ();\r\n }\r\n return null;\r\n};\r\n\r\nCampaignBudgetEditor.propTypes = {\r\n campaignType: PropTypes.number.isRequired,\r\n campaignId: PropTypes.number.isRequired,\r\n experimentId: PropTypes.number,\r\n budget: PropTypes.shape({}),\r\n onSave: PropTypes.func,\r\n onCancel: PropTypes.func,\r\n updateSharedBudget: PropTypes.func,\r\n updateInlineBudget: PropTypes.func,\r\n hasBudgetLandscape: PropTypes.bool.isRequired,\r\n summaryBarActivityLogger: PropTypes.shape({\r\n summaryBarBudgetActivity: PropTypes.any,\r\n }).isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n permissions: PropTypes.shape({}).isRequired,\r\n campaignSubType: PropTypes.string.isRequired,\r\n};\r\n\r\nCampaignBudgetEditor.defaultProps = {\r\n experimentId: null,\r\n budget: null,\r\n onSave: _.noop,\r\n onCancel: _.noop,\r\n updateInlineBudget: _.noop,\r\n updateSharedBudget: _.noop,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { ceil } from 'lodash';\r\nimport { AdGroup } from '@bingads-webui-campaign/campaign-ui-schemas';\r\nimport { HelpIcon } from '@bingads-webui-campaign-react/help';\r\nimport { isMSStoreAdsCampaign } from '@bingads-webui-campaign-react/ms-store-ads-common';\r\nimport { CampaignType } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { withServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { ReactTemplate } from '@bingads-webui-react/react-template';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { Form } from '@bingads-webui-react/primitive';\r\nimport { BiddingStrategyToRangeKey, BiddingStrategyToBidParam } from '@bingads-webui-campaign/audience-campaign-shared';\r\nimport { defaultMSStoreMinSuggestionBid } from '@bingads-webui-campaign-legacy/budget/shared/defaultBid';\r\nimport { ErrorMessages } from '@bingads-webui-react/validation';\r\nimport { ValidationGroup, Input } from '@bingads-webui-react/primitive-validation';\r\nimport { isXandrCampaign, isXandrVideoAdsCampaign } from '@bingads-webui-campaign-react/constants';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport { getBidEditorStyle } from '../styles';\r\nimport { BaseEditor, KEYSENTER } from './base-editor';\r\nimport { getBulkEditResponseErrors } from '../helpers';\r\n\r\nconst adGroupSchema = {\r\n ...AdGroup,\r\n properties: {\r\n ...AdGroup.properties,\r\n SearchBid: {\r\n ...AdGroup.properties.SearchBid,\r\n nullable: false,\r\n },\r\n CpmBid: {\r\n ...AdGroup.properties.CpmBid,\r\n nullable: false,\r\n },\r\n CpvBid: {\r\n ...AdGroup.properties.CpvBid,\r\n nullable: false,\r\n },\r\n },\r\n};\r\n\r\nconst topicMapping = {\r\n ManualCpc: 'pop_BA_AdGroup_SearchBid',\r\n ManualCpv: 'Page_CampaignGrids_CpvBid',\r\n ManualCpm: 'Page_CampaignGrids_CpmBid',\r\n};\r\n\r\nclass AdGroupBidEditorInternal extends React.Component {\r\n static propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n data: PropTypes.shape({\r\n SearchBid: PropTypes.number,\r\n CpvBid: PropTypes.number,\r\n CpmBid: PropTypes.number,\r\n }).isRequired,\r\n classes: PropTypes.shape({}).isRequired,\r\n onSave: PropTypes.func.isRequired,\r\n onCancel: PropTypes.func.isRequired,\r\n updateBid: PropTypes.func.isRequired,\r\n serverContext: PropTypes.shape({\r\n CurrentAccount: PropTypes.shape({}).isRequired,\r\n }).isRequired,\r\n campaignType: PropTypes.number.isRequired,\r\n bidStrategy: PropTypes.string.isRequired,\r\n campaignSubType: PropTypes.string.isRequired,\r\n permissions: PropTypes.shape({\r\n IsBidLessThan5CentsInShoppingCampaignEnabled: PropTypes.bool.isRequired,\r\n }).isRequired,\r\n summaryBarActivityLogger: PropTypes.shape({\r\n summaryBarBidActivity: PropTypes.any,\r\n }).isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.activityLogger = props.summaryBarActivityLogger\r\n && props.summaryBarActivityLogger.summaryBarBidActivity.create();\r\n this.isMSStoreAdsCampaign = isMSStoreAdsCampaign(pageContext.CurrentCampaign);\r\n this.defaultMSStoreMinSuggestionBid = defaultMSStoreMinSuggestionBid();\r\n }\r\n\r\n state = {\r\n isValid: false,\r\n data: this.props.data,\r\n serverErrors: [],\r\n isLowerThanMinBidSuggestion: this.props.data.SearchBid < defaultMSStoreMinSuggestionBid(),\r\n };\r\n\r\n onValidate = (result) => {\r\n const bidType = BiddingStrategyToBidParam[this.props.bidStrategy] || 'SearchBid';\r\n const newBid = result.data[bidType];\r\n if (newBid !== this.state.data[bidType]) {\r\n this.setState({\r\n isValid: result.isValid,\r\n data: { [bidType]: newBid },\r\n isLowerThanMinBidSuggestion: newBid < this.defaultMSStoreMinSuggestionBid,\r\n });\r\n }\r\n };\r\n\r\n onSave = () => {\r\n if (this.state.isValid) {\r\n this.props.updateBid(this.state.data)\r\n .then((response) => {\r\n this.props.onSave(response);\r\n if (this.activityLogger) {\r\n this.activityLogger.trace({\r\n updateStatus: 'successful',\r\n value: this.state.data,\r\n component: 'ad group summary bar',\r\n });\r\n }\r\n })\r\n .catch((response) => {\r\n const serverErrors = getBulkEditResponseErrors(response, this.props.i18n, 'newadgroup');\r\n this.setState({ serverErrors });\r\n\r\n // server error is reported to user trace here as well\r\n if (this.activityLogger) {\r\n this.activityLogger.trace({\r\n updateStatus: 'failed',\r\n serverErrors,\r\n component: 'ad group summary bar',\r\n });\r\n }\r\n });\r\n }\r\n };\r\n\r\n onKeyDown = (e) => {\r\n if (e && e.which === KEYSENTER) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.onSave();\r\n }\r\n };\r\n\r\n updateBidSchemaRange = () => {\r\n const {\r\n serverContext, campaignType, permissions, bidStrategy, campaignSubType, dealMinimumBid,\r\n } = this.props;\r\n const useProductGroupBidRange = permissions.IsBidLessThan5CentsInShoppingCampaignEnabled && campaignType === CampaignType.Shopping;\r\n let bidRangeKey = useProductGroupBidRange ? 'ProductGroupBidRange' : (BiddingStrategyToRangeKey[bidStrategy] || 'KeywordBidRange');\r\n if (this.isMSStoreAdsCampaign) {\r\n bidRangeKey = 'WindowsStoreAdsBidRange';\r\n } else if (isXandrVideoAdsCampaign(campaignSubType)) {\r\n if (bidStrategy === 'ManualCpv') {\r\n bidRangeKey = 'VideoViewsCPVBidRange';\r\n } else if (bidStrategy === 'ManualCpm') {\r\n bidRangeKey = 'VideoViewsCPMBidRange';\r\n }\r\n }\r\n const bidRange = _.result(serverContext, bidRangeKey);\r\n let min = _.result(bidRange, 'FloorValue');\r\n const max = _.result(bidRange, 'CeilingValue');\r\n\r\n if (isXandrCampaign(campaignSubType)\r\n && permissions.IsDealEnabledForMsAds\r\n && dealMinimumBid && dealMinimumBid < max) {\r\n min = _.max([min, ceil(dealMinimumBid, 2)]);\r\n }\r\n\r\n const bidType = BiddingStrategyToBidParam[bidStrategy] || 'SearchBid';\r\n adGroupSchema.properties[bidType].minimum = min;\r\n adGroupSchema.properties[bidType].maximum = max;\r\n };\r\n\r\n errorProcessor = (errors) => {\r\n const { i18n } = this.props;\r\n const customErrors = {\r\n required: i18n.getString(_TL_('Bid is required.')),\r\n };\r\n\r\n return _.map(\r\n errors,\r\n (oldError, key) => customErrors[key] || oldError\r\n );\r\n };\r\n\r\n render() {\r\n const {\r\n i18n, classes, onCancel, serverContext, bidStrategy,\r\n } = this.props;\r\n const {\r\n data,\r\n serverErrors,\r\n isValid,\r\n isLowerThanMinBidSuggestion,\r\n } = this.state;\r\n const { CurrentAccount } = serverContext;\r\n const { CurrencyCode } = CurrentAccount;\r\n\r\n this.updateBidSchemaRange(adGroupSchema);\r\n\r\n return (\r\n \r\n \r\n
\r\n
\r\n
\r\n {i18n.getString(_TL_('Default bid'))}\r\n \r\n
\r\n
\r\n {CurrencyCode}\r\n \r\n
\r\n { this.isMSStoreAdsCampaign && isLowerThanMinBidSuggestion &&\r\n
\r\n
\r\n
\r\n
\r\n {text},\r\n minSuggestionBid: this.defaultMSStoreMinSuggestionBid\r\n }}\r\n template={i18n.getString(_TL_('We recommend raising your bid to over {{minSuggestionBid}} for optimal results, because a bid set any lower risks a lack of impressions. {{link}}Learn more{{/link}}'))}\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\nconst wrappers = [\r\n withServerContext,\r\n _.partial(withDefaultStyles, _, getBidEditorStyle),\r\n];\r\n\r\nconst Wrapped = _.compose(...wrappers)(AdGroupBidEditorInternal);\r\n\r\nexport { Wrapped as AdGroupBidEditor };\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { BackboneInstanceWrapper } from '@bingads-webui-react/backbone-instance-wrapper';\r\nimport { CampaignsDatePicker } from '@bingads-webui-campaign/campaigns-date-picker';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\n\r\nclass BaseDateEditorInternal extends React.PureComponent {\r\n render() {\r\n const {\r\n minDate,\r\n maxDate,\r\n selectedDate,\r\n allowNoDate,\r\n i18n,\r\n editorName,\r\n setDatePicker,\r\n } = this.props;\r\n\r\n this.datePicker = new CampaignsDatePicker({\r\n minDate,\r\n maxDate,\r\n selectedDate,\r\n allowNoDate,\r\n noDateLabel: i18n.getString(_TL_('No end date')),\r\n dateLabel: i18n.getString(_TL_('End by')),\r\n datePickerAriaLabel: editorName === 'end-date' ? i18n.getString(_TL_('End date picker')) : i18n.getString(_TL_('Start date picker')),\r\n noDateGroupAriaLabel: i18n.getString(_TL_('No end date')),\r\n });\r\n\r\n setDatePicker(this.datePicker);\r\n\r\n return (\r\n
\r\n \r\n
);\r\n }\r\n}\r\n\r\nBaseDateEditorInternal.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n editorName: PropTypes.string.isRequired,\r\n minDate: PropTypes.instanceOf(Date),\r\n maxDate: PropTypes.instanceOf(Date),\r\n selectedDate: PropTypes.instanceOf(Date),\r\n allowNoDate: PropTypes.bool,\r\n setDatePicker: PropTypes.func.isRequired,\r\n};\r\n\r\nBaseDateEditorInternal.defaultProps = {\r\n minDate: null,\r\n maxDate: null,\r\n selectedDate: null,\r\n allowNoDate: false,\r\n};\r\n\r\nexport const BaseDateEditor = withI18nConsumer(BaseDateEditorInternal);\r\n\r\nexport const parseDate = (datetime) => {\r\n if (!datetime) {\r\n return null;\r\n }\r\n\r\n const date = datetime.substr(0, 10).replace(/-/g, '/');\r\n\r\n return new Date(date);\r\n};\r\n\r\nexport const dateFormatter = i18n => i18n.dateFormatter({\r\n timeZone: null, raw: 'yyyy-MM-dd',\r\n});\r\n","/* istanbul ignore file */ // ignore this file for component test as we will cover it in selenium test\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { Form } from '@bingads-webui-react/primitive';\r\nimport { ErrorMessages } from '@bingads-webui-react/validation';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { BaseDateEditor, parseDate, dateFormatter } from './base-date-editor';\r\nimport { BaseEditor } from '../base-editor';\r\nimport { getOdataResponseErrors } from '../../helpers';\r\nimport { getDateEditorStyle } from '../../styles';\r\n\r\nclass StartDateEditorInternal extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.activityLogger = props.summaryBarActivityLogger\r\n && props.summaryBarActivityLogger.summaryBarExperimentCampaignActivity.create();\r\n }\r\n\r\n state = {\r\n serverErrors: [],\r\n }\r\n\r\n onSave = () => {\r\n if (this.datePicker) {\r\n const {\r\n i18n, changeDate,\r\n } = this.props;\r\n const newSelectedDate = this.datePicker.getSelectedDate();\r\n const startDate = dateFormatter(i18n)(newSelectedDate);\r\n\r\n changeDate({ startDate })\r\n .then((response) => {\r\n this.props.onSave(response);\r\n if (this.activityLogger) {\r\n this.activityLogger.trace({\r\n updateStatus: 'successful',\r\n value: { startDate },\r\n component: 'experiment campaign summary bar',\r\n });\r\n }\r\n })\r\n .catch((response) => {\r\n const serverErrors = getOdataResponseErrors(response, this.props.i18n);\r\n this.setState({ serverErrors });\r\n\r\n // server error is reported to user trace here as well\r\n if (this.activityLogger) {\r\n this.activityLogger.trace({\r\n updateStatus: 'failed',\r\n serverErrors,\r\n component: 'experiment campaign summary bar',\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n setDatePicker = (datePicker) => {\r\n this.datePicker = datePicker;\r\n }\r\n\r\n render() {\r\n const {\r\n data, classes, onCancel,\r\n } = this.props;\r\n const minDate = new Date();\r\n const maxDate = parseDate(data.endDate);\r\n const selectedDate = parseDate(data.startDate);\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\nStartDateEditorInternal.propTypes = {\r\n data: PropTypes.shape({\r\n startDate: PropTypes.string,\r\n endDate: PropTypes.string,\r\n }).isRequired,\r\n classes: PropTypes.shape({}).isRequired,\r\n onSave: PropTypes.func.isRequired,\r\n onCancel: PropTypes.func.isRequired,\r\n changeDate: PropTypes.func.isRequired,\r\n summaryBarActivityLogger: PropTypes.shape({\r\n summaryBarExperimentCampaignActivity: PropTypes.any,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n dateFormatter: PropTypes.func,\r\n }).isRequired,\r\n};\r\n\r\nconst wrappers = [\r\n withI18nConsumer,\r\n _.partial(withDefaultStyles, _, getDateEditorStyle),\r\n];\r\n\r\nconst Wrapped = _.compose(...wrappers)(StartDateEditorInternal);\r\n\r\nexport { Wrapped as StartDateEditor };\r\n","/* istanbul ignore file */ // ignore this file for component test as we will cover it in selenium test\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { Form } from '@bingads-webui-react/primitive';\r\nimport { ErrorMessages } from '@bingads-webui-react/validation';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { BaseDateEditor, parseDate, dateFormatter } from './base-date-editor';\r\nimport { BaseEditor } from '../base-editor';\r\nimport { getOdataResponseErrors } from '../../helpers';\r\nimport { getDateEditorStyle } from '../../styles';\r\n\r\nclass EndDateEditorInternal extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.activityLogger = props.summaryBarActivityLogger\r\n && props.summaryBarActivityLogger.summaryBarExperimentCampaignActivity.create();\r\n }\r\n\r\n state = {\r\n serverErrors: [],\r\n }\r\n\r\n onSave = () => {\r\n if (this.datePicker) {\r\n const {\r\n i18n, changeDate,\r\n } = this.props;\r\n const newSelectedDate = this.datePicker.getSelectedDate();\r\n const endDate = newSelectedDate ? dateFormatter(i18n)(newSelectedDate) : null;\r\n changeDate({ endDate })\r\n .then((response) => {\r\n this.props.onSave(response);\r\n if (this.activityLogger) {\r\n this.activityLogger.trace({\r\n updateStatus: 'successful',\r\n value: { endDate },\r\n component: 'experiment campaign summary bar',\r\n });\r\n }\r\n })\r\n .catch((response) => {\r\n const serverErrors = getOdataResponseErrors(response, this.props.i18n);\r\n this.setState({ serverErrors });\r\n\r\n // server error is reported to user trace here as well\r\n if (this.activityLogger) {\r\n this.activityLogger.trace({\r\n updateStatus: 'failed',\r\n serverErrors,\r\n component: 'experiment campaign summary bar',\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n setDatePicker = (datePicker) => {\r\n this.datePicker = datePicker;\r\n }\r\n\r\n render() {\r\n const {\r\n data, classes, onCancel,\r\n } = this.props;\r\n const minDate = parseDate(data.startDate);\r\n const selectedDate = parseDate(data.endDate);\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\nEndDateEditorInternal.propTypes = {\r\n data: PropTypes.shape({\r\n startDate: PropTypes.string,\r\n endDate: PropTypes.string,\r\n }).isRequired,\r\n classes: PropTypes.shape({}).isRequired,\r\n onSave: PropTypes.func.isRequired,\r\n onCancel: PropTypes.func.isRequired,\r\n changeDate: PropTypes.func.isRequired,\r\n summaryBarActivityLogger: PropTypes.shape({\r\n summaryBarExperimentCampaignActivity: PropTypes.any,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n dateFormatter: PropTypes.func,\r\n }).isRequired,\r\n};\r\n\r\nconst wrappers = [\r\n withI18nConsumer,\r\n _.partial(withDefaultStyles, _, getDateEditorStyle),\r\n];\r\n\r\nconst Wrapped = _.compose(...wrappers)(EndDateEditorInternal);\r\n\r\nexport { Wrapped as EndDateEditor };\r\n","import _ from 'underscore';\r\nimport React, { useContext, useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { formatPercentOneDecimal, CHANNEL_TYPES } from '@bingads-webui-campaign/recommendation-core';\r\nimport { HighchartReactWrapper } from '@bingads-webui-react/highchart-react-wrapper';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { TooltipHost, DirectionalHint, TooltipDelay, Link } from '@fluentui/react';\r\n\r\nconst getChartOptions = (Available, Gained, Dismissed) => ({\r\n chart: {\r\n width: 50,\r\n height: 17,\r\n margin: [0, 0, 0, 0],\r\n type: 'bar',\r\n },\r\n title: {\r\n text: null,\r\n },\r\n xAxis: {\r\n visible: false,\r\n },\r\n yAxis: {\r\n visible: false,\r\n tickPositions: [-2, 102],\r\n },\r\n legend: {\r\n enabled: false,\r\n },\r\n credits: {\r\n enabled: false,\r\n },\r\n tooltip: {\r\n enabled: false,\r\n formatter: null,\r\n },\r\n plotOptions: {\r\n bar: {\r\n animation: false,\r\n pointWidth: 16,\r\n borderColor: '#0078D4',\r\n },\r\n series: {\r\n cursor: 'pointer',\r\n point: {\r\n events: {\r\n click: null,\r\n },\r\n },\r\n stacking: 'normal',\r\n states: {\r\n hover: {\r\n enabled: false,\r\n },\r\n inactive: {\r\n enabled: false,\r\n },\r\n },\r\n },\r\n },\r\n series: [\r\n {\r\n data: [Available * 100],\r\n color: '#FFFFFF',\r\n },\r\n {\r\n data: [Dismissed * 100],\r\n color: '#ABDBFF',\r\n },\r\n {\r\n data: [Gained * 100],\r\n color: '#0078D4',\r\n },\r\n ],\r\n});\r\n\r\nconst hostStyles = {\r\n root: {\r\n display: 'inline-block',\r\n },\r\n};\r\nconst calloutProps = { gapSpace: 7 };\r\nconst tooltipProps = {\r\n maxWidth: '231px',\r\n styles: {\r\n root: {\r\n padding: '8px 10px',\r\n },\r\n },\r\n delay: TooltipDelay.long,\r\n};\r\nconst viewRecommendationStyle = { marginTop: '10px' };\r\n\r\nexport function OptimizationScoreItem(props) {\r\n const { scope } = useContext(ScopeContext);\r\n const { osData, i18n } = props;\r\n\r\n const navigate = useCallback((event) => {\r\n if (event && (event.button !== 0 ||\r\n event.ctrlKey ||\r\n event.shiftKey ||\r\n event.altKey ||\r\n event.metaKey)) {\r\n return true;\r\n }\r\n\r\n event.preventDefault();\r\n scope.set(_.extend({ recsrc: CHANNEL_TYPES.CAMPAIGN_SUMMARY_BAR }, scope.values));\r\n scope.save('/campaign/vnext/recommendations/All');\r\n return false;\r\n }, [scope]);\r\n\r\n const calloutContent = useCallback(() => {\r\n const url = `/campaign/vnext/recommendations/All?${\r\n scope.stringify(_.extend(\r\n {\r\n recsrc: CHANNEL_TYPES.CAMPAIGN_SUMMARY_BAR,\r\n },\r\n scope.values\r\n ))}`;\r\n\r\n return (\r\n
\r\n {i18n.getString(_TL_('View relevant recommendations to improve your optimization score'))}\r\n
\r\n \r\n {i18n.getString(_TL_('View recommendations'))}\r\n \r\n
\r\n
\r\n );\r\n }, [i18n, navigate, scope]);\r\n\r\n const getScore = useCallback(() => {\r\n if (osData && osData.OverallOptimizationScoreBar) {\r\n const { OverallOptimizationScoreBar } = osData;\r\n const { Available, Gained, Dismissed } = OverallOptimizationScoreBar;\r\n return (\r\n \r\n
{formatPercentOneDecimal(Gained + Dismissed, i18n)}
\r\n
\r\n
\r\n );\r\n }\r\n return (\r\n
-
\r\n );\r\n }, [i18n, osData]);\r\n\r\n return (\r\n
\r\n \r\n {i18n.getString(_TL_('Optimization score'))}\r\n
{getScore()}
\r\n \r\n
\r\n );\r\n}\r\n\r\nOptimizationScoreItem.propTypes = {\r\n osData: PropTypes.shape({\r\n OverallOptimizationScoreBar: PropTypes.shape({\r\n Available: PropTypes.number,\r\n Gained: PropTypes.number,\r\n Dismissed: PropTypes.number,\r\n }).isRequired,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n};\r\n","import { pageClickHandler } from '../helpers/router-helper';\r\n\r\nexport const NavigationItem = ({\r\n scope, siteMap, shouldNavigate, targetPage,\r\n}) => {\r\n if (shouldNavigate) {\r\n pageClickHandler(siteMap, scope, targetPage);\r\n }\r\n\r\n return null;\r\n};\r\n\r\nNavigationItem.defaultProps = {\r\n targetPage: 'settings',\r\n};\r\n","import {\r\n compact, noop, contains, isNumber,\r\n} from 'underscore';\r\nimport { endsWith } from 'underscore.string';\r\nimport PropTypes from 'prop-types';\r\nimport $ from 'jquery';\r\nimport { StatusDropdown } from '@bingads-webui-campaign-react/status-dropdown';\r\nimport React from 'react';\r\nimport { Callout } from '@bingads-webui-react/callout';\r\nimport { curlyTemplate } from '@bingads-webui-universal/primitive-utilities';\r\nimport { BiddingStrategyToBidParam } from '@bingads-webui-campaign/audience-campaign-shared';\r\nimport { CampaignType } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { HelpPopup } from '@bingads-webui-react/help-popup';\r\nimport { formatPercentOneDecimal } from '@bingads-webui-campaign/recommendation-core';\r\nimport { isXandrCampaign, isXandrVideoAdsCampaign } from '@bingads-webui-campaign-react/constants';\r\nimport { SettingsItem } from './settings-item';\r\nimport { campaignClickHandler, getCampaignUrl, pageClickHandler } from './router-helper';\r\nimport { RepositoryConsumer } from './repository-consumer';\r\nimport { SharedBudgetConsumer } from './shared-budget-consumer';\r\nimport { CriteriaItems } from './criteria-items-content';\r\nimport { OverflowContent } from '../components/overflow-entity-item';\r\nimport { CampaignBudgetEditor } from '../editors/campaign-budget';\r\nimport { SharedBudgetEditor } from '../editors/shared-budget-editor';\r\nimport { AdGroupBidEditor } from '../editors/adgroup-bid-editor';\r\nimport { StartDateEditor } from '../editors/experiment-campaign/start-date';\r\nimport { EndDateEditor } from '../editors/experiment-campaign/end-date';\r\nimport { OptimizationScoreItem } from '../components/optimization-score-item';\r\nimport { NavigationItem } from '../components/navigation-item';\r\n\r\nconst getCpmText = (i18n, campaignSubType) => {\r\n if (isXandrCampaign(campaignSubType)) {\r\n return i18n.getString(_TL_('CPM for maximizing reach'));\r\n }\r\n\r\n return i18n.getString(_TL_('Manual CPM'));\r\n};\r\n\r\nconst getBidStrategyMap = (i18n, campaignSubType, currentCampaignType) => ({\r\n ManualCpa: currentCampaignType === CampaignType.App ? i18n.getString(_TL_('Manual CPI')) : i18n.getString(_TL_('Manual CPA')),\r\n ManualCpc: i18n.getString(_TL_('Manual CPC')),\r\n ManualCpm: getCpmText(i18n, campaignSubType),\r\n ManualCpv: isXandrVideoAdsCampaign(campaignSubType) ? i18n.getString(_TL_('CPCV')) : i18n.getString(_TL_('Manual CPV')),\r\n EnhancedCpc: i18n.getString(_TL_('Enhanced CPC')),\r\n MaxClicks: i18n.getString(_TL_('Maximize Clicks')),\r\n MaxConversions: i18n.getString(_TL_('Maximize Conversions')),\r\n TargetCpa: i18n.getString(_TL_('Target CPA')),\r\n TargetRoas: i18n.getString(_TL_('Target ROAS')),\r\n MaxConversionValue: i18n.getString(_TL_('Maximize Conversion Value')),\r\n TargetImpressionShare: i18n.getString(_TL_('Target Impression Share')),\r\n Commission: i18n.getString(_TL_('Commission')),\r\n PercentCpc: i18n.getString(_TL_('Percent CPC')),\r\n CostPerSale: i18n.getString(_TL_('Cost per Sale')),\r\n});\r\n\r\nconst getExperimentStatusMap = i18n => ({\r\n Active: i18n.getString(_TL_('Active')),\r\n Paused: i18n.getString(_TL_('Paused')),\r\n Creating: i18n.getString(_TL_('Creating')),\r\n CreationFailed: i18n.getString(_TL_('Creation Failed')),\r\n Ended: i18n.getString(_TL_('Completed')),\r\n Scheduled: i18n.getString(_TL_('Scheduled')),\r\n Graduating: i18n.getString(_TL_('Applying')),\r\n Promoting: i18n.getString(_TL_('Applying')),\r\n Graduated: i18n.getString(_TL_('Applied')),\r\n Promoted: i18n.getString(_TL_('Applied')),\r\n GraduateFailed: i18n.getString(_TL_('Apply Failed')),\r\n PromoteFailed: i18n.getString(_TL_('Apply Failed')),\r\n});\r\n\r\nconst getExperimentTypeMap = i18n => ({\r\n TrafficBased: i18n.getString(_TL_('Search-based')),\r\n CookieBased: i18n.getString(_TL_('Cookie-based')),\r\n});\r\n\r\nconst statusEntityItem = (i18n, { changeStatus, status }, isExperiment, ariaLabel) => ({\r\n className: 'summary-bar-status',\r\n renderEntityItem: () => (),\r\n noOverflow: true,\r\n canEdit: true,\r\n});\r\n\r\nconst experimentStatusEntityItem = (i18n, { status }) => ({\r\n label: i18n.getString(_TL_('Experiment status')),\r\n className: 'summary-bar-experiment-status',\r\n canEdit: false,\r\n renderContent: () => ({getExperimentStatusMap(i18n)[status]}),\r\n});\r\n\r\nconst experimentSplitOptionEntityItem = (i18n, { experimentType }) => ({\r\n label: i18n.getString(_TL_('Split option')),\r\n className: 'summary-bar-experiment-split-option',\r\n renderContent: () => (\r\n \r\n {getExperimentTypeMap(i18n)[experimentType]}\r\n \r\n ),\r\n canEdit: false,\r\n});\r\n\r\nconst originalCampaignEntityItem = (i18n, { originalCampaignId, originalCampaignName, scope }) => ({\r\n label: i18n.getString(_TL_('Original campaign')),\r\n className: 'summary-bar-original-campaign',\r\n ariaLabel: i18n.getString(_TL_('Go to original campaign')),\r\n canEdit: true,\r\n onClick: event => campaignClickHandler(event, originalCampaignId, scope),\r\n renderContent: () => (\r\n
\r\n \r\n
\r\n ),\r\n});\r\n\r\n// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\r\nconst getPanelProps = ({ title, onClose, ...other }) => (isOpen, closePanel) => ({\r\n title,\r\n isOpen,\r\n onClose: () => {\r\n closePanel();\r\n if (onClose) {\r\n onClose();\r\n }\r\n },\r\n getChildren: () => (\r\n
\r\n

{`The ${title} is not implemented yet`}

\r\n
\r\n ),\r\n ...other,\r\n});\r\n\r\nconst getCampaignBudgetEditorName = (experimentId, budget) => {\r\n if (experimentId) {\r\n return 'experiment-budget';\r\n }\r\n\r\n if (budget && budget.Id) {\r\n return 'shared-budget';\r\n }\r\n\r\n if (budget && budget.Amount) {\r\n return 'inline-budget';\r\n }\r\n return '';\r\n};\r\n\r\nconst getTargetContainer = (cssSelector) => {\r\n const item = $(cssSelector);\r\n if (item.length > 0) {\r\n return item[0];\r\n }\r\n return null;\r\n};\r\n\r\nconst getFocusLockProps = parentContainer => ({\r\n getAnchor: () => getTargetContainer(`${parentContainer} > div`),\r\n});\r\n\r\nconst budgetEntityItem = ({\r\n i18n,\r\n budget,\r\n hasBudgetLandscape = false,\r\n canEdit,\r\n campaignType,\r\n campaignSubType,\r\n campaignId,\r\n summaryBarActivityLogger,\r\n experimentId = null,\r\n updateInlineBudget = noop,\r\n updateSharedBudget = noop,\r\n scope,\r\n permissions,\r\n siteMap,\r\n}) => (\r\n {\r\n label: i18n.getString(_TL_('Budget')),\r\n className: 'summary-bar-budget',\r\n text: curlyTemplate(i18n.getString(_TL_('{{budget}}/day')))({ budget: budget.Amount.toFixed(2) }),\r\n ariaLabel: i18n.getString(_TL_('Campaign budget')),\r\n Editor: Callout,\r\n getEditorProps: (show, closeEditor) => ({\r\n title: budget && budget.Id ?\r\n curlyTemplate(i18n.getString(_TL_('Set shared budget: {{budgetName}}')))({\r\n budgetName: budget.Name,\r\n }) : i18n.getString(_TL_('Set campaign budget')),\r\n content: (),\r\n show,\r\n onClose: closeEditor,\r\n closeButton: true,\r\n target: null,\r\n placement: 'bottom',\r\n popoverId: `summary-bar-campaign-${getCampaignBudgetEditorName(experimentId, budget)}-editor`,\r\n popoverClassName: `summary-bar-campaign-${getCampaignBudgetEditorName(experimentId, budget)}-editor`,\r\n closeButtonAriaLabel: i18n.getString(_TL_('Close')),\r\n experimentId,\r\n focusLockContent: true,\r\n focusLockProps: getFocusLockProps('.summary-bar-budget'),\r\n }),\r\n canEdit,\r\n }\r\n);\r\n\r\nconst optimizationScoreEntityItem = (i18n, osData, permissions) => ({\r\n className: 'summary-bar-optimization-score',\r\n text: osData && osData.OverallOptimizationScoreBar ?\r\n formatPercentOneDecimal(osData.OverallOptimizationScoreBar.Gained + osData.OverallOptimizationScoreBar.Dismissed, i18n) : '-',\r\n label: i18n.getString(_TL_('Optimization score')),\r\n ariaLabel: i18n.getString(_TL_('Optimization score')),\r\n renderEntityItem: () => (),\r\n canEdit: false,\r\n});\r\n\r\nconst autoBidStrategyList = ['MaxClicks', 'MaxConversions', 'TargetCpa', 'TargetRoas', 'MaxConversionValue', 'TargetImpressionShare', 'CostPerSale'];\r\nconst bidEntityItem = ({\r\n i18n,\r\n bid,\r\n bidStrategy,\r\n displayBiddingStrategyType,\r\n canEdit,\r\n campaignType,\r\n updateBid,\r\n campaignSubType,\r\n summaryBarActivityLogger,\r\n permissions,\r\n dealMinimumBid,\r\n}) => {\r\n let bidText;\r\n if (bidStrategy === 'CostPerSale') {\r\n bidText = i18n.getString(_TL_('Automatic'));\r\n } else if (contains(autoBidStrategyList, displayBiddingStrategyType)) {\r\n bidText = i18n.getString(_TL_('Auto'));\r\n } else {\r\n bidText = isNumber(bid) ? bid.toFixed(2) : '-';\r\n }\r\n\r\n return {\r\n label: i18n.getString(_TL_('Bid')),\r\n className: 'summary-bar-bid',\r\n text: bidText,\r\n ariaLabel: i18n.getString(_TL_('Bid')),\r\n Editor: Callout,\r\n getEditorProps: (show, closeEditor) => ({\r\n title: i18n.getString(_TL_('Set ad group bid')),\r\n content: (),\r\n show,\r\n onClose: closeEditor,\r\n closeButton: true,\r\n target: null,\r\n placement: 'bottom',\r\n popoverId: 'summary-bar-adgroup-bid-editor',\r\n popoverClassName: 'summary-bar-adgroup-bid-editor',\r\n closeButtonAriaLabel: i18n.getString(_TL_('Close')),\r\n focusLockContent: true,\r\n focusLockProps: getFocusLockProps('.summary-bar-bid'),\r\n }),\r\n canEdit: canEdit && !contains(autoBidStrategyList, displayBiddingStrategyType),\r\n };\r\n};\r\n\r\nconst isDateEditable = (isStartDate, { startDate }) => {\r\n if (isStartDate) {\r\n const isNotStarted = new Date(startDate) > new Date();\r\n\r\n return isNotStarted;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst parseDate = (datetime) => {\r\n if (!datetime) {\r\n return null;\r\n }\r\n\r\n const date = datetime.substr(0, 10).replace(/-/g, '/');\r\n\r\n return new Date(date);\r\n};\r\n\r\nconst reformatDate = (datetime, i18n) => {\r\n const date = parseDate(datetime);\r\n\r\n if (!date) {\r\n return i18n.getString(_TL_('None'));\r\n }\r\n\r\n return i18n.formatDate(date, { timeZone: null, skeleton: 'yMd' });\r\n};\r\n\r\nconst getDateText = (isStartDate, { startDate, endDate }, i18n) => {\r\n const datetime = isStartDate ? startDate : endDate;\r\n\r\n return reformatDate(datetime, i18n);\r\n};\r\n\r\nconst startEndDate = (i18n, { startDate, endDate }, canEdit, changeDate, summaryBarActivityLogger, isStartDate = true) => ({\r\n label: isStartDate ? i18n.getString(_TL_('Start date')) : i18n.getString(_TL_('End date')),\r\n className: `summary-bar-${isStartDate ? 'start-date' : 'end-date'}`,\r\n text: getDateText(isStartDate, { startDate, endDate }, i18n),\r\n ariaLabel: isStartDate ? i18n.getString(_TL_('Start date')) : i18n.getString(_TL_('End date')),\r\n Editor: Callout,\r\n getEditorProps: (show, closeEditor) => ({\r\n title: isStartDate ? i18n.getString(_TL_('Set experiment campaign start date')) : i18n.getString(_TL_('Set experiment campaign end date')),\r\n content: isStartDate ? () : (),\r\n show,\r\n onClose: closeEditor,\r\n closeButton: true,\r\n target: null,\r\n placement: 'bottom',\r\n popoverId: `summary-bar-experiment-campaign-${isStartDate ? 'start' : 'end'}-editor`,\r\n popoverClassName: `summary-bar-experiment-campaign-${isStartDate ? 'start' : 'end'}-editor`,\r\n closeButtonAriaLabel: i18n.getString(_TL_('Close')),\r\n focusLockContent: true,\r\n focusLockProps: getFocusLockProps(`.summary-bar-${isStartDate ? 'start-date' : 'end-date'}`),\r\n }),\r\n canEdit: canEdit && isDateEditable(isStartDate, { startDate }),\r\n});\r\n\r\nconst isNoSettingsPage = (campaignSubType, isAdGroup) => campaignSubType === 'ShoppingSmartAds' && isAdGroup;\r\nconst isSettingsPage = scope => scope && scope.location && scope.location.pathname && endsWith(scope.location.pathname, 'settings');\r\nconst isAudiencesPage = scope => scope && scope.location && scope.location.pathname && endsWith(scope.location.pathname, 'audiences');\r\n\r\nconst criteriaItems = ({\r\n i18n,\r\n scope,\r\n canEdit,\r\n isAdGroup,\r\n siteMap,\r\n campaignSubType,\r\n currentCampaignType,\r\n // these are only for tests\r\n locations,\r\n audiences,\r\n devices,\r\n excludedLocationOnly,\r\n}) => {\r\n const repositoryConsumer = new RepositoryConsumer({ scope, i18n });\r\n const {\r\n renderAdGroupAudience,\r\n renderCamapignAudience,\r\n renderCampaignLocationDevice,\r\n renderAdGroupLocationDevice,\r\n } = repositoryConsumer.criteriaRenderer;\r\n\r\n const renderCriteriaItem = ({\r\n targets,\r\n adGroupCriteriaRenderer,\r\n campaignCriteriaRenderer,\r\n isLocation = false,\r\n }) => {\r\n if (targets) {\r\n const RenderCriteriaItem = ({\r\n onClick, canEdit: canCriteriaItemEdit, ariaLabel,\r\n } = {}) => ();\r\n\r\n RenderCriteriaItem.propTypes = {\r\n onClick: PropTypes.func.isRequired,\r\n canEdit: PropTypes.bool.isRequired,\r\n ariaLabel: PropTypes.string.isRequired,\r\n };\r\n\r\n return RenderCriteriaItem;\r\n } else if (isAdGroup) {\r\n return adGroupCriteriaRenderer();\r\n }\r\n return campaignCriteriaRenderer();\r\n };\r\n\r\n return [\r\n ...(isXandrCampaign(campaignSubType) && !isAdGroup) ? [] : [{\r\n label: i18n.getString(_TL_('Locations')),\r\n className: 'summary-bar-locations',\r\n renderContent: renderCriteriaItem({\r\n targets: locations,\r\n adGroupCriteriaRenderer: () => renderAdGroupLocationDevice(true),\r\n campaignCriteriaRenderer: () => renderCampaignLocationDevice(true),\r\n isLocation: true,\r\n }),\r\n canEdit: canEdit && !isSettingsPage(scope) && !isNoSettingsPage(campaignSubType, isAdGroup),\r\n ariaLabel: i18n.getString(_TL_('Edit Locations')),\r\n overflowItemText: i18n.getString(_TL_('Go to settings page')),\r\n Editor: NavigationItem,\r\n onNavigate: () => pageClickHandler(siteMap, scope, 'settings'),\r\n getEditorProps: shouldNavigate => ({ shouldNavigate, scope, siteMap }),\r\n excludedLocationOnly,\r\n }],\r\n ...((currentCampaignType === CampaignType.PerformanceMax || campaignSubType === 'ShoppingSmartAds' || (isXandrCampaign(campaignSubType) && !isAdGroup)) ? [] :\r\n [{\r\n label: i18n.getString(_TL_('Audiences')),\r\n className: 'summary-bar-audiences',\r\n renderContent: renderCriteriaItem({\r\n targets: audiences,\r\n adGroupCriteriaRenderer: () => renderAdGroupAudience,\r\n campaignCriteriaRenderer: () => renderCamapignAudience,\r\n }),\r\n ariaLabel: i18n.getString(_TL_('Edit Audiences')),\r\n canEdit: canEdit && !isAudiencesPage(scope),\r\n overflowItemText: i18n.getString(_TL_('Go to audiences page')),\r\n Editor: NavigationItem,\r\n onNavigate: () => pageClickHandler(siteMap, scope, 'audiences'),\r\n getEditorProps: shouldNavigate => ({\r\n shouldNavigate,\r\n targetPage: 'audiences',\r\n scope,\r\n siteMap,\r\n }),\r\n }, {\r\n label: i18n.getString(_TL_('Device')),\r\n className: 'summary-bar-devices',\r\n renderContent: renderCriteriaItem({\r\n targets: devices,\r\n adGroupCriteriaRenderer: () => renderAdGroupLocationDevice(false, campaignSubType),\r\n campaignCriteriaRenderer: () => renderCampaignLocationDevice(false),\r\n }),\r\n ariaLabel: i18n.getString(_TL_('Edit Devices')),\r\n overflowItemText: i18n.getString(_TL_('Go to settings page')),\r\n Editor: NavigationItem,\r\n onNavigate: () => pageClickHandler(siteMap, scope, 'settings'),\r\n getEditorProps: shouldNavigate => ({ shouldNavigate, scope, siteMap }),\r\n canEdit: canEdit && !isSettingsPage(scope),\r\n }]),\r\n ];\r\n};\r\n\r\n\r\nconst isBidStrategyEditable = ({\r\n isAdGroup,\r\n currentCampaignType,\r\n scope,\r\n campaignSubType,\r\n bidStrategy,\r\n}) => {\r\n if (currentCampaignType === CampaignType.App) {\r\n return false;\r\n }\r\n if (bidStrategy === 'CostPerSale') {\r\n return false;\r\n }\r\n if (isAdGroup) {\r\n return !isSettingsPage(scope) && !isNoSettingsPage(campaignSubType, isAdGroup) && (currentCampaignType === CampaignType.Default || currentCampaignType === CampaignType.Audience ||\r\n (currentCampaignType === CampaignType.Shopping)) && campaignSubType !== 'ShoppingSponsoredProductAd';\r\n }\r\n return !isSettingsPage(scope) &&\r\n currentCampaignType !== CampaignType.Audience &&\r\n campaignSubType !== 'ShoppingSponsoredProductAd' &&\r\n (currentCampaignType !== CampaignType.Shopping || campaignSubType !== 'ShoppingSmartAds');\r\n};\r\n\r\nconst isAudienceFeedBasedCampaign = ({ currentCampaignType, campaignSubType }) => (\r\n currentCampaignType === CampaignType.Audience && campaignSubType === 'AudienceFeedBased'\r\n);\r\n\r\nconst isOptimizedTargetingEnabled = ({ currentCampaignType, isAdGroup }) => isAdGroup\r\n && currentCampaignType === CampaignType.Audience;\r\n\r\nconst isOptimizedTargetingEditable = ({\r\n isAdGroup,\r\n scope,\r\n campaignSubType,\r\n}) => !isSettingsPage(scope) && !isNoSettingsPage(campaignSubType, isAdGroup);\r\n\r\nconst autoTargetingEntityItem = ({\r\n isAdGroup,\r\n siteMap,\r\n canEdit,\r\n scope,\r\n i18n,\r\n campaignSubType,\r\n predictiveTargeting,\r\n}) => ({\r\n label: i18n.getString(_TL_('Predictive targeting')),\r\n className: 'summary-bar-predictive-targeting',\r\n text: predictiveTargeting ? i18n.getString(_TL_('On')) : i18n.getString(_TL_('Off')),\r\n ariaLabel: i18n.getString(_TL_('Predictive targeting')),\r\n Editor: NavigationItem,\r\n overflowItemText: i18n.getString(_TL_('Go to settings page')),\r\n getEditorProps: shouldNavigate => ({ shouldNavigate, scope, siteMap }),\r\n onNavigate: () => pageClickHandler(siteMap, scope, 'settings'),\r\n canEdit: canEdit && isOptimizedTargetingEditable({ isAdGroup, scope, campaignSubType }),\r\n});\r\n\r\nexport const sharedEntityItems = ({\r\n bidStrategy,\r\n scope,\r\n campaignSubType,\r\n permissions,\r\n siteMap,\r\n canEdit,\r\n currentCampaignType,\r\n isAdGroup = false,\r\n i18n,\r\n predictiveTargeting,\r\n ...rest\r\n}) => [\r\n ...(isXandrCampaign(campaignSubType) && isAdGroup) ? [] : [{\r\n label: i18n.getString(_TL_('Bid strategy')),\r\n className: 'summary-bar-bid-strategy',\r\n text: getBidStrategyMap(i18n, campaignSubType, currentCampaignType)[bidStrategy],\r\n ariaLabel: i18n.getString(_TL_('Bid strategy')),\r\n Editor: NavigationItem,\r\n overflowItemText: i18n.getString(_TL_('Go to settings page')),\r\n getEditorProps: shouldNavigate => ({ shouldNavigate, scope, siteMap }),\r\n onNavigate: () => pageClickHandler(siteMap, scope, 'settings'),\r\n canEdit: canEdit && isBidStrategyEditable({\r\n isAdGroup,\r\n permissions,\r\n currentCampaignType,\r\n scope,\r\n campaignSubType,\r\n bidStrategy,\r\n }),\r\n }],\r\n ...compact(criteriaItems({\r\n i18n,\r\n scope,\r\n canEdit,\r\n isAdGroup,\r\n siteMap,\r\n campaignSubType,\r\n currentCampaignType,\r\n ...rest,\r\n })),\r\n !isAudienceFeedBasedCampaign({ currentCampaignType, campaignSubType }) &&\r\n isOptimizedTargetingEnabled({ isAdGroup, currentCampaignType }) ? autoTargetingEntityItem({\r\n isAdGroup, siteMap, canEdit, scope, i18n, predictiveTargeting, campaignSubType,\r\n }) : null,\r\n {\r\n className: 'overflow-entity-items',\r\n noOverflow: true,\r\n },\r\n campaignSubType !== 'ShoppingSmartAds' || !isAdGroup ? {\r\n className: 'summary-bar-settings',\r\n noOverflow: true,\r\n canEdit: true,\r\n renderEntityItem: () => (\r\n \r\n ),\r\n } : null,\r\n].filter(item => item != null);\r\n\r\nexport const sharedBudgetItems = ({\r\n scope,\r\n i18n,\r\n canEdit,\r\n updateSharedBudget,\r\n summaryBarActivityLogger,\r\n budget,\r\n}) => {\r\n const repositoryConsumer = new SharedBudgetConsumer({ scope, i18n, budget });\r\n const {\r\n renderSharedBudgetAmount,\r\n renderSharedBudgetType,\r\n } = repositoryConsumer.criteriaRenderer;\r\n\r\n return [{\r\n label: i18n.getString(_TL_('Budget')),\r\n className: 'summary-bar-budget',\r\n renderContent: renderSharedBudgetAmount,\r\n ariaLabel: i18n.getString(_TL_('Budget')),\r\n canEdit,\r\n Editor: Callout,\r\n getEditorProps: (show, closeEditor) => ({\r\n title: i18n.getString(_TL_('Set shared budget')),\r\n content: (),\r\n show,\r\n onClose: closeEditor,\r\n closeButton: true,\r\n target: null,\r\n placement: 'bottom',\r\n popoverId: 'summary-bar-shared-budget-editor',\r\n popoverClassName: 'summary-bar-shared-budget-editor',\r\n closeButtonAriaLabel: i18n.getString(_TL_('Close')),\r\n focusLockContent: true,\r\n focusLockProps: getFocusLockProps('.summary-bar-budget'),\r\n }),\r\n }, {\r\n label: i18n.getString(_TL_('Budget type')),\r\n className: 'summary-bar-budget-type',\r\n renderContent: renderSharedBudgetType,\r\n ariaLabel: i18n.getString(_TL_('Budget type')),\r\n canEdit: false,\r\n }];\r\n};\r\n\r\nexport const campaignEntityItems = ({\r\n status,\r\n budget,\r\n i18n,\r\n changeStatus,\r\n canEdit,\r\n currentCampaignType,\r\n campaignSubType,\r\n id,\r\n updateInlineBudget,\r\n updateSharedBudget,\r\n hasBudgetLandscape,\r\n summaryBarActivityLogger,\r\n scope,\r\n permissions,\r\n siteMap,\r\n osData,\r\n ...other\r\n}) => {\r\n const entityItems = [\r\n statusEntityItem(i18n, { changeStatus, status }, false, i18n.getString(_TL_('Campaign status'))),\r\n budgetEntityItem({\r\n i18n,\r\n budget,\r\n hasBudgetLandscape,\r\n canEdit,\r\n campaignType: currentCampaignType,\r\n campaignSubType,\r\n campaignId: id,\r\n summaryBarActivityLogger,\r\n experimentId: null,\r\n updateInlineBudget,\r\n updateSharedBudget,\r\n scope,\r\n permissions,\r\n siteMap,\r\n }),\r\n ];\r\n const isOptimizationScoreOn = permissions.dynamic.OptimizationScore && currentCampaignType !== CampaignType.PerformanceMax;\r\n if (isOptimizationScoreOn) {\r\n entityItems.push(optimizationScoreEntityItem(i18n, osData, permissions));\r\n }\r\n entityItems.push(...sharedEntityItems({\r\n i18n, ...other, canEdit, currentCampaignType, scope, permissions, siteMap, campaignSubType,\r\n }));\r\n\r\n return entityItems;\r\n};\r\n\r\nexport const experimentCampaignEntityItems = ({\r\n status,\r\n startDate,\r\n endDate,\r\n originalCampaignName,\r\n originalCampaignId,\r\n scope,\r\n permissions,\r\n siteMap,\r\n budget,\r\n i18n,\r\n experimentType,\r\n canEdit,\r\n currentCampaignType,\r\n campaignSubType,\r\n id,\r\n experimentId,\r\n summaryBarActivityLogger,\r\n changeStartDate,\r\n changeEndDate,\r\n ...other\r\n}) => [\r\n experimentStatusEntityItem(i18n, { status }),\r\n startEndDate(i18n, { startDate, endDate }, canEdit, changeStartDate, summaryBarActivityLogger),\r\n startEndDate(i18n, { startDate, endDate }, canEdit, changeEndDate, summaryBarActivityLogger, false),\r\n experimentSplitOptionEntityItem(i18n, { experimentType }),\r\n originalCampaignEntityItem(i18n, { originalCampaignId, originalCampaignName, scope }),\r\n budgetEntityItem({\r\n i18n,\r\n budget,\r\n canEdit,\r\n campaignType: currentCampaignType,\r\n campaignSubType,\r\n campaignId: id,\r\n summaryBarActivityLogger,\r\n experimentId,\r\n scope,\r\n permissions,\r\n siteMap,\r\n }),\r\n ...sharedEntityItems({\r\n i18n, ...other, canEdit, currentCampaignType, scope, permissions, siteMap, campaignSubType,\r\n }),\r\n];\r\n\r\nexport const adGroupEntityItems = ({\r\n status,\r\n bid,\r\n bidStrategy,\r\n displayBiddingStrategyType,\r\n i18n,\r\n changeStatus,\r\n canEdit,\r\n updateBid,\r\n currentCampaignType,\r\n permissions,\r\n scope,\r\n siteMap,\r\n summaryBarActivityLogger,\r\n predictiveTargeting,\r\n dealMinimumBid,\r\n ...other\r\n}) => [\r\n statusEntityItem(i18n, { changeStatus, status }, false, i18n.getString(_TL_('Ad group status'))),\r\n bidEntityItem({\r\n i18n,\r\n bid,\r\n bidStrategy,\r\n displayBiddingStrategyType,\r\n canEdit,\r\n campaignType: currentCampaignType,\r\n campaignSubType: other.campaignSubType,\r\n updateBid,\r\n summaryBarActivityLogger,\r\n permissions,\r\n dealMinimumBid,\r\n }),\r\n ...sharedEntityItems({\r\n i18n, ...other, canEdit, currentCampaignType, scope, permissions, siteMap, isAdGroup: true, bidStrategy, predictiveTargeting,\r\n }),\r\n];\r\n\r\nexport const experimentAdGroupEntityItems = ({\r\n status,\r\n bid,\r\n bidStrategy,\r\n displayBiddingStrategyType,\r\n i18n,\r\n changeStatus,\r\n canEdit,\r\n updateBid,\r\n currentCampaignType,\r\n permissions,\r\n scope,\r\n siteMap,\r\n summaryBarActivityLogger,\r\n ...other\r\n}) => [\r\n statusEntityItem(i18n, { changeStatus, status }, true, i18n.getString(_TL_('Ad group status'))),\r\n bidEntityItem({\r\n i18n,\r\n bid,\r\n bidStrategy,\r\n displayBiddingStrategyType,\r\n canEdit,\r\n campaignType: currentCampaignType,\r\n updateBid,\r\n summaryBarActivityLogger,\r\n permissions,\r\n }),\r\n ...sharedEntityItems({\r\n i18n, ...other, canEdit, currentCampaignType, scope, permissions, siteMap, isAdGroup: true, bidStrategy,\r\n }),\r\n];\r\n","import React from 'react';\r\nimport { notificationApi } from '@bingads-webui-campaign/notification-center';\r\nimport { shellTips } from '@bingads-webui-campaign-react/shell-ui-common';\r\n\r\nexport const audienceErrorHandler = (WrappedComponent, i18n) => (err) => {\r\n const errorCode = err.errors && err.errors[0].Code;\r\n const isUserError = (errorCode === 'TooMuchDataToDownload');\r\n if (!isUserError) {\r\n notificationApi.showWarning(i18n.getString(shellTips.shellDataError));\r\n }\r\n\r\n return ();\r\n};\r\n","import _ from 'underscore';\r\nimport { notificationApi } from '@bingads-webui-campaign/notification-center';\r\nimport { getBulkApiErrors, getODataErrors } from '@bingads-webui-campaign/api-errors';\r\n\r\nconst getUnexpectedError = i18n => ([{\r\n message: 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 const getBulkEditResponseErrors = (response, i18n, scenario) => {\r\n if (!response || !response.errors) {\r\n return getUnexpectedError(i18n);\r\n }\r\n\r\n const errors = getBulkApiErrors(response.errors, scenario, i18n);\r\n\r\n if (!errors || !errors[0] || !errors[0].message) {\r\n return getUnexpectedError(i18n);\r\n }\r\n\r\n // error is a api error class\r\n return _.map(errors, error => ({ message: error.message }));\r\n};\r\n\r\nexport const getOdataResponseErrors = (response, i18n) => {\r\n if (!response || !response.errors) {\r\n return getUnexpectedError(i18n);\r\n }\r\n\r\n const errors = getODataErrors(response.errors, i18n);\r\n\r\n if (!errors || !errors[0] || !errors[0].message) {\r\n return getUnexpectedError(i18n);\r\n }\r\n\r\n // error is a api error class\r\n return _.map(errors, error => ({ message: error.message }));\r\n};\r\n\r\n// we need this for some edit function without editor, like status change\r\nexport const showErrorWithAlertCenter = (response, i18n) => {\r\n const serverErrors = getBulkEditResponseErrors(response, i18n);\r\n const error = serverErrors.length && serverErrors[0] && serverErrors[0].message;\r\n // use alert center to show status ;change error\r\n if (error) {\r\n notificationApi.showWarning(error);\r\n }\r\n};\r\n","import { findWhere, result, extend } from 'underscore';\r\nimport { Scope } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport {\r\n breadcrumbClickHandler,\r\n campaignTypes,\r\n summaryBarScopes,\r\n} from './index';\r\n\r\nexport const convertToBreadCrumbItems = ({\r\n campaignName = '',\r\n campaignId = null,\r\n adGroupName = '',\r\n adGroupId = null,\r\n adName = '',\r\n campaignType,\r\n scope,\r\n siteMap,\r\n i18n,\r\n summaryBarActivityLogger,\r\n setClarityTag = null,\r\n}) => {\r\n const items = [];\r\n\r\n let currentScope = Scope.Account;\r\n const changeScopeActivity = summaryBarActivityLogger\r\n && summaryBarActivityLogger.changeScopeActivity.create();\r\n\r\n if (adName) {\r\n currentScope = Scope.Ad;\r\n } else if (adGroupId && adGroupName) {\r\n currentScope = Scope.AdGroup;\r\n } else if (campaignId && campaignName) {\r\n currentScope = Scope.Campaign;\r\n }\r\n\r\n const onBreadcrumbClick = (breadcrumbScope) => {\r\n if (breadcrumbScope === currentScope && currentScope !== Scope.Account) {\r\n return null;\r\n }\r\n\r\n return () => {\r\n if (setClarityTag) {\r\n setClarityTag();\r\n }\r\n breadcrumbClickHandler(breadcrumbScope, scope, siteMap);\r\n if (changeScopeActivity) {\r\n changeScopeActivity.trace({\r\n scope: breadcrumbScope, // Summary bar has no way to change scope to AdGroup.\r\n component: 'Summary Bar',\r\n campaignType,\r\n });\r\n }\r\n };\r\n };\r\n\r\n // add campaign type breadcrumb item\r\n const currentCampaignType = findWhere(campaignTypes, { id: campaignType });\r\n const campaignTypeI18nText = i18n.getString(result(currentCampaignType, 'i18nKey'));\r\n\r\n let currentBreadcrumb = `navigate-${summaryBarScopes.campaignType.id}`;\r\n\r\n items.push({\r\n key: currentBreadcrumb,\r\n text: campaignTypeI18nText,\r\n onClick: onBreadcrumbClick(Scope.Account),\r\n 'aria-label': campaignTypeI18nText,\r\n });\r\n\r\n // add campaign breadcrumb item\r\n if (campaignId && campaignName) {\r\n currentBreadcrumb = `navigate-${summaryBarScopes.campaign.id}`;\r\n items.push({\r\n key: currentBreadcrumb,\r\n text: campaignName,\r\n onClick: onBreadcrumbClick(Scope.Campaign),\r\n 'aria-label': campaignName,\r\n });\r\n }\r\n\r\n // add ad group breadcrumb item\r\n if (adGroupId && adGroupName) {\r\n if (!(campaignId && campaignName)) {\r\n // TODO: discuss with raymond, how we handle throw in new UX\r\n throw new Error('Ad group parent node(campaign) information is missing');\r\n }\r\n currentBreadcrumb = `navigate-${summaryBarScopes.adGroup.id}`;\r\n items.push({\r\n key: currentBreadcrumb,\r\n text: adGroupName,\r\n onClick: onBreadcrumbClick(Scope.AdGroup),\r\n 'aria-label': adGroupName,\r\n });\r\n }\r\n\r\n // add ad name breadcrumb item\r\n if (adName) {\r\n if (!(adGroupId && adGroupName)) {\r\n // TODO: discuss with raymond, how we handle throw in new UX\r\n throw new Error('Ad parent node (ad group) information is missing');\r\n }\r\n currentBreadcrumb = `navigate-${summaryBarScopes.ad.id}`;\r\n items.push({\r\n key: currentBreadcrumb,\r\n text: adName,\r\n 'aria-label': adName,\r\n });\r\n }\r\n\r\n extend(\r\n findWhere(items, { key: currentBreadcrumb }),\r\n { isCurrentItem: true }\r\n );\r\n\r\n return items;\r\n};\r\n\r\n","import React from 'react';\r\nimport { result } from 'underscore';\r\nimport { curlyTemplate } from '@bingads-webui-universal/primitive-utilities';\r\nimport { Breadcrumb } from '@bingads-webui-react/breadcrumb';\r\nimport { Glyphicon } from '@bingads-webui-react/primitive';\r\n\r\n\r\nexport class SharedBudgetConsumer {\r\n constructor({ scope, i18n, budget }) {\r\n this.scope = scope;\r\n this.i18n = i18n;\r\n this.budget = budget;\r\n }\r\n\r\n get criteriaRenderer() {\r\n return {\r\n renderSharedBudgetAmount: this.renderSharedBudgetAmount,\r\n renderSharedBudgetType: this.renderSharedBudgetType,\r\n renderSharedBudgetBreadCrumb: this.renderSharedBudgetBreadCrumb,\r\n };\r\n }\r\n\r\n renderSharedBudgetAmount = ({ canEdit } = {}) => {\r\n const amount = this.budget.Amount;\r\n return (\r\n
\r\n {curlyTemplate(this.i18n.getString(_TL_('{{budget}}/day')))({ budget: amount.toFixed(2) })}\r\n {canEdit ? (\r\n \r\n ) : null}\r\n
\r\n );\r\n };\r\n\r\n renderSharedBudgetType = () => {\r\n const typeLocalize = result({\r\n Accelerated: this.i18n.getString(_TL_('Accelerated')),\r\n DailyStandard: this.i18n.getString(_TL_('Standard')),\r\n }, this.budget.Type);\r\n\r\n return (
{typeLocalize}
);\r\n }\r\n\r\n renderSharedBudgetBreadCrumb = () => {\r\n const items = [{\r\n key: 'shared-library',\r\n text: this.i18n.getString(_TL_('Shared library')),\r\n }, {\r\n key: 'shared-budgets',\r\n text: this.i18n.getString(_TL_('Shared budgets')),\r\n onClick: () => {\r\n this.scope.remove('budgetId');\r\n this.scope.save('/campaign/vnext/sharedbudgets');\r\n },\r\n }, {\r\n key: 'shared-budget-name',\r\n text: this.budget.Name,\r\n isCurrentItem: true,\r\n }];\r\n\r\n return (\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 { CampaignOData } from '@bingads-webui-react/campaign-odata';\r\nimport { notificationApi } from '@bingads-webui-campaign/notification-center';\r\nimport { shellTips } from '@bingads-webui-campaign-react/shell-ui-common';\r\n\r\n// campaign by id api don't return delivery status information\r\nexport const WithCampaignRepository = ({\r\n campaignLoadFallback, WrappedComponent, i18n,\r\n}) => (\r\n currentAccount.Campaigns.get({\r\n // finally this would become $expand=Budget&$select=Id,Name,Status,CampaignType,BiddingScheme,ExperimentId,CampaignSubType\r\n top: 1,\r\n filter: { where: `Id eq ${currentCampaign.navigation.key}` },\r\n select: [\r\n 'Id',\r\n 'Name',\r\n 'Status',\r\n 'CampaignType',\r\n 'DeliveryStatus',\r\n 'DeliveryStatusDetails',\r\n 'Budget',\r\n 'BiddingScheme',\r\n 'ExperimentId',\r\n 'CampaignSubType',\r\n ],\r\n })\r\n }\r\n escapeHatch={({ currentCampaign }) => (currentCampaign ? undefined : null)}\r\n fallback={campaignLoadFallback}\r\n onError={() => {\r\n notificationApi.showWarning(i18n.getString(shellTips.shellDataError));\r\n return campaignLoadFallback;\r\n }}\r\n >\r\n { campaignFromOData =>\r\n ( 0 ? campaignFromOData.value[0] : null} />) }\r\n \r\n);\r\n\r\nWithCampaignRepository.propTypes = {\r\n campaignLoadFallback: PropTypes.element.isRequired,\r\n WrappedComponent: 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 { CampaignOData } from '@bingads-webui-react/campaign-odata';\r\nimport { notificationApi } from '@bingads-webui-campaign/notification-center';\r\nimport { shellTips } from '@bingads-webui-campaign-react/shell-ui-common';\r\n\r\nexport const WithAdGroupRepository = ({\r\n campaignLoadFallback, WrappedComponent, i18n, ...passThroughProps\r\n}) => (\r\n currentAdGroup.get({\r\n // finally this would become $expand=Campaign&$select=Id,Name,EntityStatus,SearchBid,BiddingSchema,DisplayBiddingStrategyType,Medium\r\n select: ['Id', 'Name', 'EntityStatus', 'SearchBid', 'CpvBid', 'CpmBid', 'CpcBid', 'BiddingScheme', 'DisplayBiddingStrategyType', 'Medium', 'UseOptimizedTargeting', 'DealMinimumBid'],\r\n })\r\n }\r\n escapeHatch={({ currentAdGroup }) => (currentAdGroup ? undefined : null)}\r\n fallback={campaignLoadFallback}\r\n onError={() => {\r\n notificationApi.showWarning(i18n.getString(shellTips.shellDataError));\r\n return campaignLoadFallback;\r\n }}\r\n >\r\n {adGroupFromOData =>\r\n ()}\r\n \r\n);\r\n\r\nWithAdGroupRepository.propTypes = {\r\n campaignLoadFallback: PropTypes.element.isRequired,\r\n WrappedComponent: 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 { CampaignOData } from '@bingads-webui-react/campaign-odata';\r\nimport { notificationApi } from '@bingads-webui-campaign/notification-center';\r\nimport { shellTips } from '@bingads-webui-campaign-react/shell-ui-common';\r\n\r\nexport const WithExperimentRepository = ({\r\n campaignLoadFallback, experimentId, WrappedComponent, i18n, ...passThroughProps\r\n}) => (\r\n currentAccount.Experiments.$withKey(experimentId).get({\r\n select: [\r\n 'Id',\r\n 'EndDate',\r\n 'StartDate',\r\n 'ExperimentType',\r\n 'ExperimentName',\r\n 'ExperimentCampaignId',\r\n 'BaseCampaignId',\r\n 'BaseCampaignName',\r\n 'Status',\r\n 'TrafficSplitPercent',\r\n ],\r\n })}\r\n escapeHatch={() => (experimentId ? undefined : null)}\r\n fallback={campaignLoadFallback}\r\n onError={() => {\r\n notificationApi.showWarning(i18n.getString(shellTips.shellDataError));\r\n return campaignLoadFallback;\r\n }}\r\n >\r\n { experimentFromOData =>\r\n () }\r\n \r\n);\r\n\r\nWithExperimentRepository.propTypes = {\r\n campaignLoadFallback: PropTypes.element.isRequired,\r\n experimentId: PropTypes.number.isRequired,\r\n WrappedComponent: 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 { CampaignOData } from '@bingads-webui-react/campaign-odata';\r\nimport { notificationApi } from '@bingads-webui-campaign/notification-center';\r\nimport { shellTips } from '@bingads-webui-campaign-react/shell-ui-common';\r\n\r\nexport const WithSharedBudgetRepository = ({\r\n campaignLoadFallback, budgetId, WrappedComponent, i18n, ...passThroughProps\r\n}) => (\r\n {\r\n const currentBudget = currentAccount.Budgets.$withKey(budgetId);\r\n return currentBudget.get();\r\n }}\r\n fallback={campaignLoadFallback}\r\n onError={() => {\r\n notificationApi.showWarning(i18n.getString(shellTips.shellDataError));\r\n return campaignLoadFallback;\r\n }}\r\n >\r\n { sharedBudgetFromOData =>\r\n () }\r\n \r\n);\r\n\r\nWithSharedBudgetRepository.propTypes = {\r\n campaignLoadFallback: PropTypes.element.isRequired,\r\n budgetId: PropTypes.number.isRequired,\r\n WrappedComponent: 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 { CampaignOData } from '@bingads-webui-react/campaign-odata';\r\nimport { notificationApi } from '@bingads-webui-campaign/notification-center';\r\nimport { shellTips } from '@bingads-webui-campaign-react/shell-ui-common';\r\n\r\nexport const WithCampaignCriterionRepository = ({\r\n WrappedComponent, i18n,\r\n}) => (\r\n currentCampaign.CampaignCriterions.$cast('Model.CampaignCriterion').get({\r\n filter: { where: \"isof(Criterion,'Model.LocationCriterion') or isof(Criterion,'Model.RadiusCriterion') or isof(Criterion,'Model.DeviceCriterion')\" },\r\n })\r\n }\r\n escapeHatch={({ currentCampaign }) => (currentCampaign ? undefined : null)}\r\n fallback={()}\r\n onError={() => {\r\n notificationApi.showWarning(i18n.getString(shellTips.shellDataError));\r\n return ();\r\n }}\r\n >\r\n { campaignCriterionFromOData =>\r\n () }\r\n \r\n);\r\n\r\nWithCampaignCriterionRepository.propTypes = {\r\n WrappedComponent: 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 { CampaignOData } from '@bingads-webui-react/campaign-odata';\r\nimport { notificationApi } from '@bingads-webui-campaign/notification-center';\r\nimport { shellTips } from '@bingads-webui-campaign-react/shell-ui-common';\r\n\r\nexport const WithAdGroupCriterionRepository = ({\r\n WrappedComponent, i18n, ...passThroughProps\r\n}) => (\r\n currentAdGroup.AdGroupCriterions.$cast('Model.AdGroupCriterion').get({\r\n filter: { where: \"isof(Criterion,'Model.LocationCriterion') or isof(Criterion,'Model.RadiusCriterion') or isof(Criterion,'Model.DeviceCriterion')\" },\r\n })\r\n }\r\n escapeHatch={({ currentAdGroup }) => (currentAdGroup ? undefined : null)}\r\n fallback={()}\r\n onError={() => {\r\n notificationApi.showWarning(i18n.getString(shellTips.shellDataError));\r\n return ();\r\n }}\r\n >\r\n { adGroupCriterionFromOData =>\r\n () }\r\n \r\n);\r\n\r\nWithAdGroupCriterionRepository.propTypes = {\r\n WrappedComponent: 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 { CampaignOData } from '@bingads-webui-react/campaign-odata';\r\nimport { audienceErrorHandler } from '../helpers';\r\n\r\nexport const WithCampaignAudienceRepository = ({\r\n WrappedComponent, i18n,\r\n}) => (\r\n currentCampaign.AudienceAssociations['Default.GridData'].$makeCall({\r\n query: {\r\n top: 3,\r\n select: ['AudienceCriterion', 'Level'],\r\n orderby: { 'AudienceCriterion/AudienceName': -1 },\r\n },\r\n payload: {\r\n gridDataParameters: {\r\n DateRange: {\r\n StartDate: i18n.formatDate(new Date(), {\r\n raw: 'yyyy-MM-dd',\r\n }),\r\n EndDate: i18n.formatDate(new Date(), {\r\n raw: 'yyyy-MM-dd',\r\n }),\r\n },\r\n },\r\n },\r\n })\r\n }\r\n escapeHatch={({ currentCampaign }) => (currentCampaign ? undefined : null)}\r\n fallback={()}\r\n onError={audienceErrorHandler(WrappedComponent, i18n)}\r\n >\r\n { audienceFromOData =>\r\n () }\r\n \r\n);\r\n\r\nWithCampaignAudienceRepository.propTypes = {\r\n WrappedComponent: 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 { CampaignOData } from '@bingads-webui-react/campaign-odata';\r\nimport { audienceErrorHandler } from '../helpers';\r\n\r\nexport const WithAdGroupAudienceRepository = ({\r\n WrappedComponent, i18n,\r\n}) => (\r\n currentAdGroup.AudienceAssociations['Default.GridData'].$makeCall({\r\n query: {\r\n top: 3,\r\n select: ['AudienceCriterion', 'Level'],\r\n orderby: { 'AudienceCriterion/AudienceName': -1 },\r\n },\r\n payload: {\r\n gridDataParameters: {\r\n DateRange: {\r\n StartDate: i18n.formatDate(new Date(), {\r\n raw: 'yyyy-MM-dd',\r\n }),\r\n EndDate: i18n.formatDate(new Date(), {\r\n raw: 'yyyy-MM-dd',\r\n }),\r\n },\r\n },\r\n },\r\n })\r\n }\r\n escapeHatch={({ currentAdGroup }) => (currentAdGroup ? undefined : null)}\r\n fallback={()}\r\n onError={audienceErrorHandler(WrappedComponent, i18n)}\r\n >\r\n { audienceFromOData =>\r\n () }\r\n \r\n);\r\n\r\nWithAdGroupAudienceRepository.propTypes = {\r\n WrappedComponent: PropTypes.func.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n};\r\n","export const WithBulkUpdateRepository = ({\r\n patch, scope, edmCampaign, updateLevel, budgetId,\r\n}) => {\r\n const {\r\n values: {\r\n cid, aid, adGroupId, campaignId, budgetId: budgetIdFromScope,\r\n },\r\n } = scope;\r\n\r\n const currentEntity = edmCampaign\r\n .Customers\r\n .$withKey(cid)\r\n .Accounts\r\n .$withKey(aid);\r\n\r\n if (updateLevel === 'Budget') {\r\n const updatedBudgetId = budgetId || budgetIdFromScope;\r\n\r\n return currentEntity.Budgets\r\n .$withKey(updatedBudgetId)\r\n .bulkUpdate({\r\n Id: updatedBudgetId,\r\n ...patch,\r\n });\r\n } else if (updateLevel === 'Campaign') {\r\n return currentEntity.Campaigns\r\n .$withKey(campaignId)\r\n .bulkUpdate({\r\n Id: campaignId,\r\n ...patch,\r\n });\r\n }\r\n\r\n return currentEntity.AdGroups\r\n .$withKey(adGroupId)\r\n .bulkUpdate({\r\n Id: adGroupId,\r\n Campaign: { Id: campaignId },\r\n ...patch,\r\n });\r\n};\r\n","export const WithPatchExperimentRepository = ({\r\n patch, experimentId, scope, edmCampaign,\r\n}) => {\r\n const {\r\n values: {\r\n cid, aid,\r\n },\r\n } = scope;\r\n\r\n const currentEntity = edmCampaign\r\n .Customers\r\n .$withKey(cid)\r\n .Accounts\r\n .$withKey(aid);\r\n\r\n return currentEntity.Experiments\r\n .update(experimentId, patch);\r\n};\r\n","import _ from 'underscore';\r\nimport React, { useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n RecommendationService,\r\n CHANNEL_TYPES,\r\n} from '@bingads-webui-campaign/recommendation-core';\r\nimport featureInstrumentation from '@bingads-webui-campaign-legacy/instrumentation/index';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport { QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { levelAtConstant } from '@bingads-webui-campaign/scope-constants';\r\n\r\nconst RECOMMENDATION_SUMMARY_TOP_NUMBER = 5;\r\nconst permissions = config.get('Permissions') || {};\r\nconst schema = {\r\n scenario: [\r\n {\r\n name: 'loadRecommendationTile',\r\n value: 'LoadRecommendationTab',\r\n setting: {},\r\n activity: [\r\n {\r\n name: 'loadRecommendationTile',\r\n value: 'LoadRecommendationTile',\r\n },\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 },\r\n ],\r\n};\r\n\r\nexport const WithOptimizationScoreRepository = ({\r\n WrappedComponent, scope, ...passThroughProps\r\n}) => {\r\n const [osData, setOsData] = useState({});\r\n const {\r\n aid, campaignId, cid, adGroupId,\r\n } = scope.values;\r\n const { campaignFromOData } = passThroughProps;\r\n const campaignType = campaignFromOData ? campaignFromOData.CampaignType : 'Default';\r\n\r\n useEffect(() => {\r\n if (!campaignId || adGroupId) {\r\n return;\r\n }\r\n\r\n featureInstrumentation.addScenario(schema);\r\n const currentScenario = featureInstrumentation.loadRecommendationTile.create();\r\n const currentActivity = currentScenario.loadRecommendationTile.create();\r\n\r\n const dataService = new RecommendationService({\r\n scope: {\r\n customerId: cid,\r\n accountId: aid,\r\n campaignId,\r\n campaignName: _.result(config.get('CurrentCampaign'), 'Name'),\r\n token: config.get('Token'),\r\n levelAt: levelAtConstant.CAMPAIGN,\r\n entityIds: [campaignId],\r\n },\r\n currentScenario,\r\n currentActivity,\r\n odataPath: config.get('adinsight.odata.url'),\r\n permissions,\r\n lcid: pageContext.CultureLcid,\r\n isNoExpand: true,\r\n channel: CHANNEL_TYPES.CAMPAIGN_SUMMARY_BAR,\r\n });\r\n\r\n dataService.getSummary({\r\n channel: CHANNEL_TYPES.CAMPAIGN_SUMMARY_BAR,\r\n campaignType,\r\n top: RECOMMENDATION_SUMMARY_TOP_NUMBER,\r\n ignoreCoupons: true,\r\n }).then((response) => {\r\n const { data } = response;\r\n\r\n setOsData(data);\r\n });\r\n }, [adGroupId, aid, campaignId, campaignType, cid]);\r\n\r\n return ();\r\n};\r\n\r\nWithOptimizationScoreRepository.propTypes = {\r\n WrappedComponent: PropTypes.func.isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n};\r\n","export const getBaseEditorStyle = () => ({\r\n content: {\r\n flex: 1,\r\n overflowY: 'auto',\r\n overflowX: 'hidden',\r\n height: '100%',\r\n },\r\n formFooter: {\r\n paddingTop: '15px',\r\n },\r\n cancelButton: {\r\n marginLeft: '8px',\r\n },\r\n saveButton: {\r\n '&.btn-default': {\r\n color: '#ffffff',\r\n backgroundColor: '#0078d4',\r\n },\r\n '&.btn-default[disabled]': {\r\n backgroundColor: '#f3f2f1',\r\n color: '#323130',\r\n },\r\n },\r\n});\r\n","import { datePickerStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nconst calloutCloseButtonStyle = {\r\n top: 9,\r\n right: 8,\r\n width: 12,\r\n border: 0,\r\n height: 13,\r\n padding: 0,\r\n position: 'absolute',\r\n background: 'inherit',\r\n minWidth: 12,\r\n};\r\n\r\nexport const getSummaryBarStyle = (_, { palette = {} }) => ({\r\n '@global': {\r\n ...datePickerStyle({ palette }),\r\n '.summary-bar-items > div': {\r\n '& > div:nth-child(2)': {\r\n minHeight: '0px !important',\r\n },\r\n '& .iconba-Edit': {\r\n opacity: 0,\r\n },\r\n '& .entity-multi-content': {\r\n maxWidth: '180px !important',\r\n '& .entity-first-item': {\r\n minWidth: '20px',\r\n },\r\n },\r\n '&:hover, &:active, &:focus': {\r\n background: 'transparent !important',\r\n },\r\n '&.editable': {\r\n '& > div:focus': {\r\n '& .iconba-Edit': {\r\n opacity: 1,\r\n },\r\n },\r\n '&:hover, &:active, &:focus': {\r\n backgroundColor: '#e1dfdd !important',\r\n '& .iconba-Edit': {\r\n opacity: 1,\r\n },\r\n },\r\n cursor: 'pointer',\r\n '& .entity-content-settings': {\r\n paddingTop: '11px',\r\n paddingBottom: '10px',\r\n },\r\n },\r\n },\r\n '#summary-bar-campaign-inline-budget-editor': {\r\n minWidth: '500px',\r\n '& .bingads-webui-react-callout-close-button': calloutCloseButtonStyle,\r\n },\r\n '#summary-bar-shared-budget-editor, #summary-bar-campaign-shared-budget-editor': {\r\n minWidth: '280px',\r\n maxWidth: '500px',\r\n '& .bingads-webui-react-callout-close-button': calloutCloseButtonStyle,\r\n '& .popover-title': {\r\n wordBreak: 'break-word',\r\n },\r\n },\r\n '#summary-bar-campaign-experiment-budget-editor': {\r\n width: '280px',\r\n '& .bingads-webui-react-callout-close-button': calloutCloseButtonStyle,\r\n },\r\n '#summary-bar-adgroup-bid-editor': {\r\n minWidth: '255px',\r\n },\r\n '#summary-bar-experiment-campaign-end-editor, #summary-bar-experiment-campaign-start-editor': {\r\n minWidth: '400px',\r\n },\r\n '.summary-bar-experiment-split-option span.entity-label': {\r\n marginTop: '3px',\r\n },\r\n '.summary-bar-original-campaign .entity-link': {\r\n '&:hover, &:active, &:focus': {\r\n '& .entity-text': {\r\n color: '#0078d4 !important',\r\n },\r\n },\r\n },\r\n '.alert-info-inline': {\r\n '& a': {\r\n color: '#106ebe',\r\n },\r\n },\r\n '.summary-bar-contextual-menu-popover-close-button': {\r\n top: '9px',\r\n width: '12px',\r\n right: '8px',\r\n border: '0',\r\n height: '13px',\r\n padding: '0',\r\n position: 'absolute',\r\n maxWidth: '12px',\r\n minWidth: '12px',\r\n background: 'inherit',\r\n maxHeight: '13px',\r\n minHeight: '13px',\r\n },\r\n '.summary-bar-contextual-menu-popover-button': {\r\n background: 'transparent',\r\n border: 'none',\r\n width: '100%',\r\n padding: '7px 10px',\r\n },\r\n '.overflow-entity-items': {\r\n '& .ms-ContextualMenu-Callout': {\r\n maxWidth: '250px',\r\n '& > .ms-Callout-main': {\r\n overflow: 'visible',\r\n },\r\n '& .ms-ContextualMenu-link': {\r\n '&:focus': {\r\n '& .overflow-item.editable': {\r\n backgroundColor: '#f3f2f1',\r\n '& .iconba-Edit': {\r\n opacity: 1,\r\n },\r\n },\r\n },\r\n padding: '0px',\r\n '& .overflow-item': {\r\n '&.editable': {\r\n '&:hover, &:active, &:focus': {\r\n textDecoration: 'none',\r\n backgroundColor: '#f3f2f1',\r\n '& .iconba-Edit': {\r\n opacity: 1,\r\n },\r\n cursor: 'pointer',\r\n },\r\n },\r\n '& .entity-icon': {\r\n fontSize: '16px',\r\n color: '#106EBE',\r\n display: 'inline-block',\r\n },\r\n width: '100%',\r\n color: '#323130',\r\n padding: '0px 10px',\r\n minWidth: '170px',\r\n alignItems: 'center',\r\n '& .entity-label': {\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n '.summary-bar-status': {\r\n '& .status-dropdown': {\r\n paddingTop: '2px',\r\n paddingBottom: '2px',\r\n },\r\n },\r\n '.summary-bar-overall-score': {\r\n display: 'flex',\r\n '& .summary-bar-overall-score-value': {\r\n marginLeft: '3px',\r\n marginRight: '10px',\r\n fontWeight: 600,\r\n fontSize: 12,\r\n color: palette.themePrimary,\r\n },\r\n '& .summary-bar-overall-score-chart': {\r\n marginTop: '2px',\r\n },\r\n '& .summary-bar-overall-score-none': {\r\n paddingLeft: '4px',\r\n },\r\n },\r\n },\r\n});\r\n","export const getBudgetEditorStyle = () => ({\r\n form: {\r\n fontSize: '14px !important',\r\n '& .error': {\r\n color: '#a80000',\r\n },\r\n '& .budget-amount-editor': {\r\n '& .budget-input': {\r\n '& input': {\r\n width: 'auto',\r\n display: 'inline-block',\r\n marginRight: '10px',\r\n verticalAlign: 'top',\r\n },\r\n '& div[role=\"alert\"]': {\r\n marginTop: 5,\r\n },\r\n },\r\n '& .shared-budget-edit-budget-message-per-day': {\r\n position: 'absolute',\r\n left: 205,\r\n whiteSpace: 'nowrap',\r\n margin: '6px 12px',\r\n },\r\n },\r\n '& .budget-type-container': {\r\n paddingTop: '16px',\r\n marginRight: '32px',\r\n marginBottom: '5px',\r\n },\r\n '& .budget-editor-with-landscape': {\r\n marginRight: '24px',\r\n\r\n '& .budget-type-container': {\r\n borderTop: '1px solid #CCCCCC',\r\n marginTop: '10px',\r\n },\r\n '& .landscape-table': {\r\n '& .tip-message, & .error-message': {\r\n '& span.iconba-Warning': {\r\n marginRight: '5px',\r\n color: '#D83B01',\r\n },\r\n marginBottom: '16px',\r\n marginTop: '16px',\r\n marginLeft: '8px',\r\n },\r\n '& table': {\r\n width: '100%',\r\n '& input': {\r\n marginRight: '8px',\r\n },\r\n '& input[type=\\'radio\\']': {\r\n position: 'relative',\r\n marginLeft: '4px',\r\n },\r\n '& th, & td': {\r\n '&.selected': {\r\n background: 'rgba(237, 237, 237, 0.5)',\r\n },\r\n },\r\n '& td.user-input-cell': {\r\n paddingLeft: '1px',\r\n },\r\n '& tr': {\r\n height: '32px',\r\n },\r\n '& th': {\r\n '&.selected': {\r\n color: '#333',\r\n fontWeight: '500',\r\n },\r\n },\r\n '& td:last-child': {\r\n paddingRight: '5px',\r\n },\r\n '& .user-input': {\r\n display: 'inline',\r\n position: 'relative',\r\n '& .currency-symbol': {\r\n position: 'absolute',\r\n top: '-1px',\r\n left: '6px',\r\n color: '#666666',\r\n },\r\n '& input': {\r\n paddingLeft: '16px',\r\n borderWidth: '1px',\r\n borderColor: '#BBB',\r\n },\r\n '& .symbol-size-2 + input': {\r\n paddingLeft: '25px',\r\n },\r\n '& .symbol-size-3 + input': {\r\n paddingLeft: '35px',\r\n },\r\n '& .error': {\r\n color: '#A80000 !important',\r\n fontSize: 'inherit',\r\n },\r\n },\r\n '& tbody': {\r\n '& tr.selected': {\r\n backgroundColor: '#F3F2F1',\r\n },\r\n },\r\n '& thead': {\r\n '& span': {\r\n fontWeight: '500',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n '& .inline-budget-edit-type': {\r\n marginTop: '5px',\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});\r\n","export const getBidEditorStyle = () => ({\r\n form: {\r\n fontSize: '14px !important',\r\n '& .error': {\r\n color: '#a80000',\r\n },\r\n '& .search-bid-editor': {\r\n '& .bid-input': {\r\n '& input': {\r\n width: 'auto',\r\n display: 'inline-block',\r\n marginRight: '10px',\r\n verticalAlign: 'top',\r\n },\r\n '& div[role=\"alert\"]': {\r\n marginTop: 5,\r\n },\r\n '& .input-addon': {\r\n position: 'absolute',\r\n left: 195,\r\n whiteSpace: 'nowrap',\r\n margin: '6px 12px',\r\n },\r\n },\r\n '& .bidWarning': {\r\n marginTop: 6,\r\n },\r\n },\r\n },\r\n});\r\n","export const getDateEditorStyle = () => ({\r\n form: {\r\n fontSize: '14px !important',\r\n '& .error': {\r\n color: '#a80000',\r\n },\r\n '& .campaigns-date-picker': {\r\n '& .radioInput': {\r\n width: 'auto',\r\n '& .date + div': {\r\n width: '8em',\r\n },\r\n '& input[type=\"radio\"]': {\r\n marginRight: '7.5px',\r\n outline: 'none !important',\r\n position: 'relative',\r\n marginLeft: '2px',\r\n '&:focus': {\r\n outline: '1px solid #605e5c !important',\r\n },\r\n },\r\n '& label': {\r\n display: 'inline-block',\r\n top: '-5px',\r\n position: 'relative',\r\n margin: '0 2px',\r\n fontWeight: '400',\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","export const getSimpleSummaryBarStyle = () => ({\r\n '@global': {\r\n '.summary-bar-breadcrumb': {\r\n position: 'relative',\r\n '& .summary-bar-tag': {\r\n position: 'absolute',\r\n display: 'block',\r\n top: '6px',\r\n right: '-40px',\r\n },\r\n },\r\n },\r\n});\r\n","import { NeutralColors } from '@fluentui/react';\r\n\r\nexport const getBudgetCenterSummaryBarStyle = (_components, { palette }) => ({\r\n '@global': {\r\n '& .summary-bar-divider': {\r\n display: 'none',\r\n },\r\n },\r\n summaryBarContainer: {\r\n marginLeft: 'auto',\r\n marginRight: 95,\r\n },\r\n monthPickerSection: {\r\n height: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n monthPickerButton: {\r\n width: 172,\r\n padding: '0px 4px',\r\n borderColor: NeutralColors.gray80,\r\n },\r\n monthPickerButtonText: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n color: palette.neutralSecondary,\r\n fontWeight: 400,\r\n },\r\n monthText: {\r\n fontSize: 14,\r\n lineHeight: '20px',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n maxWidth: 130,\r\n },\r\n calendarIcon: {\r\n fontSize: 16,\r\n lineHeight: '16px',\r\n marginLeft: 'auto',\r\n top: 0,\r\n },\r\n navigationIcons: {\r\n fontSize: 12,\r\n lineHeight: '12px',\r\n color: palette.neutralSecondary,\r\n '& button:not([disabled]):hover': {\r\n backgroundColor: palette.neutralLight,\r\n },\r\n '& button[disabled]': {\r\n color: palette.neutralTertiaryAlt,\r\n },\r\n },\r\n navigationIconButtonWrapper: {\r\n border: 'none',\r\n padding: 0,\r\n },\r\n navigationIcon: {\r\n padding: 8,\r\n top: 0,\r\n },\r\n monthPickerCallout: {\r\n paddingLeft: 20,\r\n paddingRight: 20,\r\n paddingTop: 20,\r\n backgroundColor: palette.white,\r\n '& .year-components .navContainer': {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n marginBottom: 12,\r\n },\r\n '& .isSelected': {\r\n backgroundColor: `${palette.themePrimary} !important`,\r\n color: palette.white,\r\n },\r\n },\r\n});\r\n","export const surveyStatus = {\r\n INIT: 'init',\r\n SUBMIT: 'submit',\r\n FIRST_DISMISS: 'first-dismiss',\r\n SECOND_DISMISS: 'second-dismiss',\r\n THIRD_DISMISS: 'third-dismiss',\r\n FOURTH_DISMISS: 'fourth-dismiss',\r\n};\r\n","import { result, chain, isEmpty } from 'underscore';\r\n\r\nexport class SurveyPreferenceService {\r\n constructor(props) {\r\n this.surveyPreferenceKey = 'SurveyPreference';\r\n this.PreferenceService = result(props, 'PreferenceService');\r\n\r\n this.initializeSurveyPreference();\r\n }\r\n\r\n initializeSurveyPreference = () => {\r\n if (isEmpty(this.PreferenceService)) {\r\n throw new Error('PreferenceService does not exist');\r\n }\r\n\r\n let surveyPreference = this.getSurveyPreference();\r\n // initialize survey preference if it does not exist\r\n if (isEmpty(surveyPreference)) {\r\n surveyPreference = {\r\n Name: this.surveyPreferenceKey,\r\n Data: {},\r\n Type: 'string',\r\n Version: 1,\r\n };\r\n this.PreferenceService.setAtUserLevel(surveyPreference);\r\n }\r\n };\r\n\r\n getDaysAgo = (days) => {\r\n const now = new Date();\r\n now.setTime(Date.now() - (86400000 * days));\r\n return now;\r\n };\r\n\r\n getDaysAfter = (days, startDate) => {\r\n const date = startDate ? new Date(startDate) : new Date();\r\n date.setTime(date.getTime() + (86400000 * days));\r\n return date;\r\n };\r\n\r\n getSurveyPreference = () => this.PreferenceService.findByNameAtUserLevel(this.surveyPreferenceKey);\r\n getAtUserLevel = key => this.PreferenceService.findByNameAtUserLevel(key);\r\n\r\n getSurveyState = ({ surveyName }) => {\r\n const surveyPreference = this.getSurveyPreference();\r\n return chain(surveyPreference)\r\n .result('Data')\r\n .result(surveyName)\r\n .value();\r\n };\r\n\r\n setSurveyState = ({ surveyName, surveyState }) => {\r\n const surveyPreference = this.getSurveyPreference();\r\n surveyPreference.Data[surveyName] = surveyState;\r\n this.PreferenceService.setAtUserLevel(surveyPreference);\r\n };\r\n}\r\n","import { isEmpty, result } from 'underscore';\r\nimport { surveyStatus } from './survey-status';\r\nimport { SurveyPreferenceService } from './survey-preference-service';\r\n\r\nexport class BaseSurvey {\r\n /*\r\n * @param {props} all context needed for the survey. E.g. serverContext, preferenceService\r\n */\r\n constructor(props) {\r\n this.serverContext = props.serverContext;\r\n this.SurveyPreferenceService = new SurveyPreferenceService({\r\n PreferenceService: props.PreferenceService,\r\n });\r\n this.logActivity = props.logActivity;\r\n\r\n this.isTestEnv = !result(this.serverContext, 'IsProdEnv') && !window.location.href.toLowerCase().includes('ads.microsoft.com');\r\n }\r\n\r\n /*\r\n * @return {React.Component} React component of the survey view\r\n */\r\n getSurveyComponent = () => {\r\n throw new Error('Method not implemented');\r\n };\r\n\r\n /*\r\n * @param {isTestEnv} indicate if a survey is in the test environment\r\n * @return {string} the OCV survey Id where the feedback sent to\r\n */\r\n getSurveyId = (/* isTestEnv */) => {\r\n throw new Error('Method not implemented');\r\n };\r\n\r\n /*\r\n * @return {string} name of the survey. This is used for logging\r\n */\r\n getSurveyName = () => {\r\n throw new Error('Method not implemented');\r\n };\r\n\r\n /*\r\n * Survey should not change their priority without an exception\r\n * @return {number} priority of the survey. The larger the number, the higher the priority\r\n */\r\n getSurveyPriority = () => 100;\r\n\r\n /*\r\n * validate the trigger conditions of the survey\r\n * @return {bool} indicate if the survey is enabled to trigger\r\n */\r\n validateTriggerCondition = () => {\r\n throw new Error('Method not implemented');\r\n };\r\n\r\n /*\r\n * Return the custom params of the survey. E.g. { event: xxx, sku: xxx }\r\n * The params will be sent to the OCV. You can find it in the App Data Fields along with the feedback.\r\n * @return {object} custom params (key-value pairs) of the survey to be sent to the OCV survey\r\n */\r\n getSurveyCustomParams = () => ({});\r\n\r\n /*\r\n * Return the initializationConfig of the survey. This is used to initialize the survey preference\r\n * @return {object} initializationConfig of the survey\r\n * @return {string} initializationConfig.initGroup the group count to split with\r\n * @return {string} initializationConfig.initStartDate the start date of the initialization\r\n * @return {string} initializationConfig.initEndDate the end date of the initialization\r\n */\r\n getInitializationConfig = () => ({});\r\n\r\n /*\r\n * validate the user governance of the survey, e.g. whether the user passes the cooldown period\r\n * @return {bool} indicate if the survey is enabled to trigger\r\n */\r\n validateUserGovernance = () => {\r\n if (this.isTestEnv) {\r\n this.logActivity(`User Governance | survey: ${this.getSurveyName()}, isTestEnv: ${this.isTestEnv}`);\r\n return true;\r\n }\r\n\r\n const checkSurveyState = (surveyState) => {\r\n // check whether current time exceeds the survey next shown date, show the survey if it is\r\n const isSurveyShown = Date.now() > new Date(surveyState.nextShownDate);\r\n this.logActivity(`User Governance | survey: ${this.getSurveyName()}, isSurveyShown: ${isSurveyShown}, Now: ${Date()}, NextShownDate: ${surveyState.nextShownDate}, Status: ${surveyState.status}`);\r\n return isSurveyShown;\r\n };\r\n\r\n const surveyState = this.SurveyPreferenceService.getSurveyState({\r\n surveyName: this.getSurveyName(),\r\n });\r\n\r\n if (!isEmpty(surveyState) && surveyState.nextShownDate != null) {\r\n return checkSurveyState(surveyState);\r\n }\r\n\r\n // not setup the survey preference for this survey yet, initialize the survey preference\r\n const initializationConfig = this.getInitializationConfig();\r\n if (!isEmpty(initializationConfig)) {\r\n // get initializationConfig, initialize the survey preference\r\n if (initializationConfig.initGroup && initializationConfig.initStartDate && initializationConfig.initEndDate) {\r\n const { initGroup } = initializationConfig;\r\n const userGroup = result(this.serverContext, ['CurrentUser', 'Id']) % initGroup;\r\n const initStartDate = new Date(initializationConfig.initStartDate);\r\n const initEndDate = new Date(initializationConfig.initEndDate);\r\n const initUnit = ((initEndDate - initStartDate) / 86400000) / initGroup;\r\n\r\n const newSurveyState = {\r\n status: surveyStatus.INIT,\r\n nextShownDate: this.SurveyPreferenceService.getDaysAfter(Math.floor(userGroup * initUnit), initializationConfig.initStartDate),\r\n };\r\n this.SurveyPreferenceService.setSurveyState({\r\n surveyName: this.getSurveyName(),\r\n surveyState: newSurveyState,\r\n });\r\n this.logActivity(`User Governance | survey: ${this.getSurveyName()}, Initialization success, NextShownDate: ${newSurveyState.nextShownDate}, Status: ${newSurveyState.status}`);\r\n\r\n return checkSurveyState(newSurveyState);\r\n }\r\n\r\n this.logActivity(`User Governance | survey: ${this.getSurveyName()}, Initialization failed, initGroup: ${initializationConfig.initGroup}, initStartDate: ${initializationConfig.initStartDate}, initEndDate: ${initializationConfig.initEndDate}`);\r\n throw new Error(`Initialization failed, initGroup: ${initializationConfig.initGroup}, initStartDate: ${initializationConfig.initStartDate}, initEndDate: ${initializationConfig.initEndDate}`);\r\n } else {\r\n // bypass the initialization, show the survey\r\n this.logActivity(`User Governance | survey: ${this.getSurveyName()}, Bypass initialization`);\r\n return true;\r\n }\r\n };\r\n\r\n /*\r\n * Callback called when rending a survey, update the survey trigger condition / user governance\r\n */\r\n onSurveyRender = () => {\r\n /* not implemented */\r\n };\r\n\r\n /*\r\n * Callback called when submitting a survey, update the survey trigger condition / user governance\r\n */\r\n onSurveySubmit() {\r\n const newSurveyState = {\r\n status: surveyStatus.SUBMIT,\r\n nextShownDate: this.SurveyPreferenceService.getDaysAfter(180),\r\n };\r\n this.SurveyPreferenceService.setSurveyState({\r\n surveyName: this.getSurveyName(),\r\n surveyState: newSurveyState,\r\n });\r\n }\r\n\r\n /*\r\n * Callback called when dismissing a survey, update the survey trigger condition / user governance\r\n */\r\n onSurveyDismiss() {\r\n const surveyState = this.SurveyPreferenceService.getSurveyState({\r\n surveyName: this.getSurveyName(),\r\n });\r\n\r\n let newSurveyState = {};\r\n if (!isEmpty(surveyState)) {\r\n const { status } = surveyState;\r\n switch (status) {\r\n case surveyStatus.FIRST_DISMISS:\r\n // set new state to second-dismiss and next shown date to 14 days\r\n newSurveyState = {\r\n status: surveyStatus.SECOND_DISMISS,\r\n nextShownDate: this.SurveyPreferenceService.getDaysAfter(14),\r\n };\r\n break;\r\n case surveyStatus.SECOND_DISMISS:\r\n // set new state to third-dismiss and next shown date to 30 days\r\n newSurveyState = {\r\n status: surveyStatus.THIRD_DISMISS,\r\n nextShownDate: this.SurveyPreferenceService.getDaysAfter(30),\r\n };\r\n break;\r\n case surveyStatus.THIRD_DISMISS:\r\n // set new state to fourth-dismiss and next shown date to 180 days\r\n newSurveyState = {\r\n status: surveyStatus.FOURTH_DISMISS,\r\n nextShownDate: this.SurveyPreferenceService.getDaysAfter(180),\r\n };\r\n break;\r\n case surveyStatus.INIT:\r\n case surveyStatus.SUBMIT:\r\n case surveyStatus.FOURTH_DISMISS:\r\n default:\r\n // new cycle, set new state to first-dismiss and next shown date to 7 days\r\n newSurveyState = {\r\n status: surveyStatus.FIRST_DISMISS,\r\n nextShownDate: this.SurveyPreferenceService.getDaysAfter(7),\r\n };\r\n break;\r\n }\r\n } else {\r\n // new cycle, set new state to first-dismiss and next shown date to 7 days\r\n newSurveyState = {\r\n status: surveyStatus.FIRST_DISMISS,\r\n nextShownDate: this.SurveyPreferenceService.getDaysAfter(7),\r\n };\r\n }\r\n\r\n this.SurveyPreferenceService.setSurveyState({\r\n surveyName: this.getSurveyName(),\r\n surveyState: newSurveyState,\r\n });\r\n }\r\n\r\n /*\r\n * @return {bool} whether the survey is onboarded to the CSAT reporting pipeline.\r\n * See the details of the pipeline here:\r\n * https://msasg.visualstudio.com/Bing_Ads/_wiki/wikis/Bing_Ads.wiki/122337/CSAT-Reporting\r\n */\r\n isReportingPipelineEnabled = () => false;\r\n\r\n /*\r\n * @return {string} product of the survey. This is used for the CSAT reporting pipeline.\r\n * Only works when isReportingPipelineEnabled is true.\r\n */\r\n getSurveyProduct = () => {\r\n if (this.isReportingPipelineEnabled()) {\r\n throw new Error('Method not implemented');\r\n }\r\n };\r\n\r\n /*\r\n * @return {string} interface of the survey. This is used for the CSAT reporting pipeline.\r\n * Only works when isReportingPipelineEnabled is true.\r\n */\r\n getSurveyInterface = () => {\r\n if (this.isReportingPipelineEnabled()) {\r\n throw new Error('Method not implemented');\r\n }\r\n };\r\n}\r\n","import './global.types';\r\n\r\nexport class IQuestionConfigurator {\r\n surveyConfigurator: any;\r\n position: number;\r\n key: string;\r\n optionKeyToRating: {};\r\n optionKeyToText: {};\r\n serverContext: any;\r\n data: any;\r\n configuration: any;\r\n i18n: any;\r\n validator: any;\r\n\r\n // eslint-disable-next-line no-useless-constructor, no-empty-function\r\n constructor(props: any) {\r\n }\r\n\r\n isValid(answers: any): boolean {\r\n throw new Error('Not implemented');\r\n }\r\n\r\n isVisible(answers: any): boolean {\r\n throw new Error('Not implemented');\r\n }\r\n\r\n getDefaultData(): Object {\r\n throw new Error('Not implemented');\r\n }\r\n\r\n getDefaultDirtyState(bool: boolean): Object {\r\n throw new Error('Not implemented');\r\n }\r\n\r\n isEmail(): boolean {\r\n throw new Error('Not implemented');\r\n }\r\n\r\n isRating(): boolean {\r\n throw new Error('Not implemented');\r\n }\r\n\r\n isComment(): boolean {\r\n throw new Error('Not implemented');\r\n }\r\n\r\n getFeedbackData(answers: any): any {\r\n throw new Error('Not implemented');\r\n }\r\n\r\n getView(): (props: any) => JSX.Element {\r\n throw new Error('Method not implemented.');\r\n }\r\n}\r\n\r\nexport interface I18n {\r\n getString(key, options?: any): string;\r\n}\r\n\r\nexport interface Question {\r\n isRequired: boolean;\r\n Type: typeof IQuestionConfigurator;\r\n key: string;\r\n page: number;\r\n position: number;\r\n // The title of the question may be dependent on the answers to other questions.\r\n getTitle?: (answers: any, surveyConfigurator: any) => string;\r\n // The visibility of a question may dependent on the answers to other questions.\r\n isVisible?: (answers: any) => boolean;\r\n // The description of the question may be dependent on the answers to other questions.\r\n getDescription?: (answers: any, surveyConfigurator: any) => string;\r\n href?: string,\r\n linkText?: string,\r\n}\r\n\r\ninterface SelectionOption {\r\n key: string;\r\n text: string;\r\n hasInput?: boolean;\r\n href?: string;\r\n linkText?: string;\r\n placeholder?: string;\r\n maxLength?: number;\r\n}\r\n\r\nexport interface RatingOption extends SelectionOption {\r\n key: '1' | '2' | '3' | '4' | '5';\r\n rating: 0.2 | 0.4 | 0.6 | 0.8 | 1.0;\r\n hasInput?: false;\r\n}\r\n\r\nexport interface RatingData {\r\n selectedOption: string;\r\n}\r\n\r\ninterface RatingQuestion extends Question {\r\n key: 'rating';\r\n options: RatingOption[];\r\n // if data is set, it will be used to prefill the question\r\n data?: RatingData;\r\n}\r\n\r\nexport interface SingleSelectionData {\r\n selectedOption: string;\r\n [key: string]: string;\r\n}\r\n\r\ninterface SingleSelectionQuestion extends Question {\r\n options: SelectionOption[];\r\n // if data is set, it will be used to prefill the question\r\n data?: SingleSelectionData;\r\n}\r\n\r\nexport interface MultipleSelectionData {\r\n [key: string]: {\r\n input: string,\r\n selected: boolean,\r\n },\r\n}\r\n\r\ninterface MultipleSelectionQuestion extends Question {\r\n options: SelectionOption[];\r\n // if data is set, it will be used to prefill the question\r\n data?: MultipleSelectionData;\r\n}\r\n\r\nexport interface CommentData {\r\n input: string,\r\n}\r\n\r\ninterface CommentQuestion extends Question {\r\n maxLength?: number;\r\n placeholder?: string;\r\n // if data is set, it will be used to prefill the question\r\n data?: CommentData;\r\n}\r\n\r\ninterface EmailOption extends SelectionOption {\r\n key: 'yes' | 'no';\r\n}\r\n\r\nexport interface EmailData {\r\n selectedOption: 'yes' | 'no';\r\n yes?: string,\r\n}\r\n\r\ninterface EmailQuestion extends Question {\r\n key: 'email';\r\n options: EmailOption[];\r\n // if data is set, it will be used to prefill the question\r\n data?: EmailData;\r\n}\r\n\r\nexport type QuestionConfiguration = RatingQuestion | SingleSelectionQuestion | MultipleSelectionQuestion | CommentQuestion | EmailQuestion;\r\n\r\nexport interface PageConfiguration {\r\n}\r\n\r\nexport type Others = {\r\n shouldHideInputWhenNotSelected?: boolean;\r\n isThankYouPageEnabled?: boolean;\r\n isGlobalModalStyleEnabled?: boolean;\r\n userActionAnalysisEnabled?: boolean;\r\n combineTextInputToComment?: boolean;\r\n // survey which triggered by user's action\r\n // e.g. click on a button, is considered as user initiated survey\r\n isUserInitiatedSurvey?: boolean;\r\n shouldAutoClose?: boolean;\r\n isInPageMiddle?: boolean;\r\n isModeless?: boolean;\r\n isBlocking?: boolean;\r\n}\r\n\r\nexport interface SurveyConfiguration {\r\n // feature area is used to classify the feedback. You can find and create feature areas at\r\n // https://ocv.microsoft.com/#/manage/?aid=a9bfe3b9-40d8-443d-9d80-ba3369aa1463\r\n featureArea: string;\r\n // up to one rating question per survey\r\n rating?: RatingQuestion;\r\n // up to one email question per survey\r\n email?: EmailQuestion;\r\n // no restriction on the number of selection/comment questions per survey\r\n questions?: QuestionConfiguration[];\r\n // style json object is used to customize the look and feel of the survey.\r\n style?: any;\r\n // other configuration flags\r\n others?: Others;\r\n // properties for over writing the modal properties\r\n modalSettings?: any;\r\n}\r\n","export class Validator {\r\n validate({ data, configuration }) : boolean {\r\n return true;\r\n }\r\n\r\n // errors for the body except the title\r\n getError({ data, configuration, i18n }) : Object {\r\n return {};\r\n }\r\n\r\n isAnswered({ data, configuration, i18n }) : string | undefined {\r\n return undefined;\r\n }\r\n}\r\n","import React from 'react';\r\nimport { IQuestionConfigurator } from '../../survey.types';\r\nimport { Validator } from '../validator';\r\n\r\nexport class QuestionConfigurator extends IQuestionConfigurator {\r\n constructor({\r\n serverContext, configuration, i18n, surveyConfigurator,\r\n }) {\r\n super({});\r\n this.serverContext = serverContext;\r\n const {\r\n data,\r\n key,\r\n position,\r\n } = configuration;\r\n this.key = key;\r\n this.position = position;\r\n this.data = data;\r\n this.configuration = configuration;\r\n this.i18n = i18n;\r\n this.surveyConfigurator = surveyConfigurator;\r\n this.initValidator();\r\n }\r\n\r\n // polymorphism of the view\r\n get view(): (props: any) => JSX.Element {\r\n throw new Error('Not implemented');\r\n }\r\n\r\n // polymorphism of the validator\r\n initValidator() {\r\n this.validator = new Validator();\r\n }\r\n\r\n // determine if question is valid, delegating to validator\r\n isValid(answers: Object) {\r\n const isVisible = this.isVisible(answers);\r\n if (isVisible) {\r\n const data = answers[this.key];\r\n return this.validator.validate({ data, configuration: this.configuration });\r\n }\r\n return true;\r\n }\r\n\r\n // determine if question is valid, delegating to validator\r\n getError(data: Object) {\r\n return this.validator.getError({\r\n data,\r\n configuration: this.configuration,\r\n i18n: this.i18n,\r\n });\r\n }\r\n\r\n // determine if question is answered, delegating to validator\r\n isAnswered(data: Object) {\r\n return this.validator.isAnswered({\r\n data,\r\n configuration: this.configuration,\r\n i18n: this.i18n,\r\n });\r\n }\r\n\r\n // determine if question is valid, delegating to configuration\r\n isVisible(answers: Object) {\r\n if (typeof this.configuration.isVisible === 'function') {\r\n return this.configuration.isVisible(answers, this.surveyConfigurator);\r\n }\r\n return true;\r\n }\r\n\r\n // get the title of the question, delegating to configuration\r\n getTitle(answers: Object) {\r\n return this.configuration.getTitle(answers, this.surveyConfigurator);\r\n }\r\n\r\n // get the description of the question, delegating to configuration\r\n getDescription(answers: Object) {\r\n if (this.configuration.getDescription === undefined) {\r\n return null;\r\n }\r\n return this.configuration.getDescription(answers, this.surveyConfigurator);\r\n }\r\n\r\n // get the original configuration for customized purposes\r\n getConfiguration() {\r\n return this.configuration;\r\n }\r\n\r\n // get the default data for the question\r\n getDefaultData(): Object {\r\n return {};\r\n }\r\n\r\n getDefaultDirtyState(bool: boolean): Object {\r\n return bool;\r\n }\r\n\r\n // get the functional polymorphism of the view\r\n getView(): (props: any) => JSX.Element {\r\n const View = this.view;\r\n return props =>\r\n ();\r\n }\r\n\r\n // email is a special case of question and has a specific entry for OCV service\r\n isEmail() {\r\n return this.key === 'email';\r\n }\r\n\r\n // rating is a special case of question and has a specific entry for OCV service\r\n isRating() {\r\n return this.key === 'rating';\r\n }\r\n\r\n isComment() {\r\n return false;\r\n }\r\n\r\n // get the feedback data for sending to the OCV service\r\n getFeedbackData(answers: any): any {\r\n const data = answers[this.key];\r\n return data;\r\n }\r\n}\r\n","import { createContext } from 'react';\r\n\r\nexport const SurveyContext = createContext({});\r\n","import { getTheme } from '@fluentui/react';\r\n\r\nexport const theme = getTheme();\r\n\r\nexport const surveyMaxWidth = 480;\r\n\r\nexport const iconButtonStyles = {\r\n root: {\r\n color: theme.palette.neutralPrimary,\r\n marginLeft: 'auto',\r\n marginTop: '4px',\r\n marginRight: '2px',\r\n },\r\n rootHovered: {\r\n color: theme.palette.neutralDark,\r\n },\r\n};\r\n\r\nexport const closeButtonStyles = {\r\n ...iconButtonStyles,\r\n root: {\r\n ...iconButtonStyles.root,\r\n '&:focus::after': {\r\n width: '22px',\r\n transform: 'translateX(-1px)',\r\n },\r\n },\r\n};\r\n\r\nexport const backButtonStyles = {\r\n ...iconButtonStyles,\r\n root: {\r\n ...iconButtonStyles.root,\r\n '&:focus::after': {\r\n width: '22px',\r\n transform: 'translateX(-5px)',\r\n },\r\n },\r\n};\r\n\r\nexport const modalStyles = ({\r\n modalView: {\r\n zIndex: 1000001,\r\n },\r\n});\r\n\r\nexport const surveyStyles = ({\r\n container: {\r\n padding: 24,\r\n maxWidth: surveyMaxWidth,\r\n },\r\n body: {\r\n color: theme.palette.neutralPrimary,\r\n '& .question-block ~ .question-block': {\r\n marginTop: '16px',\r\n },\r\n '& .question-block': {\r\n '& .customized-option label, .checkbox-group label': {\r\n padding: 'unset',\r\n fontWeight: 'unset',\r\n },\r\n },\r\n },\r\n});\r\n","import React, { useMemo, useContext, Fragment, forwardRef } from 'react';\r\nimport classNames from 'classnames';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport {\r\n IconButton,\r\n Text,\r\n} from '@fluentui/react';\r\nimport { SurveyContext } from '@bingads-webui-campaign-react/survey-context';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { SurveyContextType } from '../../../survey-context';\r\nimport { closeButtonStyles, backButtonStyles, theme } from '../../../styles';\r\nimport { I18n } from '../../../survey.types';\r\n\r\nconst EndingPageHeader = forwardRef((props: {\r\n onDone: any,\r\n classes: any,\r\n}, ref: any): JSX.Element => {\r\n const {\r\n onDone,\r\n classes,\r\n } = props;\r\n\r\n const i18n: I18n = useContext(I18nContext);\r\n\r\n // @ts-ignore\r\n const surveyContext : SurveyContextType = useContext(SurveyContext);\r\n const {\r\n logActivity,\r\n getPageIndex,\r\n } = surveyContext;\r\n\r\n return (\r\n \r\n \r\n {i18n.getString(_TL_('Thank you for your feedback'))}\r\n \r\n
\r\n {\r\n onDone();\r\n logActivity(`page: ${getPageIndex()}, crossOutButton: done`);\r\n }}\r\n componentRef={ref}\r\n />\r\n
\r\n
\r\n );\r\n});\r\n\r\nconst QuestionHeader = forwardRef((props: {\r\n onBack: any,\r\n onDismiss: any,\r\n isMiddlePage: boolean,\r\n classes: any,\r\n}, ref: any): JSX.Element => {\r\n const {\r\n onBack,\r\n onDismiss,\r\n isMiddlePage,\r\n classes,\r\n } = props;\r\n\r\n const i18n: I18n = useContext(I18nContext);\r\n\r\n // @ts-ignore\r\n const surveyContext : SurveyContextType = useContext(SurveyContext);\r\n const {\r\n logActivity,\r\n getPageIndex,\r\n } = surveyContext;\r\n\r\n return (\r\n \r\n
\r\n {isMiddlePage &&\r\n { onBack(); logActivity(`page: ${getPageIndex()}, backButton: back`); }}\r\n componentRef={ref}\r\n />\r\n }\r\n \r\n {i18n.getString(_TL_('Feedback to Microsoft'))}\r\n \r\n
\r\n
\r\n { onDismiss('icon'); logActivity(`page: ${getPageIndex()}, crossOutButton: dismiss`); }}\r\n componentRef={isMiddlePage ? undefined : ref}\r\n />\r\n
\r\n
\r\n );\r\n});\r\n\r\ninterface HeaderProps {\r\n isFirstPage: boolean;\r\n isEndingPage: boolean;\r\n classes: any;\r\n onDismiss: any;\r\n onBack: any;\r\n onDone: any;\r\n}\r\n\r\nexport const Header = forwardRef((props: HeaderProps, ref): JSX.Element => {\r\n const {\r\n isFirstPage,\r\n isEndingPage,\r\n } = props;\r\n\r\n const classes: any = useDefaultStyles(() => ({\r\n title: {\r\n fontSize: '16px',\r\n color: theme.palette.black,\r\n fontWeight: 600,\r\n },\r\n header: {\r\n flex: '1 1 auto',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n '& button': {\r\n padding: 'unset',\r\n marginTop: 'unset',\r\n },\r\n marginBottom: '8px',\r\n },\r\n backIconButton: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n '& button.ms-Button': {\r\n paddingLeft: 0,\r\n marginLeft: 0,\r\n width: 'unset',\r\n },\r\n '& button.ms-Button:hover': {\r\n color: 'unset',\r\n backgroundColor: 'unset',\r\n },\r\n '& button.ms-Button i': {\r\n paddingLeft: 0,\r\n marginLeft: 0,\r\n },\r\n },\r\n closeIconButton: {\r\n '& button.ms-Button': {\r\n paddingRight: 0,\r\n marginRight: 0,\r\n width: 'unset',\r\n },\r\n '& button.ms-Button i': {\r\n paddingRight: 0,\r\n marginRight: 0,\r\n },\r\n '& button.ms-Button:hover': {\r\n color: 'unset',\r\n backgroundColor: 'unset',\r\n },\r\n },\r\n doneIconButton: {\r\n '& button.ms-Button': {\r\n paddingRight: 0,\r\n marginRight: 0,\r\n width: 'unset',\r\n },\r\n '& button.ms-Button i': {\r\n paddingRight: 0,\r\n marginRight: 0,\r\n },\r\n '& button.ms-Button:hover': {\r\n color: 'unset',\r\n backgroundColor: 'unset',\r\n },\r\n },\r\n }));\r\n\r\n const isMiddlePage = useMemo(() =>\r\n !isFirstPage && !isEndingPage, [isFirstPage, isEndingPage]);\r\n\r\n return (\r\n
\r\n {isEndingPage ?\r\n :\r\n }\r\n
\r\n );\r\n});\r\n","import React, { useContext, Fragment, forwardRef } from 'react';\r\nimport classNames from 'classnames';\r\nimport {\r\n Link,\r\n PrimaryButton,\r\n DefaultButton,\r\n} from '@fluentui/react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { SurveyContext } from '@bingads-webui-campaign-react/survey-context';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { ReactTemplate } from '@bingads-webui-react/react-template';\r\nimport { Glyphicon } from '@bingads-webui-react/primitive';\r\nimport { theme } from '../../../styles';\r\nimport { I18n } from '../../../survey.types';\r\nimport { SurveyContextType } from '../../../survey-context';\r\n\r\nfunction PrivacyStatement(props: { classes: any }): JSX.Element {\r\n const {\r\n classes,\r\n } = props;\r\n\r\n const i18n: I18n = useContext(I18nContext);\r\n\r\n return (\r\n
\r\n (\r\n \r\n {`${text} `}\r\n \r\n \r\n ),\r\n }}\r\n template={\r\n i18n.getString(_TL_('By pressing submit, your feedback will be used to improve Microsoft products and services. {{a}}Privacy statement{{/a}}'))\r\n }\r\n />\r\n
\r\n );\r\n}\r\n\r\nconst EndingPageFooter = forwardRef((props: { onDone: any; classes: any }, ref: any): JSX.Element => {\r\n const {\r\n onDone,\r\n classes,\r\n } = props;\r\n\r\n const i18n: I18n = useContext(I18nContext);\r\n // @ts-ignore\r\n const surveyContext : SurveyContextType = useContext(SurveyContext);\r\n const {\r\n logActivity,\r\n getPageIndex,\r\n } = surveyContext;\r\n\r\n return (\r\n
\r\n {\r\n onDone();\r\n logActivity(`page: ${getPageIndex()}, doneButton: done`);\r\n }}\r\n componentRef={ref}\r\n />\r\n
\r\n );\r\n});\r\n\r\nconst QuestionPageFooter = forwardRef((props: {\r\n classes: any;\r\n isLastPage: boolean;\r\n onSubmit: any;\r\n onNext: any;\r\n onDismiss: any;\r\n isSubmitButtonDisabled: boolean;\r\n}, ref: any): JSX.Element => {\r\n const {\r\n classes,\r\n isLastPage,\r\n onSubmit,\r\n onNext,\r\n onDismiss,\r\n isSubmitButtonDisabled,\r\n } = props;\r\n\r\n const i18n: I18n = useContext(I18nContext);\r\n // @ts-ignore\r\n const surveyContext : SurveyContextType = useContext(SurveyContext);\r\n const {\r\n logActivity,\r\n getPageIndex,\r\n } = surveyContext;\r\n\r\n return (\r\n \r\n {isLastPage ? :
}\r\n
\r\n {isLastPage ?\r\n ( { onSubmit(); logActivity(`page: ${getPageIndex()}, submitButton: submit`); }}\r\n disabled={isSubmitButtonDisabled}\r\n componentRef={ref}\r\n />) :\r\n ( { onNext(); logActivity(`page: ${getPageIndex()}, nextButton: next`); }}\r\n disabled={isSubmitButtonDisabled}\r\n componentRef={ref}\r\n />)\r\n }\r\n { onDismiss('button'); logActivity(`page: ${getPageIndex()}, cancelButton: dismiss`); }}\r\n />\r\n
\r\n \r\n );\r\n});\r\n\r\ninterface FooterProps {\r\n isLastPage: boolean;\r\n isEndingPage: boolean;\r\n onSubmit: any;\r\n onNext: any;\r\n onDone: any;\r\n onDismiss: any;\r\n isSubmitButtonDisabled: boolean;\r\n}\r\n\r\nexport const Footer = forwardRef((props: FooterProps, ref): JSX.Element => {\r\n const {\r\n isEndingPage,\r\n isLastPage,\r\n } = props;\r\n\r\n const classes: any = useDefaultStyles(() => ({\r\n footer: {\r\n fontSize: 14,\r\n paddingTop: 12,\r\n color: theme.palette.black,\r\n },\r\n emptyBottomDiv: {\r\n marginBottom: 16,\r\n },\r\n privacyStatement: {\r\n marginBottom: 20,\r\n color: theme.palette.neutralSecondary,\r\n fontSize: '12px',\r\n },\r\n infoText: {\r\n fontWeight: 600,\r\n textDecoration: 'underline',\r\n },\r\n submitButton: {\r\n marginRight: 8,\r\n },\r\n nextButton: {\r\n marginRight: 8,\r\n },\r\n buttons: {\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n '& button': {\r\n width: '80px',\r\n },\r\n },\r\n }));\r\n\r\n return (\r\n
\r\n {isEndingPage ?\r\n :\r\n }\r\n
\r\n );\r\n});\r\n","/* eslint-disable react-hooks/rules-of-hooks */\r\nimport React, { useContext, useEffect, useMemo, useRef } from 'react';\r\nimport classNames from 'classnames';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { SurveyContext } from '@bingads-webui-campaign-react/survey-context';\r\nimport { Header } from './header';\r\nimport { Footer } from './footer';\r\nimport { PageConfigurator } from '../../configurator/page';\r\nimport { I18n } from '../../../survey.types';\r\nimport { SurveyContextType } from '../../../survey-context';\r\n\r\ninterface PageViewProps {\r\n isFirstPage: boolean,\r\n isLastPage: boolean,\r\n isEndingPage: boolean,\r\n onSubmit: any,\r\n onDone: any,\r\n onNext: any,\r\n onDismiss: any,\r\n onBack: any,\r\n classes: any,\r\n configurator: PageConfigurator,\r\n answers: any,\r\n setAnswers: any,\r\n}\r\n\r\nconst SurveyQuestionComponents = React.memo((props: {\r\n configurator: PageConfigurator,\r\n classes: any,\r\n}) => {\r\n const {\r\n classes,\r\n configurator,\r\n } = props;\r\n // @ts-ignore\r\n const surveyContext : SurveyContextType = useContext(SurveyContext);\r\n\r\n const {\r\n getAnswersByKey,\r\n setAnswersByKey,\r\n getSurveyAnswers,\r\n getSurveyDirtyStateByKey,\r\n setSurveyDirtyStateByKey,\r\n } = surveyContext;\r\n\r\n const answers = getSurveyAnswers();\r\n\r\n return (\r\n
\r\n {configurator.questions.map((question) => {\r\n const isVisible = question.isVisible(answers);\r\n const Question = useMemo(() => question.getView(), [question]);\r\n const { key } = question;\r\n return (\r\n
\r\n setAnswersByKey(key, data)}\r\n dirtyState={getSurveyDirtyStateByKey(key)}\r\n setDirtyState={isDirty => setSurveyDirtyStateByKey(key, isDirty)}\r\n />\r\n
\r\n );\r\n })}\r\n
\r\n );\r\n});\r\n\r\nexport const PageView = React.memo((props: PageViewProps) => {\r\n const {\r\n classes,\r\n } = props;\r\n\r\n const i18n: I18n = useContext(I18nContext);\r\n\r\n // @ts-ignore\r\n const surveyContext : SurveyContextType = useContext(SurveyContext);\r\n const {\r\n getIsFirstPage,\r\n getIsEndingPage,\r\n getIsLastPage,\r\n onDismiss,\r\n onBack,\r\n onDone,\r\n onSubmit,\r\n onNext,\r\n getIsSubmitButtonDisabled,\r\n getIsFromBack,\r\n } = surveyContext;\r\n\r\n const isFirstPage = getIsFirstPage();\r\n const isEndingPage = getIsEndingPage();\r\n const isLastPage = getIsLastPage();\r\n const isSubmitButtonDisabled = getIsSubmitButtonDisabled();\r\n const firstFocusableElement: any = useRef(null);\r\n const lastFocusableElement: any = useRef(null);\r\n const isFromBack = getIsFromBack();\r\n\r\n useEffect(() => {\r\n if (isFromBack) {\r\n lastFocusableElement?.current?.focus?.();\r\n return;\r\n }\r\n firstFocusableElement?.current?.focus?.();\r\n }, []);\r\n\r\n return (\r\n
\r\n \r\n {isEndingPage ?\r\n \r\n {i18n.getString(_TL_('Thank you so much for the response. We will continue improve our products and services.'))}\r\n : \r\n }\r\n \r\n
\r\n );\r\n});\r\n","import { Text } from '@fluentui/react';\r\nimport React, { Fragment } from 'react';\r\n\r\nexport const ErrorString = ({ error } : { error: string }) => (\r\n \r\n \r\n {error}\r\n \r\n \r\n);\r\n\r\nexport const getDescription = (input, maxLength, i18n) => {\r\n if (input == null || input.length === 0) {\r\n return undefined;\r\n }\r\n const { length } = input;\r\n const diff = maxLength - length;\r\n if (diff >= 0) {\r\n return i18n.getString(_TL_('{{number}} characters remaining'), { number: diff });\r\n }\r\n return i18n.getString(_TL_('Exceeded by {{number}} characters'), { number: Math.abs(diff) });\r\n};\r\n","import React, { useContext, useRef } from 'react';\r\nimport { Link, TextField } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { SurveyContext } from '@bingads-webui-campaign-react/survey-context';\r\nimport { I18n } from '../../../survey.types';\r\nimport { ErrorString, getDescription } from './common';\r\nimport { SurveyContextType } from '../../../survey-context';\r\n\r\ninterface OptionWithTextProps {\r\n children: React.ReactNode,\r\n error: string,\r\n option: any,\r\n data: string,\r\n setData: (key: string, value: string | undefined) => void,\r\n dirtyState: any,\r\n isSelected: boolean,\r\n setDirtyState: (key: string, dirtyState: boolean) => void,\r\n logActivity: (string) => void,\r\n}\r\n\r\nexport const Option = (props: OptionWithTextProps) => {\r\n const {\r\n children,\r\n error,\r\n option,\r\n data,\r\n setData,\r\n dirtyState,\r\n setDirtyState,\r\n isSelected,\r\n logActivity,\r\n } = props;\r\n\r\n // @ts-ignore\r\n const surveyContext : SurveyContextType = useContext(SurveyContext);\r\n\r\n const {\r\n hasInput,\r\n href,\r\n linkText,\r\n text,\r\n key,\r\n maxLength,\r\n placeholder,\r\n } = option;\r\n\r\n const i18n: I18n = useContext(I18nContext);\r\n const {\r\n getSurveyConfiguration,\r\n } = surveyContext;\r\n\r\n const {\r\n others: {\r\n shouldHideInputWhenNotSelected = false,\r\n } = {},\r\n } = getSurveyConfiguration();\r\n const logged = useRef(false);\r\n\r\n return (\r\n
\r\n {children}\r\n {href && linkText &&\r\n <>\r\n {' '}\r\n {linkText}\r\n \r\n \r\n }\r\n {hasInput && (shouldHideInputWhenNotSelected ? isSelected : true) &&\r\n
\r\n {\r\n setData(key, value);\r\n setDirtyState(key, true);\r\n if (logged.current === false) {\r\n logActivity(`Component: ${key}, action: input`);\r\n logged.current = true;\r\n }\r\n }}\r\n tabIndex={isSelected ? 0 : -1}\r\n description={maxLength != null && isSelected ? getDescription(data, maxLength, i18n) : undefined}\r\n />\r\n {dirtyState && isSelected && error && }\r\n
\r\n }\r\n
\r\n );\r\n};\r\n","import { parseSync } from '@bingads-webui/safe-json';\r\nimport { QuestionConfiguration, SurveyConfiguration } from './survey.types';\r\nimport {\r\n SingleSelectionConfigurator,\r\n MultipleSelectionConfigurator,\r\n EmailConfigurator,\r\n CommentConfigurator,\r\n RatingConfigurator,\r\n} from './survey-construction';\r\nimport { JsonQuestion } from './json-survey.types';\r\n\r\nconst questionTypes = {\r\n Rating: 'Rating',\r\n Email: 'Email',\r\n SingleSelection: 'SingleSelection',\r\n MultipleSelection: 'MultipleSelection',\r\n Comment: 'Comment',\r\n};\r\n\r\nfunction jsonConfigurationToQuestionConfiguration(jsonConfiguration: JsonQuestion) {\r\n const {\r\n key,\r\n options,\r\n isRequired,\r\n page,\r\n data,\r\n position,\r\n title,\r\n isVisible,\r\n maxLength,\r\n placeholder,\r\n description,\r\n linkText,\r\n href,\r\n } = jsonConfiguration;\r\n\r\n // @ts-ignore\r\n const questionConfiguration: QuestionConfiguration = {\r\n key,\r\n options,\r\n isRequired,\r\n page,\r\n position,\r\n data,\r\n getTitle: () => title,\r\n isVisible: () => isVisible,\r\n getDescription: description ? () => description : undefined,\r\n maxLength,\r\n linkText,\r\n href,\r\n placeholder,\r\n };\r\n\r\n switch (jsonConfiguration.Type) {\r\n case questionTypes.Rating:\r\n questionConfiguration.Type = RatingConfigurator;\r\n break;\r\n case questionTypes.Email:\r\n questionConfiguration.Type = EmailConfigurator;\r\n break;\r\n case questionTypes.SingleSelection:\r\n questionConfiguration.Type = SingleSelectionConfigurator;\r\n break;\r\n case questionTypes.MultipleSelection:\r\n questionConfiguration.Type = MultipleSelectionConfigurator;\r\n break;\r\n case questionTypes.Comment:\r\n questionConfiguration.Type = CommentConfigurator;\r\n break;\r\n default:\r\n throw new Error('Out of control!');\r\n }\r\n\r\n return questionConfiguration;\r\n}\r\n\r\nexport function jsonConfigurationToSurveyConfiguration(jsonConfiguration: string):\r\n (options: { i18n: any, serverContext: any }) => SurveyConfiguration {\r\n const parsedJsonConfiguration = parseSync(jsonConfiguration);\r\n return () => {\r\n const {\r\n style,\r\n others,\r\n featureArea,\r\n } = parsedJsonConfiguration;\r\n\r\n const surveyConfiguration: SurveyConfiguration = {\r\n featureArea,\r\n style,\r\n others,\r\n };\r\n\r\n // @ts-ignore\r\n surveyConfiguration.rating = jsonConfigurationToQuestionConfiguration(parsedJsonConfiguration.rating);\r\n // @ts-ignore\r\n surveyConfiguration.email = jsonConfigurationToQuestionConfiguration(parsedJsonConfiguration.email);\r\n surveyConfiguration.questions = parsedJsonConfiguration.questions.map(jsonConfigurationToQuestionConfiguration);\r\n\r\n return surveyConfiguration;\r\n };\r\n}\r\n\r\nfunction hashFunc(str) {\r\n let hash = 0;\r\n if (str.length === 0) {\r\n return hash;\r\n }\r\n for (let i = 0; i < str.length; i += 1) {\r\n const char = str.charCodeAt(i);\r\n // eslint-disable-next-line no-bitwise\r\n hash = ((hash << 5) - hash) + char;\r\n // eslint-disable-next-line no-bitwise\r\n hash &= hash;\r\n }\r\n return hash;\r\n}\r\n\r\nexport function generateLabelId(str) {\r\n const hashValue = hashFunc(str).toString();\r\n const labelId = `survey-factory-label-${str}-${hashValue}`;\r\n return labelId;\r\n}\r\n\r\nexport const returnFocus = (element) => {\r\n if (element) {\r\n element.focus();\r\n return;\r\n }\r\n /* istanbul ignore next */\r\n const body = document.getElementsByTagName('body')[0];\r\n /* istanbul ignore if */\r\n if (body) {\r\n body.focus();\r\n }\r\n};\r\n","import React, { Fragment, useMemo, useContext } from 'react';\r\nimport classNames from 'classnames';\r\nimport { Label, Link } from '@bingads-webui-react/fabric-control';\r\nimport { SurveyContext } from '@bingads-webui-campaign-react/survey-context';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { SurveyContextType } from '../../../survey-context';\r\nimport { theme } from '../../../styles';\r\nimport { QuestionConfigurator } from '../../configurator/question';\r\nimport { ErrorString } from './common';\r\nimport { generateLabelId } from '../../../utility';\r\n\r\ninterface QuestionTitleProps {\r\n title: string,\r\n description: string,\r\n error: string,\r\n isRequired: boolean,\r\n isDirty: boolean,\r\n href: string | undefined,\r\n linkText: string | undefined,\r\n labelKey: string,\r\n}\r\n\r\nconst Title = React.memo((props: QuestionTitleProps) => {\r\n const {\r\n title,\r\n isRequired,\r\n description,\r\n isDirty,\r\n error,\r\n href,\r\n linkText,\r\n labelKey,\r\n } = props;\r\n\r\n const classes: any = useDefaultStyles(() => ({\r\n requiredMark: {\r\n color: '#A80000',\r\n },\r\n questionTitle: {\r\n '& .ms-Label': {\r\n marginBottom: '8px',\r\n padding: 'unset',\r\n },\r\n },\r\n description: {\r\n fontSize: '12px',\r\n color: theme.palette.neutralSecondary,\r\n },\r\n }));\r\n\r\n const key = useMemo(() => generateLabelId(labelKey), [labelKey]);\r\n\r\n return (\r\n
\r\n \r\n {description &&\r\n
\r\n {description}\r\n {href && linkText &&\r\n <>\r\n {' '}\r\n {linkText}\r\n \r\n \r\n }\r\n
\r\n }\r\n {isDirty && error && }\r\n
\r\n );\r\n});\r\n\r\nexport const QuestionTitle = (props: {\r\n configurator: QuestionConfigurator,\r\n isDirty: boolean,\r\n error: string,\r\n children: React.ReactNode,\r\n}) => {\r\n const {\r\n configurator,\r\n error,\r\n isDirty,\r\n children,\r\n } = props;\r\n\r\n const {\r\n isRequired,\r\n href,\r\n linkText,\r\n key,\r\n } = configurator.getConfiguration();\r\n\r\n // @ts-ignore\r\n const surveyContext: SurveyContextType = useContext(SurveyContext);\r\n\r\n const {\r\n getSurveyAnswers,\r\n } = surveyContext;\r\n\r\n const answers = getSurveyAnswers();\r\n\r\n const title = useMemo(() => configurator.getTitle(answers), [answers, configurator]);\r\n const description = useMemo(() => configurator.getDescription(answers), [answers, configurator]);\r\n\r\n return (\r\n \r\n \r\n {children}\r\n \r\n );\r\n};\r\n","import React, { useCallback, useContext, useMemo } from 'react';\r\nimport { SurveyContext } from '@bingads-webui-campaign-react/survey-context';\r\nimport { ChoiceGroup } from '@fluentui/react';\r\nimport { Option } from './option';\r\nimport { QuestionTitle } from './title';\r\nimport { SurveyContextType } from '../../../survey-context';\r\nimport { generateLabelId } from '../../../utility';\r\n\r\nfunction optionComponentFactory(option, dynamicOption) {\r\n const {\r\n error,\r\n data,\r\n setData,\r\n mySetDirtyState,\r\n dirtyState,\r\n isSelected,\r\n logActivity,\r\n } = dynamicOption;\r\n\r\n return {\r\n onRenderField: (props, render) => (\r\n \r\n {render(props)}\r\n \r\n ),\r\n };\r\n}\r\n\r\nfunction buildSingleSelectionOptions(options, dynamicOption) {\r\n const {\r\n setOptionData,\r\n data,\r\n error,\r\n mySetDirtyState,\r\n dirtyState,\r\n logActivity,\r\n } = dynamicOption;\r\n\r\n return options.map((option) => {\r\n const {\r\n key,\r\n text,\r\n } = option;\r\n\r\n return {\r\n key,\r\n text,\r\n ariaLabel: text,\r\n ...optionComponentFactory(option, {\r\n setData: setOptionData,\r\n data: data[key],\r\n error: error[key],\r\n dirtyState: dirtyState[key],\r\n mySetDirtyState,\r\n isSelected: data.selectedOption === key,\r\n logActivity,\r\n }),\r\n };\r\n });\r\n}\r\n\r\nexport const ChoiceGroupView = React.memo((props: {\r\n configurator: any,\r\n data: any,\r\n setData: any,\r\n dirtyState: any,\r\n setDirtyState: any,\r\n}) => {\r\n const {\r\n configurator,\r\n data,\r\n setData,\r\n dirtyState,\r\n setDirtyState,\r\n } = props;\r\n\r\n const {\r\n options,\r\n key: questionKey,\r\n } = configurator.getConfiguration();\r\n\r\n const {\r\n selectedOption,\r\n } = data;\r\n\r\n const error = useMemo(() => configurator.getError(data), [configurator, data]);\r\n\r\n const setOptionData = useCallback((optionKey, value) => {\r\n const newData = {\r\n ...data,\r\n [optionKey]: value,\r\n selectedOption: value.length > 0 ? optionKey : selectedOption,\r\n };\r\n setData(newData);\r\n }, [data, selectedOption, setData]);\r\n\r\n const mySetDirtyState = useCallback((key, value) => {\r\n const newDirtyState = {\r\n ...dirtyState,\r\n [key]: value,\r\n };\r\n setDirtyState(newDirtyState);\r\n }, [dirtyState, setDirtyState]);\r\n\r\n // @ts-ignore\r\n const surveyContext : SurveyContextType = useContext(SurveyContext);\r\n const {\r\n logActivity,\r\n getSurveyAnswers,\r\n } = surveyContext;\r\n\r\n const myLogActivity = useCallback((log: string) => {\r\n logActivity(`Question: ${configurator.key}, type: single-selection, ${log}`);\r\n }, [configurator.key, logActivity]);\r\n\r\n const singleSelectionOptions = useMemo(() => buildSingleSelectionOptions(\r\n options,\r\n {\r\n setOptionData,\r\n data,\r\n error,\r\n mySetDirtyState,\r\n dirtyState,\r\n logActivity: myLogActivity,\r\n }\r\n ), [options, setOptionData, data, error, mySetDirtyState, dirtyState, myLogActivity]);\r\n\r\n const answers = getSurveyAnswers();\r\n\r\n const title = useMemo(() => configurator.getTitle(answers), [answers, configurator]);\r\n const labelKey = useMemo(() => generateLabelId(questionKey), [questionKey]);\r\n\r\n return (\r\n {\r\n mySetDirtyState('isDirty', true);\r\n setData({\r\n ...data,\r\n selectedOption: option?.key,\r\n });\r\n myLogActivity(`action: select option, key: ${option?.key}`);\r\n }}\r\n />);\r\n});\r\n\r\ninterface SingleSelectionViewProps {\r\n configurator: any,\r\n data: {\r\n selectedOption: string,\r\n [key: string]: string | undefined,\r\n },\r\n setData: any,\r\n rootClassName: string | undefined,\r\n dirtyState: any,\r\n setDirtyState: any,\r\n}\r\n\r\nexport const SingleSelectionView = (props: SingleSelectionViewProps) => {\r\n const {\r\n configurator,\r\n data,\r\n setData,\r\n dirtyState,\r\n setDirtyState,\r\n rootClassName,\r\n } = props;\r\n\r\n const error = useMemo(() => configurator.isAnswered(data), [configurator, data]);\r\n const {\r\n isDirty,\r\n } = dirtyState;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n","import React, { useMemo, useContext, useCallback } from 'react';\r\nimport { Checkbox } from '@fluentui/react';\r\nimport classNames from 'classnames';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { SurveyContext } from '@bingads-webui-campaign-react/survey-context';\r\nimport { SurveyContextType } from '../../../survey-context';\r\nimport { MultipleSelectionData } from '../../../survey.types';\r\nimport { Option } from './option';\r\nimport { QuestionTitle } from './title';\r\nimport { generateLabelId } from '../../../utility';\r\n\r\nexport const CheckboxGroupView = React.memo((props: {\r\n configurator: any,\r\n data: any,\r\n setData: any,\r\n dirtyState: any,\r\n setDirtyState: any,\r\n}) => {\r\n const {\r\n configurator,\r\n data,\r\n setData,\r\n dirtyState,\r\n setDirtyState,\r\n } = props;\r\n\r\n const classes: any = useDefaultStyles(() => ({\r\n checkboxGroup: {\r\n '& .ms-Checkbox ~ .ms-Checkbox': {\r\n marginTop: '9px',\r\n },\r\n marginTop: '4px',\r\n },\r\n }));\r\n\r\n const {\r\n options,\r\n key: questionKey,\r\n } = configurator.getConfiguration();\r\n\r\n const error = useMemo(() => configurator.getError(data), [configurator, data]);\r\n\r\n const setOptionData = useCallback((optionKey, value) => {\r\n const newData = {\r\n ...data,\r\n [optionKey]: {\r\n ...data[optionKey],\r\n ...value,\r\n },\r\n };\r\n setData(newData);\r\n }, [data, setData]);\r\n\r\n const mySetDirtyState = useCallback((key, value) => {\r\n const newDirtyState = {\r\n ...dirtyState,\r\n [key]: value,\r\n };\r\n setDirtyState(newDirtyState);\r\n }, [dirtyState, setDirtyState]);\r\n\r\n // @ts-ignore\r\n const surveyContext : SurveyContextType = useContext(SurveyContext);\r\n const {\r\n logActivity,\r\n getSurveyAnswers,\r\n } = surveyContext;\r\n\r\n const myLogActivity = useCallback((log: string) => {\r\n logActivity(`Question: ${configurator.key}, type: multiple-selection, ${log}`);\r\n }, [configurator.key, logActivity]);\r\n\r\n const answers = getSurveyAnswers();\r\n\r\n const title = useMemo(() => configurator.getTitle(answers), [answers, configurator]);\r\n const labelKey = useMemo(() => generateLabelId(questionKey), [questionKey]);\r\n\r\n return (\r\n \r\n {options.map((option) => {\r\n const {\r\n key,\r\n text,\r\n } = option;\r\n\r\n const {\r\n selected,\r\n input,\r\n } = data[key] ?? {};\r\n\r\n return ( {\r\n mySetDirtyState('isDirty', true);\r\n setOptionData(option.key, { selected: checked });\r\n myLogActivity(`action: select checkbox, key: ${option.key}, state: ${checked}`);\r\n }}\r\n onRenderLabel={() => (\r\n setOptionData(dataKey, { input: stringInput })}\r\n dirtyState={dirtyState[key]}\r\n setDirtyState={(dataKey, value) => mySetDirtyState(dataKey, value)}\r\n isSelected={selected}\r\n logActivity={myLogActivity}\r\n >\r\n {text}\r\n \r\n )}\r\n />);\r\n })}\r\n
\r\n );\r\n});\r\n\r\n\r\ninterface MultipleSelectionViewProps {\r\n configurator: any;\r\n data: MultipleSelectionData;\r\n setData: any;\r\n rootClassName: string | undefined;\r\n setDirtyState: any;\r\n dirtyState: any;\r\n}\r\n\r\nexport const MultipleSelectionView = (props: MultipleSelectionViewProps) => {\r\n const {\r\n configurator,\r\n data,\r\n setData,\r\n rootClassName,\r\n setDirtyState,\r\n dirtyState,\r\n } = props;\r\n\r\n const error = useMemo(() => configurator.isAnswered(data), [configurator, data]);\r\n const { isDirty } = dirtyState;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n","import React from 'react';\r\nimport { SingleSelectionView } from './single-selection';\r\n\r\nexport const RatingView = props => (\r\n \r\n);\r\n","import React from 'react';\r\nimport { SingleSelectionView } from './single-selection';\r\n\r\nexport const EmailView = props => (\r\n \r\n);\r\n","import React, { useMemo, useContext, useRef } from 'react';\r\nimport { SurveyContext } from '@bingads-webui-campaign-react/survey-context';\r\nimport { TextField } from '@fluentui/react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { CommentData, I18n } from '../../../survey.types';\r\nimport { QuestionTitle } from './title';\r\nimport { SurveyContextType } from '../../../survey-context';\r\nimport { getDescription, ErrorString } from './common';\r\n\r\ninterface CommentViewProps {\r\n data: CommentData;\r\n configurator: any;\r\n setData: any;\r\n dirtyState: any;\r\n setDirtyState: any;\r\n}\r\n\r\nexport const CommentView = (props: CommentViewProps) => {\r\n const {\r\n configurator,\r\n data,\r\n setData,\r\n dirtyState,\r\n setDirtyState,\r\n } = props;\r\n\r\n // @ts-ignore\r\n const surveyContext: SurveyContextType = useContext(SurveyContext);\r\n\r\n const {\r\n getSurveyAnswers,\r\n logActivity,\r\n } = surveyContext;\r\n\r\n const answers = getSurveyAnswers();\r\n\r\n const title = useMemo(() => configurator.getTitle(answers), [answers, configurator]);\r\n const i18n: I18n = useContext(I18nContext);\r\n\r\n const {\r\n input,\r\n } = data;\r\n\r\n const titleError = useMemo(() => configurator.isAnswered(data), [configurator, data]);\r\n const commentError = useMemo(() => configurator.getError(data), [configurator, data]);\r\n const {\r\n maxLength,\r\n placeholder,\r\n } = configurator.getConfiguration();\r\n\r\n const isDirty = dirtyState;\r\n const logged = useRef(false);\r\n\r\n return (\r\n
\r\n \r\n {\r\n setDirtyState(true);\r\n setData({ input: value });\r\n if (logged.current === false) {\r\n logActivity(`Question: ${configurator.key}, type: comment, action: input`);\r\n logged.current = true;\r\n }\r\n }}\r\n description={maxLength != null ? getDescription(input, maxLength, i18n) : undefined}\r\n />\r\n {isDirty && commentError && }\r\n \r\n
\r\n );\r\n};\r\n","import { Validator } from './validator';\r\n\r\nexport class CommentValidator extends Validator {\r\n validateHelper({ data, configuration }) {\r\n const {\r\n input,\r\n } = data;\r\n\r\n const { maxLength, isRequired } = configuration;\r\n\r\n if ((input == null || input.length === 0) && isRequired) {\r\n return 'InputIsEmpty';\r\n }\r\n if (input && maxLength && input.length > maxLength) {\r\n return 'InputTooLong';\r\n }\r\n return null;\r\n }\r\n\r\n validate({ data, configuration }) {\r\n return this.validateHelper({ data, configuration }) == null;\r\n }\r\n\r\n getError({ data, configuration, i18n }) {\r\n const { maxLength } = configuration;\r\n\r\n const check = this.validateHelper({ data, configuration });\r\n\r\n if (check === 'InputTooLong') {\r\n return i18n.getString(_TL_('Field should not exceed {{maxLength}} characters'), { maxLength });\r\n }\r\n return undefined;\r\n }\r\n\r\n isAnswered({ data, configuration, i18n }) {\r\n const check = this.validateHelper({ data, configuration });\r\n if (check === 'InputIsEmpty') {\r\n return i18n.getString(_TL_('Please answer this question'));\r\n }\r\n return undefined;\r\n }\r\n}\r\n","import { QuestionConfigurator } from './question';\r\nimport { CommentView } from '../view';\r\nimport { CommentValidator } from '../validator';\r\n\r\nexport class CommentConfigurator extends QuestionConfigurator {\r\n get view() {\r\n return CommentView;\r\n }\r\n\r\n initValidator() {\r\n this.validator = new CommentValidator();\r\n }\r\n\r\n getDefaultData(): Object {\r\n return {\r\n input: undefined,\r\n ...this.data,\r\n };\r\n }\r\n\r\n isComment() {\r\n return true;\r\n }\r\n\r\n getFeedbackData(answers: any): any {\r\n const data = answers[this.key];\r\n const { input } = data;\r\n return {\r\n key: this.key,\r\n type: 'comment',\r\n title: this.getTitle(answers),\r\n answer: input,\r\n };\r\n }\r\n}\r\n","import { Validator } from './validator';\r\n\r\nexport class SingleSelectionValidator extends Validator {\r\n validateHelper({ data, configuration }) : string | null {\r\n const {\r\n selectedOption,\r\n } = data;\r\n\r\n const { options, isRequired } = configuration;\r\n\r\n if (selectedOption == null && isRequired) {\r\n return 'NoOptionSelected';\r\n }\r\n for (let i = 0; i < options.length; i += 1) {\r\n const {\r\n hasInput,\r\n key,\r\n maxLength,\r\n } = options[i];\r\n if (hasInput && key === selectedOption) {\r\n if ((data[key] == null || data[key].length === 0) && isRequired) {\r\n return 'InputIsEmpty';\r\n } else if (maxLength && data[key] && data[key].length > maxLength) {\r\n return 'InputTooLong';\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n validate({ data, configuration }) {\r\n return this.validateHelper({ data, configuration }) == null;\r\n }\r\n\r\n getError({ data, configuration, i18n }) {\r\n let error = {};\r\n const { options, isRequired } = configuration;\r\n\r\n for (let i = 0; i < options.length; i += 1) {\r\n const {\r\n hasInput,\r\n key,\r\n maxLength,\r\n } = options[i];\r\n if (hasInput) {\r\n if ((data[key] == null || data[key].length === 0) && isRequired) {\r\n error = {\r\n ...error,\r\n [key]: i18n.getString(_TL_('Please fill in this field')),\r\n };\r\n } else if (maxLength && data[key] && data[key].length > maxLength) {\r\n error = {\r\n ...error,\r\n [key]: i18n.getString(_TL_('Field should not exceed {{maxLength}} characters'), { maxLength }),\r\n };\r\n }\r\n }\r\n }\r\n return error;\r\n }\r\n\r\n isAnswered({ data, configuration, i18n }) {\r\n let error;\r\n const {\r\n selectedOption,\r\n } = data;\r\n const { isRequired } = configuration;\r\n\r\n if (selectedOption == null && isRequired) {\r\n error = i18n.getString(_TL_('Please answer this question'));\r\n }\r\n return error;\r\n }\r\n}\r\n","import { SingleSelectionValidator } from './single-selection';\r\n\r\nexport class EmailValidator extends SingleSelectionValidator {\r\n validateHelper({ data, configuration }) {\r\n const {\r\n selectedOption,\r\n } = data;\r\n\r\n const { options, isRequired } = configuration;\r\n\r\n if (selectedOption == null && isRequired) {\r\n return 'NoOptionSelected';\r\n }\r\n for (let i = 0; i < options.length; i += 1) {\r\n const {\r\n hasInput,\r\n key,\r\n maxLength,\r\n } = options[i];\r\n if (hasInput && key === selectedOption) {\r\n if (data[key] == null || data[key].length === 0) {\r\n return 'InputIsEmpty';\r\n } else if (key === 'yes') {\r\n if (!this.isEmail(data[key])) {\r\n return 'InvalidEmail';\r\n }\r\n } else if (maxLength && data[key] && data[key].length > maxLength) {\r\n return 'InputTooLong';\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n isEmail(email) {\r\n const re = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return re.test(email);\r\n }\r\n\r\n validate({ data, configuration }) {\r\n return this.validateHelper({ data, configuration }) == null;\r\n }\r\n\r\n getError({ data, configuration, i18n }) {\r\n let error = {};\r\n const { options } = configuration;\r\n\r\n for (let i = 0; i < options.length; i += 1) {\r\n const {\r\n hasInput,\r\n key,\r\n maxLength,\r\n } = options[i];\r\n if (hasInput) {\r\n if (data[key] == null || data[key].length === 0) {\r\n error = {\r\n ...error,\r\n [key]: i18n.getString(_TL_('Please enter an email address')),\r\n };\r\n } else if (key === 'yes' && !this.isEmail(data[key])) {\r\n error = {\r\n ...error,\r\n [key]: i18n.getString(_TL_('Invalid email address')),\r\n };\r\n } else if (maxLength && data[key] && data[key].length > maxLength) {\r\n error = {\r\n ...error,\r\n [key]: i18n.getString(_TL_('Field should not exceed {{maxLength}} characters'), { maxLength }),\r\n };\r\n }\r\n }\r\n }\r\n return error;\r\n }\r\n\r\n isAnswered({ data, configuration, i18n }) {\r\n let error;\r\n const {\r\n selectedOption,\r\n } = data;\r\n const { isRequired } = configuration;\r\n\r\n if (selectedOption == null && isRequired) {\r\n error = i18n.getString(_TL_('Please answer this question'));\r\n }\r\n return error;\r\n }\r\n}\r\n","import { QuestionConfigurator } from './question';\r\nimport { EmailView } from '../view';\r\nimport { EmailValidator } from '../validator';\r\n\r\nexport class EmailConfigurator extends QuestionConfigurator {\r\n get view() {\r\n return EmailView;\r\n }\r\n\r\n initValidator() {\r\n this.validator = new EmailValidator();\r\n }\r\n\r\n getDefaultData(): Object {\r\n return {\r\n selectedOption: undefined,\r\n yes: this.serverContext.CurrentUser.Email,\r\n ...this.data,\r\n };\r\n }\r\n\r\n getDefaultDirtyState(bool): Object {\r\n const state = {\r\n isDirty: bool,\r\n };\r\n const { options } = this.configuration;\r\n options.forEach((option) => {\r\n const { key } = option;\r\n state[key] = bool;\r\n });\r\n return state;\r\n }\r\n\r\n getFeedbackData(answers: any): any {\r\n const data = answers[this.key];\r\n if (data.selectedOption === 'yes') { return data.yes; }\r\n return null;\r\n }\r\n}\r\n","import { Validator } from './validator';\r\n\r\nexport class MultipleSelectionValidator extends Validator {\r\n validateHelper({ data, configuration }) {\r\n const { options, isRequired } = configuration;\r\n\r\n const NoOptionSelected = options.find(option => data[option.key] && data[option.key].selected) === undefined;\r\n\r\n if (NoOptionSelected && isRequired) {\r\n return 'NoOptionSelected';\r\n }\r\n\r\n for (let i = 0; i < options.length; i += 1) {\r\n const {\r\n hasInput,\r\n key,\r\n maxLength,\r\n } = options[i];\r\n if (hasInput && data[key] && data[key].selected) {\r\n if ((data[key].input == null || data[key].input.length === 0) && isRequired) {\r\n return 'InputIsEmpty';\r\n } else if (maxLength && data[key].input && data[key].input.length > maxLength) {\r\n return 'InputTooLong';\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n validate({ data, configuration }) {\r\n return this.validateHelper({ data, configuration }) == null;\r\n }\r\n\r\n getError({ data, configuration, i18n }) {\r\n let error = {};\r\n const { options, isRequired } = configuration;\r\n\r\n for (let i = 0; i < options.length; i += 1) {\r\n const {\r\n hasInput,\r\n key,\r\n maxLength,\r\n } = options[i];\r\n if (hasInput && data[key]) {\r\n if ((data[key].input == null || data[key].input.length === 0) && isRequired) {\r\n error = {\r\n ...error,\r\n [key]: i18n.getString(_TL_('Please fill in this field')),\r\n };\r\n } else if (maxLength && data[key].input && data[key].input.length > maxLength) {\r\n error = {\r\n ...error,\r\n [key]: i18n.getString(_TL_('Field should not exceed {{maxLength}} characters'), { maxLength }),\r\n };\r\n }\r\n }\r\n }\r\n return error;\r\n }\r\n\r\n isAnswered({ data, configuration, i18n }) {\r\n const result = this.validateHelper({ data, configuration });\r\n const { isRequired } = configuration;\r\n let error;\r\n\r\n if (result === 'NoOptionSelected' && isRequired) {\r\n error = i18n.getString(_TL_('Please answer this question'));\r\n }\r\n return error;\r\n }\r\n}\r\n","import { QuestionConfigurator } from './question';\r\nimport { MultipleSelectionView } from '../view';\r\nimport { MultipleSelectionValidator } from '../validator';\r\n\r\nexport class MultipleSelectionConfigurator extends QuestionConfigurator {\r\n constructor({\r\n serverContext, configuration, i18n, surveyConfigurator,\r\n }) {\r\n super({\r\n serverContext, configuration, i18n, surveyConfigurator,\r\n });\r\n this.setOptionKeyToText();\r\n }\r\n\r\n get view() {\r\n return MultipleSelectionView;\r\n }\r\n\r\n getDefaultData(): Object {\r\n return {\r\n ...this.data,\r\n };\r\n }\r\n\r\n initValidator() {\r\n this.validator = new MultipleSelectionValidator();\r\n }\r\n\r\n setOptionKeyToText() {\r\n const { options } = this.configuration;\r\n this.optionKeyToText = {};\r\n options.forEach((option) => {\r\n this.optionKeyToText[option.key] = option.text;\r\n });\r\n }\r\n\r\n getDefaultDirtyState(bool): Object {\r\n const state = {\r\n isDirty: bool,\r\n };\r\n const { options } = this.configuration;\r\n options.forEach((option) => {\r\n const { key } = option;\r\n state[key] = bool;\r\n });\r\n return state;\r\n }\r\n\r\n // get the feedback data for sending to the OCV service\r\n getFeedbackData(answers: any): any {\r\n const { options } = this.configuration;\r\n const data = answers[this.key];\r\n const selectedOptions =\r\n options.filter(option => data[option.key]?.selected)\r\n .map(option => ({\r\n text: this.optionKeyToText[option.key],\r\n input: data[option.key].input,\r\n }));\r\n return {\r\n key: this.key,\r\n type: 'multiple-selection',\r\n title: this.getTitle(answers),\r\n answer: selectedOptions,\r\n };\r\n }\r\n}\r\n","import { QuestionConfigurator } from './question';\r\nimport { SingleSelectionView } from '../view';\r\nimport { SingleSelectionValidator } from '../validator';\r\n\r\nexport class SingleSelectionConfigurator extends QuestionConfigurator {\r\n constructor({\r\n serverContext, configuration, i18n, surveyConfigurator,\r\n }) {\r\n super({\r\n serverContext, configuration, i18n, surveyConfigurator,\r\n });\r\n this.setOptionKeyToText();\r\n }\r\n\r\n get view() : (props: any) => JSX.Element {\r\n return SingleSelectionView;\r\n }\r\n\r\n initValidator() {\r\n this.validator = new SingleSelectionValidator();\r\n }\r\n\r\n setOptionKeyToText() {\r\n const { options } = this.configuration;\r\n this.optionKeyToText = {};\r\n options.forEach((option) => {\r\n this.optionKeyToText[option.key] = option.text;\r\n });\r\n }\r\n\r\n getDefaultData(): Object {\r\n return {\r\n selectedOption: undefined,\r\n ...this.data,\r\n };\r\n }\r\n\r\n getDefaultDirtyState(bool: boolean): Object {\r\n const state = {\r\n isDirty: bool,\r\n };\r\n const { options } = this.configuration;\r\n options.forEach((option) => {\r\n const { key } = option;\r\n state[key] = bool;\r\n });\r\n return state;\r\n }\r\n\r\n getFeedbackData(answers: any): any {\r\n const data = answers[this.key];\r\n const { selectedOption } = data;\r\n return {\r\n key: this.key,\r\n type: 'single-selection',\r\n title: this.getTitle(answers),\r\n answer: {\r\n text: selectedOption ? this.optionKeyToText[selectedOption] : null,\r\n input: selectedOption ? data[selectedOption] : null,\r\n },\r\n };\r\n }\r\n}\r\n","import { SingleSelectionValidator } from '../validator';\r\nimport { RatingView } from '../view';\r\nimport { SingleSelectionConfigurator } from './single-selection';\r\n\r\nexport class RatingConfigurator extends SingleSelectionConfigurator {\r\n constructor({\r\n serverContext, configuration, i18n, surveyConfigurator,\r\n }) {\r\n super({\r\n serverContext, configuration, i18n, surveyConfigurator,\r\n });\r\n this.setOptionKeyToRating();\r\n }\r\n\r\n get view() {\r\n return RatingView;\r\n }\r\n\r\n initValidator() {\r\n this.validator = new SingleSelectionValidator();\r\n }\r\n\r\n setOptionKeyToRating() {\r\n const { options } = this.configuration;\r\n this.optionKeyToRating = {};\r\n options.forEach((option) => {\r\n this.optionKeyToRating[option.key] = option.rating;\r\n });\r\n }\r\n\r\n getDefaultData(): Object {\r\n return {\r\n selectedOption: undefined,\r\n ...this.data,\r\n };\r\n }\r\n\r\n getDefaultDirtyState(bool): Object {\r\n const state = {\r\n isDirty: bool,\r\n };\r\n const { options } = this.configuration;\r\n options.forEach((option) => {\r\n const { key } = option;\r\n state[key] = bool;\r\n });\r\n return state;\r\n }\r\n\r\n getFeedbackData(answers: any): any {\r\n const data = answers[this.key];\r\n const { options } = this.configuration;\r\n if (data.selectedOption) {\r\n return {\r\n rating: parseFloat(this.optionKeyToRating[data.selectedOption]),\r\n ratingOptionsCount: options.length,\r\n };\r\n }\r\n return null;\r\n }\r\n}\r\n","import React from 'react';\r\nimport { PageView } from '../view';\r\nimport { QuestionConfiguration, IQuestionConfigurator } from '../../survey.types';\r\n\r\nexport class PageConfigurator {\r\n questions: IQuestionConfigurator[];\r\n style: any;\r\n serverContext: any;\r\n i18n: any;\r\n surveyConfigurator: any;\r\n\r\n constructor({ serverContext, i18n, surveyConfigurator }) {\r\n this.questions = [];\r\n this.serverContext = serverContext;\r\n this.i18n = i18n;\r\n this.surveyConfigurator = surveyConfigurator;\r\n }\r\n\r\n // sort questions by position\r\n sortQuestions(): void {\r\n this.questions.sort((a, b) => a.position - b.position);\r\n }\r\n\r\n // add question to page\r\n addQuestion(questionConfiguration: QuestionConfiguration): IQuestionConfigurator {\r\n const {\r\n Type,\r\n } = questionConfiguration;\r\n const question = new Type({\r\n configuration: questionConfiguration,\r\n serverContext: this.serverContext,\r\n i18n: this.i18n,\r\n surveyConfigurator: this.surveyConfigurator,\r\n });\r\n this.questions.push(question);\r\n return question;\r\n }\r\n\r\n isVisible(answers: Object): boolean {\r\n for (let i = 0; i < this.questions.length; i += 1) {\r\n if (this.questions[i].isVisible(answers)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n // determine if page is valid, delegating to questions\r\n isValid(answers: Object): boolean {\r\n for (let i = 0; i < this.questions.length; i += 1) {\r\n if (!this.questions[i].isValid(answers)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n // get the feedback data for sending to the OCV service\r\n getFeedbackData(answers: Object): any {\r\n const remaining: Array = [];\r\n const comments: Array = [];\r\n let email = null;\r\n let rating = null;\r\n\r\n this.questions.forEach((question) => {\r\n if (question.isVisible(answers)) {\r\n if (question.isEmail()) {\r\n email = question.getFeedbackData(answers);\r\n } else if (question.isRating()) {\r\n rating = question.getFeedbackData(answers);\r\n } else if (question.isComment()) {\r\n comments.push(question.getFeedbackData(answers));\r\n } else {\r\n // single-selection, multiple-selection\r\n remaining.push(question.getFeedbackData(answers));\r\n }\r\n }\r\n });\r\n\r\n return {\r\n rating,\r\n email,\r\n remaining,\r\n comments,\r\n };\r\n }\r\n\r\n // get the view for the page\r\n getView(): (props: any) => JSX.Element {\r\n return props =>\r\n ();\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { stringifySync } from '@bingads-webui/safe-json';\r\nimport { IQuestionConfigurator, SurveyConfiguration, Others } from '../../survey.types';\r\nimport { PageConfigurator } from './page';\r\n\r\nexport class SurveyConfigurator {\r\n featureArea: string;\r\n pages: PageConfigurator[];\r\n serverContext: any;\r\n i18n: any;\r\n endingPage: PageConfigurator;\r\n questions: Map = new Map();\r\n configuration: SurveyConfiguration;\r\n\r\n constructor({\r\n featureArea, serverContext, i18n, configuration,\r\n }) {\r\n this.featureArea = featureArea;\r\n this.pages = [];\r\n this.serverContext = serverContext;\r\n this.i18n = i18n;\r\n this.endingPage = new PageConfigurator({\r\n serverContext: this.serverContext, i18n: this.i18n, surveyConfigurator: this,\r\n });\r\n this.configuration = configuration;\r\n }\r\n\r\n // feature area is used to classify the feedback. You can find and create feature areas at\r\n // https://ocv.microsoft.com/#/manage/?aid=a9bfe3b9-40d8-443d-9d80-ba3369aa1463\r\n getFeatureArea() {\r\n return this.featureArea;\r\n }\r\n\r\n // sort the questions by page and question position\r\n sortPages(): void {\r\n this.pages.forEach(page => page.sortQuestions());\r\n }\r\n\r\n // get the page at index, or create it if it doesn't exist\r\n getPageIfNoneCreateIt(pageIndex: number): PageConfigurator {\r\n let page = this.pages[pageIndex];\r\n if (page == null) {\r\n this.pages[pageIndex] = new PageConfigurator({\r\n serverContext: this.serverContext, i18n: this.i18n, surveyConfigurator: this,\r\n });\r\n page = this.pages[pageIndex];\r\n }\r\n return page;\r\n }\r\n\r\n hasPageAtIndex(pageIndex: number, answers: any): boolean {\r\n const page = this.pages[pageIndex];\r\n if (page == null || !page.isVisible(answers)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n // get the page at index\r\n getPage(pageIndex: number): PageConfigurator {\r\n return this.pages[pageIndex];\r\n }\r\n\r\n // get the ending page, the page after submitting the survey\r\n getEndingPage(): PageConfigurator {\r\n return this.endingPage;\r\n }\r\n\r\n // add a question to the survey\r\n addQuestion(questionConfiguration): void {\r\n const { page: pageIndex, key } = questionConfiguration;\r\n const page = this.getPageIfNoneCreateIt(pageIndex);\r\n const question = page.addQuestion(questionConfiguration);\r\n this.questions.set(key, question);\r\n }\r\n\r\n // get question by key for question with question integration\r\n getQuestionByKey(key: string) {\r\n return this.questions.get(key);\r\n }\r\n\r\n // add questions to the survey\r\n addQuestions(questionConfigurations): void {\r\n questionConfigurations.forEach(questionConfiguration => this.addQuestion(questionConfiguration));\r\n }\r\n\r\n // get all the default answers for the survey\r\n getDefaultAnswers(): Object {\r\n const answers = {};\r\n this.pages.forEach((page) => {\r\n page.questions.forEach((question) => {\r\n answers[question.key] = question.getDefaultData();\r\n });\r\n });\r\n return answers;\r\n }\r\n\r\n // get all the default dirty state for the survey\r\n getDefaultDirtyState(bool: boolean): Object {\r\n const state = {};\r\n this.pages.forEach((page) => {\r\n page.questions.forEach((question) => {\r\n state[question.key] = question.getDefaultDirtyState(bool);\r\n });\r\n });\r\n return state;\r\n }\r\n\r\n getDefaultDirtyStatePerPage(bool: boolean, pageIndex: number): Object {\r\n const state = {};\r\n this.pages[pageIndex].questions.forEach((question) => {\r\n state[question.key] = question.getDefaultDirtyState(bool);\r\n });\r\n return state;\r\n }\r\n\r\n setConfiguration(configuration: SurveyConfiguration) {\r\n this.configuration = configuration;\r\n }\r\n\r\n getConfiguration(): SurveyConfiguration {\r\n return this.configuration;\r\n }\r\n\r\n getOtherFlags(): Others {\r\n const {\r\n others = {},\r\n } = this.getConfiguration();\r\n\r\n return others;\r\n }\r\n\r\n // get the feedback data for sending to the OCV service\r\n getFeedbackData(answers: Object): { feedback, extendedManifestData } {\r\n let remaining: Array = [];\r\n let comments: Array = [];\r\n let email = null;\r\n let ratingObject: any = null;\r\n\r\n this.pages.forEach((page) => {\r\n if (page.isVisible(answers)) {\r\n const {\r\n email: emailData,\r\n rating: ratingData,\r\n remaining: remainingData,\r\n comments: commentsData,\r\n } = page.getFeedbackData(answers);\r\n\r\n if (emailData != null) {\r\n email = emailData;\r\n }\r\n if (ratingData != null) {\r\n ratingObject = ratingData;\r\n }\r\n\r\n comments = comments.concat(commentsData);\r\n remaining = remaining.concat(remainingData);\r\n }\r\n });\r\n\r\n let comment;\r\n\r\n if (comments.length > 0) {\r\n // only one comment could show in the OCV,\r\n // the remaining comments will be put inside remaining\r\n comment = comments.shift();\r\n remaining = remaining.concat(comments);\r\n }\r\n\r\n const { combineTextInputToComment } = this.getOtherFlags();\r\n\r\n if (combineTextInputToComment) {\r\n if (_.isEmpty(comment)) {\r\n comment = {\r\n answer: '',\r\n type: 'comment',\r\n };\r\n } else if (_.isEmpty(comment.answer)) {\r\n comment.answer = '';\r\n }\r\n remaining.forEach((question: any) => {\r\n if (question.type === 'single-selection') {\r\n if (!_.isEmpty(question.answer.input)) {\r\n comment.answer = comment.answer.concat(` ${question.answer.input}`);\r\n }\r\n } else if (question.type === 'multiple-selection') {\r\n question.answer.forEach((optionAnswer) => {\r\n if (!_.isEmpty(optionAnswer.input)) {\r\n comment.answer = comment.answer.concat(` ${optionAnswer.input}`);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n const {\r\n rating = null,\r\n ratingOptionsCount,\r\n } = ratingObject || {};\r\n\r\n const feedback = {\r\n rating: rating == null ? -1 : rating,\r\n email,\r\n comment: comment?.answer,\r\n };\r\n\r\n const questions = {};\r\n for (let q = 0; q < remaining.length; q += 1) {\r\n questions[`question${q}`] = stringifySync(remaining[q]);\r\n }\r\n questions['questionCount'] = remaining.length;\r\n\r\n const extendedManifestData = {\r\n surveySpecificData: {\r\n comment: feedback.comment ? [feedback.comment] : [],\r\n rating: feedback.rating !== -1 ? [{ selectedRating: `${Math.round(feedback.rating * ratingOptionsCount) - 1}` }] : [],\r\n questions,\r\n hasEmail: !_.isNull(email),\r\n },\r\n };\r\n\r\n return {\r\n feedback,\r\n extendedManifestData,\r\n };\r\n }\r\n}\r\n","import React, { useContext, useMemo } from 'react';\r\nimport classNames from 'classnames';\r\nimport {\r\n Stack,\r\n} from '@fluentui/react';\r\nimport { SurveyContext } from '@bingads-webui-campaign-react/survey-context';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { surveyStyles } from '../../styles';\r\nimport { SurveyContextType } from '../../survey-context';\r\n\r\nexport const SurveyView = React.memo((props) => {\r\n const classes:any = useDefaultStyles(() => surveyStyles);\r\n\r\n // @ts-ignore\r\n const surveyContext : SurveyContextType = useContext(SurveyContext);\r\n\r\n const {\r\n surveyConfigurator,\r\n getIsEndingPage,\r\n getPageIndex,\r\n } = surveyContext;\r\n\r\n const isEndingPage = getIsEndingPage();\r\n const pageIndex = getPageIndex();\r\n\r\n const page = useMemo(() => (isEndingPage ?\r\n surveyConfigurator.getEndingPage() :\r\n surveyConfigurator.getPage(pageIndex)), [surveyConfigurator, isEndingPage, pageIndex]);\r\n const PageView = useMemo(() => page.getView(), [page]);\r\n\r\n const {\r\n style,\r\n } = surveyConfigurator.getConfiguration();\r\n\r\n const customizedClasses: any = useDefaultStyles(() => style);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n});\r\n","import React, { useState, useMemo, useCallback, useContext, useEffect } from 'react';\r\nimport classNames from 'classnames';\r\nimport { isUndefined, result, isEmpty } from 'underscore';\r\nimport { Modal } from '@fluentui/react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { useLock, keyVault, priorityLevel } from '@bingads-webui-react/popup-manager';\r\nimport { setClarityTag } from '@bingads-webui-universal/clarity';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { SurveyContext } from '@bingads-webui-campaign-react/survey-context';\r\nimport { stringifySync } from '@bingads-webui/safe-json';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { SurveyConfigurator } from './survey-construction/configurator/survey';\r\nimport { SurveyConfiguration } from './survey.types';\r\nimport { SurveyView } from './survey-construction/view/survey';\r\nimport { modalStyles } from './styles';\r\nimport { returnFocus } from './utility';\r\n\r\ninterface SurveyFactoryProps {\r\n getSurveyConfiguration: (options: any) => SurveyConfiguration;\r\n onSurveySubmit: (options: any) => void;\r\n onSurveyDismiss: (options: any) => void;\r\n onSurveyRender: (options: any) => void;\r\n surveyDataService: {\r\n sendFeedback: any;\r\n };\r\n logActivity?: (string) => void;\r\n surveyName?: string;\r\n // eslint-disable-next-line react/require-default-props\r\n lastActiveElement?: HTMLElement;\r\n customParams?: any;\r\n}\r\n\r\nfunction usePage(surveyConfigurator: SurveyConfigurator, surveyAnswers: any, { setCurrentPageDirty, logActivity, analysisActivity }) {\r\n const [pageIndex, setPageIndex] = useState(0);\r\n const [fromBack, setFromBack] = useState(false);\r\n const [isEndingPage, setIsEndingPage] = useState(false);\r\n\r\n const onNext = useCallback(() => {\r\n const currentPage = surveyConfigurator.getPage(pageIndex);\r\n if (currentPage.isValid(surveyAnswers)) {\r\n logActivity('action: next page');\r\n setPageIndex(pageIndex + 1);\r\n analysisActivity('onNext');\r\n setFromBack(false);\r\n } else {\r\n setCurrentPageDirty(pageIndex);\r\n analysisActivity('onNext - invalid');\r\n }\r\n }, [surveyConfigurator, pageIndex, surveyAnswers, logActivity, analysisActivity, setCurrentPageDirty]);\r\n\r\n const onBack = useCallback(() => {\r\n setPageIndex(pageIndex - 1);\r\n logActivity('action: previous page');\r\n analysisActivity('onBack');\r\n setFromBack(true);\r\n }, [pageIndex, logActivity, analysisActivity]);\r\n\r\n\r\n const getIsFirstPage = useCallback(() => pageIndex === 0, [pageIndex]);\r\n const getIsLastPage = useCallback(\r\n () =>\r\n !surveyConfigurator.hasPageAtIndex(pageIndex + 1, surveyAnswers),\r\n [pageIndex, surveyAnswers, surveyConfigurator]\r\n );\r\n\r\n const getPageIndex = useCallback(() => pageIndex, [pageIndex]);\r\n const getIsEndingPage = useCallback(() => isEndingPage, [isEndingPage]);\r\n const getIsFromBack = useCallback(() => fromBack, [fromBack]);\r\n\r\n return {\r\n getPageIndex,\r\n getIsEndingPage,\r\n getIsFromBack,\r\n setIsEndingPage,\r\n onNext,\r\n onBack,\r\n getIsFirstPage,\r\n getIsLastPage,\r\n };\r\n}\r\n\r\nfunction useQuestionState(surveyConfigurator: SurveyConfigurator) {\r\n const [surveyAnswers, setSurveyAnswers] = useState(surveyConfigurator.getDefaultAnswers());\r\n const [surveyDirtyState, setSurveyDirtyState] = useState(surveyConfigurator.getDefaultDirtyState(false));\r\n\r\n const setAnswersByKey = useCallback((key, data) => {\r\n const newAnswers = { ...surveyAnswers };\r\n newAnswers[key] = data;\r\n setSurveyAnswers(newAnswers);\r\n }, [setSurveyAnswers, surveyAnswers]);\r\n\r\n const setSurveyDirtyStateByKey = useCallback((key, data) => {\r\n const newDirtyState = { ...surveyDirtyState };\r\n newDirtyState[key] = data;\r\n setSurveyDirtyState(newDirtyState);\r\n }, [surveyDirtyState, setSurveyDirtyState]);\r\n\r\n const getAnswersByKey = useCallback(key => surveyAnswers[key], [surveyAnswers]);\r\n const getSurveyAnswers = useCallback(() => surveyAnswers, [surveyAnswers]);\r\n const getSurveyDirtyStateByKey = useCallback(key => surveyDirtyState[key], [surveyDirtyState]);\r\n const getSurveyDirtyState = useCallback(() => surveyDirtyState, [surveyDirtyState]);\r\n\r\n const setCurrentPageDirty = useCallback((pageIndex) => {\r\n const newState = surveyConfigurator.getDefaultDirtyStatePerPage(true, pageIndex);\r\n setSurveyDirtyState({ ...surveyDirtyState, ...newState });\r\n }, [surveyConfigurator, surveyDirtyState]);\r\n\r\n return {\r\n getSurveyAnswers,\r\n setAnswersByKey,\r\n getAnswersByKey,\r\n getSurveyDirtyState,\r\n setSurveyDirtyStateByKey,\r\n getSurveyDirtyStateByKey,\r\n setCurrentPageDirty,\r\n };\r\n}\r\n\r\nfunction parseSurveyConfiguration({ getSurveyConfiguration, serverContext, i18n }): SurveyConfigurator {\r\n const surveyConfiguration = getSurveyConfiguration({\r\n i18n,\r\n serverContext,\r\n });\r\n const {\r\n rating,\r\n email,\r\n questions,\r\n featureArea,\r\n } = surveyConfiguration;\r\n\r\n const surveyConfigurator = new SurveyConfigurator({\r\n featureArea,\r\n serverContext,\r\n i18n,\r\n configuration: surveyConfiguration,\r\n });\r\n\r\n if (rating) {\r\n surveyConfigurator.addQuestion(rating);\r\n }\r\n if (email) {\r\n surveyConfigurator.addQuestion(email);\r\n }\r\n surveyConfigurator.addQuestions(questions);\r\n\r\n surveyConfigurator.sortPages();\r\n return surveyConfigurator;\r\n}\r\n\r\nexport const SurveyFactory = (props: SurveyFactoryProps) => {\r\n const {\r\n getSurveyConfiguration,\r\n surveyDataService,\r\n onSurveySubmit,\r\n onSurveyDismiss,\r\n onSurveyRender,\r\n logActivity,\r\n surveyName,\r\n lastActiveElement,\r\n customParams,\r\n } = props;\r\n\r\n const classes: any = useDefaultStyles(() => modalStyles);\r\n\r\n // @ts-ignore\r\n const serverContext = useContext(ServerContext);\r\n const i18n = useContext(I18nContext) as any;\r\n // @ts-ignore\r\n const isPopupOutsideDismissEnabled = result(serverContext, ['DynamicPermissions', 'PopupOutsideDismiss'], false) || result(serverContext, ['CCUIPilots', 'dynamic', 'PopupOutsideDismiss'], false);\r\n\r\n const surveyConfigurator = useMemo(\r\n () => parseSurveyConfiguration({ getSurveyConfiguration, serverContext, i18n }),\r\n [getSurveyConfiguration, serverContext, i18n]\r\n );\r\n\r\n const [isModalOpen, setIsModalOpen] = useState(true);\r\n\r\n const {\r\n getSurveyAnswers,\r\n getAnswersByKey,\r\n setAnswersByKey,\r\n getSurveyDirtyState,\r\n setSurveyDirtyStateByKey,\r\n getSurveyDirtyStateByKey,\r\n setCurrentPageDirty,\r\n } = useQuestionState(surveyConfigurator);\r\n\r\n const surveyAnswers = getSurveyAnswers();\r\n const surveyDirtyState = getSurveyDirtyState();\r\n\r\n const {\r\n modalSettings = {},\r\n others = {},\r\n } = surveyConfigurator.getConfiguration();\r\n\r\n const {\r\n isGlobalModalStyleEnabled,\r\n userActionAnalysisEnabled,\r\n isUserInitiatedSurvey,\r\n isThankYouPageEnabled = true,\r\n shouldAutoClose = true,\r\n isInPageMiddle = false,\r\n isModeless: isOriginalModeless,\r\n isBlocking = false,\r\n } = others;\r\n\r\n const myLogActivity = useCallback((string: string) => {\r\n if (logActivity && surveyName) {\r\n logActivity(`SurveyFactory | survey: ${surveyName}, ${string}`);\r\n }\r\n }, [logActivity, surveyName]);\r\n\r\n const analysisActivity = useCallback((action: string) => {\r\n if (!userActionAnalysisEnabled) {\r\n return;\r\n }\r\n\r\n function flattenKeys(obj: object, prefix = '') {\r\n return Object.keys(obj).reduce((acc, key) => {\r\n const newKey = prefix ? `${prefix}.${key}` : key;\r\n if (typeof obj[key] === 'object') {\r\n Object.assign(acc, flattenKeys(obj[key], newKey));\r\n } else {\r\n acc[newKey] = obj[key];\r\n }\r\n return acc;\r\n }, {});\r\n }\r\n\r\n if (surveyName) {\r\n setClarityTag({ SurveyFactory: `${surveyName}, ${action}` });\r\n\r\n if (logActivity) {\r\n // @ts-ignore\r\n logActivity(`SurveyFactory | survey: ${surveyName}, action: ${action}, surveyAnswers: ${JSON.stringify(flattenKeys(surveyAnswers)).replaceAll('\"', '')}`);\r\n // @ts-ignore\r\n logActivity(`SurveyFactory | survey: ${surveyName}, action: ${action}, surveyDirtyState: ${JSON.stringify(flattenKeys(surveyDirtyState)).replaceAll('\"', '')}`);\r\n }\r\n }\r\n }, [userActionAnalysisEnabled, surveyName, logActivity, surveyAnswers, surveyDirtyState]);\r\n\r\n const additionalLogData = useMemo(() => {\r\n // @ts-ignore\r\n const userCreatedDateTime = result(serverContext, ['CurrentUser', 'FetchedCreatedDateTime']) || result(serverContext, ['CurrentUser', 'CreatedDateTime']);\r\n const localizedUserCreatedDateTime = new Date(userCreatedDateTime);\r\n const now = new Date();\r\n const deltaTime = now.getTime() - localizedUserCreatedDateTime.getTime();\r\n const deltaDay = Math.ceil(deltaTime / (1 * 24 * 60 * 60 * 1000));\r\n\r\n return {\r\n userCreatedDateTime,\r\n userActiveDay: deltaDay,\r\n };\r\n }, [serverContext]);\r\n\r\n const { lock, releaseLock } = useLock({\r\n key: `${keyVault.survey}-${surveyName}`,\r\n // Increase the WebuiUserSurvey priority to let it not be affected by teaching bubble\r\n priority: surveyName === 'WebuiUserSurvey' ? priorityLevel.systemLevelAnnouncement : priorityLevel.survey,\r\n force: isUserInitiatedSurvey,\r\n // @ts-ignore\r\n autoClose: shouldAutoClose && result(serverContext, ['Permissions', 'IsCentralizedPopupManagementEnabled']),\r\n });\r\n\r\n useEffect(() => {\r\n if (lock) {\r\n onSurveyRender?.(additionalLogData);\r\n }\r\n }, [lock, onSurveyRender, additionalLogData]);\r\n\r\n const {\r\n getPageIndex,\r\n onNext,\r\n onBack,\r\n getIsEndingPage,\r\n getIsLastPage,\r\n getIsFirstPage,\r\n setIsEndingPage,\r\n getIsFromBack,\r\n } = usePage(surveyConfigurator, surveyAnswers, { setCurrentPageDirty, logActivity: myLogActivity, analysisActivity });\r\n\r\n const onCloseModal = useCallback(() => {\r\n setIsModalOpen(false);\r\n returnFocus(lastActiveElement);\r\n releaseLock();\r\n }, [lastActiveElement, releaseLock]);\r\n\r\n const onSubmit = useCallback(() => {\r\n const pageIndex = getPageIndex();\r\n const currentPage = surveyConfigurator.getPage(pageIndex);\r\n\r\n if (currentPage.isValid(surveyAnswers)) {\r\n const { feedback, extendedManifestData } = surveyConfigurator.getFeedbackData(surveyAnswers);\r\n const telemetry = {\r\n featureArea: surveyConfigurator.getFeatureArea(),\r\n };\r\n\r\n surveyDataService.sendFeedback({\r\n feedback,\r\n extendedManifestData,\r\n telemetry,\r\n onFinishSendRequest: () => {\r\n myLogActivity('action: submit');\r\n myLogActivity(`trace: feedback, ${stringifySync(feedback)}`);\r\n if (customParams) {\r\n myLogActivity(`trace: customParams, ${stringifySync(customParams)} | trace: extendedManifestData, ${stringifySync(extendedManifestData)}`);\r\n } else {\r\n myLogActivity(`trace: extendedManifestData, ${stringifySync(extendedManifestData)}`);\r\n }\r\n // @ts-ignore\r\n const hasComment = !isEmpty(result(feedback, ['comment'], ''));\r\n onSurveySubmit({\r\n hasComment,\r\n ...additionalLogData,\r\n });\r\n },\r\n });\r\n\r\n setIsEndingPage(true);\r\n\r\n if (!isThankYouPageEnabled) {\r\n onCloseModal();\r\n }\r\n\r\n analysisActivity('onSubmit');\r\n } else {\r\n setCurrentPageDirty(pageIndex);\r\n analysisActivity('onSubmit - invalid');\r\n }\r\n }, [getPageIndex, surveyConfigurator, surveyAnswers, surveyDataService, setIsEndingPage, isThankYouPageEnabled, analysisActivity, myLogActivity, customParams, onSurveySubmit, onCloseModal, setCurrentPageDirty, additionalLogData]);\r\n\r\n const onDismiss = useCallback((dismissType: string) => {\r\n onCloseModal();\r\n onSurveyDismiss(additionalLogData);\r\n myLogActivity(`action: dismiss, dismissType: ${dismissType}`);\r\n analysisActivity(`onDismiss - ${dismissType}`);\r\n }, [onCloseModal, onSurveyDismiss, myLogActivity, analysisActivity, additionalLogData]);\r\n\r\n const onDone = useCallback(() => {\r\n onCloseModal();\r\n myLogActivity('action: done');\r\n }, [onCloseModal, myLogActivity]);\r\n\r\n const onModalDismiss = useCallback((event) => {\r\n if (event && event.keyCode === 27) { // Escape\r\n onDismiss('keyboard - ESC');\r\n } else {\r\n onCloseModal();\r\n myLogActivity('action: lightDismiss');\r\n }\r\n }, [onDismiss, onCloseModal, myLogActivity]);\r\n\r\n const modalSpecificStyles = useMemo(() => {\r\n if (isInPageMiddle) {\r\n return {\r\n position: 'absolute',\r\n };\r\n }\r\n\r\n return {\r\n main: {\r\n position: 'absolute',\r\n right: '40px',\r\n bottom: '0',\r\n minHeight: '0',\r\n zIndex: 10000000,\r\n },\r\n };\r\n }, [isInPageMiddle]);\r\n\r\n const isModeless = useMemo(() => {\r\n if (!isUndefined(isOriginalModeless)) {\r\n return isOriginalModeless;\r\n }\r\n\r\n return !isPopupOutsideDismissEnabled;\r\n }, [isOriginalModeless, isPopupOutsideDismissEnabled]);\r\n\r\n useEffect(() => {\r\n myLogActivity('action: mount');\r\n }, [myLogActivity]);\r\n\r\n return lock && (\r\n surveyConfigurator.getConfiguration(),\r\n getIsSubmitButtonDisabled: () => false,\r\n setSurveyDirtyStateByKey,\r\n getSurveyDirtyStateByKey,\r\n getSurveyAnswers,\r\n getAnswersByKey,\r\n setAnswersByKey,\r\n onNext,\r\n onBack,\r\n getPageIndex,\r\n getIsFirstPage,\r\n getIsLastPage,\r\n getIsEndingPage,\r\n setIsEndingPage,\r\n getIsFromBack,\r\n onDismiss,\r\n onSubmit,\r\n onDone,\r\n logActivity: myLogActivity,\r\n }}\r\n >\r\n \r\n {isModalOpen && }\r\n \r\n \r\n );\r\n};\r\n\r\nSurveyFactory.defaultProps = {\r\n logActivity: undefined,\r\n surveyName: undefined,\r\n customParams: undefined,\r\n};\r\n","import React from 'react';\r\nimport {\r\n RatingConfigurator,\r\n MultipleSelectionConfigurator,\r\n CommentConfigurator,\r\n EmailConfigurator,\r\n SurveyFactory,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\n\r\nconst exampleSurveyConfig = (options) => {\r\n const {\r\n i18n,\r\n } = options;\r\n\r\n return {\r\n featureArea: 'WebUIUserCSAT',\r\n style: {\r\n root: {\r\n maxWidth: 480,\r\n },\r\n },\r\n others: {\r\n shouldHideInputWhenNotSelected: true,\r\n userActionAnalysisEnabled: true,\r\n combineTextInputToComment: true,\r\n },\r\n rating: {\r\n isRequired: true,\r\n Type: RatingConfigurator,\r\n key: 'rating',\r\n page: 0,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('Please rate your overall satisfaction with Microsoft Advertising\\'s interface.')),\r\n isVisible: () => true,\r\n options: [\r\n {\r\n key: '5',\r\n text: i18n.getString(_TL_('Very satisfied')),\r\n rating: 1.0,\r\n },\r\n {\r\n key: '4',\r\n text: i18n.getString(_TL_('Moderately satisfied')),\r\n rating: 0.8,\r\n },\r\n {\r\n key: '3',\r\n text: i18n.getString(_TL_('Neither satisfied nor dissatisfied')),\r\n rating: 0.6,\r\n },\r\n {\r\n key: '2',\r\n text: i18n.getString(_TL_('Moderately dissatisfied')),\r\n rating: 0.4,\r\n },\r\n {\r\n key: '1',\r\n text: i18n.getString(_TL_('Very dissatisfied')),\r\n rating: 0.2,\r\n },\r\n ],\r\n },\r\n email: {\r\n Type: EmailConfigurator,\r\n key: 'email',\r\n page: 1,\r\n position: 2,\r\n getTitle: () => i18n.getString(_TL_('Can we follow up with you about your responses?')),\r\n isVisible: answers => ['3', '2', '1'].includes(answers.rating.selectedOption),\r\n options: [\r\n {\r\n key: 'yes',\r\n text: i18n.getString(_TL_('Yes - specify the contact email below')),\r\n placeholder: i18n.getString(_TL_('Enter your email')),\r\n hasInput: true,\r\n },\r\n {\r\n key: 'no',\r\n text: i18n.getString(_TL_('No')),\r\n },\r\n ],\r\n },\r\n questions: [\r\n {\r\n Type: MultipleSelectionConfigurator,\r\n key: 'q1',\r\n page: 1,\r\n position: 0,\r\n getTitle: (answers, surveyConfigurator) => {\r\n const questionConfigurator = surveyConfigurator.getQuestionByKey('rating');\r\n const optionKey = answers.rating.selectedOption;\r\n // option to text\r\n return i18n.getString(\r\n _TL_('Can you tell us more about where you are {{option}} with our interface?'),\r\n { option: questionConfigurator.optionKeyToText[optionKey] }\r\n );\r\n },\r\n isVisible: answers => ['3', '2', '1'].includes(answers.rating.selectedOption),\r\n options: [\r\n {\r\n key: 'q1o1',\r\n text: i18n.getString(_TL_('Campaign creation and editing')),\r\n },\r\n {\r\n key: 'q1o2',\r\n text: i18n.getString(_TL_('Interface navigation')),\r\n },\r\n {\r\n key: 'q1o3',\r\n text: i18n.getString(_TL_('Search and filtering')),\r\n },\r\n {\r\n key: 'q1o4',\r\n text: i18n.getString(_TL_('The overview page')),\r\n },\r\n {\r\n key: 'q1o5',\r\n text: i18n.getString(_TL_('Others - Please feel free to elaborate below')),\r\n placeholder: i18n.getString(_TL_('Please feel free to elaborate')),\r\n hasInput: true,\r\n maxLength: 2000,\r\n },\r\n ],\r\n data: {\r\n },\r\n },\r\n {\r\n Type: CommentConfigurator,\r\n key: 'q2',\r\n page: 1,\r\n position: 1,\r\n getTitle: () => i18n.getString(_TL_('How can we continue to improve?')),\r\n isVisible: answers => ['3', '2', '1'].includes(answers.rating.selectedOption),\r\n maxLength: 2000,\r\n data: {\r\n },\r\n },\r\n ],\r\n };\r\n};\r\n\r\nexport const FactorySurveyView = props => (\r\n );\r\n","import { getTheme } from '@fluentui/react';\r\n\r\nconst theme = getTheme();\r\n\r\nexport const iconButtonStyles = {\r\n root: {\r\n color: theme.palette.neutralPrimary,\r\n marginLeft: 'auto',\r\n marginTop: '4px',\r\n marginRight: '2px',\r\n },\r\n rootHovered: {\r\n color: theme.palette.neutralDark,\r\n },\r\n};\r\n\r\nexport const surveyStyles = surveyMaxWidth => ({\r\n container: {\r\n padding: 24,\r\n maxWidth: surveyMaxWidth,\r\n fontFamily: 'Segoe UI',\r\n lineHeight: '20px',\r\n },\r\n header: {\r\n flex: '1 1 auto',\r\n display: 'flex',\r\n alignItems: 'center',\r\n marginBottom: 12,\r\n '& .survey-close-button': {\r\n marginTop: 0,\r\n },\r\n },\r\n title: {\r\n fontSize: 16,\r\n fontWeight: 600,\r\n },\r\n body: {\r\n fontSIze: 14,\r\n color: '#000000',\r\n '& .asterisk': {\r\n color: '#A80000',\r\n },\r\n },\r\n ratingDescription: {\r\n fontWeight: 600,\r\n },\r\n rating: {\r\n '& label': {\r\n padding: 0,\r\n fontWewight: 'normal',\r\n },\r\n '& input': {\r\n visibility: 'hidden',\r\n },\r\n },\r\n ratingOption: {\r\n '& span.ms-ChoiceFieldLabel': {\r\n fontWeight: 400,\r\n },\r\n },\r\n area: {\r\n marginTop: 16,\r\n },\r\n areaDescription: {\r\n fontWeight: 600,\r\n marginBottom: 7,\r\n },\r\n areaCheckbox: {\r\n\r\n },\r\n areaComment: {\r\n marginTop: 6,\r\n marginLeft: 27,\r\n },\r\n comment: {\r\n marginTop: 16,\r\n },\r\n commentDescription: {\r\n fontWeight: 600,\r\n },\r\n commentInput: {\r\n marginTop: 8,\r\n },\r\n email: {\r\n marginTop: 16,\r\n },\r\n emailDescription: {\r\n fontWeight: 600,\r\n },\r\n emailOptions: {\r\n '& .ms-ChoiceField-wrapper': {\r\n width: '100%',\r\n },\r\n },\r\n emailOption: {\r\n '& span.ms-ChoiceFieldLabel': {\r\n fontWeight: 400,\r\n },\r\n '& label': {\r\n padding: 0,\r\n },\r\n },\r\n emailInput: {\r\n marginTop: 6,\r\n marginLeft: 26,\r\n marginBottom: 4,\r\n },\r\n emailError: {\r\n marginLeft: 26,\r\n color: '#A80000',\r\n lineHeight: '16px',\r\n fontSize: 12,\r\n fontWeight: 400,\r\n marginTop: 2,\r\n },\r\n footer: {\r\n fontSIze: 14,\r\n marginTop: 16,\r\n color: '#000000',\r\n },\r\n privacyStatement: {\r\n lineHeight: '16px',\r\n marginTop: 20,\r\n marginBottom: 20,\r\n fontSize: 12,\r\n color: '#605E5C',\r\n },\r\n infoText: {\r\n fontWeight: 600,\r\n textDecoration: 'underline',\r\n },\r\n validationError: {\r\n color: '#A80000',\r\n lineHeight: '16px',\r\n fontSize: 12,\r\n fontWeight: 400,\r\n marginTop: 2,\r\n },\r\n buttonBar: {\r\n float: 'right',\r\n },\r\n submitButton: {\r\n marginRight: 12,\r\n },\r\n cancelButton: {\r\n\r\n },\r\n closeButton: {\r\n\r\n },\r\n});\r\n","import React, { useState, useMemo, useCallback, useRef } from 'react';\r\nimport { reduce, map, filter, keys, noop, compose, partial } from 'underscore'; // eslint-disable-line max-len\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport {\r\n Modal,\r\n Stack,\r\n IconButton,\r\n Text,\r\n ChoiceGroup,\r\n Link,\r\n TextField,\r\n Checkbox,\r\n PrimaryButton,\r\n DefaultButton,\r\n} from '@fluentui/react';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { Glyphicon } from '@bingads-webui-react/primitive';\r\nimport { ReactTemplate } from '@bingads-webui-react/react-template';\r\nimport { withServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport {\r\n surveyStyles,\r\n iconButtonStyles,\r\n} from './styles';\r\n\r\nconst surveyMaxWidth = 480;\r\nconst commentMaxLength = 2000;\r\n\r\nfunction SurveyViewInternal(props) {\r\n const {\r\n classes,\r\n i18n,\r\n serverContext,\r\n surveyDataService,\r\n onSurveySubmit,\r\n onSurveyDismiss,\r\n } = props;\r\n\r\n const surveyRef = useRef(null);\r\n\r\n const [isModalOpen, setIsModalOpen] = useState(true);\r\n\r\n const [selectedOption, setSelectedOption] = useState(null);\r\n\r\n const [validationError, setValidationError] = useState(true);\r\n\r\n const validate = useCallback((option) => {\r\n if (option) {\r\n setValidationError('');\r\n } else {\r\n setValidationError(i18n.getString(_TL_('Please answer this question')));\r\n }\r\n }, [i18n]);\r\n\r\n const onChangeRating = useCallback((_, option) => {\r\n setSelectedOption(option);\r\n validate(option);\r\n }, [validate]);\r\n\r\n const ratingOptions = useMemo(() => {\r\n const options = [\r\n {\r\n key: 'very-satisfied',\r\n text: i18n.getString(_TL_('Very satisfied')),\r\n rating: 1.0,\r\n isAdditionalContentVisible: false,\r\n },\r\n {\r\n key: 'moderately-satisfied',\r\n text: i18n.getString(_TL_('Moderately satisfied')),\r\n rating: 0.8,\r\n isAdditionalContentVisible: false,\r\n },\r\n {\r\n key: 'neither-satisfied-nor-dissatisfied',\r\n text: i18n.getString(_TL_('Neither satisfied or dissatisfied')),\r\n rating: 0.6,\r\n isAdditionalContentVisible: true,\r\n },\r\n {\r\n key: 'moderately-dissatisfied',\r\n text: i18n.getString(_TL_('Moderately dissatisfied')),\r\n rating: 0.4,\r\n isAdditionalContentVisible: true,\r\n },\r\n {\r\n key: 'very-dissatisfied',\r\n text: i18n.getString(_TL_('Very dissatisfied')),\r\n rating: 0.2,\r\n isAdditionalContentVisible: true,\r\n },\r\n ];\r\n\r\n return options.map(value => ({\r\n ariaLabel: value.text,\r\n onRenderField: (_props, render) => (\r\n
\r\n {render(_props)}\r\n
\r\n ),\r\n ...value,\r\n }));\r\n }, [i18n, classes.ratingOption]);\r\n\r\n const areaOptions = useMemo(() => [\r\n {\r\n key: 'campaignCreationAndEditing',\r\n label: i18n.getString(_TL_('Campaign creation and editing')),\r\n withComment: false,\r\n }, {\r\n key: 'interfaceNavigation',\r\n label: i18n.getString(_TL_('Interface navigation')),\r\n withComment: false,\r\n }, {\r\n key: 'searchAndFiltering',\r\n label: i18n.getString(_TL_('Search and filtering')),\r\n withComment: false,\r\n }, {\r\n key: 'theOverviewPage',\r\n label: i18n.getString(_TL_('The overview page')),\r\n withComment: false,\r\n }, {\r\n key: 'others',\r\n label: i18n.getString(_TL_('Others - Please feel free to elaborate below')),\r\n withComment: true,\r\n },\r\n ], [i18n]);\r\n\r\n const initialAreaState = useMemo(() => reduce(areaOptions, (memo, { key }) => ({\r\n ...memo,\r\n [key]: false,\r\n }), {}), [areaOptions]);\r\n\r\n const [areaState, setAreaState] = useState(initialAreaState);\r\n\r\n const [areaComment, setAreaComment] = useState('');\r\n const [areaCommentDescription, setAreaCommentDescription] = useState('');\r\n const [areaCommentError, setAreaCommentError] = useState('');\r\n\r\n const onChangeAreaComment = useCallback((_, val) => {\r\n setAreaComment(val);\r\n if (val.length > commentMaxLength) {\r\n setAreaCommentDescription('');\r\n setAreaCommentError('Field should not exceed 2000 characters');\r\n } else {\r\n setAreaCommentDescription(`${commentMaxLength - val.length} characters remaining`);\r\n setAreaCommentError('');\r\n }\r\n }, []);\r\n\r\n const [comment, setComment] = useState('');\r\n const [commentDescription, setCommentDescription] = useState('');\r\n const [commentError, setCommentError] = useState('');\r\n\r\n const onChangeComment = useCallback((_, val) => {\r\n setComment(val);\r\n if (val.length > commentMaxLength) {\r\n setCommentDescription('');\r\n setCommentError('Field should not exceed 2000 characters');\r\n } else {\r\n setCommentDescription(`${commentMaxLength - val.length} characters remaining`);\r\n setCommentError('');\r\n }\r\n }, []);\r\n\r\n const [emailOption, setEmailOption] = useState(false);\r\n const [email, setEmail] = useState(serverContext.CurrentUser.Email);\r\n const [emailError, setEmailError] = useState('');\r\n\r\n const onChangeEmailOption = useCallback((_, option) => {\r\n setEmailOption(option);\r\n }, []);\r\n\r\n const validateEmailAddress = useCallback((emailAddress) => {\r\n const re = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return re.test(emailAddress);\r\n }, []);\r\n\r\n const onChangeEmail = useCallback((_, val) => {\r\n setEmail(val);\r\n if (validateEmailAddress(val)) {\r\n setEmailError('');\r\n } else {\r\n setEmailError(i18n.getString(_TL_('Invalid email address')));\r\n }\r\n }, [validateEmailAddress, i18n]);\r\n\r\n const emailOptions = useMemo(() => {\r\n const options = [\r\n {\r\n key: 'yes',\r\n text: i18n.getString(_TL_('Yes - specify the contact email below')),\r\n },\r\n {\r\n key: 'no',\r\n text: i18n.getString(_TL_('No')),\r\n },\r\n ];\r\n\r\n return options.map(value => ({\r\n ariaLabel: value.text,\r\n onRenderField: (_props, render) => (\r\n
\r\n {render(_props)}\r\n {emailOption && emailOption.key === 'yes' && value.key === 'yes' &&\r\n \r\n \r\n
\r\n {emailError}\r\n
\r\n
\r\n }\r\n
\r\n ),\r\n ...value,\r\n }));\r\n }, [i18n, classes.emailOption, emailOption, classes.emailInput, email, onChangeEmail, classes.emailError, emailError]);\r\n\r\n const [disableSubmitButton, setDisableSubmitButton] = useState(false);\r\n\r\n const onSubmit = useCallback(() => {\r\n validate(selectedOption);\r\n\r\n if (validationError) {\r\n return;\r\n }\r\n\r\n const selectedAreas = filter(keys(areaState), key => areaState[key] === true);\r\n const additionalAreas = areaState.others ? `,${areaComment}` : '';\r\n const feedback = {\r\n comment: `Areas:${selectedAreas.toString()}${additionalAreas} | Comment:${comment}`,\r\n rating: selectedOption.rating,\r\n };\r\n if (emailOption && emailOption.key === 'yes') {\r\n feedback.email = email;\r\n }\r\n const telemetry = {\r\n featureArea: 'WebUIUserCSAT',\r\n };\r\n surveyDataService.sendFeedback({\r\n feedback,\r\n telemetry,\r\n onFinishSendRequest: () => {\r\n setIsModalOpen(false);\r\n onSurveySubmit();\r\n },\r\n });\r\n\r\n setDisableSubmitButton(true);\r\n }, [validate, validationError, selectedOption, areaState, areaComment, comment, emailOption, email, surveyDataService, onSurveySubmit]);\r\n\r\n const onDismiss = useCallback(() => {\r\n setIsModalOpen(false);\r\n onSurveyDismiss();\r\n }, [onSurveyDismiss]);\r\n\r\n const cancelIcon = useMemo(() => ({\r\n iconName: 'Cancel',\r\n }), []);\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n \r\n {i18n.getString(_TL_('Feedback to Microsoft'))}\r\n \r\n \r\n
\r\n
\r\n \r\n {i18n.getString(_TL_('Please rate your overall satisfaction with Microsoft Advertising\\'s interface. '))}\r\n *\r\n \r\n
\r\n {validationError}\r\n
\r\n \r\n {selectedOption && selectedOption.isAdditionalContentVisible &&\r\n \r\n
\r\n
\r\n (`${selectedOption.text}`),\r\n }}\r\n template={\r\n i18n.getString(_TL_('Can you tell us more about where you are {{b}}{{/b}} with our interface?'))\r\n }\r\n />\r\n
\r\n {map(areaOptions, ({ key, label, withComment }) => {\r\n const checkbox =\r\n ( {\r\n setAreaState(prev => ({\r\n ...prev,\r\n [key]: checked,\r\n }));\r\n }}\r\n />);\r\n if (withComment && areaState[key]) {\r\n return (\r\n \r\n {checkbox}\r\n \r\n \r\n );\r\n }\r\n return checkbox;\r\n })}\r\n
\r\n
\r\n \r\n {i18n.getString(_TL_('How can we continue to improve?'))}\r\n \r\n \r\n
\r\n
\r\n \r\n {i18n.getString(_TL_('Can we follow up with you about yor responses?'))}\r\n \r\n \r\n
\r\n
\r\n }\r\n
\r\n
\r\n
\r\n (\r\n \r\n {`${text} `}\r\n \r\n \r\n ),\r\n }}\r\n template={\r\n i18n.getString(_TL_('By pressing submit, your feedback will be used to improve Microsoft products and services. {{a}}Privacy statement{{/a}}'))\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\nSurveyViewInternal.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n serverContext: PropTypes.shape({\r\n CurrentUser: PropTypes.shape({\r\n Email: PropTypes.string.isRequired,\r\n }),\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n container: PropTypes.string,\r\n header: PropTypes.string,\r\n title: PropTypes.string,\r\n body: PropTypes.string,\r\n rating: PropTypes.string,\r\n ratingDescription: PropTypes.string,\r\n ratingOption: PropTypes.string,\r\n area: PropTypes.string,\r\n areaDescription: PropTypes.string,\r\n areaCheckbox: PropTypes.string,\r\n areaComment: PropTypes.string,\r\n comment: PropTypes.string,\r\n commentDescription: PropTypes.string,\r\n commentInput: PropTypes.string,\r\n email: PropTypes.string,\r\n emailDescription: PropTypes.string,\r\n emailOptions: PropTypes.string,\r\n emailOption: PropTypes.string,\r\n emailInput: PropTypes.string,\r\n footer: PropTypes.string,\r\n privacyStatement: PropTypes.string,\r\n infoText: PropTypes.string,\r\n validationError: PropTypes.string,\r\n emailError: PropTypes.string,\r\n buttonBar: PropTypes.string,\r\n submitButton: PropTypes.string,\r\n cancelButton: PropTypes.string,\r\n closeButton: PropTypes.string,\r\n }).isRequired,\r\n onSurveySubmit: PropTypes.func,\r\n onSurveyDismiss: PropTypes.func,\r\n surveyDataService: PropTypes.shape({\r\n sendFeedback: PropTypes.func.isRequired,\r\n }).isRequired,\r\n};\r\n\r\nSurveyViewInternal.defaultProps = {\r\n onSurveySubmit: noop,\r\n onSurveyDismiss: noop,\r\n};\r\n\r\nexport const SurveyView = compose(\r\n WrappedComponent => withDefaultStyles(WrappedComponent, partial(surveyStyles, surveyMaxWidth)),\r\n withI18nConsumer,\r\n withServerContext\r\n)(SurveyViewInternal);\r\n","import { result } from 'underscore';\r\nimport { BaseSurvey } from '../base-survey';\r\nimport { FactorySurveyView } from './factory-view';\r\nimport { SurveyView } from './view';\r\n\r\nexport class WebuiUserSurvey extends BaseSurvey {\r\n getSurveyName = () => 'WebuiUserSurvey';\r\n\r\n getSurveyProduct = () => 'Expert';\r\n\r\n getSurveyInterface = () => 'Web';\r\n\r\n getSurveyId = isTestEnv => isTestEnv ? // eslint-disable-line no-confusing-arrow\r\n '65ad291c-e0ee-4f45-958f-42497060ea28' : '94d8fa3e-cc2f-4adf-a04f-abe716426178';\r\n\r\n getInitializationConfig = () => ({\r\n initGroup: 100,\r\n initStartDate: '2022-12-09',\r\n initEndDate: '2023-06-09',\r\n });\r\n\r\n isWebUIUserCSATSurveyByFactoryEnabled = () => // should enable the pilot (pilot by percentage of user Id)\r\n result(this.serverContext, ['Permissions', 'IsWebUIUserCSATSurveyByFactoryEnabled']);\r\n\r\n checkUserCreatedDateTime = (userCreatedDateTime, offset) => {\r\n const localizedUserCreatedDateTime = new Date(userCreatedDateTime);\r\n const surveyPreferenceSeveralDaysAgo = this.SurveyPreferenceService.getDaysAgo(offset);\r\n const isUserActive = localizedUserCreatedDateTime <= surveyPreferenceSeveralDaysAgo;\r\n return isUserActive;\r\n };\r\n\r\n getUserActiveDay = () => {\r\n const userCreatedDateTime = result(this.serverContext, ['CurrentUser', 'FetchedCreatedDateTime']) || result(this.serverContext, ['CurrentUser', 'CreatedDateTime']);\r\n const localizedUserCreatedDateTime = new Date(userCreatedDateTime);\r\n const now = new Date();\r\n const deltaTime = now.getTime() - localizedUserCreatedDateTime.getTime();\r\n const deltaDay = Math.ceil(deltaTime / (1 * 24 * 60 * 60 * 1000));\r\n return deltaDay;\r\n };\r\n\r\n validateTriggerCondition = () => {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, Start`);\r\n\r\n // should enable the pilot (pilot by percentage of user Id)\r\n const isPilotEnabled = result(this.serverContext, ['Permissions', 'IsWebUIUserCSATSurveyEnabled']) || this.isWebUIUserCSATSurveyByFactoryEnabled();\r\n\r\n if (!isPilotEnabled) {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, isPilotEnabled: ${isPilotEnabled}`);\r\n return false;\r\n }\r\n\r\n // should not be AAD users, AAD users can be included in the future after OCPS integration\r\n const isNonAADUser = !result(this.serverContext, 'IsAADUser');\r\n\r\n if (!isNonAADUser) {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, isNonAADUser: ${isNonAADUser}`);\r\n return false;\r\n }\r\n\r\n // should be active user more than 30 days\r\n const userCreatedDateTime = result(this.serverContext, ['CurrentUser', 'CreatedDateTime']);\r\n const isUserActiveOneMonth = this.checkUserCreatedDateTime(userCreatedDateTime, 30);\r\n\r\n if (!this.isTestEnv && !isUserActiveOneMonth) {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, isTestEnv: ${this.isTestEnv}, isUserActiveOneMonth: ${isUserActiveOneMonth}, userCreatedDateTime: ${userCreatedDateTime}`);\r\n return false;\r\n }\r\n\r\n // should have campaign in the account (ignore this condition for broader audience)\r\n // const isAccountHasCampaign = result(window, ['survey', 'hasCampaign']);\r\n\r\n // if (!this.isTestEnv && !isAccountHasCampaign) {\r\n // this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, isAccountHasCampaign: ${isAccountHasCampaign}`);\r\n // return false;\r\n // }\r\n\r\n // conditions copied from Qualtrics\r\n const isEnglishUser = result(this.serverContext, ['CurrentUser', 'Language']) === 'EN';\r\n const isBrowserLanguageEnglish = result(this.serverContext, ['CurrentLocale'], '').startsWith('en');\r\n const isNotInternalUser = result(this.serverContext, ['CurrentUser', 'IsInternal']) !== true;\r\n const isNotSupportUser = !result(this.serverContext, ['CurrentUser', 'Name']).includes('@microsoftsupport.com');\r\n const isNotExcludedUser = result(this.serverContext, ['CurrentUser', 'Id']) !== 102004780;\r\n const isDisabledInBVT = window.location.href.includes('Permissions.CSATSurveyInBVTDisabled=true');\r\n const isProdUrl = window.location.href.toLocaleLowerCase().includes('https://ui.ads.microsoft.com/');\r\n const isNotMcaUrl = !window.location.href.toLocaleLowerCase().includes('campaign/mca');\r\n\r\n const qualtricsConditions =\r\n this.isTestEnv || // should be test env\r\n (isEnglishUser && // should be English user\r\n isBrowserLanguageEnglish && // should browser language be English\r\n isNotInternalUser && // not internal users\r\n isNotSupportUser && // not support team users\r\n isNotExcludedUser && // not excluded users\r\n !isDisabledInBVT && // should not be disabled in BVT\r\n isProdUrl && // should be Prod URL\r\n isNotMcaUrl); // should not be MCA URL\r\n\r\n if (!qualtricsConditions) {\r\n if (!isEnglishUser) {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isEnglishUser: ${isEnglishUser}`);\r\n return false;\r\n }\r\n\r\n if (!isBrowserLanguageEnglish) {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isBrowserLanguageEnglish: ${isBrowserLanguageEnglish}`);\r\n return false;\r\n }\r\n\r\n if (!isNotInternalUser) {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isNotInternalUser: ${isNotInternalUser}`);\r\n return false;\r\n }\r\n\r\n if (!isNotSupportUser) {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isNotSupportUser: ${isNotSupportUser}`);\r\n return false;\r\n }\r\n\r\n if (!isNotExcludedUser) {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isNotExcludedUser: ${isNotExcludedUser}`);\r\n return false;\r\n }\r\n\r\n if (!isProdUrl) {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isProdUrl: ${isProdUrl}`);\r\n return false;\r\n }\r\n\r\n if (!isNotMcaUrl) {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isNotMcaUrl: ${isNotMcaUrl}`);\r\n return false;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, Pass. userCreatedDateTime: ${userCreatedDateTime}`);\r\n\r\n return true;\r\n };\r\n\r\n getSurveyComponent = () => (this.isWebUIUserCSATSurveyByFactoryEnabled() ? FactorySurveyView : SurveyView);\r\n\r\n isReportingPipelineEnabled = () => true;\r\n\r\n getSurveyCustomParams = () => ({\r\n IsLeftNavigationHideButtonEnabled: result(this.serverContext, ['Permissions', 'IsLeftNavigationHideButtonEnabled']),\r\n IsHideCampaignListButtonEnabled: result(this.serverContext, ['Permissions', 'IsHideCampaignListButtonEnabled']),\r\n IsLongCampaignAndAdgroupNameEnabled: result(this.serverContext, ['Permissions', 'IsLongCampaignAndAdgroupNameEnabled']),\r\n IsImprovedDateFilterEnabled: result(this.serverContext, ['DynamicPermissions', 'ImprovedDateFilter']),\r\n AdsCopilot: true,\r\n NavigationRefresh: result(this.serverContext, ['DynamicPermissions', 'NavigationRefresh']),\r\n PopupOutsideDismiss: result(this.serverContext, ['DynamicPermissions', 'PopupOutsideDismiss']),\r\n EnhancedSurveyTriggerCondition: result(this.serverContext, ['DynamicPermissions', 'EnhancedSurveyTriggerCondition']),\r\n isUserActive10Days: this.checkUserCreatedDateTime(result(this.serverContext, ['CurrentUser', 'FetchedCreatedDateTime']) || result(this.serverContext, ['CurrentUser', 'CreatedDateTime']), 10),\r\n isUserActiveOneMonth: this.checkUserCreatedDateTime(result(this.serverContext, ['CurrentUser', 'FetchedCreatedDateTime']) || result(this.serverContext, ['CurrentUser', 'CreatedDateTime']), 30),\r\n userActiveDay: this.getUserActiveDay(),\r\n });\r\n}\r\n","import {\r\n RatingConfigurator,\r\n MultipleSelectionConfigurator,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\n\r\nexport const CopilotAssetRecommendationSatisfactionSurveyConfig = (options) => {\r\n const { i18n } = options;\r\n\r\n return {\r\n featureArea: 'CopilotAssetRecommendationSatisfactionSurvey',\r\n style: {\r\n root: {\r\n maxWidth: 600,\r\n },\r\n },\r\n others: {\r\n isThankYouPageEnabled: false,\r\n isUserInitiatedSurvey: true,\r\n shouldAutoClose: false,\r\n },\r\n rating: {\r\n isRequired: true,\r\n Type: RatingConfigurator,\r\n key: 'rating',\r\n page: 0,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('How satisfied are you with the recommended assets for your campaign?')),\r\n isVisible: () => true,\r\n options: [\r\n {\r\n key: '5',\r\n text: i18n.getString(_TL_('Very satisfied')),\r\n rating: 1.0,\r\n },\r\n {\r\n key: '4',\r\n text: i18n.getString(_TL_('Moderately satisfied')),\r\n rating: 0.8,\r\n },\r\n {\r\n key: '3',\r\n text: i18n.getString(_TL_('Neutral')),\r\n rating: 0.6,\r\n },\r\n {\r\n key: '2',\r\n text: i18n.getString(_TL_('Moderately dissatisfied')),\r\n rating: 0.4,\r\n },\r\n {\r\n key: '1',\r\n text: i18n.getString(_TL_('Very dissatisfied')),\r\n rating: 0.2,\r\n },\r\n ],\r\n },\r\n questions: [\r\n {\r\n isRequired: true,\r\n Type: MultipleSelectionConfigurator,\r\n key: 'q1',\r\n page: 0,\r\n position: 1,\r\n getTitle: () => i18n.getString(_TL_('Please tell us more about why you\\'re dissatisfied with recommendations. Select all that apply.')),\r\n isVisible: answers => ['2', '1'].includes(answers.rating.selectedOption),\r\n options: [\r\n {\r\n key: 'q1o1',\r\n text: i18n.getString(_TL_('I\\'ll need permission from my business or company to use recommended assets.')),\r\n },\r\n {\r\n key: 'q1o2',\r\n text: i18n.getString(_TL_('The recommendations aren\\'t relevant.')),\r\n },\r\n {\r\n key: 'q1o3',\r\n text: i18n.getString(_TL_('The recommendations aren\\'t accurate or up to date. ')),\r\n },\r\n {\r\n key: 'q1o4',\r\n text: i18n.getString(_TL_('The recommended assets don\\'t match the descriptions that I\\'ve provided. ')),\r\n },\r\n {\r\n key: 'q1o5',\r\n text: i18n.getString(_TL_('Other')),\r\n hasInput: true,\r\n placeholder: i18n.getString(_TL_('Other')),\r\n },\r\n ],\r\n data: {\r\n },\r\n },\r\n ],\r\n };\r\n};\r\n","import React from 'react';\r\nimport { SurveyFactory } from '@bingads-webui-campaign-react/survey-factory-tools';\r\nimport { CopilotAssetRecommendationSatisfactionSurveyConfig } from './factory-view';\r\n\r\nexport const CopilotAssetRecommendationSatisfactionSurveyView = props => (\r\n \r\n);\r\n","import _, { result } from 'underscore';\r\nimport { surveyStatus } from './survey-status';\r\n\r\nconst IS_SELENIUM = 'isselenium';\r\n\r\nexport const validateESCTriggerCondition = (survey, surveyTriggerName) => {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, Start`);\r\n\r\n const isEnglishUser = result(survey.serverContext, ['CurrentUser', 'Language']) === 'EN';\r\n const isNotInternalUser = result(survey.serverContext, ['CurrentUser', 'IsInternal']) !== true;\r\n const isNotSupportUser = !result(survey.serverContext, ['CurrentUser', 'Name']).includes('@microsoftsupport.com');\r\n const isNotE2EMode = !window.navigator.webdriver;\r\n const isProdUrl = window.location.href.toLowerCase().includes('https://ui.ads.microsoft.com/');\r\n const isMcaUrl = window.location.href.toLowerCase().includes('campaign/mca');\r\n const isESCSurveyEnabled = window.location.href.includes('isESCSurveyEnabled=true');\r\n\r\n const qualtricsConditions =\r\n (survey.isTestEnv &&\r\n isESCSurveyEnabled) || // should be test env\r\n (isEnglishUser && // should be English user\r\n isNotInternalUser && // not internal users\r\n isNotSupportUser && // not support team users\r\n isNotE2EMode && // not test mode\r\n isProdUrl && // should be Prod URL\r\n isMcaUrl); // should be MCA URL\r\n\r\n if (!qualtricsConditions) {\r\n if (!isEnglishUser) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isEnglishUser: ${isEnglishUser}`);\r\n return false;\r\n }\r\n\r\n if (!isNotInternalUser) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isNotInternalUser: ${isNotInternalUser}`);\r\n return false;\r\n }\r\n\r\n if (!isNotSupportUser) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isNotSupportUser: ${isNotSupportUser}`);\r\n return false;\r\n }\r\n\r\n if (!isNotE2EMode) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isNotE2EMode: ${isNotE2EMode}`);\r\n return false;\r\n }\r\n\r\n if (!isProdUrl) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isProdUrl: ${isProdUrl}`);\r\n return false;\r\n }\r\n\r\n if (!isMcaUrl) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isMcaUrl: ${isMcaUrl}`);\r\n return false;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n const isSurveyTriggerValid = result(window, ['survey', surveyTriggerName]);\r\n\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, ${isSurveyTriggerValid ? 'Pass' : 'Fail'}`);\r\n return isSurveyTriggerValid;\r\n};\r\n\r\nexport const validateESCSignupTriggerCondition = (survey, surveyTriggerName) => {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, Start`);\r\n\r\n const currentUser = result(survey.serverContext, ['CurrentUser']);\r\n const currentLocale = result(survey.serverContext, ['CurrentLocale']);\r\n let currentUserLanguage = result(survey.serverContext, ['CurrentUser', 'Language']);\r\n if (!currentUserLanguage && currentLocale.toLowerCase().indexOf('en') === 0) {\r\n currentUserLanguage = 'EN';\r\n }\r\n const isEnglishUser = currentUserLanguage === 'EN';\r\n const isNotInternalUser = result(survey.serverContext, ['CurrentUser', 'IsInternal']) !== true;\r\n const currentUserName = result(survey.serverContext, ['CurrentUser', 'Name']);\r\n const isNotSupportUser = currentUserName && !currentUserName.includes('@microsoftsupport.com');\r\n const isNotE2EMode = !window.navigator.webdriver;\r\n const isProdSignupUrl = window.location.href.toLowerCase().search(/ads\\.microsoft\\.com.*signup/) !== -1;\r\n const isESCSignupSurveyEnabled = window.location.href.includes('isESCSignupSurveyEnabled=true');\r\n\r\n const qualtricsConditions =\r\n (survey.isTestEnv &&\r\n isESCSignupSurveyEnabled) || // should be test env\r\n (currentUser &&\r\n isEnglishUser && // should be English user\r\n isNotInternalUser && // not internal users\r\n isNotSupportUser && // not support team users\r\n isNotE2EMode && // not test mode\r\n isProdSignupUrl) || // should be MCA sign up URL\r\n (!currentUser && // current user is not defined for new signups\r\n isEnglishUser && // should be English user\r\n isNotE2EMode && // not in E2E mode\r\n isProdSignupUrl); // should be MCA URL\r\n\r\n if (!qualtricsConditions) {\r\n if (!isEnglishUser) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isEnglishUser: ${isEnglishUser}`);\r\n return false;\r\n }\r\n\r\n if (!isNotInternalUser) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isNotInternalUser: ${isNotInternalUser}`);\r\n return false;\r\n }\r\n\r\n if (!isNotSupportUser) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isNotSupportUser: ${isNotSupportUser}`);\r\n return false;\r\n }\r\n\r\n if (!isNotE2EMode) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isNotE2EMode: ${isNotE2EMode}`);\r\n return false;\r\n }\r\n\r\n if (!isProdSignupUrl) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isMcaUrl: ${isProdSignupUrl}`);\r\n return false;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n const isSurveyTriggerValid = result(window, ['survey', surveyTriggerName]);\r\n\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, ${isSurveyTriggerValid ? 'Pass' : 'Fail'}`);\r\n return isSurveyTriggerValid;\r\n};\r\n\r\nexport const validateAdinsightRecommendationTriggerCondition = (survey, recommendationUrl, surveyPermission) => {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, Start`);\r\n\r\n // should enable the pilot (pilot by percentage of user Id)\r\n const isPilotEnabled = result(survey.serverContext, ['Permissions', surveyPermission]);\r\n\r\n if (!isPilotEnabled) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, isPilotEnabled: ${isPilotEnabled}`);\r\n return false;\r\n }\r\n\r\n // should not be AAD users, AAD users can be included in the future after OCPS integration\r\n const isNonAADUser = !result(survey.serverContext, 'IsAADUser');\r\n\r\n if (!isNonAADUser) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, isNonAADUser: ${isNonAADUser}`);\r\n return false;\r\n }\r\n\r\n // should be active user more than 30 days\r\n const isUserActiveOneMonth =\r\n new Date(result(survey.serverContext, ['CurrentUser', 'CreatedDateTime'])) <= survey.SurveyPreferenceService.getDaysAgo(30);\r\n\r\n if (!survey.isTestEnv && !isUserActiveOneMonth) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, isTestEnv: ${survey.isTestEnv}, isUserActiveOneMonth: ${isUserActiveOneMonth}`);\r\n return false;\r\n }\r\n\r\n // trigger conditions\r\n const isEnglishUser = result(survey.serverContext, ['CurrentUser', 'Language']) === 'EN';\r\n const isNotInternalUser = result(survey.serverContext, ['CurrentUser', 'IsInternal']) !== true;\r\n const isNotSupportUser = !result(survey.serverContext, ['CurrentUser', 'Name']).includes('@microsoftsupport.com');\r\n const isNotE2EMode = !window.location.href.includes(IS_SELENIUM);\r\n const isDisabledInBVT = window.location.href.includes('Permissions.CSATSurveyInBVTDisabled=true');\r\n const isProdUrl = window.location.href.includes('https://ui.ads.microsoft.com/');\r\n const isRecommendationUrl = window.location.href.includes(recommendationUrl);\r\n\r\n const surveyConditions =\r\n (survey.isTestEnv && isRecommendationUrl && isNotE2EMode) || // should be test env\r\n (isEnglishUser && // should be English user\r\n isNotInternalUser && // not internal users\r\n isNotSupportUser && // not support team users\r\n !isDisabledInBVT && // should not be disabled in BVT\r\n isProdUrl && // should be Prod URL\r\n isRecommendationUrl); // should not be URL\r\n\r\n if (!surveyConditions) {\r\n if (!isEnglishUser) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, surveyConditions: ${surveyConditions}, isEnglishUser: ${isEnglishUser}`);\r\n return false;\r\n }\r\n\r\n if (!isNotInternalUser) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, surveyConditions: ${surveyConditions}, isNotInternalUser: ${isNotInternalUser}`);\r\n return false;\r\n }\r\n\r\n if (!isNotSupportUser) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, surveyConditions: ${surveyConditions}, isNotSupportUser: ${isNotSupportUser}`);\r\n return false;\r\n }\r\n\r\n if (!isProdUrl) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, surveyConditions: ${surveyConditions}, isProdUrl: ${isProdUrl}`);\r\n return false;\r\n }\r\n\r\n if (!isRecommendationUrl) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, surveyConditions: ${surveyConditions}, isRecommendationUrl: ${isRecommendationUrl}`);\r\n return false;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, Pass`);\r\n\r\n return true;\r\n};\r\n\r\nexport const validateAccountSettingsTriggerCondition = (survey, accountSettingUrl, surveyTriggerName) => {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, Start`);\r\n\r\n // should not be AAD users, AAD users can be included in the future after OCPS integration\r\n const isNonAADUser = !result(survey.serverContext, 'IsAADUser');\r\n const isNotSupportUser = !result(survey.serverContext, ['CurrentUser', 'Name']).includes('@microsoftsupport.com');\r\n const isNotMicrosoftInternalUser = !result(survey.serverContext, ['CurrentUser', 'Name']).includes('@microsoft.com');\r\n\r\n // We let pass the case that the user is an AAD user and a support user\r\n if (!isNonAADUser && isNotSupportUser && isNotMicrosoftInternalUser) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, isNonAADUser: ${isNonAADUser}`);\r\n return false;\r\n }\r\n\r\n // trigger conditions\r\n const isNotE2EMode = !window.location.href.includes(IS_SELENIUM);\r\n const isProdUrl = window.location.href.includes('https://ui.ads.microsoft.com/');\r\n const isBetaProdUrl = window.location.href.includes('https://ui.beta.ads.microsoft.com/');\r\n const isAccountSettingUrl = window.location.href.includes(accountSettingUrl);\r\n\r\n const surveyConditions =\r\n (survey.isTestEnv && isAccountSettingUrl && isNotE2EMode) || // should be test env\r\n ((isProdUrl || isBetaProdUrl) && // should be Prod URL or Beta prod URL\r\n isAccountSettingUrl); // should be account setting URL\r\n\r\n if (!surveyConditions) {\r\n if (!(isProdUrl || isBetaProdUrl)) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, surveyConditions: ${surveyConditions}, isProdUrl: ${(isProdUrl || isBetaProdUrl)}`);\r\n return false;\r\n }\r\n\r\n if (!isAccountSettingUrl) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, surveyConditions: ${surveyConditions}, isAccountSettingUrl: ${isAccountSettingUrl}`);\r\n return false;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n const isSurveyTriggerValid = result(window, ['survey', surveyTriggerName]);\r\n\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, ${isSurveyTriggerValid ? 'Pass' : 'Fail'}`);\r\n return isSurveyTriggerValid;\r\n};\r\n\r\nexport const validateAssetLibraryTriggerCondition = (survey, surveyTriggerName, { checkPilot } = {}) => {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, Start`);\r\n\r\n // pilot enabled\r\n const isPilotEnabled = checkPilot ? checkPilot() : result(survey.serverContext, ['Permissions', 'IsAssetLibrarySurveyEnabled']);\r\n\r\n if (!isPilotEnabled) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, isPilotEnabled: ${isPilotEnabled}`);\r\n return false;\r\n }\r\n\r\n // have added trigger flag in asset library page\r\n const isSurveyTriggerValid = result(window, ['survey', surveyTriggerName]);\r\n\r\n if (!isSurveyTriggerValid) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, isSurveyTriggerValid: ${isSurveyTriggerValid}`);\r\n return false;\r\n }\r\n\r\n // trigger conditions\r\n const isEnglishUser = result(survey.serverContext, ['CurrentUser', 'Language']) === 'EN';\r\n const isNotInternalUser = result(survey.serverContext, ['CurrentUser', 'IsInternal']) !== true;\r\n const isNotSupportUser = !result(survey.serverContext, ['CurrentUser', 'Name']).includes('@microsoftsupport.com');\r\n const isNotE2EMode = !window.location.href.includes(IS_SELENIUM);\r\n const isDisabledInBVT = window.location.href.includes('Permissions.CSATSurveyInBVTDisabled=true');\r\n const isProdUrl = window.location.href.includes('https://ui.ads.microsoft.com/');\r\n const isAssetLibrarySurveyEnabled = window.location.href.includes('isAssetLibrarySurveyEnabled=true');\r\n\r\n const surveyConditions =\r\n (survey.isTestEnv && isNotE2EMode && isAssetLibrarySurveyEnabled) || // should be test env\r\n (isEnglishUser && // English users\r\n isNotInternalUser && // not internal users\r\n isNotSupportUser && // not support team users\r\n !isDisabledInBVT && // should not be disabled in BVT\r\n isProdUrl); // should be Prod URL\r\n\r\n if (!surveyConditions) {\r\n if (!isEnglishUser) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, surveyConditions: ${surveyConditions}, isEnglishUser: ${isEnglishUser}`);\r\n return false;\r\n }\r\n\r\n if (!isNotInternalUser) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, surveyConditions: ${surveyConditions}, isNotInternalUser: ${isNotInternalUser}`);\r\n return false;\r\n }\r\n\r\n if (!isNotSupportUser) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, surveyConditions: ${surveyConditions}, isNotSupportUser: ${isNotSupportUser}`);\r\n return false;\r\n }\r\n\r\n if (!isProdUrl) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, surveyConditions: ${surveyConditions}, isProdUrl: ${isProdUrl}`);\r\n return false;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, Pass`);\r\n\r\n return true;\r\n};\r\n\r\nexport const validateCopilotAssetRecommendationSatisfactionTriggerCondition = (survey, surveyTriggerName) => {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, Start`);\r\n\r\n // have added trigger flag\r\n const isSurveyTriggerValid = result(window, ['survey', surveyTriggerName]);\r\n\r\n if (!isSurveyTriggerValid) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, isSurveyTriggerValid: ${isSurveyTriggerValid}`);\r\n return false;\r\n }\r\n\r\n // trigger conditions\r\n const isEnglishUser = result(survey.serverContext, ['CurrentUser', 'Language']) === 'EN';\r\n const isNotInternalUser = result(survey.serverContext, ['CurrentUser', 'IsInternal']) !== true;\r\n const isNotSupportUser = !result(survey.serverContext, ['CurrentUser', 'Name']).includes('@microsoftsupport.com');\r\n const isNotE2EMode = !window.location.href.includes('isselenium');\r\n const isDisabledInBVT = window.location.href.includes('Permissions.CSATSurveyInBVTDisabled=true');\r\n const isProdUrl = window.location.href.includes('https://ui.ads.microsoft.com/');\r\n\r\n const surveyConditions =\r\n (survey.isTestEnv && isNotE2EMode) || // should be test env\r\n (isEnglishUser && // English users\r\n isNotInternalUser && // not internal users\r\n isNotSupportUser && // not support team users\r\n !isDisabledInBVT && // should not be disabled in BVT\r\n isProdUrl); // should be Prod URL\r\n\r\n if (!surveyConditions) {\r\n window.survey.CopilotAssetRecommendationSatisfactionTrigger = false;\r\n if (!isEnglishUser) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, surveyConditions: ${surveyConditions}, isEnglishUser: ${isEnglishUser}`);\r\n return false;\r\n }\r\n\r\n if (!isNotInternalUser) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, surveyConditions: ${surveyConditions}, isNotInternalUser: ${isNotInternalUser}`);\r\n return false;\r\n }\r\n\r\n if (!isNotSupportUser) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, surveyConditions: ${surveyConditions}, isNotSupportUser: ${isNotSupportUser}`);\r\n return false;\r\n }\r\n\r\n if (!isProdUrl) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, surveyConditions: ${surveyConditions}, isProdUrl: ${isProdUrl}`);\r\n return false;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n const surveyState = survey.SurveyPreferenceService.getSurveyState({ surveyName: survey.getSurveyName() });\r\n const { requiredModifyNumber = 10 } = surveyState || {};\r\n const currentRequiredModifyNumber = requiredModifyNumber - 1;\r\n\r\n survey.SurveyPreferenceService.setSurveyState({\r\n surveyName: survey.getSurveyName(),\r\n surveyState: {\r\n ...surveyState,\r\n requiredModifyNumber: currentRequiredModifyNumber,\r\n },\r\n });\r\n\r\n if (currentRequiredModifyNumber > 0) {\r\n window.survey.CopilotAssetRecommendationSatisfactionTrigger = false;\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, currentRequiredModifyNumber: ${currentRequiredModifyNumber}`);\r\n return false;\r\n }\r\n\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, Pass`);\r\n\r\n return true;\r\n};\r\n\r\nexport const validateRSALLMOverallCallingAPI = (surveyName, apiCallingTime, status) => {\r\n const OVERALL_SURVEY_THRESHOLD = {\r\n [surveyStatus.INIT]: 10,\r\n [surveyStatus.FIRST_DISMISS]: 50,\r\n [surveyStatus.SECOND_DISMISS]: 100,\r\n [surveyStatus.THIRD_DISMISS]: 200,\r\n [surveyStatus.FOURTH_DISMISS]: 500,\r\n [surveyStatus.SUBMIT]: 500,\r\n };\r\n const MOSTWANTED_SURVEY_THRESHOLD = {\r\n [surveyStatus.INIT]: 50,\r\n [surveyStatus.FIRST_DISMISS]: 50,\r\n [surveyStatus.SECOND_DISMISS]: 100,\r\n [surveyStatus.THIRD_DISMISS]: 200,\r\n [surveyStatus.FOURTH_DISMISS]: 500,\r\n [surveyStatus.SUBMIT]: Number.MAX_VALUE, // Currently most wanted survey is never triggered when users submit the survey\r\n };\r\n const OVERALL_SURVEY_THRESHOLD_FAST_TRACK = {\r\n [surveyStatus.INIT]: 1,\r\n [surveyStatus.FIRST_DISMISS]: 1,\r\n [surveyStatus.SECOND_DISMISS]: 2,\r\n [surveyStatus.THIRD_DISMISS]: 3,\r\n [surveyStatus.FOURTH_DISMISS]: 4,\r\n [surveyStatus.SUBMIT]: 4,\r\n };\r\n const MOSTWANTED_SURVEY_THRESHOLD_FAST_TRACK = {\r\n [surveyStatus.INIT]: 1,\r\n [surveyStatus.FIRST_DISMISS]: 1,\r\n [surveyStatus.SECOND_DISMISS]: 2,\r\n [surveyStatus.THIRD_DISMISS]: 3,\r\n [surveyStatus.FOURTH_DISMISS]: 4,\r\n [surveyStatus.SUBMIT]: 4,\r\n };\r\n if (new URLSearchParams(window.location.search).get('IsFastTrackSurvey') === 'true') {\r\n const threshold = surveyName === 'RSALLMSuggestionOverallSurvey' ? OVERALL_SURVEY_THRESHOLD_FAST_TRACK : MOSTWANTED_SURVEY_THRESHOLD_FAST_TRACK;\r\n return !_.isUndefined(threshold[status]) ? apiCallingTime >= threshold[status] : false;\r\n }\r\n const threshold = surveyName === 'RSALLMSuggestionOverallSurvey' ? OVERALL_SURVEY_THRESHOLD : MOSTWANTED_SURVEY_THRESHOLD;\r\n return !_.isUndefined(threshold[status]) ? apiCallingTime >= threshold[status] : false;\r\n};\r\n\r\nexport const validateRSALLMTriggerCondition = (survey) => {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, Start`);\r\n\r\n // should be active user more than 30 days\r\n const isUserActiveOneMonth =\r\n new Date(result(survey.serverContext, ['CurrentUser', 'CreatedDateTime'])) <= survey.SurveyPreferenceService.getDaysAgo(30);\r\n\r\n if (!survey.isTestEnv && !isUserActiveOneMonth) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, isTestEnv: ${survey.isTestEnv}, isUserActiveOneMonth: ${isUserActiveOneMonth}`);\r\n return false;\r\n }\r\n\r\n // customize conditions for LLM OCV survey\r\n const surveyState = survey.SurveyPreferenceService.getSurveyState({ surveyName: survey.getSurveyName() });\r\n // if survey state is empty, usevalidateUserGovernance to get the default survey state\r\n if (_.isEmpty(surveyState)) {\r\n survey.validateUserGovernance();\r\n }\r\n const status = result(surveyState, 'status') || surveyStatus.INIT;\r\n\r\n const apiCallingTime = survey.getCallCountOfRSASuggestionAPI();\r\n const triggerCondition = validateRSALLMOverallCallingAPI(survey.getSurveyName(), apiCallingTime, status);\r\n\r\n // conditions\r\n const isNotSupportUser = !result(survey.serverContext, ['CurrentUser', 'Name']).includes('@microsoftsupport.com');\r\n const isNotE2EMode = !window.location.href.includes('isselenium');\r\n const isDisabledInBVT = window.location.href.includes('Permissions.CSATSurveyInBVTDisabled=true');\r\n const isProdUrl = window.location.href.includes('ads.microsoft.com');\r\n const isAdUrl = window.location.href.includes('campaign/vnext/ads');\r\n\r\n const qualtricsConditions =\r\n (survey.isTestEnv && isAdUrl && triggerCondition) || // should be test env\r\n (isNotSupportUser && // not support team users\r\n isNotE2EMode && // not E2E mode\r\n !isDisabledInBVT && // should not be disabled in BVT\r\n isProdUrl && // should be Prod URL\r\n isAdUrl && // should be Ad URL\r\n triggerCondition);\r\n\r\n if (!qualtricsConditions) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isTestEnv: ${survey.isTestEnv}, isNotSupportUser: ${isNotSupportUser}, isNotE2EMode: ${isNotE2EMode}, isProdUrl: ${isProdUrl}, isAdUrl: ${isAdUrl}`);\r\n return false;\r\n }\r\n\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, Pass`);\r\n return true;\r\n};\r\n\r\nexport const validateAdsStudioTriggerCondition = (survey, surveyTriggerName, { checkPilot } = {}) => {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, Start`);\r\n\r\n // pilot enabled\r\n const isPilotEnabled = checkPilot ? checkPilot() : result(survey.serverContext, ['Permissions', 'IsAdsStudioSurveyEnabled']);\r\n\r\n if (!isPilotEnabled) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, isPilotEnabled: ${isPilotEnabled}`);\r\n return false;\r\n }\r\n\r\n // have added trigger flag in ad studio page\r\n const isSurveyTriggerValid = result(window, ['survey', surveyTriggerName]);\r\n\r\n if (!isSurveyTriggerValid) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, isSurveyTriggerValid: ${isSurveyTriggerValid}`);\r\n return false;\r\n }\r\n\r\n // trigger conditions\r\n const isEnglishUser = result(survey.serverContext, ['CurrentUser', 'Language']) === 'EN';\r\n const isNotInternalUser = result(survey.serverContext, ['CurrentUser', 'IsInternal']) !== true;\r\n const isNotSupportUser = !result(survey.serverContext, ['CurrentUser', 'Name']).includes('@microsoftsupport.com');\r\n const isNotE2EMode = !window.location.href.includes(IS_SELENIUM);\r\n const isDisabledInBVT = window.location.href.includes('Permissions.CSATSurveyInBVTDisabled=true');\r\n const isProdUrl = window.location.href.includes('https://ui.ads.microsoft.com/');\r\n const isAdStudioSurveyEnabled = window.location.href.includes('isAdStudioSurveyEnabled=true');\r\n\r\n const surveyConditions =\r\n (survey.isTestEnv && isNotE2EMode && isAdStudioSurveyEnabled) || // should be test env\r\n (isEnglishUser && // English users\r\n isNotInternalUser && // not internal users\r\n isNotSupportUser && // not support team users\r\n !isDisabledInBVT && // should not be disabled in BVT\r\n isProdUrl); // should be Prod URL\r\n\r\n if (!surveyConditions) {\r\n if (!isEnglishUser) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, surveyConditions: ${surveyConditions}, isEnglishUser: ${isEnglishUser}`);\r\n return false;\r\n }\r\n\r\n if (!isNotInternalUser) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, surveyConditions: ${surveyConditions}, isNotInternalUser: ${isNotInternalUser}`);\r\n return false;\r\n }\r\n\r\n if (!isNotSupportUser) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, surveyConditions: ${surveyConditions}, isNotSupportUser: ${isNotSupportUser}`);\r\n return false;\r\n }\r\n\r\n if (!isProdUrl) {\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, surveyConditions: ${surveyConditions}, isProdUrl: ${isProdUrl}`);\r\n return false;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n survey.logActivity(`validateTriggerCondition | survey: ${survey.getSurveyName()}, Pass`);\r\n\r\n return true;\r\n};\r\n","import { isEmpty } from 'underscore';\r\n\r\nimport { BaseSurvey } from '../base-survey';\r\nimport { surveyStatus } from '../survey-status';\r\nimport { CopilotAssetRecommendationSatisfactionSurveyView } from './view';\r\nimport { validateCopilotAssetRecommendationSatisfactionTriggerCondition } from '../utils';\r\n\r\nexport class CopilotAssetRecommendationSatisfactionSurvey extends BaseSurvey {\r\n getSurveyName = () => 'CopilotAssetRecommendationSatisfactionSurvey';\r\n\r\n getSurveyId = () => 'ea62ec33-5c98-4894-86eb-b012a6e7e92d';\r\n\r\n validateTriggerCondition = () => validateCopilotAssetRecommendationSatisfactionTriggerCondition(this, 'CopilotAssetRecommendationSatisfactionTrigger');\r\n\r\n onSurveySubmit = () => {\r\n const newSurveyState = {\r\n status: surveyStatus.SUBMIT,\r\n nextShownDate: this.SurveyPreferenceService.getDaysAfter(180),\r\n requiredModifyNumber: 500,\r\n };\r\n\r\n this.SurveyPreferenceService.setSurveyState({\r\n surveyName: this.getSurveyName(),\r\n surveyState: newSurveyState,\r\n });\r\n\r\n window.survey.CopilotAssetRecommendationSatisfactionTrigger = false;\r\n delete window.survey.CopilotRecommendationsSurveyCustomParams;\r\n };\r\n\r\n onSurveyDismiss = () => {\r\n window.survey.CopilotAssetRecommendationSatisfactionTrigger = false;\r\n delete window.survey.CopilotRecommendationsSurveyCustomParams;\r\n\r\n const surveyState = this.SurveyPreferenceService.getSurveyState({\r\n surveyName: this.getSurveyName(),\r\n });\r\n\r\n let newSurveyState = {};\r\n if (!isEmpty(surveyState)) {\r\n const { status } = surveyState;\r\n switch (status) {\r\n case surveyStatus.FIRST_DISMISS:\r\n // set new state to second-dismiss and next shown date to 30 days\r\n newSurveyState = {\r\n status: surveyStatus.SECOND_DISMISS,\r\n nextShownDate: this.SurveyPreferenceService.getDaysAfter(30),\r\n requiredModifyNumber: 100,\r\n };\r\n break;\r\n case surveyStatus.SECOND_DISMISS:\r\n // set new state to third-dismiss and next shown date to 60 days\r\n newSurveyState = {\r\n status: surveyStatus.THIRD_DISMISS,\r\n nextShownDate: this.SurveyPreferenceService.getDaysAfter(60),\r\n requiredModifyNumber: 300,\r\n };\r\n break;\r\n case surveyStatus.THIRD_DISMISS:\r\n // set new state to third-dismiss and next shown date to 180 days\r\n newSurveyState = {\r\n status: surveyStatus.THIRD_DISMISS,\r\n nextShownDate: this.SurveyPreferenceService.getDaysAfter(180),\r\n requiredModifyNumber: 500,\r\n };\r\n break;\r\n case surveyStatus.FOURTH_DISMISS:\r\n case surveyStatus.INIT:\r\n case surveyStatus.SUBMIT:\r\n default:\r\n // for all others, set new state to init and next shown date to 7 days\r\n newSurveyState = {\r\n status: surveyStatus.FIRST_DISMISS,\r\n nextShownDate: this.SurveyPreferenceService.getDaysAfter(7),\r\n requiredModifyNumber: 50,\r\n };\r\n break;\r\n }\r\n } else {\r\n // new cycle, set new state to first-dismiss and next shown date to 7 days\r\n newSurveyState = {\r\n status: surveyStatus.FIRST_DISMISS,\r\n nextShownDate: this.SurveyPreferenceService.getDaysAfter(7),\r\n requiredModifyNumber: 50,\r\n };\r\n }\r\n\r\n this.SurveyPreferenceService.setSurveyState({\r\n surveyName: this.getSurveyName(),\r\n surveyState: newSurveyState,\r\n });\r\n };\r\n\r\n getSurveyComponent = () => CopilotAssetRecommendationSatisfactionSurveyView;\r\n\r\n getSurveyCustomParams = () => window.survey.CopilotRecommendationsSurveyCustomParams;\r\n}\r\n","import {\r\n RatingConfigurator,\r\n CommentConfigurator,\r\n EmailConfigurator\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\n\r\nexport const escWebuiUserSurveyConfig = (options) => {\r\n const {\r\n i18n,\r\n } = options;\r\n\r\n return {\r\n featureArea: 'EscWebuiUserSurvey',\r\n style: {\r\n root: {\r\n maxWidth: 480,\r\n },\r\n },\r\n others: {\r\n combineTextInputToComment: true,\r\n },\r\n rating: {\r\n isRequired: true,\r\n Type: RatingConfigurator,\r\n key: 'rating',\r\n page: 0,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('How satisfied are you with Microsoft Advertising\\'s web user interface?')),\r\n isVisible: () => true,\r\n options: [\r\n {\r\n key: '5',\r\n text: i18n.getString(_TL_('Very satisfied')),\r\n rating: 1.0,\r\n },\r\n {\r\n key: '4',\r\n text: i18n.getString(_TL_('Moderately satisfied')),\r\n rating: 0.8,\r\n },\r\n {\r\n key: '3',\r\n text: i18n.getString(_TL_('Neither satisfied nor dissatisfied')),\r\n rating: 0.6,\r\n },\r\n {\r\n key: '2',\r\n text: i18n.getString(_TL_('Moderately dissatisfied')),\r\n rating: 0.4,\r\n },\r\n {\r\n key: '1',\r\n text: i18n.getString(_TL_('Very dissatisfied')),\r\n rating: 0.2,\r\n },\r\n ],\r\n },\r\n email: {\r\n isRequired: false,\r\n Type: EmailConfigurator,\r\n key: 'email',\r\n page: 1,\r\n position: 1,\r\n getTitle: () => i18n.getString(_TL_('Can we follow up with you about your responses?')),\r\n isVisible: answers => ['3', '2', '1'].includes(answers.rating.selectedOption),\r\n options: [\r\n {\r\n key: 'yes',\r\n text: i18n.getString(_TL_('Yes')),\r\n hasInput: false,\r\n },\r\n {\r\n key: 'no',\r\n text: i18n.getString(_TL_('No')),\r\n hasInput: false,\r\n },\r\n ],\r\n },\r\n questions: [\r\n {\r\n isRequired: false,\r\n Type: CommentConfigurator,\r\n key: 'q3',\r\n page: 1,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('How can we continue to improve?')),\r\n isVisible: answers => ['3', '2', '1'].includes(answers.rating.selectedOption),\r\n },\r\n ],\r\n };\r\n};\r\n","import React from 'react';\r\nimport {\r\n SurveyFactory,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\nimport { escWebuiUserSurveyConfig } from './factory-view';\r\n\r\nexport const ESCWebUISurveyView = props => (\r\n \r\n);\r\n\r\n","import { result } from 'underscore';\r\nimport { BaseSurvey } from '../base-survey';\r\nimport { ESCWebUISurveyView } from './view';\r\n\r\nexport class EscWebuiUserSurvey extends BaseSurvey {\r\n getSurveyName = () => 'EscWebuiUserSurvey';\r\n\r\n getSurveyId = () => '0530745d-b26b-4b96-8ab5-95369835872c';\r\n\r\n getSurveyProduct = () => 'ESC';\r\n\r\n getSurveyInterface = () => 'Web';\r\n\r\n getInitializationConfig = () => ({\r\n initGroup: 100,\r\n initStartDate: '2023-02-03',\r\n initEndDate: '2023-08-02',\r\n });\r\n\r\n validateTriggerCondition = () => {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, Start`);\r\n\r\n // should not be AAD users, AAD users can be included in the future after OCPS integration\r\n const isNonAADUser = !result(this.serverContext, 'IsAADUser');\r\n\r\n if (!isNonAADUser) {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, isNonAADUser: ${isNonAADUser}`);\r\n return false;\r\n }\r\n\r\n // should be active user more than 30 days\r\n const userCreatedDateTime = new Date(result(this.serverContext, ['CurrentUser', 'CreatedDateTime']));\r\n const surveyPreference30DaysAgo = this.SurveyPreferenceService.getDaysAgo(30);\r\n const isUserActiveOneMonth = userCreatedDateTime <= surveyPreference30DaysAgo;\r\n\r\n if (!this.isTestEnv && !isUserActiveOneMonth) {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, isTestEnv: ${this.isTestEnv}, isUserActiveOneMonth: ${isUserActiveOneMonth}, userCreatedDateTime: ${userCreatedDateTime}, surveyPreference30DaysAgo: ${surveyPreference30DaysAgo}`);\r\n return false;\r\n }\r\n\r\n // conditions copied from Qualtrics\r\n const isEnglishUser = result(this.serverContext, ['CurrentUser', 'Language']) === 'EN';\r\n const isNotInternalUser = result(this.serverContext, ['CurrentUser', 'IsInternal']) !== true;\r\n const isNotSupportUser = !result(this.serverContext, ['CurrentUser', 'Name']).includes('@microsoftsupport.com');\r\n const isNotE2EMode = !window.navigator.webdriver;\r\n const isProdUrl = window.location.href.toLocaleLowerCase().includes('https://ui.ads.microsoft.com/');\r\n const isMcaUrl = window.location.href.toLocaleLowerCase().includes('campaign/mca');\r\n const isWebUICSATSurveyEnabled = window.location.href.includes('isWebUICSATSurveyEnabled=true');\r\n\r\n const qualtricsConditions =\r\n (this.isTestEnv &&\r\n isWebUICSATSurveyEnabled) || // should be test env\r\n (isEnglishUser && // should be English user\r\n isNotInternalUser && // not internal users\r\n isNotSupportUser && // not support team users\r\n isNotE2EMode && // not test mode\r\n isProdUrl && // should be Prod URL\r\n isMcaUrl); // should be MCA URL\r\n\r\n if (!qualtricsConditions) {\r\n if (!isEnglishUser) {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isEnglishUser: ${isEnglishUser}`);\r\n return false;\r\n }\r\n\r\n if (!isNotInternalUser) {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isNotInternalUser: ${isNotInternalUser}`);\r\n return false;\r\n }\r\n\r\n if (!isNotSupportUser) {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isNotSupportUser: ${isNotSupportUser}`);\r\n return false;\r\n }\r\n\r\n if (!isNotE2EMode) {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isNotE2EMode: ${isNotE2EMode}`);\r\n return false;\r\n }\r\n\r\n if (!isProdUrl) {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isProdUrl: ${isProdUrl}`);\r\n return false;\r\n }\r\n\r\n if (!isMcaUrl) {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isMcaUrl: ${isMcaUrl}`);\r\n return false;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, Pass. userCreatedDateTime: ${userCreatedDateTime}, surveyPreference30DaysAgo: ${surveyPreference30DaysAgo}`);\r\n\r\n return true;\r\n };\r\n\r\n getSurveyComponent = () => ESCWebUISurveyView;\r\n\r\n isReportingPipelineEnabled = () => true;\r\n}\r\n","import {\r\n CommentConfigurator,\r\n SingleSelectionConfigurator,\r\n MultipleSelectionConfigurator,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\n\r\nexport const EscWebuiUserPauseCampaignSurveyConfig = (options) => {\r\n const {\r\n i18n,\r\n } = options;\r\n\r\n return {\r\n featureArea: 'EscWebuiUserPauseCampaignSurvey',\r\n style: {\r\n root: {\r\n minWidth: 600,\r\n '@media (max-width: 600px)': {\r\n minHeight: 320,\r\n minWidth: 340,\r\n },\r\n },\r\n },\r\n others: {\r\n isGlobalModalStyleEnabled: true,\r\n isThankYouPageEnabled: false,\r\n isUserInitiatedSurvey: true,\r\n combineTextInputToComment: true,\r\n isInPageMiddle: true,\r\n },\r\n questions: [\r\n {\r\n isRequired: false,\r\n Type: SingleSelectionConfigurator,\r\n key: 'q1',\r\n page: 0,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('Hi there! We have two questions for you. Please tell us the main reason you\\'re pausing or deleting this ad campaign.')),\r\n isVisible: () => true,\r\n options: [\r\n {\r\n key: 'q1o1',\r\n text: i18n.getString(_TL_('I was just trying it out')),\r\n },\r\n {\r\n key: 'q1o2',\r\n text: i18n.getString(_TL_('I ran out of budget')),\r\n },\r\n {\r\n key: 'q1o3',\r\n text: i18n.getString(_TL_('I\\'m moving my advertising budget elsewhere')),\r\n },\r\n {\r\n key: 'q1o4',\r\n text: i18n.getString(_TL_('My ad campaign is too expensive')),\r\n },\r\n {\r\n key: 'q1o5',\r\n text: i18n.getString(_TL_('I\\'m not getting enough return on investment (ROI)')),\r\n },\r\n {\r\n key: 'q1o6',\r\n text: i18n.getString(_TL_('When I search for my ads in Google or Bing, they don\\'t show')),\r\n },\r\n {\r\n key: 'q1o7',\r\n text: i18n.getString(_TL_('I want more control over my ad campaigns')),\r\n },\r\n {\r\n key: 'q1o8',\r\n text: i18n.getString(_TL_('It\\'s difficult to use the product')),\r\n },\r\n {\r\n key: 'q1o9',\r\n hasInput: true,\r\n text: i18n.getString(_TL_('Other')),\r\n placeholder: i18n.getString(_TL_('Other')),\r\n },\r\n ],\r\n },\r\n {\r\n isRequired: false,\r\n Type: SingleSelectionConfigurator,\r\n key: 'q2',\r\n page: 1,\r\n position: 2,\r\n getTitle: () => i18n.getString(_TL_('Will you advertise with us again in the future?')),\r\n options: [\r\n {\r\n key: 'q2o1',\r\n text: i18n.getString(_TL_('Yes')),\r\n },\r\n {\r\n key: 'q2o2',\r\n text: i18n.getString(_TL_('No')),\r\n },\r\n ],\r\n isVisible: answers => (answers.q1.selectedOption === 'q1o1') || (answers.q1.selectedOption === 'q1o2'),\r\n },\r\n {\r\n isRequired: false,\r\n Type: MultipleSelectionConfigurator,\r\n key: 'q3',\r\n page: 1,\r\n position: 2,\r\n getTitle: () => i18n.getString(_TL_('What will you use for advertising? Choose all that apply:')),\r\n options: [\r\n {\r\n key: 'q3o1',\r\n text: i18n.getString(_TL_('Ad advertising agency')),\r\n },\r\n {\r\n key: 'q3o2',\r\n text: i18n.getString(_TL_('Advertising directly on Google Ads, Microsoft Advertising, or Meta Ads')),\r\n },\r\n {\r\n key: 'q3o3',\r\n text: i18n.getString(_TL_('Other social media ads like Twitter, LinkedIn, Pinterest')),\r\n },\r\n {\r\n key: 'q3o4',\r\n text: i18n.getString(_TL_('Review sites like Yelp or Angie\\'s List')),\r\n },\r\n {\r\n key: 'q3o5',\r\n text: i18n.getString(_TL_('TV or radio ads')),\r\n },\r\n {\r\n key: 'q3o6',\r\n text: i18n.getString(_TL_('Offline ads in publications like magazines or newspapers')),\r\n },\r\n {\r\n key: 'q3o7',\r\n hasInput: true,\r\n text: i18n.getString(_TL_('Other')),\r\n placeholder: i18n.getString(_TL_('Other')),\r\n },\r\n ],\r\n isVisible: answers => answers.q1.selectedOption === 'q1o3',\r\n },\r\n {\r\n isRequired: false,\r\n Type: MultipleSelectionConfigurator,\r\n key: 'q4',\r\n page: 1,\r\n position: 2,\r\n getTitle: () => i18n.getString(_TL_('What makes your campaign seem too expensive? (Select all that apply.)')),\r\n options: [\r\n {\r\n key: 'q4o1',\r\n text: i18n.getString(_TL_('I am not getting quality leads.')),\r\n },\r\n {\r\n key: 'q4o2',\r\n text: i18n.getString(_TL_('I get calls and clicks outside my business hours.')),\r\n },\r\n {\r\n key: 'q4o3',\r\n text: i18n.getString(_TL_('I\\'m not sure if my ads were running.')),\r\n },\r\n {\r\n key: 'q4o4',\r\n text: i18n.getString(_TL_('The cost-per-click is too high.')),\r\n },\r\n {\r\n key: 'q4o5',\r\n hasInput: true,\r\n text: i18n.getString(_TL_('Other')),\r\n placeholder: i18n.getString(_TL_('Other')),\r\n },\r\n ],\r\n isVisible: answers => answers.q1.selectedOption === 'q1o4',\r\n },\r\n {\r\n isRequired: false,\r\n Type: MultipleSelectionConfigurator,\r\n key: 'q5',\r\n page: 1,\r\n position: 2,\r\n getTitle: () => i18n.getString(_TL_('What were you hoping to get more of? Choose all that apply:')),\r\n options: [\r\n {\r\n key: 'q5o1',\r\n text: i18n.getString(_TL_('Clicks')),\r\n },\r\n {\r\n key: 'q5o2',\r\n text: i18n.getString(_TL_('Calls')),\r\n },\r\n {\r\n key: 'q5o3',\r\n text: i18n.getString(_TL_('Visits to your physical business location')),\r\n },\r\n {\r\n key: 'q5o4',\r\n text: i18n.getString(_TL_('Sales')),\r\n },\r\n {\r\n key: 'q5o5',\r\n hasInput: true,\r\n text: i18n.getString(_TL_('Other')),\r\n placeholder: i18n.getString(_TL_('Other')),\r\n },\r\n ],\r\n isVisible: answers => answers.q1.selectedOption === 'q1o5',\r\n },\r\n {\r\n isRequired: false,\r\n Type: MultipleSelectionConfigurator,\r\n key: 'q6',\r\n page: 1,\r\n position: 2,\r\n getTitle: () => i18n.getString(_TL_('Please tell us more. Choose all that apply.')),\r\n options: [\r\n {\r\n key: 'q6o1',\r\n text: i18n.getString(_TL_('I only find automated ads when I search for my ads on Google or Bing.')),\r\n },\r\n {\r\n key: 'q6o2',\r\n text: i18n.getString(_TL_('I don\\'t find any ads for my business when I search for it on Google or Bing.')),\r\n },\r\n {\r\n key: 'q6o3',\r\n hasInput: true,\r\n text: i18n.getString(_TL_('Other')),\r\n placeholder: i18n.getString(_TL_('Other')),\r\n },\r\n ],\r\n isVisible: answers => answers.q1.selectedOption === 'q1o6',\r\n },\r\n {\r\n isRequired: false,\r\n Type: MultipleSelectionConfigurator,\r\n key: 'q7',\r\n page: 1,\r\n position: 2,\r\n getTitle: () => i18n.getString(_TL_('What would you like to do? Choose all that apply:')),\r\n options: [\r\n {\r\n key: 'q7o1',\r\n text: i18n.getString(_TL_('I want to set a budget for specific ad channels, such as Microsoft Advertising, Google Ads, or Meta Ads.')),\r\n },\r\n {\r\n key: 'q7o2',\r\n text: i18n.getString(_TL_('I want to turn off automated text ads.')),\r\n },\r\n {\r\n key: 'q7o3',\r\n text: i18n.getString(_TL_('I want my ads to show only for certain demographics (for example, age or income).')),\r\n },\r\n {\r\n key: 'q7o4',\r\n text: i18n.getString(_TL_('I want my ads to show for people with certain interests or behaviors.')),\r\n },\r\n {\r\n key: 'q7o5',\r\n text: i18n.getString(_TL_('I want my ads to show for search phrases I identify.')),\r\n },\r\n {\r\n key: 'q7o6',\r\n text: i18n.getString(_TL_('I want more detailed reports.')),\r\n },\r\n {\r\n key: 'q7o7',\r\n hasInput: true,\r\n text: i18n.getString(_TL_('Other')),\r\n placeholder: i18n.getString(_TL_('Other')),\r\n },\r\n ],\r\n isVisible: answers => answers.q1.selectedOption === 'q1o7',\r\n },\r\n {\r\n isRequired: false,\r\n Type: MultipleSelectionConfigurator,\r\n key: 'q8',\r\n page: 1,\r\n position: 2,\r\n getTitle: () => i18n.getString(_TL_('Which aspect is difficult to use?')),\r\n options: [\r\n {\r\n key: 'q8o1',\r\n text: i18n.getString(_TL_('Automated text ads')),\r\n },\r\n {\r\n key: 'q8o2',\r\n text: i18n.getString(_TL_('Setting up the budget')),\r\n },\r\n {\r\n key: 'q8o3',\r\n text: i18n.getString(_TL_('Payments for advertising')),\r\n },\r\n {\r\n key: 'q8o4',\r\n text: i18n.getString(_TL_('Understanding the impact of search vs. social advertising')),\r\n },\r\n {\r\n key: 'q8o5',\r\n text: i18n.getString(_TL_('Understanding the impact of paid advertising vs. organic social engagement')),\r\n },\r\n {\r\n key: 'q8o6',\r\n text: i18n.getString(_TL_('Connecting to my social networks')),\r\n },\r\n {\r\n key: 'q8o7',\r\n text: i18n.getString(_TL_('I don\\'t know where my money is being spent')),\r\n },\r\n {\r\n key: 'q8o8',\r\n hasInput: true,\r\n text: i18n.getString(_TL_('Other')),\r\n placeholder: i18n.getString(_TL_('Other')),\r\n },\r\n ],\r\n isVisible: answers => answers.q1.selectedOption === 'q1o8',\r\n },\r\n {\r\n isRequired: false,\r\n Type: CommentConfigurator,\r\n key: 'q9',\r\n page: 1,\r\n position: 3,\r\n getTitle: () => i18n.getString(_TL_('Do you have any other feedback you\\'d like to give us about Microsoft Advertising?')),\r\n placeholder: i18n.getString(_TL_('Please don\\'t include any confidential or personal information.')),\r\n isVisible: () => true,\r\n },\r\n ],\r\n };\r\n};\r\n","import React from 'react';\r\nimport {\r\n SurveyFactory,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\nimport { EscWebuiUserPauseCampaignSurveyConfig } from './factory-view';\r\n\r\nexport const EscWebuiUserPauseCampaignSurveyView = props => (\r\n \r\n);\r\n","import { BaseSurvey } from '../base-survey';\r\nimport { validateESCTriggerCondition } from '../utils';\r\nimport { EscWebuiUserPauseCampaignSurveyView } from './view';\r\n\r\nexport class EscWebuiUserPauseCampaignSurvey extends BaseSurvey {\r\n getSurveyName = () => 'EscWebuiUserPauseCampaignSurvey';\r\n\r\n getSurveyId = () => '7f329cc3-a70f-4477-8ecd-31751102880c';\r\n\r\n validateTriggerCondition = () => validateESCTriggerCondition(this, 'ESCUserPauseCampaign');\r\n\r\n onSurveySubmit = () => {\r\n window.survey.ESCUserPauseCampaign = false;\r\n delete window.survey.ESCUserPauseCampaignCustomParams;\r\n };\r\n\r\n onSurveyDismiss = () => {\r\n window.survey.ESCUserPauseCampaign = false;\r\n delete window.survey.ESCUserPauseCampaignCustomParams;\r\n };\r\n\r\n getSurveyComponent = () => EscWebuiUserPauseCampaignSurveyView;\r\n\r\n getSurveyCustomParams = () => window.survey.ESCUserPauseCampaignCustomParams;\r\n}\r\n","import {\r\n RatingConfigurator,\r\n CommentConfigurator\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\n\r\nexport const EscWebuiUPCampaignFeedbackSurveyConfig = (options) => {\r\n const {\r\n i18n,\r\n } = options;\r\n\r\n return {\r\n featureArea: 'EscWebuiUPCampaignFeedbackSurvey',\r\n style: {\r\n root: {\r\n minWidth: 600,\r\n '@media (max-width: 600px)': {\r\n minHeight: 320,\r\n minWidth: 340,\r\n },\r\n },\r\n },\r\n others: {\r\n isGlobalModalStyleEnabled: true,\r\n isThankYouPageEnabled: false,\r\n isUserInitiatedSurvey: true,\r\n combineTextInputToComment: true,\r\n isInPageMiddle: true,\r\n },\r\n rating: {\r\n isRequired: true,\r\n Type: RatingConfigurator,\r\n key: 'rating',\r\n page: 0,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('Congratulations on successfully publishing your first campaign! Please rate your experience.')),\r\n isVisible: () => true,\r\n options: [\r\n {\r\n key: '5',\r\n text: i18n.getString(_TL_('Extremely easy')),\r\n rating: 1.0,\r\n },\r\n {\r\n key: '4',\r\n text: i18n.getString(_TL_('Somewhat easy')),\r\n rating: 0.8,\r\n },\r\n {\r\n key: '3',\r\n text: i18n.getString(_TL_('Neither easy nor difficult')),\r\n rating: 0.6,\r\n },\r\n {\r\n key: '2',\r\n text: i18n.getString(_TL_('Somewhat difficult')),\r\n rating: 0.4,\r\n },\r\n {\r\n key: '1',\r\n text: i18n.getString(_TL_('Extremely difficult')),\r\n rating: 0.2,\r\n },\r\n ],\r\n },\r\n questions: [\r\n {\r\n isRequired: false,\r\n Type: CommentConfigurator,\r\n key: 'q0',\r\n page: 0,\r\n position: 1,\r\n getTitle: () => i18n.getString(_TL_('Additional feedback (optional)')),\r\n placeholder: i18n.getString(_TL_('Please don\\'t include any confidential or personal information.')),\r\n isVisible: () => true,\r\n },\r\n ],\r\n };\r\n};\r\n","import React from 'react';\r\nimport {\r\n SurveyFactory,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\nimport { EscWebuiUPCampaignFeedbackSurveyConfig } from './factory-view';\r\n\r\nexport const EscWebuiUPCampaignFeedbackView = props => (\r\n \r\n);\r\n\r\n","import { BaseSurvey } from '../base-survey';\r\nimport { EscWebuiUPCampaignFeedbackView } from './view';\r\nimport { validateESCTriggerCondition } from '../utils';\r\n\r\nexport class EscWebuiCampaignFeedbackSurvey extends BaseSurvey {\r\n getSurveyName = () => 'EscWebuiCampaignFeedbackSurvey';\r\n\r\n getSurveyId = () => '4f304731-345b-47a2-b366-589ad0bba8aa';\r\n\r\n validateTriggerCondition = () => validateESCTriggerCondition(this, 'ESCUserPublishesFirstCampaign');\r\n\r\n onSurveySubmit = () => {\r\n window.survey.ESCUserPublishesFirstCampaign = false;\r\n };\r\n\r\n onSurveyDismiss = () => {\r\n window.survey.ESCUserPublishesFirstCampaign = false;\r\n };\r\n\r\n getSurveyComponent = () => EscWebuiUPCampaignFeedbackView;\r\n}\r\n","import {\r\n MultipleSelectionConfigurator\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\n\r\nexport const EscWebuiAutomatedAdDeletionSurveyConfig = (options) => {\r\n const {\r\n i18n,\r\n } = options;\r\n\r\n return {\r\n featureArea: 'EscWebuiAutomatedAdDeletionSurvey',\r\n style: {\r\n root: {\r\n minWidth: 600,\r\n '@media (max-width: 600px)': {\r\n minHeight: 320,\r\n minWidth: 340,\r\n },\r\n },\r\n },\r\n others: {\r\n isGlobalModalStyleEnabled: true,\r\n isThankYouPageEnabled: false,\r\n isUserInitiatedSurvey: true,\r\n combineTextInputToComment: true,\r\n isInPageMiddle: true,\r\n },\r\n questions: [\r\n {\r\n isRequired: false,\r\n Type: MultipleSelectionConfigurator,\r\n key: 'q1',\r\n page: 0,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('Please let us know why are you deleting this ad')),\r\n isVisible: () => true,\r\n options: [\r\n {\r\n key: 'q1o1',\r\n text: i18n.getString(_TL_('Ad is not relevant to my business')),\r\n },\r\n {\r\n key: 'q1o2',\r\n text: i18n.getString(_TL_('Ad has messaging that I don\\'t like')),\r\n },\r\n {\r\n key: 'q1o3',\r\n text: i18n.getString(_TL_('Ad has offensive content')),\r\n },\r\n {\r\n key: 'q1o4',\r\n text: i18n.getString(_TL_('Ad has incorrect information')),\r\n },\r\n {\r\n key: 'q1o5',\r\n text: i18n.getString(_TL_('Ad has specific words that I don\\'t like')),\r\n },\r\n {\r\n key: 'q1o6',\r\n text: i18n.getString(_TL_('Other')),\r\n placeholder: i18n.getString(_TL_('Other')),\r\n hasInput: true,\r\n maxLength: 2000,\r\n },\r\n ],\r\n data: {\r\n },\r\n },\r\n ],\r\n };\r\n};\r\n","import React from 'react';\r\nimport {\r\n SurveyFactory,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\nimport { EscWebuiAutomatedAdDeletionSurveyConfig } from './factory-view';\r\n\r\nexport const ESCWebUIAutomatedDeletionSurveyView = props => (\r\n \r\n);\r\n\r\n","import { BaseSurvey } from '../base-survey';\r\nimport { validateESCTriggerCondition } from '../utils';\r\nimport { ESCWebUIAutomatedDeletionSurveyView } from './view';\r\n\r\nexport class EscWebuiAutomatedAdDeletionSurvey extends BaseSurvey {\r\n getSurveyName = () => 'EscWebuiAutomatedAdDeletionSurvey';\r\n\r\n getSurveyId = () => 'e6579f37-b3f8-41d8-9aa4-63b6f875c9f3';\r\n\r\n validateTriggerCondition = () => validateESCTriggerCondition(this, 'ESCAutomatedAdDeletion');\r\n\r\n onSurveySubmit = () => {\r\n window.survey.ESCAutomatedAdDeletion = false;\r\n delete window.survey.ESCAutomatedAdDeletionCustomParams;\r\n };\r\n\r\n onSurveyDismiss = () => {\r\n window.survey.ESCAutomatedAdDeletion = false;\r\n delete window.survey.ESCAutomatedAdDeletionCustomParams;\r\n };\r\n\r\n getSurveyComponent = () => ESCWebUIAutomatedDeletionSurveyView;\r\n\r\n getSurveyCustomParams = () => window.survey.ESCAutomatedAdDeletionCustomParams;\r\n}\r\n","import React from 'react';\r\nimport {\r\n RatingConfigurator,\r\n SingleSelectionConfigurator,\r\n CommentConfigurator,\r\n EmailConfigurator,\r\n SurveyFactory,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\n\r\nexport const recommendationSurveyConfig = (options) => {\r\n const {\r\n i18n,\r\n } = options;\r\n\r\n return {\r\n featureArea: 'AdInsightRecommendationSurvey',\r\n style: {\r\n root: {\r\n maxWidth: 480,\r\n },\r\n },\r\n others: {\r\n shouldHideInputWhenNotSelected: true,\r\n },\r\n rating: {\r\n isRequired: true,\r\n Type: RatingConfigurator,\r\n key: 'rating',\r\n page: 0,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('How satisfied are you with Microsoft Advertising\\'s Recommendations page?')),\r\n isVisible: () => true,\r\n options: [\r\n {\r\n key: '5',\r\n text: i18n.getString(_TL_('Very satisfied')),\r\n rating: 1.0,\r\n },\r\n {\r\n key: '4',\r\n text: i18n.getString(_TL_('Moderately satisfied')),\r\n rating: 0.8,\r\n },\r\n {\r\n key: '3',\r\n text: i18n.getString(_TL_('Neither satisfied nor dissatisfied')),\r\n rating: 0.6,\r\n },\r\n {\r\n key: '2',\r\n text: i18n.getString(_TL_('Moderately dissatisfied')),\r\n rating: 0.4,\r\n },\r\n {\r\n key: '1',\r\n text: i18n.getString(_TL_('Very dissatisfied')),\r\n rating: 0.2,\r\n },\r\n ],\r\n },\r\n email: {\r\n isRequired: true,\r\n Type: EmailConfigurator,\r\n key: 'email',\r\n page: 4,\r\n position: 1,\r\n getTitle: () => i18n.getString(_TL_('Can we follow up with you about your responses?')),\r\n isVisible: answers => ['5', '4', '3', '2', '1'].includes(answers.rating.selectedOption),\r\n options: [\r\n {\r\n key: 'yes',\r\n text: i18n.getString(_TL_('Yes - specify the contact email below')),\r\n placeholder: i18n.getString(_TL_('Enter your email')),\r\n hasInput: true,\r\n },\r\n {\r\n key: 'no',\r\n text: i18n.getString(_TL_('No')),\r\n },\r\n ],\r\n },\r\n questions: [\r\n {\r\n Type: CommentConfigurator,\r\n key: 'q1',\r\n page: 1,\r\n position: 0,\r\n getTitle: (answers, surveyConfigurator) => {\r\n const questionConfigurator = surveyConfigurator.getQuestionByKey('rating');\r\n const optionKey = answers.rating.selectedOption;\r\n // option to text\r\n return i18n.getString(\r\n _TL_('Can you tell us more about where you are {{option}} with Microsoft Adertising\\'s Recommendations?'),\r\n { option: questionConfigurator.optionKeyToText[optionKey].toLowerCase() }\r\n );\r\n },\r\n data: {\r\n },\r\n },\r\n {\r\n isRequired: true,\r\n Type: SingleSelectionConfigurator,\r\n key: 'q2',\r\n page: 2,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('How often do you check out Recommendations page?')),\r\n options: [\r\n {\r\n key: 'q2o1',\r\n text: i18n.getString(_TL_('Once every 2-3 months')),\r\n },\r\n {\r\n key: 'q2o2',\r\n text: i18n.getString(_TL_('Once per month')),\r\n },\r\n {\r\n key: 'q2o3',\r\n text: i18n.getString(_TL_('2-3 times per month')),\r\n },\r\n {\r\n key: 'q2o4',\r\n text: i18n.getString(_TL_('Once per week')),\r\n },\r\n {\r\n key: 'q2o5',\r\n text: i18n.getString(_TL_('2-3 times per week')),\r\n },\r\n {\r\n key: 'q2o6',\r\n text: i18n.getString(_TL_('Everyday')),\r\n },\r\n {\r\n key: 'q2o7',\r\n text: i18n.getString(_TL_('Others')),\r\n placeholder: i18n.getString(_TL_('Please feel free to elaborate')),\r\n hasInput: true,\r\n maxLength: 2000,\r\n },\r\n ],\r\n data: {\r\n },\r\n },\r\n {\r\n isRequired: true,\r\n Type: SingleSelectionConfigurator,\r\n key: 'q3',\r\n page: 3,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('Is Optimization Score helpful when you act on Recommendations?')),\r\n options: [\r\n {\r\n key: 'q3o1',\r\n text: i18n.getString(_TL_('Very helpful')),\r\n },\r\n {\r\n key: 'q3o2',\r\n text: i18n.getString(_TL_('Moderately helpful')),\r\n },\r\n {\r\n key: 'q3o3',\r\n text: i18n.getString(_TL_('Neither helpful nor unhelpful')),\r\n },\r\n {\r\n key: 'q3o4',\r\n text: i18n.getString(_TL_('Somewhat unhelpful')),\r\n },\r\n {\r\n key: 'q3o5',\r\n text: i18n.getString(_TL_('Not at helpful')),\r\n },\r\n ],\r\n },\r\n {\r\n Type: CommentConfigurator,\r\n key: 'q4',\r\n page: 4,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('If you could change one thing to improve Optimization Score, what would it be?')),\r\n data: {\r\n },\r\n },\r\n ],\r\n };\r\n};\r\n\r\nexport const FactorySurveyView = props => (\r\n );\r\n","import { BaseSurvey } from '../base-survey';\r\nimport { FactorySurveyView } from './factory-view';\r\nimport { validateAdinsightRecommendationTriggerCondition } from '../utils';\r\n\r\nexport class AdInsightRecommendationSurvey extends BaseSurvey {\r\n getSurveyName = () => 'AdInsightRecommendationSurvey';\r\n\r\n getSurveyId = isTestEnv => isTestEnv ? // eslint-disable-line no-confusing-arrow\r\n '78f8a552-767c-4247-915b-899bdd00bd06' : 'cc5db067-561d-4f60-a048-12767782666c';\r\n\r\n getInitializationConfig = () => ({\r\n initGroup: 100,\r\n initStartDate: '2023-03-02',\r\n initEndDate: '2023-06-09',\r\n });\r\n\r\n validateTriggerCondition = () => validateAdinsightRecommendationTriggerCondition(this, 'campaign/vnext/recommendations', 'IsRecommendationPageCsatPilotEnabled');\r\n\r\n getSurveyComponent = () => FactorySurveyView;\r\n}\r\n","import React from 'react';\r\nimport {\r\n RatingConfigurator,\r\n SingleSelectionConfigurator,\r\n CommentConfigurator,\r\n EmailConfigurator,\r\n SurveyFactory,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\n\r\nexport const recommendationMccSurveyConfig = (options) => {\r\n const {\r\n i18n,\r\n } = options;\r\n\r\n return {\r\n featureArea: 'AdInsightRecommendationMccSurvey',\r\n style: {\r\n root: {\r\n maxWidth: 480,\r\n },\r\n },\r\n others: {\r\n shouldHideInputWhenNotSelected: true,\r\n },\r\n rating: {\r\n isRequired: true,\r\n Type: RatingConfigurator,\r\n key: 'rating',\r\n page: 0,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('How satisfied are you with Microsoft Advertising\\'s Recommendations page in your manager account?')),\r\n isVisible: () => true,\r\n options: [\r\n {\r\n key: '5',\r\n text: i18n.getString(_TL_('Very satisfied')),\r\n rating: 1.0,\r\n },\r\n {\r\n key: '4',\r\n text: i18n.getString(_TL_('Moderately satisfied')),\r\n rating: 0.8,\r\n },\r\n {\r\n key: '3',\r\n text: i18n.getString(_TL_('Neither satisfied nor dissatisfied')),\r\n rating: 0.6,\r\n },\r\n {\r\n key: '2',\r\n text: i18n.getString(_TL_('Moderately dissatisfied')),\r\n rating: 0.4,\r\n },\r\n {\r\n key: '1',\r\n text: i18n.getString(_TL_('Very dissatisfied')),\r\n rating: 0.2,\r\n },\r\n ],\r\n },\r\n email: {\r\n isRequired: true,\r\n Type: EmailConfigurator,\r\n key: 'email',\r\n page: 3,\r\n position: 1,\r\n getTitle: () => i18n.getString(_TL_('Can we follow up with you about your responses?')),\r\n isVisible: answers => ['5', '4', '3', '2', '1'].includes(answers.rating.selectedOption),\r\n options: [\r\n {\r\n key: 'yes',\r\n text: i18n.getString(_TL_('Yes - specify the contact email below')),\r\n placeholder: i18n.getString(_TL_('Enter your email')),\r\n hasInput: true,\r\n },\r\n {\r\n key: 'no',\r\n text: i18n.getString(_TL_('No')),\r\n },\r\n ],\r\n },\r\n questions: [\r\n {\r\n Type: CommentConfigurator,\r\n key: 'q1',\r\n page: 1,\r\n position: 0,\r\n getTitle: (answers, surveyConfigurator) => {\r\n const questionConfigurator = surveyConfigurator.getQuestionByKey('rating');\r\n const optionKey = answers.rating.selectedOption;\r\n // option to text\r\n return i18n.getString(\r\n _TL_('Can you tell us more about where you are {{option}} with Microsoft Adertising\\'s Recommendations?'),\r\n { option: questionConfigurator.optionKeyToText[optionKey].toLowerCase() }\r\n );\r\n },\r\n data: {\r\n },\r\n },\r\n {\r\n isRequired: true,\r\n Type: SingleSelectionConfigurator,\r\n key: 'q2',\r\n page: 2,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('How often do you check out Recommendations page in your account?')),\r\n options: [\r\n {\r\n key: 'q2o1',\r\n text: i18n.getString(_TL_('Once every 2-3 months')),\r\n },\r\n {\r\n key: 'q2o2',\r\n text: i18n.getString(_TL_('Once per month')),\r\n },\r\n {\r\n key: 'q2o3',\r\n text: i18n.getString(_TL_('2-3 times per month')),\r\n },\r\n {\r\n key: 'q2o4',\r\n text: i18n.getString(_TL_('Once per week')),\r\n },\r\n {\r\n key: 'q2o5',\r\n text: i18n.getString(_TL_('2-3 times per week')),\r\n },\r\n {\r\n key: 'q2o6',\r\n text: i18n.getString(_TL_('Everyday')),\r\n },\r\n {\r\n key: 'q2o7',\r\n text: i18n.getString(_TL_('Others')),\r\n placeholder: i18n.getString(_TL_('Please feel free to elaborate')),\r\n hasInput: true,\r\n maxLength: 2000,\r\n },\r\n ],\r\n data: {\r\n },\r\n },\r\n ],\r\n };\r\n};\r\n\r\nexport const FactorySurveyView = props => (\r\n );\r\n","import { BaseSurvey } from '../base-survey';\r\nimport { FactorySurveyView } from './factory-view';\r\nimport { validateAdinsightRecommendationTriggerCondition } from '../utils';\r\n\r\nexport class AdInsightRecommendationMccSurvey extends BaseSurvey {\r\n getSurveyName = () => 'AdInsightRecommendationMccSurvey';\r\n\r\n getSurveyId = isTestEnv => isTestEnv ? // eslint-disable-line no-confusing-arrow\r\n '9c362445-37e0-46b2-9389-c70570320aff' : '557a4b31-a852-4ef8-8b79-73680df161a9';\r\n\r\n getInitializationConfig = () => ({\r\n initGroup: 100,\r\n initStartDate: '2023-03-02',\r\n initEndDate: '2023-06-09',\r\n });\r\n\r\n validateTriggerCondition = () => validateAdinsightRecommendationTriggerCondition(this, 'campaign/vnext/accounts/recommendations', 'IsRecommendationMccPageCsatPilotEnabled');\r\n\r\n getSurveyComponent = () => FactorySurveyView;\r\n}\r\n","import {\r\n SingleSelectionConfigurator,\r\n MultipleSelectionConfigurator,\r\n CommentConfigurator,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\n\r\nexport const escWebuiUserCancelSignupSurveyConfig = (options) => {\r\n const {\r\n i18n,\r\n } = options;\r\n\r\n return {\r\n featureArea: 'EscWebuiUserCancelSignupSurvey',\r\n style: {\r\n root: {\r\n minHeight: 420,\r\n '@media (min-width: 600px)': {\r\n minWidth: 600,\r\n minHeight: 320,\r\n },\r\n },\r\n },\r\n others: {\r\n isGlobalModalStyleEnabled: true,\r\n isThankYouPageEnabled: false,\r\n isUserInitiatedSurvey: true,\r\n combineTextInputToComment: true,\r\n isInPageMiddle: true,\r\n },\r\n questions: [\r\n {\r\n isRequired: false,\r\n Type: SingleSelectionConfigurator,\r\n key: 'q1',\r\n page: 0,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('Please let us know why you decided not to sign up')),\r\n isVisible: () => true,\r\n options: [\r\n {\r\n key: 'q1o1',\r\n text: i18n.getString(_TL_('I don\\'t know what I\\'m signing up for')),\r\n },\r\n {\r\n key: 'q1o2',\r\n text: i18n.getString(_TL_('The sign up process is too long and/or confusing')),\r\n },\r\n {\r\n key: 'q1o3',\r\n text: i18n.getString(_TL_('I don\\'t want to share my business details too soon')),\r\n },\r\n {\r\n key: 'q1o4',\r\n text: i18n.getString(_TL_('The product doesn\\'t provide what I need for my business')),\r\n },\r\n {\r\n key: 'q1o5',\r\n text: i18n.getString(_TL_('I plan to sign up later')),\r\n },\r\n {\r\n key: 'q1o6',\r\n text: i18n.getString(_TL_('The coupon I used isn\\'t being applied')),\r\n },\r\n {\r\n key: 'q1o7',\r\n hasInput: true,\r\n text: 'Other',\r\n },\r\n ],\r\n data: {\r\n },\r\n },\r\n {\r\n isRequired: false,\r\n Type: MultipleSelectionConfigurator,\r\n key: 'q2',\r\n page: 1,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('What in the setup process is confusing? Choose all that apply:')),\r\n isVisible: answers => answers.q1.selectedOption === 'q1o2',\r\n options: [\r\n {\r\n key: 'q2o1',\r\n text: i18n.getString(_TL_('I don\\'t understand why I need so many steps')),\r\n },\r\n {\r\n key: 'q2o2',\r\n text: i18n.getString(_TL_('I need more help to understand the sign up process')),\r\n },\r\n {\r\n key: 'q2o3',\r\n text: i18n.getString(_TL_('The UI is very complicated')),\r\n },\r\n {\r\n key: 'q2o4',\r\n text: i18n.getString(_TL_('Account creation is very complicated')),\r\n },\r\n {\r\n key: 'q2o5',\r\n text: i18n.getString(_TL_('Campaign creation process is tedious')),\r\n },\r\n {\r\n key: 'q2o6',\r\n hasInput: true,\r\n placeholder: i18n.getString(_TL_('Other')),\r\n },\r\n ],\r\n data: {\r\n },\r\n },\r\n {\r\n isRequired: false,\r\n Type: CommentConfigurator,\r\n key: 'q3',\r\n page: 1,\r\n position: 1,\r\n getTitle: () => i18n.getString(_TL_('Can you elaborate more why the product doesn\\'t meet your business expectations?')),\r\n placeholder: i18n.getString(_TL_('Please don\\'t include any confidential or personal information.')),\r\n isVisible: answers => answers.q1.selectedOption === 'q1o4',\r\n },\r\n {\r\n isRequired: false,\r\n Type: MultipleSelectionConfigurator,\r\n key: 'q4',\r\n page: 1,\r\n position: 2,\r\n getTitle: () => i18n.getString(_TL_('Reasons to sign up later')),\r\n isVisible: answers => answers.q1.selectedOption === 'q1o5',\r\n options: [\r\n {\r\n key: 'q4o1',\r\n text: i18n.getString(_TL_('Would like more time to think about it')),\r\n },\r\n {\r\n key: 'q4o2',\r\n text: i18n.getString(_TL_('My agent will finish up the process for me')),\r\n },\r\n {\r\n key: 'q4o3',\r\n text: i18n.getString(_TL_('Not sure if I am ready to start a campaign yet')),\r\n },\r\n {\r\n key: 'q4o4',\r\n text: i18n.getString(_TL_('Don\\'t have the budget to run a campaign now')),\r\n },\r\n {\r\n key: 'q4o5',\r\n text: i18n.getString(_TL_('Don\\'t understand the benefits of signing up if not ready to run a campaign')),\r\n },\r\n {\r\n key: 'q4o6',\r\n hasInput: true,\r\n placeholder: i18n.getString(_TL_('Other')),\r\n },\r\n ],\r\n data: {\r\n },\r\n },\r\n {\r\n isRequired: false,\r\n Type: CommentConfigurator,\r\n key: 'q5',\r\n page: 1,\r\n position: 3,\r\n getTitle: () => i18n.getString(_TL_('Do you have any other feedback you\\'d like to give us about Microsoft Advertising?')),\r\n placeholder: i18n.getString(_TL_('Please don\\'t include any confidential or personal information.')),\r\n isVisible: () => true,\r\n },\r\n ],\r\n };\r\n};\r\n","import React from 'react';\r\nimport {\r\n SurveyFactory,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\nimport { escWebuiUserCancelSignupSurveyConfig } from './factory-view';\r\n\r\nexport const ESCWebUIUserCancelSignupSurveyView = props => (\r\n \r\n);\r\n\r\n","import { BaseSurvey } from '../base-survey';\r\nimport { validateESCSignupTriggerCondition } from '../utils';\r\nimport { ESCWebUIUserCancelSignupSurveyView } from './view';\r\n\r\nexport class EscWebuiUserCancelSignupSurvey extends BaseSurvey {\r\n getSurveyName = () => 'EscWebuiUserCancelSignupSurvey';\r\n\r\n getSurveyId = () => 'ec6cdc61-9e98-4e85-a5f0-065cce464ce2';\r\n\r\n validateTriggerCondition = () => validateESCSignupTriggerCondition(this, 'EscUserCancelSignup');\r\n\r\n getSurveyComponent = () => ESCWebUIUserCancelSignupSurveyView;\r\n\r\n onSurveySubmit = () => {\r\n window.survey.EscUserCancelSignup = false;\r\n delete window.survey.EscUserCancelSignupCustomParams;\r\n };\r\n\r\n onSurveyDismiss = () => {\r\n window.survey.EscUserCancelSignup = false;\r\n delete window.survey.EscUserCancelSignupCustomParams;\r\n };\r\n\r\n getSurveyCustomParams = () => window.survey.EscUserCancelSignupCustomParams;\r\n}\r\n","import {\r\n MultipleSelectionConfigurator\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\n\r\nexport const McmWebuiOptOutFeedbackSurveyConfig = (options) => {\r\n const {\r\n i18n,\r\n } = options;\r\n\r\n return {\r\n featureArea: 'ESCWeb\\\\MultiChannelOptOut',\r\n style: {\r\n root: {\r\n minWidth: 600,\r\n },\r\n },\r\n others: {\r\n isUserInitiatedSurvey: true,\r\n },\r\n questions: [\r\n {\r\n Type: MultipleSelectionConfigurator,\r\n isRequired: true,\r\n key: 'q1',\r\n page: 0,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('Why did you opt out of multi-channel management?')),\r\n isVisible: () => true,\r\n options: [\r\n {\r\n key: 'q1o1',\r\n text: i18n.getString(_TL_('Advertiser policy don\\'t allow Audience Spend')),\r\n },\r\n {\r\n key: 'q1o2',\r\n text: i18n.getString(_TL_('Poor Performance or Traffic Spike')),\r\n },\r\n {\r\n key: 'q1o3',\r\n text: i18n.getString(_TL_('Other Reason')),\r\n placeholder: i18n.getString(_TL_('Please feel free to elaborate')),\r\n hasInput: true,\r\n maxLength: 2000,\r\n },\r\n ],\r\n data: {\r\n },\r\n },\r\n ],\r\n };\r\n};\r\n","import React from 'react';\r\nimport {\r\n SurveyFactory,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\nimport { McmWebuiOptOutFeedbackSurveyConfig } from './factory-view';\r\n\r\nexport const McmWebuiOptOutFeedbackView = props => (\r\n \r\n);\r\n","import { BaseSurvey } from '../base-survey';\r\nimport { McmWebuiOptOutFeedbackView } from './view';\r\nimport { validateAccountSettingsTriggerCondition } from '../utils';\r\n\r\nexport class McmWebuiOptOutFeedbackSurvey extends BaseSurvey {\r\n getSurveyName = () => 'McmWebuiOptOutFeedbackSurvey';\r\n\r\n getSurveyId = isTestEnv => isTestEnv ? // eslint-disable-line no-confusing-arrow\r\n '455be049-493a-49f1-a076-8145a70ffa19' : '33bd3730-b4c6-4df8-8af2-b9662b83a64e';\r\n\r\n getSurveyProduct = () => 'ESC';\r\n\r\n getSurveyInterface = () => 'Web';\r\n\r\n validateTriggerCondition = () => validateAccountSettingsTriggerCondition(this, '/campaign/vnext/accountsettings', 'McmUserOptOut');\r\n\r\n onSurveySubmit = () => {\r\n window.survey.McmUserOptOut = false;\r\n };\r\n\r\n onSurveyDismiss = () => {\r\n window.survey.McmUserOptOut = false;\r\n };\r\n\r\n getSurveyComponent = () => McmWebuiOptOutFeedbackView;\r\n}\r\n","import {\r\n SingleSelectionConfigurator\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\n\r\nexport const MCMMandatoryOptOutSurveyConfig = (options) => {\r\n const {\r\n i18n,\r\n } = options;\r\n\r\n return {\r\n featureArea: 'ESCWeb\\\\MultiChannelOptOut',\r\n style: {\r\n root: {\r\n minWidth: 600,\r\n },\r\n },\r\n others: {\r\n isUserInitiatedSurvey: true,\r\n },\r\n questions: [\r\n {\r\n Type: SingleSelectionConfigurator,\r\n isRequired: true,\r\n key: 'q1',\r\n page: 0,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('Why are you opting out your campaign(s)?')),\r\n isVisible: () => true,\r\n options: [\r\n {\r\n key: 'q1o1',\r\n text: i18n.getString(_TL_('The advertiser has separate budgets for search and audience campaigns.')),\r\n },\r\n {\r\n key: 'q1o2',\r\n text: i18n.getString(_TL_('The advertiser\\'s policies restrict ads from serving.')),\r\n },\r\n {\r\n key: 'q1o3',\r\n text: i18n.getString(_TL_('The ads are restricted from serving on the Microsoft Advertising Network per Microsoft Advertising\\'s policies.')),\r\n },\r\n {\r\n key: 'q1o4',\r\n text: i18n.getString(_TL_('Other (please elaborate below).')),\r\n placeholder: i18n.getString(_TL_('Please don\\'t include any confidential or personal information in your response.')),\r\n hasInput: true,\r\n maxLength: 90,\r\n },\r\n ],\r\n data: {\r\n },\r\n },\r\n ],\r\n };\r\n};\r\n","import React from 'react';\r\nimport {\r\n SurveyFactory,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\nimport { MCMMandatoryOptOutSurveyConfig } from './factory-view';\r\n\r\nexport const MCMMandatoryOptOutSurveyView = props => (\r\n \r\n);\r\n","import { BaseSurvey } from '../base-survey';\r\nimport { MCMMandatoryOptOutSurveyView } from './view';\r\nimport { validateAccountSettingsTriggerCondition } from '../utils';\r\n\r\nexport class MCMMandatoryOptOutSurvey extends BaseSurvey {\r\n getSurveyName = () => 'MCMMandatoryOptOutSurvey';\r\n\r\n getSurveyId = isTestEnv => isTestEnv ? // eslint-disable-line no-confusing-arrow\r\n 'ac5d4a61-4f23-49f0-a2c8-84fa6cbdceed' : '8c853ce2-96e9-4fd9-a760-5c2b62838927';\r\n\r\n getSurveyProduct = () => 'ESC';\r\n\r\n getSurveyInterface = () => 'Web';\r\n\r\n validateTriggerCondition = () => validateAccountSettingsTriggerCondition(this, '/campaign/vnext/accountsettings', 'MCMMandatoryOptOutSurvey');\r\n\r\n onSurveySubmit = () => {\r\n window.survey.MCMMandatoryOptOutSurvey = false;\r\n window.survey.onSubmitHideWarningCallback();\r\n };\r\n\r\n onSurveyDismiss = () => {\r\n window.survey.MCMMandatoryOptOutSurvey = false;\r\n window.survey.onDismissReOptInCallback();\r\n };\r\n\r\n getSurveyComponent = () => MCMMandatoryOptOutSurveyView;\r\n}\r\n","import {\r\n RatingConfigurator,\r\n MultipleSelectionConfigurator,\r\n CommentConfigurator,\r\n EmailConfigurator,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\n\r\nexport const AssetLibraryAppSurveyConfig = (options) => {\r\n const { i18n } = options;\r\n\r\n return {\r\n featureArea: 'AssetLibraryAppSurvey',\r\n style: {\r\n root: {\r\n maxWidth: 600,\r\n },\r\n },\r\n others: {\r\n },\r\n rating: {\r\n isRequired: true,\r\n Type: RatingConfigurator,\r\n key: 'rating',\r\n page: 0,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('How satisfied are you with Microsoft Advertising\\'s Asset library?')),\r\n isVisible: () => true,\r\n options: [\r\n {\r\n key: '5',\r\n text: i18n.getString(_TL_('Very satisfied')),\r\n rating: 1.0,\r\n },\r\n {\r\n key: '4',\r\n text: i18n.getString(_TL_('Moderately satisfied')),\r\n rating: 0.8,\r\n },\r\n {\r\n key: '3',\r\n text: i18n.getString(_TL_('Neutral')),\r\n rating: 0.6,\r\n },\r\n {\r\n key: '2',\r\n text: i18n.getString(_TL_('Moderately dissatisfied')),\r\n rating: 0.4,\r\n },\r\n {\r\n key: '1',\r\n text: i18n.getString(_TL_('Very dissatisfied')),\r\n rating: 0.2,\r\n },\r\n ],\r\n },\r\n email: {\r\n Type: EmailConfigurator,\r\n key: 'email',\r\n page: 0,\r\n position: 3,\r\n getTitle: () => i18n.getString(_TL_('Can we follow up with you about your responses?')),\r\n isVisible: answers => ['2', '1'].includes(answers.rating.selectedOption),\r\n options: [\r\n {\r\n key: 'yes',\r\n text: i18n.getString(_TL_('Yes - specify the contact email below')),\r\n placeholder: i18n.getString(_TL_('Enter your email')),\r\n hasInput: true,\r\n },\r\n {\r\n key: 'no',\r\n text: i18n.getString(_TL_('No')),\r\n },\r\n ],\r\n },\r\n questions: [\r\n {\r\n isRequired: true,\r\n Type: MultipleSelectionConfigurator,\r\n key: 'q1',\r\n page: 0,\r\n position: 1,\r\n getTitle: (answers, surveyConfigurator) => {\r\n const questionConfigurator = surveyConfigurator.getQuestionByKey('rating');\r\n const optionKey = answers.rating.selectedOption;\r\n // option to text\r\n return i18n.getString(\r\n _TL_('Please tell us more about why you\\'re {{option}} with Asset library. Select all that apply.'),\r\n { option: questionConfigurator.optionKeyToText[optionKey] }\r\n );\r\n },\r\n isVisible: answers => ['2', '1'].includes(answers.rating.selectedOption),\r\n options: [\r\n {\r\n key: 'q1o1',\r\n text: i18n.getString(_TL_('Uploading assets could be improved.')),\r\n },\r\n {\r\n key: 'q1o2',\r\n text: i18n.getString(_TL_('Editing assets could be improved.')),\r\n },\r\n {\r\n key: 'q1o3',\r\n text: i18n.getString(_TL_('I want more asset types.')),\r\n },\r\n {\r\n key: 'q1o4',\r\n text: i18n.getString(_TL_('The navigation and interface could be improved.')),\r\n },\r\n {\r\n key: 'q1o5',\r\n text: i18n.getString(_TL_('Searching for and filtering assets could be improved.')),\r\n },\r\n {\r\n key: 'q1o6',\r\n text: i18n.getString(_TL_('Asset library takes too long to load.')),\r\n },\r\n {\r\n key: 'q1o7',\r\n text: i18n.getString(_TL_('Other (please elaborate below).')),\r\n },\r\n ],\r\n data: {\r\n },\r\n },\r\n {\r\n isRequired: false,\r\n Type: CommentConfigurator,\r\n key: 'q2',\r\n page: 0,\r\n position: 2,\r\n getTitle: () => i18n.getString(_TL_('How can we continue to improve?')),\r\n isVisible: answers => ['2', '1'].includes(answers.rating.selectedOption),\r\n maxLength: 1024,\r\n data: {\r\n },\r\n },\r\n ],\r\n };\r\n};\r\n","import React from 'react';\r\nimport {\r\n SurveyFactory,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\nimport { AssetLibraryAppSurveyConfig } from './factory-view';\r\n\r\nexport const AssetLibraryAppSurveyView = props => (\r\n \r\n);\r\n","import { BaseSurvey } from '../base-survey';\r\nimport { AssetLibraryAppSurveyView } from './view';\r\nimport { validateAssetLibraryTriggerCondition } from '../utils';\r\n\r\nexport class AssetLibraryAppSurvey extends BaseSurvey {\r\n getSurveyName = () => 'AssetLibraryAppSurvey';\r\n\r\n getSurveyId = isTestEnv => (isTestEnv ? 'b4db6685-adec-4ecf-a7d5-288eaccb13f1' : '958137e5-13be-4f08-8a07-0afe1974cbff');\r\n\r\n validateTriggerCondition = () => validateAssetLibraryTriggerCondition(this, 'AssetLibraryAppSurveyTrigger');\r\n\r\n onSurveySubmit() {\r\n window.survey.AssetLibraryAppSurveyTrigger = false;\r\n\r\n super.onSurveySubmit();\r\n }\r\n\r\n onSurveyDismiss() {\r\n window.survey.AssetLibraryAppSurveyTrigger = false;\r\n\r\n super.onSurveyDismiss();\r\n }\r\n\r\n getSurveyComponent = () => AssetLibraryAppSurveyView;\r\n}\r\n","import {\r\n RatingConfigurator,\r\n MultipleSelectionConfigurator,\r\n CommentConfigurator,\r\n EmailConfigurator,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\n\r\nexport const AssetLibraryPickerSurveyConfig = (options) => {\r\n const { i18n } = options;\r\n\r\n return {\r\n featureArea: 'AssetLibraryPickerSurvey',\r\n style: {\r\n root: {\r\n maxWidth: 600,\r\n },\r\n },\r\n others: {\r\n },\r\n rating: {\r\n isRequired: true,\r\n Type: RatingConfigurator,\r\n key: 'rating',\r\n page: 0,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('How satisfied are you with Microsoft Advertising\\'s Asset library?')),\r\n isVisible: () => true,\r\n options: [\r\n {\r\n key: '5',\r\n text: i18n.getString(_TL_('Very satisfied')),\r\n rating: 1.0,\r\n },\r\n {\r\n key: '4',\r\n text: i18n.getString(_TL_('Moderately satisfied')),\r\n rating: 0.8,\r\n },\r\n {\r\n key: '3',\r\n text: i18n.getString(_TL_('Neutral')),\r\n rating: 0.6,\r\n },\r\n {\r\n key: '2',\r\n text: i18n.getString(_TL_('Moderately dissatisfied')),\r\n rating: 0.4,\r\n },\r\n {\r\n key: '1',\r\n text: i18n.getString(_TL_('Very dissatisfied')),\r\n rating: 0.2,\r\n },\r\n ],\r\n },\r\n email: {\r\n Type: EmailConfigurator,\r\n key: 'email',\r\n page: 0,\r\n position: 3,\r\n getTitle: () => i18n.getString(_TL_('Can we follow up with you about your responses?')),\r\n isVisible: answers => ['2', '1'].includes(answers.rating.selectedOption),\r\n options: [\r\n {\r\n key: 'yes',\r\n text: i18n.getString(_TL_('Yes - specify the contact email below')),\r\n placeholder: i18n.getString(_TL_('Enter your email')),\r\n hasInput: true,\r\n },\r\n {\r\n key: 'no',\r\n text: i18n.getString(_TL_('No')),\r\n },\r\n ],\r\n },\r\n questions: [\r\n {\r\n isRequired: true,\r\n Type: MultipleSelectionConfigurator,\r\n key: 'q1',\r\n page: 0,\r\n position: 1,\r\n getTitle: (answers, surveyConfigurator) => {\r\n const questionConfigurator = surveyConfigurator.getQuestionByKey('rating');\r\n const optionKey = answers.rating.selectedOption;\r\n // option to text\r\n return i18n.getString(\r\n _TL_('Please tell us more about why you\\'re {{option}} with Asset library. Select all that apply.'),\r\n { option: questionConfigurator.optionKeyToText[optionKey] }\r\n );\r\n },\r\n isVisible: answers => ['2', '1'].includes(answers.rating.selectedOption),\r\n options: [\r\n {\r\n key: 'q1o1',\r\n text: i18n.getString(_TL_('Uploading assets could be improved.')),\r\n },\r\n {\r\n key: 'q1o2',\r\n text: i18n.getString(_TL_('I want more asset types.')),\r\n },\r\n {\r\n key: 'q1o3',\r\n text: i18n.getString(_TL_('Searching for and filtering assets could be improved.')),\r\n },\r\n {\r\n key: 'q1o4',\r\n text: i18n.getString(_TL_('Asset library takes too long to load.')),\r\n },\r\n {\r\n key: 'q1o5',\r\n text: i18n.getString(_TL_('The interface could be improved.')),\r\n },\r\n {\r\n key: 'q1o6',\r\n text: i18n.getString(_TL_('Other (please elaborate below).')),\r\n },\r\n ],\r\n data: {\r\n },\r\n },\r\n {\r\n isRequired: false,\r\n Type: CommentConfigurator,\r\n key: 'q2',\r\n page: 0,\r\n position: 2,\r\n getTitle: () => i18n.getString(_TL_('How can we continue to improve?')),\r\n isVisible: answers => ['2', '1'].includes(answers.rating.selectedOption),\r\n maxLength: 1024,\r\n data: {\r\n },\r\n },\r\n ],\r\n };\r\n};\r\n","import React from 'react';\r\nimport {\r\n SurveyFactory,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\nimport { AssetLibraryPickerSurveyConfig } from './factory-view';\r\n\r\nexport const AssetLibraryPickerSurveyView = props => (\r\n \r\n);\r\n","import { BaseSurvey } from '../base-survey';\r\nimport { AssetLibraryPickerSurveyView } from './view';\r\nimport { validateAssetLibraryTriggerCondition } from '../utils';\r\n\r\nexport class AssetLibraryPickerSurvey extends BaseSurvey {\r\n getSurveyName = () => 'AssetLibraryPickerSurvey';\r\n\r\n getSurveyId = isTestEnv => (isTestEnv ? 'cfa725ec-eec1-4333-a7b3-d6b208ac2358' : 'ec9fe9b2-2ffe-4b60-80ff-e3f553b3d85f');\r\n\r\n validateTriggerCondition = () => validateAssetLibraryTriggerCondition(this, 'AssetLibraryPickerSurveyTrigger');\r\n\r\n onSurveySubmit() {\r\n window.survey.AssetLibraryPickerSurveyTrigger = false;\r\n\r\n super.onSurveySubmit();\r\n }\r\n\r\n onSurveyDismiss() {\r\n window.survey.AssetLibraryPickerSurveyTrigger = false;\r\n\r\n super.onSurveyDismiss();\r\n }\r\n\r\n getSurveyComponent = () => AssetLibraryPickerSurveyView;\r\n}\r\n","import {\r\n RatingConfigurator,\r\n MultipleSelectionConfigurator,\r\n EmailConfigurator,\r\n CommentConfigurator,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\n\r\nexport const AssetLibraryAIGCMVPSurveyConfig = (options) => {\r\n const { i18n } = options;\r\n\r\n return {\r\n featureArea: 'AssetLibraryAIGCSurvey',\r\n style: {\r\n root: {\r\n minWidth: 600,\r\n maxWidth: 600,\r\n },\r\n },\r\n others: {\r\n },\r\n rating: {\r\n isRequired: true,\r\n Type: RatingConfigurator,\r\n key: 'rating',\r\n page: 0,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('How satisfied are you with the feature of generating images through AI?')),\r\n isVisible: () => true,\r\n options: [\r\n {\r\n key: '5',\r\n text: i18n.getString(_TL_('Very satisfied')),\r\n rating: 1.0,\r\n },\r\n {\r\n key: '4',\r\n text: i18n.getString(_TL_('Moderately satisfied')),\r\n rating: 0.8,\r\n },\r\n {\r\n key: '3',\r\n text: i18n.getString(_TL_('Neutral')),\r\n rating: 0.6,\r\n },\r\n {\r\n key: '2',\r\n text: i18n.getString(_TL_('Moderately dissatisfied')),\r\n rating: 0.4,\r\n },\r\n {\r\n key: '1',\r\n text: i18n.getString(_TL_('Very dissatisfied')),\r\n rating: 0.2,\r\n },\r\n ],\r\n },\r\n email: {\r\n Type: EmailConfigurator,\r\n key: 'email',\r\n page: 1,\r\n position: 2,\r\n getTitle: () => i18n.getString(_TL_('Can we follow up with you about your responses?')),\r\n isVisible: answers => ['3', '2', '1'].includes(answers.rating.selectedOption),\r\n options: [\r\n {\r\n key: 'yes',\r\n text: i18n.getString(_TL_('Yes - specify the contact email below')),\r\n placeholder: i18n.getString(_TL_('Enter your email')),\r\n hasInput: true,\r\n },\r\n {\r\n key: 'no',\r\n text: i18n.getString(_TL_('No')),\r\n },\r\n ],\r\n },\r\n questions: [\r\n {\r\n isRequired: true,\r\n Type: MultipleSelectionConfigurator,\r\n key: 'q1',\r\n page: 1,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('Would you tell us more about why you are not so satisfied with the AI-generated image feature?')),\r\n isVisible: answers => ['3', '2', '1'].includes(answers.rating.selectedOption),\r\n options: [\r\n {\r\n key: 'q1o1',\r\n text: i18n.getString(_TL_('Generated images are not attractive enough')),\r\n },\r\n {\r\n key: 'q1o2',\r\n text: i18n.getString(_TL_('Generated images contain sensitive information')),\r\n },\r\n {\r\n key: 'q1o3',\r\n text: i18n.getString(_TL_('Generated images are not relevant to my business')),\r\n },\r\n {\r\n key: 'q1o4',\r\n text: i18n.getString(_TL_('I have a hard time describing the images I want')),\r\n },\r\n {\r\n key: 'q1o5',\r\n text: i18n.getString(_TL_('Others - please specify')),\r\n placeholder: i18n.getString(_TL_('Please feel free to elaborate')),\r\n hasInput: true,\r\n maxLength: 1024,\r\n },\r\n ],\r\n data: {\r\n },\r\n },\r\n {\r\n isRequired: false,\r\n Type: CommentConfigurator,\r\n key: 'q2',\r\n page: 1,\r\n position: 1,\r\n getTitle: () => i18n.getString(_TL_('How can we continue to improve?')),\r\n isVisible: answers => ['3', '2', '1'].includes(answers.rating.selectedOption),\r\n maxLength: 1024,\r\n data: {\r\n },\r\n },\r\n ],\r\n };\r\n};\r\n","import React from 'react';\r\nimport {\r\n SurveyFactory,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\nimport { AssetLibraryAIGCMVPSurveyConfig } from './factory-view';\r\n\r\nexport const AssetLibraryAIGCMVPSurveyView = props => (\r\n \r\n);\r\n","import { BaseSurvey } from '../base-survey';\r\nimport { AssetLibraryAIGCMVPSurveyView } from './view';\r\nimport { validateAssetLibraryTriggerCondition } from '../utils';\r\n\r\nexport class AssetLibraryAIGCMVPSurvey extends BaseSurvey {\r\n getSurveyName = () => 'AssetLibraryAIGCMVPSurvey';\r\n\r\n getSurveyId = isTestEnv => (isTestEnv ? '63819467-5b7d-4902-bc32-e52b8f70fd3b' : '86295b65-c73d-4c79-962c-571635031414');\r\n\r\n validateTriggerCondition = () => validateAssetLibraryTriggerCondition(this, 'AssetLibraryAIGCMVPSurveyTrigger');\r\n\r\n onSurveySubmit() {\r\n window.survey.AssetLibraryAIGCMVPSurveyTrigger = false;\r\n\r\n super.onSurveySubmit();\r\n }\r\n\r\n onSurveyDismiss() {\r\n window.survey.AssetLibraryAIGCMVPSurveyTrigger = false;\r\n\r\n super.onSurveyDismiss();\r\n }\r\n\r\n getSurveyComponent = () => AssetLibraryAIGCMVPSurveyView;\r\n}\r\n","import {\r\n RatingConfigurator,\r\n CommentConfigurator,\r\n MultipleSelectionConfigurator\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\n\r\nexport const reportingWebuiUserSurveyConfig = (options) => {\r\n const {\r\n i18n,\r\n } = options;\r\n return {\r\n featureArea: 'ReportingWebuiUserSurvey',\r\n style: {\r\n root: {\r\n maxWidth: 480,\r\n },\r\n },\r\n others: {\r\n combineTextInputToComment: true,\r\n },\r\n questions: [\r\n {\r\n isRequired: true,\r\n Type: RatingConfigurator,\r\n key: 'q1',\r\n page: 0,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('How satisfied are you with the reporting features in Microsoft Advertising?')),\r\n isVisible: () => true,\r\n options: [\r\n {\r\n key: '5',\r\n text: i18n.getString(_TL_('Very satisfied')),\r\n rating: 1.0,\r\n },\r\n {\r\n key: '4',\r\n text: i18n.getString(_TL_('Moderately satisfied')),\r\n rating: 0.8,\r\n },\r\n {\r\n key: '3',\r\n text: i18n.getString(_TL_('Neutral')),\r\n rating: 0.6,\r\n },\r\n {\r\n key: '2',\r\n text: i18n.getString(_TL_('Moderately dissatisfied')),\r\n rating: 0.4,\r\n },\r\n {\r\n key: '1',\r\n text: i18n.getString(_TL_('Very dissatisfied')),\r\n rating: 0.2,\r\n },\r\n ],\r\n },\r\n {\r\n isRequired: false,\r\n Type: CommentConfigurator,\r\n key: 'q2',\r\n page: 0,\r\n position: 1,\r\n getTitle: () => i18n.getString(_TL_('Please elaborate on your experience:')),\r\n isVisible: answers => ['3', '2', '1'].includes(answers.q1.selectedOption),\r\n maxLength: 2000,\r\n data: {\r\n },\r\n },\r\n {\r\n isRequired: false,\r\n Type: MultipleSelectionConfigurator,\r\n key: 'q3',\r\n page: 1,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('Which features do you primarily use to track your campaign performance?')),\r\n isVisible: true,\r\n options: [\r\n {\r\n key: '8',\r\n text: i18n.getString(_TL_('Overview page')),\r\n },\r\n {\r\n key: '7',\r\n text: i18n.getString(_TL_('Performance grids (e.g., campaign grid, ad group grid, etc.)')),\r\n },\r\n {\r\n key: '6',\r\n text: i18n.getString(_TL_('Reports from the Reporting tab ')),\r\n },\r\n ],\r\n },\r\n {\r\n Type: CommentConfigurator,\r\n isRequired: false,\r\n key: 'q4',\r\n page: 1,\r\n position: 1,\r\n getTitle: () => i18n.getString(_TL_('What additional features or enhancements would you like to see in Microsoft Advertising reporting? Please elaborate below.')),\r\n maxLength: 2000,\r\n data: {\r\n },\r\n },\r\n ],\r\n };\r\n};\r\n","import React from 'react';\r\nimport { SurveyFactory } from '@bingads-webui-campaign-react/survey-factory-tools';\r\nimport { reportingWebuiUserSurveyConfig } from './factory-view';\r\n\r\nexport const ReportingWebuiUserSurveyView = props => (\r\n \r\n);\r\n\r\n","import _, { result } from 'underscore';\r\nimport { BaseSurvey } from '../base-survey';\r\nimport { ReportingWebuiUserSurveyView } from './view';\r\n\r\nconst reportingLastTimeVisited = 'ReportingLastTimeVisited';\r\n\r\nexport class ReportingWebuiUserSurvey extends BaseSurvey {\r\n getSurveyName = () => 'ReportingSurvey';\r\n\r\n getSurveyId = isTestEnv => isTestEnv ? // eslint-disable-line no-confusing-arrow\r\n '5db23eb6-b692-46fa-b86e-96547e020e4d' : '08144017-cf15-45b3-be82-36a6842144ae';\r\n\r\n getSurveyProduct = () => 'Reporting';\r\n\r\n getSurveyInterface = () => 'Web';\r\n\r\n getInitializationConfig = () => ({\r\n initGroup: 100,\r\n initStartDate: '2024-07-15',\r\n initEndDate: '2025-07-15',\r\n });\r\n\r\n validateTriggerCondition = () => {\r\n const reportingLastTimeVisitedObj = this.SurveyPreferenceService.getAtUserLevel(reportingLastTimeVisited);\r\n const lastTimeVisited = _.get(reportingLastTimeVisitedObj, 'Data');\r\n\r\n if (_.isUndefined(lastTimeVisited)) {\r\n return false;\r\n }\r\n\r\n // Check to see if the user has visited reporting in the last 30 days\r\n if ((Date.now() - lastTimeVisited) > (30 * 24 * 60 * 60 * 1000)) {\r\n return false;\r\n }\r\n\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, Start`);\r\n\r\n // should not be AAD users, AAD users can be included in the future after OCPS integration\r\n const isNonAADUser = !result(this.serverContext, 'IsAADUser');\r\n\r\n if (!isNonAADUser) {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, isNonAADUser: ${isNonAADUser}`);\r\n return false;\r\n }\r\n\r\n // should be active user more than 30 days\r\n const userCreatedDateTime = new Date(result(this.serverContext, ['CurrentUser', 'CreatedDateTime']));\r\n const surveyPreference30DaysAgo = this.SurveyPreferenceService.getDaysAgo(30);\r\n const isUserActiveOneMonth = userCreatedDateTime <= surveyPreference30DaysAgo;\r\n\r\n if (!this.isTestEnv && !isUserActiveOneMonth) {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, isTestEnv: ${this.isTestEnv}, isUserActiveOneMonth: ${isUserActiveOneMonth}, userCreatedDateTime: ${userCreatedDateTime}, surveyPreference30DaysAgo: ${surveyPreference30DaysAgo}`);\r\n return false;\r\n }\r\n const surveyHasCooledDown = this.validateUserGovernance();\r\n\r\n if (!surveyHasCooledDown) {\r\n return false;\r\n }\r\n\r\n // conditions copied from Qualtrics\r\n const isEnglishUser = result(this.serverContext, ['CurrentUser', 'Language']) === 'EN';\r\n const isNotInternalUser = result(this.serverContext, ['CurrentUser', 'IsInternal']) !== true;\r\n const isNotSupportUser = !result(this.serverContext, ['CurrentUser', 'Name']).includes('@microsoftsupport.com');\r\n const isNotE2EMode = !window.navigator.webdriver;\r\n const isProdUrl = window.location.href.toLocaleLowerCase().includes('https://ui.ads.microsoft.com/');\r\n const isReportingUrl = window.location.href.includes('campaign/vnext/reports-v4');\r\n const isWebUICSATSurveyEnabled = window.location.href.includes('isWebUICSATSurveyEnabled=true');\r\n\r\n const qualtricsConditions =\r\n (this.isTestEnv && isReportingUrl && isWebUICSATSurveyEnabled) || // should be test env\r\n (isEnglishUser && // should be English user\r\n isNotInternalUser && // not internal users\r\n isNotSupportUser && // not support team users\r\n isNotE2EMode && // not test mode\r\n isProdUrl && // should be Prod URL\r\n isReportingUrl // should be Reporitng URL\r\n );\r\n\r\n if (!qualtricsConditions) {\r\n if (!isEnglishUser) {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isEnglishUser: ${isEnglishUser}`);\r\n return false;\r\n }\r\n\r\n if (!isNotInternalUser) {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isNotInternalUser: ${isNotInternalUser}`);\r\n return false;\r\n }\r\n\r\n if (!isNotSupportUser) {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isNotSupportUser: ${isNotSupportUser}`);\r\n return false;\r\n }\r\n\r\n if (!isNotE2EMode) {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isNotE2EMode: ${isNotE2EMode}`);\r\n return false;\r\n }\r\n\r\n if (!isProdUrl) {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, qualtricsConditions: ${qualtricsConditions}, isProdUrl: ${isProdUrl}`);\r\n return false;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, Pass. userCreatedDateTime: ${userCreatedDateTime}, surveyPreference30DaysAgo: ${surveyPreference30DaysAgo}`);\r\n\r\n return true;\r\n };\r\n\r\n getSurveyComponent = () => ReportingWebuiUserSurveyView;\r\n\r\n isReportingPipelineEnabled = () => true;\r\n}\r\n","import React from 'react';\r\nimport {\r\n RatingConfigurator,\r\n MultipleSelectionConfigurator,\r\n CommentConfigurator,\r\n EmailConfigurator,\r\n SurveyFactory,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\n\r\nexport const RSALLMSuggestionOverallSurveyConfig = (options) => {\r\n const {\r\n i18n,\r\n } = options;\r\n\r\n return {\r\n featureArea: 'RecommendationRSALLMOverallSurvey',\r\n style: {\r\n root: {\r\n maxWidth: 500,\r\n },\r\n },\r\n others: {\r\n shouldHideInputWhenNotSelected: true,\r\n userActionAnalysisEnabled: true,\r\n combineTextInputToComment: true,\r\n isUserInitiatedSurvey: true,\r\n },\r\n rating: {\r\n isRequired: true,\r\n Type: RatingConfigurator,\r\n key: 'rating',\r\n page: 0,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('How satisfied are you with the recommended headlines and descriptions for your responsive search ads?')),\r\n isVisible: () => true,\r\n options: [\r\n {\r\n key: '5',\r\n text: i18n.getString(_TL_('Very satisfied')),\r\n rating: 1.0,\r\n },\r\n {\r\n key: '4',\r\n text: i18n.getString(_TL_('Moderately satisfied')),\r\n rating: 0.8,\r\n },\r\n {\r\n key: '3',\r\n text: i18n.getString(_TL_('Neutral')),\r\n rating: 0.6,\r\n },\r\n {\r\n key: '2',\r\n text: i18n.getString(_TL_('Moderately dissatisfied ')),\r\n rating: 0.4,\r\n },\r\n {\r\n key: '1',\r\n text: i18n.getString(_TL_('Very dissatisfied')),\r\n rating: 0.2,\r\n },\r\n ],\r\n },\r\n email: {\r\n Type: EmailConfigurator,\r\n key: 'email',\r\n page: 1,\r\n position: 2,\r\n getTitle: () => i18n.getString(_TL_('Can we follow up with you?')),\r\n isVisible: answers => ['3', '2', '1'].includes(answers.rating.selectedOption),\r\n options: [\r\n {\r\n key: 'yes',\r\n text: i18n.getString(_TL_('Yes')),\r\n placeholder: i18n.getString(_TL_('Email address')),\r\n hasInput: true,\r\n },\r\n {\r\n key: 'no',\r\n text: i18n.getString(_TL_('No')),\r\n },\r\n ],\r\n },\r\n questions: [\r\n {\r\n isRequired: true,\r\n Type: MultipleSelectionConfigurator,\r\n key: 'q1',\r\n page: 1,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('Please tell us more about why you\\'re dissatisfied with recommendations. Select all that apply.')),\r\n isVisible: answers => ['3', '2', '1'].includes(answers.rating.selectedOption),\r\n options: [\r\n {\r\n key: 'q1o1',\r\n text: i18n.getString(_TL_('The recommendations are not relevant.')),\r\n },\r\n {\r\n key: 'q1o2',\r\n text: i18n.getString(_TL_('The information isn\\'t accurate or up to date.')),\r\n },\r\n {\r\n key: 'q1o3',\r\n text: i18n.getString(_TL_('I\\'ll need permission from my business or company to use recommended assets.')),\r\n },\r\n {\r\n key: 'q1o4',\r\n text: i18n.getString(_TL_('Others (please elaborate below)')),\r\n placeholder: i18n.getString(_TL_('Please feel free to elaborate')),\r\n hasInput: true,\r\n maxLength: 2000,\r\n },\r\n ],\r\n data: {\r\n },\r\n },\r\n {\r\n Type: CommentConfigurator,\r\n key: 'q2',\r\n page: 1,\r\n position: 1,\r\n getTitle: () => i18n.getString(_TL_('How can we continue to improve?')),\r\n isVisible: answers => ['3', '2', '1'].includes(answers.rating.selectedOption),\r\n maxLength: 2000,\r\n placeholder: i18n.getString(_TL_('Please don\\'t include any confidential or personal information in your response.')),\r\n data: {\r\n },\r\n },\r\n ],\r\n };\r\n};\r\n\r\nexport const FactorySurveyView = props => (\r\n );\r\n","import _ from 'underscore';\r\nimport { BaseSurvey } from '../base-survey';\r\nimport { surveyStatus } from '../survey-status';\r\nimport { FactorySurveyView } from './factory-view';\r\nimport { validateRSALLMTriggerCondition } from '../utils';\r\n\r\nexport class RSALLMSuggestionOverallSurvey extends BaseSurvey {\r\n getSurveyName = () => 'RSALLMSuggestionOverallSurvey';\r\n\r\n getSurveyId = isTestEnv => isTestEnv ? // eslint-disable-line no-confusing-arrow\r\n '6dda6be5-98c4-4508-86c4-6d052e996b74' : 'fa173476-ceb8-4097-8eb7-1b0663c3fdc6';\r\n\r\n getInitializationConfig = () => ({\r\n initGroup: 1,\r\n initStartDate: '2023-02-20',\r\n initEndDate: '2023-05-31',\r\n });\r\n\r\n validateTriggerCondition = () => validateRSALLMTriggerCondition(this);\r\n\r\n getCallCountOfRSASuggestionAPI = () => {\r\n const surveyState = this.SurveyPreferenceService.getSurveyState({\r\n surveyName: this.getSurveyName(),\r\n });\r\n if (!_.isEmpty(surveyState)) {\r\n const { callCountOfRSASuggestionAPI } = surveyState;\r\n return !_.isUndefined(callCountOfRSASuggestionAPI) ? callCountOfRSASuggestionAPI : 0;\r\n }\r\n return 0;\r\n };\r\n\r\n onSurveySubmit = () => {\r\n const newSurveyState = {\r\n status: surveyStatus.SUBMIT,\r\n nextShownDate: this.SurveyPreferenceService.getDaysAfter(90),\r\n callCountOfRSASuggestionAPI: 0,\r\n };\r\n this.SurveyPreferenceService.setSurveyState({\r\n surveyName: this.getSurveyName(),\r\n surveyState: newSurveyState,\r\n });\r\n };\r\n\r\n /*\r\n * Callback called when dismissing a survey, update the survey trigger condition / user governance\r\n */\r\n onSurveyDismiss = () => {\r\n const surveyState = this.SurveyPreferenceService.getSurveyState({\r\n surveyName: this.getSurveyName(),\r\n });\r\n\r\n let newSurveyState = {};\r\n if (!_.isEmpty(surveyState)) {\r\n const { status } = surveyState;\r\n switch (status) {\r\n case surveyStatus.FIRST_DISMISS:\r\n // set new state to second-dismiss and next shown date to 14 days\r\n newSurveyState = {\r\n status: surveyStatus.SECOND_DISMISS,\r\n nextShownDate: this.SurveyPreferenceService.getDaysAfter(14),\r\n };\r\n break;\r\n case surveyStatus.SECOND_DISMISS:\r\n // set new state to third-dismiss and next shown date to 30 days\r\n newSurveyState = {\r\n status: surveyStatus.THIRD_DISMISS,\r\n nextShownDate: this.SurveyPreferenceService.getDaysAfter(30),\r\n };\r\n break;\r\n case surveyStatus.THIRD_DISMISS:\r\n // set new state to fourth-dismiss and next shown date to 180 days\r\n newSurveyState = {\r\n status: surveyStatus.FOURTH_DISMISS,\r\n nextShownDate: this.SurveyPreferenceService.getDaysAfter(180),\r\n };\r\n break;\r\n case surveyStatus.FOURTH_DISMISS:\r\n // set new state to fourth-dismiss and next shown date to 180 days\r\n newSurveyState = {\r\n status: surveyStatus.FOURTH_DISMISS,\r\n nextShownDate: this.SurveyPreferenceService.getDaysAfter(180),\r\n };\r\n break;\r\n case surveyStatus.INIT:\r\n case surveyStatus.SUBMIT:\r\n default:\r\n // new cycle, set new state to first-dismiss and next shown date to 7 days\r\n newSurveyState = {\r\n status: surveyStatus.FIRST_DISMISS,\r\n nextShownDate: this.SurveyPreferenceService.getDaysAfter(7),\r\n };\r\n break;\r\n }\r\n } else {\r\n // new cycle, set new state to first-dismiss and next shown date to 7 days\r\n newSurveyState = {\r\n status: surveyStatus.FIRST_DISMISS,\r\n nextShownDate: this.SurveyPreferenceService.getDaysAfter(7),\r\n };\r\n }\r\n\r\n this.SurveyPreferenceService.setSurveyState({\r\n surveyName: this.getSurveyName(),\r\n surveyState: _.defaults(newSurveyState, { callCountOfRSASuggestionAPI: 0 }),\r\n });\r\n };\r\n\r\n getSurveyComponent = () => FactorySurveyView;\r\n\r\n getSurveyCustomParams = () => window.survey.RSALLMSuggestionCustomParams;\r\n}\r\n","import React from 'react';\r\nimport {\r\n SingleSelectionConfigurator,\r\n SurveyFactory,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\n\r\nexport const RSALLMSuggestionMostWantedSurveyConfig = (options) => {\r\n const {\r\n i18n,\r\n } = options;\r\n\r\n return {\r\n featureArea: 'RecommendationRSALLMMostWantedSurvey',\r\n style: {\r\n root: {\r\n maxWidth: 500,\r\n },\r\n },\r\n others: {\r\n shouldHideInputWhenNotSelected: true,\r\n userActionAnalysisEnabled: true,\r\n combineTextInputToComment: true,\r\n isUserInitiatedSurvey: true,\r\n },\r\n questions: [\r\n {\r\n isRequired: true,\r\n Type: SingleSelectionConfigurator,\r\n key: 'q1',\r\n page: 0,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('We\\'ll prioritize the features of recommending assets for responsive search ads. Please tell us about the features you\\'d like us to include.')),\r\n isVisible: true,\r\n options: [\r\n {\r\n key: 'q1o1',\r\n text: i18n.getString(_TL_('I want to customize headlines or descriptions recommendations.')),\r\n },\r\n {\r\n key: 'q1o2',\r\n text: i18n.getString(_TL_('I want to create responsive search ads in bulk.')),\r\n },\r\n {\r\n key: 'q1o3',\r\n text: i18n.getString(_TL_('I want to customize the recommended asset language.')),\r\n },\r\n {\r\n key: 'q1o4',\r\n text: i18n.getString(_TL_('Other (please elaborate below)')),\r\n placeholder: i18n.getString(_TL_('Please feel free to elaborate')),\r\n hasInput: true,\r\n maxLength: 2000,\r\n },\r\n ],\r\n data: {\r\n },\r\n },\r\n ],\r\n };\r\n};\r\n\r\nexport const FactorySurveyView = props => (\r\n );\r\n","import _ from 'underscore';\r\nimport { BaseSurvey } from '../base-survey';\r\nimport { surveyStatus } from '../survey-status';\r\nimport { FactorySurveyView } from './factory-view';\r\nimport { validateRSALLMTriggerCondition } from '../utils';\r\n\r\nexport class RSALLMSuggestionMostWantedSurvey extends BaseSurvey {\r\n getSurveyName = () => 'RSALLMSuggestionMostWantedSurvey';\r\n\r\n getSurveyId = isTestEnv => isTestEnv ? // eslint-disable-line no-confusing-arrow\r\n 'd68eb6ff-553d-4416-8463-d81dd1006b42' : 'b13b0f87-d533-4915-a6b2-5301c31d0fb1';\r\n\r\n getInitializationConfig = () => ({\r\n initGroup: 1,\r\n initStartDate: '2023-02-20',\r\n initEndDate: '2023-05-31',\r\n });\r\n\r\n validateTriggerCondition = () => validateRSALLMTriggerCondition(this);\r\n\r\n onSurveySubmit = () => {\r\n const newSurveyState = {\r\n status: surveyStatus.SUBMIT,\r\n nextShownDate: this.SurveyPreferenceService.getDaysAfter(90),\r\n allCountOfRSASuggestionAPI: 0,\r\n };\r\n this.SurveyPreferenceService.setSurveyState({\r\n surveyName: this.getSurveyName(),\r\n surveyState: newSurveyState,\r\n });\r\n };\r\n\r\n getCallCountOfRSASuggestionAPI = () => {\r\n const surveyState = this.SurveyPreferenceService.getSurveyState({\r\n surveyName: this.getSurveyName(),\r\n });\r\n if (!_.isEmpty(surveyState)) {\r\n const { callCountOfRSASuggestionAPI } = surveyState;\r\n return !_.isUndefined(callCountOfRSASuggestionAPI) ? callCountOfRSASuggestionAPI : 0;\r\n }\r\n return 0;\r\n };\r\n\r\n /*\r\n * Callback called when dismissing a survey, update the survey trigger condition / user governance\r\n */\r\n onSurveyDismiss = () => {\r\n const surveyState = this.SurveyPreferenceService.getSurveyState({\r\n surveyName: this.getSurveyName(),\r\n });\r\n\r\n let newSurveyState = {};\r\n if (!_.isEmpty(surveyState)) {\r\n const { status } = surveyState;\r\n switch (status) {\r\n case surveyStatus.FIRST_DISMISS:\r\n // set new state to second-dismiss and next shown date to 14 days\r\n newSurveyState = {\r\n status: surveyStatus.SECOND_DISMISS,\r\n nextShownDate: this.SurveyPreferenceService.getDaysAfter(14),\r\n };\r\n break;\r\n case surveyStatus.SECOND_DISMISS:\r\n // set new state to third-dismiss and next shown date to 30 days\r\n newSurveyState = {\r\n status: surveyStatus.THIRD_DISMISS,\r\n nextShownDate: this.SurveyPreferenceService.getDaysAfter(30),\r\n };\r\n break;\r\n case surveyStatus.THIRD_DISMISS:\r\n // set new state to fourth-dismiss and next shown date to 180 days\r\n newSurveyState = {\r\n status: surveyStatus.FOURTH_DISMISS,\r\n nextShownDate: this.SurveyPreferenceService.getDaysAfter(180),\r\n };\r\n break;\r\n case surveyStatus.FOURTH_DISMISS:\r\n // set new state to fourth-dismiss and next shown date to 180 days\r\n newSurveyState = {\r\n status: surveyStatus.FOURTH_DISMISS,\r\n nextShownDate: this.SurveyPreferenceService.getDaysAfter(180),\r\n };\r\n break;\r\n case surveyStatus.INIT:\r\n case surveyStatus.SUBMIT:\r\n default:\r\n // new cycle, set new state to first-dismiss and next shown date to 7 days\r\n newSurveyState = {\r\n status: surveyStatus.FIRST_DISMISS,\r\n nextShownDate: this.SurveyPreferenceService.getDaysAfter(7),\r\n };\r\n break;\r\n }\r\n } else {\r\n // new cycle, set new state to first-dismiss and next shown date to 7 days\r\n newSurveyState = {\r\n status: surveyStatus.FIRST_DISMISS,\r\n nextShownDate: this.SurveyPreferenceService.getDaysAfter(7),\r\n };\r\n }\r\n\r\n this.SurveyPreferenceService.setSurveyState({\r\n surveyName: this.getSurveyName(),\r\n surveyState: _.defaults(newSurveyState, { callCountOfRSASuggestionAPI: 0 }),\r\n });\r\n };\r\n\r\n getSurveyComponent = () => FactorySurveyView;\r\n\r\n getSurveyCustomParams = () => window.survey.RSALLMSuggestionCustomParams;\r\n}\r\n\r\n","import {\r\n RatingConfigurator,\r\n CommentConfigurator,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\n\r\nexport const CampaignOnboardingSurveyConfig = (options) => {\r\n const { i18n } = options;\r\n\r\n return {\r\n featureArea: 'CampaignOnboardingSurvey',\r\n style: {\r\n root: {\r\n maxWidth: 600,\r\n },\r\n },\r\n others: {\r\n isGlobalModalStyleEnabled: true,\r\n isThankYouPageEnabled: false,\r\n isUserInitiatedSurvey: true,\r\n isInPageMiddle: true,\r\n isModeless: false,\r\n isBlocking: true,\r\n },\r\n rating: {\r\n isRequired: true,\r\n Type: RatingConfigurator,\r\n key: 'rating',\r\n page: 0,\r\n position: 0,\r\n getTitle: () =>\r\n // option to text\r\n i18n.getString(_TL_('Why don\\'t you want to use the new campaign creation experience?')),\r\n isVisible: () => true,\r\n options: [\r\n {\r\n key: '1',\r\n text: i18n.getString(_TL_('I can\\'t find what I need.')),\r\n rating: 0.3,\r\n },\r\n {\r\n key: '2',\r\n text: i18n.getString(_TL_('I want more time to adapt to the new layout.')),\r\n rating: 0.6,\r\n },\r\n {\r\n key: '3',\r\n text: i18n.getString(_TL_('Other')),\r\n rating: 1.0,\r\n },\r\n ],\r\n data: {\r\n },\r\n },\r\n questions: [\r\n {\r\n isRequired: true,\r\n Type: CommentConfigurator,\r\n key: 'q1',\r\n page: 0,\r\n position: 1,\r\n getTitle: () => i18n.getString(_TL_('Tell us more')),\r\n isVisible: true,\r\n maxLength: 1024,\r\n data: {\r\n },\r\n },\r\n ],\r\n };\r\n};\r\n","import React from 'react';\r\nimport { SurveyFactory } from '@bingads-webui-campaign-react/survey-factory-tools';\r\nimport { CampaignOnboardingSurveyConfig } from './factory-view';\r\n\r\nexport const CampaignOnboardingSurveyView = props => (\r\n \r\n);\r\n","import { result } from 'underscore';\r\nimport { isNewOnboardingVisibleStore, ONBOARDING_PREFERENCE } from '@bingads-webui-campaign-react/onboarding-toggle';\r\nimport { BaseSurvey } from '../base-survey';\r\nimport { CampaignOnboardingSurveyView } from './view';\r\n\r\nexport class CampaignOnboardingSurvey extends BaseSurvey {\r\n getSurveyName = () => 'CampaignOnboardingSurvey';\r\n\r\n getSurveyId = isTestEnv => (isTestEnv ? '5a4a0bae-22f4-446e-bf18-4045ecabf835' : '23e8efd4-39cf-4a81-a261-cd90db48e714');\r\n\r\n validateTriggerCondition = () => result(window, ['survey', 'switchBackToOldCampaignOnboarding']);\r\n\r\n onSurveySubmit = () => {\r\n window.survey.onSwitchBackToOldSurveySubmit = true;\r\n\r\n this.SurveyPreferenceService.PreferenceService.setAtUserLevel({\r\n Name: ONBOARDING_PREFERENCE,\r\n Data: false,\r\n });\r\n\r\n isNewOnboardingVisibleStore.setState({\r\n isNewOnboardingVisible: false,\r\n });\r\n\r\n window.survey.switchBackToOldCampaignOnboarding = false;\r\n };\r\n\r\n onSurveyDismiss = () => {\r\n window.survey.onSwitchBackToOldSurveyDismiss = true;\r\n window.survey.switchBackToOldCampaignOnboarding = false;\r\n };\r\n\r\n getSurveyComponent = () => CampaignOnboardingSurveyView;\r\n}\r\n","import {\r\n SingleSelectionConfigurator,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\n\r\nexport const TransparentImageAnnotationSurveyConfig = (options) => {\r\n const { i18n } = options;\r\n\r\n return {\r\n featureArea: 'TransparentImageAnnotationSurvey',\r\n style: {\r\n root: {\r\n minWidth: 600,\r\n maxWidth: 600,\r\n },\r\n },\r\n others: {\r\n isUserInitiatedSurvey: true,\r\n },\r\n questions: [\r\n {\r\n isRequired: true,\r\n Type: SingleSelectionConfigurator,\r\n key: 'q1',\r\n page: 0,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('Why do you want to delete the image?')),\r\n isVisible: () => true,\r\n options: [\r\n {\r\n key: 'q1o1',\r\n text: i18n.getString(_TL_('The image isn\\'t relevant to my ad.')),\r\n },\r\n {\r\n key: 'q1o2',\r\n text: i18n.getString(_TL_('The image contains sensitive or inappropriate content.')),\r\n },\r\n {\r\n key: 'q1o3',\r\n text: i18n.getString(_TL_('The image is not specific to my brand.')),\r\n },\r\n {\r\n key: 'q1o4',\r\n text: i18n.getString(_TL_('The image is low quality.')),\r\n },\r\n {\r\n key: 'q1o5',\r\n text: i18n.getString(_TL_('I don\\'t want to add images to my ad.')),\r\n },\r\n {\r\n key: 'q1o6',\r\n hasInput: true,\r\n text: i18n.getString(_TL_('Other (please elaborate below).')),\r\n },\r\n ],\r\n data: {\r\n },\r\n },\r\n ],\r\n };\r\n};\r\n","import React from 'react';\r\nimport {\r\n SurveyFactory,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\nimport { TransparentImageAnnotationSurveyConfig } from './factory-view';\r\n\r\nexport const TransparentImageAnnotationSurveyView = props => (\r\n \r\n);\r\n","import _ from 'underscore';\r\nimport { BaseSurvey } from '../base-survey';\r\nimport { TransparentImageAnnotationSurveyView } from './view';\r\n\r\nconst surveyTriggerName = 'TransparentImageAnnotationSurveyTrigger';\r\nconst surveyCustomParamsName = 'TransparentImageAnnotationCustomParams';\r\n\r\nexport class TransparentImageAnnotationSurvey extends BaseSurvey {\r\n getSurveyName = () => 'TransparentImageAnnotationSurvey';\r\n\r\n getSurveyId = isTestEnv => (isTestEnv ? 'eedaadb1-f55b-40c7-af92-0fddb9ab6ebf' : '4a17eef2-85be-49b9-8be6-b6f87916a9c0');\r\n\r\n validateTriggerCondition = () => {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, Start`);\r\n\r\n const isPilotEnabled = _.result(this.serverContext, ['Permissions', 'IsTransparentImageAnnotationEnabled']);\r\n\r\n if (!isPilotEnabled) {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, isPilotEnabled: ${isPilotEnabled}`);\r\n return false;\r\n }\r\n\r\n const isSurveyTriggerValid = _.result(window, ['survey', surveyTriggerName]);\r\n\r\n if (!isSurveyTriggerValid) {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, isSurveyTriggerValid: ${isSurveyTriggerValid}`);\r\n return false;\r\n }\r\n\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, Pass`);\r\n return true;\r\n };\r\n\r\n onSurveySubmit() {\r\n delete window.survey[surveyTriggerName];\r\n delete window.survey[surveyCustomParamsName];\r\n }\r\n\r\n onSurveyDismiss() {\r\n delete window.survey[surveyTriggerName];\r\n delete window.survey[surveyCustomParamsName];\r\n }\r\n\r\n getSurveyComponent = () => TransparentImageAnnotationSurveyView;\r\n\r\n getSurveyCustomParams = () => window.survey[surveyCustomParamsName];\r\n}\r\n","import {\r\n RatingConfigurator,\r\n EmailConfigurator,\r\n CommentConfigurator,\r\n SingleSelectionConfigurator,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\n\r\nexport const BudgetCenterOverallSatisfactionSurveyConfig = (options) => {\r\n const { i18n } = options;\r\n\r\n return {\r\n featureArea: 'BudgetCenterOverallSatisfactionSurvey',\r\n style: {\r\n root: {\r\n minWidth: 600,\r\n maxWidth: 600,\r\n },\r\n },\r\n others: {\r\n shouldHideInputWhenNotSelected: true,\r\n },\r\n rating: {\r\n isRequired: true,\r\n Type: RatingConfigurator,\r\n key: 'rating',\r\n page: 0,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('How satisfied are you with Budget Center overall?')),\r\n isVisible: () => true,\r\n options: [\r\n {\r\n key: '5',\r\n text: i18n.getString(_TL_('Very satisfied')),\r\n rating: 1.0,\r\n },\r\n {\r\n key: '4',\r\n text: i18n.getString(_TL_('Moderately satisfied')),\r\n rating: 0.8,\r\n },\r\n {\r\n key: '3',\r\n text: i18n.getString(_TL_('Neutral')),\r\n rating: 0.6,\r\n },\r\n {\r\n key: '2',\r\n text: i18n.getString(_TL_('Moderately dissatisfied')),\r\n rating: 0.4,\r\n },\r\n {\r\n key: '1',\r\n text: i18n.getString(_TL_('Very dissatisfied')),\r\n rating: 0.2,\r\n },\r\n ],\r\n },\r\n questions: [\r\n {\r\n isRequired: true,\r\n Type: SingleSelectionConfigurator,\r\n key: 'q1',\r\n page: 1,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('What feature or aspect of Budget Center do you find the most valuable?')),\r\n isVisible: () => true,\r\n options: [\r\n {\r\n key: 'q1o1',\r\n text: i18n.getString(_TL_('Budget settings')),\r\n },\r\n {\r\n key: 'q1o2',\r\n text: i18n.getString(_TL_('Constraints and alerts')),\r\n },\r\n {\r\n key: 'q1o3',\r\n text: i18n.getString(_TL_('Budget changes and corresponding performance')),\r\n },\r\n {\r\n key: 'q1o4',\r\n text: i18n.getString(_TL_('Spending trend')),\r\n },\r\n {\r\n key: 'q1o5',\r\n text: i18n.getString(_TL_('Recommendations')),\r\n },\r\n {\r\n key: 'q1o6',\r\n text: i18n.getString(_TL_('Others - please specify')),\r\n placeholder: i18n.getString(_TL_('Please feel free to elaborate')),\r\n hasInput: true,\r\n maxLength: 1024,\r\n },\r\n ],\r\n data: {\r\n },\r\n },\r\n {\r\n isRequired: false,\r\n Type: CommentConfigurator,\r\n key: 'q2',\r\n page: 2,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('Do you have any suggestions for improving Budget Center?')),\r\n isVisible: () => true,\r\n maxLength: 1024,\r\n data: {\r\n },\r\n },\r\n ],\r\n email: {\r\n isRequired: true,\r\n Type: EmailConfigurator,\r\n key: 'email',\r\n page: 2,\r\n position: 1,\r\n getTitle: () => i18n.getString(_TL_('Can we follow up with you about your responses?')),\r\n isVisible: () => true,\r\n options: [\r\n {\r\n key: 'yes',\r\n text: i18n.getString(_TL_('Yes - specify the contact email below')),\r\n placeholder: i18n.getString(_TL_('Enter your email')),\r\n hasInput: true,\r\n },\r\n {\r\n key: 'no',\r\n text: i18n.getString(_TL_('No')),\r\n },\r\n ],\r\n },\r\n };\r\n};\r\n","import React from 'react';\r\nimport {\r\n SurveyFactory,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\nimport { BudgetCenterOverallSatisfactionSurveyConfig } from './factory-view';\r\n\r\nexport const BudgetCenterOverallSatisfactionSurveyView = props => (\r\n \r\n);\r\n","import _ from 'underscore';\r\nimport { BaseSurvey } from '../base-survey';\r\nimport { BudgetCenterOverallSatisfactionSurveyView } from './view';\r\nimport { BudgetCenterUrl } from '../constants';\r\n\r\nconst userPrefName = 'BudgetCenterPageLastVisitDate';\r\n\r\nexport class BudgetCenterOverallSatisfactionSurvey extends BaseSurvey {\r\n getSurveyName = () => 'BudgetCenterOverallSatisfactionSurvey';\r\n\r\n getSurveyId = isTestEnv => (isTestEnv ? '43d24b1d-d6b8-46ed-8ec7-901c7cbd147b' : 'df7e1834-e2eb-4675-aff2-9d01d60ee2d0');\r\n\r\n validateTriggerCondition = () => {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, Start`);\r\n const isPiloted = _.get(this.serverContext, ['DynamicPermissions', 'SpendSurveyBudgetCenterPageOverall']);\r\n const isVisitBudgetCenterPage = _.get(window, ['survey', 'VisitBudgetCenter']);\r\n const isBudgetCenterUrl = window.location.pathname.startsWith(BudgetCenterUrl);\r\n const lastVisitDateString = _.get(this.SurveyPreferenceService.PreferenceService.findByNameAtUserLevel(userPrefName), 'Data');\r\n\r\n const shouldTrigger = !!(isPiloted && isVisitBudgetCenterPage && lastVisitDateString && isBudgetCenterUrl);\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, shouldTrigger: ${shouldTrigger}, isPiloted: ${isPiloted}, isVisitBudgetCenterPage: ${isVisitBudgetCenterPage}, isBudgetCenterUrl: ${isBudgetCenterUrl}, lastVisitDateString: ${lastVisitDateString}`);\r\n\r\n window.survey.VisitBudgetCenter = false;\r\n return shouldTrigger;\r\n };\r\n\r\n getSurveyComponent = () => BudgetCenterOverallSatisfactionSurveyView;\r\n}\r\n","export const BudgetCenterUrl = '/campaign/vnext/budgetcenter';\r\n","import {\r\n EmailConfigurator,\r\n SingleSelectionConfigurator,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\n\r\nexport const BudgetCenterOneTimeUserSurveyConfig = (options) => {\r\n const { i18n } = options;\r\n\r\n return {\r\n featureArea: 'BudgetCenterOneTimeUserSurvey',\r\n style: {\r\n root: {\r\n minWidth: 600,\r\n maxWidth: 600,\r\n },\r\n },\r\n others: {\r\n shouldHideInputWhenNotSelected: true,\r\n },\r\n questions: [\r\n {\r\n isRequired: true,\r\n Type: SingleSelectionConfigurator,\r\n key: 'q1',\r\n page: 0,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('Why didn’t you return to Budget Center after your first visit? Please select one.')),\r\n isVisible: () => true,\r\n options: [\r\n {\r\n key: 'q1o1',\r\n text: i18n.getString(_TL_('I didn\\'t find the information I was looking for.')),\r\n },\r\n {\r\n key: 'q1o2',\r\n text: i18n.getString(_TL_('The page was difficult to navigate.')),\r\n },\r\n {\r\n key: 'q1o3',\r\n text: i18n.getString(_TL_('The features weren’t useful.')),\r\n },\r\n {\r\n key: 'q1o4',\r\n text: i18n.getString(_TL_('I prefer to use other tools for budget and spend management.')),\r\n },\r\n {\r\n key: 'q1o5',\r\n text: i18n.getString(_TL_('Others - please specify')),\r\n placeholder: i18n.getString(_TL_('Please feel free to elaborate')),\r\n hasInput: true,\r\n maxLength: 1024,\r\n },\r\n ],\r\n data: {\r\n },\r\n },\r\n {\r\n isRequired: true,\r\n Type: SingleSelectionConfigurator,\r\n key: 'q2',\r\n page: 1,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('What would encourage you to use Budget Center more frequently?')),\r\n isVisible: () => true,\r\n options: [\r\n {\r\n key: 'q2o1',\r\n text: i18n.getString(_TL_('Clearer navigation and ease of use')),\r\n },\r\n {\r\n key: 'q2o2',\r\n text: i18n.getString(_TL_('More relevant and useful features, such as forecasting')),\r\n },\r\n {\r\n key: 'q2o3',\r\n text: i18n.getString(_TL_('More detailed information and instructions')),\r\n },\r\n {\r\n key: 'q2o4',\r\n text: i18n.getString(_TL_('Others - please specify')),\r\n placeholder: i18n.getString(_TL_('Please feel free to elaborate')),\r\n hasInput: true,\r\n maxLength: 1024,\r\n },\r\n ],\r\n data: {\r\n },\r\n },\r\n ],\r\n email: {\r\n isRequired: true,\r\n Type: EmailConfigurator,\r\n key: 'email',\r\n page: 1,\r\n position: 1,\r\n getTitle: () => i18n.getString(_TL_('Can we follow up with you about your responses?')),\r\n isVisible: () => true,\r\n options: [\r\n {\r\n key: 'yes',\r\n text: i18n.getString(_TL_('Yes - specify the contact email below')),\r\n placeholder: i18n.getString(_TL_('Enter your email')),\r\n hasInput: true,\r\n },\r\n {\r\n key: 'no',\r\n text: i18n.getString(_TL_('No')),\r\n },\r\n ],\r\n },\r\n };\r\n};\r\n","import React from 'react';\r\nimport {\r\n SurveyFactory,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\nimport { BudgetCenterOneTimeUserSurveyConfig } from './factory-view';\r\n\r\nexport const BudgetCenteOneTimeUserSurveyView = props => (\r\n \r\n);\r\n","import _ from 'underscore';\r\nimport { BaseSurvey } from '../base-survey';\r\nimport { BudgetCenteOneTimeUserSurveyView } from './view';\r\n\r\nconst userPrefName = 'BudgetCenterPageLastVisitDate';\r\n\r\nexport class BudgetCenterOneTimeUserSurvey extends BaseSurvey {\r\n getSurveyName = () => 'BudgetCenterOneTimeUserSurvey';\r\n\r\n getSurveyId = isTestEnv => (isTestEnv ? '2da1d764-6e4d-4328-9e65-1790deee62b7' : '97e79400-390e-45d3-8a88-d6a1f8e04e41');\r\n\r\n validateTriggerCondition = () => {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, Start`);\r\n const isPiloted = _.get(this.serverContext, ['DynamicPermissions', 'SpendSurveyBudgetCenterOneTimeUser'], false);\r\n const lastVisitDateString = _.get(this.SurveyPreferenceService.PreferenceService.findByNameAtUserLevel(userPrefName), 'Data');\r\n const isEvaluatorEnabled = _.get(this.serverContext, ['DynamicPermissions', 'BudgetCenterOneTimeUser'], false);\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, isPiloted: ${isPiloted}, lastVisitDateString: ${lastVisitDateString}, isEvaluatorEnabled: ${isEvaluatorEnabled}`);\r\n\r\n if (!isPiloted) {\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, shouldTrigger: false, isPiloted: ${isPiloted}`);\r\n return false;\r\n }\r\n\r\n if (!_.isEmpty(lastVisitDateString)) {\r\n const lastVisitDate = new Date(lastVisitDateString);\r\n const Days30Ago = this.SurveyPreferenceService.getDaysAgo(30);\r\n const isUserActiveOneMonth = lastVisitDate >= Days30Ago;\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, shouldTrigger: ${!isUserActiveOneMonth}, lastVisitDateString: ${lastVisitDateString}, isUserActiveOneMonth: ${isUserActiveOneMonth}`);\r\n return !isUserActiveOneMonth;\r\n }\r\n\r\n this.logActivity(`validateTriggerCondition | survey: ${this.getSurveyName()}, shouldTrigger: ${isEvaluatorEnabled}, isEvaluatorEnabled: ${isEvaluatorEnabled}`);\r\n return isEvaluatorEnabled;\r\n };\r\n\r\n getSurveyComponent = () => BudgetCenteOneTimeUserSurveyView;\r\n}\r\n","import {\r\n RatingConfigurator,\r\n MultipleSelectionConfigurator,\r\n CommentConfigurator,\r\n EmailConfigurator,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\n\r\nexport const AdsStudioAppSurveyConfig = (options) => {\r\n const { i18n } = options;\r\n\r\n return {\r\n featureArea: 'AdsStudioAppSurvey',\r\n style: {\r\n root: {\r\n maxWidth: 600,\r\n },\r\n },\r\n others: {\r\n },\r\n rating: {\r\n isRequired: true,\r\n Type: RatingConfigurator,\r\n key: 'rating',\r\n page: 0,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('How satisfied are you with Microsoft Advertising\\'s Ads Studio?')),\r\n isVisible: () => true,\r\n options: [\r\n {\r\n key: '5',\r\n text: i18n.getString(_TL_('Very satisfied')),\r\n rating: 1.0,\r\n },\r\n {\r\n key: '4',\r\n text: i18n.getString(_TL_('Moderately satisfied')),\r\n rating: 0.8,\r\n },\r\n {\r\n key: '3',\r\n text: i18n.getString(_TL_('Neutral')),\r\n rating: 0.6,\r\n },\r\n {\r\n key: '2',\r\n text: i18n.getString(_TL_('Moderately dissatisfied')),\r\n rating: 0.4,\r\n },\r\n {\r\n key: '1',\r\n text: i18n.getString(_TL_('Very dissatisfied')),\r\n rating: 0.2,\r\n },\r\n ],\r\n },\r\n email: {\r\n Type: EmailConfigurator,\r\n key: 'email',\r\n page: 1,\r\n position: 2,\r\n getTitle: () => i18n.getString(_TL_('Can we follow up with you about your responses?')),\r\n isVisible: answers => ['2', '1'].includes(answers.rating.selectedOption),\r\n options: [\r\n {\r\n key: 'yes',\r\n text: i18n.getString(_TL_('Yes - specify the contact email below')),\r\n placeholder: i18n.getString(_TL_('Enter your email')),\r\n hasInput: true,\r\n },\r\n {\r\n key: 'no',\r\n text: i18n.getString(_TL_('No')),\r\n },\r\n ],\r\n },\r\n questions: [\r\n {\r\n isRequired: true,\r\n Type: MultipleSelectionConfigurator,\r\n key: 'q1',\r\n page: 0,\r\n position: 1,\r\n getTitle: () => i18n.getString(_TL_('Please tell us more about your satisfactory experience with Ads Studio. Select all that apply.')),\r\n isVisible: () => true,\r\n options: [\r\n {\r\n key: 'q1o1',\r\n text: i18n.getString(_TL_('The interface is easy to navigate.')),\r\n },\r\n {\r\n key: 'q1o2',\r\n text: i18n.getString(_TL_('The features and tools are easy to use.')),\r\n },\r\n {\r\n key: 'q1o3',\r\n text: i18n.getString(_TL_('Editing and managing assets is more efficient.')),\r\n },\r\n {\r\n key: 'q1o4',\r\n text: i18n.getString(_TL_('Searching for and filtering assets is more effective.')),\r\n },\r\n {\r\n key: 'q1o5',\r\n text: i18n.getString(_TL_('The loading speed is fast.')),\r\n },\r\n {\r\n key: 'q1o6',\r\n text: i18n.getString(_TL_('I prefer the Asset Library experience over Ads Studio.')),\r\n },\r\n {\r\n key: 'q1o7',\r\n text: i18n.getString(_TL_('Other (please elaborate below).')),\r\n },\r\n ],\r\n data: {\r\n },\r\n },\r\n {\r\n isRequired: true,\r\n Type: MultipleSelectionConfigurator,\r\n key: 'q2',\r\n page: 1,\r\n position: 0,\r\n getTitle: () => i18n.getString(_TL_('Please tell us more about why you\\'re dissatisfied with Ads Studio. Select all that apply.')),\r\n isVisible: answers => ['2', '1'].includes(answers.rating.selectedOption),\r\n options: [\r\n {\r\n key: 'q1o1',\r\n text: i18n.getString(_TL_('Uploading assets could be improved.')),\r\n },\r\n {\r\n key: 'q1o2',\r\n text: i18n.getString(_TL_('Editing assets could be improved.')),\r\n },\r\n {\r\n key: 'q1o3',\r\n text: i18n.getString(_TL_('I want more asset types.')),\r\n },\r\n {\r\n key: 'q1o4',\r\n text: i18n.getString(_TL_('The navigation and interface could be improved.')),\r\n },\r\n {\r\n key: 'q1o5',\r\n text: i18n.getString(_TL_('Searching for and filtering assets could be improved.')),\r\n },\r\n {\r\n key: 'q1o6',\r\n text: i18n.getString(_TL_('Ads Studio takes too long to load.')),\r\n },\r\n {\r\n key: 'q1o7',\r\n text: i18n.getString(_TL_('Other (please elaborate below).')),\r\n },\r\n ],\r\n data: {\r\n },\r\n },\r\n {\r\n isRequired: false,\r\n Type: CommentConfigurator,\r\n key: 'q3',\r\n page: 1,\r\n position: 1,\r\n getTitle: () => i18n.getString(_TL_('How can we continue to improve?')),\r\n isVisible: answers => ['2', '1'].includes(answers.rating.selectedOption),\r\n maxLength: 1024,\r\n data: {\r\n },\r\n },\r\n ],\r\n };\r\n};\r\n","import React from 'react';\r\nimport {\r\n SurveyFactory,\r\n} from '@bingads-webui-campaign-react/survey-factory-tools';\r\nimport { AdsStudioAppSurveyConfig } from './factory-view';\r\n\r\nexport const AdsStudioAppSurveyView = props => (\r\n \r\n);\r\n","import { BaseSurvey } from '../base-survey';\r\nimport { AdsStudioAppSurveyView } from './view';\r\nimport { validateAdsStudioTriggerCondition } from '../utils';\r\n\r\nexport class AdsStudioAppSurvey extends BaseSurvey {\r\n getSurveyName = () => 'Ad Studio Survey';\r\n\r\n getSurveyId = isTestEnv => (isTestEnv ? '97d6a9e7-c207-48dc-b484-40598c277598' : '267818ed-0fbc-4998-8ef1-3045fd1e867b');\r\n\r\n validateTriggerCondition = () => validateAdsStudioTriggerCondition(this, 'AdsStudioAppSurveyTrigger');\r\n\r\n onSurveySubmit() {\r\n window.survey.AdsStudioAppSurveyTrigger = false;\r\n\r\n super.onSurveySubmit();\r\n }\r\n\r\n onSurveyDismiss() {\r\n window.survey.AdsStudioAppSurveyTrigger = false;\r\n\r\n super.onSurveyDismiss();\r\n }\r\n\r\n getSurveyComponent = () => AdsStudioAppSurveyView;\r\n}\r\n","import { filter, map } from 'underscore';\r\nimport {\r\n BaseSurvey,\r\n WebuiUserSurvey,\r\n EscWebuiUserSurvey,\r\n EscWebuiUserPauseCampaignSurvey,\r\n EscWebuiAutomatedAdDeletionSurvey,\r\n EscWebuiCampaignFeedbackSurvey,\r\n AdInsightRecommendationSurvey,\r\n AdInsightRecommendationMccSurvey,\r\n EscWebuiUserCancelSignupSurvey,\r\n McmWebuiOptOutFeedbackSurvey,\r\n MCMMandatoryOptOutSurvey,\r\n AssetLibraryAIGCMVPSurvey,\r\n AssetLibraryAppSurvey,\r\n AssetLibraryPickerSurvey,\r\n CopilotAssetRecommendationSatisfactionSurvey,\r\n ReportingWebuiUserSurvey,\r\n RSALLMSuggestionOverallSurvey,\r\n RSALLMSuggestionMostWantedSurvey,\r\n CampaignOnboardingSurvey,\r\n TransparentImageAnnotationSurvey,\r\n BudgetCenterOverallSatisfactionSurvey,\r\n BudgetCenterOneTimeUserSurvey,\r\n AdsStudioAppSurvey,\r\n} from '@bingads-webui-campaign-react/survey-core';\r\n\r\n// register the surveys\r\nconst webuiSurveyList = [\r\n BudgetCenterOneTimeUserSurvey, // The lowest priority\r\n WebuiUserSurvey,\r\n EscWebuiUserSurvey,\r\n EscWebuiUserPauseCampaignSurvey,\r\n EscWebuiAutomatedAdDeletionSurvey,\r\n EscWebuiCampaignFeedbackSurvey,\r\n AdInsightRecommendationSurvey,\r\n AdInsightRecommendationMccSurvey,\r\n EscWebuiUserCancelSignupSurvey,\r\n McmWebuiOptOutFeedbackSurvey,\r\n MCMMandatoryOptOutSurvey,\r\n AssetLibraryAIGCMVPSurvey,\r\n AssetLibraryAppSurvey,\r\n AssetLibraryPickerSurvey,\r\n CopilotAssetRecommendationSatisfactionSurvey,\r\n ReportingWebuiUserSurvey,\r\n RSALLMSuggestionOverallSurvey,\r\n RSALLMSuggestionMostWantedSurvey,\r\n CampaignOnboardingSurvey,\r\n TransparentImageAnnotationSurvey,\r\n BudgetCenterOverallSatisfactionSurvey,\r\n AdsStudioAppSurvey,\r\n];\r\n\r\nconst getImplementedSurveyList = surveyList =>\r\n filter(surveyList, survey => survey.prototype instanceof BaseSurvey);\r\n\r\nexport const getWebuiSurveyList = (props) => {\r\n const implementedSurveyList = getImplementedSurveyList(webuiSurveyList);\r\n return map(implementedSurveyList, Survey => new Survey(props));\r\n};\r\n","import $ from 'jquery';\r\nimport { stringifySync } from '@bingads-webui/safe-json';\r\nimport { OCVDataService } from '@bingads-webui-react/feedback-panel';\r\n\r\nexport class SurveyDataSource extends OCVDataService {\r\n // eslint-disable-next-line no-useless-constructor\r\n constructor() {\r\n super();\r\n }\r\n\r\n checkCompliance() {\r\n return true;\r\n }\r\n\r\n getScope() {\r\n const searchParams = new URLSearchParams(window.location.search);\r\n const cid = searchParams.get('cid');\r\n const aid = searchParams.get('aid') || 0;\r\n const uid = searchParams.get('uid');\r\n\r\n return {\r\n cid,\r\n aid,\r\n uid,\r\n };\r\n }\r\n\r\n sendEventToReportingPipeline({ // eslint-disable-line consistent-return\r\n surveyName,\r\n feedback,\r\n telemetry,\r\n clientFeedbackId,\r\n serverContext,\r\n Interface,\r\n Product,\r\n logActivity,\r\n }) {\r\n const { cid, aid } = this.getScope();\r\n\r\n const option = {\r\n contentType: 'application/json',\r\n type: 'POST',\r\n data: stringifySync({\r\n data: {\r\n EventName: 'CSATSurvey',\r\n UniqueId: clientFeedbackId,\r\n EventValue: stringifySync({\r\n Rating: feedback.rating * 5, // convert to 5 star rating\r\n AID: aid,\r\n CID: cid,\r\n Interface,\r\n Product,\r\n SubProduct: null,\r\n Context: {\r\n DeviceType: telemetry.deviceType,\r\n FeatureArea: telemetry.featureArea,\r\n },\r\n }),\r\n },\r\n }),\r\n url: `${serverContext.ServicesEndpoints.CampaignAPI}Campaign/V2/Customers(${cid})/Accounts(${aid})/Default.PostABTestingEventLog`,\r\n success: /* istanbul ignore next */ () => {\r\n logActivity(`SurveyDataSource | survey: ${surveyName}, action: send CSAT reporting pipeline success`);\r\n },\r\n error: /* istanbul ignore next */ () => {\r\n logActivity(`SurveyDataSource | survey: ${surveyName}, action: send CSAT reporting pipeline failed`);\r\n },\r\n };\r\n\r\n return $.ajax(option);\r\n }\r\n}\r\n","import { isEmpty, extend, noop, chain } from 'underscore';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { stringifySync } from '@bingads-webui/safe-json';\r\nimport { SurveyDataSource } from './survey-data-source';\r\n\r\nconst defaultTestAppId = 50025;\r\nconst defaultAppId = 2482;\r\n\r\nexport function SurveyDataService({\r\n isTestEnv = true,\r\n surveyId,\r\n surveyName,\r\n Interface,\r\n Product,\r\n customParams,\r\n dataSource,\r\n serverContext,\r\n tokenInfo,\r\n isReportingPipelineEnabled = false,\r\n logActivity = noop,\r\n sendSourcePageURI = true,\r\n}) {\r\n const appId = isTestEnv ? defaultTestAppId : defaultAppId;\r\n\r\n if (isEmpty(dataSource)) {\r\n dataSource = new SurveyDataSource(); // eslint-disable-line no-param-reassign\r\n }\r\n\r\n const { cid, aid, uid } = dataSource.getScope();\r\n\r\n const defaultFeedback = {\r\n type: 'Survey',\r\n manifestType: 'Fps',\r\n survey: {\r\n surveyId,\r\n },\r\n comment: '',\r\n rating: 1,\r\n email: '',\r\n web: {\r\n sourcePageURI: sendSourcePageURI ? chain(window).result('location').result('href').value() || '' : '',\r\n },\r\n application: {\r\n appData: stringifySync({\r\n ...customParams,\r\n }),\r\n },\r\n complianceChecks: {\r\n authenticationType: 'MSA',\r\n ageGroup: 'Adult',\r\n },\r\n sdkVersion: 'AdsWeb 1.0.0',\r\n };\r\n\r\n const defaultTelemetry = {\r\n tenantId: tokenInfo ? String(tokenInfo.TenantId) : null, // MSA/AAD tenant Id\r\n loggableUserId: tokenInfo ? String(tokenInfo.UserId) : null, // MSA/AAD user Id\r\n featureArea: '',\r\n deviceType: '',\r\n processSessionId: chain(serverContext).result('Omniture').result('SessionId').value() || undefined,\r\n };\r\n\r\n return {\r\n sendFeedback: ({\r\n feedback,\r\n telemetry,\r\n extendedManifestData,\r\n onFinishSendRequest = noop,\r\n }) => {\r\n const clientFeedbackId = uuidv4();\r\n\r\n let surveySpecificData = {\r\n cid,\r\n aid,\r\n uid,\r\n };\r\n\r\n if (extendedManifestData != null) {\r\n surveySpecificData = {\r\n ...(extendedManifestData.surveySpecificData || {}),\r\n ...surveySpecificData,\r\n };\r\n }\r\n\r\n defaultFeedback.application.extendedManifestData = stringifySync({\r\n surveySpecificData: stringifySync(surveySpecificData),\r\n });\r\n\r\n const feedbackWithDefaults = extend(defaultFeedback, feedback);\r\n\r\n const telemetryWithDefaults = extend(defaultTelemetry, telemetry);\r\n\r\n if (!isTestEnv && isReportingPipelineEnabled) {\r\n const originalCallback = onFinishSendRequest;\r\n onFinishSendRequest = (...args) => { // eslint-disable-line no-param-reassign\r\n originalCallback.apply(this, args);\r\n dataSource.sendEventToReportingPipeline({\r\n surveyName,\r\n Interface,\r\n Product,\r\n feedback: feedbackWithDefaults,\r\n telemetry: telemetryWithDefaults,\r\n clientFeedbackId,\r\n serverContext,\r\n logActivity,\r\n });\r\n };\r\n }\r\n\r\n dataSource.sendFeedback({\r\n appId,\r\n clientFeedbackId,\r\n isTestEnv,\r\n feedback: feedbackWithDefaults,\r\n telemetry: telemetryWithDefaults,\r\n onSuccess: () => {\r\n onFinishSendRequest();\r\n logActivity(`SurveyDataService | survey: ${surveyName}, action: send OCV feedback success`);\r\n },\r\n onError: () => {\r\n onFinishSendRequest();\r\n logActivity(`SurveyDataService | survey: ${surveyName}, action: send OCV feedback failed`);\r\n },\r\n });\r\n },\r\n };\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React, { useMemo } from 'react';\r\nimport { stringifySync } from '@bingads-webui/safe-json';\r\nimport { SurveyDataService } from '@bingads-webui-campaign-react/survey-data-service';\r\n\r\nexport const SurveyContainer = (props) => {\r\n const {\r\n survey,\r\n logActivity,\r\n isTestEnv,\r\n onSurveyRender,\r\n serverContext,\r\n tokenInfo,\r\n lastActiveElement,\r\n resetActiveElement,\r\n } = props;\r\n\r\n const Component = useMemo(() => {\r\n const SurveyComponent = survey.getSurveyComponent();\r\n\r\n return (\r\n {\r\n survey.onSurveySubmit();\r\n resetActiveElement();\r\n logActivity(`SurveyManager | survey: ${survey.getSurveyName()}, action: submit, additionalLogData: ${stringifySync(additionalLogData)}`);\r\n }}\r\n onSurveyDismiss={(additionalLogData = {}) => {\r\n survey.onSurveyDismiss();\r\n resetActiveElement();\r\n logActivity(`SurveyManager | survey: ${survey.getSurveyName()}, action: dismiss, additionalLogData: ${stringifySync(additionalLogData)}`);\r\n }}\r\n onSurveyRender={onSurveyRender}\r\n lastActiveElement={lastActiveElement}\r\n customParams={survey.getSurveyCustomParams()}\r\n />\r\n );\r\n }, [survey, isTestEnv, serverContext, tokenInfo, logActivity, onSurveyRender, lastActiveElement, resetActiveElement]);\r\n\r\n return Component;\r\n};\r\n\r\nSurveyContainer.propTypes = {\r\n survey: PropTypes.shape({\r\n getSurveyName: PropTypes.func.isRequired,\r\n getSurveyId: PropTypes.func.isRequired,\r\n getSurveyComponent: PropTypes.func.isRequired,\r\n getSurveyInterface: PropTypes.func.isRequired,\r\n getSurveyProduct: PropTypes.func.isRequired,\r\n getSurveyCustomParams: PropTypes.func.isRequired,\r\n isReportingPipelineEnabled: PropTypes.func.isRequired,\r\n onSurveyRender: PropTypes.func.isRequired,\r\n onSurveySubmit: PropTypes.func.isRequired,\r\n onSurveyDismiss: PropTypes.func.isRequired,\r\n }).isRequired,\r\n logActivity: PropTypes.func.isRequired,\r\n isTestEnv: PropTypes.bool.isRequired,\r\n onSurveyRender: PropTypes.func.isRequired,\r\n serverContext: PropTypes.shape({}).isRequired,\r\n tokenInfo: PropTypes.shape({}),\r\n lastActiveElement: PropTypes.shape({}).isRequired,\r\n resetActiveElement: PropTypes.func.isRequired,\r\n};\r\n\r\nSurveyContainer.defaultProps = {\r\n tokenInfo: {},\r\n};\r\n","export const setSurveyHasCampaign = () => {\r\n if (window.survey && window.survey.surveyManager && window.survey.hasCampaign === false) {\r\n window.survey.hasCampaign = true;\r\n window.survey.surveyManager.trigger();\r\n }\r\n};\r\n\r\nexport const createDOMContainer = () => {\r\n let DOMContainer;\r\n if (document.getElementById('survey-container')) {\r\n DOMContainer = document.getElementById('survey-container');\r\n } else {\r\n DOMContainer = document.createElement('div');\r\n DOMContainer.setAttribute('id', 'survey-container');\r\n }\r\n return DOMContainer;\r\n};\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { sortBy, find, isEmpty, result } from 'underscore';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PopupContextProvider } from '@bingads-webui-react/popup-manager';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { stringifySync } from '@bingads-webui/safe-json';\r\nimport { getWebuiSurveyList } from './survey-list';\r\nimport { SurveyContainer } from './survey-container';\r\nimport { createDOMContainer } from './util';\r\n\r\nlet lastActiveElement;\r\n\r\nexport const SurveyManager = (props) => {\r\n const {\r\n i18n,\r\n serverContext,\r\n PreferenceService,\r\n tokenInfo,\r\n appActivity,\r\n activityName,\r\n appPerfMarker,\r\n } = props;\r\n\r\n const logActivity = (message) => {\r\n if (appActivity) {\r\n appActivity.signal(message, activityName);\r\n }\r\n };\r\n\r\n const {\r\n surveyList = getWebuiSurveyList({\r\n serverContext,\r\n PreferenceService,\r\n logActivity,\r\n }),\r\n } = props;\r\n\r\n const isTestEnv = !result(serverContext, 'IsProdEnv') && !window.location.href.toLowerCase().includes('ads.microsoft.com');\r\n\r\n const isTokenInfoInvalid = () => !isTestEnv &&\r\n (isEmpty(tokenInfo) || !tokenInfo.UserId || !tokenInfo.TenantId);\r\n\r\n const renderSurveyToDom = (survey) => {\r\n if (isTokenInfoInvalid()) {\r\n logActivity(`SurveyManager | tokenInfo is invalid, tokenInfo: ${tokenInfo}`);\r\n return;\r\n }\r\n\r\n const renderSurveyPerfMarker = appPerfMarker.createChild('Render_Survey');\r\n renderSurveyPerfMarker.willInit();\r\n lastActiveElement = document && document.activeElement;\r\n ReactDOM.render(\r\n \r\n \r\n {/* enable centralized popup management for survey */}\r\n \r\n {\r\n survey.onSurveyRender();\r\n logActivity(`SurveyManager | survey: ${survey.getSurveyName()}, action: render, additionalLogData: ${stringifySync(additionalLogData)}`);\r\n renderSurveyPerfMarker.done();\r\n }}\r\n lastActiveElement={lastActiveElement}\r\n resetActiveElement={() => {\r\n lastActiveElement = undefined;\r\n }}\r\n {...props}\r\n />\r\n \r\n \r\n ,\r\n createDOMContainer()\r\n );\r\n };\r\n\r\n const selectSurvey = () => {\r\n // get the available survey with the highest priority\r\n const sortedSurveyList = sortBy(surveyList, survey => survey.getSurveyPriority()).reverse();\r\n const selectedSurvey = find(sortedSurveyList, survey =>\r\n survey.validateTriggerCondition() && survey.validateUserGovernance());\r\n\r\n return selectedSurvey;\r\n };\r\n\r\n let survey;\r\n\r\n return {\r\n getSurvey: () => survey,\r\n setSurvey: () => {\r\n survey = selectSurvey();\r\n },\r\n render: () => {\r\n if (survey) {\r\n renderSurveyToDom(survey);\r\n }\r\n },\r\n trigger: ({\r\n checkIfSurveyIsOpen,\r\n } = {}) => {\r\n if (checkIfSurveyIsOpen) {\r\n const elements = document.getElementsByClassName('webui-user-survey');\r\n if (elements.length) {\r\n return;\r\n }\r\n }\r\n const newSurvey = selectSurvey();\r\n if (!newSurvey) {\r\n // do nothing if no available survey\r\n } else {\r\n survey = newSurvey;\r\n renderSurveyToDom(survey);\r\n }\r\n },\r\n };\r\n};\r\n","import { SurveyManager } from './survey-manager';\r\nimport { setSurveyHasCampaign } from './util';\r\n\r\nexport const setupSurveyManager = (({\r\n i18n,\r\n serverContext,\r\n PreferenceService,\r\n tokenInfo,\r\n surveyList,\r\n appActivity,\r\n activityName,\r\n appPerfMarker,\r\n}) => {\r\n // set up global variables\r\n window.survey = {\r\n hasCampaign: false,\r\n setSurveyHasCampaign,\r\n };\r\n\r\n window.survey.surveyManager = SurveyManager({\r\n i18n,\r\n serverContext,\r\n PreferenceService,\r\n tokenInfo,\r\n surveyList,\r\n appActivity,\r\n activityName,\r\n appPerfMarker,\r\n });\r\n});\r\n","import $ from 'jquery';\r\nimport React from 'react';\r\n\r\nconst hideChartButtonLocator = '.app-shell-content ul.navbar-nav a.button-hide-graph';\r\nconst showChartButtonLocator = '.app-shell-content ul.navbar-nav a.button-show-graph';\r\n\r\nfunction hideChart() {\r\n /* istanbul ignore next */\r\n if ($(hideChartButtonLocator)[0]) {\r\n $(hideChartButtonLocator)[0].click();\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction restoreChart(isChartOpen) {\r\n /* istanbul ignore next */\r\n if (isChartOpen && $(showChartButtonLocator)[0]) {\r\n $(showChartButtonLocator)[0].click();\r\n } else if (!isChartOpen && $(hideChartButtonLocator)[0]) {\r\n $(hideChartButtonLocator)[0].click();\r\n }\r\n}\r\n\r\nexport function withToggleChart(Component) {\r\n return props => (\r\n \r\n );\r\n}\r\n","/* istanbul ignore file */\r\nimport { predicateValueEditorStyle, labelsCellItemStyle, labelsCellScopeStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport { Constants } from '@bingads-webui-theme-2018/theme-fluent';\r\n\r\nexport const getLabelStyle = ({ palette, semanticColors }) => ({\r\n '.labels-selector .column-tri-state-checkbox': {\r\n '& span:hover:before': {\r\n fontFamily: 'MsAds MDL2 Assets !important',\r\n paddingLeft: '1px',\r\n fontSize: 16,\r\n lineHeight: '16px',\r\n },\r\n },\r\n '.labels-selector.two-state-selector .column-tri-state-checkbox': {\r\n '& span:hover:before': {\r\n content: '\"\\\\E73E\"',\r\n },\r\n },\r\n '.labels-selector.tri-state-selector .column-tri-state-checkbox': {\r\n '& span:hover:before': {\r\n content: '\"\\\\E73C\"',\r\n },\r\n },\r\n '.dropdown.open .labels-selector': predicateValueEditorStyle.selector({ palette }),\r\n '.labels-selector .nameTemplate': {\r\n display: 'flex',\r\n transform: 'translateY(-1px)',\r\n ...labelsCellScopeStyle('16px', -1),\r\n },\r\n '.k-overlay': {\r\n position: 'fixed',\r\n top: '0',\r\n left: '0',\r\n zIndex: '800',\r\n width: '100%',\r\n height: '100%',\r\n backgroundColor: '#fff',\r\n opacity: '.4',\r\n filter: 'alpha(opacity=40)',\r\n },\r\n 'div.k-window': {\r\n width: '450px',\r\n display: 'block',\r\n position: 'absolute',\r\n zIndex: '999',\r\n background: semanticColors.bodyBackground,\r\n border: '1px solid #d9d9d9',\r\n boxShadow: '0 6.4px 14.4px 0 rgba(0,0,0,.132), 0 1.2px 3.6px 0 rgba(0,0,0,.108)',\r\n padding: '22px 24px 15px 24px',\r\n boxSizing: 'content-box',\r\n },\r\n 'div.k-window-content': {\r\n height: '100%',\r\n overflow: 'auto',\r\n },\r\n '.k-i-close:before': {\r\n content: '\"\\\\E711\"',\r\n },\r\n '.k-i-close': {\r\n fontFamily: '\"MsAds MDL2 Assets\"',\r\n fontSize: 14,\r\n fontStyle: 'normal',\r\n W: 'antialiased',\r\n M: 'grayscale',\r\n fontWeight: 'normal',\r\n lineHeight: '1',\r\n position: 'relative',\r\n },\r\n '.k-window-actions': {\r\n float: 'right',\r\n\r\n '& a.k-window-action.k-link.clickable:focus': {\r\n outline: 'auto',\r\n },\r\n },\r\n '.k-window-content.k-content': {\r\n '& a.HelpTopic:focus': {\r\n outline: 'auto',\r\n },\r\n '& .save-bar.segment-alert-ok': {\r\n '& input.btn-default:focus': {\r\n outline: 'auto',\r\n },\r\n },\r\n },\r\n 'span.k-window-title': {\r\n fontSize: 20,\r\n display: 'inline-block',\r\n },\r\n '.create-label': {\r\n paddingTop: 26,\r\n marginBottom: '0',\r\n\r\n '& .create-label__name-field': {\r\n boxSizing: 'border-box',\r\n },\r\n '& .create-label__actions': {\r\n marginTop: 20,\r\n marginBottom: 14,\r\n padding: 0,\r\n\r\n '& .create-label__action': {\r\n borderRadius: 2,\r\n },\r\n '& .create-label__action.btn-default': {\r\n marginLeft: 8,\r\n },\r\n },\r\n },\r\n '.k-window-titlebar.k-header': {\r\n paddingTop: 15,\r\n },\r\n '.popover-view': {\r\n background: '#ffffff',\r\n border: 'solid 1px #606060',\r\n },\r\n '.popover-view__content': {\r\n fontSize: 12,\r\n },\r\n '.popover-view.popup--labels': {\r\n width: 394,\r\n padding: '17px 28px 20px 24px',\r\n backgroundColor: '#FFFFFF',\r\n boxShadow: '0px 0px 6px rgba(0, 0, 0, 0.2)',\r\n border: 'none',\r\n position: 'relative',\r\n zIndex: Constants.ZIndexContentComponents.StatusPopup,\r\n },\r\n '.popup--labels .popup__close': {\r\n padding: 0,\r\n marginTop: -5,\r\n marginRight: -5,\r\n },\r\n\r\n '.popup--labels__entity-type': {\r\n fontWeight: 'bold',\r\n fontSize: 20,\r\n lineHeight: '28px',\r\n },\r\n '.popup--labels__entity-type + span': {\r\n fontWeight: 'bold',\r\n fontSize: 20,\r\n lineHeight: '28px',\r\n overflowWrap: 'break-word',\r\n },\r\n '.popup--labels__container': {\r\n marginTop: 10,\r\n ...labelsCellItemStyle(),\r\n },\r\n '.popup--labels__actions': {\r\n marginTop: 10,\r\n fontSize: 14,\r\n },\r\n});\r\n","/* eslint-disable max-len */\r\nimport React from 'react';\r\nimport { extend, pick, noop, defaults, isMatch, isEqual } from 'underscore';\r\nimport { withLayoutContext, Mode } from '@bingads-webui-react/app-layout-container';\r\nimport { notificationApi } from '@bingads-webui-campaign/notification-center';\r\nimport { withHotKeys, ShortcutType } from '@bingads-webui-react/hot-keys';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport PropTypes from 'prop-types';\r\nimport { ToolbarContainer as ToolbarContainerBase } from '@bingads-webui-grid/toolbar-container';\r\nimport { withToggleChart } from './with-toggle-chart';\r\nimport { getGlobalStyles } from './global-styles';\r\n\r\n\r\nconst getStyles = (_, { palette = {}, semanticColors = {}, spacing = {} }) => extend({\r\n}, getGlobalStyles({ palette, semanticColors, spacing }));\r\n\r\nexport const FullScreenWithTabConfig = {\r\n header: {\r\n mode: Mode.Hidden,\r\n },\r\n nav: {\r\n mode: Mode.Hidden,\r\n },\r\n status: {\r\n mode: Mode.Hidden,\r\n },\r\n menu: {\r\n mode: Mode.Hidden,\r\n },\r\n subTab: {\r\n mode: Mode.Hidden,\r\n },\r\n scopePanel: {\r\n mode: Mode.Hidden,\r\n },\r\n};\r\n\r\nconst CopilotFullScreenWithTabConfig = {\r\n header: {\r\n mode: Mode.Hidden,\r\n },\r\n nav: {\r\n mode: Mode.Hidden,\r\n },\r\n status: {\r\n mode: Mode.Expanded,\r\n showCopilot: {\r\n right: 320,\r\n },\r\n },\r\n menu: {\r\n mode: Mode.Hidden,\r\n },\r\n subTab: {\r\n mode: Mode.Hidden,\r\n showCopilot: {\r\n right: 320,\r\n },\r\n },\r\n};\r\n\r\nexport const isTableExpanded = (layoutConfig) => {\r\n const entries = Object.entries(layoutConfig);\r\n for (let i = 0; i < entries.length; i += 1) {\r\n const [key, config] = entries[i];\r\n\r\n if ((FullScreenWithTabConfig[key] != null && !isMatch(config, FullScreenWithTabConfig[key]))\r\n && (CopilotFullScreenWithTabConfig[key] != null && !isEqual(config, CopilotFullScreenWithTabConfig[key]))) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n};\r\n\r\nexport const getConfigComponents = config => ({\r\n ...pick(config, 'header', 'nav', 'status', 'menu', 'subTab', 'scopePanel'),\r\n menu: {\r\n mode: config.menu && config.menu.mode,\r\n },\r\n});\r\n\r\nclass ToolbarContainerUINext extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.floatingBannerId = '';\r\n this.originalChartState = false;\r\n this.originalConfig = this.getConfigComponents();\r\n }\r\n /* istanbul ignore next */\r\n componentDidUpdate(prevProps) {\r\n if (this.props.hotKey === 'escape' && prevProps.count !== this.props.count && this.isTableExpanded()) {\r\n this.toggleExpandTable();\r\n }\r\n }\r\n /* istanbul ignore next */\r\n componentWillUnmount() {\r\n if (this.isTableExpanded()) {\r\n notificationApi.dismiss(this.floatingBannerId);\r\n }\r\n }\r\n getConfigComponents = () => getConfigComponents(this.props.layoutConfig);\r\n\r\n isTableExpanded = () => isTableExpanded(this.getConfigComponents());\r\n\r\n toggleExpandTable = () => {\r\n if (this.isTableExpanded()) {\r\n /* istanbul ignore next */\r\n this.props.changeLayout(defaults({}, this.originalConfig, { topBanner: { mode: Mode.Collapsed } }, this.props.layoutConfig), true);\r\n /* istanbul ignore next */\r\n\r\n this.props.restoreChart(this.originalChartState);\r\n /* istanbul ignore next */\r\n\r\n notificationApi.dismiss(this.floatingBannerId);\r\n } else {\r\n this.originalConfig = this.getConfigComponents();\r\n this.props.changeLayout(defaults({}, FullScreenWithTabConfig, { topBanner: { mode: Mode.Hidden } }, this.props.layoutConfig), true);\r\n\r\n this.originalChartState = this.props.hideChart();\r\n\r\n this.floatingBannerId = notificationApi.showInfo(this.props.i18n.getString(_TL_('Press Esc key to exit full screen')));\r\n }\r\n };\r\n\r\n\r\n render() {\r\n return (\r\n this.toggleExpandTable()} isTableExpandedFlag={this.isTableExpanded()} />\r\n );\r\n }\r\n}\r\n\r\nToolbarContainerUINext.propTypes = {\r\n forceHideToolbar: PropTypes.bool.isRequired,\r\n showToolbarSelected: PropTypes.bool.isRequired,\r\n showToolbarUnselected: PropTypes.bool.isRequired,\r\n toolbarSelectedConfig: PropTypes.objectOf(PropTypes.shape({\r\n id: PropTypes.string.isRequired,\r\n })),\r\n toolbarUnselectedConfig: PropTypes.objectOf(PropTypes.shape({\r\n id: PropTypes.string.isRequired,\r\n })),\r\n onClear: PropTypes.func.isRequired,\r\n selectionCount: PropTypes.number,\r\n totalCount: PropTypes.number,\r\n isCrossPageAllSelected: PropTypes.bool,\r\n isSinglePageAllSelected: PropTypes.bool,\r\n isMultiPage: PropTypes.bool,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }),\r\n onDataDidRender: PropTypes.func,\r\n layoutConfig: PropTypes.shape({}).isRequired,\r\n changeLayout: PropTypes.func.isRequired,\r\n hideChart: PropTypes.func.isRequired,\r\n restoreChart: PropTypes.func.isRequired,\r\n hotKey: PropTypes.string.isRequired,\r\n count: PropTypes.number.isRequired,\r\n};\r\n\r\nToolbarContainerUINext.defaultProps = {\r\n selectionCount: 0,\r\n totalCount: 0,\r\n isCrossPageAllSelected: false,\r\n isSinglePageAllSelected: false,\r\n isMultiPage: false,\r\n i18n: null,\r\n onDataDidRender: noop,\r\n toolbarSelectedConfig: new Map(),\r\n toolbarUnselectedConfig: undefined,\r\n};\r\n\r\n// TODO: merge theme with styles in the callback\r\nexport const ToolbarContainer = withHotKeys(withToggleChart(withLayoutContext(withDefaultStyles(ToolbarContainerUINext, getStyles))), ShortcutType.CollapseTable);\r\n","/* istanbul ignore file */\r\nimport { getLabelStyle } from './label-style';\r\n\r\nexport const getGlobalStyles = ({ palette = {}, semanticColors = {}, spacing = {} }) => ({\r\n '@global': Object.assign(getLabelStyle({ palette, semanticColors, spacing })),\r\n});\r\n","export const getIconsClassNameMap = classes => ({\r\n expanded: `${classes.nodeIcon} iconba iconba-ChevronDownSmall`,\r\n collapsed: `${classes.nodeIcon} iconba iconba-ChevronRightSmall`,\r\n});\r\n","import _ from 'underscore';\r\n\r\nexport class RouterUtility {\r\n static isActive(node) {\r\n return !!(node.selected && !_.findWhere(node.children, { selected: true }));\r\n }\r\n}\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport { Link as RouterLink } from '@bingads-webui-campaign-react/router';\r\nimport { ExpandableNode, Renderer } from '@bingads-webui-react/tree-view';\r\nimport { getRoutePathById } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { RouterUtility } from './router-utility';\r\n\r\nexport function NodeRenderer(classes, scope, sitemap, shouldRenderParentNodeAsLink) {\r\n const isActiveNode = node => RouterUtility.isActive(node);\r\n const isParentNode = node => node.children && node.children.length !== 0;\r\n const shouldRenderDiv = node => (shouldRenderParentNodeAsLink ? (!!node.noNavigation) : isParentNode(node));\r\n const queryString = scope.stringify();\r\n\r\n const renderLinkOrDiv = (node, args) => {\r\n if (shouldRenderDiv(node)) {\r\n return (\r\n
\r\n {node.name}\r\n
\r\n );\r\n }\r\n\r\n return (\r\n isActiveNode(node) ?\r\n \r\n {node.name}\r\n \r\n :\r\n \r\n {args.nodeChildRenderer(node)}\r\n \r\n );\r\n };\r\n\r\n return (node, args) => (\r\n \r\n \r\n {isActiveNode(node) &&
}\r\n {\r\n renderLinkOrDiv(node, args)\r\n }\r\n \r\n
\r\n );\r\n}\r\n\r\nNodeRenderer.propTypes = Renderer;\r\n","import React from 'react';\r\nimport _ from 'underscore';\r\nimport { withRouter } from '@bingads-webui-campaign-react/router';\r\nimport PropTypes from 'prop-types';\r\nimport { TreeView } from '@bingads-webui-react/tree-view';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { withScope, QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { siteMapPropType } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { getTreeStyle } from './styles/tree-view-styles';\r\nimport { getIconsClassNameMap } from './styles/icon-class-name-map';\r\nimport { NodeRenderer } from './utils/node-renderer';\r\nimport { RouterUtility } from './utils/router-utility';\r\n\r\nclass TreeMenu extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n nodes: props.siteMap,\r\n };\r\n this.RouterNode = NodeRenderer(props.classes, props.scope, props.siteMap, props.shouldRenderParentNodeAsLink);\r\n }\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n const flattenedStatefulMap = {};\r\n\r\n function flattenPreviousNodes(siteMap) {\r\n _.forEach(siteMap, (node) => {\r\n flattenedStatefulMap[node.id] = node;\r\n if (node.children) {\r\n flattenPreviousNodes(node.children);\r\n }\r\n });\r\n }\r\n function mergeNodeState(siteMap) {\r\n return _.map(siteMap, (node) => {\r\n const previousMatch = flattenedStatefulMap[node.id];\r\n const output = _.clone(node);\r\n if (previousMatch && previousMatch.state) {\r\n output.state = previousMatch.state;\r\n }\r\n if (output.children) {\r\n output.children = mergeNodeState(output.children);\r\n }\r\n output.name = nextProps.i18n.getString(output.name);\r\n if (output.title) {\r\n output.title = nextProps.i18n.getString(output.title);\r\n }\r\n return output;\r\n });\r\n }\r\n flattenPreviousNodes(prevState.nodes);\r\n\r\n return {\r\n nodes: mergeNodeState(nextProps.siteMap),\r\n };\r\n }\r\n\r\n onChange = (nodes) => {\r\n this.setState({ nodes });\r\n };\r\n\r\n getClassNames = node => [`${this.props.classes.nodeStyle} hyperlink-node-${node.id}`];\r\n\r\n expandSelectedParentNodes(node) {\r\n const childMatch =\r\n _.isArray(node.children) ?\r\n !!_.find(\r\n node.children,\r\n childNode => this.expandSelectedParentNodes(childNode)\r\n ) :\r\n false;\r\n\r\n if (childMatch) {\r\n const updatedNode = node;\r\n updatedNode.state = node.state ?\r\n _.extend(node.state, { expanded: true }) :\r\n { expanded: true };\r\n return true;\r\n }\r\n\r\n return node.route ? RouterUtility.isActive(node) : false;\r\n }\r\n\r\n render() {\r\n const { nodes } = this.state;\r\n const {\r\n classes, scope, siteMap, shouldRenderParentNodeAsLink, expandIconAriaLabel, i18n,\r\n } = this.props;\r\n const RouterNode = NodeRenderer(classes, scope, siteMap, shouldRenderParentNodeAsLink);\r\n\r\n if (this.currentPath !== this.props.location.pathname) {\r\n this.currentPath = this.props.location.pathname;\r\n _.each(nodes, node => (this.expandSelectedParentNodes(node)));\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nTreeMenu.propTypes = {\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n location: PropTypes.shape({\r\n pathname: PropTypes.string,\r\n }).isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n shouldRenderParentNodeAsLink: PropTypes.bool,\r\n expandIconAriaLabel: PropTypes.string,\r\n};\r\n\r\nTreeMenu.defaultProps = {\r\n shouldRenderParentNodeAsLink: false,\r\n expandIconAriaLabel: undefined,\r\n};\r\n\r\nexport const StyledTreeMenu = withI18nConsumer(withScope(withRouter(withDefaultStyles(TreeMenu, getTreeStyle))));\r\n","export const getTreeStyle = (treeMenu, { palette = {} }) => ({\r\n placeholder: {\r\n display: 'inline-block',\r\n height: '1em',\r\n width: '200px',\r\n backgroundColor: '#DDD',\r\n marginLeft: '20px',\r\n },\r\n nodeIcon: {\r\n display: 'inline-block',\r\n verticalAlign: 'top',\r\n height: 12,\r\n width: 12,\r\n padding: 8,\r\n fontSize: '11px',\r\n cursor: 'pointer',\r\n },\r\n runningIcon: {\r\n display: 'inline-block',\r\n margin: '0px 0px 0px 3px',\r\n fontSize: '11px',\r\n },\r\n nodeStyle: {\r\n display: 'inline-block',\r\n whiteSpace: 'nowrap',\r\n height: 36,\r\n width: 164,\r\n cursor: 'pointer',\r\n '&:focus': {\r\n outlineOffset: -1,\r\n outline: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n },\r\n nodeNonActive: {\r\n '&:hover': {\r\n backgroundColor: palette.neutralLight,\r\n textDecoration: 'none',\r\n color: palette.themePrimary,\r\n },\r\n },\r\n nodeActive: {\r\n backgroundColor: palette.themeLighter,\r\n '&:hover': {\r\n backgroundColor: `${palette.themeLight} !important`,\r\n textDecoration: 'none',\r\n color: palette.themePrimary,\r\n },\r\n },\r\n nodeHyperlink: {\r\n width: '100%',\r\n display: 'inline-block',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n maxWidth: '100%',\r\n whiteSpace: 'nowrap',\r\n textDecoration: 'none',\r\n verticalAlign: 'top',\r\n color: 'black',\r\n padding: 8,\r\n fontSize: '14px',\r\n '&:hover': {\r\n color: 'black',\r\n textDecoration: 'none',\r\n },\r\n },\r\n nodeHyperLinkParent: {\r\n\r\n },\r\n nodeHyperLinkNonParent: {\r\n marginLeft: 15,\r\n },\r\n nodeHyperlinkActive: {\r\n fontWeight: '600',\r\n },\r\n treeViewContainer: {\r\n fontFamily: 'Arial,sans-serif',\r\n fontSize: '12px',\r\n lineHeight: '14px',\r\n flex: '1 1 auto',\r\n height: '100%',\r\n backgroundColor: palette.neutralLighter,\r\n '& .ReactVirtualized__Grid': {\r\n '&:focus': {\r\n outline: 'none',\r\n },\r\n },\r\n },\r\n beforeIcon: {\r\n borderLeft: `4px solid ${palette.themePrimary}`,\r\n padding: 0,\r\n marginRight: -4,\r\n alignSelf: 'stretch',\r\n height: '100%',\r\n float: 'left',\r\n },\r\n});\r\n\r\n","import _ from 'underscore';\r\nimport { WaterfallFilterStorage, WaterfallFilterType, waterfallDateFilterProcessor } from '@bingads-webui-campaign/filter-storage';\r\nimport { getCivilDateToday, compareCivilDate, DefaultSpecificRanges, ComparedOptions,\r\n generateDateData, getRangesFromData, translateLegacyToIANATimezone, RANGES } from '@bingads-webui-universal/temporal-utitlities';\r\nimport { getNthPeriodWithRangeType, getRangeIndexWithDefaultType } from '@bingads-webui-react/quick-date-left-right-picker';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\nimport { I18nModel } from '@bingads-webui-universal/i18n-model';\r\nimport { stringifySync } from '@bingads-webui/safe-json';\r\n\r\nfunction log(appActivity, msg) {\r\n try {\r\n appActivity.trace(msg, 'updateDateRange');\r\n } catch (e) {\r\n // Do nothing, this logging is not critical.\r\n }\r\n}\r\n\r\nfunction patchLegacyState(waterfallFilterStorage, serverContext, preferenceService) {\r\n // this part also exists in init-legacy-components.js, move to here to execute it earlier to let earlier operation to use the new date range\r\n if (!state.attributes.$daterange) {\r\n Object.defineProperty(state.attributes, '$daterange', {\r\n get: () => {\r\n if (_.isUndefined(waterfallFilterStorage)) {\r\n // eslint-disable-next-line no-param-reassign\r\n waterfallFilterStorage = new WaterfallFilterStorage({\r\n preferenceService,\r\n });\r\n }\r\n const dateRange = waterfallDateFilterProcessor(\r\n waterfallFilterStorage.getFilters([WaterfallFilterType.DateFilter]),\r\n serverContext\r\n );\r\n return _.extend({\r\n formatedEnd: dateRange.RangeEndDate,\r\n formatedStart: dateRange.RangeStartDate,\r\n }, dateRange);\r\n },\r\n });\r\n }\r\n}\r\n\r\nexport function updateDateRange(preferenceService, serverContext, appActivity) {\r\n const waterfallFilterStorage = new WaterfallFilterStorage({ preferenceService });\r\n const dateFilter = waterfallDateFilterProcessor(\r\n waterfallFilterStorage.getFilters([WaterfallFilterType.DateFilter]),\r\n serverContext\r\n );\r\n patchLegacyState(waterfallFilterStorage, serverContext, preferenceService);\r\n const {\r\n CurrentUser: {\r\n CultureDateTimeFormat: {\r\n ShortDatePattern,\r\n },\r\n LocaleID,\r\n },\r\n CurrentAccount: {\r\n TimeZone,\r\n },\r\n } = serverContext;\r\n\r\n const isImprovedDateRangePickerEnabled = serverContext.DynamicPermissions && serverContext.DynamicPermissions.ImprovedDateFilter;\r\n\r\n const i18nFormat = new I18nModel({\r\n loadTranslationData: (/* locale */) => ({}),\r\n loadCLDRData: currentLocale => currentLocale,\r\n failFast: true,\r\n });\r\n\r\n log(appActivity, `dateFilter: ${JSON.stringify(dateFilter)}`);\r\n if (!dateFilter || dateFilter.Rangelcid !== LocaleID\r\n || !dateFilter.start || !dateFilter.end || !dateFilter.RangeEndDate || !dateFilter.RangeStartDate\r\n || (dateFilter.compared && (!dateFilter.compared.start || !dateFilter.compared.end ||\r\n !dateFilter.compared.formattedStart || !dateFilter.compared.formattedEnd))) {\r\n // if the date filter is invalid, fallback to yesterday\r\n const yesterday = getCivilDateToday().plus({ days: -1 });\r\n const fallbackDate = `${i18nFormat.formatCivilDate(yesterday, { raw: ShortDatePattern })}`;\r\n\r\n log(appActivity, `Fallback to yesterday. dateFilter: ${JSON.stringify(dateFilter)}`);\r\n\r\n waterfallFilterStorage.save(WaterfallFilterType.DateFilter, {\r\n RangeStartDate: fallbackDate,\r\n RangeEndDate: fallbackDate,\r\n RangeId: RANGES.Yesterday,\r\n Rangelcid: LocaleID,\r\n compared: null,\r\n RangeIndex: getRangeIndexWithDefaultType({ rangeId: RANGES.Yesterday }),\r\n });\r\n } else if (dateFilter.RangeId !== RANGES.Custom) {\r\n // if the date filter is valid and not custom, update the date filter\r\n const timeZone = translateLegacyToIANATimezone(TimeZone);\r\n const specificRanges = DefaultSpecificRanges(i18nFormat, timeZone);\r\n const { selectedRange, selectedComparedRange } = getRangesFromData(i18nFormat, dateFilter, ShortDatePattern, dateFilter.Rangelcid);\r\n let newSelectedRange = null;\r\n let RangeIndex = dateFilter.RangeIndex || getRangeIndexWithDefaultType({ rangeId: dateFilter.RangeId });\r\n const { RangeDays } = dateFilter;\r\n\r\n if (isImprovedDateRangePickerEnabled && dateFilter.RangeIndex) {\r\n const EntireTime = _.find(specificRanges, range => range.rangeId === RANGES.EntireTime);\r\n const rangeWithIndex = getNthPeriodWithRangeType({ rangeId: dateFilter.RangeId }, RangeIndex, EntireTime.range.start, EntireTime.range.end, RangeDays);\r\n const { rangeIndex: cRangeIndex, range } = rangeWithIndex;\r\n RangeIndex = cRangeIndex;\r\n newSelectedRange = range;\r\n log(appActivity, `UseNthDate - newSelectedRange: ${stringifySync(newSelectedRange)}, RangeIndex: ${cRangeIndex}, EntireTime: ${stringifySync(EntireTime)}`);\r\n } else {\r\n const selectedSpecificRange = _.find(specificRanges, range => range.rangeId === dateFilter.RangeId);\r\n newSelectedRange = selectedSpecificRange ? selectedSpecificRange.range : selectedRange;\r\n log(appActivity, `UseNormalDate - newSelectedRange: ${stringifySync(newSelectedRange)}`);\r\n }\r\n\r\n if (!selectedRange.start || !selectedRange.end) {\r\n const today = getCivilDateToday();\r\n\r\n log(appActivity, 'Formatted date invalid fallback to today');\r\n selectedRange.start = today;\r\n selectedRange.end = today;\r\n }\r\n\r\n if (compareCivilDate(selectedRange.start, newSelectedRange.start) === 0 &&\r\n compareCivilDate(selectedRange.end, newSelectedRange.end) === 0) {\r\n log(appActivity, 'No change. Use the same date range');\r\n return;\r\n }\r\n\r\n // To update the date range, we also need to update the compared range and check if the compared range is valid\r\n let newSelectedComparedRange = null;\r\n let comparedOption = null;\r\n if (dateFilter && dateFilter.compared) {\r\n comparedOption =\r\n _.find(ComparedOptions, option => option.keyToExport === dateFilter.compared.key);\r\n newSelectedComparedRange = comparedOption && comparedOption.keyToExport !== 'customPeriod' ?\r\n comparedOption.get(newSelectedRange, dateFilter.RangeId) : selectedComparedRange;\r\n }\r\n\r\n const data = generateDateData(\r\n i18nFormat,\r\n {\r\n selectedRange: newSelectedRange,\r\n selectedComparedRange: newSelectedComparedRange,\r\n comparedOption,\r\n rangeType: { rangeId: dateFilter.RangeId },\r\n rangeIndex: RangeIndex,\r\n rangeDays: RangeDays,\r\n },\r\n ShortDatePattern,\r\n dateFilter.Rangelcid,\r\n timeZone\r\n );\r\n\r\n log(appActivity, `DateFilter: ${JSON.stringify(dateFilter)}. Change: ${JSON.stringify(selectedRange)} -> ${stringifySync(newSelectedRange)}`);\r\n waterfallFilterStorage.save(WaterfallFilterType.DateFilter, data);\r\n } else {\r\n const { selectedRange, selectedComparedRange } = getRangesFromData(i18nFormat, dateFilter, ShortDatePattern, dateFilter.Rangelcid);\r\n\r\n if (!selectedRange.start || !selectedRange.end ||\r\n (!selectedComparedRange.start && selectedComparedRange.end) || (selectedComparedRange.start && !selectedComparedRange.end)) {\r\n const yesterday = getCivilDateToday().plus({ days: -1 });\r\n const fallbackDate = `${i18nFormat.formatCivilDate(yesterday, { raw: ShortDatePattern })}`;\r\n\r\n log(appActivity, `Fallback to yesterday for custom dateFilter: ${JSON.stringify(dateFilter)}. Change: ${JSON.stringify(selectedRange)}`);\r\n\r\n waterfallFilterStorage.save(WaterfallFilterType.DateFilter, {\r\n RangeStartDate: fallbackDate,\r\n RangeEndDate: fallbackDate,\r\n RangeId: RANGES.Yesterday,\r\n Rangelcid: LocaleID,\r\n compared: null,\r\n RangeIndex: getRangeIndexWithDefaultType({ rangeId: RANGES.Yesterday }),\r\n });\r\n }\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nconst MTCampaignTypeEnum = {\r\n Default: 1,\r\n Shopping: 2,\r\n DynamicSearchAds: 4,\r\n Audience: 8,\r\n};\r\n\r\nconst MTCampaignStatus = {\r\n Suspended: 8,\r\n Active: 121,\r\n Deleted: 123,\r\n UserPaused: 124,\r\n BudgetPaused: 126,\r\n BudgetUserPaused: 127,\r\n};\r\n\r\nconst MTAdGroupStatus = {\r\n CampaignUserPaused: 124,\r\n CampaignBudgetPaused: 126,\r\n CampaignBudgetUserPaused: 127,\r\n Draft: 140,\r\n Active: 141,\r\n Deleted: 143,\r\n Paused: 144,\r\n Expired: 150,\r\n};\r\n\r\nexport function convertStringToEnumForCampaign(currentCampaign) {\r\n if (_.isEmpty(currentCampaign)) {\r\n return currentCampaign;\r\n }\r\n const campaign = _.clone(currentCampaign);\r\n campaign.CampaignType = MTCampaignTypeEnum[currentCampaign.CampaignType];\r\n campaign.Status = MTCampaignStatus[currentCampaign.Status];\r\n return campaign;\r\n}\r\n\r\nexport function convertStringToEnumForAdGroup(currentAdGroup) {\r\n if (_.isEmpty(currentAdGroup)) {\r\n return currentAdGroup;\r\n }\r\n const adGroup = _.clone(currentAdGroup);\r\n adGroup.Status = MTAdGroupStatus[currentAdGroup.Status];\r\n return adGroup;\r\n}\r\n","import { useContext } from 'react';\r\nimport { getEntityFromScope } from '@bingads-webui/edm-campaign';\r\nimport { useObservable } from '@bingads-webui-react/use-observable';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\n\r\nfunction useGivenEntity(select, edmInstance) {\r\n const observable = edmInstance ? edmInstance.get({ select }) : null;\r\n const state = useObservable(observable);\r\n\r\n return state.data;\r\n}\r\n\r\nconst campaignDefaultSelect = [\r\n 'Id',\r\n 'Name',\r\n 'Status',\r\n 'CampaignType',\r\n 'Budget',\r\n 'BiddingScheme',\r\n 'ExperimentId',\r\n];\r\n\r\nexport function useCurrentCampaign(select = campaignDefaultSelect) {\r\n const ctx = useContext(ScopeContext);\r\n const { currentCampaign } = getEntityFromScope(ctx.scope);\r\n\r\n return useGivenEntity(select, currentCampaign);\r\n}\r\n\r\nconst adGroupDefaultSelect = [\r\n 'Id',\r\n 'Name',\r\n 'Status',\r\n 'EntityStatus',\r\n 'SearchBid',\r\n 'BiddingScheme',\r\n];\r\n\r\nexport function useCurrentAdGroup(select = adGroupDefaultSelect) {\r\n const ctx = useContext(ScopeContext);\r\n const { currentAdGroup } = getEntityFromScope(ctx.scope);\r\n\r\n return useGivenEntity(select, currentAdGroup);\r\n}\r\n","\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { CampaignOData } from '@bingads-webui-react/campaign-odata';\r\nimport hoistNonReactStatics from 'hoist-non-react-statics';\r\nimport { getDisplayName } from '@bingads-webui-react/hoc-utils';\r\nimport { withScope, QueryParam } from '@bingads-webui-react/scope-service';\r\n\r\nconst loadingFallback = (
);\r\nconst errorFallback = () => ();\r\n\r\nconst withCurrentAdGroup = (WrappedComponent, enableErrorFallback = true) => {\r\n const Wrapper = props => (\r\n currentAdGroup.get()}\r\n escapeHatch={({ currentAdGroup }) => (currentAdGroup ? undefined : null)}\r\n fallback={loadingFallback}\r\n onError={enableErrorFallback\r\n ? errorFallback\r\n : () => ()}\r\n >\r\n {currentAdGroup =>\r\n ()}\r\n \r\n );\r\n\r\n Wrapper.displayName = `withCurrentAdGroup(\r\n ${getDisplayName(WrappedComponent)}\r\n )`;\r\n\r\n hoistNonReactStatics(Wrapper, WrappedComponent);\r\n\r\n Wrapper.propTypes = {\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n };\r\n\r\n return Wrapper;\r\n};\r\n\r\nconst withCurrentCampaign = (WrappedComponent, enableErrorFallback = true) => {\r\n const Wrapper = props => (\r\n currentCampaign.get()}\r\n escapeHatch={({ currentCampaign }) => (currentCampaign ? undefined : null)}\r\n fallback={loadingFallback}\r\n onError={enableErrorFallback\r\n ? errorFallback\r\n : () => ()}\r\n >\r\n { currentCampaign =>\r\n () }\r\n \r\n );\r\n\r\n Wrapper.displayName = `withCurrentCampaign(\r\n ${getDisplayName(WrappedComponent)}\r\n )`;\r\n\r\n hoistNonReactStatics(Wrapper, WrappedComponent);\r\n\r\n Wrapper.propTypes = {\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n };\r\n\r\n return Wrapper;\r\n};\r\n\r\nexport const withCurrentExpandedScope =\r\n component => withScope(withCurrentAdGroup(withCurrentCampaign(component)));\r\n\r\nexport const withCurrentExpandedScopeNoFallback =\r\n component => withScope(withCurrentAdGroup(withCurrentCampaign(component, false), false));\r\n","import Ajv from 'ajv';\r\n\r\nexport const WebViewMessageType = {\r\n onLoaded: 'onLoaded',\r\n onError: 'onError',\r\n onGlobalFilterDateChange: 'onGlobalFilterDateChange',\r\n};\r\n\r\nconst outgoingMessage = {\r\n type: 'object',\r\n properties: {\r\n messageType: {\r\n enum: [WebViewMessageType.onLoaded, WebViewMessageType.onError],\r\n },\r\n data: { type: ['object', 'string', 'null'] },\r\n },\r\n required: ['messageType'],\r\n};\r\n\r\nconst incomingMessage = {\r\n type: 'object',\r\n properties: {\r\n messageType: {\r\n type: 'string',\r\n enum: [WebViewMessageType.onGlobalFilterDateChange],\r\n },\r\n data: {\r\n type: ['object'],\r\n required: ['RangeStartDate', 'RangeEndDate', 'RangeId'],\r\n properties: {\r\n RangeStartDate: { type: 'string' },\r\n RangeEndDate: { type: 'string' },\r\n RangeId: { type: 'number' },\r\n },\r\n additionalProperties: true,\r\n },\r\n },\r\n required: ['messageType'],\r\n};\r\n\r\nexport function getValidators() {\r\n const ajv = new Ajv({ allErrors: true, strict: false });\r\n\r\n const validateOutgoingMessage = ajv.compile(outgoingMessage);\r\n const validateIncomingMessage = ajv.compile(incomingMessage);\r\n\r\n return { validateOutgoingMessage, validateIncomingMessage };\r\n}\r\n","export const instrumentationSchema = {\r\n scenario: [\r\n {\r\n name: 'webView',\r\n value: 'webView',\r\n activity: [\r\n {\r\n name: 'message',\r\n value: 'message',\r\n },\r\n ],\r\n },\r\n ],\r\n};\r\n","import { useCallback, useEffect, useMemo, useRef } from 'react';\r\nimport { getValidators, WebViewMessageType } from './schema-validation';\r\n\r\nexport const useMessagingChannel = (activity) => {\r\n const eventListenersRef = useRef([]);\r\n const getHost = useCallback(() => window.ReactNativeWebView, []);\r\n\r\n const { validateIncomingMessage, validateOutgoingMessage } = useMemo(() => getValidators(), []);\r\n\r\n const postMessage = useCallback((payload) => {\r\n const messagePayload = JSON.stringify(payload);\r\n\r\n const host = getHost();\r\n if (!host) {\r\n activity.error('[error][postMessage] Host not found, cannot post message, aborting');\r\n return;\r\n }\r\n\r\n if (!validateOutgoingMessage(payload)) {\r\n activity.error('[error][postMessage] Invalid outgoing message, cannot process, aborting');\r\n return;\r\n }\r\n\r\n host.postMessage(messagePayload);\r\n }, [activity, getHost, validateOutgoingMessage]);\r\n\r\n const onMessage = useCallback((message) => {\r\n const { data: payload, origin } = message || {};\r\n\r\n activity.trace(`[trace][onMessage] Incoming message non-validated: ${JSON.stringify(payload)}`);\r\n\r\n if (origin !== window.location.origin) {\r\n activity.error('[error][onMessage] Invalid origin, cannot process, aborting');\r\n return;\r\n }\r\n\r\n if (payload === undefined || payload === null || payload === '') {\r\n activity.trace('[trace][onMessage] Incoming message payload is empty, cannot process, aborting');\r\n return;\r\n }\r\n\r\n if (!validateIncomingMessage(payload)) {\r\n activity.error('[error][onMessage] Invalid incoming message, cannot process, aborting');\r\n return;\r\n }\r\n\r\n eventListenersRef.current.forEach((listener) => {\r\n try {\r\n listener(payload);\r\n } catch (e) {\r\n activity.error(`[error][onMessage] Failed to handle incoming message: ${JSON.stringify(e.message)}`);\r\n }\r\n });\r\n\r\n activity.trace(`[trace][onMessage] Incoming message validated: ${JSON.stringify(payload)}`);\r\n }, [activity, validateIncomingMessage]);\r\n\r\n useEffect(() => {\r\n window.addEventListener('message', onMessage);\r\n return () => window.removeEventListener('message', onMessage);\r\n }, [onMessage]);\r\n\r\n useEffect(() => {\r\n postMessage({ messageType: WebViewMessageType.onLoaded, data: null });\r\n }, [postMessage]);\r\n\r\n const addEventListener = useCallback((listener) => {\r\n eventListenersRef.current.push(listener);\r\n return () => {\r\n eventListenersRef.current = eventListenersRef.current.filter(l => l !== listener);\r\n };\r\n }, []);\r\n\r\n return { addEventListener, getHost, postMessage };\r\n};\r\n","import _ from 'underscore';\r\nimport React, { useEffect, useMemo, useContext, createContext, useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { InstrumentationContext } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { useGlobalFilterContext } from '@bingads-webui-react/global-filter-context';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { I18nModel } from '@bingads-webui-universal/i18n-model';\r\nimport { WaterfallFilterType } from '@bingads-webui-campaign/filter-storage';\r\nimport { generateDateData, translateLegacyToIANATimezone, parseCivilDate, getDaysOfARange } from '@bingads-webui-universal/temporal-utitlities';\r\nimport { WebViewMessageType } from './schema-validation';\r\nimport { instrumentationSchema } from './instrumentation-schema';\r\nimport { useMessagingChannel } from './use-messaging-channel';\r\n\r\nexport const WebViewContext = createContext();\r\n\r\nexport function useWebViewContext() {\r\n return useContext(WebViewContext);\r\n}\r\n\r\nexport const dateChangeListener = (i18n, serverContext, message, activity, updateWaterfallFilter, postMessage) => {\r\n if (message.messageType === WebViewMessageType.onGlobalFilterDateChange) {\r\n activity.trace(`[trace][onGlobalFilterDateChange] incoming message payload: ${JSON.stringify(message.data)}`);\r\n\r\n try {\r\n const selectedRange = {\r\n start: parseCivilDate({ i18n, dateString: message.data.RangeStartDate }),\r\n end: parseCivilDate({ i18n, dateString: message.data.RangeEndDate }),\r\n };\r\n const rangeDays = getDaysOfARange(selectedRange);\r\n const filterData = generateDateData(\r\n i18n,\r\n {\r\n selectedComparedRange: null,\r\n comparedOption: null,\r\n selectedRange,\r\n rangeType: {\r\n rangeId: message.data.RangeId,\r\n },\r\n rangeIndex: 0,\r\n rangeDays,\r\n },\r\n serverContext.CurrentUser.CultureDateTimeFormat.ShortDatePattern,\r\n serverContext.CurrentUser.LocaleID,\r\n translateLegacyToIANATimezone(serverContext.CurrentAccount.TimeZone)\r\n );\r\n\r\n activity.trace(`[trace][onGlobalFilterDateChange] updateWaterfallFilter payload: ${JSON.stringify(filterData)}`);\r\n\r\n updateWaterfallFilter({\r\n filterType: WaterfallFilterType.DateFilter,\r\n filter: filterData,\r\n });\r\n\r\n activity.trace(`[trace][onGlobalFilterDateChange] updateWaterfallFilter success: ${JSON.stringify(filterData)}`);\r\n } catch (error) {\r\n activity.error(`[error][onGlobalFilterDateChange] updateWaterfallFilter failed: ${JSON.stringify(error)}`);\r\n postMessage({ messageType: WebViewMessageType.onError, data: error });\r\n }\r\n }\r\n};\r\n\r\nexport const WebViewContextProvider = ({ children }) => {\r\n const instrumentation = useContext(InstrumentationContext);\r\n const serverContext = useContext(ServerContext);\r\n const { updateWaterfallFilter } = useGlobalFilterContext();\r\n\r\n const i18nFormat = useMemo(() => new I18nModel({\r\n loadTranslationData: (/* locale */) => ({}),\r\n loadCLDRData: currentLocale => currentLocale,\r\n failFast: true,\r\n }), []);\r\n\r\n const activity = useMemo(() => {\r\n if (instrumentation && !instrumentation.webView) {\r\n instrumentation.addScenario(instrumentationSchema);\r\n }\r\n if (instrumentation && instrumentation.webView) {\r\n const scenario = instrumentation.webView.create();\r\n return scenario.message.create();\r\n }\r\n return { trace: _.noop, error: _.noop };\r\n }, [instrumentation]);\r\n\r\n const { getHost, postMessage, addEventListener } = useMessagingChannel(activity);\r\n\r\n const dateChangeListenerCallback = useCallback((message) => {\r\n dateChangeListener(i18nFormat, serverContext, message, activity, updateWaterfallFilter, postMessage);\r\n }, [i18nFormat, serverContext, activity, updateWaterfallFilter, postMessage]);\r\n\r\n useEffect(() => {\r\n if (!addEventListener) {\r\n return _.noop;\r\n }\r\n\r\n const removeListener = addEventListener(dateChangeListenerCallback);\r\n return () => removeListener();\r\n }, [addEventListener, dateChangeListenerCallback]);\r\n\r\n const value = useMemo(() => ({\r\n addEventListener,\r\n getHost,\r\n postMessage,\r\n }), [addEventListener, getHost, postMessage]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nWebViewContextProvider.propTypes = {\r\n children: PropTypes.node,\r\n instrumentation: PropTypes.shape({\r\n webView: PropTypes.shape({\r\n create: PropTypes.func,\r\n }),\r\n addScenario: PropTypes.func,\r\n }),\r\n};\r\n\r\nWebViewContextProvider.defaultProps = {\r\n children: undefined,\r\n instrumentation: undefined,\r\n};\r\n\r\n","import _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { CampaignOData } from '@bingads-webui-react/campaign-odata';\r\nimport { withScope, QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { getRoutePathById, withSiteMap } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { CampaignSubTypeMapping } from '@bingads-webui-campaign-react/constants';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\n\r\nexport function withCampaign(Component) {\r\n const AdGroupCreationHoC = (props) => {\r\n const { scope: { values: { campaignId } } } = props;\r\n if (_.isUndefined(campaignId)) {\r\n props.scope.history.push({\r\n pathname: getRoutePathById(props.siteMap, 'adgroups'),\r\n search: props.scope.history.location.search,\r\n });\r\n return null;\r\n }\r\n\r\n /**\r\n * Get all data instead of partial data to avoid duplicate fetches\r\n * select is required to control the response data\r\n */\r\n const $select = _.compact([\r\n 'Budget',\r\n ]);\r\n\r\n return (\r\n currentCampaign.get({ select: $select })}\r\n >\r\n {(campaign) => {\r\n const currentCampaign = { ...campaign, CampaignSubType: CampaignSubTypeMapping[campaign.CampaignSubType], _IsAllData: true };\r\n\r\n return (\r\n \r\n );\r\n }}\r\n \r\n );\r\n };\r\n\r\n AdGroupCreationHoC.propTypes = {\r\n permissions: PropTypes.shape({\r\n IsPersonalizedOffersEnabled: PropTypes.bool.isRequired,\r\n }).isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n siteMap: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n };\r\n\r\n return withScope(withSiteMap(withPermissions(AdGroupCreationHoC)));\r\n}\r\n","import _ from 'underscore';\r\n\r\nconst campaignIdToCampaignTypeMap = {};\r\n\r\nexport const getCampaignType = campaignId => campaignIdToCampaignTypeMap[campaignId] || '';\r\n\r\nexport const setCampaignType = (campaignId, campaignType) => {\r\n if (_.isNumber(campaignId) && _.isString(campaignType)) {\r\n campaignIdToCampaignTypeMap[campaignId] = campaignType;\r\n }\r\n};\r\n\r\nexport const setCampaignTypes = (campaigns) => {\r\n if (_.isArray(campaigns)) {\r\n _.each(campaigns, campaign => setCampaignType(campaign.Id, campaign.CampaignType));\r\n }\r\n};\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { withScope, QueryParam } from '@bingads-webui-react/scope-service';\r\n\r\nimport { getCampaignType } from './campaign-type-map';\r\n\r\nexport function withCampaignType(Component) {\r\n const Wrapper = (props) => {\r\n const {\r\n scope: { values: { campaignId } },\r\n } = props;\r\n const campaignIdNumber = Number(campaignId);\r\n if (campaignIdNumber <= 0 || _.isNaN(campaignIdNumber)) {\r\n return ;\r\n }\r\n return (\r\n \r\n );\r\n };\r\n\r\n Wrapper.propTypes = {\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n };\r\n\r\n return withScope(Wrapper);\r\n}\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Scope, getCurrentScope } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { QueryParam, withScope } from '@bingads-webui-react/scope-service';\r\nimport { withPreference } from '@bingads-webui-react/preference-context';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\n\r\nconst LANDING_PAGE_PREFERENCE = 'OverviewAsDefaultTab';\r\nconst ACCOUNTS_LANDING_PAGE_PREFERENCE = 'AccountsOverviewAsDefaultTab';\r\nconst OVERVIEW = 'overview';\r\nconst CAMPAIGNS = 'campaigns';\r\nconst ACCOUNTS_SUMMARY = 'accounts-summary';\r\nconst ACCOUNTS_OVERVIEW = 'accounts-overview';\r\n\r\nfunction getLandingPageAndScopeState(scope, permissions, preferenceService) {\r\n const { values: { aid, campaignId, adGroupId } } = scope;\r\n const currentScope = getCurrentScope(campaignId, adGroupId, aid);\r\n const isCustomerScope = Scope.Customer === currentScope;\r\n const preferenceData = isCustomerScope ? preferenceService.findByNameAtUserLevel(ACCOUNTS_LANDING_PAGE_PREFERENCE) :\r\n preferenceService.findByName(LANDING_PAGE_PREFERENCE);\r\n\r\n if (!preferenceData || preferenceData.Data === true) {\r\n if (isCustomerScope) {\r\n return {\r\n defaultLandingPage: ACCOUNTS_OVERVIEW,\r\n isCustomerScope,\r\n };\r\n }\r\n return {\r\n defaultLandingPage: OVERVIEW,\r\n isCustomerScope,\r\n };\r\n }\r\n\r\n return {\r\n defaultLandingPage: isCustomerScope ? ACCOUNTS_SUMMARY : CAMPAIGNS,\r\n isCustomerScope,\r\n };\r\n}\r\n\r\nexport const withDefaultLandingPage = (WrappedComponent) => {\r\n class DefaultLandingPage extends React.PureComponent {\r\n static getDerivedStateFromProps({ scope, permissions, preferenceService }) {\r\n return _.extend({ scope }, getLandingPageAndScopeState(scope, permissions, preferenceService));\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = getLandingPageAndScopeState(this.props.scope, this.props.permissions, this.props.preferenceService);\r\n }\r\n\r\n setLandingPage = (pageId, e) => {\r\n e.stopPropagation(); // To prevent the entire row clicking.\r\n\r\n const {\r\n preferenceService,\r\n } = this.props;\r\n\r\n if (this.state.isCustomerScope) {\r\n preferenceService.setAtUserLevel({\r\n Name: ACCOUNTS_LANDING_PAGE_PREFERENCE,\r\n Data: pageId === ACCOUNTS_OVERVIEW,\r\n });\r\n } else {\r\n preferenceService.set({\r\n Name: LANDING_PAGE_PREFERENCE,\r\n Data: pageId === OVERVIEW,\r\n });\r\n }\r\n\r\n this.setState({\r\n defaultLandingPage: pageId,\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n }\r\n\r\n DefaultLandingPage.propTypes = {\r\n preferenceService: PropTypes.shape({\r\n setAtUserLevel: PropTypes.func,\r\n findByNameAtUserLevel: PropTypes.func,\r\n }).isRequired,\r\n permissions: PropTypes.shape({\r\n }).isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n };\r\n\r\n return withScope(withPermissions(withPreference(DefaultLandingPage)));\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { find } from 'underscore';\r\nimport { QueryParam, withScope } from '@bingads-webui-react/scope-service';\r\nimport { withInstrumentation } from '@bingads-webui-react/hoc-with-instrumentation';\r\n\r\nexport function withOpportunityId(WrappedComponent) {\r\n class OpportunityId extends React.PureComponent {\r\n static propTypes = {\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n instrumentation: PropTypes.shape().isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.currentScenario = null;\r\n this.currentActivity = null;\r\n this.opportunityId = null;\r\n this.recommendationType = null;\r\n }\r\n\r\n componentDidMount() {\r\n const { scope, instrumentation } = this.props;\r\n if (scope.values.opportunityId) {\r\n this.opportunityId = scope.values.opportunityId;\r\n this.recommendationType = scope.values.recommendationType;\r\n\r\n if (this.recommendationType) {\r\n if (instrumentation[`load${this.recommendationType}`]) {\r\n this.currentScenario = instrumentation[`load${this.recommendationType}`].create();\r\n this.currentActivity = this.currentScenario.apply.create();\r\n }\r\n }\r\n\r\n delete scope.values.opportunityId;\r\n delete scope.values.recommendationType;\r\n this.props.scope.history.replace({\r\n pathname: scope.history.location.pathname,\r\n search: scope.stringify(),\r\n });\r\n }\r\n }\r\n\r\n onFilterServiceLoaded = ({ filterService }) => {\r\n this.filterService = filterService;\r\n }\r\n\r\n isOpportunityIdValid() {\r\n const isValid = this.opportunityId != null && this.recommendationType != null;\r\n return isValid;\r\n }\r\n\r\n // When user comes from recommendation page for fix ad content type, it will bring editorial rejection reason filter\r\n // The function is used to check if the filter condition still contains editorial rejection reason\r\n isFilterConditionValid() {\r\n if (this.filterService && this.filterService.editableFilter) {\r\n const { query } = this.filterService.editableFilter;\r\n if (query.EditorialRejectionFlagId) {\r\n return true;\r\n } else if (query.$and) {\r\n const filters = query.$and;\r\n return !!find(filters, filter => filter.EditorialRejectionFlagId);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n shouldSendOpportunityLog = () => this.isOpportunityIdValid() && this.isFilterConditionValid()\r\n\r\n logOpportunity= ({ context }) => {\r\n if (this.currentActivity) {\r\n this.currentActivity.trace({\r\n Campaign: {\r\n CampaignId: context.campaignId,\r\n AdGroupId: context.adGroupId,\r\n AdId: context.adId,\r\n KeywordIds: context.keywordIds,\r\n },\r\n AdInsight: {\r\n OpportunityType: this.recommendationType,\r\n OpportunityId: this.opportunityId,\r\n },\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n }\r\n\r\n return withScope(withInstrumentation(OpportunityId));\r\n}\r\n","/* istanbul ignore file */\r\nimport _ from 'underscore';\r\nimport { WaterfallFilterType } from '@bingads-webui/filter-commons';\r\nimport { CampaignType } from '@bingads-webui-react/with-site-map';\r\n\r\nconst CampaignTypeByEnumValue = {\r\n \"Enum.CampaignType'Default'\": CampaignType.Default,\r\n \"Enum.CampaignType'Shopping'\": CampaignType.Shopping,\r\n \"Enum.CampaignType'Audience'\": CampaignType.Audience,\r\n \"Enum.CampaignType'Smart'\": CampaignType.Smart,\r\n \"Enum.CampaignType'Hotel'\": CampaignType.Hotel,\r\n \"Enum.CampaignType'PerformanceMax'\": CampaignType.PerformanceMax,\r\n \"Enum.CampaignType'App'\": CampaignType.App,\r\n \"Enum.CampaignType'LinkedIn'\": CampaignType.LinkedIn,\r\n};\r\n\r\nexport const CampaignTypeToStringMap = {\r\n [CampaignType.Default]: 'Default',\r\n [CampaignType.Shopping]: 'Shopping',\r\n [CampaignType.Audience]: 'Audience',\r\n [CampaignType.Smart]: 'Smart',\r\n [CampaignType.Hotel]: 'Hotel',\r\n [CampaignType.PerformanceMax]: 'PerformanceMax',\r\n [CampaignType.App]: 'App',\r\n [CampaignType.LinkedIn]: 'LinkedIn',\r\n};\r\n\r\nexport function getFilteredCampaignType(rawFilter) {\r\n const filteredCampainTypes = rawFilter\r\n && rawFilter.value\r\n && rawFilter.value.query\r\n && rawFilter.value.query.CampaignType\r\n && rawFilter.value.query.CampaignType.$in;\r\n\r\n if (_.isEmpty(filteredCampainTypes)) {\r\n return CampaignType.All;\r\n }\r\n\r\n return CampaignTypeByEnumValue[filteredCampainTypes[0]];\r\n}\r\n\r\nconst CampaignTypeEnumValuePrefix = 'Enum.CampaignType';\r\nfunction addPrefixToEnumValue(prefix, enumValue) {\r\n return `${prefix}'${enumValue}'`;\r\n}\r\n\r\nexport function convertFilteredCampaignTypeToFilter(campaignType) {\r\n if (campaignType === CampaignType.All) {\r\n return { key: WaterfallFilterType.CampaignType, value: { query: null } };\r\n }\r\n\r\n return {\r\n key: WaterfallFilterType.CampaignType,\r\n value: {\r\n query: {\r\n CampaignType: {\r\n $in:\r\n [addPrefixToEnumValue(\r\n CampaignTypeEnumValuePrefix,\r\n [CampaignTypeToStringMap[campaignType]]\r\n )],\r\n },\r\n },\r\n },\r\n };\r\n}\r\n\r\nexport function filterMapItem(siteMap, predicate, permissions) {\r\n return _.reduce(siteMap, (result, item) => {\r\n if (predicate(item, permissions)) {\r\n const children = filterMapItem(item.children, predicate, permissions);\r\n result.push(_.defaults({ children }, item));\r\n }\r\n return result;\r\n }, []);\r\n}\r\n\r\nexport function campaignTypeFilter(campaignType, { campaignTypes }, permissions) {\r\n return _.isFunction(campaignTypes) ? campaignTypes(campaignType, permissions) :\r\n _.some(campaignTypes, type => (type === campaignType) ||\r\n (type & campaignType)); // eslint-disable-line no-bitwise\r\n}\r\n\r\nexport function filterMapItemByCampaignType(siteMap, currentCampaignType, permissions) {\r\n return filterMapItem(siteMap, _.partial(campaignTypeFilter, currentCampaignType), permissions);\r\n}\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { memoize } from '@bingads-webui-universal/primitive-utilities';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { CampaignOData } from '@bingads-webui-react/campaign-odata';\r\nimport { CampaignType, siteMapPropType } from '@bingads-webui-react/with-site-map';\r\nimport { filterMapItem, campaignTypeFilter } from './processor-helpers';\r\n\r\nconst allTypes = [CampaignType.All];\r\nconst emptyTypes = [CampaignType.None];\r\n\r\nconst filterMapItemBase = (siteMap, types, permissions) => {\r\n const filter = mapItem => _.reduce(\r\n types,\r\n (result, type) =>\r\n result || campaignTypeFilter(type, mapItem, permissions),\r\n false\r\n );\r\n\r\n return filterMapItem(siteMap, filter);\r\n};\r\n\r\nconst getCampaignTypes = types =>\r\n _.map(types, type => _.result(CampaignType, type, CampaignType.None));\r\n\r\nconst filterMapItemCached = memoize(filterMapItemBase);\r\nconst getCampaignTypesCached = memoize(getCampaignTypes);\r\n\r\n/**\r\n * Only for testing\r\n */\r\nexport const testRef = { current: undefined };\r\n\r\nexport function processCampaignType(Component) {\r\n const Wrapper = ({ siteMap, ...props }) => {\r\n const processor = types => ();\r\n\r\n return (\r\n currentAccount['Default.CampaignTypes'].$makeCall()}\r\n escapeHatch={({ currentAccount }) => (currentAccount ? undefined : {})}\r\n fallback={processor(allTypes)}\r\n onError={() => processor(emptyTypes)}\r\n testRef={testRef}\r\n >\r\n {campaignTypes => processor(_.isEmpty(campaignTypes.value) ?\r\n emptyTypes :\r\n getCampaignTypesCached(campaignTypes.value))}\r\n \r\n );\r\n };\r\n\r\n Wrapper.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n permissions: PropTypes.objectOf(PropTypes.oneOfType([\r\n PropTypes.bool,\r\n PropTypes.objectOf(PropTypes.bool),\r\n PropTypes.number,\r\n ])).isRequired,\r\n };\r\n\r\n return withPermissions(Wrapper);\r\n}\r\n","import _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { memoize } from '@bingads-webui-universal/primitive-utilities';\r\nimport { CampaignOData } from '@bingads-webui-react/campaign-odata';\r\nimport { withScope, QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { CampaignType, siteMapPropType } from '@bingads-webui-react/with-site-map';\r\nimport { campaignTypeFilter, filterMapItem } from './processor-helpers';\r\n\r\nconst defaultCampaign = { CampaignType: CampaignType.All };\r\n\r\n\r\nconst filterMapItemByCampaign = (siteMap, permissions, campaignId, currentCampaign) => {\r\n const campaignFilter = (campaign, item) =>\r\n campaignTypeFilter(_.result(CampaignType, campaign.CampaignType, CampaignType.All), item, permissions) && // eslint-disable-line\r\n (!campaignId || !_.isFunction(item.currentCampaign) ||\r\n item.currentCampaign(campaign === defaultCampaign ? null : campaign, permissions));\r\n\r\n return filterMapItem(\r\n siteMap,\r\n _.partial(campaignFilter, currentCampaign),\r\n permissions\r\n );\r\n};\r\n\r\nconst filterMapItemByCampaignCached = memoize(filterMapItemByCampaign);\r\n\r\n/**\r\n * Only for testing\r\n */\r\nexport const testRef = { current: undefined };\r\n\r\nexport function processCampaignId(Component) {\r\n const Wrapper = ({ siteMap, ...props }) => {\r\n const {\r\n scope: { values: { campaignId } },\r\n permissions,\r\n } = props;\r\n\r\n const processor = campaign => ();\r\n\r\n return (\r\n currentCampaign.get()}\r\n escapeHatch={({ currentCampaign }) => (currentCampaign ? undefined : {})}\r\n fallback={processor(defaultCampaign)}\r\n onError={() => processor(defaultCampaign)}\r\n testRef={testRef}\r\n >\r\n {campaign => processor(campaign)}\r\n \r\n );\r\n };\r\n\r\n Wrapper.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n permissions: PropTypes.objectOf(PropTypes.oneOfType([\r\n PropTypes.bool,\r\n PropTypes.objectOf(PropTypes.bool),\r\n PropTypes.number,\r\n ])).isRequired,\r\n };\r\n\r\n return withPermissions(withScope(Wrapper));\r\n}\r\n","import _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { memoize } from '@bingads-webui-universal/primitive-utilities';\r\nimport { CampaignOData } from '@bingads-webui-react/campaign-odata';\r\nimport { withScope, QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { withGlobalFilter } from '@bingads-webui-react/global-filter-context';\r\nimport { WaterfallFilterType } from '@bingads-webui/filter-commons';\r\nimport { CampaignType, siteMapPropType } from '@bingads-webui-react/with-site-map';\r\nimport { filterMapItem, getFilteredCampaignType } from './processor-helpers';\r\n\r\nconst defaultCampaign = { CampaignType: CampaignType.All };\r\n\r\nfunction smartCampaignFilter(\r\n campaign,\r\n globalCampaignType,\r\n { isSmartPage }\r\n) {\r\n const isScopedSmartCampaign = campaign && campaign.Id ?\r\n campaign.CampaignType === 'Smart' :\r\n false;\r\n\r\n if (isScopedSmartCampaign || globalCampaignType === CampaignType.Smart) {\r\n // If the global filter is CampaignType.Smart\r\n // Or if you're scoped to a campaign of type \"Smart\"\r\n // Then want to hide all the other tabs\r\n return isSmartPage;\r\n }\r\n\r\n return !isSmartPage;\r\n}\r\n\r\nconst filterMapItemByCampaign = (siteMap, globalCampaignType, currentCampaign) => {\r\n const campaignFilter = (campaign, item) =>\r\n smartCampaignFilter(campaign, globalCampaignType, item);\r\n\r\n return filterMapItem(siteMap, _.partial(campaignFilter, currentCampaign));\r\n};\r\n\r\nconst filterMapItemByCampaignCached = memoize(filterMapItemByCampaign);\r\n\r\n/**\r\n * Only for testing\r\n */\r\nexport const testRef = { current: undefined };\r\n\r\nexport function processSmartCampaign(Component) {\r\n const Wrapper = ({ siteMap, ...props }) => {\r\n const globalCampaignType\r\n = getFilteredCampaignType(props[WaterfallFilterType.CampaignType]);\r\n\r\n const processor = campaign => ();\r\n\r\n return (\r\n currentCampaign.get()}\r\n escapeHatch={({ currentCampaign }) => (currentCampaign ? undefined : {})}\r\n fallback={processor(defaultCampaign)}\r\n onError={() => processor(defaultCampaign)}\r\n testRef={testRef}\r\n >\r\n {campaign => processor(campaign)}\r\n \r\n );\r\n };\r\n\r\n Wrapper.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n };\r\n\r\n return withGlobalFilter(withScope(Wrapper));\r\n}\r\n\r\nexport function processSmartCampaignSearch(Component) {\r\n const smartCampaignSearchFilter = ({ isSmartPage }) => !isSmartPage;\r\n const Wrapper = ({ siteMap, ...props }) => (\r\n \r\n );\r\n\r\n Wrapper.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n };\r\n\r\n return Wrapper;\r\n}\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport { memoize } from '@bingads-webui-universal/primitive-utilities';\r\nimport { CampaignOData } from '@bingads-webui-react/campaign-odata';\r\nimport { withGlobalFilter } from '@bingads-webui-react/global-filter-context';\r\nimport { CampaignType, siteMapPropType } from '@bingads-webui-react/with-site-map';\r\nimport { WaterfallFilterType } from '@bingads-webui/filter-commons';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { getFilteredCampaignType } from './processor-helpers';\r\n\r\nconst defaultCampaign = { CampaignType: CampaignType.All };\r\n\r\nconst update = (items) => {\r\n return _.reduce(items, (result, item) => {\r\n // eslint-disable-next-line no-param-reassign\r\n item.children = update(item.children);\r\n if (item.id === 'ads-and-extensions') {\r\n result.push({ ..._.omit(item, 'name'), name: _TL_('Extensions') });\r\n } else {\r\n result.push(item);\r\n }\r\n return result;\r\n }, []);\r\n};\r\n\r\nconst updatePageMenuByCampaign = (siteMap, globalCampaignType, currentCampaign, permissions) => {\r\n const isPmaxCampaign = currentCampaign && currentCampaign.Id ?\r\n currentCampaign.CampaignType === 'PerformanceMax' :\r\n false;\r\n\r\n const isAppCampaign = currentCampaign && currentCampaign.Id ?\r\n currentCampaign.CampaignType === 'App' && permissions.dynamic.UnifiedAppAds:\r\n false;\r\n\r\n const isGlobalPmaxCampaign = globalCampaignType === CampaignType.PerformanceMax;\r\n\r\n const isGlobalAppCampaign = globalCampaignType === CampaignType.App && permissions.dynamic.UnifiedAppAds;\r\n\r\n if (isGlobalPmaxCampaign || isPmaxCampaign || isAppCampaign || isGlobalAppCampaign) {\r\n return update(siteMap);\r\n }\r\n\r\n return siteMap;\r\n};\r\n\r\nconst updatePageMenuByCampaignCached = memoize(updatePageMenuByCampaign);\r\n\r\n/**\r\n * Only for testing\r\n */\r\nexport const testRef = { current: undefined };\r\n\r\nexport function processPmaxCampaignPageMenu(Component) {\r\n const Wrapper = ({ siteMap, permissions, ...props }) => {\r\n const globalCampaignType\r\n = getFilteredCampaignType(props[WaterfallFilterType.CampaignType]);\r\n\r\n const processor = campaign => ();\r\n\r\n return (\r\n currentCampaign.get()}\r\n escapeHatch={({ currentCampaign }) => (currentCampaign ? undefined : {})}\r\n fallback={processor(defaultCampaign)}\r\n onError={() => processor(defaultCampaign)}\r\n testRef={testRef}\r\n >\r\n {campaign => processor(campaign)}\r\n \r\n );\r\n };\r\n\r\n Wrapper.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n };\r\n\r\n return withPermissions(withGlobalFilter(Wrapper));\r\n}\r\n","import React from 'react';\r\nimport { memoize } from '@bingads-webui-universal/primitive-utilities';\r\nimport { CampaignOData } from '@bingads-webui-react/campaign-odata';\r\nimport { CampaignType, siteMapPropType } from '@bingads-webui-react/with-site-map';\r\nimport { filterMapItem } from './processor-helpers';\r\n\r\nconst defaultCampaign = { CampaignType: CampaignType.All };\r\n\r\nconst updatePageMenuByCampaign = (siteMap, currentCampaign) => {\r\n const isPmaxCampaignWithStore = currentCampaign && currentCampaign.CampaignSettings &&\r\n currentCampaign.CampaignSettings[0] && currentCampaign.CampaignSettings[0]['@odata.type'] === '#Model.ShoppingSettings';\r\n\r\n const filter = (item) => {\r\n if (currentCampaign.CampaignType === 'PerformanceMax' && !isPmaxCampaignWithStore) {\r\n return item.id !== 'listing-groups' && item.id !== 'products';\r\n }\r\n return true;\r\n };\r\n\r\n return filterMapItem(siteMap, filter);\r\n};\r\n\r\nconst updatePageMenuByCampaignCached = memoize(updatePageMenuByCampaign);\r\n\r\n/**\r\n * Only for testing\r\n */\r\nexport const testRef = { current: undefined };\r\n\r\nexport function processPmaxRetailCampaignPageMenu(Component) {\r\n const Wrapper = ({ siteMap, ...props }) => {\r\n const processor = campaign => ();\r\n\r\n return (\r\n currentCampaign.get()}\r\n escapeHatch={({ currentCampaign }) => (currentCampaign ? undefined : {})}\r\n fallback={processor(defaultCampaign)}\r\n onError={() => processor(defaultCampaign)}\r\n testRef={testRef}\r\n >\r\n {campaign => processor(campaign)}\r\n \r\n );\r\n };\r\n\r\n Wrapper.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n };\r\n\r\n return Wrapper;\r\n}\r\n","import _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { memoize } from '@bingads-webui-universal/primitive-utilities';\r\nimport { CampaignOData } from '@bingads-webui-react/campaign-odata';\r\nimport { withScope, QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { withGlobalFilter } from '@bingads-webui-react/global-filter-context';\r\nimport { CampaignType, siteMapPropType, getCurrentScope } from '@bingads-webui-react/with-site-map';\r\nimport { filterMapItem } from './processor-helpers';\r\n\r\nconst defaultCampaign = { CampaignType: CampaignType.All };\r\n\r\nfunction smartShoppingCampaignFilter(\r\n campaign,\r\n currentScope,\r\n { smartShoppingCampaignScope }\r\n) {\r\n const isScopedSmartShoppingCampaign = campaign && campaign.Id ?\r\n campaign.CampaignSubType === 'ShoppingSmartAds' :\r\n false;\r\n\r\n if (isScopedSmartShoppingCampaign && smartShoppingCampaignScope &&\r\n !_.contains(smartShoppingCampaignScope, currentScope)) {\r\n // Hide page not support in current scope.\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\nconst filterMapItemByCampaign = (siteMap, currentScope, currentCampaign) => {\r\n const campaignFilter = (campaign, item) =>\r\n smartShoppingCampaignFilter(campaign, currentScope, item);\r\n\r\n return filterMapItem(siteMap, _.partial(campaignFilter, currentCampaign));\r\n};\r\n\r\nconst filterMapItemByCampaignCached = memoize(filterMapItemByCampaign);\r\n\r\n/**\r\n * Only for testing\r\n */\r\nexport const testRef = { current: undefined };\r\n\r\nexport function processSmartShoppingCampaign(Component) {\r\n const Wrapper = ({ siteMap, ...props }) => {\r\n const {\r\n scope: { values: { aid, campaignId, adGroupId } },\r\n } = props;\r\n const currentScope = getCurrentScope(campaignId, adGroupId, aid);\r\n\r\n const processor = campaign => ();\r\n\r\n return (\r\n currentCampaign.get()}\r\n escapeHatch={({ currentCampaign }) => (currentCampaign ? undefined : {})}\r\n fallback={processor(defaultCampaign)}\r\n onError={() => processor(defaultCampaign)}\r\n testRef={testRef}\r\n >\r\n {campaign => processor(campaign)}\r\n \r\n );\r\n };\r\n\r\n Wrapper.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n };\r\n\r\n return withGlobalFilter(withScope(Wrapper));\r\n}\r\n","import _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { memoize } from '@bingads-webui-universal/primitive-utilities';\r\nimport { CampaignOData } from '@bingads-webui-react/campaign-odata';\r\nimport { withScope, QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { withGlobalFilter } from '@bingads-webui-react/global-filter-context';\r\nimport { CampaignType, siteMapPropType, getCurrentScope } from '@bingads-webui-react/with-site-map';\r\nimport { WaterfallFilterType } from '@bingads-webui/filter-commons';\r\nimport { filterMapItem, getFilteredCampaignType } from './processor-helpers';\r\n\r\nconst defaultCampaign = { CampaignType: CampaignType.All };\r\n\r\nfunction hotelCampaignFilter(\r\n campaign,\r\n globalCampaignType,\r\n currentScope,\r\n { hotelCampaignScope }\r\n) {\r\n const isHotelCampaign = campaign && campaign.Id ?\r\n campaign.CampaignType === 'Hotel' :\r\n false;\r\n\r\n const isGlobalHotelCampaign = globalCampaignType === CampaignType.Hotel;\r\n\r\n if ((isHotelCampaign || isGlobalHotelCampaign) && hotelCampaignScope &&\r\n !_.contains(hotelCampaignScope, currentScope)) {\r\n // Hide page not support in current scope.\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\nconst filterMapItemByCampaign = (siteMap, globalCampaignType, currentScope, currentCampaign) => {\r\n const campaignFilter = (campaign, item) =>\r\n hotelCampaignFilter(campaign, globalCampaignType, currentScope, item);\r\n\r\n return filterMapItem(siteMap, _.partial(campaignFilter, currentCampaign));\r\n};\r\n\r\nconst filterMapItemByCampaignCached = memoize(filterMapItemByCampaign);\r\n\r\n/**\r\n * Only for testing\r\n */\r\nexport const testRef = { current: undefined };\r\n\r\nexport function processHotelCampaign(Component) {\r\n const Wrapper = ({ siteMap, ...props }) => {\r\n const {\r\n scope: { values: { aid, campaignId, adGroupId } },\r\n } = props;\r\n const currentScope = getCurrentScope(campaignId, adGroupId, aid);\r\n const globalCampaignType\r\n = getFilteredCampaignType(props[WaterfallFilterType.CampaignType]);\r\n\r\n const processor = campaign => ();\r\n\r\n return (\r\n currentCampaign.get()}\r\n escapeHatch={({ currentCampaign }) => (currentCampaign ? undefined : {})}\r\n fallback={processor(defaultCampaign)}\r\n onError={() => processor(defaultCampaign)}\r\n testRef={testRef}\r\n >\r\n {campaign => processor(campaign)}\r\n \r\n );\r\n };\r\n\r\n Wrapper.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n };\r\n\r\n return withGlobalFilter(withScope(Wrapper));\r\n}\r\n","import _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { CampaignOData } from '@bingads-webui-react/campaign-odata';\r\nimport { withScope, QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { withGlobalFilter } from '@bingads-webui-react/global-filter-context';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { siteMapPropType, CampaignType, AdGroupType } from '@bingads-webui-react/with-site-map';\r\nimport { memoize } from '@bingads-webui-universal/primitive-utilities';\r\nimport { filterMapItem, campaignTypeFilter } from './processor-helpers';\r\n\r\nfunction mixedModeAdGroupFilter(adGroupType, item, permissions) {\r\n if (!permissions.IsDSAMixedModeCampaignEnabled) {\r\n return true;\r\n }\r\n\r\n if (!_.isEmpty(adGroupType)) {\r\n const { mixedModeAdGroup } = item;\r\n\r\n if (_.isFunction(mixedModeAdGroup)) {\r\n return mixedModeAdGroup({ AdGroupType: adGroupType }, item, permissions);\r\n }\r\n\r\n const isSearchDynamicAdGroup = adGroupType === 'SearchDynamic';\r\n if (isSearchDynamicAdGroup) {\r\n const { campaignTypes, adGroupTypes } = item;\r\n if (_.contains(campaignTypes, CampaignType.Default)) {\r\n return campaignTypeFilter(CampaignType.Default, { campaignTypes }, permissions) &&\r\n _.contains(adGroupTypes, AdGroupType.SearchDynamic);\r\n }\r\n return true;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n\r\nconst filterItemByAdGroup = memoize((siteMap, adGroupType, permissions) =>\r\n filterMapItem(siteMap, _.partial(mixedModeAdGroupFilter, adGroupType), permissions));\r\n\r\n/**\r\n* Only for testing\r\n*/\r\nexport const testRef = { current: undefined };\r\n\r\nexport function processMixedModeAdGroup(Component) {\r\n const Wrapper = ({ siteMap, ...props }) => {\r\n const { permissions: { IsDSAMixedModeCampaignEnabled }, permissions } = props;\r\n\r\n if (!IsDSAMixedModeCampaignEnabled) {\r\n return ;\r\n }\r\n\r\n const processor = (adGroupType) => {\r\n const processedSiteMap = filterItemByAdGroup(siteMap, adGroupType, permissions);\r\n return ();\r\n };\r\n\r\n return (\r\n currentAdGroup.get()}\r\n escapeHatch={({ currentAdGroup }) =>\r\n (currentAdGroup ? undefined : {})}\r\n fallback={processor()}\r\n onError={() => processor()}\r\n testRef={testRef}\r\n >\r\n {adgroup => processor(_.result(adgroup, 'AdGroupType'))}\r\n \r\n );\r\n };\r\n\r\n Wrapper.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n permissions: PropTypes.objectOf(PropTypes.oneOfType([\r\n PropTypes.bool,\r\n PropTypes.objectOf(PropTypes.bool),\r\n PropTypes.number,\r\n ])).isRequired,\r\n };\r\n\r\n return withPermissions(withGlobalFilter(withScope(Wrapper)));\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withGlobalFilter } from '@bingads-webui-react/global-filter-context';\r\nimport { WaterfallFilterType } from '@bingads-webui/filter-commons';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { siteMapPropType } from '@bingads-webui-react/with-site-map';\r\nimport { memoize } from '@bingads-webui-universal/primitive-utilities';\r\nimport { getFilteredCampaignType, filterMapItemByCampaignType } from './processor-helpers';\r\n\r\nconst cachedFilter = memoize(filterMapItemByCampaignType);\r\n\r\nexport function processGlobalFilter(Component) {\r\n const Wrapper = ({ siteMap, ...props }) => {\r\n const campaignType\r\n = getFilteredCampaignType(props[WaterfallFilterType.CampaignType]);\r\n const processedSiteMap = cachedFilter(siteMap, campaignType, props.permissions);\r\n\r\n return ();\r\n };\r\n\r\n Wrapper.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n permissions: PropTypes.objectOf(PropTypes.oneOfType([\r\n PropTypes.bool,\r\n PropTypes.objectOf(PropTypes.bool),\r\n PropTypes.number,\r\n ])).isRequired,\r\n };\r\n\r\n return withPermissions(withGlobalFilter(Wrapper));\r\n}\r\n","import React from 'react';\r\nimport { isUndefined } from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { withServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { siteMapPropType } from '@bingads-webui-react/with-site-map';\r\nimport { ACCOUNT_MODE } from '@bingads-webui-campaign/campaign-ui-common';\r\nimport { filterMapItem } from './processor-helpers';\r\n\r\nconst importCenterModeFilter = ({ smartAccountEnabled }) =>\r\n (isUndefined(smartAccountEnabled) ? true : smartAccountEnabled);\r\n\r\nexport function processImportCenterMode(Component) {\r\n const Wrapper = ({ siteMap, ...props }) => {\r\n const { CurrentAccount } = props.serverContext || {};\r\n const processedSiteMap = (CurrentAccount && CurrentAccount.AccountMode === ACCOUNT_MODE.SMART) ?\r\n filterMapItem(siteMap, importCenterModeFilter) : siteMap;\r\n return ();\r\n };\r\n\r\n Wrapper.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n serverContext: PropTypes.shape({\r\n CurrentAccount: PropTypes.shape({}),\r\n }).isRequired,\r\n };\r\n\r\n return withServerContext(Wrapper);\r\n}\r\n","import _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { withScope, QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { siteMapPropType } from '@bingads-webui-react/with-site-map';\r\n\r\nconst assetReportAdTypeFilter = items => _.reduce(items, (result, item) => {\r\n // eslint-disable-next-line no-param-reassign\r\n item.children = assetReportAdTypeFilter(item.children);\r\n if (item.id !== 'combinations') {\r\n result.push(item);\r\n }\r\n return result;\r\n}, []);\r\n\r\nexport function processAssetReportAdType(Component) {\r\n const Wrapper = ({ siteMap, ...props }) => {\r\n const { scope } = props;\r\n\r\n if (scope && scope.values &&\r\n ((scope.values.adType === 'DynamicSearch' || scope.values.adType === 'DynamicResponsive')\r\n || scope.values.campaignType === 'Audience')) {\r\n const processedSiteMap = assetReportAdTypeFilter(siteMap);\r\n return ();\r\n }\r\n return ;\r\n };\r\n\r\n Wrapper.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n };\r\n\r\n return withScope(Wrapper);\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { withScope, QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { siteMapPropType } from '@bingads-webui-react/with-site-map';\r\nimport { storeQueries, useDataSourceInitializer } from '@bingads-webui-campaign-react/merchant-shared';\r\nimport { ReactObservablePromise } from '@bingads-webui-react/react-observable-promise';\r\nimport { withServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { filterMapItem } from './processor-helpers';\r\n\r\nconst dynamicTabIds = ['mmc-products', 'mmc-store-summary-diagnostics'];\r\n\r\nconst getSupportedDynamicTabs = (storeBootstrapData) => {\r\n const supportedDynamicTabs = [];\r\n if (storeBootstrapData.StoreBootstrapData.ShowProductExplorer) {\r\n supportedDynamicTabs.push('mmc-products');\r\n }\r\n if (storeBootstrapData.StoreBootstrapData.ShowCapiDiag) {\r\n supportedDynamicTabs.push('mmc-store-summary-diagnostics');\r\n }\r\n return supportedDynamicTabs;\r\n};\r\n\r\nconst defaultBootstrapData = {\r\n StoreBootstrapData: {\r\n ShowProductExplorer: false,\r\n ShowCapiDiag: false,\r\n },\r\n};\r\n\r\nconst getFilteredSiteMap = (items, supportedIds = []) => {\r\n const filter = item => supportedIds.includes(item.id) || !dynamicTabIds.includes(item.id);\r\n return filterMapItem(items, filter);\r\n};\r\n\r\nexport function processMMCMenu(Component) {\r\n const Wrapper = ({ siteMap, ...props }) => {\r\n const { scope, serverContext, permissions } = props;\r\n const {\r\n values: {\r\n storeId,\r\n },\r\n } = scope;\r\n\r\n useDataSourceInitializer({ scope, serverContext });\r\n\r\n const proccssor = (storeBootstrapData) => {\r\n const supportedIds = getSupportedDynamicTabs(storeBootstrapData);\r\n const filteredSiteMap = getFilteredSiteMap(siteMap, supportedIds);\r\n return ;\r\n };\r\n\r\n if (!permissions.dynamic.MMCDynamicTab || !storeId) {\r\n return proccssor(defaultBootstrapData);\r\n }\r\n\r\n return (\r\n storeQueries.getNewProviderBootstrapData(storeId)}\r\n promiseHashFn={() => `storeQueries.getNewProviderBootstrapData(${storeId})`}\r\n fallback={proccssor(defaultBootstrapData)}\r\n onError={() => proccssor(defaultBootstrapData)}\r\n >\r\n {storeBootstrapData => proccssor(storeBootstrapData)}\r\n \r\n );\r\n };\r\n\r\n Wrapper.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n permissions: PropTypes.shape({\r\n dynamic: PropTypes.shape({\r\n MMCDynamicTab: PropTypes.bool.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n serverContext: PropTypes.shape({\r\n ServicesEndpoints: PropTypes.shape({\r\n MmcAPI: PropTypes.string.isRequired,\r\n }).isRequired,\r\n CurrentAccount: PropTypes.shape({\r\n AdvertiserCustomerID: PropTypes.number.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n };\r\n\r\n return withServerContext(withPermissions(withScope(Wrapper)));\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { siteMapPropType } from '@bingads-webui-react/with-site-map';\r\nimport { ReactObservablePromise } from '@bingads-webui-react/react-observable-promise';\r\nimport { withServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { isCopilotRegionRestricted } from '@bingads-webui-react/copilot-utils';\r\n\r\nimport { filterMapItem } from './processor-helpers';\r\n\r\nconst defaultRestriction = false;\r\n\r\nconst getFilteredSiteMap = (items, isRegionRestricted) => filterMapItem(items, ({ copilotFeature }) => !copilotFeature || !isRegionRestricted);\r\n\r\nexport function processCopilotRegionRestriction(Component) {\r\n const Wrapper = ({ siteMap, ...props }) => {\r\n const { serverContext, permissions } = props;\r\n\r\n const processor = (isRegionRestricted) => {\r\n const filteredSiteMap = getFilteredSiteMap(siteMap, isRegionRestricted);\r\n return ;\r\n };\r\n\r\n return (\r\n isCopilotRegionRestricted({ feature: 'FullPageFeature', permissions, serverContext })}\r\n promiseHashFn={() => 'isCopilotRegionRestricted'}\r\n fallback={processor(defaultRestriction)}\r\n onError={() => processor(defaultRestriction)}\r\n >\r\n {isRegionRestricted => processor(isRegionRestricted)}\r\n \r\n );\r\n };\r\n\r\n Wrapper.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n permissions: PropTypes.shape({}).isRequired,\r\n serverContext: PropTypes.shape({ }).isRequired,\r\n };\r\n\r\n return withServerContext(withPermissions(Wrapper));\r\n}\r\n","import _ from 'underscore';\r\nimport { processor, withSiteMap as withSiteMapInternal, allSiteMap } from '@bingads-webui-react/with-site-map';\r\nimport { processCampaignType } from './processors/campaign-type-processor';\r\nimport { processCampaignId } from './processors/campaign-id-processor';\r\nimport {\r\n processSmartCampaign, processSmartCampaignSearch\r\n} from './processors/smart-campaign-processor';\r\nimport { processPmaxCampaignPageMenu } from './processors/pmax-campaign-page-menu-processor';\r\nimport { processPmaxRetailCampaignPageMenu } from './processors/pmax-campaign-store-processor';\r\nimport { processSmartShoppingCampaign } from './processors/smart-shopping-campaign-processor';\r\nimport { processHotelCampaign } from './processors/hotel-campaign-processor';\r\nimport { processMixedModeAdGroup } from './processors/mixed-mode-adgroup-processor';\r\nimport { processGlobalFilter } from './processors/global-filter-processor';\r\nimport { processImportCenterMode } from './processors/import-center-mode-processor';\r\nimport { processAssetReportAdType } from './processors/asset-report-ad-type-processor';\r\nimport { processMMCMenu } from './processors/mmc-menu-processor';\r\nimport { processCopilotRegionRestriction } from './processors/copilot-region-restriction-processor';\r\n\r\n_.extend(processor, {\r\n processPermissions: processor.processPermissionsCached,\r\n processScope: processor.processScopeCached,\r\n processPath: processor.processPathCached,\r\n processImportCenterMode,\r\n processCampaignType,\r\n processCampaignId,\r\n processGlobalFilter,\r\n processSmartCampaign,\r\n processSmartCampaignSearch,\r\n processSmartShoppingCampaign,\r\n processHotelCampaign,\r\n processMixedModeAdGroup,\r\n processPmaxCampaignPageMenu,\r\n processPmaxRetailCampaignPageMenu,\r\n processAssetReportAdType,\r\n processMMCMenu,\r\n processCopilotRegionRestriction,\r\n});\r\nexport { processor };\r\n\r\nexport const processorSet = {\r\n basic: [processor.processPermissions, processor.processAccountLinkPermission, processCampaignType, processSmartCampaignSearch],\r\n default: [\r\n processor.processPermissions,\r\n processor.processAccountLinkPermission,\r\n processor.processScope,\r\n processGlobalFilter,\r\n processor.processPath,\r\n ],\r\n all: [\r\n processImportCenterMode,\r\n processMixedModeAdGroup,\r\n processCopilotRegionRestriction,\r\n processor.processPermissions,\r\n processor.processAccountLinkPermission,\r\n processor.processScope,\r\n processGlobalFilter,\r\n processCampaignType,\r\n processCampaignId,\r\n processSmartCampaign,\r\n processSmartShoppingCampaign,\r\n processPmaxRetailCampaignPageMenu,\r\n processHotelCampaign,\r\n processAssetReportAdType,\r\n processMMCMenu,\r\n processor.processPath,\r\n processor.processCustomMapper,\r\n ],\r\n};\r\n\r\nexport const withSiteMap = (\r\n Component, processors = processorSet.default,\r\n siteMap = allSiteMap, rootId = null, propName = 'siteMap'\r\n) => withSiteMapInternal(Component, processors, siteMap, rootId, propName);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport hoistNonReactStatics from 'hoist-non-react-statics';\r\nimport { WaterfallFilterStorage } from '@bingads-webui-campaign/filter-storage';\r\nimport { withPreference } from '@bingads-webui-react/preference-context';\r\nimport { getDisplayName } from '@bingads-webui-react/hoc-utils';\r\n\r\nexport const withWaterfallFilterStorage = (WrappedComponent) => {\r\n const HoC = (props) => {\r\n const ComponentWithStorage = ({ preferenceService, ...rest }) => {\r\n const waterfallFilterStorage = new WaterfallFilterStorage({\r\n preferenceService,\r\n });\r\n\r\n return ();\r\n };\r\n\r\n ComponentWithStorage.propTypes = {\r\n preferenceService: PropTypes.shape({\r\n setAtUserLevel: PropTypes.func.isRequired,\r\n findByNameAtUserLevel: PropTypes.func.isRequired,\r\n }).isRequired,\r\n };\r\n\r\n const ComponentWithPreference = withPreference(ComponentWithStorage);\r\n\r\n return ();\r\n };\r\n\r\n HoC.displayName = `withWaterfallFilterStorage(${getDisplayName(WrappedComponent)})`;\r\n\r\n hoistNonReactStatics(HoC, WrappedComponent);\r\n\r\n return HoC;\r\n};\r\n","import URI from 'urijs';\r\n\r\nexport function isSDK(href = window.location.href) {\r\n const uri = new URI(href);\r\n return uri.search(true).isSDK === 'true';\r\n}\r\n\r\nexport function isSDKPhase2Enabled(href = window.location.href) {\r\n const uri = new URI(href);\r\n return isSDK(href) && uri.search(true).isSDKPhase2Enabled === 'true';\r\n}\r\n\r\nexport function getSDKParams(href = window.location.href) {\r\n const uri = new URI(href);\r\n const search = uri.search(true);\r\n return {\r\n finalUrl: search.finalUrl || '',\r\n mkt: search.mkt || 'en-us',\r\n country: search.country || 'US',\r\n campaignNamePrefix: decodeURIComponent(search.campaignNamePrefix || 'SDK'),\r\n };\r\n}\r\n\r\nexport function getSDKCampaignName(href = window.location.href) {\r\n const prefix = getSDKParams(href).campaignNamePrefix;\r\n\r\n return `${prefix}-Performance-Max-${Date.now()}`;\r\n}\r\n\r\nexport function getLanguageFromMkt(mkt: string) {\r\n const languageMap = {\r\n 'en-us': 'English',\r\n 'de-de': 'German',\r\n 'fr-fr': 'French',\r\n 'it-it': 'Italian',\r\n 'ja-jp': 'Japanese',\r\n 'es-es': 'Spainish',\r\n 'pt-br': 'Portuguese',\r\n 'zh-tw': 'TraditionalChinese',\r\n };\r\n\r\n return languageMap[mkt] || 'English';\r\n}\r\n\r\nexport function getFinalURL(href = window.location.href) {\r\n return getSDKParams(href).finalUrl;\r\n}\r\n\r\nexport function isSdkLoginCompleted(href = window.location.href) {\r\n const uri = new URI(href);\r\n return uri.search(true).sdkLoginCompleted === 'true';\r\n}\r\n\r\nexport const isSDKUrlParam = 'isSDK';\r\n\r\nexport const isSDKCouponEnabledParam = 'isSDKCouponEnabled';\r\n\r\nexport const isSDKSignupNewCustomerParam = 'isSdkSignupNewCustomer';\r\n\r\nexport function isFirefoxSDKSignupScenario() {\r\n /* istanbul ignore next */\r\n return isSDK() && navigator.userAgent.toLowerCase().indexOf('firefox') !== -1 && window.location.href.toLowerCase().indexOf('pmaxlite/signup') !== -1;\r\n}\r\n\r\nexport function getSignoutUrl() {\r\n const isSignupFlow = window.location.pathname.toLowerCase().indexOf('signup') !== -1;\r\n const sdkLoginPagePath = `campaign/sdk?RURL=${encodeURIComponent(window.location.href)}&sdksignup=${isSignupFlow}`;\r\n return `${window.location.protocol}//${window.location.host}/${sdkLoginPagePath}`;\r\n}\r\n","export const METRIC_OPTIONS = [\r\n 'Clicks',\r\n 'Impressions',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'Spend',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'ConversionsCredit',\r\n 'PartialConversionRate',\r\n 'PartialConversionCPA',\r\n 'AdvertiserReportedRevenue',\r\n 'RevenueOnAdSpend',\r\n];\r\n","import React, { useCallback } from 'react';\r\n\r\ninterface AccordionProps {\r\n open?: boolean;\r\n onOpenChange?: (open: boolean) => void;\r\n}\r\n\r\ninterface CollapseCardProps {\r\n id: string;\r\n isActive: boolean;\r\n activeKeys: string[];\r\n setActiveKeys: (keys: string[]) => void;\r\n}\r\n\r\nexport function withCollapseAdapter(AccordionCard: React.FC) {\r\n const CollapseCard: React.FC = ({\r\n id, isActive, activeKeys, children, setActiveKeys, ...restProps\r\n }) => {\r\n const onOpenChange = useCallback(() => {\r\n setActiveKeys(isActive ? activeKeys.filter(activeKey => activeKey !== id) : [...activeKeys, id]);\r\n }, [activeKeys, isActive, id, setActiveKeys]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n };\r\n\r\n return CollapseCard;\r\n}\r\n","import { FormCard, AccordionCard, FormCardDefaultHeader } from '@bingads-webui-fluent-component/form-cards';\r\nimport { CustomExpandableActuator } from '@bingads-webui-campaign-react/actuator';\r\nimport { withContainerPropInjectingErrorHandling } from '@bingads-webui-campaign-react/error-handling';\r\n\r\nimport { withCollapseAdapter } from './with-collapse-adapter';\r\nimport { withHelpButton } from './with-help-button';\r\n\r\nexport const CollapseCard = withCollapseAdapter(AccordionCard);\r\n\r\nexport const ValidatedFormCard = withContainerPropInjectingErrorHandling(FormCard);\r\nexport const ValidatedCollapseCard = withContainerPropInjectingErrorHandling(CollapseCard, [CustomExpandableActuator]);\r\n\r\nexport const FormCardBasicHeader = withHelpButton(FormCardDefaultHeader);\r\nexport { withCollapseAdapter };\r\n\r\n","import React, { useMemo } from 'react';\r\n\r\nimport { FormCardDefaultHeaderProps } from '@bingads-webui-fluent-component/form-cards';\r\nimport { HelpButton } from '@bingads-webui-react/help-popup';\r\n\r\n\r\ninterface HelpButtonProps {\r\n helpTopic?: string;\r\n helpLabel?: string;\r\n}\r\n\r\nexport function withHelpButton(DefaultHeader: React.FC) {\r\n const FormCardDefaultHeader: React.FC = ({\r\n helpTopic, helpLabel, contentAfter: parentContentAfter, ...restProps\r\n }) => {\r\n const contentAfter = useMemo(() => (\r\n <>\r\n {helpTopic && }\r\n {parentContentAfter}\r\n \r\n ), [helpLabel, helpTopic, parentContentAfter]);\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n FormCardDefaultHeader.defaultProps = {\r\n ...DefaultHeader.defaultProps,\r\n helpLabel: undefined,\r\n helpTopic: undefined,\r\n };\r\n\r\n return FormCardDefaultHeader;\r\n}\r\n"],"names":["Router","props","_jsx","SharedRouter","_objectSpread","Route","SharedRoute","withRouter","sharedWithRouter","Switch","ReactSwitch","Redirect","ReactRedirect","Link","ReactLink","CampaignScopePanel","scope","rest","_objectWithoutProperties","_excluded","currentScope","getCurrentScopeFromService","i18n","selectedEntity","focusedEntity","useFocusedEntityContext","_useCampaignFilter","useCampaignFilter","selectedCampaignTypeFilter","selectedCampaignStatusFilter","selectedAdGroupStatusFilter","hasRootEntityFilter","CampaignType","All","StatusWaterfallFilterOptions","hasSubEntityFilter","shouldRenderAdGroup","useMemo","shouldRenderAdGroupFilter","isCampaignScope","entityType","Campaign","addScope","getScopeAdder","removeScope","getScopeRemover","scopeSelectorProps","hideSubEntitySelector","className","ScopeSelector","style","height","children","_jsxs","ScopeFilters","Scope","CampaignFilters","AdGroupStatusFilter","inPopover","defaultProps","undefined","CampaignScopePanelWithData","withScope","withCampaignData","withCampaignFilter","useScopePanelStyles","makeStyles","scopePanelContainer","width","shorthands","padding","borderRight","tokens","colorNeutralStroke2","backgroundColor","colorNeutralBackground3","navRefreshProcessorSet","processor","processImportCenterMode","processMixedModeAdGroup","processGlobalFilter","processCampaignType","processCampaignId","processSmartCampaign","processSmartShoppingCampaign","processHotelCampaign","processPmaxCampaignPageMenu","processPmaxRetailCampaignPageMenu","concat","_toConsumableArray","processorSet","navRefresh","ScopePanelWithResizeContext","withLayoutContext","withLayoutSizeContext","withI18nConsumer","withSiteMap","styles","layoutSize","useLayoutSizeContext","siteMap","changeLayout","layoutConfig","useContext","ScopeContext","scopeViewOnTopPreference","PreferenceContext","findByNameAtUserLevel","isScopeViewOnTop","get","campaignsRouteSelected","selectedSiteMap","find","item","selected","isTableExpanded","getIsTableExpanded","getConfigComponents","LayoutSizeScale","XL","scopePanel","mode","Mode","Hidden","Expanded","mergeClasses","navRefreshSiteMap","AdGroup","name","_TL_","nameLowerCasePlural","campaignTypes","Default","Shopping","Audience","DynamicSearchAds","Smart","Hotel","Component","setCampaignTypes","arguments","length","_","HOC","instrumentation","previousEntityListProps","useRef","previousSelectedEntity","_useFocusedEntityCont","setFocusedEntity","_scope$values","values","selectedCampaignId","campaignId","selectedAdGroupId","adGroupId","hasSelectedEntityChanged","prevSelectedEntity","current","prevSelectedEntityId","id","prevSelectedEntityType","rootEntityTypeDisplayName","getString","adgoupsDisplayText","commonComponentProps","campaignsLoadFallback","isLoading","activity","createScenarioAndActivity","scenarioName","activityName","removeId","useCallback","remove","save","CampaignOData","call","_ref","currentAccount","Campaigns","getCampaignOdataConfig","escapeHatch","_ref2","value","fallback","onError","notificationApi","showWarning","shellTips","shellDataError","campaignLoadResult","existingCampaignTypes","Set","campaigns","map","campaignInOdata","campaign","convertToCampaign","entityTypeDisplayName","add","campaignType","PerformanceMax","subEntityTypeDisplayName","adGroupLoadFallback","adGroupCampaignId","_ref3","$withKey","AdGroups","top","select","orderby","Name","_ref4","adGroupLoadResult","adGroups","adGroupInOdata","adGroup","convertToAdGroup","Id","entityListProps","entityList","entityListType","trace","JSON","stringify","adgroup","parentCampaign","parentEntity","displayName","withFocusedEntityContext","withInstrumentation","EntityScopeProperty","Assets","getSmartPath","uid","cid","aid","entity","scopeProperty","append","_defineProperty","parentId","window","location","href","node","path","rawStatus","getSmartCampaignUrl","CampaignFilterContext","React","filteredEntityList","updateWaterfallFilter","getFilteredCampaignTypeFromRawFilter","WaterfallFilterType","getFilteredCampaignStatusFromRawFilter","CampaignStatus","getFilteredAdGroupStatusFromRawFilter","AdGroupStatus","filterAdsGroups","filter","status","subEntityList","Provider","updateCampaignTypeFilter","has","filterType","convertFilteredCampaignTypeToFilter","updateCampaignStatusFilter","campaignStatusFilter","updateAdGroupStatusFilter","adGroupStatusFilter","withGlobalFilter","hoistNonReactStatics","LinkedInRegular","viewBox","fill","xmlns","clipPath","d","stroke","strokeWidth","fillRule","clipRule","transform","getCampaignTypeFilterOptions","permissions","IsRenameHotelToLodgingEnabled","isAppAdsCampaignEnabled","dynamic","AppAdsCampaignPhaseOne","isLinkedInEnabled","LinkedInCampaigns","isUnifiedAppCampaignEnabled","UnifiedAppAds","menuItems","key","icon","AppsRegular","description","defaultChecked","SlideMultipleSearchRegular","PeopleAudienceRegular","ShoppingBagRegular","TextboxSettingsRegular","LuggageRegular","ArrowTrendingSparkleRegular","App","StoreMicrosoftRegular","LinkedIn","getCampaignStatusFilterOptions","AllEnabled","adGroupStatusFilterMenuOptions","getAdGroupStatusFilterOptions","menuItemsGroupList","selectedValues","ScopeFilterMenu","menuName","onChange","adGroupStatusFilterValues","adGroupStatusFilterValue","convertFilteredAdGroupStatusToFilter","CampaignStatusFilter","campaignStatusFilterMenuOptions","onCampaignStatusChange","campaignStatusFilterValues","campaignStatusFilterValue","convertFilteredCampaignStatusToFilter","CampaignTypeFilter","hotKey","count","PermissionsContext","previousCount","usePrevious","campaignTypeFilterMenuOptions","useEffect","onCampaignTypeChange","campaignTypeFilterValues","campaignTypeFilterValue","CampaignFiltersWithHotKeys","withHotKeys","ShortcutType","CampaignTypes","selectedCampaignType","filteredCampaignType","every","includes","PropTypes","CurrentLocale","isRequired","PageTrackingId","ServicesEndpoints","AdInsightAPI","CampaignAPI","CampaignAPIPath","CurrentUser","UserId","UserName","Email","Lcid","CustomerMarket","CurrentCustomer","CustomerId","CustomerNumber","CustomerName","CurrentAccount","AccountId","AccountNumber","AdvertiserCustomerId","AccountMode","LifecycleStatus","CurrencyType","CountryCode","Token","CCBaseUrl","PidlConfiguration","PidlEnvironment","PidlEnabledCountries","ExcludedCountriesByCardType","ThreatMetrixUrl","MsaDelegateAuthUrl","PidlErrorFormattingStrings","PidlSupportedCultureMapping","FriendlySepaMaxNameLength","CCUIPilots","PaymentInstrumentConfigs","supportedPaymentType","supportedCurrencies","useSupportedCountryList","supportedCountries","AuthType","CookieDomain","CookiePath","AdvertiserCustomerID","CurrencyCode","Number","Status","Market","UserPreferences","AccountLevelPreferences","UserLevelPreferences","McaServiceRoot","Permissions","ServerContext","withServerContext","WrappedComponent","Consumer","serverContext","ServerContextAction","ServerContextWithActionProvider","context","_useState","useState","_useState2","_slicedToArray","setServerContext","convertLegacyContext","accountMode","AppScope","LocaleID","IsInternal","useUpdateServerContext","isValidServerContext","response","updateServerContextFn","logActivity","overrideProperties","error","newContext","seleniumTestContext","getCrudAdImagePreviewStyles","_ref$palette","palette","_ref$iconFontFamily","iconFontFamily","border","margin","minWidth","display","flexDirection","alignItems","marginRight","flexGrow","fontSize","fontWeight","lineHeight","marginTop","marginLeft","color","accent","textAlign","paddingBottom","paddingLeft","paddingRight","position","bottom","left","background","borderRadius","themePrimary","right","textShadow","outline","neutralSecondary","fontFamily","verticalAlign","overflow","paddingTop","boxShadow","marginBottom","textDecoration","pointerEvents","transition","getExtensionPreviewStyles","float","borderBottom","multiImageInnerCarouselStyles","getMMAPreviewStyles","wordBreak","opacity","backgroundImage","content","maxWidth","wordWrap","getMsanPreviewStyles","textOverflow","whiteSpace","justifyContent","curosr","cursor","borderWidth","maxHeight","fontStyle","W","sortedByNodeType","nodes","child","isCustomer","isLinkedAccount","nodesWithHelpers","parents","state","expanded","deepness","filteredNodes","predicate","memo","filteredChildren","compactCustomers","childCustomers","childAccounts","push","apply","patchedNodes","statePatch","updatedTree","updatedNode","_updatedNode$state","indeterminate","disabled","checked","disableNodes","updatedChildren","selectAll","expandTree","AccountProp","number","Customers","Accounts","NodeOperations","SELECTED","EXPANDED","COLLAPSED","ScopeEditorSrcPanel","_PureComponent","_this","_classCallCheck","_callSuper","query","searchText","onSearch","setState","prevState","onQueryChange","onKeyDown","event","onSelectAll","renderNodeLabel","deps","labelText","title","_inherits","_createClass","lowerCaseQuery","toLowerCase","toString","indexOf","_this$props","this","nodeUpdateHandlers","onTreeUpdated","TreeView","nodeRenderer","CheckBoxNode","nodeChildRenderer","treeViewClassNames","updateTypeHandlers","iconsClassNameMap","collapsed","lastChild","_this$state","_this$props2","data","relevantNodes","matchNode","SearchBox","placeholder","onClick","role","tabIndex","renderTree","SearchResultLiveRegion","totalCount","emptyText","resultText","PureComponent","ScopeEditorTargetPanel","_len","_args","Array","_key","onRemoveAll","checkBoxNodeRender","args","_node$state","ExpandableNode","Checkbox","inline","type","shouldDisableRemoveAll","SharingScopeEditor","treeNodes","generateTreeNodes","updatedTreeNodes","onSelectionUpdated","nodeSelectHandler","visibleNodes","nodeExpandHandler","prevProps","availableEntities","selectedEntities","owner","fnsToApply","fn","pipe","_this$props3","_this$props3$editorPr","editorProps","sourceboxTitle","targetboxTitle","Grid","fluid","Row","Col","md","lg","appConfig","currentCid","parentCid","isEntityOwner","_entity$Owner","Owner","isInAccountScope","matchResult","exec","hash","customerId","accountId","getParameter","findNode","hasChildCustomers","customerHierarchy","_ref5","isSuperAdmin","_ref6","hasPermission","getSessionStorage","getAllCustomerIdsFromHierarchy","fetchUserPermissions","_ref7","customerIds","sessionStorage","allCustomerIds","Promise","http","post","CustomerIds","then","Errors","_ref8","hasPermisson","set","Scopes","Object","freeze","ACCOUNT","CUSTOMER","HIERARCHY","treeToSharingScope","flatCustomers","_memo$Accounts","Others","Total","AccountList","_props$accounts","accounts","_props$accounts$adAcc","adAccounts","_props$accounts$manag","managerAccounts","_props$accounts$other","others","adAccountLabel","managerAccountLabel","AccountListPopover","_React$Component","show","hide","accountInfo","popoverId","placement","text","classes","classNames","onMouseLeave","Callout","closeButton","onMouseOver","onFocus","AudiencesSharingEditor","scopeOptions","onRadioChange","onSelectedOptionChanged","renderItem","currentScopeOption","availableScope","onTreeSelectionUpdated","audienceEntity","tagEntityName","SharingScope","RadioGroup","items","tagName","AudienceSharingView","_Backbone$View","radio","selectedOption","treeSelection","_ref$selectedOption","tagEntity","_ref$disabled","_this$tagEntity$Shari","customerSet","parentCustomerId","ReactDOM","getAvailableScope","el","_superPropGet","Backbone","UETTagScopeEditor","_this$props$tagEntity","onSave","onCancel","footer","UETTagManageSopeView","trigger","getSharingScope","cancel","_ref$withFooter","withFooter","UETTagManageScopeDialog","decorate","largeSize","COPILOT_WIDTH","sizes","CAMPAIGN_MAIN_MENU_MODE","MERCHANT_MAIN_MENU_MODE","PlaceholderWrapper","_React$PureComponent","isViewportSizeLarge","preferencedMainMenuMode","result","preferenceService","modePreferenceName","nav","Collapsed","handleMediaChange","bind","matches","Media","MainMenuPlaceholder","placeholderWithResponsiveSize","withPreference","GlobalMenueWrapperPlaceholder","NewGlobalMenueWrapperPlaceholder","PrimaryNavigationPlaceholder","gap","aspectRatio","MediaQuery","SecondaryNavigationPlaceholder","preferences","Data","LayoutContext","config","matchMedia","setMatches","addEventListener","e","menu","ScopePanelPlaceholder","campaignFromOData","statusFromOdata","CampaignTypeByODataValue","isExperiment","ExperimentId","ImportProperties","adGroupFromOData","predictiveTargeting","UseOptimizedTargeting","dealMinimumBid","DealMinimumBid","StyledSpinnerWithLabel","withDefaultStyles","label","spinnerContainer","labelContainer","spinnerWithLabel","getBlockerStyle","spinnerKeyframe","SelectorLevels","Acount","getLevelItems","_ref$levels","levels","levelItems","SELECTOR","SmartCampaignsPopup","smartNavigate","stopPropagation","target","rootFunction","$","off","on","FallbackCallout","calloutTargetContainer","handleClose","buildLegacyStrings","allStrings","legacyKeys","str","buildLegacyI18n","timeZone","currency","I18nModel","toIANATimeZone","fromLegacyTimeZone","loadTranslationData","loadCLDRData","locale","failFast","validationLocalization","Validation_Base_Field_Not_Valid","Validation_NotEmpty_Required_Field","Validation_String_Max_Length","Validation_String_Min_Length","Validation_String_Invalid_Characters","Validation_Number_Require_Numeric","Validation_Number_Max_Length","Validation_Number_Range_Min","Validation_Number_Range_Max","Validation_Number_Range_Between","Validation_Array_Size_Max","Validation_Array_Size_Between","Validation_Array_Items_Invalid","Validation_Array_Items_Duplicate","Validation_NegativeKeywords_ListName_Required","Validation_NegativeKeywords_Max_Count","Validation_NegativeKeywords_Invalid_Keywords","Validation_NegativeKeywords_Required","Loader","updateAvailability","selectedParent","available","isVisible","Scenario","Activity","StyledSubPageMenu","DefaultSubPageMenuLoader","ExperimentSubPageMenu","default","StyledExperimentSubPageMenu","useCurrentCampaign","useCurrentAdGroup","showCard","tab","isExperimentCampaign","experimentId","ExperimentSubPageMenuLoader","withCampaignSiteMap","processPermissions","processPath","hotelCenterPageCategory","feedupload","report","adExtensions","reconciliationreport","idsToHideChildren","relocatedSiteMap","category","dfsSearch","options","getChildren","onFound","x","selectedRoad","deepestNodeWithCategory","compact","last","nodeWrapper","locateSiteMap","HotelCenterSubPageMenuLoader","withHotelCenterSiteMap","all","HotelCenterV2SubPageMenuLoader","withHotelCenterV2SiteMap","StyledIssuesCount","issuesCount","MmcStoreSummarySubPageMenu","storeId","issuesCounts","setIssuesCounts","storeQueries","getIssuesCount","mtResponse","productIssues","ProductIssues","feedIssues","FeedIssues","storeIssues","StoreIssues","onTabItemRender","MmcDataSourceInitializer","FeedLabelGmcMigration","FeedLabelBlockList","MmcNotificationTopBanner","MmcStoreSubPageMenuLoader","withToolsSiteMap","RecommendationSubPageMenu","StyledRecommendationSubPageMenu","RecommendationSubPageMenuLoader","allSiteMap","I18nContext","StyledMenuItemTag","tagClass","tagContent","UetTagSubPageMenu","BudgetCenterSubPageMenu","StyledBudgetCenterSubPageMenu","BudgetCenterSubPageMenuLoader","BusinessDataSubPageMenuLoader","ImportCenterSubPageMenuLoader","withImportSiteMap","AutomatedRuleSubPageMenuLoader","BulkEditSubPageMenuLoader","ScriptsSubPageMenuLoader","BulkUploadsSubPageMenuLoader","OfflineConversionsSubPageMenuLoader","UetTagSubPageMenuLoader","CampaignSubPageMenuLoader","SubpageMenuContainerInternal","isNavigationRefreshBudgetCenterOn","isNavigationRefreshOn","NavigationRefreshBudgetCenter","ElementSelector","SubpageMenuContainer","withPermissions","ExpandButton","withComponentErrorLogging","SecondaryNavigationExpandButton","classnames","BudgetCenterMenuBar","ScopeBarLeftContent","LeftContent","MonthPicker","_components","neutralLight","ExpScorecard","withContexts","ExperimentScoreCard2","WithSiteMapSubPageMenu","waterfallFilterStorage","WaterfallFilterStorage","forceResetLayout","showExperimentScoreCard","_this2","dateFilter","waterfallDateFilterProcessor","getFilters","DateFilter","getEntityFromScope","expItemFromEdm","Experiments","ExpScorecardLazy","odata","odataURL","parseDateRangeToQuery","oDataToken","experimentFromOData","experimentData","catch","renderScorecard","showDatePicker","recommendationDataStore","StateStore","params","overallOptimizationScoreBar","store","renderCategoryOptimizationScore","getTabItems","tabItems","categoryScoreUpLifts","ScoreUpLift","Category","split","categoryScoreUpLift","scoreUpLift","_this$props$store$sta","renderDownloadButton","isAutoApplyRecommendationEnabled","StyledRecOptimizationOverallScore","renderAutoApplyButton","AutoApplyButton","renderHistoryButton","HistoryButton","isAsyncApplyEnabled","IsBAARecommendationsAsyncApplyEnabled","showDownloadButton","recommendationType","categoryItem","categoryScore","formatPercentOneDecimal","_this$props$store$sta2","renderMainOptScore","renderExtraContent","showHistoryButton","showAutoApplyButton","withStateStore","today","Date","fourteenDaysAgo","getFullYear","getMonth","getDate","getHours","getMinutes","formattedToday","toLocaleDateString","formattedStartDate","buttonText","Button","Glyphicon","glyph","Constants","PagePadding","smallMainSectionLeftPadding","DROP_DOWN_PIVOT_ITEM","TabBar","onSelectPivotItem","itemKey","onSelect","moreButtonRef","openMenu","genereateOverflowMenuItemProps","leftOverItems","menuProps","index","menuItem","generateTabItemsFragment","PivotItem","onRenderItemLink","fallBackTabItem","availableTabItems","selectedTabItem","classNameArray","textContainer","localizedName","tabItem","isSelected","FocusZone","notAvailableTextContainer","fallBackTextContainer","siteMapId","fallbackGlyph","renderExpandButton","expandButtonContainer","responsiveSize","menuContainerPartClassName","menuContainer","onlyOneTabItem","orderedTabItems","tabItemsFragement","selectedIndex","firstSetOfTabs","slice","restOfTheTabs","newItems","contextualMenu","IconButton","ariaLabel","iconProps","iconName","componentRef","onRenderMenuIcon","pivotOverflowItem","singleItem","_Fragment","Pivot","selectedKey","defaultSelectedIndex","linkSize","PivotLinkSize","large","onLinkClick","StyledTabBar","outlineOffset","neutralQuaternaryAlt","white","availableTextContainer","selectedTextContainer","neutralPrimary","DatePicker","dateFormat","lcid","onSwitchCompare","disableCompare","minDate","rangeIds","_getRangesFromData","getRangesFromData","selectedRange","selectedComparedRange","dateRangePickedLogger","datePicker","create","dateRangePicked","isImprovedDateRangePickerEnabled","DynamicPermissions","ImprovedDateFilter","useDefaultStyles","ComparedDateRangePicker","isMainDatePicker","shouldShowQuickLeftRightPicker","translateLegacyToIANATimezone","rangeId","RangeId","rangeIndex","RangeIndex","rangeDays","RangeDays","comparedTypeKey","compared","onPickDateRanges","dateFromDatePicker","generateDateData","updateToWaterfallFilter","dateRangeLogger","dateRange","method","setClarityTag","DatePickerOnApply","DatePickerOnQuickApply","DatePickerWithScope","historyButton","showPopover","toggle","recommendationHistoryItem","popoverClassName","recommendationHistoryPopover","onClose","entityContent","getRoutePathById","historyClickHandler","onBlur","onMouseOut","entityContentRecommendationHistory","entityIcon","backgroundRepeat","autoApplyButton","showTag","expDate","recommendationAutoApplyItem","recommendationAutoApplyPopover","autoApplyClickHandler","entityContentRecommendationAutoApply","betaTagContainer","getSelectedItemsFromMap","SubPageMenuInternal","subPageItem","signal","_$filter","clickedTabItem","pathname","route","search","history","queryString","isChecked","setClassName","getTextWidth","canvas","getContext","font","measureText","init","subMenuClassNamePrefix","subMenuClassName","container","pickerContainerPartClassName","pickerContainer","pickerQuickContainer","tabBarPreFixClassName","getOffset","navMode","menuMode","components","updateDatePickerWidth","newWidth","datePickerWidth","resetLayout","renderDatePicker","civilMinDate","CivilDate","year","month","day","DatePickerWithPageReady","withPageReady","TimeZone","CultureDateTimeFormat","ShortDatePattern","RANGES","Custom","Today","Yesterday","ThisWeek","ThisWeekMon","Last7Days","LastWeek","LastWeekMon","Last14Days","ThisMonth","LastMonth","Last30Days","Last3Months","Last6Months","EntireTime","renderDisabledDatePicker","DisabledDatePickerWithPageReady","DisabledDatePicker","SubPageMenuResponsiveSizes","initialResetLayout","ResponsiveTabBar","document","createElement","getResponsiveTabBar","nextProps","nextState","showDisabledDatePicker","singleTabMode","getIsCopilotExpanded","isCopilotExpanded","currentMinWidth","i","currentItemWidth","withResponsiveSize","selectedleafItem","findSelectedNode","selectedPageMenu","datePickerShowOrHideClass","disabledDatePickerShowOrHideClass","currDatePickerWidth","clientWidth","datePickerOffset","disabledDatePickerOffset","AutoApplyButtonWidth","AutoApplyButtonOffset","historyButtonWidth","historyButtonOffset","downloadButtonWidth","downloadButtonOffset","layout","offset","subMenuSeperator","SubpageMenuInternalWithStyle","subPageMenu","blue","themeDarkAlt","comparedPickerSharedStyle","neutralLighter","summaryButton","withActivityContext","change","level","currentNode","selectedChild","findParentNodeByLevel","ariaDescription","currentPath","pillControlParams","levelIndex","findIndex","onItemChange","DefaultSubTabLoader","CampaignSubTabLoader","SubTabContainer","SmartLastURLInternal","leafCondition","formatUrl","url","updateLastUrl","allowBackToSmartCampaign","ACCOUNT_MODE","SMART","lastUrl","selectedChildItem","findSiteMap","render","SmartLastURL","withLastURL","LastCampaignURL","LastAccountsURL","withAccountsSiteMap","LastUrl","renderWrappedComponent","backButtonUrl","backButtonText","lastUrlState","useCampaignScopeBarStyles","scopeBarLeftContent","flexShrink","useCampaignStatusMenuButtonStyles","menuButton","useStatusIconStyles","activeStatus","colorPaletteGreenForeground1","pausedStatus","colorNeutralForeground3","StatusIcon","CircleFilled","PauseFilled","StatusText","CampaignStatusMenuButton","importNotificationCallback","alertHelper","AlertHelper","newStatus","edmCampaign","bulkUpdate","isFunction","updateStatus","showError","onClickEnable","onClickPause","Menu","MenuTrigger","MenuButton","MenuPopover","MenuList","MenuItem","BubbleRenderer","isAccountScope","entityCount","bubbleContext","MultiStepTeachingBubbleContext","_React$useState","_React$useState2","setLayoutSize","useLayoutResizeObserver","getModeByLayoutSize","ise2etest","showForTest","showBubble","triggerMultiStepTeachingBubbleWithLock","featureName","TeachingBubbleConfigs","CampaignScopeBar","handleBackClick","logger","reportingInsightsScenario","onCopilotSummaryButtonRender","onCopilotSummaryButtonClick","message","isNewLogo","isCopilotSummaryButtonEnabled","setIsCopilotSummaryButtonEnabled","getIsCopilotSummaryButtonEnabled","scopeBarProps","onBackClick","scopeSelectorDropdownProps","inMenuPopover","pausedCampaignImportNotificationActivity","isInCampaignsOrOverviewPage","getIsInCampaignsOrOverviewPage","ScopeBar","ScopeSelectorDropdown","shouldHideStatusIcon","popoverContent","showPausedCampaignNotifications","campaignItemList","CopilotSummaryButton","campaignName","onRender","ScopeFiltersOverflow","Account","onSubMenuOpen","CampaignScopeBarWithData","CampaignScopeBarLoader","FullScreenWithTabConfig","header","subTab","SummaryBar","canEdit","CampaignSummaryBarLoader","SharedBudgetSummaryBar","SharedBudgetSummaryBarLoader","withStandaloneSiteMap","AccountsSummaryBar","breadCrumbText","processors","AccountsSummaryBarLoader","SimpleSummaryBar","SimpleSummaryBarLoader","GeneralSummaryBarLoader","backButtonProps","modifiedBackButtonProps","SummaryBarFactory","CampaignODataCallForCustomerLevel","selSummaryBarFallback","breadcrumbUrl","currentCustomer","PlacementExclusionLists","selListId","list","additionalItems","CampaignODataCallForAccountLevel","_excluded2","$makeCall","payload","association","SharedEntityId","SharedEntityName","_excluded3","SiteExclusionListLinkedPageLoader","defaultSummaryBarFallback","nkl","NegativeKeywordLists","NegativeKeywordsListDetailsLoader","getConfig","portfolioName","IsDataExclusionEnabled","DataExclusions","breadcrumbsGeneralConfigs","isCurrentItem","maxDisplayedItems","summaryBarFallback","portfolioId","PortfolioBidStrategies","PortfolioDetailsLoader","MerchantCenterSummaryBar","MerchantCenterSummaryBarLoader","QueryInsightsSummaryBar","QueryInsightsSummaryBarLoader","WebInsightsEditor","isInsightOn","tagId","isToggleOn","setIsToggleOn","triggerDocumentEvent","CustomEvent","detail","dispatchEvent","onSaveClick","IsWebInsightsEnabled","_config$get2","acid","Tags","toPromise","onCancelClick","rel","Toggle","onText","offText","PrimaryButton","DefaultButton","uetDashboardPilotEnabled","UETDashboard","trackingStatusMap","Inactive","Unverified","Active","insightSettingOverride","setInsightSettingOverride","updateInsightSettingOverride","tagIds","insight","updateInsightSetting","removeEventListener","resizeGroup","renderContent","IsReadOnly","TrackingStatus","GoalsCount","AudiencesCount","UETTagInsights","Editor","getEditorProps","closeEditor","tag","newIsInsightOn","closeButtonAriaLabel","focusLockContent","SummaryBarContainer","texts","breadcrumb","Breadcrumb","renderBreadCrumb","summaryBar","SummaryBarItemsResizeGroup","summaryBarItems","UetDashboardLoader","minHeight","isLeafNode","AssetLibrarySummaryBar","AssetLibrarySummaryBarLoader","AdStudioSummaryBar","AdStudioSummaryBarLoader","assetGroupId","PmaxAssetDetailsSummaryBar","PmaxAssetDetailsSummaryBarLoader","BudgetCenterSummaryBar","BudgetCenterSummaryBarLoader","HotelCenterV2SummaryBarLoader","_useMemo","previousRoute","URL","getBackButtonProps","adId","AdEditorSummaryBarLoader","getBulkDetailConfig","omit","getRuleDetailConfig","getScriptsDetailConfig","pageLocation","pageName","buttonContext","getBulkUploadsBuildSpreadsheetConfig","SITE_MAP_ID","brandListId","listName","setListName","_fetchData","_asyncToGenerator","_regeneratorRuntime","mark","_callee","brandList","wrap","_context","prev","next","getBrandListById","sent","t0","stop","fetchData","URI","addQuery","BrandListsDetailsPageLoader","summaryBarProcessors","RuleDetailSummaryBarLoader","BulkDetailSummaryBarLoader","ScriptsDetailSummaryBarLoader","BulkUploadsBuildSpreadsheetSummaryBarLoader","NegativeKeywordsListDetailsSummaryBarLoader","PortfolioDetailsSummaryBarLoader","CampaignSummaryBarWithLastUrl","QueryInsightsSummaryBarWithLastUrl","UetDashboardSummaryBarWithLastUrl","SharedBudgetSummaryBarWithLastUrl","StandaloneSummaryBarLoader","SiteExclusionListLinkedPageSummaryBarLoader","ToolsPageSummaryBarLoader","AudiencePlannerSummaryBarLoader","FeedItemsPageSummaryBarLoader","AdEditorSummaryBarLoaderInternal","PerformanceTargetsPageSummaryBarLoader","StandaloneAccountsSummaryBarLoader","ImportPageSummaryBarLoader","HotelCenterSummaryBarLoader","HotelCenterV2SummaryBarLoaderInternal","AdInsightSummaryBarLoader","withAdInsightSiteMap","AssetLibrarySummaryBarLoaderInternal","AdStudioSummaryBarLoaderInternal","BidStrategiesSummaryBarLoader","withBidStrategiesSiteMap","AssetGroupCreateAndEditSummaryBarWithLastUrl","BudgetCenterSummaryBarLoaderInternal","BrandListsDetailsPageSummaryBarLoader","SummaryBarContainerInternal","isNavRefresh","SummaryBarPlaceholder","additionalPrefixItems","customSummaryBarItemsId","as","AdSummaryBar","summaryBarActivityLogger","queryParam","QueryParam","adType","adName","Responsive","ResponsiveSearch","DynamicSearch","DynamicResponsive","summaryBarProps","breadcrumbsProps","adGroupName","isAppBarBreadcrumbEnabled","hideBreadcrumb","AdGroupSummaryBar","updateAdGroup","excludedLocationOnly","adGroupSummaryBarItems","adGroupEntityItems","changeStatus","selectedStatus","patch","converter","convertToSummaryBarStatusPatch","showErrorWithAlertCenter","updateBid","CampaignSummaryBar","osData","updateCampaign","skipInvalidateCache","campaignSummaryBarItems","campaignEntityItems","updateInlineBudget","Budget","budget","updateSharedBudget","updateLevel","budgetId","campaignCacheManager","invalidate","sharedComponentFunctionStateStore","updateCampaignStatus","ExperimentAdGroupSummaryBar","experimentAdGroupEntityItems","ExperimentCampaignSummaryBar","updateExperimentCampaign","experimentCampaignEntityItems","changeStartDate","StartDate","startDate","changeEndDate","EndDate","endDate","SummaryBarInternal","perfMarker","done","summaryBarSharedProps","chain","currentSummaryBar","defaults","getSummaryBarStyle","UpdatableSummaryBar","patchAdGroup","patchCampaign","markAction","action","campaignSummarybarPerfMarker","_ref$converter","WithBulkUpdateRepository","newAdGroup","SearchBid","CpmBid","CpvBid","bid","previousAdGroup","finalUpdateLevel","newCampaign","previousCampaign","WithPatchExperimentRepository","consumeOdataResults","RenderSummaryBar","convertToSummaryBarCampaign","convertToSummaryBarAdGroup","EntityStatus","extendedCampaign","WithExperimentRepository","campaignLoadFallback","getCampaignLoadFallback","consumeAdGroupRepository","SummaryBarWithAdGroupCriterionResults","passThroughProps","WithAdGroupRepository","consumeCampaignRepository","SummaryBarWithCampaignCriterionResults","WithCampaignRepository","consumeOptimizationScoreRepository","SummaryBarWithCampaignAdGroupCriterionResults","WithOptimizationScoreRepository","renderSummaryBar","summaryBarAdGroup","getFinalProps","summaryBarCampaign","convertToSummaryBarExperimentCampaign","omitCampaignType","willUpdate","comparableItem","didUpdate","willAdGroupUpdated","willCampaignUpdated","didAdGroupUpdated","didCampaignUpdated","finalCampaign","finalAdGroup","appPerfMarker","createChild","summaryBarScenario","skipUpdateAdGroup","skipUpdateCampaign","OptimizationScore","compose","SummaryBarWithScope","SimpleBreadcrumb","selectedItem","standardItems","AccountsSummaryBarInternal","showScopeBackButton","SimpleSummaryBarInternal","customSummaryBarItemsRef","innerText","onClickBackButton","isHideBreadCrumbBack","assign","each","additionalItem","isEmpty","ref","getSimpleSummaryBarStyle","SharedBudgetSummaryBarInternal","SummaryBarWithBudgetCriterionResults","WithSharedBudgetRepository","sharedBudgetFromOData","sharedBudgetBarItems","sharedBudgetItems","renderSharedBudgetBreadCrumb","SharedBudgetConsumer","criteriaRenderer","storeNameBreadcrumbItem","storeName","getRouterDep","navigateToRoute","allStoresBreadcrumbItemWithoughtClick","allStoresText","allStoresBreadcrumbItem","summaryBreadcrumbItem","summaryText","feedDetailsItems","feedName","feedsText","createStoreItems","merchantCenterText","createStoreText","importStepsItems","editMode","importsText","createImportText","updateImportText","placeholderStoresItems","placeholderStoresText","editorialProductIssuesItems","editorialProductIssuesText","reviewRejectionsItems","flagAreaIdCode","editorialProductIssueTitleText","safeGetString","i18nMap","IssueCodes","getMerchantCenterConfig","currentPage","defaultBackButtonProps","preventDefault","back","defaultBreadcrumbsGeneralConfigs","defaultBreadcrumbsManageConfigs","trimScope","Store","setStoreName","_useState3","_useState4","setFeedName","getStateFromProps","feedQueries","feedId","getStore","getFeedDetails","feed","defaultStoreQueries","defaultFeedQueries","StyledMerchantCenterSummaryBar","summaryDetails","setSummaryDetails","formattedSummary","formatInsightDetails","isLongText","replace","InsightType","AccountOptimization","noOverflow","renderEntityItem","SummaryBarMetricsPicker","metrics","Metrics","onDetailsUpdated","details","GlobalMenuEntityBarInternal","GlobalMenuEntityBar","getCampaignType","convertToBreadCrumbItems","currentCampaignType","findWhere","overflowAriaLabel","EntityBreadcrumb","globalMenuEntityBarScenario","renderSummaryBarWithData","SessionStorage","AssetLibrarySummaryBarInternal","inProgressTaskCount","setInProgressTaskCount","counter","timerId","setInterval","val","clearInterval","routePrefix","renderInProgressContent","inProgressContent","ActionButton","assetLibrarySummaryBar","from","to","animationName","animationDuration","animationIterationCount","animationTimingFunction","AdStudioSummaryBarInternal","dialogOpen","setDialogOpen","onExit","onCancelDialog","querySelector","focus","hideBackButton","URLSearchParams","adStudioSummaryBar","Dialog","open","modalType","onOpenChange","DialogSurface","DialogBody","DialogTitle","DialogContent","DialogActions","appearance","DialogTrigger","disableButtonEnhancement","readCampaign","readAssetGroup","AssetGroups","isListingGroup","setCampaignName","assetGroupName","setAssetGroupName","isoDateFormat","BudgetCenterSummaryBarInternal","monthFilter","BudgetCenterMonthFilter","getBudgetCenterSummaryBarStyle","buttonClass","ActivityContext","civilDateToday","isoDateString","formatDate","raw","parseCivilDate","dateString","earliestDate","selectedDate","maxDate","navigatedDate","setNavigatedDate","isCalloutVisible","setIsCalloutVisible","monthText","formatCivilDate","skeleton","isMonthPickerButtonDisabled","isPrevMonthButtonDisabled","compareCivilMonth","isNextMonthButtonDisabled","toggleIsCalloutVisible","visible","updateSelectedDate","date","logTrace","api","summaryBarContainer","monthPickerSection","monthPickerButtonText","calendarIcon","monthPickerButton","navigationIcons","newDate","plus","months","navigationIconButtonWrapper","navigationIcon","isBeakVisible","onDismiss","directionalHint","DirectionalHint","bottomCenter","monthPickerCallout","SingleMonthCalendar","onSelectDate","onNavigateDate","isMonthRangePicker","SummaryBarBreadcrumb","campaignTypeI18nText","summaryBarBreadcrumb","tooltipPlacement","EditableItem","isOpen","itemProps","showEditor","renderEditableItem","renderEditor","Fragment","isAccountsSummary","wrapped","OverflowContent","withOverflowProp","isTextOverflow","forwardedRef","_ref$entityClassName","entityClassName","_ref$href","passBy","OverlayTrigger","overlay","Tooltip","OverflowEntityItem","onReduceData","currentData","newOverflowIndex","getNextOverflow","overflowIndex","onGrowData","getWindowWidth","body","getElementsByTagName","innerWidth","documentElement","resizeGroupKey","startingData","ResizeGroup","onRenderData","SummaryBarItems","getOverflowSubMenuProps","subMenuProps","renderCalloutSubMenu","calloutProps","preventDismissOnLostFocus","shouldNavigate","onNavigate","renderSummryBarItem","ItemComponent","onItemClick","other","passThroughData","renderOverflowDropdown","overflowItems","overflowDropdownProps","reduce","contextualMenuProps","doNotLayer","bottomRightEdge","contextualMenuItemAs","closest","ContextualMenuIconButton","isEditable","entityItems","EntityItem","overflowLabel","BUDGET_SUGGESTION","statusMap","active","paused","BiddingScheme","CampaignSubType","DeliveryStatus","DeliveryStatusDetails","hasBudgetLandscape","contains","bidStrategy","Type","campaignSubType","getAdGroupDisplayBiddingStrategyType","DisplayBiddingStrategyType","bidKey","ManualCpc","ManualCpv","ManualCpm","displayBiddingStrategyType","originalCampaignName","BaseCampaignName","originalCampaignId","BaseCampaignId","experimentType","ExperimentType","getCriterion","criterionType","criterionFromOData","include","pick","Criterion","convertToSummaryBarLocationsAndDevices","parentResults","results","locations","devices","dataNotReady","locationCriterion","sortBy","radiusCriterion","unit","RadiusUnit","lat","long","latComputed","Math","round","longComputed","curlyTemplate","Latitude","Longitude","getNameForRadiusLocation","radius","Radius","devicesI18nMap","Smartphones","Computers","Tablets","ConnectedTVs","devicesMap","deviceCriterion","CriterionBid","isXandrCampaign","Multiplier","DeviceName","join","convertToSummaryBarAudiences","audienceFromOData","AudienceCriterion","AudienceName","i18nKey","breadcrumbClickHandler","breadcrumbScope","routerScope","Configs","campaignSiteMap","getCampaignUrl","pageClickHandler","targetPage","summaryBarScopes","ad","theme","OverflowStatusText","i18nText","StatusDropdown","handleClickOutside","leftIcon","renderSelectedItem","dropdownItems","buttonRef","suscribeFocusElement","scenario","enableDropdownStatus","enableDropdown","statusDropdown","FocusLock","focusFirstItemOnMount","isControlledFocusLock","isFocusLock","ListSelector","enableArrowKeysSupport","contextType","FocusContext","StyledStatusDropdown","onClickOutside","_ref2$palette","clear","neutralDark","SettingsItem","submitEvent","OverflowCriteriaItemsContent","targets","renderEditIcon","restNumber","CriteriaItemsInternal","emptyValue","CriteriaItems","RepositoryConsumer","renderAudienceContent","audiences","consumeCampaignAudienceRepository","CampaignAudience","WithCampaignAudienceRepository","consumeAdGroupAudienceRepository","AdGroupAudience","WithAdGroupAudienceRepository","renderLocationDeviceContent","isLocation","renderCampaignLocationDevicesContent","campaignCriterionFromOData","campaignLocationsAndDevices","renderAgGroupLocationDeviceContent","adGroupCriterionFromOData","adGroupLocationsAndDevices","consumeCampaignCriterionRepository","CampaignCriterion","WithCampaignCriterionRepository","consumeAdGroupCriterionRepository","AdGroupCriterion","WithAdGroupCriterionRepository","renderCamapignAudience","renderAdGroupAudience","renderCampaignLocationDevice","renderAdGroupLocationDevice","BudgetNotEditable","budgetLandscapeLegacyStrings","ColumnName_EstimatedSharedBudget","ColumnName_SharedBudgetAmount","ColumnName_BudgetAmount","ColumnName_EstimatedBudget","ColumnName_EstimatedImpressions","ColumnName_EstimatedClicks","ColumnName_EstimatedConversions","ColumnName_EstimatedCost","BudgetLandscape_Table_Budget_Tip_Forecasting","BudgetLandscape_Table_Budget_Tip_Recovery","BudgetLandscape_Table_Budget_Tip","ErrorMessage_InputNumericValue","BudgetSuggestionsValidationMsg","BudgetLandscape_Comment_Recommended","BudgetLandscape_Comment_Current","BudgetLandscape_Table_CustomInput","BudgetLandscape_Comment_Suggested","Apply","Cancel","BudgetLandscape_ConversionStatus_0_linkText","BudgetLandscape_ConversionStatus_0_line1","BudgetLandscape_ConversionStatus_0_line2","BudgetLandscape_ConversionStatus_1","getBudgetLandscapeTableView","currentBudgetAmount","isSharedBudget","activityLogger","resolve","reject","adInsightApi","getBudgetLandscapeUrl","headers","Authorization","fetchBudgetLandscape","res","rawData","first","BudgetRange","tableView","budgetRange","CeilingValue","DailyRange","FloorValue","BudgetLandScapeTable","opportunityData","conversionSummaryStatus","ConversionStatus","currentBudget","fromBudgetColumn","fromCampaignTab","component","opportunityId","OpportunityId","ActionName","Channel","BudgetEditorWithLandscapeInternal","budgetAmount","budgetLandscapeTable","setTableView","BackboneInstanceWrapper","instance","BudgetLandscapeTable","Wrapped","BaseEditorInternal","isValid","UiBlocker","flexFlow","blocking","loadingText","formFooter","saveButton","cancelButton","wrappers","getBaseEditorStyle","BudgetAmountEditor","errorProcessor","showPerDay","inputClassName","helpId","HelpIcon","topic","Input","validationProps","field","BudgetMinRecommend","applyRecommend","minBudget","currencySymbol","getCurrencySymbol","PageContext","AccountCurrencyCode","BudgetTypeEditor","selectedBudgetType","isDisabled","budgetTypes","isDeprecateAcceleratedBudgetEnabled","getBudgetTypes","IsDeprecateAcceleratedBudgetEnabled","Select","budgetSchema","properties","Amount","nullable","maxLength","CampaignInlineBudgetEditorInternal","serverErrors","which","onValidate","updateBudget","toFixed","budgetType","suggestedBudget","ko_model","rawSuggestedBudget","getBulkEditResponseErrors","getSelectedNewBudget","updateBudgetSchemaRange","minimum","minimumBudget","maximum","maximumBudget","errors","customErrors","range","accountCurrencyCode","dailyRangeFloorValue","oldError","renderInlineBudget","showBudgetMinRecommend","renderInlineBudgetWithLandscape","BudgetEditorWithLandscape","summaryBarBudgetActivity","MinXandrDailyBudgetRangePerCurrency","showBudgetLandscape","IsBudgetInlineSuggestionEnabled","BCCBudgetImprovementEnabled","BaseEditor","ValidationGroup","schema","Form","form","ErrorMessages","messages","getBudgetEditorStyle","SharedBudgetEditorInternal","renderCustomContent","CampaignSharedBudgetEditor","renderBudgetMessage","budgetLink","getBudgetLink","campaignSettingsLink","getCampaignSettingsLink","routeName","getRouteUrl","budget_id","campaign_id","SharedBudgetEditor","CampaignBudgetEditor","CampaignInlineBudgetEditor","adGroupSchema","topicMapping","AdGroupBidEditorInternal","isLowerThanMinBidSuggestion","defaultMSStoreMinSuggestionBid","bidType","BiddingStrategyToBidParam","newBid","updateBidSchemaRange","bidRangeKey","IsBidLessThan5CentsInShoppingCampaignEnabled","BiddingStrategyToRangeKey","isMSStoreAdsCampaign","isXandrVideoAdsCampaign","bidRange","min","max","IsDealEnabledForMsAds","ceil","required","summaryBarBidActivity","pageContext","CurrentCampaign","ReactTemplate","model","link","minSuggestionBid","template","getBidEditorStyle","BaseDateEditorInternal","allowNoDate","editorName","setDatePicker","CampaignsDatePicker","noDateLabel","dateLabel","datePickerAriaLabel","noDateGroupAriaLabel","BaseDateEditor","parseDate","datetime","substr","dateFormatter","StartDateEditorInternal","changeDate","newSelectedDate","getSelectedDate","getOdataResponseErrors","summaryBarExperimentCampaignActivity","getDateEditorStyle","EndDateEditorInternal","getChartOptions","Available","Gained","Dismissed","chart","xAxis","yAxis","tickPositions","legend","enabled","credits","tooltip","formatter","plotOptions","bar","animation","pointWidth","borderColor","series","point","events","click","stacking","states","hover","inactive","hostStyles","root","gapSpace","tooltipProps","delay","TooltipDelay","viewRecommendationStyle","OptimizationScoreItem","navigate","button","ctrlKey","shiftKey","altKey","metaKey","recsrc","CHANNEL_TYPES","CAMPAIGN_SUMMARY_BAR","calloutContent","getScore","OverallOptimizationScoreBar","HighchartReactWrapper","TooltipHost","NavigationItem","getCpmText","getBidStrategyMap","ManualCpa","EnhancedCpc","MaxClicks","MaxConversions","TargetCpa","TargetRoas","MaxConversionValue","TargetImpressionShare","Commission","PercentCpc","CostPerSale","getExperimentStatusMap","Paused","Creating","CreationFailed","Ended","Scheduled","Graduating","Promoting","Graduated","Promoted","GraduateFailed","PromoteFailed","getExperimentTypeMap","TrafficBased","CookieBased","statusEntityItem","experimentStatusEntityItem","experimentSplitOptionEntityItem","HelpPopup","originalCampaignEntityItem","$current","campaignClickHandler","getCampaignBudgetEditorName","getFocusLockProps","parentContainer","getAnchor","cssSelector","getTargetContainer","budgetEntityItem","_ref6$hasBudgetLandsc","_ref6$experimentId","_ref6$updateInlineBud","noop","_ref6$updateSharedBud","budgetName","focusLockProps","autoBidStrategyList","bidEntityItem","bidText","isNumber","AdGroupBidEditor","isDateEditable","isStartDate","_ref9","reformatDate","getDateText","_ref10","startEndDate","_ref11","StartDateEditor","EndDateEditor","isNoSettingsPage","isAdGroup","isSettingsPage","endsWith","isAudiencesPage","isBidStrategyEditable","_ref15","isAudienceFeedBasedCampaign","_ref16","isOptimizedTargetingEnabled","_ref17","isOptimizedTargetingEditable","_ref18","autoTargetingEntityItem","_ref19","overflowItemText","sharedEntityItems","_ref20","_ref20$isAdGroup","_ref12","_repositoryConsumer$c","renderCriteriaItem","_ref13","adGroupCriteriaRenderer","campaignCriteriaRenderer","_ref13$isLocation","_ref14","canCriteriaItemEdit","criteriaItems","_ref21","_repositoryConsumer$c2","renderSharedBudgetAmount","renderSharedBudgetType","_ref22","optimizationScoreEntityItem","_ref23","_excluded4","_ref24","_excluded5","_ref25","_excluded6","audienceErrorHandler","err","Code","getUnexpectedError","getBulkApiErrors","getODataErrors","_ref$campaignName","_ref$campaignId","_ref$adGroupName","_ref$adGroupId","_ref$adName","_ref$setClarityTag","changeScopeActivity","Ad","onBreadcrumbClick","currentBreadcrumb","Error","extend","amount","typeLocalize","Accelerated","DailyStandard","currentCampaign","where","navigation","currentAdGroup","Budgets","CampaignCriterions","$cast","AdGroupCriterions","AudienceAssociations","gridDataParameters","DateRange","budgetIdFromScope","currentEntity","updatedBudgetId","update","setting","setOsData","featureInstrumentation","addScenario","currentScenario","loadRecommendationTile","currentActivity","RecommendationService","token","levelAt","levelAtConstant","CAMPAIGN","entityIds","odataPath","CultureLcid","isNoExpand","channel","getSummary","ignoreCoupons","flex","overflowY","overflowX","calloutCloseButtonStyle","datePickerStyle","borderTop","NeutralColors","gray80","neutralTertiaryAlt","surveyStatus","SurveyPreferenceService","initializeSurveyPreference","PreferenceService","surveyPreference","getSurveyPreference","surveyPreferenceKey","Version","setAtUserLevel","getDaysAgo","days","now","setTime","getDaysAfter","getTime","getAtUserLevel","getSurveyState","surveyName","setSurveyState","surveyState","BaseSurvey","getSurveyComponent","getSurveyId","getSurveyName","getSurveyPriority","validateTriggerCondition","getSurveyCustomParams","getInitializationConfig","validateUserGovernance","isTestEnv","checkSurveyState","isSurveyShown","nextShownDate","initializationConfig","initGroup","initStartDate","initEndDate","userGroup","initUnit","newSurveyState","floor","onSurveyRender","isReportingPipelineEnabled","getSurveyProduct","getSurveyInterface","IQuestionConfigurator","constructor","answers","getDefaultData","getDefaultDirtyState","bool","isEmail","isRating","isComment","getFeedbackData","getView","Validator","validate","configuration","getError","isAnswered","QuestionConfigurator","surveyConfigurator","super","initValidator","view","validator","getTitle","getDescription","getConfiguration","View","configurator","SurveyContext","createContext","getTheme","iconButtonStyles","rootHovered","closeButtonStyles","backButtonStyles","modalStyles","modalView","zIndex","surveyStyles","EndingPageHeader","forwardRef","onDone","surveyContext","getPageIndex","Text","doneIconButton","QuestionHeader","onBack","isMiddlePage","backIconButton","closeIconButton","Header","isFirstPage","isEndingPage","black","PrivacyStatement","privacyStatement","a","infoText","EndingPageFooter","buttons","QuestionPageFooter","isLastPage","onSubmit","onNext","isSubmitButtonDisabled","emptyBottomDiv","submitButton","nextButton","Footer","SurveyQuestionComponents","getAnswersByKey","setAnswersByKey","getSurveyAnswers","getSurveyDirtyStateByKey","setSurveyDirtyStateByKey","questions","question","Question","setData","dirtyState","setDirtyState","isDirty","PageView","getIsFirstPage","getIsEndingPage","getIsLastPage","getIsSubmitButtonDisabled","getIsFromBack","firstFocusableElement","lastFocusableElement","isFromBack","ErrorString","variant","block","nowrap","input","diff","abs","Option","option","hasInput","linkText","getSurveyConfiguration","shouldHideInputWhenNotSelected","logged","TextField","optionText","generateLabelId","hashValue","charCodeAt","hashFunc","Title","labelKey","requiredMark","questionTitle","Label","QuestionTitle","buildSingleSelectionOptions","dynamicOption","setOptionData","mySetDirtyState","onRenderField","optionComponentFactory","ChoiceGroupView","questionKey","optionKey","newData","newDirtyState","myLogActivity","log","singleSelectionOptions","ChoiceGroup","ariaLabelledBy","ev","SingleSelectionView","rootClassName","CheckboxGroupView","checkboxGroup","onRenderLabel","dataKey","stringInput","MultipleSelectionView","RatingView","EmailView","CommentView","titleError","commentError","multiline","rows","resizable","CommentValidator","validateHelper","answer","SingleSelectionValidator","EmailValidator","email","test","yes","forEach","MultipleSelectionValidator","setOptionKeyToText","optionKeyToText","selectedOptions","setOptionKeyToRating","optionKeyToRating","rating","parseFloat","ratingOptionsCount","PageConfigurator","sortQuestions","sort","b","addQuestion","questionConfiguration","remaining","comments","SurveyConfigurator","featureArea","Map","pages","endingPage","getFeatureArea","sortPages","page","getPageIfNoneCreateIt","pageIndex","hasPageAtIndex","getPage","getEndingPage","getQuestionByKey","addQuestions","questionConfigurations","getDefaultAnswers","getDefaultDirtyStatePerPage","setConfiguration","getOtherFlags","comment","ratingObject","emailData","ratingData","remainingData","commentsData","shift","combineTextInputToComment","optionAnswer","feedback","q","stringifySync","extendedManifestData","surveySpecificData","selectedRating","hasEmail","SurveyView","customizedClasses","Stack","surveyDataService","onSurveySubmit","onSurveyDismiss","lastActiveElement","customParams","isPopupOutsideDismissEnabled","surveyConfiguration","parseSurveyConfiguration","isModalOpen","setIsModalOpen","getSurveyDirtyState","setCurrentPageDirty","surveyAnswers","setSurveyAnswers","surveyDirtyState","setSurveyDirtyState","newAnswers","newState","useQuestionState","modalSettings","isGlobalModalStyleEnabled","userActionAnalysisEnabled","isUserInitiatedSurvey","isThankYouPageEnabled","shouldAutoClose","isInPageMiddle","isModeless","isOriginalModeless","isBlocking","string","analysisActivity","flattenKeys","obj","prefix","keys","acc","newKey","SurveyFactory","replaceAll","additionalLogData","userCreatedDateTime","localizedUserCreatedDateTime","deltaTime","userActiveDay","lock","releaseLock","useLock","keyVault","survey","priority","priorityLevel","systemLevelAnnouncement","force","autoClose","setIsEndingPage","setPageIndex","fromBack","setFromBack","usePage","onCloseModal","element","returnFocus","telemetry","sendFeedback","onFinishSendRequest","hasComment","dismissType","onModalDismiss","keyCode","modalSpecificStyles","main","isUndefined","Modal","titleAriaId","focusTrapZoneProps","forceFocusInsideTrap","layer","exampleSurveyConfig","RatingConfigurator","EmailConfigurator","MultipleSelectionConfigurator","questionConfigurator","CommentConfigurator","FactorySurveyView","surveyMaxWidth","fontSIze","ratingDescription","fontWewight","visibility","ratingOption","area","areaDescription","areaCheckbox","areaComment","commentDescription","commentInput","emailDescription","emailOptions","emailOption","emailInput","emailError","validationError","buttonBar","commentMaxLength","SurveyViewInternal","surveyRef","setSelectedOption","_useState5","_useState6","setValidationError","onChangeRating","ratingOptions","isAdditionalContentVisible","_props","areaOptions","withComment","initialAreaState","_useState7","_useState8","areaState","setAreaState","_useState9","_useState10","setAreaComment","_useState11","_useState12","areaCommentDescription","setAreaCommentDescription","_useState13","_useState14","areaCommentError","setAreaCommentError","onChangeAreaComment","_useState15","_useState16","setComment","_useState17","_useState18","setCommentDescription","_useState19","_useState20","setCommentError","onChangeComment","_useState21","_useState22","setEmailOption","_useState23","_useState24","setEmail","_useState25","_useState26","setEmailError","onChangeEmailOption","validateEmailAddress","emailAddress","onChangeEmail","_useState27","_useState28","disableSubmitButton","setDisableSubmitButton","selectedAreas","additionalAreas","cancelIcon","checkbox","errorMessage","partial","WebuiUserSurvey","_BaseSurvey","isWebUIUserCSATSurveyByFactoryEnabled","checkUserCreatedDateTime","getUserActiveDay","isPilotEnabled","isNonAADUser","isUserActiveOneMonth","isEnglishUser","isBrowserLanguageEnglish","startsWith","isNotInternalUser","isNotSupportUser","isNotExcludedUser","isDisabledInBVT","isProdUrl","toLocaleLowerCase","isNotMcaUrl","qualtricsConditions","IsLeftNavigationHideButtonEnabled","IsHideCampaignListButtonEnabled","IsLongCampaignAndAdgroupNameEnabled","IsImprovedDateFilterEnabled","AdsCopilot","NavigationRefresh","PopupOutsideDismiss","EnhancedSurveyTriggerCondition","isUserActive10Days","CopilotAssetRecommendationSatisfactionSurveyConfig","CopilotAssetRecommendationSatisfactionSurveyView","IS_SELENIUM","validateESCTriggerCondition","surveyTriggerName","isNotE2EMode","navigator","webdriver","isMcaUrl","isESCSurveyEnabled","isSurveyTriggerValid","validateAdinsightRecommendationTriggerCondition","recommendationUrl","surveyPermission","isRecommendationUrl","surveyConditions","validateAccountSettingsTriggerCondition","accountSettingUrl","isNotMicrosoftInternalUser","isBetaProdUrl","isAccountSettingUrl","validateAssetLibraryTriggerCondition","checkPilot","isAssetLibrarySurveyEnabled","validateRSALLMTriggerCondition","apiCallingTime","getCallCountOfRSASuggestionAPI","triggerCondition","OVERALL_SURVEY_THRESHOLD","MOSTWANTED_SURVEY_THRESHOLD","MAX_VALUE","OVERALL_SURVEY_THRESHOLD_FAST_TRACK","MOSTWANTED_SURVEY_THRESHOLD_FAST_TRACK","threshold","validateRSALLMOverallCallingAPI","isAdUrl","CopilotAssetRecommendationSatisfactionSurvey","CopilotAssetRecommendationSatisfactionTrigger","_ref2$requiredModifyN","requiredModifyNumber","currentRequiredModifyNumber","validateCopilotAssetRecommendationSatisfactionTriggerCondition","CopilotRecommendationsSurveyCustomParams","escWebuiUserSurveyConfig","ESCWebUISurveyView","EscWebuiUserSurvey","surveyPreference30DaysAgo","isWebUICSATSurveyEnabled","EscWebuiUserPauseCampaignSurveyConfig","SingleSelectionConfigurator","q1","EscWebuiUserPauseCampaignSurveyView","EscWebuiUserPauseCampaignSurvey","ESCUserPauseCampaign","ESCUserPauseCampaignCustomParams","EscWebuiUPCampaignFeedbackSurveyConfig","EscWebuiUPCampaignFeedbackView","EscWebuiCampaignFeedbackSurvey","ESCUserPublishesFirstCampaign","EscWebuiAutomatedAdDeletionSurveyConfig","ESCWebUIAutomatedDeletionSurveyView","EscWebuiAutomatedAdDeletionSurvey","ESCAutomatedAdDeletion","ESCAutomatedAdDeletionCustomParams","recommendationSurveyConfig","AdInsightRecommendationSurvey","recommendationMccSurveyConfig","AdInsightRecommendationMccSurvey","escWebuiUserCancelSignupSurveyConfig","ESCWebUIUserCancelSignupSurveyView","EscWebuiUserCancelSignupSurvey","currentUser","currentLocale","currentUserLanguage","currentUserName","isProdSignupUrl","isESCSignupSurveyEnabled","validateESCSignupTriggerCondition","EscUserCancelSignup","EscUserCancelSignupCustomParams","McmWebuiOptOutFeedbackSurveyConfig","McmWebuiOptOutFeedbackView","McmWebuiOptOutFeedbackSurvey","McmUserOptOut","MCMMandatoryOptOutSurveyConfig","MCMMandatoryOptOutSurveyView","MCMMandatoryOptOutSurvey","onSubmitHideWarningCallback","onDismissReOptInCallback","AssetLibraryAppSurveyConfig","AssetLibraryAppSurveyView","AssetLibraryAppSurvey","AssetLibraryAppSurveyTrigger","AssetLibraryPickerSurveyConfig","AssetLibraryPickerSurveyView","AssetLibraryPickerSurvey","AssetLibraryPickerSurveyTrigger","AssetLibraryAIGCMVPSurveyConfig","AssetLibraryAIGCMVPSurveyView","AssetLibraryAIGCMVPSurvey","AssetLibraryAIGCMVPSurveyTrigger","reportingWebuiUserSurveyConfig","ReportingWebuiUserSurveyView","ReportingWebuiUserSurvey","reportingLastTimeVisitedObj","lastTimeVisited","isReportingUrl","RSALLMSuggestionOverallSurveyConfig","RSALLMSuggestionOverallSurvey","callCountOfRSASuggestionAPI","RSALLMSuggestionCustomParams","RSALLMSuggestionMostWantedSurveyConfig","RSALLMSuggestionMostWantedSurvey","allCountOfRSASuggestionAPI","CampaignOnboardingSurveyConfig","CampaignOnboardingSurveyView","CampaignOnboardingSurvey","onSwitchBackToOldSurveySubmit","ONBOARDING_PREFERENCE","isNewOnboardingVisibleStore","isNewOnboardingVisible","switchBackToOldCampaignOnboarding","onSwitchBackToOldSurveyDismiss","TransparentImageAnnotationSurveyConfig","TransparentImageAnnotationSurveyView","surveyCustomParamsName","TransparentImageAnnotationSurvey","BudgetCenterOverallSatisfactionSurveyConfig","BudgetCenterOverallSatisfactionSurveyView","BudgetCenterOverallSatisfactionSurvey","isPiloted","isVisitBudgetCenterPage","isBudgetCenterUrl","lastVisitDateString","shouldTrigger","VisitBudgetCenter","BudgetCenterOneTimeUserSurveyConfig","BudgetCenteOneTimeUserSurveyView","BudgetCenterOneTimeUserSurvey","isEvaluatorEnabled","AdsStudioAppSurveyConfig","AdsStudioAppSurveyView","AdsStudioAppSurvey","isAdStudioSurveyEnabled","validateAdsStudioTriggerCondition","AdsStudioAppSurveyTrigger","webuiSurveyList","getWebuiSurveyList","surveyList","implementedSurveyList","prototype","Survey","SurveyDataSource","_OCVDataService","searchParams","clientFeedbackId","Interface","Product","_this$getScope","getScope","contentType","EventName","UniqueId","EventValue","Rating","AID","CID","SubProduct","Context","DeviceType","deviceType","FeatureArea","success","OCVDataService","SurveyDataService","_ref$isTestEnv","surveyId","dataSource","tokenInfo","_ref$isReportingPipel","_ref$logActivity","_ref$sendSourcePageUR","sendSourcePageURI","appId","_dataSource$getScope","defaultFeedback","manifestType","web","sourcePageURI","application","appData","complianceChecks","authenticationType","ageGroup","sdkVersion","defaultTelemetry","tenantId","String","TenantId","loggableUserId","processSessionId","_ref2$onFinishSendReq","uuidv4","feedbackWithDefaults","telemetryWithDefaults","originalCallback","sendEventToReportingPipeline","onSuccess","SurveyContainer","resetActiveElement","SurveyComponent","setSurveyHasCampaign","surveyManager","hasCampaign","SurveyManager","appActivity","_props$surveyList","renderSurveyToDom","renderSurveyPerfMarker","willInit","activeElement","PopupContextProvider","DOMContainer","getElementById","setAttribute","createDOMContainer","selectSurvey","sortedSurveyList","reverse","selectedSurvey","getSurvey","setSurvey","checkIfSurveyIsOpen","getElementsByClassName","newSurvey","setupSurveyManager","hideChartButtonLocator","showChartButtonLocator","hideChart","restoreChart","isChartOpen","getLabelStyle","semanticColors","predicateValueEditorStyle","selector","labelsCellScopeStyle","bodyBackground","boxSizing","M","ZIndexContentComponents","StatusPopup","overflowWrap","labelsCellItemStyle","CopilotFullScreenWithTabConfig","showCopilot","entries","_entries$i","isMatch","isEqual","ToolbarContainerUINext","toggleExpandTable","originalConfig","topBanner","originalChartState","dismiss","floatingBannerId","showInfo","ToolbarContainerBase","isTableExpandedFlag","selectionCount","isCrossPageAllSelected","isSinglePageAllSelected","isMultiPage","onDataDidRender","toolbarSelectedConfig","toolbarUnselectedConfig","ToolbarContainer","_ref$semanticColors","_ref$spacing","spacing","getGlobalStyles","CollapseTable","getIconsClassNameMap","nodeIcon","RouterUtility","NodeRenderer","sitemap","shouldRenderParentNodeAsLink","isActiveNode","isActive","isParentNode","renderLinkOrDiv","noNavigation","shouldRenderDiv","nodeHyperlink","nodeHyperLinkParent","nodeHyperLinkNonParent","nodeHyperlinkActive","RouterLink","nodeActive","nodeNonActive","singleClickExpansion","beforeIcon","TreeMenu","getClassNames","nodeStyle","RouterNode","childNode","expandSelectedParentNodes","_this3","expandIconAriaLabel","treeViewContainer","nodePaddingLeft","cellHeight","flattenedStatefulMap","flattenPreviousNodes","mergeNodeState","previousMatch","output","StyledTreeMenu","treeMenu","runningIcon","themeLighter","themeLight","borderLeft","alignSelf","msg","updateDateRange","attributes","$daterange","defineProperty","formatedEnd","RangeEndDate","formatedStart","RangeStartDate","patchLegacyState","_serverContext$Curren","i18nFormat","Rangelcid","start","end","formattedStart","formattedEnd","specificRanges","DefaultSpecificRanges","newSelectedRange","getRangeIndexWithDefaultType","rangeWithIndex","getNthPeriodWithRangeType","cRangeIndex","selectedSpecificRange","getCivilDateToday","compareCivilDate","newSelectedComparedRange","comparedOption","ComparedOptions","keyToExport","rangeType","_getRangesFromData2","yesterday","fallbackDate","MTCampaignTypeEnum","MTCampaignStatus","Suspended","Deleted","UserPaused","BudgetPaused","BudgetUserPaused","MTAdGroupStatus","CampaignUserPaused","CampaignBudgetPaused","CampaignBudgetUserPaused","Draft","Expired","convertStringToEnumForCampaign","convertStringToEnumForAdGroup","useGivenEntity","edmInstance","observable","useObservable","campaignDefaultSelect","ctx","adGroupDefaultSelect","loadingFallback","errorFallback","withCurrentAdGroup","enableErrorFallback","Wrapper","getDisplayName","withCurrentCampaign","withCurrentExpandedScope","withCurrentExpandedScopeNoFallback","WebViewMessageType","outgoingMessage","messageType","enum","incomingMessage","additionalProperties","instrumentationSchema","useMessagingChannel","eventListenersRef","getHost","ReactNativeWebView","ajv","Ajv","allErrors","strict","validateOutgoingMessage","compile","validateIncomingMessage","getValidators","postMessage","messagePayload","host","onMessage","origin","listener","l","WebViewContext","WebViewContextProvider","InstrumentationContext","useGlobalFilterContext","webView","_useMessagingChannel","dateChangeListenerCallback","getDaysOfARange","filterData","dateChangeListener","removeListener","withCampaign","$select","CampaignSubTypeMapping","_IsAllData","campaignContext","campaignIdToCampaignTypeMap","setCampaignType","withCampaignType","campaignIdNumber","LANDING_PAGE_PREFERENCE","ACCOUNTS_LANDING_PAGE_PREFERENCE","OVERVIEW","ACCOUNTS_OVERVIEW","getLandingPageAndScopeState","getCurrentScope","isCustomerScope","Customer","preferenceData","findByName","defaultLandingPage","withDefaultLandingPage","DefaultLandingPage","setLandingPage","pageId","withOpportunityId","onFilterServiceLoaded","filterService","shouldSendOpportunityLog","isOpportunityIdValid","isFilterConditionValid","logOpportunity","CampaignId","AdGroupId","AdId","KeywordIds","keywordIds","AdInsight","OpportunityType","editableFilter","EditorialRejectionFlagId","$and","filters","CampaignTypeByEnumValue","getFilteredCampaignType","rawFilter","filteredCampainTypes","$in","filterMapItem","campaignTypeFilter","allTypes","emptyTypes","None","filterMapItemCached","memoize","types","mapItem","getCampaignTypesCached","testRef","defaultCampaign","filterMapItemByCampaignCached","globalCampaignType","isSmartPage","smartCampaignFilter","processSmartCampaignSearch","smartCampaignSearchFilter","updatePageMenuByCampaignCached","isPmaxCampaign","isAppCampaign","isGlobalPmaxCampaign","isGlobalAppCampaign","isPmaxCampaignWithStore","CampaignSettings","smartShoppingCampaignScope","smartShoppingCampaignFilter","_props$scope$values","hotelCampaignScope","isHotelCampaign","isGlobalHotelCampaign","hotelCampaignFilter","mixedModeAdGroupFilter","adGroupType","IsDSAMixedModeCampaignEnabled","mixedModeAdGroup","AdGroupType","adGroupTypes","SearchDynamic","filterItemByAdGroup","processedSiteMap","cachedFilter","importCenterModeFilter","smartAccountEnabled","assetReportAdTypeFilter","processAssetReportAdType","dynamicTabIds","defaultBootstrapData","StoreBootstrapData","ShowProductExplorer","ShowCapiDiag","processMMCMenu","useDataSourceInitializer","proccssor","storeBootstrapData","supportedIds","supportedDynamicTabs","getSupportedDynamicTabs","filteredSiteMap","getFilteredSiteMap","MMCDynamicTab","ReactObservablePromise","promise","getNewProviderBootstrapData","promiseHashFn","defaultRestriction","processCopilotRegionRestriction","isRegionRestricted","copilotFeature","isCopilotRegionRestricted","feature","processPermissionsCached","processScope","processScopeCached","processPathCached","basic","processAccountLinkPermission","processCustomMapper","rootId","propName","withSiteMapInternal","withWaterfallFilterStorage","HoC","ComponentWithPreference","isSDK","getSDKParams","finalUrl","mkt","country","campaignNamePrefix","decodeURIComponent","getSDKCampaignName","getLanguageFromMkt","getFinalURL","isSdkLoginCompleted","sdkLoginCompleted","isFirefoxSDKSignupScenario","userAgent","getSignoutUrl","isSignupFlow","sdkLoginPagePath","encodeURIComponent","protocol","METRIC_OPTIONS","withCollapseAdapter","AccordionCard","activeKeys","setActiveKeys","restProps","activeKey","CollapseCard","ValidatedFormCard","FormCard","ValidatedCollapseCard","FormCardBasicHeader","DefaultHeader","FormCardDefaultHeader","helpTopic","helpLabel","contentAfter","parentContentAfter","HelpButton","withHelpButton"],"sourceRoot":""}