{"version":3,"file":"static/js/application.initial~250859eb.b1a93c23.js","mappings":"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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,OAAQuT,GACR,IAAK,WACHvT,EAAM,SACN,MACF,IAAK,eACHA,EAAM,iBACN,MACF,QACEA,EAAM,kBAGR,MACF,IAAK,gBACH,OAAQuT,GACR,IAAK,UACL,IAAK,WACHvT,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,OAAQuT,GACN,IAAK,sBACL,IAAK,6BACHvT,EAAM,+BAGV,MACF,IAAK,eACH,OAAQuT,GACN,IAAK,sBACL,IAAK,6BACHvT,EAAM,iCAGV,MACF,IAAK,eACH,OAAQuT,GACN,IAAK,sBACL,IAAK,6BACHvT,EAAM,iCAGV,MACF,IAAK,gBACH,OAAQuT,GACN,IAAK,sBACL,IAAK,6BACHvT,EAAM,kCAGV,MACF,IAAK,gBACHA,EAAM,iBACN,MACF,IAAK,qBACL,IAAK,iBACL,GACO,2BADCuT,EAEJvT,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,OAAQuT,GACN,IAAK,WACHvT,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,2BADGuT,EAENvT,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,OAAQuT,GACN,IAAK,UACL,IAAK,WACHvT,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,2BADCuT,EAEJvT,EAAM,sCAGNA,EAAM,UAGV,MACF,IAAK,mBACH,GACO,2BADCuT,EAEJvT,EAAM,wCAGNA,EAAM,YAGV,MACF,IAAK,qBACHA,EAAM,iCACN,MACF,IAAK,uBACHA,EAAM,mCACN,MACF,IAAK,sBACHA,EAAM,uCACN,MACF,IAAK,sBACHA,EAAM,6CACN,MACF,IAAK,eACHA,EAAM,iCACN,MACF,IAAK,eACHA,EAAM,iCACN,MAIF,IAAK,gBACHA,EAAM,kCACN,MACF,IAAK,UACHA,EAAM,UACN,MAIF,IAAK,eACHA,EAAM,YACN,MACF,IAAK,0BACHA,EAAM,sBACN,MACF,IAAK,uBACL,IAAK,mBACHA,EAAM,sBACN,MACF,IAAK,OACHA,EAAM,qBACN,MACF,IAAK,uBACH,GACO,aADCuT,EAEJvT,EAAM,oBAGNA,EAAM,wBAGV,MACF,IAAK,oBACHA,EAAM,YAIR,OAAOA,CACR,E,mBAEM,SAA0B9sC,GAC/B,IAAI8sC,EAAM,SACV,OAAQ9sC,GACR,IAAK,cACL,IAAK,eACL,IAAK,qBACL,IAAK,gBACH8sC,EAAM,SACN,MACF,IAAK,YACL,IAAK,kBACHA,EAAM,aACR,IAAK,aACL,IAAK,aACL,IAAK,iBACL,IAAK,gBACL,IAAK,oBACL,IAAK,gBACL,IAAK,YACL,IAAK,iBACL,IAAK,SACL,IAAK,4BACL,IAAK,kBACL,IAAK,mBACL,IAAK,iBACL,IAAK,uBACL,IAAK,6BACL,IAAK,UACL,IAAK,eACL,IAAK,oBACL,IAAK,WACL,IAAK,YACL,IAAK,QACHA,EAAM,OACN,MACF,IAAK,YACL,IAAK,aACL,IAAK,OACL,IAAK,YACL,IAAK,gBACL,IAAK,wBACL,IAAK,SACL,IAAK,cACL,IAAK,kBACL,IAAK,qBACL,IAAK,QACL,IAAK,cACL,IAAK,oBACL,IAAK,aACL,IAAK,aACL,IAAK,MACL,IAAK,uBACL,IAAK,iBACL,IAAK,wBACL,IAAK,mBACL,IAAK,4BACL,IAAK,mBACL,IAAK,0BACL,IAAK,iBACL,IAAK,uBACL,IAAK,oBACL,IAAK,2BACL,IAAK,yCACL,IAAK,gCACL,IAAK,yBACL,IAAK,+BACL,IAAK,4BACL,IAAK,mCACL,IAAK,6BACL,IAAK,oCACL,IAAK,gCACL,IAAK,wCACL,IAAK,WACL,IAAK,uBACL,IAAK,qBACL,IAAK,4BACL,IAAK,4BACL,IAAK,oBACL,IAAK,aACL,IAAK,oBACL,IAAK,6BACL,IAAK,0BACL,IAAK,gCACL,IAAK,2BACL,IAAK,8BACL,IAAK,oBACL,IAAK,oBACL,IAAK,4BACL,IAAK,mCACL,IAAK,4BACL,IAAK,2BACL,IAAK,yBACL,IAAK,oCACL,IAAK,mCACL,IAAK,iCACL,IAAK,MACL,IAAK,2BACL,IAAK,gCACL,IAAK,oCACL,IAAK,uCACL,IAAK,0BACL,IAAK,gCACL,IAAK,sCACL,IAAK,+BACL,IAAK,+BACL,IAAK,wBACL,IAAK,yCACL,IAAK,mCACL,IAAK,0CACL,IAAK,qCACL,IAAK,8CACL,IAAK,qCACL,IAAK,4CACL,IAAK,mCACL,IAAK,yCACL,IAAK,sCACL,IAAK,6CACL,IAAK,2DACL,IAAK,kDACL,IAAK,6BACL,IAAK,yCACL,IAAK,uCACL,IAAK,8CACL,IAAK,8CACL,IAAK,sCACL,IAAK,+BACL,IAAK,sCACL,IAAK,+CACL,IAAK,4CACL,IAAK,kDACL,IAAK,6CACL,IAAK,gDACL,IAAK,sCACL,IAAK,wBACL,IAAK,2CACL,IAAK,iDACL,IAAK,8CACL,IAAK,qDACL,IAAK,+CACL,IAAK,sDACL,IAAK,kDACL,IAAK,0DACL,IAAK,eACL,IAAK,cACL,IAAK,kBACL,IAAK,eACL,I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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:/copilot-welcome-tiles/index.ts","../webpack-src:/copilot-welcome-tiles/src/index.ts","../webpack-src:/copilot-welcome-tiles/src/copilot-welcome-tile/index.ts","../webpack-src:/copilot-welcome-tiles/src/copilot-welcome-tile/copilot-welcome-tile.tsx","../webpack-src:/copilot-welcome-tiles/src/copilot-welcome-tile/icons/index.ts","../webpack-src:/copilot-welcome-tiles/src/copilot-welcome-tile/icons/action-icon.tsx","../webpack-src:/copilot-welcome-tiles/src/copilot-welcome-tile/icons/insight-icon.tsx","../webpack-src:/copilot-welcome-tiles/src/copilot-welcome-tile/icons/support-icon.tsx","../webpack-src:/copilot-welcome-tiles/src/copilot-welcome-tile/icons/troubleshooting-icon.tsx","../webpack-src:/copilot-welcome-tiles/src/copilot-welcome-tile-list/index.ts","../webpack-src:/copilot-welcome-tiles/src/copilot-welcome-tile-list/copilot-welcome-tile-list.tsx","../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.ts","../webpack-src:/custom-columns-shared-config/src/metrics/index.ts","../webpack-src:/custom-columns-shared-config/src/metrics/performance.ts","../webpack-src:/custom-columns-shared-config/src/metrics/conversions.ts","../webpack-src:/custom-columns-shared-config/src/segments/index.ts","../webpack-src:/custom-columns-shared-config/src/segments/device-type.ts","../webpack-src:/custom-columns-shared-config/src/segments/network.ts","../webpack-src:/custom-columns-shared-config/src/segments/top-vs-other.ts","../webpack-src:/custom-columns-shared-config/src/config.ts","../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__79__;","module.exports = __WEBPACK_EXTERNAL_MODULE__105__;","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 * from './src/index';\r\n","export * from './copilot-welcome-tile';\r\nexport * from './copilot-welcome-tile-list';\r\n","export * from './copilot-welcome-tile';\r\n","import React, {\r\n useCallback, useContext, useEffect, useMemo, useState,\r\n} from 'react';\r\nimport _ from 'underscore';\r\nimport {\r\n Card,\r\n CardHeader,\r\n makeStyles,\r\n mergeClasses,\r\n} from '@fluentui/react-components';\r\nimport { I18nContext } from '@bingads-webui/copilot-i18n';\r\nimport { IQuestion } from '@bingads-webui/search-utils';\r\nimport { useAdsCopilotIsSendDisabled } from '@bingads-webui/ads-copilot-ui';\r\nimport {\r\n ActionIcon,\r\n InsightIcon,\r\n SupportIcon,\r\n TroubleshootingIcon,\r\n} from './icons/index';\r\n\r\nexport type CopilotWelcomeTileProps = {\r\n category: IQuestion['category'];\r\n className?: string;\r\n onClick?: (event: React.SyntheticEvent, text: string, category: string) => void;\r\n onRenderWelcomeTile?: (text: string, category: string) => void,\r\n text: string;\r\n};\r\n\r\nconst useStyles = makeStyles({\r\n root: {},\r\n rootDisabled: {\r\n pointerEvents: 'none',\r\n },\r\n wrapper: {},\r\n wrapperDisabled: {\r\n cursor: 'not-allowed',\r\n },\r\n header: {\r\n maxWidth: '100%',\r\n gridAutoRows: '1fr min-content',\r\n },\r\n headerWithNewIcon: {\r\n alignItems: 'start',\r\n },\r\n headerText: {\r\n overflowX: 'hidden',\r\n wordBreak: 'break-word',\r\n },\r\n headerImage: {\r\n maxWidth: 'fit-content',\r\n alignSelf: 'center',\r\n },\r\n});\r\n\r\nexport const CopilotWelcomeTile: React.FC = React.memo((props) => {\r\n const {\r\n category,\r\n className,\r\n onClick,\r\n onRenderWelcomeTile,\r\n text,\r\n } = props;\r\n\r\n const i18n = useContext(I18nContext);\r\n const classes = useStyles();\r\n const [isFirstRender, setIsFirstRender] = useState(true);\r\n const isSendDisabled = useAdsCopilotIsSendDisabled();\r\n\r\n useEffect(() => {\r\n if (!_.isEmpty(text) && !_.isEmpty(category) && onRenderWelcomeTile && isFirstRender) {\r\n onRenderWelcomeTile(text, category);\r\n setIsFirstRender(false);\r\n }\r\n }, [text, category, onRenderWelcomeTile, isFirstRender]);\r\n\r\n const handleClick = useCallback((event: React.MouseEvent) => {\r\n if (isSendDisabled) {\r\n return;\r\n }\r\n onClick?.(event, text, category);\r\n }, [onClick, text, category, isSendDisabled]);\r\n\r\n const handleKeyDown = useCallback((event: React.KeyboardEvent) => {\r\n if (isSendDisabled) {\r\n return;\r\n }\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n onClick?.(event, text, category);\r\n }\r\n }, [onClick, text, category, isSendDisabled]);\r\n\r\n const image = useMemo(() => {\r\n let Component: React.FC<{ title: string | undefined }> | undefined;\r\n let title: string | undefined;\r\n\r\n if (category === 'action') {\r\n title = i18n?.getString(_TL_('Action category'));\r\n Component = ActionIcon;\r\n }\r\n if (category === 'insight') {\r\n title = i18n?.getString(_TL_('Insight category'));\r\n Component = InsightIcon;\r\n }\r\n if (category === 'support' || category === 'troubleshooting') {\r\n title = i18n?.getString(_TL_('Support category'));\r\n Component = SupportIcon;\r\n }\r\n if (category === 'troubleshooting') {\r\n title = i18n?.getString(_TL_('Troubleshooting category'));\r\n Component = TroubleshootingIcon;\r\n }\r\n\r\n if (Component) {\r\n return ;\r\n }\r\n return undefined;\r\n }, [category, i18n]);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n});\r\n","export * from './action-icon';\r\nexport * from './insight-icon';\r\nexport * from './support-icon';\r\nexport * from './troubleshooting-icon';\r\n","import React from 'react';\r\nimport { Image } from '@fluentui/react-components';\r\n\r\nconst paintbrush = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAPrSURBVHgB7VZbaFxVFF3nzJ37mLlz750nHfKY1A8RAqUfoaJofRVTasxHpIJKBKFSUBBbpT5qJ2MJiiBURdAWSmmlwQiKVvBToRHqR2iNESxSTGMaIbaTyXSmk7lv90T8kUmdzMMfXXCY4d59zllnrb33ucB/HQwdxNxdhw/EvdTzihpZEiLsMfbp4xf/HsPRIfx49wtZbUV5S2VGWkgkt0JQT9SLE9ABfD+4b5uxJOfUgAamacAKh2+7mXqxbVdgeui5Xu2aN2k4GhOjOlANAFeqsCz3S/wbBEJF8wPDDPUptZOLMlC04Ar25XLGO1wvvq0W/HDPU9l4IbgrokTAIxGg5MD3HJR78FLi1KOL9ea0rQpmHhy9PZYPnku4KSYnewCH5M9zmIZ/XD77xJ715rXFgumh0V614EwatsIknTbmIp3ehCdbl6/1VHI3m9sWAuFi9WjUFDOhMGV9KAyULZLeQjltHuw+/fQVdJLAzL3DY7GStzMihsENSryqD1QsOJpzQv9i78Q/zW+JwIWHHrkzWrZzGpMgGCS9RzldrsIXnXlnEx9rZI2mCUwP7aZ6z0/EHA5Zpc3FEG1uwvcdVNLCodDHzy40sk7TBEKl4vGY6WYUmTyv1fyqTYMSL+KfVD/f91Gj6zRFYPb+HWPx65UdqiCD61EqOXpYXoUv+b+W0mhI+qYJnN81vF0vmTmdepigxamVSWu+g7lwklI2OvHa/EbW2xCB8yMjGT1fPBUltaWwQT7QqNDm1Zr0wmnxzKGT2CAaJjA+Pt71SyJ9Rrf8TEhSyXc6vU0ld6MCyHyB69pBNIGGCfgee3/xtv4t3z45CrOrjySX1nyvNXM3Fc6xzzYm/V8INBKUfTX7gBRU3tAjUQSjSRS2DUCwHGiX5uFp+qTw1btNnb6Gm96GZ4+OpFMxez+8Cw9fXEghb6YgcoWqLYDZrQNYiib8/u9mXkYLWPc2PHdkZ5+heVNdSd4d1oJggQDmFpP46ep2+OHNNDMA38WR4T137EcLWDcHAq7/YZy73arHwX0RTNFxSz/HfVumkChNw1sJzgoVlkOLqKvAN2O71ZS8XNoc41AMhTKeWq1BDSdMKeObtZZrQ+o22MDrFbSIujngOW5cMTnEapDKjO52n35danerVPMCZb5DD8o3qBbRMoG6Fly6mvgNNi+zWp1bdOpV4lmk0AK9XKZxXZxjg2//jjagLoG9x47ZAnPMtZc2WVAhAiVya4VGnr71ltPvoE2oa8HPrwweSApuHHbiTwIkBHUiyhi6+URjnL2YfQ+dJLCp2FuQuTxN33a3gnPq/MEl+v81pNQn7M1npvA/2og/ADu/Sdc4mUOuAAAAAElFTkSuQmCC';\r\n\r\nexport const ActionIcon: React.FC<{ title: string | undefined }> = ({ title }) => (\r\n \r\n);\r\n","import React from 'react';\r\nimport { Image } from '@fluentui/react-components';\r\n\r\nconst chartincreasing = 'data:image/png;base64,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';\r\n\r\nexport const InsightIcon: React.FC<{ title: string | undefined }> = ({ title }) => (\r\n \r\n);\r\n","import React from 'react';\r\nimport { Image } from '@fluentui/react-components';\r\n\r\nconst lightbulb = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAASpSURBVHgB7VZLiBxVFD1V9erTXd1d/ZkxEyOaIIqgIDERklHEEPxsXCgixhASIeIiolEUAyqMH0RBJrsQFUMUiclEEUT8rOLGpUYxwSREZ9RxfmQy/+mqrqpXntc1La5munqW5sKh671+fc+5n3e7gP+7aVkOJ0mizX++80HH8ffoVrxZd0RPIiwNQvwBiR9kZH0mej84lsVn2wIWBh7bZFrzx0xn9kZYIWAmhAF4twL5DUAwCsyfA2RhCCG2aVuPD7Xjty0Bl0/seqBkjQ0YuVkHIgKEJPjF2ieBNQ8BuRqg68DkN8DIu0BsTYdxebu1+b0fV/Ktr3Rg6pNH13ti/KhhTTvQAkpm9BpF2Ov5bQFYHAT8S4ycomr3A+t2MyNu2XSib5NfnlmzagGu8Pt0MVOF1kiJNZnmTS6S+CzxG9M/DIRTqkmA0p38EXltpwtG48CqBFweePFaQ/d3N8kREyTQyK6z9pgBovMkpoCYAuQYMct9ZsjKEzmeC/ckp/eXOxZghiO9uragwl0iR1prXaQiNGZBKvK/KGKEoIjgJzQPNkXKcmzI3uU4xLICRLCJYabErXZtZUCJ0BSJn5JHNvkmgcYFrpkxSSQhDC3gNcFXHQnQZNgNLVliZ+StZ5/Po/xpQAEWiXrYhNfUqZj7MUsVU3S0mPaJ1HvQaQYimUSWItT+c1t5ETDBdY+aASS0SDY7B5yjgA1cG0l6IyIKiykAzlznAuLwzL/5b4kYJ67ic9FIS6CSUgnTlI9y/2qu4yRdS+7H4tflOJZtQl+rnJKxsXSMziUR87nAPamgp1AiqsQ0I08UVBkUucWeyH3fsYA1uz7+OQzt75AwUS2oqJUQdeeTFmGi6pVGHsulHlBlsD/Uth4e6liAsiDKPyF9dwaSXQ4rFVFHOhHVDUiWMM7myDHtIfdDZiBwRyC9vpX8ryjA2/XFxYVGdX/SKJHIYf1F2geKpDmWSTrNz0uMusa9iFkICoj9rr3a1qNDqxagrLTz5NG6X34lCZ30H7DKEkwk6bVUGCZu4EGT+yEnYFB7Ttz9/tft+G5LgDJ3x/E34iB3sNl0BdY3IGlIwnnCJXKqIZmd0H1Vu+vwwXb9ti1A2XkpDiSxcbGZekt1OvvCZ8QePw3VnObv2h0f9WXxmUnALY+cbEQhDjX/mEw1aNQcYGPmTXpqTsnXkNEyCVAWad5AswwiTK+gGlDO0ph2e75ERsss4MSZXnN84bogMLrY8C4i4XImlVEX22eG/KeKyGgi43kmX9x+6uy9dqVUQcnzUKhVkK8XYcD0QtPfyyMvZ/GXOQMxIk+iAcOM+ealo1iwUCnk4OVcOKK0b/D0YDmLv0yv5f0v9a/LG9awa3qwbRc5twDTdWAWTEKwJ+MXtt2z5Z0sPjMJUPb6828+XjJzR7rKHqpdVXSv7Ualu4ZcuQhNGINj06O3bdy4cbpdf5l6oL+vv1ow9Kcr+Spq5R6YVgmLUxYWFuuI/pxjU8af3vfwlrbJMwsQkzctzGtTb0824gMX5N/X285EwXFt2K41Z5fsi8VicggZLXMJWvbWvmM3lx3vSLGar+t57Nnx7LYhXLEO7B95KLyDVPasyQAAAABJRU5ErkJggg==';\r\n\r\nexport const SupportIcon: React.FC<{ title: string | undefined }> = ({ title }) => (\r\n \r\n);\r\n","import React from 'react';\r\nimport { Image } from '@fluentui/react-components';\r\n\r\nconst stethoscope = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAUZSURBVHgB7ZZ7bBRFHMd/s7PP613v+qAcxdKrYqoQ4hOCaEghEcPDiCaFkgC9glbAKEiIJiIpRP4xaqwJmigRrhgkVkRiSIyAoRAIjakGeVkehQMqYK/X27v29m6f4xzY9URKtxwJ//D5a3fn9535zm925jcA97jLoOyX6TuPL0wUj5wifPYlEU+eTfE+7wc7W94P97cvrl5c2NlB1phFI7y9770NQoG4/0Al3wQ5wPY/TP388NoeJtDgVvJA0PyQz6cBdEOmTav7Y/66yk61Yq4Vgm8koIQHPPlQN+8yKdhWihrhNrENKJp/ri8vD5jzZpvYU3AcdUdJylI2ZgcXF/n3qrKv0Yi4fHqrXhkbwz5V8ih5nTbdtgGbSR9f6nrhICFVB9QaJ/FT3zkdfLrJILOPk/OQA4z9ZJg05QAYTGdKrFENuabJBXsJiGmhTGemw/EzPpFhAWiQE7YB0K3rs2EcOrBosE4zoBLIBdsAo9EOU/QBYUc94ky8al3X3AkDrrZDxH0xQrdglHEi5Np/Br7tKPh+dUMu2AbYeEKRhBjwoPFOhLxy2cfGCLBsMgE5YM8Wc+iMrhrg8rBPOBFqfcwEnhNA7TMuQg7YBiQJ707EksBidsHilzaU30o0u2pJAKn8PB6LYKTJdsgBuxYEg5t9sXb9bFFhYRHrTv7e3XVu1o6WdZ03CupqVpZFOoz97vSoCmxJ4a0nXqu4MWbWxCVVlsKN5zgWcxzTur31o5ZBDWSY/1xoZiqCd3n9PBgghxN90bWM1LV7x0+NV6pnLPNbmrAgHUWr8gx/iWQVEI3EJ287uepgv/75yS9XmLLULJKiJ0XsBswywEgG/cHSZxAxp4Va1oVvaSDDK9O/WdTXRTZg3pKQmARVj4NhpIDQc4I1RZAsL2BVkBGjv7rpj/rmfl1NzYqAfITsK+QCAU7NVxmDPUIQLSeMVsWVaOAuJeF4pPsxakLOHu9/W27jj3M3eT3CGN4QQlxPoYrlYsg3y8GbfADcyTKZUdyfcjrzSPbgGZJhs8HLjgwgUworqvLw5nO1E0MdwSlEUu+Xu5WolmADPn/J8kEzkE31mGZelc4mRhSVCXpEqy2LMc3rwnXpm8XOHPvWmRJ3xehEPBX8rn2lfUd4qOFKwJWO7EIFo8a6eU1OlRYu/6WG3TJgBrL59uQcDdHkI4Qg5U5eGGjwDBiJo1kXjXbFT/V/e3bR7lLBO3wfvm/cWJDcoAjDfFjGTVO+VuY4MnANhMggifqnIwSIQYAx2Cb/LKuaxrMooEdiwFyKAtsdv1bstBT/xr+6OwY1Sf7bHcvgQMY+S2sGokNZCv1ICBgWUz4EAwicZOBm0J1zMFPZkNdLiwcPxCdlMkrvEfCbYwOIML0MRiC6GN9AMfX1DS5iEbDoBUVVTbs+HlvP7WUT1hbkpiWnNB/AwwOyoJMu1nLHBjiOO2WoJuR5xGcGiqFHVjVLpMyxrPxwdP3p7LbDa3CteBnm417rQ1CslWo3jGtdisL2BGEQFk7bUKtdFUPDK1m9R+6c9NWed9uy24OzVwQiHdy+YdyDAaJCqOlEfR0MAUeLu3DC5kOYMJPY4l4rJl/dqJvJrTpOyiISpxtJ8c18Uu4XDM8F00pWhdqXhmEIODKwumZnWfSCvkftTVciTwo0IwG6bgC2BJBIIb0dCZ30gjjji/b5x2CIDOn3Xvb490EzZS1hTGY8WJltz4SJCU28ZX3SGH5RhnvcBn8DVX4bG33iNUAAAAAASUVORK5CYII=';\r\n\r\nexport const TroubleshootingIcon: React.FC<{ title: string | undefined }> = ({ title }) => (\r\n \r\n);\r\n","export * from './copilot-welcome-tile-list';\r\n","import React from 'react';\r\nimport { makeStyles, mergeClasses } from '@fluentui/react-components';\r\nimport { IQuestion, ISiteMapNode } from '@bingads-webui/search-utils';\r\nimport { withQuestions } from '@bingads-webui-react/msa-copilot-common';\r\nimport { CopilotWelcomeTile } from '../copilot-welcome-tile';\r\n\r\nexport interface ICopilotWelcomeTileListProps {\r\n className?: string;\r\n onClick: (event: React.SyntheticEvent, question: IQuestion) => void;\r\n onRenderWelcomeTile?: (question: IQuestion) => void;\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n rowGap: '8px',\r\n },\r\n});\r\n\r\nexport const CopilotWelcomeTileList = (props: ICopilotWelcomeTileListProps & { questions: IQuestion[] }) => {\r\n const classes = useStyles();\r\n const {\r\n className,\r\n onClick,\r\n onRenderWelcomeTile,\r\n questions,\r\n } = props;\r\n\r\n return (\r\n
\r\n {questions.map((question) => (\r\n onClick(ev, question)}\r\n onRenderWelcomeTile={() => {onRenderWelcomeTile && onRenderWelcomeTile(question)}}\r\n text={question.text}\r\n />\r\n ))}\r\n
\r\n );\r\n};\r\n\r\nexport const CopilotWelcomeTileListWithQuestions = (props: ICopilotWelcomeTileListProps & { siteMap: ISiteMapNode[] }) => (\r\n withQuestions({ ...props, Component: CopilotWelcomeTileList }));\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__;","export * 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\nimport { IMetricDefinition, IMetricCategory } from '../../types';\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: IMetricDefinition[] = [\r\n Clicks,\r\n Impressions,\r\n CTR,\r\n AverageCPC,\r\n Spend,\r\n];\r\n\r\nconst defaultConversionsMetrics: IMetricDefinition[] = [\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 {IMetricDefinition[]} metrics columns to display under this category\r\n * @returns {IMetricCategory} for custom columns configuration\r\n */\r\nexport const MetricCategory = (titleKey: string, metrics: IMetricDefinition[] = []): IMetricCategory => ({ titleKey, metrics });\r\n\r\n/**\r\n * @param {IMetricDefinition[]} metrics \"Performance\" category metrics\r\n * @returns {IMetricCategory} for custom columns configuration\r\n */\r\nconst PerformanceCategory = (metrics: IMetricDefinition[] = defaultPerformanceMetrics): IMetricCategory => MetricCategory('Performance', metrics);\r\n\r\n/**\r\n * @param {IMetricDefinition[]} metrics \"Conversions\" category metrics\r\n * @returns {IMetricCategory} for custom columns configuration\r\n */\r\nconst ConversionsCategory = (metrics: IMetricDefinition[] = defaultConversionsMetrics): IMetricCategory => MetricCategory('Conversions', metrics);\r\n\r\n/**\r\n * @param {IMetricDefinition[]} [perfMetrics] metrics to group under 'Performance' category\r\n * @param {IMetricDefinition[]} [convMetrics] metrics to group under 'Conversions' category\r\n * @returns {IMetricCategory[]} formatted value for config(s)\r\n */\r\nexport const MetricCategories = (perfMetrics?: IMetricDefinition[], convMetrics?: IMetricDefinition[]): IMetricCategory[] => [\r\n PerformanceCategory(perfMetrics),\r\n ConversionsCategory(convMetrics),\r\n];\r\n\r\nexport function getAllMetrics(metricCategories: IMetricCategory[]): string[] {\r\n const allMetrics: string[] = [];\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","import { IMetricDefinition } from '../../types';\r\n\r\nexport const Clicks: IMetricDefinition = {\r\n metric: 'PerformanceMetrics\\\\Clicks',\r\n titleKey: 'ColumnName_Clicks',\r\n};\r\n\r\nexport const Impressions: IMetricDefinition = {\r\n metric: 'PerformanceMetrics\\\\Impressions',\r\n titleKey: 'ColumnName_Impressions',\r\n};\r\n\r\nexport const CTR: IMetricDefinition = {\r\n metric: 'PerformanceMetrics\\\\CTR',\r\n titleKey: 'ColumnName_ClickThruRate',\r\n};\r\n\r\nexport const AverageCPC: IMetricDefinition = {\r\n metric: 'PerformanceMetrics\\\\AverageCPC',\r\n titleKey: 'ColumnName_CPC',\r\n};\r\n\r\nexport const AverageCPM: IMetricDefinition = {\r\n metric: 'PerformanceMetrics\\\\AverageCPM',\r\n titleKey: 'ColumnName_CostPerImpression',\r\n};\r\n\r\nexport const Spend: IMetricDefinition = {\r\n metric: 'PerformanceMetrics\\\\Spend',\r\n titleKey: 'ColumnName_Spend',\r\n};\r\n\r\nexport const TotalSpend: IMetricDefinition = {\r\n metric: 'PhonePerformanceMetrics\\\\ClickAndPhoneSpend',\r\n titleKey: 'ColumnName_TotalCost',\r\n};\r\n","import { IMetricDefinition } from '../../types';\r\n\r\nexport const CPA: IMetricDefinition = {\r\n metric: 'PerformanceMetrics\\\\CPA',\r\n titleKey: 'ColumnName_CPA',\r\n};\r\n\r\nexport const PartialConversionCPA: IMetricDefinition = {\r\n metric: 'PerformanceMetrics\\\\PartialConversionCPA',\r\n titleKey: 'ColumnName_CPA',\r\n};\r\n\r\nexport const Conversions: IMetricDefinition = {\r\n metric: 'PerformanceMetrics\\\\Conversions',\r\n titleKey: 'ColumnName_Conversions',\r\n};\r\n\r\nexport const ConversionsCredit: IMetricDefinition = {\r\n metric: 'PerformanceMetrics\\\\ConversionsCredit',\r\n titleKey: 'ColumnName_Conversions',\r\n};\r\n\r\nexport const ConversionRate: IMetricDefinition = {\r\n metric: 'PerformanceMetrics\\\\ConversionRate',\r\n titleKey: 'ColumnName_ConversionRate',\r\n};\r\n\r\nexport const PartialConversionRate: IMetricDefinition = {\r\n metric: 'PerformanceMetrics\\\\PartialConversionRate',\r\n titleKey: 'ColumnName_ConversionRate',\r\n};\r\n\r\nexport const AdvertiserReportedRevenue: IMetricDefinition = {\r\n metric: 'PerformanceMetrics\\\\AdvertiserReportedRevenue',\r\n titleKey: 'ColumnName_Revenue',\r\n};\r\n\r\nexport const RevenueOnAdSpend: IMetricDefinition = {\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\nimport { ISegmentCategory } from '../../types';\r\n\r\nexport const segmentCategories: ISegmentCategory[] = [\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: ISegmentCategory[]): string[] {\r\n const allSegments: string[] = [];\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","import { ISegmentDefinition } from '../../types';\r\n\r\nexport const Computer: ISegmentDefinition = {\r\n segment: 'Computer',\r\n titleKey: 'Segment_Device_Type_Computer',\r\n};\r\n\r\nexport const SmartPhone: ISegmentDefinition = {\r\n segment: 'SmartPhone',\r\n titleKey: 'Segment_Device_Type_Smartphone',\r\n};\r\n\r\nexport const Tablet: ISegmentDefinition = {\r\n segment: 'Tablet',\r\n titleKey: 'Segment_Device_Type_Tablet',\r\n};\r\n","import { ISegmentDefinition } from '../../types';\r\n\r\nexport const BingAndYahooSearch: ISegmentDefinition = {\r\n segment: 'BingAndYahooSearch',\r\n titleKey: 'Segment_Network_BingAndYahoo',\r\n};\r\n\r\nexport const AOLSearch: ISegmentDefinition = {\r\n segment: 'AOLSearch',\r\n titleKey: 'Segment_Network_AOL',\r\n};\r\n","import { ISegmentDefinition } from '../../types';\r\n\r\nexport const BingAndYahooSearchTop: ISegmentDefinition = {\r\n segment: 'BingAndYahooSearchTop',\r\n titleKey: 'Segment_Page_Position_BingYahooTop',\r\n};\r\n\r\nexport const BingAndYahooSearchOther: ISegmentDefinition = {\r\n segment: 'BingAndYahooSearchOther',\r\n titleKey: 'Segment_Page_Position_BingYahooOther',\r\n};\r\n\r\nexport const AOLSearchTop: ISegmentDefinition = {\r\n segment: 'AOLSearchTop',\r\n titleKey: 'Segment_Page_Position_AOL_Top',\r\n};\r\n\r\nexport const AOLSearchOther: ISegmentDefinition = {\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\nimport {\r\n Permissions, ICustomColumnsSharedConfig, UsedMetricsAndSegments, IMetricDefinition,\r\n} from '../types';\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 {ICustomColumnsSharedConfig}\r\n */\r\nexport const EMPTY: ICustomColumnsSharedConfig = {\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 {ICustomColumnsSharedConfig}\r\n */\r\nexport const DEFAULTS: ICustomColumnsSharedConfig = {\r\n enabled: true,\r\n metricCategories: MetricCategories(),\r\n segmentCategories,\r\n};\r\n\r\nconst getConversionMetrics = (\r\n permissions: Permissions = { dynamic: {} },\r\n combine?: boolean,\r\n): IMetricDefinition[] | undefined => {\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: IMetricDefinition[] = [];\r\n if (combine) {\r\n addedMetrics = IsPartialConversionsEnabled ? oldMetrics : newMetrics;\r\n }\r\n\r\n const convMetrics = [...selectedMetrics, ...addedMetrics];\r\n\r\n return convMetrics;\r\n};\r\n\r\nexport const adGroupMetricCategoriesFactory = (\r\n permissions: Permissions,\r\n combine: boolean = false,\r\n): ICustomColumnsSharedConfig => {\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 = (\r\n permissions: Permissions,\r\n combine: boolean = false,\r\n): ICustomColumnsSharedConfig => {\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 = (\r\n permissions: Permissions,\r\n combine: boolean = false,\r\n): ICustomColumnsSharedConfig => {\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 = (\r\n permissions: Permissions,\r\n combine: boolean = false,\r\n): ICustomColumnsSharedConfig => {\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 = (\r\n permissions: Permissions,\r\n combine: boolean = false,\r\n): ICustomColumnsSharedConfig => {\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 = (\r\n permissions: Permissions,\r\n combine: boolean = false,\r\n): ICustomColumnsSharedConfig => {\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: ICustomColumnsSharedConfig = {\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: string[]): UsedMetricsAndSegments {\r\n let usedMetrics: string[] = [];\r\n let usedSegments: string[] = [];\r\n const metrics = _.filter(\r\n expression,\r\n (clause) => clause.indexOf('PerformanceMetrics') === 0\r\n || clause.indexOf('PhonePerformanceMetrics') === 0,\r\n );\r\n // @ts-ignore\r\n const regMetric = /(?(PerformanceMetrics|PhonePerformanceMetrics)[^[]*)(\\[[^:]*:(?.*)\\])?/;\r\n\r\n _.each(metrics, (metric) => {\r\n const {\r\n groups: { metric: matchedMetric, segments },\r\n } = metric.match(regMetric) as RegExpMatchArray & { groups: { metric: string; segments: string } };\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 schemaName: string;\r\n expression: string[];\r\n permissions?: Permissions;\r\n}): boolean {\r\n let metricCategories;\r\n let segCategories;\r\n\r\n switch (schemaName) {\r\n case 'Account':\r\n ({ metricCategories, segmentCategories: segCategories } = accountMetricCategoriesFactory(permissions, /* combine */ true));\r\n break;\r\n case 'Campaign':\r\n ({ metricCategories, segmentCategories: segCategories } = campaignMetricCategoriesFactory(permissions, /* combine */ true));\r\n break;\r\n case 'AdGroup':\r\n ({ metricCategories, segmentCategories: segCategories } = adGroupMetricCategoriesFactory(permissions, true));\r\n break;\r\n case 'Ad':\r\n ({ metricCategories, segmentCategories: segCategories } = adsMetricCategoriesFactory(permissions, true));\r\n break;\r\n case 'Keyword':\r\n ({ metricCategories, segmentCategories: segCategories } = keywordMetricCategoriesFactory(permissions, true));\r\n break;\r\n case 'SearchTerm':\r\n ({ metricCategories, segmentCategories: segCategories } = searchTermMetricCategoriesFactory(permissions, true));\r\n break;\r\n case 'AdExtensionAssociation':\r\n ({ metricCategories, segmentCategories: segCategories } = 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__79__","__WEBPACK_EXTERNAL_MODULE__105__","__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","rootDisabled","pointerEvents","wrapper","wrapperDisabled","cursor","gridAutoRows","headerWithNewIcon","wordBreak","headerImage","alignSelf","CopilotWelcomeTile","category","onRenderWelcomeTile","isFirstRender","setIsFirstRender","isSendDisabled","useAdsCopilotIsSendDisabled","handleClick","event","handleKeyDown","image","ActionIcon","InsightIcon","SupportIcon","TroubleshootingIcon","onKeyDown","focusMode","Image","alt","src","rowGap","CopilotWelcomeTileList","questions","question","withQuestions","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","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","PartialConversions","IsPartialConversionsEnabled","ColumnConversion","IsColumnConversionEnabled","newMetrics","oldMetrics","addedMetrics","adExtensionMetricCategories","DatePicker","minDate","maxDate","selectedDate","ariaLabel","navigateToFutureAriaLabel","navigateToPastAriaLabel","dateRangeErrors","validateDateRange","set","getState","attributes","animation","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","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","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","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","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","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","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","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":""}