{"version":3,"sources":["../webpack/universalModuleDefinition","../webpack/bootstrap","../webpack-src:/theme-fluent/index.js","../webpack-src:/theme-fluent/src/components/index.js","../webpack-src:/theme-fluent/src/components/alert-style.js","../webpack-src:/theme-fluent/src/components/button-input-style.js","../webpack-src:/theme-fluent/src/components/button-style.js","../webpack-src:/theme-fluent/src/components/close-image-style.js","../webpack-src:/theme-fluent/src/components/control.js","../webpack-src:/theme-fluent/src/components/date-picker-style.js","../webpack-src:/theme-fluent/src/components/drop-down-editor-style.js","../webpack-src:/theme-fluent/src/components/fabric-panel-style.js","../webpack-src:/theme-fluent/src/components/float-button-style.js","../webpack-src:/theme-fluent/src/components/grid-inline-error-style.js","../webpack-src:/theme-fluent/src/components/help-button-style.js","../webpack-src:/theme-fluent/src/components/inline-editor-style.js","../webpack-src:/theme-fluent/src/components/inline-error-style.js","../webpack-src:/theme-fluent/src/components/scrollbar-style.js","../webpack-src:/theme-fluent/src/components/search-box-style.js","../webpack-src:/theme-fluent/src/components/search-box.js","../webpack-src:/theme-fluent/src/components/entity-selector-style.js","../webpack-src:/theme-fluent/src/components/pagination-style.js","../webpack-src:/theme-fluent/src/components/status-style.js","../webpack-src:/theme-fluent/src/components/toggle-button-style.js","../webpack-src:/theme-fluent/src/components/underline-link-style.js","../webpack-src:/theme-fluent/src/components/internal-link-style.js","../webpack-src:/theme-fluent/src/components/spinner-style.js","../webpack-src:/theme-fluent/src/components/ui-blocker-style.js","../webpack-src:/theme-fluent/src/constants/index.js","../webpack-src:/theme-fluent/src/constants/zindexes.js","../webpack-src:/theme-fluent/src/constants/pagePadding.js","../webpack-src:/theme-fluent/src/constants/responsiveSize.js","../webpack-src:/theme-fluent/src/components/grid-plugins/top-grid-panel-style.js","../webpack-src:/theme-fluent/src/components/grid-plugins/column-chooser-style.js","../webpack-src:/theme-fluent/src/components/grid-plugins/column-chooser-override-style.js","../webpack-src:/theme-fluent/src/components/new-feature-label-style.js","../webpack-src:/theme-fluent/src/components/grid-plugins/filter-editor-style.js","../webpack-src:/theme-fluent/src/components/grid-plugins/filter-editor-override-style.js","../webpack-src:/theme-fluent/src/components/grid-plugins/legacy-filter-bar-style.js","../webpack-src:/theme-fluent/src/components/grid-shared/index.js","../webpack-src:/theme-fluent/src/components/grid-shared/body.js","../webpack-src:/theme-fluent/src/components/grid-shared/variables.js","../webpack-src:/theme-fluent/src/components/grid-shared/col-group.js","../webpack-src:/theme-fluent/src/components/grid-shared/columns.js","../webpack-src:/theme-fluent/src/components/grid-shared/footer.js","../webpack-src:/theme-fluent/src/components/grid-shared/global.js","../webpack-src:/theme-fluent/src/components/grid-shared/header.js","../webpack-src:/theme-fluent/src/components/grid-shared/table.js","../webpack-src:/theme-fluent/src/core/index.js","../webpack-src:/theme-fluent/src/core/theme-fluent.js","../../../../../../../../external/@fluentui/react","../webpack-src:/theme-fluent/src/core/dark-theme.js","../../../../../../../../external/underscore","../webpack-src:/temporal-utitlities/index.js","../webpack-src:/temporal-utitlities/src/index.js","../../../../../../../../external/tc39-proposal-temporal","../webpack-src:/temporal-utitlities/src/date-options/default-specific-ranges.js","../webpack-src:/temporal-utitlities/src/date-options/compared-options.js","../webpack-src:/temporal-utitlities/src/date-util.js","../../../../../../../../external/@bingads-webui-universal/time-zone-converter","../webpack-src:/time-aware-cache/src/replacement-strategy/base.es","../webpack-src:/time-aware-cache/src/replacement-strategy/lru.es","../webpack-src:/time-aware-cache/src/constants.es","../../../../../../../../external/@bingads-webui-universal/observer-pattern","../webpack-src:/time-aware-cache/index.js","../webpack-src:/time-aware-cache/src/time-aware-cache.es","../webpack-src:/time-aware-cache/src/replacement-strategy/index.es","../webpack-src:/i18n-model/index.js","../webpack-src:/i18n-model/src/index.js","../../../../../../../../external/bluebird","../../../../../../../../external/globalize","../webpack-src:/i18n-model/src/locale.js","../webpack-src:/i18n-model/src/resource.js","../../../../../../../../external/@bingads-webui-universal/primitive-utilities","../webpack-src:/accessibility-helper/index.js","../webpack-src:/accessibility-helper/src/event-wrappers.js","../../../../../../../../external/@bingads-webui/keycode","../webpack-src:/clarity/index.ts","../webpack-src:/clarity/src/index.ts","../webpack-src:/time-zone-converter/metadata.js","../webpack-src:/time-zone-converter/index.js","../webpack-src:/time-zone-converter/src/time-zone-converter.es","../../../../../../../../bootstrap/2b573647655303f11431","../webpack-src:/observer-pattern/index.es","../webpack-src:/observer-pattern/src/subject.es","../webpack-src:/primitive-utilities/index.ts","../webpack-src:/primitive-utilities/src/index.ts","../webpack-src:/primitive-utilities/src/lodash.ts","../webpack-src:/primitive-utilities/src/string.ts","../webpack-src:/primitive-utilities/src/guid.ts","../webpack-src:/primitive-utilities/src/date.ts","../webpack-src:/primitive-utilities/src/file.ts","../webpack-src:/primitive-utilities/src/promise.ts","../webpack-src:/primitive-utilities/src/color.ts","../webpack-src:/primitive-utilities/src/number.ts","../webpack-src:/primitive-utilities/src/memoize.ts","../webpack-src:/observable/index.js","../webpack-src:/observable/src/observable.js","../webpack-src:/observable/src/promisify-observable.js","../webpack-src:/observable/src/call-observable.js"],"names":["factory","self","__WEBPACK_EXTERNAL_MODULE__49__","installedModules","__webpack_require__","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","ComponentSettings","_interopRequireWildcard","Constants","_index2","keys","forEach","_exportNames","_alertStyle","_buttonInputStyle","_buttonStyle","_closeImageStyle","_control","_datePickerStyle","_dropDownEditorStyle","_fabricPanelStyle","_floatButtonStyle","_gridInlineErrorStyle","_helpButtonStyle","_inlineEditorStyle","_inlineErrorStyle","_scrollbarStyle","_searchBoxStyle","_searchBox","_entitySelectorStyle","_paginationStyle","_statusStyle","_toggleButtonStyle","_underlineLinkStyle","_internalLinkStyle","_spinnerStyle","_uiBlockerStyle","_topGridPanelStyle","_columnChooserStyle","_columnChooserOverrideStyle","_filterEditorStyle","_filterEditorOverrideStyle","_legacyFilterBarStyle","_gridShared","palette","iconFontFamily","& .alert","border","boxShadow","color","neutralPrimary","display","fontSize","height","lineHeight","padding","&.alert-danger .alert-image:before","fontFamily","marginRight","content","&.alert-info .alert-image:before","neutralSecondary","&.alert-warning .alert-image:before","& input.btn-primary[type=\"button\"], input.btn-primary[type=\"submit\"], input.btn-hero[type=\"button\"]","&:focus","concat","white","themePrimary","& input.btn-default[type=\"button\"]","outline","neutralSecondaryAlt","outlineOffset","btnInteractStyle","&:hover","background","neutralLighter","neutralLight","primary","minWidth","borderRadius","textAlign","boxSizing","themeDarkAlt","&:active","themeDark","&:disabled","neutralTertiary",".btn-primary",".btn-hero",".btn-default","_objectSpread",".closeimage","cursor","right","position",".closeimage:before",".form-control","-webkit-box-shadow","backgroundColor","backgroundImage","transition","borderColor","focusedStyle",".k-animation-container","width","& .k-calendar-container","& .k-link:hover","neutralDark","& .k-header","paddingBottom","alignItems","& .k-nav-fast","order","flex","fontWeight","paddingTop","& .k-nav-prev","justifyContent","& .k-nav-next","& .k-icon","& .k-i-arrow-w:before","& .k-i-arrow-e:before","& .k-content","& th, td","& a","& .k-link","& .k-other-month .k-link","& .k-state-selected","& .k-today","themeLighter","& .k-state-focused","& .k-meta-view","& tr","& td","marginBottom","& td:last-child","& .grid-editable-cell select.editor-control.select-editor","borderWidth","borderBottomColor","&:hover, &:focus, &:active","footer","zIndex","commands","marginTop","floatButton","minHeight","&:active, &:focus, &:hover","neutralQuaternaryAlt","& .inline-editor-errors","& .error-messages","listStyleType","& .error","&:before","red","& .error-message",".helpbutton","verticalAlign","marginLeft","outlineColor","black","textDecoration",".helpbutton::before","top",".custom-parameters-inline-edit-popup",".grid-popupeditor .form-inline .form-group",".inline-editor-errors","& .grid-error","&.spritedimage","&.spritedimage:before","::-webkit-scrollbar","::-webkit-scrollbar-track","::-webkit-scrollbar-thumb","::-webkit-scrollbar:horizontal","::-webkit-scrollbar-track:horizontal","::-webkit-scrollbar-thumb:horizontal","& .searchbox","& .searchbox .form-horizontal","& .searchbox-input","paddingLeft","& .searchbox .form-control","borderBottom","& .filter_search_icon_small","& .filter_search_icon_small:before","inputGroup","overflow","input","style","bottom","left","icon","& .ba-campaign-selector, & .ba-campaign-adgroup-selector","& .ba-list-selector","flexDirection","& .list-selector-item","& .list-selector-content","& .list-selector-select-all-bar","& .arrow-button.enabled","& .arrow-button.remove","& .enabled.arrow-button:before, & .arrow-button.remove:before","& .multi-selector","& .ba-entity-selector","& .multi-item-container","& .added-to-result-list","& .ba-campaign-adgroup-selector .selected-item, .ba-campaign-selector .selected-item","maxWidth","& .ba-campaign-selector, & .ba-campaign-adgroup-selector, & .disclaimer-selector, & .audience-planner-location-selector","& .dropdown-toggle","&:focus, &:active","& .selected-item","textOverflow","overflowWrap","wordBreak","whiteSpace","& .icon-right","float","& .glyphicon-triangle-bottom, .glyphicon-pencil","& .glyphicon-triangle-bottom:before","& .glyphicon.glyphicon-pencil::before","& .dropdown-toggle:focus:after, .dropdown-toggle:active:after","& .dropdown-menu","& .ba-search-box ","borderTop","borderLeft","borderRight","& .search-box__input","& .search-box__icon","& .search-box__icon:before","& .list-selector-header","& .panel-heading","& .panel-title","margin","& > div, & .item-content","paddingRight","& .statusIcon","& .text","& .selected","& .list-selector-item:hover","& .list-selector-item:focus","& .list-selector-empty","& .ba-cascader-selector","& .ba-cascader-selector>div","& .ba-cascader-selector>div:nth-child(2)>div:nth-child(2)","& .pagination-container","& .ba-pagination","& .ba-campaign-adgroup-selector, & .ba-campaign-selector","& .dropdown-toggle .dropdown-edit-mode-parent-text","& .item-content-parent-info","& .ba-pagination, .dlb-pager-container, .pagination-control","& > .text","& > span","& button","& button:hover","& button:disabled","& .prev + .text, .pager-previous + .text","& .pager-input","& .glyphicon-triangle-left, & .glyphicon-triangle-right","& .glyphicon-triangle-left:before","& .glyphicon-triangle-right:before","& .pager, .location-bid-pager-view","& .pager-input, .page-number-input, .grid-pager-input","& .pager-input[disabled], & .page-number-input[disabled], & .grid-pager-input[disabled]","& .pager-previous, & .pager-next, & .glyphicon-triangle-left, & .glyphicon-triangle-right","& .pager-previous, & .pager-next","& .pager-previous:hover, & .pager-next:hover","& .pager-previous-disabled, & .pager-next-disabled","& .pager-previous-disabled:before, & .pager-previous:before","& .pager-next-disabled:before, & .pager-next:before","& .pager-totalCount","& .pagination-control","& .page-size-selector","& .pager","& .statusDraft_icon","fontStyle","-webkit-font-smoothing","-moz-osx-font-smoothing","& .statusDraft_icon::before","& .statusDeleted_icon","& .statusDeleted_icon::before","redOrange10","& .statusEnabled_icon","& .statusEnabled_icon::before","green","& .statusExcluded_icon","& .statusExcluded_icon::before","& .statusPaused_icon","& .statusPaused_icon::before","& .statushypendisplay","& .statushypendisplay::before","& .toggle","& .toggle-button","boxsizing","transition-duration","-webkit-transition-duration","& .toggle-handle","borderStyle","& .toggle-on","& .toggle-off","elementLocator","isGreyBackground","[object Object]","themeDarker","size","borderLeftColor","borderRightColor","themeLight","borderTopColor","animation","@keyframes spinner","to","transform","_constants","assign",".blocker","ZIndexShellComponents","Loader",".blocker-global, .blocker-local",".blocker-global",".blocker, .blocker-global, .blocker-local","& .blocker-indicator","& .blocker-image","getBlockerStyle","spinnerKeyframe",".blocker-panel",".blocker-panel + .blocker-indicator","& .blocker-text","& .react-block-ui","& > div:last-child","_zindexes","_pagePadding","_responsiveSize","_HelpContainer","_BootstrapPopover","_BootstrapModal","_BootstrapModalBackdrop","ModalBackDrop","Header","Panel","TopBanner","PromotionBanner","Nav","Status","Menu","Tab","SubTab","Content","GridToolbar","GridHeader","StatusPopup","mainSectionLeftPadding","smallMainSectionLeftPadding","& .panel","underlineLinkStyle","& .alert-info .alert-info-inline","internalLinkStyle","& .panel-body","& hr","& .panel-footer","& input.btn, & button.btn","& input.btn:focus","& input.btn-primary:focus","& .previewTable","maxHeight","& .column-chooser .option","& .column-chooser .option:hover","& .column-chooser input[type=\"checkbox\"]","& .column-chooser-instructions","& .column-chooser-categories","& .column-chooser-list","& .column-chooser-list+.column-chooser-list","& .column-chooser-list.right","& .column-chooser-option-header","& .column-chooser-bulk-control","& .column-chooser-category","& .column-chooser-category.active","& .column-chooser-category:focus, & .column-chooser-category.k-state-focused","& .column-chooser-options","listStyle","overflowX","overflowY","& .column-chooser-options.selected","& .column-chooser-options.available","& .column-chooser-option","borderLeftWidth","borderRightWidth","& .column-chooser-option:hover","& .column-chooser-message","& .column-chooser-option-selected","& .column-chooser-option-selected:hover","& .column-chooser-option-selected .remove","& .column-chooser-option-fixed","& .column-chooser-option-unmovable","& .column-chooser-option-placeholder","opacity","& .column-chooser","& .column-chooser .panel .panel-body .column-chooser-selection-area","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .column-chooser-option-header","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .column-chooser-search-box","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .search-input","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .glyphicon-search","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .glyphicon-search:before","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .category-tabs","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .category-tabs>li","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .category-tabs>li.active","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list .column-chooser-bulk-control","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options span.option-not-selected","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options span.option-status","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options span.option-status.disabled","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options a.add-column-link","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .column-chooser-selected-header","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item.draggable-list__item-locked","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item.draggable-list__item-draggable","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item.draggable-list__item-draggable.draggable-list__item-preview","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item.draggable-list__item-draggable span.remove","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item .selected-list-item span","M","W","fallbacks","userSelect","& .column-chooser .panel .panel-body .save-column-view","& .column-chooser .panel .panel-body .save-column-view .save-checkbox","& .column-chooser .panel .panel-body .save-column-view .save-checkbox .column-chooser-save-column","& .column-chooser .panel .panel-body .save-column-view .save-checkbox input.column-chooser-saved-name","& .column-chooser .panel .panel-footer","& .column-chooser .panel-component","& .column-chooser .panel-component .panel-heading","& .column-chooser .panel-component .panel-title","fontColor","& .column-chooser .panel-component .panel-body","& .column-chooser .panel-form","& .column-chooser .panel-form.noPadding","& .column-chooser .panel-form .panel-heading","& .column-chooser .panel-form .section","& .column-chooser .panel-form .panel-body.noPadding","& .column-chooser .panel-form-footer","& .column-chooser .panel.panel-white","& .column-chooser .panel-body","& .column-chooser .panel-body:before, & .column-chooser .panel-body:after","& .column-chooser .panel-body:after","clear","& .column-chooser .panel-heading","& .column-chooser .panel-heading>.dropdown .dropdown-toggle","& .column-chooser .panel-title","& .column-chooser .panel-title>a","& .column-chooser .panel-footer","& .column-chooser hr","& .column-chooser .save-column-checkbox","_newFeatureLabelStyle","& .column-chooser-selection-area","getNewFeatureLabelStyle","& .option","& .category-tabs","& li a:after","& > li","& .new-feature-label","& > li.active","& > a.currentActive","& .options-view .column-chooser-option-list","& .arrow-button","& ul.column-chooser-options","& span.option-not-selected","& span.option-name","& .option-status, & a.add-column-link","& .column-chooser-editable-picker","& .custom-column-remove","& .glyphicon-pencil","& .glyphicon-remove","& span.option-status.enabled","& a.add-column-link","& .inapplicable-column","& .custom-column-add","& .remove-all-in-list, .add-all-in-list","& .invalid-custom-column:focus","& .option-name","& .column-chooser-selected","& .column-chooser-selected-header","& .column-chooser-selected-header:before","& .column-chooser-selected-header:after","& .remove-all-in-selected-list","& .column-chooser-selected-list","& .draggable-list-view","& ul.draggable-list","& li.draggable-list-item","& .selected-list-item","& .selected-item-name","& .trigger-icon","&:after","&.selected, &:focus, &:hover","& .trigger-icon:before","letterSpacing","writingMode","&.selected","& li.draggable-list-item.draggable-list__item-locked","& li.draggable-list-item.draggable-list__item-draggable","& .save-column-view","& .save-checkbox","& label+input","& .column-chooser-save-column","& .save-column-checkbox","& input[type=\"checkbox\"]","& .column-chooser-saved-name","orange","& .predicate-row","& .filter-editor .panel","& .filter-body.filter-editor .save-form input[type=\"checkbox\"]","& .filter-body.filter-editor .save-form .btn + .btn","& .filter-body.filter-editor .save-form .btn + .checkbox","& .filter-body.filter-editor .save-form .checkbox label + input","& .predicate-list li","& .predicate-list li .error-row","& .predicate-list li .error-row label","& .predicate-list li .predicate-row .filter-predicate-property","& .predicate-list li .predicate-row .filter-predicate-property > .btn.btn-default","& .predicate-list li .predicate-row .filter-predicate-property > .btn.btn-default > .selected","& .predicate-list li .predicate-row .filter-predicate-property + .predicate-operator","& .predicate-list li .predicate-row .form-control","& .predicate-list li .predicate-row > * + *","& .predicate-list li .predicate-row .predicate-property","& .predicate-list li .predicate-row .predicate-operator","& .predicate-list li .predicate-row .predicate-operator + .predicate-value","& .checkbox-inline, & .checkbox-inline + .checkbox-inline, & .radio-inline, & .radio-inline + .radio-inline","& .checkbox-inline:last-child, & .radio-inline:last-child","& .predicate-list li .predicate-row .predicate-value","& .predicate-list li .predicate-row .predicate-value > input","& .predicate-list li .predicate-row .predicate-value + .remove","& .predicate-list li .predicate-row .predicate-value button.selector-dropdown-button","& .predicate-list li .predicate-row .predicate-value .selector.dropdown-menu","& .predicate-list li .predicate-row .single-operator-column, & .predicate-list li .predicate-row .single-property-column","& .predicate-list li .predicate-row .dropdown-submenu","& .predicate-list li .predicate-row .dropdown-submenu li","& .predicate-list li .predicate-row .dropdown-submenu > span","& .predicate-list li .predicate-row .dropdown-submenu:hover > .dropdown-menu","visibility","& .predicate-list li .predicate-row .dropdown-submenu .spritedimage","& .predicate-list li .predicate-row .btn .caret","& .filter-header","& .filter-header .filter-button","& .filter-header .filter-button:hover","& .filter-header .glyphicon-filter","& .filter-header .filterMenu","& .filter-header .filterMenu .saved","& .filter-header .filterMenu .new, & .filter-header .filterMenu .apply","& .filter-header .filterMenu .new:hover, & .filter-header .filterMenu .apply:hover, & .filter-header .filterMenu .saved>li:hover","& .filter-header .filterMenu .delete","& .filter-header .filterMenu .apply-header","& .filter-header .quick","& .filter-header .quick .quick-text","& .filter-header .quick .quick-text:active","& .filter-body .save-form","& .filter-body .save-form h5.checkbox","& .filter-body .save-form .name","& .grid-toolbar-bar","& .predicate-list>ul","& .predicate-list>ul>li.row","& .predicate-list>ul>li.row>div","& .predicate-list>ul>li.row .operator-single","& .predicate-list>ul>li.row .dropdown .dropdown-control .glyphicon-triangle-bottom","& .predicate-list>ul>li.row .dropdown .dropdown-menu","& .predicate-list>ul>li.row span.datepicker","& .predicate-list>ul>li.row ul.enum-options>li","& .predicate-list>ul>li.row ul.enum-options>li input[type=\"checkbox\"]","& .predicate-list a.remove, & .predicate-list a.new","& ol, & ul","& .filter-editor","& .save-form .checkbox label","& .glyphicon-remove:before","& .glyphicon","font-family","font-size","font-style","& .glyphicon.glyphicon-remove","& .glyphicon.glyphicon-plus","& .glyphicon-plus:before","& .delivery-status-category-container:first-of-type","& .delivery-status-category-container + .delivery-status-category-container","& .filter_button","& .filter-bar","& .panel-component","& .filter_title_collapsed","& .filter_row_readonly .humanized","& .column, & .filter_operator","& .filterValue","& .filterand","& .filter_links","&:nth-child(2n)","&:last-child","& .filter_title_collapsed, & .filter_row_readonly, & .filter_links","_body","_colGroup","_columns","_footer","_global","_header","_table","variables","GridSharedStyles","getSharedBodyStyles","getSharedColGroupStyles","getSharedColumnsStyles","getSharedFooterStyles","getSharedGlobalStyles","getSharedHeaderStyles","getSharedTableStyles","_variables","components","& tr.segment-row","& .segment-value","& tr.aggregate-row","& tr.aggregated-row","totalRowBackgroundColor","tableBorder","&[data-key]:first-child, &:not([data-key]) + tr[data-key]","&[data-key]:hover, &.row-selected[data-key], &.row-selected[data-key]:hover","&.row-selected","& td a","&:hover, &.row-selected, &.row-selected:hover","&.grid-error-row","& ul.grid-error-list","gridPaddingLeft","PagePadding","&.col-selection","&","&:first-child","& span","& tr.noborder","gridPaddingComponsation","& .form-control.page-size-selector","& .nav-button","&.prev","& + .text","&.next","& .page-number-input",".bingadsgrid","& .grid-noresult, & .grid-noresult-empty, & .noresult",".table-container .glyphicon.glyphicon-triangle-left",".table-container .glyphicon.glyphicon-triangle-left::before",".table-container .btn:disabled .glyphicon.glyphicon-triangle-left::before",".table-container .glyphicon.glyphicon-triangle-right",".table-container .glyphicon.glyphicon-triangle-right::before",".table-container .btn:disabled .glyphicon.glyphicon-triangle-right::before",".table-container .glyphicon.glyphicon-triangle-bottom",".table-container .glyphicon.glyphicon-triangle-bottom::before",".table-container .btn:disabled .glyphicon.glyphicon-triangle-bottom::before","& th","& tr.overall-total-row","totalRowBorderTop","& th.column-header","headerRowBorderTop","headerRowBorderBottom","& .helpbutton::before","& span.grid-header-text","& span.grid-header-helpId","headerRowBackgroundColor","& th:first-child","&.pop-enabled + tr.pop-enabled th:first-child","& th.column-header-sortable","&.grid-cross-page-select-all","& .glyphicon-arrow-up:before","& .glyphicon-arrow-down:before","& th span.pop-toggle-icon.clickable","&.pop-expand:before","&.pop-collapse:before","& tr.pop-enabled th.column-header.pop-column-header > div.column-header-container","& .iconba","& .grid-disabled","_themeFluent","_darkTheme","_react","ThemeFluent","createTheme","NeutralColors","gray190","gray160","neutralPrimaryAlt","gray150","gray130","gray110","gray90","neutralTertiaryAlt","gray60","neutralQuaternary","gray50","gray40","gray30","gray20","neutralLighterAlt","gray10","CommunicationColors","shade20","shade30","shade10","tint20","tint30","themeLighterAlt","tint40","themeSecondary","tint10","themeTertiary","SharedColors","red10","redDark","red20","globalBackground","mainMenuHoverBackground","effects","roundedCorner2","elevation4","Depths","depth4","elevation8","depth8","elevation16","depth16","elevation64","depth64","DarkTheme","__WEBPACK_EXTERNAL_MODULE__7__","__WEBPACK_EXTERNAL_MODULE__91__","__WEBPACK_EXTERNAL_MODULE__95__","_index","_defaultSpecificRanges","_comparedOptions","_dateUtil","date","CivilDate","year","month","date1","date2","isDateInvalid","compareCivilDate","start","end","compareCivilMonth","getCivilDateFromDate","Date","dateRange","_","some","includeToday","withDateChecker","dayOfWeek","getCivilDateDayOfWeek","plus","days","range","minDate","maxDate","isRangeValid","isDateAvailable","t2","day","getTime","t1","Math","round","range1","range2","start1","start2","end1","end2","_underscore","_tc39ProposalTemporal","isNaN","isUndefined","isNull","isValidDate","isDate","getFullYear","getMonth","getDate","maxCivilDate","minCivilDate","isCivilDateInRange","civilDate","getDay","func","RANGES","Yesterday","Last7Days","Today","Custom","Last30Days","Last14Days","ThisWeek","ThisWeekMon","LastWeek","ThisMonth","LastMonth","Last3Months","Last6Months","LastWeekMon","ThisYear","LastYear","EntireTimeLast18Months","EntireTimeLast5Years","EntireTime","i18n","timeZone","todayObj","getToday","today","yesterday","thisSunday","thisMonday","getThisMonday","last7day","last14day","last30day","lastMonday","lastSunday","lastSaturday","thisMonthFirstDay","getCivilDateMonthStart","lastMonthlastDay","lastMonthFirstDay","minSupportDay","years","rangeId","undefined","ComparedType","LastPeriod","ComparedOptions","type","textToExport","keyToExport","specificRangeId","getLastMonth","difference","parseInt","_timeZoneConverter","lastMonthDate","months","formatCivilDate","dateFormat","raw","getDateObj","dateString","parseCivilDate","dateObj","legacyTimeZone","toIANATimeZone","fromLegacyTimeZone","dateFromDatePicker","lcid","formattedStart","selectedComparedRange","formattedEnd","compared","text","comparedOption","parseDate","RangeStartDate","selectedRange","RangeEndDate","RangeId","rangeType","Rangelcid","RangeIndex","rangeIndex","RangeDays","rangeDays","dateData","__WEBPACK_EXTERNAL_MODULE__36__","keyToReplace","initializeCache","cache","subscribe","this","_base","insertLRURecord","record","anchor","prev","next","promoteLRURecord","lru","records","indices","pseudoRecord","removeLRURecord","adjustHeap","index","length","indexParent","recordParent","exp","indexL","indexR","recordL","recordR","indexChild","recordChild","ReplacementStrategy","constructor","limit","DEFAULT_LIMIT","super","floor","Error","validateLimit","timestamp","_cache$lru","recordLLT","onGet","onSet","entry","_cache$lru2","push","onDel","EXP_INVALIDATED","_cache$lru3","_timeAwareCache","_observerPattern","validateTTL","ttl","validateKey","stubEntry","Subject","Infinity","strategy","defaultStrategy","entries","now","notify","set","validateValue","entryNew","del","purge","_lru","UnlimitedReplacementStrategy","__WEBPACK_EXTERNAL_MODULE__3__","__WEBPACK_EXTERNAL_MODULE__4__","__WEBPACK_EXTERNAL_MODULE__5__","__WEBPACK_EXTERNAL_MODULE__8__","_interopRequireDefault","_bluebird","_globalize","_locale","_resource","localeManager","LocaleManager","dynamicLocaleInstances","assertReady","isReady","debugInfo","locale","synchronousResource","p$data","resource","synchronousGlobalize","globalize","isThenable","isFunction","then","loadData","_this","translationData","loadTranslationData","cldrData","loadCLDRData","Promise","props","resolve","data","Resource","failFast","cldr","Globalize","dateMethodOptions","_ref","arguments","skeleton","time","datetime","_ref$timeZone","pick","Boolean","withSignWrapper","withSign","method","abs","getCldr","minusSign","main","plusSign","replace","RangeError","numberFormatterWithSign","options","globalizeFormatter","numberFormatter","currencyFormatterWithSymbol","currency","withSymbol","currencyFormatter","currencyToPartsFormatter","parts","map","part","join","I18nModel","_ref2","_this2","_ref2$locale","_ref2$failFast","defaultFailFast","_classCallCheck","missingKeys","parserFormatterCache","fnName","i18nModel","realMethod","createCache","specificMethodCache","_len","args","Array","_key","JSON","stringify","apply","withGlobalizeCache","p$globalLocale","isFulfilled","globalLocale","setLocale","setGlobalLocale","all","instance","load","default","loadTimeZone","failfast","ready","return","alt","defaultRegionKey","attributes","region","supplemental","_ref4$timeZone","_this$formatDateToPar2","_slicedToArray","formatDateToParts","Number","toString","_ref5$timeZone","_this$formatDateToPar4","hour","minute","second","_synchronousResource$","_len2","_key2","str","getString","error","defer","quarter","_ref6$style","_ref7$style","_ref8$style","calendar","defaultProperties","dateTimeFormats","availableFormats","yMd","dateFormats","dateTime","timeFormats","number","decimalFormatter","_ref10","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits","useGrouping","compact","_ref10$withSign","decimalToFixedFormatter","_ref11","_ref11$digits","digits","_ref11$withSign","decimalToIntegerFormatter","_ref12","_ref12$withSign","decimalParser","numberParser","decimalValidator","parser","isString","percentFormatter","_ref13","_ref13$withSign","percentToFixedFormatter","_ref14","_ref14$digits","_ref14$withSign","percentParser","percentValidator","omit","dateFormatter","dateToPartsFormatter","dateParser","dateValidator","civilDateFormatter","defaults","civilDateParser","getUTCFullYear","getUTCMonth","getUTCDate","toISOString","substr","unit","unitFormatter","_ref15","form","_ref15$numberFormatte","list","listFormatter","_ref16$style","_style$split2","split","variant","cldrTypeName","listPattern","template","pattern","_ref17","_ref18","first","twoTemplate","middleTemplate","middle","startTemplate","endTemplate","_list","_toArray","rest","slice","reduce","initial","memo","item","last","_this3","_len3","_key3","_ref19","p$global","resolveGlobalLocale","putil","isObject","model","_ref2$preprocess","preprocess","identity","ret","ex","curlyTemplate","compiled","_eventWrappers","_keycode","wrapKeyDownEvent","availablekeys","handler","keyCode","params","submitEvent","KEY_CODES","Enter","Space","projectId","tags","userId","sessionId","pageId","window","document","a","q","createElement","async","src","y","getElementsByTagName","parentNode","insertBefore","initialize","setClarityTag","clarity","each","tagValue","__WEBPACK_EXTERNAL_MODULE__14__","AbuDhabiMuscat","legacy","offset","iana","Adelaide","Alaska","Almaty_Novosibirsk","AmsterdamBerlinBernRomeStockholmVienna","Arizona","AstanaDhaka","AthensIslandanbulMinsk","AtlanticTimeCanada","AucklandWellington","Azores","Baghdad","BakuTbilisiYerevan","BangkokHanoiJakarta","BeijingChongqingHongKongUrumqi","BelgradeBratislavaBudapestLjubljanaPrague","BogotaLimaQuito","Brasilia","Brisbane","BrusselsCopenhagenMadridParis","Bucharest","BuenosAiresGeorgetown","Cairo","CanberraMelbourneSydney","CapeVerdeIsland","CaracasLaPaz","CasablancaMonrovia","CentralAmerica","CentralTimeUSCanada","ChennaiKolkataMumbaiNewDelhi","ChihuahuaLaPazMazatlan","Darwin","EasternTimeUSCanada","Ekaterinburg","FijiKamchatkaMarshallIsland","Greenland","GreenwichMeanTimeDublinEdinburghLisbonLondon","GuadalajaraMexicoCityMonterrey","GuamPortMoresby","HararePretoria","Hawaii","HelsinkiKyivRigaSofiaTallinnVilnius","Hobart","IndianaEast","InternationalDateLineWest","IrkutskUlaanBataar","IslandamabadKarachiTashkent","Jerusalem","Kabul","Kathmandu","Krasnoyarsk","KualaLumpurSingapore","KuwaitRiyadh","MagadanSolomonIslandNewCaledonia","MidAtlantic","MidwayIslandand_Samoa","MoscowStPetersburgVolgograd","MountainTime_US_Canada","Nairobi","Newfoundland","None","Nukualofa","OsakaSapporoTokyo","PacificTimeUSCanadaTijuana","Perth","Rangoon","Santiago","SarajevoSkopjeWarsawZagreb","Saskatchewan","Seoul","SriJayawardenepura","Taipei","Tehran","Vladivostok","WestCentralAfrica","Yakutsk","findKey","timeZoneMetadata","_primitiveUtilities","_metadata","allTimeZones","configurable","observers","Set","observer","add","delete","action","__WEBPACK_EXTERNAL_MODULE__38__","_lodash","_string","_guid","_date","_file","_promise","_color","_number","_memoize","invoke","iteratee","String","currentSum","arr","merge","_i","dest","destKey","extend","path","defaultValue","sub","keyPath","castPath","lastIndex","nested","funcs","compose","reverse","clone","sourceCopyMap","result_1","isArray","Map","array","comparator","obj","uniq","result","every","res","has","templateString","settings","match","distinguishWideChar","displayLength","noMatch","escape","evaluate","interpolate","wideCharPattern","RegExp","IsControlRegex","test","s4","random","substring","selectedDate","selected","withoutTime","min","max","errors","lookBackMonths","lastNDate","firstDateNMonthsAgo","lookBackYears","toJSON","performance","timing","navigationStart","firstRange","secondRange","convertForComparison","dates","comparedStart","comparedEnd","convertDateBetweenTimeZones","from","returnDate","valueOf","setHours","lookBackDays","_a","_b","formatDate","img","blob","dataURItoBlob","postfix","File","lastModified","dataURI","reg","arrs","header","byteString","atob","Uint8Array","charCodeAt","Blob","lastPromise","promiseFactory","finish","cancel","noop","fail","lastPromiseCanceled","finishProcess","factoryArgs","promise","processHandle","currentPromise","promiseChain","callbacks","queueNextWork","AsyncStatus","SUCCESS","ERROR","status","onSuccess","onError","err","_c","onCancel","CANCELLED","cleanup","isEmpty","shift","reject","dequeuePromise","asyncToken","chain","on","cancelCallback","colorToGrayscale","rgbInteger","rgb","blue","numberToRgb","integer","isNumber","dividend","remainder","code","remain","indexOf","memoized","resolveFromCache","Cache","toCache","nestedCache","lruTrigger","val","_observable","_callObservable","_promisifyObservable","SubscriptionObserver","complete","subscription","closed","Subscription","subscriber","unsubscribeCallback","isClosed","unsubscribe","toPromise","promisifyObservable","observable","Observable","fetch","afterSubscribe","afterUnsubscribe","hardResetCacheData","state","setData","invalidate","catch","hasObservers"],"mappings":"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","file":"static/js/application.initial~aaa0aa0a.f643b944.chunk.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"underscore\"), require(\"bluebird\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"underscore\", \"bluebird\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"underscore\"), require(\"bluebird\")) : factory(root[\"underscore\"], root[\"bluebird\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__7__, __WEBPACK_EXTERNAL_MODULE__38__) {\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 = 48);\n","import * as ComponentSettings from './src/components/index';\r\nimport * as Constants from './src/constants';\r\n\r\nexport {\r\n ComponentSettings,\r\n ComponentSettings as ThemeFluentComponentSettings, // alias\r\n Constants\r\n};\r\nexport * from './src/core/index';\r\n","export { alertStyle } from './alert-style';\r\nexport { buttonInputStyle } from './button-input-style';\r\nexport { btnStyle, btnInteractStyle } from './button-style';\r\nexport { closeImageStyle } from './close-image-style';\r\nexport { controlStyle } from './control';\r\nexport { datePickerStyle } from './date-picker-style';\r\nexport { dropDownEditorStyle } from './drop-down-editor-style';\r\nexport { fabricPanelStyle } from './fabric-panel-style';\r\nexport { floatButtonStyle } from './float-button-style';\r\nexport { gridInlineErrorStyle } from './grid-inline-error-style';\r\nexport { helpbuttonStyle } from './help-button-style';\r\nexport { InlineEditorStyle } from './inline-editor-style';\r\nexport { inlineErrorStyle } from './inline-error-style';\r\nexport { scrollbarStyle } from './scrollbar-style';\r\nexport { searchboxStyle } from './search-box-style';\r\nexport { SearchBox } from './search-box';\r\nexport { entitySelectorStyle } from './entity-selector-style';\r\nexport { paginationStyle } from './pagination-style';\r\nexport { statusStyle } from './status-style';\r\nexport { toggleButtonStyle } from './toggle-button-style';\r\nexport { underlineLinkStyle } from './underline-link-style';\r\nexport { internalLinkStyle } from './internal-link-style';\r\nexport { getBlockerStyle, spinnerKeyframe } from './spinner-style';\r\nexport { uiblockerStyle, legacyUIBlockerStyle, reactUIBlockerStyle } from './ui-blocker-style';\r\n\r\n// shared grid plugins\r\nexport { getTopGridPanelCommonStyle } from './grid-plugins/top-grid-panel-style';\r\nexport { columnChooserStyle } from './grid-plugins/column-chooser-style';\r\nexport { getColumnChooserOverrideStyle } from './grid-plugins/column-chooser-override-style';\r\nexport { filterEditorStyle } from './grid-plugins/filter-editor-style';\r\nexport { getFilterEditorOverrideStyle } from './grid-plugins/filter-editor-override-style';\r\nexport { getLegacyFilterBarStyle } from './grid-plugins/legacy-filter-bar-style';\r\n\r\n// shared grid styles\r\nexport { GridSharedStyles } from './grid-shared';\r\n","export const alertStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '& .alert': {\r\n border: 'none',\r\n boxShadow: 'none',\r\n color: palette.neutralPrimary,\r\n display: 'flex',\r\n fontSize: 12,\r\n height: 'auto',\r\n lineHeight: '16px',\r\n padding: '8px 32px 8px 8px',\r\n\r\n '&.alert-danger .alert-image:before': {\r\n fontFamily: iconFontFamily,\r\n fontSize: 16,\r\n lineHeight: '16px',\r\n color: '#A80000',\r\n marginRight: 8,\r\n content: '\"\\\\EA39\"',\r\n },\r\n\r\n '&.alert-info .alert-image:before': {\r\n fontFamily: iconFontFamily,\r\n fontSize: 16,\r\n lineHeight: '16px',\r\n color: palette.neutralSecondary,\r\n marginRight: 8,\r\n content: '\"\\\\E946\"',\r\n },\r\n\r\n '&.alert-warning .alert-image:before': {\r\n fontFamily: iconFontFamily,\r\n fontSize: 16,\r\n lineHeight: '16px',\r\n color: '#d83b01',\r\n marginRight: 8,\r\n\r\n content: '\"\\\\E7BA\"',\r\n },\r\n },\r\n});\r\n","export const buttonInputStyle = ({ palette = {} }) => ({\r\n '& input.btn-primary[type=\"button\"], input.btn-primary[type=\"submit\"], input.btn-hero[type=\"button\"]': {\r\n '&:focus': {\r\n boxShadow: `inset 0 0 0 1px ${palette.white}`,\r\n border: `2px solid ${palette.themePrimary}`,\r\n },\r\n },\r\n\r\n '& input.btn-default[type=\"button\"]': {\r\n '&:focus': {\r\n outline: `1px solid ${palette.neutralSecondaryAlt}`,\r\n boxShadow: `inset 0 0 0 1px ${palette.neutralSecondary}`,\r\n outlineOffset: 0,\r\n border: `2px solid ${palette.white}`,\r\n },\r\n },\r\n});\r\n","export const btnInteractStyle = ({ palette = {} }) => ({\r\n '&:hover': {\r\n background: palette.neutralLighter,\r\n },\r\n '&:focus': {\r\n background: palette.neutralLight,\r\n border: `1px solid ${palette.neutralSecondaryAlt}`,\r\n },\r\n});\r\n\r\nexport const btnStyle = ({ palette = {} }) => {\r\n const primary = {\r\n height: 32,\r\n minWidth: 80,\r\n background: palette.themePrimary,\r\n borderRadius: 2,\r\n textAlign: 'center',\r\n color: palette.white,\r\n boxSizing: 'border-box',\r\n\r\n '&:hover': {\r\n background: palette.themeDarkAlt,\r\n },\r\n\r\n '&:focus': {\r\n background: palette.themePrimary,\r\n outline: 'none',\r\n },\r\n\r\n '&:active': {\r\n background: palette.themeDark,\r\n },\r\n\r\n '&:disabled': {\r\n background: palette.neutralLighter,\r\n color: palette.neutralTertiary,\r\n },\r\n };\r\n\r\n return {\r\n '.btn-primary': primary,\r\n '.btn-hero': primary,\r\n\r\n '.btn-default': {\r\n height: 32,\r\n minWidth: 80,\r\n background: palette.white,\r\n borderRadius: 2,\r\n textAlign: 'center',\r\n color: palette.neutralPrimary,\r\n border: `1px solid ${palette.neutralSecondaryAlt}`,\r\n\r\n ...btnInteractStyle({ palette }),\r\n\r\n '&:disabled': {\r\n background: palette.neutralLighter,\r\n color: palette.neutralTertiary,\r\n },\r\n },\r\n };\r\n};\r\n","export const closeImageStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '.closeimage': {\r\n fontFamily: iconFontFamily,\r\n color: palette.neutralSecondary,\r\n cursor: 'pointer',\r\n right: -8,\r\n position: 'relative',\r\n },\r\n\r\n '.closeimage:before': {\r\n content: '\"\\\\E711\"',\r\n },\r\n});\r\n","export const controlStyle = ({ palette = {} }) => ({\r\n '.form-control': {\r\n '-webkit-box-shadow': 'none',\r\n backgroundColor: palette.white,\r\n backgroundImage: 'none',\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n borderRadius: 2,\r\n boxShadow: 'none',\r\n color: palette.neutralPrimary,\r\n display: 'block',\r\n fontSize: 14,\r\n height: 32,\r\n lineHeight: 1.5,\r\n padding: '6px 12px',\r\n transition: 'border-color .15s ease-in-out, box-shadow .15s ease-in-out',\r\n\r\n '&:active': {\r\n borderColor: palette.themePrimary,\r\n },\r\n\r\n '&:hover': {\r\n borderColor: palette.neutralPrimary,\r\n },\r\n\r\n '&:focus': {\r\n '-webkit-box-shadow': 'none',\r\n borderColor: palette.themePrimary,\r\n boxShadow: 'none',\r\n outline: 0,\r\n },\r\n },\r\n});\r\n","/* eslint-disable no-unused-vars */\r\nexport const datePickerStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets', focusedStyle }) => ({\r\n '.k-animation-container': {\r\n width: '220px !important',\r\n height: 'auto !important',\r\n background: palette.white,\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: 2,\r\n\r\n '& .k-calendar-container': {\r\n position: 'relative !important',\r\n padding: 12,\r\n width: '100%',\r\n height: '100%',\r\n\r\n '& .k-link:hover': {\r\n backgroundColor: `${palette.neutralLight} !important`,\r\n color: `${palette.neutralDark} !important`,\r\n },\r\n\r\n '& .k-header': {\r\n width: '100%',\r\n paddingBottom: 4,\r\n backgroundColor: 'white',\r\n display: 'flex',\r\n alignItems: 'center',\r\n\r\n '& .k-nav-fast': {\r\n order: '1',\r\n flex: '1',\r\n lineHeight: '19px',\r\n fontWeight: 600,\r\n textAlign: 'left',\r\n display: 'flex',\r\n paddingTop: 4,\r\n paddingBottom: 5,\r\n color: palette.neutralPrimary,\r\n },\r\n\r\n '& .k-nav-prev': {\r\n order: '2',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n '& .k-nav-next': {\r\n order: '3',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n\r\n '& .k-icon': {\r\n fontFamily: iconFontFamily,\r\n fontSize: 12,\r\n lineHeight: '12px',\r\n width: 28,\r\n height: '28px',\r\n padding: 8,\r\n color: palette.neutralSecondary,\r\n },\r\n\r\n '& .k-i-arrow-w:before': {\r\n content: '\"\\\\E74A\"',\r\n },\r\n\r\n '& .k-i-arrow-e:before': {\r\n content: '\"\\\\E74B\"',\r\n },\r\n },\r\n\r\n '& .k-content': {\r\n '& th, td': {\r\n width: 28,\r\n height: '28px',\r\n textAlign: 'center',\r\n fontWeight: 'normal',\r\n background: palette.white,\r\n borderRadius: 2,\r\n lineHeight: '16px',\r\n fontSize: 12,\r\n\r\n '& a': {\r\n color: '#212121',\r\n display: 'flex',\r\n width: '28px',\r\n height: '28px',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n },\r\n\r\n '& .k-link': {\r\n background: palette.neutralLighter,\r\n borderRadius: '2px',\r\n },\r\n\r\n '& .k-other-month .k-link': {\r\n background: palette.white,\r\n },\r\n\r\n '& .k-state-selected': {\r\n '& .k-link': {\r\n // outline will only be visible when media query (forced-colors: active)\r\n outline: '1px dashed transparent',\r\n background: palette.themePrimary,\r\n fontWeight: 600,\r\n color: palette.white,\r\n },\r\n },\r\n\r\n '& .k-today': {\r\n '& .k-link': {\r\n // outline will only be visible when media query (forced-colors: active)\r\n outline: '1px dotted transparent',\r\n background: palette.themeLighter,\r\n fontWeight: 600,\r\n color: palette.neutralDark,\r\n },\r\n },\r\n\r\n '& .k-state-focused': {\r\n '& .k-link': focusedStyle || {\r\n // outline will only be visible when media query (forced-colors: active)\r\n outline: '1px solid transparent',\r\n background: palette.themePrimary,\r\n fontWeight: 600,\r\n color: palette.white,\r\n },\r\n },\r\n },\r\n\r\n '& .k-meta-view': {\r\n '& tr': {\r\n '& td': {\r\n background: `${palette.white} !important`,\r\n\r\n '& a': {\r\n display: 'flex',\r\n color: `${palette.neutralPrimary} !important`,\r\n width: '36px',\r\n height: '36px',\r\n marginBottom: 20,\r\n marginRight: 17,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n },\r\n\r\n '& td:last-child': {\r\n '& a': {\r\n marginRight: 0,\r\n },\r\n },\r\n },\r\n\r\n '& .k-state-focused': {\r\n '& a': {\r\n color: `${palette.neutralDark} !important`,\r\n background: palette.themeLighter,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","export const dropDownEditorStyle = ({ palette = {} }) => ({\r\n '& .grid-editable-cell select.editor-control.select-editor': {\r\n borderWidth: '0px 0px 1px 0px',\r\n borderBottomColor: 'transparent',\r\n paddingBottom: 8,\r\n paddingTop: 8,\r\n '&:hover, &:focus, &:active': {\r\n borderBottomColor: 'unset',\r\n outline: 'none',\r\n },\r\n '&:active': {\r\n borderBottomColor: palette.themePrimary,\r\n },\r\n },\r\n});\r\n","export const fabricPanelStyle = () => ({\r\n footer: {\r\n background: 'white',\r\n zIndex: 1,\r\n },\r\n commands: {\r\n marginTop: 0,\r\n marginBottom: 0,\r\n zIndex: 1,\r\n },\r\n});\r\n","export const floatButtonStyle = ({ palette = {} }) => ({\r\n floatButton: {\r\n background: palette.neutralLighter,\r\n border: 'none',\r\n borderRadius: 0,\r\n color: palette.themeDarkAlt,\r\n fontWeight: 'normal',\r\n height: 'auto',\r\n minHeight: 'auto',\r\n minWidth: 'auto',\r\n width: 'auto',\r\n padding: '14px 8px',\r\n\r\n '&:active, &:focus, &:hover': {\r\n color: palette.themeDark,\r\n background: palette.neutralQuaternaryAlt,\r\n },\r\n },\r\n});\r\n","export const gridInlineErrorStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '& .inline-editor-errors': {\r\n '& .error-messages': {\r\n listStyleType: 'none',\r\n marginBottom: 0,\r\n '& .error': {\r\n fontFamily: iconFontFamily,\r\n padding: '10px',\r\n fontSize: '10pt',\r\n '&:before': {\r\n content: '\"\\\\EA39\"',\r\n color: palette.red,\r\n },\r\n },\r\n '& .error-message': {\r\n fontSize: '14px',\r\n },\r\n },\r\n },\r\n});\r\n","export const helpbuttonStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '.helpbutton': {\r\n fontSize: 15,\r\n color: `${palette.themePrimary} !important`,\r\n verticalAlign: 'middle',\r\n fontWeight: 'normal',\r\n marginLeft: 7,\r\n\r\n '&:focus': {\r\n outline: '1px solid',\r\n outlineColor: palette.neutralSecondary,\r\n border: 'none',\r\n color: palette.black,\r\n textDecoration: 'none',\r\n },\r\n\r\n '&:hover': {\r\n backgroundColor: palette.neutralLighter,\r\n color: palette.black,\r\n textDecoration: 'none',\r\n },\r\n\r\n '&:active': {\r\n backgroundColor: palette.neutralLight,\r\n color: palette.black,\r\n textDecoration: 'none',\r\n },\r\n },\r\n\r\n '.helpbutton::before': {\r\n content: '\"\\\\E9CE\"',\r\n fontFamily: iconFontFamily,\r\n position: 'relative',\r\n top: 2,\r\n },\r\n});\r\n\r\n","export const InlineEditorStyle = () => ({\r\n '.custom-parameters-inline-edit-popup': {\r\n width: 456,\r\n minWidth: 456,\r\n },\r\n\r\n '.grid-popupeditor .form-inline .form-group': {\r\n display: 'block',\r\n },\r\n});\r\n","export const inlineErrorStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '.inline-editor-errors': {\r\n '& .error-messages': {\r\n listStyleType: 'none',\r\n '& .grid-error': {\r\n '&.spritedimage': {\r\n fontFamily: iconFontFamily,\r\n padding: '10px',\r\n fontSize: '10pt',\r\n },\r\n '&.spritedimage:before': {\r\n content: '\"\\\\EA39\"',\r\n color: palette.red,\r\n },\r\n },\r\n '& .error-message': {\r\n fontSize: '14px',\r\n },\r\n },\r\n },\r\n});\r\n","/* eslint-disable no-unused-vars */\r\nexport const scrollbarStyle = ({ palette = {} }) => ({\r\n '::-webkit-scrollbar':\r\n {\r\n width: 4,\r\n backgroundColor: 'transparent',\r\n },\r\n\r\n '::-webkit-scrollbar-track':\r\n {\r\n backgroundColor: 'transparent',\r\n },\r\n\r\n '::-webkit-scrollbar-thumb':\r\n {\r\n width: 4,\r\n height: 44,\r\n backgroundColor: '#EBEAE8',\r\n },\r\n\r\n '::-webkit-scrollbar:horizontal':\r\n {\r\n height: 4,\r\n backgroundColor: 'transparent',\r\n },\r\n\r\n '::-webkit-scrollbar-track:horizontal':\r\n {\r\n backgroundColor: 'transparent',\r\n },\r\n\r\n '::-webkit-scrollbar-thumb:horizontal':\r\n {\r\n width: 200,\r\n height: 4,\r\n backgroundColor: '#EBEAE8',\r\n },\r\n});\r\n","export const searchboxStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '& .searchbox': {\r\n padding: 0,\r\n },\r\n\r\n '& .searchbox .form-horizontal': {\r\n width: '100%',\r\n },\r\n\r\n '& .searchbox-input': {\r\n paddingLeft: 40,\r\n },\r\n\r\n '& .searchbox .form-control': {\r\n border: 0,\r\n borderBottom: `1px solid ${palette.neutralLighter}`,\r\n },\r\n\r\n '& .filter_search_icon_small': {\r\n fontFamily: iconFontFamily,\r\n color: palette.themePrimary,\r\n fontSize: 14,\r\n },\r\n\r\n '& .filter_search_icon_small:before': {\r\n content: '\"\\\\E721\"',\r\n },\r\n});\r\n","export const SearchBox = {\r\n inputGroup: {\r\n position: 'relative',\r\n overflow: 'hidden',\r\n },\r\n\r\n input: {\r\n border: {\r\n width: 1,\r\n style: 'solid',\r\n },\r\n padding: {\r\n top: 3,\r\n right: 33,\r\n bottom: 3,\r\n left: 8,\r\n },\r\n display: 'block',\r\n width: '100%',\r\n fontSize: '1em',\r\n },\r\n\r\n icon: {\r\n position: 'absolute',\r\n right: 60,\r\n height: 15,\r\n marginTop: 5,\r\n width: 20,\r\n fontSize: 12,\r\n\r\n '&:hover': {\r\n cursor: 'pointer',\r\n },\r\n },\r\n};\r\n","export const entitySelectorStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '& .ba-campaign-selector, & .ba-campaign-adgroup-selector': {\r\n '& .ba-list-selector': {\r\n border: '1px solid #BBB',\r\n height: 300,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n\r\n '& .list-selector-item': {\r\n position: 'relative',\r\n },\r\n\r\n '& .list-selector-content': {\r\n flex: 1,\r\n overflow: 'auto',\r\n },\r\n\r\n '& .list-selector-select-all-bar': {\r\n padding: '5px 10px',\r\n color: '#1470A5',\r\n cursor: 'pointer',\r\n\r\n '& .arrow-button.enabled': {\r\n marginLeft: 6,\r\n },\r\n\r\n '& .arrow-button.remove': {\r\n marginRight: 6,\r\n },\r\n\r\n '& .enabled.arrow-button:before, & .arrow-button.remove:before': {\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n },\r\n\r\n '& .multi-selector': {\r\n '& .ba-entity-selector': {\r\n '& .ba-list-selector': {\r\n '& .list-selector-item': {\r\n padding: 0,\r\n '& .multi-item-container': {\r\n padding: '7px 8px 8px 8px',\r\n },\r\n '& .added-to-result-list': {\r\n backgroundColor: '#edebe9',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n\r\n },\r\n '& .ba-campaign-adgroup-selector .selected-item, .ba-campaign-selector .selected-item': {\r\n maxWidth: 270,\r\n },\r\n '& .ba-campaign-selector, & .ba-campaign-adgroup-selector, & .disclaimer-selector, & .audience-planner-location-selector': {\r\n '& .dropdown-toggle': {\r\n lineHeight: 2,\r\n padding: '0 8px',\r\n verticalAlign: 'middle',\r\n fontWeight: 'normal',\r\n width: 320,\r\n textAlign: 'left !important',\r\n background: 'transparent !important',\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n borderRadius: 2,\r\n outline: 'none',\r\n\r\n '&:hover': {\r\n borderColor: palette.neutralPrimary,\r\n },\r\n\r\n '&:focus, &:active': {\r\n borderColor: palette.themePrimary,\r\n },\r\n\r\n '& .selected-item': {\r\n textOverflow: 'ellipsis',\r\n overflowWrap: 'break-word',\r\n wordBreak: 'break-word',\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n display: 'inline-block',\r\n verticalAlign: 'middle',\r\n },\r\n\r\n '& .icon-right': {\r\n float: 'right',\r\n },\r\n\r\n '& .glyphicon-triangle-bottom, .glyphicon-pencil': {\r\n marginTop: 5,\r\n fontFamily: iconFontFamily,\r\n fontSize: 16,\r\n verticalAlign: 'middle',\r\n color: palette.neutralSecondary,\r\n },\r\n\r\n '& .glyphicon-triangle-bottom:before': {\r\n content: '\"\\\\E70D\"',\r\n },\r\n\r\n '& .glyphicon.glyphicon-pencil::before': {\r\n content: '\"\\\\E70F\"',\r\n },\r\n },\r\n\r\n '& .dropdown-toggle:focus:after, .dropdown-toggle:active:after': {\r\n border: 0,\r\n },\r\n\r\n '& .dropdown-menu': {\r\n top: 'auto',\r\n left: 'auto',\r\n minWidth: 320,\r\n padding: 8,\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: '0px 0px 2px 2px',\r\n\r\n '& .ba-search-box ': {\r\n borderTop: `1px solid ${palette.neutralSecondary}`,\r\n borderLeft: `1px solid ${palette.neutralSecondary}`,\r\n borderRight: `1px solid ${palette.neutralSecondary}`,\r\n padding: 1,\r\n position: 'relative',\r\n\r\n '& .search-box__input': {\r\n height: 48,\r\n width: 'calc(100% - 2px)',\r\n border: 0,\r\n borderBottom: `1px solid ${palette.neutralLight}`,\r\n paddingLeft: 48,\r\n marginLeft: 1,\r\n },\r\n\r\n '& .search-box__icon': {\r\n fontFamily: iconFontFamily,\r\n fontSize: 16,\r\n verticalAlign: 'middle',\r\n position: 'absolute',\r\n left: 16,\r\n top: 16,\r\n },\r\n\r\n '& .search-box__icon:before': {\r\n content: '\"\\\\E721\"',\r\n color: palette.themePrimary,\r\n },\r\n },\r\n\r\n '& .ba-list-selector': {\r\n borderBottom: `1px solid ${palette.neutralSecondary}`,\r\n borderLeft: `1px solid ${palette.neutralSecondary}`,\r\n borderRight: `1px solid ${palette.neutralSecondary}`,\r\n\r\n '& .list-selector-header': {\r\n '& .panel-heading': {\r\n color: palette.neutralPrimary,\r\n fontSize: 14,\r\n padding: '7px 8px',\r\n\r\n '& .panel-title': {\r\n fontSize: 14,\r\n marginTop: 0,\r\n },\r\n },\r\n },\r\n\r\n '& .list-selector-content': {\r\n height: 380,\r\n\r\n '& .list-selector-item': {\r\n padding: '7px 8px 8px 8px',\r\n margin: 0,\r\n minHeight: 36,\r\n\r\n '& > div, & .item-content': {\r\n maxWidth: 225,\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n cursor: 'pointer',\r\n paddingRight: '20px',\r\n '& .statusIcon': {\r\n verticalAlign: 'middle',\r\n height: '19px',\r\n },\r\n\r\n '& .text': {\r\n marginLeft: 10,\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n },\r\n\r\n '& .selected': {\r\n background: palette.neutralLight,\r\n },\r\n },\r\n\r\n '& .list-selector-item:hover': {\r\n background: palette.neutralLight,\r\n },\r\n\r\n '& .list-selector-item:focus': {\r\n outline: 'none',\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n },\r\n\r\n '& .list-selector-empty': {\r\n marginLeft: 10,\r\n },\r\n\r\n '& .ba-cascader-selector': {\r\n border: 0,\r\n padding: 0,\r\n },\r\n\r\n '& .ba-cascader-selector>div': {\r\n width: '100% !important',\r\n marginBottom: 0,\r\n },\r\n\r\n '& .ba-cascader-selector>div:nth-child(2)>div:nth-child(2)': {\r\n '& .ba-list-selector': {\r\n borderLeft: '0 !important',\r\n },\r\n },\r\n\r\n '& .pagination-container': {\r\n '& .ba-pagination': {\r\n height: 36,\r\n padding: '6px 0',\r\n paddingBottom: 0,\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .ba-campaign-adgroup-selector, & .ba-campaign-selector': {\r\n '& .dropdown-toggle .dropdown-edit-mode-parent-text': {\r\n color: '#605e5c',\r\n },\r\n\r\n '& .item-content-parent-info': {\r\n color: '#605e5c',\r\n },\r\n },\r\n});\r\n\r\n","export const paginationStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '& .ba-pagination, .dlb-pager-container, .pagination-control': {\r\n height: 'auto',\r\n padding: '6px 0',\r\n\r\n '& > .text': {\r\n display: 'inline-block',\r\n verticalAlign: 'middle',\r\n padding: '0px 0px 8px 5px',\r\n '& > span': {\r\n marginRight: '5px',\r\n },\r\n },\r\n '& button': {\r\n border: 0,\r\n background: 'transparent',\r\n minWidth: '1px',\r\n padding: 0,\r\n color: palette.neutralSecondary,\r\n },\r\n\r\n '& button:hover': {\r\n borderRadius: 2,\r\n background: palette.neutralLighter,\r\n },\r\n\r\n '& button:disabled': {\r\n background: 'transparent',\r\n color: '#BEBBB8',\r\n },\r\n\r\n '& .prev + .text, .pager-previous + .text': {\r\n display: 'none',\r\n },\r\n\r\n '& .pager-input': {\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n padding: '6px 8px',\r\n height: 32,\r\n textAlign: 'center',\r\n margin: '0 12px',\r\n width: 70,\r\n display: 'inline-block',\r\n borderRadius: 2,\r\n boxSizing: 'border-box',\r\n color: palette.neutralPrimary,\r\n\r\n '&:active': {\r\n borderColor: palette.themePrimary,\r\n },\r\n\r\n '&:focus': {\r\n borderColor: palette.themePrimary,\r\n outline: 0,\r\n },\r\n\r\n '&:hover': {\r\n borderColor: palette.neutralPrimary,\r\n },\r\n },\r\n\r\n '& .glyphicon-triangle-left, & .glyphicon-triangle-right': {\r\n display: 'inline-block',\r\n fontFamily: iconFontFamily,\r\n color: 'inherit',\r\n },\r\n\r\n '& .glyphicon-triangle-left:before': {\r\n content: '\"\\\\E76B\"',\r\n },\r\n\r\n '& .glyphicon-triangle-right:before': {\r\n content: '\"\\\\E76C\"',\r\n },\r\n },\r\n\r\n '& .pager, .location-bid-pager-view': {\r\n height: 32,\r\n padding: 0,\r\n margin: 0,\r\n\r\n '& .pager-input, .page-number-input, .grid-pager-input': {\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n padding: '6px 8px',\r\n height: 32,\r\n textAlign: 'center',\r\n margin: '0 12px',\r\n width: '70px !important',\r\n display: 'inline-block',\r\n borderRadius: 2,\r\n boxSizing: 'border-box',\r\n color: palette.neutralPrimary,\r\n background: palette.white,\r\n },\r\n\r\n '& .pager-input[disabled], & .page-number-input[disabled], & .grid-pager-input[disabled]': {\r\n backgroundColor: palette.neutralLighter,\r\n },\r\n\r\n '& .pager-previous, & .pager-next, & .glyphicon-triangle-left, & .glyphicon-triangle-right': {\r\n fontFamily: iconFontFamily,\r\n color: palette.neutralSecondary,\r\n background: 'transparent',\r\n display: 'inline-block',\r\n verticalAlign: 'middle',\r\n padding: '2px 5px',\r\n height: 32,\r\n lineHeight: '32px',\r\n marginTop: '-7px',\r\n outline: 'none',\r\n },\r\n\r\n '& .pager-previous, & .pager-next': {\r\n '&:focus': {\r\n outline: `1px solid ${palette.neutralSecondary}`,\r\n outlineOffset: '-2px',\r\n },\r\n },\r\n\r\n '& .pager-previous:hover, & .pager-next:hover': {\r\n borderRadius: 2,\r\n background: palette.neutralLighter,\r\n },\r\n\r\n '& .pager-previous-disabled, & .pager-next-disabled': {\r\n fontFamily: iconFontFamily,\r\n color: '#BEBBB8',\r\n background: 'transparent',\r\n display: 'inline-block',\r\n verticalAlign: 'middle',\r\n padding: '2px 5px',\r\n height: 32,\r\n lineHeight: '32px',\r\n marginTop: '-7px',\r\n outline: 'none',\r\n },\r\n\r\n '& .pager-previous-disabled:before, & .pager-previous:before': {\r\n content: '\"\\\\E76B\"',\r\n },\r\n\r\n '& .pager-next-disabled:before, & .pager-next:before': {\r\n content: '\"\\\\E76C\"',\r\n },\r\n\r\n '& .pager-totalCount': {\r\n verticalAlign: 'unset',\r\n marginLeft: 4,\r\n },\r\n },\r\n\r\n '& .pagination-control': {\r\n textAlign: 'left',\r\n\r\n '& .text': {\r\n display: 'inline-block',\r\n width: 'auto',\r\n },\r\n\r\n '& .page-size-selector': {\r\n height: 32,\r\n textAlign: 'center',\r\n margin: '0 12px',\r\n width: '70px !important',\r\n display: 'inline-block',\r\n borderRadius: 2,\r\n boxSizing: 'border-box',\r\n color: palette.neutralPrimary,\r\n },\r\n\r\n '& .pager': {\r\n display: 'inline-block',\r\n },\r\n },\r\n\r\n});\r\n\r\n","export const statusStyle = ({ palette = {} }) => ({\r\n '& .statusDraft_icon': {\r\n display: 'inline-block',\r\n fontFamily: '\"MsAds MDL2 Assets\"',\r\n fontSize: 14,\r\n fontStyle: 'normal',\r\n '-webkit-font-smoothing': 'antialiased',\r\n '-moz-osx-font-smoothing': 'grayscale',\r\n fontWeight: 'normal',\r\n },\r\n\r\n '& .statusDraft_icon::before': {\r\n content: '\"\\\\F6B0\"',\r\n color: palette.neutralPrimary,\r\n },\r\n\r\n '& .statusDeleted_icon': {\r\n display: 'inline-block',\r\n fontFamily: '\"MsAds MDL2 Assets\"',\r\n fontSize: 14,\r\n fontStyle: 'normal',\r\n '-webkit-font-smoothing': 'antialiased',\r\n '-moz-osx-font-smoothing': 'grayscale',\r\n fontWeight: 'normal',\r\n },\r\n\r\n '& .statusDeleted_icon::before': {\r\n content: '\"\\\\E738\"',\r\n color: palette.redOrange10,\r\n },\r\n\r\n '& .statusEnabled_icon': {\r\n display: 'inline-block',\r\n fontFamily: '\"MsAds MDL2 Assets\"',\r\n fontSize: 14,\r\n fontStyle: 'normal',\r\n '-webkit-font-smoothing': 'antialiased',\r\n '-moz-osx-font-smoothing': 'grayscale',\r\n fontWeight: 'normal',\r\n },\r\n\r\n '& .statusEnabled_icon::before': {\r\n content: '\"\\\\ECCC\"',\r\n color: palette.green,\r\n },\r\n\r\n '& .statusExcluded_icon': {\r\n display: 'inline-block',\r\n fontFamily: '\"MsAds MDL2 Assets\"',\r\n fontSize: 14,\r\n fontStyle: 'normal',\r\n '-webkit-font-smoothing': 'antialiased',\r\n '-moz-osx-font-smoothing': 'grayscale',\r\n fontWeight: 'normal',\r\n },\r\n\r\n '& .statusExcluded_icon::before': {\r\n content: '\"\\\\E733\"',\r\n color: '#A80000',\r\n },\r\n\r\n '& .statusPaused_icon': {\r\n display: 'inline-block',\r\n fontFamily: '\"MsAds MDL2 Assets\"',\r\n fontSize: 14,\r\n fontStyle: 'normal',\r\n '-webkit-font-smoothing': 'antialiased',\r\n '-moz-osx-font-smoothing': 'grayscale',\r\n fontWeight: 'normal',\r\n },\r\n\r\n '& .statusPaused_icon::before': {\r\n content: '\"\\\\F6B0\"',\r\n color: palette.neutralPrimary,\r\n },\r\n\r\n '& .statushypendisplay': {\r\n display: 'inline-block',\r\n fontFamily: '\"MsAds MDL2 Assets\"',\r\n fontSize: 14,\r\n fontStyle: 'normal',\r\n '-webkit-font-smoothing': 'antialiased',\r\n '-moz-osx-font-smoothing': 'grayscale',\r\n fontWeight: 'normal',\r\n },\r\n\r\n '& .statushypendisplay::before': {\r\n content: '\"\\\\E738\"',\r\n color: palette.neutralPrimary,\r\n },\r\n\r\n});\r\n","export const toggleButtonStyle = ({ palette = {} }) => ({\r\n\r\n '& .toggle': {\r\n display: 'inline-block',\r\n textDecoration: 'none',\r\n\r\n '& .toggle-button': {\r\n display: 'inline-block',\r\n boxsizing: 'border-box',\r\n width: 40,\r\n height: 20,\r\n padding: 4,\r\n lineHeight: '10px',\r\n border: '1px solid',\r\n borderRadius: 30,\r\n 'transition-duration': '0.2s',\r\n '-webkit-transition-duration': '0.2s',\r\n },\r\n\r\n '& .toggle-handle': {\r\n display: 'inline-block',\r\n boxsizing: 'border-box',\r\n width: 10,\r\n height: 10,\r\n borderRadius: 5,\r\n borderWidth: 5,\r\n borderStyle: 'solid',\r\n verticalAlign: 'top',\r\n 'transition-duration': '0.2s',\r\n '-webkit-transition-duration': '0.2s',\r\n },\r\n },\r\n\r\n '& .toggle-on': {\r\n '& .toggle-button': {\r\n backgroundColor: palette.themePrimary,\r\n borderColor: palette.themePrimary,\r\n },\r\n\r\n '& .toggle-handle': {\r\n marginLeft: 20,\r\n borderColor: palette.white,\r\n },\r\n },\r\n\r\n '& .toggle-off': {\r\n '& .toggle-button': {\r\n backgroundColor: palette.white,\r\n borderColor: '#333333',\r\n },\r\n\r\n '& .toggle-handle': {\r\n marginRight: 20,\r\n borderColor: '#333333',\r\n },\r\n },\r\n});\r\n","export const underlineLinkStyle = ({ palette = {}, elementLocator = 'a', isGreyBackground = false }) => ({\r\n [`& ${elementLocator}`]: {\r\n textDecoration: 'underline',\r\n color: isGreyBackground ? palette.themeDarkAlt : palette.themePrimary,\r\n '&:focus': {\r\n textDecoration: 'underline',\r\n outline: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n '&:hover': {\r\n textDecoration: 'underline',\r\n color: palette.themeDarker,\r\n },\r\n },\r\n});\r\n","export const internalLinkStyle = ({ palette = {}, elementLocator = 'a', isGreyBackground = false }) => ({\r\n [`& ${elementLocator}`]: {\r\n textDecoration: 'none',\r\n color: isGreyBackground ? palette.themeDarkAlt : palette.themePrimary,\r\n '&:focus': {\r\n textDecoration: 'none',\r\n outline: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n '&:hover': {\r\n textDecoration: 'underline',\r\n color: palette.themeDarker,\r\n },\r\n },\r\n});\r\n","export const getBlockerStyle = (size, palette) => ({\r\n width: size,\r\n height: size,\r\n border: '2px solid',\r\n borderLeftColor: palette.themePrimary,\r\n borderRightColor: palette.themeLight,\r\n borderTopColor: palette.themeLight,\r\n borderBottomColor: palette.themeLight,\r\n borderRadius: '50%',\r\n animation: 'spinner 1s linear infinite',\r\n marginRight: 9,\r\n});\r\n\r\nexport const spinnerKeyframe = {\r\n '@keyframes spinner': {\r\n to: { transform: 'rotate(360deg)' },\r\n },\r\n};\r\n","import { ZIndexShellComponents } from '../constants';\r\n\r\nimport { getBlockerStyle, spinnerKeyframe } from './spinner-style';\r\n// this style is in the body scope, out of the feature scope, so use as the global pattern\r\nexport const uiblockerStyle = ({ palette = {} }) => (\r\n Object.assign({\r\n '.blocker': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n backgroundColor: 'rgba(255,255,255,0.4)',\r\n zIndex: ZIndexShellComponents.Loader,\r\n },\r\n\r\n '.blocker-global, .blocker-local': {\r\n backgroundColor: 'rgba(255,255,255,0.4)',\r\n position: 'absolute',\r\n zIndex: ZIndexShellComponents.Loader,\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n },\r\n '.blocker-global': {\r\n left: 0,\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n },\r\n\r\n '.blocker, .blocker-global, .blocker-local': {\r\n '& .blocker-indicator': {\r\n outline: 'none',\r\n display: 'flex',\r\n alignItems: 'center',\r\n backgroundColor: 'white',\r\n padding: '10px',\r\n color: palette.themePrimary,\r\n top: 'calc(50% - 24px)',\r\n left: 'calc(50% - 58px)',\r\n position: 'absolute',\r\n\r\n '& .blocker-image': getBlockerStyle(28, palette),\r\n },\r\n },\r\n }, spinnerKeyframe));\r\n\r\n// blocker defined in $.advertiser\r\nexport const legacyUIBlockerStyle = ({ palette = {} }) => ({\r\n '.blocker-panel': {\r\n position: 'absolute',\r\n backgroundColor: 'rgba(255,255,255,0.4)',\r\n },\r\n '.blocker-panel + .blocker-indicator': {\r\n outline: 'none',\r\n backgroundColor: 'white',\r\n padding: '10px',\r\n color: palette.themePrimary,\r\n position: 'absolute',\r\n\r\n '& .blocker-image': {\r\n ...getBlockerStyle(28, palette),\r\n position: 'absolute',\r\n },\r\n '& .blocker-text': {\r\n margin: '5px 0 0 40px',\r\n },\r\n },\r\n});\r\n\r\n// for @bingads-webui-react/ui-blocker\r\nexport const reactUIBlockerStyle = (palette, backgroundColor = 'white') => ({\r\n '& .react-block-ui': {\r\n '& > div:last-child': {\r\n alignItems: 'center',\r\n backgroundColor,\r\n color: palette.themePrimary,\r\n display: 'flex',\r\n outline: 'none',\r\n padding: 10,\r\n\r\n '& .blocker-text': {\r\n fontWeight: 'normal',\r\n },\r\n\r\n '& .blocker-image': getBlockerStyle(28, palette),\r\n },\r\n },\r\n});\r\n","export { ZIndexShellComponents, ZIndexContentComponents } from './zindexes';\r\nexport { PagePadding } from './pagePadding';\r\nexport { ResponsiveSizeBreakpoints } from './responsiveSize';\r\n","// For the z-index defined in external place, we use leading \"_\" in key name to indicate it,\r\n// and put them here ONLY FOR REFERENCE.\r\n\r\n// We only focus on z-index of components in app-layout-container and direct children of .\r\n// That's to say, it doesn't matter that z-index of element A inside Content is greater than\r\n// element B inside Header: A will still shows behind B, since Content z-index < Header z-index.\r\nexport const ZIndexShellComponents = {\r\n _HelpContainer: 1100, // defined in apex style file\r\n _BootstrapPopover: 1060, // defined in bootstrap of theme-2018\r\n _BootstrapModal: 1050, // defined in bootstrap of theme-2018\r\n _BootstrapModalBackdrop: 1040, // defined in bootstrap of theme-2018\r\n ModalBackDrop: 1040,\r\n Header: 1031,\r\n Loader: 1030, // should be less than Header\r\n Panel: 1000,\r\n TopBanner: 250,\r\n PromotionBanner: 250,\r\n Nav: 200,\r\n Status: 150,\r\n Menu: 100,\r\n Tab: 75,\r\n SubTab: 50,\r\n Content: 0,\r\n};\r\n\r\n// This is the common place for elements inside \".app-shell-content\"\r\nexport const ZIndexContentComponents = {\r\n // add new elements here in descending order\r\n GridToolbar: 20,\r\n GridHeader: 20,\r\n StatusPopup: 10,\r\n};\r\n","export const PagePadding = {\r\n mainSectionLeftPadding: 32,\r\n smallMainSectionLeftPadding: 15,\r\n};\r\n","export const ResponsiveSizeBreakpoints = [\r\n {\r\n name: 's',\r\n minWidth: 360,\r\n },\r\n {\r\n name: 'm',\r\n minWidth: 480,\r\n },\r\n {\r\n name: 'l',\r\n minWidth: 640,\r\n },\r\n {\r\n name: 'xl',\r\n minWidth: 1024,\r\n },\r\n {\r\n name: 'xxl',\r\n minWidth: 1366,\r\n },\r\n];\r\n","import { internalLinkStyle } from '../internal-link-style';\r\nimport { underlineLinkStyle } from '../underline-link-style';\r\n\r\n// Styles for panel itself\r\nexport const getTopGridPanelCommonStyle = ({ palette }) => ({\r\n '& .panel': {\r\n // All top of grid panel have same margin left and top\r\n marginTop: '24px',\r\n marginLeft: '32px',\r\n marginBottom: '0px',\r\n padding: 0,\r\n backgroundColor: 'white',\r\n\r\n // Learn more button styles.\r\n ...underlineLinkStyle({ palette, elementLocator: 'a.HelpTopic' }),\r\n\r\n '& .alert-info .alert-info-inline': {\r\n ...internalLinkStyle({ palette, elementLocator: '> a', isGreyBackground: true }),\r\n },\r\n\r\n '& .panel-heading': {\r\n backgroundColor: 'white',\r\n padding: '0px',\r\n fontWeight: 600,\r\n\r\n '& .panel-title': {\r\n fontSize: '20px',\r\n lineHeight: '27px',\r\n fontWeight: 600,\r\n },\r\n },\r\n\r\n '& .panel-body': {\r\n lineHeight: '19px',\r\n paddingLeft: '0px',\r\n paddingBottom: '0px',\r\n marginBottom: '18px', // leave space between body and the footer buttons\r\n\r\n '& hr': {\r\n margin: 0,\r\n borderTop: '0px',\r\n },\r\n },\r\n\r\n '& .panel-footer': {\r\n borderTop: `1px solid ${palette.neutralLight}`,\r\n paddingTop: '16px',\r\n paddingBottom: '16px',\r\n paddingLeft: '0px',\r\n marginTop: 0,\r\n backgroundColor: 'white',\r\n\r\n '& input.btn, & button.btn': {\r\n marginRight: '8px',\r\n },\r\n '& input.btn:focus': {\r\n outline: `1px solid ${palette.neutralSecondary}`,\r\n outlineOffset: '-3px',\r\n },\r\n '& input.btn-primary:focus': {\r\n outline: '1px solid #fff',\r\n },\r\n '& .previewTable': {\r\n margin: '5px 0 !important',\r\n maxHeight: '250px',\r\n display: 'inline-block',\r\n minWidth: '500px',\r\n width: 'auto !important',\r\n },\r\n },\r\n },\r\n});\r\n","export const columnChooserStyle = {\r\n '& .column-chooser .option': {\r\n padding: '6px 10px',\r\n },\r\n '& .column-chooser .option:hover': {\r\n backgroundColor: 'transparent',\r\n borderColor: 'transparent',\r\n },\r\n '& .column-chooser input[type=\"checkbox\"]': {\r\n margin: '0 5px 0 0',\r\n },\r\n '& .column-chooser-instructions': {\r\n marginBottom: '35px',\r\n },\r\n '& .column-chooser-categories': {\r\n position: 'relative',\r\n float: 'left',\r\n width: '180px',\r\n left: '1px',\r\n zIndex: '1',\r\n },\r\n '& .column-chooser-list': {\r\n position: 'relative',\r\n border: '1px solid #bbb',\r\n background: 'white',\r\n boxSizing: 'border-box',\r\n height: '300px',\r\n width: '340px',\r\n float: 'left',\r\n overflow: 'hidden',\r\n },\r\n '& .column-chooser-list+.column-chooser-list': {\r\n marginLeft: '8px',\r\n },\r\n '& .column-chooser-list.right': {\r\n marginLeft: '10px',\r\n },\r\n '& .column-chooser-option-header': {\r\n padding: '10px',\r\n backgroundColor: '#f4f4f4',\r\n width: '340px',\r\n },\r\n '& .column-chooser-bulk-control': {\r\n padding: '10px',\r\n },\r\n '& .column-chooser-category': {\r\n padding: '10px',\r\n cursor: 'pointer',\r\n borderTop: '0',\r\n },\r\n '& .column-chooser-category.active': {\r\n backgroundColor: 'white',\r\n border: '1px solid #bbb',\r\n borderRightColor: 'white',\r\n borderRight: '0',\r\n },\r\n '& .column-chooser-category:focus, & .column-chooser-category.k-state-focused': {\r\n outline: '1px dashed #333 !important',\r\n },\r\n '& .column-chooser-options': {\r\n listStyle: 'none',\r\n verticalAlign: 'top',\r\n overflowX: 'visible',\r\n overflowY: 'auto',\r\n padding: '0 10px',\r\n height: '230px',\r\n },\r\n '& .column-chooser-options.selected': {\r\n padding: '10px',\r\n height: '290px',\r\n },\r\n '& .column-chooser-options.available': {\r\n height: '250px',\r\n },\r\n '& .column-chooser-option': {\r\n border: '1px solid white',\r\n borderLeftWidth: '0',\r\n borderRightWidth: '0',\r\n padding: '6px 10px',\r\n },\r\n '& .column-chooser-option:hover': {\r\n backgroundColor: '#e5e5e5',\r\n borderColor: '#e5e5e5',\r\n },\r\n '& .column-chooser-message': {\r\n marginBottom: '15px',\r\n fontSize: '12px',\r\n },\r\n '& .column-chooser-option-selected': {\r\n cursor: 'move',\r\n padding: '5px',\r\n marginBottom: '5px',\r\n backgroundColor: '#e7f0f6',\r\n border: '1px solid #1570a6',\r\n height: '28px !important',\r\n },\r\n '& .column-chooser-option-selected:hover': {\r\n backgroundColor: '#f4f4f4',\r\n borderColor: '#606060',\r\n },\r\n '& .column-chooser-option-selected .remove': {\r\n paddingTop: '2px',\r\n },\r\n '& .column-chooser-option-fixed': {\r\n cursor: 'not-allowed',\r\n },\r\n '& .column-chooser-option-unmovable': {\r\n backgroundColor: '#e5e5e5',\r\n borderColor: 'gray',\r\n cursor: 'not-allowed',\r\n padding: '7px',\r\n },\r\n '& .column-chooser-option-placeholder': {\r\n border: '1px solid #1570a6',\r\n opacity: '& .5',\r\n margin: '6px 10px',\r\n height: '20px',\r\n },\r\n '& .column-chooser': {\r\n display: 'block !important',\r\n lineHeight: '15px',\r\n fontWeight: 'normal',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area': {\r\n display: 'inline-block',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option': {\r\n float: 'left',\r\n padding: '0',\r\n backgroundColor: '#f4f4f4',\r\n border: 'none',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .column-chooser-option-header': {\r\n padding: '10px',\r\n width: '340px',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .column-chooser-search-box': {\r\n border: '1px solid #F3F2F1',\r\n position: 'relative',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .search-input': {\r\n border: 'none',\r\n height: '48px',\r\n paddingLeft: '48px',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .glyphicon-search': {\r\n top: '16px',\r\n left: '16px',\r\n color: '#0078d4',\r\n position: 'absolute',\r\n fontSize: '16px',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .glyphicon-search:before': {\r\n content: '\"\\\\E721\"',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .category-tabs': {\r\n position: 'relative',\r\n left: '1px',\r\n zIndex: '1',\r\n marginBottom: '8.5px',\r\n marginTop: '0',\r\n paddingLeft: '0',\r\n float: 'left',\r\n width: '180px',\r\n listStyle: 'none',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .category-tabs>li': {\r\n padding: '10px',\r\n cursor: 'pointer',\r\n borderTop: '0',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .category-tabs>li.active': {\r\n backgroundColor: 'white',\r\n border: '1px solid #BBB',\r\n borderRightColor: 'white',\r\n borderRight: '0',\r\n fontWeight: 'bold',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view': {\r\n float: 'left',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list': {\r\n position: 'relative',\r\n border: '1px solid #BBB',\r\n background: 'white',\r\n boxSizing: 'border-box',\r\n height: '300px',\r\n width: '340px',\r\n overflow: 'hidden',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list .column-chooser-bulk-control': {\r\n padding: '10px',\r\n textAlign: 'right',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options': {\r\n listStyle: 'none',\r\n verticalAlign: 'top',\r\n overflowX: 'visible',\r\n overflowY: 'auto',\r\n padding: '0 10px',\r\n height: '250px',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options span.option-not-selected': {\r\n fontWeight: 'bold',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options span.option-status': {\r\n float: 'right',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options span.option-status.disabled': {\r\n color: '#ccc',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options a.add-column-link': {\r\n float: 'right',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected': {\r\n float: 'left',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .column-chooser-selected-header': {\r\n padding: '10px',\r\n backgroundColor: '#f4f4f4',\r\n width: '340px',\r\n marginLeft: '0',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view': {\r\n position: 'relative',\r\n border: '1px solid #BBB',\r\n background: 'white',\r\n boxSizing: 'border-box',\r\n height: '300px',\r\n width: '340px',\r\n overflow: 'hidden',\r\n marginLeft: '10px',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list': {\r\n padding: '10px',\r\n height: '290px',\r\n overflowX: 'visible',\r\n overflowY: 'auto',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item.draggable-list__item-locked': {\r\n backgroundColor: '#E5E5E5',\r\n marginBottom: '5px',\r\n border: '1px solid gray',\r\n cursor: 'not-allowed',\r\n padding: '7px',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item.draggable-list__item-draggable': {\r\n cursor: 'move',\r\n padding: '5px',\r\n marginBottom: '5px',\r\n backgroundColor: '#e7f0f6',\r\n border: '1px solid #008272',\r\n height: '28px',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item.draggable-list__item-draggable.draggable-list__item-preview': {\r\n opacity: '& .5',\r\n marginLeft: '10px',\r\n marginRight: '10px',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item.draggable-list__item-draggable span.remove': {\r\n float: 'right',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item .selected-list-item span': {\r\n M: 'none',\r\n W: 'none',\r\n fallbacks: [\r\n {\r\n M: 'none',\r\n },\r\n ],\r\n userSelect: 'none',\r\n },\r\n '& .column-chooser .panel .panel-body .save-column-view': {\r\n display: 'inline-block',\r\n },\r\n '& .column-chooser .panel .panel-body .save-column-view .save-checkbox': {\r\n height: '25px',\r\n verticalAlign: 'middle',\r\n },\r\n '& .column-chooser .panel .panel-body .save-column-view .save-checkbox .column-chooser-save-column': {\r\n fontWeight: 'normal',\r\n },\r\n '& .column-chooser .panel .panel-body .save-column-view .save-checkbox input.column-chooser-saved-name': {\r\n border: '1px solid #BBB',\r\n padding: '3px 5px',\r\n fontSize: '12px',\r\n lineHeight: '1.45833333',\r\n },\r\n '& .column-chooser .panel .panel-footer': {\r\n marginTop: '5px',\r\n },\r\n // From @bingads-webui/theme-2016/style/css/bootstrap/less/override/panels.less\r\n // scoped under .column-chooser\r\n '& .column-chooser .panel-component': {\r\n backgroundColor: '#E7F0F6',\r\n },\r\n '& .column-chooser .panel-component .panel-heading': {\r\n backgroundColor: '#E7F0F6',\r\n },\r\n '& .column-chooser .panel-component .panel-title': {\r\n fontColor: '#333',\r\n },\r\n '& .column-chooser .panel-component .panel-body': {\r\n padding: '5px 15px',\r\n },\r\n '& .column-chooser .panel-form': {\r\n backgroundColor: 'white',\r\n border: '1px solid #BBB',\r\n padding: '5px',\r\n },\r\n '& .column-chooser .panel-form.noPadding': {\r\n padding: '0',\r\n },\r\n '& .column-chooser .panel-form .panel-heading': {\r\n marginBottom: '0',\r\n },\r\n '& .column-chooser .panel-form .section': {\r\n padding: '0 0 15px 0',\r\n },\r\n '& .column-chooser .panel-form .panel-body.noPadding': {\r\n padding: '0',\r\n },\r\n '& .column-chooser .panel-form-footer': {\r\n padding: '3px 0',\r\n },\r\n '& .column-chooser .panel.panel-white': {\r\n backgroundColor: 'white',\r\n W: 'none',\r\n boxShadow: 'none',\r\n },\r\n '& .column-chooser .panel-body': {\r\n padding: '0 15px 0 15px',\r\n },\r\n '& .column-chooser .panel-body:before, & .column-chooser .panel-body:after': {\r\n content: '\" \"',\r\n display: 'table',\r\n },\r\n '& .column-chooser .panel-body:after': {\r\n clear: 'both',\r\n },\r\n '& .column-chooser .panel-heading': {\r\n backgroundColor: '#E5E5E5',\r\n padding: '0 15px',\r\n marginBottom: '15px',\r\n },\r\n '& .column-chooser .panel-heading>.dropdown .dropdown-toggle': {\r\n color: 'inherit',\r\n },\r\n '& .column-chooser .panel-title': {\r\n fontWeight: 'bold',\r\n marginTop: '0',\r\n marginBottom: '0',\r\n lineHeight: '30px',\r\n fontSize: 14,\r\n display: 'inline',\r\n },\r\n '& .column-chooser .panel-title>a': {\r\n color: 'inherit',\r\n },\r\n '& .column-chooser .panel-footer': {\r\n padding: '0 15px 0 15px',\r\n borderTop: '0px',\r\n },\r\n '& .column-chooser hr': {\r\n borderTop: '1px solid #A2A2A2',\r\n },\r\n '& .column-chooser .save-column-checkbox': {\r\n float: 'left',\r\n },\r\n};\r\n","import { getNewFeatureLabelStyle } from '../new-feature-label-style';\r\n\r\nexport const getColumnChooserOverrideStyle = palette => ({\r\n // Shared part already moved to 'global-styles.js' to be shared with all top of grid panel.\r\n // Only put column chooser specific override here.\r\n '& .column-chooser': {\r\n display: 'block !important',\r\n lineHeight: '15px',\r\n fontWeight: 'normal',\r\n\r\n '& .panel': {\r\n '& .panel-body': {\r\n '& .column-chooser-selection-area': {\r\n padding: '0px 0px 18px 0px',\r\n\r\n '& .column-chooser-option': {\r\n backgroundColor: 'white',\r\n border: `1px solid ${palette.neutralTertiary}`,\r\n ...getNewFeatureLabelStyle({ palette }),\r\n\r\n '& .option': {\r\n height: '36px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n\r\n '& .column-chooser-option-header': {\r\n display: 'none',\r\n },\r\n\r\n '& .column-chooser-categories': {\r\n left: 0,\r\n width: '300px',\r\n\r\n '& .category-tabs': {\r\n left: 0,\r\n width: '300px',\r\n\r\n '& li a:after': {\r\n fontFamily: '\"MsAds MDL2 Assets\"',\r\n content: '\"\\\\E76C\"',\r\n color: palette.neutralSecondary,\r\n float: 'right',\r\n },\r\n\r\n '& > li': {\r\n padding: '10px 8px 10px 10px',\r\n\r\n '& .new-feature-label': {\r\n display: 'inline-block',\r\n position: 'absolute',\r\n },\r\n },\r\n\r\n '& > li.active': {\r\n fontWeight: 'normal',\r\n border: 0,\r\n backgroundColor: palette.neutralLight,\r\n '& > a.currentActive': {\r\n color: palette.themeDarker,\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .options-view .column-chooser-option-list': {\r\n border: '0px',\r\n borderLeft: `1px solid ${palette.neutralLight}`,\r\n width: '300px',\r\n height: '282px',\r\n\r\n '& .column-chooser-bulk-control': {\r\n padding: '10px 8px 9px 10px',\r\n minHeight: '38px',\r\n\r\n '& .arrow-button': {\r\n display: 'none',\r\n },\r\n },\r\n\r\n '& ul.column-chooser-options': {\r\n height: '243.6px',\r\n\r\n '& span.option-not-selected': {\r\n fontWeight: 'normal',\r\n },\r\n\r\n '& span.option-name': {\r\n display: 'inline-block',\r\n maxWidth: '165px',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n },\r\n\r\n '& .option-status, & a.add-column-link': {\r\n marginLeft: 'auto',\r\n },\r\n },\r\n\r\n '& .column-chooser-editable-picker': {\r\n height: '282px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n '& .custom-column-remove': {\r\n margin: '0px 10px',\r\n },\r\n '& .glyphicon-pencil': {\r\n textDecoration: 'none',\r\n '&:focus': {\r\n outline: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n\r\n '&:before': {\r\n fontFamily: 'MsAds MDL2 Assets',\r\n content: '\"\\\\E70F\"',\r\n color: palette.themeDark,\r\n },\r\n },\r\n '& .glyphicon-remove': {\r\n textDecoration: 'none',\r\n '&:focus': {\r\n outline: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n\r\n '&:before': {\r\n fontFamily: 'MsAds MDL2 Assets',\r\n content: '\"\\\\E711\"',\r\n },\r\n },\r\n '& span.option-status.enabled': {\r\n marginLeft: 'auto',\r\n },\r\n '& a.add-column-link': {\r\n marginLeft: 'auto',\r\n },\r\n '& .inapplicable-column': {\r\n marginLeft: 'auto',\r\n },\r\n '& .column-chooser-bulk-control': {\r\n padding: '0',\r\n minHeight: '38px',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n\r\n '& .custom-column-add': {\r\n margin: '8px 8px 0px',\r\n },\r\n\r\n '& .remove-all-in-list, .add-all-in-list': {\r\n padding: '10px 8px 9px 10px',\r\n },\r\n },\r\n '& .invalid-custom-column:focus': {\r\n outline: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n '& .column-chooser-options': {\r\n flex: '1 1 1px',\r\n margin: '0',\r\n '& .option': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n '& .option-name': {\r\n flex: '1',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .column-chooser-selected': {\r\n border: `1px solid ${palette.neutralTertiary}`,\r\n marginLeft: '8px',\r\n width: '300px',\r\n height: '334px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n\r\n '& .column-chooser-selected-header': {\r\n backgroundColor: 'white',\r\n padding: '10px 0px 10px 10px',\r\n width: '298px',\r\n },\r\n\r\n '& .column-chooser-selected-header:before': {\r\n content: 'Test new header',\r\n fontWeight: 'bold',\r\n },\r\n\r\n '& .column-chooser-selected-header:after': {\r\n content: 'Test new subheader',\r\n },\r\n\r\n '& .remove-all-in-selected-list': {\r\n marginLeft: 'auto',\r\n float: 'right',\r\n display: 'inline-block',\r\n paddingTop: '10px',\r\n paddingRight: '10px',\r\n },\r\n\r\n '& .column-chooser-selected-list': {\r\n flex: '1',\r\n overflow: 'auto',\r\n '& .draggable-list-view': {\r\n margin: 0,\r\n height: '100%',\r\n width: '298px',\r\n border: 0,\r\n\r\n '& ul.draggable-list': {\r\n padding: 0,\r\n listStyle: 'none',\r\n height: '100%',\r\n overflow: 'auto',\r\n marginBottom: '0',\r\n\r\n '& li.draggable-list-item': {\r\n border: '1px solid transparent',\r\n padding: '1px 0',\r\n outline: 'none',\r\n\r\n '&:focus': {\r\n border: `1px solid ${palette.neutralTertiary}`,\r\n },\r\n\r\n '& .selected-list-item': {\r\n verticalAlign: 'middle',\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n\r\n '& .selected-item-name': {\r\n flex: '1',\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n },\r\n\r\n '& .trigger-icon': {\r\n color: '#797775',\r\n fontFamily: '\"MsAds MDL2 Assets\"',\r\n lineHeight: '19px',\r\n padding: '0px 8px',\r\n position: 'relative',\r\n\r\n '&:after': {\r\n color: palette.themePrimary,\r\n content: '\"\\\\E76F\"',\r\n fontSize: '20px',\r\n },\r\n },\r\n },\r\n\r\n '&.selected, &:focus, &:hover': {\r\n '& .trigger-icon:before': {\r\n content: '\"\\\\F090\\\\F08E\"',\r\n fontSize: '14px',\r\n letterSpacing: '3px',\r\n marginTop: '-6px',\r\n position: 'absolute',\r\n writingMode: 'vertical-lr',\r\n },\r\n },\r\n\r\n '&.selected': {\r\n backgroundColor: palette.neutralLight,\r\n\r\n '& .trigger-icon:before': {\r\n color: palette.neutralPrimary,\r\n },\r\n },\r\n },\r\n\r\n '& li.draggable-list-item.draggable-list__item-locked': {\r\n height: '36px',\r\n padding: '0px',\r\n backgroundColor: 'white',\r\n\r\n '& .selected-list-item': {\r\n margin: '8px 8px 9px 36px',\r\n },\r\n },\r\n\r\n '& li.draggable-list-item.draggable-list__item-draggable': {\r\n height: '36px',\r\n padding: '0px',\r\n backgroundColor: 'white',\r\n\r\n '& .selected-list-item': {\r\n margin: '8px 8px 9px 0px',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .save-column-view': {\r\n '& .save-checkbox': {\r\n '& label+input': {\r\n marginLeft: '13px',\r\n },\r\n\r\n '& .column-chooser-save-column': {\r\n float: 'left',\r\n\r\n '& .save-column-checkbox': {\r\n height: '20px',\r\n width: '20px',\r\n },\r\n '& input[type=\"checkbox\"]': {\r\n marginRight: '8px',\r\n },\r\n },\r\n\r\n '& .column-chooser-saved-name': {\r\n height: '32px',\r\n width: '250px',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","export const getNewFeatureLabelStyle = ({ palette = {} }) => ({\r\n '& .new-feature-label': {\r\n color: palette.white,\r\n border: `1px solid ${palette.white}`,\r\n padding: '0 9px',\r\n fontSize: '12px',\r\n borderRadius: '12px',\r\n backgroundColor: palette.orange,\r\n marginLeft: '5px',\r\n },\r\n});\r\n","export const filterEditorStyle = {\r\n '& .predicate-row': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n '& .filter-editor .panel': {\r\n backgroundColor: 'white',\r\n paddingBottom: '15px',\r\n border: '1px solid transparent',\r\n borderRadius: 0,\r\n boxShadow: '0 1px 1px rgba(0,0,0,0.05)',\r\n marginBottom: '15px',\r\n },\r\n '& .filter-body.filter-editor .save-form input[type=\"checkbox\"]': {\r\n marginRight: '5px',\r\n marginTop: 0,\r\n },\r\n '& .filter-body.filter-editor .save-form .btn + .btn': {\r\n marginLeft: '10px',\r\n },\r\n '& .filter-body.filter-editor .save-form .btn + .checkbox': {\r\n marginLeft: '15px',\r\n },\r\n '& .filter-body.filter-editor .save-form .checkbox label + input': {\r\n marginLeft: '10px',\r\n },\r\n '& .predicate-list li': {\r\n marginBottom: '5px',\r\n },\r\n '& .predicate-list li .error-row': {\r\n marginTop: '5px',\r\n },\r\n '& .predicate-list li .error-row label': {\r\n fontWeight: '500',\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n color: '#a80000',\r\n },\r\n '& .predicate-list li .predicate-row .filter-predicate-property': {\r\n position: 'relative',\r\n display: 'inline-block',\r\n },\r\n '& .predicate-list li .predicate-row .filter-predicate-property > .btn.btn-default': {\r\n textAlign: 'right',\r\n minWidth: '205px',\r\n },\r\n '& .predicate-list li .predicate-row .filter-predicate-property > .btn.btn-default > .selected': {\r\n float: 'left',\r\n },\r\n '& .predicate-list li .predicate-row .filter-predicate-property + .predicate-operator': {\r\n marginLeft: '10px',\r\n },\r\n '& .predicate-list li .predicate-row .form-control': {\r\n display: 'inline-block',\r\n },\r\n '& .predicate-list li .predicate-row > * + *': {\r\n marginLeft: '4px',\r\n },\r\n '& .predicate-list li .predicate-row .predicate-property': {\r\n width: '15em',\r\n },\r\n '& .predicate-list li .predicate-row .predicate-operator': {\r\n width: '15em',\r\n },\r\n '& .predicate-list li .predicate-row .predicate-operator + .predicate-value': {\r\n marginLeft: '10px',\r\n '& .checkbox-inline, & .checkbox-inline + .checkbox-inline, & .radio-inline, & .radio-inline + .radio-inline': {\r\n marginLeft: 0,\r\n marginRight: '10px',\r\n },\r\n '& .checkbox-inline:last-child, & .radio-inline:last-child': {\r\n marginRight: 0,\r\n },\r\n },\r\n '& .predicate-list li .predicate-row .predicate-value': {\r\n display: 'inline-block',\r\n },\r\n '& .predicate-list li .predicate-row .predicate-value > input': {\r\n width: 'inherit',\r\n },\r\n '& .predicate-list li .predicate-row .predicate-value + .remove': {\r\n marginLeft: '16px',\r\n height: '32px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n '& .predicate-list li .predicate-row .predicate-value button.selector-dropdown-button': {\r\n backgroundColor: '#fff',\r\n border: '0',\r\n },\r\n '& .predicate-list li .predicate-row .predicate-value .selector.dropdown-menu': {\r\n marginLeft: '-1px',\r\n border: '1px solid #ccc',\r\n },\r\n '& .predicate-list li .predicate-row .single-operator-column, & .predicate-list li .predicate-row .single-property-column': {\r\n display: 'inline-block',\r\n marginTop: '4px',\r\n },\r\n '& .predicate-list li .predicate-row .dropdown-submenu': {\r\n minWidth: '150px',\r\n position: 'relative',\r\n },\r\n '& .predicate-list li .predicate-row .dropdown-submenu li': {\r\n marginBottom: '0',\r\n },\r\n '& .predicate-list li .predicate-row .dropdown-submenu > span': {\r\n display: 'inline-block',\r\n },\r\n '& .predicate-list li .predicate-row .dropdown-submenu:hover > .dropdown-menu': {\r\n display: 'block',\r\n visibility: 'visible',\r\n },\r\n '& .predicate-list li .predicate-row .dropdown-submenu .spritedimage': {\r\n marginTop: '2px',\r\n },\r\n '& .predicate-list li .predicate-row .btn .caret': {\r\n marginLeft: '5px',\r\n },\r\n '& .filter-header': {\r\n display: 'inline-block',\r\n },\r\n '& .filter-header .filter-button': {\r\n padding: '7px 10px',\r\n display: 'inline-block',\r\n },\r\n '& .filter-header .filter-button:hover': {\r\n backgroundColor: '#e5e5e5',\r\n cursor: 'pointer',\r\n },\r\n '& .filter-header .glyphicon-filter': {\r\n marginRight: '6px',\r\n },\r\n '& .filter-header .filterMenu': {\r\n border: '1px solid #CCCCCC',\r\n minWidth: '250px',\r\n padding: '2px',\r\n },\r\n '& .filter-header .filterMenu .saved': {\r\n marginBottom: '2px',\r\n },\r\n '& .filter-header .filterMenu .new, & .filter-header .filterMenu .apply': {\r\n display: 'block',\r\n color: '#404040',\r\n padding: '4px 0 4px 20px',\r\n },\r\n '& .filter-header .filterMenu .new:hover, & .filter-header .filterMenu .apply:hover, & .filter-header .filterMenu .saved>li:hover': {\r\n textDecoration: 'none',\r\n backgroundColor: '#EAECEE',\r\n },\r\n '& .filter-header .filterMenu .delete': {\r\n color: '#404040',\r\n padding: '4px 4px 4px',\r\n float: 'right',\r\n clear: 'right',\r\n },\r\n '& .filter-header .filterMenu .apply-header': {\r\n color: '#929fad',\r\n padding: '6px 0 4px 9px',\r\n },\r\n '& .filter-header .quick': {\r\n minWidth: '151px',\r\n borderWidth: '1px',\r\n borderStyle: 'solid',\r\n borderColor: '#ccc',\r\n backgroundColor: '#FFFFFF',\r\n display: 'inline-block',\r\n },\r\n '& .filter-header .quick .quick-text': {\r\n padding: '3px 5px',\r\n border: 'none',\r\n },\r\n '& .filter-header .quick .quick-text:active': {\r\n border: 'none',\r\n },\r\n '& .filter-body .save-form': {\r\n marginTop: '25px',\r\n },\r\n '& .filter-body .save-form h5.checkbox': {\r\n marginLeft: '15px',\r\n },\r\n '& .filter-body .save-form .name': {\r\n width: '300px',\r\n },\r\n '& .grid-toolbar-bar': {\r\n fontSize: 12,\r\n },\r\n '& .predicate-list>ul': {\r\n marginBottom: '10px',\r\n },\r\n '& .predicate-list>ul>li.row': {\r\n marginBottom: '4px',\r\n },\r\n '& .predicate-list>ul>li.row>div': {\r\n paddingLeft: '2px',\r\n paddingRight: '2px',\r\n },\r\n '& .predicate-list>ul>li.row .operator-single': {\r\n lineHeight: '25px',\r\n marginLeft: '10px',\r\n marginBottom: '0',\r\n },\r\n '& .predicate-list>ul>li.row .dropdown .dropdown-control .glyphicon-triangle-bottom': {\r\n float: 'right',\r\n marginTop: '1px',\r\n },\r\n '& .predicate-list>ul>li.row .dropdown .dropdown-menu': {\r\n border: '1px solid #BBB',\r\n padding: '3px 5px',\r\n },\r\n '& .predicate-list>ul>li.row span.datepicker': {\r\n padding: '0',\r\n margin: '0',\r\n border: '0',\r\n },\r\n '& .predicate-list>ul>li.row ul.enum-options>li': {\r\n whiteSpace: 'nowrap',\r\n },\r\n '& .predicate-list>ul>li.row ul.enum-options>li input[type=\"checkbox\"]': {\r\n marginTop: '0',\r\n },\r\n '& .predicate-list a.remove, & .predicate-list a.new': {\r\n lineHeight: '20px',\r\n textDecoration: 'none',\r\n color: '#323130',\r\n fontSize: 12,\r\n },\r\n '& ol, & ul': {\r\n listStyle: 'none',\r\n paddingLeft: 0,\r\n },\r\n};\r\n","export const getFilterEditorOverrideStyle = palette => ({\r\n '& .filter-editor': {\r\n '& .save-form .checkbox label': {\r\n display: 'inline-block',\r\n },\r\n '& .panel-body': {\r\n paddingLeft: '32px',\r\n lineHeight: '19px',\r\n marginBottom: '28px',\r\n },\r\n '& .glyphicon-remove:before': {\r\n // eslint-disable-next-line no-useless-escape\r\n content: '\"\\\\E711\"',\r\n },\r\n '& .glyphicon': {\r\n display: 'inline-block',\r\n 'font-family': 'MsAds MDL2 Assets',\r\n 'font-size': '14px',\r\n 'font-style': 'normal',\r\n '-webkit-font-smoothing': 'antialiased',\r\n '-moz-osx-font-smoothing': 'grayscale',\r\n },\r\n '& .glyphicon.glyphicon-remove': {\r\n top: 0,\r\n },\r\n '& .glyphicon.glyphicon-plus': {\r\n marginRight: 8,\r\n height: 14,\r\n width: 14,\r\n fontFamily: 'MsAds MDL2 Assets',\r\n color: palette.themePrimary,\r\n top: 2,\r\n },\r\n '& .glyphicon-plus:before': {\r\n content: '\"\\\\E710\" !important',\r\n },\r\n '& .delivery-status-category-container:first-of-type': {\r\n float: 'left',\r\n marginLeft: '20px',\r\n display: 'inline-block',\r\n marginTop: 0,\r\n },\r\n\r\n '& .delivery-status-category-container + .delivery-status-category-container': {\r\n paddingLeft: 20,\r\n float: 'left',\r\n },\r\n '& .predicate-row': {\r\n alignItems: 'end',\r\n },\r\n '& .filter_button': {\r\n marginTop: 2,\r\n },\r\n },\r\n});\r\n","// Styles for legacy filter bar to make it looks like New UI, no need to use it for new filter bar\r\nexport const getLegacyFilterBarStyle = ({ palette }) => ({\r\n '& .filter-bar': {\r\n '& .panel-component': {\r\n backgroundColor: palette.neutralLighter,\r\n marginBottom: '0 !important',\r\n minHeight: 56,\r\n minWidth: 1000,\r\n lineHeight: '24px',\r\n padding: '15px 10px',\r\n\r\n '& .panel-body': {\r\n padding: 0,\r\n\r\n '& .filter_title_collapsed': {\r\n marginRight: 35,\r\n },\r\n\r\n '& .filter_row_readonly .humanized': {\r\n '& .column, & .filter_operator': {\r\n marginRight: 5,\r\n },\r\n\r\n '& .filterValue': {\r\n fontWeight: 600,\r\n },\r\n\r\n '& .filterand': {\r\n display: 'inline-block',\r\n width: 20,\r\n },\r\n },\r\n\r\n '& .filter_links': {\r\n marginLeft: 40,\r\n\r\n '& a': {\r\n display: 'inline-block',\r\n textDecoration: 'none',\r\n\r\n '&:nth-child(2n)': {\r\n fontWeight: 600,\r\n marginRight: 30,\r\n color: palette.neutralPrimary,\r\n },\r\n\r\n '&:last-child': {\r\n marginRight: 0,\r\n },\r\n },\r\n },\r\n\r\n '& .filter_title_collapsed, & .filter_row_readonly, & .filter_links': {\r\n display: 'inline-block',\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","import { getSharedBodyStyles } from './body';\r\nimport { getSharedColGroupStyles } from './col-group';\r\nimport { getSharedColumnsStyles } from './columns';\r\nimport { getSharedFooterStyles } from './footer';\r\nimport { getSharedGlobalStyles } from './global';\r\nimport { getSharedHeaderStyles } from './header';\r\nimport { getSharedTableStyles } from './table';\r\nimport * as variables from './variables';\r\n\r\nexport const GridSharedStyles = {\r\n getSharedBodyStyles,\r\n getSharedColGroupStyles,\r\n getSharedColumnsStyles,\r\n getSharedFooterStyles,\r\n getSharedGlobalStyles,\r\n getSharedHeaderStyles,\r\n getSharedTableStyles,\r\n variables,\r\n};\r\n","import { totalRowBackgroundColor, tableBorder } from './variables';\r\n\r\nexport const getSharedBodyStyles = (components, { palette }) => ({\r\n '& tr.segment-row': {\r\n fontSize: '12px',\r\n\r\n // Need this so values in primary key will stay 12px\r\n '& .segment-value': {\r\n fontSize: '12px',\r\n },\r\n },\r\n // The total rows at the bottom of the table\r\n '& tr.aggregate-row': {\r\n '& td': {\r\n fontSize: '12px !important',\r\n },\r\n },\r\n '& tr.aggregated-row': {\r\n '& td': {\r\n fontSize: '12px !important',\r\n backgroundColor: totalRowBackgroundColor,\r\n },\r\n '&:hover': { // No hover color changes for aggregated rows.\r\n '& td': {\r\n fontSize: '12px !important',\r\n borderRight: tableBorder,\r\n },\r\n },\r\n },\r\n '& tr': {\r\n backgroundColor: '#FFFFFF',\r\n color: palette.neutralPrimary,\r\n\r\n // hide extra border between header and body, the first filler tr in grid need to be excluded\r\n '&[data-key]:first-child, &:not([data-key]) + tr[data-key]': {\r\n '& td': {\r\n borderTop: 'none',\r\n },\r\n },\r\n\r\n '&[data-key]:hover, &.row-selected[data-key], &.row-selected[data-key]:hover': {\r\n '& td': {\r\n borderBottom: '1px solid #FFFFFF',\r\n },\r\n },\r\n\r\n '&:hover': {\r\n backgroundColor: palette.neutralLighter,\r\n },\r\n\r\n '&.row-selected': {\r\n backgroundColor: palette.neutralLight,\r\n '& td a': {\r\n color: palette.themeDarker,\r\n fontWeight: 600,\r\n },\r\n '&:hover': {\r\n backgroundColor: palette.neutralQuaternaryAlt,\r\n },\r\n },\r\n\r\n '&:hover, &.row-selected, &.row-selected:hover': {\r\n '& td': {\r\n borderRight: '1px solid #FFFFFF',\r\n },\r\n },\r\n\r\n '&.grid-error-row': {\r\n '& td': {\r\n '& ul.grid-error-list': {\r\n listStyle: 'none',\r\n paddingLeft: 0,\r\n margin: '0.5em 0',\r\n color: '#A80000',\r\n '& .grid-error': {\r\n paddingRight: 5,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","import { PagePadding } from '../../constants/pagePadding';\r\n\r\nexport const headerRowBackgroundColor = '#FFFFFF';\r\nexport const headerRowBorderTop = '2px solid #81868B';\r\nexport const headerRowBorderBottom = '2px solid #81868B';\r\nexport const totalRowBackgroundColor = '#FFFFFF';\r\nexport const totalRowBorderTop = 'none'; // `1px solid ${palette.neutralLighter}`\r\nexport const tableBorder = '1px solid #EDEBE9';\r\n\r\nexport const gridPaddingLeft = PagePadding.mainSectionLeftPadding;\r\nexport const gridPaddingComponsation = 0; // These two should add up to 32px\r\n","// use this in '& col'\r\nexport const getSharedColGroupStyles = () => ({\r\n width: 120,\r\n minWidth: 120,\r\n\r\n '&.col-selection': {\r\n width: 46,\r\n minWidth: 46,\r\n },\r\n});\r\n","/* eslint-disable max-len */\r\nimport { tableBorder } from './variables';\r\n\r\nexport const getSharedColumnsStyles = () => ({\r\n '&': {\r\n padding: '6px 8px',\r\n verticalAlign: 'middle',\r\n border: tableBorder, // NOTE: updated from 'palette.neutralLighter' for fit and finish experiments\r\n fontSize: '12px',\r\n overflowWrap: 'break-word',\r\n },\r\n\r\n '&:first-child': {\r\n paddingLeft: '12px',\r\n },\r\n\r\n '& span': {\r\n lineHeight: '16px',\r\n },\r\n});\r\n","import { gridPaddingComponsation } from './variables';\r\n\r\nexport const getSharedFooterStyles = () => ({\r\n '& tr.noborder': {\r\n '& td': {\r\n border: 'none',\r\n paddingLeft: '0px',\r\n paddingTop: '24px',\r\n '& .pagination-control': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n marginTop: '5px',\r\n marginBottom: '5px',\r\n marginLeft: gridPaddingComponsation,\r\n\r\n '& .form-control.page-size-selector': {\r\n marginLeft: '5px',\r\n minWidth: '60px',\r\n },\r\n '& .pager': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n marginTop: '0',\r\n marginBottom: '0',\r\n marginLeft: '20px',\r\n '& .nav-button': {\r\n border: 'none',\r\n padding: '0',\r\n minWidth: '20px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n '&.prev': {\r\n marginRight: '10px',\r\n '& + .text': {\r\n display: 'none', // to hide text \"Page:\"\r\n },\r\n },\r\n '&.next': {\r\n marginLeft: '10px',\r\n },\r\n '&:disabled': {\r\n backgroundColor: '#fff',\r\n },\r\n },\r\n '& .page-number-input': {\r\n marginRight: '5px',\r\n width: '75px',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","export const getSharedGlobalStyles = (components, { palette }) => ({\r\n '.bingadsgrid': {\r\n '& .grid-noresult, & .grid-noresult-empty, & .noresult': {\r\n color: palette.neutralSecondary,\r\n fontSize: 26,\r\n lineHeight: '36px',\r\n padding: '20px 0 20px 40px',\r\n },\r\n },\r\n '.table-container .glyphicon.glyphicon-triangle-left': {\r\n fontFamily: '\"MsAds MDL2 Assets\"',\r\n },\r\n '.table-container .glyphicon.glyphicon-triangle-left::before': {\r\n content: '\"\\\\E76B\"',\r\n color: palette.neutralSecondary,\r\n },\r\n '.table-container .btn:disabled .glyphicon.glyphicon-triangle-left::before': {\r\n color: '#BEBBB8',\r\n },\r\n '.table-container .glyphicon.glyphicon-triangle-right': {\r\n fontFamily: '\"MsAds MDL2 Assets\"',\r\n },\r\n '.table-container .glyphicon.glyphicon-triangle-right::before': {\r\n content: '\"\\\\E76C\"',\r\n color: palette.neutralSecondary,\r\n },\r\n '.table-container .btn:disabled .glyphicon.glyphicon-triangle-right::before': {\r\n color: '#BEBBB8',\r\n },\r\n '.table-container .glyphicon.glyphicon-triangle-bottom': {\r\n fontFamily: '\"MsAds MDL2 Assets\"',\r\n },\r\n '.table-container .glyphicon.glyphicon-triangle-bottom::before': {\r\n content: '\"\\\\E70D\"',\r\n color: palette.neutralSecondary,\r\n },\r\n '.table-container .btn:disabled .glyphicon.glyphicon-triangle-bottom::before': {\r\n color: '#BEBBB8',\r\n },\r\n});\r\n","import { tableBorder, totalRowBorderTop, totalRowBackgroundColor, headerRowBorderBottom, headerRowBackgroundColor, headerRowBorderTop } from './variables';\r\n\r\nexport const getSharedHeaderStyles = (components, { palette, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '& tr.aggregated-row': {\r\n '& th': {\r\n fontSize: '12px',\r\n },\r\n },\r\n '& tr.overall-total-row': {\r\n '& th': {\r\n fontWeight: 'normal',\r\n borderTop: totalRowBorderTop,\r\n borderBottom: tableBorder,\r\n backgroundColor: totalRowBackgroundColor,\r\n },\r\n },\r\n '& tr': {\r\n '& th.column-header': {\r\n borderTop: headerRowBorderTop,\r\n borderBottom: headerRowBorderBottom,\r\n '& .helpbutton::before': {\r\n position: 'static',\r\n },\r\n\r\n '& span.grid-header-text': {\r\n overflowWrap: 'break-word',\r\n wordBreak: 'break-word',\r\n },\r\n '& span.grid-header-helpId': {\r\n lineHeight: 1,\r\n },\r\n },\r\n '& th': {\r\n verticalAlign: 'middle',\r\n fontWeight: '600',\r\n backgroundColor: headerRowBackgroundColor,\r\n color: palette.neutralPrimary,\r\n border: tableBorder,\r\n padding: '6px 8px',\r\n },\r\n\r\n '& th:first-child': {\r\n paddingLeft: '12px',\r\n },\r\n\r\n // we don't want pop first column header to have special padding left\r\n '&.pop-enabled + tr.pop-enabled th:first-child': {\r\n paddingLeft: '10px',\r\n },\r\n\r\n '& th.column-header-sortable': {\r\n cursor: 'pointer',\r\n },\r\n\r\n '&.grid-cross-page-select-all': {\r\n '& th': {\r\n padding: '0',\r\n border: 'none',\r\n },\r\n },\r\n '& .glyphicon': {\r\n fontFamily: iconFontFamily,\r\n },\r\n '& .glyphicon-arrow-up:before': {\r\n content: '\"\\\\EE68\"',\r\n },\r\n '& .glyphicon-arrow-down:before': {\r\n content: '\"\\\\EE69\"',\r\n },\r\n\r\n // this temporary style for grid POP before we got UI from designer\r\n '& th span.pop-toggle-icon.clickable': {\r\n height: '14px',\r\n width: '14px',\r\n border: '1px solid transparent',\r\n display: 'inline-block',\r\n float: 'none',\r\n marginTop: '3px',\r\n\r\n '&:hover': {\r\n border: '1px solid black',\r\n },\r\n\r\n '& span': {\r\n display: 'block',\r\n fontSize: '10px',\r\n fontFamily: iconFontFamily,\r\n fontWeight: 'bold',\r\n '-webkit-font-smoothing': 'antialiased',\r\n height: '12px',\r\n lineHeight: '12px',\r\n textAlign: 'center',\r\n width: '12px',\r\n\r\n '&.pop-expand:before': {\r\n content: '\"\\\\E710\"',\r\n color: 'black',\r\n },\r\n\r\n '&.pop-collapse:before': {\r\n content: '\"\\\\E738\"',\r\n color: 'black',\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& tr.pop-enabled th.column-header.pop-column-header > div.column-header-container': {\r\n display: 'inline-block',\r\n },\r\n});\r\n","export const getSharedTableStyles = (components, { palette }) => ({\r\n '&': {\r\n borderLeft: 'none',\r\n borderRight: 'none',\r\n borderBottom: 'none',\r\n },\r\n '& .glyphicon': {\r\n position: 'static',\r\n },\r\n\r\n '& .iconba': {\r\n position: 'static',\r\n },\r\n\r\n '& .grid-disabled': {\r\n color: palette.neutralSecondaryAlt,\r\n },\r\n});\r\n","// Export themes here\r\nexport { ThemeFluent } from './theme-fluent';\r\nexport { DarkTheme } from './dark-theme';\r\n","import { createTheme, CommunicationColors, NeutralColors, SharedColors, Depths } from '@fluentui/react';\r\n\r\nexport const ThemeFluent = createTheme({\r\n palette: {\r\n neutralDark: NeutralColors.gray190,\r\n neutralPrimary: NeutralColors.gray160,\r\n neutralPrimaryAlt: NeutralColors.gray150,\r\n neutralSecondary: NeutralColors.gray130,\r\n neutralSecondaryAlt: NeutralColors.gray110,\r\n neutralTertiary: NeutralColors.gray90,\r\n neutralTertiaryAlt: NeutralColors.gray60,\r\n neutralQuaternary: NeutralColors.gray50,\r\n neutralQuaternaryAlt: NeutralColors.gray40,\r\n neutralLight: NeutralColors.gray30,\r\n neutralLighter: NeutralColors.gray20,\r\n neutralLighterAlt: NeutralColors.gray10,\r\n themeDark: CommunicationColors.shade20,\r\n themeDarker: CommunicationColors.shade30,\r\n themeDarkAlt: CommunicationColors.shade10,\r\n themeLight: CommunicationColors.tint20,\r\n themeLighter: CommunicationColors.tint30,\r\n themeLighterAlt: CommunicationColors.tint40,\r\n themePrimary: CommunicationColors.primary,\r\n themeSecondary: CommunicationColors.tint10,\r\n themeTertiary: '#71afe5',\r\n // Shared Colors\r\n red: SharedColors.red10,\r\n redDark: SharedColors.red20,\r\n black: '#000000',\r\n white: '#ffffff',\r\n // MS Ads\r\n globalBackground: '#2f2f2f',\r\n mainMenuHoverBackground: '#484644',\r\n },\r\n effects: {\r\n roundedCorner2: '2px',\r\n elevation4: Depths.depth4,\r\n elevation8: Depths.depth8,\r\n elevation16: Depths.depth16,\r\n elevation64: Depths.depth64,\r\n },\r\n});\r\n\r\nThemeFluent.iconFontFamily = 'MsAds MDL2 Assets';\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__49__;","import { createTheme, Depths } from '@fluentui/react';\r\n\r\nexport const DarkTheme = createTheme({\r\n palette: {\r\n themePrimary: '#88b0cf',\r\n themeLighterAlt: '#050708',\r\n themeLighter: '#161c21',\r\n themeLight: '#29353e',\r\n themeTertiary: '#526a7c',\r\n themeSecondary: '#789bb6',\r\n themeDarkAlt: '#93b7d3',\r\n themeDark: '#a2c2da',\r\n themeDarker: '#b8d1e4',\r\n neutralLighterAlt: '#201f1e',\r\n neutralLighter: '#2A2A29',\r\n neutralLight: '#30302F',\r\n neutralQuaternaryAlt: '#1c1b1b',\r\n neutralQuaternary: '#1b1a19',\r\n neutralTertiaryAlt: '#1a1918',\r\n neutralTertiary: '#f5f9fd',\r\n neutralSecondary: '#f6fafe',\r\n neutralPrimaryAlt: '#f8fbfe',\r\n neutralPrimary: '#eff6fc',\r\n neutralDark: '#fbfdfe',\r\n black: '#fdfeff',\r\n white: '#201f1e',\r\n },\r\n\r\n effects: {\r\n roundedCorner2: '2px',\r\n elevation4: Depths.depth4,\r\n elevation8: Depths.depth8,\r\n elevation16: Depths.depth16,\r\n elevation64: Depths.depth64,\r\n },\r\n});\r\n\r\nDarkTheme.iconFontFamily = 'MsAds MDL2 Assets';\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__7__;","export * from './src/index';\r\nexport { DefaultSpecificRanges, RANGES } from './src/date-options/default-specific-ranges';\r\nexport { ComparedOptions } from './src/date-options/compared-options';\r\nexport {\r\n generateDateData,\r\n getRangesFromData,\r\n translateLegacyToIANATimezone,\r\n parseCivilDate,\r\n formatCivilDate,\r\n} from './src/date-util';\r\n","import _ from 'underscore';\r\nimport { CivilDate } from 'tc39-proposal-temporal';\r\n\r\nexport const MAX_VALUE = 8640000000000000;\r\nexport const MIN_VALUE = -8640000000000000;\r\n\r\nexport function isDateInvalid(date) {\r\n const year = _.get(date, 'year');\r\n const month = _.get(date, 'month');\r\n const day = _.get(date, 'day');\r\n return _.isNaN(year) || _.isUndefined(year) || _.isNull(year) ||\r\n _.isNaN(month) || _.isUndefined(month) || _.isNull(month) ||\r\n _.isNaN(day) || _.isUndefined(day) || _.isNull(day);\r\n}\r\n\r\n// Returns a date that is the first day of the month of the provided date.\r\nexport function getCivilDateMonthStart(date) {\r\n return new CivilDate(date.year, date.month, 1);\r\n}\r\n\r\n// Returns a date that is the last day of the month of the provided date.\r\nexport function getCivilDateMonthEnd(date) {\r\n return new CivilDate(date.year, date.month + 1, 0);\r\n}\r\n\r\n// Checks whether the date is valid.\r\nexport const isValidDate = value => _.isDate(value) && !_.isNaN(value.getTime());\r\n\r\n// Get a Civil Date from Date object\r\nexport const getCivilDateFromDate = value => (isValidDate(value) ? new CivilDate(\r\n value.getFullYear(),\r\n value.getMonth() + 1,\r\n value.getDate()\r\n) : null);\r\n\r\nexport const maxCivilDate = getCivilDateFromDate(new Date(MAX_VALUE));\r\nexport const minCivilDate = getCivilDateFromDate(new Date(MIN_VALUE));\r\n\r\n// Compare the month parts of two dates. A negative value if date1 is earlier than date2,\r\n// 0 if the dates are equal, or a positive value if date1 is later than date2.\r\nexport function compareCivilMonth(date1, date2) {\r\n if (date1.year !== date2.year) {\r\n return date1.year - date2.year;\r\n }\r\n return date1.month - date2.month;\r\n}\r\n\r\n// Compare the date parts of two dates. A negative value if date1 is earlier than date2,\r\n// 0 if the dates are equal, or a positive value if date1 is later than date2.\r\nexport function compareCivilDate(date1, date2) {\r\n if (date1.year !== date2.year) {\r\n return date1.year - date2.year;\r\n } else if (date1.month !== date2.month) {\r\n return date1.month - date2.month;\r\n }\r\n return date1.day - date2.day;\r\n}\r\n\r\nexport function getMinDate(date1, date2) {\r\n if (isDateInvalid(date1)) {\r\n return date2;\r\n }\r\n if (isDateInvalid(date2)) {\r\n return date1;\r\n }\r\n if (compareCivilDate(date1, date2) <= 0) {\r\n return date1;\r\n }\r\n return date2;\r\n}\r\n\r\nexport function getMaxDate(date1, date2) {\r\n if (isDateInvalid(date1)) {\r\n return date2;\r\n }\r\n if (isDateInvalid(date2)) {\r\n return date1;\r\n }\r\n if (compareCivilDate(date1, date2) >= 0) {\r\n return date1;\r\n }\r\n return date2;\r\n}\r\n\r\n// Checks whether the specified date is in the given date range.\r\nexport function isCivilDateInRange(date, { start, end }) {\r\n if (start && end) {\r\n if ((compareCivilDate(start, date) >= 0 && compareCivilDate(end, date) <= 0)\r\n || (compareCivilDate(start, date) <= 0 && compareCivilDate(end, date) >= 0)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n\r\n// Checks whether the specified date is in the given date open range\r\n// eslint-disable-next-line max-len\r\nexport const isCivilDateInOpenRange = ({ minDate = minCivilDate, maxDate = maxCivilDate, value }) => {\r\n if (!value) {\r\n return false;\r\n }\r\n return isCivilDateInRange(value, { start: minDate, end: maxDate });\r\n};\r\n\r\n// Checks whether the month of the specified date is in the given date range.\r\nexport function isCivilMonthInRange(date, { start, end }) {\r\n if (start && end) {\r\n return (compareCivilMonth(start, date) >= 0 && compareCivilMonth(end, date) <= 0)\r\n || (compareCivilMonth(start, date) <= 0 && compareCivilMonth(end, date) >= 0);\r\n }\r\n return false;\r\n}\r\n\r\n// TODO: remove it and use civildate own function to do this.\r\n// There is a issue tracking this function: https://github.com/tc39/proposal-temporal/issues/69\r\nexport function getCivilDateDayOfWeek(civilDate) {\r\n return (new Date(civilDate.year, civilDate.month - 1, civilDate.day)).getDay();\r\n}\r\n\r\n// get a date that is the monday of this week(monday - sunday)\r\nexport const getThisMonday = (date, includeToday = true) => {\r\n if (isDateInvalid(date) || date.plus == null) {\r\n return null;\r\n }\r\n if (includeToday) {\r\n return (getCivilDateDayOfWeek(date) === 0 ?\r\n date.plus({ days: -6 }) :\r\n date.plus({ days: -getCivilDateDayOfWeek(date) + 1 }));\r\n }\r\n // map [1, 2, 3, 4, 5, 6, 0] to [7, 1, 2, 3, 4, 5, 6]\r\n const dayOfWeek = getCivilDateDayOfWeek(date);\r\n if (dayOfWeek === 1) {\r\n return date.plus({ days: -7 });\r\n }\r\n return date.plus({ days: -((dayOfWeek + 6) % 7) });\r\n};\r\n\r\nexport function getCivilDateToday() {\r\n return getCivilDateFromDate(new Date());\r\n}\r\n\r\n// Checks whether the specified date is the the given date range start or end.\r\nexport function isCivilDateRangeStartOrEnd(date, dateRange) {\r\n return _.some(dateRange, d => compareCivilDate(date, d) === 0);\r\n}\r\n\r\nfunction withDateChecker(date, func) {\r\n if (isDateInvalid(date) || date.plus == null) {\r\n return null;\r\n }\r\n return func();\r\n}\r\n\r\nexport function getThisSunday(date, includeToday = true) {\r\n // map [1, 2, 3, 4, 5, 6, 0] to [1, 2, 3, 4, 5, 6, 0]\r\n return withDateChecker(date, () => {\r\n const dayOfWeek = getCivilDateDayOfWeek(date);\r\n if (!includeToday && dayOfWeek === 0) {\r\n return date.plus({ days: -7 });\r\n }\r\n return date.plus({ days: -(dayOfWeek) });\r\n });\r\n}\r\n\r\nexport function getThisSaturday(date, includeToday = true) {\r\n // map [1, 2, 3, 4, 5, 6, 0] to [2, 3, 4, 5, 6, 0, 1]\r\n return withDateChecker(date, () => {\r\n const dayOfWeek = getCivilDateDayOfWeek(date);\r\n if (!includeToday && dayOfWeek === 6) {\r\n return date.plus({ days: -7 });\r\n }\r\n return date.plus({ days: -((dayOfWeek + 1) % 7) });\r\n });\r\n}\r\n\r\nexport function getLastMonday(date, includeToday = true) {\r\n // map [1, 2, 3, 4, 5, 6, 0] to [0, 1, 2, 3, 4, 5, 6]\r\n return withDateChecker(date, () => {\r\n const dayOfWeek = getCivilDateDayOfWeek(date);\r\n if (!includeToday && dayOfWeek === 1) {\r\n return date.plus({ days: -14 });\r\n }\r\n return date.plus({ days: -(((dayOfWeek + 6) % 7) + 7) });\r\n });\r\n}\r\n\r\nexport function getLastSunday(date, includeToday = true) {\r\n return withDateChecker(date, () => {\r\n const dayOfWeek = getCivilDateDayOfWeek(date);\r\n if (!includeToday && dayOfWeek === 0) {\r\n return date.plus({ days: -14 });\r\n }\r\n return date.plus({ days: -(dayOfWeek + 7) });\r\n });\r\n}\r\n\r\nexport function getNextMonday(date, includeToday = false) {\r\n return withDateChecker(date, () => {\r\n if (includeToday) {\r\n // map [1, 2, 3, 4, 5, 6, 0] to [0, 6, 5, 4, 3, 2, 1]\r\n const dayOfWeek = getCivilDateDayOfWeek(date);\r\n return date.plus({ days: (((7 - dayOfWeek) + 1) % 7) });\r\n }\r\n const dayOfWeek = getCivilDateDayOfWeek(date);\r\n return date.plus({ days: -((dayOfWeek + 6) % 7) + 7 });\r\n });\r\n}\r\n\r\nexport function getNextSunday(date, includeToday = false) {\r\n return withDateChecker(date, () => {\r\n if (includeToday) {\r\n const dayOfWeek = getCivilDateDayOfWeek(date);\r\n return date.plus({ days: ((7 - dayOfWeek) % 7) });\r\n }\r\n const dayOfWeek = getCivilDateDayOfWeek(date);\r\n return date.plus({ days: -(dayOfWeek) + 7 });\r\n });\r\n}\r\n\r\nexport function getNextSaturday(date, includeToday = false) {\r\n return withDateChecker(date, () => {\r\n if (includeToday) {\r\n // map [1, 2, 3, 4, 5, 6, 0] to [5, 4, 3, 2, 1, 0, 6]\r\n const dayOfWeek = getCivilDateDayOfWeek(date);\r\n return date.plus({ days: ((6 - dayOfWeek) % 7) });\r\n }\r\n const dayOfWeek = getCivilDateDayOfWeek(date);\r\n return date.plus({ days: -((dayOfWeek + 1) % 7) + 7 });\r\n });\r\n}\r\n\r\nexport function getNextNextSunday(date, includeToday = false) {\r\n return withDateChecker(date, () => {\r\n const dayOfWeek = getCivilDateDayOfWeek(date);\r\n if (includeToday && dayOfWeek === 0) {\r\n return date.plus({ days: 7 });\r\n }\r\n return date.plus({ days: -(dayOfWeek) + 14 });\r\n });\r\n}\r\n\r\nexport function getNextNextSaturday(date, includeToday = false) {\r\n return withDateChecker(date, () => {\r\n const dayOfWeek = getCivilDateDayOfWeek(date);\r\n if (includeToday && dayOfWeek === 6) {\r\n return date.plus({ days: 7 });\r\n }\r\n return date.plus({ days: -((dayOfWeek + 1) % 7) + 14 });\r\n });\r\n}\r\n\r\nexport function isDateAvailable(date, minDate, maxDate) {\r\n if (isDateInvalid(date) || isDateInvalid(minDate) || isDateInvalid(maxDate)) {\r\n return false;\r\n }\r\n return isCivilDateInRange(date, { start: minDate, end: maxDate });\r\n}\r\n\r\nexport function isRangeValid(range) {\r\n const start = _.get(range, 'start');\r\n const end = _.get(range, 'end');\r\n if (isDateInvalid(start) || isDateInvalid(end)) {\r\n return false;\r\n }\r\n return compareCivilDate(start, end) <= 0;\r\n}\r\n\r\nexport function isRangeDateAvailable(range, minDate, maxDate) {\r\n if (!isRangeValid(range)) {\r\n return false;\r\n }\r\n const start = _.get(range, 'start');\r\n const end = _.get(range, 'end');\r\n return isDateAvailable(start, minDate, maxDate) && isDateAvailable(end, minDate, maxDate);\r\n}\r\n\r\nexport function getDaysOfARange(range) {\r\n if (!isRangeValid(range)) {\r\n return 0;\r\n }\r\n const end = _.get(range, 'end');\r\n const start = _.get(range, 'start');\r\n const t2 = new Date(end.year, end.month - 1, end.day).getTime();\r\n const t1 = new Date(start.year, start.month - 1, start.day).getTime();\r\n // eslint-disable-next-line radix\r\n const difference = Math.round((t2 - t1) / (24 * 3600 * 1000));\r\n return difference + 1;\r\n}\r\n\r\nexport function getMonthsOfARange(range) {\r\n if (!isRangeValid(range)) {\r\n return 0;\r\n }\r\n const end = _.get(range, 'end');\r\n const start = _.get(range, 'start');\r\n if (end.year === start.year) {\r\n return (end.month - start.month) + 1;\r\n }\r\n const fullYears = end.year - start.year - 1;\r\n return (fullYears * 12) + ((12 - start.month) + 1) + end.month;\r\n}\r\n\r\nexport function isTheSameRange(range1, range2) {\r\n const start1 = _.get(range1, 'start');\r\n const start2 = _.get(range2, 'start');\r\n const end1 = _.get(range1, 'end');\r\n const end2 = _.get(range2, 'end');\r\n if (isDateInvalid(start1) || isDateInvalid(start2) || isDateInvalid(end1) || isDateInvalid(end2)) {\r\n return false;\r\n }\r\n return compareCivilDate(start1, start2) === 0 && compareCivilDate(end1, end2) === 0;\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__91__;","\r\n\r\nimport { CivilDate } from 'tc39-proposal-temporal';\r\nimport {\r\n getCivilDateDayOfWeek,\r\n getCivilDateMonthStart,\r\n getThisMonday,\r\n} from '../index';\r\n\r\nexport const RANGES = {\r\n Yesterday: 1,\r\n Last7Days: 2,\r\n Today: 3,\r\n Custom: 4,\r\n Last30Days: 5,\r\n Last14Days: 6,\r\n ThisWeek: 7,\r\n ThisWeekMon: 8,\r\n LastWeek: 9,\r\n ThisMonth: 10,\r\n LastMonth: 11,\r\n Last3Months: 12,\r\n Last6Months: 13,\r\n LastWeekMon: 14,\r\n ThisYear: 15,\r\n LastYear: 16,\r\n EntireTimeLast18Months: 17,\r\n EntireTimeLast5Years: 18,\r\n EntireTime: 22,\r\n};\r\n\r\nexport const DefaultSpecificRanges = (i18n, timeZone) => {\r\n const todayObj = i18n.getToday({ timeZone });\r\n const today = new CivilDate(todayObj.year, todayObj.month, todayObj.day);\r\n const yesterday = today.plus({ days: -1 });\r\n const thisSunday = today.plus({ days: -getCivilDateDayOfWeek(today) });\r\n const thisMonday = getThisMonday(today);\r\n const last7day = today.plus({ days: -7 });\r\n const last14day = today.plus({ days: -14 });\r\n const last30day = today.plus({ days: -30 });\r\n const lastMonday = today.plus({ days: -getCivilDateDayOfWeek(today) - 6 });\r\n const lastSunday = today.plus({ days: -getCivilDateDayOfWeek(today) - 7 });\r\n const lastSaturday = today.plus({ days: -getCivilDateDayOfWeek(today) - 1 });\r\n const thisMonthFirstDay = getCivilDateMonthStart(today);\r\n const lastMonthlastDay = thisMonthFirstDay.plus({ days: -1 });\r\n const lastMonthFirstDay = getCivilDateMonthStart(lastMonthlastDay);\r\n const minSupportDay = today.plus({ years: -3 });\r\n\r\n return [\r\n {\r\n rangeId: RANGES.Custom, key: 'Custom', range: { start: undefined, end: undefined },\r\n },\r\n {\r\n rangeId: RANGES.Today, key: 'Today', range: { start: today, end: today },\r\n },\r\n {\r\n rangeId: RANGES.Yesterday, key: 'Yesterday', range: { start: yesterday, end: yesterday },\r\n },\r\n {\r\n rangeId: RANGES.ThisWeek, key: 'ThisWeek', range: { start: thisSunday, end: today },\r\n },\r\n {\r\n rangeId: RANGES.ThisWeekMon, key: 'ThisWeekMon', range: { start: thisMonday, end: today },\r\n },\r\n {\r\n rangeId: RANGES.Last7Days, key: 'Last7Days', range: { start: last7day, end: yesterday },\r\n },\r\n {\r\n rangeId: RANGES.LastWeek, key: 'LastWeek', range: { start: lastSunday, end: lastSaturday },\r\n },\r\n {\r\n rangeId: RANGES.LastWeekMon, key: 'LastWeekMon', range: { start: lastMonday, end: thisSunday },\r\n },\r\n {\r\n rangeId: RANGES.Last14Days, key: 'Last14Days', range: { start: last14day, end: yesterday },\r\n },\r\n {\r\n rangeId: RANGES.ThisMonth, key: 'ThisMonth', range: { start: thisMonthFirstDay, end: today },\r\n },\r\n {\r\n rangeId: RANGES.LastMonth, key: 'LastMonth', range: { start: lastMonthFirstDay, end: lastMonthlastDay },\r\n },\r\n {\r\n rangeId: RANGES.Last30Days, key: 'Last30Days', range: { start: last30day, end: yesterday },\r\n },\r\n {\r\n rangeId: RANGES.EntireTime, key: 'EntireTime', range: { start: minSupportDay, end: today },\r\n },\r\n ];\r\n};\r\n","import { getLastMonth } from '../date-util';\r\n\r\nexport const ComparedType = {\r\n LastPeriod: 0,\r\n LastMonth: 1,\r\n LastYear: 2,\r\n Custom: 3,\r\n};\r\nexport const ComparedOptions = [\r\n {\r\n type: ComparedType.LastPeriod,\r\n textToExport: 'Previous period',\r\n keyToExport: 'previousPeriod',\r\n get: (range, specificRangeId) => {\r\n switch (specificRangeId) {\r\n // this week\r\n case 7:\r\n case 8:\r\n return ({\r\n start: range.start.plus({ days: -7 }),\r\n end: range.end.plus({ days: -7 }),\r\n });\r\n // this month\r\n case 10:\r\n return ({\r\n start: getLastMonth(range.start),\r\n end: getLastMonth(range.end),\r\n });\r\n default: {\r\n const t2 = new Date(range.end.year, range.end.month - 1, range.end.day).getTime();\r\n const t1 = new Date(range.start.year, range.start.month - 1, range.start.day).getTime();\r\n // eslint-disable-next-line radix\r\n const difference = parseInt((t2 - t1) / (24 * 3600 * 1000));\r\n return ({\r\n start: range.start.plus({ days: -1 - difference }),\r\n end: range.start.plus({ days: -1 }),\r\n });\r\n }\r\n }\r\n },\r\n }, {\r\n type: ComparedType.LastMonth,\r\n textToExport: 'Last month',\r\n keyToExport: 'lastMonth',\r\n get: range => ({\r\n start: getLastMonth(range.start),\r\n end: getLastMonth(range.end),\r\n }),\r\n }, {\r\n type: ComparedType.LastYear,\r\n textToExport: 'Same period last year',\r\n keyToExport: 'samePeriodLastYear',\r\n get: range => ({\r\n start: range.start.plus({ years: -1 }),\r\n end: range.end.plus({ years: -1 }),\r\n }),\r\n }, {\r\n type: ComparedType.Custom,\r\n textToExport: 'Custom',\r\n keyToExport: 'customPeriod',\r\n get: () => ({\r\n start: undefined,\r\n end: undefined,\r\n }),\r\n },\r\n];\r\n","/* eslint-disable max-len */\r\nimport { CivilDate } from 'tc39-proposal-temporal';\r\nimport { fromLegacyTimeZone, toIANATimeZone } from '@bingads-webui-universal/time-zone-converter';\r\n\r\nexport const getLastMonth = (date) => {\r\n let lastMonthDate = date.plus({ months: -1 });\r\n if (lastMonthDate.day !== date.day) {\r\n lastMonthDate = lastMonthDate.plus({ days: -lastMonthDate.day });\r\n }\r\n return lastMonthDate;\r\n};\r\n\r\nexport const formatCivilDate = ({\r\n i18n, date, dateFormat = 'M/d/yyyy',\r\n}) => `${date ? i18n.formatCivilDate(date, { raw: dateFormat }) : ''}`;\r\n\r\nexport const getDateObj = ({ i18n, dateString, dateFormat }) => {\r\n if (!dateString) { return null; }\r\n if (dateFormat) { return i18n.parseCivilDate(dateString, { raw: dateFormat }); }\r\n\r\n const date = new Date(dateString);\r\n const year = date.getFullYear();\r\n const month = date.getMonth() + 1;\r\n const day = date.getDate();\r\n\r\n return (year && month && day) ? {\r\n year,\r\n month,\r\n day,\r\n } : null;\r\n};\r\n\r\nexport const parseCivilDate = ({ i18n, dateString, dateFormat }) => {\r\n const dateObj = getDateObj({ i18n, dateString, dateFormat });\r\n return dateObj ? new CivilDate(dateObj.year, dateObj.month, dateObj.day) : undefined;\r\n};\r\n\r\nexport const translateLegacyToIANATimezone =\r\n legacyTimeZone => toIANATimeZone(fromLegacyTimeZone(legacyTimeZone));\r\n\r\nexport const generateDateData = (i18n, dateFromDatePicker, dateFormat, lcid) => {\r\n const formattedStart = dateFromDatePicker.selectedComparedRange ? formatCivilDate({ i18n, date: dateFromDatePicker.selectedComparedRange.start, dateFormat }) : null;\r\n const formattedEnd = dateFromDatePicker.selectedComparedRange ? formatCivilDate({ i18n, date: dateFromDatePicker.selectedComparedRange.end, dateFormat }) : null;\r\n let compared;\r\n if (!formattedStart && !formattedEnd) {\r\n compared = null;\r\n } else {\r\n compared = {\r\n formattedStart,\r\n formattedEnd,\r\n text: dateFromDatePicker.comparedOption && dateFromDatePicker.comparedOption.textToExport,\r\n key: dateFromDatePicker.comparedOption && dateFromDatePicker.comparedOption.keyToExport,\r\n start: i18n.parseDate(formattedStart),\r\n end: i18n.parseDate(formattedEnd),\r\n };\r\n }\r\n const date = {\r\n RangeStartDate: formatCivilDate({ i18n, date: dateFromDatePicker.selectedRange.start, dateFormat }),\r\n RangeEndDate: formatCivilDate({ i18n, date: dateFromDatePicker.selectedRange.end, dateFormat }),\r\n RangeId: dateFromDatePicker.rangeType.rangeId,\r\n Rangelcid: lcid,\r\n compared,\r\n RangeIndex: dateFromDatePicker.rangeIndex,\r\n RangeDays: dateFromDatePicker.rangeDays,\r\n };\r\n return date;\r\n};\r\n\r\nexport const getRangesFromData = (i18n, dateData, dateFormat, lcid) => {\r\n if (!dateData || dateData.Rangelcid !== lcid) {\r\n return { selectedRange: undefined, selectedComparedRange: undefined };\r\n }\r\n const {\r\n RangeStartDate,\r\n RangeEndDate,\r\n compared,\r\n } = dateData;\r\n return {\r\n selectedRange: {\r\n start: RangeStartDate ? parseCivilDate({ i18n, dateString: RangeStartDate, dateFormat }) : undefined,\r\n end: RangeEndDate ? parseCivilDate({ i18n, dateString: RangeEndDate, dateFormat }) : undefined,\r\n },\r\n selectedComparedRange: {\r\n start: compared && compared.formattedStart ?\r\n parseCivilDate({ i18n, dateString: compared.formattedStart, dateFormat }) : undefined,\r\n end: compared && compared.formattedEnd ?\r\n parseCivilDate({ i18n, dateString: compared.formattedEnd, dateFormat }) : undefined,\r\n },\r\n };\r\n};\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__95__;","/**\r\n * The base cache replacement strategy.\r\n */\r\nexport class ReplacementStrategy {\r\n /**\r\n * Get the key of the cache entry to replace\r\n * @param {TimeAwareCache} cache - The cache to write with\r\n * @param {string} key - The key for the new cache entry\r\n * @param {number} timestamp - The timestamp of the write operation\r\n * @returns {string} - The key of the entry to replace\r\n */\r\n keyToReplace(/* cache, key, timestamp */) { return null; }\r\n\r\n /**\r\n * Initialize the data structure to apply the strategy on a given cache\r\n * @param {TimeAwareCache} cache - The cache to work with\r\n * @returns {void}\r\n */\r\n initializeCache(cache) {\r\n cache.subscribe(this);\r\n }\r\n}\r\n","// Terms\r\n// TLRU - Time aware Least Recently Used\r\n// LRU record - least recently used cache record\r\n// LLT record - least life time cache record\r\n// LRU chain - a chain of all cache records in access sequence. The head of the\r\n// chain is the LRU record\r\n// TTL heap - a min-heap of all cache records according to their time to live.\r\n// the root of the heap is the LLT record\r\n\r\nimport { ReplacementStrategy } from './base';\r\nimport { EXP_INVALIDATED, DEFAULT_LIMIT } from '../constants';\r\n\r\nfunction validateLimit(limit) {\r\n if (typeof limit !== 'number' || Math.floor(limit) !== limit || limit <= 0) {\r\n throw new Error('Invalid limit');\r\n }\r\n}\r\n\r\n/**\r\n * The record for 1 cached key value pair\r\n * @typedef {Object} LRURecord\r\n * @property {string} key - The key for the object cached in the record\r\n * @property {number} exp - The expiration time\r\n * @property {LRURecord} next - Next record in LRU chain (more recently used)\r\n * @property {LRURecord} prev - Previous record in LRU chain (less recenlty used)\r\n */\r\n\r\n/* eslint-disable no-param-reassign */\r\n/**\r\n * Remove an LRU record from the chain\r\n * @private\r\n * @param {LRURecord} record - The record to remove\r\n * @returns {void}\r\n */\r\nfunction removeLRURecord(record) {\r\n record.prev.next = record.next;\r\n record.next.prev = record.prev;\r\n}\r\n\r\n/**\r\n * Insert an LRU record into the chain before the anchor record\r\n * @private\r\n * @param {LRURecord} record - The record to insert\r\n * @param {LRURecord} anchor - The anchor record\r\n * @returns {void}\r\n */\r\nfunction insertLRURecord(record, anchor) {\r\n anchor.prev.next = record;\r\n record.prev = anchor.prev;\r\n anchor.prev = record;\r\n record.next = anchor;\r\n}\r\n/* eslit-enable no-param-reassign */\r\n\r\n/**\r\n * Promote an LRU record in the chain, mark it as most recently used\r\n * @private\r\n * @param {Object} lru - The TLRU cache state\r\n * @param {LRURecord} lru.records - The LRU records\r\n * @param {Object} lru.indices -\r\n * The index hash, a mapping from cache key to record index\r\n * @param {string} key - The key of the record to be promoted\r\n * @returns {void}\r\n */\r\nfunction promoteLRURecord(lru, key) {\r\n const { records, indices } = lru;\r\n const record = records[indices[key]];\r\n const pseudoRecord = records[0];\r\n\r\n if (record !== pseudoRecord && record !== pseudoRecord.prev) {\r\n removeLRURecord(record);\r\n insertLRURecord(record, pseudoRecord);\r\n }\r\n}\r\n\r\n/* eslint-disable no-bitwise, no-continue */\r\n\r\n/**\r\n * Adjust the LRU records\r\n * @private\r\n * @param {Object} lru - The TLRU cache state\r\n * @param {LRURecord} lru.records - The LRU records\r\n * @param {Object} lru.indices - The mapping from cache key to record index\r\n * @param {string} key - The key of the record to be promoted\r\n * @returns {void}\r\n */\r\nfunction adjustHeap(lru, key) {\r\n const { records, indices } = lru;\r\n let index = indices[key];\r\n\r\n while (index > 0 && index < records.length) {\r\n const record = records[index];\r\n\r\n const indexParent = index >> 1;\r\n const recordParent = indexParent > 0 ? records[indexParent] : null;\r\n\r\n // Shift up the record if it has less life time than parent\r\n if (recordParent && recordParent.exp > record.exp) {\r\n indices[record.key] = indexParent;\r\n indices[recordParent.key] = index;\r\n records[index] = recordParent;\r\n records[indexParent] = record;\r\n index = indexParent;\r\n continue;\r\n }\r\n\r\n // Choose the child with less life time\r\n const indexL = index << 1;\r\n const indexR = indexL + 1;\r\n const recordL = records[indexL] || null;\r\n const recordR = records[indexR] || null;\r\n const indexChild = (recordR && recordR.exp < recordL.exp) ? indexR : indexL;\r\n const recordChild = records[indexChild] || null;\r\n\r\n // Shift down the record if it has more life time than the child\r\n if (recordChild && recordChild.exp < record.exp) {\r\n indices[record.key] = indexChild;\r\n indices[recordChild.key] = index;\r\n records[index] = recordChild;\r\n records[indexChild] = record;\r\n index = indexChild;\r\n continue;\r\n }\r\n\r\n break;\r\n }\r\n}\r\n/* eslint-disable no-continue */\r\n\r\nexport class LRUReplacementStrategy extends ReplacementStrategy {\r\n /**\r\n * The Time aware Least Recently Used cache replacement strategy.\r\n * The replacement rules are\r\n * 1. If the LLT cache entry is expired, reuse it\r\n * 2. If the cache is not full, create a new entry\r\n * 3. Reuse the LRU cache entry\r\n * @extends ReplacementStrategy\r\n * @param {Object} options -\r\n * @param {number} options.limit - Maximum number of cache entries\r\n */\r\n constructor({ limit = DEFAULT_LIMIT } = {}) {\r\n super();\r\n validateLimit(limit);\r\n\r\n this.limit = limit;\r\n }\r\n\r\n /**\r\n * Initialize the data structure to apply the strategy on a given cache\r\n * @override\r\n * @param {TimeAwareCache} cache - The cache to work with\r\n * @returns {void}\r\n */\r\n initializeCache(cache) {\r\n super.initializeCache(cache);\r\n\r\n // The pseudoRecord, doesn't hold any data, the purpose is\r\n // 1. Hold the head and tail of the LRU chain. Make the linked list a ring\r\n // to simplify the logic.\r\n // 2. Take the index 0 of the TTL heap, to simplify the calculation of the\r\n // index of the parent and the children in the heap.\r\n const pseudoRecord = {};\r\n pseudoRecord.next = pseudoRecord;\r\n pseudoRecord.prev = pseudoRecord;\r\n\r\n cache.lru = {\r\n // The TTL heap of the records, while the `next`, `prev` of the records\r\n // forms the LRU chain\r\n records: [pseudoRecord],\r\n\r\n // A map from the key to index in the TTL heap\r\n indices: {},\r\n };\r\n }\r\n\r\n /**\r\n * Get the key of the cache entry to replace, the rules are\r\n * 1. If the LLT entry is expired, reused it (return key of the LLT entry)\r\n * 2. If the cache is not full, allocate a new entry (return null)\r\n * 3. Reuse the LRU entry (return key of the LRU entry)\r\n * @override\r\n * @param {TimeAwareCache} cache - The cache to write with\r\n * @param {string} key - The key for the new cache entry\r\n * @param {number} timestamp - The timestamp of the write operation\r\n * @returns {string} - The key of the entry to replace\r\n */\r\n keyToReplace(cache, key, timestamp) {\r\n const { records, indices } = cache.lru;\r\n\r\n // Reuse the existing entry if the LRU record exists\r\n if (indices[key]) {\r\n return key;\r\n }\r\n\r\n // Reuse the LLT entry if it's already expired\r\n const recordLLT = records[1] || null;\r\n\r\n if (recordLLT && recordLLT.exp <= timestamp) {\r\n return recordLLT.key;\r\n }\r\n\r\n // Allocate a new entry if the cache is not full\r\n if (records.length <= this.limit) {\r\n return null;\r\n }\r\n\r\n // Reuse the LRU entry\r\n return records[0].next.key;\r\n }\r\n\r\n /**\r\n * Update the LRU records onGet\r\n * @override\r\n * @param {TimeAwareCache} cache - The cache being accessed\r\n * @param {number} timestamp - The timestamp of the operation\r\n * @param {CacheEntry} entry - The cache entry being read, null on cache miss\r\n * @returns {void}\r\n */\r\n onGet(cache, timestamp, { key, value, exp }) {\r\n if (value !== null && exp > timestamp) {\r\n promoteLRURecord(cache.lru, key);\r\n }\r\n }\r\n\r\n /**\r\n * Update the LRU records onSet\r\n * @override\r\n * @param {TimeAwareCache} cache - The cache being accessed\r\n * @param {number} timestamp - The timestamp of the operation\r\n * @param {CacheEntry} entry - The cache entry being written\r\n * @param {string} keyToReplace - The key of the replaced cache entry\r\n * @returns {void}\r\n */\r\n onSet(cache, timestamp, entry, keyToReplace) {\r\n const { records, indices } = cache.lru;\r\n\r\n if (keyToReplace) {\r\n const index = indices[keyToReplace];\r\n const record = records[index];\r\n\r\n record.key = entry.key;\r\n record.exp = entry.exp;\r\n\r\n delete indices[keyToReplace];\r\n indices[entry.key] = index;\r\n\r\n promoteLRURecord(cache.lru, entry.key);\r\n } else {\r\n const index = records.length;\r\n const record = { key: entry.key, exp: entry.exp };\r\n\r\n indices[entry.key] = index;\r\n records.push(record);\r\n insertLRURecord(record, records[0]);\r\n }\r\n\r\n adjustHeap(cache.lru, entry.key);\r\n }\r\n\r\n /**\r\n * Update the LRU records onGet\r\n * @override\r\n * @param {TimeAwareCache} cache - The cache being accessed\r\n * @param {number} timestamp - The timestamp of the operation\r\n * @param {CacheEntry} entry - The cache entry to delete, null on cache miss\r\n * @returns {void}\r\n */\r\n onDel(cache, timestamp, { key, value, exp }) {\r\n if (value !== null && exp > EXP_INVALIDATED) {\r\n const { records, indices } = cache.lru;\r\n const index = indices[key];\r\n const record = records[index];\r\n\r\n record.exp = EXP_INVALIDATED;\r\n adjustHeap(cache.lru, key);\r\n }\r\n }\r\n}\r\n","/**\r\n * The expiration time for invalidated items\r\n * @constant {number}\r\n */\r\nexport const EXP_INVALIDATED = -1;\r\nexport const DEFAULT_LIMIT = 10;\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__36__;","/** @module @bingads-webui-universal/time-aware-cache */\r\n\r\n/**\r\n * Version of the package\r\n * @type {string}\r\n */\r\n\r\nexport {\r\n /**\r\n * The TimeAwareCache class\r\n * @see TimeAwareCache\r\n */\r\n TimeAwareCache,\r\n} from './src/time-aware-cache';\r\n\r\nexport {\r\n /**\r\n * The expiration time for invalidated items\r\n * @constant number\r\n */\r\n EXP_INVALIDATED\r\n} from './src/constants';\r\n\r\nexport {\r\n /**\r\n * The ReplacementStrategy class\r\n * @see ReplacementStrategy\r\n */\r\n ReplacementStrategy,\r\n\r\n /**\r\n * The UnlimitedReplacementStrategy class\r\n * @see UnlimitedReplacementStrategy\r\n */\r\n UnlimitedReplacementStrategy,\r\n\r\n /**\r\n * The LRUReplacementStrategy class\r\n * @see LRUReplacementStrategy\r\n */\r\n LRUReplacementStrategy,\r\n\r\n /**\r\n * The default cache strategy\r\n * @type UnlimitedReplacementStrategy\r\n */\r\n defaultStrategy,\r\n} from './src/replacement-strategy/index';\r\n","import { Subject } from '@bingads-webui-universal/observer-pattern';\r\nimport { defaultStrategy } from './replacement-strategy/index';\r\nimport { EXP_INVALIDATED } from './constants';\r\n\r\nfunction validateTTL(ttl) {\r\n if (typeof ttl !== 'number' || ttl <= 0) {\r\n throw new Error('Invalid TTL');\r\n }\r\n}\r\n\r\nfunction validateKey(key) {\r\n if (typeof key !== 'string') {\r\n throw new Error('Invalid key');\r\n }\r\n}\r\n\r\nfunction validateValue(value) {\r\n if (typeof value === 'undefined' || value === null) {\r\n throw new Error('Invalid value');\r\n }\r\n}\r\n\r\nfunction stubEntry(key) {\r\n return { key, value: null, exp: EXP_INVALIDATED };\r\n}\r\n\r\n/**\r\n * Observer of cache read/write/delete events\r\n * @typedef {Object} CacheObserver\r\n * @property {CacheOnGetCallback} onGet - Callback on cache read operations\r\n * @property {CacheOnSetCallback} onSet - Callback on cache write operations\r\n * @property {CacheOnDelCallback} onDel - Callback on cache delete operations\r\n */\r\n\r\n/**\r\n * Callback on cache read operations\r\n * @callback CacheOnGetCallback\r\n * @param {TimeAwareCache} cache - The cache being accessed\r\n * @param {number} timestamp - The timestamp of the operation\r\n * @param {CacheEntry} entry - The cache entry being read. On cache miss, it\r\n * will be a fake entry with the accessing key and a null value.\r\n * @returns {void}\r\n */\r\n\r\n/**\r\n * Callback on cache write operations\r\n * @callback CacheOnSetCallback\r\n * @param {TimeAwareCache} cache - The cache being accessed\r\n * @param {number} timestamp - The timestamp of the operation\r\n * @param {CacheEntry} entry - The cache entry being written\r\n * @param {string} keyToReplace - The key of the replaced cache entry\r\n * @returns {void}\r\n */\r\n\r\n/**\r\n * Callback on cache delete operations\r\n * @callback CacheOnDelCallback\r\n * @param {TimeAwareCache} cache - The cache being accessed\r\n * @param {number} timestamp - The timestamp of the operation\r\n * @param {CacheEntry} entry - The cache entry to delete, null on cache miss\r\n * @returns {void}\r\n */\r\n\r\n/**\r\n * A key-value cache with a TTL attached to each item\r\n */\r\nexport class TimeAwareCache extends Subject {\r\n /**\r\n * @param {Object} options -\r\n * @param {number} [options.ttl=Infinity] -\r\n * The default TTL for items in this cache in milliseconds.\r\n * @param {CacheStrategy} [options.strategy=defaultStrategy] -\r\n * The cache replacement strategy.\r\n * Default to an instance of UnlimitedCacheStrategy.\r\n */\r\n constructor({\r\n ttl = Infinity,\r\n strategy = defaultStrategy,\r\n } = {}) {\r\n super();\r\n validateTTL(ttl);\r\n\r\n this.ttl = ttl;\r\n this.strategy = strategy;\r\n this.entries = {};\r\n\r\n strategy.initializeCache(this);\r\n }\r\n\r\n /**\r\n * Read value for given key from cache\r\n * @param {string} key - The key to access\r\n * @returns {Object} - The value associated with the key\r\n */\r\n get(key) {\r\n validateKey(key);\r\n\r\n const timestamp = Date.now();\r\n const entry = this.entries[key] || null;\r\n\r\n this.notify('onGet', timestamp, entry || stubEntry(key));\r\n return entry && entry.exp > timestamp ? entry.value : null;\r\n }\r\n\r\n /**\r\n * Write a key/value pair to cache\r\n * @param {string} key - The key of to write\r\n * @param {Object} value - The value to write\r\n * @param {number} ttl - The time for the key/value pair to live in milliseconds\r\n * @returns {void}\r\n */\r\n set(key, value, ttl = this.ttl) {\r\n validateKey(key);\r\n validateValue(value);\r\n validateTTL(ttl);\r\n\r\n const timestamp = Date.now();\r\n const entry = this.entries[key] || null;\r\n const keyToReplace = entry ? key : this.strategy.keyToReplace(this, key, timestamp);\r\n const entryNew = { key, value, exp: timestamp + ttl };\r\n\r\n if (keyToReplace && keyToReplace !== key) {\r\n delete this.entries[keyToReplace];\r\n }\r\n\r\n this.entries[key] = entryNew;\r\n\r\n this.notify('onSet', timestamp, entryNew, keyToReplace);\r\n }\r\n\r\n /**\r\n * Delete a key/value pair from cache\r\n * @param {string} key - The key to remove\r\n * @returns {void}\r\n */\r\n del(key) {\r\n validateKey(key);\r\n\r\n const timestamp = Date.now();\r\n const entry = this.entries[key] || null;\r\n\r\n if (entry) {\r\n delete this.entries[key];\r\n }\r\n\r\n this.notify('onDel', timestamp, entry || stubEntry(key));\r\n }\r\n\r\n /**\r\n * Purge all the expired entries\r\n * @returns {void}\r\n */\r\n purge() {\r\n const timestamp = Date.now();\r\n\r\n Object.keys(this.entries).forEach((key) => {\r\n if (this.entries[key].exp <= timestamp) {\r\n this.del(key);\r\n }\r\n });\r\n }\r\n}\r\n","/** @exports @bingads-webui/time-aware-cache */\r\n\r\nimport { ReplacementStrategy } from './base';\r\n\r\nexport { LRUReplacementStrategy } from './lru';\r\nexport { ReplacementStrategy };\r\n\r\n/**\r\n * The unlimited cache replacement strategy class, assume the cache can have\r\n * unlimited entries\r\n * @extends ReplacementStrategy\r\n */\r\nexport class UnlimitedReplacementStrategy extends ReplacementStrategy {}\r\n\r\nexport const defaultStrategy = new UnlimitedReplacementStrategy();\r\n","export { I18nModel } from './src/index';\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport Globalize from 'globalize';\r\nimport { LocaleManager } from './locale';\r\nimport { Resource } from './resource';\r\n\r\nconst localeManager = new LocaleManager();\r\n\r\nconst dynamicLocaleInstances = [];\r\n\r\n/**\r\n * @this I18nModel\r\n * @param {String} key localization key\r\n * @returns {void}\r\n * @private\r\n */\r\nfunction assertReady(key) {\r\n if (!this.isReady()) {\r\n const debugInfo = `name-${this.name},culture-${this.locale},key-${key}`;\r\n\r\n throw new Error(`The resource is not yet ready(${debugInfo}). Please either call sync APIs only when the promise is fulfilled, or switch to use async APIs.`);\r\n }\r\n}\r\n\r\n/**\r\n * @this I18nModel\r\n * @param {String} key localization key\r\n * @returns {Resource} Current synchronous resource\r\n * @private\r\n */\r\nfunction synchronousResource(key) {\r\n assertReady.call(this, key);\r\n return this.p$data.value().resource;\r\n}\r\n\r\n/**\r\n * @this I18nModel\r\n * @returns {Globalize} Current synchronous globalize\r\n * @private\r\n */\r\nfunction synchronousGlobalize() {\r\n assertReady.call(this);\r\n return this.p$data.value().globalize;\r\n}\r\n\r\n/**\r\n * If the given object is thenable\r\n * @param {any} object - The object to be tested\r\n * @returns {bool} Current synchronous globalize\r\n * @private\r\n */\r\nfunction isThenable(object) {\r\n return object && _.isFunction(object.then);\r\n}\r\n\r\n/**\r\n * @this I18nModel\r\n * @param {string} locale - the locale used to load data\r\n * @returns {Promise} Promise of translation resource and globalize\r\n * @private\r\n */\r\nfunction loadData(locale) {\r\n const translationData = this.loadTranslationData(locale);\r\n const cldrData = this.loadCLDRData(locale);\r\n\r\n if (isThenable(translationData) || isThenable(cldrData)) {\r\n return Promise.props({\r\n locale,\r\n resource: Promise.resolve(translationData).then(data => new Resource({ data, failFast: this.failFast })),\r\n globalize: Promise.resolve(cldrData).then(cldr => new Globalize(cldr)),\r\n });\r\n }\r\n\r\n return Promise.resolve({\r\n locale,\r\n resource: new Resource({\r\n data: translationData,\r\n failFast: this.failFast,\r\n }),\r\n globalize: new Globalize(cldrData),\r\n });\r\n}\r\n\r\n/* @this I18nModel */\r\nfunction dateMethodOptions({\r\n skeleton,\r\n date,\r\n time,\r\n datetime,\r\n raw,\r\n timeZone = this.timeZone,\r\n} = {}) {\r\n return _.pick({\r\n skeleton,\r\n date,\r\n time,\r\n datetime,\r\n raw,\r\n timeZone,\r\n }, Boolean);\r\n}\r\n\r\n/* @this I18nModel */\r\nfunction withSignWrapper(withSign, method) {\r\n switch (withSign) {\r\n case 'auto':\r\n return value => method(value);\r\n case 'never':\r\n return value => method(Math.abs(value));\r\n case 'always': {\r\n const cldr = this.getCldr();\r\n const minusSign = cldr.main('numbers/symbols-numberSystem-latn/minusSign');\r\n const plusSign = cldr.main('numbers/symbols-numberSystem-latn/plusSign');\r\n\r\n return (value) => {\r\n if (value < 0) {\r\n return method(value);\r\n }\r\n // Same as described in CLDR ticket\r\n // see: http://unicode.org/cldr/trac/ticket/8732\r\n // Note: 0 will have no sign\r\n return method(-value).replace(\r\n // only support latn for now\r\n minusSign,\r\n plusSign\r\n );\r\n };\r\n }\r\n default:\r\n throw new RangeError(`'withSign' option should be one of 'auto', 'never' or 'always', but being ${withSign}`);\r\n }\r\n}\r\n\r\n/**\r\n * Return a function synchronously format a number with given options.\r\n * @param {string} [withSign=auto] - Show positive/negative sign or not.\r\n * Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @return {Function} The function formatting number\r\n * @private\r\n */\r\nfunction numberFormatterWithSign(withSign, options) {\r\n const globalizeFormatter = synchronousGlobalize.call(this).numberFormatter(options);\r\n // SignificantDigits related param override IntegerDigits/FractionDigits related param\r\n // pick Boolean to remove them if they're not passed in\r\n return withSignWrapper.call(this, withSign, value => globalizeFormatter(value));\r\n}\r\n\r\n/**\r\n * Return a function synchronously format a currency with given options.\r\n * @param {string} currency - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/currency/currency-formatter.md}\r\n * @param {string} [withSign=auto] - Show positive/negative sign or not.\r\n * Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/currency/currency-formatter.md}\r\n * @return {Function} The function formatting number\r\n * @private\r\n */\r\nfunction currencyFormatterWithSign(currency, withSign = 'auto', options) {\r\n if (!currency) {\r\n return () => '0';\r\n }\r\n\r\n const globalizeFormatter = synchronousGlobalize.call(this).currencyFormatter(currency, options);\r\n // SignificantDigits related param override IntegerDigits/FractionDigits related param\r\n // pick Boolean to remove them if they're not passed in\r\n return withSignWrapper.call(this, withSign, value => globalizeFormatter(value));\r\n}\r\n\r\nfunction currencyFormatterWithSymbol(currency, withSign = 'auto', withSymbol = true, options) {\r\n if (!currency) {\r\n return () => '0';\r\n }\r\n\r\n if (withSymbol) {\r\n return currencyFormatterWithSign.call(this, currency, withSign, options);\r\n }\r\n\r\n const globalizeFormatter = synchronousGlobalize.call(this)\r\n .currencyToPartsFormatter(currency, options);\r\n const formatter = (value) => {\r\n const parts = globalizeFormatter(value);\r\n const newParts = _.map(parts, (part) => {\r\n if (part.type === 'integer'\r\n || part.type === 'group'\r\n || part.type === 'decimal'\r\n || part.type === 'fraction'\r\n ) {\r\n return part.value;\r\n }\r\n return '';\r\n });\r\n const finalValue = newParts.join('');\r\n\r\n return finalValue;\r\n };\r\n\r\n\r\n return withSignWrapper.call(this, withSign, formatter);\r\n}\r\n\r\nfunction withGlobalizeCache(fnName, i18nModel) {\r\n const realMethod = i18nModel[fnName];\r\n\r\n function createCache() {\r\n const cache = {};\r\n cache.size = 0;\r\n\r\n return cache;\r\n }\r\n\r\n return function wrappedGlobalizeMethod(...args) {\r\n const cache = i18nModel.parserFormatterCache;\r\n if (!cache[fnName]) {\r\n cache[fnName] = createCache();\r\n }\r\n\r\n let specificMethodCache = cache[fnName];\r\n\r\n const key = JSON.stringify(args);\r\n if (specificMethodCache[key]) {\r\n return specificMethodCache[key];\r\n }\r\n\r\n /* Just a precaution, don't expect cache to grow this large */\r\n if (specificMethodCache.size > 100) {\r\n cache[fnName] = createCache();\r\n specificMethodCache = cache[fnName];\r\n }\r\n\r\n specificMethodCache[key] = realMethod.apply(this, args);\r\n specificMethodCache.size += 1;\r\n\r\n return specificMethodCache[key];\r\n };\r\n}\r\n\r\n/**\r\n * I18n Model.\r\n */\r\nexport class I18nModel {\r\n static defaultFailFast = false;\r\n\r\n /**\r\n * Set global locale used for all i18n model as default locale.\r\n * @param {string} locale - should be in format of IETF language tag {@link http://www.langtag.net/}.\r\n * @returns {Promise.} resolved when all dynamic locale i18n models are ready\r\n */\r\n static setGlobalLocale(locale) {\r\n localeManager.setGlobalLocale(locale);\r\n return Promise.all(_.map(dynamicLocaleInstances, instance => instance.setLocale(locale)));\r\n }\r\n\r\n /**\r\n * Load CLDR data for Globalize.js.\r\n * Helper function which makes Globalize transparent to users.\r\n * Then user don't need to import it explictly.\r\n * @param {JSON[]} data - CLDR data.\r\n * @returns {void}\r\n */\r\n static loadCLDRData(...data) {\r\n Globalize.load(...data);\r\n }\r\n\r\n /**\r\n * Load time zone data for Globalize.js.\r\n * Helper function which makes Globalize transparent to users.\r\n * Then user don't need to import it explictly.\r\n * @param {JSON} data - Time zone data.\r\n * @returns {void}\r\n */\r\n static loadTimeZoneData(data) {\r\n Globalize.loadTimeZone(data);\r\n }\r\n\r\n /**\r\n * Sets the default failfast value for every i18nmodel\r\n *\r\n * @returns {void}\r\n * @param {string|bool} failfast when key missing\r\n * true - i18n throws error and crashes current execution\r\n * \"SAFE\" - i18n throws error asyncrounously but continues execution\r\n */\r\n static setDefaultFailFast(failfast) {\r\n I18nModel.defaultFailFast = failfast;\r\n }\r\n\r\n /**\r\n * @callback loadCLDRData\r\n * @param {string} locale - the locale used to load CLDR data\r\n * @returns {Promise.|Promise.|CldrJs|string}\r\n * The CLDR data or the locale name linked to already loaded CLDR data\r\n */\r\n\r\n /**\r\n * @callback loadTranslationData\r\n * @param {string} locale - the locale used to load translation data\r\n * @returns {Promise.>|Object.}\r\n * key value pairs as tranlation data\r\n */\r\n /**\r\n * Create a model.\r\n * When both options.loadCLDRData and options.loadTranslationData returns raw data instead\r\n * of Promise, and locale is neither 'current' nor 'dynamic', the model created is surely\r\n * ready for use synchronously.\r\n * @param {Object} options - The initialization options\r\n * @param {string} [options.name] - The name of the i18n package\r\n * @param {string} [options.locale=current] - The locale of this i18n model; could be a\r\n * specific locale (e.g. 'en-us'), 'dynamic' or 'current' (default)\r\n * @param {string} [options.timeZone] - The default timeZone used by formatDate\r\n * @param {string} [options.currency] - The default currency used by formatCurrency\r\n * @param {loadCLDRData} options.loadCLDRData - a function which accepts locale as param and\r\n * returns a promise which resolves after coresponding CLDR data loaded, and with value\r\n * the CLDR.js instance or the locale name as [Globalize constructor]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/core/constructor.md} requires\r\n * @param {loadTranslationData} options.loadTranslationData - a function which accepts locale\r\n * as param and returns a promise which resolves with a translation data object\r\n * @param {string|bool} options.failFast - when key missing\r\n * true - i18n throws error and crashes current execution\r\n * \"SAFE\" - i18n throws error asyncrounously but continues execution\r\n *\r\n * @constructs I18nModel\r\n */\r\n constructor({\r\n name,\r\n locale = 'current',\r\n timeZone,\r\n currency,\r\n loadCLDRData,\r\n loadTranslationData,\r\n failFast = I18nModel.defaultFailFast,\r\n }) {\r\n this.locale = locale;\r\n this.name = name;\r\n this.timeZone = timeZone;\r\n this.currency = currency;\r\n\r\n this.loadCLDRData = loadCLDRData;\r\n this.loadTranslationData = loadTranslationData;\r\n this.missingKeys = {};\r\n this.failFast = failFast;\r\n this.parserFormatterCache = {};\r\n\r\n /* These methods return parsers and formatters that can be safely cached.\r\n (they don't have any functions as a parameter). Globalize recommends caching\r\n parsers and formatters as generating them can be very expensive */\r\n ['decimalParser',\r\n 'percentParser',\r\n 'dateFormatter',\r\n 'dateToPartsFormatter',\r\n 'dateParser',\r\n ].forEach((fnName) => {\r\n this[fnName] = withGlobalizeCache(fnName, this);\r\n });\r\n\r\n if (locale === 'dynamic') {\r\n // If dynamic, reload resource on locale change\r\n dynamicLocaleInstances.push(this);\r\n }\r\n\r\n if (locale === 'current' || locale === 'dynamic') {\r\n // Wait for initial locale to be set and then load the resource\r\n const p$globalLocale = localeManager.p$globalLocale();\r\n\r\n // when global locale is synced ready, make p$data synced ready too\r\n if (p$globalLocale.isFulfilled()) {\r\n this.p$data = loadData.call(this, p$globalLocale.value());\r\n } else {\r\n this.p$data = localeManager.p$globalLocale()\r\n .then(globalLocale => loadData.call(this, globalLocale));\r\n }\r\n } else {\r\n this.setLocale(locale);\r\n }\r\n }\r\n\r\n /**\r\n * Set locale used for this model, will reuse other data.\r\n * @param {string} locale - should be in format of IETF language tag {@link http://www.langtag.net/}.\r\n * @returns {Promise.} resolved when all resource for this model loaded\r\n */\r\n setLocale(locale) {\r\n this.p$data = loadData.call(this, locale);\r\n this.parserFormatterCache = {};\r\n\r\n return this.ready();\r\n }\r\n\r\n /**\r\n * Get a promise that resolves to this object when the resource is ready.\r\n * @return {Promise.} This object\r\n */\r\n ready() {\r\n return this.p$data.return(this);\r\n }\r\n\r\n /**\r\n * Check whether the resource is ready.\r\n * @return {boolean} Whether the resource is ready\r\n */\r\n isReady() {\r\n return this.p$data.isFulfilled();\r\n }\r\n\r\n // Sync API\r\n // All these methods only work when isReady().\r\n // If isReady() === false, these methods would throw error.\r\n\r\n /**\r\n * Synchronously get locale used for this model.\r\n * @returns {string} locale used for this model.\r\n */\r\n getLocale() {\r\n assertReady.call(this);\r\n return this.p$data.value().locale;\r\n }\r\n\r\n /**\r\n * Synchronously get Cldrjs instance.\r\n * @return {Cldrjs} The Cldrjs instance.\r\n * @see [cldr.js - Simple CLDR traverser]{@link https://github.com/rxaviers/cldrjs}\r\n */\r\n getCldr() {\r\n return synchronousGlobalize.call(this).cldr;\r\n }\r\n\r\n /**\r\n * Synchronously get first day of week.\r\n * @param {Object} [options] - options\r\n * @param {String} [options.alt] - undefined or 'variant'.\r\n * @return {string} The weekday as first day of week. One of 'mon', 'fri', 'sat', sun'.\r\n */\r\n getFirstDayOfWeek({\r\n alt,\r\n } = {}) {\r\n const cldr = this.getCldr();\r\n\r\n const defaultRegionKey = cldr.attributes.region;\r\n const key = alt ? `${defaultRegionKey}-alt-${alt}` : defaultRegionKey;\r\n\r\n return cldr.supplemental(`weekData/firstDay/${key}`) ||\r\n cldr.supplemental(`weekData/firstDay/${defaultRegionKey}`) ||\r\n // 001 means the world\r\n // see: http://cldr.unicode.org/index/cldr-spec/reasons-for-decisions\r\n cldr.supplemental('weekData/firstDay/001');\r\n }\r\n\r\n /**\r\n * Synchronously get today as CivilDate.\r\n * Note: for not introducing temporal for now,\r\n * this method only returns an object with same structure instead of a real CivilDate.\r\n * @param {Object} [options] - options\r\n * @param {String} [options.timeZone] - Time zone name under tz database format.\r\n * @return {CivilDate} Today as CivilDate.\r\n * @see [List of tz database time zones]{@link https://en.wikipedia.org/wiki/List_of_tz_database_time_zones}\r\n */\r\n getToday({\r\n timeZone = this.timeZone,\r\n } = {}) {\r\n const [\r\n { value: year },\r\n { value: month },\r\n { value: day },\r\n ] = this.formatDateToParts(new Date(), {\r\n raw: 'yyyyMMdd',\r\n timeZone,\r\n });\r\n\r\n return {\r\n year: Number(year),\r\n month: Number(month),\r\n day: Number(day),\r\n toString() { return `${year}-${month}-${day}`; },\r\n };\r\n }\r\n\r\n /**\r\n * Synchronously get today.\r\n * This method returns an object with all properties of CivilDate and time-related properties.\r\n * Note: for not introducing temporal for now,\r\n * this method only returns an object which can be operated as CivilDate but not a real CivilDate.\r\n * @param {Object} [options] - options\r\n * @param {String} [options.timeZone] - Time zone name under tz database format.\r\n * @return {CivilDate} Today as CivilDate.\r\n * @see [List of tz database time zones]{@link https://en.wikipedia.org/wiki/List_of_tz_database_time_zones}\r\n */\r\n getTodayTiming({\r\n timeZone = this.timeZone,\r\n } = {}) {\r\n const [\r\n { value: year },\r\n { value: month },\r\n { value: day },\r\n { value: hour },\r\n { value: minute },\r\n { value: second },\r\n ] = this.formatDateToParts(new Date(), {\r\n raw: 'yyyyMMddHHmmss',\r\n timeZone,\r\n });\r\n\r\n return {\r\n year: Number(year),\r\n month: Number(month),\r\n day: Number(day),\r\n hour: Number(hour),\r\n minute: Number(minute),\r\n second: Number(second),\r\n toString() { return `${year}-${month}-${day} ${hour}:${minute}:${second}`; },\r\n };\r\n }\r\n\r\n /**\r\n * Synchronously get and evaluate a localized string template (or the string as-is if it's\r\n * not a template).\r\n * If key not found, \"undefined\" will be returned, client code should check this for themselves.\r\n * @param {string} key - The key of the string resource\r\n * @param {Object} [model] - The model for the string template (if needed)\r\n * @return {string} The template evaluation result\r\n */\r\n getString(key, ...args) {\r\n let str = synchronousResource.call(this, key).getString(key, ...args);\r\n if (_.isUndefined(str)) { // key is not surrounded by fixture _TL_\r\n this.missingKeys[key] = true;\r\n if (this.failFast) {\r\n try {\r\n throw new RangeError(`i18n.getString: key is missing _TL_ fixture - \"${key}\"`);\r\n } catch (error) {\r\n if (this.failFast !== 'SAFE') {\r\n throw error;\r\n } else {\r\n _.defer(() => { throw error; });\r\n str = key;\r\n }\r\n }\r\n }\r\n }\r\n return str;\r\n }\r\n\r\n /**\r\n * Synchronously get all the localized string data object passed to Resource from onload.\r\n * @return {Object} An object of i18n key-localized value pair\r\n */\r\n getData() {\r\n return {\r\n ...synchronousResource.call(this, 'getData').data,\r\n };\r\n }\r\n\r\n /**\r\n * Synchronously get quarter's translation.\r\n * @param {Number} quarter - An integer from 1 to 4 which matches with 1st to 4th quarter\r\n * @param {Object} [options] - options\r\n * @param {String} [options.style=wide] - 'abbreviated', 'narrow' or 'wide'\r\n * @return {String} The quarter's translation\r\n */\r\n getQuarter(quarter, {\r\n style = 'wide',\r\n } = {}) {\r\n return this.getCldr().main(`dates/calendars/gregorian/quarters/stand-alone/${style}/${quarter}`);\r\n }\r\n\r\n /**\r\n * Synchronously get month's translation.\r\n * @param {Number} month - An integer from 1 to 12 which matches with January to December\r\n * @param {Object} [options] - options\r\n * @param {String} [options.style=wide] - 'abbreviated', 'narrow' or 'wide'\r\n * @return {String} The month's translation\r\n */\r\n getMonth(month, {\r\n style = 'wide',\r\n } = {}) {\r\n return this.getCldr().main(`dates/calendars/gregorian/months/stand-alone/${style}/${month}`);\r\n }\r\n\r\n /**\r\n * Synchronously get day's translation.\r\n * @param {String} day - 'sun', 'mon', 'tue', 'wed', 'thu', 'fri' or 'sat'\r\n * @param {Object} [options] - options\r\n * @param {String} [options.style=wide] - 'abbreviated', 'narrow', 'short' or 'wide'\r\n * @return {String} The day's translation\r\n */\r\n getDay(day, {\r\n style = 'wide',\r\n } = {}) {\r\n return this.getCldr().main(`dates/calendars/gregorian/days/stand-alone/${style}/${day}`);\r\n }\r\n\r\n /**\r\n * Alias of [getDay]{@link I18nModel#getDay}\r\n * @param {String} dayOfWeek - 'sun', 'mon', 'tue', 'wed', 'thu', 'fri' or 'sat'\r\n * @param {Object} [options] - options\r\n * @param {String} [options.style=wide] - 'abbreviated', 'narrow', 'short' or 'wide'\r\n * @return {String} The day's translation\r\n */\r\n getDayOfWeek(dayOfWeek, options) {\r\n return this.getDay(dayOfWeek, options);\r\n }\r\n\r\n /**\r\n * Synchronously get currency's display name.\r\n * @param {String} [currency=this.currency] - currency code under [ISO 4217]{@link https://www.iso.org/iso-4217-currency-codes.html}\r\n * @return {String} The currency's display name\r\n */\r\n getCurrency(currency = this.currency) {\r\n return this.getCldr().main(`numbers/currencies/${currency}/displayName`);\r\n }\r\n\r\n /**\r\n * Synchronously get currency's symbol.\r\n * @param {String} [currency=this.currency] - currency code under [ISO 4217]{@link https://www.iso.org/iso-4217-currency-codes.html}\r\n * @param {Object} [options] - options\r\n * @param {String} [options.alt] - undefined, 'narrow' or 'variant'.\r\n * 'narrow' or 'variant' won't exist for sure.\r\n * when the data missing, it will fallback to the default symbol.\r\n * As an example:\r\n * for TRY (Turkish Lira), default symbol is 'TRY', narrow alt is '₺', variant alt is 'TL'\r\n * @return {String} The currency's symbol\r\n */\r\n getCurrencySymbol(currency = this.currency, {\r\n alt,\r\n } = {}) {\r\n const defaultSymbolKey = 'symbol';\r\n const key = alt ? `symbol-alt-${alt}` : defaultSymbolKey;\r\n\r\n return this.getCldr().main(`numbers/currencies/${currency}/${key}`) ||\r\n this.getCldr().main(`numbers/currencies/${currency}/${defaultSymbolKey}`);\r\n }\r\n\r\n /**\r\n * The object contains all patterns\r\n * @typedef {Object} Patterns\r\n * @property {string} [full] The full format pattern\r\n * @property {string} [long] The long format pattern\r\n * @property {string} [medium] The medium format pattern\r\n * @property {string} [short] The short format pattern\r\n */\r\n\r\n /**\r\n * The DateFormats contains date/dateTime/time format patterns\r\n * @typedef {Object} DateFormats\r\n * @property {string} [default] The default date format pattern\r\n * @property {Patterns} [date] The date patterns\r\n * @property {Patterns} [dateTime] The dateTime patterns\r\n * @property {Patterns} [time] The time patterns\r\n */\r\n\r\n /**\r\n * Synchronously get date format patterns for user's culture\r\n * @return {DateFormats} The date format patterns object\r\n */\r\n getDateFormats() {\r\n const calendar = this.getCldr().main('dates/calendars/gregorian');\r\n const defaultProperties = ['full', 'long', 'medium', 'short'];\r\n\r\n return {\r\n default: calendar.dateTimeFormats.availableFormats.yMd, // Globalize will use yMd as the default date format pattern. https://github.com/globalizejs/globalize/blob/d5e98d1e3047ac722cce5817f8168268dd22ddf4/src/date.js#L136\r\n date: _.pick(calendar.dateFormats, defaultProperties),\r\n dateTime: _.pick(calendar.dateTimeFormats, defaultProperties),\r\n time: _.pick(calendar.timeFormats, defaultProperties),\r\n };\r\n }\r\n\r\n /**\r\n * Synchronously format decimal number with given options.\r\n * @param {number} number - The number to be formatted\r\n * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n * Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @return {string} The formatted decimal number\r\n */\r\n formatDecimal(number, options) {\r\n return this.decimalFormatter(options)(number);\r\n }\r\n\r\n /**\r\n * Return a function synchronously format decimal number with given options.\r\n * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n * Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @return {Function} The function formatting decimal number\r\n */\r\n decimalFormatter({\r\n minimumIntegerDigits,\r\n minimumFractionDigits,\r\n maximumFractionDigits,\r\n minimumSignificantDigits,\r\n maximumSignificantDigits,\r\n round,\r\n useGrouping,\r\n compact,\r\n withSign = 'auto',\r\n } = {}) {\r\n return numberFormatterWithSign.call(this, withSign, {\r\n style: 'decimal',\r\n minimumIntegerDigits,\r\n minimumFractionDigits,\r\n maximumFractionDigits,\r\n minimumSignificantDigits,\r\n maximumSignificantDigits,\r\n round,\r\n useGrouping,\r\n compact,\r\n });\r\n }\r\n\r\n /**\r\n * Synchronously format decimal number to fixed-point as toFixed(digits) with given options.\r\n * This method is only a shortcut built on top of formatDecimal, it isn't in i18n interface\r\n * and shouldn't be used by shared components.\r\n * @see [Number.prototype.toFixed()]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed}\r\n * @param {number} number - The number to be formatted\r\n * @param {Object} [options] - options\r\n * @param {number} [options.digits=2] - The number of fraction digits\r\n * @param {boolean} [options.round] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {boolean} [options.useGrouping] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n * Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @return {string} The formatted decimal number\r\n */\r\n formatDecimalToFixed(number, options) {\r\n return this.decimalToFixedFormatter(options)(number);\r\n }\r\n\r\n /**\r\n * Return a function synchronously format decimal number to fixed-point as toFixed(digits).\r\n * This method is only a shortcut built on top of formatDecimal, it isn't in i18n interface\r\n * and shouldn't be used by shared components.\r\n * @see [Number.prototype.toFixed()]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed}\r\n * @param {Object} [options] - options\r\n * @param {number} [options.digits=2] - The number of fraction digits\r\n * @param {boolean} [options.round] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {boolean} [options.useGrouping] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n * Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @return {Function} The function formatting decimal number\r\n */\r\n decimalToFixedFormatter({\r\n digits = 2,\r\n round,\r\n useGrouping,\r\n compact,\r\n withSign = 'auto',\r\n } = {}) {\r\n return this.decimalFormatter({\r\n minimumFractionDigits: digits,\r\n maximumFractionDigits: digits,\r\n round,\r\n useGrouping,\r\n compact,\r\n withSign,\r\n });\r\n }\r\n\r\n /**\r\n * Synchronously format decimal number to integer as toFixed(0) with given options.\r\n * This method is only a shortcut built on top of formatDecimal, it isn't in i18n interface\r\n * and shouldn't be used by shared components.\r\n * @see [Number.prototype.toFixed()]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed}\r\n * @param {number} number - The number to be formatted\r\n * @param {Object} [options] - options\r\n * @param {boolean} [options.round] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {boolean} [options.useGrouping] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n * Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @return {string} The formatted decimal number\r\n */\r\n formatDecimalToInteger(number, options) {\r\n return this.decimalToIntegerFormatter(options)(number);\r\n }\r\n\r\n /**\r\n * Return a function synchronously format decimal number to integer as toFixed(0).\r\n * This method is only a shortcut built on top of formatDecimal, it isn't in i18n interface\r\n * and shouldn't be used by shared components.\r\n * @see [Number.prototype.toFixed()]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed}\r\n * @param {Object} [options] - options\r\n * @param {boolean} [options.round] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {boolean} [options.useGrouping] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n * Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @return {Function} The function formatting decimal number\r\n */\r\n decimalToIntegerFormatter({\r\n round,\r\n useGrouping,\r\n compact,\r\n withSign = 'auto',\r\n } = {}) {\r\n return this.decimalToFixedFormatter({\r\n digits: 0,\r\n round,\r\n useGrouping,\r\n compact,\r\n withSign,\r\n });\r\n }\r\n\r\n /**\r\n * Synchronously parse decimal number.\r\n * @param {string} value - The number string to be parsed\r\n * @return {string} The parsed decimal number, NaN is value is invalid\r\n */\r\n parseDecimal(value) {\r\n return this.decimalParser()(value);\r\n }\r\n\r\n /**\r\n * Return a function synchronously parse decimal number.\r\n * @return {Function} The function parsing decimal number\r\n */\r\n decimalParser() {\r\n return synchronousGlobalize.call(this).numberParser({\r\n style: 'decimal',\r\n });\r\n }\r\n\r\n /**\r\n * Synchronously validate decimal number, a simple wrapper of parseDecimal.\r\n * @param {string} value - The number string to be validate\r\n * @return {boolean} If value is string and valid.\r\n * Note: number is not valid too, as this method is for strings.\r\n */\r\n isValidDecimal(value) {\r\n return this.decimalValidator()(value);\r\n }\r\n\r\n /**\r\n * Return a function synchronously validate decimal number.\r\n * @return {Function} The function validating decimal number\r\n */\r\n decimalValidator() {\r\n const parser = this.decimalParser();\r\n\r\n return value => _.isString(value) && !_.isNaN(parser(value));\r\n }\r\n\r\n /**\r\n * Synchronously format percent number with given options.\r\n * @param {number} number - The number to be formatted\r\n * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n * Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @return {string} The formatted percent number\r\n */\r\n formatPercent(number, options) {\r\n return this.percentFormatter(options)(number);\r\n }\r\n\r\n /**\r\n * Return a function synchronously format percent number with given options.\r\n * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n * Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @return {Function} The function formatting percent number\r\n */\r\n percentFormatter({\r\n minimumIntegerDigits,\r\n minimumFractionDigits,\r\n maximumFractionDigits,\r\n minimumSignificantDigits,\r\n maximumSignificantDigits,\r\n round,\r\n useGrouping,\r\n compact,\r\n withSign = 'auto',\r\n } = {}) {\r\n return numberFormatterWithSign.call(this, withSign, {\r\n style: 'percent',\r\n minimumIntegerDigits,\r\n minimumFractionDigits,\r\n maximumFractionDigits,\r\n minimumSignificantDigits,\r\n maximumSignificantDigits,\r\n round,\r\n useGrouping,\r\n compact,\r\n });\r\n }\r\n\r\n /**\r\n * Synchronously format percent number to fixed-point as toFixed(digits) with given options.\r\n * This method is only a shortcut built on top of formatPercent, it isn't in i18n interface\r\n * and shouldn't be used by shared components.\r\n * @see [Number.prototype.toFixed()]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed}\r\n * @param {number} number - The number to be formatted\r\n * @param {Object} [options] - options\r\n * @param {number} [options.digits=0] - The number of fraction digits\r\n * @param {boolean} [options.round] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {boolean} [options.useGrouping] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n * Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @return {string} The formatted percent number\r\n */\r\n formatPercentToFixed(number, options) {\r\n return this.percentToFixedFormatter(options)(number);\r\n }\r\n\r\n /**\r\n * Return a function synchronously format percent number to fixed-point as toFixed(digits).\r\n * This method is only a shortcut built on top of percentFormatter, it isn't in i18n interface\r\n * and shouldn't be used by shared components.\r\n * @see [Number.prototype.toFixed()]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed}\r\n * @param {Object} [options] - options\r\n * @param {number} [options.digits=0] - The number of fraction digits\r\n * @param {boolean} [options.round] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {boolean} [options.useGrouping] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n * Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @return {Function} The function formatting percent number\r\n */\r\n percentToFixedFormatter({\r\n digits = 0,\r\n round,\r\n useGrouping,\r\n compact,\r\n withSign = 'auto',\r\n } = {}) {\r\n return this.percentFormatter({\r\n minimumFractionDigits: digits,\r\n maximumFractionDigits: digits,\r\n round,\r\n useGrouping,\r\n compact,\r\n withSign,\r\n });\r\n }\r\n\r\n /**\r\n * Synchronously parse percent number.\r\n * @param {string} value - The number string to be parsed\r\n * @return {string} The parsed percent number, NaN when value is invalid\r\n */\r\n parsePercent(value) {\r\n return this.percentParser()(value);\r\n }\r\n\r\n /**\r\n * Return a function synchronously parse percent number.\r\n * @return {Function} The function parsing percent number\r\n */\r\n percentParser() {\r\n return synchronousGlobalize.call(this).numberParser({\r\n style: 'percent',\r\n });\r\n }\r\n\r\n /**\r\n * Synchronously validate percent number, a simple wrapper of parsePercent.\r\n * @param {string} value - The number string to be validate\r\n * @return {boolean} If value is string and valid\r\n */\r\n isValidPercent(value) {\r\n return this.percentValidator()(value);\r\n }\r\n\r\n /**\r\n * Return a function synchronously validate percent number.\r\n * @return {Function} The function validating percent number\r\n */\r\n percentValidator() {\r\n const parser = this.percentParser();\r\n\r\n return value => _.isString(value) && !_.isNaN(parser(value));\r\n }\r\n\r\n /**\r\n * Synchronously format currency with given options.\r\n * @param {number} number - The number to be formatted\r\n * @param {string} currency - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/currency/currency-formatter.md}\r\n * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/currency/currency-formatter.md}\r\n * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n * Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @param {string} [options.withSymbol=true] - Show currency symbol or not.\r\n * @return {string} The formatted currency\r\n */\r\n formatCurrency(number, currency = this.currency, options) {\r\n return this.currencyFormatter(currency, options)(number);\r\n }\r\n\r\n /**\r\n * Return a function synchronously format currency with given options.\r\n * @param {string} currency - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/currency/currency-formatter.md}\r\n * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/currency/currency-formatter.md}\r\n * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n * Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @param {string} [options.withSymbol=true] - Show currency symbol or not.\r\n * @return {Function} The function formatting currency\r\n */\r\n currencyFormatter(currency = this.currency, options = {}) {\r\n // Didn't do argument destructuring for options,\r\n // due to currencyFormatter dose not format floating point correctly\r\n // with some of the options undefined.\r\n const { withSign, withSymbol } = options;\r\n\r\n return currencyFormatterWithSymbol.call(this, currency, withSign, withSymbol, _.omit(options, 'withSign', 'withSymbol'));\r\n }\r\n\r\n /**\r\n * Synchronously format date with given options.\r\n * @param {Date} value - The date to be formatted\r\n * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n * @return {string} The formatted date\r\n */\r\n formatDate(value, options) {\r\n return this.dateFormatter(options)(value);\r\n }\r\n\r\n /**\r\n * Return a function synchronously format date with given options.\r\n * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n * @return {Function} The function formatting date\r\n */\r\n dateFormatter(options) {\r\n return synchronousGlobalize.call(this)\r\n .dateFormatter(dateMethodOptions.call(this, options));\r\n }\r\n\r\n /**\r\n * Synchronously format date into parts tokens with given options.\r\n * @param {Date} value - The date to be formatted\r\n * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n * @return {Object[]} The formatted date parts\r\n */\r\n formatDateToParts(value, options) {\r\n return this.dateToPartsFormatter(options)(value);\r\n }\r\n\r\n /**\r\n * Return a function synchronously format date into parts tokens with given options.\r\n * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n * @return {Function} The function formatting date to parts\r\n */\r\n dateToPartsFormatter(options) {\r\n return synchronousGlobalize.call(this)\r\n .dateToPartsFormatter(dateMethodOptions.call(this, options));\r\n }\r\n\r\n /**\r\n * Synchronously parse date.\r\n * @param {string} value - The date string to be parsed\r\n * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-parser.md}\r\n * @return {string} The parsed date, null when value is invalid\r\n */\r\n parseDate(value, options) {\r\n return _.isString(value) ? this.dateParser(options)(value) : null;\r\n }\r\n\r\n /**\r\n * Return a function synchronously parse date with given options.\r\n * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n * @return {Function} The function parsing date\r\n */\r\n dateParser(options) {\r\n return synchronousGlobalize.call(this)\r\n .dateParser(dateMethodOptions.call(this, options));\r\n }\r\n\r\n /**\r\n * Synchronously validate date, a simple wrapper of parseDate.\r\n * @param {string} value - The date string to be validate\r\n * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-parser.md}\r\n * @return {boolean} If value is string and valid\r\n */\r\n isValidDate(value, options) {\r\n return this.dateValidator(options)(value);\r\n }\r\n\r\n /**\r\n * Return a function synchronously validate date with given options.\r\n * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n * @return {Function} The function validating date\r\n */\r\n dateValidator(options) {\r\n const parser = this.dateParser(options);\r\n\r\n return value => _.isString(value) && !_.isNull(parser(value));\r\n }\r\n\r\n /**\r\n * Synchronously format civil date to localized string.\r\n * @param {CivilDate} civilDate - The civil date to be formatted\r\n * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n * except for 'timeZone', time', and 'datetime'.\r\n * As CivilDate doesn't have timeZone/time infomation.\r\n * @return {string} The formatted civil date\r\n * @see [Temporal Proposal]{@link https://github.com/tc39/proposal-temporal}\r\n */\r\n formatCivilDate(civilDate, options) {\r\n return this.civilDateFormatter(options)(civilDate);\r\n }\r\n\r\n /**\r\n * Return a function synchronously format civil date into string with given options.\r\n * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n * except for 'timeZone', time', and 'datetime'.\r\n * As CivilDate doesn't have timeZone/time infomation.\r\n * @return {Function} The function formatting civil date to string\r\n * @see [Temporal Proposal]{@link https://github.com/tc39/proposal-temporal}\r\n */\r\n civilDateFormatter(options) {\r\n const dateFormatter = this.dateFormatter(_.defaults({\r\n // we create a date under machine time zone from civilDate\r\n timeZone: null,\r\n }, _.omit(options, 'datetime', 'time')));\r\n\r\n return civilDate => dateFormatter(new Date(civilDate.year, civilDate.month - 1, civilDate.day));\r\n }\r\n\r\n /**\r\n * Synchronously parse civil date.\r\n * @param {string} value - The date string to be parsed\r\n * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n * except for 'timeZone', time', and 'datetime'.\r\n * As CivilDate doesn't have timeZone/time infomation.\r\n * @return {string} The parsed civil date, null when value is invalid\r\n * @see [Temporal Proposal]{@link https://github.com/tc39/proposal-temporal}\r\n */\r\n parseCivilDate(value, options) {\r\n return this.civilDateParser(options)(value);\r\n }\r\n\r\n /**\r\n * Return a function synchronously parse civil date with given options.\r\n * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n * except for 'timeZone', time', and 'datetime'.\r\n * As CivilDate doesn't have timeZone/time infomation.\r\n * @return {Function} The function parsing civil date\r\n * @see [Temporal Proposal]{@link https://github.com/tc39/proposal-temporal}\r\n */\r\n civilDateParser(options) {\r\n const dateParser = this.dateParser(_.defaults({\r\n // we create a date under machine time zone from civilDate\r\n timeZone: 'UTC',\r\n }, _.omit(options, 'datetime', 'time')));\r\n\r\n return (value) => {\r\n const date = dateParser(value);\r\n // for now, we don't want introduce temporal as dependency of this package\r\n return _.isDate(date) ? {\r\n year: date.getUTCFullYear(),\r\n month: date.getUTCMonth() + 1,\r\n day: date.getUTCDate(),\r\n toString() { return date.toISOString().substr(0, 10); },\r\n } : null;\r\n };\r\n }\r\n\r\n /**\r\n * Synchronously format unit with given options.\r\n * @param {number} value - The number to be formatted\r\n * @param {string} unit - The unit to be formatted\r\n * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/unit/unit-formatter.md}\r\n * @return {string} The formatted unit\r\n */\r\n formatUnit(value, unit, options) {\r\n return this.unitFormatter(unit, options)(value);\r\n }\r\n\r\n /**\r\n * Return a function synchronously format unit with given options.\r\n * @param {string} unit - The unit to be formatted\r\n * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/unit/unit-formatter.md}\r\n * @return {Function} The function formatting unit\r\n */\r\n unitFormatter(unit, {\r\n form,\r\n numberFormatter = this.decimalFormatter(),\r\n } = {}) {\r\n return synchronousGlobalize.call(this).unitFormatter(unit, {\r\n form,\r\n numberFormatter,\r\n });\r\n }\r\n\r\n /**\r\n * Synchronously format list with given options.\r\n * @param {string[]} list - The list to be formatted\r\n * @param {Object} [options] Same options as [Intl.ListFormat stage 2 proposal]{@link https://github.com/zbraniecki/proposal-intl-list-format}\r\n * @param {Object} [options.style=regular] Could be one of \"regular\", \"regular-long\",\r\n * \"regular-short\", \"unit\", \"unit-long\", \"unit-short\", \"unit-narrow\"\r\n * @return {string} The formatted list\r\n */\r\n formatList(list, options) {\r\n return this.listFormatter(options)(list);\r\n }\r\n\r\n /**\r\n * Return a function synchronously format list with given options.\r\n * @param {Object} [options] Same options as [Intl.ListFormat stage 2 proposal]{@link https://github.com/zbraniecki/proposal-intl-list-format}\r\n * @param {Object} [options.style=regular] Could be one of \"regular\", \"regular-long\",\r\n * \"regular-short\", \"unit\", \"unit-long\", \"unit-short\", \"unit-narrow\"\r\n * @return {Function} The function formatting list\r\n */\r\n listFormatter({\r\n style = 'regular',\r\n } = {}) {\r\n const [type, variant] = style.split('-');\r\n const cldr = this.getCldr();\r\n const cldrTypeName = _.compact([\r\n type === 'regular' ? 'standard' : type,\r\n variant === 'long' ? null : variant,\r\n ]).join('-');\r\n const listPattern = cldr.main(`listPatterns/listPattern-type-${cldrTypeName}`);\r\n const template = pattern => ([first, second]) => pattern.replace('{0}', first).replace('{1}', second);\r\n const twoTemplate = template(listPattern['2']);\r\n const middleTemplate = template(listPattern.middle);\r\n const startTemplate = template(listPattern.start);\r\n const endTemplate = template(listPattern.end);\r\n\r\n return (list) => {\r\n const size = _.size(list);\r\n\r\n if (size === 0) {\r\n return '';\r\n } else if (size === 1) {\r\n return list[0];\r\n }\r\n\r\n if (size === 2) {\r\n return twoTemplate(list);\r\n }\r\n\r\n const [first, second, ...rest] = list;\r\n const middle = _.reduce(\r\n _.initial(rest),\r\n (memo, item) => middleTemplate([memo, item]),\r\n second\r\n );\r\n\r\n return startTemplate([\r\n first,\r\n endTemplate([\r\n middle,\r\n _.last(list),\r\n ]),\r\n ]);\r\n };\r\n }\r\n\r\n // Async API\r\n\r\n /**\r\n * Asynchronously get and evaluate a localized string template (or the string as-is if it's\r\n * not a template).\r\n * @param {string} key - The key of the string resource\r\n * @param {Object} [model] - The model for the string template (if needed)\r\n * @return {Promise.} A promise that resolves to the template evaluation result\r\n */\r\n fetchString(key, ...args) {\r\n return this.p$data.then(({ resource }) => {\r\n const str = resource.getString(key, ...args);\r\n if (!str) {\r\n this.missingKeys[key] = true;\r\n }\r\n return str;\r\n });\r\n }\r\n\r\n /**\r\n * Asynchronously get locale used for this model.\r\n * @returns {Promise.} locale used for this model.\r\n */\r\n fetchLocale() {\r\n return this.p$data.then(data => data.locale);\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__38__;","module.exports = __WEBPACK_EXTERNAL_MODULE__5__;","import Promise from 'bluebird';\r\n\r\n/**\r\n * A helper to handle set/get global locale asynchronously.\r\n * @private\r\n */\r\nexport class LocaleManager {\r\n constructor() {\r\n this.p$global = new Promise((resolve) => {\r\n this.resolveGlobalLocale = resolve;\r\n });\r\n }\r\n\r\n /**\r\n * Get global locale promise.\r\n * @returns {Promise.} promise of global locale\r\n * @private\r\n */\r\n p$globalLocale() {\r\n return this.p$global;\r\n }\r\n\r\n /**\r\n * Set global locale.\r\n * @param {string} locale - global locale to set.\r\n * @returns {Promise.} promise of global locale\r\n * @private\r\n */\r\n setGlobalLocale(locale) {\r\n if (this.p$global.isFulfilled()) {\r\n // has been inited\r\n this.p$global = Promise.resolve(locale);\r\n } else {\r\n // first init\r\n this.resolveGlobalLocale(locale);\r\n }\r\n\r\n return this.p$globalLocale();\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\n\r\n/**\r\n * Translation resource.\r\n * @private\r\n */\r\nexport class Resource {\r\n /**\r\n * Creates an instance of Resource.\r\n * @param {Object} options - options\r\n * @param {Object.} data - key -> translation pairs.\r\n * @param {string|bool} failFast - when got errors\r\n * \"SAFE\" - ignore errors and try to recover by using keys\r\n * else - throw errors and crash current execution\r\n * @constructs Resource\r\n * @private\r\n */\r\n constructor({\r\n data,\r\n failFast,\r\n }) {\r\n if (!_.isObject(data)) {\r\n throw new Error('Localization data must be an Object');\r\n }\r\n\r\n this.data = data;\r\n this.failFast = failFast;\r\n }\r\n\r\n /**\r\n * Get translation of given key.\r\n * When translation is Mustache.js-style template string, model will be filled in.\r\n * @param {string} key - key of the message translated.\r\n * @param {Object.} [model] - model to be filled into the template string.\r\n * @param {Function} [preprocess] - Function to use on the template before running curlyTemplate.\r\n * @returns {string} the translation.\r\n * @private\r\n */\r\n getString(key, model, {\r\n preprocess = _.identity,\r\n } = {}) {\r\n if (!_.isString(key)) {\r\n throw new Error('Localization key must be a String');\r\n }\r\n\r\n let ret = putil.get(this.data, key);\r\n\r\n if (_.isNull(ret)) { // translation is not ready, use English text instead\r\n ret = key;\r\n }\r\n\r\n if (ret) {\r\n try {\r\n ret = preprocess(ret);\r\n } catch (ex) {\r\n if (this.failFast === 'SAFE') {\r\n // maybe there are some errors in the translated strings, try to recover by using the key\r\n ret = preprocess(key);\r\n } else {\r\n throw ex;\r\n }\r\n }\r\n\r\n if (!_.isString(ret)) {\r\n throw new Error(`Preprocess function must return a String. ${key}`);\r\n }\r\n\r\n if (model) {\r\n try {\r\n const compiled = putil.curlyTemplate(ret);\r\n ret = compiled(model);\r\n } catch (ex) {\r\n if (this.failFast === 'SAFE') {\r\n // maybe there are some errors in the translated strings, try to recover by using the key\r\n const compiled = putil.curlyTemplate(key);\r\n ret = compiled(model);\r\n } else {\r\n throw ex;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return ret;\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__14__;","export { submitEvent } from './src/event-wrappers';\r\n","import { keyCode as KEY_CODES } from '@bingads-webui/keycode';\r\n\r\nexport const wrapKeyDownEvent = availablekeys => handler => ({ keyCode }, ...params) => {\r\n if (keyCode in availablekeys) {\r\n handler(...params);\r\n }\r\n};\r\n\r\nexport const submitEvent = wrapKeyDownEvent({ [KEY_CODES.Enter]: null, [KEY_CODES.Space]: null });\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__3__;","export { setupClarity, setClarityTag } from './src/index';\r\n","/* eslint-disable */\r\nimport _ from 'underscore';\r\n\r\ndeclare global {\r\n interface Window {\r\n clarity?: (method: string, ...args: any[]) => void;\r\n }\r\n}\r\n\r\nexport interface ClarityTags {\r\n [key: string]: string | number | boolean | object;\r\n}\r\n\r\nfunction initialize(projectId: string): void {\r\n try {\r\n (function (c: Window & typeof globalThis, l: Document, a: string, r: string, i: string, t?: HTMLScriptElement, y?: Node) {\r\n c[a] = c[a] || function () { (c[a].q = c[a].q || []).push(arguments); };\r\n t = l.createElement(r) as HTMLScriptElement; t.async = true; t.src = `https://www.clarity.ms/tag/${i}`;\r\n y = l.getElementsByTagName(r)[0]; y.parentNode.insertBefore(t, y);\r\n }(window, document, 'clarity', 'script', projectId));\r\n } catch (all) { }\r\n}\r\n\r\nexport function setClarityTag(tags: ClarityTags): void {\r\n if (window.clarity) {\r\n _.each(_.keys(tags), (key) => {\r\n const tagValue = tags[key];\r\n if (tagValue) {\r\n window.clarity('set', key, _.isString(tagValue) ? tagValue : JSON.stringify(tagValue));\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport function setupClarity(projectId: string, tags: ClarityTags = {}, userId?: string, sessionId?: string, pageId?: string): void {\r\n initialize(projectId);\r\n\r\n setClarityTag(tags);\r\n\r\n if (userId || sessionId || pageId) {\r\n window.clarity('identify', userId, sessionId, pageId);\r\n }\r\n}","/* eslint-env node */\r\n\r\n// same as enum TimeZone defined in\r\n// \\\\AdsAppUI\\private\\UI\\Common\\Microsoft.AdCenter.UI.Advertiser.BusinessEntities\r\n// \\Common\\Enums\\Enums.cs\r\n// For iana-tz-data, see\r\n// https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\r\n// https://github.com/eggert/tz\r\n// https://www.iana.org/time-zones/repository/tz-link.html\r\n// http://www.unicode.org/repos/cldr/trunk/common/bcp47/timezone.xml\r\n// There're several mismatched time zones between ours and iana ones,\r\n// that's because we prefer capital, but iana prefers largest city\r\n// offset is defined by ourselves, which doesn't consider Daylight Saving Time\r\nmodule.exports = {\r\n AbuDhabiMuscat: {\r\n legacy: 32,\r\n offset: '+04:00',\r\n // Abu Dhabi is missing in iana-tz-data, use Asia/Dubai for Abu Dhabi (United Arab Emirates)\r\n iana: ['Asia/Dubai', 'Asia/Muscat'],\r\n },\r\n Adelaide: {\r\n legacy: 11,\r\n offset: '+09:30',\r\n // Australia/Adelaide has UTC offset +09:30/+10:30\r\n iana: ['Australia/Adelaide'],\r\n },\r\n Alaska: {\r\n legacy: 72,\r\n offset: '-09:00',\r\n // Australia/Adelaide has UTC offset -09:00/-08:00\r\n iana: ['US/Alaska'],\r\n },\r\n Almaty_Novosibirsk: {\r\n legacy: 25,\r\n offset: '+06:00',\r\n // Asia/Almaty has UTC offset +06:00/+06:00\r\n // Asia/Novosibirsk has +07:00/+07:00\r\n iana: ['Asia/Almaty', 'Asia/Novosibirsk'],\r\n },\r\n AmsterdamBerlinBernRomeStockholmVienna: {\r\n legacy: 48,\r\n offset: '+01:00',\r\n // Bern is missing in iana-tz-data, use Europe/Zurich for Bern (Switzerland)\r\n // All these iana time zone has UTC offset +01:00/+02:00\r\n iana: ['Europe/Amsterdam', 'Europe/Berlin', 'Europe/Zurich', 'Europe/Rome', 'Europe/Stockholm', 'Europe/Vienna'],\r\n },\r\n Arizona: {\r\n legacy: 68,\r\n offset: '-07:00',\r\n iana: ['US/Arizona'],\r\n },\r\n AstanaDhaka: {\r\n legacy: 24,\r\n offset: '+06:00',\r\n // Astana is missing in iana-tz-data, use Asia/Almaty for Astana (Kazakhstan)\r\n iana: ['Asia/Almaty', 'Asia/Dhaka'],\r\n },\r\n AthensIslandanbulMinsk: {\r\n legacy: 43,\r\n offset: '+02:00',\r\n // Islandanbul should be misspelled Istanbul\r\n // Europe/Athens has UTC offset +02:00/+03:00\r\n // other 2 have UTC offset +03:00/+03:00\r\n iana: ['Europe/Athens', 'Europe/Istanbul', 'Europe/Minsk'],\r\n },\r\n AtlanticTimeCanada: {\r\n legacy: 58,\r\n offset: '-04:00',\r\n // Canada/Atlantic has UTC offset -04:00/-03:00\r\n iana: ['Canada/Atlantic'],\r\n },\r\n AucklandWellington: {\r\n legacy: 3,\r\n offset: '+12:00',\r\n // Wellington is missing in iana-tz-data, use NZ for Wellington (New Zealand)\r\n // Both these iana time zones have UTC offset +12:00/+13:00\r\n iana: ['Pacific/Auckland', 'NZ'],\r\n },\r\n Azores: {\r\n legacy: 51,\r\n offset: '-01:00',\r\n // Atlantic/Azores has UTC offset -01:00/+00:00\r\n iana: ['Atlantic/Azores'],\r\n },\r\n Baghdad: {\r\n legacy: 37,\r\n offset: '+03:00',\r\n iana: ['Asia/Baghdad'],\r\n },\r\n BakuTbilisiYerevan: {\r\n legacy: 31,\r\n offset: '+04:00',\r\n iana: ['Asia/Baku', 'Asia/Tbilisi', 'Asia/Yerevan'],\r\n },\r\n BangkokHanoiJakarta: {\r\n legacy: 21,\r\n offset: '+07:00',\r\n // Hanoi is missing in iana-tz-data, use Asia/Ho_Chi_Minh for Hanoi (Vietnam)\r\n iana: ['Asia/Bangkok', 'Asia/Ho_Chi_Minh', 'Asia/Jakarta'],\r\n },\r\n BeijingChongqingHongKongUrumqi: {\r\n legacy: 19,\r\n offset: '+08:00',\r\n // Beijing is missing in iana-tz-data, use PRC for Beijing (China)\r\n // Asia/Urumqi has UTC offset +06:00/+06:00\r\n iana: ['PRC', 'Asia/Chongqing', 'Asia/Hong_Kong', 'Asia/Urumqi'],\r\n },\r\n BelgradeBratislavaBudapestLjubljanaPrague: {\r\n legacy: 47,\r\n offset: '+01:00',\r\n // All these iana time zones have UTC offset +01:00/+02:00\r\n iana: ['Europe/Belgrade', 'Europe/Bratislava', 'Europe/Budapest', 'Europe/Ljubljana', 'Europe/Prague'],\r\n },\r\n BogotaLimaQuito: {\r\n legacy: 61,\r\n offset: '-05:00',\r\n // Quito is missing in iana-tz-data, use America/Guayaquil for Quito (Ecuador)\r\n iana: ['America/Bogota', 'America/Lima', 'America/Guayaquil'],\r\n },\r\n Brasilia: {\r\n legacy: 54,\r\n offset: '-03:00',\r\n // Brasília is missing in iana-tz-data, use Brazil/East for Brasília (Brazil)\r\n // Brazil has several time zones, see: https://en.wikipedia.org/wiki/Time_in_Brazil\r\n // Brazil/East has UTC offset -03:00/-02:00\r\n iana: ['Brazil/East'],\r\n },\r\n Brisbane: {\r\n legacy: 9,\r\n offset: '+10:00',\r\n iana: ['Australia/Brisbane'],\r\n },\r\n BrusselsCopenhagenMadridParis: {\r\n legacy: 46,\r\n offset: '+01:00',\r\n // All these iana time zones have UTC offset +01:00/+02:00\r\n iana: ['Europe/Brussels', 'Europe/Copenhagen', 'Europe/Madrid', 'Europe/Paris'],\r\n },\r\n Bucharest: {\r\n legacy: 42,\r\n offset: '+02:00',\r\n // Europe/Bucharest has UTC offset +02:00/+03:00\r\n iana: ['Europe/Bucharest'],\r\n },\r\n BuenosAiresGeorgetown: {\r\n legacy: 55,\r\n offset: '-03:00',\r\n // Georgetown is missing in iana-tz-data, use America/Guyana for Georgetown (Guyana)\r\n // America/Guyana has UTC offset -04:00/-04:00\r\n iana: ['America/Buenos_Aires', 'America/Guyana'],\r\n },\r\n Cairo: {\r\n legacy: 41,\r\n offset: '+02:00',\r\n iana: ['Africa/Cairo'],\r\n },\r\n CanberraMelbourneSydney: {\r\n legacy: 8,\r\n offset: '+10:00',\r\n // All these iana time zones have UTC offset +10:00/+11:00\r\n iana: ['Australia/Canberra', 'Australia/Melbourne', 'Australia/Sydney'],\r\n },\r\n CapeVerdeIsland: {\r\n legacy: 52,\r\n offset: '-01:00',\r\n iana: ['Atlantic/Cape_Verde'],\r\n },\r\n CaracasLaPaz: {\r\n legacy: 59,\r\n offset: '-04:00',\r\n iana: ['America/Caracas', 'America/La_Paz'],\r\n },\r\n CasablancaMonrovia: {\r\n legacy: 49,\r\n offset: '+00:00',\r\n // Africa/Casablanca has UTC offset +00:00/+01:00\r\n iana: ['Africa/Casablanca', 'Africa/Monrovia'],\r\n },\r\n CentralAmerica: {\r\n legacy: 64,\r\n offset: '-06:00',\r\n // US/Central has UTC offset -06:00/-05:00\r\n iana: ['US/Central'],\r\n },\r\n CentralTimeUSCanada: {\r\n legacy: 65,\r\n offset: '-06:00',\r\n // US/Central is duplicated with CentralAmerica\r\n // Both these iana time zones have UTC offset -06:00/-05:00\r\n iana: ['US/Central', 'Canada/Central'],\r\n },\r\n ChennaiKolkataMumbaiNewDelhi: {\r\n legacy: 27,\r\n offset: '+05:30',\r\n // India has only one time zone\r\n // see: https://en.wikipedia.org/wiki/Time_in_India\r\n iana: ['Asia/Kolkata'],\r\n },\r\n ChihuahuaLaPazMazatlan: {\r\n legacy: 69,\r\n offset: '-07:00',\r\n // LaPaz alrady covered by CaracasLaPaz\r\n // America/La_Paz has UTC offset -04:00/-04:00\r\n // other 2 have UTC offset -07:00/-06:00\r\n iana: ['America/Chihuahua', 'America/La_Paz', 'America/Mazatlan'],\r\n },\r\n Darwin: {\r\n legacy: 10,\r\n offset: '+09:30',\r\n iana: ['Australia/Darwin'],\r\n },\r\n EasternTimeUSCanada: {\r\n legacy: 62,\r\n offset: '-05:00',\r\n // Both these iana time zones have UTC offset -05:00/-04:00\r\n iana: ['US/Eastern', 'Canada/Eastern'],\r\n },\r\n Ekaterinburg: {\r\n legacy: 29,\r\n offset: '+05:00',\r\n // Ekaterinburg should be misspelled Yekaterinburg\r\n iana: ['Asia/Yekaterinburg'],\r\n },\r\n FijiKamchatkaMarshallIsland: {\r\n legacy: 2,\r\n offset: '+12:00',\r\n // Marshall Islands is missing in iana-tz-data, use Pacific/Majuro for Marshall Islands\r\n // Pacific/Fiji has UTC offset +12:00/+13:00\r\n iana: ['Pacific/Fiji', 'Asia/Kamchatka', 'Pacific/Majuro'],\r\n },\r\n Greenland: {\r\n legacy: 56,\r\n offset: '-03:00',\r\n // Greenland is missing in iana-tz-data, use America/Godthab for Greenland\r\n // America/Godthab has UTC offset -03:00/-02:00\r\n iana: ['America/Godthab'],\r\n },\r\n GreenwichMeanTimeDublinEdinburghLisbonLondon: {\r\n legacy: 50,\r\n offset: '+00:00',\r\n // Edinburgh is missing in iana-tz-data, use GB for Edinburgh (Great British)\r\n // Europe/Dublin, GB, Europe/Lisbon and Europe/London have UTC offset +00:00/+01:00\r\n iana: ['GMT', 'Europe/Dublin', 'GB', 'Europe/Lisbon', 'Europe/London'],\r\n },\r\n GuadalajaraMexicoCityMonterrey: {\r\n legacy: 66,\r\n offset: '-06:00',\r\n // Guadalajara is missing in iana-tz-data, use Mexico/General for Guadalajara (Mexico)\r\n // All these iana time zones have UTC offset -06:00/-05:00\r\n iana: ['Mexico/General', 'America/Mexico_City', 'America/Monterrey'],\r\n },\r\n GuamPortMoresby: {\r\n legacy: 7,\r\n offset: '+10:00',\r\n iana: ['Pacific/Guam', 'Pacific/Port_Moresby'],\r\n },\r\n HararePretoria: {\r\n legacy: 40,\r\n offset: '+02:00',\r\n // Pretoria is missing in iana-tz-data, use Africa/Johannesburg for Pretoria (South Africa)\r\n iana: ['Africa/Harare', 'Africa/Johannesburg'],\r\n },\r\n Hawaii: {\r\n legacy: 73,\r\n offset: '-10:00',\r\n iana: ['US/Hawaii'],\r\n },\r\n HelsinkiKyivRigaSofiaTallinnVilnius: {\r\n legacy: 39,\r\n offset: '+02:00',\r\n // Kyiv is also translated as Kiev\r\n // All these iana time zones have UTC offset +02:00/+03:00\r\n iana: ['Europe/Helsinki', 'Europe/Kiev', 'Europe/Riga', 'Europe/Sofia', 'Europe/Tallinn', 'Europe/Vilnius'],\r\n },\r\n Hobart: {\r\n legacy: 6,\r\n offset: '+10:00',\r\n // Australia/Hobart has UTC offset +10:00/+11:00\r\n iana: ['Australia/Hobart'],\r\n },\r\n IndianaEast: {\r\n legacy: 63,\r\n offset: '-05:00',\r\n // US/East-Indiana has UTC offset -05:00/-04:00\r\n iana: ['US/East-Indiana'],\r\n },\r\n InternationalDateLineWest: {\r\n legacy: 75,\r\n offset: '-12:00',\r\n iana: ['Etc/GMT+12'],\r\n },\r\n IrkutskUlaanBataar: {\r\n legacy: 18,\r\n offset: '+08:00',\r\n iana: ['Asia/Irkutsk', 'Asia/Ulaanbaatar'],\r\n },\r\n IslandamabadKarachiTashkent: {\r\n legacy: 28,\r\n offset: '+05:00',\r\n // Islandamabad is misspelled Islamabad\r\n // Islamabad is missing in iana-tz-data, use Etc/GMT-5 for Islamabad (Pakistan)\r\n iana: ['Etc/GMT-5', 'Asia/Karachi', 'Asia/Tashkent'],\r\n },\r\n Jerusalem: {\r\n legacy: 38,\r\n offset: '+02:00',\r\n // Asia/Jerusalem has UTC offset +02:00/+03:00\r\n iana: ['Asia/Jerusalem'],\r\n },\r\n Kabul: {\r\n legacy: 30,\r\n offset: '+04:30',\r\n iana: ['Asia/Kabul'],\r\n },\r\n Kathmandu: {\r\n legacy: 26,\r\n offset: '+05:45',\r\n iana: ['Asia/Kathmandu'],\r\n },\r\n Krasnoyarsk: {\r\n legacy: 20,\r\n offset: '+07:00',\r\n iana: ['Asia/Krasnoyarsk'],\r\n },\r\n KualaLumpurSingapore: {\r\n legacy: 17,\r\n offset: '+08:00',\r\n iana: ['Asia/Kuala_Lumpur', 'Asia/Singapore'],\r\n },\r\n KuwaitRiyadh: {\r\n legacy: 36,\r\n offset: '+03:00',\r\n iana: ['Asia/Kuwait', 'Asia/Riyadh'],\r\n },\r\n MagadanSolomonIslandNewCaledonia: {\r\n legacy: 4,\r\n offset: '+11:00',\r\n // Solomon Islands is missing in iana-tz-data, use Pacific/Guadalcanal for Solomon Islands\r\n // New Caledonia is missing in iana-tz-data, use Pacific/Noumea for New Caledonia\r\n iana: ['Asia/Magadan', 'Pacific/Guadalcanal', 'Pacific/Noumea'],\r\n },\r\n MidAtlantic: {\r\n legacy: 53,\r\n offset: '-02:00',\r\n iana: ['America/Noronha'],\r\n },\r\n MidwayIslandand_Samoa: {\r\n legacy: 74,\r\n offset: '-11:00',\r\n iana: ['Pacific/Midway', 'Pacific/Samoa'],\r\n },\r\n MoscowStPetersburgVolgograd: {\r\n legacy: 35,\r\n offset: '+03:00',\r\n // Saint Petersburg is missing in iana-tz-data, use W-SU for Saint Petersburg (Russia)\r\n iana: ['Europe/Moscow', 'W-SU', 'Europe/Volgograd'],\r\n },\r\n MountainTime_US_Canada: {\r\n legacy: 70,\r\n offset: '-07:00',\r\n // Both these iana time zones have UTC offset -07:00/-06:00\r\n iana: ['US/Mountain', 'Canada/Mountain'],\r\n },\r\n Nairobi: {\r\n legacy: 34,\r\n offset: '+03:00',\r\n iana: ['Africa/Nairobi'],\r\n },\r\n Newfoundland: {\r\n legacy: 57,\r\n offset: '-03:30',\r\n // Canada/Newfoundland has UTC offset -03:30/-02:30\r\n iana: ['Canada/Newfoundland'],\r\n },\r\n None: {\r\n legacy: 0,\r\n offset: '+00:00',\r\n iana: ['UTC'],\r\n },\r\n Nukualofa: {\r\n legacy: 1,\r\n offset: '+13:00',\r\n // Nukuʻalofa is missing in iana-tz-data, use Pacific/Tongatapu for Nukuʻalofa (Tonga)\r\n // Pacific/Tongatapu has UTC offset +13:00/+14:00\r\n iana: ['Pacific/Tongatapu'],\r\n },\r\n OsakaSapporoTokyo: {\r\n legacy: 14,\r\n offset: '+09:00',\r\n // Japan uses same time zone in mainland\r\n iana: ['Japan'],\r\n },\r\n PacificTimeUSCanadaTijuana: {\r\n legacy: 71,\r\n offset: '-08:00',\r\n // All these iana time zones have UTC offset -08:00/-07:00\r\n iana: ['US/Pacific', 'Canada/Pacific', 'America/Tijuana'],\r\n },\r\n Perth: {\r\n legacy: 16,\r\n offset: '+08:00',\r\n iana: ['Australia/Perth'],\r\n },\r\n Rangoon: {\r\n legacy: 22,\r\n offset: '+06:30',\r\n iana: ['Asia/Rangoon'],\r\n },\r\n Santiago: {\r\n legacy: 60,\r\n offset: '-03:00',\r\n // Pacific/Tongatapu has UTC offset -04:00/-03:00\r\n iana: ['America/Santiago'],\r\n },\r\n SarajevoSkopjeWarsawZagreb: {\r\n legacy: 45,\r\n offset: '+01:00',\r\n // All these iana time zones have UTC offset +01:00/+02:00\r\n iana: ['Europe/Sarajevo', 'Europe/Skopje', 'Europe/Warsaw', 'Europe/Zagreb'],\r\n },\r\n Saskatchewan: {\r\n legacy: 67,\r\n offset: '-06:00',\r\n iana: ['Canada/Saskatchewan'],\r\n },\r\n Seoul: {\r\n legacy: 13,\r\n offset: '+09:00',\r\n iana: ['Asia/Seoul'],\r\n },\r\n SriJayawardenepura: {\r\n legacy: 23,\r\n offset: '+06:00',\r\n // Sri Jayawardenepura Kotte is missing in iana-tz-data\r\n // use Asia/Colombo for Sri Jayawardenepura Kotte (Sri Lanka)\r\n // Asia/Colombo has UTC offset +05:30/+05:30\r\n iana: ['Asia/Colombo'],\r\n },\r\n Taipei: {\r\n legacy: 15,\r\n offset: '+08:00',\r\n iana: ['Asia/Taipei'],\r\n },\r\n Tehran: {\r\n legacy: 33,\r\n offset: '+03:30',\r\n // Asia/Tehran has UTC offset +03:30/+04:30\r\n iana: ['Asia/Tehran'],\r\n },\r\n Vladivostok: {\r\n legacy: 5,\r\n offset: '+10:00',\r\n iana: ['Asia/Vladivostok'],\r\n },\r\n WestCentralAfrica: {\r\n legacy: 44,\r\n offset: '+01:00',\r\n // West Central Africa is missing in iana-tz-data, use Africa/Lagos for West Central Africa\r\n // see https://www.timeanddate.com/time/map/\r\n iana: ['Africa/Lagos'],\r\n },\r\n Yakutsk: {\r\n legacy: 12,\r\n offset: '+09:00',\r\n iana: ['Asia/Yakutsk'],\r\n },\r\n};\r\n","export * from './src/time-zone-converter';\r\n","/* eslint camelcase: 0 */\r\nimport _ from 'underscore';\r\nimport { get } from '@bingads-webui-universal/primitive-utilities';\r\nimport timeZoneMetadata from '../metadata';\r\n\r\n/**\r\n * Convert legacy Number type time zone (Enum value) to String type time zone (Enum name)\r\n * @param {Number} legacyTimeZone - the legacy time zone used in JS code\r\n * @returns {String} String type time zone\r\n */\r\nexport function fromLegacyTimeZone(legacyTimeZone) {\r\n return _.findKey(timeZoneMetadata, ({ legacy }) => legacy === legacyTimeZone);\r\n}\r\n\r\n/**\r\n * Convert String type time zone (Enum name) to legacy Number type time zone (Enum value)\r\n * @param {String} timeZone - the String type time zone\r\n * @returns {Number} Number type time zone\r\n */\r\nexport function toLegacyTimeZone(timeZone) {\r\n return get(timeZoneMetadata[timeZone], 'legacy');\r\n}\r\n\r\n/**\r\n * Convert String type time zone to IANA tz data time zone used in @bingads-webui/i18n-model\r\n * @param {String} timeZone - the String type time zone\r\n * @returns {String} String type time zone\r\n */\r\nexport function toIANATimeZone(timeZone) {\r\n // only return first IANA time zone, leave other ones for future usage\r\n return get(timeZoneMetadata[timeZone], 'iana[0]');\r\n}\r\n\r\n/**\r\n * Get String type time zone's UTC offset\r\n * This offset is defined by BingAdsApps, which doesn't consider Daylight Saving Time\r\n * @param {String} timeZone - the String type time zone\r\n * @returns {String} Readable UTC offset\r\n */\r\nexport function getUTCOffsetWithoutDST(timeZone) {\r\n return get(timeZoneMetadata[timeZone], 'offset');\r\n}\r\n\r\n/**\r\n * Get all supported time zones\r\n * @returns {String[]} all time zones\r\n */\r\nexport const allTimeZones = _.keys(timeZoneMetadata);\r\n"," \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, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\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 \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 39);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 2b573647655303f11431","export { Subject } from './src/subject.es';\r\n\n\n\n// WEBPACK FOOTER //\n// ./d:/dbs/el/aapusc/private/client-universal/packages/observer-pattern/index.es","/* global Set */\r\n// Use the basic APIs of ES6 Set. If your site supports browsers not\r\n// having Set natively, you should use a polyfill\r\n\r\n/* Subject to observe */\r\nexport class Subject {\r\n constructor() {\r\n this.observers = new Set();\r\n }\r\n\r\n /**\r\n * Subscribe an observer to the subject\r\n * @param {Object} observer - The observer subscribing to the subject\r\n * @returns {void}\r\n */\r\n subscribe(observer) {\r\n if (!(observer instanceof Object)) {\r\n throw new Error('Invalid observer');\r\n }\r\n this.observers.add(observer);\r\n }\r\n\r\n /**\r\n * Unsubscribe an observer from the subject\r\n * @param {Object} observer - The observer to unsubscribe\r\n * @returns {void}\r\n */\r\n unsubscribe(observer) {\r\n this.observers.delete(observer);\r\n }\r\n\r\n /**\r\n * Notify the observers for a certain action\r\n * @param {string} action -\r\n * Name of the action, it will map to the handler method name on the observer\r\n * @param {...*} args - Additional arguments\r\n * @returns {void}\r\n */\r\n notify(action, ...args) {\r\n this.observers.forEach((observer) => {\r\n if (typeof observer[action] === 'function') {\r\n observer[action](this, ...args);\r\n }\r\n });\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./d:/dbs/el/aapusc/private/client-universal/packages/observer-pattern/src/subject.es","export * from './src/index';\r\n","export * from './lodash';\r\nexport * from './string';\r\nexport * from './guid';\r\nexport * from './date';\r\nexport * from './file';\r\nexport * from './promise';\r\nexport * from './color';\r\nexport * from './number';\r\nexport * from './memoize';\r\n","// TODO: Task 904718: refactor to use explicit dependency for es6 syntax rather than global variable\r\nimport _ from 'underscore';\r\n\r\ntype Path = string | string[];\r\n\r\nfunction castPath(value: Path, object: any) {\r\n if (_.isArray(value)) {\r\n return value;\r\n }\r\n\r\n if (_.has(object, value)) {\r\n return [value];\r\n }\r\n\r\n return _.compact(value.split(/[[\\].]/));\r\n}\r\n\r\nfunction clone(item: T, sourceCopyMap: Map): T {\r\n if (!_.isObject(item) || _.isDate(item) || _.isFunction(item)) {\r\n return item;\r\n }\r\n if (!sourceCopyMap.get(item)) {\r\n const result: T = (_.isArray(item) ? [] : {});\r\n sourceCopyMap.set(item, result);\r\n _.each(<_.Dictionary>item, (value, key) => {\r\n (<_.Dictionary>result)[key] = clone(value, sourceCopyMap);\r\n });\r\n }\r\n return sourceCopyMap.get(item);\r\n}\r\n\r\n/**\r\n * defined in lodash 4.5.1\r\n * sum list with iteratee\r\n * @param {Object[]} list - array to be summed\r\n * @param {Function} invoke - function invoked per element\r\n * @returns {number} - sum value of list\r\n */\r\nexport function sumBy(list: T[], invoke: string | object | ((item: T, index: string | number) => number)): number {\r\n let iteratee: any;\r\n\r\n // make separate calls to satisfy @types/underscore for iteratee\r\n if (invoke instanceof String) {\r\n iteratee = _.iteratee(invoke);\r\n } else if (invoke instanceof Object) {\r\n iteratee = _.iteratee(invoke);\r\n } else {\r\n iteratee = _.iteratee(invoke);\r\n }\r\n\r\n return _.reduce(\r\n list,\r\n (currentSum, item, index, arr) => currentSum + iteratee(item, index, arr),\r\n 0,\r\n );\r\n}\r\n\r\n/**\r\n * defined in lodash 0.5.0\r\n * merge two object from src to dest\r\n * @param {Object} dest - dest object\r\n * @param {Object} src - src object\r\n * @returns {Object} - merged object\r\n */\r\nexport function merge(...args: T[]): T {\r\n return _.reduce(_.rest(args), (dest, src) => {\r\n _.each(<_.Dictionary>src, (value, key) => {\r\n const destKey = (<_.Dictionary>dest)[key];\r\n if (_.isObject(destKey) && _.isObject(value) && !_.isFunction(value)) {\r\n merge(destKey, value);\r\n } else {\r\n _.extend(dest, _.object([key], [value]));\r\n }\r\n });\r\n\r\n return dest;\r\n }, _.first(args) || {});\r\n}\r\n\r\n/**\r\n * defined in lodash 4.6.1\r\n * Gets the value at path of object. If the resolved value is undefined,\r\n * the defaultValue is returned in its place.\r\n * @param {Object} object - The object to query.\r\n * @param {array|string} path - The path of the property to get.\r\n * @param {*} defaultValue - Optional, The value returned for undefined resolved values.\r\n * @returns {any} - return the value in object by path, if not exist, return default value\r\n */\r\nexport function get(object: T, path: Path, defaultValue?: TProp): TProp | undefined {\r\n let sub: _.Dictionary & TProp;\r\n let i;\r\n const keyPath = castPath(path, object);\r\n\r\n for (i = 0, sub = <_.Dictionary & TProp>object; i < keyPath.length; i += 1) {\r\n if (!_.isObject(sub)) {\r\n return defaultValue;\r\n }\r\n\r\n sub = <_.Dictionary & TProp>sub[keyPath[i]];\r\n\r\n if (_.isUndefined(sub)) {\r\n return defaultValue;\r\n }\r\n }\r\n\r\n return sub;\r\n}\r\n\r\n/**\r\n * lodash set, path don't support index\r\n * Sets the value at path of object. If a portion of path doesn't exist, it's created.\r\n * Arrays are created for missing index properties while\r\n * objects are created for all other missing properties.\r\n * @param {Object} object - The object to modify.\r\n * @param {string} path - The path of the property to set.\r\n * @param {*} value - The value to set.\r\n * @returns {Object} - Returns object.\r\n */\r\nexport function set(object: T, path: Path, value: TProp): T {\r\n if (!_.isObject(object)) {\r\n return object;\r\n }\r\n\r\n const keyPath = castPath(path, object);\r\n let index = 0;\r\n const { length } = keyPath;\r\n const lastIndex = length - 1;\r\n let nested = <_.Dictionary & TProp>object;\r\n\r\n while (nested != null && index < length) {\r\n const key = keyPath[index];\r\n\r\n if (index !== lastIndex) {\r\n (nested as _.Dictionary)[key] = nested[key] || {};\r\n nested = <_.Dictionary & TProp>nested[key];\r\n } else {\r\n (nested as _.Dictionary)[key] = value;\r\n }\r\n index += 1;\r\n }\r\n return object;\r\n}\r\n\r\n/**\r\n * Creates a function that returns the result of invoking the given\r\n * functions with the this binding of the created function,\r\n * where each successive invocation is supplied the return value of the previous.\r\n * lodash flow https://lodash.com/docs#flow\r\n * @param {function[]} funcs - The functions to invoke.\r\n * @returns {Function} - Returns the new composite function.\r\n */\r\nexport function flow(...funcs: Function[]): Function {\r\n return _.compose.apply(null, funcs.reverse());\r\n}\r\n\r\n/**\r\n * defined in lodash 4.0.0\r\n * Check whether value is undefined or null\r\n * @param {*} value - value to Check\r\n * @returns {boolean} - return true if value is undefined or null, otherwise, return false\r\n */\r\nexport function isNil(value: any): boolean {\r\n return _.isUndefined(value) || _.isNull(value);\r\n}\r\n\r\n/**\r\n * deep clone object\r\n * @param {array|Object} item - source item to be copied\r\n * @return {array|Object} - copied from item\r\n*/\r\nexport function cloneDeep(item: T): T {\r\n return clone(item, new Map());\r\n}\r\n\r\nfunction objIsArray(obj: any): obj is any[] {\r\n return _.isArray(obj) && Boolean(obj.length);\r\n}\r\n\r\n/**\r\n * array dedup function\r\n * @param {any[]} array - the array to inspect\r\n * @param {function} comparator - comparator function to determine whether 2 elements are the same\r\n * @returns {any[]} - new duplicate free array\r\n */\r\nexport function uniqWith(array: any, comparator?: (arg1: T, arg2: T) => boolean): T[] {\r\n if (!objIsArray(array)) {\r\n return [];\r\n }\r\n if (!_.isFunction(comparator)) {\r\n return _.uniq(array);\r\n }\r\n const result: T[] = [];\r\n _.each(array, (obj) => {\r\n if (_.every(result, (res) => !comparator(obj, res))) {\r\n result.push(obj);\r\n }\r\n });\r\n return result;\r\n}\r\n","import _ from 'underscore';\r\n\r\nconst noMatch = /(.)^/;\r\nconst settings = {\r\n escape: noMatch,\r\n evaluate: noMatch,\r\n interpolate: /\\{\\{(.+?)\\}\\}/g,\r\n};\r\n\r\n/**\r\n * Passes constant double curly brace settings to the underscore template function.\r\n * E.g. to support templates of the format: 'The bid is {{bidAmount}}'\r\n *\r\n * @see {@link http://underscorejs.org/#template}\r\n *\r\n * @param {String} templateString - The template markup that contains double curly bracket notation.\r\n * @return {Function} The template function, which can be passed an Object model with fields that\r\n * correspond to the names marked up by the curly braces.\r\n */\r\nexport function curlyTemplate(templateString: string): (...data: any[]) => string {\r\n return _.template(templateString, settings);\r\n}\r\n\r\n/**\r\n * check whether this string include CJK charact\r\n * @param {string} str - string to check\r\n * @returns {boolean} - return true if str contains CJK, otherwise, return false\r\n */\r\nexport function hasCJK(str: string): boolean {\r\n return !!(_.isString(str) && str.match(/[\\u4E00-\\u9FCC]/));\r\n}\r\n\r\n/**\r\n * Regex Pattern for wide characters\r\n */\r\nconst wideCharPattern = new RegExp(\r\n '[\\\\u1100-\\\\u11FF]' // IsHangulJamo\r\n + '|[\\\\u2E80-\\\\u2EFF]' // IsCJKRadicalsSupplement\r\n + '|[\\\\u3000-\\\\u303F]' // IsCJKSymbolsandPunctuation\r\n + '|[\\\\u3040-\\\\u309F]' // IsHiragana\r\n + '|[\\\\u30A0-\\\\u30FF]' // IsKatakana\r\n + '|[\\\\u3130-\\\\u318F]' // IsHangulCompatibilityJamo\r\n + '|[\\\\u3200-\\\\u32FF]' // IsEnclosedCJKLettersandMonths\r\n + '|[\\\\u3300-\\\\u33FF]' // IsCJKCompatibility\r\n + '|[\\\\u3400-\\\\u4DBF]' // IsCJKUnifiedIdeographsExtensionA\r\n + '|[\\\\u4E00-\\\\u9FFF]' // IsCJKUnifiedIdeographs\r\n + '|[\\\\uAC00-\\\\uD7AF]' // IsHangulSyllables\r\n + '|[\\\\uF900-\\\\uFAFF]' // IsCJKCompatibilityIdeographs\r\n + '|[\\\\uFE30-\\\\uFE4F]' // IsCJKCompatibilityForms\r\n + '|[\\\\uFF01-\\\\uFF60]' // Fullwidth Forms Part 1\r\n + '|[\\\\uFFE0-\\\\uFFE6]' // Fullwidth Forms Part 2\r\n + '|[\\\\uD800-\\\\uDBFF][\\\\uDC00-\\\\uDFFF]', // Astral Planes\r\n 'g',\r\n);\r\n\r\n/**\r\n * Get string length, which counting CJK character or Emojis as 2\r\n * @param {string} str - string to count\r\n * @returns {int} - length of string\r\n */\r\nexport function displayLength(str: string | null) {\r\n return _.isString(str) ? str.replace(wideCharPattern, '12').length : 0;\r\n}\r\n\r\nexport function getLength(str: string, distinguishWideChar = false) {\r\n return distinguishWideChar ? displayLength(str) : _.size(str);\r\n}\r\n\r\n// eslint-disable-next-line no-control-regex\r\nconst IsControlRegex = /[\\u0000-\\u001F\\u007F-\\u009F]/;\r\n\r\n/**\r\n * Validate if string contains controlled characters, http://unicode.org/glossary/#control_codes\r\n * @param {String} str - String to be validated\r\n * @returns {Boolean} - True if string contains controlled char.\r\n */\r\nexport const isControl = (str: string) => IsControlRegex.test(str);\r\n","/*\r\n* Create a new guid\r\n* @returns {String} - returns a guid\r\n*/\r\nexport function generateGuid() {\r\n function s4() {\r\n return Math.floor((1 + Math.random()) * 0x10000)\r\n .toString(16)\r\n .substring(1);\r\n }\r\n return `${s4()}${s4()}-${s4()}-${s4()}-${s4()}-${s4()}${s4()}${s4()}`;\r\n}\r\n","/* eslint-env browser */\r\nimport _ from 'underscore';\r\n\r\n/*\r\n* Returns a copy of the passed in Date with hours/minutes/seconds/milliseconds set to zero.\r\n* @param {Date} date - Date to remove time information from\r\n* @returns {Date} - Copy of passed in date\r\n*/\r\nexport function withoutTime(date: any) {\r\n if (!date) {\r\n return date;\r\n }\r\n\r\n const returnDate = new Date(date.valueOf());\r\n returnDate.setHours(0, 0, 0, 0);\r\n return returnDate;\r\n}\r\n\r\n/**\r\n * Validates if the date range passed in is incorrect. It ignores the time values.\r\n * @param { Date } [minDate] - The minimum date that can be selected.\r\n * @param { Date } [maxDate] - The maximum date that can be selected.\r\n * @param { Date } [selectedDate] - The date to pre-select in the datepicker.\r\n * @returns {String[]} - Array of error strings.\r\n * @throws Will throw if passed in date range is not valid.\r\n */\r\nexport function validateDateRange(minDate: any, maxDate: any, selectedDate: any): string[] {\r\n const selected = withoutTime(selectedDate);\r\n const min = withoutTime(minDate);\r\n const max = withoutTime(maxDate);\r\n\r\n const errors = [];\r\n\r\n if (min && max && min > max) {\r\n errors.push('MinDateLaterThanMaxDate');\r\n }\r\n\r\n if (selected && min && selected < min) {\r\n errors.push('MinDateLaterThanSelectedDate');\r\n }\r\n\r\n if (selected && max && selected > max) {\r\n errors.push('SelectedDateLaterThanMaxDate');\r\n }\r\n\r\n return errors;\r\n}\r\n\r\n/**\r\n * Private function to check if date is valid\r\n * @param {Object} date - Object to check\r\n * @returns {Boolean} - True if object is a valid date\r\n * @private\r\n*/\r\nfunction isValidDate(date: object): date is Date {\r\n return _.isDate(date);\r\n}\r\n\r\n/**\r\n * Get the date N days ago\r\n * @param {Date} dateTime - The input date object\r\n * @param {Number} [lookBackDays=0] - Number of days to remove\r\n * @returns {Date} - date object with new parameters, null if date is invalid\r\n */\r\nexport function lastNDate(dateTime: any, lookBackDays: number = 0): Date | null {\r\n return isValidDate(dateTime)\r\n ? new Date(dateTime.getFullYear(), dateTime.getMonth(), dateTime.getDate() - lookBackDays) : null;\r\n}\r\n\r\n/**\r\n * Get first date of the month N months ago\r\n * @param {Date} dateTime - The input date object\r\n * @param {Number} [lookBackMonths=0] - Number of months to remove\r\n * @returns {Date} - Date object with new parameters\r\n */\r\nexport function firstDateNMonthsAgo(dateTime: any, lookBackMonths: number = 0): Date | null {\r\n return isValidDate(dateTime)\r\n ? new Date(dateTime.getFullYear(), dateTime.getMonth() - lookBackMonths, 1) : null;\r\n}\r\n\r\n/**\r\n * Get last date of the month N months ago\r\n * @param {Date} dateTime - The input date object\r\n * @param {Number} [lookBackMonths=0] - Number of months to remove\r\n * @returns {Date} - Date object with new parameters\r\n */\r\nexport function lastDateNMonthsAgo(dateTime: any, lookBackMonths: number = 0): Date | null {\r\n return isValidDate(dateTime)\r\n ? lastNDate(firstDateNMonthsAgo(dateTime, lookBackMonths - 1), 1) : null;\r\n}\r\n\r\n/**\r\n * Get today for N years ago\r\n * @param {Date} dateTime - The input date object\r\n * @param {Number} [lookBackYears=0] - Number of years to remove\r\n * @returns {Date} - Date object with new parameters\r\n */\r\nexport function todayNYearsAgo(dateTime: any, lookBackYears: number = 0): Date | null {\r\n return isValidDate(dateTime) ? new Date(\r\n dateTime.getFullYear() - lookBackYears,\r\n dateTime.getMonth(),\r\n dateTime.getDate(),\r\n ) : null;\r\n}\r\n\r\n/**\r\n * Get first date of the year N years ago\r\n * @param {Date} dateTime - The input date object\r\n * @param {Number} [lookBackYears=0] - Number of years to remove\r\n * @returns {Date} - Date object with new parameters\r\n */\r\nexport function firstDateNYearsAgo(dateTime: Date, lookBackYears: number = 0): Date | null {\r\n return isValidDate(dateTime) ? new Date(dateTime.getFullYear() - lookBackYears, 0, 1) : null;\r\n}\r\n\r\n/**\r\n * Get the current UTC time\r\n * @returns {String} - the current utc datetime\r\n */\r\nexport function getUtcTime(): string {\r\n return new Date().toJSON();\r\n}\r\n\r\n/**\r\n * Get the current timestamp\r\n * @returns {number} - the timestamp since epoch in milliseconds\r\n */\r\nexport function getTimestamp(): number {\r\n // TODO: this method should not be here, as it depends on Web API performance\r\n if (window.performance && window.performance.now && window.performance.timing) {\r\n return window.performance.timing.navigationStart + window.performance.now();\r\n }\r\n\r\n return Date.now();\r\n}\r\n\r\ntype ComparisonDateRange = {\r\n start: Date,\r\n end: Date\r\n};\r\n\r\ntype DateRange = {\r\n start?: Date,\r\n end?: Date,\r\n key?: string,\r\n compared?: ComparisonDateRange | null\r\n};\r\n\r\n/**\r\n * Check if the given two date ranges equal\r\n * @param {Object} firstRange - The first input range\r\n * @param {Object} secondRange - The second input range\r\n * @returns {Boolean} - Two ranges equal\r\n */\r\nexport function dateRangeEquals(firstRange?: null | DateRange, secondRange?: null | DateRange): boolean {\r\n function convertForComparison(range: DateRange) {\r\n const dates = _.pick(range, 'start', 'end', 'key');\r\n\r\n if (range.compared) {\r\n _.extend(dates, {\r\n comparedStart: range.compared.start,\r\n comparedEnd: range.compared.end,\r\n });\r\n }\r\n return dates;\r\n }\r\n\r\n if (!firstRange || !secondRange) {\r\n return false;\r\n }\r\n\r\n return JSON.stringify(convertForComparison(firstRange))\r\n === JSON.stringify(convertForComparison(secondRange));\r\n}\r\n\r\ntype TimeZone = string;\r\ntype TimeZoneOption = TimeZone | null;\r\ntype DateMethodsOptions = { timeZone?: TimeZoneOption };\r\n\r\ntype I18nModel = {\r\n formatDate: (date: Date, options: DateMethodsOptions) => string,\r\n parseDate: (strDate: string, options: DateMethodsOptions) => Date | null,\r\n};\r\n\r\nexport function convertDateBetweenTimeZones(date: Date, i18n: I18nModel, {\r\n from,\r\n to,\r\n}: {\r\n from?: TimeZone | null,\r\n to?: TimeZone | null\r\n} = {}) {\r\n const dateString = i18n.formatDate(date, {\r\n timeZone: from,\r\n });\r\n\r\n return i18n.parseDate(dateString, {\r\n timeZone: to,\r\n });\r\n}\r\n\r\nexport function convertMachineDateToUTCDate(date: Date, i18n: any) {\r\n return convertDateBetweenTimeZones(date, i18n, { from: null, to: 'UTC' });\r\n}\r\n\r\nexport function convertUTCDateToMachineDate(date: Date, i18n: any) {\r\n return convertDateBetweenTimeZones(date, i18n, { from: 'UTC', to: null });\r\n}\r\n","/* eslint-env browser */\r\n// this file depends on Web API atob, Blob, File, it should not be in this project\r\nimport _ from 'underscore';\r\n\r\nexport function dataURItoBlob(dataURI: string) {\r\n const reg = /:(.+?);/;\r\n const arrs = dataURI.split(',');\r\n const header = _.first(arrs);\r\n const content = _.last(arrs);\r\n let type = 'image/png';\r\n\r\n const byteString = atob(content);\r\n const array = new Uint8Array(byteString.length);\r\n\r\n for (let i = 0; i < byteString.length; i += 1) {\r\n array[i] = byteString.charCodeAt(i);\r\n }\r\n if (reg.test(header)) {\r\n ({ 1: type } = header.match(reg));\r\n }\r\n return new Blob([array], { type });\r\n}\r\n\r\n/**\r\n * Convert image string to File object\r\n * @param {string} img image string to be convertImage2File\r\n * @param {string} name file name of image\r\n * @returns {File} File object\r\n */\r\nexport function convertImage2File(img: string, name: string): File {\r\n const blob = dataURItoBlob(img);\r\n const postfix = _.last(blob.type.split('/'));\r\n return new File([blob], `${name}.${postfix}`, { type: blob.type, lastModified: Date.now() });\r\n}\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\n\r\ntype WithLastPromiseOptions = {\r\n promiseFactory: (...args: any[]) => Promise,\r\n finish: (result?: T) => void,\r\n cancel?: () => void,\r\n fail?: (error: Error) => void\r\n};\r\n\r\n/**\r\n * This function returns a new \"guarded\" function. The guarded function behaves like this:\r\n * - everytime it is called it is going to call the promiseFactory function to\r\n * generate a new promise and remember it as the last promise;\r\n * - the guarded function returns a process handle object, which has the cancel function,\r\n * which can be used to ignore the results of the last promise, and, instead trigger\r\n * the cancel() callback;\r\n * - when the \"last promise\" finishes either finish or fail callback will be triggered,\r\n * depending on the outcome\r\n * of the last promise.\r\n * @param {Object} options - the options object\r\n * @param {Function} options.promiseFactory - the function that returns a new promise.\r\n * The factory will be called with the arguments passed to the guarded function.\r\n * @param {Function} options.finish - the function that will be called when the last\r\n * promise is resolved. The only argument to this function is the value the value from\r\n * the last promise.\r\n * @param {Function} options.fail - a function that is called when the last promise is\r\n * failed. The only\r\n * argument to this function is the error from the last promise.\r\n * @param {Function} options.cancel - a function that is called when the last promise is canceled.\r\n * No arguments are passed in. This function will be called not early than the next\r\n * scheduler iteration, after a call to process handle's cancel() function.\r\n * @returns {Function} - the \"guarded\" function. See description.\r\n */\r\nexport function withLastPromise(options: WithLastPromiseOptions): (...args: any[]) => { cancel: () => void } {\r\n const {\r\n promiseFactory, finish, cancel = _.noop, fail = _.noop,\r\n } = options;\r\n let lastPromise: Promise;\r\n let lastPromiseCanceled = false;\r\n\r\n const finishProcess = (error: Error | undefined, result?: T) => {\r\n if (lastPromiseCanceled) {\r\n cancel();\r\n } else if (error) {\r\n fail(error);\r\n } else {\r\n finish(result);\r\n }\r\n };\r\n\r\n const guardedFunction = (...factoryArgs: any[]) => {\r\n lastPromise = promiseFactory(...factoryArgs);\r\n lastPromiseCanceled = false;\r\n const processHandle = ((promise: Promise) => {\r\n promise.then((result) => {\r\n if (promise === lastPromise) {\r\n finishProcess(undefined, result);\r\n }\r\n\r\n // skipping the results, since a new promise has started since\r\n // or the last one was canceled\r\n }, (error) => {\r\n if (promise === lastPromise) {\r\n finishProcess(error);\r\n }\r\n\r\n // skipping the error, since a new promise has started since\r\n // or the last one was canceled\r\n });\r\n\r\n return {\r\n cancel() {\r\n lastPromiseCanceled = true;\r\n },\r\n };\r\n })(lastPromise);\r\n\r\n return processHandle;\r\n };\r\n\r\n return guardedFunction;\r\n}\r\n\r\nenum AsyncStatus {\r\n SUCCESS = 'SUCCESS',\r\n ERROR = 'ERROR',\r\n CANCELLED = 'CANCELLED',\r\n}\r\n\r\ntype Callbacks = {\r\n onSuccess?: (result: T) => void,\r\n onError?: (err: Error) => void,\r\n onCancel?: () => void,\r\n};\r\n\r\ntype PromiseChainItem = {\r\n resolve: (result: T) => Promise,\r\n reject: null | ((result: Error) => Promise)\r\n};\r\n\r\ntype Resolvable = R | PromiseLike;\r\n\r\ntype Options = {\r\n cancelCallback?: () => void,\r\n};\r\n\r\n/**\r\n * This function returns an async token, which allows the caller to cancel a promise.\r\n * The token behaves in the following way:\r\n * - The token is created using the function, however needs to be finalizes with .on().\r\n * - Only one of the callbacks will ever be called (onCancel, onSuccess, onError)\r\n * - If the token is cancelled, as long as the promise hasn't been resolved,\r\n * onCancel will be synchronously called and all references will be released.\r\n * @param {Object} promise - the promise\r\n * @param {Object} options - the options to create async token\r\n * @param {Function} options.cancelCallback\r\n * This callback is intended to be provided by a component that returns async token\r\n * from one of its interface method, and helps handle cancellation specific to the component\r\n * @returns {Object} asyncToken - the cancelable async token\r\n * @returns {Function} asyncToken.chain - (resolve, reject)\r\n * Allows the user to chain more async tasks,\r\n * similar to .then(resolve, reject), however will be cancelable by the token.\r\n * @returns {Function} asyncToken.on - ({onCancel, onSuccess, onError})\r\n * finalizes the token with three callbacks.\r\n * Only one will ever be called. If no onError function is submitted, it will re-throw any errors.\r\n * the last promise.\r\n * @returns {Function} asyncToken.cancel - if promise has resolved, will be a noop.\r\n * Otherwise will stop any more tasks or callbacks from being called,\r\n * and will synchronously call onCancel callback.\r\n */\r\nexport function createAsyncToken(promise: null | PromiseLike, options?: Options) {\r\n if (!promise) {\r\n throw new Error('promise is a required parameter');\r\n }\r\n\r\n // declare scoped variables\r\n let currentPromise: null | PromiseLike = promise;\r\n let promiseChain: PromiseChainItem[] = [];\r\n let callbacks: Callbacks | null = null;\r\n\r\n // Implement functions\r\n function queueNextWork() {\r\n (>currentPromise).then((result) => {\r\n finishProcess(AsyncStatus.SUCCESS, result);\r\n }, (error) => {\r\n finishProcess(AsyncStatus.ERROR, error);\r\n });\r\n }\r\n\r\n function dequeuePromise(status: AsyncStatus, result?: T | Error) {\r\n const { resolve, reject } = >promiseChain.shift();\r\n\r\n if (status === AsyncStatus.ERROR) {\r\n if (reject) {\r\n currentPromise = reject(result);\r\n } else {\r\n // if no reject function was provided, rerun finishProcess, don't call queueNextWork\r\n finishProcess(status, result);\r\n return;\r\n }\r\n } else {\r\n currentPromise = resolve(result);\r\n }\r\n\r\n queueNextWork();\r\n }\r\n\r\n function finishProcess(status: AsyncStatus, result?: T | Error) {\r\n if (callbacks == null) {\r\n // Noop\r\n return;\r\n }\r\n const {\r\n onSuccess = _.noop,\r\n onError = (err: Error) => { throw err; },\r\n onCancel = _.noop,\r\n } = callbacks;\r\n\r\n if (status === AsyncStatus.CANCELLED) {\r\n cleanup();\r\n onCancel();\r\n } else if (!_.isEmpty(promiseChain)) {\r\n dequeuePromise(status, result);\r\n } else if (status === AsyncStatus.ERROR) {\r\n cleanup();\r\n onError(result);\r\n } else {\r\n cleanup();\r\n onSuccess(result);\r\n }\r\n }\r\n\r\n function cleanup() {\r\n // cleanup all scoped references to unblock garbage collector\r\n callbacks = null;\r\n promiseChain = [];\r\n currentPromise = null;\r\n }\r\n\r\n const asyncToken = {\r\n chain(resolve: () => Resolvable, reject: null | (() => Resolvable) = null) {\r\n if (!_.isNull(callbacks)) {\r\n throw new Error('Cannot call .chain after calling .on');\r\n }\r\n\r\n // wrap callbacks to allow async\r\n promiseChain.push({\r\n resolve: Promise.method(resolve),\r\n reject: reject == null ? null : Promise.method(reject),\r\n });\r\n return asyncToken;\r\n },\r\n on({\r\n onSuccess,\r\n onError,\r\n onCancel,\r\n }: Callbacks) {\r\n if (!_.isNull(callbacks)) {\r\n throw new Error('Cannot call .on multiple times');\r\n }\r\n\r\n callbacks = {\r\n onSuccess,\r\n onError,\r\n onCancel,\r\n };\r\n\r\n // .on will finalize the token, begin work\r\n queueNextWork();\r\n return asyncToken;\r\n },\r\n cancel() {\r\n options?.cancelCallback?.();\r\n finishProcess(AsyncStatus.CANCELLED);\r\n return asyncToken;\r\n },\r\n };\r\n\r\n return asyncToken;\r\n}\r\n","/* eslint-disable no-bitwise */\r\n\r\nfunction numberToRgb(rgbInteger: number) {\r\n return {\r\n red: (rgbInteger & 0xff0000) >> 16,\r\n green: (rgbInteger & 0x00ff00) >> 8,\r\n blue: rgbInteger & 0x0000ff,\r\n };\r\n}\r\n\r\n/**\r\n * Converts an RGB color to its grayscale equivalent. Useful for determining if a color should be\r\n * contrasted against white or black.\r\n * @see {@link https://www.w3.org/TR/AERT/#color-contrast}\r\n * @param {Number} rgbInteger - Number that represents an RGB color, e.g. 15792383.\r\n * @returns {Number} Grayscale value of the number, e.g. 246.\r\n */\r\nexport function colorToGrayscale(rgbInteger: number): number {\r\n const rgb = numberToRgb(rgbInteger);\r\n\r\n // calculate grayscale value based on how humans perceive luminance in RBG\r\n return Math.round((0.299 * rgb.red) + (0.587 * rgb.green) + (0.114 * rgb.blue));\r\n}\r\n\r\n/**\r\n * Returns black if the grayscale equivalent of given color is <50% gray, otherwise returns white.\r\n * @param {Number} rgbInteger - Number that represents an RGB color, e.g. 15792383.\r\n * @returns {Number} Number that represents RGB black or RGB white.\r\n */\r\nexport function contrastColor(rgbInteger: number): number {\r\n const grayscale = colorToGrayscale(rgbInteger);\r\n\r\n return grayscale >= 256 / 2 ? 0 : 0xffffff;\r\n}\r\n\r\n/**\r\n * Convert a RGB hexadecimal color value into decimal.\r\n * @param {String} color - RGB 6-digit hexademical color, e.g. '#ff0000'\r\n * @returns {Number} Decimal representation, e.g. 16711680.\r\n */\r\nexport function toDec(color: string): number {\r\n return parseInt(color.substr(1), 16);\r\n}\r\n\r\n/**\r\n * Convert a decimal number into 6-digit hexademical.\r\n * @param {Number} color - Number value of an RGB color, e.g. 15792383\r\n * @returns {String} 6-digital hexademical representation, e.g. 'f0f9ff'\r\n */\r\nexport function toHex(color: number): string {\r\n return `000000${color.toString(16)}`.substr(-6);\r\n}\r\n","import _ from 'underscore';\r\n\r\nconst map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_+';\r\n\r\n/**\r\n * translate int to base-64 representation\r\n * @param {Number} integer None negative integer to translate\r\n * @returns {String} encoded base-64 string\r\n */\r\nexport function toStringBase64(integer: number): string {\r\n if (!_.isNumber(integer) || integer % 1 !== 0 || integer < 0) {\r\n throw new Error('unknown data type, none negative integer only');\r\n }\r\n\r\n if (integer === 0) {\r\n return map[0];\r\n }\r\n\r\n let result = '';\r\n let dividend = integer;\r\n\r\n while (dividend > 0) {\r\n const remainder = dividend % 64;\r\n\r\n result = map[remainder].concat(result);\r\n dividend = Math.floor(dividend / 64);\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n *\r\n * @param {String} code, string output of toStringBase64\r\n * @returns {Number} the original integer number\r\n */\r\nexport function parseIntBase64(code: string): number {\r\n let result = 0;\r\n let remain = code.slice();\r\n\r\n while (remain.length > 0) {\r\n result = (result * 64) + map.indexOf(remain[0]);\r\n remain = remain.slice(1);\r\n }\r\n\r\n return result;\r\n}\r\n","class Cache {\r\n max: number;\r\n\r\n lruTrigger: number;\r\n\r\n cache: Map;\r\n\r\n constructor(max: number = 200) {\r\n this.max = max;\r\n this.lruTrigger = max / 2;\r\n this.cache = new window.Map();\r\n }\r\n\r\n get(key: any) {\r\n const item = this.cache.get(key);\r\n if (this.cache.size > this.lruTrigger && item) {\r\n // refresh key\r\n this.cache.delete(key);\r\n this.cache.set(key, item);\r\n }\r\n return item;\r\n }\r\n\r\n set(key: any, val: any) {\r\n if (this.cache.size > this.lruTrigger) {\r\n // refresh key\r\n if (this.cache.has(key)) {\r\n this.cache.delete(key);\r\n } else if (this.cache.size === this.max) {\r\n this.cache.delete(this.first());\r\n }\r\n }\r\n this.cache.set(key, val);\r\n }\r\n\r\n first() {\r\n return this.cache.keys().next().value;\r\n }\r\n}\r\n\r\nfunction resolveFromCache(args: any[], index: number, cache: Cache, func:(...args: any[]) => any): any {\r\n const key = args[index];\r\n const result = cache.get(key);\r\n if (index >= args.length - 1) { // reached last of arg\r\n if (result && !(result instanceof Cache)) {\r\n return result; // found actual result\r\n }\r\n // no result found, save the result as new entry\r\n // eslint-disable-next-line prefer-spread\r\n const toCache = func.apply(undefined, args);\r\n cache.set(key, toCache);\r\n return toCache;\r\n }\r\n // not finished searching yet\r\n if (result instanceof Cache) {\r\n return resolveFromCache(args, index + 1, result, func); // found nested Map, go deeper\r\n }\r\n // create nested Cache with key and continue\r\n const nestedCache = new Cache();\r\n cache.set(key, nestedCache);\r\n return resolveFromCache(args, index + 1, nestedCache, func);\r\n}\r\n\r\nexport function memoize(func: (...args: any[]) => any) {\r\n const memoized = function (...args: any[]) {\r\n return resolveFromCache(args, 0, memoized.cache, func);\r\n };\r\n memoized.cache = new Cache();\r\n return memoized;\r\n}\r\n","export * from './src/observable';\r\nexport * from './src/call-observable';\r\n","import _ from 'underscore';\r\nimport { promisifyObservable } from './promisify-observable';\r\n\r\nclass SubscriptionObserver {\r\n constructor({\r\n start = _.noop,\r\n next = _.noop,\r\n error = _.noop,\r\n complete = _.noop,\r\n }, subscription) {\r\n this.next = next;\r\n this.error = error;\r\n this.complete = complete;\r\n start(subscription);\r\n this.subscription = subscription;\r\n }\r\n\r\n get closed() {\r\n return this.subscription.closed;\r\n }\r\n}\r\n\r\nclass Subscription {\r\n constructor(observer, subscriber) {\r\n this.observer = new SubscriptionObserver(observer, this);\r\n this.unsubscribeCallback = subscriber(this.observer) || _.noop;\r\n this.isClosed = false;\r\n }\r\n\r\n unsubscribe() {\r\n this.unsubscribeCallback();\r\n this.isClosed = true;\r\n }\r\n\r\n get closed() {\r\n return this.isClosed;\r\n }\r\n}\r\n\r\n/**\r\n * A minimum implementation of https://github.com/tc39/proposal-observable\r\n */\r\nexport class Observable {\r\n constructor(subscriber) {\r\n this.subscriber = subscriber;\r\n }\r\n\r\n subscribe(observer) {\r\n return new Subscription(observer, this.subscriber);\r\n }\r\n\r\n toPromise() {\r\n return promisifyObservable(this);\r\n }\r\n}\r\n","/* eslint-disable */\r\nimport Promise from 'bluebird';\r\n\r\nexport function promisifyObservable(observable) {\r\n return new Promise((resolve, reject) => {\r\n var subscription = observable.subscribe({\r\n next: (data) => {\r\n resolve(data);\r\n if (subscription) {\r\n subscription.unsubscribe();\r\n }\r\n },\r\n error: (err) => {\r\n reject(err);\r\n if (subscription) {\r\n subscription.unsubscribe();\r\n }\r\n },\r\n });\r\n });\r\n}\r\n","/**\r\n * This file is extracted from edm-odata for reuse.\r\n * Original path: private\\client-data\\packages\\edm-odata\\src\\server-call-cache-item.js\r\n */\r\nimport { noop } from 'underscore';\r\nimport { Observable } from './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\nexport class CallObservable 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"],"sourceRoot":""}