{"version":3,"file":"static/js/application.initial~250859eb.eab43e4c.js","mappings":"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ACF,IAAK,OACHA,EAAM,KACN,MACF,IAAK,cACHA,EAAM,MACN,MAIF,IAAK,UACHA,EAAM,CAAC,MAAM,OAIf,OAAOA,CACR,E,mBAEM,SAA0BhrC,EAAMw+C,GACrC,IAAIxT,EAAMhrC,EAEV,GAAI,gBAAgBwsB,KAAKxsB,GACvB,MAAO,sBAAwBA,EAGjC,OAAQA,GACR,IAAK,6BACH,MAAO,6BACT,IAAK,oBACL,IAAK,sCACHgrC,EAAM,uCACN,MACF,IAAK,4BACL,IAAK,8CACHA,EAAM,+CACN,MACF,IAAK,mCACL,IAAK,qDACHA,EAAM,sDACN,MACF,IAAK,4BACL,IAAK,8CACHA,EAAM,+CACN,MACF,IAAK,2BACL,IAAK,6CACHA,EAAM,8CACN,MACF,IAAK,yBACL,IAAK,2CACHA,EAAM,4CACN,MACF,IAAK,oCACL,IAAK,sDACHA,EAAM,uDACN,MACF,IAAK,mCACL,IAAK,qDACHA,EAAM,sDACN,MACF,IAAK,iCACL,IAAK,mDACHA,EAAM,oDACN,MACF,IAAK,SACL,IAAK,aACL,IAAK,2BACL,IAAK,+BACHA,EAAM,4BACN,MACF,IAAK,cACL,IAAK,gCACL,IAAK,kBACL,IAAK,oCACHA,EAAM,iCACN,MACF,IAAK,kBACL,IAAK,oCACHA,EAAM,qCACN,MACF,IAAK,mBACL,IAAK,qBACL,IAAK,QACL,IAAK,qCACL,IAAK,uCACL,IAAK,0BACHA,EAAM,2BACN,MACF,IAAK,kBACL,IAAK,cACL,IAAK,oCACL,IAAK,gCACHA,EAAM,iCACN,MACF,IAAK,oBACL,IAAK,sCACHA,EAAM,uCACN,MACF,IAAK,iBACL,IAAK,mCACHA,EAAM,oCACN,MACF,IAAK,uBACL,IAAK,yCACHA,EAAM,0CACN,MACF,IAAK,yBACL,IAAK,2CACHA,EAAM,4CACN,MACF,IAAK,+BACL,IAAK,iDACHA,EAAM,kDACN,MACF,IAAK,4BACL,IAAK,8CACHA,EAAM,+CACN,MACF,IAAK,mCACL,IAAK,qDACHA,EAAM,sDACN,MACF,IAAK,6BACL,IAAK,+CACHA,EAAM,gDACN,MACF,IAAK,oCACL,IAAK,sDACHA,EAAM,uDACN,MACF,IAAK,gCACL,IAAK,kDACHA,EAAM,mDACN,MACF,IAAK,wCACL,IAAK,0DACHA,EAAM,2DACN,MACF,IAAK,aACL,IAAK,+BACHA,EAAM,gCACN,MACF,IAAK,aACL,IAAK,+BACHA,EAAM,gCACN,MACF,IAAK,MACL,IAAK,wBACHA,EAAM,yBACN,MACF,IAAK,uBACL,IAAK,yCACHA,EAAM,0CACN,MACF,IAAK,mBACL,IAAK,qCACHA,EAAM,sCACN,MACF,IAAK,0BACL,IAAK,4CACHA,EAAM,6CACN,MACF,IAAK,iBACL,IAAK,mCACHA,EAAM,oCACN,MACF,IAAK,wBACL,IAAK,0CACHA,EAAM,2CACN,MACF,IAAK,oBACL,IAAK,sCACHA,EAAM,uCACN,MACF,IAAK,2BACL,IAAK,6CACHA,EAAM,8CACN,MACF,IAAK,mBACL,IAAK,qCACHA,EAAM,sCACN,MACF,IAAK,gCACL,IAAK,kDACHA,EAAM,mDACN,MACF,IAAK,4BACL,IAAK,8CACHA,EAAM,+CACN,MACF,IAAK,yCACL,IAAK,2DACHA,EAAM,4DACN,MACF,IAAK,eACL,IAAK,MACL,IAAK,iCACL,IAAK,wBACHA,EAAM,yBACN,MACF,IAAK,WACL,IAAK,6BA+BL,IAAK,oBACL,IAAK,sCACHA,EAAK,uCACL,MA/BF,IAAK,uBACL,IAAK,yCA+BL,IAAK,6BACL,IAAK,+CACHA,EAAK,gDACL,MA/BF,IAAK,oBACL,IAAK,sCA+BL,IAAK,0BACL,IAAK,4CACHA,EAAK,6CACL,MA/BF,IAAK,4BACL,IAAK,8CA+BL,IAAK,gCACL,IAAK,kDACHA,EAAK,mDACL,MA/BF,IAAK,qBACL,IAAK,uCA+BL,IAAK,2BACL,IAAK,6CACHA,EAAK,8CACL,MA/BF,IAAK,4BACL,IAAK,8CA+BL,IAAK,8BACL,IAAK,gDACHA,EAAK,iDACL,MA/BF,IAAK,aACL,IAAK,+BAGL,IAAK,oBACL,IAAK,sCA2BL,IAAK,oBACL,IAAK,sCACHA,EAAK,uCACL,MACF,IAAK,yBACL,IAAK,eACHA,EAAM,qCACN,MACF,IAAK,wBACL,IAAK,cACHA,EAAM,oCACN,MACF,IAAK,4BACL,IAAK,kBACHA,EAAM,wCACN,MACF,IAAK,aACL,IAAK,oCACHA,EAAM,qCACN,MACF,IAAK,aACL,IAAK,oCACHA,EAAM,qCACN,MACF,IAAK,cACL,IAAK,qCACHA,EAAM,sCACN,MACF,IAAK,mBACL,IAAK,0CACHA,EAAM,2CACN,MACF,IAAK,aACL,IAAK,oCACHA,EAAM,qCACN,MACF,IAAK,YACL,IAAK,qBACL,IAAK,mCACL,IAAK,4CACHA,EAAM,6CACN,MACF,IAAK,mBACL,IAAK,0CACL,IAAK,6BACHA,EAAM,8BACN,MACF,IAAK,YACL,IAAK,aACL,IAAK,mCACL,IAAK,oCACHA,EAAM,qCACN,MACF,IAAK,cACHA,EAAM,OACN,MACF,IAAK,iBACH,OAAQwT,GACR,IAAK,WACHxT,EAAM,SACN,MACF,IAAK,eACHA,EAAM,iBACN,MACF,QACEA,EAAM,kBAGR,MACF,IAAK,gBACH,OAAQwT,GACR,IAAK,UACL,IAAK,WACHxT,EAAM,SACN,MACF,QACEA,EAAM,iBAGR,MACF,IAAK,aACL,IAAK,gBACL,IAAK,oBAkOL,IAAK,iBACHA,EAAM,SACN,MAjOF,IAAK,KACL,IAAK,aACL,IAAK,YACL,IAAK,OACL,IAAK,YACL,IAAK,eACL,IAAK,wBACL,IAAK,cACHA,EAAM,KACN,MACF,IAAK,aACH,OAAQwT,GACN,IAAK,sBACL,IAAK,6BACHxT,EAAM,+BAGV,MACF,IAAK,eACH,OAAQwT,GACN,IAAK,sBACL,IAAK,6BACHxT,EAAM,iCAGV,MACF,IAAK,eACH,OAAQwT,GACN,IAAK,sBACL,IAAK,6BACHxT,EAAM,iCAGV,MACF,IAAK,gBACH,OAAQwT,GACN,IAAK,sBACL,IAAK,6BACHxT,EAAM,kCAGV,MACF,IAAK,gBACHA,EAAM,iBACN,MACF,IAAK,qBACL,IAAK,iBACL,GACO,2BADCwT,EAEJxT,EAAM,4BAGNA,EAAM,iBAGR,MACF,IAAK,YACHA,EAAM,YACN,MACF,IAAK,eACHA,EAAM,mCACN,MACF,IAAK,MACL,IAAK,eACHA,EAAM,aACN,MACF,IAAK,WACL,IAAK,eACL,IAAK,0BACH,OAAQwT,GACN,IAAK,WACHxT,EAAM,OACN,MACF,IAAK,UACL,IAAK,KACL,IAAK,UACL,IAAK,WACL,IAAK,sBACL,IAAK,6BACL,IAAK,yBACHA,EAAM,gBAGV,MACF,IAAK,uCACL,IAAK,+BAmJL,IAAK,mBACHA,EAAM,qBACN,MAlJF,IAAK,UACL,IAAK,qBACP,IAAK,gBACH,IAAK,yBACHA,EAAM,eACN,MACF,IAAK,wBACL,IAAK,yBACL,IAAK,wBACL,IAAK,mBACHA,EAAM,sBACN,MACF,IAAK,aACHA,EAAM,cACN,MACF,IAAK,uBACL,IAAK,iBACL,IAAK,SACHA,EAAM,gBACN,MACF,IAAK,yBACHA,EAAM,0BACN,MACF,IAAK,uBACHA,EAAM,wBACN,MACF,IAAK,8BACHA,EAAM,+BACN,MACF,IAAK,4BACHA,EAAM,6BACN,MACF,IAAK,0BACHA,EAAM,2BACN,MACF,IAAK,wBACHA,EAAM,yBACN,MACF,IAAK,gCACHA,EAAM,iCACN,MACF,IAAK,sCACHA,EAAM,uCACN,MACF,IAAK,SACHA,EAAM,OACN,MACF,IAAK,YACHA,EAAM,YACN,MACF,IAAK,aACHA,EAAM,aACN,MACF,IAAK,UACH,GACK,2BADGwT,EAENxT,EAAM,mBAGNA,EAAM,QAGR,MACF,IAAK,gBACHA,EAAM,cACN,MACF,IAAK,mBACHA,EAAM,iBACN,MACF,IAAK,eACHA,EAAM,aACN,MACF,IAAK,kBACHA,EAAM,SACN,MACF,IAAK,cACH,OAAQwT,GACN,IAAK,UACL,IAAK,WACHxT,EAAM,OACN,MACF,QACEA,EAAM,eAGV,MACF,IAAK,mBACL,IAAK,0BACHA,EAAM,YACN,MACF,IAAK,qBACL,IAAK,2BACHA,EAAM,aACN,MACF,IAAK,4BACHA,EAAM,qBACN,MACF,IAAK,iBACH,GACO,2BADCwT,EAEJxT,EAAM,sCAGNA,EAAM,UAGV,MACF,IAAK,mBACH,GACO,2BADCwT,EAEJxT,EAA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","sources":["../webpack/universalModuleDefinition","../webpack/bootstrap","../webpack-src:/cookie/index.ts","../webpack-src:/cookie/src/index.ts","../../../../node_modules/.pnpm/@bingads-webui+copilot-i18n@1.3.18/node_modules/@bingads-webui/copilot-i18n/src/I18nModel.ts","../../../../node_modules/.pnpm/@bingads-webui+copilot-i18n@1.3.18/node_modules/@bingads-webui/copilot-i18n/src/I18nProvider.tsx","../../../../node_modules/.pnpm/@bingads-webui+copilot-i18n@1.3.18/node_modules/@bingads-webui/copilot-i18n/src/with-i18n-provider.tsx","../../../../../../../../external/underscore","../../../../../../../../external/react","../../../../../../../../external/@fluentui/react-components","../../../../../../../../external/@bingads-webui/copilot-i18n","../../../../../../../../external/@bingads-webui-react/copilot-ui-base","../../../../../../../../external/@fluentui/react-icons","../../../../../../../../external/markdown-to-jsx","../../../../../../../../external/uuid","../../../../../../../../external/@bingads-webui/ads-copilot-ui","../../../../../../../../external/@bingads-webui-react/msa-copilot-common","../webpack-src:/copilot-insights/index.ts","../webpack-src:/copilot-insights/src/index.ts","../webpack-src:/copilot-insights/src/components/insights-panel/index.ts","../webpack-src:/copilot-insights/src/components/insights-panel/insights-panel.tsx","../../../../../../../../external/@bingads-webui-react/app-layout-container","../webpack-src:/copilot-insights/src/components/insights-panel/styles.ts","../webpack-src:/copilot-insights/src/components/insights-panel/fluctuations.tsx","../../../../../../../../external/@bingads-webui-universal/primitive-utilities","../webpack-src:/copilot-insights/src/hooks/use-fluctuations-message.ts","../webpack-src:/copilot-insights/src/types.ts","../webpack-src:/copilot-insights/src/components/insights-panel/summary.tsx","../../../../../../../../external/@bingads-webui-react/ui-blocker","../../../../../../../../external/@bingads-webui-react/preference-context","../../../../../../../../external/@bingads-webui-universal/temporal-utitlities","../../../../../../../../external/@bingads-webui-react/scope-service","../webpack-src:/copilot-insights/src/components/insights-chart/index.ts","../webpack-src:/copilot-insights/src/components/insights-chart/insights-chart.tsx","../../../../../../../../external/@bingads-webui-react/fluctuations-chart","../webpack-src:/copilot-insights/src/components/insights-panel/insights-panel-loader.tsx","../../../../../../../../external/@bingads-webui-react/i18n-context","../webpack-src:/copilot-insights/src/components/insights-button/index.ts","../webpack-src:/copilot-insights/src/components/insights-button/insights-button.tsx","../../../../../../../../external/@bingads-webui-react/hoc-with-permissions","../webpack-src:/copilot-insights/src/components/summarize-plugin-renderer/index.ts","../webpack-src:/copilot-insights/src/components/summarize-plugin-renderer/summarize-plugin-renderer.tsx","../webpack-src:/copilot-insights/src/components/insights-summarize-message/index.ts","../webpack-src:/copilot-insights/src/components/insights-summarize-message/insights-summarize-message.tsx","../webpack-src:/copilot-insights/src/hooks/use-summarize-message.ts","../webpack-src:/copilot-insights/src/components/insights-summarize-message/insights-summarize-plugin-result.tsx","../webpack-src:/copilot-insights/src/components/insights-summarize-message/single-result.tsx","../webpack-src:/copilot-insights/src/components/insights-summarize-message/get-comparison-date-period.tsx","../webpack-src:/copilot-insights/src/components/insights-summarize-message/use-normalized-perf-metrics.ts","../webpack-src:/copilot-insights/src/components/insights-summarize-message/use-insights-summarize-message-styles.ts","../webpack-src:/copilot-insights/src/components/insights-summarize-message/sanitize-date-from-summarize-plugin.ts","../webpack-src:/copilot-insights/src/components/insights-missing-params/index.ts","../webpack-src:/copilot-insights/src/components/insights-missing-params/insights-missing-params.tsx","../webpack-src:/copilot-insights/src/components/fluctuations-plugin-renderer/index.ts","../webpack-src:/copilot-insights/src/components/fluctuations-plugin-renderer/fluctuations-plugin-renderer.tsx","../webpack-src:/copilot-insights/src/components/insights-panel-preview/index.ts","../webpack-src:/copilot-insights/src/components/insights-panel-preview/insights-panel-preview.tsx","../webpack-src:/copilot-insights/src/components/insights-panel-preview/use-insights-panel-preview-styles.ts","../webpack-src:/copilot-insights/src/i18n-keys.ts","../webpack-src:/custom-column-parser-pegjs/index.js","../webpack-src:/custom-column-parser-pegjs/src/parser.pegjs","../webpack-src:/custom-column-parser/index.js","../webpack-src:/custom-column-parser/src/custom-column-parser.js","../../../../../../../../external/@bingads-webui/custom-column-parser-pegjs","../webpack-src:/custom-columns-shared-config/index.js","../webpack-src:/custom-columns-shared-config/src/metrics/index.js","../webpack-src:/custom-columns-shared-config/src/metrics/performance.js","../webpack-src:/custom-columns-shared-config/src/metrics/conversions.js","../webpack-src:/custom-columns-shared-config/src/segments/index.js","../webpack-src:/custom-columns-shared-config/src/segments/device-type.js","../webpack-src:/custom-columns-shared-config/src/segments/network.js","../webpack-src:/custom-columns-shared-config/src/segments/top-vs-other.js","../webpack-src:/custom-columns-shared-config/src/config.js","../webpack-src:/date-picker/index.js","../webpack-src:/date-picker/src/date-picker-view.es","../../../../../../../../external/@bingads-webui/deterministic-view","../../../../../../../../external/@bingads-webui/keycode","../../../../../../../../external/@bingads-webui/kendo/kendo.datepicker","../webpack-src:/date-picker/src/date-picker-template.pug","../../../../../../../../external/pug-runtime","../../../../../../../../external/bluebird","../webpack-src:/deflicker/index.js","../webpack-src:/deflicker/src/promise.es","../../../../../../../../external/backbone","../webpack-src:/deterministic-view/index.js","../webpack-src:/deterministic-view/src/helpers.es","../webpack-src:/deterministic-view/src/deterministic-view.es","../../../../../../../../external/@bingads-webui/base-view","../webpack-src:/deterministic-view/src/render-engine.es","../webpack-src:/deterministic-view/src/focus-keeper.es","../webpack-src:/deterministic-wrapper-view/index.js","../webpack-src:/deterministic-wrapper-view/src/deterministic-wrapper-view.es","../webpack-src:/deterministic-wrapper-view/src/deterministic-wrapper-for-html.es","../webpack-src:/deterministic-wrapper-view/src/deterministic-wrapper-for-backbone-view.es","../webpack-src:/dialog/index.js","../webpack-src:/dialog/src/index.es","../webpack-src:/dialog/src/template/index.pug","../webpack-src:/dialog/src/dialog-decorator/dialog-decorator.es","../../../../../../../../external/@bingads-webui/kendo/kendo.window","../../../../../../../../external/bootstrap","../../../../../../../../external/jquery","../../../../../../../../external/urijs","../webpack-src:/download-service/index.js","../webpack-src:/download-service/src/iframe-download.js","../../../../../../../../external/@bingads-webui-react/hoc-with-instrumentation","../webpack-src:/download-service/src/index.js","../webpack-src:/download-service/src/downloadify.js","../../../../../../../../external/@bingads-webui/restore-scroll-bar","../webpack-src:/draggable-list/index.js","../webpack-src:/draggable-list/src/draggable-list.es","../webpack-src:/draggable-list/src/template.pug","../../../../../../../../external/knockout","../../../../../../../../external/@bingads-webui/knockout-view","../webpack-src:/edm-bulk/index.js","../webpack-src:/edm-bulk/src/index.js","../webpack-src:/edm-bulk/src/bulk-upsert.js","../../../../../../../../external/@bingads-webui/reflection","../../../../../../../../external/@bingads-webui/odata-bulk-upsert","../../../../../../../../external/@bingads-webui/http-util","../../../../../../../../external/@bingads-webui/url-util","../webpack-src:/edm-bulk/src/constants.js","../../../../../../../../external/@bingads-webui/registry","../../../../../../../../external/@bingads-webui/edm-shared","../webpack-src:/edm-core-legacy/index.js","../webpack-src:/edm-core-legacy/src/index.js","../webpack-src:/edm-core-legacy/src/types-plugin.js","../webpack-src:/edm-core-legacy/src/schema-plugin.js","../webpack-src:/edm-core/index.js","../webpack-src:/edm-core/src/index.js","../webpack-src:/edm-core/src/types-plugin.js","../webpack-src:/edm-core/src/schema-plugin.js","../webpack-src:/edm-js-data/index.js","../webpack-src:/edm-js-data/src/index.js","../../../../../../../../external/js-data","../../../../../../../../external/js-data-schema","../webpack-src:/edm-js-data/src/js-data.js","../webpack-src:/edm-odata-legacy/index.js","../webpack-src:/edm-odata-legacy/src/index.js","../../../../../../../../external/@bingads-webui/edm-resource-identifiers-legacy","../../../../../../../../external/@bingads-webui/edm-resource-identifiers","../webpack-src:/edm-odata/index.js","../webpack-src:/edm-odata/src/index.js","../webpack-src:/edm-odata/src/cache.js","../../../../../../../../external/json-stable-stringify","../webpack-src:/edm-odata/src/server-call-cache-item.js","../../../../../../../../external/@bingads-webui-universal/observable","../webpack-src:/edm-odata/src/observable-cache.js","../../../../../../../../external/@bingads-webui-universal/time-aware-cache","../webpack-src:/edm-odata/src/constants.js","../webpack-src:/edm-odata/src/cache-event.js","../webpack-src:/edm-resource-identifiers-legacy/index.js","../webpack-src:/edm-resource-identifiers-legacy/src/index.js","../webpack-src:/edm-resource-identifiers/index.js","../webpack-src:/edm-resource-identifiers/src/index.js","../webpack-src:/edm-shared/index.js","../webpack-src:/edm-shared/src/types-plugin-shared.js","../webpack-src:/edm-shared/src/resource-identifiers-shared.js","../webpack-src:/experiment-logger/index.js","../webpack-src:/experiment-logger/src/exp-logger-factory.js","../webpack-src:/experiment-logger/src/activity.js","../webpack-src:/experiment-logger/src/exp-logger.js","../webpack-src:/file-picker/index.js","../webpack-src:/file-picker/src/view/index.es","../webpack-src:/file-picker/src/viewmodel/index.es","../../../../../../../../external/path-browserify","../webpack-src:/file-picker/src/template/index.pug","../webpack-src:/filter-agent/index.js","../webpack-src:/filter-agent/src/filter-agent.js","../../../../../../../../external/@bingads-webui/filter-service","../webpack-src:/filter-agent/src/selector-filter-agent.es","../webpack-src:/filter-agent/src/base-filter-agent.es","../webpack-src:/filter-agent/src/searchbox-filter-agent.es","../webpack-src:/filter-agent/src/filter-editor-agent.es","../../../../../../../../external/@bingads-webui/filter-editor","../../../../../../../../external/@bingads-webui/deterministic-wrapper-view","../webpack-src:/filter-agent/src/filter-bar-agent.es","../../../../../../../../external/@bingads-webui/filter-bar","../webpack-src:/filter-agent/src/filter-menu-agent.es","../../../../../../../../external/@bingads-webui/dialog","../webpack-src:/filter-agent/src/template/removeDialog.pug","../webpack-src:/filter-agent/src/schema-localizer.es","../../../../../../../../external/underscore.string","../webpack-src:/filter-bar/index.js","../webpack-src:/filter-bar/src/filter-bar-view.es","../../../../../../../../external/@bingads-webui/filter-i18n","../webpack-src:/filter-bar/src/filter-bar-template.pug","../webpack-src:/filter-bar/src/single.pug","../webpack-src:/filter-bar/src/list.pug","../../../../../../../../external/classnames","../../../../../../../../external/prop-types","../../../../../../../../external/@bingads-webui-react/with-default-styles","../../../../../../../../external/@bingads-webui-react/primitive","../webpack-src:/filter-commons/index.js","../webpack-src:/filter-commons/src/constants.js","../webpack-src:/filter-commons/src/converter.js","../webpack-src:/filter-commons/src/predicate.js","../webpack-src:/filter-commons/src/util.js","../webpack-src:/filter-commons/src/add-filter-button.js","../webpack-src:/filter-commons/src/with-popover.js","../../../../../../../../external/hoist-non-react-statics","../../../../../../../../external/@bingads-webui-react/hoc-utils","../../../../../../../../external/@bingads-webui-react/callout","../webpack-src:/filter-commons/src/schema-localizer.js","../webpack-src:/filter-commons/src/filterMetadataToLegacy.js","../webpack-src:/filter-commons/src/enum.js","../webpack-src:/filter-commons/src/filterMetadata.js","../webpack-src:/filter-editor/index.js","../webpack-src:/filter-editor/src/index.es","../../../../../../../../external/@bingads-webui/predicate-list","../webpack-src:/filter-editor/src/template/index.pug","../webpack-src:/filter-entity/index.js","../webpack-src:/filter-entity/src/index.es","../../../../../../../../external/@bingads-webui/filter-schema","../webpack-src:/filter-entity/src/converter/normalize.js","../webpack-src:/filter-entity/src/converter/legacy.es","../webpack-src:/filter-entity/src/converter/enum.es","../webpack-src:/filter-entity/src/converter/odata-4.es","../../../../../../../../external/@bingads-webui/kendo/kendo.data.odata","../webpack-src:/filter-entity/src/converter/kendo.es","../webpack-src:/filter-i18n/index.js","../webpack-src:/filter-i18n/src/index.es","../webpack-src:/filter-i18n/src/schema-i18n.es","../webpack-src:/filter-schema/index.js","../webpack-src:/filter-schema/src/index.es","../webpack-src:/filter-schema/src/schema-utils.es","../../../../../../../../external/@bingads-webui/filter-commons","../webpack-src:/filter-service/index.js","../webpack-src:/filter-service/src/filter-service.js","../../../../../../../../external/@bingads-webui/filter-entity","../../../../../../../../external/@bingads-webui/safe-json","../webpack-src:/filter-service/src/filter-service-util.js","../../../../../../../../external/react-dom","../webpack-src:/focus-lock-decorator/index.js","../webpack-src:/focus-lock-decorator/src/index.js","../webpack-src:/focus-lock-decorator/src/focus-lock-instance-decorator.js","../webpack-src:/focus-lock-decorator/src/focus-lock-backbone-instance-wrapper.js","../../../../../../../../external/@bingads-webui-react/focus-lock","../../../../../../../../external/@bingads-webui-react/backbone-instance-wrapper","../webpack-src:/focus-lock-decorator/src/focus-lock-decorator.js","../webpack-src:/focus-lock-decorator/src/focus-lock-backbone-wrapper.js","../../../../../../../../external/@bingads-webui-react/backbone-view-wrapper","../webpack-src:/global-search-copilot/index.ts","../webpack-src:/global-search-copilot/src/index.tsx","../webpack-src:/global-search-copilot/src/CopilotResultView.tsx","../../../../../../../../external/@bingads-webui-react/with-site-map","../../../../../../../../external/@bingads-webui-react/list-selector","../webpack-src:/global-search-copilot/src/utils.ts","../../../../../../../../external/@bingads-webui/search-utils","../webpack-src:/global-search-copilot/src/CopilotResultView.styles.ts","../webpack-src:/http-util/src/util/url.ts","../webpack-src:/http-util/src/channel/odata-core.ts","../webpack-src:/http-util/src/channel/odata-batch.ts","../webpack-src:/http-util/src/util/multipart.ts","../webpack-src:/http-util/index.ts","../webpack-src:/http-util/src/channel/odata.ts","../webpack-src:/http-util/src/channel/core.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})((typeof self !== 'undefined' ? self : this), function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 25);\n","export * from './src/index';\r\n","export function createCookie(configs: {\r\n cName: string,\r\n cValue: string,\r\n expires?: Date,\r\n path?: string,\r\n domain?: string,\r\n secure?: boolean,\r\n encode?: boolean,\r\n samesite?: string,\r\n}) {\r\n const {\r\n cName, cValue, expires, path, domain, secure, encode = true, samesite,\r\n } = configs;\r\n const value = encode ? encodeURIComponent(cValue) : cValue;\r\n\r\n return [\r\n `${cName}=${value}`,\r\n expires ? `expires=${expires.toUTCString()}` : '',\r\n path ? `path=${path}` : '',\r\n domain ? `domain=${domain}` : '',\r\n secure ? 'secure' : '',\r\n samesite ? `samesite=${samesite}` : '',\r\n ].filter((item) => !!item).join('; ');\r\n}\r\n\r\nexport function set(\r\n cName: string,\r\n cValue: string,\r\n expires?: Date,\r\n path?: string,\r\n domain?: string,\r\n secure?: boolean,\r\n samesite?: string,\r\n) {\r\n document.cookie = createCookie({\r\n cName,\r\n cValue,\r\n expires,\r\n path,\r\n domain,\r\n secure,\r\n encode: true,\r\n samesite,\r\n });\r\n}\r\n\r\nexport function get(cName: string, skipDecode?: boolean) {\r\n const ARRcookies = document.cookie.split('; ');\r\n\r\n for (let i = 0; i < ARRcookies.length; i += 1) {\r\n let x = ARRcookies[i].substr(0, ARRcookies[i].indexOf('='));\r\n const y = ARRcookies[i].substr(ARRcookies[i].indexOf('=') + 1);\r\n x = x.replace(/^\\s+|\\s+$/g, '');\r\n if (x === cName) {\r\n // Use case: ImportFileSaSUrl is only valid with specific arguments containing encoded html\r\n // But some portions of the Url with encodable characters are not encoded\r\n // (e.g. &arg_name=.....)\r\n // It would be impossible to re-encode the Url\r\n // after getting from cookie b/c body of an argument\r\n // could contain some of the characters that should get encoded\r\n if (skipDecode) {\r\n return y;\r\n }\r\n return decodeURIComponent(y);\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n","import { isEmpty, template } from 'underscore';\r\nimport { TranslatedStrings } from './translatedStrings';\r\nimport { IBingAdsI18nModel } from './types';\r\n\r\n// maps locale to a @bingads-webui/localization json file\r\nconst localeMap: any = {\r\n 'zh-CN': 'zh-Hans',\r\n 'zh-HK': 'zh-Hant',\r\n 'zh-TW': 'zh-Hant',\r\n};\r\n\r\nexport interface II18nModel extends IBingAdsI18nModel {\r\n getLocale(): string;\r\n getString(key: string, model?: Record): string;\r\n}\r\n\r\nexport class I18nModel implements II18nModel {\r\n private locale: string;\r\n\r\n private translationData: TranslatedStrings;\r\n\r\n private translationDataLocale: string;\r\n\r\n private bingAdsI18n?: IBingAdsI18nModel;\r\n\r\n private currencyCode?: string;\r\n\r\n constructor(translationData: TranslatedStrings, locale: string, bingAdsI18n?: IBingAdsI18nModel, currencyCode?: string) {\r\n this.locale = locale;\r\n this.translationData = translationData;\r\n this.translationDataLocale = this.getTranslationDataLocale();\r\n this.bingAdsI18n = bingAdsI18n;\r\n\r\n // need to support having a default currency code here because it's not set in the CCUI i18n object by default\r\n this.currencyCode = currencyCode;\r\n }\r\n\r\n private getTranslationDataLocale() {\r\n if (this.translationData[this.locale]) {\r\n return this.locale;\r\n }\r\n\r\n if (localeMap[this.locale]) {\r\n return localeMap[this.locale];\r\n }\r\n\r\n const [language] = this.locale.split('-');\r\n if (this.translationData[language]) {\r\n return language;\r\n }\r\n\r\n return '';\r\n }\r\n\r\n getLocale() {\r\n return this.locale;\r\n }\r\n\r\n getString(key: string, model?: Record) {\r\n let str = this.translationData[this.translationDataLocale]?.[key] || key;\r\n if (!isEmpty(model) && str) {\r\n const compiled = template(str);\r\n str = compiled(model);\r\n }\r\n\r\n return str;\r\n }\r\n\r\n getDateFormats() {\r\n return this.bingAdsI18n!.getDateFormats();\r\n }\r\n\r\n formatCurrency(number: number, currency?: string, options?: any) {\r\n return this.bingAdsI18n!.formatCurrency(number, currency || this.currencyCode, options);\r\n }\r\n\r\n formatCivilDate(dateObject: object, options?: any) {\r\n return this.bingAdsI18n!.formatCivilDate(dateObject, options);\r\n }\r\n\r\n formatDate(date: Date, options?: any) {\r\n return this.bingAdsI18n!.formatDate(date, options);\r\n }\r\n\r\n formatDecimal(number: number, options?: any) {\r\n return this.bingAdsI18n!.formatDecimal(number, options);\r\n }\r\n\r\n formatDecimalToFixed(number: number, options?: any) {\r\n return this.bingAdsI18n!.formatDecimalToFixed(number, options);\r\n }\r\n\r\n formatPercent(number: number, options?: any): string {\r\n return this.bingAdsI18n!.formatPercent(number, options);\r\n }\r\n\r\n parseCivilDate(value: string, options?: any) {\r\n return this.bingAdsI18n!.parseCivilDate(value, options);\r\n }\r\n\r\n dateParser(options?: any) {\r\n return this.bingAdsI18n!.dateParser(options);\r\n }\r\n}\r\n","import React, {\r\n FC,\r\n memo,\r\n useContext,\r\n useMemo,\r\n} from 'react';\r\nimport { translatedStrings as defaultTranslatedStrings, TranslatedStrings } from './translatedStrings';\r\nimport { I18nModel } from './I18nModel';\r\nimport { IBingAdsI18nModel } from './types';\r\n\r\nexport const DEFAULT_LOCALE = 'en-us';\r\n\r\nexport type I18nProviderProps = {\r\n translatedStrings?: TranslatedStrings;\r\n locale?: string;\r\n children?: React.ReactNode;\r\n bingAdsI18n?: IBingAdsI18nModel;\r\n currencyCode?: string;\r\n};\r\n\r\nexport const I18nContext = React.createContext(null);\r\nexport const useI18nContext = () => useContext(I18nContext);\r\n\r\nexport const I18nProvider: FC = memo((props) => {\r\n const {\r\n bingAdsI18n,\r\n children,\r\n currencyCode,\r\n locale = DEFAULT_LOCALE,\r\n translatedStrings = defaultTranslatedStrings,\r\n } = props;\r\n\r\n const i18nModel = useMemo(\r\n () => new I18nModel(translatedStrings as TranslatedStrings, locale, bingAdsI18n, currencyCode),\r\n [translatedStrings, locale, bingAdsI18n, currencyCode],\r\n );\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n});\r\n\r\nI18nProvider.displayName = 'I18nProvider';\r\n","import React from 'react';\r\nimport { I18nProvider } from './I18nProvider';\r\n\r\nexport function withI18nProvider(Component: React.ComponentType) {\r\n const HOC = (props: any) => (\r\n \r\n \r\n \r\n );\r\n\r\n return HOC;\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__5__;","module.exports = __WEBPACK_EXTERNAL_MODULE__8__;","module.exports = __WEBPACK_EXTERNAL_MODULE__15__;","module.exports = __WEBPACK_EXTERNAL_MODULE__16__;","module.exports = __WEBPACK_EXTERNAL_MODULE__19__;","module.exports = __WEBPACK_EXTERNAL_MODULE__27__;","module.exports = __WEBPACK_EXTERNAL_MODULE__44__;","module.exports = __WEBPACK_EXTERNAL_MODULE__78__;","module.exports = __WEBPACK_EXTERNAL_MODULE__104__;","module.exports = __WEBPACK_EXTERNAL_MODULE__126__;","export * from './src';\r\n","export * from './components/insights-panel';\r\nexport * from './components/insights-button';\r\nexport * from './components/summarize-plugin-renderer';\r\nexport * from './components/fluctuations-plugin-renderer';\r\nexport * from './i18n-keys';\r\n","export * from './insights-panel';\r\nexport * from './insights-panel-loader';\r\n","import React, {\r\n useCallback,\r\n useContext,\r\n useEffect,\r\n useMemo,\r\n useState,\r\n} from 'react';\r\nimport {\r\n Button,\r\n Card,\r\n CardHeader,\r\n mergeClasses,\r\n Tooltip,\r\n Subtitle1,\r\n} from '@fluentui/react-components';\r\nimport { DismissRegular, Info16Regular } from '@fluentui/react-icons';\r\nimport { Mode, LayoutContext } from '@bingads-webui-react/app-layout-container';\r\nimport { IAIMessage } from '@bingads-webui/ads-copilot-ui';\r\nimport { I18nContext } from '@bingads-webui/copilot-i18n';\r\nimport { type ILogger } from '@bingads-webui-react/msa-copilot-common';\r\n\r\nimport { usePanelStyles } from './styles';\r\nimport { Fluctuations } from './fluctuations';\r\nimport { IDateRange } from './types';\r\nimport { useFluctuationsMessage } from '../../hooks/use-fluctuations-message';\r\n\r\nexport type InsightPanelProps = {\r\n replyToId: string,\r\n TimeZone: number,\r\n dateRange: IDateRange,\r\n dateFormat: string,\r\n logger?: ILogger,\r\n onFeedbackButtonClick: IAIMessage['onFeedbackButtonClick'];\r\n};\r\n\r\nexport const InsightsPanel: React.FC = React.memo((props) => {\r\n const {\r\n replyToId,\r\n TimeZone,\r\n dateRange,\r\n dateFormat,\r\n logger,\r\n onFeedbackButtonClick,\r\n } = props;\r\n\r\n const i18n = useContext(I18nContext);\r\n const { change: changeLayout } = useContext(LayoutContext) as any;\r\n const [, setHasData] = useState(false);\r\n\r\n const { fluctuationSummaryMessage, fluctuationResult } = useFluctuationsMessage(replyToId);\r\n\r\n const headerText = useMemo(() => {\r\n if (fluctuationResult && fluctuationSummaryMessage) {\r\n const isSingleCampaign = fluctuationResult.Name === 'CampaignFluctuation';\r\n const campaignName = fluctuationResult?.Parameters?.CampaignName;\r\n\r\n return i18n?.getString(\r\n isSingleCampaign ? _TL_('Fluctuations - {{campaignName}}') : _TL_('Fluctuations - All Campaigns'),\r\n { campaignName },\r\n );\r\n }\r\n\r\n return i18n?.getString(_TL_('Fluctuations'));\r\n }, [fluctuationSummaryMessage, fluctuationResult, i18n]);\r\n\r\n const panelClasses = usePanelStyles();\r\n const closePanel = useCallback(() => {\r\n changeLayout({ overlay: { mode: Mode.Hidden, content: null } });\r\n }, [changeLayout]);\r\n\r\n useEffect(() => {\r\n setHasData((prevHasData) => {\r\n if (prevHasData && fluctuationSummaryMessage == null) {\r\n // data was previously available but it has been removed, close the panel\r\n setTimeout(() => closePanel(), 0);\r\n }\r\n return fluctuationSummaryMessage != null;\r\n });\r\n }, [fluctuationSummaryMessage]);\r\n\r\n return (\r\n \r\n \r\n {headerText}\r\n \r\n \r\n \r\n \r\n {i18n.getString(_TL_('More ways to improve:'))}\r\n }\r\n role=\"link\"\r\n target=\"_blank\"\r\n href=\"https://go.microsoft.com/fwlink/?linkid=2283830\"\r\n onClick={handleLogButtonClickPerformance}\r\n >\r\n {i18n.getString(_TL_('Improve your ad campaign performance.'))}\r\n \r\n \r\n }\r\n role=\"link\"\r\n target=\"_blank\"\r\n href=\"https://go.microsoft.com/fwlink/?linkid=2283833\"\r\n onClick={handleLogButtonClickOptimize}\r\n >\r\n {i18n.getString(_TL_('Optimize your ad campaigns with the help of Microsoft Advertising suggestions.'))}\r\n \r\n \r\n }\r\n role=\"link\"\r\n target=\"_blank\"\r\n href=\"https://go.microsoft.com/fwlink/?linkid=2283834\"\r\n onClick={handleLogButtonClickROI}\r\n >\r\n {i18n.getString(_TL_('Increase your ROI with quality score and quality impact in depth.'))}\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n );\r\n};\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__150__;","module.exports = __WEBPACK_EXTERNAL_MODULE__151__;","module.exports = __WEBPACK_EXTERNAL_MODULE__152__;","module.exports = __WEBPACK_EXTERNAL_MODULE__153__;","export * from './insights-chart';\r\n","import React, { useContext } from 'react';\r\nimport { makeStyles, mergeClasses, tokens } from '@fluentui/react-components';\r\nimport { FluctuationsChart } from '@bingads-webui-react/fluctuations-chart';\r\nimport { I18nContext } from '@bingads-webui/copilot-i18n';\r\n\r\nimport { IPerformanceTimeSeries } from '../../types';\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n paddingLeft: tokens.spacingHorizontalS,\r\n paddingRight: tokens.spacingHorizontalS,\r\n overflowY: 'hidden',\r\n height: '100%',\r\n },\r\n preview: {\r\n height: `calc(${tokens.lineHeightBase200} * 10)`,\r\n },\r\n});\r\n\r\nexport type InsightsChartProps = {\r\n className?: string;\r\n performanceTimeSeries: IPerformanceTimeSeries;\r\n isLoading?: boolean;\r\n isPreview?: boolean;\r\n TimeZone: number;\r\n};\r\n\r\nexport const InsightsChart: React.FC = React.memo((props) => {\r\n const {\r\n className,\r\n performanceTimeSeries,\r\n isLoading,\r\n isPreview,\r\n TimeZone,\r\n } = props;\r\n\r\n const classes = useStyles();\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n});\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__156__;","import React from 'react';\r\nimport { I18nProvider, I18nProviderProps } from '@bingads-webui/copilot-i18n';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { type ILogger } from '@bingads-webui-react/msa-copilot-common';\r\n\r\nimport { InsightsPanel, InsightPanelProps } from './insights-panel';\r\n\r\ntype InsightsPanelLoaderProps = InsightPanelProps & {\r\n i18nProviderProps: Omit;\r\n i18n: any;\r\n logger?: ILogger;\r\n};\r\n\r\n/**\r\n * InsightsPanel will be rendered outside of the DOM tree so it won't have automatically get all of the expected context providers.\r\n * This Loader component will set up any necessary context providers so that InsightsPanel and all its descendants can function correctly.\r\n *\r\n * NOTE: Any useContext calls here need to be available in both CMUI and CCUI.\r\n */\r\nconst InsightsPanelLoaderInternal: React.FC = React.memo((props) => {\r\n const {\r\n dateFormat,\r\n dateRange,\r\n i18nProviderProps,\r\n onFeedbackButtonClick,\r\n replyToId,\r\n TimeZone,\r\n logger,\r\n i18n: bingAdsI18n,\r\n } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n});\r\n\r\nexport const InsightsPanelLoader = withI18nConsumer(InsightsPanelLoaderInternal);\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__158__;","export * from './insights-button';\r\n","import React, { useContext } from 'react';\r\nimport _ from 'underscore';\r\nimport {\r\n Button,\r\n mergeClasses,\r\n makeStyles,\r\n tokens,\r\n shorthands,\r\n} from '@fluentui/react-components';\r\nimport { CopilotIcon } from '@bingads-webui-react/copilot-ui-base';\r\nimport { PermissionsContext } from '@bingads-webui-react/hoc-with-permissions';\r\n\r\ntype InsightsButtonProps = {\r\n label: string;\r\n onClick: (event: any) => void;\r\n className?: string;\r\n};\r\n\r\nexport const useInsightsButtonStyles = makeStyles({\r\n button: {\r\n height: '26px',\r\n paddingTop: tokens.spacingVerticalXXS,\r\n paddingBottom: tokens.spacingVerticalXXS,\r\n paddingLeft: tokens.spacingHorizontalXS,\r\n paddingRight: tokens.spacingHorizontalXS,\r\n fontWeight: tokens.fontWeightRegular,\r\n fontSize: tokens.fontSizeBase200,\r\n textAlign: 'center',\r\n ...shorthands.borderWidth('1.5px !important'),\r\n },\r\n copilotIcon: {\r\n paddingLeft: '0 !important',\r\n },\r\n});\r\n\r\nexport const InsightsButton: React.FC = ({ label, onClick, className }) => {\r\n const styles = useInsightsButtonStyles();\r\n const permissions = useContext(PermissionsContext);\r\n\r\n return (\r\n \r\n \r\n {label}\r\n \r\n );\r\n};\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__161__;","export * from './summarize-plugin-renderer';\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport { Activity, Message } from 'botframework-directlinejs';\r\nimport { AIMessage, PluginFunctions, PluginScenarios } from '@bingads-webui/ads-copilot-ui';\r\nimport { type ActivityRenderer } from '@bingads-webui-react/msa-copilot-common';\r\n\r\nimport { InsightsSummarizeMessage } from '../insights-summarize-message';\r\nimport { InsightsMissingParams } from '../insights-missing-params';\r\n\r\nexport const SummarizePluginRenderer: ActivityRenderer = (props) => {\r\n const {\r\n activity,\r\n getCampaigns,\r\n logger,\r\n onFeedbackButtonClick,\r\n onMissingParamsSubmit,\r\n isCustomizedEventBusy,\r\n isReportingInsights15Enabled,\r\n } = props;\r\n\r\n if (activity.type === 'event') {\r\n if (_.any(activity.value, (pluginResult) => pluginResult.Status === 'MissingParameters')) {\r\n return (\r\n \r\n );\r\n }\r\n // don't render the plugin results as a separate card\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nSummarizePluginRenderer.canRender = (activity: Activity) => {\r\n if (activity.type === 'message') {\r\n // only render message if the summarize plugin was successfully invoked by the AI\r\n return _.any((activity.value as any)?.Features, (feature) => feature === PluginFunctions.SummarizeCampaignPerformance);\r\n }\r\n\r\n if (activity.type === 'event' && activity.name === 'pluginResults') {\r\n return _.any(activity.value, (pluginResult) => pluginResult.Name === PluginScenarios.Summarize);\r\n }\r\n\r\n return false;\r\n};\r\n","export * from './insights-summarize-message';\r\n","import React, {\r\n useCallback,\r\n useEffect,\r\n useMemo,\r\n useState,\r\n} from 'react';\r\nimport Markdown from 'markdown-to-jsx';\r\nimport { useI18nContext } from '@bingads-webui/copilot-i18n';\r\nimport { CopilotToggleCustomEvent, type ILogger } from '@bingads-webui-react/msa-copilot-common';\r\n\r\nimport { useSummarizeMessage } from '../../hooks/use-summarize-message';\r\nimport { InsightsSummarizePluginResult } from './insights-summarize-plugin-result';\r\nimport { useInsightsSummarizeMessageStyles } from './use-insights-summarize-message-styles';\r\nimport { sanitizeDateFromSummarizePlugin } from './sanitize-date-from-summarize-plugin';\r\n\r\nexport type InsightsSummarizeMessageProps = {\r\n logger?: ILogger;\r\n replyToId: string;\r\n isCustomizedEventBusy?: boolean;\r\n isReportingInsights15Enabled?: boolean;\r\n};\r\n\r\nconst allCampaignsFluctuationTriggerMessage = _TL_('Analyze the trends and fluctuations in my account from {{startDate}} to {{endDate}}');\r\nconst singleCampaignFluctuationTriggerMessage = _TL_('Analyze the trends and fluctuations in \"{{campaignName}}\" campaign from {{startDate}} to {{endDate}}');\r\n\r\nconst MAX_START_DATE_OFFSET = 90 * 24 * 60 * 60 * 1000; // 90 days in milliseconds\r\n\r\nexport const InsightsSummarizeMessage: React.FC = React.memo((props) => {\r\n const {\r\n logger,\r\n replyToId,\r\n isCustomizedEventBusy = false,\r\n isReportingInsights15Enabled,\r\n } = props;\r\n\r\n const [isFluctuationsMessageSent, setIsFluctuationsMessageSent] = useState(false);\r\n const i18n = useI18nContext();\r\n const classes = useInsightsSummarizeMessageStyles();\r\n\r\n const {\r\n hasNoData,\r\n shouldSendFluctuationsTriggerMessage,\r\n summarizeMessage,\r\n summarizePluginResult,\r\n } = useSummarizeMessage(replyToId);\r\n\r\n useEffect(() => {\r\n if (logger && summarizePluginResult) {\r\n // log only after plugin result has been received\r\n logger?.trace(`InsightsSummarizeMessage: replyToId: ${replyToId}, hasNoData: ${hasNoData}, shouldSendFluctuationsTriggerMessage: ${shouldSendFluctuationsTriggerMessage}`);\r\n }\r\n }, [\r\n hasNoData,\r\n logger,\r\n replyToId,\r\n shouldSendFluctuationsTriggerMessage,\r\n summarizePluginResult,\r\n ]);\r\n\r\n const parseDate = useCallback<(dateString: string) => Date>((dateString) => {\r\n const convertISOToDate = i18n.dateParser({ raw: 'yyyy-MM-dd' });\r\n const sanitizedDateString = sanitizeDateFromSummarizePlugin(dateString);\r\n return convertISOToDate(sanitizedDateString);\r\n }, [i18n]);\r\n\r\n useEffect(() => {\r\n if (!isCustomizedEventBusy && !isFluctuationsMessageSent && shouldSendFluctuationsTriggerMessage) {\r\n const startDateString = summarizePluginResult?.Parameters?.StartDate;\r\n const endDateString = summarizePluginResult?.Parameters?.EndDate;\r\n\r\n try {\r\n // parse the startDate and endDate from summarizePluginResult, startDate should not be more than 90 days in the past\r\n const minStartDate = new Date(Date.now() - MAX_START_DATE_OFFSET);\r\n const startDateFromParameters = parseDate(startDateString);\r\n\r\n const startDate = startDateFromParameters > minStartDate ? startDateFromParameters : minStartDate;\r\n const endDate = parseDate(endDateString);\r\n\r\n // create the message to trigger the fluctuations plugin\r\n const campaignName = summarizePluginResult?.Parameters?.CampaignName || '';\r\n const message = i18n?.getString(\r\n campaignName ? singleCampaignFluctuationTriggerMessage : allCampaignsFluctuationTriggerMessage,\r\n {\r\n campaignName,\r\n startDate: i18n.formatDate(startDate),\r\n endDate: i18n.formatDate(endDate),\r\n },\r\n );\r\n\r\n if (endDate >= startDate) {\r\n // send a user message to trigger fluctuations plugin\r\n const customEvent = new CopilotToggleCustomEvent({\r\n detail: {\r\n eventType: 'message',\r\n eventSource: 'insightsSummarizeMessage',\r\n eventData: {\r\n isHidden: true,\r\n message,\r\n pluginName: campaignName ? 'CampaignFluctuation' : 'AccountFluctuation',\r\n startDate: i18n.formatDate(startDate, { raw: 'yyyy-MM-dd' }),\r\n endDate: i18n.formatDate(endDate, { raw: 'yyyy-MM-dd' }),\r\n },\r\n },\r\n });\r\n\r\n logger?.trace(`InsightsSummarizeMessage: Sending fluctuations trigger message for ${replyToId}: ${message}`);\r\n document.dispatchEvent(customEvent);\r\n setIsFluctuationsMessageSent(true);\r\n } else {\r\n logger?.trace(`InsightsSummarizeMessage: endDate (${endDate}) is before startDate (${startDate}). No fluctuation message sent.`);\r\n }\r\n } catch (e) {\r\n logger?.trace(`InsightsSummarizeMessage: Error parsing dates, startDateString=${startDateString}, endDateString=${endDateString}, error=${e}`);\r\n }\r\n }\r\n }, [\r\n i18n,\r\n logger,\r\n parseDate,\r\n replyToId,\r\n shouldSendFluctuationsTriggerMessage,\r\n summarizePluginResult,\r\n isCustomizedEventBusy,\r\n ]);\r\n\r\n const summarizeText = useMemo(() => {\r\n if (!summarizeMessage) {\r\n return undefined;\r\n }\r\n if (hasNoData === false) {\r\n return `**${i18n?.getString(_TL_('Analysis'))}**\\n\\n${summarizeMessage.text}`;\r\n }\r\n return summarizeMessage.text;\r\n }, [hasNoData, i18n, summarizeMessage?.text]);\r\n\r\n if (!summarizeMessage) {\r\n return null;\r\n }\r\n\r\n return (\r\n <>\r\n {!hasNoData && (\r\n \r\n )}\r\n \r\n {summarizeText}\r\n \r\n \r\n );\r\n});\r\n","import _ from 'underscore';\r\nimport { useMemo } from 'react';\r\nimport { EventActivity, Message } from 'botframework-directlinejs';\r\nimport { useAdsCopilotContext } from '@bingads-webui/ads-copilot-ui';\r\n\r\nimport { SummarizePluginResult } from '../types';\r\n\r\nconst MAX_AGE_FOR_TRIGGER_IN_MS = 5 * 1000;\r\nconst NO_DATA_STATUS = 'NoDataAvailable';\r\n\r\nexport type SummarizeMessageResult = {\r\n hasNoData: boolean | undefined;\r\n shouldSendFluctuationsTriggerMessage: boolean;\r\n summarizeMessage?: Message;\r\n summarizePluginResult: SummarizePluginResult;\r\n};\r\n\r\nexport function useSummarizeMessage(replyToId: string): SummarizeMessageResult {\r\n const { activities } = useAdsCopilotContext() || {};\r\n\r\n const { summarizeMessage, summarizeEvent } = useMemo(() => {\r\n let newSummarizeMessage: Message | undefined;\r\n let newSummarizeEvent: EventActivity | undefined;\r\n\r\n if (activities) {\r\n let i = activities.length - 1;\r\n\r\n // find all the summarize messages with given replyToId\r\n while (i >= 0 && (!newSummarizeMessage || !newSummarizeEvent)) {\r\n const activity = activities[i];\r\n if ((activity as any).replyToId === replyToId) {\r\n if (activity.type === 'message') {\r\n if (_.any((activity.value as any)?.Features, (feature) => feature === 'SummarizeCampaignPerformance')) {\r\n // found the natural language summary\r\n newSummarizeMessage = activity;\r\n }\r\n } else if (activity.type === 'event' && activity.name === 'pluginResults') {\r\n // found the summarize plugin result\r\n if (_.any(activity.value, (pluginResult) => pluginResult?.Name === 'Summarize')) {\r\n newSummarizeEvent = activity;\r\n }\r\n }\r\n }\r\n\r\n i -= 1;\r\n }\r\n }\r\n\r\n return {\r\n summarizeMessage: newSummarizeMessage,\r\n summarizeEvent: newSummarizeEvent,\r\n };\r\n }, [activities, replyToId]);\r\n\r\n const isSummarizeMessageFromButtonClick = useMemo(() => {\r\n if (summarizeMessage) {\r\n // if user clicked on Summarize button or the Summarize starter prompt, we should have PluginContext in the response\r\n return (summarizeMessage.value as any)?.PluginContext?.Name === 'Summarize';\r\n }\r\n return false;\r\n }, [summarizeMessage]);\r\n\r\n const summarizePluginResult = _.find(summarizeEvent?.value, (pluginResult) => pluginResult.Name === 'Summarize');\r\n const hasNoData = useMemo(() => {\r\n if (summarizePluginResult) {\r\n return summarizePluginResult.Status === NO_DATA_STATUS || summarizePluginResult.Status === 'InternalError' || summarizePluginResult.Result?.title === NO_DATA_STATUS;\r\n }\r\n return undefined;\r\n }, [summarizePluginResult]);\r\n\r\n const shouldSendFluctuationsTriggerMessage = useMemo(() => {\r\n // only send trigger message if we have data and summarizeMessage is from button click\r\n if (summarizeEvent && !hasNoData && isSummarizeMessageFromButtonClick) {\r\n let activityTimestampMs: number = new Date(summarizeEvent.timestamp).getTime();\r\n if (Number.isNaN(activityTimestampMs)) {\r\n // TODO: Fix bug in ConversationThread where timestamp is modified\r\n activityTimestampMs = parseInt(summarizeEvent.timestamp, 10);\r\n }\r\n\r\n // check age of plugin result, only send fluctuations trigger message if the plugin result is new\r\n const activityAgeInMs = (Date.now() - activityTimestampMs);\r\n return activityAgeInMs < MAX_AGE_FOR_TRIGGER_IN_MS;\r\n }\r\n return false;\r\n }, [hasNoData, isSummarizeMessageFromButtonClick, summarizeEvent]);\r\n\r\n const ret = useMemo(() => ({\r\n hasNoData,\r\n shouldSendFluctuationsTriggerMessage,\r\n summarizeMessage,\r\n summarizePluginResult,\r\n }), [\r\n hasNoData,\r\n shouldSendFluctuationsTriggerMessage,\r\n summarizeMessage,\r\n summarizePluginResult,\r\n ]);\r\n\r\n return ret;\r\n}\r\n","import React, { useMemo } from 'react';\r\nimport { useI18nContext } from '@bingads-webui/copilot-i18n';\r\nimport { mergeClasses } from '@fluentui/react-components';\r\nimport { SingleResult } from './single-result';\r\nimport { getComparisonDatePeriod } from './get-comparison-date-period';\r\nimport { type SummarizePluginResult } from '../../types';\r\nimport { useNormalizedPerfMetrics } from './use-normalized-perf-metrics';\r\n\r\nexport type InsightsSummarizePluginResultProps = {\r\n className?: string;\r\n summarizePluginResult: SummarizePluginResult;\r\n isReportingInsights15Enabled?: boolean,\r\n};\r\n\r\nexport const InsightsSummarizePluginResult: React.FC = (props) => {\r\n const { className, summarizePluginResult, isReportingInsights15Enabled } = props;\r\n\r\n const i18n = useI18nContext();\r\n const perfMetrics = useNormalizedPerfMetrics({ isReportingInsights15Enabled, summarizePluginResult });\r\n\r\n const headerText = useMemo(() => {\r\n const campaignName: string | undefined = summarizePluginResult?.Parameters?.CampaignName;\r\n if (campaignName) {\r\n return i18n?.getString(_TL_('{{campaignName}} performance overview'), { campaignName });\r\n }\r\n\r\n return i18n?.getString(_TL_('Campaign performance overview'));\r\n }, [i18n, summarizePluginResult]);\r\n\r\n const currency = useMemo(() => summarizePluginResult?.Result?.accountCurrency, [summarizePluginResult]);\r\n\r\n const comparisonPeriod = useMemo(() => isReportingInsights15Enabled && getComparisonDatePeriod({ i18n, summarizePluginResult }), [i18n, summarizePluginResult]);\r\n\r\n if (!summarizePluginResult) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n
{headerText}
\r\n {isReportingInsights15Enabled\r\n && (\r\n

\r\n {comparisonPeriod}\r\n

\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n","import React, { useMemo } from 'react';\r\nimport _ from 'underscore';\r\nimport { useI18nContext } from '@bingads-webui/copilot-i18n';\r\n\r\nexport type SingleResultProps = {\r\n className?: string;\r\n currency?: string;\r\n title: string;\r\n content: any;\r\n type?: 'number' | 'currency' | 'decimal' | 'percent';\r\n impact?: string;\r\n percentShift?: number;\r\n};\r\nconst MAX_DISPLAYABLE_PERCENT_SHIFT = 1000000000000000;\r\n\r\nexport const SingleResult: React.FC = React.memo((props) => {\r\n const {\r\n className,\r\n currency,\r\n title,\r\n content,\r\n type = 'number',\r\n impact,\r\n percentShift,\r\n } = props;\r\n\r\n const i18n = useI18nContext();\r\n\r\n const formattedContent = useMemo(() => {\r\n if (content === undefined || content === null) {\r\n return undefined;\r\n }\r\n\r\n switch (type) {\r\n case 'currency':\r\n return i18n?.formatCurrency(content, currency);\r\n case 'decimal':\r\n return i18n?.formatDecimalToFixed(content);\r\n case 'percent':\r\n return i18n?.formatPercent(content / 100, { maximumFractionDigits: 2, minimumFractionDigits: 2 });\r\n case 'number':\r\n default:\r\n return i18n?.formatDecimal(content);\r\n }\r\n }, [content, currency, i18n]);\r\n\r\n const formattedPercentShift = useMemo(() => {\r\n if (!Number.isFinite(percentShift)) {\r\n return undefined;\r\n }\r\n if (percentShift === 0) {\r\n return ' (0%)';\r\n }\r\n return ` (${i18n.formatPercent(percentShift / 100, { withSign: 'always', maximumFractionDigits: 2, minimumFractionDigits: 2 })})`;\r\n }, [percentShift]);\r\n\r\n if (!formattedContent) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n {title}\r\n {' '}\r\n {formattedContent}\r\n {_.isNumber(percentShift) && percentShift < MAX_DISPLAYABLE_PERCENT_SHIFT && (\r\n {formattedPercentShift}\r\n )}\r\n
\r\n );\r\n});\r\n","import { I18nModel } from '@bingads-webui/copilot-i18n';\r\nimport { type SummarizePluginResult } from '../../types';\r\n\r\nexport function getComparisonDatePeriod({ i18n, summarizePluginResult }: { i18n:I18nModel, summarizePluginResult?: SummarizePluginResult }) {\r\n const options = { date: 'long', timeZone: 'UTC' };\r\n const result = summarizePluginResult?.Result;\r\n\r\n const startDate = i18n.formatDate(new Date(result?.startDate), options);\r\n const endDate = i18n.formatDate(new Date(result?.endDate), options);\r\n const comparisonStartDate = i18n.formatDate(new Date(result?.comparisonStartDate), options);\r\n const comparisonEndDate = i18n.formatDate(new Date(result?.comparisonEndDate), options);\r\n\r\n return i18n.getString(\r\n _TL_('{{startDate}} - {{endDate}} [compared to {{comparisonStartDate}} - {{comparisonEndDate}}]'),\r\n {\r\n startDate, endDate, comparisonStartDate, comparisonEndDate,\r\n },\r\n );\r\n}\r\n","import { useMemo } from 'react';\r\nimport { type SummarizePluginResult, type SummarizeCampaignResponse } from '../../types';\r\n\r\nexport function useNormalizedPerfMetrics({ isReportingInsights15Enabled, summarizePluginResult }: { isReportingInsights15Enabled: boolean, summarizePluginResult?: SummarizePluginResult }) {\r\n const pluginResult = useMemo(() => {\r\n const result = summarizePluginResult?.Result;\r\n if (!result) {\r\n return undefined;\r\n }\r\n\r\n if (isReportingInsights15Enabled && result.perfMetricsWithComparisonData) {\r\n return result.perfMetricsWithComparisonData;\r\n }\r\n\r\n // pilot not enabled yet, normalize the old result to the newer format, with no comparison data\r\n return {\r\n impressions: { currentValue: result.impressionCount },\r\n clicks: { currentValue: result.clickCount },\r\n ctr: { currentValue: result.ctr },\r\n spend: { currentValue: result.spend },\r\n conversions: { currentValue: result.conversionCount },\r\n cpa: { currentValue: result.cpa },\r\n roas: { currentValue: result.roas },\r\n averageCPC: { currentValue: result.averageCPC },\r\n averageCPM: { currentValue: result.averageCPM },\r\n impressionShare: { currentValue: result.impressionShare },\r\n uniqueReach: { currentValue: result.uniqueReach },\r\n averageCPV: { currentValue: result.averageCPV },\r\n videoViews: { currentValue: result.videoViews },\r\n videoCompletionRate: { currentValue: result.videoCompletionRate },\r\n videoViewsAt25Percent: { currentValue: result.videoViewsAt25Percent },\r\n videoViewsAt50Percent: { currentValue: result.videoViewsAt50Percent },\r\n videoViewsAt75Percent: { currentValue: result.videoViewsAt75Percent },\r\n installs: { currentValue: result.installs },\r\n downloads: { currentValue: result.downloads },\r\n averageCPI: { currentValue: result.averageCPI },\r\n };\r\n }, [isReportingInsights15Enabled, summarizePluginResult]);\r\n\r\n return pluginResult;\r\n}\r\n","import { makeStyles, tokens } from '@fluentui/react-components';\r\n\r\nexport const useInsightsSummarizeMessageStyles = makeStyles({\r\n pluginResult: {\r\n marginBottom: tokens.spacingVerticalXL,\r\n '& .positive': {\r\n color: tokens.colorPaletteGreenBackground3,\r\n },\r\n '& .negative': {\r\n color: '#BC4B09', // red\r\n },\r\n },\r\n});\r\n","const summarizePluginDatePattern = /^(\\d{4})\\W(\\d{1,2})\\W(\\d{1,2})/;\r\n\r\nexport function sanitizeDateFromSummarizePlugin(dateString: string): string {\r\n const match = dateString.match(summarizePluginDatePattern);\r\n if (match) {\r\n const [, year, month, day] = match;\r\n return `${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`;\r\n }\r\n throw new Error(`Could not parse date string: ${dateString}`);\r\n}\r\n","export * from './insights-missing-params';\r\n","import React, { useCallback, useContext, useEffect } from 'react';\r\nimport { CampaignAndDateSelector, CampaignSaveData, PluginScenarios } from '@bingads-webui/ads-copilot-ui';\r\nimport { I18nContext, I18nModel } from '@bingads-webui/copilot-i18n';\r\nimport { type ILogger } from '@bingads-webui-react/msa-copilot-common';\r\n\r\ntype InsightsMissingParamsProps = {\r\n getCampaigns: () => Promise>;\r\n logger?: ILogger,\r\n onMissingParamsSubmit: (text: string) => void;\r\n replyToId?: string;\r\n pluginName?: string;\r\n cardText?: string;\r\n};\r\n\r\nexport const InsightsMissingParams: React.FC = (props) => {\r\n const i18n = useContext(I18nContext) as I18nModel;\r\n const {\r\n getCampaigns,\r\n logger,\r\n onMissingParamsSubmit,\r\n replyToId,\r\n pluginName,\r\n cardText,\r\n } = props;\r\n\r\n useEffect(() => {\r\n logger?.trace(`InsightsMissingParams: replyToId: ${replyToId}`);\r\n }, [logger, replyToId]);\r\n\r\n const onSave = useCallback((_event: any, data: CampaignSaveData) => {\r\n const tlText = pluginName === PluginScenarios.CampaignFluctuation ? _TL_('Are there fluctuations for my campaign \"{{campaignName}}\" from {{startDate}} to {{endDate}}')\r\n : _TL_('Summarize the performance of campaign \"{{campaignName}}\" from {{startDate}} to {{endDate}}');\r\n\r\n const text = i18n.getString(tlText, {\r\n campaignName: data?.selectedCampaign.name,\r\n startDate: data?.startDate ? i18n.formatDate(data.startDate) : undefined,\r\n endDate: data?.endDate ? i18n.formatDate(data.endDate) : undefined,\r\n });\r\n\r\n logger?.trace(`InsightsMissingParams: replyToId: ${replyToId} onSave: ${text} plugin: ${pluginName}`);\r\n onMissingParamsSubmit(text);\r\n }, [i18n, logger, replyToId]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n","export * from './fluctuations-plugin-renderer';\r\n","import _ from 'underscore';\r\nimport React, { useCallback, useMemo } from 'react';\r\nimport { Activity, Message } from 'botframework-directlinejs';\r\nimport { makeStyles } from '@fluentui/react-components';\r\nimport { AIMessage, PluginFunctions, PluginScenarios } from '@bingads-webui/ads-copilot-ui';\r\nimport { useI18nContext } from '@bingads-webui/copilot-i18n';\r\nimport { type ActivityRenderer } from '@bingads-webui-react/msa-copilot-common';\r\n\r\nimport { InsightsPanelPreview } from '../insights-panel-preview';\r\nimport { InsightsMissingParams } from '../insights-missing-params';\r\n\r\nexport const useFluctuationsStyles = makeStyles({\r\n message: {\r\n maxWidth: '100%',\r\n },\r\n});\r\n\r\nexport const FluctuationsPluginRenderer: ActivityRenderer = React.memo((props) => {\r\n const {\r\n activity,\r\n logger,\r\n onFeedbackButtonClick,\r\n onFullInsightsClick,\r\n params: {\r\n action,\r\n onReferenceClick,\r\n },\r\n onMissingParamsSubmit,\r\n isReportingInsights15Enabled,\r\n } = props;\r\n\r\n const i18n = useI18nContext();\r\n const styles = useFluctuationsStyles();\r\n\r\n const handleFullInsightsClick = useCallback((ev: React.MouseEvent, replyToId?: string) => {\r\n // invoke the full insights experience, provide the feedback button handler so we can also invoke feedback from there\r\n onFullInsightsClick?.(ev, replyToId, { onFeedbackButtonClick, i18n });\r\n }, [i18n, onFeedbackButtonClick, onFullInsightsClick]);\r\n\r\n const getEligibleCampaigns = useCallback((act) => {\r\n try {\r\n const detail = _.get(act, ['Result', 'Detail']);\r\n const parsedDetail = detail && JSON.parse(detail);\r\n\r\n const eligibleCampaigns = _.get(parsedDetail, ['EligibleCampaigns']);\r\n return _.map(eligibleCampaigns, c => ({ id: c.id || c.Id, name: c.name || c.Name }));\r\n } catch (e) {\r\n logger?.trace(`Error parsing JSON: ${e}`);\r\n return [];\r\n }\r\n }, []);\r\n\r\n const noEligibleCampaignsMessage = useMemo(() => {\r\n const text = i18n?.getString(_TL_('We\\'re unable to provide performance insights for this query. This feature currently supports a limited set of scenarios for performance analysis. We are actively working on enhancing this feature\\'s capabilities. For further assistance, please contact a Microsoft Advertising expert.'));\r\n\r\n return {\r\n text,\r\n value: {\r\n StreamingStatus: 'Completed',\r\n },\r\n } as Message;\r\n }, [i18n]);\r\n\r\n if (activity.type === 'event') {\r\n if (isReportingInsights15Enabled) {\r\n const missingParamsActivity = _.find(activity.value, (pluginResult) => pluginResult.Status === 'MissingParameters');\r\n if (!_.isEmpty(missingParamsActivity)) {\r\n const eligibleCampaigns = getEligibleCampaigns(missingParamsActivity);\r\n const getCampaigns = () => Promise.resolve(eligibleCampaigns);\r\n\r\n if (!_.isEmpty(eligibleCampaigns)) {\r\n return (\r\n \r\n );\r\n }\r\n return (\r\n \r\n );\r\n }\r\n }\r\n\r\n // don't render the plugin results event as a separate card, InsightsPanelPreview will handle it\r\n return null;\r\n }\r\n\r\n if (activity.type === 'message') {\r\n // don't render anything if the fluctuations plugin failed to execute\r\n const features = (activity.value as any)?.Features;\r\n if (!_.any(features, (feature) => feature === PluginFunctions.GetAccountFluctuations || feature === PluginFunctions.GetCampaignFluctuations)) {\r\n return null;\r\n }\r\n }\r\n\r\n return (\r\n \r\n

\r\n {i18n?.getString(_TL_('Key insights'))}\r\n

\r\n \r\n \r\n );\r\n});\r\n\r\nFluctuationsPluginRenderer.canRender = (activity: Activity) => {\r\n if (activity.type === 'message') {\r\n const pluginName = (activity.value as any)?.PluginContext?.Name;\r\n\r\n // only render fluctuations card if user intent is present\r\n return pluginName === PluginScenarios.AccountFluctuation || pluginName === PluginScenarios.CampaignFluctuation;\r\n }\r\n\r\n if (activity.type === 'event' && activity.name === 'pluginResults') {\r\n return _.any(activity.value, (pluginResult) => pluginResult.Name === PluginScenarios.AccountFluctuation || pluginResult.Name === PluginScenarios.CampaignFluctuation || pluginResult.Name === PluginScenarios.PerformanceTimeSeries);\r\n }\r\n\r\n return false;\r\n};\r\n","export * from './insights-panel-preview';\r\n","import _ from 'underscore';\r\nimport React, {\r\n useCallback,\r\n useContext,\r\n useEffect,\r\n useMemo,\r\n} from 'react';\r\nimport { Activity, Message } from 'botframework-directlinejs';\r\nimport Markdown from 'markdown-to-jsx';\r\nimport { Button, mergeClasses } from '@fluentui/react-components';\r\nimport { ArrowCircleRight20Regular } from '@fluentui/react-icons';\r\nimport { I18nContext } from '@bingads-webui/copilot-i18n';\r\nimport { type ILogger } from '@bingads-webui-react/msa-copilot-common';\r\n\r\nimport { InsightsChart } from '../insights-chart';\r\nimport { useInsightsPanelPreviewStyles } from './use-insights-panel-preview-styles';\r\nimport { useFluctuationsMessage } from '../../hooks/use-fluctuations-message';\r\n\r\nexport type InsightsPanelPreviewProps = {\r\n activity: Activity;\r\n logger?: ILogger;\r\n onFullInsightsClick: (ev: React.MouseEvent, replyToId: string | undefined) => void;\r\n};\r\n\r\n/**\r\n * InsightsPanelPreview is the smaller card insight the chat stream. It\r\n * displays a short summary of the insight data received from the bot and\r\n * provides buttons for the user to navigate to the full insights panel.\r\n */\r\nexport const InsightsPanelPreview: React.FC = React.memo((props) => {\r\n const i18n = useContext(I18nContext);\r\n const classes = useInsightsPanelPreviewStyles();\r\n\r\n const { activity, logger, onFullInsightsClick } = props;\r\n const message = activity as Message;\r\n\r\n const replyToId: string | undefined = (message as any)?.replyToId;\r\n\r\n const { fluctuationsChartData, fluctuationResult, isCompleted } = useFluctuationsMessage(replyToId);\r\n\r\n useEffect(() => {\r\n if (logger && isCompleted) {\r\n logger?.trace(`InsightsPanelPreview: replyToId: ${replyToId}, fluctuationResult.Result.length: ${_.size(fluctuationResult?.Result)}, fluctuationsChartData: ${!!fluctuationsChartData}`);\r\n }\r\n }, [\r\n fluctuationResult?.Result,\r\n fluctuationsChartData,\r\n isCompleted,\r\n logger,\r\n replyToId,\r\n ]);\r\n\r\n const parseDate = useMemo(() => i18n.dateParser({ raw: 'yyyy-MM-dd' }), [i18n]);\r\n\r\n const headerText = useMemo(() => {\r\n if (fluctuationResult?.Result) {\r\n const fluctuation = fluctuationResult.Result[0];\r\n\r\n if (fluctuation) {\r\n let date = '';\r\n try {\r\n const dateObj = parseDate(fluctuation.shiftStartDate);\r\n date = i18n.formatDate(dateObj);\r\n } catch (e) {\r\n // do nothing\r\n }\r\n\r\n const isDecrease = fluctuation.shiftDirection === 'Decrease';\r\n\r\n let tlKey;\r\n switch (fluctuation.metricType) {\r\n case 'Impression':\r\n tlKey = isDecrease ? _TL_('Impressions decreased on {{date}}') : _TL_('Impressions increased on {{date}}');\r\n break;\r\n case 'Conversion':\r\n tlKey = isDecrease ? _TL_('Conversions decreased on {{date}}') : _TL_('Conversions increased on {{date}}');\r\n break;\r\n default:\r\n tlKey = isDecrease ? _TL_('Clicks decreased on {{date}}') : _TL_('Clicks increased on {{date}}');\r\n break;\r\n }\r\n\r\n return i18n?.getString(tlKey, { date });\r\n }\r\n }\r\n return undefined;\r\n }, [fluctuationResult, i18n, parseDate]);\r\n\r\n const handleFullInsightsClick = useCallback((ev: React.MouseEvent) => {\r\n logger?.trace(`InsightsPanelPreview: Click on View Details, replyToId: ${replyToId}`);\r\n onFullInsightsClick(ev, replyToId);\r\n }, [logger, onFullInsightsClick, replyToId]);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {i18n?.getString(_TL_('Fluctuations'))}\r\n
\r\n
\r\n\r\n {/* display the chart for the first fluctuation */}\r\n
\r\n {headerText && (\r\n
{headerText}
\r\n )}\r\n \r\n
\r\n\r\n
\r\n \r\n {message.text || ''}\r\n \r\n
\r\n\r\n
\r\n }\r\n >\r\n {i18n?.getString(_TL_('View details'))}\r\n \r\n
\r\n
\r\n );\r\n});\r\n","import {\r\n makeStyles,\r\n shorthands,\r\n tokens,\r\n typographyStyles,\r\n} from '@fluentui/react-components';\r\n\r\nconst chartAndSummaryCommonStyles = {\r\n backgroundColor: tokens.colorNeutralBackground1,\r\n ...shorthands.borderRadius(tokens.borderRadiusMedium),\r\n paddingLeft: tokens.spacingHorizontalS,\r\n paddingRight: tokens.spacingHorizontalS,\r\n paddingTop: tokens.spacingVerticalS,\r\n paddingBottom: tokens.spacingVerticalS,\r\n};\r\n\r\nexport const useInsightsPanelPreviewStyles = makeStyles({\r\n root: {\r\n display: 'flex',\r\n marginTop: tokens.spacingVerticalL,\r\n paddingLeft: tokens.spacingHorizontalS,\r\n paddingRight: tokens.spacingHorizontalS,\r\n paddingTop: tokens.spacingVerticalS,\r\n paddingBottom: tokens.spacingVerticalS,\r\n\r\n flexDirection: 'column',\r\n ...shorthands.gap(tokens.spacingVerticalS),\r\n ...shorthands.borderRadius(tokens.borderRadiusMedium),\r\n backgroundColor: tokens.colorNeutralBackground3,\r\n boxShadow: tokens.shadow2,\r\n },\r\n top: {\r\n display: 'flex',\r\n },\r\n header: {\r\n paddingLeft: tokens.spacingHorizontalS,\r\n paddingRight: tokens.spacingHorizontalS,\r\n paddingTop: tokens.spacingVerticalXS,\r\n paddingBottom: tokens.spacingVerticalXS,\r\n\r\n ...shorthands.borderRadius(tokens.borderRadiusMedium),\r\n opacity: '0.8',\r\n backgroundColor: tokens.colorNeutralBackground1,\r\n backdropFilter: 'blur(2px)',\r\n\r\n ...typographyStyles.caption1Strong,\r\n },\r\n chartHeader: {\r\n fontSize: tokens.fontSizeBase200,\r\n fontWeight: tokens.fontWeightSemibold,\r\n marginBottom: tokens.spacingVerticalXS,\r\n },\r\n chart: {\r\n ...chartAndSummaryCommonStyles,\r\n },\r\n summary: {\r\n ...chartAndSummaryCommonStyles,\r\n fontSize: tokens.fontSizeBase200,\r\n lineHeight: tokens.lineHeightBase200,\r\n },\r\n summaryContent: {\r\n // restrict the height of the summary to 4 lines\r\n display: '-webkit-box',\r\n '-webkit-box-orient': 'vertical',\r\n '-webkit-line-clamp': 4,\r\n overflowY: 'hidden',\r\n maxHeight: `calc(${tokens.lineHeightBase200} * 4)`,\r\n },\r\n goFullButton: {},\r\n});\r\n","// list of i18n keys that are defined outside of the ads-copilot project but need to be included in copilot-i18n\r\nexport const additionalI18nKeys = [\r\n _TL_('Generating insights...'),\r\n _TL_('We are unable to display the graph at this time. Please try again later.'),\r\n _TL_('Conv.'),\r\n _TL_('Impr.'),\r\n _TL_('Clicks'),\r\n];\r\n","export { parse } from './src/parser.pegjs';\r\n","/*\n * Generated by PEG.js 0.10.0.\n *\n * http://pegjs.org/\n */\n\n\"use strict\";\n\nfunction peg$subclass(child, parent) {\n function ctor() { this.constructor = child; }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n}\n\nfunction peg$SyntaxError(message, expected, found, location) {\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.location = location;\n this.name = \"SyntaxError\";\n\n if (typeof Error.captureStackTrace === \"function\") {\n Error.captureStackTrace(this, peg$SyntaxError);\n }\n}\n\npeg$subclass(peg$SyntaxError, Error);\n\npeg$SyntaxError.buildMessage = function(expected, found) {\n var DESCRIBE_EXPECTATION_FNS = {\n literal: function(expectation) {\n return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n },\n\n \"class\": function(expectation) {\n var escapedParts = \"\",\n i;\n\n for (i = 0; i < expectation.parts.length; i++) {\n escapedParts += expectation.parts[i] instanceof Array\n ? classEscape(expectation.parts[i][0]) + \"-\" + classEscape(expectation.parts[i][1])\n : classEscape(expectation.parts[i]);\n }\n\n return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts + \"]\";\n },\n\n any: function(expectation) {\n return \"any character\";\n },\n\n end: function(expectation) {\n return \"end of input\";\n },\n\n other: function(expectation) {\n return expectation.description;\n }\n };\n\n function hex(ch) {\n return ch.charCodeAt(0).toString(16).toUpperCase();\n }\n\n function literalEscape(s) {\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\0/g, '\\\\0')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return '\\\\x' + hex(ch); });\n }\n\n function classEscape(s) {\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\\]/g, '\\\\]')\n .replace(/\\^/g, '\\\\^')\n .replace(/-/g, '\\\\-')\n .replace(/\\0/g, '\\\\0')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return '\\\\x' + hex(ch); });\n }\n\n function describeExpectation(expectation) {\n return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n }\n\n function describeExpected(expected) {\n var descriptions = new Array(expected.length),\n i, j;\n\n for (i = 0; i < expected.length; i++) {\n descriptions[i] = describeExpectation(expected[i]);\n }\n\n descriptions.sort();\n\n if (descriptions.length > 0) {\n for (i = 1, j = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n\n case 2:\n return descriptions[0] + \" or \" + descriptions[1];\n\n default:\n return descriptions.slice(0, -1).join(\", \")\n + \", or \"\n + descriptions[descriptions.length - 1];\n }\n }\n\n function describeFound(found) {\n return found ? \"\\\"\" + literalEscape(found) + \"\\\"\" : \"end of input\";\n }\n\n return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n};\n\nfunction peg$parse(input, options) {\n options = options !== void 0 ? options : {};\n\n var peg$FAILED = {},\n\n peg$startRuleFunctions = { Expression: peg$parseExpression },\n peg$startRuleFunction = peg$parseExpression,\n\n peg$c0 = function(node) { return node; },\n peg$c1 = \"+\",\n peg$c2 = peg$literalExpectation(\"+\", false),\n peg$c3 = \"-\",\n peg$c4 = peg$literalExpectation(\"-\", false),\n peg$c5 = function(value, nextOperation) { return ExprNode(value, nextOperation); },\n peg$c6 = \"*\",\n peg$c7 = peg$literalExpectation(\"*\", false),\n peg$c8 = \"/\",\n peg$c9 = peg$literalExpectation(\"/\", false),\n peg$c10 = function(node) { return negateNode(node); },\n peg$c11 = /^[0-9]/,\n peg$c12 = peg$classExpectation([[\"0\", \"9\"]], false, false),\n peg$c13 = \".\",\n peg$c14 = peg$literalExpectation(\".\", false),\n peg$c15 = function(numberString) { return ConstantNode(numberString); },\n peg$c16 = \"[\",\n peg$c17 = peg$literalExpectation(\"[\", false),\n peg$c18 = \"]\",\n peg$c19 = peg$literalExpectation(\"]\", false),\n peg$c20 = function(name, segment) { return ColumnNode(name, segment); },\n peg$c21 = /^[A-Za-z]/,\n peg$c22 = peg$classExpectation([[\"A\", \"Z\"], [\"a\", \"z\"]], false, false),\n peg$c23 = \"\\\\\",\n peg$c24 = peg$literalExpectation(\"\\\\\", false),\n peg$c25 = function(name) { return name; },\n peg$c26 = \":\",\n peg$c27 = peg$literalExpectation(\":\", false),\n peg$c28 = \",\",\n peg$c29 = peg$literalExpectation(\",\", false),\n peg$c30 = function(segments) { return ColumnNodeSegments(segments); },\n peg$c31 = function() { return undefined; },\n peg$c32 = \"(\",\n peg$c33 = peg$literalExpectation(\"(\", false),\n peg$c34 = \")\",\n peg$c35 = peg$literalExpectation(\")\", false),\n peg$c36 = peg$otherExpectation(\"whitespace\"),\n peg$c37 = /^[ \\t\\n\\r]/,\n peg$c38 = peg$classExpectation([\" \", \"\\t\", \"\\n\", \"\\r\"], false, false),\n\n peg$currPos = 0,\n peg$savedPos = 0,\n peg$posDetailsCache = [{ line: 1, column: 1 }],\n peg$maxFailPos = 0,\n peg$maxFailExpected = [],\n peg$silentFails = 0,\n\n peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description, location) {\n location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)\n\n throw peg$buildStructuredError(\n [peg$otherExpectation(description)],\n input.substring(peg$savedPos, peg$currPos),\n location\n );\n }\n\n function error(message, location) {\n location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)\n\n throw peg$buildSimpleError(message, location);\n }\n\n function peg$literalExpectation(text, ignoreCase) {\n return { type: \"literal\", text: text, ignoreCase: ignoreCase };\n }\n\n function peg$classExpectation(parts, inverted, ignoreCase) {\n return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n }\n\n function peg$anyExpectation() {\n return { type: \"any\" };\n }\n\n function peg$endExpectation() {\n return { type: \"end\" };\n }\n\n function peg$otherExpectation(description) {\n return { type: \"other\", description: description };\n }\n\n function peg$computePosDetails(pos) {\n var details = peg$posDetailsCache[pos], p;\n\n if (details) {\n return details;\n } else {\n p = pos - 1;\n while (!peg$posDetailsCache[p]) {\n p--;\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column\n };\n\n while (p < pos) {\n if (input.charCodeAt(p) === 10) {\n details.line++;\n details.column = 1;\n } else {\n details.column++;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n return details;\n }\n }\n\n function peg$computeLocation(startPos, endPos) {\n var startPosDetails = peg$computePosDetails(startPos),\n endPosDetails = peg$computePosDetails(endPos);\n\n return {\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column\n }\n };\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildSimpleError(message, location) {\n return new peg$SyntaxError(message, null, null, location);\n }\n\n function peg$buildStructuredError(expected, found, location) {\n return new peg$SyntaxError(\n peg$SyntaxError.buildMessage(expected, found),\n expected,\n found,\n location\n );\n }\n\n function peg$parseExpression() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseAdditiveExpr();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c0(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseAdditiveExpr() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseMultiplicativeExpr();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 43) {\n s5 = peg$c1;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c2); }\n }\n if (s5 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 45) {\n s5 = peg$c3;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c4); }\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseMultiplicativeExpr();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 43) {\n s5 = peg$c1;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c2); }\n }\n if (s5 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 45) {\n s5 = peg$c3;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c4); }\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseMultiplicativeExpr();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c5(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseMultiplicativeExpr() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseValue();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 42) {\n s5 = peg$c6;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\n }\n if (s5 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 47) {\n s5 = peg$c8;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c9); }\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseValue();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 42) {\n s5 = peg$c6;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\n }\n if (s5 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 47) {\n s5 = peg$c8;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c9); }\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseValue();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c5(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseValue() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseConstant();\n if (s1 === peg$FAILED) {\n s1 = peg$parseCustomColumn();\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c0(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseMinus();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseConstant();\n if (s3 === peg$FAILED) {\n s3 = peg$parseCustomColumn();\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c10(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseLParen();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseExpression();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseRParen();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c0(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseMinus();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseLParen();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseExpression();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseRParen();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c10(s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseConstant() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = [];\n if (peg$c11.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c12); }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$c11.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c12); }\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 46) {\n s4 = peg$c13;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c14); }\n }\n if (s4 !== peg$FAILED) {\n s5 = [];\n if (peg$c11.test(input.charAt(peg$currPos))) {\n s6 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c12); }\n }\n if (s6 !== peg$FAILED) {\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n if (peg$c11.test(input.charAt(peg$currPos))) {\n s6 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c12); }\n }\n }\n } else {\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c15(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseCustomColumn() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseColumnName();\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s3 = peg$c16;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseSegmentInfo();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s5 = peg$c18;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c19); }\n }\n if (s5 !== peg$FAILED) {\n s3 = [s3, s4, s5];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c20(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseColumnName() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = [];\n if (peg$c21.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c22); }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$c21.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c22); }\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s4 = peg$c23;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c24); }\n }\n if (s4 !== peg$FAILED) {\n s5 = [];\n if (peg$c21.test(input.charAt(peg$currPos))) {\n s6 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c22); }\n }\n if (s6 !== peg$FAILED) {\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n if (peg$c21.test(input.charAt(peg$currPos))) {\n s6 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c22); }\n }\n }\n } else {\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c25(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseSegmentInfo() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = [];\n if (peg$c21.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c22); }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$c21.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c22); }\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s3 = peg$c26;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c27); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n if (peg$c21.test(input.charAt(peg$currPos))) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c22); }\n }\n if (s5 !== peg$FAILED) {\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n if (peg$c21.test(input.charAt(peg$currPos))) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c22); }\n }\n }\n } else {\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s7 = peg$c28;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c29); }\n }\n if (s7 !== peg$FAILED) {\n s8 = [];\n if (peg$c21.test(input.charAt(peg$currPos))) {\n s9 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c22); }\n }\n if (s9 !== peg$FAILED) {\n while (s9 !== peg$FAILED) {\n s8.push(s9);\n if (peg$c21.test(input.charAt(peg$currPos))) {\n s9 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c22); }\n }\n }\n } else {\n s8 = peg$FAILED;\n }\n if (s8 !== peg$FAILED) {\n s7 = [s7, s8];\n s6 = s7;\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s7 = peg$c28;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c29); }\n }\n if (s7 !== peg$FAILED) {\n s8 = [];\n if (peg$c21.test(input.charAt(peg$currPos))) {\n s9 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c22); }\n }\n if (s9 !== peg$FAILED) {\n while (s9 !== peg$FAILED) {\n s8.push(s9);\n if (peg$c21.test(input.charAt(peg$currPos))) {\n s9 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c22); }\n }\n }\n } else {\n s8 = peg$FAILED;\n }\n if (s8 !== peg$FAILED) {\n s7 = [s7, s8];\n s6 = s7;\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n }\n if (s5 !== peg$FAILED) {\n s2 = [s2, s3, s4, s5];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c30(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseMinus() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 45) {\n s1 = peg$c3;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c4); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c31();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseLParen() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 40) {\n s1 = peg$c32;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c33); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c31();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseRParen() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 41) {\n s1 = peg$c34;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c35); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c31();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parse_() {\n var s0, s1, s2;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n if (peg$c37.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c38); }\n }\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c37.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c38); }\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c31();\n }\n s0 = s1;\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c36); }\n }\n\n return s0;\n }\n\n\r\n // ***Code in this file is not passed through Babel!***\r\n // Take care to ensure all JavaScript is cross-compatible!\r\n\r\n function compact(list) {\r\n return Array.prototype.filter.call(list, function(v) { return !!v; });\r\n }\r\n\r\n function flattenToString(arr) {\r\n return Array.prototype.reduce.call(arr || [], function(flat, toFlatten) {\r\n return flat.concat(Array.isArray(toFlatten) ? flattenToString(toFlatten) : toFlatten);\r\n }, []).join(\"\");\r\n }\r\n\r\n function ExprNode(value, nextOperation) {\r\n return Array.prototype.reduce.call(nextOperation || [], function(memo, curr) {\r\n var stripped = compact(curr);\r\n\r\n return {\r\n type: \"math\",\r\n operator: stripped[0],\r\n left: memo,\r\n right: stripped[1],\r\n };\r\n }, value);\r\n }\r\n\r\n function ConstantNode(parsedValue) {\r\n return {\r\n type: \"number\",\r\n value: parseFloat(flattenToString(parsedValue)),\r\n };\r\n }\r\n\r\n function ColumnNode(name, segments) {\r\n return {\r\n type: \"column\",\r\n name: flattenToString(name),\r\n segments: Array.prototype.slice.call(segments || [], 1, -1)[0],\r\n };\r\n }\r\n\r\n function ColumnNodeSegments(segments) {\r\n return flattenToString(segments);\r\n }\r\n\r\n function negateNode(node) {\r\n switch (node.type) {\r\n case 'number':\r\n node.value = -node.value;\r\n break;\r\n case 'column':\r\n node.isNegative = true;\r\n break;\r\n case 'math':\r\n node.negateResult = true;\r\n break;\r\n default:\r\n throw new Error('internal parser error: invalid node.type');\r\n }\r\n\r\n return node;\r\n }\r\n\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail(peg$endExpectation());\n }\n\n throw peg$buildStructuredError(\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n );\n }\n}\n\nmodule.exports = {\n SyntaxError: peg$SyntaxError,\n parse: peg$parse\n};\n","export * from './src/custom-column-parser';\r\n","import _ from 'underscore';\r\nimport { parse } from '@bingads-webui/custom-column-parser-pegjs';\r\n\r\n/**\r\n * @typedef {Object} SegmentDefinition\r\n * @property {string} segment internal segment name (for code)\r\n * @property {string} titleKey i18n key for segment name (for UI)\r\n */\r\n\r\n/**\r\n * @typedef {Object} SegmentCategoryDefinition\r\n * @property {string} category internal segment category name (for code)\r\n * @property {string} titleKey i18n key for segment category name (for UI)\r\n * @property {SegmentDefinition[]} segments list of valid segment definitions\r\n */\r\n\r\n/**\r\n * @typedef {Object} MetricDefinition\r\n * @property {string} metric internal metric name (for code)\r\n * @property {string} titleKey i18n key for metric name (for UI)\r\n */\r\n\r\n/**\r\n * @typedef {Object} MetricCategoryDefinition\r\n * @property {string} titleKey i18n key for metric category name (for UI)\r\n * @property {MetricDefinition[]} metrics list of valid metric definitions\r\n */\r\n\r\n/**\r\n * Configuration for CustomColumnParser constructor.\r\n *\r\n * @typedef {Object} CustomColumnParserConfig\r\n * @property {MetricCategoryDefinition[]} [metricCategories=[]] whitelist of valid metrics\r\n * @property {SegmentCategoryDefinition[]} [segmentCategories=[]] whitelist of valid segments\r\n */\r\n\r\n/**\r\n * Swappable string-to-ast parsing engine.\r\n * Useful for quickly & easily swapping parse libraries/dependencies.\r\n *\r\n * @typedef {Object} CustomColumnParserEngine\r\n * @property {function} parse accepts string input, returns AST object\r\n */\r\n\r\n/**\r\n * Parse and/or validate custom column expression strings.\r\n */\r\nexport class CustomColumnParser {\r\n /**\r\n * @param {CustomColumnParserConfig} [config] parser configuration\r\n * @param {CustomColumnParserEngine} [parserEngine] swappable engine for generating parse trees\r\n */\r\n constructor({ metricCategories = [], segmentCategories = [] } = {}, parserEngine = { parse }) {\r\n this.validMetrics = _.flatten(_.map(metricCategories, ({ metrics }) =>\r\n _.pluck(metrics, 'metric')));\r\n this.segmentCategories = segmentCategories;\r\n this.parserEngine = parserEngine;\r\n }\r\n\r\n isValidSegment(text = '') {\r\n const [category, selectionsText = ''] = text.split(':');\r\n const segmentConfig = _.findWhere(this.segmentCategories, { category });\r\n const validSegments = _.pluck(segmentConfig.segments, 'segment');\r\n\r\n if (!segmentConfig) {\r\n return false;\r\n }\r\n\r\n const selections = selectionsText.split(',');\r\n\r\n if (_.isEmpty(_.first(selections))) {\r\n return false;\r\n }\r\n\r\n return selections.length === _.intersection(selections, validSegments).length;\r\n }\r\n\r\n getColumnValidationErrors(root) {\r\n const errors = [];\r\n\r\n if (root.type === 'column') {\r\n if (!_.isEmpty(this.validMetrics) && !_.contains(this.validMetrics, root.name)) {\r\n errors.push({ cause: 'Invalid column name', offender: root.name });\r\n }\r\n\r\n if (!_.isEmpty(this.segmentCategories) && root.segments) {\r\n if (!this.isValidSegment(root.segments)) {\r\n errors.push({ cause: 'Invalid segment', offender: root.segments });\r\n }\r\n }\r\n }\r\n\r\n return errors\r\n .concat(root.left ? this.getColumnValidationErrors(root.left) : [])\r\n .concat(root.right ? this.getColumnValidationErrors(root.right) : []);\r\n }\r\n\r\n parse(expression) {\r\n try {\r\n const parseTree = this.parserEngine.parse(expression);\r\n const errors = this.getColumnValidationErrors(parseTree);\r\n\r\n if (!_.isEmpty(errors)) {\r\n return null;\r\n }\r\n\r\n return parseTree;\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n\r\n isValid(expression) {\r\n try {\r\n return Boolean(this.parse(expression));\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__199__;","\r\nexport * from './src/metrics/index';\r\nexport * from './src/segments/index';\r\nexport * from './src/config';\r\n","import _ from 'underscore';\r\nimport {\r\n Clicks,\r\n Impressions,\r\n CTR,\r\n AverageCPC,\r\n AverageCPM,\r\n Spend,\r\n TotalSpend,\r\n} from './performance';\r\nimport {\r\n CPA,\r\n PartialConversionCPA,\r\n Conversions,\r\n ConversionsCredit,\r\n ConversionRate,\r\n PartialConversionRate,\r\n AdvertiserReportedRevenue,\r\n RevenueOnAdSpend,\r\n} from './conversions';\r\n\r\nexport const Metrics = {\r\n Clicks,\r\n Impressions,\r\n CTR,\r\n AverageCPC,\r\n AverageCPM,\r\n Spend,\r\n TotalSpend,\r\n CPA,\r\n PartialConversionCPA,\r\n Conversions,\r\n ConversionsCredit,\r\n ConversionRate,\r\n PartialConversionRate,\r\n AdvertiserReportedRevenue,\r\n RevenueOnAdSpend,\r\n};\r\n\r\nconst defaultPerformanceMetrics = [\r\n Clicks,\r\n Impressions,\r\n CTR,\r\n AverageCPC,\r\n Spend,\r\n];\r\n\r\nconst defaultConversionsMetrics = [\r\n CPA,\r\n Conversions,\r\n ConversionRate,\r\n AdvertiserReportedRevenue,\r\n RevenueOnAdSpend,\r\n];\r\n\r\n/**\r\n * @param {string} titleKey i18n key for category title\r\n * @param {MetricDefinition[]} metrics columns to display under this category\r\n * @returns {MetricCategory} for custom columns configuration\r\n */\r\nexport const MetricCategory = (titleKey, metrics = []) => ({ titleKey, metrics });\r\n\r\n/**\r\n * @param {MetricDefinition[]} metrics \"Performance\" category metrics\r\n * @returns {MetricCategory} for custom columns configuration\r\n */\r\nconst PerformanceCategory = (metrics = defaultPerformanceMetrics) =>\r\n MetricCategory('Performance', metrics);\r\n\r\n/**\r\n * @param {MetricDefinition[]} metrics \"Conversions\" category metrics\r\n * @returns {MetricCategory} for custom columns configuration\r\n */\r\nconst ConversionsCategory = (metrics = defaultConversionsMetrics) =>\r\n MetricCategory('Conversions', metrics);\r\n\r\n/**\r\n * @param {MetricDefinition[]} [perfMetrics] metrics to group under 'Performance' category\r\n * @param {MetricDefinition[]} [convMetrics] metrics to group under 'Conversions' category\r\n * @returns {MetricCategory[]} formatted value for config(s)\r\n */\r\nexport const MetricCategories = (perfMetrics, convMetrics) => [\r\n PerformanceCategory(perfMetrics),\r\n ConversionsCategory(convMetrics),\r\n];\r\n\r\nexport function getAllMetrics(metricCategories) {\r\n const allMetrics = [];\r\n\r\n _.each(metricCategories, (category) => {\r\n _.each(category.metrics, metric => allMetrics.push(metric.metric));\r\n });\r\n\r\n return allMetrics;\r\n}\r\n","\r\nexport const Clicks = {\r\n metric: 'PerformanceMetrics\\\\Clicks',\r\n titleKey: 'ColumnName_Clicks',\r\n};\r\n\r\nexport const Impressions = {\r\n metric: 'PerformanceMetrics\\\\Impressions',\r\n titleKey: 'ColumnName_Impressions',\r\n};\r\n\r\nexport const CTR = {\r\n metric: 'PerformanceMetrics\\\\CTR',\r\n titleKey: 'ColumnName_ClickThruRate',\r\n};\r\n\r\nexport const AverageCPC = {\r\n metric: 'PerformanceMetrics\\\\AverageCPC',\r\n titleKey: 'ColumnName_CPC',\r\n};\r\n\r\nexport const AverageCPM = {\r\n metric: 'PerformanceMetrics\\\\AverageCPM',\r\n titleKey: 'ColumnName_CostPerImpression',\r\n};\r\n\r\nexport const Spend = {\r\n metric: 'PerformanceMetrics\\\\Spend',\r\n titleKey: 'ColumnName_Spend',\r\n};\r\n\r\nexport const TotalSpend = {\r\n metric: 'PhonePerformanceMetrics\\\\ClickAndPhoneSpend',\r\n titleKey: 'ColumnName_TotalCost',\r\n};\r\n","export const CPA = {\r\n metric: 'PerformanceMetrics\\\\CPA',\r\n titleKey: 'ColumnName_CPA',\r\n};\r\n\r\nexport const PartialConversionCPA = {\r\n metric: 'PerformanceMetrics\\\\PartialConversionCPA',\r\n titleKey: 'ColumnName_CPA',\r\n};\r\n\r\nexport const Conversions = {\r\n metric: 'PerformanceMetrics\\\\Conversions',\r\n titleKey: 'ColumnName_Conversions',\r\n};\r\n\r\nexport const ConversionsCredit = {\r\n metric: 'PerformanceMetrics\\\\ConversionsCredit',\r\n titleKey: 'ColumnName_Conversions',\r\n};\r\n\r\nexport const ConversionRate = {\r\n metric: 'PerformanceMetrics\\\\ConversionRate',\r\n titleKey: 'ColumnName_ConversionRate',\r\n};\r\n\r\nexport const PartialConversionRate = {\r\n metric: 'PerformanceMetrics\\\\PartialConversionRate',\r\n titleKey: 'ColumnName_ConversionRate',\r\n};\r\n\r\nexport const AdvertiserReportedRevenue = {\r\n metric: 'PerformanceMetrics\\\\AdvertiserReportedRevenue',\r\n titleKey: 'ColumnName_Revenue',\r\n};\r\n\r\nexport const RevenueOnAdSpend = {\r\n metric: 'PerformanceMetrics\\\\RevenueOnAdSpend',\r\n titleKey: 'ColumnName_RevenueOnAdSpend',\r\n};\r\n","import _ from 'underscore';\r\nimport { Computer, SmartPhone, Tablet } from './device-type';\r\nimport { AOLSearch, BingAndYahooSearch } from './network';\r\nimport {\r\n AOLSearchTop,\r\n AOLSearchOther,\r\n BingAndYahooSearchTop,\r\n BingAndYahooSearchOther,\r\n} from './top-vs-other';\r\n\r\nexport const segmentCategories = [\r\n {\r\n category: 'DeviceType',\r\n titleKey: 'Segment_Dropdown_Device_Type',\r\n segments: [\r\n Computer,\r\n SmartPhone,\r\n Tablet,\r\n ],\r\n },\r\n {\r\n category: 'Network',\r\n titleKey: 'Segment_Dropdown_Network',\r\n segments: [\r\n BingAndYahooSearch,\r\n AOLSearch,\r\n ],\r\n },\r\n {\r\n category: 'TopVsOther',\r\n titleKey: 'Segment_Dropdown_Top_Other',\r\n segments: [\r\n BingAndYahooSearchTop,\r\n BingAndYahooSearchOther,\r\n AOLSearchTop,\r\n AOLSearchOther,\r\n ],\r\n },\r\n];\r\n\r\nexport function getAllSegments(segCategories) {\r\n const allSegments = [];\r\n\r\n _.each(segCategories, (segCategory) => {\r\n _.each(segCategory.segments, segment => allSegments.push(segment.segment));\r\n });\r\n\r\n return allSegments;\r\n}\r\n","export const Computer = {\r\n segment: 'Computer',\r\n titleKey: 'Segment_Device_Type_Computer',\r\n};\r\n\r\nexport const SmartPhone = {\r\n segment: 'SmartPhone',\r\n titleKey: 'Segment_Device_Type_Smartphone',\r\n};\r\n\r\nexport const Tablet = {\r\n segment: 'Tablet',\r\n titleKey: 'Segment_Device_Type_Tablet',\r\n};\r\n","export const BingAndYahooSearch = {\r\n segment: 'BingAndYahooSearch',\r\n titleKey: 'Segment_Network_BingAndYahoo',\r\n};\r\n\r\nexport const AOLSearch = {\r\n segment: 'AOLSearch',\r\n titleKey: 'Segment_Network_AOL',\r\n};\r\n","export const BingAndYahooSearchTop = {\r\n segment: 'BingAndYahooSearchTop',\r\n titleKey: 'Segment_Page_Position_BingYahooTop',\r\n};\r\n\r\nexport const BingAndYahooSearchOther = {\r\n segment: 'BingAndYahooSearchOther',\r\n titleKey: 'Segment_Page_Position_BingYahooOther',\r\n};\r\n\r\nexport const AOLSearchTop = {\r\n segment: 'AOLSearchTop',\r\n titleKey: 'Segment_Page_Position_AOL_Top',\r\n};\r\n\r\nexport const AOLSearchOther = {\r\n segment: 'AOLSearchOther',\r\n titleKey: 'Segment_Page_Position_AOL_Other',\r\n};\r\n","import _ from 'underscore';\r\nimport { MetricCategories, Metrics, getAllMetrics } from './metrics/index';\r\nimport { segmentCategories, getAllSegments } from './segments/index';\r\n\r\n/**\r\n * @typedef {Object} SegmentDefinition\r\n * @property {string} segment internal segment name (for OData)\r\n * @property {string} titleKey i18n key for segment name (for UI)\r\n */\r\n\r\n/**\r\n * @typedef {Object} SegmentCategory\r\n * @property {string} category internal segment category name (for OData)\r\n * @property {string} titleKey i18n key for segment category name (for UI)\r\n * @property {SegmentDefinition[]} segments list of valid segment definitions\r\n */\r\n\r\n/**\r\n * @typedef {Object} MetricDefinition\r\n * @property {string} metric internal metric name (for OData)\r\n * @property {string} titleKey i18n key for metric name (for UI)\r\n */\r\n\r\n/**\r\n * @typedef {Object} MetricCategory\r\n * @property {string} titleKey i18n key for metric category name (for UI)\r\n * @property {MetricDefinition[]} metrics list of valid metric definitions\r\n */\r\n\r\n/**\r\n * Configuration shared between custom-columns-related constructors/components.\r\n *\r\n * @typedef {Object} CustomColumnsSharedConfig\r\n * @property {boolean} enabled whether the custom columns feature should be enabled\r\n * @property {MetricCategory[]} [metricCategories=[]] whitelist of valid metrics\r\n * @property {SegmentCategory[]} [segmentCategories=[]] whitelist of valid segments\r\n */\r\n\r\n/**\r\n * @type {CustomColumnsSharedConfig}\r\n */\r\nexport const EMPTY = {\r\n enabled: false,\r\n metricCategories: [],\r\n segmentCategories: [],\r\n};\r\n\r\n/**\r\n * Sane, minimal defaults for custom columns to be enabled.\r\n * These metrics and segments are used in ALL grids.\r\n * Some grids may include additional metrics/segments.\r\n * @type {CustomColumnsSharedConfig}\r\n */\r\nexport const DEFAULTS = {\r\n enabled: true,\r\n metricCategories: MetricCategories(),\r\n segmentCategories,\r\n};\r\n\r\nconst getConversionMetrics = (permissions = { dynamic: {} }, combine) => {\r\n const {\r\n dynamic: {\r\n PartialConversions: IsPartialConversionsEnabled,\r\n ColumnConversion: IsColumnConversionEnabled,\r\n } = {},\r\n } = permissions;\r\n\r\n if (!IsColumnConversionEnabled) return undefined;\r\n\r\n const newMetrics = [\r\n Metrics.PartialConversionCPA,\r\n Metrics.ConversionsCredit,\r\n Metrics.PartialConversionRate,\r\n Metrics.AdvertiserReportedRevenue,\r\n Metrics.RevenueOnAdSpend,\r\n ];\r\n const oldMetrics = [\r\n Metrics.CPA,\r\n Metrics.Conversions,\r\n Metrics.ConversionRate,\r\n Metrics.AdvertiserReportedRevenue,\r\n Metrics.RevenueOnAdSpend,\r\n ];\r\n const selectedMetrics = IsPartialConversionsEnabled ? newMetrics : oldMetrics;\r\n let addedMetrics = [];\r\n if (combine) {\r\n addedMetrics = IsPartialConversionsEnabled ? oldMetrics : newMetrics;\r\n }\r\n\r\n const convMetrics = [\r\n ...selectedMetrics,\r\n ...addedMetrics,\r\n ];\r\n\r\n return convMetrics;\r\n};\r\n\r\nexport const adGroupMetricCategoriesFactory = (permissions, combine = false) => {\r\n const convMetrics = getConversionMetrics(permissions, combine);\r\n\r\n return {\r\n metricCategories: MetricCategories([\r\n Metrics.Clicks,\r\n Metrics.Impressions,\r\n Metrics.CTR,\r\n Metrics.AverageCPC,\r\n Metrics.AverageCPM,\r\n Metrics.Spend,\r\n Metrics.TotalSpend,\r\n ], convMetrics),\r\n segmentCategories,\r\n };\r\n};\r\n\r\nexport const adsMetricCategoriesFactory = (permissions, combine = false) => {\r\n const convMetrics = getConversionMetrics(permissions, combine);\r\n\r\n return {\r\n metricCategories: MetricCategories([\r\n Metrics.Clicks,\r\n Metrics.Impressions,\r\n Metrics.CTR,\r\n Metrics.AverageCPC,\r\n Metrics.Spend,\r\n ], convMetrics),\r\n segmentCategories,\r\n };\r\n};\r\n\r\nexport const campaignMetricCategoriesFactory = (permissions, combine = false) => {\r\n const convMetrics = getConversionMetrics(permissions, combine);\r\n\r\n return {\r\n metricCategories: MetricCategories([\r\n Metrics.Clicks,\r\n Metrics.Impressions,\r\n Metrics.CTR,\r\n Metrics.AverageCPC,\r\n Metrics.AverageCPM,\r\n Metrics.Spend,\r\n Metrics.TotalSpend,\r\n ], convMetrics),\r\n segmentCategories,\r\n };\r\n};\r\n\r\nexport const keywordMetricCategoriesFactory = (permissions, combine = false) => {\r\n const convMetrics = getConversionMetrics(permissions, combine);\r\n\r\n return {\r\n metricCategories: MetricCategories([\r\n Metrics.Clicks,\r\n Metrics.Impressions,\r\n Metrics.CTR,\r\n Metrics.AverageCPC,\r\n Metrics.AverageCPM,\r\n Metrics.Spend,\r\n ], convMetrics),\r\n segmentCategories,\r\n };\r\n};\r\n\r\nexport const searchTermMetricCategoriesFactory = (permissions, combine = false) => {\r\n const convMetrics = getConversionMetrics(permissions, combine);\r\n\r\n return {\r\n enabled: true,\r\n metricCategories: MetricCategories(undefined, convMetrics),\r\n segmentCategories,\r\n };\r\n};\r\n\r\nexport const accountMetricCategoriesFactory = (permissions, combine = false) => {\r\n const convMetrics = getConversionMetrics(permissions, combine);\r\n\r\n return {\r\n metricCategories: MetricCategories([\r\n Metrics.Clicks,\r\n Metrics.Impressions,\r\n Metrics.CTR,\r\n Metrics.AverageCPC,\r\n Metrics.AverageCPM,\r\n Metrics.Spend,\r\n ], convMetrics),\r\n segmentCategories,\r\n };\r\n};\r\n\r\nexport const adExtensionMetricCategories = {\r\n metricCategories: MetricCategories([\r\n Metrics.Clicks,\r\n Metrics.Impressions,\r\n Metrics.CTR,\r\n Metrics.AverageCPC,\r\n Metrics.AverageCPM,\r\n Metrics.Spend,\r\n ]),\r\n segmentCategories,\r\n};\r\n\r\nfunction getUsedMetricsAndSegments(expression) {\r\n let usedMetrics = [];\r\n let usedSegments = [];\r\n const metrics = _.filter(expression, clause =>\r\n clause.indexOf('PerformanceMetrics') === 0 || clause.indexOf('PhonePerformanceMetrics') === 0);\r\n const regMetric = /(?(PerformanceMetrics|PhonePerformanceMetrics)[^[]*)(\\[[^:]*:(?.*)\\])?/;\r\n\r\n _.each(metrics, (metric) => {\r\n const { groups: { metric: matchedMetric, segments } } = metric.match(regMetric);\r\n\r\n usedMetrics = usedMetrics.concat(matchedMetric);\r\n if (segments) {\r\n usedSegments = usedSegments.concat(segments.split(','));\r\n }\r\n });\r\n return {\r\n usedMetrics: _.uniq(usedMetrics),\r\n usedSegments: _.uniq(usedSegments),\r\n };\r\n}\r\n\r\nexport function isValidForFeature({\r\n schemaName,\r\n expression,\r\n permissions = {},\r\n}) {\r\n let metricCategories;\r\n let segCategories;\r\n\r\n switch (schemaName) {\r\n case 'Account':\r\n ({ metricCategories, segmentCategories: segCategories } =\r\n accountMetricCategoriesFactory(permissions, /* combine */ true));\r\n break;\r\n case 'Campaign':\r\n ({ metricCategories, segmentCategories: segCategories } =\r\n campaignMetricCategoriesFactory(permissions, /* combine */ true));\r\n break;\r\n case 'AdGroup':\r\n ({ metricCategories, segmentCategories: segCategories } =\r\n adGroupMetricCategoriesFactory(permissions, true));\r\n break;\r\n case 'Ad':\r\n ({ metricCategories, segmentCategories: segCategories } =\r\n adsMetricCategoriesFactory(permissions, true));\r\n break;\r\n case 'Keyword':\r\n ({ metricCategories, segmentCategories: segCategories } =\r\n keywordMetricCategoriesFactory(permissions, true));\r\n break;\r\n case 'SearchTerm':\r\n ({ metricCategories, segmentCategories: segCategories } =\r\n searchTermMetricCategoriesFactory(permissions, true));\r\n break;\r\n case 'AdExtensionAssociation':\r\n ({ metricCategories, segmentCategories: segCategories } =\r\n adsMetricCategoriesFactory(permissions, true));\r\n break;\r\n default:\r\n return false;\r\n }\r\n\r\n const supportedMetrics = getAllMetrics(metricCategories);\r\n const supportedSegments = getAllSegments(segCategories);\r\n\r\n const { usedMetrics, usedSegments } = getUsedMetricsAndSegments(expression);\r\n\r\n if (!_.chain(usedMetrics).difference(supportedMetrics).isEmpty().value()) {\r\n return false;\r\n }\r\n\r\n if (!_.chain(usedSegments).difference(supportedSegments).isEmpty().value()) {\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n","\r\n\r\nexport { DatePicker } from './src/date-picker-view';\r\n","import { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport { keyCode } from '@bingads-webui/keycode';\r\n\r\nimport '@bingads-webui/kendo/kendo.datepicker';\r\nimport { validateDateRange } from '@bingads-webui-universal/primitive-utilities';\r\n\r\nimport template from './date-picker-template.pug';\r\n\r\n/**\r\n * dateChanged event - When date is changed, it fires with the new date object.\r\n *\r\n * @event DatePicker#dateChanged\r\n * @type {Date}\r\n */\r\n\r\n/**\r\n * Date picker control used to select dates.\r\n * @fires DatePicker#dateChanged\r\n */\r\nexport class DatePicker extends DeterministicView {\r\n /**\r\n * initialize DatePicker view.\r\n * It defaults to short date format from passed in culture if not overridden.\r\n * @param {Object} options - options object.\r\n * @param {Date} [options.minDate] - The minimum date that can be selected.\r\n * @param {Date} [options.maxDate] - The maximum date that can be selected.\r\n * @param {Date} [options.selectedDate] - The date to pre-select in the datepicker.\r\n * @param {string} [options.ariaLabel] - The aria-label of datepicker.\r\n * If not provided, datepicker will not have a default selection.\r\n * @param {string} [options.navigateToFutureAriaLabel] - the aria label used on the navigate to future button\r\n * @param {string} [options.navigateToPastAriaLabel] - the aria label used on the navigate to past button\r\n * @throws Will throw if passed in culture has not been loaded.\r\n * @throws Will throw if passed in date range is not valid.\r\n * @returns {undefined}\r\n */\r\n initialize({\r\n minDate, maxDate, selectedDate, ariaLabel, navigateToFutureAriaLabel, navigateToPastAriaLabel,\r\n }) {\r\n const dateRangeErrors = validateDateRange(minDate, maxDate, selectedDate);\r\n if (dateRangeErrors.length) {\r\n throw new Error(dateRangeErrors.join(','));\r\n }\r\n\r\n this.model.set({\r\n minDate, maxDate, selectedDate, ariaLabel, navigateToFutureAriaLabel, navigateToPastAriaLabel,\r\n });\r\n }\r\n\r\n /**\r\n * Returns event handler callback for clicking on date filter container.\r\n * @returns {Object} - event handlers mapping.\r\n */\r\n get events() {\r\n return {\r\n 'click input.date-picker-component': () => this.datePicker.open(),\r\n 'keydown input.date-picker-component': this.handleKeyDown,\r\n };\r\n }\r\n\r\n /**\r\n * Returns the selected date.\r\n * @returns {Date} - Date object or null if no date selected.\r\n */\r\n getDate() {\r\n return this.getState().selectedDate || null;\r\n }\r\n\r\n /**\r\n * Returns the options for kendo date picker\r\n * @returns {Object} - options\r\n */\r\n getKendoOptions() {\r\n const { minDate, maxDate, selectedDate } = this.model.attributes;\r\n\r\n const options = {\r\n value: selectedDate,\r\n animation: false,\r\n footer: false,\r\n change: (event) => {\r\n const newDate = event.sender.value();\r\n if (newDate) {\r\n this.model.set({ selectedDate: newDate }, { silent: true });\r\n this.trigger('dateChanged', this.getDate());\r\n } else {\r\n // For invalid values, kendo might not update input box\r\n // so have to do it manually\r\n event.sender.value(this.getDate());\r\n }\r\n },\r\n open: () => {\r\n this.datePicker.dateView.div.click((event) => {\r\n event.stopPropagation();\r\n });\r\n // Fix Bug 3084144: Bad gradient effect of the date picker\r\n const { calendar } = this.datePicker.dateView;\r\n if (calendar && calendar.setOptions) {\r\n calendar.setOptions({ animation: false });\r\n }\r\n\r\n if (this.model.attributes.navigateToPastAriaLabel) {\r\n // eslint-disable-next-line no-underscore-dangle\r\n calendar._prevArrow.attr('aria-label', this.model.attributes.navigateToPastAriaLabel);\r\n }\r\n if (this.model.attributes.navigateToFutureAriaLabel) {\r\n // eslint-disable-next-line no-underscore-dangle\r\n calendar._nextArrow.attr('aria-label', this.model.attributes.navigateToFutureAriaLabel);\r\n }\r\n },\r\n month: {\r\n empty: '#= data.value #',\r\n },\r\n };\r\n\r\n // set min and max only if they are not null\r\n // otherwise may get error: Uncaught TypeError: Cannot read property 'getMonth' of null\r\n if (minDate) {\r\n options.min = minDate;\r\n }\r\n\r\n if (maxDate) {\r\n options.max = maxDate;\r\n }\r\n\r\n return options;\r\n }\r\n\r\n /**\r\n * Method to initialize and render the underlying date-picker.\r\n * @private\r\n * @returns {undefined}\r\n */\r\n renderTrunk() {\r\n this.$el.html(template({ ariaLabel: this.model.attributes.ariaLabel }));\r\n this.datePickerElement = this.$('.date-picker-component');\r\n\r\n this.datePickerElement.kendoDatePicker(this.getKendoOptions());\r\n\r\n this.datePickerElement.removeAttr('aria-readonly');\r\n\r\n this.$('.k-datepicker .k-select').hide();\r\n\r\n if (this.datePicker) {\r\n this.datePicker.destroy();\r\n }\r\n this.datePicker = this.datePickerElement.data('kendoDatePicker');\r\n }\r\n\r\n /**\r\n * Destroy the underlying date-picker object and remove all references to it.\r\n * @private\r\n * @returns {undefined}\r\n */\r\n remove() {\r\n if (this.datePicker) {\r\n this.datePicker.destroy();\r\n }\r\n\r\n this.datePicker = null;\r\n return super.remove();\r\n }\r\n\r\n /**\r\n * Handles keydown event for the date picker.\r\n * @private\r\n * @param {KeyboardEvent} event - the event data\r\n * @returns {undefined}\r\n */\r\n handleKeyDown(event) {\r\n if ((event.keyCode === keyCode.Enter) || (event.keyCode === keyCode.Space)) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.datePicker.open();\r\n }\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__3__;","module.exports = __WEBPACK_EXTERNAL_MODULE__4__;","module.exports = __WEBPACK_EXTERNAL_MODULE__5__;","var pug = require(\"!../../../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (ariaLabel) {pug_html = pug_html + \"\\u003Cinput\" + (\" class=\\\"date-picker-component\\\"\"+pug.attr(\"aria-label\", ariaLabel, true, true)) + \"\\u003E\";}.call(this,\"ariaLabel\" in locals_for_with?locals_for_with.ariaLabel:typeof ariaLabel!==\"undefined\"?ariaLabel:undefined));;return pug_html;};\nmodule.exports = template;","module.exports = __WEBPACK_EXTERNAL_MODULE__8__;","module.exports = __WEBPACK_EXTERNAL_MODULE__17__;","\r\n\r\nexport * from './src/promise';\r\n","import Promise from 'bluebird';\r\n\r\nlet sharedDebugId = 0;\r\n\r\n/**\r\n * Augments the behaviour of the passed in promise to help reduce flickerness\r\n * of the UI by:\r\n * - delaying the completion of the promise for it to last at least the\r\n * specified amount of time;\r\n * - delaying calling, or not calling at all, the \"on\"/\"off\" progress callbacks,\r\n * if the promise finishes before the \"on\" delay elapses.\r\n * @summary \"Deflickers\" a promise\r\n * @param {Object} options - the options\r\n * @param {Number} [options.onDelay=500] - the delay in milliseconds before\r\n * the \"on\" progress callback is called,\r\n * should the promise not finish by that time\r\n * @param {Number} [options.offDelay=700] - the delay in milliseconds before\r\n * the \"off\" progress callback is called, after the \"on\" callback was called\r\n * @param {Function} options.on - the \"on\" progress callback, which is called\r\n * if process runs longer than the \"on\" delay. The callback must return the \"off\"\r\n * progress callback. The \"off\" progress callback will be called after the process\r\n * finishes and the \"off\" delay elapses.\r\n * @param {Any} [options.logDebug] - If not undefined, enables trace output of the\r\n * component using window.console.log-like function. Each message from a specific instance\r\n * of the deflickered promise will have a uniqe ID logged with every message traced.\r\n * @param {Promise} promise - the promise to augment the behaviour of\r\n * @returns {Promise} a new promise with the augmented behaviour\r\n */\r\nexport function deflickerPromise(options, promise) {\r\n const {\r\n onDelay = 500, offDelay = 700, on, logDebug = () => { /* NOP */ },\r\n } = options;\r\n let resolveOffDelayPromise;\r\n const offDelayPromise = new Promise((resolve) => {\r\n resolveOffDelayPromise = resolve;\r\n });\r\n let off = null;\r\n let onTimerFired = false;\r\n const debugId = sharedDebugId++; // eslint-disable-line \r\n\r\n logDebug(`Deflicker [${debugId}]: Enter. onDelay = ${onDelay}, offDelay = ${offDelay}`);\r\n\r\n const setup = () => {\r\n // Start the \"on\" timer\r\n const onTimerId = setTimeout(() => {\r\n logDebug(`Deflicker [${debugId}]: On timer`);\r\n\r\n onTimerFired = true;\r\n off = on();\r\n\r\n // Start the \"off\" timer\r\n setTimeout(() => {\r\n logDebug(`Deflicker [${debugId}]: Off timer`);\r\n resolveOffDelayPromise();\r\n }, offDelay);\r\n }, onDelay);\r\n\r\n return () => {\r\n logDebug(`Deflicker [${debugId}]: Process finished. onTimerFired = ${onTimerFired}`);\r\n\r\n // If the process finishes before the \"on\" timer fires,\r\n // cancel it and resolve the \"off\" delay promise\r\n if (!onTimerFired) {\r\n clearTimeout(onTimerId);\r\n resolveOffDelayPromise();\r\n }\r\n };\r\n };\r\n\r\n return promise\r\n .finally(setup()) // set up and start the \"on\" timer\r\n .finally(() => offDelayPromise)\r\n .finally(() => {\r\n logDebug(`Deflicker [${debugId}]: Overall wait finished. onTimerFired = ${onTimerFired}`);\r\n\r\n if (off) {\r\n off();\r\n }\r\n });\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__4__;","import * as helpers from './src/helpers';\r\nimport { DeterministicView } from './src/deterministic-view';\r\nimport './src/focus-keeper';\r\n\r\n\r\nexport { DeterministicView, helpers };\r\n","import _ from 'underscore';\r\nimport { DeterministicView } from './deterministic-view';\r\n\r\n/**\r\n * Helper function to update a view's state\r\n * @param {DeterministicView} view - The view to be updated\r\n * @param {(Function|Object)} patch -\r\n * It could be either a function or an object.\r\n * - If it's a funciton, new state will be patch(currentState)\r\n * - If it's an object, new state will be _.defaults(patch, currentState)\r\n * @returns {DeterministicView} - The view being updated\r\n */\r\nexport function updateView(view, patch) {\r\n if (_.isFunction(patch)) {\r\n return view.setState(patch(view.getState()));\r\n }\r\n return view.setState(_.extend({}, view.getState(), patch));\r\n}\r\n\r\nfunction getFactory(view) {\r\n return view.__factory || view.constructs; // eslint-disable-line\r\n}\r\n\r\nfunction setFactory(view, Factory) {\r\n return _.extend(view, { __factory: Factory }); // eslint-disable-line\r\n}\r\n\r\n/**\r\n * Helper function to create a child view on demond. If the child exists, return\r\n * it directly, otherwise create the view with the given information\r\n * @param {DeterministicView} view - The parent view\r\n * @param {string} ref - The ref of the child view\r\n * @param {Function} viewFactory -\r\n * The factory method or constructor of the child view\r\n * - If the prototype of viewFactory is instance of DeterministicView, treat\r\n * it as a construstor.\r\n * - Otherwise, treat it as a factory method.\r\n * @param {Object} options - The constructor option of the child view\r\n * @param {Object} events -\r\n * The event handlers to be bound to the child view.\r\n * - The keys of the object are child view event names.\r\n * - The values of the object could be a handler function or a method name of\r\n * the parent view.\r\n * @returns {DeterministicView} - The child view\r\n */\r\nexport function ensureChildView(view, ref, viewFactory, options = {}, events = {}) {\r\n let childView = view.getChild(ref);\r\n\r\n if (!childView || getFactory(childView) !== viewFactory) {\r\n if (_.isFunction(viewFactory)) {\r\n if (viewFactory === DeterministicView\r\n || viewFactory.prototype instanceof DeterministicView) {\r\n const ViewConstructor = viewFactory;\r\n childView = new ViewConstructor(options);\r\n } else {\r\n childView = viewFactory(options);\r\n }\r\n }\r\n\r\n if (!(childView instanceof DeterministicView)) {\r\n throw new Error('Invalid viewFactory');\r\n }\r\n\r\n setFactory(childView, viewFactory);\r\n\r\n _.each(events, (handler, event) => {\r\n const handlerFunction = _.isString(handler) ? view[handler] : handler;\r\n if (!_.isFunction(handlerFunction)) {\r\n throw new Error('Invalid event handler');\r\n }\r\n view.listenTo(childView, event, handlerFunction);\r\n });\r\n view.setChild(ref, childView);\r\n }\r\n\r\n return childView;\r\n}\r\n","import _ from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport { BaseView } from '@bingads-webui/base-view';\r\nimport { RenderEngine } from './render-engine';\r\n\r\nconst defaultRenderEngine = new RenderEngine();\r\n\r\n/**\r\n * Your template should only render the trunk of the view. For the child views,\r\n * you should put a placeholder with attribute `data-ref` being the ref of the\r\n * child view.\r\n * @callback TemplateCallback\r\n * @param {Object} options -\r\n * @param {Object} options.model - The model object\r\n * @param {DeterministicView} options.view - The view being rendered\r\n * @returns {string} - The rendered HTML\r\n */\r\nconst EMPTY_TEMPLATE = () => '';\r\n\r\nconst FORBIDDEN_OPTIONS = [\r\n 'model',\r\n 'collection',\r\n 'el',\r\n 'id',\r\n 'className',\r\n 'tagName',\r\n 'attributes',\r\n 'events',\r\n];\r\n\r\nexport const DeterministicView = BaseView.extend({\r\n // We cannot use ES6 `extends` here, because we need to use `this` before\r\n // calling `super(..args)`.\r\n // This is due to the limitation of `Backbone.View`. The constructor of\r\n // `Backbone.View` calls the `initialize` method, which is commonly used to\r\n // initialize the view instance.\r\n // We want give user the chance to use their own Model type instead of\r\n // `Backbone.Model`, that requires us to access `this.Model` to create the\r\n // instance of model, and pass it to `initialize()`\r\n\r\n /**\r\n * An extension of BaseView\r\n * @constructor DeterministicView\r\n * @param {object} options -\r\n * The options to create view. NOTE, the builtin options `model`,\r\n * `collection`, `el`, `id`, `className`, `tagName`, `attributes` and\r\n * `events` are forbidden for this constructor. Those can be customized\r\n * at class level. But for instances of the same view class, all those\r\n * properties MUST be consistent.\r\n * @return {void}\r\n */\r\n constructor: function constructor(options) {\r\n _.each(FORBIDDEN_OPTIONS, (name) => {\r\n if (_.has(options, name)) {\r\n throw new Error(`Option '${name}' is forbidden for DeterministicView`);\r\n }\r\n });\r\n\r\n const ModelConstructor = this.Model;\r\n const model = new ModelConstructor();\r\n\r\n if (!(model instanceof Backbone.Model)) {\r\n throw new Error('Invalid Model type');\r\n }\r\n\r\n BaseView.call(this, _.defaults({ model }, options));\r\n\r\n // This is due to we are using Backbone 1.3.3 in AdsAppUISharedComponents.\r\n // In AdsAppUI, we are using 1.0.0\r\n // We can remove following logic about options if we downgrade all to 1.0.0\r\n if (!this.options) {\r\n this.options = {};\r\n }\r\n _.defaults(this.options, options);\r\n\r\n // Redraw automatically on model change\r\n this.listenTo(model, 'change', () => {\r\n this.renderEngine.scheduleRenderView(this);\r\n });\r\n this.renderEngine.scheduleRenderView(this);\r\n },\r\n\r\n /**\r\n * The RenderEngine to render this view. This can be overridden by the\r\n * subclasses to change the rendering behavior (e.g. delayed rendering).\r\n * @memberof DeterministicView#\r\n * @type {RenderEngine}\r\n */\r\n get renderEngine() {\r\n return defaultRenderEngine;\r\n },\r\n\r\n /**\r\n * The template to render the view's trunk. This should be overridden by the\r\n * subclasses to fill the content. By default, it's an empty template.\r\n * @memberof DeterministicView#\r\n * @type {TemplateCallback}\r\n */\r\n get template() {\r\n return EMPTY_TEMPLATE;\r\n },\r\n\r\n /**\r\n * The class of the model. This can be overridden by subclasses to use\r\n * customized model type. By default, it's `Backbone.Model`.\r\n * @memberof DeterministicView#\r\n * @type {Class}\r\n */\r\n get Model() {\r\n return Backbone.Model;\r\n },\r\n\r\n /**\r\n * Set state of the view. This should be overridden by subclasses to propagate\r\n * state to their children views. By default, it stores the whole state into\r\n * the view's model.\r\n * @memberof DeterministicView#\r\n * @param {Object} state - The new state\r\n * @returns {DeterministicView} - The view itself\r\n */\r\n setState(state) {\r\n this.model.set(state);\r\n return this;\r\n },\r\n\r\n /**\r\n * Get state of the view. This should be overridden by subclasses to collect\r\n * state from their children views. By default, it return the view's model as\r\n * a JSON.\r\n * @memberof DeterministicView#\r\n * @returns {Object} - The current state of the view\r\n */\r\n getState() {\r\n return this.model.toJSON();\r\n },\r\n\r\n /**\r\n * Render the trunk of the view. This can be overridden by subclasses to add\r\n * customized behaviors before/after the DOM elements are generated, without\r\n * concerning about the children views. By default, it fills the `$el` with\r\n * the HTML generated from template\r\n * @memberof DeterministicView#\r\n * @returns {void}\r\n */\r\n renderTrunk() {\r\n this.$el.html(this.template({\r\n model: this.model.attributes,\r\n view: this,\r\n }));\r\n },\r\n\r\n /**\r\n * Render the view immediately.\r\n * @memberof DeterministicView#\r\n * @returns {DeterministicView} - The view itself\r\n */\r\n render() {\r\n this.renderEngine.renderView(this);\r\n return this;\r\n },\r\n}, {\r\n /**\r\n * The default render engine of `DeterministicView`\r\n * @memberof DeterministicView\r\n * @constant\r\n */\r\n defaultRenderEngine,\r\n});\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__10__;","// TODO: Task 904718: refactor to use explicit dependency for es6 syntax rather than global variable\r\n/* global Set */\r\n\r\nimport _ from 'underscore';\r\nimport { BaseView } from '@bingads-webui/base-view';\r\n\r\n/**\r\n * @class DeterministicViewEventEmitter\r\n * @extends Backbone.Events\r\n */\r\n\r\n/**\r\n * The event emitter inherit from BaseView, it's indeed the same object as\r\n * BaseView.eventEmitter\r\n * @memberof! DeterministicView\r\n * @type DeterministicViewEventEmitter\r\n */\r\nconst { eventEmitter } = BaseView;\r\n\r\nfunction replaceElement(elNew, elOld) {\r\n if (elOld && elOld.parentNode) {\r\n elOld.parentNode.replaceChild(elNew, elOld);\r\n }\r\n}\r\n\r\nfunction removeElement(el) {\r\n // ChildNode.remove() is not supported in IE\r\n // see: https://developer.mozilla.org/en-US/docs/Web/API/ChildNode/remove\r\n if (el && el.parentNode) {\r\n el.parentNode.removeChild(el);\r\n }\r\n}\r\n\r\n/**\r\n * DeterministicView render engine. It determines how a view is rendered, and\r\n * how the children views are aggregated with their parent.\r\n */\r\nexport class RenderEngine {\r\n constructor() {\r\n this.animationFrame = null;\r\n this.renderQueue = new Set();\r\n }\r\n\r\n /**\r\n * Render a view\r\n * @param {DeterministicView} view - The view to be rendered\r\n * @returns {void}\r\n */\r\n renderView(view) {\r\n /**\r\n * A view is going to be rendered\r\n * @event DeterministicViewEventEmitter#willRenderView\r\n * @type {DeterministicView}\r\n */\r\n eventEmitter.trigger('willRenderView', view);\r\n\r\n /**\r\n * Warn about potential bug\r\n * @event DeterministicViewEventEmitter#warning\r\n * @type {Error}\r\n */\r\n if (!BaseView.getParent(view) && !view.el.parentNode) {\r\n // All root `DeterministicView`s should have their `el` attached to DOM\r\n // tree. Otherwise, it could be an orphan view which never be attached.\r\n eventEmitter.trigger(\r\n 'warning',\r\n _.extend(new Error('Unexpected orphan view'), { view })\r\n );\r\n }\r\n\r\n // Detach all children views, to protect the child views from being damaged\r\n // by the DeterministicView#renderTrunk() method\r\n const elTemp = document.createElement('DIV');\r\n view.$el.children().appendTo(elTemp);\r\n\r\n // Render the view\r\n view.renderTrunk();\r\n\r\n // Index the placeholders\r\n const placeholders = {};\r\n\r\n view.$('[data-ref]').each((index, el) => {\r\n const { ref } = el.dataset;\r\n placeholders[ref] = el;\r\n if (!BaseView.getChild(view, ref)) {\r\n // Found a placeholder cannot be fulfilled with a child view. It usually\r\n // indicates a typo in the template\r\n eventEmitter.trigger(\r\n 'warning',\r\n _.extend(new Error('Dangling placeholder'), { view, ref })\r\n );\r\n }\r\n });\r\n\r\n // Attach the child views which have placeholders rendered\r\n // Remove the child views without placeholder\r\n _.each(BaseView.getChildrenRefs(view), (ref) => {\r\n const child = BaseView.getChild(view, ref);\r\n\r\n if (_.has(placeholders, ref)) {\r\n replaceElement(child.el, placeholders[ref]);\r\n } else {\r\n child.remove();\r\n }\r\n });\r\n\r\n removeElement(elTemp);\r\n\r\n /**\r\n * A view has been completely rendered\r\n * @event DeterministicViewEventEmitter#willRenderView\r\n * @type {DeterministicView}\r\n */\r\n eventEmitter.trigger('didRenderView', view);\r\n\r\n /**\r\n * The view has been completely rendered\r\n * @event DeterministicView#rendered\r\n */\r\n view.trigger('rendered');\r\n }\r\n\r\n /**\r\n * Render an animation frame\r\n * @private\r\n * @returns {void}\r\n */\r\n renderFrame() {\r\n const frame = this.animationFrame;\r\n const views = this.renderQueue;\r\n\r\n this.animationFrame = null;\r\n this.renderQueue = null;\r\n\r\n /**\r\n * A new animation frame will be rendered\r\n * @event DeterministicViewEventEmitter#willRenderFrame\r\n * @type {number}\r\n */\r\n eventEmitter.trigger('willRenderFrame', frame);\r\n\r\n views.forEach(view => BaseView.isValid(view) && this.renderView(view));\r\n\r\n /**\r\n * An animation frame has been rendered\r\n * @event DeterministicViewEventEmitter#didRenderFrame\r\n * @type {number}\r\n */\r\n eventEmitter.trigger('didRenderFrame', frame);\r\n }\r\n\r\n /**\r\n * Schedule rendering a view in next animation frame\r\n * @param {DeterministicView} view - The view to render\r\n * @returns {void}\r\n */\r\n scheduleRenderView(view) {\r\n if (view.options && view.options.renderInSync) {\r\n // Allow some views render without requestAnimationFrame,\r\n // so that they can be rendered in the background tab.\r\n this.renderView(view);\r\n return;\r\n }\r\n\r\n if (!this.renderQueue) {\r\n this.renderQueue = new Set();\r\n }\r\n\r\n this.renderQueue.add(view);\r\n\r\n if (!this.animationFrame) {\r\n this.animationFrame = requestAnimationFrame(this.renderFrame.bind(this));\r\n }\r\n }\r\n}\r\n","/**\r\n * @file recover the focus after views being updated\r\n */\r\nimport { DeterministicView } from './deterministic-view';\r\n\r\n// The focus state, keep track of the focused view and element\r\nconst focus = {\r\n // The view having focus\r\n view: null,\r\n\r\n // The data-focus-id of the focused element\r\n id: null,\r\n};\r\n\r\n// Before rendering a new animation frame, update the focus state.\r\nDeterministicView.eventEmitter.on('willRenderFrame', () => {\r\n const { activeElement } = document;\r\n\r\n focus.view = DeterministicView.getViewForElement(activeElement);\r\n focus.id = (activeElement && activeElement.dataset && activeElement.dataset.focusId) || null;\r\n});\r\n\r\n// After rendering an animation frame, locate the element described by the focus\r\n// state, then activate it\r\nDeterministicView.eventEmitter.on('didRenderFrame', () => {\r\n if (DeterministicView.isValid(focus.view) && focus.id) {\r\n const selFocus = `[data-focus-id=${JSON.stringify(focus.id)}]`;\r\n const elFocus = focus.view.$(selFocus).get(0);\r\n\r\n if (elFocus && elFocus !== document.activeElement) {\r\n elFocus.focus();\r\n }\r\n }\r\n});\r\n","\r\n\r\nexport { DeterministicWrapperView } from './src/deterministic-wrapper-view';\r\nexport { DeterministicViewForHtml } from './src/deterministic-wrapper-for-html';\r\nexport { DeterministicViewForBackBoneView } from './src/deterministic-wrapper-for-backbone-view';\r\n","import _ from 'underscore';\r\nimport { DeterministicView } from '@bingads-webui/deterministic-view';\r\n\r\n/**\r\n * @typedef {Object} DeterministicWrapperViewState\r\n * @property describe your properties in the state here\r\n */\r\n\r\nexport class DeterministicWrapperView extends DeterministicView {\r\n initialize(options) {\r\n this.view = this.viewFactory(options);\r\n this.listenTo(this.view, 'all', this.trigger);\r\n this.rendered = false;\r\n }\r\n\r\n viewFactory(/* options */) {\r\n throw new Error('Unimplemented view factory');\r\n }\r\n\r\n renderTrunk() {\r\n if (!this.rendered) {\r\n this.rendered = true;\r\n this.view.render();\r\n }\r\n\r\n this.$el.append(this.view.$el);\r\n return this;\r\n }\r\n\r\n remove() {\r\n this.view.remove();\r\n return super.remove();\r\n }\r\n\r\n /**\r\n * Set state of the view.\r\n * Since this is a wrapper view, the state should be propagated to the wrapped view.\r\n * @param {Object} state - The new state\r\n * @returns {DeterministicWrapperView} - The view itself\r\n */\r\n setState(state) {\r\n super.setState(state);\r\n if (this.view && _.isFunction(this.view.setState)) {\r\n this.view.setState(state);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Class name of the root element\r\n * @type {string}\r\n * @override\r\n */\r\n get className() { return 'deterministic-wrapper-view'; }\r\n}\r\n","import { DeterministicView } from '@bingads-webui/deterministic-view';\r\n\r\n/**\r\n * Deterministic view for html content,\r\n * generate deterministic view for input backbone view,\r\n * so it can be used in the deterministic-only packages\r\n */\r\nexport class DeterministicViewForHtml extends DeterministicView {\r\n initialize({ html }) {\r\n this.setState({ html });\r\n }\r\n\r\n template() {\r\n return this.model.get('html');\r\n }\r\n}\r\n","import { DeterministicWrapperView } from './deterministic-wrapper-view';\r\n\r\n\r\n/**\r\n * Deterministic wrapper view for backbone view,\r\n * generate deterministic view for input backbone view,\r\n * so that it can be used in the deterministic-only packages\r\n */\r\nexport class DeterministicViewForBackBoneView extends DeterministicWrapperView {\r\n viewFactory({ view }) {\r\n return view;\r\n }\r\n}\r\n","\r\n\r\nexport { Dialog } from './src/index';\r\nexport { decorate } from './src/dialog-decorator/dialog-decorator';\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport 'bootstrap';\r\nimport Backbone from 'backbone';\r\nimport template from './template/index.pug';\r\n\r\n/**\r\n * a button of dialog\r\n * @typedef {object} button\r\n * @param {string} text - text of button\r\n * @param {string} name - name of button, will trigger event 'click button.name' when click button\r\n * @param {string} class - customize class of button\r\n */\r\n\r\nexport class Dialog extends Backbone.View {\r\n /**\r\n * override initialize of backbone view\r\n * @param {object} options - options\r\n * @param {string} options.id - set custom dialog id. If not set, a unique value will be set.\r\n * @param {string} options.backdrop - controls presence of a backdrop. Allowed values: true\r\n * , false (no backdrop), 'static'(default) - backdrop is present but modal window is not\r\n * closed when clicking outside of the modal window.\r\n * @param {string} options.keyboard - Allowed values: false(default), true - closes the modal\r\n * when escape key is pressed\r\n * @param {boolean} options.showHeader - flag for whether or not to show .modal-header\r\n * @param {boolean} options.showBody - flag for whether or not to show .modal-body for scenarios\r\n * where contentView will never be set.\r\n * @returns {undefined} - no return\r\n */\r\n initialize({\r\n // eslint-disable-next-line no-unused-vars\r\n id, // it will be auto-set by backbone\r\n backdrop,\r\n keyboard,\r\n showHeader = true,\r\n showBody = true,\r\n showCloseButton = true,\r\n } = {}) {\r\n this.contentView = null;\r\n this.backdrop = _.isBoolean(backdrop) ? backdrop : 'static';\r\n this.keyboard = _.isBoolean(keyboard) ? keyboard : false;\r\n this.showBody = showBody;\r\n this.showHeader = showHeader;\r\n this.showCloseButton = showCloseButton;\r\n }\r\n\r\n /**\r\n * define events and correspond handler in Dialog\r\n */\r\n get events() {\r\n return {\r\n 'click .modal-footer button': 'buttonClicked',\r\n 'hidden.bs.modal': 'remove',\r\n };\r\n }\r\n\r\n /**\r\n * dialog Id\r\n * @param {string} dialogId - set dialog's id\r\n */\r\n set id(dialogId) {\r\n if (dialogId) {\r\n this.dialogId = dialogId;\r\n }\r\n }\r\n\r\n get id() {\r\n if (!this.dialogId) {\r\n this.dialogId = _.uniqueId('dialog-');\r\n }\r\n return this.dialogId;\r\n }\r\n\r\n /**\r\n * handle click button event\r\n * @param {Event} e - jquery event\r\n * @returns {Undefined} -\r\n */\r\n buttonClicked(e) {\r\n const name = $(e.target).attr('button-name');\r\n this.trigger('clickedButton', name);\r\n }\r\n\r\n /**\r\n * set content of dialog\r\n * @param {Backbone.View} view - view instance\r\n * @returns {Dialog} - return Dialog view itself\r\n */\r\n setContent(view) {\r\n if (this.contentView) {\r\n this.contentView.remove();\r\n }\r\n this.contentView = view;\r\n\r\n if (this.el.parentNode) {\r\n this.contentView.render();\r\n this.$('.modal-body').append(this.contentView.el);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * set state of view\r\n * @param {object} state - state of dialog\r\n * @param {string} state.title - title of dialog\r\n * @param {button[]} state.buttons - button list of dialog\r\n * @returns {Dialog} - return Dialog view itself\r\n */\r\n setState(state) {\r\n this.title = state.title;\r\n this.buttons = state.buttons;\r\n return this;\r\n }\r\n\r\n render() {\r\n this.$el.html(template({\r\n title: this.title,\r\n id: this.id,\r\n buttons: this.buttons || [],\r\n showHeader: this.showHeader && (this.title || this.showCloseButton),\r\n showCloseButton: this.showCloseButton,\r\n showBody: this.showBody,\r\n }));\r\n\r\n if (this.contentView) {\r\n this.contentView.render();\r\n this.$('.modal-body').append(this.contentView.el);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * show dialog\r\n * @returns {Dialog} - return dialog itself\r\n */\r\n show() {\r\n this.render();\r\n\r\n this.$('.modal').modal({\r\n backdrop: this.backdrop,\r\n keyboard: this.keyboard,\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * remove view in dialog and itself\r\n * @returns {Dialog} return itself\r\n */\r\n remove() {\r\n this.trigger('willClose');\r\n if (this.contentView) {\r\n this.contentView.remove();\r\n this.contentView = null;\r\n }\r\n this.$('.modal').modal('hide');\r\n return super.remove();\r\n }\r\n}\r\n","var pug = require(\"!../../../../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (buttons, id, showBody, showCloseButton, showHeader, title) {pug_html = pug_html + \"\\u003Cdiv\" + (\" class=\\\"modal\\\"\"+\" tabindex=\\\"-1\\\" role=\\\"dialog\\\"\"+pug.attr(\"aria-labelledby\", 'shared-component-dialog-title-' + id, true, true)) + \"\\u003E\\u003Cdiv class=\\\"modal-dialog\\\"\\u003E\\u003Cdiv class=\\\"modal-content\\\"\\u003E\";\nif (showHeader) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"modal-header\\\"\\u003E\";\nif (showCloseButton) {\npug_html = pug_html + \"\\u003Cbutton class=\\\"close\\\" data-dismiss=\\\"modal\\\" aria-label=\\\"Close\\\"\\u003E\\u003Cspan aria-hidden=\\\"true\\\"\\u003E×\\u003C\\u002Fspan\\u003E\\u003C\\u002Fbutton\\u003E\";\n}\nif (title) {\npug_html = pug_html + \"\\u003Ch4\" + (\" class=\\\"modal-title\\\"\"+pug.attr(\"id\", 'shared-component-dialog-title-' + id, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = title) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh4\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"modal-empty-header\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nif (showBody) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"modal-body\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nif (buttons.length > 0) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"modal-footer\\\"\\u003E\";\n// iterate buttons\n;(function(){\n var $$obj = buttons;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var button = $$obj[pug_index0];\nvar cls = button.class || ''\npug_html = pug_html + \"\\u003Cbutton\" + (pug.attr(\"class\", pug.classes([\"btn\",\"btn-default\",cls], [false,false,true]), false, true)+\" type=\\\"button\\\"\"+pug.attr(\"button-name\", button.name, true, true)+pug.attr(\"disabled\", button.disabled, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = button.text) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var button = $$obj[pug_index0];\nvar cls = button.class || ''\npug_html = pug_html + \"\\u003Cbutton\" + (pug.attr(\"class\", pug.classes([\"btn\",\"btn-default\",cls], [false,false,true]), false, true)+\" type=\\\"button\\\"\"+pug.attr(\"button-name\", button.name, true, true)+pug.attr(\"disabled\", button.disabled, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = button.text) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"buttons\" in locals_for_with?locals_for_with.buttons:typeof buttons!==\"undefined\"?buttons:undefined,\"id\" in locals_for_with?locals_for_with.id:typeof id!==\"undefined\"?id:undefined,\"showBody\" in locals_for_with?locals_for_with.showBody:typeof showBody!==\"undefined\"?showBody:undefined,\"showCloseButton\" in locals_for_with?locals_for_with.showCloseButton:typeof showCloseButton!==\"undefined\"?showCloseButton:undefined,\"showHeader\" in locals_for_with?locals_for_with.showHeader:typeof showHeader!==\"undefined\"?showHeader:undefined,\"title\" in locals_for_with?locals_for_with.title:typeof title!==\"undefined\"?title:undefined));;return pug_html;};\nmodule.exports = template;","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport '@bingads-webui/kendo/kendo.window';\r\n\r\nconst windowDefaults = {\r\n modal: true,\r\n maxWidth: 600,\r\n resizable: false,\r\n visible: false,\r\n title: '',\r\n};\r\n\r\nfunction applyIfExists(func, context, args) {\r\n if (_.isFunction(func)) {\r\n const parameters = _.toArray({ 0: args });\r\n func.apply(context, parameters);\r\n }\r\n}\r\n\r\n/**\r\n * decorate view function\r\n * @param {object} view - the decorated view\r\n * @param {Object} dialogOptions - dialog options\r\n * @returns {Object} DecoratedView - view after decorated\r\n */\r\nexport function decorate(view, dialogOptions) {\r\n class DecoratedView extends view {\r\n initialize(options) {\r\n this.options = options;\r\n this.destroy = this.remove;\r\n if (!_.has(view.prototype, 'render')) {\r\n this.show();\r\n }\r\n applyIfExists(view.prototype.initialize, this, this.options);\r\n }\r\n\r\n render() {\r\n this.show();\r\n applyIfExists(view.prototype.render, this, this.options);\r\n this.setPosition();\r\n\r\n return this;\r\n }\r\n\r\n setPosition() {\r\n if (this.dialogOptions.position === 'center') {\r\n this.center();\r\n }\r\n }\r\n\r\n show() {\r\n const options = _.defaults({\r\n title: this.options.title,\r\n autoFocus: true,\r\n animation: false,\r\n }, this.options.dialogOptions, dialogOptions, windowDefaults);\r\n\r\n if (!this.window) {\r\n this.window = this.$el\r\n .kendoWindow(options)\r\n .data('kendoWindow');\r\n }\r\n\r\n this.window.wrapper.attr('role', 'dialog');\r\n this.window.wrapper.attr('aria-label', options.title);\r\n this.window.wrapper.addClass('legacy-kendo-ui-dialog');\r\n this.window.center();\r\n this.window.open();\r\n\r\n const title = $('.k-window-title', this.window.wrapper);\r\n if (options.titleHeadingLevel) {\r\n title.attr({\r\n role: 'heading',\r\n 'aria-level': options.titleHeadingLevel,\r\n });\r\n }\r\n\r\n const closeButton = $('.k-window-action.k-link', this.window.wrapper);\r\n closeButton.addClass('clickable');\r\n closeButton.attr('aria-label', options.closeButtonAriaLabel);\r\n\r\n const closeIcon = $('span.k-icon.k-i-close', this.window.wrapper);\r\n closeIcon.html('').click(_.bind(this.remove, this));\r\n\r\n this.window.element.attr('tabindex', -1);\r\n\r\n _.each(options.dialogClasses, (className) => {\r\n this.window.element.addClass(className);\r\n }, this);\r\n\r\n if (options.zindex) {\r\n this.$el.css('z-index', options.zindex);\r\n }\r\n\r\n if (!_.isEmpty(options.popupFront)) {\r\n const element = $(options.popupFront);\r\n if (element && element.length > 0) {\r\n const topzindex = parseInt(element.css('z-index'), 10) + 2;\r\n const kwindow = $('.k-window');\r\n const koverlay = $('.k-overlay');\r\n\r\n if (kwindow && kwindow.length > 0) {\r\n kwindow.css('z-index', topzindex);\r\n }\r\n if (koverlay && koverlay.length > 0) {\r\n koverlay.css('z-index', topzindex - 1);\r\n }\r\n }\r\n }\r\n\r\n this.dialogOptions = options;\r\n\r\n return this;\r\n }\r\n\r\n center() {\r\n if (this.window) {\r\n this.window.center();\r\n }\r\n return this;\r\n }\r\n\r\n hide() {\r\n if (this.window) {\r\n this.window.close();\r\n }\r\n return this;\r\n }\r\n\r\n remove(e) {\r\n if (e) {\r\n e.preventDefault();\r\n }\r\n\r\n applyIfExists(view.prototype.remove, this, this.options);\r\n applyIfExists(view.prototype.destroy, this, this.options);\r\n\r\n if (this.window) {\r\n this.window.close();\r\n this.window.destroy();\r\n this.window = null;\r\n }\r\n }\r\n }\r\n return DecoratedView;\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__268__;","module.exports = __WEBPACK_EXTERNAL_MODULE__34__;","module.exports = __WEBPACK_EXTERNAL_MODULE__43__;","module.exports = __WEBPACK_EXTERNAL_MODULE__10__;","import { iframeDownload, useIframeDownload, withIframeDownload } from './src/iframe-download';\r\nimport { download } from './src/index';\r\nimport { downloadify, downloadifyBlob } from './src/downloadify';\r\n\r\n\r\nexport {\r\n iframeDownload,\r\n useIframeDownload,\r\n withIframeDownload,\r\n download,\r\n downloadifyBlob,\r\n downloadify\r\n};\r\n","import React, { useContext } from 'react';\r\nimport { InstrumentationContext } from '@bingads-webui-react/hoc-with-instrumentation';\r\n\r\nlet ifm;\r\n\r\n/**\r\n * iframeDownload\r\n * When to use:\r\n * the resource to download is cross-origin without CORS header\r\n * @param {string} url - url to download\r\n * @param {string} statusHandler - callback function to check file is loaded\r\n * @returns {void}\r\n */\r\nexport function iframeDownload(url, statusHandler) {\r\n if (!ifm) {\r\n ifm = document.createElement('iframe');\r\n ifm.style.display = 'none';\r\n if (statusHandler) {\r\n const timer = setInterval(() => {\r\n try {\r\n const iframeDoc = ifm.contentDocument || ifm.contentWindow.document;\r\n if (iframeDoc.readyState === 'complete') {\r\n clearInterval(timer);\r\n statusHandler(iframeDoc.readyState);\r\n }\r\n clearInterval(timer);\r\n } catch (e) {\r\n clearInterval(timer);\r\n statusHandler('fail', e);\r\n }\r\n }, 500);\r\n }\r\n\r\n document.body.appendChild(ifm);\r\n }\r\n ifm.src = url;\r\n}\r\n\r\nexport function useIframeDownload() {\r\n const instrumentation = useContext(InstrumentationContext);\r\n const logger = instrumentation.createScenarioAndActivity({\r\n scenarioName: 'iframeDownloadScenario',\r\n activityName: 'iframeDownloadActivity',\r\n }).activity;\r\n\r\n return function iframeDownloadWithMonitoring(url) {\r\n iframeDownload(url, (status, err) => {\r\n if (status === 'complete') {\r\n logger.trace(`file download completed.status:${status},URL:${url}`);\r\n } else {\r\n logger.error(`file download failed.status:${status},URL:${url} error:${JSON.stringify(err)}`);\r\n }\r\n });\r\n };\r\n}\r\n\r\nexport function withIframeDownload(Comp) {\r\n return function WrappedComp(props) {\r\n const iframeDownloadWithMonitoring = useIframeDownload();\r\n return ();\r\n };\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__32__;","import Promise from 'bluebird';\r\nimport URI from 'urijs';\r\nimport { downloadifyBlob } from './downloadify';\r\n\r\n/**\r\n * download\r\n * When to use:\r\n * the resource to download is on the same origin, or with CORS header\r\n * Why to use:\r\n * If a resource has header Content-Type: text/csv, Safari would open a new tab for the data\r\n * instead of download it. This approach aligned download to downloadify which works fine.\r\n * @param {string} url - url to download\r\n * @param {string} fileName - name of the resource to download\r\n * @returns {promise} - resolve when download finishes\r\n */\r\nexport function download(url, fileName = URI(url).filename()) {\r\n return new Promise((resolve) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open('GET', url);\r\n xhr.responseType = 'blob';\r\n xhr.onload = () => {\r\n downloadifyBlob(xhr.response, fileName);\r\n resolve();\r\n };\r\n xhr.send();\r\n });\r\n}\r\n","function downloadInIEBrowser(fileName, blob) {\r\n navigator.msSaveBlob(blob, fileName);\r\n}\r\n\r\nfunction downloadInOtherBrowsers(fileName, blob) {\r\n const downloadLink = window.document.createElement('a');\r\n downloadLink.download = fileName;\r\n downloadLink.href = window.URL.createObjectURL(blob);\r\n document.body.appendChild(downloadLink);\r\n downloadLink.click();\r\n document.body.removeChild(downloadLink);\r\n}\r\n\r\nexport function downloadifyBlob(blob, fileName) {\r\n if (navigator.msSaveBlob) {\r\n downloadInIEBrowser(fileName, blob);\r\n } else {\r\n downloadInOtherBrowsers(fileName, blob);\r\n }\r\n}\r\n\r\nexport function downloadify(fileName, content, type) {\r\n const blob = new Blob([content], type);\r\n downloadifyBlob(blob, fileName);\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__178__;","\r\n\r\nexport { DraggableList } from './src/draggable-list';\r\n","import _ from 'underscore';\r\nimport ko from 'knockout';\r\nimport { KnockoutView } from '@bingads-webui/knockout-view';\r\nimport { helpers } from '@bingads-webui/deterministic-view';\r\nimport { restoreScrollBarPosition } from '@bingads-webui/restore-scroll-bar';\r\n\r\nimport DraggableListTemplate from './template.pug';\r\n\r\nconst { updateView, ensureChildView } = helpers;\r\n\r\nconst KEYS = {\r\n SpaceBar: ' ',\r\n ArrowUp: 'ArrowUp',\r\n ArrowDown: 'ArrowDown',\r\n ArrowRight: 'ArrowRight',\r\n};\r\n\r\nconst scrollPixelSpeed = 3;\r\n\r\nfunction rotate(contents, indexFrom, indexTo, tempState = false) {\r\n const contentsToUse = contents || [];\r\n const indexFromToUse = indexFrom || 0;\r\n const indexToToUse = indexTo || 0;\r\n const content = _.defaults({\r\n tempState,\r\n }, contentsToUse[indexFromToUse]);\r\n\r\n if (indexFromToUse < indexToToUse) {\r\n return _.flatten([\r\n contentsToUse.slice(0, indexFromToUse),\r\n contentsToUse.slice(indexFromToUse + 1, indexToToUse + 1),\r\n content,\r\n contentsToUse.slice(indexToToUse + 1),\r\n ]);\r\n }\r\n\r\n if (indexFromToUse > indexToToUse) {\r\n return _.flatten([\r\n contentsToUse.slice(0, indexToToUse),\r\n content,\r\n contentsToUse.slice(indexToToUse, indexFromToUse),\r\n contentsToUse.slice(indexFromToUse + 1),\r\n ]);\r\n }\r\n\r\n return contents;\r\n}\r\n\r\nclass DraggableListViewModel {\r\n constructor() {\r\n this.draggingTo = ko.observable(-1);\r\n }\r\n}\r\n\r\n/**\r\n * The draggable list component\r\n *\r\n * @class DraggableList\r\n * @param {Object} options - DraggableList view config\r\n * @param {Object} options.itemViewFactory -\r\n * The factory method or constructor of the draggable list child view\r\n * - If the prototype of itemViewFactory is instance of DeterministicView, treat\r\n * it as a construstor.\r\n * - Otherwise, treat it as a factory method.\r\n * @param {fuction} options.afterDrop - a optional callback function to run after dropping\r\n * @param {fuction} options.getAnnouncement - an optional callback function to get announcement\r\n * for a11y reading\r\n */\r\nexport class DraggableList extends KnockoutView {\r\n initialize(options) {\r\n super.initialize(options);\r\n this.uniqueId = _.uniqueId('draggable-list-');\r\n this.itemViewFactory = options.itemViewFactory;\r\n this.afterDrop = options.afterDrop || _.noop;\r\n this.ariaLabel = options.ariaLabel;\r\n this.getAnnouncement = options.getAnnouncement || _.noop;\r\n restoreScrollBarPosition(this, '.draggable-list');\r\n this.documentDragoverScrollCallback = this.documentDragoverScrollCallback.bind(this);\r\n }\r\n\r\n get ViewModel() { return DraggableListViewModel; }\r\n\r\n get className() {\r\n return 'draggable-list-view';\r\n }\r\n\r\n get template() { return DraggableListTemplate; }\r\n\r\n get events() {\r\n return {\r\n 'dragover .draggable-list__item-draggable': 'onDragover',\r\n 'dragstart .draggable-list__item-draggable': 'onDragstart',\r\n 'drop .draggable-list__item-draggable': 'onDrop',\r\n 'dragend .draggable-list__item-draggable': 'onDragEnd',\r\n 'mousedown .draggable-list__item-draggable': 'onMouseDown',\r\n 'keydown .draggable-list__item-draggable': 'onKeyDown',\r\n 'focusRequestFromChildren .draggable-list__item-draggable': 'onFocusRequestFromChildren',\r\n };\r\n }\r\n\r\n setState({\r\n lockedItems = [],\r\n draggableItems = [],\r\n draggingTo = -1,\r\n } = {}) {\r\n _.each(lockedItems, (config, index) => {\r\n ensureChildView(this, `locked-list-item-${index}`, this.itemViewFactory).setState(config);\r\n });\r\n _.each(draggableItems, (config, index) => {\r\n ensureChildView(this, `draggable-list-item-${index}`, this.itemViewFactory).setState(config);\r\n });\r\n\r\n this.model.set({\r\n lockedItemsLength: lockedItems.length,\r\n draggableItemsLength: draggableItems.length,\r\n uniqueId: this.uniqueId,\r\n });\r\n\r\n this.viewModel.draggingTo(draggingTo);\r\n\r\n return this;\r\n }\r\n\r\n getState() {\r\n const lockedItemsLength = this.model.get('lockedItemsLength');\r\n const draggableItemsLength = this.model.get('draggableItemsLength');\r\n\r\n const lockedItems = _.times(lockedItemsLength, index => this.getChild(`locked-list-item-${index}`).getState());\r\n const draggableItems = _.times(draggableItemsLength, index => this.getChild(`draggable-list-item-${index}`).getState());\r\n\r\n return {\r\n lockedItems,\r\n draggableItems,\r\n };\r\n }\r\n\r\n /**\r\n * When dragging item out of the list, the list should scroll if possiable.\r\n * detect the relative position of mouse and the list.\r\n *\r\n * @param {DragEvent} e - drag event\r\n * @returns {void}\r\n */\r\n documentDragoverScrollCallback(e) {\r\n const listElement = this.el.querySelector('.draggable-list');\r\n const domRect = listElement.getBoundingClientRect();\r\n\r\n const mousePageY = e.pageY;\r\n const scrollTop = window.scrollY || document.documentElement.scrollTop;\r\n const elementPageTop = domRect.top + scrollTop;\r\n const elementPageBottom = domRect.bottom + scrollTop;\r\n\r\n if (mousePageY <= elementPageTop) {\r\n this.scrollStart({ top: -scrollPixelSpeed });\r\n } else if (mousePageY >= elementPageBottom) {\r\n this.scrollStart({ top: scrollPixelSpeed });\r\n } else {\r\n this.scrollStop();\r\n }\r\n }\r\n\r\n onDragstart(e) {\r\n if (e.originalEvent.dataTransfer) {\r\n // firefox need to setData to make drag work\r\n e.originalEvent.dataTransfer.setData('Text', `item:${e.target.dataset.index}` || 'item:0');\r\n }\r\n\r\n this.draggableItems = this.getState().draggableItems;\r\n this.indexFrom = parseInt(e.target.dataset.index, 10);\r\n this.scrollDetectStart();\r\n }\r\n\r\n get isDragging() {\r\n return this.indexFrom !== undefined;\r\n }\r\n\r\n onDragover(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n const targetItem = this.$(e.target).closest(`ul#${this.uniqueId} > li.draggable-list__item-draggable`)[0];\r\n if (targetItem) {\r\n const indexTo = parseInt(targetItem.dataset.index, 10);\r\n updateView(this, {\r\n draggableItems: rotate(this.draggableItems, this.indexFrom, indexTo, true),\r\n draggingTo: indexTo,\r\n });\r\n }\r\n }\r\n\r\n onDrop(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n const targetItem = this.$(e.target).closest(`ul#${this.uniqueId} > li.draggable-list__item-draggable`)[0];\r\n if (targetItem) {\r\n const indexTo = parseInt(targetItem.dataset.index, 10);\r\n updateView(this, {\r\n draggableItems: rotate(this.draggableItems, this.indexFrom, indexTo),\r\n });\r\n this.moveFocusTo(indexTo, this.indexFrom);\r\n }\r\n\r\n delete this.indexFrom;\r\n delete this.draggableItems;\r\n }\r\n\r\n onDragEnd(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.viewModel.draggingTo(-1);\r\n this.scrollDetectStop();\r\n this.afterDrop();\r\n }\r\n\r\n onMouseDown(e) {\r\n const targetItem = this.$(e.currentTarget);\r\n\r\n if (targetItem.attr('tabindex') !== '0') {\r\n this.indexFrom = -1;\r\n\r\n this.$(`ul#${this.uniqueId} > li.draggable-list__item-draggable[class*='selected']`).removeClass('selected').removeAttr('aria-selected');\r\n this.$(`ul#${this.uniqueId} > li.draggable-list__item-draggable[tabindex='0']`).attr('tabindex', '-1');\r\n targetItem.attr('tabindex', '0');\r\n }\r\n }\r\n\r\n /**\r\n * control list to scroll\r\n *\r\n * @param {ScrollToOptions} options scroll options\r\n * @returns {void}\r\n */\r\n scroll(options) {\r\n const listElement = this.el.querySelector('.draggable-list');\r\n listElement.scrollBy(options);\r\n }\r\n\r\n /**\r\n * start scroll for every `intervalMilliSeconds` ms if no scrolling.\r\n *\r\n * @param {ScrollToOptions} options scroll options\r\n * @param {number} intervalMilliSecond how long before next scroll, default is 16\r\n * @returns {void}\r\n */\r\n scrollStart(options, intervalMilliSecond = 16) {\r\n if (this.scrollTimerId !== undefined) {\r\n return;\r\n }\r\n const timerId = setInterval(() => {\r\n this.scroll(options);\r\n }, intervalMilliSecond);\r\n this.scrollTimerId = timerId;\r\n }\r\n\r\n scrollStop() {\r\n if (this.scrollTimerId) {\r\n clearInterval(this.scrollTimerId);\r\n this.scrollTimerId = undefined;\r\n }\r\n }\r\n\r\n scrollDetectStart() {\r\n document.addEventListener('dragover', this.documentDragoverScrollCallback);\r\n }\r\n\r\n scrollDetectStop() {\r\n this.scrollStop();\r\n document.removeEventListener('dragover', this.documentDragoverScrollCallback);\r\n }\r\n\r\n /**\r\n * If children bubble this event, focus on its parent list-item.\r\n *\r\n * @param {KeyboardEvent} e - custom event\r\n * @returns {void}\r\n */\r\n onKeyDown(e) {\r\n if (e.target !== e.currentTarget) {\r\n return;\r\n }\r\n\r\n const acceptableKeysReg = new RegExp(`(${Object.values(KEYS).join('|')})`);\r\n const triggerKey = e.key;\r\n if (!acceptableKeysReg.test(triggerKey)) {\r\n return;\r\n }\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n const targetItem = this.$(e.target);\r\n const index = parseInt(e.target.dataset.index, 10);\r\n switch (triggerKey) {\r\n case KEYS.SpaceBar:\r\n if (targetItem.hasClass('selected')) {\r\n targetItem.removeClass('selected');\r\n targetItem.removeAttr('aria-selected');\r\n _.defer(() => {\r\n this.announce({\r\n action: 'DropItem',\r\n positionFrom: this.indexFrom,\r\n positionTo: index,\r\n });\r\n this.indexFrom = -1;\r\n });\r\n } else {\r\n this.indexFrom = index;\r\n targetItem.addClass('selected');\r\n targetItem.attr('aria-selected', 'true');\r\n _.defer(() => this.announce({\r\n action: 'LiftItem',\r\n positionFrom: this.indexFrom,\r\n }));\r\n }\r\n break;\r\n case KEYS.ArrowDown:\r\n this.draggableItems = this.getState().draggableItems;\r\n if (index < this.draggableItems.length - 1) {\r\n if (this.indexFrom >= 0) {\r\n updateView(this, {\r\n draggableItems: rotate(this.draggableItems, index, index + 1),\r\n });\r\n this.moveFocusTo(index + 1, index, true);\r\n _.defer(() => this.announce({\r\n action: 'MoveItem',\r\n positionFrom: this.indexFrom,\r\n positionTo: index + 1,\r\n }));\r\n } else {\r\n this.moveFocusTo(index + 1, index);\r\n }\r\n }\r\n break;\r\n case KEYS.ArrowUp:\r\n this.draggableItems = this.getState().draggableItems;\r\n if (index > 0) {\r\n if (this.indexFrom >= 0) {\r\n updateView(this, {\r\n draggableItems: rotate(this.draggableItems, index, index - 1),\r\n });\r\n this.moveFocusTo(index - 1, index, true);\r\n _.defer(() => this.announce({\r\n action: 'MoveItem',\r\n positionFrom: this.indexFrom,\r\n positionTo: index - 1,\r\n }));\r\n } else {\r\n this.moveFocusTo(index - 1, index);\r\n }\r\n }\r\n break;\r\n case KEYS.ArrowRight:\r\n this.getListItems()\r\n .eq(index)\r\n .find('.focusable')\r\n .trigger('focus');\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * If children bubble this event, focus on its parent list-item.\r\n *\r\n * @param {Event} e - custom event\r\n * @returns {void}\r\n */\r\n onFocusRequestFromChildren(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n const index = parseInt(e.currentTarget.dataset.index, 10);\r\n this.moveFocusTo(index);\r\n }\r\n\r\n getListItems() {\r\n return this.$(`ul#${this.uniqueId} > li.draggable-list__item-draggable`);\r\n }\r\n\r\n moveFocusTo(indexTo, indexFrom, selected = false) {\r\n const items = this.getListItems();\r\n if (indexFrom !== undefined) {\r\n const itemFrom = items.eq(indexFrom);\r\n itemFrom.attr('tabindex', '-1');\r\n if (selected) {\r\n itemFrom.removeClass('selected');\r\n itemFrom.removeAttr('aria-selected');\r\n }\r\n }\r\n const itemTo = items.eq(indexTo);\r\n if (selected) {\r\n itemTo.addClass('selected');\r\n itemTo.attr('aria-selected', 'true');\r\n }\r\n itemTo.attr('tabindex', '0');\r\n itemTo.trigger('focus');\r\n }\r\n\r\n announce({\r\n action,\r\n positionFrom,\r\n positionTo,\r\n }) {\r\n const liveRegion = this.$(`ul#${this.uniqueId} + .live-region`);\r\n liveRegion.text(this.getAnnouncement({\r\n action,\r\n positionFrom,\r\n positionTo,\r\n }));\r\n }\r\n}\r\n","var pug = require(\"!../../../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model, view) {pug_html = pug_html + \"\\u003Cul\" + (\" class=\\\"draggable-list\\\"\"+pug.attr(\"id\", model.uniqueId, true, true)+\" role=\\\"listbox\\\"\"+pug.attr(\"aria-label\", view.ariaLabel, true, true)) + \"\\u003E\";\nvar index = 0;\nwhile (index < model.lockedItemsLength) {\npug_html = pug_html + \"\\u003Cli class=\\\"draggable-list-item draggable-list__item-locked\\\" role=\\\"option\\\"\\u003E\\u003Cdiv\" + (pug.attr(\"data-ref\", `locked-list-item-${index++}`, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\";\n}\nindex = 0;\nwhile (index < model.draggableItemsLength) {\npug_html = pug_html + \"\\u003Cli\" + (\" class=\\\"draggable-list-item draggable-list__item-draggable\\\"\"+\" draggable=\\\"true\\\"\"+pug.attr(\"data-index\", index, true, true)+pug.attr(\"tabindex\", (index === 0 ? 0 : -1), true, true)+pug.attr(\"data-bind\", `css: { \"draggable-list__item-preview\": draggingTo() === ${index}}`, true, true)+\" role=\\\"option\\\"\") + \"\\u003E\\u003Cdiv\" + (pug.attr(\"data-ref\", `draggable-list-item-${index++}`, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Ful\\u003E\\u003Cdiv class=\\\"live-region sr-only\\\" role=\\\"status\\\" aria-live=\\\"assertive\\\" aria-atomic=\\\"true\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","module.exports = __WEBPACK_EXTERNAL_MODULE__61__;","module.exports = __WEBPACK_EXTERNAL_MODULE__81__;","export * from './src/index';\r\n","export * from './bulk-upsert';\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport {\r\n hasOwnProperty,\r\n defineConstProperty,\r\n} from '@bingads-webui/reflection';\r\nimport {\r\n serialize,\r\n parse,\r\n populateIds,\r\n hasReadOnlyFields,\r\n getAttrsToSerialize,\r\n extractEntityErrors,\r\n buildDestroyObject,\r\n} from '@bingads-webui/odata-bulk-upsert';\r\nimport { odata } from '@bingads-webui/http-util';\r\nimport { merge } from '@bingads-webui-universal/primitive-utilities';\r\nimport { join } from '@bingads-webui/url-util';\r\nimport { getSkipEntityCallPaths } from './constants';\r\n\r\nfunction getCast(options) {\r\n return (options && !_.isEmpty(options.cast)) ? (`/${options.cast}`) : '';\r\n}\r\n\r\nfunction getParent(options) {\r\n return (options && !_.isEmpty(options.parent)) ? (`${options.parent}/`) : '';\r\n}\r\n\r\nexport function odataBulkUpsertPlugin(edm, {\r\n ServiceRoot,\r\n AccountID,\r\n AdvertiserCustomerID,\r\n bulkUpsertSchema,\r\n} = {}, {\r\n processOptions = _.identity,\r\n} = {}) {\r\n if (hasOwnProperty(edm, 'odata.bulkUpsert')) {\r\n return;\r\n }\r\n\r\n function getUrl({ path, options }) {\r\n if (path) {\r\n const prefix = path.match(/\\/Customers\\([0-9]+\\)\\/Accounts\\([0-9]+\\)/);\r\n if (!_.isEmpty(prefix)) {\r\n return join(ServiceRoot, `${prefix[0]}/${getParent(options)}Default.BulkUpsert${getCast(options)}`);\r\n }\r\n }\r\n return join(ServiceRoot, `/Customers(${AdvertiserCustomerID})/Accounts(${AccountID})/${getParent(options)}Default.BulkUpsert${getCast(options)}`);\r\n }\r\n\r\n function invalidateCache(entityName, ids, skipEntityCallPaths = null) {\r\n if (edm['odata.cache']) {\r\n edm['odata.cache'].invalidateTypeCache(entityName, null, '', skipEntityCallPaths);\r\n _.each(ids, id => edm['odata.cache'].invalidateTypeCache(entityName, id, '', skipEntityCallPaths));\r\n }\r\n }\r\n\r\n function checkParsedResult(errors, result, entityName, ids, skipEntityCallPaths) {\r\n if (!_.isEmpty(errors)) {\r\n return Promise.reject({ // eslint-disable-line prefer-promise-reject-errors\r\n entity: result,\r\n errors,\r\n });\r\n }\r\n\r\n invalidateCache(entityName, ids, skipEntityCallPaths);\r\n\r\n return result;\r\n }\r\n\r\n _.each(bulkUpsertSchema, (bSchema, name) => {\r\n merge(edm.schema.schemas[`Model/${name}`], bSchema);\r\n });\r\n\r\n defineConstProperty(edm, 'odata.bulkUpsert', (() => {\r\n const {\r\n ResourceIdentifier,\r\n } = edm.resourceIdentifiers;\r\n\r\n ResourceIdentifier.prototype.bulkUpdate = function bulkUpdate(attrs, options = {}) {\r\n const { schema } = this.type;\r\n\r\n if (options.batch) {\r\n if (_.isUndefined(attrs.reqs)) {\r\n throw new Error('requests are required when batch bulkupserts.');\r\n }\r\n\r\n const reqs = _.map(attrs.reqs, (param) => {\r\n const csvRows = serialize(schema, { Id: attrs.Id, ...param.data });\r\n const uri = getUrl({ path: this.path, options });\r\n\r\n return {\r\n type: 'POST',\r\n url: uri,\r\n data: { CsvRows: csvRows },\r\n };\r\n });\r\n\r\n return odata.batch(_.defaults({ reqs, path: options.path }, options)).then(responses => (\r\n Promise.map(responses, (response, index) => {\r\n const { results, errors } = parse(response.data);\r\n const ret = populateIds(results, attrs.reqs[index].data);\r\n\r\n return checkParsedResult(\r\n errors,\r\n ret,\r\n options.entityName || this.type.name,\r\n [attrs.Id || attrs.reqs[0].data.Id]\r\n );\r\n })\r\n ))\r\n .then(parsedResponse => (_.isFunction(options.processResponse)\r\n ? options.processResponse(parsedResponse)\r\n : parsedResponse));\r\n }\r\n\r\n const toSerialize = getAttrsToSerialize(attrs.Id, attrs, schema);\r\n const CsvRows = serialize(schema, toSerialize);\r\n\r\n return odata.post(getUrl({ path: this.path, options }), processOptions({ data: { CsvRows } }))\r\n .then((res) => {\r\n const { results, errors } = parse(res);\r\n const ret = populateIds(results, attrs);\r\n\r\n if (results && results.length && hasReadOnlyFields(attrs, schema.properties)) {\r\n ret.Id = results[0].Id;\r\n }\r\n\r\n return checkParsedResult(errors, ret, options.entityName || this.type.name, [attrs.Id]);\r\n });\r\n };\r\n\r\n ResourceIdentifier.prototype.bulkUpdateMany = function bulkUpdateMany(\r\n idList,\r\n attrsList,\r\n options = {}\r\n ) {\r\n const { schema } = this.type;\r\n const toSerialize = _.map(\r\n idList,\r\n (id, index) => getAttrsToSerialize(id, attrsList[index], schema)\r\n );\r\n const CsvRows = serialize(schema, toSerialize);\r\n\r\n return odata\r\n .post(getUrl({ path: this.path, options }), _.defaults(processOptions({ data: { CsvRows } }), options))\r\n .then((res) => {\r\n const { results, errors } = parse(res);\r\n const attrsListWithIds = populateIds(results, attrsList);\r\n\r\n invalidateCache(options.entityName || this.type.name, idList);\r\n\r\n return _.map(attrsListWithIds, (attrs, index) => ({\r\n entity: attrs,\r\n errors: extractEntityErrors(errors, index),\r\n }));\r\n });\r\n };\r\n\r\n ResourceIdentifier.prototype.bulkCreate = function bulkCreate(attrs, options = {}) {\r\n const { schema } = this.type;\r\n const CsvRows = serialize(schema, attrs);\r\n\r\n return odata\r\n .post(getUrl({ path: this.path, options }), _.defaults(processOptions({ data: { CsvRows } }), options))\r\n .then((res) => {\r\n const { results, errors } = parse(res);\r\n const ret = populateIds(results, attrs);\r\n\r\n return checkParsedResult(errors, ret, options.entityName || this.type.name, [null]);\r\n });\r\n };\r\n\r\n ResourceIdentifier.prototype.bulkCreateMany = function bulkCreateMany(attrsList, options = {}) {\r\n const { schema } = this.type;\r\n const CsvRows = serialize(schema, attrsList);\r\n\r\n return odata\r\n .post(getUrl({ path: this.path, options }), _.defaults(processOptions({ data: { CsvRows } }), options))\r\n .then((res) => {\r\n const { results, errors } = parse(res);\r\n const attrsListWithIds = populateIds(results, attrsList);\r\n\r\n invalidateCache(options.entityName || this.type.name);\r\n\r\n return _.map(attrsListWithIds, (attrs, index) => ({\r\n entity: attrs,\r\n errors: extractEntityErrors(errors, index),\r\n }));\r\n });\r\n };\r\n\r\n ResourceIdentifier.prototype.bulkDestroy = function bulkDestroy(id, options = {}) {\r\n const { schema } = this.type;\r\n const attrs = buildDestroyObject(schema.parent, id, options.parentId);\r\n const CsvRows = serialize(schema, attrs);\r\n\r\n return odata\r\n .post(getUrl({ path: this.path, options }), _.defaults(processOptions({ data: { CsvRows } }), options))\r\n .then((res) => {\r\n const { results, errors } = parse(res);\r\n const ret = populateIds(results, attrs);\r\n const entityName = options.entityName || this.type.name;\r\n\r\n return checkParsedResult(errors, ret, entityName, [id], getSkipEntityCallPaths(entityName, [id]));\r\n });\r\n };\r\n\r\n // put the plugin indicator\r\n return {};\r\n })());\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__39__;","module.exports = __WEBPACK_EXTERNAL_MODULE__40__;","module.exports = __WEBPACK_EXTERNAL_MODULE__41__;","module.exports = __WEBPACK_EXTERNAL_MODULE__42__;","const ENTITY_PATH_ENUM = {\r\n 'Model.ShoppingCampaign': 'Campaigns',\r\n 'Model.Campaign': 'Campaigns',\r\n 'Model.AdGroup': 'AdGroups',\r\n};\r\n\r\nexport const getSkipEntityCallPaths = (entityName, ids) => {\r\n const entityPath = entityName.includes('Model') ? ENTITY_PATH_ENUM[entityName] : `${entityName}s`;\r\n if (!entityPath) {\r\n return [];\r\n }\r\n return ids.map(id => `${entityPath}(${id})`);\r\n};\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__47__;","module.exports = __WEBPACK_EXTERNAL_MODULE__48__;","export { EDM } from './src/index';\r\n","/**\r\n * the Entity Data Model module\r\n * @module component/edm-core/index\r\n */\r\nimport typesPlugin from './types-plugin';\r\nimport schemaPlugin from './schema-plugin';\r\n\r\nexport class EDM {\r\n constructor(options) {\r\n typesPlugin(this);\r\n if (options) {\r\n schemaPlugin(this, options);\r\n }\r\n }\r\n}\r\n","/**\r\n * the types plugin module\r\n * @module component/edm-core/types-plugin\r\n */\r\nimport _ from 'underscore';\r\n\r\nimport {\r\n defineConstProperty,\r\n defineProducedPropertyOnClass,\r\n} from '@bingads-webui/reflection';\r\n\r\nimport { Registry } from '@bingads-webui/registry';\r\n\r\nimport {\r\n ONEOF_TYPE_PREFIX,\r\n createResolveType,\r\n createProperty,\r\n createParameter,\r\n createType,\r\n createPrimitiveType,\r\n createCollectionType,\r\n compileProperties,\r\n compileParameters\r\n} from '@bingads-webui/edm-shared';\r\n\r\n/**\r\n * @param {EDM} edm - The EDM object to apply this plugin to\r\n * @return {void}\r\n */\r\nexport default (edm) => {\r\n if (edm.types) {\r\n return;\r\n }\r\n\r\n // eslint-disable-next-line no-undef\r\n const oneOfTypes = new Map();\r\n\r\n /**\r\n * @name edm\r\n * @type {EDM}\r\n * @property {Registry} types - A registry of all types\r\n * @property {Class} types.Type - The base type of all meta Types\r\n * @property {Class} types.PrimitiveType - The meta type of primitive types\r\n * @property {Class} types.ObjectType - The meta type of the key/value types\r\n * @property {Class} types.ComplexType - The meta type of the complex types\r\n * @property {Class} types.EntityType - The meta type of the entity types\r\n * @property {Class} types.CollectionType - The meta type of the collection types\r\n * @property {Class} types.CallableType - The meta type of the callable types\r\n */\r\n defineConstProperty(edm, 'types', (() => {\r\n const types = new Registry();\r\n const Type = createType(types);\r\n const PrimitiveType = createPrimitiveType(Type);\r\n\r\n /**\r\n * @class OneOfType\r\n * @extends Type\r\n * @property {Class} types - Data could be one of these types\r\n * @see {@link http://json-schema.org/latest/json-schema-validation.html#rfc.section.6.7.3}\r\n */\r\n class OneOfType extends Type {\r\n /**\r\n * Create a PrimitiveType\r\n * @param {Object} options - The constructor options\r\n * @param {String} options.name - The name of the type\r\n * @param {Type[]} options.types - The JavaScript type of the primitive type\r\n * @return {void}\r\n */\r\n constructor({\r\n typeNames,\r\n }) {\r\n super({\r\n name: OneOfType.oneOfTypeName(typeNames),\r\n });\r\n\r\n defineConstProperty(this, 'typeNames', typeNames);\r\n // eslint-disable-next-line no-use-before-define\r\n defineConstProperty(this, 'types', typeNames.map(typeName => resolveType(typeName, this.namespace)));\r\n }\r\n\r\n /**\r\n * Get the OneOfType's name from it's elements type name\r\n * @param {String[]} typeNames - The name of the elementTypes\r\n * @return {String} The name of the OneOfType\r\n */\r\n static oneOfTypeName(typeNames) {\r\n // We don't support nested one for now\r\n const sortedNames = typeNames.map(name =>\r\n types.resolveQualifiedName(name, this.namespace)).sort();\r\n\r\n return `${ONEOF_TYPE_PREFIX}(${sortedNames.join(',')})`;\r\n }\r\n }\r\n\r\n const resolveType = createResolveType(oneOfTypes, types, OneOfType);\r\n const Property = createProperty(resolveType);\r\n const Parameter = createParameter(resolveType);\r\n\r\n /**\r\n * @class ObjectType\r\n * @extends Type\r\n * @property {Object.} properties - The properties of the object type\r\n * @property {String} baseTypeName - The name of the base type\r\n * @property {Type} baseType - The base type\r\n */\r\n class ObjectType extends Type {\r\n /**\r\n * Create an ObjectType\r\n * @param {Object} options - The constructor options\r\n * @param {String} options.name - The name of the type\r\n * @param {Object.} options.properties - The property definition\r\n * @param {String} options.baseTypeName - The name of the base type\r\n * @return {void}\r\n */\r\n constructor({\r\n name,\r\n properties,\r\n baseTypeName,\r\n }) {\r\n super({ name });\r\n\r\n defineConstProperty(this, 'properties', compileProperties.call(this, properties, Property));\r\n if (baseTypeName) {\r\n _.chain(this)\r\n .defineConstProperty('baseTypeName', baseTypeName)\r\n .defineProducedProperty('baseType', () => resolveType(this.baseTypeName, this.namespace))\r\n .value();\r\n }\r\n }\r\n\r\n addProperties(properties) {\r\n _.extend(this.properties, compileProperties.call(this, properties, Property));\r\n }\r\n }\r\n\r\n /**\r\n * @class ComplexType\r\n * @extends ObjectType\r\n */\r\n class ComplexType extends ObjectType {\r\n\r\n }\r\n\r\n /**\r\n * @class EntityType\r\n * @extends ObjectType\r\n * @property {String} key - The name of the key property\r\n * @property {Property} keyProperty - The key property of the entity type\r\n * @return {void}\r\n */\r\n class EntityType extends ObjectType {\r\n /**\r\n * Create an EntityType\r\n * @param {Object} options - The constructor options\r\n * @param {String} options.name - The name of the type\r\n * @param {Object.} options.properties - The property definition\r\n * @param {String} options.baseTypeName - The name of the base type\r\n * @param {String} [options.key] - The name of the key property\r\n * @return {void}\r\n */\r\n constructor({\r\n name,\r\n properties,\r\n baseTypeName,\r\n key,\r\n }) {\r\n super({\r\n name,\r\n properties,\r\n baseTypeName,\r\n });\r\n\r\n if (key) {\r\n _.chain(this)\r\n .defineConstProperty('key', key)\r\n .defineConstProperty('keyProperty', this.properties[this.key])\r\n .value();\r\n } else if (baseTypeName) {\r\n // The key property is inherited if there's a base type\r\n _.chain(this)\r\n .defineProducedProperty('key', () => this.baseType.key)\r\n .defineProducedProperty('keyProperty', () => this.baseType.keyProperty)\r\n .value();\r\n } else {\r\n throw new Error('The \"key\" property is required for an EntityType');\r\n }\r\n }\r\n }\r\n\r\n const CollectionType = createCollectionType(ObjectType, resolveType);\r\n\r\n /**\r\n * @memberof Type#\r\n * @this Type\r\n * @returns {CollectionType} The CollectionType of the given Type\r\n */\r\n function collectionTypeFactory() {\r\n return new CollectionType({ elementTypeName: this.name });\r\n }\r\n\r\n /**\r\n * @name type\r\n * @type Type\r\n * @property {CollectionType} collectionType - The collection type of the given type\r\n */\r\n defineProducedPropertyOnClass(Type, 'collectionType', collectionTypeFactory);\r\n\r\n /**\r\n * @class CallableType\r\n * @property {Parameter[]} parameters - The parameters required to call the callable\r\n * @property {String} returnTypeName - The name of the return type\r\n * @property {Type} returnType - The return type of the callable\r\n */\r\n class CallableType extends Type {\r\n /**\r\n * Create a CallableType\r\n * @param {Object} options - The constructor options\r\n * @param {String} options.name - The name of the type\r\n * @param {Object.} parameters - The parameter definitions\r\n * @param {String} returnTypeName - The name of the return type\r\n * @return {void}\r\n */\r\n constructor({\r\n name,\r\n parameters,\r\n returnTypeName,\r\n }) {\r\n super({ name });\r\n\r\n _.chain(this)\r\n .defineConstProperty('parameters', compileParameters.call(this, parameters, Parameter))\r\n .defineConstProperty('returnTypeName', returnTypeName)\r\n .defineProducedProperty('returnType', () => resolveType(returnTypeName, this.namespace))\r\n .value();\r\n }\r\n }\r\n\r\n /**\r\n * @class ActionType\r\n * @property {Parameter[]} parameters - The parameters required to call the callable\r\n * @property {String} returnTypeName - The name of the return type\r\n * @property {Type} returnType - The return type of the callable\r\n */\r\n class ActionType extends CallableType {\r\n /**\r\n * Create a CallableType\r\n * @param {Object} options - The constructor options\r\n * @param {String} options.name - The name of the type\r\n * @param {Object.} parameters - The parameter definitions\r\n * @param {String} returnTypeName - The name of the return type\r\n * @return {void}\r\n */\r\n constructor({\r\n name,\r\n parameters,\r\n returnTypeName,\r\n }) {\r\n super({ name, parameters, returnTypeName });\r\n }\r\n }\r\n\r\n /**\r\n * @class FunctionType\r\n * @property {Parameter[]} parameters - The parameters required to call the callable\r\n * @property {String} returnTypeName - The name of the return type\r\n * @property {Type} returnType - The return type of the callable\r\n */\r\n class FunctionType extends CallableType {\r\n /**\r\n * Create a CallableType\r\n * @param {Object} options - The constructor options\r\n * @param {String} options.name - The name of the type\r\n * @param {Object.} parameters - The parameter definitions\r\n * @param {String} returnTypeName - The name of the return type\r\n * @return {void}\r\n */\r\n constructor({\r\n name,\r\n parameters,\r\n returnTypeName,\r\n }) {\r\n super({ name, parameters, returnTypeName });\r\n }\r\n }\r\n\r\n // TODO: wewei, support EnumType\r\n\r\n return _.chain(types)\r\n .defineConstProperty('Property', Property)\r\n .defineConstProperty('Parameter', Parameter)\r\n .defineConstProperty('Type', Type)\r\n .defineConstProperty('PrimitiveType', PrimitiveType)\r\n .defineConstProperty('OneOfType', OneOfType)\r\n .defineConstProperty('ObjectType', ObjectType)\r\n .defineConstProperty('ComplexType', ComplexType)\r\n .defineConstProperty('EntityType', EntityType)\r\n .defineConstProperty('CollectionType', CollectionType)\r\n .defineConstProperty('CallableType', CallableType)\r\n .defineConstProperty('ActionType', ActionType)\r\n .defineConstProperty('FunctionType', FunctionType)\r\n .value();\r\n })());\r\n};\r\n","/**\r\n * the schema plugin module\r\n * @module component/edm-core/schema-plugin\r\n */\r\nimport _ from 'underscore';\r\nimport {\r\n hasOwnProperty,\r\n defineConstProperty,\r\n} from '@bingads-webui/reflection';\r\nimport { Registry } from '@bingads-webui/registry';\r\n\r\nimport typesPlugin from './types-plugin';\r\n\r\nfunction getSchemaName(schema) {\r\n const { $$ODataExtension, name } = schema;\r\n if ($$ODataExtension) {\r\n return $$ODataExtension.Name;\r\n }\r\n\r\n // deprecated\r\n // There is no such keyword as \"name\" in JSON Schema, it's specific to OData\r\n // See:\r\n // http://json-schema.org/latest/json-schema-core.html\r\n // http://json-schema.org/latest/json-schema-validation.html\r\n return name;\r\n}\r\n\r\nfunction getSchemaBaseType(schema) {\r\n const { $$ODataExtension, clrTypeBase } = schema;\r\n if ($$ODataExtension) {\r\n return $$ODataExtension.BaseType;\r\n }\r\n\r\n // deprecated\r\n // There is no such keyword as \"clrTypeBase\" in JSON Schema, it's specific to OData\r\n // See:\r\n // http://json-schema.org/latest/json-schema-core.html\r\n // http://json-schema.org/latest/json-schema-validation.html\r\n return clrTypeBase;\r\n}\r\n\r\nfunction getSchemaKey(schema) {\r\n const { $$ODataExtension, key } = schema;\r\n if ($$ODataExtension) {\r\n return $$ODataExtension.Key;\r\n }\r\n\r\n // deprecated\r\n // There is no such keyword as \"key\" in JSON Schema, it's specific to OData\r\n // See:\r\n // http://json-schema.org/latest/json-schema-core.html\r\n // http://json-schema.org/latest/json-schema-validation.html\r\n return key;\r\n}\r\n\r\nexport default (edm, {\r\n schemas = {},\r\n // TODO: deprecated, every schemas should be able to have different namespaces\r\n // we are still using it with legacy schemas\r\n namespace = null,\r\n} = {}) => {\r\n if (hasOwnProperty(edm, 'schema')) {\r\n return;\r\n }\r\n\r\n typesPlugin(edm);\r\n\r\n const {\r\n CollectionType,\r\n EntityType,\r\n PrimitiveType,\r\n ComplexType,\r\n OneOfType,\r\n } = edm.types;\r\n\r\n defineConstProperty(edm, 'schema', (() => {\r\n function getSchemaFullName(schema) {\r\n return schema.$ref ?\r\n schema.$ref.replace(/\\//g, '.') :\r\n Registry.getQualifiedName(getSchemaName(schema), namespace);\r\n }\r\n\r\n /**\r\n * Get type name object with its information\r\n * @param {Schema[]} dependencies - An output paramter, a queue of dependent schemas\r\n * @param {Object} typeInfo - The schema information of the property\r\n * @return {String} The type name\r\n */\r\n function getTypeName(dependencies, typeInfo) {\r\n let schema = null;\r\n let typeName = null;\r\n\r\n if (typeInfo.type === 'array') {\r\n return CollectionType.collectionTypeName(getTypeName(dependencies, typeInfo.items));\r\n } else if (typeInfo.oneOf) {\r\n return OneOfType.oneOfTypeName(typeInfo.oneOf.map(item => getTypeName(dependencies, item)));\r\n } else if (typeInfo.type === 'object') {\r\n ({ schema } = typeInfo);\r\n // it's possible for the schema to be undefined, use 'object' type by default\r\n typeName = getSchemaFullName(schema || typeInfo);\r\n } else {\r\n // primitive types\r\n typeName = typeInfo.type;\r\n }\r\n\r\n if (schema) {\r\n dependencies.push(schema);\r\n }\r\n\r\n return typeName;\r\n }\r\n\r\n /**\r\n * Define an entity type, and its dependencies\r\n *\r\n * @param {Schema} schema - The schema for the entity type\r\n * @return {Void} Nothing to return\r\n */\r\n function defineSchemaType(schema) {\r\n const qualifiedName = getSchemaFullName(schema);\r\n\r\n if (!edm.types.resolve(qualifiedName)) {\r\n const dependencies = [];\r\n const properties = _.chain(schema.properties)\r\n .map((typeInfo, name) => [\r\n name,\r\n { typeName: getTypeName(dependencies, typeInfo, name) },\r\n ])\r\n .object()\r\n .value();\r\n\r\n const type = new EntityType({\r\n name: qualifiedName,\r\n baseTypeName: getSchemaBaseType(schema) || 'object',\r\n key: getSchemaKey(schema),\r\n properties,\r\n });\r\n\r\n defineConstProperty(type, 'schema', schema);\r\n\r\n _.each(dependencies, defineSchemaType);\r\n }\r\n }\r\n\r\n // Define all the primitive types\r\n _.each({\r\n string: String,\r\n integer: Number,\r\n number: Number,\r\n datetime: Date,\r\n boolean: Boolean,\r\n null: null,\r\n }, (jsType, name) => new PrimitiveType({ name, jsType }));\r\n // TODO: support `oneOf` in schema\r\n\r\n // Define the base object type\r\n /* eslint no-new: 0 */\r\n new ComplexType({\r\n name: 'object',\r\n properties: {},\r\n });\r\n\r\n _.each(schemas, defineSchemaType);\r\n\r\n return _.chain({})\r\n .defineConstProperty('schemas', schemas)\r\n .defineConstProperty('namespace', namespace)\r\n .value();\r\n })());\r\n};\r\n","export { EDM } from './src/index';\r\n","/**\r\n * the Entity Data Model module\r\n */\r\nimport typesPlugin from './types-plugin';\r\nimport schemaPlugin from './schema-plugin';\r\n\r\nexport class EDM {\r\n constructor(options) {\r\n typesPlugin(this);\r\n if (options) {\r\n schemaPlugin(this, options);\r\n }\r\n }\r\n}\r\n","/**\r\n * the types plugin module\r\n */\r\nimport _ from 'underscore';\r\n\r\nimport {\r\n defineConstProperty,\r\n defineProducedProperty,\r\n defineProducedPropertyOnClass,\r\n} from '@bingads-webui/reflection';\r\n\r\nimport { Registry } from '@bingads-webui/registry';\r\n\r\nimport {\r\n ONEOF_TYPE_PREFIX,\r\n createResolveType,\r\n createProperty,\r\n createParameter,\r\n createType,\r\n createPrimitiveType,\r\n createCollectionType,\r\n compileProperties,\r\n compileParameters\r\n} from '@bingads-webui/edm-shared';\r\n\r\n/**\r\n * @param {EDM} edm - The EDM object to apply this plugin to\r\n * @return {void}\r\n */\r\nexport default (edm) => {\r\n if (edm.types) {\r\n return;\r\n }\r\n\r\n // eslint-disable-next-line no-undef\r\n const oneOfTypes = new Map();\r\n\r\n /**\r\n * @name edm\r\n * @type {EDM}\r\n * @property {Registry} types - A registry of all types\r\n * @property {Class} types.Type - The base type of all meta Types\r\n * @property {Class} types.PrimitiveType - The meta type of primitive types\r\n * @property {Class} types.ObjectType - The meta type of the key/value types\r\n * @property {Class} types.ComplexType - The meta type of the complex types\r\n * @property {Class} types.EntityType - The meta type of the entity types\r\n * @property {Class} types.CollectionType - The meta type of the collection types\r\n * @property {Class} types.CallableType - The meta type of the callable types\r\n */\r\n defineConstProperty(edm, 'types', (() => {\r\n const types = new Registry();\r\n const Type = createType(types);\r\n const PrimitiveType = createPrimitiveType(Type);\r\n\r\n /**\r\n * @class OneOfType\r\n * @extends Type\r\n * @property {Class} types - Data could be one of these types\r\n * @see {@link http://json-schema.org/latest/json-schema-validation.html#rfc.section.6.7.3}\r\n */\r\n class OneOfType extends Type {\r\n /**\r\n * Create a PrimitiveType\r\n * @param {Object} options - The constructor options\r\n * @param {String} options.name - The name of the type\r\n * @param {Type[]} options.types - The JavaScript type of the primitive type\r\n * @return {void}\r\n */\r\n constructor({\r\n typeNames,\r\n }) {\r\n super({\r\n name: OneOfType.oneOfTypeName(typeNames),\r\n });\r\n\r\n defineConstProperty(this, 'typeNames', typeNames);\r\n // eslint-disable-next-line no-use-before-define\r\n defineConstProperty(this, 'types', typeNames.map(typeName => resolveType(typeName, this.namespace)));\r\n }\r\n\r\n /**\r\n * Get the OneOfType's name from it's elements type name\r\n * @param {String[]} typeNames - The name of the elementTypes\r\n * @return {String} The name of the OneOfType\r\n */\r\n static oneOfTypeName(typeNames) {\r\n // We don't support nested one for now\r\n const sortedNames = typeNames.map(name =>\r\n types.resolveQualifiedName(name, this.namespace)).sort();\r\n\r\n return `${ONEOF_TYPE_PREFIX}(${sortedNames.join(',')})`;\r\n }\r\n }\r\n\r\n const resolveType = createResolveType(oneOfTypes, types, OneOfType);\r\n const Property = createProperty(resolveType);\r\n const Parameter = createParameter(resolveType);\r\n\r\n /**\r\n * @class ObjectType\r\n * @extends Type\r\n * @property {Object.} properties - The properties of the object type\r\n * @property {String} baseTypeName - The name of the base type\r\n * @property {Type} baseType - The base type\r\n */\r\n class ObjectType extends Type {\r\n /**\r\n * Create an ObjectType\r\n * @param {Object} options - The constructor options\r\n * @param {String} options.name - The name of the type\r\n * @param {Object.} options.properties - The property definition\r\n * @param {string[]} [options.navigationPropertyNames] - Navigation properties names\r\n * @param {String} options.baseTypeName - The name of the base type\r\n * @return {void}\r\n */\r\n constructor({\r\n name,\r\n properties,\r\n navigationPropertyNames = [],\r\n baseTypeName,\r\n }) {\r\n super({ name });\r\n\r\n defineConstProperty(this, 'properties', compileProperties.call(this, properties, Property));\r\n defineConstProperty(this, 'navigationPropertyNames', navigationPropertyNames.slice());\r\n defineProducedProperty(this, 'navigationProperties', () => _.pick(this.properties, (property, propertyName) => _.contains(this.navigationPropertyNames, propertyName)));\r\n if (baseTypeName) {\r\n defineConstProperty(this, 'baseTypeName', baseTypeName);\r\n defineProducedProperty(this, 'baseType', () => resolveType(this.baseTypeName, this.namespace));\r\n }\r\n }\r\n\r\n addProperties(properties) {\r\n _.extend(this.properties, compileProperties.call(this, properties, Property));\r\n // only for backward compability, should use addNavigationProperties for this case\r\n this.navigationPropertyNames.push(..._.keys(properties));\r\n }\r\n\r\n addNavigationProperties(properties) {\r\n this.addProperties(properties);\r\n }\r\n }\r\n\r\n /**\r\n * @class ComplexType\r\n * @extends ObjectType\r\n */\r\n class ComplexType extends ObjectType {\r\n\r\n }\r\n\r\n /**\r\n * @class EntityType\r\n * @extends ObjectType\r\n * @property {String} key - The name of the key property\r\n * @property {Property} keyProperty - The key property of the entity type\r\n * @return {void}\r\n */\r\n class EntityType extends ObjectType {\r\n /**\r\n * Create an EntityType\r\n * @param {Object} options - The constructor options\r\n * @param {String} options.name - The name of the type\r\n * @param {Object.} options.properties - The property definition\r\n * @param {String} options.baseTypeName - The name of the base type\r\n * @param {String} [options.key] - The name of the key property\r\n * @return {void}\r\n */\r\n constructor({\r\n name,\r\n properties,\r\n navigationPropertyNames,\r\n baseTypeName,\r\n key,\r\n }) {\r\n super({\r\n name,\r\n properties,\r\n navigationPropertyNames,\r\n baseTypeName,\r\n });\r\n\r\n if (key) {\r\n defineConstProperty(this, 'key', key);\r\n defineConstProperty(this, 'keyProperty', this.properties[this.key]);\r\n } else if (baseTypeName) {\r\n // The key property is inherited if there's a base type\r\n defineProducedProperty(this, 'key', () => this.baseType.key);\r\n defineProducedProperty(this, 'keyProperty', () => this.baseType.keyProperty);\r\n } else {\r\n throw new Error('The \"key\" property is required for an EntityType');\r\n }\r\n }\r\n }\r\n\r\n const CollectionType = createCollectionType(ObjectType, resolveType);\r\n\r\n /**\r\n * @memberof Type#\r\n * @this Type\r\n * @returns {CollectionType} The CollectionType of the given Type\r\n */\r\n function collectionTypeFactory() {\r\n return new CollectionType({ elementTypeName: this.name });\r\n }\r\n\r\n /**\r\n * @name type\r\n * @type Type\r\n * @property {CollectionType} collectionType - The collection type of the given type\r\n */\r\n defineProducedPropertyOnClass(Type, 'collectionType', collectionTypeFactory);\r\n\r\n /**\r\n * @class CallableType\r\n * @property {Parameter[]} parameters - The parameters required to call the callable\r\n * @property {String} returnTypeName - The name of the return type\r\n * @property {Type} returnType - The return type of the callable\r\n */\r\n class CallableType extends Type {\r\n /**\r\n * Create a CallableType\r\n * @param {Object} options - The constructor options\r\n * @param {String} options.name - The name of the type\r\n * @param {Object.} parameters - The parameter definitions\r\n * @param {String} returnTypeName - The name of the return type\r\n * @return {void}\r\n */\r\n constructor({\r\n name,\r\n callableName,\r\n parameters,\r\n returnTypeName,\r\n }) {\r\n super({ name });\r\n\r\n defineConstProperty(this, 'callableName', callableName);\r\n defineConstProperty(this, 'parameters', compileParameters.call(this, parameters, Parameter));\r\n defineConstProperty(this, 'returnTypeName', returnTypeName);\r\n defineProducedProperty(this, 'returnType', () => resolveType(returnTypeName, this.namespace));\r\n }\r\n }\r\n\r\n /**\r\n * @class ActionType\r\n * @property {Parameter[]} parameters - The parameters required to call the callable\r\n * @property {String} returnTypeName - The name of the return type\r\n * @property {Type} returnType - The return type of the callable\r\n */\r\n class ActionType extends CallableType {\r\n /**\r\n * Create a CallableType\r\n * @param {Object} options - The constructor options\r\n * @param {String} options.name - The name of the type\r\n * @param {Object.} parameters - The parameter definitions\r\n * @param {String} returnTypeName - The name of the return type\r\n * @return {void}\r\n */\r\n constructor({\r\n name,\r\n callableName,\r\n parameters,\r\n returnTypeName,\r\n }) {\r\n super({\r\n name,\r\n callableName,\r\n parameters,\r\n returnTypeName,\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @class FunctionType\r\n * @property {Parameter[]} parameters - The parameters required to call the callable\r\n * @property {String} returnTypeName - The name of the return type\r\n * @property {Type} returnType - The return type of the callable\r\n */\r\n class FunctionType extends CallableType {\r\n /**\r\n * Create a CallableType\r\n * @param {Object} options - The constructor options\r\n * @param {String} options.name - The name of the type\r\n * @param {Object.} parameters - The parameter definitions\r\n * @param {String} returnTypeName - The name of the return type\r\n * @return {void}\r\n */\r\n constructor({\r\n name,\r\n callableName,\r\n parameters,\r\n returnTypeName,\r\n }) {\r\n super({\r\n name,\r\n callableName,\r\n parameters,\r\n returnTypeName,\r\n });\r\n }\r\n }\r\n\r\n // TODO: wewei, support EnumType\r\n\r\n defineConstProperty(types, 'Property', Property);\r\n defineConstProperty(types, 'Parameter', Parameter);\r\n defineConstProperty(types, 'Type', Type);\r\n defineConstProperty(types, 'PrimitiveType', PrimitiveType);\r\n defineConstProperty(types, 'OneOfType', OneOfType);\r\n defineConstProperty(types, 'ObjectType', ObjectType);\r\n defineConstProperty(types, 'ComplexType', ComplexType);\r\n defineConstProperty(types, 'EntityType', EntityType);\r\n defineConstProperty(types, 'CollectionType', CollectionType);\r\n defineConstProperty(types, 'CallableType', CallableType);\r\n defineConstProperty(types, 'ActionType', ActionType);\r\n defineConstProperty(types, 'FunctionType', FunctionType);\r\n\r\n return types;\r\n })());\r\n};\r\n","/**\r\n * the schema plugin module\r\n */\r\nimport _ from 'underscore';\r\nimport { get } from '@bingads-webui-universal/primitive-utilities';\r\nimport {\r\n hasOwnProperty,\r\n defineConstProperty,\r\n} from '@bingads-webui/reflection';\r\nimport { Registry } from '@bingads-webui/registry';\r\n\r\nimport typesPlugin from './types-plugin';\r\n\r\nfunction getSchemaName(schema) {\r\n const { $$ODataExtension, name } = schema;\r\n if ($$ODataExtension) {\r\n return $$ODataExtension.Name;\r\n }\r\n\r\n // deprecated\r\n // There is no such keyword as \"name\" in JSON Schema, it's specific to OData\r\n // See:\r\n // http://json-schema.org/latest/json-schema-core.html\r\n // http://json-schema.org/latest/json-schema-validation.html\r\n return name;\r\n}\r\n\r\nfunction getSchemaBaseTypeName(schema) {\r\n const { $$ODataExtension, clrTypeBase } = schema;\r\n if ($$ODataExtension) {\r\n return $$ODataExtension.BaseType && $$ODataExtension.BaseType.$ref;\r\n }\r\n\r\n // deprecated\r\n // There is no such keyword as \"clrTypeBase\" in JSON Schema, it's specific to OData\r\n // See:\r\n // http://json-schema.org/latest/json-schema-core.html\r\n // http://json-schema.org/latest/json-schema-validation.html\r\n return clrTypeBase;\r\n}\r\n\r\nfunction getSchemaKey(schema) {\r\n const { $$ODataExtension, key } = schema;\r\n if ($$ODataExtension) {\r\n return $$ODataExtension.Key;\r\n }\r\n\r\n // deprecated\r\n // There is no such keyword as \"key\" in JSON Schema, it's specific to OData\r\n // See:\r\n // http://json-schema.org/latest/json-schema-core.html\r\n // http://json-schema.org/latest/json-schema-validation.html\r\n return key;\r\n}\r\n\r\nfunction getSchemaNavigationPropertyNames(schema) {\r\n const { $$ODataExtension } = schema;\r\n if ($$ODataExtension) {\r\n return $$ODataExtension.NavigationProperty;\r\n }\r\n\r\n return [];\r\n}\r\n\r\nexport default (edm, {\r\n schemas = {},\r\n // TODO: deprecated, every schemas should be able to have different namespaces\r\n // we are still using it with legacy schemas\r\n namespace = null,\r\n} = {}) => {\r\n if (hasOwnProperty(edm, 'schema')) {\r\n return;\r\n }\r\n\r\n typesPlugin(edm);\r\n\r\n const {\r\n CollectionType,\r\n EntityType,\r\n PrimitiveType,\r\n ComplexType,\r\n OneOfType,\r\n ActionType,\r\n FunctionType,\r\n } = edm.types;\r\n\r\n defineConstProperty(edm, 'schema', (() => {\r\n function getSchemaFullName(schema, path) {\r\n // $$ref exists in resolved schema\r\n const possiblePath = (_.isString(path) && path) || schema.$$ref || schema.$ref;\r\n return possiblePath ?\r\n possiblePath.replace(/\\//g, '.') :\r\n Registry.getQualifiedName(getSchemaName(schema), namespace);\r\n }\r\n\r\n /**\r\n * Get type name object with its information\r\n * @param {Schema[]} dependencies - An output paramter, a queue of dependent schemas\r\n * @param {Object} typeInfo - The schema information of the property\r\n * @return {String} The type name\r\n */\r\n function getTypeName(dependencies, typeInfo) {\r\n let schema = null;\r\n let typeName = null;\r\n\r\n if (!typeInfo) {\r\n return null;\r\n }\r\n\r\n if (typeInfo.type === 'array') {\r\n return CollectionType.collectionTypeName(getTypeName(dependencies, typeInfo.items));\r\n } else if (typeInfo.oneOf) {\r\n return OneOfType.oneOfTypeName(typeInfo.oneOf.map(item => getTypeName(dependencies, item)));\r\n } else if (typeInfo.type === 'object') {\r\n ({ schema } = typeInfo);\r\n // it's possible for the schema to be undefined, use 'object' type by default\r\n typeName = getSchemaFullName(schema || typeInfo);\r\n } else if (typeInfo.type === 'string' && typeInfo.enum) {\r\n // enum type is string, but we need to get a meanful name for different enum type\r\n // this is to help us disable cache accurately, as enum can be odata call return type now\r\n typeName = (typeInfo.$$ref || 'string').split('/').join('.');\r\n } else {\r\n // primitive types\r\n typeName = typeInfo.type;\r\n }\r\n\r\n if (schema) {\r\n dependencies.push(schema);\r\n }\r\n\r\n return typeName;\r\n }\r\n\r\n function defineCallableOnType(acts, funcs, type, qualifiedName, forEntityType = true) {\r\n const actions = [];\r\n const functions = [];\r\n\r\n function getCallableTypeName(key) {\r\n return `${key}##${qualifiedName}${forEntityType ? '' : '@@COLL'}`;\r\n }\r\n\r\n _.each(_.keys(acts), (key) => {\r\n const typeName = getCallableTypeName(key);\r\n const parameters = _.mapObject(\r\n acts[key].Parameter,\r\n parameter => getTypeName([], parameter)\r\n );\r\n\r\n actions.push(new ActionType({\r\n name: typeName,\r\n callableName: key,\r\n parameters,\r\n returnTypeName: getTypeName([], acts[key].ReturnType),\r\n }));\r\n });\r\n\r\n _.each(_.keys(funcs), (key) => {\r\n const typeName = getCallableTypeName(key);\r\n const parameters = _.mapObject(\r\n funcs[key].Parameter,\r\n parameter => getTypeName([], parameter)\r\n );\r\n\r\n functions.push(new FunctionType({\r\n name: typeName,\r\n callableName: key,\r\n parameters,\r\n returnTypeName: getTypeName([], funcs[key].ReturnType),\r\n }));\r\n });\r\n\r\n defineConstProperty(type, 'callable', {\r\n actions,\r\n functions,\r\n });\r\n }\r\n\r\n /**\r\n * Define an entity type, and its dependencies\r\n *\r\n * @param {Schema} schema - The schema for the entity type\r\n * @param {string} [path] - Possible full path of the schema\r\n * @return {Void} Nothing to return\r\n */\r\n function defineSchemaType(schema, path) {\r\n const qualifiedName = getSchemaFullName(schema, path);\r\n\r\n if (!edm.types.resolve(qualifiedName)) {\r\n const dependencies = [];\r\n const properties = _.mapObject(schema.properties, typeInfo => ({\r\n typeName: getTypeName(dependencies, typeInfo),\r\n }));\r\n\r\n const type = new EntityType({\r\n name: qualifiedName,\r\n baseTypeName: getSchemaBaseTypeName(schema) || 'object',\r\n key: getSchemaKey(schema),\r\n properties,\r\n navigationPropertyNames: getSchemaNavigationPropertyNames(schema),\r\n });\r\n\r\n defineConstProperty(type, 'schema', schema);\r\n\r\n _.each(dependencies, defineSchemaType);\r\n\r\n const entityActions = get(schema, '$$ODataExtension.Action', null);\r\n const entityFunctions = get(schema, '$$ODataExtension.Function', null);\r\n\r\n if (entityActions || entityFunctions) {\r\n defineCallableOnType(entityActions, entityFunctions, type, qualifiedName);\r\n }\r\n\r\n const collCallable = get(schema, '$$ODataExtension.Collection', null);\r\n\r\n if (collCallable) {\r\n defineCallableOnType(\r\n collCallable.Action,\r\n collCallable.Function,\r\n type.collectionType,\r\n qualifiedName,\r\n false\r\n );\r\n }\r\n }\r\n }\r\n\r\n // Define all the primitive types\r\n _.each({\r\n string: String,\r\n integer: Number,\r\n number: Number,\r\n datetime: Date,\r\n boolean: Boolean,\r\n null: null,\r\n }, (jsType, name) => new PrimitiveType({ name, jsType }));\r\n\r\n // Define the base object type\r\n /* eslint no-new: 0 */\r\n new ComplexType({\r\n name: 'object',\r\n properties: {},\r\n });\r\n\r\n _.each(schemas, (schema, index) => {\r\n if (_.isString(index)) {\r\n defineSchemaType(schema, index);\r\n } else {\r\n defineSchemaType(schema);\r\n }\r\n });\r\n\r\n return _.chain({})\r\n .defineConstProperty('schemas', schemas)\r\n .defineConstProperty('namespace', namespace)\r\n .value();\r\n })());\r\n};\r\n","export { jsdataPlugin } from './src/index';\r\n","/**\r\n * The js-data plugin for Entity Data Model\r\n * @module component/edm-js-data/index\r\n */\r\nimport _ from 'underscore';\r\nimport JSData from 'js-data';\r\nimport Schemator from 'js-data-schema';\r\nimport {\r\n defineConstProperty,\r\n defineProducedPropertyOnClass,\r\n defineProducedProperty,\r\n} from '@bingads-webui/reflection';\r\nimport { defineResource } from './js-data';\r\n\r\n/**\r\n * @param {EDM} edm - The EDM to apply the plugin to\r\n * @param {ResourceIdentifier} root - The root resource identifier\r\n * @return {void} Nothing to return\r\n */\r\nexport function jsdataPlugin(edm, root) {\r\n if (edm.jsdata) {\r\n return;\r\n }\r\n\r\n if (!edm.schema) {\r\n throw new Error('Schemas must be loaded before applying the js-data plugin');\r\n }\r\n\r\n const store = new JSData.DS({ cacheResponse: false });\r\n const schemator = new Schemator();\r\n\r\n /**\r\n * @name edm\r\n * @property {Object} jsdata - An aggregator of js-data objects\r\n * @property {JSDataDS} jsdata.store - The js-data data store\r\n * @property {JSDataResource[]} jsdata.resources - An array of all js-data resources created\r\n * @property {JSDataSchemator} jsdata.schemator - The js-data schemator\r\n */\r\n defineConstProperty(edm, 'jsdata', (() => {\r\n const resources = {};\r\n\r\n edm.types.each((type) => {\r\n if (type.schema) {\r\n const { name } = type.schema;\r\n\r\n defineProducedProperty(resources, name, () => defineResource({\r\n schema: type.schema,\r\n store,\r\n schemator,\r\n edm,\r\n edmRootResourceIdentifier: root,\r\n }));\r\n\r\n /**\r\n * @name type\r\n * @type Type\r\n * @property {JSDataResource} jsdataResource - The js-data resource for the type\r\n */\r\n defineProducedProperty(type, 'jsdataResource', () => resources[name]);\r\n }\r\n });\r\n\r\n return _.chain({})\r\n .defineConstProperty('store', store)\r\n .defineConstProperty('resources', resources)\r\n .defineConstProperty('schemator', schemator)\r\n .value();\r\n })());\r\n\r\n /**\r\n * @memberof ResourceIdentifier#\r\n * @this ResourceIdentifier\r\n * @returns {JSDataResource} The js-data resource for the entity\r\n */\r\n function jsdataResourceFactory() {\r\n if (_.has(store.definitions, this.path)) {\r\n return store.definitions[this.path];\r\n }\r\n\r\n if (this.type instanceof edm.types.CollectionType &&\r\n // action has same path for different parameters\r\n !(this.navigation.source.type instanceof edm.types.ActionType)) {\r\n return defineResource({\r\n schema: this.type.elementType.schema,\r\n store,\r\n schemator,\r\n name: this.path,\r\n entitySet: this,\r\n edm,\r\n edmRootResourceIdentifier: root,\r\n });\r\n }\r\n\r\n throw new Error('only support jsdataResource on collection type edm');\r\n }\r\n\r\n if (edm.resourceIdentifiers) {\r\n const {\r\n ResourceIdentifier,\r\n } = edm.resourceIdentifiers;\r\n\r\n defineProducedPropertyOnClass(ResourceIdentifier, 'jsdataResource', jsdataResourceFactory);\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__68__;","module.exports = __WEBPACK_EXTERNAL_MODULE__69__;","import _ from 'underscore';\r\n\r\nfunction toSimpleHash(schema) {\r\n return _.mapObject(schema.properties, ({\r\n type,\r\n schema: propertySchema,\r\n }) => {\r\n const obj = { type };\r\n\r\n if (propertySchema) {\r\n obj.type = propertySchema.name;\r\n }\r\n\r\n return obj;\r\n });\r\n}\r\n\r\nfunction definePropertiesType(schema, Schemator) {\r\n _.each(schema.properties, ({ schema: propertySchema }) => {\r\n if (propertySchema && !Schemator.getDataType(propertySchema.name)) {\r\n // eslint-disable-next-line\r\n defineType(propertySchema, Schemator);\r\n }\r\n });\r\n}\r\n\r\nfunction defineType(schema, Schemator) {\r\n Schemator.defineDataType(schema.name, _.noop);\r\n definePropertiesType(schema, Schemator);\r\n}\r\n\r\nexport function defineResource({\r\n schema,\r\n store,\r\n schemator,\r\n name = schema.name,\r\n entitySet,\r\n edm,\r\n edmRootResourceIdentifier,\r\n}) {\r\n const resource = store.defineResource({\r\n // do not pass reference to schema into js-data method, as js-data may\r\n // perform destructive modifications to the schema argument\r\n name,\r\n entitySet,\r\n edm,\r\n edmRootResourceIdentifier,\r\n idAttribute: _.findKey(schema.properties, prop => prop.key === true) || 'Id',\r\n });\r\n\r\n if (!schemator.getSchema(schema.name)) {\r\n // TODO: actually we are not using js-data-schema, see http://www.js-data.io/docs/upgrading-to-jsdata-20\r\n schemator.defineSchema(schema.name, toSimpleHash(schema));\r\n\r\n // seed types\r\n definePropertiesType(schema, schemator);\r\n }\r\n\r\n // TODO: [zhbliu][#1404348] This is needed by component/js-data-bulk,\r\n // we need an elegant way to find schema by resource\r\n return _.extend(resource, { schema });\r\n}\r\n","export { odataPlugin } from './src/index';\r\n","/**\r\n * The OData plugin module\r\n * @module component/edm-odata/index\r\n */\r\nimport _ from 'underscore';\r\nimport {\r\n hasOwnProperty,\r\n defineConstProperty,\r\n defineProducedPropertyOnClass,\r\n} from '@bingads-webui/reflection';\r\n\r\nimport { odata } from '@bingads-webui/http-util';\r\nimport * as url from '@bingads-webui/url-util';\r\nimport { resIdsPlugin } from '@bingads-webui/edm-resource-identifiers-legacy';\r\n\r\n/**\r\n * @param {EDM} edm - The EDM object to apply the plugin to\r\n * @param {String} rootURL - The root URL of the OData service\r\n * @return {Void} nothing to return\r\n */\r\nexport function odataPlugin(edm, rootURL, {\r\n processError = _.identity,\r\n processOptions = _.identity,\r\n} = {}) {\r\n const odataRootURL = rootURL.replace(/\\/*$/, '');\r\n if (hasOwnProperty(edm, 'odata')) {\r\n return;\r\n }\r\n const rethrowError = (err) => {\r\n throw processError(err);\r\n };\r\n\r\n resIdsPlugin(edm);\r\n\r\n /**\r\n * @name edm\r\n * @property {Object} odata - A dummy indicator for odataPlugin being applied\r\n */\r\n defineConstProperty(edm, 'odata', (() => {\r\n const {\r\n ResourceIdentifier,\r\n Navigation,\r\n } = edm.resourceIdentifiers;\r\n\r\n defineProducedPropertyOnClass(\r\n ResourceIdentifier, 'odataURL',\r\n /**\r\n * @memberof ResourceIdentifier#\r\n * @this ResourceIdentifier\r\n * @returns {String} The URL to access the OData resource\r\n */\r\n function () { // eslint-disable-line func-names\r\n return url.join(odataRootURL, this.path);\r\n }\r\n );\r\n\r\n function getCollection({\r\n top = 20,\r\n count = true,\r\n // Contact zhbliu@microsoft.com for adding more options here\r\n // TODO:\r\n // filter, select (auto use $expand when nessasary), orderby\r\n // we should avoid random query params like SegmentationTypes, startDate, endDate, etc\r\n } = {}) {\r\n return odata.get(this.odataURL, processOptions({\r\n data: {\r\n $top: top,\r\n $count: count,\r\n },\r\n })).catch(rethrowError);\r\n }\r\n\r\n function getItem() {\r\n return odata.get(this.odataURL, processOptions()).catch(rethrowError);\r\n }\r\n\r\n // edm.currentCustomer.Accounts is an instance of ResourceIdentifier\r\n // usage:\r\n // edm.currentCustomer.Accounts.get({ data: { $top: 20 } })\r\n // TODO:\r\n // * type enrichment, for example, 'Active' => Enum.CampaignStatus'Active'\r\n // * type check\r\n // * cache and onChange event on response\r\n ResourceIdentifier.prototype.get = function get(options) {\r\n return this.type instanceof edm.types.CollectionType ?\r\n getCollection.call(this, options) :\r\n getItem.call(this, options);\r\n };\r\n\r\n // usage:\r\n // edm.currentCustomer.Accounts.findAll({ limit: 20 }), align with jsdata\r\n // TODO:\r\n // * refine available options, jsdata aligned arguments\r\n // * jsdata aligned response\r\n ResourceIdentifier.prototype.findAll = function findAll(query) {\r\n return this.get({ top: query.limit });\r\n };\r\n\r\n defineProducedPropertyOnClass(\r\n Navigation, 'odataURL',\r\n /**\r\n * @memberof Navigation#\r\n * @this Navigation\r\n * @returns {String} The URL to access the OData resource\r\n */\r\n function () { // eslint-disable-line func-names\r\n return url.join(odataRootURL, this.path);\r\n }\r\n );\r\n\r\n // put the plugin indicator\r\n return {};\r\n })());\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__84__;","module.exports = __WEBPACK_EXTERNAL_MODULE__60__;","export { odataPlugin } from './src/index';\r\n","/**\r\n * The OData plugin module\r\n * @module component/edm-odata/index\r\n */\r\nimport _ from 'underscore';\r\nimport {\r\n hasOwnProperty,\r\n defineConstProperty,\r\n defineProducedPropertyOnClass,\r\n} from '@bingads-webui/reflection';\r\n\r\nimport { odata } from '@bingads-webui/http-util';\r\nimport * as url from '@bingads-webui/url-util';\r\nimport { resIdsPlugin } from '@bingads-webui/edm-resource-identifiers';\r\nimport { odataCachePlugin } from './cache';\r\n\r\n// support a mongoDB like orderby object for now: { age : -1, name: 1 }\r\n// for backward compatibility, support array format: [['age', 'desc'], ['name', 'asc]]\r\nfunction parseOrderBy(orderby) {\r\n function lowerCaseOrderValue(value) {\r\n return _.map(value, (v, index) => (index === 1 ? v.toLowerCase() : v));\r\n }\r\n\r\n if (_.isEmpty(orderby)) {\r\n return {};\r\n }\r\n\r\n let $orderby;\r\n if (_.isArray(orderby)) {\r\n $orderby = _.map(orderby, value => lowerCaseOrderValue(value).join(' ')).join(',');\r\n } else {\r\n $orderby = _.map(orderby, (value, key) => `${key} ${value > 0 ? 'asc' : 'desc'}`).join(',');\r\n }\r\n\r\n return {\r\n $orderby,\r\n };\r\n}\r\n\r\n// TODO: [yaoyao] add support to parse filter object\r\nfunction parseFilter(filter) {\r\n if (_.isEmpty(filter) || _.isEmpty(filter.where)) {\r\n return {};\r\n }\r\n\r\n return {\r\n $filter: filter.where,\r\n };\r\n}\r\n\r\nfunction parseTop(top) {\r\n if (!top) {\r\n return {};\r\n }\r\n\r\n return {\r\n $top: top,\r\n };\r\n}\r\n\r\nfunction parseSkip(skip) {\r\n if (!skip) {\r\n return {};\r\n }\r\n\r\n return {\r\n $skip: skip,\r\n };\r\n}\r\n\r\nfunction parseCount(count) {\r\n if (count === undefined) {\r\n return {};\r\n }\r\n\r\n return {\r\n $count: count,\r\n };\r\n}\r\n\r\nfunction parseSelect(select, resource) {\r\n if (!select) return {};\r\n const parsed = {};\r\n const elementType = resource.type.elementType ? resource.type.elementType : resource.type;\r\n const { navigationPropertyNames } = elementType;\r\n const $select = select.filter(item => !_.contains(navigationPropertyNames, item)).join(',');\r\n const $expand = select.filter(item => _.contains(navigationPropertyNames, item)).join(',');\r\n\r\n if ($select.length) {\r\n parsed.$select = $select;\r\n }\r\n\r\n if ($expand.length) {\r\n parsed.$expand = $expand;\r\n }\r\n\r\n return parsed;\r\n}\r\n\r\nfunction parseSearch(search) {\r\n if (!search) {\r\n return {};\r\n }\r\n return { $search: search };\r\n}\r\n\r\n// TODO: make all the legacy findall call related logic to a separate edm plugin package\r\n// backward compatibility for legacy grid jsdata resource finall call\r\nconst legacyJsDataResultProcess = (response) => {\r\n const result = response.value.slice();\r\n Object.defineProperty(result, 'totalCount', {\r\n value: response['@odata.count'],\r\n enumerable: false,\r\n });\r\n Object.defineProperty(result, 'raw', {\r\n value: response,\r\n enumerable: false,\r\n });\r\n return result;\r\n};\r\n\r\n/**\r\n * @param {EDM} edm - The EDM object to apply the plugin to\r\n * @param {String} rootURL - The root URL of the OData service\r\n * @param {object} dependants - The entity dependency relations\r\n * @param {object} processOptions - The options to process response and error\r\n * @return {Void} nothing to return\r\n */\r\nexport function odataPlugin(edm, rootURL, dependants = {}, {\r\n processResponse = _.identity,\r\n processError = _.identity,\r\n processOptions = _.identity,\r\n} = {}) {\r\n const odataRootURL = rootURL.replace(/\\/*$/, '');\r\n if (hasOwnProperty(edm, 'odata')) {\r\n return;\r\n }\r\n\r\n const wrapODataMethod = (method, resource) =>\r\n function wrappedODataMethod(odataURL, options) {\r\n return method(odataURL, processOptions(options, resource))\r\n .then(response => processResponse(response, resource))\r\n .catch((error) => {\r\n throw processError(error, resource);\r\n });\r\n };\r\n\r\n odataCachePlugin(edm, dependants, {\r\n fetchEntity: (resource, {\r\n select,\r\n }) => wrapODataMethod(odata.get, resource)(resource.odataURL, {\r\n data: {\r\n ...parseSelect(select, resource),\r\n },\r\n }),\r\n patchEntity: (resource, {\r\n select,\r\n }, update) => wrapODataMethod(odata.patch, resource)(resource.odataURL, {\r\n data: update,\r\n urlParameters: {\r\n ...parseSelect(select, resource),\r\n },\r\n }),\r\n createEntity: (collectionResource, {\r\n select,\r\n }, data) => wrapODataMethod(odata.post, collectionResource)(collectionResource.odataURL, {\r\n data,\r\n urlParameters: {\r\n ...parseSelect(select, collectionResource),\r\n },\r\n }),\r\n deleteEntity: resource => wrapODataMethod(odata.delete, resource)(resource.odataURL),\r\n fetchCollection: (collectionResource, {\r\n top,\r\n skip,\r\n count,\r\n orderby,\r\n filter,\r\n select,\r\n search,\r\n ...others\r\n }) => wrapODataMethod(odata.get, collectionResource)(collectionResource.odataURL, {\r\n data: {\r\n $top: top,\r\n $skip: skip,\r\n $count: count,\r\n ...parseOrderBy(orderby),\r\n ...parseFilter(filter),\r\n ...parseSelect(select, collectionResource),\r\n ...parseSearch(search),\r\n ...others,\r\n },\r\n }),\r\n action: (collectionResource, {\r\n top,\r\n skip,\r\n count,\r\n orderby,\r\n filter,\r\n select,\r\n payload,\r\n }) => wrapODataMethod(odata.post, collectionResource)(collectionResource.odataURL, {\r\n data: payload,\r\n urlParameters: {\r\n ...parseTop(top),\r\n ...parseSkip(skip),\r\n ...parseCount(count),\r\n ...parseOrderBy(orderby),\r\n ...parseFilter(filter),\r\n ...parseSelect(select, collectionResource),\r\n },\r\n }),\r\n });\r\n\r\n const {\r\n getEntity,\r\n postEntity,\r\n destroyEntityAsPromise,\r\n entityAction,\r\n getCollection,\r\n collectionAction,\r\n } = edm['odata.cache'];\r\n\r\n resIdsPlugin(edm);\r\n\r\n /**\r\n * @name edm\r\n * @property {Object} odata - A dummy indicator for odataPlugin being applied\r\n */\r\n defineConstProperty(edm, 'odata', (() => {\r\n const {\r\n ResourceIdentifier,\r\n CollectionResourceIdentifier,\r\n Navigation,\r\n } = edm.resourceIdentifiers;\r\n\r\n defineProducedPropertyOnClass(\r\n ResourceIdentifier, 'odataURL',\r\n /**\r\n * @memberof ResourceIdentifier#\r\n * @this ResourceIdentifier\r\n * @returns {String} The URL to access the OData resource\r\n */\r\n function () { // eslint-disable-line func-names\r\n return url.join(odataRootURL, this.path);\r\n }\r\n );\r\n\r\n // edm.currentCustomer.Accounts is an instance of ResourceIdentifier\r\n // usage:\r\n // edm.currentCustomer.Accounts.get({ top: 20, skip: 10 })\r\n // TODO:\r\n // * type enrichment, for example, 'Active' => Enum.CampaignStatus'Active'\r\n // * type check\r\n // * cache and onChange event on response\r\n CollectionResourceIdentifier.prototype.get = function get({\r\n top = 20,\r\n skip = 0,\r\n count = true,\r\n // when null means default response\r\n // most likely it would includes all non navigation property and exclude all navigation ones\r\n select = null,\r\n // we should avoid random query params like SegmentationTypes, startDate, endDate, etc\r\n filter = null,\r\n orderby = null,\r\n search = null,\r\n ...others\r\n } = {}, hardResetData, bypassCache) {\r\n return getCollection(this, {\r\n top,\r\n skip,\r\n count,\r\n select,\r\n filter,\r\n orderby,\r\n search,\r\n ...others,\r\n }, hardResetData, bypassCache);\r\n };\r\n\r\n ResourceIdentifier.prototype.get = function get({\r\n // when null means default response\r\n // most likely it would includes all non navigation property and exclude all navigation ones\r\n select = null,\r\n } = {}, hardResetData, bypassCache) {\r\n return getEntity(this, {\r\n select,\r\n }, hardResetData, bypassCache);\r\n };\r\n\r\n ResourceIdentifier.prototype.patch = function patch(data, {\r\n select = null,\r\n } = {}, bypassCache) {\r\n const cacheItem = getEntity(this, {\r\n select,\r\n }, bypassCache);\r\n return cacheItem.update(data);\r\n };\r\n\r\n // NOTE: likezh: DELETE operation returns a Promise, not an observable.\r\n // See comments in cache.js.\r\n ResourceIdentifier.prototype.destroyAsPromise = function destroy() {\r\n return destroyEntityAsPromise(this);\r\n };\r\n\r\n ResourceIdentifier.prototype.$_callableMakeCall = function $callableMakeCall({\r\n top,\r\n skip,\r\n count,\r\n orderby = null,\r\n filter = null,\r\n select = null,\r\n payload,\r\n hardResetData,\r\n bypassCache,\r\n // custom query options (only for FunctionType, for ActionType use payload for custom parameters)\r\n startDate,\r\n endDate,\r\n } = {}) {\r\n if (this.type instanceof edm.types.CollectionType) {\r\n if (this.navigation.source.type instanceof edm.types.ActionType) {\r\n return collectionAction(this, {\r\n top: top || 20,\r\n skip: skip || 0,\r\n count: count === undefined ? true : count,\r\n orderby,\r\n filter,\r\n select,\r\n payload,\r\n }, bypassCache);\r\n } else if (this.navigation.source.type instanceof edm.types.FunctionType) {\r\n return getCollection(this, {\r\n top: top || 20,\r\n skip: skip || 0,\r\n count: count === undefined ? true : count,\r\n orderby,\r\n filter,\r\n select,\r\n startDate,\r\n endDate,\r\n }, hardResetData, bypassCache);\r\n }\r\n }\r\n\r\n // In theory, we should not have param like top, count, filter and orderby\r\n // for none collectionType. But the Odata metadata have some incorrect information\r\n // that return type of collection is marked as none collection\r\n if (this.navigation.source.type instanceof edm.types.ActionType) {\r\n return entityAction(this, {\r\n top,\r\n skip,\r\n count,\r\n orderby,\r\n filter,\r\n select,\r\n payload,\r\n }, bypassCache);\r\n }\r\n\r\n return getEntity(this, {\r\n top,\r\n skip,\r\n count,\r\n orderby,\r\n filter,\r\n select,\r\n }, hardResetData, bypassCache);\r\n };\r\n\r\n ResourceIdentifier.prototype.$makeCall = function $makeCall({\r\n query,\r\n functionParams,\r\n payload,\r\n hardResetData,\r\n bypassCache,\r\n } = {}) {\r\n return this.$call(functionParams).$_callableMakeCall({\r\n ...query,\r\n payload,\r\n hardResetData,\r\n bypassCache,\r\n });\r\n };\r\n\r\n // align with jsdata, to ensure backward compatibility with jsdata data source.\r\n ResourceIdentifier.prototype.findAll = function findAll(query = {}) {\r\n if (this.type instanceof edm.types.ActionType) {\r\n return this.$makeCall({\r\n query: {\r\n top: query.limit || 20,\r\n skip: query.offset || 0,\r\n count: true,\r\n orderby: query.orderBy,\r\n filter: query.filter,\r\n select: query.select,\r\n },\r\n payload: query.query,\r\n }).toPromise().then(legacyJsDataResultProcess);\r\n }\r\n throw new Error('findall call for this type is not suported');\r\n };\r\n\r\n defineProducedPropertyOnClass(CollectionResourceIdentifier, 'idAttribute', function idAttribute() {\r\n return this.type.elementType.key;\r\n });\r\n\r\n CollectionResourceIdentifier.prototype.post = function post(data, {\r\n select = null,\r\n } = {}) {\r\n return postEntity(this, {\r\n select,\r\n }, data);\r\n };\r\n\r\n // usage:\r\n // edm.currentCustomer.Accounts.findAll({ limit: 20 }), align with jsdata\r\n // TODO:\r\n // * refine available options, jsdata aligned arguments\r\n CollectionResourceIdentifier.prototype.findAll = function findAll(query = {}) {\r\n return this.get({ top: query.limit }).toPromise().then(legacyJsDataResultProcess);\r\n };\r\n\r\n // usage:\r\n // edm.currentCustomer.Accounts.update(123, { Name: 'another name' }), align with jsdata\r\n CollectionResourceIdentifier.prototype.update = function update(id, data) {\r\n return this.$withKey(id).patch(data).toPromise();\r\n };\r\n\r\n defineProducedPropertyOnClass(\r\n Navigation, 'odataURL',\r\n /**\r\n * @memberof Navigation#\r\n * @this Navigation\r\n * @returns {String} The URL to access the OData resource\r\n */\r\n function () { // eslint-disable-line func-names\r\n return url.join(odataRootURL, this.path);\r\n }\r\n );\r\n\r\n // put the plugin indicator\r\n return {\r\n odataRootURL,\r\n };\r\n })());\r\n}\r\n","import {\r\n defineConstProperty,\r\n} from '@bingads-webui/reflection';\r\nimport stringify from 'json-stable-stringify';\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { CollectionCacheItem, EntityCacheItem } from './server-call-cache-item';\r\nimport { ObservableCache } from './observable-cache';\r\nimport { CacheEvent } from './cache-event';\r\n\r\nexport function odataCachePlugin(edm, dependants, {\r\n fetchEntity,\r\n patchEntity,\r\n createEntity,\r\n deleteEntity,\r\n fetchCollection,\r\n action,\r\n}) {\r\n const entityDeps = dependants || {};\r\n\r\n defineConstProperty(edm, 'odata.cache', (() => {\r\n // TODO: when collection cache is ready, use the response to fill up entity cache\r\n const collectionCache = new ObservableCache();\r\n const cacheEvent = new CacheEvent();\r\n\r\n function getCollection(collectionResource, options, hardResetCacheData, bypassCache) {\r\n const typeName = collectionResource.type.elementType.name;\r\n const { path } = collectionResource;\r\n const stringifiedOptions = stringify(options);\r\n const cacheKeyPath = [typeName, path, stringifiedOptions];\r\n const item = collectionCache.get(cacheKeyPath);\r\n if (item && !bypassCache) {\r\n if (hardResetCacheData) {\r\n item.setData(hardResetCacheData);\r\n }\r\n return item;\r\n }\r\n const newItem = new CollectionCacheItem({\r\n fetch: () => fetchCollection(collectionResource, options),\r\n afterSubscribe: cache => collectionCache.observerAdded(cache, cacheKeyPath),\r\n afterUnsubscribe: cache => collectionCache.observerReduced(cache, cacheKeyPath),\r\n hardResetCacheData,\r\n });\r\n collectionCache.set(cacheKeyPath, newItem);\r\n return newItem;\r\n }\r\n\r\n function collectionAction(collectionResource, options, bypassCache) {\r\n const typeName = collectionResource.type.elementType.name;\r\n const { path } = collectionResource;\r\n const stringifiedOptions = stringify(options);\r\n const cacheKeyPath = [typeName, path, stringifiedOptions];\r\n const item = collectionCache.get(cacheKeyPath);\r\n if (item && !bypassCache) {\r\n return item;\r\n }\r\n const newItem = new CollectionCacheItem({\r\n fetch: () => action(collectionResource, options),\r\n afterSubscribe: cache => collectionCache.observerAdded(cache, cacheKeyPath),\r\n afterUnsubscribe: cache => collectionCache.observerReduced(cache, cacheKeyPath),\r\n });\r\n collectionCache.set(cacheKeyPath, newItem);\r\n return newItem;\r\n }\r\n\r\n const entityCache = new ObservableCache();\r\n\r\n function invalidateCollectionCache(typeName, skipEntityCallPaths) {\r\n collectionCache.invalidateObservedCache(typeName, skipEntityCallPaths);\r\n\r\n Object.keys(collectionCache.noObservers.entries).forEach((key) => {\r\n if (JSON.parse(key)[0] === typeName) {\r\n collectionCache.invalidateNoObserverCache(key);\r\n }\r\n });\r\n }\r\n\r\n function invalidateEntityCache(typeName, id, stringifiedOptions, skipEntityCallPaths) {\r\n const forAll = !id;\r\n\r\n if (entityCache.observedCache[typeName]) {\r\n if (forAll) {\r\n entityCache.invalidateObservedCache(typeName, skipEntityCallPaths);\r\n } else {\r\n entityCache.invalidateObservedCacheById(typeName, id, stringifiedOptions, skipEntityCallPaths);\r\n }\r\n }\r\n\r\n Object.keys(entityCache.noObservers.entries).forEach((key) => {\r\n const [type, parsedId, options] = JSON.parse(key);\r\n\r\n if (type === typeName\r\n && (forAll || (parsedId === id && options !== stringifiedOptions))) {\r\n entityCache.invalidateNoObserverCache(key);\r\n }\r\n });\r\n }\r\n\r\n function invalidate(typeName, id, stringifiedOptions, context, skipEntityCallPaths = null) {\r\n // eslint-disable-next-line no-param-reassign\r\n context[typeName] = true;\r\n invalidateCollectionCache(typeName, skipEntityCallPaths);\r\n invalidateEntityCache(typeName, id, stringifiedOptions, skipEntityCallPaths);\r\n\r\n _.each(entityDeps[typeName], (type) => {\r\n if (!context[type]) {\r\n // eslint-disable-next-line no-param-reassign\r\n context[type] = true;\r\n invalidate(type, null, '', context, skipEntityCallPaths);\r\n }\r\n });\r\n cacheEvent.notify('invalidate', typeName);\r\n }\r\n\r\n function invalidateTypeCache(typeName, id = null, stringifiedOptions = '', skipEntityCallPaths = null) {\r\n invalidate(typeName, id, stringifiedOptions, {}, skipEntityCallPaths);\r\n }\r\n\r\n function getEntity(resource, options, hardResetCacheData, bypassCache) {\r\n const typeName = resource.type.name;\r\n // entity odata function call will use the api, in this case we need to use path as hash key\r\n const idOrPath = resource.navigation.key || resource.path;\r\n const stringifiedOptions = stringify(options);\r\n const cacheKeyPath = [typeName, idOrPath, stringifiedOptions];\r\n const item = entityCache.get(cacheKeyPath);\r\n if (item && !bypassCache) {\r\n if (hardResetCacheData) {\r\n item.setData(hardResetCacheData);\r\n }\r\n return item;\r\n }\r\n const newItem = new EntityCacheItem({\r\n fetch: () => fetchEntity(resource, options),\r\n patch: update => patchEntity(resource, options, update)\r\n .tap(() => invalidateTypeCache(typeName, idOrPath, stringifiedOptions)),\r\n afterSubscribe: cache => entityCache.observerAdded(cache, cacheKeyPath),\r\n afterUnsubscribe: cache => entityCache.observerReduced(cache, cacheKeyPath),\r\n hardResetCacheData,\r\n });\r\n entityCache.set(cacheKeyPath, newItem);\r\n return newItem;\r\n }\r\n\r\n function entityAction(resource, options, bypassCache) {\r\n const typeName = resource.type.name;\r\n const { path } = resource.navigation;\r\n const stringifiedOptions = stringify(options);\r\n const cacheKeyPath = [typeName, path, stringifiedOptions];\r\n const item = entityCache.get(cacheKeyPath);\r\n if (item && !bypassCache) {\r\n return item;\r\n }\r\n const newItem = new EntityCacheItem({\r\n fetch: () => action(resource, options),\r\n afterSubscribe: cache => entityCache.observerAdded(cache, cacheKeyPath),\r\n afterUnsubscribe: cache => entityCache.observerReduced(cache, cacheKeyPath),\r\n });\r\n entityCache.set(cacheKeyPath, newItem);\r\n return newItem;\r\n }\r\n\r\n function postEntity(collectionResource, options, data) {\r\n const stringifiedOptions = stringify(options);\r\n const entityPromise = createEntity(collectionResource, options, data);\r\n const keyProperty = collectionResource.type.elementType.key;\r\n const typeName = collectionResource.type.elementType.name;\r\n const resourcePromise = entityPromise\r\n .then(entity => collectionResource.$withKey(entity[keyProperty]));\r\n let fetchFirstCalledAndPatchNotCalled = true;\r\n const newItem = new EntityCacheItem({\r\n fetch: () => {\r\n if (fetchFirstCalledAndPatchNotCalled) {\r\n fetchFirstCalledAndPatchNotCalled = false;\r\n return entityPromise;\r\n }\r\n return resourcePromise.then(resource => fetchEntity(resource, options));\r\n },\r\n patch: (update) => {\r\n fetchFirstCalledAndPatchNotCalled = false;\r\n return resourcePromise\r\n .tap(resource => invalidateTypeCache(\r\n typeName,\r\n resource.navigation.key,\r\n stringifiedOptions\r\n ))\r\n .then(resource => patchEntity(resource, options, update));\r\n },\r\n });\r\n resourcePromise.then((resource) => {\r\n const id = resource.navigation.key;\r\n const cacheKeyPath = [typeName, id, stringifiedOptions];\r\n\r\n newItem.afterSubscribe = cache => entityCache.observerAdded(cache, cacheKeyPath);\r\n newItem.afterUnsubscribe = cache => entityCache.observerReduced(cache, cacheKeyPath);\r\n entityCache.set(cacheKeyPath, newItem);\r\n invalidateTypeCache(typeName, id, stringifiedOptions);\r\n });\r\n return newItem;\r\n }\r\n\r\n function destroyEntityAsPromise(resource) {\r\n const typeName = resource.type.name;\r\n const id = resource.navigation.key;\r\n\r\n // NOTE: likezh: for delete, since the effect of deletion will be an entity being removed,\r\n // it is not useful to keep the call in cache. Hence we're directly returning a Promise here.\r\n return new Promise((resolve, reject) => {\r\n deleteEntity(resource)\r\n .then(() => {\r\n invalidateTypeCache(typeName, id, '');\r\n resolve();\r\n })\r\n .catch(err => reject(err));\r\n });\r\n }\r\n\r\n return {\r\n getEntity,\r\n postEntity,\r\n destroyEntityAsPromise,\r\n entityAction,\r\n getCollection,\r\n collectionAction,\r\n invalidateTypeCache,\r\n cacheEvent,\r\n };\r\n })());\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__75__;","import { noop } from 'underscore';\r\nimport { Observable } from '@bingads-webui-universal/observable';\r\n\r\n/**\r\n * make a server call and setup the cache item state\r\n * @param {Function} call function returns a Promise of data\r\n * @returns {Promise} a resolved promise\r\n */\r\nfunction makeCall(call) {\r\n this.state.status = 'PENDING';\r\n return call()\r\n .then((data) => {\r\n this.setData(data);\r\n\r\n return null;\r\n })\r\n .catch((err) => {\r\n this.observers.forEach((item) => {\r\n item.error(err);\r\n });\r\n this.state.status = 'ERROR';\r\n this.state.error = err;\r\n });\r\n}\r\n\r\nclass CacheItem extends Observable {\r\n constructor({\r\n fetch,\r\n afterSubscribe = noop,\r\n afterUnsubscribe = noop,\r\n hardResetCacheData,\r\n }) {\r\n super((observer) => {\r\n this.observers.add(observer);\r\n this.afterSubscribe(this);\r\n if (this.state.status === 'WAITING') {\r\n if (hardResetCacheData) {\r\n this.setData(hardResetCacheData);\r\n } else {\r\n this.invalidate();\r\n }\r\n } else if (this.state.status === 'READY') {\r\n observer.next(this.state.data);\r\n } else if (this.state.status === 'ERROR') {\r\n observer.error(this.state.error);\r\n }\r\n return () => {\r\n this.observers.delete(observer);\r\n this.afterUnsubscribe(this);\r\n };\r\n });\r\n this.fetch = fetch;\r\n // eslint-disable-next-line no-undef\r\n this.observers = new Set();\r\n this.afterSubscribe = afterSubscribe;\r\n this.afterUnsubscribe = afterUnsubscribe;\r\n this.state = {\r\n // WAITING - before any subscription\r\n // PENDING - has subscription, call made but not responded\r\n // READY - already has data\r\n // ERROR - already has error\r\n status: 'WAITING',\r\n data: null,\r\n error: null,\r\n };\r\n }\r\n\r\n setData(data) {\r\n this.observers.forEach((item) => {\r\n item.next(data);\r\n });\r\n this.state.status = 'READY';\r\n this.state.data = data;\r\n\r\n return null;\r\n }\r\n\r\n invalidate() {\r\n if (this.observers.size === 0) {\r\n this.state.status = 'WAITING';\r\n } else {\r\n makeCall.call(this, () => this.fetch());\r\n }\r\n }\r\n\r\n hasObservers() {\r\n return this.observers.size > 0;\r\n }\r\n}\r\n\r\nexport class CollectionCacheItem extends CacheItem {\r\n}\r\n\r\nclass PatchEntityCacheItem extends Observable {\r\n constructor() {\r\n super((observer) => {\r\n this.observers.add(observer);\r\n if (this.state.status === 'READY') {\r\n observer.next(this.state.data);\r\n } else if (this.state.status === 'ERROR') {\r\n observer.error(this.state.error);\r\n }\r\n return () => {\r\n this.observers.delete(observer);\r\n };\r\n });\r\n // eslint-disable-next-line no-undef\r\n this.observers = new Set();\r\n this.state = {\r\n // WAITING - before any subscription\r\n // READY - already has data\r\n // ERROR - already has error\r\n status: 'WAITING',\r\n data: null,\r\n error: null,\r\n };\r\n }\r\n\r\n next(data) {\r\n this.observers.forEach((item) => {\r\n item.next(data);\r\n });\r\n this.state.status = 'READY';\r\n this.state.data = data;\r\n }\r\n\r\n error(err) {\r\n this.observers.forEach((item) => {\r\n item.error(err);\r\n });\r\n this.state.status = 'ERROR';\r\n this.state.error = err;\r\n }\r\n}\r\n\r\nexport class EntityCacheItem extends CacheItem {\r\n constructor({\r\n fetch,\r\n patch,\r\n afterSubscribe = noop,\r\n afterUnsubscribe = noop,\r\n hardResetCacheData,\r\n }) {\r\n super({\r\n fetch,\r\n afterSubscribe,\r\n afterUnsubscribe,\r\n hardResetCacheData,\r\n });\r\n this.patch = patch;\r\n }\r\n\r\n update(update) {\r\n const patchEntityCacheItem = new PatchEntityCacheItem();\r\n\r\n const originalStatus = this.state.status;\r\n this.state.status = 'PENDING';\r\n this.patch(update)\r\n .then((data) => {\r\n this.observers.forEach((item) => {\r\n item.next(data);\r\n });\r\n this.state.status = 'READY';\r\n this.state.data = data;\r\n })\r\n .catch((err) => {\r\n patchEntityCacheItem.error(err);\r\n this.state.status = originalStatus;\r\n });\r\n\r\n this.subscribe({\r\n next: data => patchEntityCacheItem.next(data),\r\n error: err => patchEntityCacheItem.error(err),\r\n });\r\n\r\n return patchEntityCacheItem;\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__77__;","import _ from 'underscore';\r\nimport { get, set } from '@bingads-webui-universal/primitive-utilities';\r\nimport stringify from 'json-stable-stringify';\r\nimport { TimeAwareCache, LRUReplacementStrategy } from '@bingads-webui-universal/time-aware-cache';\r\nimport { CACHE_SIZE, DEFAULT_TTL } from './constants';\r\n\r\nfunction deletePropertyPath(obj, path) {\r\n let o = obj;\r\n const { length } = path;\r\n for (let i = 0; i < length - 1; i += 1) {\r\n o = o[path[i]];\r\n\r\n if (typeof o === 'undefined') {\r\n return;\r\n }\r\n }\r\n delete o[path[length - 1]];\r\n}\r\n\r\nexport class ObservableCache {\r\n observedCache = {};\r\n noObservers = new TimeAwareCache({\r\n ttl: DEFAULT_TTL,\r\n strategy: new LRUReplacementStrategy({ limit: CACHE_SIZE }),\r\n });\r\n\r\n set(path, item) {\r\n if (item.hasObservers()) {\r\n set(this.observedCache, path, item);\r\n } else {\r\n this.noObservers.set(stringify(path), item);\r\n }\r\n }\r\n\r\n get(path) {\r\n return get(this.observedCache, path) || this.noObservers.get(stringify(path));\r\n }\r\n\r\n observerAdded(item, path) {\r\n if (item.observers.size === 1) {\r\n this.noObservers.del(stringify(path));\r\n set(this.observedCache, path, item);\r\n }\r\n }\r\n\r\n observerReduced(item, path) {\r\n if (item.observers.size === 0) {\r\n deletePropertyPath(this.observedCache, path);\r\n this.noObservers.set(stringify(path), item);\r\n }\r\n }\r\n\r\n invalidateObservedCache(typeName, skipEntityCallPaths = null) {\r\n const clearCacheKeys = [];\r\n _.map(this.observedCache[typeName], (cacheItems, subKey) => {\r\n const skipCall = skipEntityCallPaths && _.find(skipEntityCallPaths, path => subKey.includes(path) || `${typeName}s(${subKey})`.includes(path));\r\n if (skipCall) {\r\n clearCacheKeys.push(subKey);\r\n } else {\r\n _.each(cacheItems, (cacheItem) => {\r\n cacheItem.invalidate();\r\n });\r\n }\r\n });\r\n clearCacheKeys.forEach((key) => {\r\n delete this.observedCache[typeName][key];\r\n });\r\n }\r\n\r\n invalidateObservedCacheById(typeName, id, stringifiedOptions, skipEntityCallPaths = null) {\r\n const skipCall = skipEntityCallPaths && _.find(skipEntityCallPaths, path => `${typeName}s(${id})`.includes(path));\r\n if (skipCall) {\r\n delete this.observedCache[typeName][id];\r\n } else {\r\n _.each(this.observedCache[typeName][id], (cacheItem, options) => {\r\n if (options !== stringifiedOptions) {\r\n cacheItem.invalidate();\r\n }\r\n });\r\n }\r\n }\r\n\r\n invalidateNoObserverCache(key) {\r\n const cache = this.noObservers.get(key);\r\n\r\n if (cache) {\r\n cache.invalidate();\r\n }\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__79__;","export const CACHE_SIZE = 200;\r\nexport const LLT_EXPIRED = -1;\r\n// time to live defaults to 2 hours\r\nexport const DEFAULT_TTL = 2 * 60 * 60 * 1000;\r\n","import { Observable } from '@bingads-webui-universal/observable';\r\n\r\nexport class CacheEvent extends Observable {\r\n constructor() {\r\n super((observer) => {\r\n this.observers.add(observer);\r\n return () => {\r\n this.observers.delete(observer);\r\n };\r\n });\r\n\r\n // eslint-disable-next-line no-undef\r\n this.observers = new Set();\r\n }\r\n\r\n notify(type, entity) {\r\n this.observers.forEach((ob) => {\r\n ob.next({\r\n type,\r\n entity,\r\n });\r\n });\r\n }\r\n}\r\n","export { resIdsPlugin } from './src/index';\r\n","/**\r\n * the Reource Identifier plugin for entity-data-model\r\n * @module component/edm-resource-identifiers/index\r\n */\r\nimport _ from 'underscore';\r\nimport {\r\n defineConstProperty,\r\n defineProducedPropertyOnClass,\r\n} from '@bingads-webui/reflection';\r\nimport * as url from '@bingads-webui/url-util';\r\nimport { Registry } from '@bingads-webui/registry';\r\nimport { createNavigation, createCastNavigation, createWithKeyNavigation, createCallNavigation, createResourceIdentifier } from '@bingads-webui/edm-shared';\r\n\r\n/**\r\n * @param {EDM} edm - The EDM object to apply this plugin to\r\n * @return {Void} nothing to return\r\n */\r\nexport function resIdsPlugin(edm) {\r\n if (edm.resourceIdentifiers) {\r\n return;\r\n }\r\n\r\n /**\r\n * @name edm\r\n * @property {Registry} resourceIdentifiers - A registry of all resource-identifiers\r\n * @property {Class} resourceIdentifiers.Navigation - The base type of all navigations\r\n * @property {Class} resourceIdentifiers.PropertyNavigation - The navigation following a property\r\n * @property {Class} resourceIdentifiers.CastNavigation - The navigation following a type casting\r\n * @property {Class} resourceIdentifiers.WithKeyNavigation\r\n * - The navigation of selecting a single instance from an entity set\r\n * @property {Class} resourceIdentifiers.CallNavigation - The navigation of calling a callable\r\n * @property {Class} resourceIdentifiers.ResourceIdentifier\r\n * - The base type of all resource-identifiers\r\n */\r\n defineConstProperty(edm, 'resourceIdentifiers', (() => {\r\n const resourceIdentifiers = new Registry();\r\n const Navigation = createNavigation();\r\n\r\n /**\r\n * @class PropertyNavigation\r\n * @extends Navigation\r\n * @property {Property} property - The property navigated with\r\n */\r\n class PropertyNavigation extends Navigation {\r\n constructor({\r\n source,\r\n property,\r\n name,\r\n }) {\r\n super({\r\n source,\r\n });\r\n defineConstProperty(this, 'property', property);\r\n defineConstProperty(this, 'name', name);\r\n defineConstProperty(this, 'path', url.join(source.path, name));\r\n }\r\n\r\n toSelfJSON() {\r\n return {\r\n type: 'property',\r\n name: this.name,\r\n };\r\n }\r\n\r\n static defineOn(TypeResID, properties) {\r\n _.each(properties, (property, name) => {\r\n /**\r\n * Navigation property factory for the defined property\r\n * @memberof TypeResID#\r\n * @this TypeResID\r\n * @returns {ResourceIdentifier} The ResourceIdentifier to access the property\r\n */\r\n function navPropFactory() {\r\n return new property.type.ResourceIdentifier({\r\n navigation: new PropertyNavigation({ source: this, property, name }),\r\n });\r\n }\r\n\r\n defineProducedPropertyOnClass(TypeResID, name, navPropFactory);\r\n });\r\n }\r\n }\r\n\r\n\r\n const CastNavigation = createCastNavigation(Navigation, url, edm);\r\n const WithKeyNavigation = createWithKeyNavigation(Navigation);\r\n const CallNavigation = createCallNavigation(Navigation, edm);\r\n const ResourceIdentifier = createResourceIdentifier();\r\n\r\n /**\r\n * define ResourceIdentifier type for the given type\r\n * @param {Type} type - An instance of one of the meta types\r\n * @return {Class} the ResourceIdentifier class\r\n */\r\n function resourceIdentifierForType(type) {\r\n // duck type, if the type has a \"baseType\", use its ResourceIdentifier as the super class\r\n const Base = type.baseType ? type.baseType.ResourceIdentifier : ResourceIdentifier;\r\n\r\n const AccessorType = class extends Base {\r\n };\r\n\r\n /**\r\n * @name resId\r\n * @type ResourceIdentifier\r\n * @property {Type} type - The type associated with the ResourceIdentifier\r\n */\r\n defineConstProperty(AccessorType.prototype, 'type', type);\r\n\r\n resourceIdentifiers.register(AccessorType, type.name);\r\n\r\n return AccessorType;\r\n }\r\n\r\n // For each of the meta types defined by the type mixin, define the\r\n // \"ResourceIdentifier\" property\r\n _.each({\r\n\r\n // the root class 'Type' don't have an ResourceIdentifier property\r\n // Type: { factory() { } },\r\n\r\n PrimitiveType: {\r\n\r\n /**\r\n * PrimitiveType ResourceIdentifier type factory\r\n * @memberof PrimitiveType#\r\n * @this PrimitiveType\r\n * @returns {Class} The ResourceIdentifier type of the PrimitiveType\r\n */\r\n factory() {\r\n const PrimitiveTypeResID = resourceIdentifierForType(this);\r\n\r\n return PrimitiveTypeResID;\r\n },\r\n },\r\n\r\n ObjectType: {\r\n\r\n /**\r\n * ObjectType ResourceIdentifier type factory\r\n * @memberof ObjectType#\r\n * @this ObjectType\r\n * @returns {Class} The ResourceIdentifier type of the ObjectType\r\n */\r\n factory() {\r\n const ObjectTypeResID = resourceIdentifierForType(this);\r\n\r\n CastNavigation.defineOn(ObjectTypeResID);\r\n PropertyNavigation.defineOn(ObjectTypeResID, this.properties);\r\n\r\n return ObjectTypeResID;\r\n },\r\n },\r\n\r\n // fallback to ObjectType.prototype.ResourceIdentifier\r\n // EntityType: { factory () { } },\r\n\r\n // fallback to ObjectType.prototype.ResourceIdentifier\r\n // ComplexType: { factory () { } },\r\n\r\n CollectionType: {\r\n\r\n /**\r\n * CollectionType ResourceIdentifier type factory\r\n * @memberof CollectionType#\r\n * @this CollectionType\r\n * @returns {Class} the ResourceIdentifier type of the CollectionType\r\n */\r\n factory() {\r\n const CollectionTypeResID = resourceIdentifierForType(this);\r\n\r\n CastNavigation.defineOn(CollectionTypeResID);\r\n // Only the entity sets can be navigated with keys\r\n if (this.elementType instanceof edm.types.EntityType) {\r\n WithKeyNavigation.defineOn(CollectionTypeResID);\r\n }\r\n PropertyNavigation.defineOn(CollectionTypeResID, this.properties);\r\n\r\n return CollectionTypeResID;\r\n },\r\n },\r\n\r\n CallableType: {\r\n\r\n /**\r\n * CallableType ResourceIdentifier type factory\r\n * @memberof CallableType#\r\n * @this CallableType\r\n * @returns {Class} The ResourceIdentifier type of the CallableType\r\n */\r\n factory() {\r\n const CallableTypeResID = resourceIdentifierForType(this);\r\n\r\n CallNavigation.defineOn(CallableTypeResID);\r\n\r\n return CallableTypeResID;\r\n },\r\n },\r\n\r\n }, (def, typeName) => {\r\n /**\r\n * @name type\r\n * @type Type\r\n * @property {Class} ResourceIdentifier - The ResourceIdentifier type of the type\r\n */\r\n defineProducedPropertyOnClass(edm.types[typeName], 'ResourceIdentifier', def.factory);\r\n });\r\n\r\n _.chain(resourceIdentifiers)\r\n .defineConstProperty('ResourceIdentifier', ResourceIdentifier)\r\n .defineConstProperty('Navigation', Navigation)\r\n .defineConstProperty('PropertyNavigation', PropertyNavigation)\r\n .defineConstProperty('CastNavigation', CastNavigation)\r\n .defineConstProperty('WithKeyNavigation', WithKeyNavigation)\r\n .defineConstProperty('CallNavigation', CallNavigation)\r\n .value();\r\n\r\n return resourceIdentifiers;\r\n })());\r\n}\r\n","export { resIdsPlugin } from './src/index';\r\n","/**\r\n * the Reource Identifier plugin for entity-data-model\r\n * @module component/edm-resource-identifiers/index\r\n */\r\nimport _ from 'underscore';\r\nimport {\r\n defineConstProperty,\r\n defineProducedPropertyOnClass,\r\n} from '@bingads-webui/reflection';\r\nimport * as url from '@bingads-webui/url-util';\r\nimport { Registry } from '@bingads-webui/registry';\r\nimport { createNavigation, createCastNavigation, createWithKeyNavigation, createCallNavigation, createResourceIdentifier } from '@bingads-webui/edm-shared';\r\n\r\n/**\r\n * @param {EDM} edm - The EDM object to apply this plugin to\r\n * @return {Void} nothing to return\r\n */\r\nexport function resIdsPlugin(edm) {\r\n if (edm.resourceIdentifiers) {\r\n return;\r\n }\r\n\r\n /**\r\n * @name edm\r\n * @property {Registry} resourceIdentifiers - A registry of all resource-identifiers\r\n * @property {Class} resourceIdentifiers.Navigation - The base type of all navigations\r\n * @property {Class} resourceIdentifiers.PropertyNavigation - The navigation following a property\r\n * @property {Class} resourceIdentifiers.CastNavigation - The navigation following a type casting\r\n * @property {Class} resourceIdentifiers.WithKeyNavigation\r\n * - The navigation of selecting a single instance from an entity set\r\n * @property {Class} resourceIdentifiers.CallNavigation - The navigation of calling a callable\r\n * @property {Class} resourceIdentifiers.ResourceIdentifier\r\n * - The base type of all resource-identifiers\r\n */\r\n defineConstProperty(edm, 'resourceIdentifiers', (() => {\r\n const resourceIdentifiers = new Registry();\r\n const Navigation = createNavigation();\r\n\r\n /**\r\n * @class PropertyNavigation\r\n * @extends Navigation\r\n * @property {Property} property - The property navigated with\r\n */\r\n class PropertyNavigation extends Navigation {\r\n constructor({\r\n source,\r\n property,\r\n name,\r\n }) {\r\n super({\r\n source,\r\n });\r\n defineConstProperty(this, 'property', property);\r\n defineConstProperty(this, 'name', name);\r\n defineConstProperty(this, 'path', url.join(source.path, name));\r\n }\r\n\r\n toSelfJSON() {\r\n return {\r\n type: 'property',\r\n name: this.name,\r\n };\r\n }\r\n\r\n static defineOn(TypeResID, navigationProperties) {\r\n _.each(navigationProperties, (property, name) => {\r\n /**\r\n * Navigation property factory for the defined property\r\n * @memberof TypeResID#\r\n * @this TypeResID\r\n * @returns {ResourceIdentifier} The ResourceIdentifier to access the property\r\n */\r\n function navPropFactory() {\r\n return new property.type.ResourceIdentifier({\r\n navigation: new PropertyNavigation({ source: this, property, name }),\r\n });\r\n }\r\n\r\n defineProducedPropertyOnClass(TypeResID, name, navPropFactory);\r\n });\r\n }\r\n }\r\n\r\n class CallableNavigation extends Navigation {\r\n constructor({\r\n source,\r\n name,\r\n }) {\r\n super({\r\n source,\r\n });\r\n defineConstProperty(this, 'name', name);\r\n defineConstProperty(this, 'path', url.join(source.path, name));\r\n }\r\n\r\n static defineOn(TypeResID, callable) {\r\n function defineCallableOn(resID, callableTypes) {\r\n _.each(callableTypes, (type) => {\r\n /**\r\n * factory for the callables\r\n * @memberof resID#\r\n * @this resID\r\n * @returns {ResourceIdentifier} The ResourceIdentifier to access the property\r\n */\r\n function factory() {\r\n return new type.ResourceIdentifier({\r\n navigation: new CallableNavigation({ source: this, name: type.callableName }),\r\n });\r\n }\r\n defineProducedPropertyOnClass(resID, type.callableName, factory);\r\n });\r\n }\r\n defineCallableOn(TypeResID, callable.actions);\r\n defineCallableOn(TypeResID, callable.functions);\r\n }\r\n }\r\n\r\n const CastNavigation = createCastNavigation(Navigation, url, edm);\r\n const WithKeyNavigation = createWithKeyNavigation(Navigation);\r\n const CallNavigation = createCallNavigation(Navigation, edm);\r\n const ResourceIdentifier = createResourceIdentifier();\r\n\r\n /**\r\n * @class CollectionResourceIdentifier\r\n * @property {Navigation} navigation\r\n * - The navigation back tracking the parent ResourceIdentifier\r\n */\r\n class CollectionResourceIdentifier extends ResourceIdentifier {\r\n /**\r\n * Create a ResourceIdentifier\r\n * @param {Object} [options] - The constructor options\r\n * @param {Navigation} [options.navigation]\r\n * - The navigation back tracking the parent ResourceIdentifier\r\n * @return {Void} Nothing to return\r\n */\r\n constructor({\r\n navigation,\r\n } = {}) {\r\n super({ navigation });\r\n }\r\n }\r\n\r\n /**\r\n * define ResourceIdentifier type for the given type\r\n * @param {Type} type - An instance of one of the meta types\r\n * @return {Class} the ResourceIdentifier class\r\n */\r\n function resourceIdentifierForType(type) {\r\n // duck type, if the type has a \"baseType\", use its ResourceIdentifier as the super class\r\n const DefaultBase = type instanceof edm.types.CollectionType ?\r\n CollectionResourceIdentifier :\r\n ResourceIdentifier;\r\n const Base = type.baseType ? type.baseType.ResourceIdentifier : DefaultBase;\r\n\r\n const AccessorType = class extends Base {\r\n };\r\n\r\n /**\r\n * @name resId\r\n * @type ResourceIdentifier\r\n * @property {Type} type - The type associated with the ResourceIdentifier\r\n */\r\n defineConstProperty(AccessorType.prototype, 'type', type);\r\n\r\n resourceIdentifiers.register(AccessorType, type.name);\r\n\r\n return AccessorType;\r\n }\r\n\r\n // For each of the meta types defined by the type mixin, define the\r\n // \"ResourceIdentifier\" property\r\n _.each({\r\n\r\n // the root class 'Type' don't have an ResourceIdentifier property\r\n // Type: { factory() { } },\r\n\r\n PrimitiveType: {\r\n\r\n /**\r\n * PrimitiveType ResourceIdentifier type factory\r\n * @memberof PrimitiveType#\r\n * @this PrimitiveType\r\n * @returns {Class} The ResourceIdentifier type of the PrimitiveType\r\n */\r\n factory() {\r\n const PrimitiveTypeResID = resourceIdentifierForType(this);\r\n\r\n return PrimitiveTypeResID;\r\n },\r\n },\r\n\r\n ObjectType: {\r\n\r\n /**\r\n * ObjectType ResourceIdentifier type factory\r\n * @memberof ObjectType#\r\n * @this ObjectType\r\n * @returns {Class} The ResourceIdentifier type of the ObjectType\r\n */\r\n factory() {\r\n const ObjectTypeResID = resourceIdentifierForType(this);\r\n\r\n CastNavigation.defineOn(ObjectTypeResID);\r\n PropertyNavigation.defineOn(ObjectTypeResID, this.navigationProperties);\r\n if (this.callable) {\r\n CallableNavigation.defineOn(ObjectTypeResID, this.callable);\r\n }\r\n return ObjectTypeResID;\r\n },\r\n },\r\n\r\n // fallback to ObjectType.prototype.ResourceIdentifier\r\n // EntityType: { factory () { } },\r\n\r\n // fallback to ObjectType.prototype.ResourceIdentifier\r\n // ComplexType: { factory () { } },\r\n\r\n CollectionType: {\r\n\r\n /**\r\n * CollectionType ResourceIdentifier type factory\r\n * @memberof CollectionType#\r\n * @this CollectionType\r\n * @returns {Class} the ResourceIdentifier type of the CollectionType\r\n */\r\n factory() {\r\n const CollectionTypeResID = resourceIdentifierForType(this);\r\n\r\n CastNavigation.defineOn(CollectionTypeResID);\r\n // Only the entity sets can be navigated with keys\r\n if (this.elementType instanceof edm.types.EntityType) {\r\n WithKeyNavigation.defineOn(CollectionTypeResID);\r\n }\r\n PropertyNavigation.defineOn(CollectionTypeResID, this.navigationProperties);\r\n if (this.callable) {\r\n CallableNavigation.defineOn(CollectionTypeResID, this.callable);\r\n }\r\n\r\n return CollectionTypeResID;\r\n },\r\n },\r\n\r\n CallableType: {\r\n\r\n /**\r\n * CallableType ResourceIdentifier type factory\r\n * @memberof CallableType#\r\n * @this CallableType\r\n * @returns {Class} The ResourceIdentifier type of the CallableType\r\n */\r\n factory() {\r\n const CallableTypeResID = resourceIdentifierForType(this);\r\n\r\n CallNavigation.defineOn(CallableTypeResID);\r\n\r\n return CallableTypeResID;\r\n },\r\n },\r\n\r\n }, (def, typeName) => {\r\n /**\r\n * @name type\r\n * @type Type\r\n * @property {Class} ResourceIdentifier - The ResourceIdentifier type of the type\r\n */\r\n defineProducedPropertyOnClass(edm.types[typeName], 'ResourceIdentifier', def.factory);\r\n });\r\n\r\n _.chain(resourceIdentifiers)\r\n .defineConstProperty('ResourceIdentifier', ResourceIdentifier)\r\n .defineConstProperty('CollectionResourceIdentifier', CollectionResourceIdentifier)\r\n .defineConstProperty('Navigation', Navigation)\r\n .defineConstProperty('PropertyNavigation', PropertyNavigation)\r\n .defineConstProperty('CastNavigation', CastNavigation)\r\n .defineConstProperty('WithKeyNavigation', WithKeyNavigation)\r\n .defineConstProperty('CallNavigation', CallNavigation)\r\n .defineConstProperty('CallableNavigation', CallableNavigation)\r\n .value();\r\n\r\n return resourceIdentifiers;\r\n })());\r\n}\r\n","export { createProperty, createParameter, createType, createPrimitiveType, createCollectionType,\r\n compileProperties, compileParameters, createResolveType, ONEOF_TYPE_PREFIX } from './src/types-plugin-shared';\r\nexport { createNavigation, createCastNavigation, createWithKeyNavigation, createCallNavigation,\r\n createResourceIdentifier } from './src/resource-identifiers-shared';\r\n\r\n","import _ from 'underscore';\r\nimport { defineConstProperty } from '@bingads-webui/reflection';\r\nimport { Registry } from '@bingads-webui/registry';\r\n\r\nexport const ONEOF_TYPE_PREFIX = '@ONEOF';\r\nconst COLLECTION_TYPE_POSTFIX = '@COLL';\r\n\r\nfunction isOneOfType(typeName) {\r\n return typeName.indexOf(ONEOF_TYPE_PREFIX) === 0;\r\n}\r\n\r\nfunction hasPostfix(str, postfix) {\r\n return str.slice(-postfix.length) === postfix;\r\n}\r\n\r\nfunction removePostfix(str, postfix) {\r\n return str.slice(0, -postfix.length);\r\n}\r\n\r\nexport function createResolveType(oneOfTypes, types, OneOfType) {\r\n return function resolveType(name, namespace) {\r\n if (hasPostfix(name, COLLECTION_TYPE_POSTFIX)) {\r\n return resolveType(removePostfix(name, COLLECTION_TYPE_POSTFIX), namespace).collectionType;\r\n }\r\n\r\n if (isOneOfType(name)) {\r\n if (!oneOfTypes.has(name)) {\r\n const prefixLength = ONEOF_TYPE_PREFIX.length + 1;\r\n const typeNames = name.substr(prefixLength, name.length - prefixLength - 1).split(',');\r\n // eslint-disable-next-line no-use-before-define\r\n oneOfTypes.set(name, new OneOfType({ typeNames }));\r\n }\r\n\r\n return oneOfTypes.get(name);\r\n }\r\n\r\n return types.resolve(name, namespace);\r\n };\r\n}\r\n\r\n/**\r\n * @typedef {Object} ParameterInfo\r\n * @property {String} typeName - The name of the parameter's type\r\n *\r\n * @memberof CallableType#\r\n * @this CallableType\r\n * @param {Object.} parameters - The parameters to compile\r\n * @param {Object.Parameter} Parameter - The Parameter object\r\n * @return {Object.} A mapping for name to compiled Parameters\r\n */\r\nexport function compileParameters(parameters, Parameter = Object) {\r\n const { namespace } = this;\r\n\r\n return _.mapObject(parameters, ({ typeName }, name) =>\r\n new Parameter({ name, namespace, typeName }));\r\n}\r\n\r\n/**\r\n * @typedef {Object} PropertyInfo\r\n * @property {String} typeName - The name of the propertie's type\r\n *\r\n * @memberof ObjectType#\r\n * @this ObjectType\r\n * @param {Object.} properties - The properties to be compiled\r\n * @param {Object.Property} Property - The Property object\r\n * @return {Object.} a mapping for name to compiled Properties\r\n */\r\nexport function compileProperties(properties, Property = Object) {\r\n const { namespace } = this;\r\n\r\n return _.mapObject(properties, ({\r\n typeName,\r\n }, name) =>\r\n new Property({\r\n name,\r\n typeName,\r\n namespace,\r\n }));\r\n}\r\n\r\nexport function createType(types) {\r\n/**\r\n * @class Type\r\n * @property {String} name - The qualified name of the type\r\n * @property {String} namespace - The namespace of the type\r\n * @property {String} shortName - The short name of the type\r\n */\r\n// eslint-disable-next-line no-unused-vars\r\n return class Type {\r\n /**\r\n * Create and register a type\r\n * A side effect of Type creation is registering itself to the type registry\r\n * @param {Object} options - The constructor options\r\n * @param {String} options.name - The name of the type\r\n * @return {void}\r\n */\r\n constructor({\r\n name,\r\n }) {\r\n _.chain(this)\r\n .defineConstProperty('name', name)\r\n .defineConstProperty('namespace', Registry.getNamespace(name))\r\n .defineConstProperty('shortName', Registry.getShortName(name))\r\n .value();\r\n types.register(this);\r\n }\r\n };\r\n}\r\n\r\nexport function createPrimitiveType(Superclass = Object) {\r\n /**\r\n * @class PrimitiveType\r\n * @extends Type\r\n * @property {Class} jsType - The corresponding JavaScript type\r\n */\r\n return class PrimitiveType extends Superclass {\r\n /**\r\n * Create a PrimitiveType\r\n * @param {Object} options - The constructor options\r\n * @param {String} options.name - The name of the type\r\n * @param {Class} options.jsType - The JavaScript type of the primitive type\r\n * @return {void}\r\n */\r\n constructor({\r\n name,\r\n jsType,\r\n }) {\r\n super({ name });\r\n defineConstProperty(this, 'jsType', jsType);\r\n }\r\n };\r\n}\r\n\r\n\r\nexport function createProperty(resolveType) {\r\n /**\r\n * @class Property\r\n * @property {String} name - The name of the property\r\n * @property {String} typeName - The name of the property's type\r\n * @property {Type} type - The type of the property\r\n */\r\n return class Property {\r\n /**\r\n * Create a property\r\n * @param {Object} options - The constructor options\r\n * @param {String} options.name - The name of the property\r\n * @param {String} options.typeName - The name of the propertie's type\r\n * @param {String} options.namespace - The namespace of the propertie's type\r\n * @return {void}\r\n */\r\n constructor({\r\n name,\r\n typeName,\r\n namespace,\r\n }) {\r\n _.chain(this)\r\n .defineConstProperty('name', name)\r\n .defineConstProperty('typeName', typeName)\r\n .defineProducedProperty('type', () => resolveType(typeName, namespace))\r\n .value();\r\n }\r\n };\r\n}\r\n\r\nexport function createParameter(resolveType) {\r\n /**\r\n * @class Parameter\r\n * @property {String} name - The name of the parameter\r\n * @property {String} typeName - The name of the paramter's type\r\n * @property {type} type - The type of the parameter\r\n */\r\n return class Parameter {\r\n /**\r\n * Create a parameter\r\n * @param {Object} options - The constructor options\r\n * @param {String} options.name - The name of the parameter\r\n * @param {String} options.typeName - The name of the parameter's type\r\n * @param {String} options.namespace - The namespace of the parameter's type\r\n * @return {void}\r\n */\r\n constructor({\r\n name,\r\n typeName,\r\n namespace,\r\n }) {\r\n _.chain(this)\r\n .defineConstProperty('name', name)\r\n .defineConstProperty('typeName', typeName)\r\n .defineProducedProperty('type', () => resolveType(typeName, namespace))\r\n .value();\r\n }\r\n };\r\n}\r\n\r\nexport function createCollectionType(Superclass = Object, resolveType) {\r\n /**\r\n * @class CollectionType\r\n * @extends ObjectType\r\n * @property {String} elementTypeName - The name of the element type\r\n * @property {Type} elementType - The type of the elements\r\n */\r\n return class CollectionType extends Superclass {\r\n /**\r\n * Create a CollectionType\r\n * @param {Object} options - The constructor options\r\n * @param {Object.} options.properties - The property definition\r\n * @param {String} options.baseTypeName - The name of the base type\r\n * @param {String} options.elementTypeName - The name of the element type\r\n * @return {void}\r\n */\r\n constructor({\r\n properties,\r\n baseTypeName,\r\n elementTypeName,\r\n }) {\r\n super({\r\n name: CollectionType.collectionTypeName(elementTypeName),\r\n properties,\r\n baseTypeName,\r\n });\r\n _.chain(this)\r\n .defineConstProperty('elementTypeName', elementTypeName)\r\n .defineProducedProperty('elementType', () => resolveType(this.elementTypeName, this.namespace))\r\n .value();\r\n }\r\n\r\n /**\r\n * Get the CollectionType's name from it's element type name\r\n * @param {String} typeName - The name of the elementType\r\n * @return {String} The name of the CollectionType\r\n */\r\n static collectionTypeName(typeName) {\r\n return `${typeName}${COLLECTION_TYPE_POSTFIX}`;\r\n }\r\n };\r\n}\r\n","import _ from 'underscore';\r\nimport { defineConstProperty } from '@bingads-webui/reflection';\r\nimport * as urlUtil from '@bingads-webui/url-util';\r\n\r\nexport function createNavigation() {\r\n /**\r\n * @class Navigation\r\n * @property {ResourceIdentifier} source - The source accessor navigated from\r\n */\r\n return class Navigation {\r\n constructor({\r\n source,\r\n }) {\r\n defineConstProperty(this, 'source', source);\r\n }\r\n\r\n toJSON() {\r\n return [...this.source.toJSON(), this.toSelfJSON()];\r\n }\r\n\r\n toSelfJSON() {\r\n throw new Error('I\\'m abstract');\r\n }\r\n };\r\n}\r\n\r\nexport function createCastNavigation(Superclass = Object, url, edm) {\r\n /**\r\n * @class CastNavigation\r\n * @extends Navigation\r\n * @property {Type} type - The type casting to\r\n * @property {String} name - The type name used for casting\r\n */\r\n return class CastNavigation extends Superclass {\r\n constructor({\r\n source,\r\n type,\r\n name = type.name,\r\n }) {\r\n super({\r\n source,\r\n });\r\n\r\n _.chain(this)\r\n .defineConstProperty('type', type)\r\n .defineConstProperty('name', name)\r\n .value();\r\n\r\n defineConstProperty(this, 'path', url.join(source.path, name));\r\n }\r\n\r\n toSelfJSON() {\r\n return {\r\n type: 'function',\r\n name: CastNavigation.navigationName,\r\n parameters: [this.name],\r\n };\r\n }\r\n\r\n static get navigationName() {\r\n return '$cast';\r\n }\r\n\r\n static defineOn(TypeResID) {\r\n /**\r\n * $cast navigation method of the TypeResID\r\n * @memberof TypeResID#\r\n * @this TypeResID\r\n * @param {String} name - The name of the subclass\r\n * @returns {TypeResID} The ResourceIdentifier to access the subclass object\r\n */\r\n function navCastMethod(name) {\r\n const entityType = edm.types.resolve(name, this.type.namespace);\r\n const type = TypeResID.prototype.type instanceof edm.types.CollectionType ?\r\n entityType.collectionType :\r\n entityType;\r\n const navigation = new CastNavigation({ source: this, type: entityType, name });\r\n\r\n return new type.ResourceIdentifier({ navigation });\r\n }\r\n\r\n defineConstProperty(TypeResID.prototype, CastNavigation.navigationName, navCastMethod);\r\n }\r\n };\r\n}\r\n\r\nexport function createWithKeyNavigation(Superclass = Object) {\r\n /**\r\n * @class WithKeyNavigation\r\n * @extends Navigation\r\n * @property {String|Number} key - The key of the selected entity\r\n * @property {String|Number} ignoreKeyTypeInPath - By default false. If true, compose path following //\r\n */\r\n return class WithKeyNavigation extends Superclass {\r\n constructor({\r\n source,\r\n key,\r\n ignoreKeyTypeInPath,\r\n }) {\r\n super({\r\n source,\r\n });\r\n\r\n defineConstProperty(this, 'key', key);\r\n defineConstProperty(this, 'path', (() => {\r\n // In case people pass a decimal string for a integer key\r\n // We cannot use parseInt directly, it would get a wrong number if the\r\n // key is beyond Number.MAX_SAFE_INTEGER\r\n if (_.isString(key)) {\r\n if (ignoreKeyTypeInPath) {\r\n return urlUtil.join(source.path, key);\r\n }\r\n const keyType = _.chain(source)\r\n .result('type')\r\n .result('elementType')\r\n .result('keyProperty')\r\n .result('typeName')\r\n .value();\r\n\r\n if (keyType === 'integer') {\r\n if (key.match(/^[+-]?(0|[1-9][0-9]*)$/)) {\r\n return `${source.path}(${key})`;\r\n }\r\n }\r\n if (keyType === 'string') {\r\n return `${source.path}('${key}')`;\r\n }\r\n }\r\n\r\n return `${source.path}(${JSON.stringify(key)})`;\r\n })());\r\n }\r\n\r\n toSelfJSON() {\r\n return {\r\n type: 'function',\r\n name: WithKeyNavigation.navigationName,\r\n parameters: [this.key],\r\n };\r\n }\r\n\r\n static get navigationName() {\r\n return '$withKey';\r\n }\r\n\r\n static defineOn(TypeResID) {\r\n /**\r\n * $withKey navigation method of the TypeResID\r\n * @memberof TypeResID#\r\n * @this TypeResID\r\n * @param {String} key - The key of the element\r\n * @param {Boolean} ignoreKeyTypeInPath - Decide how to add key to path\r\n * @returns {ResourceIdentifier}\r\n * The ResourceIdentifier to access the element with the given key\r\n */\r\n function navWithKeyMethod(key, ignoreKeyTypeInPath = false) {\r\n const navigation = new WithKeyNavigation({ source: this, key, ignoreKeyTypeInPath });\r\n\r\n return new this.type.elementType.ResourceIdentifier({ navigation });\r\n }\r\n\r\n defineConstProperty(\r\n TypeResID.prototype,\r\n WithKeyNavigation.navigationName,\r\n navWithKeyMethod\r\n );\r\n }\r\n };\r\n}\r\n\r\nexport function createCallNavigation(Superclass = Object, edm) {\r\n/**\r\n * @class CallNavigation\r\n * @extends Navigation\r\n * @property {Object} parameters - The parameters for the function call\r\n */\r\n return class CallNavigation extends Superclass {\r\n constructor({\r\n source,\r\n parameters = {},\r\n }) {\r\n super({\r\n source,\r\n });\r\n defineConstProperty(this, 'parameters', parameters);\r\n\r\n const path = source.type instanceof edm.types.ActionType ?\r\n source.path : `${source.path}(${_.map(parameters, (value, name) => `${name}=${value}`).join(',')})`;\r\n\r\n defineConstProperty(this, 'path', path);\r\n }\r\n\r\n toSelfJSON() {\r\n return {\r\n type: 'function',\r\n name: CallNavigation.navigationName,\r\n // for callable, parameters are named\r\n parameters: [this.parameters],\r\n };\r\n }\r\n\r\n static get navigationName() {\r\n return '$call';\r\n }\r\n\r\n static defineOn(TypeResID) {\r\n /**\r\n * $call navigation method of the TypeResID\r\n * @memberof TypeResID#\r\n * @this TypeResID\r\n * @param {object} parameters - The parameters to call the callable\r\n * @return {ResourceIdentifier}\r\n * The ResourceIdentifier accessing the return value of the callable\r\n */\r\n function navCallMethod(parameters) {\r\n const navigation = new CallNavigation({ source: this, parameters });\r\n\r\n return new this.type.returnType.ResourceIdentifier({ navigation });\r\n }\r\n\r\n defineConstProperty(TypeResID.prototype, CallNavigation.navigationName, navCallMethod);\r\n }\r\n };\r\n}\r\n\r\n\r\nexport function createResourceIdentifier() {\r\n/**\r\n * @class ResourceIdentifier\r\n * @property {Navigation} navigation\r\n * - The navigation back tracking the parent ResourceIdentifier\r\n */\r\n return class ResourceIdentifier {\r\n /**\r\n * Create a ResourceIdentifier\r\n * @param {Object} [options] - The constructor options\r\n * @param {Navigation} [options.navigation]\r\n * - The navigation back tracking the parent ResourceIdentifier\r\n * @return {Void} Nothing to return\r\n */\r\n constructor({\r\n navigation,\r\n } = {}) {\r\n if (navigation) {\r\n defineConstProperty(this, 'navigation', navigation);\r\n defineConstProperty(this, 'path', navigation.path);\r\n } else {\r\n defineConstProperty(this, 'path', '');\r\n }\r\n }\r\n\r\n toJSON() {\r\n if (this.navigation) {\r\n return this.navigation.toJSON();\r\n }\r\n\r\n return [];\r\n }\r\n\r\n\r\n identifyEntitySet(json) {\r\n // eslint-disable-next-line\r\n let entitySet = this;\r\n\r\n /* eslint guard-for-in: 0 */\r\n /* eslint no-restricted-syntax: 0 */\r\n for (const i in json) {\r\n const item = json[i];\r\n\r\n if (item.type === 'property') {\r\n entitySet = entitySet[item.name];\r\n } else if (item.type === 'function') {\r\n entitySet = entitySet[item.name](...item.parameters);\r\n }\r\n\r\n if (!entitySet) {\r\n return null;\r\n }\r\n }\r\n\r\n return entitySet;\r\n }\r\n };\r\n}\r\n\r\n","export { ExpLoggerFactory } from './src/exp-logger-factory';\r\n","import { createActivity } from './activity';\r\nimport { ExpLogger } from './exp-logger';\r\n\r\nlet instrumentation;\r\n\r\nexport class ExpLoggerFactory {\r\n /**\r\n * Initialize factory with existing instrumentation instance\r\n * @param {Object} instr - existing instrumentation instance\r\n * @returns {void}\r\n */\r\n static init(instr) {\r\n instrumentation = instr;\r\n }\r\n\r\n /**\r\n * Create an experiment logger\r\n * @param {string} name - experiment name\r\n * @returns {Object} ExpLogger instance that created\r\n */\r\n static createLogger(name) {\r\n let activity = null;\r\n if (instrumentation) {\r\n activity = createActivity(instrumentation);\r\n }\r\n return new ExpLogger(name, activity);\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nconst schema = {\r\n scenario: [\r\n {\r\n name: 'expLogger',\r\n value: 'expLogger',\r\n setting: {},\r\n activity: [\r\n {\r\n name: 'sendLog',\r\n value: 'SendLog',\r\n },\r\n ],\r\n },\r\n ],\r\n};\r\n\r\nlet expLoggerScenario = null;\r\n\r\nfunction getScenario(instrumentation) {\r\n if (_.isEmpty(expLoggerScenario)) {\r\n instrumentation.addScenario(schema);\r\n expLoggerScenario = instrumentation.expLogger.create();\r\n }\r\n\r\n return expLoggerScenario;\r\n}\r\n\r\n/**\r\n * Create instrumentation activity for logging\r\n * @param {Object} instrumentation - exsiting instrumentation instance\r\n * @returns {Object} instrumentation activity instance\r\n */\r\nexport function createActivity(instrumentation) {\r\n const scenario = getScenario(instrumentation);\r\n\r\n return scenario.sendLog.create();\r\n}\r\n","const version = 'exp-logger@1.0.0';\r\n\r\nexport class ExpLogger {\r\n constructor(name, activity) {\r\n this.name = name;\r\n this.activity = activity;\r\n }\r\n\r\n /**\r\n * Log experiment information\r\n * @param {string} action - user action\r\n * @param {string} flight - user flight\r\n * @returns {void}\r\n */\r\n log(action, flight) {\r\n if (!this.activity) return;\r\n\r\n const message = {\r\n Version: version,\r\n Experiment: this.name,\r\n Action: action,\r\n Flight: flight,\r\n };\r\n\r\n this.activity.trace(JSON.stringify(message), this.name);\r\n }\r\n}\r\n","import pkg from './package.json';\r\nimport FilePicker from './src/view/index';\r\n\r\nexport { pkg as _package, FilePicker };\r\n","import _ from 'underscore';\r\nimport ko from 'knockout';\r\nimport Backbone from 'backbone';\r\nimport ViewModel from '../viewmodel/index';\r\nimport template from '../template/index.pug';\r\n\r\nexport default class FilePicker extends Backbone.View {\r\n /**\r\n *\r\n * @param {object} options the options to build a filepicker instance.\r\n * See the detail fields below.\r\n * @param {boolean} options.isNative will use the browser native button when it is set to true.\r\n * Otherwise will use the customized elements and hide the native ones.\r\n * @param {array} options.allowedFileExtensions the allowed file extensions. An array of strings.\r\n * Example: ['.txt', '.exe']. Will accept all file extensions if this field is not set.\r\n * @param {function} options.validator function to validate your file. The file object as\r\n * paramter. Return string for true is to raise an error. If you return true will use the\r\n * predefined error message.\r\n * @param {object} options.i18n object: contains getString function for i18n.\r\n * @param {function} options.i18n.getString pass a key(and model if needed) and returns a string.\r\n * @param {function} options.displayFilePath an enum of 'full' or 'filename', indicating the\r\n * display name of the chosen file in customized elements\r\n *\r\n * @event FilePicker#changed triggered when file is changed.\r\n * @event FilePicker#cleared triggered when file is cleared.\r\n * @event FilePicker#error.extension triggered when file extension is invalid.\r\n *\r\n * @returns {undefined} no return value\r\n *\r\n */\r\n initialize({\r\n isNative = false,\r\n allowedFileExtensions = [],\r\n validateFileExtensionsFailedMessage,\r\n validator = _.noop,\r\n i18n = {},\r\n displayFilePath = 'full',\r\n enableMultiple = false,\r\n useButton = false,\r\n }) {\r\n this.isNative = isNative;\r\n this.i18n = i18n;\r\n this.allowedFileExtensions = [];\r\n this.enableMultiple = enableMultiple;\r\n this.useButton = useButton;\r\n\r\n if (!_.isFunction(i18n.getString)) {\r\n this.i18n = { getString: _.identity };\r\n }\r\n\r\n if (!_.isEmpty(allowedFileExtensions)) {\r\n if (_.isArray(allowedFileExtensions)) {\r\n this.allowedFileExtensions = allowedFileExtensions;\r\n } else {\r\n throw new Error('allowedFileExtensions accepts array of strings only.');\r\n }\r\n }\r\n\r\n this.viewModel = new ViewModel({\r\n i18n: this.i18n,\r\n validator,\r\n allowedFileExtensions: this.allowedFileExtensions,\r\n validateFileExtensionsFailedMessage,\r\n getFileObject: () => this.fileObject,\r\n getFileObjects: () => this.fileObjects,\r\n trigger: this.trigger.bind(this),\r\n displayFilePath,\r\n enableMultiple: this.enableMultiple,\r\n });\r\n\r\n this.fileInputCssId = _.uniqueId('el_fileinput_');\r\n }\r\n\r\n render() {\r\n this.$el.html(template({\r\n fileInputCssId: this.fileInputCssId,\r\n i18n: this.i18n,\r\n isNative: this.isNative,\r\n acceptString: this.allowedFileExtensions.join(),\r\n enableMultiple: this.enableMultiple,\r\n useButton: this.useButton,\r\n }));\r\n ko.applyBindings(this.viewModel, this.el);\r\n return this;\r\n }\r\n\r\n get events() {\r\n const { useButton } = this;\r\n const buttonEvent = useButton ? { 'click .file-picker-btn': 'triggerFileInputClick' } : {};\r\n\r\n return {\r\n 'click .remove-file': 'removeFile',\r\n ...buttonEvent,\r\n };\r\n }\r\n\r\n /**\r\n * @returns {string} the full path file\r\n */\r\n get filePath() {\r\n return this.viewModel.filePath();\r\n }\r\n\r\n /**\r\n * @returns {Object} the object to describe the file. Refer https://developer.mozilla.org/en-US/docs/Web/API/File for more details.\r\n * @example\r\n * {\r\n * lastModified: 1465909575599,\r\n * lastModifiedDate: Tue Jun 14 2016 21:06:15 GMT+0800 (China Standard Time),\r\n * name: 'test.txt',\r\n * size: 3,\r\n * type: \"\",\r\n * webkitRelativePath: ''\r\n * }\r\n */\r\n get fileObject() {\r\n return _.first(this.fileObjects);\r\n }\r\n\r\n get fileObjects() {\r\n return _.first(this.$(`#${this.fileInputCssId}`)).files;\r\n }\r\n\r\n removeFile() {\r\n this.viewModel.filePath('');\r\n }\r\n\r\n triggerFileInputClick() {\r\n this.$(`#${this.fileInputCssId}`).trigger('click');\r\n }\r\n\r\n addExternalValidationErrors(msg) {\r\n this.viewModel.errors.push(msg);\r\n }\r\n\r\n hasErrors() {\r\n return this.viewModel.hasErrors();\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport ko from 'knockout';\r\nimport path from 'path-browserify';\r\nimport Promise from 'bluebird';\r\n\r\nfunction validatorDecorator(\r\n validator,\r\n reasonText,\r\n file,\r\n context\r\n) {\r\n return Promise.resolve(validator(file)).then(returnedError =>\r\n new Promise((resolve, reject) => {\r\n if (returnedError) {\r\n reject(new Error(_.isString(returnedError) ? returnedError : reasonText));\r\n } else {\r\n resolve(file);\r\n }\r\n })).bind(context);\r\n}\r\n\r\nexport default class ViewModel {\r\n constructor({\r\n i18n,\r\n allowedFileExtensions,\r\n validateFileExtensionsFailedMessage,\r\n validator,\r\n getFileObject,\r\n getFileObjects,\r\n trigger,\r\n displayFilePath,\r\n enableMultiple,\r\n }) {\r\n this.i18n = i18n;\r\n this.allowedFileExtensions = _.map(allowedFileExtensions, ext => ext.toUpperCase());\r\n this.validateFileExtensionsFailedMessage = validateFileExtensionsFailedMessage;\r\n\r\n this.validator = validator;\r\n this.getFileObject = getFileObject;\r\n this.getFileObjects = getFileObjects;\r\n this.trigger = trigger;\r\n this.enableMultiple = enableMultiple;\r\n\r\n this.filePath = ko.observable('');\r\n this.errors = ko.observableArray();\r\n this.hasErrors = ko.computed(() => this.errors().length > 0, this);\r\n this.displayFilePath = ko.computed(() => {\r\n const fullPath = this.filePath();\r\n\r\n return _.result({\r\n full: fullPath,\r\n filename: () => fullPath.replace(/^.*[\\\\\\/]/, ''), //eslint-disable-line\r\n }, displayFilePath);\r\n });\r\n\r\n if (enableMultiple) {\r\n // use change event when multiple is enabled.\r\n // value subscribe doens't work when first selected file doesn't change.\r\n this.onInputChange = () => {\r\n this.handleInputChange();\r\n };\r\n } else {\r\n this.filePath.subscribe((newFilePath) => {\r\n this.handleInputChange(newFilePath);\r\n });\r\n }\r\n }\r\n\r\n handleInputChange(newFilePath) {\r\n // for backward compatibility, here still use getFileObject to get selected file.\r\n // otherwise there are many feature test codes needing fix.\r\n let files = [];\r\n if (this.enableMultiple) {\r\n files = this.getFileObjects();\r\n } else {\r\n const file = this.getFileObject();\r\n if (file) {\r\n files.push(file);\r\n }\r\n }\r\n\r\n this.resetStatus();\r\n\r\n this.trigger('changed', newFilePath);\r\n\r\n if (_.isEmpty(files)) {\r\n this.trigger('cleared');\r\n } else {\r\n const validatingPromiseArr = [];\r\n _.each(files, (file) => {\r\n validatingPromiseArr.push(this.validateExtension(file).then(() => {\r\n this.validateFile(file);\r\n }));\r\n });\r\n\r\n Promise.all(validatingPromiseArr)\r\n .then(() => this.trigger('validated'))\r\n .catch((reason) => {\r\n this.validationDidFail(reason);\r\n });\r\n }\r\n }\r\n\r\n get extensionValidator() {\r\n return (file) => {\r\n if (_.isEmpty(this.allowedFileExtensions)) {\r\n return false;\r\n }\r\n\r\n const extension = path.extname(file.name).toUpperCase();\r\n if (_.indexOf(this.allowedFileExtensions, extension) === -1) {\r\n this.trigger('error.extension');\r\n\r\n return this.validateFileExtensionsFailedMessage || true;\r\n }\r\n\r\n return null;\r\n };\r\n }\r\n\r\n validateExtension(file) {\r\n return validatorDecorator(\r\n this.extensionValidator.bind(this),\r\n this.i18n.getString('FilePicker_FileExtensionInvalid', { allowedFileExtensions: this.allowedFileExtensions }),\r\n file,\r\n this\r\n );\r\n }\r\n\r\n validateFile(file) {\r\n return validatorDecorator(this.validator, this.i18n.getString('FilePicker_FileInvalid'), file, this);\r\n }\r\n\r\n validationDidFail(reason) {\r\n this.errors.push(reason.message);\r\n }\r\n\r\n resetStatus() {\r\n this.errors([]);\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__309__;","var pug = require(\"!../../../../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (acceptString, enableMultiple, fileInputCssId, i18n, isNative, useButton) {pug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([isNative ? 'hidden' : ''], [true]), false, true)) + \"\\u003E\";\nif (useButton) {\npug_html = pug_html + \"\\u003Cbutton class=\\\"btn btn-default file-picker-btn clickable\\\" data-bind=\\\"css: { "error": hasErrors}\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('FilePicker_ButtonText_ChooseFile')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Clabel\" + (\" class=\\\"btn btn-default file-picker-btn clickable\\\"\"+pug.attr(\"for\", fileInputCssId, true, true)+\" data-bind=\\\"css: { "error": hasErrors}\\\" role=\\\"button\\\" tabindex=\\\"0\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('FilePicker_ButtonText_ChooseFile')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\n}\npug_html = pug_html + \"\\u003Cspan class=\\\"file-text\\\" data-bind=\\\"text: displayFilePath, css: { error: hasErrors}\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"remove-file\\\" href=\\\"javascript:void(0)\\\" data-bind=\\\"visible: filePath\\\" role=\\\"button\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('FilePicker_ButtonText_RemoveFile')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (enableMultiple) {\npug_html = pug_html + \"\\u003Cinput\" + (pug.attr(\"class\", pug.classes([\"file-picker-input\",isNative ? '' : 'hidden'], [false,true]), false, true)+\" type=\\\"file\\\" data-bind=\\\"css: { error: hasErrors }, event: { change: onInputChange }\\\"\"+pug.attr(\"id\", fileInputCssId, true, true)+pug.attr(\"accept\", acceptString, true, true)+pug.attr(\"multiple\", true, true, true)) + \"\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cinput\" + (pug.attr(\"class\", pug.classes([\"file-picker-input\",isNative ? '' : 'hidden'], [false,true]), false, true)+\" type=\\\"file\\\" data-bind=\\\"css: { error: hasErrors }, value: filePath\\\"\"+pug.attr(\"id\", fileInputCssId, true, true)+pug.attr(\"accept\", acceptString, true, true)) + \"\\u003E\";\n}\npug_html = pug_html + \"\\u003C!-- ko foreach: errors--\\u003E\\u003Cdiv class=\\\"error\\\" role=\\\"alert\\\" data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\";}.call(this,\"acceptString\" in locals_for_with?locals_for_with.acceptString:typeof acceptString!==\"undefined\"?acceptString:undefined,\"enableMultiple\" in locals_for_with?locals_for_with.enableMultiple:typeof enableMultiple!==\"undefined\"?enableMultiple:undefined,\"fileInputCssId\" in locals_for_with?locals_for_with.fileInputCssId:typeof fileInputCssId!==\"undefined\"?fileInputCssId:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isNative\" in locals_for_with?locals_for_with.isNative:typeof isNative!==\"undefined\"?isNative:undefined,\"useButton\" in locals_for_with?locals_for_with.useButton:typeof useButton!==\"undefined\"?useButton:undefined));;return pug_html;};\nmodule.exports = template;","\r\n\r\nexport { FilterAgent } from './src/filter-agent';\r\nexport { localize } from './src/schema-localizer';\r\n","import _ from 'underscore';\r\nimport Backbone from 'backbone';\r\n\r\nimport { cloneDeep } from '@bingads-webui-universal/primitive-utilities';\r\nimport { FilterService } from '@bingads-webui/filter-service';\r\nimport { SelectorFilterAgent } from './selector-filter-agent';\r\nimport { SearchboxFilterAgent } from './searchbox-filter-agent';\r\nimport { FilterEditorAgent } from './filter-editor-agent';\r\nimport { FilterBarAgent } from './filter-bar-agent';\r\nimport { FilterMenuAgent } from './filter-menu-agent';\r\nimport { localize } from './schema-localizer';\r\n\r\n/**\r\n * Set up different filter UI components as configured by consumer
\r\n * Attach filter UI components to the toolbar view passed in by consumer
\r\n * Handles the interaction within various UI components as well as between\r\n * UI and FilterService component that manages filter state and filter storage
\r\n * Trigger filter-state-changed event and expose current combined filter in\r\n * the form of FilterEntity
\r\n * @extends external:\"Backbone.Events\"\r\n * @fires FilterAgent#filter-state-changed\r\n */\r\n\r\nexport class FilterAgent {\r\n /**\r\n * Constructor for FilterAgent - Create sub filter agents and filter service instance\r\n * @param {Object} options - The options object that is used to configure FilterAgent\r\n * @param {Object} options.toolbarView - The toolbar backbone view that Filter UI will\r\n * be attached to\r\n * @param {Object} options.i18n - I18N object for localization\r\n * @param {Object} options.schemaI18n - SchemaI18n object for localization\r\n * @param {Object} options.shortDateFormat - Format of date during localization\r\n * @param {Object} [options.filterService] - Preconfigure FilterService instance\r\n * @param {Object} [options.entitySchema] - Entity schema\r\n * @param {string} [options.odata] - Odata options for converting filter to query\r\n * @param {string} [options.storage] - Collection of storage instances to get/save filters\r\n * @param {string[]} option.enabled - An array of names of filter UI components\r\n * that are to be enabled. Value can be 'selector', 'editor' or 'searchbox'\r\n * @param {Object} [options.filterbar] - Configuration for FilterBar, the UI\r\n * component that shows the current applied filter status\r\n * @param {Object} [options.selector] - Configuration for Selector Filter UI.\r\n * Pass in if Selector Filter UI is enabled\r\n * @param {Object} [options.editor] - Configuration for Filter Editor UI.\r\n * Pass in if Filter Editor UI is enabled\r\n * @param {Object} [options.searchbox] - Configuration for Searchbox Filter UI.\r\n * Pass in if Searchbox Filter UI is enabled\r\n */\r\n constructor(options = {}) {\r\n this.options = options;\r\n if (options.filterService) {\r\n this.filterService = options.filterService;\r\n } else {\r\n this.filterService = new FilterService(options);\r\n }\r\n this.options.filterService = this.filterService;\r\n this.options.entitySchema = localize(\r\n this.filterService.entitySchema,\r\n this.options.schemaI18n,\r\n this.options.i18n\r\n );\r\n this.filterMenuAgent = new FilterMenuAgent(options);\r\n this.filterBarAgent = new FilterBarAgent(options);\r\n\r\n _.extend(this, Backbone.Events);\r\n this.setupToolbar();\r\n }\r\n\r\n /**\r\n * Initialze the filter UI components that are registered by consumer\r\n * Manage the interaction between different filter UI components\r\n * Set initial states for some of the filter UI components\r\n * @private\r\n * @returns {undefined}\r\n */\r\n setupToolbar() {\r\n if (_.contains(this.options.enabled, 'editor')) {\r\n this.filterEditorAgent = new FilterEditorAgent(this.options);\r\n\r\n this.listenTo(this.filterMenuAgent, 'create-new-filter', () => {\r\n this.isNewFilter = true;\r\n this.showFilterEditor();\r\n });\r\n this.listenTo(this.filterBarAgent, 'filter-bar-edited', () => {\r\n this.isNewFilter = false;\r\n this.showFilterEditor();\r\n });\r\n this.listenTo(this.filterEditorAgent, 'cancel-edit', () => {\r\n this.hideFilterEditor();\r\n });\r\n this.listenTo(this.filterEditorAgent, 'filter-saved-success', () => {\r\n this.filterMenuAgent.refresh();\r\n this.trigger('filter-saved-success');\r\n });\r\n this.listenTo(this.filterMenuAgent, 'filter-deleted-success', () => {\r\n this.trigger('filter-deleted-success');\r\n });\r\n this.listenTo(this.filterEditorAgent, 'filter-max-reached', () => {\r\n this.hideFilterEditor();\r\n this.trigger('filter-max-reached');\r\n });\r\n }\r\n\r\n // not using initialFilter, as filter may has already chanaged\r\n this.filterService.p$Initialized.then((/* initialFilter */) => {\r\n const {\r\n editableFilter,\r\n quickFilter,\r\n } = this.filterService;\r\n\r\n if (_.contains(this.options.enabled, 'selector')) {\r\n this.selectorFilterAgent =\r\n new SelectorFilterAgent(_.extend(this.options, { filter: quickFilter }));\r\n }\r\n if (!_.isEmpty(editableFilter)) {\r\n this.showFilterBar();\r\n }\r\n });\r\n\r\n\r\n if (_.contains(this.options.enabled, 'searchbox')) {\r\n this.searchboxFilterAgent = new SearchboxFilterAgent(this.options);\r\n }\r\n\r\n this.listenTo(this.filterService, 'editable-filter-applied', () => {\r\n this.showFilterBar();\r\n });\r\n this.listenTo(this.filterService, 'filter-state-changed', (combinedFilter, subStatus) => {\r\n if (subStatus === 'editable-filter-applied') {\r\n this.showFilterBar();\r\n }\r\n if (subStatus === 'editable-filter-removed') {\r\n if (this.searchboxFilterAgent) {\r\n this.searchboxFilterAgent.clear();\r\n }\r\n this.showToolBar();\r\n }\r\n this.trigger('filter-state-changed', combinedFilter, subStatus);\r\n }, this);\r\n\r\n this.listenTo(this.filterService, 'filter-operation-failed', (error) => {\r\n this.trigger('filter-operation-failed', error);\r\n }, this);\r\n\r\n this.filterMenuAgent.refresh();\r\n }\r\n\r\n hideFilterEditor() {\r\n if (this.filterService.getEditableFilter()) {\r\n this.showFilterBar();\r\n } else {\r\n this.showToolBar();\r\n }\r\n }\r\n\r\n showFilterEditor(query) {\r\n this.filterEditorQuery = query;\r\n this.trigger('filter-ui-change', {\r\n showFilterEditor: true,\r\n showToolBar: false,\r\n showFilterBar: false,\r\n });\r\n }\r\n\r\n showFilterBar() {\r\n if (this.filterBarAgent.deterministicView) {\r\n this.filterBarAgent.update(this.filterService.getEditableFilter());\r\n } else {\r\n this.trigger('filter-ui-change', {\r\n showToolBar: true,\r\n showFilterBar: true,\r\n showFilterEditor: false,\r\n });\r\n }\r\n }\r\n\r\n showToolBar() {\r\n this.trigger('filter-ui-change', {\r\n showToolBar: true,\r\n showFilterBar: false,\r\n showFilterEditor: false,\r\n });\r\n }\r\n\r\n getFilterEditor() {\r\n if (this.filterEditorQuery) {\r\n const filterToShow = this.filterService.createFilterEntity(this.filterEditorQuery);\r\n delete this.filterEditorQuery;\r\n return this.filterEditorAgent.create(filterToShow);\r\n }\r\n if (this.isNewFilter) {\r\n return this.filterEditorAgent.create();\r\n }\r\n const editableFilter = this.filterService.getEditableFilter();\r\n return editableFilter ? this.filterEditorAgent\r\n .create(this.filterService.createFilterEntity(\r\n cloneDeep(editableFilter.query),\r\n editableFilter.name\r\n )) : this.filterEditorAgent.create(editableFilter);\r\n }\r\n\r\n getFilterBar() {\r\n return this.filterBarAgent.create(this.filterService.getEditableFilter());\r\n }\r\n\r\n setEditableFilter(query, name) {\r\n this.filterService.setEditableFilter(query, name);\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__6__;","import { BaseFilterAgent } from './base-filter-agent';\r\n\r\n/**\r\n * Manage the creation/removal and show/hide of Dropdown Selector Filter view
\r\n * Call FilterService to change filter state
\r\n * @extends BaseFilterAgent\r\n */\r\nexport class SelectorFilterAgent extends BaseFilterAgent {\r\n constructor(options) {\r\n super(options);\r\n const selectorConf = {\r\n id: 'selector-filter',\r\n items: this.options.selector.items,\r\n onChange: item => this.apply(item),\r\n checkKeyDifferenceOnClick: this.options.selector.checkKeyDifferenceOnClick || false,\r\n };\r\n\r\n if (options.filter && options.filter.key) {\r\n selectorConf.selectedKey = options.filter.key;\r\n } else {\r\n const defaultSelectedItem = this.options.selector.items[0];\r\n if (defaultSelectedItem.value && defaultSelectedItem.value.query) {\r\n selectorConf.selectedKey = defaultSelectedItem.key;\r\n this.apply(defaultSelectedItem);\r\n }\r\n }\r\n\r\n if (this.options.toolbarView.rendered) {\r\n this.options.toolbarView.view.update(selectorConf);\r\n } else {\r\n this.options.toolbarView.once('rendered', () => {\r\n this.options.toolbarView.view.update(selectorConf);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Apply filter\r\n * @private\r\n * @param {Object} item - One item in the selector dropdown\r\n * @param {string} item.key - The item key\r\n * @param {Object} item.value - A query object\r\n * @returns {undefined}\r\n */\r\n apply(item) {\r\n this.options.filterService.setQuickFilter(item.key, item.value);\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport Backbone from 'backbone';\r\n\r\n/**\r\n * Base class to all sub FilterAgents
\r\n * Set option value to properties of current instance
\r\n * @extends external:\"Backbone.Events\"\r\n */\r\n\r\nexport class BaseFilterAgent {\r\n constructor(options = {}) {\r\n this.options = options;\r\n _.extend(this, Backbone.Events);\r\n }\r\n\r\n /**\r\n * Update filter state by setting current applied filter\r\n * @param {string} query - Filter query\r\n * @param {string} name - Filter name\r\n * @fires BaseFilterAgent#filter-applied\r\n * @returns {undefined}\r\n */\r\n apply(query, name) {\r\n this.options.filterService.setEditableFilter(query, name);\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { BaseFilterAgent } from './base-filter-agent';\r\n\r\n/**\r\n * Manage the creation/removal and show/hide of Searchbox Filter view
\r\n * Call FilterService to change filter state
\r\n * @extends BaseFilterAgent\r\n */\r\nexport class SearchboxFilterAgent extends BaseFilterAgent {\r\n constructor(options) {\r\n super(options);\r\n const newItem = {\r\n id: 'search-box-filter',\r\n onChange: this.apply.bind(this),\r\n placeholder: this.options.searchbox.placeholder,\r\n maxLength: this.options.searchbox.maxLength,\r\n };\r\n if (this.options.toolbarView.rendered) {\r\n this.options.toolbarView.view.update(newItem);\r\n } else {\r\n this.options.toolbarView.once('rendered', () => {\r\n this.options.toolbarView.view.update(newItem);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Create FilterEntity based on search value and apply filter\r\n * @private\r\n * @param {string} value - Searchbox input\r\n * @returns {undefined}\r\n */\r\n apply(value) {\r\n if (value) {\r\n const query = _.object(\r\n [this.options.searchbox.searchProperty],\r\n [_.object([this.options.searchbox.searchOperator || '$contains'], [value])]\r\n );\r\n\r\n super.apply(query);\r\n }\r\n }\r\n\r\n /**\r\n * Clear search box\r\n * @returns {undefined}\r\n */\r\n clear() {\r\n this.options.toolbarView.view.update({\r\n id: 'search-box-filter',\r\n value: '',\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { FilterEditor } from '@bingads-webui/filter-editor';\r\nimport { DeterministicWrapperView } from '@bingads-webui/deterministic-wrapper-view';\r\nimport { BaseFilterAgent } from './base-filter-agent';\r\n\r\nclass DeterministicFilterEditor extends DeterministicWrapperView {\r\n viewFactory(options) {\r\n return new FilterEditor(options);\r\n }\r\n}\r\n\r\n/**\r\n * Manage the creation/removal and show/hide of FilterEditor view
\r\n * Call FilterService to change filter state
\r\n * Set up a toolbar dropdown as filter menu
\r\n * @extends BaseFilterAgent\r\n * @fires FilterEditorAgent#filter-editor-shown\r\n */\r\nexport class FilterEditorAgent extends BaseFilterAgent {\r\n /**\r\n * Remove existing FilterEditor, create and show a new one\r\n * @param {Object} [filter] - FilterEntity\r\n * @param {string} [name] - Filter name\r\n * @returns {undefined}\r\n */\r\n create(filter) {\r\n let selected = filter;\r\n\r\n if (this.options.preprocessSelectedFilter) {\r\n selected = this.options.preprocessSelectedFilter(selected);\r\n }\r\n\r\n const view = new DeterministicFilterEditor({\r\n selected,\r\n shortDateFormat: this.options.shortDateFormat,\r\n entitySchema: this.options.entitySchema,\r\n schemaI18n: this.options.schemaI18n,\r\n ignoreCase: this.options.odata.ignoreCase,\r\n isComparingEnabled: _.isFunction(this.options.editor.isComparingEnabled) ?\r\n this.options.editor.isComparingEnabled() : this.options.editor.isComparingEnabled,\r\n hasInlineReporting: this.options.editor.hasInlineReporting,\r\n layoutTemplate: this.options.editor.layoutTemplate,\r\n itemTemplates: this.options.editor.itemTemplates,\r\n ko_model: this.options.editor.ko_model,\r\n i18n: this.options.i18n,\r\n });\r\n\r\n this.listenTo(view, 'apply', this.apply);\r\n this.listenTo(view, 'cancel', () => {\r\n this.trigger('cancel-edit');\r\n });\r\n\r\n return view;\r\n // TODO: during filter editor is show, also monitor dateFilter change for once.\r\n /*\r\n dateFilter.events.once('dateChange', () => {\r\n hideFilterEditor();\r\n });\r\n */\r\n }\r\n\r\n /**\r\n * Save filter to storage\r\n * @private\r\n * @param {string} query - Filter query\r\n * @param {string} name - Filter name\r\n * @returns {undefined}\r\n */\r\n apply(query, name) {\r\n if (name) {\r\n const { savedFilters } = this.options.filterService;\r\n if (_.isNumber(this.options.maxSavedFilterLimit)\r\n && savedFilters.length >= this.options.maxSavedFilterLimit) {\r\n const filterNames = _.pluck(savedFilters, 'name');\r\n if (!_.contains(filterNames, name)) {\r\n this.trigger('filter-max-reached');\r\n return;\r\n }\r\n }\r\n this.options.filterService.addUpdateSavedFilter(query, name).then((savedData) => {\r\n if (!savedData.error) {\r\n this.trigger('filter-saved-success');\r\n }\r\n });\r\n } else {\r\n super.apply(query, name);\r\n }\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__11__;","module.exports = __WEBPACK_EXTERNAL_MODULE__12__;","import _ from 'underscore';\r\nimport { FilterBar } from '@bingads-webui/filter-bar';\r\nimport { DeterministicWrapperView } from '@bingads-webui/deterministic-wrapper-view';\r\nimport { BaseFilterAgent } from './base-filter-agent';\r\n\r\nclass DeterministicFilterBar extends DeterministicWrapperView {\r\n viewFactory(options) {\r\n return new FilterBar(options);\r\n }\r\n}\r\n\r\n/**\r\n * Manage the creation/removal and show/hide of FilterBar view
\r\n * Call FilterService to change filter state\r\n * @extends BaseFilterAgent\r\n * @fires FilterBarAgent#filter-bar-removed\r\n * @fires FilterBarAgent#filter-bar-edited\r\n */\r\nexport class FilterBarAgent extends BaseFilterAgent {\r\n /**\r\n * Create filter bar view and append to container passed in by consumer
\r\n * Or update existing filter bar view with new filter entity and show\r\n * @param {Object} filter - FilterEntity\r\n * @returns {undefined}\r\n */\r\n create(filter) {\r\n const extendedFilter = _.extend(filter, {\r\n options: {\r\n shortDateFormat: this.options.shortDateFormat,\r\n },\r\n });\r\n\r\n const options = _.extend(\r\n {},\r\n this.options.filterbar,\r\n {\r\n filter: extendedFilter,\r\n schemaI18n: this.options.schemaI18n,\r\n }\r\n );\r\n\r\n this.deterministicView = new DeterministicFilterBar({\r\n options,\r\n i18n: this.options.i18n,\r\n });\r\n\r\n this.listenTo(this.deterministicView, 'removed', () => {\r\n this.deterministicView = null;\r\n });\r\n this.listenTo(this.deterministicView, 'remove', this.remove);\r\n this.listenTo(this.deterministicView, 'edit', () => this.trigger('filter-bar-edited'));\r\n\r\n return this.deterministicView;\r\n }\r\n\r\n update(filter) {\r\n const extendedFilter = _.extend(filter, {\r\n options: {\r\n shortDateFormat: this.options.shortDateFormat,\r\n },\r\n });\r\n this.deterministicView.view.changeFilter(extendedFilter);\r\n }\r\n\r\n /**\r\n * Remove FilterBar view and reset filter state by removing\r\n * current applied filter\r\n * @private\r\n * @fires FilterBarAgent#filter-bar-removed\r\n * @returns {undefined}\r\n */\r\n remove() {\r\n this.options.filterService.removeEditableFilter();\r\n this.trigger('filter-bar-removed');\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__14__;","import _ from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport { Dialog } from '@bingads-webui/dialog';\r\nimport { BaseFilterAgent } from './base-filter-agent';\r\nimport removeTmpl from './template/removeDialog.pug';\r\n\r\nclass RemoveDialog extends Backbone.View {\r\n initialize({ filterName, i18n }) {\r\n this.filterName = filterName;\r\n this.i18n = i18n;\r\n }\r\n render() {\r\n this.$el.html(removeTmpl({\r\n removeText: this.i18n.getString('FiltersMenu_PromptBeforeRemove').replace('{0}', this.filterName),\r\n }));\r\n return this;\r\n }\r\n}\r\n\r\n/**\r\n * Manage the creation/removal and show/hide of FilterEditor view
\r\n * Call FilterService to change filter state
\r\n * Set up a toolbar dropdown as filter menu
\r\n * @extends BaseFilterAgent\r\n * @fires FilterEditorAgent#filter-editor-shown\r\n */\r\nexport class FilterMenuAgent extends BaseFilterAgent {\r\n /**\r\n * Delete filter by name. UI will show a modal prompt to ask user for confirmation.\r\n * If user confirms, then call filter service to remove delete filter by name and\r\n * refresh filter menu once deletion is completed successfully\r\n * @private\r\n * @param {string} name - Filter name\r\n * @returns {undefined}\r\n */\r\n deleteByName(name) {\r\n this.options.filterService.getFilterByName(name).then((filter) => {\r\n const modalDialog = new Dialog({\r\n showHeader: false,\r\n }).setState({\r\n buttons: [{\r\n text: this.options.i18n.getString('Filter_Remove'),\r\n name: 'remove',\r\n class: 'btn-primary',\r\n }, {\r\n text: this.options.i18n.getString('Cancel'),\r\n name: 'cancel',\r\n }],\r\n }).setContent(new RemoveDialog({\r\n filterName: name,\r\n i18n: this.options.i18n,\r\n }))\r\n .render();\r\n\r\n this.options.toolbarView.view.$el.append(modalDialog.el);\r\n modalDialog.show();\r\n modalDialog.on('clickedButton', (buttonName) => {\r\n if (buttonName === 'remove') {\r\n this.options.filterService.deleteSavedFilter(filter).then(({ error }) => {\r\n if (!error) {\r\n this.trigger('filter-deleted-success');\r\n this.refresh();\r\n }\r\n });\r\n }\r\n\r\n modalDialog.remove();\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Apply named filter\r\n * @private\r\n * @returns {undefined}\r\n * @param {string} name - Filter name\r\n */\r\n applyByName(name) {\r\n this.options.filterService.setEditableFilterByName(name);\r\n }\r\n\r\n /**\r\n * Load saved filters from filter service and update filter menu accordingly\r\n * @returns {undefined}\r\n */\r\n refresh() {\r\n this.options.filterService.getSavedFilters().then((filterArray) => {\r\n const filterNames = _.pluck(filterArray, 'name');\r\n const menuItems = [{\r\n text: this.options.i18n.getString('Filter_Create_Filter'),\r\n onClick: () => this.trigger('create-new-filter'),\r\n }];\r\n\r\n if (this.options.menu && this.options.menu.customItems) {\r\n menuItems.push(...this.options.menu.customItems);\r\n }\r\n\r\n if (filterNames.length > 0) {\r\n menuItems.push({ type: 'dropdown-divider' });\r\n menuItems.push({\r\n type: 'dropdown-radio-group',\r\n id: 'dropdown-radio-group-saved-filters',\r\n title: this.options.i18n.getString('Filter_Apply_Saved_Filters'),\r\n items: _.map(filterNames, name => ({\r\n text: name,\r\n value: name,\r\n })),\r\n checkIcon: null,\r\n removeText: this.options.i18n.getString('Filter_Remove'),\r\n onSelect: this.applyByName.bind(this),\r\n onRemove: this.deleteByName.bind(this),\r\n });\r\n }\r\n const baseIconClass = ['glyphicon', 'toolbar-icon', 'toolbar-icon-left'];\r\n const newItem = {\r\n id: 'filter-menu',\r\n button: {\r\n text: this.options.i18n.getString('Filters'),\r\n iconLeft: baseIconClass.concat('icon-filter-normal'),\r\n iconRight: baseIconClass.concat('glyphicon-triangle-bottom'),\r\n },\r\n menu: {\r\n items: menuItems,\r\n },\r\n };\r\n\r\n if (this.options.toolbarView.rendered) {\r\n this.options.toolbarView.view.update(newItem);\r\n } else {\r\n this.options.toolbarView.once('rendered', () => {\r\n this.options.toolbarView.view.update(newItem);\r\n });\r\n }\r\n });\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__16__;","var pug = require(\"!../../../../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (removeText) {pug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = removeText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";}.call(this,\"removeText\" in locals_for_with?locals_for_with.removeText:typeof removeText!==\"undefined\"?removeText:undefined));;return pug_html;};\nmodule.exports = template;","import _ from 'underscore';\r\nimport { include } from 'underscore.string';\r\n\r\nexport function localize(schema, schemaI18n, i18n) {\r\n _.each(schema.properties, (prop, name) => {\r\n const localizedProp = prop;\r\n let schemaName = schema.name;\r\n let propName = name;\r\n if (prop.property) {\r\n const names = prop.property.split('/');\r\n if (names.length > 1) {\r\n [schemaName, propName] = _.last(names, 2);\r\n }\r\n }\r\n if (!localizedProp.title) {\r\n localizedProp.title = schemaI18n.property(schemaName, propName);\r\n }\r\n\r\n // update settings for enum type\r\n if (!_.isEmpty(prop.enum)) {\r\n _.defaults(localizedProp, { localized: {} });\r\n\r\n const enumType = localizedProp.enumType ? localizedProp.enumType : localizedProp.name;\r\n\r\n // update enum value (for odata converting) & localization\r\n _.each(prop.enum, (enumValue) => {\r\n let localizedValue = '';\r\n const originalEnumValue = prop.enumValueMap[enumValue];\r\n\r\n try {\r\n // If enum value contains comma-separated items, localize each item individually\r\n if (prop.localized[enumValue]) {\r\n localizedValue = prop.localized[enumValue];\r\n } else if (include(originalEnumValue, ',')) {\r\n const separatedEnumValues = originalEnumValue.split(',');\r\n const localizedEnumValues = [];\r\n _.each(separatedEnumValues, (individualEnumValue) => {\r\n localizedEnumValues.push(i18n.getString(`${enumType}_${individualEnumValue}`));\r\n });\r\n localizedValue = localizedEnumValues.join(', ');\r\n } else {\r\n localizedValue = i18n.getString(`${enumType}_${originalEnumValue}`);\r\n }\r\n } catch (e) {\r\n // continue regardless of error\r\n }\r\n\r\n if (_.isEmpty(localizedValue)) {\r\n // Try to get the localized enum value via schemaI18n\r\n localizedValue = schemaI18n.value(\r\n schemaName,\r\n propName, originalEnumValue\r\n );\r\n }\r\n\r\n if (!_.isEmpty(localizedValue)) {\r\n localizedProp.localized[enumValue] = localizedValue;\r\n }\r\n });\r\n } else if (prop.type === 'boolean' && !prop.localized) { // update localization for boolean value\r\n _.extendOwn(localizedProp, { localized: {} }, _.pick(prop, 'chooseType'));\r\n // TODO: move this part to component/i18n\r\n const localizedTrueValue = i18n.getString(`${prop.property}`);\r\n const localizedFalseValue = i18n.getString(`FilterOptions_${prop.property}_False`);\r\n\r\n localizedProp.localized.true = localizedTrueValue;\r\n localizedProp.localized.false = localizedFalseValue;\r\n if (!_.isEmpty(localizedTrueValue)) {\r\n localizedProp.description = localizedTrueValue;\r\n }\r\n }\r\n\r\n localizedProp.name = localizedProp.title;\r\n return localizedProp;\r\n });\r\n return schema;\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__20__;","import FilterBar from './src/filter-bar-view';\r\n\r\nexport { FilterBar };\r\n","import _ from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport Promise from 'bluebird';\r\nimport { FilterI18n } from '@bingads-webui/filter-i18n';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport filterBarTemplate from './filter-bar-template.pug';\r\nimport singleTemplate from './single.pug';\r\nimport listTemplate from './list.pug';\r\n\r\n/**\r\n * FilterBar Class\r\n * It displays the query details of a filter\r\n */\r\nclass FilterBar extends Backbone.View {\r\n /**\r\n * Get FilterBar's CSS class name\r\n */\r\n get className() {\r\n return 'filter-bar';\r\n }\r\n\r\n /**\r\n * Get all events\r\n */\r\n get events() {\r\n return {\r\n 'click .filter-bar__edit-filter-link': this.onEdit,\r\n 'click .filter-bar__remove-filter-link': this.onRemove,\r\n };\r\n }\r\n\r\n initialize({\r\n options = {},\r\n i18n,\r\n }) {\r\n this.i18n = i18n;\r\n this.options = _.defaults(options || {}, {\r\n title: i18n.getString('GridToolbar_FilterBar_Title'),\r\n editText: i18n.getString('GridToolbar_FilterBar_Edit'),\r\n removeText: i18n.getString('GridToolbar_FilterBar_Remove'),\r\n loadingText: i18n.getString('GridToolbar_FilterBar_Loading'),\r\n loadingErrorText: i18n.getString('GridToolbar_FilterBar_LoadingError'),\r\n loading: false,\r\n error: undefined,\r\n humanizedFilterHtml: '',\r\n hideEdit: false,\r\n hideRemove: false,\r\n });\r\n this.setFilter = putil.withLastPromise({\r\n promiseFactory: _.bind((filter) => {\r\n this.options.error = undefined;\r\n this.options.loading = true;\r\n this.render();\r\n if (this.options.customHumanizedHtml) {\r\n return this.options.customHumanizedHtml(this, filter);\r\n }\r\n return this.humanizedHtml(filter);\r\n }, this),\r\n finish: _.bind((humanizedFilterHtml) => {\r\n this.options.loading = false;\r\n this.options.humanizedFilterHtml = humanizedFilterHtml;\r\n this.render();\r\n }, this),\r\n fail: _.bind((error) => {\r\n this.options.loading = false;\r\n this.options.error = error;\r\n this.options.humanizedFilterHtml = '';\r\n this.render();\r\n }, this),\r\n });\r\n this.changeFilter(this.options.filter);\r\n }\r\n\r\n changeFilter(filter) {\r\n if (!filter) {\r\n // trying to apply empty filter\r\n // this can happen if saved filter does not have valid values\r\n // for example, custom column filter in legacy UI.\r\n _.defer(() => {\r\n this.onRemove();\r\n });\r\n return;\r\n }\r\n\r\n this.options.filter = filter;\r\n this.setFilterProcess = this.setFilter(filter);\r\n }\r\n\r\n onEdit() {\r\n this.trigger('edit', this);\r\n }\r\n\r\n onRemove() {\r\n this.options.filter = null;\r\n this.trigger('remove', this);\r\n }\r\n\r\n render() {\r\n this.$el.html(filterBarTemplate(this.options));\r\n\r\n return this;\r\n }\r\n\r\n remove() {\r\n if (this.setFilterProcess) {\r\n this.setFilterProcess.cancel();\r\n this.setFilterProcess = null;\r\n }\r\n\r\n Backbone.View.prototype.remove.call(this);\r\n }\r\n\r\n getValuesAndMoreTextForSelector(valuesInQuery, property) {\r\n const MAX_ITEMS_TO_SHOW = 5;\r\n const ITEMS_MAX_LENGTH = 50;\r\n let itemsPromise;\r\n if (property.dataSource && !_.isEmpty(valuesInQuery)) {\r\n // Asking for one over the limit so that \"and more\" logic can be triggered\r\n itemsPromise = property.dataSource.getByIds(valuesInQuery.slice(0, MAX_ITEMS_TO_SHOW + 1));\r\n } else if (property.items) {\r\n itemsPromise = Promise.resolve(property.items);\r\n } else {\r\n itemsPromise = Promise.resolve([]);\r\n }\r\n\r\n return itemsPromise\r\n .then((items) => {\r\n const idInfoMap = _.indexBy(items, 'Id');\r\n const { names } = _.reduce(valuesInQuery, (memo, id) => {\r\n const memoCopy = memo;\r\n if (_.size(memoCopy.names) < MAX_ITEMS_TO_SHOW\r\n && memoCopy.totalLength < ITEMS_MAX_LENGTH) {\r\n memoCopy.names.push(_.has(idInfoMap, id) ? idInfoMap[id].Name : this.i18n.getString('Filter_Item_Deleted'));\r\n memoCopy.totalLength += _.size(_.last(memoCopy.names));\r\n }\r\n\r\n return memoCopy;\r\n }, { totalLength: 0, names: [] });\r\n\r\n const notShowingCount = _.size(valuesInQuery) - _.size(names);\r\n\r\n return {\r\n values: names,\r\n moreText: notShowingCount ? this.i18n.getString('And_More', {\r\n remain: notShowingCount,\r\n }) : null,\r\n };\r\n });\r\n }\r\n\r\n extendPredicate(predicate) {\r\n const property = _.keys(predicate)[0];\r\n const metadata = this.filterI18n.schema.getFilterProperty(property);\r\n if (!metadata) {\r\n throw new Error(`Property ${property} is not filterable`);\r\n }\r\n const opValue = _.values(predicate)[0];\r\n const operator = _.keys(opValue)[0].replace(/^\\$/, '');\r\n const value = _.values(opValue)[0];\r\n const schemaI18n = {\r\n property: metadata.title ? metadata.title : this.filterI18n.convertName(property),\r\n operator: this.filterI18n.convertOperator(operator, metadata.operatorDisplayNameMap),\r\n values: _.map(\r\n _.isArray(value) ? value : [value],\r\n val => this.filterI18n.convertValue(val, property)\r\n ),\r\n };\r\n\r\n let i18nPromise;\r\n if (metadata.type === 'id') { // for selector type, override localization (values are ids here, names are dynamic values for each selector)\r\n i18nPromise = this.getValuesAndMoreTextForSelector(value, metadata)\r\n .then(foo => _.extend(schemaI18n, foo));\r\n } else {\r\n i18nPromise = Promise.resolve(schemaI18n);\r\n }\r\n\r\n return i18nPromise.then(i18n => _.extend({}, predicate, {\r\n i18n,\r\n }));\r\n }\r\n\r\n extendFilter(filter) {\r\n if (filter.$and) {\r\n return Promise.map(filter.$and, _.bind(this.extendFilter, this))\r\n .then($and => ({ $and }));\r\n } else if (filter.$or) {\r\n return Promise.map(filter.$or, _.bind(this.extendFilter, this))\r\n .then($or => ({ $or }));\r\n }\r\n return this.extendPredicate(filter);\r\n }\r\n\r\n humanizedHtml(filter) {\r\n if (!filter.query || !filter.depth) {\r\n throw new Error('Incorrect filter object');\r\n }\r\n\r\n if (filter.depth < 1 || filter.depth > 2) {\r\n throw new Error('Filter only support 2 levels');\r\n }\r\n\r\n this.filterI18n = new FilterI18n(\r\n filter.schema,\r\n this.i18n,\r\n this.options.schemaI18n,\r\n filter.options.shortDateFormat\r\n );\r\n\r\n const depthTemplateMap = {\r\n 1: singleTemplate,\r\n 2: listTemplate,\r\n };\r\n\r\n return this.extendFilter(filter.query)\r\n .then((extended) => {\r\n const template = depthTemplateMap[filter.depth];\r\n\r\n return template({\r\n filter: extended,\r\n });\r\n });\r\n }\r\n}\r\n\r\nexport default FilterBar;\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__26__;","var pug = require(\"!../../../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (editText, error, hideEdit, hideRemove, humanizedFilterHtml, loading, loadingErrorText, loadingText, removeText, title) {pug_html = pug_html + \"\\u003Cdiv class=\\\"panel-component\\\"\\u003E\\u003Cdiv class=\\\"panel-body\\\"\\u003E\\u003Cdiv class=\\\"filter_title_collapsed\\\"\\u003E\" + (pug.escape(null == (pug_interp = title) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\nif (loading) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"filter_row_readonly\\\"\\u003E\" + (pug.escape(null == (pug_interp = loadingText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n}\nelse\nif (error) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"filter_row_readonly\\\"\\u003E\" + (pug.escape(null == (pug_interp = loadingErrorText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"filter_row_readonly\\\"\\u003E\" + (null == (pug_interp = humanizedFilterHtml) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"filter_links\\\"\\u003E\";\nif (!hideEdit) {\npug_html = pug_html + \"\\u003Ca class=\\\"filter-bar__edit-filter-link editFilterLink\\\"\\u003E\\u003Cdiv\" + (\" class=\\\"spritedimage filtericonsalign edit_icon\\\"\"+pug.attr(\"title\", editText, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fa\\u003E\\u003Ca class=\\\"filter-bar__edit-filter-link editFilterLink\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = editText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nif (!hideRemove) {\npug_html = pug_html + \"\\u003Ca class=\\\"filter-bar__remove-filter-link removeFilterLink\\\"\\u003E\\u003Cdiv\" + (\" class=\\\"spritedimage filtericonsalign remove_icon_gray_16\\\"\"+pug.attr(\"title\", removeText, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fa\\u003E\\u003Ca class=\\\"filter-bar__remove-filter-link removeFilterLink\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = removeText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"editText\" in locals_for_with?locals_for_with.editText:typeof editText!==\"undefined\"?editText:undefined,\"error\" in locals_for_with?locals_for_with.error:typeof error!==\"undefined\"?error:undefined,\"hideEdit\" in locals_for_with?locals_for_with.hideEdit:typeof hideEdit!==\"undefined\"?hideEdit:undefined,\"hideRemove\" in locals_for_with?locals_for_with.hideRemove:typeof hideRemove!==\"undefined\"?hideRemove:undefined,\"humanizedFilterHtml\" in locals_for_with?locals_for_with.humanizedFilterHtml:typeof humanizedFilterHtml!==\"undefined\"?humanizedFilterHtml:undefined,\"loading\" in locals_for_with?locals_for_with.loading:typeof loading!==\"undefined\"?loading:undefined,\"loadingErrorText\" in locals_for_with?locals_for_with.loadingErrorText:typeof loadingErrorText!==\"undefined\"?loadingErrorText:undefined,\"loadingText\" in locals_for_with?locals_for_with.loadingText:typeof loadingText!==\"undefined\"?loadingText:undefined,\"removeText\" in locals_for_with?locals_for_with.removeText:typeof removeText!==\"undefined\"?removeText:undefined,\"title\" in locals_for_with?locals_for_with.title:typeof title!==\"undefined\"?title:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (filter) {pug_mixins[\"predicate\"] = pug_interp = function(predicate, isFirst){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cspan class=\\\"column\\\"\\u003E\";\nif ((!isFirst)) {\npug_html = pug_html + \"\\u003Cspan class=\\\"filterand\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + (pug.escape(null == (pug_interp = predicate.i18n.property) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"filter_operator\\\"\\u003E\" + (pug.escape(null == (pug_interp = predicate.i18n.operator) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n// iterate predicate.i18n.values\n;(function(){\n var $$obj = predicate.i18n.values;\n if ('number' == typeof $$obj.length) {\n for (var index = 0, $$l = $$obj.length; index < $$l; index++) {\n var val = $$obj[index];\nif ((index != 0)) {\npug_html = pug_html + \",\";\n}\npug_html = pug_html + \"\\u003Cspan class=\\\"filterValue\\\"\\u003E\" + (pug.escape(null == (pug_interp = ' '+val) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var index in $$obj) {\n $$l++;\n var val = $$obj[index];\nif ((index != 0)) {\npug_html = pug_html + \",\";\n}\npug_html = pug_html + \"\\u003Cspan class=\\\"filterValue\\\"\\u003E\" + (pug.escape(null == (pug_interp = ' '+val) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n }\n }\n}).call(this);\n\nif ((!!predicate.i18n.moreText)) {\npug_html = pug_html + \",\\u003Cspan class=\\\"type-bold\\\"\\u003E\" + (pug.escape(null == (pug_interp = ' '+predicate.i18n.moreText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\n};\npug_html = pug_html + \"\\u003Cspan class=\\\"humanized\\\"\\u003E\";\npug_mixins[\"predicate\"](filter, true);\npug_html = pug_html + \"\\u003C\\u002Fspan\\u003E\";}.call(this,\"filter\" in locals_for_with?locals_for_with.filter:typeof filter!==\"undefined\"?filter:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (filter) {pug_mixins[\"predicate\"] = pug_interp = function(predicate, isFirst){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cspan class=\\\"column\\\"\\u003E\";\nif ((!isFirst)) {\npug_html = pug_html + \"\\u003Cspan class=\\\"filterand\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + (pug.escape(null == (pug_interp = predicate.i18n.property) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"filter_operator\\\"\\u003E\" + (pug.escape(null == (pug_interp = predicate.i18n.operator) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n// iterate predicate.i18n.values\n;(function(){\n var $$obj = predicate.i18n.values;\n if ('number' == typeof $$obj.length) {\n for (var index = 0, $$l = $$obj.length; index < $$l; index++) {\n var val = $$obj[index];\nif ((index != 0)) {\npug_html = pug_html + \",\";\n}\npug_html = pug_html + \"\\u003Cspan class=\\\"filterValue\\\"\\u003E\" + (pug.escape(null == (pug_interp = ' '+val) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var index in $$obj) {\n $$l++;\n var val = $$obj[index];\nif ((index != 0)) {\npug_html = pug_html + \",\";\n}\npug_html = pug_html + \"\\u003Cspan class=\\\"filterValue\\\"\\u003E\" + (pug.escape(null == (pug_interp = ' '+val) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n }\n }\n}).call(this);\n\nif ((!!predicate.i18n.moreText)) {\npug_html = pug_html + \",\\u003Cspan class=\\\"type-bold\\\"\\u003E\" + (pug.escape(null == (pug_interp = ' '+predicate.i18n.moreText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\n};\nvar predicates = filter.$and || filter.$or\npug_html = pug_html + \"\\u003Cspan class=\\\"humanized\\\"\\u003E\";\n// iterate predicates\n;(function(){\n var $$obj = predicates;\n if ('number' == typeof $$obj.length) {\n for (var index = 0, $$l = $$obj.length; index < $$l; index++) {\n var predicate = $$obj[index];\npug_mixins[\"predicate\"](predicate, index === 0);\n }\n } else {\n var $$l = 0;\n for (var index in $$obj) {\n $$l++;\n var predicate = $$obj[index];\npug_mixins[\"predicate\"](predicate, index === 0);\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Fspan\\u003E\";}.call(this,\"filter\" in locals_for_with?locals_for_with.filter:typeof filter!==\"undefined\"?filter:undefined));;return pug_html;};\nmodule.exports = template;","module.exports = __WEBPACK_EXTERNAL_MODULE__33__;","module.exports = __WEBPACK_EXTERNAL_MODULE__35__;","module.exports = __WEBPACK_EXTERNAL_MODULE__37__;","module.exports = __WEBPACK_EXTERNAL_MODULE__38__;","export * from './src/constants';\r\nexport * from './src/converter';\r\nexport * from './src/predicate';\r\nexport * from './src/util';\r\nexport * from './src/add-filter-button';\r\nexport * from './src/with-popover';\r\nexport * from './src/schema-localizer';\r\nexport * from './src/filterMetadataToLegacy';\r\nexport * from './src/filterMetadata';\r\n","export const PredicateUIType = {\r\n Selector: 0,\r\n Editor: 1,\r\n ReadOnly: 2,\r\n};\r\n\r\nexport const PredicateType = {\r\n Number: 'number',\r\n Integer: 'integer',\r\n Boolean: 'boolean',\r\n Category: 'category',\r\n Selector: 'id',\r\n String: 'string',\r\n Custom: 'custom',\r\n Date: 'datetime',\r\n};\r\n\r\nexport const PredicateValueUIType = {\r\n Checkbox: 'checkbox',\r\n Radio: 'radio',\r\n Select: 'select',\r\n Textarea: 'textarea',\r\n};\r\n\r\nexport const FilterStorageType = {\r\n SelectableFilter: 'SelectableFilter',\r\n EditableFilter: 'EditableFilter',\r\n};\r\n\r\nexport const MaximumPredicateLimit = 10;\r\n\r\nexport const MaximumSavedFiltersLimit = 10;\r\n\r\nexport const FilterBarIngoreClickOutsideClassName = 'filter-bar-ignore-click-outside';\r\n\r\nexport const WaterfallFilterType = {\r\n CampaignType: 0,\r\n CampaignStatus: 1,\r\n AdGroupStatus: 2,\r\n DateFilter: 3,\r\n};\r\n","/* eslint-disable no-param-reassign */\r\nimport { isArray, keys, map, isEmpty, object, filter, each, extend } from 'underscore';\r\nimport { Predicate } from './predicate';\r\n\r\nfunction isQueryExpressionValid(queryExpression, filterSchema) {\r\n const propertyKey = keys(queryExpression)[0];\r\n let isValid = false;\r\n const property = filterSchema.filterProps()[propertyKey];\r\n\r\n if (!property) {\r\n each(filterSchema.filterProps(), (value, key) => {\r\n if (propertyKey === value.originalProperty) {\r\n queryExpression[key] = queryExpression[propertyKey];\r\n delete queryExpression[propertyKey];\r\n isValid = true;\r\n }\r\n });\r\n } else {\r\n isValid = true;\r\n }\r\n return isValid;\r\n}\r\n\r\nexport function convertFilterEntityToExpressions(filterEntity) {\r\n const queryExpressions = [];\r\n\r\n if (!filterEntity) {\r\n return queryExpressions;\r\n }\r\n\r\n if (filterEntity.depth > 2) {\r\n throw new Error('Filter control doesn\\'t support expression trees of depth > 2');\r\n }\r\n if (filterEntity.depth === 1) {\r\n queryExpressions.push(filterEntity.query);\r\n } else if (filterEntity.depth > 1) {\r\n if (isArray(filterEntity.query.$and)) {\r\n queryExpressions.push(...filterEntity.query.$and);\r\n }\r\n if (isArray(filterEntity.query.$or)) {\r\n queryExpressions.push(...filterEntity.query.$or);\r\n }\r\n }\r\n\r\n return filter(\r\n queryExpressions,\r\n queryExpression => isQueryExpressionValid(queryExpression, filterEntity.schema)\r\n );\r\n}\r\n\r\nexport function convertExpressionsToQuery(expressions) {\r\n let query;\r\n\r\n if (isEmpty(expressions)) {\r\n query = {};\r\n } else if (expressions.length === 1) {\r\n [query] = expressions;\r\n } else {\r\n query = object(['$and'], [expressions]);\r\n }\r\n\r\n return query;\r\n}\r\n\r\nexport function convertPredicatesToQuery(predicates) {\r\n const queryExpressions = map(predicates, predicate => predicate.toQuery());\r\n return convertExpressionsToQuery(queryExpressions);\r\n}\r\n\r\nexport function getValidFilterEntity(filterEntity) {\r\n const validExpressions = convertFilterEntityToExpressions(filterEntity);\r\n const validQuery = convertExpressionsToQuery(validExpressions);\r\n if (isEmpty(validQuery)) {\r\n return null;\r\n }\r\n filterEntity.updateQuery(validQuery);\r\n return filterEntity;\r\n}\r\n\r\nexport function convertFilterEntityToPredicates(filterEntity) {\r\n return convertFilterEntityToExpressions(filterEntity)\r\n .map(queryExpression => Predicate.fromQueryExpression({\r\n query: queryExpression,\r\n }))\r\n .map((editablePredicate) => {\r\n const { properties } = filterEntity.schema.entitySchema;\r\n if (editablePredicate.property in properties) {\r\n if (properties[editablePredicate.property].isDeletedProperty) {\r\n return extend(editablePredicate, {\r\n isDeletedProperty: true,\r\n });\r\n }\r\n\r\n if (properties[editablePredicate.property].isInvalidProperty) {\r\n return extend(editablePredicate, {\r\n isInvalidProperty: true,\r\n });\r\n }\r\n }\r\n\r\n return editablePredicate;\r\n });\r\n}\r\n","import { isUndefined, object, keys, values, find, isEqual } from 'underscore';\r\nimport { PredicateUIType } from './constants';\r\n\r\nexport class Predicate {\r\n constructor({\r\n uiType = PredicateUIType.Editor,\r\n removable,\r\n property,\r\n operator,\r\n value,\r\n items,\r\n }) {\r\n this.uiType = uiType;\r\n this.removable = isUndefined(removable) ? true : removable;\r\n this.property = property;\r\n this.operator = operator;\r\n this.value = value;\r\n this.items = items;\r\n }\r\n\r\n getHumanizedValue() {\r\n if (this.items && this.items.length > 0) {\r\n return (find(this.items, item => isEqual(item.value, this.value)) || {}).text;\r\n }\r\n return this.value;\r\n }\r\n\r\n toQuery() {\r\n return object([this.property], [object([`$${this.operator}`], [this.value])]);\r\n }\r\n\r\n static fromQueryExpression({\r\n query,\r\n removable,\r\n }) {\r\n const property = keys(query)[0];\r\n const predicate = query[property];\r\n const operator = keys(predicate)[0].replace(/^\\$/, '');\r\n const value = values(predicate)[0];\r\n\r\n return new Predicate({\r\n removable,\r\n property,\r\n operator,\r\n value,\r\n });\r\n }\r\n}\r\n","import { defaults, find, map, filter, contains, pluck, union, each, isArray, keys, isObject, isEmpty } from 'underscore';\r\nimport { Predicate } from './predicate';\r\nimport { PredicateUIType } from './constants';\r\n\r\nexport function extendPredicatesWithSelectorConfig(selector, predicates) {\r\n const selectorPredicates\r\n = map(selector, selectorPredicate => new Predicate(defaults(\r\n {\r\n uiType: PredicateUIType.Selector,\r\n removable: false,\r\n items: selectorPredicate.items,\r\n property: selectorPredicate.property,\r\n operator: 'in',\r\n },\r\n find(\r\n predicates,\r\n predicate => predicate.property === selectorPredicate.property\r\n ) || {\r\n value: selectorPredicate.defaultValue,\r\n }\r\n )));\r\n const editPredicates = filter(predicates, predicate => !contains(pluck(selector, 'property'), predicate.property));\r\n\r\n return union(selectorPredicates, editPredicates);\r\n}\r\n\r\nexport function removeQueryByColumnId(query, columnId, removePopColumns = false) {\r\n let changed = false;\r\n\r\n if (!query || isEmpty(query)) {\r\n return changed;\r\n }\r\n\r\n const popColumnId = `PoP${columnId}`;\r\n const popColumnChangeId = `PoP${columnId}Change`;\r\n const popColumnChangePercentId = `PoP${columnId}ChangePercent`;\r\n\r\n let idList = [columnId];\r\n\r\n if (removePopColumns) {\r\n idList = idList.concat([popColumnId, popColumnChangeId, popColumnChangePercentId]);\r\n }\r\n\r\n each(keys(query), (key) => {\r\n const o = query[key];\r\n\r\n if (idList.indexOf(key) >= 0) {\r\n delete query[key]; // eslint-disable-line no-param-reassign\r\n changed = true;\r\n } else if (isArray(o)) {\r\n const len = o.length;\r\n query[key] = removePopColumns ? // eslint-disable-line no-param-reassign\r\n filter(o, e => !e[columnId] &&\r\n !e[popColumnId] &&\r\n !e[popColumnChangeId] &&\r\n !e[popColumnChangePercentId]) :\r\n filter(o, e => !e[columnId]);\r\n const newlen = query[key].length;\r\n\r\n if (len !== newlen) {\r\n changed = true;\r\n }\r\n\r\n if (newlen === 0 && changed) {\r\n delete query[key]; // eslint-disable-line no-param-reassign\r\n }\r\n } else if (isObject(o)) {\r\n each(idList, (id) => {\r\n if (o[id]) {\r\n delete o[id];\r\n changed = true;\r\n }\r\n });\r\n }\r\n });\r\n\r\n return changed;\r\n}\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport { Button, Glyphicon } from '@bingads-webui-react/primitive';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nconst getStyles = (_, { palette = {} }) => ({\r\n button: {\r\n '&.btn': {\r\n fontSize: '14px',\r\n border: 'none',\r\n height: 56,\r\n paddingLeft: 8,\r\n paddingRight: 8,\r\n marginLeft: 4,\r\n flex: '0 0 auto',\r\n\r\n '& .iconba': {\r\n fontSize: '16px',\r\n color: palette.themePrimary,\r\n marginRight: '8px',\r\n paddingBottom: '5px', // align to link\r\n },\r\n },\r\n },\r\n buttonGray: {\r\n '&.btn': {\r\n backgroundColor: palette.neutralLighter,\r\n\r\n '&:hover': {\r\n backgroundColor: palette.neutralLight,\r\n },\r\n '&:focus': {\r\n backgroundColor: palette.neutralQuaternaryAlt,\r\n '&:hover': {\r\n backgroundColor: palette.neutralQuaternary,\r\n },\r\n },\r\n },\r\n },\r\n});\r\n\r\nclass AddFilterButtonUnthemed extends React.PureComponent {\r\n render() {\r\n return (\r\n \r\n \r\n {this.props.i18n.getString(_TL_('Add filter')) }\r\n \r\n );\r\n }\r\n}\r\n\r\nAddFilterButtonUnthemed.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n button: PropTypes.string.isRequired,\r\n buttonGray: PropTypes.string.isRequired,\r\n }).isRequired,\r\n onClick: PropTypes.func.isRequired,\r\n disableAdd: PropTypes.bool,\r\n isGrayCommandBar: PropTypes.bool,\r\n};\r\n\r\nAddFilterButtonUnthemed.defaultProps = {\r\n disableAdd: false,\r\n isGrayCommandBar: false,\r\n};\r\n\r\n\r\nexport const AddFilterButton =\r\n withDefaultStyles(AddFilterButtonUnthemed, getStyles);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport hoistNonReactStatics from 'hoist-non-react-statics';\r\nimport { getDisplayName } from '@bingads-webui-react/hoc-utils';\r\nimport { Callout } from '@bingads-webui-react/callout';\r\n\r\nexport const withPopover = (WrappedComponent) => {\r\n const HOC = (props) => {\r\n const {\r\n show,\r\n onClose,\r\n classes,\r\n children,\r\n id,\r\n placement,\r\n closeButton,\r\n title,\r\n popoverClassName,\r\n container,\r\n focusLockContent,\r\n } = props;\r\n\r\n return (\r\n }\r\n placement={placement}\r\n popoverId={id}\r\n show={show}\r\n classes={classes}\r\n onClose={onClose}\r\n closeButton={closeButton}\r\n title={title}\r\n popoverClassName={popoverClassName}\r\n container={container}\r\n focusLockContent={focusLockContent}\r\n >\r\n {children}\r\n \r\n );\r\n };\r\n\r\n HOC.displayName = `withPopover(${getDisplayName(WrappedComponent)})`;\r\n\r\n hoistNonReactStatics(HOC, WrappedComponent);\r\n\r\n HOC.defaultProps = {\r\n classes: {},\r\n id: 'pop-over',\r\n placement: 'bottom',\r\n closeButton: false,\r\n title: null,\r\n onClose: null,\r\n show: null,\r\n popoverClassName: null,\r\n container: null,\r\n focusLockContent: true,\r\n };\r\n\r\n HOC.propTypes = {\r\n children: PropTypes.element.isRequired,\r\n onClose: PropTypes.func,\r\n show: PropTypes.bool,\r\n classes: PropTypes.shape({}),\r\n id: PropTypes.string,\r\n placement: PropTypes.string,\r\n closeButton: PropTypes.bool,\r\n title: PropTypes.string,\r\n popoverClassName: PropTypes.string,\r\n container: PropTypes.shape(),\r\n focusLockContent: PropTypes.bool,\r\n };\r\n\r\n return HOC;\r\n};\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__54__;","module.exports = __WEBPACK_EXTERNAL_MODULE__55__;","module.exports = __WEBPACK_EXTERNAL_MODULE__56__;","import _ from 'underscore';\r\nimport { include } from 'underscore.string';\r\n\r\nexport function localize(schema, schemaI18n, i18n) {\r\n _.each(schema.properties, (prop, name) => {\r\n const localizedProp = prop;\r\n let schemaName = schema.name;\r\n let propName = name;\r\n if (prop.property) {\r\n const names = prop.property.split('/');\r\n if (names.length > 1) {\r\n [schemaName, propName] = _.last(names, 2);\r\n }\r\n }\r\n if (!localizedProp.title) {\r\n localizedProp.title = schemaI18n.property(schemaName, propName);\r\n }\r\n\r\n // update settings for enum type\r\n if (!_.isEmpty(prop.enum)) {\r\n _.defaults(localizedProp, { localized: {} });\r\n\r\n const enumType = localizedProp.enumType ? localizedProp.enumType : localizedProp.name;\r\n\r\n // update enum value (for odata converting) & localization\r\n _.each(prop.enum, (enumValue) => {\r\n let localizedValue = '';\r\n const originalEnumValue = prop.enumValueMap[enumValue];\r\n\r\n try {\r\n // If enum value contains comma-separated items, localize each item individually\r\n if (prop.localized[enumValue]) {\r\n localizedValue = prop.localized[enumValue];\r\n } else if (include(originalEnumValue, ',')) {\r\n const separatedEnumValues = originalEnumValue.split(',');\r\n const localizedEnumValues = [];\r\n _.each(separatedEnumValues, (individualEnumValue) => {\r\n localizedEnumValues.push(i18n.getString(`${enumType}_${individualEnumValue}`));\r\n });\r\n localizedValue = localizedEnumValues.join(', ');\r\n } else {\r\n localizedValue = i18n.getString(`${enumType}_${originalEnumValue}`);\r\n }\r\n } catch (e) {\r\n // continue regardless of error\r\n }\r\n\r\n if (_.isEmpty(localizedValue)) {\r\n // Try to get the localized enum value via schemaI18n\r\n localizedValue = schemaI18n.value(\r\n schemaName,\r\n propName, originalEnumValue\r\n );\r\n }\r\n\r\n if (!_.isEmpty(localizedValue)) {\r\n localizedProp.localized[enumValue] = localizedValue;\r\n }\r\n });\r\n } else if (prop.type === 'boolean' && !prop.localized) { // update localization for boolean value\r\n _.extendOwn(localizedProp, { localized: {} }, _.pick(prop, 'chooseType'));\r\n // TODO: move this part to component/i18n\r\n const localizedTrueValue = i18n.getString(`${prop.property}`);\r\n const localizedFalseValue = i18n.getString(`FilterOptions_${prop.property}_False`);\r\n\r\n localizedProp.localized.true = localizedTrueValue;\r\n localizedProp.localized.false = localizedFalseValue;\r\n if (!_.isEmpty(localizedTrueValue)) {\r\n localizedProp.description = localizedTrueValue;\r\n }\r\n }\r\n\r\n localizedProp.name = localizedProp.property || localizedProp.title;\r\n return localizedProp;\r\n });\r\n return schema;\r\n}\r\n","/* eslint-disable max-len */\r\n/* eslint-disable no-param-reassign */\r\nimport _ from 'underscore';\r\nimport { toLegacy, toLegacyString } from './enum';\r\n\r\nconst EnumPropertyToTypeMapping = {\r\n AudienceStatus: ['AdGroupCriterionStatus'],\r\n BidTarget: ['BidTargetType'],\r\n BidType: ['BidType'],\r\n CampaignType: ['CampaignType'],\r\n CallTrackingStatus: ['AdGroupCallTrackingStatus'],\r\n DeliveryStatus: ['DeliveryStatus'],\r\n DevicePreference: ['DevicePreference'],\r\n DisplayBiddingStrategyType: ['BiddingStrategyType'],\r\n Language: ['Language'],\r\n Medium: ['Medium'],\r\n Status: ['CampaignStatus', 'AdGroupStatus', 'AudienceStatus', 'AdStatus'],\r\n Type: ['AdType'],\r\n};\r\nconst EnumPropertyToStringTypeMapping = [\r\n 'AudienceType',\r\n 'Day',\r\n];\r\nconst NoEnumPropertyToStringTypeMapping = [\r\n 'DeviceName',\r\n 'LevelOfDetails',\r\n 'EditorialStatus',\r\n 'AdGroupCashbackScope',\r\n 'CampaignCashbackScope',\r\n];\r\nconst BooleanToStringTypeMapping = [\r\n 'IsAppealPending',\r\n];\r\n\r\nfunction toLegacyEnum(value, property) {\r\n if (_.contains(EnumPropertyToStringTypeMapping, property)) {\r\n const legacyValue = toLegacyString(value);\r\n\r\n if (legacyValue) {\r\n return legacyValue;\r\n }\r\n }\r\n\r\n if (_.contains(NoEnumPropertyToStringTypeMapping, property)) {\r\n return value;\r\n }\r\n\r\n const types = EnumPropertyToTypeMapping[property] || [property];\r\n\r\n if (_.size(types) > 0) {\r\n const legacyValue = toLegacy(value);\r\n\r\n if (legacyValue) {\r\n return legacyValue;\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction toLegacyOperator(op, col, schema) {\r\n let ret = op || '$eq';\r\n\r\n switch (ret) {\r\n case '$contains':\r\n ret = 'Contains';\r\n break;\r\n case '$doesnotcontain':\r\n ret = 'DoesNotContain';\r\n break;\r\n case '$startswith':\r\n ret = 'BeginsWith';\r\n break;\r\n case '$endswith':\r\n ret = 'EndsWith';\r\n break;\r\n case '$eq':\r\n ret = 'Equal';\r\n break;\r\n case '$neq':\r\n ret = 'NotEqual';\r\n break;\r\n case '$gt':\r\n ret = 'Greater';\r\n break;\r\n case '$gte':\r\n ret = 'GreaterOrEqual';\r\n break;\r\n case '$lt':\r\n ret = 'Less';\r\n break;\r\n case '$lte':\r\n ret = 'LessOrEqual';\r\n break;\r\n case '$in':\r\n if (schema.properties[col] && _.isEmpty(schema.properties[col].enum) && _.isEmpty(schema.properties[col].groupedItems)) {\r\n ret = 'Equal';\r\n } else {\r\n ret = 'EnumSelection';\r\n }\r\n break;\r\n case '$containsall':\r\n ret = 'ContainsAll';\r\n break;\r\n case '$containsany':\r\n ret = 'ContainsAny';\r\n break;\r\n case '$containsnone':\r\n ret = 'ContainsNone';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return ret;\r\n}\r\n\r\nfunction toLegacyColumn(col, filterSchema) {\r\n return filterSchema ? filterSchema.toAlias(col, 'legacy') : col;\r\n}\r\n\r\nfunction toLegacyValue(values, col, schema) {\r\n if (_.contains(BooleanToStringTypeMapping, col)) {\r\n return _.map(values, value => (value === true ? 'true' : 'false'));\r\n }\r\n\r\n if (schema.properties[col]) {\r\n if (!_.isEmpty(schema.properties[col].enum) || !_.isEmpty(schema.properties[col].groupedItems)) {\r\n return _.map(values, value => toLegacyEnum(value, col));\r\n } else if (schema.properties[col].type === 'boolean') {\r\n return _.map(values, value => (value === true ? 1 : 0));\r\n }\r\n }\r\n\r\n return values;\r\n}\r\n\r\nexport function toLegacyFilter(filter) {\r\n const translateToLegacyFormat = function (query) {\r\n const condition = _.pairs(query)[0][1];\r\n const operator = _.pairs(condition)[0][0];\r\n let value = _.pairs(condition)[0][1];\r\n\r\n if (!_.isArray(value)) {\r\n value = [value];\r\n }\r\n\r\n return {\r\n SelectedColumn: _.pairs(query)[0][0],\r\n SelectedOperator: operator,\r\n Values: value,\r\n };\r\n };\r\n\r\n let schema;\r\n let legacyFormats;\r\n\r\n\r\n if (filter && filter.query && !_.isEmpty(filter.query)) {\r\n schema = filter.schema && filter.schema.entitySchema ?\r\n filter.schema.entitySchema :\r\n filter.options.entitySchema;\r\n\r\n if (filter.query.$and && filter.query.$and.length > 0) {\r\n legacyFormats = [];\r\n\r\n _.each(filter.query.$and, (query) => {\r\n if (query.$and) {\r\n legacyFormats = legacyFormats.concat(_.map(query.$and, subQuery => translateToLegacyFormat(subQuery)));\r\n } else {\r\n legacyFormats.push(translateToLegacyFormat(query));\r\n }\r\n });\r\n } else {\r\n legacyFormats = [translateToLegacyFormat(filter.query)];\r\n }\r\n }\r\n\r\n if (!_.isArray(legacyFormats)) {\r\n return null;\r\n }\r\n\r\n return _.map(legacyFormats, (legacyFormat) => {\r\n let col = legacyFormat.SelectedColumn;\r\n\r\n // replace Campaign/Status format to CampaignStatus type\r\n if (col.indexOf('/') !== -1) {\r\n col = col.split('/').join('');\r\n }\r\n\r\n // translate CamapaignIsExperiment to MT filter expression\r\n if (col === 'CampaignIsExperiment') {\r\n col = 'Campaign/ExperimentId';\r\n legacyFormat.SelectedOperator = legacyFormat.Values[0] ? '$gt' : '$le';\r\n legacyFormat.Values = [0];\r\n } else if (col === 'BidAmountBidAmount') {\r\n col = 'BidAmount/Bid/Amount';\r\n } else if (col === 'BidBoostMultiplier') {\r\n col = 'BidBoost/Multiplier';\r\n }\r\n\r\n return {\r\n SelectedColumn: toLegacyColumn(col, filter.schema),\r\n SelectedOperator: toLegacyOperator(legacyFormat.SelectedOperator, col, schema),\r\n Values: toLegacyValue(legacyFormat.Values, col, schema),\r\n };\r\n });\r\n}\r\n","import _ from 'underscore';\r\nimport { get } from '@bingads-webui-universal/primitive-utilities';\r\n\r\n\r\nconst enums = {\r\n AdGroupCriterionStatus: {\r\n Active: 161,\r\n Paused: 162,\r\n Deleted: 163,\r\n Excluded: 165,\r\n },\r\n AdGroupCallTrackingStatus: {\r\n NotApplicable: 0,\r\n Eligible: 1,\r\n NotEligible: 2,\r\n ProvisioningPending: 3,\r\n Provisioned: 4,\r\n },\r\n AdGroupStatus: {\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 AdStatus: {\r\n Inactive: 0,\r\n Active: 1,\r\n Paused: 2,\r\n Deleted: 3,\r\n },\r\n AdType: {\r\n Text: 1,\r\n Product: 128,\r\n AppInstall: 256,\r\n DynamicSearch: 512,\r\n ExpandedText: 1024,\r\n Hotel: 2048,\r\n Responsive: 4096,\r\n ResponsiveSearch: 8192,\r\n },\r\n AdStrength: {\r\n Unrated: 0,\r\n Poor: 1,\r\n Average: 2,\r\n Good: 3,\r\n Excellent: 4,\r\n },\r\n BidTargetType: {\r\n Keyword: 0,\r\n BehaviorSegment: 11,\r\n Site: 12,\r\n },\r\n BidType: {\r\n BidOnly: 0,\r\n TargetAndBid: 1,\r\n },\r\n CallTrackingStatus: {\r\n NotApplicable: 0,\r\n Eligible: 1,\r\n NotEligible: 2,\r\n ProvisioningPending: 3,\r\n Provisioned: 4,\r\n },\r\n CampaignStatus: {\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 DevicePreference: {\r\n All: 0,\r\n Mobile: 2,\r\n },\r\n CampaignType: {\r\n Default: 1,\r\n Shopping: 2,\r\n DynamicSearchAds: 4,\r\n Audience: 8,\r\n Smart: 16,\r\n Hotel: 32,\r\n PerformanceMax: 64,\r\n },\r\n DeliveryStatus: {\r\n CreditCardExpired: 10,\r\n IOExceeded: 20,\r\n PaymentInformationMissing: 30,\r\n InvalidFinancialStatusOther: 40,\r\n MigrationPaused: 45,\r\n CampaignDeleted: 48,\r\n CampaignSuspended: 49,\r\n CampaignBudgetPaused: 50,\r\n AdGroupExpired: 60,\r\n AdGroupDraft: 62,\r\n AdGroupDeleted: 63,\r\n CamAssetRejected: 64,\r\n CamAssetDeleted: 66,\r\n AdGroupTargetingTooNarrow: 67,\r\n EditorialRejected: 70,\r\n EditorialAppealRejected: 71,\r\n EditorialApprovedLimitedAppealRejected: 72,\r\n EditorialUnderAppeal: 75,\r\n UrlInvalid: 76,\r\n ApplicationNotFound: 77,\r\n ApplicationDestinationUrlMismatch: 78,\r\n PendingMetadataSync: 79,\r\n EditorialPending: 80,\r\n AssociationDeleted: 85,\r\n CampaignUserPaused: 90,\r\n AdGroupPrivacyPending: 91,\r\n AdGroupUserPaused: 100,\r\n AdUserPaused: 110,\r\n KeywordMatchTypeAdGroupMediumCombinationInvalid: 115,\r\n KeywordUserPaused: 120,\r\n NegativeKeywordConflicts: 130,\r\n PartialNegativeKeywordConflicts: 135,\r\n EditorialApprovedLimited: 200,\r\n LowSupply: 300,\r\n LowQuality: 400,\r\n BidBelowFirstPageBid: 500,\r\n Incomplete: 1000,\r\n BudgetSuggestions: 1001,\r\n InlineOpportunity: 1060,\r\n GeoCodingIncomplete: 1101,\r\n ProductTargetUserPaused: 1102,\r\n AdExtensionNotPresent: 1103,\r\n AdExtensionDeleted: 1104,\r\n AdExtensionAssociationDeleted: 1105,\r\n StoreIdNotAssociated: 1106,\r\n AdGroupAudienceAssociationPaused: 1107,\r\n AdGroupAudienceAssociationExcluded: 1108,\r\n AdNotPresent: 1200,\r\n AdNotActive: 1201,\r\n ApplicationDestinationUrlValidationIncomplete: 1252,\r\n AutoBiddingLimitedInventoryLimit: 1412,\r\n AutoBiddingLimitedMaxCPCRestriction: 1413,\r\n AutoBiddingLimitedBudgetRestriction: 1414,\r\n AutoBiddingLimitedUnAttainableTarget: 1415,\r\n AutoBiddingPortfolioBidStrategyTrainingStatus: 1421,\r\n Eligible: 2147483647,\r\n New: 2000,\r\n AutoBiddingLimitedByNotEnoughConversions: 190,\r\n NoEligibleAds: 105,\r\n NoEligibleKeywords: 106,\r\n NoEligibleAdGroups: 107,\r\n },\r\n BiddingStrategyType: {\r\n InheritFromParent: 0,\r\n ManualCpc: 1,\r\n MaxClicks: 2,\r\n MaxConversions: 3,\r\n TargetCpa: 4,\r\n EnhancedCpc: 5,\r\n TargetRoas: 6,\r\n MaxRoas: 7,\r\n MaxConversionValue: 8,\r\n TargetImpressionShare: 9,\r\n ManualCpv: 11,\r\n ManualCpm: 12,\r\n PercentCpc: 13,\r\n Commission: 14,\r\n CostPerSale: 15,\r\n },\r\n Language: {\r\n Arabic: 7,\r\n TraditionalChinese: 24,\r\n Danish: 28,\r\n Dutch: 29,\r\n English: 30,\r\n Finnish: 35,\r\n French: 36,\r\n German: 40,\r\n Italian: 55,\r\n Norwegian: 82,\r\n Portuguese: 88,\r\n Spanish: 109,\r\n Swedish: 112,\r\n SimplifiedChinese: 137,\r\n Greek: 41,\r\n Polish: 87,\r\n Czech: 27,\r\n Estonian: 32,\r\n Croatian: 26,\r\n Hungarian: 48,\r\n Lithuanian: 70,\r\n Latvian: 68,\r\n Maltese: 75,\r\n Romanian: 92,\r\n Slovak: 106,\r\n Slovenian: 107,\r\n Turkish: 123,\r\n Serbian: 98,\r\n Bosnian: 138,\r\n Albanian: 5,\r\n Macedonian: 71,\r\n Icelandic: 49,\r\n Japanese: 56,\r\n All: 1000,\r\n },\r\n Medium: {\r\n Search: 1,\r\n Content: 2,\r\n SearchAndContent: 3,\r\n Audience: 11,\r\n },\r\n OrderItemStatus: {\r\n Active: 161,\r\n Paused: 162,\r\n Deleted: 163,\r\n },\r\n MatchType: {\r\n Exact: 1,\r\n Phrase: 2,\r\n Broad: 3,\r\n },\r\n};\r\n\r\nconst stringEnums = {\r\n AudienceType: {\r\n Remessaging: 'Remessaging',\r\n Custom: 'Custom',\r\n InMarket: 'InMarket',\r\n Product: 'Product',\r\n RemarketingSimilar: 'RemarketingSimilar',\r\n CustomerList: 'CustomerList',\r\n CombinedList: 'CombinedList',\r\n },\r\n Status: {\r\n Active: 'Active',\r\n Excluded: 'Excluded',\r\n },\r\n CriterionAgeCriterionAgeRange: {\r\n EighteenToTwentyFive: 'EighteenToTwentyFive',\r\n TwentyFiveToThirtyFive: 'TwentyFiveToThirtyFive',\r\n ThirtyFiveToFifty: 'ThirtyFiveToFifty',\r\n FiftyToSixtyFive: 'FiftyToSixtyFive',\r\n SixtyFiveAndAbove: 'SixtyFiveAndAbove',\r\n Unknown: 'Unknown',\r\n },\r\n CriterionGenderCriterionGenderType: {\r\n Male: 'Male',\r\n Female: 'Female',\r\n Unknown: 'Unknown',\r\n },\r\n AudienceCriterionLevel: {\r\n AdGroup: 'AdGroup',\r\n Campaign: 'Campaign',\r\n },\r\n AccountType: {\r\n AdAccount: 'AdAccount',\r\n ManagerAccount: 'ManagerAccount',\r\n Unknown: 'Unknown',\r\n },\r\n};\r\n\r\nconst isFormat = fullValue => (/^Enum\\.(\\w+)'(\\w+)'$/).test(fullValue);\r\n\r\nexport function fromLegacy(legacyValue, type) {\r\n if (isFormat(legacyValue)) {\r\n return legacyValue;\r\n }\r\n const value = _.findKey(enums[type], val => String(val) === legacyValue);\r\n\r\n return value ? `Enum.${type}'${value}'` : null;\r\n}\r\n\r\nexport function toLegacy(fullValue) {\r\n if (!fullValue) {\r\n return fullValue;\r\n }\r\n const [, type, value] = fullValue.match(/^Enum\\.(\\w+)'(\\w+)'$/);\r\n const legacyValue = get(enums, [type, value]);\r\n\r\n return _.isNumber(legacyValue) ? String(legacyValue) : get(stringEnums, [type, value]);\r\n}\r\n\r\nexport function toLegacyString(fullValue) {\r\n if (!fullValue) {\r\n return fullValue;\r\n }\r\n const [, , value] = fullValue.match(/^Enum\\.(\\w+)'(\\w+)'$/);\r\n\r\n return value;\r\n}\r\n","/* eslint-disable */\r\n\r\n// todo [akamel] [ashish] this is an initial atempt at refactoring the mapper in webapi.js\r\nimport _ from 'underscore';\r\nimport { fromLegacy } from './enum';\r\n\r\nexport function operatorMapper(op) {\r\n var ret = (op || 'Equal');\r\n\r\n switch (ret) {\r\n case 'Contains':\r\n ret = 'contains';\r\n break;\r\n case 'DoesNotContain':\r\n ret = 'doesnotcontain';\r\n break;\r\n case 'BeginsWith':\r\n ret = 'startswith';\r\n break;\r\n case 'EndsWith':\r\n ret = 'endswith';\r\n break;\r\n case 'Equal':\r\n ret = 'eq';\r\n break;\r\n case 'NotEqual':\r\n ret = 'neq';\r\n break;\r\n case 'Greater':\r\n ret = 'gt';\r\n break;\r\n case 'GreaterOrEqual':\r\n ret = 'gte';\r\n break;\r\n case 'Less':\r\n ret = 'lt';\r\n break;\r\n case 'LessOrEqual':\r\n ret = 'lte';\r\n break;\r\n case 'EnumSelection':\r\n ret = 'eq';\r\n break;\r\n case 'Between':\r\n ret = ['gte','lte'];\r\n break;\r\n }\r\n\r\n return ret;\r\n}\r\n\r\nexport function columnNameMapper(name, entityType) {\r\n var ret = name;\r\n\r\n if (/^CustomColumn/.test(name)){\r\n return 'PerformanceMetrics/' + name;\r\n }\r\n\r\n switch (name) {\r\n case 'DisplayBiddingStrategyType':\r\n return 'DisplayBiddingStrategyType';\r\n case 'TopImpressionRate':\r\n case 'PerformanceMetricsTopImpressionRate':\r\n ret = 'PerformanceMetrics/TopImpressionRate';\r\n break;\r\n case 'AbsoluteTopImpressionRate':\r\n case 'PerformanceMetricsAbsoluteTopImpressionRate':\r\n ret = 'PerformanceMetrics/AbsoluteTopImpressionRate';\r\n break;\r\n case 'ExactMatchImpressionSharePercent':\r\n case 'PerformanceMetricsExactMatchImpressionSharePercent':\r\n ret = 'PerformanceMetrics/ExactMatchImpressionSharePercent';\r\n break;\r\n case 'TopImpressionSharePercent':\r\n case 'PerformanceMetricsTopImpressionSharePercent':\r\n ret = 'PerformanceMetrics/TopImpressionSharePercent';\r\n break;\r\n case 'TopISLostToBudgetPercent':\r\n case 'PerformanceMetricsTopISLostToBudgetPercent':\r\n ret = 'PerformanceMetrics/TopISLostToBudgetPercent';\r\n break;\r\n case 'TopISLostToRankPercent':\r\n case 'PerformanceMetricsTopISLostToRankPercent':\r\n ret = 'PerformanceMetrics/TopISLostToRankPercent';\r\n break;\r\n case 'AbsoluteTopImpressionSharePercent':\r\n case 'PerformanceMetricsAbsoluteTopImpressionSharePercent':\r\n ret = 'PerformanceMetrics/AbsoluteTopImpressionSharePercent';\r\n break;\r\n case 'AbsoluteTopISLostToBudgetPercent':\r\n case 'PerformanceMetricsAbsoluteTopISLostToBudgetPercent':\r\n ret = 'PerformanceMetrics/AbsoluteTopISLostToBudgetPercent';\r\n break;\r\n case 'AbsoluteTopISLostToRankPercent':\r\n case 'PerformanceMetricsAbsoluteTopISLostToRankPercent':\r\n ret = 'PerformanceMetrics/AbsoluteTopISLostToRankPercent';\r\n break;\r\n case 'Clicks':\r\n case 'ClickCount':\r\n case 'PerformanceMetricsClicks':\r\n case 'PerformanceMetricsClickCount':\r\n ret = 'PerformanceMetrics/Clicks';\r\n break;\r\n case 'Impressions':\r\n case 'PerformanceMetricsImpressions':\r\n case 'ImpressionCount':\r\n case 'PerformanceMetricsImpressionCount':\r\n ret = 'PerformanceMetrics/Impressions';\r\n break;\r\n case 'AveragePosition':\r\n case 'PerformanceMetricsAveragePosition':\r\n ret = 'PerformanceMetrics/AveragePosition';\r\n break;\r\n case 'TotalSpendAmount':\r\n case 'TotalEffectiveCost':\r\n case 'Spend':\r\n case 'PerformanceMetricsTotalSpendAmount':\r\n case 'PerformanceMetricsTotalEffectiveCost':\r\n case 'PerformanceMetricsSpend':\r\n ret = 'PerformanceMetrics/Spend';\r\n break;\r\n case 'ConversionCount':\r\n case 'Conversions':\r\n case 'PerformanceMetricsConversionCount':\r\n case 'PerformanceMetricsConversions':\r\n ret = 'PerformanceMetrics/Conversions';\r\n break;\r\n case 'ConversionsCredit':\r\n case 'PerformanceMetricsConversionsCredit':\r\n ret = 'PerformanceMetrics/ConversionsCredit';\r\n break;\r\n case 'AllConversions':\r\n case 'PerformanceMetricsAllConversions':\r\n ret = 'PerformanceMetrics/AllConversions';\r\n break;\r\n case 'AllConversionsCredit':\r\n case 'PerformanceMetricsAllConversionsCredit':\r\n ret = 'PerformanceMetrics/AllConversionsCredit';\r\n break;\r\n case 'ViewThroughConversions':\r\n case 'PerformanceMetricsViewThroughConversions':\r\n ret = 'PerformanceMetrics/ViewThroughConversions';\r\n break;\r\n case 'ViewThroughConversionsCredit':\r\n case 'PerformanceMetricsViewThroughConversionsCredit':\r\n ret = 'PerformanceMetrics/ViewThroughConversionsCredit';\r\n break;\r\n case 'ViewThroughConversionsCPA':\r\n case 'PerformanceMetricsViewThroughConversionsCPA':\r\n ret = 'PerformanceMetrics/ViewThroughConversionsCPA';\r\n break;\r\n case 'ViewThroughPartialConversionsCPA':\r\n case 'PerformanceMetricsViewThroughPartialConversionsCPA':\r\n ret = 'PerformanceMetrics/ViewThroughPartialConversionsCPA';\r\n break;\r\n case 'ViewThroughConversionsRate':\r\n case 'PerformanceMetricsViewThroughConversionsRate':\r\n ret = 'PerformanceMetrics/ViewThroughConversionsRate';\r\n break;\r\n case 'ViewThroughPartialConversionsRate':\r\n case 'PerformanceMetricsViewThroughPartialConversionsRate':\r\n ret = 'PerformanceMetrics/ViewThroughPartialConversionsRate';\r\n break;\r\n case 'ViewThroughConversionsRevenue':\r\n case 'PerformanceMetricsViewThroughConversionsRevenue':\r\n ret = 'PerformanceMetrics/ViewThroughConversionsRevenue';\r\n break;\r\n case 'ViewThroughConversionsReturnOnAdSpend':\r\n case 'PerformanceMetricsViewThroughConversionsReturnOnAdSpend':\r\n ret = 'PerformanceMetrics/ViewThroughConversionsReturnOnAdSpend';\r\n break;\r\n case 'AverageCPM':\r\n case 'PerformanceMetricsAverageCPM':\r\n ret = 'PerformanceMetrics/AverageCPM';\r\n break;\r\n case 'AverageCPC':\r\n case 'PerformanceMetricsAverageCPC':\r\n ret = 'PerformanceMetrics/AverageCPC';\r\n break;\r\n case 'CPA':\r\n case 'PerformanceMetricsCPA':\r\n ret = 'PerformanceMetrics/CPA';\r\n break;\r\n case 'PartialConversionCPA':\r\n case 'PerformanceMetricsPartialConversionCPA':\r\n ret = 'PerformanceMetrics/PartialConversionCPA';\r\n break;\r\n case 'AllConversionCPA':\r\n case 'PerformanceMetricsAllConversionCPA':\r\n ret = 'PerformanceMetrics/AllConversionCPA';\r\n break;\r\n case 'AllPartialConversionCPA':\r\n case 'PerformanceMetricsAllPartialConversionCPA':\r\n ret = 'PerformanceMetrics/AllPartialConversionCPA';\r\n break;\r\n case 'ConversionRate':\r\n case 'PerformanceMetricsConversionRate':\r\n ret = 'PerformanceMetrics/ConversionRate';\r\n break;\r\n case 'PartialConversionRate':\r\n case 'PerformanceMetricsPartialConversionRate':\r\n ret = 'PerformanceMetrics/PartialConversionRate';\r\n break;\r\n case 'AllConversionRate':\r\n case 'PerformanceMetricsAllConversionRate':\r\n ret = 'PerformanceMetrics/AllConversionRate';\r\n break;\r\n case 'AllPartialConversionRate':\r\n case 'PerformanceMetricsAllPartialConversionRate':\r\n ret = 'PerformanceMetrics/AllPartialConversionRate';\r\n break;\r\n case 'RevenueOnAdSpend':\r\n case 'PerformanceMetricsRevenueOnAdSpend':\r\n ret = 'PerformanceMetrics/RevenueOnAdSpend';\r\n break;\r\n case 'AllConversionRevenueOnAdSpend':\r\n case 'PerformanceMetricsAllConversionRevenueOnAdSpend':\r\n ret = 'PerformanceMetrics/AllConversionRevenueOnAdSpend';\r\n break;\r\n case 'AdvertiserReportedRevenue':\r\n case 'PerformanceMetricsAdvertiserReportedRevenue':\r\n ret = 'PerformanceMetrics/AdvertiserReportedRevenue';\r\n break;\r\n case 'AllConversionAdvertiserReportedRevenue':\r\n case 'PerformanceMetricsAllConversionAdvertiserReportedRevenue':\r\n ret = 'PerformanceMetrics/AllConversionAdvertiserReportedRevenue';\r\n break;\r\n case 'ClickThrough':\r\n case 'CTR':\r\n case 'PerformanceMetricsClickThrough':\r\n case 'PerformanceMetricsCTR':\r\n ret = 'PerformanceMetrics/CTR';\r\n break;\r\n case 'ImpShare':\r\n case 'PerformanceMetricsImpShare':\r\n ret= 'PerformanceMetrics/AuctionWonPercent';\r\n break;\r\n case 'ImpShareLostToBudget':\r\n case 'PerformanceMetricsImpShareLostToBudget':\r\n ret= 'PerformanceMetrics/AuctionLostToBudgetPercent';\r\n break;\r\n case 'ImpShareLostToBid':\r\n case 'PerformanceMetricsImpShareLostToBid':\r\n ret= 'PerformanceMetrics/AuctionLostToBidPercent';\r\n break;\r\n case 'ImpShareLostToExpectedCTR':\r\n case 'PerformanceMetricsImpShareLostToExpectedCTR':\r\n ret= 'PerformanceMetrics/AuctionLostToAdQualityPercent';\r\n break;\r\n case 'ImpShareLostToRank':\r\n case 'PerformanceMetricsImpShareLostToRank':\r\n ret= 'PerformanceMetrics/AuctionLostToRankPercent';\r\n break;\r\n case 'ImpShareLostToAdRelevance':\r\n case 'PerformanceMetricsImpShareLostToAdRelevance':\r\n ret= 'PerformanceMetrics/AuctionLostToLandingPercent';\r\n break;\r\n case 'ClickShare':\r\n case 'PerformanceMetricsClickShare':\r\n ret= 'PerformanceMetrics/ClickSharePercent';\r\n break;\r\n case 'ClickSharePercent':\r\n case 'PerformanceMetricsClickSharePercent':\r\n ret= 'PerformanceMetrics/ClickSharePercent';\r\n break;\r\n case 'AuctionWonPercent':\r\n case 'PerformanceMetricsAuctionWonPercent':\r\n ret= 'PerformanceMetrics/AuctionWonPercent';\r\n break;\r\n case 'AuctionLostToBudgetPercent':\r\n case 'PerformanceMetricsAuctionLostToBudgetPercent':\r\n ret= 'PerformanceMetrics/AuctionLostToBudgetPercent';\r\n break;\r\n case 'AuctionLostToBidPercent':\r\n case 'PerformanceMetricsAuctionLostToBidPercent':\r\n ret= 'PerformanceMetrics/AuctionLostToBidPercent';\r\n break;\r\n case 'AuctionLostToAdQualityPercent':\r\n case 'PerformanceMetricsAuctionLostToAdQualityPercent':\r\n ret= 'PerformanceMetrics/AuctionLostToAdQualityPercent';\r\n break;\r\n case 'AuctionLostToRankPercent':\r\n case 'PerformanceMetricsAuctionLostToRankPercent':\r\n ret= 'PerformanceMetrics/AuctionLostToRankPercent';\r\n break;\r\n case 'AuctionLostToLandingPercent':\r\n case 'PerformanceMetricsAuctionLostToLandingPercent':\r\n ret= 'PerformanceMetrics/AuctionLostToLandingPercent';\r\n break;\r\n case 'ClickSharePercent':\r\n case 'PerformanceMetricsClickSharePercent':\r\n ret= 'PerformanceMetrics/ClickSharePercent';\r\n break;\r\n case 'FirstPageBidEstimation':\r\n case 'FirstPageBid':\r\n ret = 'BidEstimate/FirstPageBidEstimation';\r\n break;\r\n case 'MainlineBidEstimation':\r\n case 'MainlineBid':\r\n ret = 'BidEstimate/MainlineBidEstimation';\r\n break;\r\n case 'BestPositionBidEstimation':\r\n case 'BestPositionBid':\r\n ret = 'BidEstimate/BestPositionBidEstimation';\r\n break;\r\n case 'AverageCPP':\r\n case 'PhonePerformanceMetricsAverageCPP':\r\n ret = 'PhonePerformanceMetrics/AverageCPP';\r\n break;\r\n case 'ClickCalls':\r\n case 'PhonePerformanceMetricsClickCalls':\r\n ret = 'PhonePerformanceMetrics/ClickCalls';\r\n break;\r\n case 'ManualCalls':\r\n case 'PhonePerformanceMetricsManualCalls':\r\n ret = 'PhonePerformanceMetrics/ManualCalls';\r\n break;\r\n case 'PhoneImpressions':\r\n case 'PhonePerformanceMetricsPhoneImpressions':\r\n ret = 'PhonePerformanceMetrics/PhoneImpressions';\r\n break;\r\n case 'PhoneCalls':\r\n case 'PhonePerformanceMetricsPhoneCalls':\r\n ret = 'PhonePerformanceMetrics/PhoneCalls';\r\n break;\r\n case 'TotalCost':\r\n case 'ClickAndPhoneSpent':\r\n case 'PhonePerformanceMetricsTotalCost':\r\n case 'PhonePerformanceMetricsClickAndPhoneSpent':\r\n ret = 'PhonePerformanceMetrics/ClickAndPhoneSpend';\r\n break;\r\n case 'PhoneThroughRate':\r\n case 'PhonePerformanceMetricsPhoneThroughRate':\r\n case 'PhonePerformanceMetricsPTR':\r\n ret = 'PhonePerformanceMetrics/PTR';\r\n break;\r\n case 'PhoneCost':\r\n case 'PhoneSpent':\r\n case 'PhonePerformanceMetricsPhoneCost':\r\n case 'PhonePerformanceMetricsPhoneSpent':\r\n ret = 'PhonePerformanceMetrics/PhoneSpend';\r\n break;\r\n case 'KeywordName':\r\n ret = 'Text';\r\n break;\r\n case 'CampaignStatus':\r\n switch (entityType) {\r\n case 'Campaign':\r\n ret = 'Status';\r\n break;\r\n case 'ProductGroup':\r\n ret = 'CampaignStatus';\r\n break;\r\n default:\r\n ret = 'Campaign/Status';\r\n break;\r\n }\r\n break;\r\n case 'AdGroupStatus':\r\n switch (entityType) {\r\n case 'AdGroup':\r\n case 'AdGroups':\r\n ret = 'Status';\r\n break;\r\n default:\r\n ret = 'AdGroup/Status';\r\n break;\r\n }\r\n break;\r\n case 'StatusIcon':\r\n case 'KeywordStatus':\r\n case 'AdUiDisplayStatus':\r\n ret = 'Status';\r\n break;\r\n case 'ID':\r\n case 'CampaignId':\r\n case 'KeywordId':\r\n case 'AdId':\r\n case 'AdGroupId':\r\n case 'AssetGroupId':\r\n case 'AudienceAssociationId':\r\n case 'OrderItemId':\r\n ret = 'Id';\r\n break;\r\n case 'AudienceId':\r\n switch (entityType) {\r\n case 'AudienceAssociation':\r\n case 'AdGroupAudienceAssociation':\r\n ret = 'AudienceCriterion/AudienceId';\r\n break;\r\n }\r\n break;\r\n case 'AudienceType':\r\n switch (entityType) {\r\n case 'AudienceAssociation':\r\n case 'AdGroupAudienceAssociation':\r\n ret = 'AudienceCriterion/AudienceType';\r\n break;\r\n }\r\n break;\r\n case 'AudienceName':\r\n switch (entityType) {\r\n case 'AudienceAssociation':\r\n case 'AdGroupAudienceAssociation':\r\n ret = 'AudienceCriterion/AudienceName';\r\n break;\r\n }\r\n break;\r\n case 'BidMultiplier':\r\n switch (entityType) {\r\n case 'AudienceAssociation':\r\n case 'AdGroupAudienceAssociation':\r\n ret = 'AudienceCriterion/BidMultiplier';\r\n break;\r\n }\r\n break;\r\n case 'AdExtensionId':\r\n ret = 'AdExtension/Id';\r\n break;\r\n case 'DeliveryStatusView':\r\n case 'DeliveryStatus':\r\n switch (entityType) {\r\n case 'AdExtensionAssociation':\r\n ret = 'AdExtension/Delivery';\r\n break;\r\n default:\r\n ret = 'DeliveryStatus';\r\n break;\r\n }\r\n break;\r\n case 'MatchType':\r\n ret = 'MatchType';\r\n break;\r\n case 'QualityScore':\r\n ret = 'QualityScore/OverallQualityScore';\r\n break;\r\n case 'Bid':\r\n case 'OrderItemBid':\r\n ret = 'Bid/Amount';\r\n break;\r\n case 'Campaign':\r\n case 'CampaignName':\r\n case 'AdExtensionCampaignName':\r\n switch (entityType) {\r\n case 'Campaign':\r\n ret = 'Name';\r\n break;\r\n case 'Keyword':\r\n case 'Ad':\r\n case 'AdGroup':\r\n case 'AdGroups':\r\n case 'AudienceAssociation':\r\n case 'AdGroupAudienceAssociation':\r\n case 'AdExtensionAssociation':\r\n ret = 'Campaign/Name';\r\n break;\r\n }\r\n break;\r\n case 'AdExtensionCampaignAssociationStatus':\r\n case 'AdExtensionAssociationStatus':\r\n ret = 'AdExtension/Status';\r\n break;\r\n case 'AdGroup':\r\n case 'KeywordAdGroupName':\r\ncase 'AdAdGroupName':\r\n case 'AdExtensionAdGroupName':\r\n ret = 'AdGroup/Name';\r\n break;\r\n case 'KeywordIsLastImported':\r\n case 'CampaignIsLastImported':\r\n case 'AdGroupIsLastImported':\r\n case 'AdIsLastImported':\r\n ret = 'UpdatedOnLastImport';\r\n break;\r\n case 'BudgetType':\r\n ret = 'Budget/Type';\r\n break;\r\n case 'CampaignBudgetAmount':\r\n case 'CombinedBudget':\r\n case 'Budget':\r\n ret = 'Budget/Amount';\r\n break;\r\n case 'AdGroupCashbackPercent':\r\n ret = 'AdGroupCashback/Percent';\r\n break;\r\n case 'AdGroupCashbackScope':\r\n ret = 'AdGroupCashback/Scope';\r\n break;\r\n case 'ProductGroupCashbackPercent':\r\n ret = 'ProductGroupCashback/Percent';\r\n break;\r\n case 'ProductGroupCashbackScope':\r\n ret = 'ProductGroupCashback/Scope';\r\n break;\r\n case 'CampaignCashbackPercent':\r\n ret = 'CampaignCashback/Percent';\r\n break;\r\n case 'CampaignCashbackScope':\r\n ret = 'CampaignCashback/Scope';\r\n break;\r\n case 'CampaignCashbackMonthlyBudget':\r\n ret = 'CampaignCashback/MonthlyBudget';\r\n break;\r\n case 'AudienceCriterionCashbackAdjustment':\r\n ret = 'AudienceCriterion/CashbackAdjustment';\r\n break;\r\n case 'AdType':\r\n ret = 'Type';\r\n break;\r\n case 'AdsByBing':\r\n ret = 'AdsByBing';\r\n break;\r\n case 'AdStrength':\r\n ret = 'AdStrength';\r\n break;\r\n case 'AdTitle':\r\n switch (entityType) {\r\n case 'AdExtensionAssociation':\r\n ret = 'AdExtension';\r\n break;\r\n default:\r\n ret = 'Title';\r\n break;\r\n }\r\n break;\r\n case 'AdDescription':\r\n ret = 'TitleOrText';\r\n break;\r\n case 'AdDestinationUrl':\r\n ret = 'DestinationUrl';\r\n break;\r\n case 'AdDisplayUrl':\r\n ret = 'DisplayUrl';\r\n break;\r\n case 'FormattedMedium':\r\n ret = 'Medium';\r\n break;\r\n case 'AdGroupName':\r\n switch (entityType) {\r\n case 'AdGroup':\r\n case 'AdGroups':\r\n ret = 'Name';\r\n break;\r\n default:\r\n ret = 'AdGroup/Name';\r\n break;\r\n }\r\n break;\r\n case 'Bidding.BroadBid':\r\n case 'AdGroupDefaultSearchBid':\r\n ret = 'SearchBid';\r\n break;\r\n case 'Bidding.ContentBid':\r\n case 'AdGroupDefaultContentBid':\r\n ret = 'ContentBid';\r\n break;\r\n case 'AdGroupCallTrackingStatus':\r\n ret = 'CallTrackingStatus';\r\n break;\r\n case 'AdGroupEndDate':\r\n switch (entityType) {\r\n case 'AdExtensionAssociation':\r\n ret = 'AdExtension/Scheduling/EndDate';\r\n break;\r\n default:\r\n ret = 'EndDate';\r\n break;\r\n }\r\n break;\r\n case 'AdGroupStartDate':\r\n switch (entityType) {\r\n case 'AdExtensionAssociation':\r\n ret = 'AdExtension/Scheduling/StartDate';\r\n break;\r\n default:\r\n ret = 'StartDate';\r\n break;\r\n }\r\n break;\r\n case 'AdExtensionEndDate':\r\n ret = 'AdExtension/Scheduling/EndDate';\r\n break;\r\n case 'AdExtensionStartDate':\r\n ret = 'AdExtension/Scheduling/StartDate';\r\n break;\r\n case 'AdExtensionSchedule':\r\n ret = 'AdExtension/Scheduling/DayTimeRanges';\r\n break;\r\n case 'AdExtensionTimeZone':\r\n ret = 'AdExtension/Scheduling/UseSearcherTimeZone';\r\n break;\r\n case 'AudienceName':\r\n ret = 'AudienceCriterion/AudienceName';\r\n break;\r\n case 'AudienceType':\r\n ret = 'AudienceCriterion/AudienceType';\r\n break;\r\n case 'AudienceStatus':\r\n ret = 'Status';\r\n break;\r\n case 'BidMultiplier':\r\n ret = 'AudienceCriterion/BidMultiplier';\r\n break;\r\n case 'BidType':\r\n ret = 'BidType';\r\n break;\r\n case 'AssociationState':\r\n ret = 'AdExtension/Status';\r\n break;\r\n case 'FinalUrlJson':\r\n ret = 'FinalUrls';\r\n break;\r\n case 'UrlCustomParametersJson':\r\n ret = 'UrlCustomParameters';\r\n break;\r\n case 'TrackingTemplateJson':\r\n case 'TrackingTemplate':\r\n ret = 'TrackingUrlTemplate';\r\n break;\r\n case 'Type':\r\n ret = 'BiddingScheme/Type';\r\n break;\r\n case 'CampaignCampaignType':\r\n switch (entityType) {\r\n case 'Campaign':\r\n ret = 'CampaignType';\r\n break;\r\n default:\r\n ret = 'Campaign/CampaignType';\r\n break;\r\n }\r\n break;\r\n case 'CampaignLanguages':\r\n ret = 'Languages';\r\n break;\r\n }\r\n\r\n return ret;\r\n}\r\n\r\nexport function columnTypeMapper(name) {\r\n var ret = 'string';\r\n switch (name) {\r\n case 'KeywordName':\r\n case 'CampaignName':\r\n case 'KeywordAdGroupName':\r\n case 'AdAdGroupName':\r\n ret = 'string';\r\n break;\r\n case 'FinalUrls':\r\n case 'MobileFinalUrls':\r\n ret = 'stringEnum';\r\n case 'BudgetType':\r\n case 'StatusIcon':\r\n case 'CampaignStatus':\r\n case 'KeywordStatus':\r\n case 'AdUiDisplayStatus':\r\n case 'AdGroupStatus':\r\n case 'MatchType':\r\n case 'DeliveryStatus':\r\n case 'AdType':\r\n case 'AdGroupCallTrackingStatus':\r\n case 'FormattedMedium':\r\n case 'DevicePreference':\r\n case 'AudienceStatus':\r\n case 'CampaignCampaignType':\r\n case 'DisplayBiddingStrategyType':\r\n case 'BidType':\r\n case 'AudienceType':\r\n case 'CampaignLanguages':\r\n case 'Language':\r\n case 'Languages':\r\n case 'Level':\r\n ret = 'enum';\r\n break;\r\n case 'KeywordId':\r\n case 'CampaignId':\r\n case 'AdId':\r\n case 'AdGroupId':\r\n case 'AdExtensionId':\r\n case 'AudienceAssociationId':\r\n case 'Clicks':\r\n case 'Impressions':\r\n case 'AveragePosition':\r\n case 'TotalEffectiveCost':\r\n case 'Spend':\r\n case 'Conversions':\r\n case 'ConversionsCredit':\r\n case 'AverageCPM':\r\n case 'AverageCPC':\r\n case 'CPA':\r\n case 'PartialConversionCPA':\r\n case 'ConversionRate':\r\n case 'PartialConversionRate':\r\n case 'RevenueOnAdSpend':\r\n case 'AdvertiserReportedRevenue':\r\n case 'AllConversionCPA':\r\n case 'AllPartialConversionCPA':\r\n case 'AllConversions':\r\n case 'AllConversionsCredit':\r\n case 'AllConversionRate':\r\n case 'AllPartialConversionRate':\r\n case 'AllConversionAdvertiserReportedRevenue':\r\n case 'AllConversionRevenueOnAdSpend':\r\n case 'ViewThroughConversions':\r\n case 'ViewThroughConversionsCredit':\r\n case 'ViewThroughConversionsCPA':\r\n case 'ViewThroughPartialConversionsCPA':\r\n case 'ViewThroughConversionsRate':\r\n case 'ViewThroughPartialConversionsRate':\r\n case 'ViewThroughConversionsRevenue':\r\n case 'ViewThroughConversionsReturnOnAdSpend':\r\n case 'ImpShare':\r\n case 'ImpShareLostToBudget':\r\n case 'ImpShareLostToRank':\r\n case 'ImpShareLostToAdRelevance':\r\n case 'ImpShareLostToExpectedCTR':\r\n case 'ImpShareLostToBid':\r\n case 'ClickShare':\r\n case 'AuctionWonPercent':\r\n case 'AuctionLostToBudgetPercent':\r\n case 'AuctionLostToBidPercent':\r\n case 'AuctionLostToAdQualityPercent':\r\n case 'AuctionLostToRankPercent':\r\n case 'AuctionLostToLandingPercent':\r\n case 'ClickSharePercent':\r\n case 'TopImpressionRate':\r\n case 'AbsoluteTopImpressionRate':\r\n case 'ExactMatchImpressionSharePercent':\r\n case 'TopImpressionSharePercent':\r\n case 'TopISLostToBudgetPercent':\r\n case 'TopISLostToRankPercent':\r\n case 'AbsoluteTopImpressionSharePercent':\r\n case 'AbsoluteTopISLostToBudgetPercent':\r\n case 'AbsoluteTopISLostToRankPercent':\r\n case 'CTR':\r\n case 'PerformanceMetricsClicks':\r\n case 'PerformanceMetricsImpressions':\r\n case 'PerformanceMetricsAveragePosition':\r\n case 'PerformanceMetricsTotalEffectiveCost':\r\n case 'PerformanceMetricsSpend':\r\n case 'PerformanceMetricsConversions':\r\n case 'PerformanceMetricsConversionsCredit':\r\n case 'PerformanceMetricsAverageCPM':\r\n case 'PerformanceMetricsAverageCPC':\r\n case 'PerformanceMetricsCPA':\r\n case 'PerformanceMetricsPartialConversionCPA':\r\n case 'PerformanceMetricsConversionRate':\r\n case 'PerformanceMetricsPartialConversionRate':\r\n case 'PerformanceMetricsRevenueOnAdSpend':\r\n case 'PerformanceMetricsAdvertiserReportedRevenue':\r\n case 'PerformanceMetricsAllConversionCPA':\r\n case 'PerformanceMetricsAllPartialConversionCPA':\r\n case 'PerformanceMetricsAllConversions':\r\n case 'PerformanceMetricsAllConversionsCredit':\r\n case 'PerformanceMetricsAllConversionRate':\r\n case 'PerformanceMetricsAllPartialConversionRate':\r\n case 'PerformanceMetricsAllConversionAdvertiserReportedRevenue':\r\n case 'PerformanceMetricsAllConversionRevenueOnAdSpend':\r\n case 'PerformanceMetricsImpShare':\r\n case 'PerformanceMetricsImpShareLostToBudget':\r\n case 'PerformanceMetricsImpShareLostToRank':\r\n case 'PerformanceMetricsImpShareLostToAdRelevance':\r\n case 'PerformanceMetricsImpShareLostToExpectedCTR':\r\n case 'PerformanceMetricsImpShareLostToBid':\r\n case 'PerformanceMetricsClickShare':\r\n case 'PerformanceMetricsAuctionWonPercent':\r\n case 'PerformanceMetricsAuctionLostToBudgetPercent':\r\n case 'PerformanceMetricsAuctionLostToBidPercent':\r\n case 'PerformanceMetricsAuctionLostToAdQualityPercent':\r\n case 'PerformanceMetricsAuctionLostToRankPercent':\r\n case 'PerformanceMetricsAuctionLostToLandingPercent':\r\n case 'PerformanceMetricsClickSharePercent':\r\n case 'PerformanceMetricsCTR':\r\n case 'PerformanceMetricsViewThroughConversions':\r\n case 'PerformanceMetricsViewThroughConversionsCredit':\r\n case 'PerformanceMetricsViewThroughConversionsCPA':\r\n case 'PerformanceMetricsViewThroughPartialConversionsCPA':\r\n case 'PerformanceMetricsViewThroughConversionsRate':\r\n case 'PerformanceMetricsViewThroughPartialConversionsRate':\r\n case 'PerformanceMetricsViewThroughConversionsRevenue':\r\n case 'PerformanceMetricsViewThroughConversionsReturnOnAdSpend':\r\n case 'FirstPageBid':\r\n case 'MainlineBid':\r\n case 'BestPositionBid':\r\n case 'OrderItemBid':\r\n case 'QualityScore':\r\n case 'AdGroupDefaultSearchBid':\r\n case 'AdGroupDefaultContentBid':\r\n case 'CampaignBudgetAmount':\r\n case 'OrderItemId':\r\n case 'Labels':\r\n ret = 'number';\r\n break;\r\n case 'KeywordIsLastImported':\r\n case 'CampaignIsLastImported':\r\n case 'AdIsLastImported':\r\n case 'AdGroupIsLastImported':\r\n case 'HasAuctionInsight':\r\n case 'AdStrength':\r\n case 'AdsByBing':\r\n ret = 'bool';\r\n break;\r\n case 'AdGroupStartDate':\r\n case 'AdGroupEndDate':\r\n ret = 'date';\r\n break;\r\n case 'AdExtensionCampaignAssociationStatus':\r\n case 'AdExtensionAssociationStatus':\r\n ret = 'enum';\r\n break;\r\n }\r\n\r\n return ret;\r\n}\r\n\r\nexport function valueFormatter(value, type, columnName, entityType, decimal) {\r\n switch (type) {\r\n case 'number':\r\n return isNaN(Number(value)) ? decimal.fromLocalToFloat(value) : Number(value);\r\n case 'bool':\r\n //UI server side will serialize value as \"1\" instead of 1 in certain scenarios, so use == for that check\r\n return value === true || value == 1;\r\n case 'enum':\r\n return this.enumMapper[columnName](value, entityType);\r\n default:\r\n return value;\r\n }\r\n}\r\n\r\nexport function lambdaMapper(operator, columnName, entityType, values) {\r\n if (_.isEmpty(operator)) {\r\n return null;\r\n }\r\n\r\n switch (operator.toLowerCase()) {\r\n case 'containsany':\r\n return {\r\n logic: 'or',\r\n mapToShorterVersion: true,\r\n secondLogic: 'any',\r\n fieldId: this.lambadaFieldIdMapping(columnName, entityType),\r\n operator: 'eq',\r\n }\r\n case 'containsall':\r\n return {\r\n logic: 'and',\r\n mapToShorterVersion: false,\r\n secondLogic: 'any',\r\n fieldId: 'd:' + this.lambadaFieldIdMapping(columnName, entityType),\r\n operator: 'eq',\r\n }\r\n case 'containsnone':\r\n return {\r\n logic: 'and',\r\n mapToShorterVersion: true,\r\n secondLogic: 'all',\r\n fieldId: this.lambadaFieldIdMapping(columnName, entityType),\r\n operator: 'ne',\r\n }\r\n case 'contains':\r\n if (_.contains(['finalurls', 'mobilefinalurls'], columnName.toLowerCase())) {\r\n return {\r\n logic: 'and',\r\n mapToShorterVersion: false,\r\n secondLogic: 'any',\r\n fieldId: 'd:contains(d,\\'' + values[0] + '\\')',\r\n operator: '',\r\n value: '',\r\n }\r\n } else {\r\n return null;\r\n };\r\n\r\n case 'doesnotcontain':\r\n if (_.contains(['finalurls', 'mobilefinalurls'], columnName.toLowerCase())) {\r\n return {\r\n logic: 'and',\r\n mapToShorterVersion: false,\r\n secondLogic: 'any',\r\n fieldId: 'd:contains(d,\\'' + values[0] + '\\')',\r\n operator: 'eq',\r\n value: 'false',\r\n }\r\n } else {\r\n return null;\r\n };\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\nexport function lambadaFieldIdMapping(columnName, entityType) {\r\n switch (columnName) {\r\n case 'Labels':\r\n return 'd/Id';\r\n case 'CampaignLanguages':\r\n case 'Languages':\r\n return 'd';\r\n default:\r\n return columnName;\r\n }\r\n}\r\nexport const enumMapper = {\r\n 'Level': function (value) {\r\n return 'Enum.AudienceCriterionLevel\\'' + value + '\\'';\r\n },\r\n 'Languages': function (value) {\r\n if (value.indexOf('Enum.Language') < 0) {\r\n return 'Enum.Language\\'' + value + '\\'';\r\n }\r\n return value;\r\n },\r\n 'Language': function (value) {\r\n if (value !== null && value.indexOf('Enum.Language') < 0) {\r\n if (_.isNaN(Number(value))) {\r\n return 'Enum.Language\\'' + value + '\\'';\r\n }\r\n\r\n return fromLegacy(value, 'Language');\r\n }\r\n return value;\r\n },\r\n 'BiddingScheme/Type': function (value) {\r\n return fromLegacy(value, 'BiddingStrategyType');\r\n },\r\n 'DisplayBiddingStrategyType': function (value) {\r\n return fromLegacy(value, 'BiddingStrategyType');\r\n },\r\n 'BidType': function(value) {\r\n switch(value) {\r\n case '0':\r\n return 'Enum.BidType\\'BidOnly\\'';\r\n case '1':\r\n return 'Enum.BidType\\'TargetAndBid\\'';\r\n }\r\n },\r\n 'AudienceCriterion/AudienceType': function(value) {\r\n return \"Enum.AudienceType'\" + value + \"'\";\r\n },\r\n 'Campaign/CampaignType': function (value) {\r\n return fromLegacy(value, 'CampaignType');\r\n },\r\n CampaignType: function (value) {\r\n return fromLegacy(value, 'CampaignType');\r\n },\r\n CallTrackingStatus: function (value) {\r\n return fromLegacy(value, 'AdGroupCallTrackingStatus');\r\n },\r\n 'Budget/Type': function (value) {\r\n switch (value) {\r\n case '0':\r\n case 'Monthly':\r\n return 'Enum.BudgetType\\'Monthly\\'';\r\n case '1':\r\n case 'DailyStandard':\r\n return 'Enum.BudgetType\\'DailyStandard\\'';\r\n case '2':\r\n case 'DailyAccelerated':\r\n return 'Enum.BudgetType\\'DailyAccelerated\\'';\r\n case '3':\r\n case 'LifetimeBudgetStandard':\r\n return 'Enum.BudgetType\\'LifetimeBudgetStandard\\'';\r\n }\r\n },\r\n 'Medium': function (value) {\r\n var result = fromLegacy(value, 'Medium');\r\n if (result) return result;\r\n switch (value) {\r\n case 'Search':\r\n return 'Enum.Medium\\'Search\\'';\r\n case 'Content':\r\n return 'Enum.Medium\\'Content\\'';\r\n case 'SearchAndContent':\r\n return 'Enum.Medium\\'SearchAndContent\\'';\r\n case 'Audience':\r\n return 'Enum.Medium\\'Audience\\'';\r\n }\r\n },\r\n Type: function (value) {\r\n switch (value) {\r\n case '1':\r\n case 'Text':\r\n return 'Enum.AdType\\'Text\\'';\r\n case '2':\r\n return 'Enum.AdType\\'Mobile\\'';\r\n case '4':\r\n return 'Enum.AdType\\'BannerImage\\'';\r\n case '8':\r\n return 'Enum.AdType\\'CPAAd\\'';\r\n case '16':\r\n return 'Enum.AdType\\'RichMedia\\'';\r\n case '32':\r\n return 'Enum.AdType\\'ThirdPartyServedAsset\\'';\r\n case '64':\r\n return 'Enum.AdType\\'RichSearchAd\\'';\r\n case '128':\r\n return 'Enum.AdType\\'Product\\'';\r\n case '256':\r\n case 'AppInstall':\r\n return 'Enum.AdType\\'AppInstall\\'';\r\n case '512':\r\n return 'Enum.AdType\\'DynamicSearch\\'';\r\n case '1024':\r\n case 'ExpandedText':\r\n return 'Enum.AdType\\'ExpandedText\\'';\r\n case '4096':\r\n case 'Responsive':\r\n return 'Enum.AdType\\'Responsive\\'';\r\n case '8192':\r\n case 'ResponsiveSearch':\r\n return 'Enum.AdType\\'ResponsiveSearch\\'';\r\n }\r\n },\r\n DevicePreference: function (value) {\r\n switch (value) {\r\n case '0':\r\n case 'All':\r\n return 'Enum.DevicePreference\\'All\\'';\r\n case '2':\r\n case 'Mobile':\r\n return 'Enum.DevicePreference\\'Mobile\\'';\r\n }\r\n },\r\n MatchType: function (value) {\r\n switch (value) {\r\n case '1':\r\n return 'Enum.MatchType\\'Exact\\'';\r\n case '2':\r\n return 'Enum.MatchType\\'Phrase\\'';\r\n case '3':\r\n return 'Enum.MatchType\\'Broad\\'';\r\n case '5':\r\n return 'Enum.MatchType\\'Content\\'';\r\n }\r\n },\r\n DeliveredMatchType: function (value) {\r\n switch (value) {\r\n case '1':\r\n return 'Enum.MatchType\\'Exact\\'';\r\n case '2':\r\n return 'Enum.MatchType\\'Phrase\\'';\r\n case '3':\r\n return 'Enum.MatchType\\'Broad\\'';\r\n case '5':\r\n return 'Enum.MatchType\\'Content\\'';\r\n }\r\n },\r\n SearchTermStatus: function (value) {\r\n switch (value) {\r\n case '0':\r\n return 'Enum.SearchTermStatus\\'None\\'';\r\n case '1':\r\n return 'Enum.SearchTermStatus\\'Added\\'';\r\n case '2':\r\n return 'Enum.SearchTermStatus\\'Excluded\\'';\r\n case '3':\r\n return 'Enum.SearchTermStatus\\'Added,Excluded\\'';\r\n }\r\n },\r\n 'AdExtension/Delivery': function (value) {\r\n switch (value) {\r\n case '40':\r\n case 'InvalidFinancialStatusOther':\r\n return 'Enum.DeliveryStatus\\'InvalidFinancialStatusOther\\'';\r\n case '48':\r\n case 'CampaignDeleted':\r\n return 'Enum.DeliveryStatus\\'CampaignDeleted\\'';\r\n case '49':\r\n case 'CampaignSuspended':\r\n return 'Enum.DeliveryStatus\\'CampaignSuspended\\'';\r\n case '50':\r\n case 'CampaignBudgetPaused':\r\n return 'Enum.DeliveryStatus\\'CampaignBudgetPaused\\'';\r\n case '70':\r\n case 'EditorialRejected':\r\n return 'Enum.DeliveryStatus\\'EditorialRejected\\'';\r\n case '75':\r\n return 'Enum.DeliveryStatus\\'EditorialUnderAppeal\\'';\r\n case '80':\r\n case 'EditorialPending':\r\n return 'Enum.DeliveryStatus\\'EditorialPending\\'';\r\n case '85':\r\n case 'AssociationDeleted':\r\n return 'Enum.DeliveryStatus\\'AssociationDeleted\\'';\r\n case '90':\r\n case 'CampaignUserPaused':\r\n return 'Enum.DeliveryStatus\\'CampaignUserPaused\\'';\r\n case '200':\r\n case 'EditorialApprovedLimited':\r\n return 'Enum.DeliveryStatus\\'EditorialApprovedLimited\\'';\r\n case '2147483647':\r\n case 'Eligible':\r\n return 'Enum.DeliveryStatus\\'Eligible\\'';\r\n }\r\n },\r\n DeliveryStatus: function (value) {\r\n var result = fromLegacy(value, 'DeliveryStatus');\r\n\r\n if (result) return result;\r\n\r\n switch (value) {\r\n case 'CreditCardExpired':\r\n return 'Enum.DeliveryStatus\\'CreditCardExpired\\'';\r\n case 'IOExceeded':\r\n return 'Enum.DeliveryStatus\\'IOExceeded\\'';\r\n case 'PaymentInformationMissing':\r\n return 'Enum.DeliveryStatus\\'PaymentInformationMissing\\'';\r\n case 'InvalidFinancialStatusOther':\r\n return 'Enum.DeliveryStatus\\'InvalidFinancialStatusOther\\'';\r\n case 'MigrationPaused':\r\n return 'Enum.DeliveryStatus\\'MigrationPaused\\'';\r\n case 'CampaignDeleted':\r\n return 'Enum.DeliveryStatus\\'CampaignDeleted\\'';\r\n case 'CampaignSuspended':\r\n return 'Enum.DeliveryStatus\\'CampaignSuspended\\'';\r\n case 'CampaignBudgetPaused':\r\n return 'Enum.DeliveryStatus\\'CampaignBudgetPaused\\'';\r\n case 'AdGroupExpired':\r\n return 'Enum.DeliveryStatus\\'AdGroupExpired\\'';\r\n case 'AdGroupDraft':\r\n return 'Enum.DeliveryStatus\\'AdGroupDraft\\'';\r\n case 'AdGroupDeleted':\r\n return 'Enum.DeliveryStatus\\'AdGroupDeleted\\'';\r\n case 'CamAssetRejected':\r\n return 'Enum.DeliveryStatus\\'CamAssetRejected\\'';\r\n case 'CamAssetDeleted':\r\n return 'Enum.DeliveryStatus\\'CamAssetDeleted\\'';\r\n case 'AdGroupTargetingTooNarrow':\r\n return 'Enum.DeliveryStatus\\'AdGroupTargetingTooNarrow\\'';\r\n case 'EditorialRejected':\r\n return 'Enum.DeliveryStatus\\'EditorialRejected\\'';\r\n case 'EditorialAppealRejected':\r\n return 'Enum.DeliveryStatus\\'EditorialAppealRejected\\'';\r\n case 'EditorialPending':\r\n return 'Enum.DeliveryStatus\\'EditorialPending\\'';\r\n case 'AssociationDeleted':\r\n return 'Enum.DeliveryStatus\\'AssociationDeleted\\'';\r\n case 'CampaignUserPaused':\r\n return 'Enum.DeliveryStatus\\'CampaignUserPaused\\'';\r\n case 'AdGroupPrivacyPending':\r\n return 'Enum.DeliveryStatus\\'AdGroupPrivacyPending\\'';\r\n case 'AdGroupUserPaused':\r\n return 'Enum.DeliveryStatus\\'AdGroupUserPaused\\'';\r\n case 'AdUserPaused':\r\n return 'Enum.DeliveryStatus\\'AdUserPaused\\'';\r\n case 'KeywordMatchTypeAdGroupMediumCombinationInvalid':\r\n return 'Enum.DeliveryStatus\\'KeywordMatchTypeAdGroupMediumCombinationInvalid\\'';\r\n case 'KeywordUserPaused':\r\n return 'Enum.DeliveryStatus\\'KeywordUserPaused\\'';\r\n case 'NegativeKeywordConflicts':\r\n return 'Enum.DeliveryStatus\\'NegativeKeywordConflicts\\'';\r\n case 'PartialNegativeKeywordConflicts':\r\n return 'Enum.DeliveryStatus\\'PartialNegativeKeywordConflicts\\'';\r\n case 'EditorialApprovedLimited':\r\n return 'Enum.DeliveryStatus\\'EditorialApprovedLimited\\'';\r\n case 'EditorialApprovedLimitedAppealRejected':\r\n return 'Enum.DeliveryStatus\\'EditorialApprovedLimitedAppealRejected\\'';\r\n case 'LowSupply':\r\n return 'Enum.DeliveryStatus\\'LowSupply\\'';\r\n case 'LowQuality':\r\n return 'Enum.DeliveryStatus\\'LowQuality\\'';\r\n case 'BidBelowFirstPageBid':\r\n return 'Enum.DeliveryStatus\\'BidBelowFirstPageBid\\'';\r\n case 'Incomplete':\r\n return 'Enum.DeliveryStatus\\'Incomplete\\'';\r\n case 'BudgetSuggestions':\r\n return 'Enum.DeliveryStatus\\'BudgetSuggestions\\'';\r\n case 'InlineOpportunity':\r\n return 'Enum.DeliveryStatus\\'InlineOpportunity\\'';\r\n case 'GeoCodingIncomplete':\r\n return 'Enum.DeliveryStatus\\'GeoCodingIncomplete\\'';\r\n case 'ProductTargetUserPaused':\r\n return 'Enum.DeliveryStatus\\'ProductTargetUserPaused\\'';\r\n case 'AdExtensionNotPresent':\r\n return 'Enum.DeliveryStatus\\'AdExtensionNotPresent\\'';\r\n case 'AdExtensionDeleted':\r\n return 'Enum.DeliveryStatus\\'AdExtensionDeleted\\'';\r\n case 'AdExtensionAssociationDeleted':\r\n return 'Enum.DeliveryStatus\\'AdExtensionAssociationDeleted\\'';\r\n case 'StoreIdNotAssociated':\r\n return 'Enum.DeliveryStatus\\'StoreIdNotAssociated\\'';\r\n case 'AdGroupAudienceAssociationPaused':\r\n return 'Enum.DeliveryStatus\\'AdGroupAudienceAssociationPaused\\'';\r\n case 'AdGroupAudienceAssociationExcluded':\r\n return 'Enum.DeliveryStatus\\'AdGroupAudienceAssociationExcluded\\'';\r\n case 'AdNotPresent':\r\n return 'Enum.DeliveryStatus\\'AdNotPresent\\'';\r\n case 'AdNotActive':\r\n return 'Enum.DeliveryStatus\\'AdNotActive\\'';\r\n case 'UrlInvalid':\r\n return 'Enum.DeliveryStatus\\'UrlInvalid\\'';\r\n case 'ApplicationNotFound':\r\n return 'Enum.DeliveryStatus\\'ApplicationNotFound\\'';\r\n case 'ApplicationDestinationUrlMismatch':\r\n return 'Enum.DeliveryStatus\\'ApplicationDestinationUrlMismatch\\'';\r\n case 'PendingMetadataSync':\r\n return 'Enum.DeliveryStatus\\'PendingMetadataSync\\'';\r\n case 'ApplicationDestinationUrlValidationIncomplete':\r\n return 'Enum.DeliveryStatus\\'ApplicationDestinationUrlValidationIncomplete\\'';\r\n case 'AutoBiddingLimitedInventoryLimit':\r\n return 'Enum.DeliveryStatus\\'AutoBiddingLimitedInventoryLimit\\'';\r\n case 'AutoBiddingLimitedMaxCPCRestriction':\r\n return 'Enum.DeliveryStatus\\'AutoBiddingLimitedMaxCPCRestriction\\'';\r\n case 'AutoBiddingLimitedBudgetRestriction':\r\n return 'Enum.DeliveryStatus\\'AutoBiddingLimitedBudgetRestriction\\'';\r\n case 'AutoBiddingLimitedUnAttainableTarget':\r\n return 'Enum.DeliveryStatus\\'AutoBiddingLimitedUnAttainableTarget\\'';\r\n case 'AutoBiddingPortfolioBidStrategyTrainingStatus':\r\n return 'Enum.DeliveryStatus\\'AutoBiddingPortfolioBidStrategyTrainingStatus\\'';\r\n case 'Eligible':\r\n return 'Enum.DeliveryStatus\\'Eligible\\'';\r\n }\r\n },\r\n AdStrength: function (value) {\r\n switch (value) {\r\n case '0':\r\n return 'Enum.AdStrength\\'Unrated\\'';\r\n case '1':\r\n return 'Enum.AdStrength\\'Poor\\'';\r\n case '2':\r\n return 'Enum.AdStrength\\'Average\\'';\r\n case '3':\r\n return 'Enum.AdStrength\\'Good\\'';\r\n case '4':\r\n return 'Enum.AdStrength\\'Excellent\\'';\r\n }\r\n },\r\n 'Campaign/Status': function(value) {\r\n return fromLegacy(value, 'CampaignStatus');\r\n },\r\n 'CampaignStatus': function(value) {\r\n return fromLegacy(value, 'CampaignStatus');\r\n },\r\n\r\n 'AdGroup/Status': function (value) {\r\n return fromLegacy(value, 'AdGroupStatus');\r\n },\r\n\r\n 'AdExtension/Status': function(value) {\r\n switch(value) {\r\n case '108':\r\n return 'Enum.AdExtensionStatus\\'Active\\'';\r\n case '110':\r\n return 'Enum.AdExtensionStatus\\'Deleted\\'';\r\n }\r\n },\r\n\r\n //ads, keywords\r\n Status: function (value, entityType) {\r\n switch (entityType) {\r\n case 'Campaign':\r\n return fromLegacy(value, 'CampaignStatus');\r\n\r\n case 'AdGroup':\r\n case 'AdGroups':\r\n return fromLegacy(value, 'AdGroupStatus');\r\n\r\n case 'Keyword':\r\n return fromLegacy(value, 'OrderItemStatus');\r\n\r\n case 'Ad':\r\n // AdStatus\r\n switch (value) {\r\n case '0':\r\n return 'Enum.AdStatus\\'Inactive\\'';\r\n case '1':\r\n return 'Enum.AdStatus\\'Active\\'';\r\n case '2':\r\n return 'Enum.AdStatus\\'Paused\\'';\r\n case '3':\r\n return 'Enum.AdStatus\\'Deleted\\'';\r\n }\r\n break;\r\n\r\n case 'Goal':\r\n // ConversionGoalStatus\r\n switch (value) {\r\n case 'Active':\r\n return 'Enum.GoalStatus\\'Active\\'';\r\n case 'Paused':\r\n return 'Enum.GoalStatus\\'Paused\\'';\r\n }\r\n break;\r\n\r\n // https://msasg.visualstudio.com/DefaultCollection/Bing_Ads/_git/AdsAppsMT?path=%2Fprivate%2FCampaign%2FMT%2FSource%2FBingAds.Api%2FBingAds.Api.Model%2FBulkEdit%2FMtGridColumnLookups.cs&version=GBmaster&_a=contents&line=290&lineStyle=plain&lineEnd=290&lineStartColumn=17&lineEndColumn=165\r\n case 'AudienceAssociation':\r\n case 'AdGroupAudienceAssociation':\r\n // https://msasg.visualstudio.com/DefaultCollection/Bing_Ads/_git/AdsAppsMT?path=%2Fprivate%2FCampaign%2FMT%2FSource%2FBingAds.Api%2FBingAds.Api.Model%2FBulkEdit%2FMtGridColumnLookups.cs&version=GBmaster&_a=contents&line=305&lineStyle=plain&lineEnd=305&lineStartColumn=17&lineEndColumn=169\r\n case 'AdGroupAudienceCriterionWithBI':\r\n return fromLegacy(value, 'AdGroupCriterionStatus');\r\n // https://msasg.visualstudio.com/Bing_Ads/_git/AdsAppsMT/pullrequest/753364?path=%2Fprivate%2FCampaign%2FMT%2FSource%2FAggregatorService%2FDataAggregator%2FGetAudienceAssociationsWithBIData%2FAudienceAssociationsWithBiDataSortAndFilter.cs&_a=overview\r\n case 'AudienceCriterionWithBI':\r\n return fromLegacy(value, 'AdGroupCriterionStatus');\r\n }\r\n },\r\n\r\n // TODO: idealy we should have only one of Status or AudienceStatus\r\n 'AudienceStatus': function (value, entityType) {\r\n switch (entityType) {\r\n // https://msasg.visualstudio.com/DefaultCollection/Bing_Ads/_git/AdsAppsMT?path=%2Fprivate%2FCampaign%2FMT%2FSource%2FBingAds.Api%2FBingAds.Api.Model%2FBulkEdit%2FMtGridColumnLookups.cs&version=GBmaster&_a=contents&line=290&lineStyle=plain&lineEnd=290&lineStartColumn=17&lineEndColumn=165\r\n case 'AudienceAssociation':\r\n case 'AdGroupAudienceAssociation':\r\n // https://msasg.visualstudio.com/DefaultCollection/Bing_Ads/_git/AdsAppsMT?path=%2Fprivate%2FCampaign%2FMT%2FSource%2FBingAds.Api%2FBingAds.Api.Model%2FBulkEdit%2FMtGridColumnLookups.cs&version=GBmaster&_a=contents&line=305&lineStyle=plain&lineEnd=305&lineStartColumn=17&lineEndColumn=169\r\n case 'AdGroupAudienceCriterionWithBI':\r\n return fromLegacy(value, 'AdGroupCriterionStatus');\r\n // https://msasg.visualstudio.com/Bing_Ads/_git/AdsAppsMT/pullrequest/753364?path=%2Fprivate%2FCampaign%2FMT%2FSource%2FAggregatorService%2FDataAggregator%2FGetAudienceAssociationsWithBIData%2FAudienceAssociationsWithBiDataSortAndFilter.cs&_a=overview\r\n case 'AudienceCriterionWithBI':\r\n return fromLegacy(value, 'AdGroupCriterionStatus');\r\n }\r\n },\r\n\r\n 'TrackingStatus': function(value, entityType) {\r\n switch (entityType) {\r\n // RemessagingAudience is used for only rule-based remarketing lists when Custom Audience pilot is not enabled,\r\n // while Audience is used for all types of Audiences when Custom Audience pilot is enabled.\r\n case 'RemessagingAudience':\r\n case 'Audience':\r\n case 'Tag':\r\n // UETTagTrackingStatus\r\n switch(value) {\r\n case 'Unverified':\r\n return 'Enum.TagTrackingStatus\\'Unverified\\'';\r\n case 'Active':\r\n return 'Enum.TagTrackingStatus\\'Active\\'';\r\n case 'Inactive':\r\n return 'Enum.TagTrackingStatus\\'Inactive\\'';\r\n }\r\n break;\r\n\r\n case 'Goal':\r\n // ConversionGoalTrackingStatus\r\n switch(value) {\r\n case 'Unverified':\r\n return 'Enum.GoalTrackingStatus\\'Unverified\\'';\r\n case 'NoRecentConversion':\r\n return 'Enum.GoalTrackingStatus\\'NoRecentConversion\\'';\r\n case 'RecordingConversions':\r\n return 'Enum.GoalTrackingStatus\\'RecordingConversions\\'';\r\n case 'TagInactive':\r\n return 'Enum.GoalTrackingStatus\\'TagInactive\\'';\r\n }\r\n break;\r\n }\r\n },\r\n\r\n Condition: function(value, entityType) {\r\n switch(entityType) {\r\n case 'ProductOffer':\r\n switch(value) {\r\n case '0':\r\n return 'New';\r\n case '1':\r\n return 'Refurbished';\r\n case '2':\r\n return 'Used';\r\n }\r\n break;\r\n }\r\n }\r\n}\r\n","\r\n\r\nexport { FilterEditor } from './src/index';\r\n","import _ from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport $ from 'jquery';\r\nimport { PredicateList } from '@bingads-webui/predicate-list';\r\nimport editorTemplate from './template/index.pug';\r\n\r\nexport class FilterEditor extends Backbone.View {\r\n get events() {\r\n return {\r\n 'click .apply': 'apply',\r\n 'click .cancel': 'cancel',\r\n };\r\n }\r\n\r\n initialize(options) {\r\n this.options = options;\r\n\r\n const newName = ko.observable();\r\n const isSaving = ko.observable();\r\n newName.subscribe((val) => {\r\n isSaving(!!val.trim());\r\n });\r\n\r\n if (this.options.selected && this.options.selected.name) {\r\n newName(this.options.selected.name);\r\n } else {\r\n newName('');\r\n }\r\n\r\n this.ko_model = _.extend({}, this.options.ko_model, {\r\n newName,\r\n isSaved: isSaving,\r\n hasNameError: ko.computed(() => isSaving() &&\r\n (_.isUndefined(newName()) || _.isEmpty(newName().trim()))),\r\n });\r\n }\r\n\r\n render() {\r\n const $layout = $(editorTemplate({\r\n headerTitle: this.options.i18n.getString('Filter'),\r\n nameWaterMarkTitle: this.options.i18n.getString('Filter_FilterNameWaterMark'),\r\n applyTitle: this.options.i18n.getString('Apply'),\r\n cancelTitle: this.options.i18n.getString('Cancel'),\r\n saveFilter: this.options.i18n.getString('Filters_SaveFilter'),\r\n }));\r\n const $listContainer = $layout.find('.list-placeholder');\r\n\r\n if (!!this.options.predicateList && !!this.options.predicateList.Constructor) {\r\n this.predicateList =\r\n new this.options.predicateList.Constructor(_.extend(\r\n this.options,\r\n this.options.predicateList.options || {},\r\n {\r\n el: $listContainer[0],\r\n }\r\n ));\r\n } else {\r\n this.predicateList = new PredicateList(_.extend({}, this.options, {\r\n el: $listContainer,\r\n }));\r\n }\r\n\r\n const viewModel = _.extend({\r\n canApply: ko.computed(() => this.predicateList.ko_model.canApply() &&\r\n !this.ko_model.hasNameError(), this),\r\n }, this.ko_model);\r\n\r\n this.$el.html($layout);\r\n ko.applyBindings(viewModel, this.el);\r\n this.predicateList.render();\r\n return this;\r\n }\r\n\r\n show() {\r\n this.$el.show();\r\n return this;\r\n }\r\n\r\n hide() {\r\n this.$el.hide();\r\n return this;\r\n }\r\n\r\n remove() {\r\n this.predicateList.remove();\r\n ko.cleanNode(this.el);\r\n this.$el.empty();\r\n this.undelegateEvents();\r\n return this;\r\n }\r\n\r\n apply() {\r\n const filterQuery = this.predicateList.getFilterQuery();\r\n this.trigger('apply', filterQuery, this.ko_model.isSaved() ? this.ko_model.newName() && this.ko_model.newName().trim() : null);\r\n }\r\n\r\n clean() {\r\n this.ko_model.newName('');\r\n this.predicateList.clean();\r\n }\r\n\r\n cancel() {\r\n this.clean();\r\n this.hide();\r\n this.trigger('cancel');\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__7__;","var pug = require(\"!../../../../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (applyTitle, cancelTitle, headerTitle, nameWaterMarkTitle, saveFilter) {pug_html = pug_html + \"\\u003Cdiv class=\\\"filter-body filter-editor\\\"\\u003E\\u003Cdiv class=\\\"panel\\\"\\u003E\\u003Cdiv class=\\\"panel-heading\\\"\\u003E\\u003Cdiv class=\\\"panel-title\\\"\\u003E\\u003Cheader class=\\\"filter_title\\\"\\u003E\" + (pug.escape(null == (pug_interp = headerTitle) ? \"\" : pug_interp)) + \"\\u003C\\u002Fheader\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-body\\\"\\u003E\\u003Cdiv class=\\\"list-placeholder\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"save-form form-inline\\\"\\u003E\\u003Cbutton class=\\\"filter_button apply btn btn-primary\\\" data-bind=\\\"css: { disabled: !canApply() }, attr: {'aria-disabled': !canApply(), disabled: !canApply()}\\\"\\u003E\" + (pug.escape(null == (pug_interp = applyTitle) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003Cbutton class=\\\"filter_button cancel btn btn-default\\\"\\u003E\" + (pug.escape(null == (pug_interp = cancelTitle) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003Cdiv class=\\\"checkbox\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput type=\\\"checkbox\\\" data-bind=\\\"checked: isSaved, attr: {'aria-checked': isSaved ? 'true':'false'}\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = saveFilter) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Flabel\\u003E\\u003Cinput\" + (\" class=\\\"form-control name\\\"\"+\" maxlength=\\\"100\\\" type=\\\"text\\\"\"+pug.attr(\"placeholder\", nameWaterMarkTitle, true, true)+pug.attr(\"aria-label\", nameWaterMarkTitle, true, true)+\" data-bind=\\\"textInput: newName, css: { error: hasNameError }\\\"\") + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"applyTitle\" in locals_for_with?locals_for_with.applyTitle:typeof applyTitle!==\"undefined\"?applyTitle:undefined,\"cancelTitle\" in locals_for_with?locals_for_with.cancelTitle:typeof cancelTitle!==\"undefined\"?cancelTitle:undefined,\"headerTitle\" in locals_for_with?locals_for_with.headerTitle:typeof headerTitle!==\"undefined\"?headerTitle:undefined,\"nameWaterMarkTitle\" in locals_for_with?locals_for_with.nameWaterMarkTitle:typeof nameWaterMarkTitle!==\"undefined\"?nameWaterMarkTitle:undefined,\"saveFilter\" in locals_for_with?locals_for_with.saveFilter:typeof saveFilter!==\"undefined\"?saveFilter:undefined));;return pug_html;};\nmodule.exports = template;","import FilterEntity from './src/index';\r\nimport { legacyDeliveryStatus, getEnumValuefromLegacy, convertEnumValuetoLegacy, convertEnumValuetoLegacyString } from './src/converter/enum';\r\n\r\nexport { FilterEntity, legacyDeliveryStatus, getEnumValuefromLegacy, convertEnumValuetoLegacy,\r\n convertEnumValuetoLegacyString };\r\n\r\nexport { convertToOData } from './src/converter/odata-4';\r\n","import _ from 'underscore';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport { FilterSchema } from '@bingads-webui/filter-schema';\r\nimport { normalizeFilter, calculateDepth } from './converter/normalize';\r\nimport { convertToLegacy, parseFromLegacy } from './converter/legacy';\r\nimport { convertToOData } from './converter/odata-4';\r\n\r\n/**\r\n * define Object OdataOptions\r\n * @typedef {Object} OdataOptions\r\n * @property {Object} [fieldMap={}] - fieldMap used for odata convertion.\r\n * @property {boolean|string[]} [ignoreCase=false] - ignoreCase for odata convertion.\r\n * @property {Object} custom - custom operator map for odata convertion.\r\n */\r\n\r\n/**\r\n * define Object Options\r\n * @typedef {Object} Options\r\n * @property {Object} entitySchema - EntitySchema instance, required for legacy convertion.\r\n * @property {OdataOptions} odata - option object used for odata convertion.\r\n */\r\n\r\nclass FilterEntity {\r\n /**\r\n * FilterEntity object to convert query to different format.\r\n * @param {Object} query - the raw MongoDB query object, operator can only be $and or $or,\r\n * e.g. { $and: [{ field1: { $lt: 2} }, { field2: 'val' }], field3: 3 }\r\n * @param {Options} options - the options to be used when convert query.\r\n * @param {string} name - Filter name\r\n * @param {string} id - Filter id\r\n */\r\n constructor(\r\n query,\r\n {\r\n entitySchema, odata: {\r\n fieldMap = {},\r\n ignoreCase = false,\r\n custom,\r\n } = {},\r\n } = {}, name = null, id = null\r\n ) {\r\n this.query = normalizeFilter(query);\r\n this.odataOptions = { fieldMap, ignoreCase, custom };\r\n this.depth = calculateDepth(this.query);\r\n this.schema = entitySchema ? new FilterSchema(entitySchema) : {};\r\n this.name = name;\r\n this.id = id;\r\n }\r\n\r\n /**\r\n * Combine queries of two or more filter entities.\r\n * @param {Object[]} entities - array of FilterEntity instances\r\n * @param {string} operator - logic operator of how to connect queries,\r\n * should only be '$and' or '$or'.\r\n * @returns {Object} - combined query object.\r\n */\r\n static merge(entities, operator = '$and') {\r\n if (!_.isArray(entities)) {\r\n throw new Error('entities should be an array of FilterEntity instance.');\r\n }\r\n if (!entities.length) {\r\n return {};\r\n }\r\n if (operator !== '$and' && operator !== '$or') {\r\n throw new Error(\"operator should be '$and' or '$or'.\");\r\n }\r\n const anotherOpe = operator === '$and' ? '$or' : '$and';\r\n let queries = [];\r\n _.each(entities, (entity) => {\r\n if (entity instanceof FilterEntity && !_.isEmpty(entity.query)) {\r\n const { query } = entity;\r\n if (query[operator]) {\r\n queries.push(...query[operator]);\r\n } else if (!_.isEmpty(query[anotherOpe]) && query[anotherOpe].length === 1) {\r\n queries.push(...query[anotherOpe]);\r\n } else {\r\n queries.push(query);\r\n }\r\n }\r\n });\r\n queries = putil.uniqWith(queries, _.isEqual);\r\n if (!queries.length) {\r\n return {};\r\n } else if (queries.length === 1) {\r\n return queries[0];\r\n }\r\n return { [operator]: queries };\r\n }\r\n\r\n /**\r\n * Convert query string to filter object.\r\n * @param {string} query -\r\n * filter string in url where we parse filter params from, contains filter params like\r\n * '&filter[3].SelectedColumn=Id&filter[3].SelectedOperator=Equal&filter[3].Values=30'\r\n * @param {Options} options - the options to be used in legacy conversion.\r\n * @returns {Object} - FilterEntity instance.\r\n */\r\n static fromQueryString(query, options) {\r\n let regex = /[\\\\?&]filter\\[(\\d)\\]\\.([^&#=]*)=([^&#]*)/g;\r\n if (!query.match(regex)) {\r\n regex = /[\\\\?&]filter%5B(\\d)%5D\\.([^&#=]*)=([^&#]*)/g;\r\n }\r\n const legacy = {};\r\n let result = regex.exec(query);\r\n while (result) {\r\n const index = parseInt(result[1], 10);\r\n const key = result[2];\r\n const value = key === 'Values' ? [result[3]] : result[3];\r\n if (key === 'Values' && legacy[index] && legacy[index].Values) {\r\n legacy[index].Values = _.union(legacy[index].Values, value);\r\n } else {\r\n legacy[index] = _.defaults(legacy[index] || {}, _.object([key], [value]));\r\n }\r\n result = regex.exec(query);\r\n }\r\n return FilterEntity.fromLegacy(_.values(legacy), options);\r\n }\r\n\r\n /**\r\n * Convert filter object to odata formatted.\r\n * @param {Object} filters - normalized filter object.\r\n * @param {Object} options - the options object used for odata convertion.\r\n * @param {Object} [options.fieldMap] - used for kendo convertion.\r\n * @param {boolean|string[]} [options.ignoreCase] - used for kendo convertion.\r\n * @param {Object} [options.custom] - custom operator map.\r\n * @param {Object} filterSchema - filter schema.\r\n * @returns {Object} - odata formatted filter object.\r\n */\r\n static toOdata(filters, { fieldMap = {}, ignoreCase, custom } = {\r\n fieldMap: {},\r\n ignoreCase: false,\r\n }, filterSchema) {\r\n const normalizedFilter = normalizeFilter(filters);\r\n return convertToOData(normalizedFilter, { fieldMap, ignoreCase, custom }, filterSchema);\r\n }\r\n\r\n /**\r\n * Convert legacy expression to filter object.\r\n * @param {Object[]} expressions - array of legacy expressions\r\n * @param {string} expressions[].SelectedColumn - column name\r\n * @param {string} expressions[].SelectedOperator - operator string, e.g. 'Equal'\r\n * @param {any[]} expressions.Values - array of values\r\n * @param {Object} options - the options to be used when convert query.\r\n * @param {Object} [options.entitySchema] - original entity schema object used to create\r\n * FilterSchema, it's required for legacy convertion.\r\n * @param {OdataOptions} [options.odata] - option object used for odata format,\r\n * including fieldMap, ignoreCase and custom.\r\n * @param {string} [name] - filter name\r\n * @param {string} [id] - filter id\r\n * @returns {Object} - FilterEntity object.\r\n */\r\n static fromLegacy(expressions, { entitySchema, odata } = {}, name, id) {\r\n const filterSchema = entitySchema ? new FilterSchema(entitySchema) : undefined;\r\n return new FilterEntity(\r\n parseFromLegacy(expressions, filterSchema),\r\n { filterSchema, odata }, name, id\r\n );\r\n }\r\n\r\n /**\r\n * Convert filter object to odata formatted.\r\n * @param {Object} options - the options object to be used for odata convertion.\r\n * @param {OdataOptions} [options.odata={}] - the options for odata convertion.\r\n * @returns {Object} - filter object in odata format.\r\n */\r\n odataV4({\r\n odata: {\r\n fieldMap = this.odataOptions.fieldMap,\r\n ignoreCase = this.odataOptions.ignoreCase,\r\n custom = this.odataOptions.custom,\r\n } = {},\r\n } = {}) {\r\n // The filter editor added the odata options to the filter.options\r\n // There should be general configuratoins,\r\n // and they can be overriden by the odata specific options.\r\n return convertToOData(this.query, { fieldMap, ignoreCase, custom }, this.schema);\r\n }\r\n\r\n /**\r\n * Convert filter object to legacy format.\r\n * @returns {Object} - filter object in legacy format.\r\n */\r\n legacy() {\r\n return convertToLegacy(this.query, this.depth, this.schema);\r\n }\r\n\r\n /**\r\n * Partially deep clone FilterEntity instance, query is deep cloned while others are reference.\r\n * @returns {Object} - copy of FilterEntity instance.\r\n */\r\n clone() {\r\n const newFilterEntity = new FilterEntity({});\r\n\r\n newFilterEntity.odataOptions = this.odataOptions;\r\n newFilterEntity.depth = this.depth;\r\n newFilterEntity.query = putil.cloneDeep(this.query);\r\n newFilterEntity.schema = this.schema;\r\n newFilterEntity.name = this.name;\r\n newFilterEntity.id = this.id;\r\n return newFilterEntity;\r\n }\r\n\r\n updateQuery(query) {\r\n this.query = normalizeFilter(query);\r\n this.depth = calculateDepth(this.query);\r\n }\r\n}\r\n\r\nexport default FilterEntity;\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__75__;","import _ from 'underscore';\r\nimport { startsWith, endsWith } from 'underscore.string';\r\n\r\nfunction flattenAndOperators(conditions) {\r\n const result = [];\r\n _.each(conditions, (con) => {\r\n const condition = con;\r\n if (condition.$and) {\r\n result.push(...(condition.$and || []));\r\n delete condition.$and;\r\n }\r\n if (!_.isEmpty(condition)) {\r\n result.push(condition);\r\n }\r\n });\r\n return result;\r\n}\r\n\r\nfunction isFieldName(expressionKey) {\r\n return expressionKey && expressionKey[0] !== '$';\r\n}\r\n\r\nfunction toExplicitCondition(field, originalOperator, originalValue) {\r\n let operator = originalOperator;\r\n let value = originalValue;\r\n\r\n if (operator === '$regex') {\r\n if (startsWith(value, '.*') && endsWith(value, '.*')) {\r\n operator = '$contains';\r\n value = value.substr(2, value.length - 4);\r\n } else if (startsWith(value, '.*')) {\r\n operator = '$endswith';\r\n value = value.substr(2, value.length - 2);\r\n } else if (endsWith(value, '.*')) {\r\n operator = '$startswith';\r\n value = value.substr(0, value.length - 2);\r\n }\r\n }\r\n\r\n return { [field]: { [operator]: value } };\r\n}\r\n\r\nfunction getFieldExpressions(field, expression) {\r\n if (_.isObject(expression)) {\r\n return _.map(expression, (value, operator) =>\r\n toExplicitCondition(field, operator, value));\r\n }\r\n return [toExplicitCondition(field, '$eq', expression)];\r\n}\r\n\r\nfunction bfsNextLevel(filters) {\r\n const nextLevel = [];\r\n _.each(filters, ({ $and = [], $or = [] }) => nextLevel.push(...$and, ...$or));\r\n return nextLevel;\r\n}\r\n\r\n/**\r\n * Normalize raw filter expression.\r\n * @param {Object} filter - raw filter expression.\r\n * @returns {Object} - normalized filter object.\r\n */\r\nexport function normalizeFilter(filter) {\r\n let conditions = [];\r\n _.each(filter, (expression, expressionKey) => {\r\n if (isFieldName(expressionKey)) {\r\n conditions.push(...getFieldExpressions(expressionKey, expression));\r\n } else if (_.isArray(expression) && expression.length) {\r\n if (expressionKey === '$and') {\r\n conditions.push(..._.map(expression, normalizeFilter));\r\n } else if (expressionKey === '$or') {\r\n if (expression.length === 1) {\r\n conditions.push(normalizeFilter(expression[0]));\r\n } else {\r\n conditions.push({ $or: _.map(expression, normalizeFilter) });\r\n }\r\n }\r\n }\r\n });\r\n conditions = flattenAndOperators(conditions);\r\n if (!conditions.length) {\r\n return {};\r\n }\r\n if (conditions.length === 1) {\r\n return conditions[0];\r\n }\r\n return { $and: conditions };\r\n}\r\n\r\n/**\r\n * Calculate normalized filter's depth.\r\n * @param {Object} filter - normalized filter object.\r\n * @returns {number} - filter object's depth.\r\n */\r\nexport function calculateDepth(filter) {\r\n if (_.isEmpty(filter)) {\r\n return 0;\r\n }\r\n let depth = 0;\r\n let filters = [filter];\r\n while (!_.isEmpty(filters)) {\r\n filters = bfsNextLevel(filters);\r\n depth += 1;\r\n }\r\n return depth;\r\n}\r\n","import _ from 'underscore';\r\nimport { getEnumValuefromLegacy } from './enum';\r\n\r\nconst operatorMap = {\r\n $contains: 'Contains',\r\n $doesnotcontain: 'DoesNotContain',\r\n $startswith: 'BeginsWith',\r\n $endswith: 'EndsWith',\r\n $eq: 'Equal',\r\n $neq: 'NotEqual',\r\n $gt: 'Greater',\r\n $gte: 'GreaterOrEqual',\r\n $lt: 'Less',\r\n $lte: 'LessOrEqual',\r\n $in: 'EnumSelection',\r\n $containsall: 'ContainsAll',\r\n $containsany: 'ContainsAny',\r\n $containsnone: 'ContainsNone',\r\n};\r\nconst reverseOperatorMap = _.invert(operatorMap);\r\n\r\nfunction toLegacyColumnName(columnName, schema) {\r\n let column = columnName;\r\n if (schema) {\r\n column = schema.toAlias(columnName, 'legacy');\r\n }\r\n return column.split('/').pop();\r\n}\r\n\r\nfunction fromLegacyColumnName(columnName, schema) {\r\n if (!schema) {\r\n return columnName;\r\n }\r\n let column = schema.fromAlias(columnName, 'legacy');\r\n if (!schema.getFilterProperty(column)) {\r\n column = _.find(schema.getPropertyKeys(), key => key.split('/').pop() === column);\r\n }\r\n return column;\r\n}\r\n\r\nfunction toMongoPredicate(legacyExpression, schema) {\r\n const column = fromLegacyColumnName(legacyExpression.SelectedColumn, schema);\r\n const legacyOperator = legacyExpression.SelectedOperator;\r\n const mongoOperator = reverseOperatorMap[legacyOperator];\r\n let value = mongoOperator === '$in' || mongoOperator === '$containsall' || mongoOperator === '$containsany' || mongoOperator === '$containsnone' ? legacyExpression.Values : legacyExpression.Values[0];\r\n if (schema) {\r\n const prop = schema.getFilterProperty(column);\r\n if (prop && prop.type) {\r\n switch (prop.type) {\r\n case 'datetime':\r\n value = new Date(value);\r\n break;\r\n case 'number':\r\n value = parseFloat(value);\r\n break;\r\n case 'integer':\r\n value = parseInt(value, 10);\r\n break;\r\n case 'boolean':\r\n value = value === 1;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n if (prop && (prop.enum || prop.groupedItems)) {\r\n value = _.map(\r\n legacyExpression.Values,\r\n val => getEnumValuefromLegacy(val, prop.enumType || column)\r\n );\r\n }\r\n }\r\n return { [column]: { [mongoOperator]: value } };\r\n}\r\n\r\nfunction toLegacyExpression(field, expression, schema) {\r\n const mongoOperator = _.keys(expression)[0];\r\n const mongoValue = _.values(expression)[0];\r\n return {\r\n SelectedColumn: toLegacyColumnName(field, schema),\r\n SelectedOperator: operatorMap[mongoOperator],\r\n Values: _.isArray(mongoValue) ? mongoValue : [mongoValue],\r\n };\r\n}\r\n\r\n/**\r\n * Convert normalized filter object to legacy expression.\r\n * @param {Object} filters - normalized filter object.\r\n * @param {number} depth - filter's depth.\r\n * @param {Object} schema - FilterSchema instance.\r\n * @returns {Object[]} - legacy expressions.\r\n */\r\nexport function convertToLegacy(filters, depth, schema) {\r\n if (!depth || !filters) {\r\n throw new Error('Depth or filter object is not defined.');\r\n }\r\n if (depth > 2) {\r\n throw new Error('Filter of depth > 2 can not be converted into legacy filter expression array.');\r\n }\r\n if (_.isEmpty(filters)) {\r\n return [];\r\n }\r\n\r\n const mongoExpressions = depth === 1 ? [filters] : filters.$and || filters.$or;\r\n return _.map(\r\n mongoExpressions,\r\n expr => toLegacyExpression(_.keys(expr)[0], _.values(expr)[0], schema)\r\n );\r\n}\r\n\r\n/**\r\n * Convert legacy expression to normalized filter query object.\r\n * @param {Object[]} legacyExpressions - the legacy expression.\r\n * @param {Object} schema - FilterSchema instance.\r\n * @returns {Object} - the normalized filter object.\r\n */\r\nexport function parseFromLegacy(legacyExpressions, schema) {\r\n if (!_.isArray(legacyExpressions)) {\r\n throw new Error('legacyExpressions must be an array of legacy expressions.');\r\n }\r\n if (_.isEmpty(legacyExpressions)) {\r\n return {};\r\n }\r\n if (legacyExpressions.length === 1) {\r\n return toMongoPredicate(legacyExpressions[0], schema);\r\n }\r\n return { $and: _.map(legacyExpressions, expr => toMongoPredicate(expr, schema)) };\r\n}\r\n","import _ from 'underscore';\r\nimport { startsWith } from 'underscore.string';\r\nimport { get } from '@bingads-webui-universal/primitive-utilities';\r\n\r\nexport const legacyDeliveryStatus = {\r\n CreditCardExpired: 10,\r\n IOExceeded: 20,\r\n PaymentInformationMissing: 30,\r\n InvalidFinancialStatusOther: 40,\r\n MigrationPaused: 45,\r\n CampaignDeleted: 48,\r\n CampaignSuspended: 49,\r\n CampaignBudgetPaused: 50,\r\n DomainLanguageNotSupported: 51,\r\n ShoppingCampaignStoreNotFound: 55,\r\n ShoppingCampaignNoOffersPresent: 56,\r\n AdGroupExpired: 60,\r\n AdGroupDraft: 62,\r\n AdGroupDeleted: 63,\r\n CamAssetRejected: 64,\r\n CamAssetDeleted: 66,\r\n AdGroupTargetingTooNarrow: 67,\r\n EditorialRejected: 70,\r\n EditorialAppealRejected: 71,\r\n EditorialApprovedLimitedAppealRejected: 72,\r\n EditorialUnderAppeal: 75,\r\n UrlInvalid: 76,\r\n ApplicationNotFound: 77,\r\n ApplicationDestinationUrlMismatch: 78,\r\n PendingMetadataSync: 79,\r\n EditorialPending: 80,\r\n AssociationDeleted: 85,\r\n CampaignUserPaused: 90,\r\n AdGroupPrivacyPending: 91,\r\n AdGroupUserPaused: 100,\r\n NoEligibleAds: 105,\r\n NoEligibleKeywords: 106,\r\n NoEligibleAdGroups: 107,\r\n AdUserPaused: 110,\r\n KeywordMatchTypeAdGroupMediumCombinationInvalid: 115,\r\n KeywordUserPaused: 120,\r\n NegativeKeywordConflicts: 130,\r\n PartialNegativeKeywordConflicts: 135,\r\n AutoBiddingLimitedByNotEnoughRevenue: 185,\r\n AutoBiddingLimitedByNotEnoughConversions: 190,\r\n AutoBiddingLearning: 195,\r\n EditorialApprovedLimited: 200,\r\n LowSupply: 300,\r\n LowQuality: 400,\r\n BidBelowFirstPageBid: 500,\r\n Incomplete: 1000,\r\n BudgetSuggestions: 1001,\r\n InlineOpportunity: 1060,\r\n GeoCodingIncomplete: 1101,\r\n ProductTargetUserPaused: 1102,\r\n AdExtensionNotPresent: 1103,\r\n AdExtensionDeleted: 1104,\r\n AdExtensionAssociationDeleted: 1105,\r\n StoreIdNotAssociated: 1106,\r\n AdGroupAudienceAssociationPaused: 1107,\r\n AdGroupAudienceAssociationExcluded: 1108,\r\n AdNotPresent: 1200,\r\n AdNotActive: 1201,\r\n ApplicationDestinationUrlValidationIncomplete: 1252,\r\n AdGroupCriterionExcluded: 1300,\r\n AdGroupCriterionPaused: 1301,\r\n AutoBiddingLimitedInventoryLimit: 1412,\r\n AutoBiddingLimitedMaxCPCRestriction: 1413,\r\n AutoBiddingLimitedBudgetRestriction: 1414,\r\n AutoBiddingLimitedUnAttainableTarget: 1415,\r\n AutoBiddingPortfolioBidStrategyTrainingStatus: 1421,\r\n New: 2000,\r\n Eligible: 2147483647,\r\n};\r\n\r\nconst enums = {\r\n AdGroupCriterionStatus: {\r\n Active: 161,\r\n Paused: 162,\r\n Deleted: 163,\r\n Excluded: 165,\r\n },\r\n AdGroupCallTrackingStatus: {\r\n NotApplicable: 0,\r\n Eligible: 1,\r\n NotEligible: 2,\r\n ProvisioningPending: 3,\r\n Provisioned: 4,\r\n },\r\n AdGroupStatus: {\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 AdStatus: {\r\n Inactive: 0,\r\n Active: 1,\r\n Paused: 2,\r\n Deleted: 3,\r\n },\r\n AdType: {\r\n Text: 1,\r\n Mobile: 2,\r\n Product: 128,\r\n AppInstall: 256,\r\n DynamicSearch: 512,\r\n ExpandedText: 1024,\r\n Hotel: 2048,\r\n Responsive: 4096,\r\n ResponsiveSearch: 8192,\r\n },\r\n AdStrength: {\r\n Unrated: 0,\r\n Poor: 1,\r\n Average: 2,\r\n Good: 3,\r\n Excellent: 4,\r\n },\r\n BidTargetType: {\r\n Keyword: 0,\r\n BehaviorSegment: 11,\r\n Site: 12,\r\n },\r\n BidType: {\r\n BidOnly: 0,\r\n TargetAndBid: 1,\r\n },\r\n CallTrackingStatus: {\r\n NotApplicable: 0,\r\n Eligible: 1,\r\n NotEligible: 2,\r\n ProvisioningPending: 3,\r\n Provisioned: 4,\r\n },\r\n CampaignStatus: {\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 CampaignType: {\r\n Default: 1,\r\n Shopping: 2,\r\n DynamicSearchAds: 4,\r\n Audience: 8,\r\n Smart: 16,\r\n Hotel: 32,\r\n },\r\n DeliveryStatus: legacyDeliveryStatus,\r\n DevicePreference: {\r\n All: 0,\r\n Mobile: 2,\r\n },\r\n BiddingStrategyType: {\r\n InheritFromParent: 0,\r\n ManualCpc: 1,\r\n MaxClicks: 2,\r\n MaxConversions: 3,\r\n TargetCpa: 4,\r\n EnhancedCpc: 5,\r\n TargetRoas: 6,\r\n MaxRoas: 7,\r\n MaxConversionValue: 8,\r\n TargetImpressionShare: 9,\r\n ManualCpv: 11,\r\n ManualCpm: 12,\r\n PercentCpc: 13,\r\n Commission: 14,\r\n CostPerSale: 15,\r\n },\r\n Language: {\r\n None: 0,\r\n Arabic: 7,\r\n TraditionalChinese: 24,\r\n Danish: 28,\r\n Dutch: 29,\r\n English: 30,\r\n Finnish: 35,\r\n French: 36,\r\n German: 40,\r\n Italian: 55,\r\n Norwegian: 82,\r\n Portuguese: 88,\r\n Spanish: 109,\r\n Swedish: 112,\r\n SimplifiedChinese: 137,\r\n Greek: 41,\r\n Polish: 87,\r\n Bulgarian: 19,\r\n Czech: 27,\r\n Estonian: 32,\r\n Croatian: 26,\r\n Hungarian: 48,\r\n Lithuanian: 70,\r\n Latvian: 68,\r\n Maltese: 75,\r\n Romanian: 92,\r\n Slovak: 106,\r\n Slovenian: 107,\r\n Turkish: 70,\r\n Serbian: 68,\r\n Bosnian: 75,\r\n Albanian: 92,\r\n Macedonian: 106,\r\n Icelandic: 107,\r\n Japanese: 56,\r\n All: 1000,\r\n },\r\n Medium: {\r\n Search: 1,\r\n Content: 2,\r\n Native: 10,\r\n Audience: 11,\r\n SearchAndContent: 3,\r\n },\r\n OrderItemStatus: {\r\n Active: 161,\r\n Paused: 162,\r\n Deleted: 163,\r\n },\r\n MatchType: {\r\n Exact: 1,\r\n Phrase: 2,\r\n Broad: 3,\r\n Content: 5,\r\n },\r\n FluctuationType: {\r\n Click: 'Click',\r\n Impression: 'Impression',\r\n Spend: 'Spend',\r\n },\r\n};\r\n\r\nconst stringEnums = {\r\n AudienceType: {\r\n Remessaging: 'Remessaging',\r\n Custom: 'Custom',\r\n InMarket: 'InMarket',\r\n Product: 'Product',\r\n RemarketingSimilar: 'RemarketingSimilar',\r\n CustomerList: 'CustomerList',\r\n CombinedList: 'CombinedList',\r\n },\r\n Status: {\r\n Active: 'Active',\r\n Excluded: 'Excluded',\r\n },\r\n CriterionAgeCriterionAgeRange: {\r\n EighteenToTwentyFive: 'EighteenToTwentyFive',\r\n TwentyFiveToThirtyFive: 'TwentyFiveToThirtyFive',\r\n ThirtyFiveToFifty: 'ThirtyFiveToFifty',\r\n FiftyToSixtyFive: 'FiftyToSixtyFive',\r\n SixtyFiveAndAbove: 'SixtyFiveAndAbove',\r\n Unknown: 'Unknown',\r\n },\r\n CriterionGenderCriterionGenderType: {\r\n Male: 'Male',\r\n Female: 'Female',\r\n Unknown: 'Unknown',\r\n },\r\n AudienceCriterionLevel: {\r\n AdGroup: 'AdGroup',\r\n Campaign: 'Campaign',\r\n },\r\n AccountType: {\r\n AdAccount: 'AdAccount',\r\n ManagerAccount: 'ManagerAccount',\r\n Unknown: 'Unknown',\r\n },\r\n FluctuationType: {\r\n Click: 'Click',\r\n Impression: 'Impression',\r\n Spend: 'Spend',\r\n },\r\n AdGroupType: {\r\n SearchStandard: 'Enum.AdGroupType\\'SearchStandard\\'',\r\n SearchDynamic: 'Enum.AdGroupType\\'SearchDynamic\\'',\r\n },\r\n CashbackScope: {\r\n None: \"Enum.CashbackScope'None'\",\r\n Store: \"Enum.CashbackScope'Store'\",\r\n Product: \"Enum.CashbackScope'Product'\",\r\n },\r\n CouponsEnabled: {\r\n None: \"Enum.CouponsEnabled'None'\",\r\n Enabled: \"Enum.CouponsEnabled'Enabled'\",\r\n Disabled: \"Enum.CouponsEnabled'Disabled'\",\r\n },\r\n};\r\n\r\n/**\r\n * Converting enum value from legacy\r\n * will look by legacyValue from the enum[type], found related key, and calculate enum value\r\n *\r\n * @param {String} legacyValue - legacy value\r\n * @param {String} type - legacy enum type\r\n * @returns {String} enum value, null if no related value found\r\n */\r\nexport function getEnumValuefromLegacy(legacyValue, type) {\r\n if (startsWith(legacyValue, 'Enum.')) {\r\n return legacyValue;\r\n }\r\n const value = _.findKey(enums[type], val => String(val) === legacyValue);\r\n\r\n return value ? `Enum.${type}'${value}'` : null;\r\n}\r\n\r\n/**\r\n * Converting enum value to legacy value\r\n * will return the mapped value from enum mapping\r\n *\r\n * @param {String} fullValue - enum value, such as Enum.Language'English'\r\n * @returns {String} it's legacy value\r\n */\r\nexport function convertEnumValuetoLegacy(fullValue) {\r\n if (!fullValue) {\r\n return fullValue;\r\n }\r\n const [, type, value] = fullValue.match(/^Enum\\.(\\w+)'(\\w+)'$/);\r\n const legacyValue = get(enums, [type, value]);\r\n\r\n return _.isNumber(legacyValue) ? String(legacyValue) : get(stringEnums, [type, value]);\r\n}\r\n\r\n\r\n/**\r\n * Converting enum value to legacy value\r\n * will return the mapped value from stringEnums mapping\r\n *\r\n * @param {String} fullValue - enum value, such as Enum.AudienceType'Remessaging'\r\n * @returns {String} it's legacy value\r\n */\r\nexport function convertEnumValuetoLegacyString(fullValue) {\r\n if (!fullValue) { return fullValue; }\r\n const [, , value] = fullValue.match(/^Enum\\.(\\w+)'(\\w+)'$/);\r\n\r\n return value;\r\n}\r\n","import _ from 'underscore';\r\nimport kendo from '@bingads-webui/kendo/kendo.data.odata';\r\nimport { convertToKendo } from './kendo';\r\n\r\nconst priorities = {\r\n and: 1,\r\n or: 2,\r\n};\r\n\r\n// TODO - Task 675798: add odata converter unit test\r\nfunction kendoToOData(filter) {\r\n const params = kendo.data.transports.odata.parameterMap({ filter }, 'read');\r\n\r\n // delete filter if its empty\r\n if (!(_.isString(params.$filter) && params.$filter.length)) {\r\n delete params.$filter;\r\n }\r\n\r\n // support [odata v4]\r\n if (params.$filter && _.isString(params.$filter) && params.$filter.length) {\r\n // replace substringof by contains\r\n params.$filter = params.$filter.replace(/substringof\\(('.*?'),(tolower\\([\\w/]+?\\))\\)/g, 'contains($2, $1)');\r\n // replace substringof by contains\r\n params.$filter = params.$filter.replace(/substringof\\(('.*?'),([\\w/]+?)\\)/g, 'contains($2, $1)');\r\n // replace enum eq formating (with update to handle multiple flags)\r\n params.$filter = params.$filter.replace(/'Enum\\.(\\w+)''((\\w+,?)+)'''/g, 'Enum.$1\\'$2\\'');\r\n // replace datetime'somedate' by somedate\r\n params.$filter = params.$filter.replace(/datetime'(.*?)'/g, '$1+00:00');\r\n return params.$filter;\r\n }\r\n return '';\r\n}\r\n\r\nfunction customToOData(priorityParent, filter, customOperator) {\r\n const {\r\n logic,\r\n field,\r\n value,\r\n operator,\r\n } = filter;\r\n const priority = priorities[logic];\r\n if (priority && _.isArray(filter.filters)) {\r\n const filterString = _.map(filter.filters, flt => customToOData(priority, flt, customOperator))\r\n .join(' '.concat(logic, ' '));\r\n if (_.isNumber(priorityParent) && priority > priorityParent) {\r\n return '('.concat(filterString, ')');\r\n }\r\n return filterString;\r\n }\r\n if (_.isFunction(customOperator[field])) {\r\n return customOperator[field](operator, value);\r\n }\r\n if (_.isObject(customOperator[field]) && _.isFunction(customOperator[field][operator])) {\r\n return customOperator[field][operator](value);\r\n }\r\n return kendoToOData({ filters: [filter] });\r\n}\r\n\r\n/**\r\n * Convert filter object to odata formatted.\r\n * @param {Object} filters - normalized filter object.\r\n * @param {Object} options - the options object used for odata convertion.\r\n * @param {Object} [options.fieldMap] - used for kendo convertion.\r\n * @param {boolean|string[]} [options.ignoreCase] - used for kendo convertion.\r\n * @param {Object} [options.custom] - custom operator map.\r\n * @param {Object} filterSchema - filter schema.\r\n * @returns {Object} - odata formatted filter object.\r\n */\r\nexport function convertToOData(filters, { fieldMap = {}, ignoreCase, custom } = {\r\n fieldMap: {},\r\n ignoreCase: false,\r\n}, filterSchema) {\r\n const kendoFilter = convertToKendo(filters, { fieldMap, ignoreCase }, filterSchema);\r\n if (!kendoFilter) {\r\n return '';\r\n }\r\n return custom ?\r\n customToOData(null, _.defaults({ logic: 'and' }, kendoFilter), custom) :\r\n kendoToOData(kendoFilter);\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__80__;","import _ from 'underscore';\r\n\r\nconst simpleOperatorMap = {\r\n $eq: 'eq',\r\n $ne: 'neq',\r\n $neq: 'neq',\r\n $gt: 'gt',\r\n $ge: 'gte',\r\n $gte: 'gte',\r\n $lt: 'lt',\r\n $le: 'lte',\r\n $lte: 'lte',\r\n $contains: 'contains',\r\n $doesnotcontain: 'doesnotcontain',\r\n $substringof: 'contains',\r\n $endswith: 'endswith',\r\n $startswith: 'startswith',\r\n $containsall: 'containsall',\r\n $containsany: 'containsany',\r\n $containsnone: 'containsnone',\r\n $isof: 'isof',\r\n};\r\nconst logicOperatorMap = {\r\n $and: 'and',\r\n $or: 'or',\r\n};\r\n\r\nfunction simpleExpression(ignoreCase, field, operator, value) {\r\n const toLower = _.isString(value) &&\r\n (ignoreCase === true || (_.isArray(ignoreCase) && _.contains(ignoreCase, field)));\r\n return {\r\n field: toLower ? `tolower(${field})` : field,\r\n value: toLower ? value.toLowerCase() : value,\r\n operator: simpleOperatorMap[operator],\r\n };\r\n}\r\n\r\nfunction convertEnumSelectionLeaf(ignoreCase, field, value, filterSchema) {\r\n return _.isArray(value) && value.length ?\r\n {\r\n logic: 'or',\r\n filters: _.map(value, val => simpleExpression(ignoreCase, field, '$eq', val, filterSchema)),\r\n } :\r\n null;\r\n}\r\n\r\nfunction convertLeaf({ fieldMap, ignoreCase }, fieldVal, expression, filterSchema) {\r\n const operator = _.keys(expression)[0];\r\n const value = _.values(expression)[0];\r\n const field = fieldMap[fieldVal] ? fieldMap[fieldVal] : fieldVal;\r\n\r\n if (operator === '$in') {\r\n return convertEnumSelectionLeaf(ignoreCase, field, value, filterSchema);\r\n }\r\n\r\n if (simpleOperatorMap[operator]) {\r\n return simpleExpression(ignoreCase, field, operator, value, filterSchema);\r\n }\r\n return null;\r\n}\r\n\r\nfunction convertNode(option, expressionKey, expression, filterSchema) {\r\n if (!_.isArray(expression)) {\r\n return convertLeaf(option, expressionKey, expression, filterSchema);\r\n }\r\n const logic = logicOperatorMap[expressionKey];\r\n return logic ?\r\n {\r\n logic,\r\n filters: _.chain(expression)\r\n .map(value => convertNode(option, _.keys(value)[0], _.values(value)[0], filterSchema))\r\n .filter(Boolean)\r\n .value(),\r\n } :\r\n null;\r\n}\r\n\r\n/**\r\n * Convert normalized filter object to kendo format with given options.\r\n * @param {Object} filters - normalized filter object to convert.\r\n * @param {Object} options - given options.\r\n * @param {Object} [options.fieldMap] - set of field aliases, if property names on clientside\r\n * and server side are different. e.g. {'id' : 'AdGroupId'}\r\n * @param {boolean|string[]} [options.ignoreCase] - ignore case or not for field string.\r\n * @param {Object} filterSchema - filter schema.\r\n * @returns {Object} - kendo formatted filter object.\r\n */\r\nexport function convertToKendo(filters, { fieldMap, ignoreCase } = {}, filterSchema) {\r\n const kendoFilters = _.chain(filters)\r\n .map((value, key) => convertNode({ fieldMap, ignoreCase }, key, value, filterSchema))\r\n .filter(Boolean)\r\n .value();\r\n\r\n return !kendoFilters || _.isEmpty(kendoFilters) ? null : { filters: kendoFilters };\r\n}\r\n","import FilterI18n from './src/index';\r\n\r\nexport { FilterI18n };\r\n","import _ from 'underscore';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport { SchemaI18n } from './schema-i18n';\r\n\r\nconst operatorKeyMap = {\r\n eq: 'Filter_Operator_EQ',\r\n neq: 'Filter_Operator_NEQ',\r\n gt: 'Filter_Operator_GT',\r\n gte: 'Filter_Operator_GTE',\r\n lt: 'Filter_Operator_LT',\r\n lte: 'Filter_Operator_LTE',\r\n in: 'Filter_Operator_Contains',\r\n contains: 'Filter_Operator_Contains',\r\n doesnotcontain: 'Filter_Operator_Not_Contains',\r\n startswith: 'Filter_Operator_StartsWith',\r\n endswith: 'Filter_Operator_EndsWith',\r\n containsall: 'FilterOperator_ContainsAll',\r\n containsany: 'FilterOperator_ContainsAny',\r\n containsnone: 'FilterOperator_ContainsNone',\r\n};\r\n\r\nconst operatorStringMap = {\r\n eq: _TL_('equals'),\r\n neq: _TL_('does not equal'),\r\n gt: _TL_('greater than'),\r\n gte: _TL_('greater than or equals'),\r\n lt: _TL_('less than'),\r\n lte: _TL_('less than or equals'),\r\n in: _TL_('contains'),\r\n contains: _TL_('contains'),\r\n doesnotcontain: _TL_('does not contain'),\r\n startswith: _TL_('begins with'),\r\n endswith: _TL_('ends with'),\r\n containsall: _TL_('contains all'),\r\n containsany: _TL_('contains any'),\r\n containsnone: _TL_('contains none'),\r\n};\r\n\r\n/**\r\n * The FilterI18n class to do localization for filter\r\n * It's used to localize date, operator, other values and generate humanized HTML for filter query.\r\n * @param {Object} schema - FilterSchema only, refer @bingads-webui/filter-schema for more detail.\r\n * @param {Object} i18n - i18n object, provide getString and formatDecimal functions.\r\n * @param {Object} [schemaI18n] - optional i18n object to localize property key and enum value in\r\n * schema.\r\n * @param {Function} schemaI18n.property - get localized property name string.\r\n * @param {Function} schemaI18n.value - get localized enum value string.\r\n * @param {string} skeleton - localization date format string\r\n * @param {boolean} vnext - indicates whether it's the new version of i18n\r\n */\r\nexport default class FilterI18n {\r\n constructor(schema, i18n, schemaI18n, skeleton = 'yMd', vnext) {\r\n this.schema = schema;\r\n this.i18n = i18n;\r\n this.schemaI18n = schemaI18n || new SchemaI18n(schema);\r\n this.skeleton = skeleton;\r\n this.vnext = vnext;\r\n }\r\n\r\n /**\r\n * Localize operator string.\r\n * @param {string} operator - original operator string\r\n * @param {object} operatorDisplayNameMap - customized operator convert map\r\n * @return {string} - localized operator string.\r\n */\r\n convertOperator(operator, operatorDisplayNameMap) {\r\n return operatorDisplayNameMap && operatorDisplayNameMap[operator] ?\r\n operatorDisplayNameMap[operator] :\r\n this.i18n.getString(this.vnext ? operatorStringMap[operator] : operatorKeyMap[operator]);\r\n }\r\n\r\n /**\r\n * Localize property's value\r\n * @param {string} value - value of property you want to localize\r\n * @param {string} propertyKey - the key of property\r\n * @return {string} - localized value of given property key,\r\n * return value itself if property doesn't exist\r\n */\r\n convertValue(value, propertyKey) {\r\n const property = this.schema.getFilterProperty(propertyKey);\r\n if (property && property.skipLocalization) {\r\n return value.toString();\r\n }\r\n if (property && property.localize) {\r\n return property.localize(value);\r\n }\r\n\r\n if (property && property.type === 'datetime' && value instanceof Date) {\r\n if (property.hasTime) {\r\n return this.i18n.formatDate(value, {\r\n datetime: 'short',\r\n });\r\n }\r\n const utcDate = putil.convertMachineDateToUTCDate(value, this.i18n);\r\n return this.i18n.formatDate(new Date(utcDate.toISOString()), {\r\n timeZone: 'UTC',\r\n skeleton: this.skeleton,\r\n });\r\n }\r\n\r\n if (property && property.type === 'number' && property.isPercentValue) {\r\n return this.i18n.formatPercent(value / 100, {\r\n maximumFractionDigits: 2,\r\n minimumFractionDigits: 2,\r\n });\r\n }\r\n\r\n if (property && property.type === 'number') {\r\n return this.i18n.formatDecimal(value, {\r\n maximumFractionDigits: 2,\r\n minimumFractionDigits: 2,\r\n });\r\n }\r\n\r\n if (property && property.type === 'integer' && property.isPercentValue) {\r\n return this.i18n.formatPercent(value / 100, {\r\n maximumFractionDigits: 0,\r\n minimumFractionDigits: 0,\r\n });\r\n }\r\n\r\n if (property && property.type === 'integer') {\r\n return this.i18n.formatDecimal(value, {\r\n maximumFractionDigits: 0,\r\n minimumFractionDigits: 0,\r\n });\r\n }\r\n\r\n if (property && property.localized &&\r\n _.isObject(property.localized) && property.localized[value]) {\r\n return property.localized[value];\r\n }\r\n return this.schemaI18n.value(this.schema.getEntityName(), propertyKey, value);\r\n }\r\n\r\n /**\r\n * Localize filterable property's name.\r\n * @param {string} key - property's key.\r\n * @return {string} - localized property name, return the key if localized name doesn't exist.\r\n */\r\n convertName(key) {\r\n const property = this.schema.getFilterProperty(key);\r\n\r\n if (property && property.isDeletedProperty) {\r\n return _TL_('(deleted)');\r\n }\r\n\r\n return property\r\n ? this.schemaI18n.property(this.schema.getEntityName(), key)\r\n : key;\r\n }\r\n}\r\n\r\n","import _ from 'underscore';\r\n\r\nexport class SchemaI18n {\r\n constructor(schema) {\r\n this.schema = schema;\r\n }\r\n\r\n value(schemaName, key, value) {\r\n const entityProperty = _.chain(this.schema.filterProps())\r\n .result(key)\r\n .value();\r\n const localizedVal = _.chain(entityProperty)\r\n .result('localized')\r\n .result(value)\r\n .value();\r\n\r\n return localizedVal || value;\r\n }\r\n\r\n property(schemaName, key) {\r\n const property = this.schema.getFilterProperty(key);\r\n // filter-agent's schema-localizer writes localized property name\r\n // to property.title instead of property.name\r\n return property && property.title ? property.title : key;\r\n }\r\n}\r\n","export { FilterSchema } from './src/index';\r\nexport { flattenEntitySchema, buildNameToPropertyMapping } from './src/schema-utils';\r\n","import _ from 'underscore';\r\n\r\nconst operatorMapping = {\r\n number: ['eq', 'neq', 'gt', 'gte', 'lt', 'lte'],\r\n integer: ['eq', 'neq', 'gt', 'gte', 'lt', 'lte'],\r\n array: ['eq', 'neq', 'gt', 'gte', 'lt', 'lte'],\r\n string: ['contains', 'doesnotcontain', 'startswith', 'endswith', 'eq', 'neq'],\r\n enum: ['in'],\r\n boolean: ['eq'],\r\n datetime: ['eq', 'neq', 'gt', 'gte', 'lt', 'lte'],\r\n id: ['in'],\r\n};\r\n\r\nfunction getSelfFilterableProps(schema) {\r\n return _.chain(schema.properties)\r\n .pairs()\r\n .filter(pair => pair[1] && pair[1].filterable === true)\r\n .object()\r\n .value();\r\n}\r\n\r\nfunction getDeepFilterableProps(schema) {\r\n return _.chain(schema.properties)\r\n .pairs()\r\n .filter(pair => pair[1].type && pair[1].type.toLowerCase() === 'object' && pair[1].schema && pair[1].filterable)\r\n .map((pair) => {\r\n const parentKey = pair[0];\r\n\r\n return _.chain(pair[1].schema.properties)\r\n // pick only filterable properties\r\n .pick(pair[1].filterable)\r\n .pairs()\r\n .map((childPair) => {\r\n // set alias on property object\r\n const prop = _.extend({}, childPair[1], {\r\n alias: pair[1].alias && pair[1].alias[childPair[0]],\r\n });\r\n // return key-value pair with key = parent/child\r\n return [parentKey.concat('.', childPair[0]), prop];\r\n })\r\n .value();\r\n })\r\n .flatten(true)\r\n .object()\r\n .value();\r\n}\r\n\r\nfunction buildAliasToProp() {\r\n return _.chain(this.filterProps())\r\n .pairs()\r\n .map(pair => _.map(\r\n _.pairs(pair[1].alias || {}),\r\n childPair => [childPair[0].concat('.', childPair[1]), pair[0]]\r\n ))\r\n .flatten(true)\r\n .object()\r\n .value();\r\n}\r\n\r\nfunction buildPropToAlias() {\r\n return _.chain(this.aliasToProp())\r\n .pairs()\r\n .map((pair) => {\r\n const dot = pair[0].indexOf('.');\r\n const aliasType = pair[0].substring(0, dot);\r\n const alias = pair[0].substring(dot + 1);\r\n return [aliasType.concat('.', pair[1]), alias];\r\n })\r\n .object()\r\n .value();\r\n}\r\n\r\nfunction convertValue(srcPropType, targetPropType, predValue) {\r\n const srcType = srcPropType.toLowerCase();\r\n const targetType = targetPropType.toLowerCase();\r\n // only convert some types\r\n if (srcType === 'number' && targetType === 'integer') {\r\n return Math.round(predValue);\r\n }\r\n return predValue;\r\n}\r\n\r\nconst conversionFunctionFactory = ({\r\n sourcePropertyType, targetPropName, targetProp,\r\n}) => {\r\n const conversionFunc = (mongoPredicate) => {\r\n const exprObj = _.values(mongoPredicate)[0];\r\n const predOperator = _.keys(exprObj)[0];\r\n const predValue = _.values(exprObj)[0];\r\n\r\n // All we need here is the type for src\r\n const convertedValue = convertValue(sourcePropertyType, targetProp.type, predValue);\r\n\r\n return {\r\n [targetPropName]: {\r\n [predOperator]: convertedValue,\r\n },\r\n };\r\n };\r\n return conversionFunc;\r\n};\r\n\r\nconst legacyConversionFunctionFactory = ({\r\n sourcePropertyType, targetPropName, targetProp,\r\n}) => {\r\n const conversionFunc = (legacyPredicate) => {\r\n const predValue = legacyPredicate.Values[0];\r\n\r\n const convertedValue = convertValue(sourcePropertyType, targetProp.type, predValue);\r\n\r\n /* eslint-disable no-param-reassign */\r\n legacyPredicate.SelectedColumn = targetPropName;\r\n legacyPredicate.Values = [convertedValue];\r\n /* eslint-enable no-param-reassign */\r\n };\r\n return conversionFunc;\r\n};\r\n\r\nfunction buildPropToConversions(isForLegacyFilter, conversionFuncFactory) {\r\n return _.chain(this.entitySchema.properties)\r\n .pairs()\r\n .map(([targetPropName, targetProp]) => {\r\n // Only one property conversion are supported for now.\r\n if (targetProp.alias && targetProp.alias.propertyConversion) {\r\n // `conversionSrc` must have `sourcePropertyName` and `sourcePropertyType`.\r\n // `sourcePropertyName` is long name with '' in b/w parentName and property name.\r\n // `sourcePropertyLegacyAlias` is the optional legacy alias of the source property.\r\n const { sourcePropertyType, sourcePropertyName, sourcePropertyLegacyAlias } =\r\n targetProp.alias.propertyConversion;\r\n\r\n if (!sourcePropertyName) {\r\n throw new Error('Must provide a sourcePropertyName');\r\n }\r\n if (!sourcePropertyType) {\r\n throw new Error('Must provide a sourcePropertyType');\r\n }\r\n\r\n const conversionFunc = conversionFuncFactory({\r\n sourcePropertyType, targetPropName, targetProp,\r\n });\r\n const finalSourcePropertyName =\r\n (isForLegacyFilter && sourcePropertyLegacyAlias) || sourcePropertyName;\r\n\r\n return [finalSourcePropertyName, conversionFunc];\r\n }\r\n return null;\r\n })\r\n .compact()\r\n .object()\r\n .value();\r\n}\r\n\r\n/**\r\n * FilterSchema is built upon entity schema.\r\n * It's used to get filterable properties, get alias using alias type & property key and vice versa.\r\n */\r\nexport class FilterSchema {\r\n /**\r\n * Constructs a new instance of FilterSchema over the passed in entitySchema.\r\n * @param {object} entitySchema - the original entity schema object\r\n */\r\n constructor(entitySchema) {\r\n this.entitySchema = entitySchema;\r\n this.entityName = this.entitySchema.name;\r\n\r\n this.filterProps = () => _.extend(\r\n getSelfFilterableProps(this.entitySchema),\r\n getDeepFilterableProps(this.entitySchema)\r\n );\r\n this.aliasToProp = _.once(buildAliasToProp.bind(this));\r\n this.propToAlias = _.once(buildPropToAlias.bind(this));\r\n this.propToConversions =\r\n _.once(buildPropToConversions.bind(this, false, conversionFunctionFactory));\r\n this.propToLegacyConversions =\r\n _.once(buildPropToConversions.bind(this, true, legacyConversionFunctionFactory));\r\n }\r\n\r\n /**\r\n * Get entity schema's name.\r\n * @return {string} - the entity schema's name.\r\n */\r\n getEntityName() {\r\n return this.entityName;\r\n }\r\n\r\n /**\r\n * Get keys of filterable properties.\r\n * @return {array} - array of filterable properties' keys.\r\n */\r\n getPropertyKeys() {\r\n return _.keys(this.filterProps());\r\n }\r\n\r\n /**\r\n * Get filterable property using property key with formatted attributes.\r\n * @param {string} propertyKey - the property's key\r\n * @return {object} - filterable property of given key, null if doesn't exist.\r\n */\r\n getFilterProperty(propertyKey) {\r\n const property = this.filterProps()[propertyKey];\r\n if (!property) {\r\n return null;\r\n }\r\n\r\n const type = property.type.toLowerCase();\r\n let operators;\r\n\r\n if (!_.isEmpty(property.operators)) {\r\n operators = property.operators; // eslint-disable-line prefer-destructuring\r\n } else if (_.isEmpty(property.enum)) {\r\n operators = operatorMapping[type];\r\n } else {\r\n operators = operatorMapping.enum;\r\n }\r\n\r\n const result = {\r\n type,\r\n operators,\r\n alias: property.alias,\r\n name: property.name,\r\n description: property.description,\r\n isPercentValue: property.isPercentValue,\r\n skipLocalization: property.skipLocalization,\r\n isDeletedProperty: property.isDeletedProperty,\r\n isInvalidProperty: property.isInvalidProperty,\r\n title: property.title,\r\n localized: property.localized,\r\n nullable: property.nullable,\r\n maxLength: property.maxLength,\r\n minimum: property.minimum,\r\n maximum: property.maximum,\r\n pattern: property.pattern,\r\n customEditor: property.customEditor,\r\n localize: property.localize,\r\n enumType: property.enumType,\r\n };\r\n\r\n if (property.enum) {\r\n result.enum = property.enum;\r\n }\r\n if (property.chooseType) {\r\n result.chooseType = property.chooseType;\r\n }\r\n if (property.customParameters) {\r\n result.customParameters = property.customParameters;\r\n }\r\n if (property.groupedItems) {\r\n result.groupedItems = property.groupedItems;\r\n }\r\n if (property.hasTime) {\r\n result.hasTime = property.hasTime;\r\n }\r\n\r\n if (property.operatorDisplayNameMap) {\r\n // for customize filter operator text display\r\n result.operatorDisplayNameMap = property.operatorDisplayNameMap;\r\n }\r\n if (property.addtionalParams && _.isObject(property.addtionalParams)) {\r\n // to avoid future trouble, for non-shared params, put it here\r\n _.extendOwn(result, property.addtionalParams);\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Get alias using property key and alias type.\r\n * @param {string} propertyKey - property key.\r\n * @param {string} aliasType - alias type.\r\n * @return {string} - alias name of given key and alias type\r\n * return propertyKey if alias doesn't exist.\r\n */\r\n toAlias(propertyKey, aliasType) {\r\n let alias = null;\r\n if (propertyKey && aliasType) {\r\n alias = this.propToAlias()[aliasType.concat('.', propertyKey)];\r\n }\r\n return alias || propertyKey;\r\n }\r\n\r\n /**\r\n * Get original property key using alias and alias type.\r\n * @param {string} alias - alias string.\r\n * @param {string} aliasType - type of alias.\r\n * @return {string} - the property key of given alias and alias type\r\n * return alias if propertyKey doesn't exist.\r\n */\r\n fromAlias(alias, aliasType) {\r\n let propertyKey = null;\r\n if (alias && aliasType) {\r\n propertyKey = this.aliasToProp()[aliasType.concat('.', alias)];\r\n }\r\n return propertyKey || alias;\r\n }\r\n\r\n getApplicableConversions(propName) {\r\n const allConversions = this.propToConversions();\r\n return _.isUndefined(allConversions[propName]) ? _.identity : allConversions[propName];\r\n }\r\n\r\n getApplicableLegacyConversions(propName) {\r\n const allConversions = this.propToLegacyConversions();\r\n return _.isUndefined(allConversions[propName]) ? _.identity : allConversions[propName];\r\n }\r\n\r\n applyConversions(mongoPredicate) {\r\n const propName = _.keys(mongoPredicate)[0];\r\n return this.getApplicableConversions(propName)(mongoPredicate);\r\n }\r\n\r\n applyLegacyFilterConversions(legacyFilterExpressions) {\r\n _.each(legacyFilterExpressions, (legacyExpression) => {\r\n const propName = legacyExpression.SelectedColumn;\r\n this.getApplicableLegacyConversions(propName)(legacyExpression);\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { cloneDeep } from '@bingads-webui-universal/primitive-utilities';\r\n\r\nconst primitiveTypes = [\r\n 'string',\r\n 'number',\r\n 'integer',\r\n 'boolean',\r\n 'datetime',\r\n];\r\n\r\n// const assumes that there is only one conversion\r\nconst conversionAlias = 'propertyConversion';\r\n\r\n// Map enum value like 'Eligible' For DeliveryStatus to \"Enum.DeliveryStatus'Eligible'\"\r\nexport function mapEnumValueForFilter(enumType, enumValue) {\r\n return `Enum.${enumType}'${enumValue}'`;\r\n}\r\n\r\nexport function buildNameToPropertyMapping(entitySchema, mapOnlyBaseProperty) {\r\n // TODO 893787 Provide generic support for customizable entity schema to filter property mapping\r\n if (mapOnlyBaseProperty) {\r\n return _.mapObject(entitySchema.properties, propObj => _.last(propObj.property.split('/')));\r\n }\r\n return _.mapObject(entitySchema.properties, propObj => propObj.property);\r\n}\r\n\r\nfunction restoreToEntitySchema(flattenedEntity) {\r\n const properties = _.reduce(flattenedEntity.fields, (memo, field) => {\r\n // eslint-disable-next-line no-param-reassign\r\n memo[field.name] = _.defaults({\r\n filterable: true,\r\n }, field);\r\n\r\n return memo;\r\n }, {});\r\n\r\n return _.defaults({ properties }, _.pick(flattenedEntity, 'name', 'type', 'operators'));\r\n}\r\n\r\n// Any function that deals with property conversion uses\r\n// the assumption there is only one propertyAlternation\r\n// In another word only one convesion is allowed\r\nconst hasConversionAlias = alias => _.has(alias, conversionAlias);\r\n\r\nfunction flattenSchemaToFields(entitySchema) {\r\n const fields = [];\r\n const nameStack = [];\r\n\r\n function buildFilters(schema) {\r\n _.each(schema.properties, (prop, name) => {\r\n const parentNameStack = [...nameStack];\r\n nameStack.push(name);\r\n const property = nameStack.join('/');\r\n const propertyName = nameStack.join('');\r\n if (prop.type === 'object' && prop.schema && (prop.filterable !== false)) {\r\n // do not use original schema to not break it\r\n const schemaToBuild = cloneDeep(prop.schema);\r\n\r\n // did not build options for ones not filterable within an object\r\n if (_.isArray(prop.filterable)) {\r\n schemaToBuild.properties = _.pick(schemaToBuild.properties, prop.filterable);\r\n\r\n // add filterable to those properties in case they don't have them\r\n _.each(schemaToBuild.properties, (subPro, key) => {\r\n subPro.filterable = true;// eslint-disable-line no-param-reassign\r\n\r\n if (_.has(prop.alias, key)) {\r\n subPro.alias = prop.alias[key];// eslint-disable-line no-param-reassign\r\n }\r\n });\r\n }\r\n buildFilters(schemaToBuild);\r\n } else if (_.contains(primitiveTypes, prop.type) && prop.filterable) {\r\n const baseSchema = {\r\n name: propertyName,\r\n type: prop.type,\r\n property,\r\n isPercentValue: prop.isPercentValue,\r\n skipLocalization: prop.skipLocalization,\r\n operators: prop.operators,\r\n nullable: prop.nullable,\r\n maxLength: prop.maxLength,\r\n originalProperty: _.last(nameStack),\r\n minimum: prop.minimum,\r\n maximum: prop.maximum,\r\n required: true,\r\n pattern: prop.pattern,\r\n localized: prop.localized,\r\n isDeletedProperty: prop.isDeletedProperty,\r\n isInvalidProperty: prop.isInvalidProperty,\r\n };\r\n\r\n if (prop.customColumn) {\r\n baseSchema.name = name;\r\n baseSchema.title = prop.title;\r\n baseSchema.isPercentValue = prop.format === 'Percentage';\r\n baseSchema.id = prop.id;\r\n baseSchema.format = prop.format;\r\n baseSchema.customColumn = true;\r\n }\r\n\r\n if (prop.type === 'datetime') {\r\n baseSchema.hasTime = prop.hasTime;\r\n }\r\n\r\n // Include the custom operators' localization map\r\n if (prop.operatorDisplayNameMap) {\r\n baseSchema.operatorDisplayNameMap = prop.operatorDisplayNameMap;\r\n }\r\n\r\n // Keep the legacy column name conversion support.\r\n if (prop.alias) {\r\n const aliasCopy = cloneDeep(prop.alias);\r\n _.extend(baseSchema, { alias: aliasCopy });\r\n if (hasConversionAlias(aliasCopy)) {\r\n // input schema must provide sourcePropertyType and one\r\n // of parameters, sourceProperty, an odata short name, or\r\n // sourcePropertyName, a full name with its parentName\r\n const { sourceProperty, sourcePropertyType, sourcePropertyName } =\r\n aliasCopy.propertyConversion;\r\n\r\n\r\n if (!sourcePropertyType) {\r\n throw new Error('Must provide a sourcePropertyType');\r\n }\r\n if (!sourcePropertyName) {\r\n if (!sourceProperty) {\r\n throw new Error('Must provide a sourcePropertyName or a sourceProperty');\r\n }\r\n\r\n const aliasNameStack = [...parentNameStack, sourceProperty];\r\n const joinedSourceName = aliasNameStack.join('');\r\n\r\n baseSchema.alias.propertyConversion.sourcePropertyName = joinedSourceName;\r\n }\r\n }\r\n }\r\n\r\n // update settings for enum type\r\n if (!_.isEmpty(prop.enum)) {\r\n baseSchema.enumValueMap = {};\r\n _.extendOwn(baseSchema, { enum: [] }, _.pick(prop, 'chooseType', 'enumType'));\r\n\r\n const enumType = baseSchema.enumType ? baseSchema.enumType : baseSchema.name;\r\n\r\n // update enum value (for odata converting) & localization\r\n _.each(prop.enum, (enumValue) => {\r\n const mappedEnumValue = mapEnumValueForFilter(enumType, enumValue);\r\n\r\n baseSchema.enum.push(mappedEnumValue);\r\n baseSchema.enumValueMap[mappedEnumValue] = enumValue;\r\n });\r\n } else if (prop.type === 'boolean') {\r\n _.extendOwn(baseSchema, _.pick(prop, 'chooseType'));\r\n } else if (prop.type === 'string') {\r\n _.extendOwn(baseSchema, _.pick(prop, 'chooseType'));\r\n if (prop.customParameters) {\r\n _.extendOwn(baseSchema, _.pick(prop, 'customParameters'));\r\n }\r\n }\r\n\r\n fields.push(baseSchema);\r\n }\r\n nameStack.pop(name);\r\n });\r\n }\r\n\r\n buildFilters(entitySchema);\r\n\r\n return _.defaults({ fields }, _.pick(entitySchema, ['name', 'type']));\r\n}\r\n\r\nexport function flattenEntitySchema(entitySchema) {\r\n return restoreToEntitySchema(flattenSchemaToFields(entitySchema));\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__40__;","export { FilterService } from './src/filter-service';\r\n","/* eslint-disable no-param-reassign */\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport Backbone from 'backbone';\r\n\r\nimport { FilterEntity } from '@bingads-webui/filter-entity';\r\nimport { FilterStorageType, getValidFilterEntity } from '@bingads-webui/filter-commons';\r\nimport { parseSync, stringifySync } from '@bingads-webui/safe-json';\r\nimport { FilterSchema, flattenEntitySchema, buildNameToPropertyMapping } from '@bingads-webui/filter-schema';\r\nimport { mergeFilterEntity } from './filter-service-util';\r\n\r\n/**\r\n * Maintain FilterState
\r\n * Flatten entity schema
\r\n * Provides method to crud two types of filter which are
\r\n * QuickFilter(SelectorFilter)- Filter dropdown
\r\n * EditableFilter - Whose query can be edited by user
\r\n * Manages filter storages and creation of FilterEntity\r\n * Trigger filter-state-changed event and expose current combined filter in\r\n * the form of FilterEntity
\r\n * @extends external:\"Backbone.Events\"\r\n * @fires FilterService#filter-state-changed\r\n */\r\n\r\nexport class FilterService {\r\n /**\r\n * @param {Object} storageFactory - Factory method to create storage instance\r\n * @param {Object} storageOptions - Options for creating storage instance\r\n * @param {Object} [storageOptions.quickFilterOptions] - Options for creating quick\r\n * storage instance\r\n * @param {Object} [storageOptions.editableFilterOptions] - Options for creating\r\n * editable storage instance\r\n * @param {Object} [storageOptions.savedFilterOptions] - Options for creating\r\n * saved storage instance\r\n * @param {Object} entitySchema - Entity Schema\r\n * @param {Object} odata - Options for converting parameters to odata\r\n * @param {boolean|string[]} odata.ignoreCase - ignoreCase for odata convertion.\r\n * @param {Object} odata.custom - custom operator map for odata convertion.\r\n * @param {function} schemaProcessor - Update schema based on feature specific logic\r\n * @param {function} odataOptionsProcessor - Update odata options based on feature\r\n * specific logic\r\n */\r\n constructor({\r\n storageFactory,\r\n storageOptions: {\r\n quickFilterOptions = {},\r\n editableFilterOptions = {},\r\n savedFilterOptions = {},\r\n recentFilterOptions = {},\r\n } = {},\r\n entitySchema,\r\n odata: {\r\n ignoreCase = false,\r\n custom,\r\n },\r\n schemaProcessor = schema => schema,\r\n odataOptionsProcessor = odataOptions => odataOptions,\r\n waterfallFilterStores,\r\n suppressWaterfallEvents = false,\r\n } = {}) {\r\n this.entitySchema = schemaProcessor(flattenEntitySchema(entitySchema));\r\n this.lazyFilterSchema = _.memoize(() => new FilterSchema(this.entitySchema));\r\n this.odataOptions = odataOptionsProcessor({\r\n fieldMap: buildNameToPropertyMapping(this.entitySchema),\r\n ignoreCase,\r\n custom,\r\n }, this.entitySchema);\r\n this.filterEntityOptions = {\r\n entitySchema: this.entitySchema,\r\n odata: this.odataOptions,\r\n };\r\n const basicStorageOptions = { filterEntityOptions: this.filterEntityOptions };\r\n this.quickFilterStorage = storageFactory.create(\r\n 'quickFilter',\r\n _.extend(quickFilterOptions, basicStorageOptions)\r\n );\r\n this.editableFilterStorage = storageFactory.create(\r\n 'editableFilter',\r\n _.extend(editableFilterOptions, basicStorageOptions)\r\n );\r\n this.savedFilterStorage = storageFactory.create(\r\n 'savedFilter',\r\n _.extend(savedFilterOptions, basicStorageOptions)\r\n );\r\n this.savedQuickFilterStorage = storageFactory.create(\r\n 'savedFilter',\r\n _.extend(savedFilterOptions, basicStorageOptions, {\r\n featureName: `${storageFactory.featureName}_QuickFilter`,\r\n })\r\n );\r\n this.isRecentFilterSupported = !!storageFactory.preferenceService;\r\n if (this.isRecentFilterSupported) {\r\n this.recentFilterStorage = storageFactory.create(\r\n 'recentFilter',\r\n _.extend(recentFilterOptions, basicStorageOptions)\r\n );\r\n this.recentQuickFilterStorage = storageFactory.create(\r\n 'recentFilter',\r\n _.extend(recentFilterOptions, basicStorageOptions, {\r\n featureName: `${storageFactory.featureName}_QuickFilter`,\r\n })\r\n );\r\n }\r\n\r\n // internal properties\r\n this.editableFilter = null;\r\n this.quickFilter = null;\r\n this.dataSourceFilter = null;\r\n this.savedFilters = [];\r\n this.savedQuickFilters = [];\r\n this.recentFilters = [];\r\n this.recentQuickFilters = [];\r\n this.suppressWaterfallEvents = suppressWaterfallEvents;\r\n\r\n // Kick off first request to server to get all saved filters\r\n this.fetchSavedFilterPromise = this.refreshSavedFiltersCache();\r\n\r\n if (this.isRecentFilterSupported) {\r\n // Kick off first request to server to get all recent filters\r\n this.fetchRecentFilterPromise = this.refreshRecentFiltersCache();\r\n }\r\n\r\n // Load the saved quick filter\r\n this.fetchQuickFilterPromise = this.fetchQuickFilter();\r\n\r\n // Load the initial editable filter from storage\r\n this.fetchEditableFilterPromise = this.fetchEditableFilter();\r\n\r\n if (waterfallFilterStores) {\r\n this.waterfallFilterStores = waterfallFilterStores;\r\n this.initializeWaterfallFilters();\r\n }\r\n\r\n this.initializeCombinedFilterPromise = this.initializeCombinedFilter();\r\n\r\n _.extend(this, Backbone.Events);\r\n }\r\n\r\n get filterSchema() { return this.lazyFilterSchema(); }\r\n\r\n fetchQuickFilter() {\r\n return this.fetchQuickFilterForGivenStore(this.quickFilterStorage);\r\n }\r\n\r\n fetchWaterfallFilter(store) {\r\n return this.fetchQuickFilterForGivenStore(store)\r\n .then((waterfallFilter) => {\r\n this.waterfallFilters.push(waterfallFilter);\r\n\r\n this.hasActiveWaterfallFilter = this.hasActiveWaterfallFilter\r\n || !_.isEmpty(waterfallFilter.value.query);\r\n\r\n return this.waterfallFilters;\r\n });\r\n }\r\n\r\n fetchQuickFilterForGivenStore(quickFilterStorage) {\r\n return quickFilterStorage.get()\r\n .then((quickFilter) => {\r\n const filter = (quickFilter && !_.isEmpty(quickFilter.filter) && quickFilter.filter) || {\r\n key: '',\r\n value: {\r\n query: {},\r\n },\r\n };\r\n\r\n return {\r\n key: filter.key,\r\n value: filter.value,\r\n };\r\n });\r\n }\r\n\r\n fetchEditableFilter() {\r\n return this.editableFilterStorage.get()\r\n .then((editableFilter) => {\r\n if (editableFilter && !_.isEmpty(editableFilter.filter)) {\r\n const { filter } = editableFilter;\r\n\r\n return filter;\r\n }\r\n\r\n return editableFilter;\r\n }, () =>\r\n // Failed to load from storage, resolve back as empty initial filter.\r\n ({}));\r\n }\r\n\r\n // exported property and APIs, all the async calls will return promise and they will always be\r\n // resolved and never rejected. Resolve empty object back means the call failed.\r\n get p$Initialized() {\r\n // When both editable filter and quick filter are loaded from session storage, we treat the\r\n // initialization is done. Saved filter array could still being loaded.\r\n return this.initializeCombinedFilterPromise;\r\n }\r\n\r\n // Refreshes the promises for editable and quick filters. This is only necessary\r\n // with grids that don't use the filter agent to update the filters.\r\n refreshSource() {\r\n this.fetchQuickFilterPromise = this.fetchQuickFilter();\r\n this.fetchEditableFilterPromise = this.fetchEditableFilter();\r\n\r\n if (this.waterfallFilterStores) {\r\n this.initializeWaterfallFilters();\r\n }\r\n\r\n this.initializeCombinedFilterPromise = this.initializeCombinedFilter();\r\n }\r\n\r\n refreshWaterfallFilters() {\r\n if (this.waterfallFilterStores) {\r\n this.initializeWaterfallFilters();\r\n Promise.all(this.fetchWaterfallFilterPromises).then(() => {\r\n this.triggerQuickFilterSetEvent();\r\n });\r\n }\r\n }\r\n\r\n initializeCombinedFilter() {\r\n const filterPromises = {\r\n // Note: these information will be used by filterAgent to update UI\r\n editableFilter: this.fetchEditableFilterPromise,\r\n quickFilter: this.fetchQuickFilterPromise,\r\n };\r\n\r\n if (!_.isEmpty(this.fetchWaterfallFilterPromises)) {\r\n filterPromises.WaterfallFilters = Promise.all(this.fetchWaterfallFilterPromises);\r\n }\r\n\r\n return Promise.props(filterPromises).then((filters) => {\r\n const { editableFilter, quickFilter } = filters;\r\n\r\n if (editableFilter && editableFilter.query) {\r\n this.setInitialEditableFilter(editableFilter.query, editableFilter.name);\r\n } else {\r\n this.editableFilter = null;\r\n }\r\n\r\n if (quickFilter && quickFilter.value) {\r\n this.setInitialQuickFilter(quickFilter.key, quickFilter.value);\r\n } else {\r\n this.quickFilter = null;\r\n }\r\n\r\n if (this.hasActiveWaterfallFilter) {\r\n if (!this.suppressWaterfallEvents\r\n || !this.oldWaterfallFilters\r\n || !_.isEqual(this.oldWaterfallFilters, this.waterfallFilters)) {\r\n this.triggerQuickFilterSetEvent();\r\n }\r\n }\r\n\r\n return filters;\r\n });\r\n }\r\n\r\n initializeWaterfallFilters() {\r\n this.fetchWaterfallFilterPromises = [];\r\n this.oldWaterfallFilters = this.waterfallFilters;\r\n this.waterfallFilters = [];\r\n this.hasActiveWaterfallFilter = false;\r\n\r\n _.each(this.waterfallFilterStores, (store) => {\r\n this.fetchWaterfallFilterPromises.push(this.fetchWaterfallFilter(store));\r\n });\r\n }\r\n\r\n serialize() {\r\n const object = {\r\n version: 1,\r\n };\r\n if (this.quickFilter) {\r\n object.quick = this.quickFilter;\r\n }\r\n if (this.editableFilter) {\r\n object.editable = {\r\n key: this.editableFilter.name,\r\n value: {\r\n query: this.editableFilter.query,\r\n },\r\n };\r\n }\r\n if (this.hasActiveWaterfallFilter) {\r\n object.waterfalls = this.waterfallFilters;\r\n }\r\n\r\n return stringifySync(object);\r\n }\r\n\r\n deserialize(serialized, isColumnConversionEnabled = false) {\r\n const object = parseSync(serialized);\r\n\r\n if (object && object.version === 1) {\r\n // object.version now is always 1\r\n const {\r\n quick,\r\n editable,\r\n waterfalls,\r\n } = object;\r\n if (quick) {\r\n this.setQuickFilter(quick.key, quick.value);\r\n } else {\r\n this.removeQuickFilter();\r\n }\r\n if (editable) {\r\n const patchedQuery = isColumnConversionEnabled ?\r\n this.patchFilter(editable.value.query) : editable.value.query;\r\n this.setEditableFilter(patchedQuery, editable.key);\r\n } else {\r\n this.removeEditableFilter();\r\n }\r\n if (waterfalls) {\r\n // just ignore for now\r\n }\r\n } else {\r\n // object as query\r\n const query = object;\r\n if (query) {\r\n const quickFilter = this.getQuickFilter();\r\n if (quickFilter) {\r\n const equalQuickFilter = q => _.isEqual(q, quickFilter.value.query);\r\n if (equalQuickFilter(query)) {\r\n return;\r\n }\r\n if (\r\n query &&\r\n query.$and &&\r\n _.some(query.$and, equalQuickFilter)\r\n ) {\r\n const editableFilter = _.defaults({\r\n $and: _.reject(query.$and, equalQuickFilter),\r\n }, query);\r\n const patchedQuery = isColumnConversionEnabled ?\r\n this.patchFilter(editableFilter) : editableFilter;\r\n this.setEditableFilter(patchedQuery);\r\n } else {\r\n this.setQuickFilter(null);\r\n const patchedQuery = isColumnConversionEnabled ?\r\n this.patchFilter(query) : query;\r\n this.setEditableFilter(patchedQuery);\r\n }\r\n } else {\r\n const patchedQuery = isColumnConversionEnabled ?\r\n this.patchFilter(query) : query;\r\n this.setEditableFilter(patchedQuery);\r\n }\r\n } else {\r\n this.removeEditableFilter();\r\n }\r\n }\r\n }\r\n\r\n patchFilter(query) {\r\n let logicalOperator;\r\n let expressions;\r\n\r\n if (query.$or) {\r\n logicalOperator = '$or';\r\n expressions = query.$or;\r\n } else if (query.$and) {\r\n logicalOperator = '$and';\r\n expressions = query.$and;\r\n } else {\r\n logicalOperator = '$and';\r\n expressions = [query];\r\n }\r\n\r\n const patchedQuery = _.map(\r\n expressions,\r\n this.filterSchema.applyConversions.bind(this.filterSchema)\r\n );\r\n\r\n if (patchedQuery.length === 1) {\r\n return patchedQuery[0];\r\n }\r\n return _.object(\r\n [logicalOperator || '$and'],\r\n [patchedQuery]\r\n );\r\n }\r\n\r\n // Combined filter, used by caller for rebind grid.\r\n getCombinedFilter() {\r\n let filtersToMerge = [];\r\n if (this.quickFilter) {\r\n filtersToMerge.push(this.createFilterEntity(this.quickFilter.value.query));\r\n }\r\n if (this.editableFilter) {\r\n filtersToMerge.push(this.editableFilter);\r\n }\r\n if (this.dataSourceFilter) {\r\n filtersToMerge.push(this.createFilterEntity(this.dataSourceFilter.value.query));\r\n }\r\n if (this.hasActiveWaterfallFilter) {\r\n const waterfallFilterEntities = _.map(\r\n this.waterfallFilters,\r\n filter => this.createFilterEntity(filter.value.query)\r\n );\r\n filtersToMerge = filtersToMerge.concat(waterfallFilterEntities);\r\n }\r\n\r\n return mergeFilterEntity(filtersToMerge, this.filterEntityOptions);\r\n }\r\n\r\n // =============\r\n // [QuickFilter]\r\n // =============\r\n //\r\n // Save the quick filter item to storage\r\n setQuickFilter(key, value, isInitialLoad = false) {\r\n const newQuickFilter = {\r\n key,\r\n value,\r\n };\r\n\r\n if (!_.isEqual(newQuickFilter, this.quickFilter)) {\r\n this.quickFilter = {\r\n key,\r\n value,\r\n };\r\n if (!isInitialLoad) {\r\n this.quickFilterStorage.save(key, value);\r\n }\r\n this.triggerQuickFilterSetEvent();\r\n }\r\n }\r\n\r\n removeQuickFilter() {\r\n this.setQuickFilter('', { query: {} });\r\n }\r\n\r\n setInitialQuickFilter(key, value) {\r\n this.setQuickFilter(key, value, true);\r\n }\r\n\r\n triggerQuickFilterSetEvent() {\r\n this.trigger('filter-state-changed', {\r\n filter: this.getCombinedFilter(),\r\n quickFilter: this.quickFilter && this.createFilterEntity(this.quickFilter.value.query),\r\n }, 'quick-filter-applied');\r\n }\r\n\r\n // Get the quick filter item from storage\r\n getQuickFilter() {\r\n return this.quickFilter;\r\n }\r\n\r\n // =============\r\n // [DataSource Filter]\r\n //\r\n // Provides a way to set a filter only on the request\r\n // Note: This doesn't show on the UI or persist in storage\r\n // =============\r\n\r\n // Set the data source filter item\r\n setDataSourceFilter(key, value) {\r\n this.dataSourceFilter = {\r\n key,\r\n value,\r\n };\r\n }\r\n\r\n // Get the data source filter item\r\n getDataSourceFilter() {\r\n return this.dataSourceFilter;\r\n }\r\n\r\n // =============\r\n // [SavedFilter]\r\n // =============\r\n //\r\n // Get all saved filter\r\n getSavedFilters(refresh = false) {\r\n if (refresh) {\r\n this.fetchSavedFilterPromise = this.refreshSavedFiltersCache();\r\n }\r\n\r\n // fetchSavedFilterPromise is never rejected (see refreshSavedFiltersCache())\r\n return this.fetchSavedFilterPromise.then((state) => {\r\n if (refresh && state && state.error) {\r\n return state;\r\n }\r\n // Note: don't resolve the error state back if this is not a refresh request.\r\n // Failed to get fetch filters from server treated as Fail-Safe.\r\n return _.union(this.savedFilters, this.savedQuickFilters);\r\n });\r\n }\r\n\r\n\r\n // =============\r\n // [RecentFilter]\r\n // =============\r\n //\r\n // Get all recent filter\r\n getRecentFilters(refresh = false) {\r\n if (refresh) {\r\n this.fetchRecentFilterPromise = this.refreshRecentFiltersCache();\r\n }\r\n\r\n // fetchRecentFilterPromise is never rejected (see refreshRecentFiltersCache())\r\n return this.fetchRecentFilterPromise.then((state) => {\r\n if (refresh && state && state.error) {\r\n return state;\r\n }\r\n // Note: don't resolve the error state back if this is not a refresh request.\r\n // Failed to get fetch filters from server treated as Fail-Safe.\r\n return _.chain(this.recentFilters)\r\n .map((recentFilter, index) => {\r\n const quickFilter = this.recentQuickFilters[index];\r\n if (!_.isEmpty(recentFilter.query) || !_.isEmpty(quickFilter.query)) {\r\n return {\r\n editableFilter: recentFilter,\r\n quickFilter: this.recentQuickFilters[index],\r\n };\r\n }\r\n return null;\r\n })\r\n .compact()\r\n .value();\r\n });\r\n }\r\n\r\n // =============\r\n // [RecentFilter]\r\n // =============\r\n //\r\n // Get recent filter by index\r\n getRecentFiltersByIndex(index) {\r\n return [\r\n this.recentQuickFilters[index],\r\n this.recentFilters[index],\r\n ];\r\n }\r\n\r\n // Save the filter to server, resolve back the recent filter (type of FilterEntity)\r\n addUpdateRecentFilter(\r\n query,\r\n filterStorageType = FilterStorageType.EditableFilter\r\n ) {\r\n const recentFilterStorage = filterStorageType === FilterStorageType.EditableFilter ?\r\n this.recentFilterStorage : this.recentQuickFilterStorage;\r\n const filter = query ? this.createFilterEntity(query) : null;\r\n\r\n return recentFilterStorage.save(filter)\r\n .then(() => {\r\n this.refreshRecentFiltersCache();\r\n }, (errorData) => {\r\n this.trigger('filter-operation-failed', errorData);\r\n return errorData;\r\n });\r\n }\r\n\r\n // Save the filter to server, resolve back the saved filter (type of FilterEntity)\r\n addUpdateSavedFilter(\r\n query,\r\n name,\r\n filterStorageType = FilterStorageType.EditableFilter, updateAppliedFilter = true\r\n ) {\r\n if (!query || !name) {\r\n throw new Error(`Query ${query} or name ${name} is missing`);\r\n }\r\n return this.getFilterByName(name, filterStorageType).then((existingFilter) => {\r\n const filter = this.createFilterEntity(query, name);\r\n if (existingFilter) {\r\n _.extend(filter, {\r\n id: existingFilter.id,\r\n });\r\n }\r\n\r\n if (updateAppliedFilter) {\r\n if (filterStorageType === FilterStorageType.EditableFilter) {\r\n this.setEditableFilter(filter);\r\n } else {\r\n this.setQuickFilter('', {\r\n query,\r\n });\r\n }\r\n }\r\n\r\n const savedFilterStorage = filterStorageType === FilterStorageType.EditableFilter ?\r\n this.savedFilterStorage : this.savedQuickFilterStorage;\r\n const savedFilters = filterStorageType === FilterStorageType.EditableFilter ?\r\n this.savedFilters : this.savedQuickFilters;\r\n\r\n return savedFilterStorage.save(filter)\r\n .then((savedData) => {\r\n // successfully saved to filter, now update the saved list\r\n _.extend(filter, { id: savedData.id });\r\n\r\n const index = _.findIndex(\r\n savedFilters,\r\n savedFilter => savedFilter.id === savedData.id\r\n );\r\n\r\n if (index === -1) {\r\n savedFilters.push(filter);\r\n } else {\r\n savedFilters.splice(index, 1, filter);\r\n }\r\n\r\n // The caller should not need to wait for refetch, resolve the saved filter back\r\n return filter;\r\n }, (errorData) => {\r\n this.trigger('filter-operation-failed', errorData);\r\n return errorData;\r\n });\r\n });\r\n }\r\n\r\n // Delete filter from storage, resolve the deleted filter's name\r\n deleteSavedFilter(filter, filterStorageType = FilterStorageType.EditableFilter) {\r\n const savedFilterStorage = filterStorageType === FilterStorageType.EditableFilter ?\r\n this.savedFilterStorage : this.savedQuickFilterStorage;\r\n const savedFilters = filterStorageType === FilterStorageType.EditableFilter ?\r\n this.savedFilters : this.savedQuickFilters;\r\n\r\n // return this.deleteFromServer(data)\r\n return savedFilterStorage.delete(filter)\r\n .then((deletedResult) => {\r\n // Deleted from server, update local cache.\r\n const index = _.findIndex(savedFilters, { id: deletedResult.id });\r\n\r\n if (index !== -1) {\r\n savedFilters.splice(index, 1);\r\n }\r\n return { name: filter.name };\r\n }, (errorData) => {\r\n this.trigger('filter-operation-failed', errorData);\r\n return errorData;\r\n });\r\n }\r\n\r\n refreshSavedOrRecentFiltersCache(\r\n editableFilterStorage,\r\n quickFilterStorage,\r\n editableFilters,\r\n quickFilters\r\n ) {\r\n return Promise.all([\r\n editableFilterStorage.get(),\r\n quickFilterStorage.get()])\r\n .then((combinedFilters) => {\r\n // Re-populate the cache\r\n editableFilters.length = 0;\r\n _.each(combinedFilters[0], (filter) => {\r\n editableFilters.push(this.createFilterEntity(\r\n filter.query,\r\n filter.name,\r\n filter.id\r\n ));\r\n });\r\n quickFilters.length = 0;\r\n _.each(combinedFilters[1], (filter) => {\r\n quickFilters.push(this.createFilterEntity(\r\n filter.query,\r\n filter.name,\r\n filter.id\r\n ));\r\n });\r\n }, errorData =>\r\n // Don't touch the cached savedFilters, still resolve the fetchSavedFilterPromise\r\n // with error object\r\n errorData);\r\n }\r\n\r\n // Internal function\r\n refreshSavedFiltersCache() {\r\n return this.refreshSavedOrRecentFiltersCache(\r\n this.savedFilterStorage,\r\n this.savedQuickFilterStorage,\r\n this.savedFilters,\r\n this.savedQuickFilters\r\n );\r\n }\r\n\r\n // Internal function\r\n refreshRecentFiltersCache() {\r\n return this.refreshSavedOrRecentFiltersCache(\r\n this.recentFilterStorage,\r\n this.recentQuickFilterStorage,\r\n this.recentFilters,\r\n this.recentQuickFilters\r\n );\r\n }\r\n\r\n getFilterByName(name, filterStorageType = FilterStorageType.EditableFilter) {\r\n // Note: fetchSavedFilterPromise is never rejected\r\n return this.fetchSavedFilterPromise.then(() =>\r\n // Return the filter entity, if the last fetch failed, use the local savedFilters directly.\r\n _.find(filterStorageType === FilterStorageType.EditableFilter ?\r\n this.savedFilters : this.savedQuickFilters, { name }));\r\n }\r\n\r\n // ===============\r\n // [EditableFilter]\r\n // ===============\r\n //\r\n // Get Filter for current editable filter, synchronous call\r\n getEditableFilter() {\r\n return this.editableFilter;\r\n }\r\n\r\n // Remove the current editable filter\r\n removeEditableFilter() {\r\n this.editableFilter = null;\r\n\r\n this.editableFilterStorage.clean();\r\n\r\n this.trigger('filter-state-changed', {\r\n filter: this.getCombinedFilter(),\r\n }, 'editable-filter-removed');\r\n }\r\n\r\n // Set the current editable filter\r\n setEditableFilterByName(name) {\r\n return this.getFilterByName(name).then((filter) => {\r\n if (filter) {\r\n this.setEditableFilter(filter, name);\r\n } else {\r\n throw new Error(`Cannot find filter by name ${name}`);\r\n }\r\n });\r\n }\r\n\r\n // Set the current editable filter\r\n setEditableFilter(filter, name, isInitialLoad = false, callback = null) {\r\n const filterEntity = filter instanceof FilterEntity ?\r\n filter : this.createFilterEntity(filter, name);\r\n\r\n const validatedFilter = getValidFilterEntity(filterEntity);\r\n\r\n if ((!_.isEmpty(filter.query) && !validatedFilter)\r\n || (validatedFilter && filterEntity && validatedFilter.depth !== filterEntity.depth)) {\r\n this.trigger('invalid-filter-property', {\r\n originalFilter: filterEntity.query,\r\n validatedFilter: validatedFilter ? validatedFilter.query : null,\r\n });\r\n }\r\n\r\n // Only trigger filter state change if filter changed\r\n if ((!this.editableFilter && validatedFilter) ||\r\n (this.editableFilter && !validatedFilter) ||\r\n (this.editableFilter && validatedFilter &&\r\n !_.isEqual(this.editableFilter.query, validatedFilter.query))) {\r\n this.editableFilter = validatedFilter;\r\n this.trigger('filter-state-changed', {\r\n filter: this.getCombinedFilter(),\r\n }, 'editable-filter-applied');\r\n if (!isInitialLoad) {\r\n this.editableFilterStorage.save(this.editableFilter).then(() => {\r\n if (_.isFunction(callback)) {\r\n callback();\r\n }\r\n });\r\n }\r\n } else {\r\n this.trigger('editable-filter-applied');\r\n if (_.isFunction(callback)) {\r\n callback();\r\n }\r\n }\r\n }\r\n\r\n setInitialEditableFilter(filter, name) {\r\n this.setEditableFilter(filter, name, true);\r\n }\r\n\r\n createFilterEntity(query, name, id) {\r\n return new FilterEntity(\r\n query,\r\n this.filterEntityOptions,\r\n name,\r\n id\r\n );\r\n }\r\n\r\n // Remove the current applied filter\r\n removeAppliedFilter() {\r\n this.quickFilter = {\r\n key: '',\r\n value: {\r\n query: {},\r\n },\r\n };\r\n this.editableFilter = null;\r\n\r\n this.editableFilterStorage.clean();\r\n this.quickFilterStorage.clean();\r\n\r\n this.trigger('filter-state-changed', {\r\n filter: this.getCombinedFilter(),\r\n }, 'filter-reset');\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__97__;","module.exports = __WEBPACK_EXTERNAL_MODULE__98__;","/* eslint-disable no-param-reassign */\r\nimport _ from 'underscore';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport { FilterEntity } from '@bingads-webui/filter-entity';\r\n\r\nfunction isNullQuery(query) {\r\n return query && _.values(query) && _.isEqual(_.values(query)[0], {\r\n $in: null,\r\n });\r\n}\r\n\r\nfunction mergeQuery(baseQuery, addedQuery) {\r\n let newQuery;\r\n\r\n\r\n if (addedQuery.$and && addedQuery.$and.length > 0) {\r\n addedQuery.$and = _.filter(addedQuery.$and, query => !isNullQuery(query));\r\n } else {\r\n addedQuery = isNullQuery(addedQuery) ? {} : addedQuery;\r\n }\r\n\r\n if (_.isUndefined(baseQuery) || _.isEmpty(baseQuery)) {\r\n newQuery = addedQuery;\r\n } else {\r\n if (_.isUndefined(addedQuery)) {\r\n newQuery = {};\r\n } else {\r\n newQuery = putil.cloneDeep(addedQuery);\r\n }\r\n\r\n if (_.isEmpty(newQuery)) {\r\n newQuery = baseQuery;\r\n } else if (_.has(newQuery, '$and')) {\r\n const and = _.union(newQuery.$and, [baseQuery]);\r\n\r\n newQuery.$and = and;\r\n } else {\r\n newQuery = {\r\n $and: [baseQuery, addedQuery],\r\n };\r\n }\r\n }\r\n return newQuery;\r\n}\r\n\r\nfunction mergeFilterEntity(entities, options) {\r\n if (_.isArray(entities) && !_.isEmpty(entities)) {\r\n const newQuery = _.reduce(\r\n entities,\r\n (memo, entity) => mergeQuery(memo, entity.query), undefined\r\n );\r\n\r\n return new FilterEntity(newQuery, options);\r\n }\r\n return {};\r\n}\r\n\r\nexport { mergeFilterEntity };\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__103__;","export * from './src';\r\n","export * from './focus-lock-instance-decorator';\r\nexport * from './focus-lock-decorator';\r\n","import Backbone from 'backbone';\r\nimport ReactDOM from 'react-dom';\r\nimport React from 'react';\r\nimport { FocusLockBackboneInstanceWrapper } from './focus-lock-backbone-instance-wrapper';\r\n\r\nexport const focusLockInstanceDecorator =\r\n (instance, focusLockOptions, { managed, eventHandlers } = {}) => {\r\n const DecoratedFocusLockView = Backbone.View.extend({\r\n render() {\r\n ReactDOM.render(\r\n (\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 Backbone.View.prototype.remove.call(this);\r\n },\r\n });\r\n\r\n return DecoratedFocusLockView;\r\n };\r\n","/* eslint-disable react/forbid-prop-types */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { FocusLock } from '@bingads-webui-react/focus-lock';\r\nimport { BackboneInstanceWrapper } from '@bingads-webui-react/backbone-instance-wrapper';\r\n\r\nexport const FocusLockBackboneInstanceWrapper = ({\r\n focusLockProps, instance, eventHandlers, managed,\r\n}) => (\r\n \r\n \r\n );\r\n\r\nFocusLockBackboneInstanceWrapper.propTypes = {\r\n focusLockProps: PropTypes.object,\r\n instance: PropTypes.shape({\r\n $el: PropTypes.object.isRequired,\r\n render: PropTypes.func.isRequired,\r\n off: PropTypes.func.isRequired,\r\n once: PropTypes.func.isRequired,\r\n on: PropTypes.func.isRequired,\r\n }).isRequired,\r\n eventHandlers: PropTypes.shape({\r\n once: PropTypes.objectOf(PropTypes.func),\r\n on: PropTypes.objectOf(PropTypes.func),\r\n }),\r\n managed: PropTypes.bool,\r\n};\r\n\r\nFocusLockBackboneInstanceWrapper.defaultProps = {\r\n focusLockProps: {},\r\n eventHandlers: {\r\n once: {},\r\n on: {},\r\n },\r\n managed: false,\r\n};\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__328__;","module.exports = __WEBPACK_EXTERNAL_MODULE__329__;","import Backbone from 'backbone';\r\nimport ReactDOM from 'react-dom';\r\nimport React from 'react';\r\nimport { FocusLockBackboneWrapper } from './focus-lock-backbone-wrapper';\r\n\r\nexport const focusLockDecorator = (View, focusLockOptions) => {\r\n const DecoratedFocusLockView = Backbone.View.extend({\r\n initialize(options) {\r\n this.options = options;\r\n this.eventsToActions = options.eventsToActions;\r\n this.focusLockOptions = focusLockOptions;\r\n },\r\n\r\n render() {\r\n ReactDOM.render(\r\n (\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 Backbone.View.prototype.remove.call(this);\r\n },\r\n });\r\n\r\n return DecoratedFocusLockView;\r\n};\r\n","/* eslint-disable react/forbid-prop-types */\r\nimport React from 'react';\r\nimport { View as BackboneView } from 'backbone';\r\nimport PropTypes from 'prop-types';\r\nimport { FocusLock } from '@bingads-webui-react/focus-lock';\r\nimport { BackboneViewWrapper } from '@bingads-webui-react/backbone-view-wrapper';\r\n\r\nexport const FocusLockBackboneWrapper = ({\r\n focusLockProps, View, viewOptions, eventsToActions,\r\n}) => (\r\n \r\n \r\n );\r\n\r\nFocusLockBackboneWrapper.propTypes = {\r\n focusLockProps: PropTypes.object,\r\n View: PropTypes.oneOfType([BackboneView]).isRequired,\r\n viewOptions: PropTypes.object,\r\n eventsToActions: PropTypes.arrayOf(PropTypes.shape({\r\n event: PropTypes.string.isRequired,\r\n action: PropTypes.func.isRequired,\r\n })),\r\n};\r\n\r\nFocusLockBackboneWrapper.defaultProps = {\r\n focusLockProps: {},\r\n viewOptions: {},\r\n eventsToActions: [],\r\n};\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__332__;","export * from './src/index';\r\n","export * from './CopilotResultView';\r\n","import React from 'react';\r\nimport classnames from 'classnames';\r\nimport _ from 'underscore';\r\nimport { CopilotIcon } from '@bingads-webui-react/copilot-ui-base';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { curlyTemplate } from '@bingads-webui-universal/primitive-utilities';\r\n// @ts-ignore\r\nimport { withSiteMap } from '@bingads-webui-react/with-site-map';\r\n// @ts-ignore\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\n// @ts-ignore\r\nimport { ListSelector } from '@bingads-webui-react/list-selector';\r\nimport { IQuestion } from '@bingads-webui/search-utils';\r\nimport { getSearchQuestionsFromSiteMap, getSearchQuestionsFromQuery } from './utils';\r\n\r\nimport { getCopilotResultViewStyles } from './CopilotResultView.styles';\r\n\r\nconst DEFAULT_SEARCH_RESULT_NUM = 3;\r\nconst COPILOT_SEARCH = 'copilot-search';\r\n\r\nexport interface ICopilotResultViewProps {\r\n classes: any;\r\n i18n: {\r\n getString: (key: string) => string;\r\n };\r\n searchQuery: string;\r\n siteMap: any;\r\n onCopilotClick?: (param: any) => void;\r\n clear?: () => void;\r\n placeholderText?: string;\r\n logger?: {\r\n trace: (param: any) => void;\r\n };\r\n isNewLogo?: boolean;\r\n}\r\n\r\ninterface IResultViewProps {\r\n searchQuery: string;\r\n i18n: any;\r\n clear?: () => void;\r\n placeholderText?: string;\r\n searchActivity?: {\r\n trace: (param: any) => void;\r\n };\r\n}\r\n\r\ninterface ICopilotResultViewState {\r\n copilotResults: IQuestion[];\r\n prevSearchQuery: string,\r\n}\r\n\r\nclass CopilotResultView extends React.PureComponent {\r\n constructor(props: ICopilotResultViewProps) {\r\n super(props);\r\n\r\n this.state = {\r\n copilotResults: getSearchQuestionsFromSiteMap(props.siteMap, props.i18n),\r\n prevSearchQuery: props.searchQuery,\r\n };\r\n }\r\n\r\n static getDerivedStateFromProps(nextProps: ICopilotResultViewProps, prevState: ICopilotResultViewState) {\r\n if (prevState.prevSearchQuery !== nextProps.searchQuery) {\r\n if (nextProps.searchQuery) {\r\n return {\r\n copilotResults: getSearchQuestionsFromQuery(nextProps.searchQuery, nextProps.i18n),\r\n prevSearchQuery: nextProps.searchQuery,\r\n };\r\n }\r\n\r\n return {\r\n copilotResults: getSearchQuestionsFromSiteMap(nextProps.siteMap, nextProps.i18n),\r\n prevSearchQuery: nextProps.searchQuery,\r\n };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n onSelect = (question: Pick, index: number) => {\r\n const customizedEvent = question.text ? {\r\n eventType: 'message',\r\n eventSource: 'globalSearchCopilotResultView',\r\n eventData: {\r\n message: question.text,\r\n },\r\n } : undefined;\r\n\r\n if (this.props.onCopilotClick) {\r\n this.props.onCopilotClick({\r\n customizedEvent,\r\n forceOpen: true,\r\n });\r\n }\r\n\r\n if (this.props.logger) {\r\n this.props.logger.trace({\r\n keyword: question.text,\r\n isSearchResultSelected: true,\r\n selectedItem: COPILOT_SEARCH,\r\n isUserInput: index < 0,\r\n });\r\n }\r\n\r\n const toggleCopilotEvent = new CustomEvent('copilotToggleEvent', {\r\n detail: customizedEvent,\r\n bubbles: true,\r\n cancelable: true,\r\n composed: false,\r\n });\r\n\r\n document.dispatchEvent(toggleCopilotEvent);\r\n\r\n if (this.props.clear) {\r\n this.props.clear();\r\n }\r\n };\r\n\r\n getCopilotListView = () => {\r\n const {\r\n searchQuery,\r\n i18n,\r\n } = this.props;\r\n\r\n const {\r\n renderItem,\r\n renderHeader,\r\n onSelect,\r\n } = this;\r\n\r\n return (\r\n
\r\n renderHeader(searchQuery)}\r\n renderItem={renderItem}\r\n renderDivider={_.noop}\r\n onSelect={onSelect}\r\n data={_.first(this.state.copilotResults, DEFAULT_SEARCH_RESULT_NUM)}\r\n enableArrowKeysSupport\r\n ariaLabel={i18n.getString(_TL_('Copilot result list'))}\r\n />\r\n
\r\n );\r\n };\r\n\r\n renderItem = (question: IQuestion) => {\r\n const { classes } = this.props;\r\n const itemClassName = classnames('copilot-search-result-item-text');\r\n\r\n return (\r\n \r\n
\r\n
\r\n \r\n {question.text}\r\n \r\n
\r\n
\r\n \r\n );\r\n };\r\n\r\n renderHeader = (query: string) => {\r\n const { classes, i18n } = this.props;\r\n const onClick = () => this.onSelect({ text: query }, -1);\r\n const onCopilotKeyDown = (e: any) => { if (e && e.key === 'Enter') { onClick(); } };\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n
\r\n {\r\n query ? (\r\n
\r\n \r\n {query}\r\n \r\n
\r\n ) : (\r\n
\r\n {i18n.getString(this.props.placeholderText || _TL_('Your question will appear here'))}\r\n
\r\n )\r\n }\r\n
{i18n.getString(_TL_('Ask Copilot'))}
\r\n
\r\n {\r\n this.state.copilotResults.length > 0 && (\r\n \r\n
\r\n {i18n.getString(_TL_('You can also ask Copilot:'))}\r\n
\r\n
\r\n )\r\n }\r\n
\r\n );\r\n };\r\n\r\n render() {\r\n const {\r\n classes,\r\n i18n,\r\n searchQuery,\r\n } = this.props;\r\n\r\n const searchResultItemCount = this.state.copilotResults.length;\r\n const emptyText = curlyTemplate(i18n.getString(_TL_('No results found for {{searchText}}')))({\r\n searchText: searchQuery,\r\n });\r\n const resultText = curlyTemplate(i18n.getString(_TL_('Found {{totalCount}} Results for {{searchText}}')))({\r\n totalCount: searchResultItemCount,\r\n searchText: searchQuery,\r\n });\r\n const liveRegionText = searchResultItemCount === 0 ? emptyText : resultText;\r\n\r\n return (\r\n
\r\n {this.getCopilotListView()}\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport const StyledCopilotResultView = withI18nConsumer(withDefaultStyles(withSiteMap(CopilotResultView), getCopilotResultViewStyles));\r\nexport const CopilotResultViewExternalSiteMap = withI18nConsumer(withDefaultStyles(CopilotResultView, getCopilotResultViewStyles));\r\n\r\nexport const renderCopilotSearch = (props: IResultViewProps) => (\r\n \r\n);\r\n\r\nexport const renderCopilotSearchWithCopilot = (onCopilotClick: (param: any) => void, isNewLogo?: boolean) => (props: IResultViewProps) => (\r\n \r\n);\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__356__;","module.exports = __WEBPACK_EXTERNAL_MODULE__357__;","import { searchQuestions, ISiteMapNode, mapCurrentPageToPageGroup } from '@bingads-webui/search-utils';\r\n\r\n// do not show troubleshooting questions in global search or help\r\nconst options = {\r\n isTroubleshootingEnabled: false,\r\n};\r\n\r\nexport function getSearchQuestionsFromSiteMap(siteMap: ISiteMapNode[], i18n: any) {\r\n return searchQuestions(mapCurrentPageToPageGroup(siteMap), i18n, true, options);\r\n}\r\n\r\nexport function getSearchQuestionsFromQuery(query: string, i18n: any) {\r\n return searchQuestions(query, i18n, false, options);\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__359__;","import { tokens } from '@fluentui/react-components';\r\n\r\nexport const getCopilotResultViewStyles = (components: any, { palette = {} as any }: any) => ({\r\n loading: {\r\n backgroundColor: '#f5f9fe',\r\n paddingTop: '6px',\r\n paddingBottom: '6px',\r\n },\r\n searchResultDropDown: {\r\n zIndex: '10',\r\n boxShadow: '0px 0.6px 1.8px rgba(0, 0, 0, 0.108), 0px 3.2px 7.2px rgba(0, 0, 0, 0.132)',\r\n borderRadius: '2px',\r\n borderBottom: 'solid 0.5px',\r\n borderImage: 'linear-gradient(90deg, #464FEB 35%, #47CFFA 70%, #B47CF8 92%) 1',\r\n },\r\n resultHeader: {\r\n height: '42px',\r\n width: '100%',\r\n display: 'flex',\r\n textAlign: 'left',\r\n flexDirection: 'row',\r\n borderWidth: '0px',\r\n paddingTop: '12px',\r\n paddingLeft: '16px',\r\n paddingRight: '11px',\r\n whiteSpace: 'nowrap',\r\n '&:hover': {\r\n cursor: 'pointer',\r\n },\r\n },\r\n resultHeaderContainer: {\r\n backgroundColor: '#f5f9fe',\r\n },\r\n resultHeaderIcon: {\r\n display: 'inline-block',\r\n },\r\n copilotIcon: {\r\n paddingTop: `${tokens.spacingVerticalNone} !important`,\r\n paddingLeft: `${tokens.spacingHorizontalNone} !important`,\r\n paddingRight: `${tokens.spacingHorizontalNone} !important`,\r\n },\r\n resultHeaderSpan: {\r\n display: 'inline-block',\r\n color: '#323130',\r\n flex: '1 1 1px',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n paddingLeft: '8px',\r\n },\r\n resultHeaderPlaceholder: {\r\n display: 'inline-block',\r\n color: '#616161',\r\n flex: '1 1 1px',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n paddingLeft: '8px',\r\n },\r\n resultHeaderLink: {\r\n fontWeight: 600,\r\n border: 'none',\r\n display: 'inline-block',\r\n background: 'none',\r\n color: '#115EA3',\r\n height: '24px',\r\n },\r\n resultHeaderHint: {\r\n height: '42px',\r\n fontWeight: 600,\r\n flex: '1 1 1px',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n paddingTop: '8px',\r\n paddingBottom: '12px',\r\n paddingLeft: '16px',\r\n paddingRight: '5px',\r\n },\r\n searchResultItem: {\r\n height: '42px',\r\n width: '100%',\r\n textAlign: 'left',\r\n borderWidth: '0px',\r\n paddingLeft: '0px',\r\n paddingRight: '0px',\r\n backgroundColor: '#f5f9fe',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n cursor: 'pointer',\r\n color: 'rgba(0, 0, 0, 0)', // Hides the fallback glyph\r\n '& .iconba.iconba-Forward': {\r\n marginRight: 4,\r\n },\r\n },\r\n searchItemContainer: {\r\n height: '42px',\r\n width: '100%',\r\n textAlign: 'left',\r\n borderWidth: '0px',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n paddingTop: '8px',\r\n paddingBottom: '12px',\r\n paddingLeft: '16px',\r\n paddingRight: '5px',\r\n '&:hover': {\r\n color: palette.themePrimary,\r\n },\r\n },\r\n calloutTargetContainer: {\r\n width: '100%',\r\n },\r\n fallbackGlyph: {\r\n fontSize: 16,\r\n float: 'right',\r\n lineHeight: '19px',\r\n color: 'inherit',\r\n },\r\n searchItemSpan: {\r\n display: 'inline-block',\r\n color: '#323130',\r\n flex: '1 1 1px',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n searchItemFooterSpan: {\r\n color: palette.themePrimary,\r\n },\r\n shortcutItem: {\r\n display: 'flex',\r\n color: palette.neutralSecondary,\r\n paddingRight: 6,\r\n },\r\n shortcutKey: {\r\n display: 'inline-block',\r\n border: '1px solid #979797',\r\n borderRadius: 2,\r\n fontSize: 12,\r\n fontWeight: 600,\r\n lineHeight: '16px',\r\n width: 14,\r\n textAlign: 'center',\r\n '&:first-child': {\r\n marginRight: 6,\r\n },\r\n },\r\n});\r\n","import _ from 'underscore';\r\nimport * as $url from '@bingads-webui/url-util';\r\nimport { URLMakeOptions, HTTPOptions, StringDictionary } from '../types';\r\n\r\nexport function host(options: URLMakeOptions) {\r\n return options.host;\r\n // NOFIX:\r\n // return config.has(options.host)? config.get(options.host) : options.host;\r\n}\r\n\r\nexport function path(options: URLMakeOptions) {\r\n return options.path;\r\n // NOFIX:\r\n // return config.has(options.path)? config.get(options.path) : options.path;\r\n}\r\n\r\nexport function fill(url: string, options: URLMakeOptions = {}) {\r\n let ret = url;\r\n let params: StringDictionary = {};\r\n\r\n // NOFIX:\r\n // if (options.use_state !== false) {\r\n // params = state.attributes;\r\n // }\r\n\r\n if (options.params) {\r\n params = _.extend({}, params, options.params);\r\n }\r\n\r\n // try to replace with value from params; otherwise keep as original\r\n ret = url.replace(/:([a-zA-Z_]+)/g, (match: string, key: string) => (_.has(params, key) ? params[key] : match));\r\n\r\n return ret;\r\n}\r\n\r\nexport function expand(url: string, options: URLMakeOptions = {}) {\r\n let ret = url;\r\n const expandOptions = _.defaults(options, {\r\n composeBatchUrl: true,\r\n });\r\n\r\n if (expandOptions.composeBatchUrl && (expandOptions.host && !new RegExp(`^${host(expandOptions)}`).test(ret))) {\r\n ret = $url.join(host(expandOptions) || '', path(expandOptions) || '', ret);\r\n }\r\n\r\n // replace all param placeholders by backbone style slugs\r\n // ex: /Customers()/Accounts()/ becomes /Customers(:customer_id)/Accounts(:account_id)/\r\n ret = ret.replace(/\\/((\\w+?)s?)(\\(\\))/g, (match: string, col: string, type: string) => `/${col}(:${type.toLowerCase()}_id)`);\r\n\r\n return ret;\r\n}\r\n\r\nexport function make(url: string, options: URLMakeOptions) {\r\n return fill(expand(url, options), options);\r\n}\r\n\r\nexport function queryify(url: string, {\r\n method,\r\n data,\r\n customParamSerialize,\r\n urlParameters,\r\n}: HTTPOptions) {\r\n const isGet = !method || method === 'GET';\r\n if (isGet && _.isObject(data)) {\r\n // $.param is not supported by node, so use custom param serialization function\r\n return $url.queryify(url, data, customParamSerialize);\r\n }\r\n\r\n const isPostOrPatch = !method || method === 'POST' || method === 'PATCH';\r\n if (isPostOrPatch && _.isObject(urlParameters)) {\r\n // $.param is not supported by node, so use custom param serialization function\r\n return $url.queryify(url, urlParameters, customParamSerialize);\r\n }\r\n\r\n return url;\r\n}\r\n\r\nexport function getDomain() {\r\n return document.domain;\r\n}\r\n\r\nexport function getProtocol() {\r\n return window.location.protocol;\r\n}\r\n\r\nexport function getPort() {\r\n return window.location.port;\r\n}\r\n","import _ from 'underscore';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport * as core from './core';\r\nimport * as urlUtil from '../util/url';\r\nimport { Args, ODataOptions } from '../types';\r\n\r\nexport default function ajax, TResult>(...args: Args) {\r\n const [url, options, cb] = core.signature(args);\r\n\r\n // NOFIX:\r\n // if (!options.host) {\r\n // options.host = 'odata.url';\r\n // }\r\n\r\n // if (!options.path) {\r\n // options.path = 'odata.path';\r\n // }\r\n\r\n const uri = urlUtil.make(url, {\r\n host: options.host,\r\n path: options.path,\r\n // NOFIX:\r\n // use_state: options.use_state,\r\n params: options.params,\r\n });\r\n\r\n options.beforeSend = <(jqXHR: JQuery.jqXHR, settings: Options) => void>_.wrap(options.beforeSend || _.noop, (func, jqXHR) => {\r\n // All these setRequestHeader logic could be handled by `options.headers`\r\n // These code and related options are deprecated\r\n\r\n // NOFIX:\r\n // var oDataToken = config.get('odata.token');\r\n // NOTICE: oDataToken changed to come from options\r\n const { oDataToken, oDataTokenType } = options;\r\n\r\n if (oDataToken) {\r\n const tokenType = oDataTokenType || 'CCMTSmallToken';\r\n jqXHR.setRequestHeader('Authorization', `${tokenType} ${oDataToken}`);\r\n }\r\n\r\n // NOFIX:\r\n // var loginType = config.get('odata.loginType');\r\n // NOTICE: loginType changed to come from options\r\n const { loginType } = options;\r\n if (loginType) {\r\n jqXHR.setRequestHeader('x-ms-logintype', loginType);\r\n }\r\n\r\n // enable odata annotations by default;\r\n // we use annotations to return aggregates in grid responses\r\n jqXHR.setRequestHeader('Prefer', 'odata.include-annotations=\"*\"');\r\n\r\n const requestId = putil.generateGuid();\r\n jqXHR.setRequestHeader('x-ms-requestid', requestId);\r\n\r\n const { applicationName } = options;\r\n\r\n jqXHR.setRequestHeader('x-ms-applicationname', applicationName || 'bingadsweb');\r\n\r\n const { headers } = options;\r\n // NOFIX:\r\n // var sessionId = _.result(config.get('Omniture'), 'SessionId');\r\n // JFX_SessionId is a secure HttpOnly cookie, inaccessible to client side cookie.\r\n // Changed from cookie to come from options.\r\n const sessionId = options.SessionId;\r\n if (!_.isUndefined(sessionId)) {\r\n jqXHR.setRequestHeader('x-ms-sessionid', sessionId);\r\n } else if (headers && headers['x-ms-sessionid']) {\r\n jqXHR.setRequestHeader('x-ms-sessionid', headers['x-ms-sessionid']);\r\n }\r\n\r\n // NOFIX:\r\n // We could pass in all these from `options.headers`\r\n // var pageContext = config.attributes();\r\n // if (!_.isUndefined(pageContext)) {\r\n // jqXHR.setRequestHeader('x-ms-lcid', pageContext.CultureLcid);\r\n // jqXHR.setRequestHeader('lcid', pageContext.CultureLcid);\r\n // }\r\n\r\n if (options.customHeader) {\r\n jqXHR.setRequestHeader(options.customHeader.name, options.customHeader.value);\r\n }\r\n // call the original func we are wrapping here\r\n if (_.isFunction(func)) {\r\n return func(jqXHR);\r\n }\r\n\r\n return undefined;\r\n });\r\n\r\n options.parse = (err) => err.value;\r\n\r\n // TODO: this logic is specific to Campaign OData\r\n options.i18nErrors = (errs, i18n) => {\r\n if (errs) {\r\n return _.map(errs, (err) => {\r\n let key = `Error_Campaign_API_${err.Code}`;\r\n if (err['@odata.type'] === '#Model.ApiEditorialError') {\r\n key = `Error_Editorial_Raw_${err.Code}`;\r\n }\r\n return i18n.getStringOrDefault(key, i18n.getString('Error: ') + err.Code);\r\n });\r\n }\r\n return [];\r\n };\r\n\r\n if (_.isUndefined(options.contentType)) {\r\n options.contentType = 'application/json';\r\n }\r\n\r\n return core.ajax(uri, options, cb);\r\n}\r\n","import * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport ajax from './odata-core';\r\nimport * as multipart from '../util/multipart';\r\nimport { ODataBatchOptions, Callback, ODataOptions } from '../types';\r\n\r\nexport default function batch(options: ODataBatchOptions, cb: Callback) {\r\n const boundary = putil.generateGuid();\r\n // NOFIX:\r\n // const url = config.get('odata.batch_url');\r\n const url = options.batchURL;\r\n\r\n // NOFIX:\r\n // if (!options.host) {\r\n // options.host = 'odata.url';\r\n // }\r\n\r\n // if (!options.path) {\r\n // options.path = 'odata.path';\r\n // }\r\n\r\n return ajax, string>(url, {\r\n method: 'POST',\r\n data: multipart.generate(options, boundary),\r\n contentType: `multipart/mixed; boundary=\"${boundary}\"`,\r\n dataType: 'text',\r\n host: options.host,\r\n path: options.path,\r\n headers: options.headers,\r\n // NOTICE: oDataToken, loginType, SessionId are deprecated, use headers\r\n }, (err, response, textStatus, xhr) => {\r\n const res = err ? [] : multipart.parse(response);\r\n\r\n if (cb) {\r\n cb(err, res, textStatus, xhr);\r\n }\r\n })\r\n .then(multipart.parse);\r\n}\r\n","import _ from 'underscore';\r\nimport * as safeJSON from '@bingads-webui/safe-json';\r\nimport * as urlUtil from './url';\r\nimport {\r\n ODataBatchOptions, HTTPResponse, HTTPResponses, StringDictionary, StringableDictionary,\r\n} from '../types';\r\n\r\nexport function generate(options: ODataBatchOptions, boundary: string) {\r\n const lines = [];\r\n\r\n _.each(options.reqs, (req) => {\r\n const method = req.type.toUpperCase();\r\n const url = urlUtil.make(req.url, _.extend(options, {\r\n // NOFIX:\r\n // path: 'odata.multipart_path',\r\n path: options.multipartPath,\r\n }));\r\n lines.push(`--${boundary}`);\r\n\r\n // [imang]: the content-type and content-transfer-encoding headers\r\n // must be present for delete reqs inside a batch call\r\n if (method !== 'GET' || options.needContentType /* && method != 'DELETE' */) {\r\n lines.push(`Content-Type: ${req.contentType || 'application/http'}`);\r\n lines.push(`Content-Transfer-Encoding: ${req.contentTransferEncoding || 'binary'}`);\r\n }\r\n\r\n lines.push('', `${method} ${url} HTTP/1.1`);\r\n\r\n // req.headers is used to support all kinds of data headers of every request in batch call body\r\n if (!_.isUndefined(req.headers)) {\r\n // the following is meant to ingnore the specific headers which are already supported by req.dataContentType\r\n // and options.authorization.\r\n // for any other headers, please use req.headers. don't add another specific option to support.\r\n const ignored: string[] = [];\r\n if (!_.isNull(req.data) && !_.isUndefined(req.data)) {\r\n ignored.push('Content-Type');\r\n if (options.authorization) {\r\n ignored.push('Authorization');\r\n }\r\n }\r\n\r\n _.each(req.headers as StringableDictionary, (value, key) => {\r\n if (ignored.indexOf(key) === -1) {\r\n lines.push(`${key}: ${value}`);\r\n }\r\n });\r\n }\r\n\r\n if (!_.isNull(req.data) && !_.isUndefined(req.data)) {\r\n lines.push(`Content-Type: ${req.dataContentType || 'application/json; charset=utf-8'}`);\r\n if (options.authorization) {\r\n lines.push(`Authorization: ${options.authorization}`);\r\n }\r\n lines.push('', JSON.stringify(req.data));\r\n }\r\n\r\n lines.push('\\r\\n');\r\n });\r\n\r\n if (lines.length) {\r\n lines.push(`--${boundary}--`, '');\r\n }\r\n\r\n return lines.join('\\r\\n');\r\n}\r\n\r\nfunction parseHttpResponse(responseString: string) {\r\n const lines = responseString.split(/\\r?\\n/);\r\n const statusLine = lines.shift();\r\n\r\n // parse header lines\r\n const headers: StringDictionary = {};\r\n let headerParts: string[];\r\n let headerLine: string;\r\n let key: string;\r\n\r\n while (lines.length > 0) {\r\n headerLine = lines.shift();\r\n\r\n if (headerLine === '') {\r\n break;\r\n }\r\n\r\n headerParts = headerLine.split(':');\r\n key = headerParts.shift();\r\n\r\n headers[key] = headerParts.join(':').trim();\r\n }\r\n\r\n const response: HTTPResponse = {\r\n headers,\r\n data: safeJSON.parseSync(lines.join('')),\r\n };\r\n\r\n // parse status line\r\n const parts = statusLine.match(/^(.+) ([0-9]{3}) (.*)$/);\r\n\r\n if (parts) {\r\n const [, protocol, status, statusMessage] = parts;\r\n response.protocol = protocol;\r\n response.status = parseInt(status, 10);\r\n response.statusMessage = statusMessage;\r\n }\r\n\r\n return response;\r\n}\r\n\r\nexport function parse(text = '') {\r\n const lines = text.split('\\r\\n');\r\n const boundary = lines[0];\r\n const responses: HTTPResponse[] = [];\r\n let tmp: string[];\r\n let scanStatus = 0;\r\n\r\n _.each(lines, (line) => {\r\n if (line.indexOf(boundary) === 0) {\r\n if (scanStatus === 2) {\r\n responses.push(parseHttpResponse(tmp.join('\\r\\n')));\r\n }\r\n // a new response begin\r\n scanStatus = 1;\r\n tmp = [];\r\n } else if (scanStatus === 1 && line === '') {\r\n // real response begin\r\n scanStatus = 2;\r\n } else if (scanStatus === 2) {\r\n tmp.push(line);\r\n }\r\n });\r\n\r\n const successCodeList = [200, 204];\r\n const statusCounter = _.chain(responses)\r\n .countBy((val) => (_.contains(successCodeList, val.status) ? 'success' : 'failure'))\r\n .defaults({\r\n success: 0,\r\n failure: 0,\r\n })\r\n .value();\r\n\r\n Object.defineProperty(responses, 'statusCounter', {\r\n value: statusCounter,\r\n enumerable: false,\r\n });\r\n\r\n return responses;\r\n}\r\n","import * as odata from './src/channel/odata';\r\nimport * as http from './src/channel/core';\r\nimport * as batchUtil from './src/util/multipart';\r\n\r\nconst httpWithDelete = {\r\n signature: http.signature,\r\n ajax: http.ajax,\r\n defaults: http.defaults,\r\n xhr: http.xhr,\r\n get: http.get,\r\n post: http.post,\r\n put: http.put,\r\n patch: http.patch,\r\n delete: http.$delete,\r\n};\r\n\r\nconst odataWithDelete = {\r\n defaults: odata.defaults,\r\n get: odata.get,\r\n post: odata.post,\r\n put: odata.put,\r\n patch: odata.patch,\r\n delete: odata.$delete,\r\n ajax: odata.ajax,\r\n batch: odata.batch,\r\n upload: odata.upload,\r\n};\r\n\r\nexport {\r\n httpWithDelete as http,\r\n odataWithDelete as odata,\r\n batchUtil,\r\n};\r\n","import _ from 'underscore';\r\nimport * as core from './core';\r\nimport ajax from './odata-core';\r\nimport batch from './odata-batch';\r\nimport {\r\n Args, ODataOptions, ODataUploadOptions, ODataMethod,\r\n} from '../types';\r\n\r\nexport function defaults(defaultOptions: ODataOptions): ODataMethod {\r\n return , TResult>(...args: Args) => {\r\n const [url, options, cb] = core.signature(args);\r\n\r\n const op = _.defaults({}, options, defaultOptions);\r\n\r\n return ajax(url, op, cb);\r\n };\r\n}\r\n\r\nexport const get = defaults({ method: 'GET' });\r\nexport const put = defaults({ method: 'PUT' });\r\nexport const patch = defaults({ method: 'PATCH' });\r\nexport const $delete = defaults({ method: 'DELETE' });\r\nexport { ajax, batch };\r\n\r\nexport function post, TResult>(...args: Args) {\r\n const [url, options, cb] = core.signature(args);\r\n\r\n const op = _.defaults({}, options, {\r\n method: 'POST',\r\n xhr() {\r\n const xhr = core.xhr();\r\n\r\n if (options.progress && xhr.upload) {\r\n xhr.upload.addEventListener('progress', options.progress, false);\r\n }\r\n\r\n return xhr;\r\n },\r\n });\r\n\r\n return ajax(url, op, cb);\r\n}\r\n\r\n// upload using FormData with content-type multipart/form-data.\r\n// FormData is not avaiable until IE 10.\r\nexport function upload, TResult>(...args: Args) {\r\n const [url, options, cb] = core.signature(args);\r\n\r\n const op = _.defaults({}, options, {\r\n data: new FormData(),\r\n contentType: false,\r\n processData: false,\r\n });\r\n\r\n op.data.append('file', options.file);\r\n\r\n return post(url, op, cb);\r\n}\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport Promise from 'bluebird';\r\nimport * as safeJSON from '@bingads-webui/safe-json';\r\nimport { queryify } from '../util/url';\r\nimport {\r\n HTTPOptions, Args, Signature, Callback, StringDictionary, ErrorDetails, ExtraInfo, HTTPMethod,\r\n} from '../types';\r\n\r\nconst defaultOptions: HTTPOptions = {\r\n contentType: 'application/json',\r\n dataType: 'json',\r\n cache: false,\r\n type: 'GET',\r\n};\r\n\r\nfunction getResponseHeaders(xhrObject: JQueryXHR): StringDictionary {\r\n const ret: StringDictionary = {};\r\n\r\n const str = xhrObject.getAllResponseHeaders();\r\n const arr = str && str.split('\\r\\n');\r\n const reg = /^([^:]*): (.*)$/;\r\n\r\n _.each(arr, (header) => {\r\n // sample header: 'key: value'\r\n const matches = header.match(reg);\r\n if (matches) {\r\n const [, key, value] = matches;\r\n ret[key] = value;\r\n }\r\n });\r\n\r\n return ret;\r\n}\r\n\r\nfunction stringify(data: any, { method, contentType }: HTTPOptions) : undefined | string {\r\n if (!method || method === 'GET') {\r\n return undefined;\r\n }\r\n\r\n if (!_.isString(data) && contentType === 'application/json') {\r\n return JSON.stringify(data);\r\n }\r\n\r\n return data;\r\n}\r\n\r\nexport function signature, TResult>(...originalArgs: Args | [Args] | [IArguments]): Signature {\r\n let arg = >originalArgs;\r\n if (_.isArray(originalArgs[0])) {\r\n [arg] = originalArgs;\r\n } else if (_.isArguments(originalArgs[0])) {\r\n arg = >_.toArray(originalArgs[0]);\r\n }\r\n\r\n const [first, second, third] = arg;\r\n\r\n if (_.isObject(first)) {\r\n // options is first arg\r\n return [\r\n (first).uri || (first).url || '',\r\n first,\r\n second,\r\n ];\r\n } if (_.isFunction(second)) {\r\n // url is string, but options is omited\r\n return [\r\n first,\r\n {},\r\n second,\r\n ];\r\n }\r\n\r\n return [\r\n first,\r\n second,\r\n third,\r\n ];\r\n}\r\n\r\nexport function ajax, TResult>(...args: Args) {\r\n const [url, {\r\n customAjax,\r\n method,\r\n xhrFields,\r\n success,\r\n error,\r\n data,\r\n customParamSerialize,\r\n urlParameters,\r\n contentType,\r\n dataType,\r\n converters,\r\n cache,\r\n beforeSend,\r\n complete,\r\n bypassAjaxLogging,\r\n processData,\r\n xhr: xhrOption,\r\n parse,\r\n i18nErrors,\r\n headers,\r\n timeout,\r\n }, cb] = signature(args);\r\n const ajaxFunc = customAjax || $.ajax;\r\n\r\n // todo handle upper case method\r\n const $op = _.defaults({\r\n type: method ? method.toUpperCase() : undefined,\r\n xhrFields: {\r\n withCredentials: xhrFields && xhrFields.withCredentials,\r\n responseType: xhrFields && xhrFields.responseType,\r\n },\r\n success(response: any, textStatus: JQuery.Ajax.SuccessTextStatus, xhrObject: JQuery.jqXHR) {\r\n if (success) {\r\n success(response, textStatus, xhrObject);\r\n }\r\n\r\n if (cb) {\r\n cb(null, response, textStatus, xhrObject);\r\n }\r\n },\r\n error(xhrObject: JQuery.jqXHR, textStatus: JQuery.Ajax.ErrorTextStatus, errorThrown: string) {\r\n // NOFIX:\r\n // If you need this logic, you should wrap options.error to add this in your code\r\n // if (xhr && xhr.status === 401) {\r\n // state.trigger('http.auth.error');\r\n // }\r\n\r\n if (error) {\r\n error(xhrObject, textStatus, errorThrown);\r\n }\r\n\r\n const details: ErrorDetails = {\r\n xhr: xhrObject,\r\n textStatus,\r\n error: errorThrown,\r\n headers: getResponseHeaders(xhrObject),\r\n };\r\n\r\n safeJSON.parse(xhrObject.responseText, (err, res) => {\r\n if (err) {\r\n if (cb) {\r\n cb(_.extend(new Error('could not parse error'), details));\r\n }\r\n return;\r\n }\r\n\r\n details.body = res;\r\n\r\n if ($op.parse) {\r\n details.errors = $op.parse(res);\r\n }\r\n\r\n if ($op.i18nErrors && details.errors) {\r\n details.i18nErrors = $op.i18nErrors;\r\n }\r\n\r\n if (cb) {\r\n cb(details);\r\n }\r\n });\r\n },\r\n }, {\r\n contentType,\r\n dataType,\r\n converters,\r\n cache,\r\n beforeSend,\r\n complete,\r\n bypassAjaxLogging,\r\n processData,\r\n xhr: xhrOption,\r\n parse,\r\n i18nErrors,\r\n headers,\r\n timeout,\r\n }, defaultOptions);\r\n\r\n $op.url = queryify(url, {\r\n method,\r\n data,\r\n customParamSerialize,\r\n urlParameters,\r\n });\r\n $op.data = stringify(data, { method, contentType });\r\n\r\n return Promise\r\n .resolve(ajaxFunc($op))\r\n .catch((err: JQuery.jqXHR) => {\r\n const extraInfo: ExtraInfo = {\r\n body: safeJSON.parseSync(err.responseText),\r\n headers: getResponseHeaders(err),\r\n };\r\n\r\n if ($op.parse && extraInfo.body) {\r\n extraInfo.errors = $op.parse(extraInfo.body);\r\n }\r\n\r\n if ($op.i18nErrors && extraInfo.errors) {\r\n extraInfo.i18nErrors = $op.i18nErrors;\r\n }\r\n\r\n // TODO: this error increase noise in logging errors, and will revert this behavior for now\r\n // We are adding some extra logging to determine the extent of readyState=0 errors\r\n // if (err && err.readyState === 0) {\r\n // setTimeout(() => {\r\n // // eslint-disable-next-line\r\n // throw new Error(`http-util: readyState=0 fail. type: ${$op && $op.type} url: ${$op && $op.url}`);\r\n // }, 1);\r\n // }\r\n\r\n throw _.extend(err, extraInfo);\r\n });\r\n}\r\n\r\nexport function defaults(defaultOps: HTTPOptions): HTTPMethod {\r\n return function wrappedAjax, TResult>(...originalArgs: Args) {\r\n const [url, options, cb] = signature(originalArgs);\r\n\r\n const op = _.defaults({}, options, defaultOps);\r\n\r\n return ajax(url, op, cb);\r\n };\r\n}\r\n\r\nexport function xhr() {\r\n return ($.ajaxSettings.xhr)();\r\n}\r\n\r\nexport const get = defaults({ method: 'GET' });\r\nexport const post = defaults({ method: 'POST' });\r\nexport const put = defaults({ method: 'PUT' });\r\nexport const patch = defaults({ method: 'PATCH' });\r\n// delete is a reserved keyword\r\nexport const $delete = defaults({ method: 'DELETE' });\r\n"],"names":["factory","self","installedModules","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","createCookie","configs","cName","cValue","expires","path","domain","secure","encode","samesite","encodeURIComponent","toUTCString","filter","item","join","document","cookie","skipDecode","ARRcookies","split","length","x","substr","indexOf","y","replace","decodeURIComponent","localeMap","I18nModel","constructor","translationData","locale","bingAdsI18n","currencyCode","this","translationDataLocale","getTranslationDataLocale","language","getLocale","getString","model","str","isEmpty","template","compiled","getDateFormats","formatCurrency","number","currency","options","formatCivilDate","dateObject","formatDate","date","formatDecimal","formatDecimalToFixed","formatPercent","parseCivilDate","dateParser","DEFAULT_LOCALE","I18nContext","useI18nContext","useContext","I18nProvider","memo","props","children","translatedStrings","i18nModel","useMemo","Provider","withI18nProvider","Component","displayName","__WEBPACK_EXTERNAL_MODULE__5__","__WEBPACK_EXTERNAL_MODULE__8__","__WEBPACK_EXTERNAL_MODULE__15__","__WEBPACK_EXTERNAL_MODULE__16__","__WEBPACK_EXTERNAL_MODULE__19__","__WEBPACK_EXTERNAL_MODULE__27__","__WEBPACK_EXTERNAL_MODULE__44__","__WEBPACK_EXTERNAL_MODULE__78__","__WEBPACK_EXTERNAL_MODULE__104__","__WEBPACK_EXTERNAL_MODULE__126__","InsightsPanel","replyToId","TimeZone","dateRange","dateFormat","logger","onFeedbackButtonClick","i18n","change","changeLayout","LayoutContext","setHasData","useState","fluctuationSummaryMessage","fluctuationResult","useFluctuationsMessage","headerText","isSingleCampaign","Name","campaignName","Parameters","CampaignName","panelClasses","usePanelStyles","closePanel","useCallback","overlay","Mode","Hidden","content","useEffect","prevHasData","setTimeout","Card","className","mergeClasses","root","size","CardHeader","header","Subtitle1","Tooltip","relationship","Button","appearance","icon","Info16Regular","action","DismissRegular","onClick","Fluctuations","__WEBPACK_EXTERNAL_MODULE__143__","makeStyles","maxWidth","maxHeight","shorthands","padding","tokens","spacingVerticalXXL","spacingHorizontalXXL","display","alignItems","justifyContent","useStyles","fluctuationContent","flexWrap","gap","overflowY","overflowX","height","fluctuationChartContainer","flex","paddingRight","spacingVerticalS","flexDirection","fluctuationHeader","carouselControl","marginLeft","summaryContainer","backgroundColor","colorNeutralBackground2","borderRadius","borderRadiusMedium","pageNumber","setPageNumber","fluctuationsChartData","isCompleted","pageCount","isArray","Result","fluctuations","classes","title","fluctuation","metric","metricType","changeDirection","shiftDirection","parsedDate","raw","parser","shiftStartDate","curlyTemplate","getTitle","isLoading","shouldRenderNavigation","trace","Body1Strong","page","ChevronLeftRegular","disabled","ChevronRightRegular","InsightsChart","performanceTimeSeries","Summary","message","__WEBPACK_EXTERNAL_MODULE__146__","activities","useAdsCopilotContext","performanceTimeSeriesResult","activity","type","PluginContext","find","pluginResult","getFluctuationsChartData","StreamingStatus","performanceTimeSeriesMap","reduce","acc","metricName","buildDates","startDate","matchingMetricTypes","keys","metricValue","fluctuatedDateIndex","findIndex","dateTime","minIndex","Math","max","maxIndex","min","range","map","index","DateTime","Value","Fluctuate","createDataPoint","UniqueId","MetricName","DataPoints","Impression","Click","Conversion","spacingVerticalL","spacingHorizontalL","block","divider","margin","spacingVerticalMNudge","button","marginTop","link","width","linkIcon","flexShrink","footer","blocker","minHeight","borderRadiusCircular","border","borderLeftColor","colorBrandForeground1","borderRightColor","colorBrandBackgroundInvertedHover","borderTopColor","borderBottomColor","marginRight","spacingHorizontalS","animationIterationCount","animationDuration","animationName","to","transform","campaignTypeFilter","Data","query","campaignStatusFilter","styles","preferenceService","PreferenceContext","savingPreference","setSavingPreference","onFeedbackButtonClickCb","data","prevFeedback","currentFeedback","handleLogButtonClickFeedback","scope","ScopeContext","getChangeHistoryUrl","cid","values","params","URLSearchParams","append","accountId","campaignId","window","location","origin","toString","text","Divider","UiBlocker","blocking","loadingText","blockerIndicator","Body1","saveCampaignType","Promise","resolve","setAtUserLevel","then","Id","onRemoteSyncDone","saveCampaignStatus","saveDateRange","selectedRange","start","dateString","end","shiftEndDate","dateRangePreferenceData","generateDateData","rangeType","rangeId","rangeIndex","rangeDays","getDaysOfARange","Rangelcid","e","all","finally","open","Open20Regular","role","as","Link20Regular","target","href","FeedbackButtons","onFeedbackChange","ariaHiddenWhileLoading","CopyButton","messageText","__WEBPACK_EXTERNAL_MODULE__150__","__WEBPACK_EXTERNAL_MODULE__151__","__WEBPACK_EXTERNAL_MODULE__152__","__WEBPACK_EXTERNAL_MODULE__153__","paddingLeft","preview","lineHeightBase200","isPreview","FluctuationsChart","__WEBPACK_EXTERNAL_MODULE__156__","InsightsPanelLoaderInternal","i18nProviderProps","InsightsPanelLoader","withI18nConsumer","__WEBPACK_EXTERNAL_MODULE__158__","useInsightsButtonStyles","paddingTop","spacingVerticalXXS","paddingBottom","spacingHorizontalXS","fontWeight","fontWeightRegular","fontSize","fontSizeBase200","textAlign","borderWidth","copilotIcon","label","permissions","PermissionsContext","CopilotIcon","color","iconStyles","__WEBPACK_EXTERNAL_MODULE__161__","SummarizePluginRenderer","getCampaigns","onMissingParamsSubmit","isCustomizedEventBusy","isReportingInsights15Enabled","any","Status","InsightsMissingParams","pluginName","PluginScenarios","Summarize","AIMessage","showDataDisclaimer","InsightsSummarizeMessage","canRender","Features","feature","PluginFunctions","SummarizeCampaignPerformance","isFluctuationsMessageSent","setIsFluctuationsMessageSent","useInsightsSummarizeMessageStyles","hasNoData","shouldSendFluctuationsTriggerMessage","summarizeMessage","summarizePluginResult","useSummarizeMessage","parseDate","convertISOToDate","sanitizeDateFromSummarizePlugin","startDateString","StartDate","endDateString","EndDate","minStartDate","Date","now","startDateFromParameters","endDate","customEvent","CopilotToggleCustomEvent","detail","eventType","eventSource","eventData","isHidden","dispatchEvent","summarizeText","InsightsSummarizePluginResult","summarizeEvent","newSummarizeMessage","newSummarizeEvent","isSummarizeMessageFromButtonClick","NO_DATA_STATUS","activityTimestampMs","timestamp","getTime","parseInt","MAX_AGE_FOR_TRIGGER_IN_MS","perfMetrics","useNormalizedPerfMetrics","accountCurrency","comparisonPeriod","getComparisonDatePeriod","SingleResult","impressions","currentValue","impact","percentShift","clicks","ctr","spend","conversions","cpa","roas","averageCPC","averageCPM","impressionShare","uniqueReach","averageCPV","videoViews","videoCompletionRate","videoViewsAt25Percent","videoViewsAt50Percent","videoViewsAt75Percent","installs","downloads","averageCPI","formattedContent","undefined","maximumFractionDigits","minimumFractionDigits","formattedPercentShift","Number","isFinite","withSign","isNumber","timeZone","result","comparisonStartDate","comparisonEndDate","perfMetricsWithComparisonData","impressionCount","clickCount","conversionCount","marginBottom","spacingVerticalXL","colorPaletteGreenBackground3","match","summarizePluginDatePattern","year","month","day","padStart","Error","cardText","onSave","_event","tlText","CampaignFluctuation","selectedCampaign","CampaignAndDateSelector","showCampaignSelector","showDateSelector","useFluctuationsStyles","FluctuationsPluginRenderer","onFullInsightsClick","onReferenceClick","handleFullInsightsClick","ev","getEligibleCampaigns","act","parsedDetail","JSON","parse","eligibleCampaigns","id","noEligibleCampaignsMessage","missingParamsActivity","showCopyButton","showFeedback","features","GetAccountFluctuations","GetCampaignFluctuations","showReferences","InsightsPanelPreview","AccountFluctuation","PerformanceTimeSeries","useInsightsPanelPreviewStyles","dateObj","isDecrease","tlKey","top","chart","chartHeader","summary","summaryContent","forceInline","goFullButton","ArrowCircleRight20Regular","chartAndSummaryCommonStyles","colorNeutralBackground1","colorNeutralBackground3","boxShadow","shadow2","spacingVerticalXS","opacity","backdropFilter","typographyStyles","caption1Strong","fontWeightSemibold","lineHeight","peg$SyntaxError","expected","found","captureStackTrace","child","parent","ctor","peg$subclass","buildMessage","DESCRIBE_EXPECTATION_FNS","literal","expectation","literalEscape","escapedParts","parts","Array","classEscape","inverted","other","description","hex","ch","charCodeAt","toUpperCase","j","descriptions","sort","slice","describeExpected","describeFound","SyntaxError","input","peg$result","peg$FAILED","peg$startRuleFunctions","Expression","peg$parseExpression","peg$startRuleFunction","peg$c0","node","peg$c1","peg$c2","peg$literalExpectation","peg$c3","peg$c4","peg$c5","nextOperation","curr","list","stripped","v","operator","left","right","ExprNode","peg$c6","peg$c7","peg$c8","peg$c9","peg$c10","isNegative","negateResult","negateNode","peg$c11","peg$c12","peg$classExpectation","peg$c13","peg$c14","peg$c15","numberString","parseFloat","flattenToString","peg$c16","peg$c17","peg$c18","peg$c19","peg$c20","segment","segments","ColumnNode","peg$c21","peg$c22","peg$c23","peg$c24","peg$c25","peg$c26","peg$c27","peg$c28","peg$c29","peg$c30","ColumnNodeSegments","peg$c31","peg$c32","peg$c33","peg$c34","peg$c35","peg$c36","peg$otherExpectation","peg$c37","peg$c38","peg$currPos","peg$posDetailsCache","line","column","peg$maxFailPos","peg$maxFailExpected","peg$silentFails","startRule","ignoreCase","peg$computePosDetails","pos","details","peg$computeLocation","startPos","endPos","startPosDetails","endPosDetails","offset","peg$fail","push","peg$buildStructuredError","s0","s2","peg$parse_","s1","s3","s4","s5","s6","s7","peg$parseMultiplicativeExpr","peg$parseAdditiveExpr","peg$parseValue","peg$parseConstant","peg$parseCustomColumn","peg$parseMinus","peg$parseLParen","peg$parseRParen","test","charAt","peg$parseColumnName","s8","s9","peg$parseSegmentInfo","arr","flat","toFlatten","concat","metricCategories","segmentCategories","parserEngine","validMetrics","_","flatten","metrics","pluck","isValidSegment","category","selectionsText","segmentConfig","findWhere","validSegments","selections","first","intersection","getColumnValidationErrors","errors","contains","cause","offender","expression","parseTree","isValid","Boolean","__WEBPACK_EXTERNAL_MODULE__199__","allMetrics","each","Metrics","Clicks","Impressions","CTR","AverageCPC","AverageCPM","Spend","TotalSpend","CPA","PartialConversionCPA","Conversions","ConversionsCredit","ConversionRate","PartialConversionRate","AdvertiserReportedRevenue","RevenueOnAdSpend","defaultPerformanceMetrics","defaultConversionsMetrics","MetricCategory","titleKey","PerformanceCategory","ConversionsCategory","convMetrics","segCategories","allSegments","segCategory","Computer","SmartPhone","Tablet","BingAndYahooSearch","AOLSearch","BingAndYahooSearchTop","BingAndYahooSearchOther","AOLSearchTop","AOLSearchOther","schemaName","accountMetricCategoriesFactory","campaignMetricCategoriesFactory","adGroupMetricCategoriesFactory","adsMetricCategoriesFactory","keywordMetricCategoriesFactory","searchTermMetricCategoriesFactory","supportedMetrics","getAllMetrics","supportedSegments","getAllSegments","usedMetrics","usedSegments","clause","regMetric","groups","matchedMetric","uniq","getUsedMetricsAndSegments","chain","difference","enabled","DEFAULTS","MetricCategories","getConversionMetrics","dynamic","combine","IsPartialConversionsEnabled","PartialConversions","ColumnConversion","newMetrics","oldMetrics","addedMetrics","adExtensionMetricCategories","DatePicker","minDate","maxDate","selectedDate","ariaLabel","navigateToFutureAriaLabel","navigateToPastAriaLabel","dateRangeErrors","validateDateRange","set","getState","attributes","animation","event","newDate","sender","silent","trigger","getDate","datePicker","dateView","div","click","stopPropagation","calendar","setOptions","_prevArrow","attr","_nextArrow","empty","$el","html","datePickerElement","$","kendoDatePicker","getKendoOptions","removeAttr","hide","destroy","keyCode","Enter","Space","preventDefault","handleKeyDown","DeterministicView","__WEBPACK_EXTERNAL_MODULE__3__","__WEBPACK_EXTERNAL_MODULE__4__","pug","require","locals","pug_html","locals_for_with","__WEBPACK_EXTERNAL_MODULE__17__","promise","onDelay","offDelay","on","logDebug","resolveOffDelayPromise","offDelayPromise","off","onTimerFired","debugId","sharedDebugId","onTimerId","clearTimeout","setup","view","patch","isFunction","setState","extend","ref","viewFactory","events","childView","getChild","__factory","constructs","getFactory","Factory","setFactory","handler","handlerFunction","isString","listenTo","setChild","defaultRenderEngine","RenderEngine","EMPTY_TEMPLATE","FORBIDDEN_OPTIONS","BaseView","has","ModelConstructor","Model","Backbone","defaults","renderEngine","scheduleRenderView","state","toJSON","renderTrunk","render","renderView","__WEBPACK_EXTERNAL_MODULE__10__","eventEmitter","animationFrame","renderQueue","Set","getParent","el","parentNode","elTemp","createElement","appendTo","placeholders","dataset","getChildrenRefs","elNew","elOld","replaceChild","remove","removeChild","frame","views","forEach","renderInSync","add","requestAnimationFrame","renderFrame","focus","activeElement","getViewForElement","focusId","selFocus","stringify","elFocus","DeterministicWrapperView","rendered","DeterministicViewForHtml","DeterministicViewForBackBoneView","Dialog","View","initialize","backdrop","keyboard","showHeader","showBody","showCloseButton","contentView","isBoolean","dialogId","uniqueId","buttonClicked","setContent","buttons","show","modal","super","pug_interp","escape","$$obj","pug_index0","$$l","cls","class","dialogOptions","applyIfExists","setPosition","position","center","autoFocus","windowDefaults","kendoWindow","wrapper","addClass","titleHeadingLevel","closeButton","closeButtonAriaLabel","element","dialogClasses","zindex","css","popupFront","topzindex","kwindow","koverlay","close","resizable","visible","func","context","args","parameters","toArray","apply","__WEBPACK_EXTERNAL_MODULE__268__","__WEBPACK_EXTERNAL_MODULE__34__","__WEBPACK_EXTERNAL_MODULE__43__","Comp","iframeDownloadWithMonitoring","useIframeDownload","iframeDownload","ifm","url","statusHandler","style","timer","setInterval","iframeDoc","contentDocument","contentWindow","readyState","clearInterval","body","appendChild","src","InstrumentationContext","createScenarioAndActivity","scenarioName","activityName","status","err","error","__WEBPACK_EXTERNAL_MODULE__32__","fileName","filename","xhr","XMLHttpRequest","responseType","onload","downloadifyBlob","response","send","blob","navigator","msSaveBlob","downloadInIEBrowser","downloadLink","download","URL","createObjectURL","downloadInOtherBrowsers","Blob","__WEBPACK_EXTERNAL_MODULE__178__","updateView","helpers","ensureChildView","KEYS","SpaceBar","ArrowUp","ArrowDown","ArrowRight","rotate","contents","indexFrom","indexTo","tempState","contentsToUse","indexFromToUse","indexToToUse","DraggableListViewModel","draggingTo","ko","observable","DraggableList","KnockoutView","itemViewFactory","afterDrop","noop","getAnnouncement","restoreScrollBarPosition","documentDragoverScrollCallback","ViewModel","DraggableListTemplate","lockedItems","draggableItems","config","lockedItemsLength","draggableItemsLength","viewModel","times","domRect","querySelector","getBoundingClientRect","mousePageY","pageY","scrollTop","scrollY","documentElement","elementPageTop","elementPageBottom","bottom","scrollStart","scrollStop","onDragstart","originalEvent","dataTransfer","setData","scrollDetectStart","isDragging","onDragover","targetItem","closest","onDrop","moveFocusTo","onDragEnd","scrollDetectStop","onMouseDown","currentTarget","removeClass","scroll","scrollBy","intervalMilliSecond","scrollTimerId","timerId","addEventListener","removeEventListener","onKeyDown","acceptableKeysReg","RegExp","triggerKey","hasClass","defer","announce","positionFrom","positionTo","getListItems","eq","onFocusRequestFromChildren","selected","items","itemFrom","itemTo","__WEBPACK_EXTERNAL_MODULE__61__","__WEBPACK_EXTERNAL_MODULE__81__","edm","ServiceRoot","AccountID","AdvertiserCustomerID","bulkUpsertSchema","processOptions","identity","getUrl","prefix","getCast","invalidateCache","entityName","ids","skipEntityCallPaths","invalidateTypeCache","checkParsedResult","reject","entity","bSchema","merge","schema","schemas","defineConstProperty","ResourceIdentifier","resourceIdentifiers","bulkUpdate","attrs","batch","isUndefined","reqs","param","csvRows","serialize","CsvRows","odata","responses","results","populateIds","parsedResponse","processResponse","toSerialize","getAttrsToSerialize","post","res","ret","hasReadOnlyFields","properties","bulkUpdateMany","idList","attrsList","attrsListWithIds","extractEntityErrors","bulkCreate","bulkCreateMany","bulkDestroy","buildDestroyObject","parentId","getSkipEntityCallPaths","cast","__WEBPACK_EXTERNAL_MODULE__39__","__WEBPACK_EXTERNAL_MODULE__40__","__WEBPACK_EXTERNAL_MODULE__41__","__WEBPACK_EXTERNAL_MODULE__42__","ENTITY_PATH_ENUM","entityPath","includes","__WEBPACK_EXTERNAL_MODULE__47__","__WEBPACK_EXTERNAL_MODULE__48__","types","oneOfTypes","Map","Registry","Type","createType","PrimitiveType","createPrimitiveType","OneOfType","typeNames","oneOfTypeName","typeName","resolveType","namespace","sortedNames","resolveQualifiedName","ONEOF_TYPE_PREFIX","createResolveType","Property","createProperty","Parameter","createParameter","ObjectType","baseTypeName","compileProperties","defineProducedProperty","addProperties","CollectionType","createCollectionType","defineProducedPropertyOnClass","elementTypeName","CallableType","returnTypeName","compileParameters","baseType","keyProperty","getSchemaBaseType","$$ODataExtension","clrTypeBase","BaseType","getSchemaKey","Key","EntityType","ComplexType","getSchemaFullName","$ref","getQualifiedName","getSchemaName","getTypeName","dependencies","typeInfo","collectionTypeName","oneOf","string","String","integer","datetime","boolean","null","jsType","defineSchemaType","qualifiedName","navigationPropertyNames","pick","propertyName","addNavigationProperties","callableName","getSchemaBaseTypeName","getSchemaNavigationPropertyNames","NavigationProperty","ActionType","FunctionType","possiblePath","$$ref","enum","defineCallableOnType","acts","funcs","forEntityType","actions","functions","getCallableTypeName","mapObject","parameter","ReturnType","entityActions","entityFunctions","collCallable","Action","Function","collectionType","jsdata","store","JSData","DS","cacheResponse","schemator","Schemator","resources","defineResource","edmRootResourceIdentifier","definitions","navigation","source","elementType","entitySet","__WEBPACK_EXTERNAL_MODULE__68__","__WEBPACK_EXTERNAL_MODULE__69__","resource","idAttribute","findKey","prop","getSchema","defineSchema","propertySchema","obj","toSimpleHash","definePropertiesType","getDataType","defineDataType","defineType","rootURL","processError","odataRootURL","rethrowError","resIdsPlugin","Navigation","getCollection","count","odataURL","$top","$count","catch","getItem","findAll","limit","__WEBPACK_EXTERNAL_MODULE__84__","__WEBPACK_EXTERNAL_MODULE__60__","dependants","wrapODataMethod","method","odataCachePlugin","fetchEntity","select","parseSelect","patchEntity","update","urlParameters","createEntity","collectionResource","deleteEntity","delete","fetchCollection","skip","orderby","search","others","$skip","parseOrderBy","parseFilter","parseSearch","payload","parseTop","parseSkip","parseCount","getEntity","postEntity","destroyEntityAsPromise","entityAction","collectionAction","CollectionResourceIdentifier","hardResetData","bypassCache","destroyAsPromise","$_callableMakeCall","$makeCall","functionParams","$call","orderBy","toPromise","legacyJsDataResultProcess","$withKey","$orderby","toLowerCase","lowerCaseOrderValue","where","$filter","parsed","$select","$expand","$search","entityDeps","collectionCache","ObservableCache","cacheEvent","CacheEvent","entityCache","invalidateEntityCache","stringifiedOptions","forAll","observedCache","invalidateObservedCache","invalidateObservedCacheById","noObservers","entries","parsedId","invalidateNoObserverCache","invalidate","invalidateCollectionCache","notify","hardResetCacheData","idOrPath","cacheKeyPath","newItem","EntityCacheItem","fetch","tap","afterSubscribe","cache","observerAdded","afterUnsubscribe","observerReduced","entityPromise","resourcePromise","fetchFirstCalledAndPatchNotCalled","CollectionCacheItem","__WEBPACK_EXTERNAL_MODULE__75__","makeCall","observers","CacheItem","Observable","observer","next","hasObservers","PatchEntityCacheItem","patchEntityCacheItem","originalStatus","subscribe","__WEBPACK_EXTERNAL_MODULE__77__","TimeAwareCache","ttl","DEFAULT_TTL","strategy","LRUReplacementStrategy","CACHE_SIZE","del","deletePropertyPath","clearCacheKeys","cacheItems","subKey","cacheItem","__WEBPACK_EXTERNAL_MODULE__79__","ob","createNavigation","PropertyNavigation","toSelfJSON","defineOn","TypeResID","CastNavigation","createCastNavigation","WithKeyNavigation","createWithKeyNavigation","CallNavigation","createCallNavigation","createResourceIdentifier","resourceIdentifierForType","Base","AccessorType","register","ObjectTypeResID","CollectionTypeResID","CallableTypeResID","def","navigationProperties","CallableNavigation","callable","defineCallableOn","resID","callableTypes","DefaultBase","postfix","COLLECTION_TYPE_POSTFIX","removePostfix","prefixLength","getNamespace","getShortName","Superclass","navigationName","entityType","ignoreKeyTypeInPath","urlUtil","keyType","returnType","identifyEntitySet","json","instrumentation","init","instr","createLogger","createActivity","ExpLogger","expLoggerScenario","addScenario","expLogger","getScenario","sendLog","scenario","setting","log","flight","Version","Experiment","Flight","FilePicker","isNative","allowedFileExtensions","validateFileExtensionsFailedMessage","validator","displayFilePath","enableMultiple","useButton","getFileObject","fileObject","getFileObjects","fileObjects","fileInputCssId","acceptString","applyBindings","filePath","files","removeFile","triggerFileInputClick","addExternalValidationErrors","msg","hasErrors","validatorDecorator","reasonText","file","returnedError","ext","observableArray","computed","fullPath","full","onInputChange","handleInputChange","newFilePath","resetStatus","validatingPromiseArr","validateExtension","validateFile","reason","validationDidFail","extensionValidator","extension","extname","__WEBPACK_EXTERNAL_MODULE__309__","FilterAgent","filterService","FilterService","entitySchema","localize","schemaI18n","filterMenuAgent","FilterMenuAgent","filterBarAgent","FilterBarAgent","Events","setupToolbar","filterEditorAgent","FilterEditorAgent","isNewFilter","showFilterEditor","hideFilterEditor","refresh","p$Initialized","editableFilter","quickFilter","selectorFilterAgent","SelectorFilterAgent","showFilterBar","searchboxFilterAgent","SearchboxFilterAgent","combinedFilter","subStatus","clear","showToolBar","getEditableFilter","filterEditorQuery","deterministicView","filterToShow","createFilterEntity","cloneDeep","setEditableFilter","__WEBPACK_EXTERNAL_MODULE__6__","selectorConf","selector","onChange","checkKeyDifferenceOnClick","selectedKey","defaultSelectedItem","toolbarView","once","setQuickFilter","BaseFilterAgent","placeholder","searchbox","maxLength","searchProperty","searchOperator","DeterministicFilterEditor","FilterEditor","preprocessSelectedFilter","shortDateFormat","isComparingEnabled","editor","hasInlineReporting","layoutTemplate","itemTemplates","ko_model","savedFilters","maxSavedFilterLimit","filterNames","addUpdateSavedFilter","savedData","__WEBPACK_EXTERNAL_MODULE__11__","__WEBPACK_EXTERNAL_MODULE__12__","DeterministicFilterBar","FilterBar","extendedFilter","filterbar","changeFilter","removeEditableFilter","__WEBPACK_EXTERNAL_MODULE__14__","RemoveDialog","filterName","removeText","getFilterByName","modalDialog","buttonName","deleteSavedFilter","setEditableFilterByName","getSavedFilters","filterArray","menuItems","menu","customItems","checkIcon","onSelect","applyByName","onRemove","deleteByName","baseIconClass","iconLeft","iconRight","localizedProp","propName","names","last","localized","extendOwn","localizedTrueValue","localizedFalseValue","true","false","enumType","enumValue","localizedValue","originalEnumValue","enumValueMap","include","separatedEnumValues","localizedEnumValues","individualEnumValue","__WEBPACK_EXTERNAL_MODULE__20__","onEdit","editText","loadingErrorText","loading","humanizedFilterHtml","hideEdit","hideRemove","setFilter","putil","withLastPromise","promiseFactory","customHumanizedHtml","humanizedHtml","finish","fail","setFilterProcess","cancel","getValuesAndMoreTextForSelector","valuesInQuery","itemsPromise","dataSource","getByIds","MAX_ITEMS_TO_SHOW","idInfoMap","indexBy","memoCopy","totalLength","notShowingCount","moreText","remain","extendPredicate","predicate","metadata","filterI18n","getFilterProperty","opValue","convertName","convertOperator","operatorDisplayNameMap","val","convertValue","i18nPromise","foo","extendFilter","$and","$or","depth","FilterI18n","depthTemplateMap","singleTemplate","listTemplate","extended","__WEBPACK_EXTERNAL_MODULE__26__","pug_mixins","isFirst","predicates","__WEBPACK_EXTERNAL_MODULE__33__","__WEBPACK_EXTERNAL_MODULE__35__","__WEBPACK_EXTERNAL_MODULE__37__","__WEBPACK_EXTERNAL_MODULE__38__","Selector","Editor","ReadOnly","Integer","Category","Custom","Checkbox","Radio","Select","Textarea","SelectableFilter","EditableFilter","CampaignType","CampaignStatus","AdGroupStatus","DateFilter","convertExpressionsToQuery","toQuery","filterEntity","validQuery","convertFilterEntityToExpressions","updateQuery","queryExpression","Predicate","fromQueryExpression","editablePredicate","isDeletedProperty","isInvalidProperty","queryExpressions","filterSchema","propertyKey","filterProps","originalProperty","isQueryExpressionValid","expressions","uiType","PredicateUIType","removable","getHumanizedValue","isEqual","selectorPredicates","selectorPredicate","defaultValue","editPredicates","union","columnId","removePopColumns","changed","popColumnId","popColumnChangeId","popColumnChangePercentId","len","newlen","isObject","AddFilterButtonUnthemed","React","PureComponent","disableAdd","isGrayCommandBar","buttonGray","Glyphicon","glyph","_TL_","propTypes","PropTypes","shape","isRequired","bool","defaultProps","AddFilterButton","withDefaultStyles","palette","themePrimary","neutralLighter","neutralLight","neutralQuaternaryAlt","neutralQuaternary","WrappedComponent","HOC","onClose","placement","popoverClassName","container","focusLockContent","Callout","popoverId","getDisplayName","__WEBPACK_EXTERNAL_MODULE__54__","__WEBPACK_EXTERNAL_MODULE__55__","__WEBPACK_EXTERNAL_MODULE__56__","translateToLegacyFormat","condition","pairs","SelectedColumn","SelectedOperator","Values","legacyFormats","subQuery","legacyFormat","col","toLegacyColumn","toLegacyOperator","toLegacyValue","EnumPropertyToTypeMapping","AudienceStatus","BidTarget","BidType","CallTrackingStatus","DeliveryStatus","DevicePreference","DisplayBiddingStrategyType","Language","Medium","EnumPropertyToStringTypeMapping","NoEnumPropertyToStringTypeMapping","BooleanToStringTypeMapping","op","groupedItems","toAlias","legacyValue","toLegacyString","toLegacy","toLegacyEnum","isFormat","enums","fullValue","stringEnums","AdGroupCriterionStatus","Active","Paused","Deleted","Excluded","AdGroupCallTrackingStatus","NotApplicable","Eligible","NotEligible","ProvisioningPending","Provisioned","CampaignUserPaused","CampaignBudgetPaused","CampaignBudgetUserPaused","Draft","Expired","AdStatus","Inactive","AdType","Text","Product","AppInstall","DynamicSearch","ExpandedText","Hotel","Responsive","ResponsiveSearch","AdStrength","Unrated","Poor","Average","Good","Excellent","BidTargetType","Keyword","BehaviorSegment","Site","BidOnly","TargetAndBid","Suspended","UserPaused","BudgetPaused","BudgetUserPaused","All","Mobile","Default","Shopping","DynamicSearchAds","Audience","Smart","PerformanceMax","CreditCardExpired","IOExceeded","PaymentInformationMissing","InvalidFinancialStatusOther","MigrationPaused","CampaignDeleted","CampaignSuspended","AdGroupExpired","AdGroupDraft","AdGroupDeleted","CamAssetRejected","CamAssetDeleted","AdGroupTargetingTooNarrow","EditorialRejected","EditorialAppealRejected","EditorialApprovedLimitedAppealRejected","EditorialUnderAppeal","UrlInvalid","ApplicationNotFound","ApplicationDestinationUrlMismatch","PendingMetadataSync","EditorialPending","AssociationDeleted","AdGroupPrivacyPending","AdGroupUserPaused","AdUserPaused","KeywordMatchTypeAdGroupMediumCombinationInvalid","KeywordUserPaused","NegativeKeywordConflicts","PartialNegativeKeywordConflicts","EditorialApprovedLimited","LowSupply","LowQuality","BidBelowFirstPageBid","Incomplete","BudgetSuggestions","InlineOpportunity","GeoCodingIncomplete","ProductTargetUserPaused","AdExtensionNotPresent","AdExtensionDeleted","AdExtensionAssociationDeleted","StoreIdNotAssociated","AdGroupAudienceAssociationPaused","AdGroupAudienceAssociationExcluded","AdNotPresent","AdNotActive","ApplicationDestinationUrlValidationIncomplete","AutoBiddingLimitedInventoryLimit","AutoBiddingLimitedMaxCPCRestriction","AutoBiddingLimitedBudgetRestriction","AutoBiddingLimitedUnAttainableTarget","AutoBiddingPortfolioBidStrategyTrainingStatus","New","AutoBiddingLimitedByNotEnoughConversions","NoEligibleAds","NoEligibleKeywords","NoEligibleAdGroups","BiddingStrategyType","InheritFromParent","ManualCpc","MaxClicks","MaxConversions","TargetCpa","EnhancedCpc","TargetRoas","MaxRoas","MaxConversionValue","TargetImpressionShare","ManualCpv","ManualCpm","PercentCpc","Commission","CostPerSale","Arabic","TraditionalChinese","Danish","Dutch","English","Finnish","French","German","Italian","Norwegian","Portuguese","Spanish","Swedish","SimplifiedChinese","Greek","Polish","Czech","Estonian","Croatian","Hungarian","Lithuanian","Latvian","Maltese","Romanian","Slovak","Slovenian","Turkish","Serbian","Bosnian","Albanian","Macedonian","Icelandic","Japanese","Search","Content","SearchAndContent","OrderItemStatus","MatchType","Exact","Phrase","Broad","AudienceType","Remessaging","InMarket","RemarketingSimilar","CustomerList","CombinedList","CriterionAgeCriterionAgeRange","EighteenToTwentyFive","TwentyFiveToThirtyFive","ThirtyFiveToFifty","FiftyToSixtyFive","SixtyFiveAndAbove","Unknown","CriterionGenderCriterionGenderType","Male","Female","AudienceCriterionLevel","AdGroup","Campaign","AccountType","AdAccount","ManagerAccount","columnName","decimal","isNaN","fromLocalToFloat","enumMapper","logic","mapToShorterVersion","secondLogic","fieldId","lambadaFieldIdMapping","fromLegacy","DeliveredMatchType","SearchTermStatus","Condition","newName","isSaving","trim","isSaved","hasNameError","$layout","headerTitle","nameWaterMarkTitle","applyTitle","cancelTitle","saveFilter","$listContainer","predicateList","Constructor","PredicateList","canApply","cleanNode","undelegateEvents","filterQuery","getFilterQuery","clean","__WEBPACK_EXTERNAL_MODULE__7__","FilterEntity","fieldMap","custom","normalizeFilter","odataOptions","calculateDepth","FilterSchema","entities","anotherOpe","queries","uniqWith","fromQueryString","regex","legacy","exec","toOdata","filters","normalizedFilter","convertToOData","parseFromLegacy","odataV4","convertToLegacy","clone","newFilterEntity","conditions","expressionKey","isFieldName","field","toExplicitCondition","getFieldExpressions","con","flattenAndOperators","bfsNextLevel","originalOperator","originalValue","startsWith","endsWith","nextLevel","mongoExpressions","expr","mongoOperator","mongoValue","toLegacyColumnName","operatorMap","toLegacyExpression","legacyExpressions","toMongoPredicate","$contains","$doesnotcontain","$startswith","$endswith","$eq","$neq","$gt","$gte","$lt","$lte","$in","$containsall","$containsany","$containsnone","reverseOperatorMap","invert","pop","legacyExpression","fromAlias","getPropertyKeys","fromLegacyColumnName","legacyOperator","getEnumValuefromLegacy","legacyDeliveryStatus","DomainLanguageNotSupported","ShoppingCampaignStoreNotFound","ShoppingCampaignNoOffersPresent","AutoBiddingLimitedByNotEnoughRevenue","AutoBiddingLearning","AdGroupCriterionExcluded","AdGroupCriterionPaused","None","Bulgarian","Native","FluctuationType","AdGroupType","SearchStandard","SearchDynamic","CashbackScope","Store","CouponsEnabled","Enabled","Disabled","kendoFilter","convertToKendo","customToOData","kendoToOData","priorities","and","or","kendo","transports","parameterMap","priorityParent","customOperator","priority","filterString","flt","__WEBPACK_EXTERNAL_MODULE__80__","kendoFilters","convertNode","simpleOperatorMap","$ne","$ge","$le","$substringof","$isof","logicOperatorMap","simpleExpression","toLower","convertLeaf","fieldVal","convertEnumSelectionLeaf","option","operatorKeyMap","neq","gt","gte","lt","lte","in","doesnotcontain","startswith","endswith","containsall","containsany","containsnone","operatorStringMap","skeleton","vnext","SchemaI18n","skipLocalization","hasTime","utcDate","convertMachineDateToUTCDate","toISOString","isPercentValue","getEntityName","entityProperty","operatorMapping","array","buildAliasToProp","pair","alias","childPair","buildPropToAlias","aliasToProp","dot","aliasType","substring","srcPropType","targetPropType","predValue","srcType","targetType","round","conversionFunctionFactory","sourcePropertyType","targetPropName","targetProp","mongoPredicate","exprObj","predOperator","convertedValue","legacyConversionFunctionFactory","legacyPredicate","buildPropToConversions","isForLegacyFilter","conversionFuncFactory","propertyConversion","sourcePropertyName","sourcePropertyLegacyAlias","conversionFunc","compact","filterable","parentKey","getDeepFilterableProps","propToAlias","propToConversions","propToLegacyConversions","operators","nullable","minimum","maximum","pattern","customEditor","chooseType","customParameters","addtionalParams","getApplicableConversions","allConversions","getApplicableLegacyConversions","applyConversions","applyLegacyFilterConversions","legacyFilterExpressions","mapOnlyBaseProperty","propObj","flattenedEntity","fields","restoreToEntitySchema","nameStack","buildFilters","parentNameStack","schemaToBuild","subPro","primitiveTypes","baseSchema","required","customColumn","format","aliasCopy","hasConversionAlias","sourceProperty","joinedSourceName","mappedEnumValue","mapEnumValueForFilter","flattenSchemaToFields","storageFactory","storageOptions","quickFilterOptions","editableFilterOptions","savedFilterOptions","recentFilterOptions","schemaProcessor","odataOptionsProcessor","waterfallFilterStores","suppressWaterfallEvents","flattenEntitySchema","lazyFilterSchema","memoize","buildNameToPropertyMapping","filterEntityOptions","basicStorageOptions","quickFilterStorage","editableFilterStorage","savedFilterStorage","savedQuickFilterStorage","featureName","isRecentFilterSupported","recentFilterStorage","recentQuickFilterStorage","dataSourceFilter","savedQuickFilters","recentFilters","recentQuickFilters","fetchSavedFilterPromise","refreshSavedFiltersCache","fetchRecentFilterPromise","refreshRecentFiltersCache","fetchQuickFilterPromise","fetchQuickFilter","fetchEditableFilterPromise","fetchEditableFilter","initializeWaterfallFilters","initializeCombinedFilterPromise","initializeCombinedFilter","fetchQuickFilterForGivenStore","fetchWaterfallFilter","waterfallFilter","waterfallFilters","hasActiveWaterfallFilter","refreshSource","refreshWaterfallFilters","fetchWaterfallFilterPromises","triggerQuickFilterSetEvent","filterPromises","WaterfallFilters","setInitialEditableFilter","setInitialQuickFilter","oldWaterfallFilters","version","quick","editable","waterfalls","stringifySync","deserialize","serialized","isColumnConversionEnabled","parseSync","removeQuickFilter","patchedQuery","patchFilter","getQuickFilter","equalQuickFilter","q","some","logicalOperator","getCombinedFilter","filtersToMerge","waterfallFilterEntities","mergeFilterEntity","isInitialLoad","newQuickFilter","save","setDataSourceFilter","getDataSourceFilter","getRecentFilters","recentFilter","getRecentFiltersByIndex","addUpdateRecentFilter","filterStorageType","FilterStorageType","errorData","updateAppliedFilter","existingFilter","savedFilter","splice","deletedResult","refreshSavedOrRecentFiltersCache","editableFilters","quickFilters","combinedFilters","callback","validatedFilter","getValidFilterEntity","originalFilter","removeAppliedFilter","__WEBPACK_EXTERNAL_MODULE__97__","__WEBPACK_EXTERNAL_MODULE__98__","newQuery","baseQuery","addedQuery","isNullQuery","mergeQuery","__WEBPACK_EXTERNAL_MODULE__103__","instance","focusLockOptions","managed","eventHandlers","ReactDOM","FocusLockBackboneInstanceWrapper","focusLockProps","unmountComponentAtNode","FocusLock","BackboneInstanceWrapper","objectOf","__WEBPACK_EXTERNAL_MODULE__328__","__WEBPACK_EXTERNAL_MODULE__329__","eventsToActions","FocusLockBackboneWrapper","viewOptions","BackboneViewWrapper","oneOfType","BackboneView","arrayOf","__WEBPACK_EXTERNAL_MODULE__332__","CopilotResultView","question","customizedEvent","onCopilotClick","forceOpen","keyword","isSearchResultSelected","selectedItem","isUserInput","toggleCopilotEvent","CustomEvent","bubbles","cancelable","composed","getCopilotListView","searchQuery","renderItem","renderHeader","ListSelector","renderDivider","copilotResults","enableArrowKeysSupport","itemClassName","searchResultItem","searchItemContainer","searchItemSpan","resultHeaderContainer","tabIndex","resultHeader","resultHeaderIcon","isNewLogo","resultHeaderSpan","resultHeaderPlaceholder","placeholderText","resultHeaderLink","resultHeaderHint","getSearchQuestionsFromSiteMap","siteMap","prevSearchQuery","getDerivedStateFromProps","nextProps","prevState","getSearchQuestionsFromQuery","searchResultItemCount","emptyText","searchText","resultText","totalCount","liveRegionText","searchResultDropDown","StyledCopilotResultView","withSiteMap","getCopilotResultViewStyles","CopilotResultViewExternalSiteMap","searchActivity","__WEBPACK_EXTERNAL_MODULE__356__","__WEBPACK_EXTERNAL_MODULE__357__","searchQuestions","mapCurrentPageToPageGroup","isTroubleshootingEnabled","__WEBPACK_EXTERNAL_MODULE__359__","components","zIndex","borderBottom","borderImage","whiteSpace","cursor","spacingVerticalNone","spacingHorizontalNone","overflow","textOverflow","background","calloutTargetContainer","fallbackGlyph","float","searchItemFooterSpan","shortcutItem","neutralSecondary","shortcutKey","fill","expand","customParamSerialize","$url","queryify","protocol","port","host","expandOptions","composeBatchUrl","cb","core","signature","uri","make","beforeSend","wrap","jqXHR","oDataToken","oDataTokenType","tokenType","setRequestHeader","loginType","requestId","generateGuid","applicationName","headers","sessionId","SessionId","customHeader","i18nErrors","errs","Code","getStringOrDefault","contentType","ajax","boundary","batchURL","multipart","generate","dataType","textStatus","lines","req","multipartPath","needContentType","contentTransferEncoding","ignored","isNull","authorization","dataContentType","tmp","scanStatus","responseString","statusLine","shift","headerParts","headerLine","safeJSON","statusMessage","parseHttpResponse","successCodeList","statusCounter","countBy","success","failure","httpWithDelete","http","put","$delete","odataWithDelete","upload","FormData","processData","defaultOptions","progress","ajaxSettings","getResponseHeaders","xhrObject","getAllResponseHeaders","reg","matches","originalArgs","arg","isArguments","second","third","customAjax","xhrFields","converters","complete","bypassAjaxLogging","xhrOption","timeout","ajaxFunc","$op","withCredentials","errorThrown","responseText","extraInfo","defaultOps"],"sourceRoot":""}