angular-ui-grid
Version:
A data grid for Angular
2 lines • 134 kB
JavaScript
/*! For license information please see ui-grid.core.min.js.LICENSE.txt */
(()=>{var e={5747:e=>{e.exports='<div\n class="ui-grid-filter-container"\n ng-style="col.extraStyle"\n ng-repeat="colFilter in col.filters"\n ng-class="{\'ui-grid-filter-cancel-button-hidden\' : colFilter.disableCancelFilterButton === true }">\n <div\n ng-if="colFilter.type !== \'select\'">\n <input\n type="text"\n class="ui-grid-filter-input ui-grid-filter-input-{{$index}}"\n ng-model="colFilter.term"\n ng-attr-placeholder="{{colFilter.placeholder || \'\'}}"\n aria-label="{{colFilter.ariaLabel || aria.defaultFilterLabel}}" />\n\n <div\n role="button"\n class="ui-grid-filter-button"\n ng-click="removeFilter(colFilter, $index)"\n ng-if="!colFilter.disableCancelFilterButton"\n ng-disabled="colFilter.term === undefined || colFilter.term === null || colFilter.term === \'\'"\n ng-show="colFilter.term !== undefined && colFilter.term !== null && colFilter.term !== \'\'">\n <i\n class="ui-grid-icon-cancel"\n ui-grid-one-bind-aria-label="aria.removeFilter">\n \n </i>\n </div>\n </div>\n\n <div\n ng-if="colFilter.type === \'select\'">\n <select\n class="ui-grid-filter-select ui-grid-filter-input-{{$index}}"\n ng-model="colFilter.term"\n ng-show="colFilter.selectOptions.length > 0"\n ng-attr-placeholder="{{colFilter.placeholder || aria.defaultFilterLabel}}"\n aria-label="{{colFilter.ariaLabel || \'\'}}"\n ng-options="option.value as option.label for option in colFilter.selectOptions">\n <option value=""></option>\n </select>\n\n <div\n role="button"\n class="ui-grid-filter-button-select"\n ng-click="removeFilter(colFilter, $index)"\n ng-if="!colFilter.disableCancelFilterButton"\n ng-disabled="colFilter.term === undefined || colFilter.term === null || colFilter.term === \'\'"\n ng-show="colFilter.term !== undefined && colFilter.term != null">\n <i\n class="ui-grid-icon-cancel"\n ui-grid-one-bind-aria-label="aria.removeFilter">\n \n </i>\n </div>\n </div>\n</div>\n'},2834:e=>{e.exports='<div\n class="ui-grid-footer-panel ui-grid-footer-aggregates-row"> \x3c!-- tfooter --\x3e\n <div\n class="ui-grid-footer ui-grid-footer-viewport">\n <div\n class="ui-grid-footer-canvas">\n <div\n class="ui-grid-footer-cell-wrapper"\n ng-style="colContainer.headerCellWrapperStyle()">\n <div\n role="row"\n class="ui-grid-footer-cell-row">\n <div\n ui-grid-footer-cell\n role="gridcell"\n ng-repeat="col in colContainer.renderedColumns track by col.uid"\n col="col"\n render-index="$index"\n class="ui-grid-footer-cell ui-grid-clearfix">\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'},5123:e=>{e.exports='<div class="ui-grid-footer-info ui-grid-grid-footer">\n <span>{{\'search.totalItems\' | t}} {{grid.rows.length}}</span>\n <span\n ng-if="grid.renderContainers.body.visibleRowCache.length !== grid.rows.length"\n class="ngLabel">\n ({{"search.showingItems" | t}} {{grid.renderContainers.body.visibleRowCache.length}})\n </span>\n</div>\n'},5847:e=>{e.exports='<div\n role="rowgroup"\n class="ui-grid-header"> \x3c!-- theader --\x3e\n <div\n class="ui-grid-top-panel">\n <div\n class="ui-grid-header-viewport">\n <div\n class="ui-grid-header-canvas">\n <div\n class="ui-grid-header-cell-wrapper"\n ng-style="colContainer.headerCellWrapperStyle()">\n <div\n role="row"\n class="ui-grid-header-cell-row">\n <div\n role="columnheader"\n class="ui-grid-header-cell ui-grid-clearfix"\n ng-repeat="col in colContainer.renderedColumns track by col.uid"\n ui-grid-header-cell\n col="col"\n render-index="$index">\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'},5195:e=>{e.exports='<div class="ui-grid-menu-button">\n <div role=\'button\'\n ui-grid-one-bind-id-grid="\'grid-menu\'"\n ui-grid-one-bind-aria-label="i18n.aria.buttonLabel"\n tabindex="0"\n class="ui-grid-icon-container"\n ng-click="toggleMenu()"\n ng-keydown="toggleOnKeydown($event)"\n aria-expanded="{{shown}}"\n aria-haspopup="true">\n <i class="ui-grid-icon-menu"\n ui-grid-one-bind-aria-label="i18n.aria.buttonLabel"> </i>\n </div>\n <div ui-grid-menu menu-items="menuItems"></div>\n</div>\n'},4095:e=>{e.exports='<li role="menuitem">\n\t<div\n\t\tclass="ui-grid-menu-item"\n\t\trole="heading"\n\t\taria-level="2"\n\t\tng-show="itemShown()">\n\t\t<i aria-hidden=\'true\'>\n\t\t\t \n\t\t</i>\n\t\t<span ng-bind="label()"></span>\n\t</div>\n</li>'},2056:e=>{e.exports='<div class="ui-grid-top-panel">\n</div>'},5004:e=>{e.exports=" <div\n ng-repeat=\"(colRenderIndex, col) in colContainer.renderedColumns track by col.uid\"\n ui-grid-one-bind-id-grid=\"rowRenderIndex + '-' + col.uid + '-cell'\"\n class=\"ui-grid-cell\"\n ng-class=\"{ 'ui-grid-row-header-cell': col.isRowHeader }\"\n role=\"{{col.isRowHeader ? 'rowheader' : 'gridcell'}}\"\n ui-grid-cell>\n</div>\n"},2194:e=>{e.exports='<div ui-i18n="en" class="ui-grid">\n \x3c!-- TODO (c0bra): add "scoped" attr here, eventually? --\x3e\n <style ui-grid-style>\n .grid{{ grid.id }} {\n /* Styles for the grid */\n }\n\n .grid{{ grid.id }} .ui-grid-row, .grid{{ grid.id }} .ui-grid-cell, .grid{{ grid.id }} .ui-grid-cell .ui-grid-vertical-bar {\n height: {{ grid.options.rowHeight }}px;\n }\n\n .grid{{ grid.id }} .ui-grid-row:last-child .ui-grid-cell {\n border-bottom-width: {{ (((grid.getVisibleRowCount() * grid.options.rowHeight) < grid.getViewportHeight()) && \'1\') || \'0\' }}px;\n }\n\n {{ grid.verticalScrollbarStyles }}\n {{ grid.horizontalScrollbarStyles }}\n\n /*\n .ui-grid[dir=rtl] .ui-grid-viewport {\n padding-left: {{ grid.verticalScrollbarWidth }}px;\n }\n */\n\n {{ grid.customStyles }}\n </style>\n\n <div class="ui-grid-contents-wrapper" role="grid">\n <div ui-grid-menu-button ng-if="grid.options.enableGridMenu"></div>\n\n <div ng-if="grid.hasLeftContainer()" style="width: 0" ui-grid-pinned-container="\'left\'"></div>\n\n <div ui-grid-render-container\n container-id="\'body\'"\n col-container-name="\'body\'"\n row-container-name="\'body\'"\n bind-scroll-horizontal="true"\n bind-scroll-vertical="true"\n enable-horizontal-scrollbar="grid.options.enableHorizontalScrollbar"\n enable-vertical-scrollbar="grid.options.enableVerticalScrollbar">\n </div>\n\n <div ng-if="grid.hasRightContainer()" style="width: 0" ui-grid-pinned-container="\'right\'"></div>\n\n\n <div ui-grid-grid-footer ng-if="grid.options.showGridFooter"></div>\n\n <div ui-grid-column-menu ng-if="grid.options.enableColumnMenus"></div>\n\n <div ng-transclude></div>\n </div>\n</div>\n'},5352:e=>{e.exports='<div\n class="ui-grid-cell-contents"\n title="TOOLTIP">\n {{COL_FIELD CUSTOM_FILTERS}}\n</div>\n'},8350:e=>{e.exports='<div class="ui-grid-column-menu">\n <div ui-grid-menu menu-items="menuItems" col="col">\n \x3c!-- <div class="ui-grid-column-menu">\n <div class="inner" ng-show="menuShown">\n <ul>\n <div ng-show="grid.options.enableSorting">\n <li ng-click="sortColumn($event, asc)" ng-class="{ \'selected\' : col.sort.direction == asc }"><i class="ui-grid-icon-sort-alt-up"></i> Sort Ascending</li>\n <li ng-click="sortColumn($event, desc)" ng-class="{ \'selected\' : col.sort.direction == desc }"><i class="ui-grid-icon-sort-alt-down"></i> Sort Descending</li>\n <li ng-show="col.sort.direction" ng-click="unsortColumn()"><i class="ui-grid-icon-cancel"></i> Remove Sort</li>\n </div>\n </ul>\n </div>\n </div> --\x3e\n </div>\n</div>'},4358:e=>{e.exports='<div\n class="ui-grid-cell-contents"\n col-index="renderIndex">\n <div>\n {{ col.getAggregationText() + ( col.getAggregationValue() CUSTOM_FILTERS ) }}\n </div>\n</div>\n'},6715:e=>{e.exports='<div\n role="columnheader"\n ng-class="{ \'sortable\': sortable, \'ui-grid-header-cell-last-col\': isLastCol }"\n ui-grid-one-bind-aria-labelledby-grid="col.uid + \'-header-text \' + col.uid + \'-sortdir-text\'"\n aria-sort="{{col.sort.direction == asc ? \'ascending\' : ( col.sort.direction == desc ? \'descending\' : (!col.sort.direction ? \'none\' : \'other\'))}}">\n <div\n role="button"\n tabindex="0"\n ng-keydown="handleKeyDown($event)"\n class="ui-grid-cell-contents ui-grid-header-cell-primary-focus"\n col-index="renderIndex"\n title="TOOLTIP">\n <span class="ui-grid-header-cell-label" ui-grid-one-bind-id-grid="col.uid + \'-header-text\'">{{ col.displayName CUSTOM_FILTERS }}</span>\n\n <span\n ui-grid-one-bind-id-grid="col.uid + \'-sortdir-text\'"\n ui-grid-visible="col.sort.direction"\n aria-label="{{getSortDirectionAriaLabel()}}">\n <i\n ng-class="{ \'ui-grid-icon-up-dir\': col.sort.direction == asc, \'ui-grid-icon-down-dir\': col.sort.direction == desc, \'ui-grid-icon-blank\': !col.sort.direction }"\n title="{{isSortPriorityVisible() ? i18n.headerCell.priority + \' \' + ( col.sort.priority + 1 ) : null}}"\n aria-hidden="true">\n </i>\n <sub\n ui-grid-visible="isSortPriorityVisible()"\n class="ui-grid-sort-priority-number">\n {{col.sort.priority + 1}}\n </sub>\n </span>\n </div>\n\n <div\n role="button"\n tabindex="0"\n ui-grid-one-bind-id-grid="col.uid + \'-menu-button\'"\n class="ui-grid-column-menu-button"\n ng-if="grid.options.enableColumnMenus && !col.isRowHeader && col.colDef.enableColumnMenu !== false"\n ng-click="toggleMenu($event)"\n ng-keydown="headerCellArrowKeyDown($event)"\n ui-grid-one-bind-aria-label="i18n.headerCell.aria.columnMenuButtonLabel"\n aria-expanded="{{col.menuShown}}"\n aria-haspopup="true">\n <i\n class="ui-grid-icon-angle-down"\n aria-hidden="true">\n \n </i>\n </div>\n\n <div ui-grid-filter ng-hide="col.filterContainer === \'columnMenu\'"></div>\n</div>\n'},5760:e=>{e.exports='<div\n class="ui-grid-menu"\n ng-keydown="checkKeyDown($event)"\n ng-show="shown">\n <style ui-grid-style>\n {{dynamicStyles}}\n </style>\n <div\n class="ui-grid-menu-mid"\n ng-show="shownMid">\n <div\n class="ui-grid-menu-inner"\n ng-if="shown">\n <ul\n role="menu"\n class="ui-grid-menu-items">\n <li\n ng-repeat="item in menuItems"\n role="menuitem"\n ui-grid-menu-item\n ui-grid-one-bind-id="\'menuitem-\'+$index"\n action="item.action"\n name="item.title"\n active="item.active"\n icon="item.icon"\n shown="item.shown"\n context="item.context"\n template-url="item.templateUrl"\n leave-open="item.leaveOpen"\n screen-reader-only="item.screenReaderOnly">\n </li>\n <li ng-if="col.filterable && col.filterContainer === \'columnMenu\'">\n <div ui-grid-filter></div>\n </li>\n </ul>\n </div>\n </div>\n</div>\n'},9e3:e=>{e.exports='<button\n type="button"\n class="ui-grid-menu-item"\n ng-click="itemAction($event, title)"\n ng-show="itemShown()"\n ng-class="{ \'ui-grid-menu-item-active\': active(), \'ui-grid-sr-only\': (!focus && screenReaderOnly) }"\n aria-pressed="{{active()}}"\n tabindex="0"\n ng-focus="focus=true"\n ng-blur="focus=false">\n <i\n ng-class="icon"\n aria-hidden=\'true\'>\n \n </i>\n {{ label() }}\n</button>\n'},2043:e=>{e.exports="<div\n role=\"presentation\"\n ui-grid-one-bind-id-grid=\"containerId + '-grid-container'\"\n class=\"ui-grid-render-container\"\n ng-style=\"{ 'margin-left': colContainer.getMargin('left') + 'px', 'margin-right': colContainer.getMargin('right') + 'px' }\">\n \x3c!-- All of these dom elements are replaced in place --\x3e\n <div ui-grid-header></div>\n <div ui-grid-viewport></div>\n <div\n ng-if=\"colContainer.needsHScrollbarPlaceholder()\"\n class=\"ui-grid-scrollbar-placeholder\"\n ng-style=\"{height: colContainer.grid.scrollbarHeight + 'px'}\">\n </div>\n <ui-grid-footer\n ng-if=\"grid.options.showColumnFooter\">\n </ui-grid-footer>\n</div>\n"},7451:e=>{e.exports='<div\n role="rowgroup"\n class="ui-grid-viewport"\n ng-style="colContainer.getViewportStyle()">\x3c!-- tbody --\x3e\n <div\n class="ui-grid-canvas">\n <div\n ng-repeat="(rowRenderIndex, row) in rowContainer.renderedRows track by $index"\n class="ui-grid-row"\n ng-style="Viewport.rowStyle(rowRenderIndex)">\n <div\n role="row"\n ui-grid-row="row"\n row-render-index="rowRenderIndex">\n </div>\n </div>\n </div>\n</div>\n'},7194:()=>{!function(){"use strict";angular.module("ui.grid.i18n",[]),angular.module("ui.grid",["ui.grid.i18n"])}()},975:()=>{!function(){"use strict";angular.module("ui.grid").constant("uiGridConstants",{LOG_DEBUG_MESSAGES:!0,LOG_WARN_MESSAGES:!0,LOG_ERROR_MESSAGES:!0,CUSTOM_FILTERS:/CUSTOM_FILTERS/g,COL_FIELD:/COL_FIELD/g,MODEL_COL_FIELD:/MODEL_COL_FIELD/g,TOOLTIP:/title=\"TOOLTIP\"/g,DISPLAY_CELL_TEMPLATE:/DISPLAY_CELL_TEMPLATE/g,TEMPLATE_REGEXP:/<.+>/,FUNC_REGEXP:/(\([^)]*\))?$/,DOT_REGEXP:/\./g,APOS_REGEXP:/'/g,BRACKET_REGEXP:/^(.*)((?:\s*\[\s*\d+\s*\]\s*)|(?:\s*\[\s*"(?:[^"\\]|\\.)*"\s*\]\s*)|(?:\s*\[\s*'(?:[^'\\]|\\.)*'\s*\]\s*))(.*)$/,COL_CLASS_PREFIX:"ui-grid-col",ENTITY_BINDING:"$$this",events:{GRID_SCROLL:"uiGridScroll",COLUMN_MENU_SHOWN:"uiGridColMenuShown",ITEM_DRAGGING:"uiGridItemDragStart",COLUMN_HEADER_CLICK:"uiGridColumnHeaderClick"},keymap:{TAB:9,STRG:17,CAPSLOCK:20,CTRL:17,CTRLRIGHT:18,CTRLR:18,SHIFT:16,RETURN:13,ENTER:13,BACKSPACE:8,BCKSP:8,ALT:18,ALTR:17,ALTRIGHT:17,SPACE:32,WIN:91,MAC:91,FN:null,PG_UP:33,PG_DOWN:34,UP:38,DOWN:40,LEFT:37,RIGHT:39,ESC:27,DEL:46,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123},ASC:"asc",DESC:"desc",filter:{STARTS_WITH:2,ENDS_WITH:4,EXACT:8,CONTAINS:16,GREATER_THAN:32,GREATER_THAN_OR_EQUAL:64,LESS_THAN:128,LESS_THAN_OR_EQUAL:256,NOT_EQUAL:512,SELECT:"select",INPUT:"input"},aggregationTypes:{sum:2,count:4,avg:8,min:16,max:32},CURRENCY_SYMBOLS:["¤","؋","Ar","Ƀ","฿","B/.","Br","Bs.","Bs.F.","GH₵","¢","c","Ch.","₡","C$","D","ден","دج",".د.ب","د.ع","JD","د.ك","ل.د","дин","د.ت","د.م.","د.إ","Db","$","₫","Esc","€","ƒ","Ft","FBu","FCFA","CFA","Fr","FRw","G","gr","₲","h","₴","₭","Kč","kr","kn","MK","ZK","Kz","K","L","Le","лв","E","lp","M","KM","MT","₥","Nfk","₦","Nu.","UM","T$","MOP$","₱","Pt.","£","ج.م.","LL","LS","P","Q","q","R","R$","ر.ع.","ر.ق","ر.س","៛","RM","p","Rf.","₹","₨","SRe","Rp","₪","Ksh","Sh.So.","USh","S/","SDR","сом","৳\t","WS$","₮","VT","₩","¥","zł"],scrollDirection:{UP:"up",DOWN:"down",LEFT:"left",RIGHT:"right",NONE:"none"},dataChange:{ALL:"all",EDIT:"edit",ROW:"row",COLUMN:"column",OPTIONS:"options"},scrollbars:{NEVER:0,ALWAYS:1,WHEN_NEEDED:2}})}()},2905:()=>{angular.module("ui.grid").directive("uiGridCell",["$compile","$parse","gridUtil","uiGridConstants",function(e,t,r,n){return{priority:0,scope:!1,require:"?^uiGrid",compile:function(){return{pre:function(t,i,o,l){if(l&&t.col.compiledElementFn)(0,t.col.compiledElementFn)(t,(function(e,t){i.append(e)}));else if(l&&!t.col.compiledElementFn)t.col.getCompiledElementFn().then((function(e){e(t,(function(e,t){i.append(e)}))})).catch(angular.noop);else{var a=t.col.cellTemplate.replace(n.MODEL_COL_FIELD,"row.entity."+r.preEval(t.col.field)).replace(n.COL_FIELD,"grid.getCellValue(row, col)"),s=e(a)(t);i.append(s)}},post:function(e,t){var r,i=e.col.getColClass(!1);function o(n){var i=t;r&&(i.removeClass(r),r=null),r=angular.isFunction(e.col.cellClass)?e.col.cellClass(e.grid,e.row,e.col,e.rowRenderIndex,e.colRenderIndex):e.col.cellClass,i.addClass(r)}t.addClass(i),e.col.cellClass&&o();var l=e.grid.registerDataChangeCallback(o,[n.dataChange.COLUMN,n.dataChange.EDIT]);var a=e.$watch("row",(function(n,l){if(n!==l){(r||e.col.cellClass)&&o();var a=e.col.getColClass(!1);a!==i&&(t.removeClass(i),t.addClass(a),i=a)}}));function s(){l(),a()}e.$on("$destroy",s),t.on("$destroy",s)}}}}}])},7662:()=>{angular.module("ui.grid").service("uiGridColumnMenuService",["i18nService","uiGridConstants","gridUtil",function(e,t,r){var n={initialize:function(e,t){e.grid=t.grid,t.columnMenuScope=e,e.menuShown=!1},setColMenuItemWatch:function(e){var t=e.$watch("col.menuItems",(function(t){void 0!==t&&t&&angular.isArray(t)?(t.forEach((function(t){void 0!==t.context&&t.context||(t.context={}),t.context.col=e.col})),e.menuItems=e.defaultMenuItems.concat(t)):e.menuItems=e.defaultMenuItems}));e.$on("$destroy",t)},getGridOption:function(e,t){return void 0!==e.grid&&e.grid&&e.grid.options&&e.grid.options[t]},sortable:function(e){return Boolean(this.getGridOption(e,"enableSorting")&&void 0!==e.col&&e.col&&e.col.enableSorting)},isActiveSort:function(e,t){return Boolean(void 0!==e.col&&void 0!==e.col.sort&&void 0!==e.col.sort.direction&&e.col.sort.direction===t)},suppressRemoveSort:function(e){return Boolean(e.col&&e.col.suppressRemoveSort)},hideable:function(e){return Boolean(this.getGridOption(e,"enableHiding")&&void 0!==e.col&&e.col&&(e.col.colDef&&!1!==e.col.colDef.enableHiding||!e.col.colDef)||!this.getGridOption(e,"enableHiding")&&e.col&&e.col.colDef&&e.col.colDef.enableHiding)},getDefaultMenuItems:function(r){return[{title:function(){return e.getSafeText("sort.ascending")},icon:"ui-grid-icon-sort-alt-up",action:function(e){e.stopPropagation(),r.sortColumn(e,t.ASC)},shown:function(){return n.sortable(r)},active:function(){return n.isActiveSort(r,t.ASC)}},{title:function(){return e.getSafeText("sort.descending")},icon:"ui-grid-icon-sort-alt-down",action:function(e){e.stopPropagation(),r.sortColumn(e,t.DESC)},shown:function(){return n.sortable(r)},active:function(){return n.isActiveSort(r,t.DESC)}},{title:function(){return e.getSafeText("sort.remove")},icon:"ui-grid-icon-cancel",action:function(e){e.stopPropagation(),r.unsortColumn()},shown:function(){return n.sortable(r)&&void 0!==r.col&&void 0!==r.col.sort&&void 0!==r.col.sort.direction&&null!==r.col.sort.direction&&!n.suppressRemoveSort(r)}},{title:function(){return e.getSafeText("column.hide")},icon:"ui-grid-icon-cancel",shown:function(){return n.hideable(r)},action:function(e){e.stopPropagation(),r.hideColumn()}}]},getColumnElementPosition:function(e,t,n){var i={};return i.left=n[0].offsetLeft,i.top=n[0].offsetTop,i.parentLeft=n[0].offsetParent.offsetLeft,i.offset=0,t.grid.options.offsetLeft&&(i.offset=t.grid.options.offsetLeft),i.height=r.elementHeight(n,!0),i.width=r.elementWidth(n,!0),i},repositionMenu:function(e,t,n,i,o){var l=i[0].querySelectorAll(".ui-grid-menu"),a=r.closestElm(o,".ui-grid-render-container"),s=a.getBoundingClientRect().left-e.grid.element[0].getBoundingClientRect().left,u=a.querySelectorAll(".ui-grid-viewport")[0].scrollLeft,c=r.elementWidth(l,!0),d=t.lastMenuPaddingRight?t.lastMenuPaddingRight:e.lastMenuPaddingRight?e.lastMenuPaddingRight:10;0!==l.length&&0!==l[0].querySelectorAll(".ui-grid-menu-mid").length&&(d=parseInt(r.getStyles(angular.element(l)[0]).paddingRight,10),e.lastMenuPaddingRight=d,t.lastMenuPaddingRight=d);var g=n.left+s-u+n.parentLeft+n.width+d;g<n.offset+c&&(g=Math.max(n.left-u+n.parentLeft-d+c,n.offset+c)),i.css("left",g+"px"),i.css("top",n.top+n.height+"px")}};return n}]).directive("uiGridColumnMenu",["$timeout","gridUtil","uiGridConstants","uiGridColumnMenuService","$document",function(e,t,r,n,i){return{priority:0,scope:!0,require:"^uiGrid",templateUrl:"ui-grid/uiGridColumnMenu",replace:!0,link:function(o,l,a,s){function u(e){o.col&&(o.col.menuShown=e)}n.initialize(o,s),o.defaultMenuItems=n.getDefaultMenuItems(o),o.menuItems=o.defaultMenuItems,n.setColMenuItemWatch(o),o.showMenu=function(e,t,r){u(!1),o.col=e,u(!0);var i=n.getColumnElementPosition(o,e,t);o.menuShown?(o.colElement=t,o.colElementPosition=i,o.hideThenShow=!0,o.$broadcast("hide-menu",{originalEvent:r})):(o.menuShown=!0,o.colElement=t,o.colElementPosition=i,o.$broadcast("show-menu",{originalEvent:r}))},o.hideMenu=function(e){o.menuShown=!1,u(!1),e||o.$broadcast("hide-menu")},o.$on("menu-hidden",(function(){var e=angular.element(l[0].querySelector(".ui-grid-menu-items"))[0];l[0].removeAttribute("style"),o.hideThenShow?(delete o.hideThenShow,o.$broadcast("show-menu"),o.menuShown=!0):(o.hideMenu(!0),o.col&&o.col.visible&&t.focus.bySelector(i,".ui-grid-header-cell."+o.col.getColClass()+" .ui-grid-column-menu-button",o.col.grid,!1).catch(angular.noop)),e&&(e.onkeydown=null,angular.forEach(e.children,(function(e){e.onkeydown=null})))})),o.$on("menu-shown",(function(){e((function(){n.repositionMenu(o,o.col,o.colElementPosition,l,o.colElement),o.menuItems.some((function(e){return e.shown()}))&&t.focus.bySelector(i,".ui-grid-menu-items .ui-grid-menu-item:not(.ng-hide)",!0).catch(angular.noop),delete o.colElementPosition,delete o.columnElement,function(){var e,t=angular.element(l[0].querySelector(".ui-grid-menu-items"))[0],n=[];function i(e,t,i,o){e.keyCode===r.keymap.TAB&&(t?e.preventDefault():i&&(e.preventDefault(),n[o].focus()))}t&&(t.onkeydown=function(e){e.keyCode===r.keymap.ESC&&(e.preventDefault(),o.hideMenu())},e=t.querySelectorAll(".ui-grid-menu-item:not(.ng-hide)"),angular.forEach(e,(function(e){null!==e.offsetParent&&this.push(e)}),n),n.length&&(1===n.length?n[0].onkeydown=function(e){i(e,!0)}:(n[0].onkeydown=function(e){i(e,!1,e.shiftKey,n.length-1)},n[n.length-1].onkeydown=function(e){i(e,!1,!e.shiftKey,0)})))}()}))})),o.sortColumn=function(e,t){e.stopPropagation(),o.grid.sortColumn(o.col,t,!0).then((function(){o.grid.refresh(),o.hideMenu()})).catch(angular.noop)},o.unsortColumn=function(){o.col.unsort(),o.grid.refresh(),o.hideMenu()},o.hideColumn=function(){o.col.colDef.visible=!1,o.col.visible=!1,o.grid.queueGridRefresh(),o.hideMenu(),o.grid.api.core.notifyDataChange(r.dataChange.COLUMN),o.grid.api.core.raise.columnVisibilityChanged(o.col),e((function(){var e,r,n=function(){return t.focus.byId("grid-menu",o.grid)};if(o.grid.columns.some((function(t,r){if(angular.equals(t,o.col))return e=r,!0})),o.grid.columns.some((function(t,n){if(!t.visible)return!1;if(n<e)r=t;else{if(n>e&&!r)return r=t,!0;if(n>e&&r)return!0}})),r){var l=r.getColClass();t.focus.bySelector(i,".ui-grid-header-cell."+l+" .ui-grid-header-cell-primary-focus",!0).then(angular.noop,(function(e){if("canceled"!==e)return n()})).catch(angular.noop)}else n()}))}},controller:["$scope",function(e){var t=this;e.$watch("menuItems",(function(e){t.menuItems=e}))}]}}])},6425:()=>{!function(){"use strict";angular.module("ui.grid").directive("uiGridFilter",["$compile","$templateCache","i18nService","gridUtil",function(e,t,r,n){return{compile:function(){return{pre:function(t,r){t.col.updateFilters=function(n){if(r.children().remove(),n){var i=t.col.filterHeaderTemplate;void 0===i&&""!==t.col.providedFilterHeaderTemplate?t.col.filterHeaderTemplatePromise&&t.col.filterHeaderTemplatePromise.then((function(){i=t.col.filterHeaderTemplate,r.append(e(i)(t))})):r.append(e(i)(t))}},t.$on("$destroy",(function(){delete t.col.filterable,delete t.col.updateFilters}))},post:function(e,t){e.aria=r.getSafeText("headerCell.aria"),e.removeFilter=function(e,r){e.term=null,n.focus.bySelector(t,".ui-grid-filter-input-"+r)}}}}}}])}()},5690:()=>{!function(){"use strict";angular.module("ui.grid").directive("uiGridFooterCell",["$timeout","gridUtil","uiGridConstants","$compile",function(e,t,r,n){return{priority:0,scope:{col:"=",row:"=",renderIndex:"="},replace:!0,require:"^uiGrid",compile:function(){return{pre:function(e,t){var r=e.col.footerCellTemplate;void 0===r&&""!==e.col.providedFooterCellTemplate?e.col.footerCellTemplatePromise&&e.col.footerCellTemplatePromise.then((function(){r=e.col.footerCellTemplate,t.append(n(r)(e))})):t.append(n(r)(e))},post:function(e,t,n,i){e.grid=i.grid;var o,l=e.col.getColClass(!1);t.addClass(l);var a=function(){var r=t;o&&(r.removeClass(o),o=null),o=angular.isFunction(e.col.footerCellClass)?e.col.footerCellClass(e.grid,e.row,e.col,e.rowRenderIndex,e.colRenderIndex):e.col.footerCellClass,r.addClass(o)};e.col.footerCellClass&&a(),e.col.updateAggregationValue();var s=e.grid.registerDataChangeCallback(a,[r.dataChange.COLUMN]);e.grid.api.core.on.rowsRendered(e,e.col.updateAggregationValue),e.grid.api.core.on.rowsRendered(e,a),e.$on("$destroy",s)}}}}}])}()},317:()=>{!function(){"use strict";angular.module("ui.grid").directive("uiGridFooter",["$templateCache","$compile","uiGridConstants","gridUtil","$timeout",function(e,t,r,n,i){return{restrict:"EA",replace:!0,require:["^uiGrid","^uiGridRenderContainer"],scope:!0,compile:function(e,r){return{pre:function(e,r,i,o){var l=o[0],a=o[1];e.grid=l.grid,e.colContainer=a.colContainer,a.footer=r;var s=e.grid.options.footerTemplate;n.getTemplate(s).then((function(n){var i=angular.element(n),o=t(i)(e);if(r.append(o),a){var l=r[0].getElementsByClassName("ui-grid-footer-viewport")[0];l&&(a.footerViewport=l)}})).catch(angular.noop)},post:function(e,t,r,i){var o=i[0],l=i[1];o.grid;n.disableAnimations(t),l.footer=t;var a=t[0].getElementsByClassName("ui-grid-footer-viewport")[0];a&&(l.footerViewport=a)}}}}}])}()},7769:()=>{!function(){"use strict";angular.module("ui.grid").directive("uiGridGridFooter",["$templateCache","$compile","uiGridConstants","gridUtil",function(e,t,r,n){return{restrict:"EA",replace:!0,require:"^uiGrid",scope:!0,compile:function(){return{pre:function(e,r,i,o){e.grid=o.grid;var l=e.grid.options.gridFooterTemplate;n.getTemplate(l).then((function(n){var i=angular.element(n),o=t(i)(e);r.append(o)})).catch(angular.noop)}}}}}])}()},4971:()=>{!function(){"use strict";angular.module("ui.grid").directive("uiGridHeaderCell",["$compile","$timeout","$window","$document","gridUtil","uiGridConstants","ScrollEvent","i18nService","$rootScope",function(e,t,r,n,i,o,l,a,s){return{priority:0,scope:{col:"=",row:"=",renderIndex:"="},require:["^uiGrid","^uiGridRenderContainer"],replace:!0,compile:function(){return{pre:function(t,r){var n=t.col.headerCellTemplate;void 0===n&&""!==t.col.providedHeaderCellTemplate?t.col.headerCellTemplatePromise&&t.col.headerCellTemplatePromise.then((function(){n=t.col.headerCellTemplate,r.append(e(n)(t))})):r.append(e(n)(t))},post:function(e,r,i,l){var u=l[0],c=l[1];e.i18n={headerCell:a.getSafeText("headerCell"),sort:a.getSafeText("sort")},e.isSortPriorityVisible=function(){return e.col&&e.col.sort&&angular.isNumber(e.col.sort.priority)&&e.grid.columns.some((function(t,r){return angular.isNumber(t.sort.priority)&&t!==e.col}))},e.getSortDirectionAriaLabel=function(){var t=e.col,r=t.sort&&t.sort.direction===o.ASC?e.i18n.sort.ascending:t.sort&&t.sort.direction===o.DESC?e.i18n.sort.descending:e.i18n.sort.none;return e.isSortPriorityVisible()&&(r=r+". "+e.i18n.headerCell.priority+" "+(t.sort.priority+1)),r},e.grid=u.grid,e.renderContainer=u.grid.renderContainers[c.containerId];var d=e.col.getColClass(!1);r.addClass(d),e.menuShown=!1,e.col.menuShown=!1,e.asc=o.ASC,e.desc=o.DESC;var g,h,p=angular.element(r[0].querySelectorAll(".ui-grid-cell-contents")),f=[];e.downFn=function(i){i.stopPropagation(),void 0!==i.originalEvent&&void 0!==i.originalEvent&&(i=i.originalEvent),i.button&&0!==i.button||(h=i.pageX,e.mousedownStartTime=(new Date).getTime(),e.mousedownTimeout=t((function(){}),500),e.mousedownTimeout.then((function(){e.colMenu&&u.columnMenuScope.showMenu(e.col,r,i)})).catch(angular.noop),u.fireEvent(o.events.COLUMN_HEADER_CLICK,{event:i,columnName:e.col.colDef.name}),e.offAllEvents(),"touchstart"===i.type?(n.on("touchend",e.upFn),n.on("touchmove",e.moveFn)):"mousedown"===i.type&&(n.on("mouseup",e.upFn),n.on("mousemove",e.moveFn)))},e.upFn=function(r){r.stopPropagation(),t.cancel(e.mousedownTimeout),e.offAllEvents(),e.onDownEvents(r.type),(new Date).getTime()-e.mousedownStartTime>500||e.sortable&&e.handleClick(r)},e.handleKeyDown=function(t){32!==t.keyCode&&13!==t.keyCode||(t.preventDefault(),e.handleClick(t))},e.moveFn=function(r){0!==r.pageX-h&&(t.cancel(e.mousedownTimeout),e.offAllEvents(),e.onDownEvents(r.type))},e.clickFn=function(t){t.stopPropagation(),p.off("click",e.clickFn)},e.offAllEvents=function(){p.off("touchstart",e.downFn),p.off("mousedown",e.downFn),n.off("touchend",e.upFn),n.off("mouseup",e.upFn),n.off("touchmove",e.moveFn),n.off("mousemove",e.moveFn),p.off("click",e.clickFn)},e.onDownEvents=function(r){switch(r){case"touchmove":case"touchend":p.on("click",e.clickFn),p.on("touchstart",e.downFn),t((function(){p.on("mousedown",e.downFn)}),500);break;case"mousemove":case"mouseup":p.on("click",e.clickFn),p.on("mousedown",e.downFn),t((function(){p.on("touchstart",e.downFn)}),500);break;default:p.on("click",e.clickFn),p.on("touchstart",e.downFn),p.on("mousedown",e.downFn)}};var m=function(t){t&&(void 0!==e.col.updateFilters&&e.col.updateFilters(e.col.filterable),e.col.filterable?(e.col.filters.forEach((function(t,r){f.push(e.$watch("col.filters["+r+"].term",(function(t,r){t!==r&&(u.grid.api.core.raise.filterChanged(e.col),u.grid.api.core.notifyDataChange(o.dataChange.COLUMN),u.grid.queueGridRefresh())})))})),e.$on("$destroy",(function(){f.forEach((function(e){e()}))}))):f.forEach((function(e){e()})))},v=function(){var t=r;g&&(t.removeClass(g),g=null),g=angular.isFunction(e.col.headerCellClass)?e.col.headerCellClass(e.grid,e.row,e.col,e.rowRenderIndex,e.colRenderIndex):e.col.headerCellClass,t.addClass(g),e.$applyAsync((function(){var t=e.grid.renderContainers.right&&e.grid.renderContainers.right.visibleColumnCache.length?e.grid.renderContainers.right:e.grid.renderContainers.body;e.isLastCol=u.grid.options&&u.grid.options.enableGridMenu&&e.col===t.visibleColumnCache[t.visibleColumnCache.length-1]})),e.sortable=Boolean(e.col.enableSorting);var n=e.col.filterable;e.col.filterable=Boolean(u.grid.options.enableFiltering&&e.col.enableFiltering),m(n!==e.col.filterable),e.colMenu=e.col.grid.options&&!1!==e.col.grid.options.enableColumnMenus&&e.col.colDef&&!1!==e.col.colDef.enableColumnMenu,e.offAllEvents(),(e.sortable||e.colMenu)&&(e.onDownEvents(),e.$on("$destroy",(function(){e.offAllEvents()})))};v(),"columnMenu"===e.col.filterContainer&&e.col.filterable&&s.$on("menu-shown",(function(){e.$applyAsync((function(){m(e.col.filterable)}))}));var C=e.grid.registerDataChangeCallback(v,[o.dataChange.COLUMN]);e.$on("$destroy",C),e.handleClick=function(t){u.grid.sortColumn(e.col,t.shiftKey).then((function(){u.columnMenuScope&&u.columnMenuScope.hideMenu(),u.grid.refresh()})).catch(angular.noop)},e.headerCellArrowKeyDown=function(t){t.keyCode!==o.keymap.SPACE&&t.keyCode!==o.keymap.ENTER||(t.preventDefault(),e.toggleMenu(t))},e.toggleMenu=function(t){t.stopPropagation(),u.columnMenuScope.menuShown&&u.columnMenuScope.col===e.col?u.columnMenuScope.hideMenu():u.columnMenuScope.showMenu(e.col,r)}}}}}}])}()},944:()=>{!function(){"use strict";angular.module("ui.grid").directive("uiGridHeader",["$templateCache","$compile","uiGridConstants","gridUtil","$timeout","ScrollEvent",function(e,t,r,n,i,o){return{restrict:"EA",replace:!0,require:["^uiGrid","^uiGridRenderContainer"],scope:!0,compile:function(){return{pre:function(e,r,i,l){var a,s=l[0],u=l[1];function c(){u.header=u.colContainer.header=r;var e=r[0].getElementsByClassName("ui-grid-header-canvas");e.length>0?u.headerCanvas=u.colContainer.headerCanvas=e[0]:u.headerCanvas=null}function d(){if(!s.grid.isScrollingHorizontally){var e=n.normalizeScrollLeft(u.headerViewport,s.grid),t=u.colContainer.scrollHorizontal(e),r=new o(s.grid,null,u.colContainer,o.Sources.ViewPortScroll);r.newScrollLeft=e,t>-1&&(r.x={percentage:t}),s.grid.scrollContainers(null,r)}}e.grid=s.grid,e.colContainer=u.colContainer,c(),a=e.grid.options.showHeader?e.grid.options.headerTemplate?e.grid.options.headerTemplate:"ui-grid/ui-grid-header":"ui-grid/ui-grid-no-header",n.getTemplate(a).then((function(n){var i=angular.element(n),o=t(i)(e);if(r.replaceWith(o),r=o,c(),u){var l=r[0].getElementsByClassName("ui-grid-header-viewport")[0];l&&(u.headerViewport=l,angular.element(l).on("scroll",d),e.$on("$destroy",(function(){angular.element(l).off("scroll",d)})))}e.grid.queueRefresh()})).catch(angular.noop)},post:function(e,t,r,i){var o=i[0],l=i[1];o.grid;n.disableAnimations(t),l.header=t;var a=t[0].getElementsByClassName("ui-grid-header-viewport")[0];a&&(l.headerViewport=a),o&&o.grid.registerStyleComputation({priority:15,func:function(){var e=l.colContainer.visibleColumnCache,t="",r=0;return e.forEach((function(e){t+=e.getColClassDefinition(),r+=e.drawnWidth})),l.colContainer.canvasWidth=r,t}})}}}}}])}()},9761:()=>{angular.module("ui.grid").service("uiGridGridMenuService",["gridUtil","i18nService","uiGridConstants",function(e,t,r){var n={initialize:function(e,t){t.gridMenuScope=e,e.grid=t,e.registeredMenuItems=[],e.$on("$destroy",(function(){e.grid&&e.grid.gridMenuScope&&(e.grid.gridMenuScope=null),e.grid&&(e.grid=null),e.registeredMenuItems&&(e.registeredMenuItems=null)})),e.registeredMenuItems=[],t.api.registerMethod("core","addToGridMenu",n.addToGridMenu),t.api.registerMethod("core","removeFromGridMenu",n.removeFromGridMenu)},addToGridMenu:function(t,r){angular.isArray(r)?t.gridMenuScope?(t.gridMenuScope.registeredMenuItems=t.gridMenuScope.registeredMenuItems?t.gridMenuScope.registeredMenuItems:[],t.gridMenuScope.registeredMenuItems=t.gridMenuScope.registeredMenuItems.concat(r)):e.logError("Asked to addToGridMenu, but gridMenuScope not present. Timing issue? Please log issue with ui-grid"):e.logError("addToGridMenu: menuItems must be an array, and is not, not adding any items")},removeFromGridMenu:function(t,r){var n=-1;t&&t.gridMenuScope&&t.gridMenuScope.registeredMenuItems.forEach((function(t,i){t.id===r&&(n>-1?e.logError("removeFromGridMenu: found multiple items with the same id, removing only the last"):n=i)})),n>-1&&t.gridMenuScope.registeredMenuItems.splice(n,1)},getMenuItems:function(r){var i=[];r.grid.options.gridMenuCustomItems&&(angular.isArray(r.grid.options.gridMenuCustomItems)?i=i.concat(r.grid.options.gridMenuCustomItems):e.logError("gridOptions.gridMenuCustomItems must be an array, and is not"));var o=[{title:t.getSafeText("gridMenu.clearAllFilters"),action:function(e){r.grid.clearAllFilters()},shown:function(){return r.grid.options.enableFiltering},order:100}];return i=(i=i.concat(o)).concat(r.registeredMenuItems),!1!==r.grid.options.gridMenuShowHideColumns&&(i=i.concat(n.showHideColumns(r))),i.sort((function(e,t){return e.order-t.order})),i},showHideColumns:function(e){var r=[];if(!e.grid.options.columnDefs||0===e.grid.options.columnDefs.length||0===e.grid.columns.length)return r;function i(e){return function(e){return!0===e.visible||void 0===e.visible}(e)?"ui-grid-icon-ok":"ui-grid-icon-cancel"}return e.grid.options.gridMenuTitleFilter=e.grid.options.gridMenuTitleFilter?e.grid.options.gridMenuTitleFilter:function(e){return e},e.grid.options.columnDefs.forEach((function(t,o){if(!1!==e.grid.options.enableHiding&&!1!==t.enableHiding||t.enableHiding){var l={icon:i(t),action:function(e){e.stopPropagation(),n.toggleColumnVisibility(this.context.gridCol),e.target&&e.target.firstChild&&("I"===angular.element(e.target)[0].nodeName?e.target.className=i(this.context.gridCol.colDef):e.target.firstChild.className=i(this.context.gridCol.colDef))},shown:function(){return!1!==this.context.gridCol.colDef.enableHiding},context:{gridCol:e.grid.getColumn(t.name||t.field)},leaveOpen:!0,order:301+o};n.setMenuItemTitle(l,t,e.grid),r.push(l)}})),r.length&&r.unshift({title:t.getSafeText("gridMenu.columns"),order:300,templateUrl:"ui-grid/ui-grid-menu-header-item"}),r},setMenuItemTitle:function(t,r,n){var i=n.options.gridMenuTitleFilter(r.displayName||e.readableColumnName(r.name)||r.field);"string"==typeof i?t.title=i:i.then?(t.title="",i.then((function(e){t.title=e}),(function(e){t.title=e})).catch(angular.noop)):(e.logError("Expected gridMenuTitleFilter to return a string or a promise, it has returned neither, bad config"),t.title="badconfig")},toggleColumnVisibility:function(e){e.colDef.visible=!(!0===e.colDef.visible||void 0===e.colDef.visible),e.grid.refresh(),e.grid.api.core.notifyDataChange(r.dataChange.COLUMN),e.grid.api.core.raise.columnVisibilityChanged(e)}};return n}]).directive("uiGridMenuButton",["gridUtil","uiGridConstants","uiGridGridMenuService","i18nService",function(e,t,r,n){return{priority:0,scope:!0,require:["^uiGrid"],templateUrl:"ui-grid/ui-grid-menu-button",replace:!0,link:function(i,o,l,a){var s=a[0];i.i18n={aria:n.getSafeText("gridMenu.aria")},r.initialize(i,s.grid),i.shown=!1,i.toggleOnKeydown=function(e){(e.keyCode===t.keymap.ENTER||e.keyCode===t.keymap.SPACE||e.keyCode===t.keymap.ESC&&i.shown)&&i.toggleMenu()},i.toggleMenu=function(){i.shown?(i.$broadcast("hide-menu"),i.shown=!1):(i.menuItems=r.getMenuItems(i),i.$broadcast("show-menu"),i.shown=!0)},i.$on("menu-hidden",(function(){i.shown=!1,e.focus.bySelector(o,".ui-grid-icon-container")}))}}}])},1117:()=>{angular.module("ui.grid").directive("uiGridMenu",["$compile","$timeout","$window","$document","gridUtil","uiGridConstants","i18nService",function(e,t,r,n,i,o,l){return{priority:0,scope:{menuItems:"=",autoHide:"=?",col:"=?"},require:"?^uiGrid",templateUrl:"ui-grid/uiGridMenu",replace:!1,link:function(n,a,s,u){if(n.dynamicStyles="",u&&u.grid&&u.grid.options&&u.grid.options.gridMenuTemplate){var c=u.grid.options.gridMenuTemplate;i.getTemplate(c).then((function(t){var r=angular.element(t),i=e(r)(n);a.replaceWith(i)})).catch(angular.noop)}var d=function(e){var t=e-u.grid.headerHeight-20;n.dynamicStyles=[".grid"+u.grid.id+" .ui-grid-menu-mid {","max-height: "+t+"px;","}"].join(" ")};u&&(d(u.grid.gridHeight),u.grid.api.core.on.gridDimensionChanged(n,(function(e,t,r,n){d(r)}))),n.i18n={close:l.getSafeText("columnMenu.close")},n.showMenu=function(e,r){n.shown?n.shownMid||(n.shownMid=!0,n.$emit("menu-shown")):(n.shown=!0,t((function(){n.shownMid=!0,n.$emit("menu-shown")})));var i="click";r&&r.originalEvent&&r.originalEvent.type&&"touchstart"===r.originalEvent.type&&(i=r.originalEvent.type),angular.element(document).off("click touchstart",g),t((function(){angular.element(document).on(i,g)}))},n.hideMenu=function(e){n.shown&&(n.shownMid=!1,t((function(){n.shownMid||(n.shown=!1,n.$emit("menu-hidden"))}),40)),angular.element(document).off("click touchstart",g)},n.$on("hide-menu",(function(e,t){n.hideMenu(e,t)})),n.$on("show-menu",(function(e,t){n.showMenu(e,t)}));var g=function(e){if(n.shown){var t=u&&u.grid&&u.grid.options?u.grid.options.disableGridMenuHideOnScroll:null;if("scroll"!==e.type||!t){if(n.col&&"columnMenu"===n.col.filterContainer){var r=document.querySelector(".ui-grid-column-menu").querySelector("[ui-grid-filter]");if(r&&r.contains(e.target))return!1}n.$apply((function(){n.hideMenu()}))}}};n.checkKeyDown=function(e){var t=function(t){t.focus(),e.preventDefault()};if(e.keyCode===o.keymap.ESC)n.hideMenu();else if(e.keyCode===o.keymap.TAB){var r,i,l=a[0].querySelectorAll("button:not(.ng-hide)");l.length>0&&(r=l[0],i=l[l.length-1],e.target.parentElement.id!==i.parentElement.id||e.shiftKey?e.target.parentElement.id===r.parentElement.id&&e.shiftKey&&t(i):t(r))}},void 0!==n.autoHide&&void 0!==n.autoHide||(n.autoHide=!0),n.autoHide&&angular.element(r).on("resize",g),n.$on("$destroy",(function(){angular.element(r).off("resize",g),angular.element(document).off("click touchstart",g)})),u&&n.$on("$destroy",u.grid.api.core.on.scrollBegin(n,g)),n.$on("$destroy",n.$on(o.events.ITEM_DRAGGING,g))}}}]).directive("uiGridMenuItem",["gridUtil","$compile","i18nService",function(e,t,r){return{priority:0,scope:{name:"=",active:"=",action:"=",icon:"=",shown:"=",context:"=",templateUrl:"=",leaveOpen:"=",screenReaderOnly:"="},require:["?^uiGrid"],templateUrl:"ui-grid/uiGridMenuItem",replace:!1,compile:function(){return{pre:function(r,n){r.templateUrl&&e.getTemplate(r.templateUrl).then((function(e){var i=angular.element(e),o=t(i)(r);n.replaceWith(o)})).catch(angular.noop)},post:function(t,n,i,o){var l=o[0];void 0!==t.shown&&null!==t.shown||(t.shown=function(){return!0}),t.itemShown=function(){var e={};return t.context&&(e.context=t.context),void 0!==l&&l&&(e.grid=l.grid),t.shown.call(e)},t.itemAction=function(r,n){if(r.stopPropagation(),"function"==typeof t.action){var i={};if(t.context&&(i.context=t.context),void 0!==l&&l&&(i.grid=l.grid),t.action.call(i,r,n),t.leaveOpen){var o=r.target.parentElement;"I"===angular.element(r.target)[0].nodeName&&(o=o.parentElement),e.focus.bySelector(o,"button[type=button]",!0)}else t.$emit("hide-menu")}},t.label=function(){var e=t.name;return"function"==typeof t.name&&(e=t.name.call()),e},t.i18n=r.get()}}}}}])},5039:()=>{!function(){"use strict";var e=angular.module("ui.grid");angular.forEach([{tag:"Src",method:"attr"},{tag:"Text",method:"text"},{tag:"Href",method:"attr"},{tag:"Class",method:"addClass"},{tag:"Html",method:"html"},{tag:"Alt",method:"attr"},{tag:"Style",method:"css"},{tag:"Value",method:"attr"},{tag:"Id",method:"attr"},{tag:"Id",directiveName:"IdGrid",method:"attr",appendGridId:!0},{tag:"Title",method:"attr"},{tag:"Label",method:"attr",aria:!0},{tag:"Labelledby",method:"attr",aria:!0},{tag:"Labelledby",directiveName:"LabelledbyGrid",appendGridId:!0,method:"attr",aria:!0},{tag:"Describedby",method:"attr",aria:!0},{tag:"Describedby",directiveName:"DescribedbyGrid",appendGridId:!0,method:"attr",aria:!0}],(function(t){var r="uiGridOneBind",n=(t.aria?"uiGridOneBindAria":r)+(t.directiveName?t.directiveName:t.tag);e.directive(n,["gridUtil",function(e){return{restrict:"A",require:["?uiGrid","?^uiGrid"],link:function(r,i,o,l){var a=r.$watch(o[n],(function(o){if(o){if(t.appendGridId){var s=null;angular.forEach(o.split(" "),(function(t){s=(s?s+" ":"")+function(t){var i;if(r.grid)i=r.grid;else if(r.col&&r.col.grid)i=r.col.grid;else if(!l.some((function(e){if(e&&e.grid)return i=e.grid,!0})))throw e.logError("["+n+"] A valid grid could not be found to bind id. Are you using this directive within the correct scope? Trying to generate id: [gridID]-"+t),new Error("No valid grid could be found");return i&&(new RegExp(i.id.toString()).test(t)||(t=i.id.toString()+"-"+t)),t}(t)})),o=s}switch(t.method){case"attr":t.aria?i[t.method]("aria-"+t.tag.toLowerCase(),o):i[t.method](t.tag.toLowerCase(),o);break;case"addClass":if(angular.isObject(o)&&!angular.isArray(o)){var u=[],c=!1;if(angular.forEach(o,(function(e,t){null!=e&&(c=!0,e&&u.push(t))})),!c)return;o=u}if(!o)return;i.addClass(angular.isArray(o)?o.join(" "):o);break;default:i[t.method](o)}a()}}),!0)}}}])}))}()},9076:()=>{!function(){"use strict";var e=angular.module("ui.grid");e.directive("uiGridRenderContainer",["$timeout","$document","uiGridConstants","gridUtil","ScrollEvent",function(e,t,r,n,i){return{replace:!0,transclude:!0,templateUrl:"ui-grid/uiGridRenderContainer",require:["^uiGrid","uiGridRenderContainer"],scope:{containerId:"=",rowContainerName:"=",colContainerName:"=",bindScrollHorizontal:"=",bindScrollVertical:"=",enableVerticalScrollbar:"=",enableHorizontalScrollbar:"="},controller:"uiGridRenderContainer as RenderContainer",compile:function(){return{pre:function(e,t,r,n){var i,o,l=n[0],a=n[1],s=e.grid=l.grid;if(!e.rowContainerName)throw new Error("No row render container name specified");if(!e.colContainerName)throw new Error("No column render container name specified");if(!s.renderContainers[e.rowContainerName])throw new Error('Row render container "'+e.rowContainerName+'" is not registered.');if(!s.renderContainers[e.colContainerName])throw new Error('Column render container "'+e.colContainerName+'" is not registered.');i=e.rowContainer=s.renderContainers[e.rowContainerName],o=e.colContainer=s.renderContainers[e.colContainerName],a.containerId=e.containerId,a.rowContainer=i,a.colContainer=o},post:function(e,t,r,o){var l=o[0],a=o[1],s=l.grid,u=a.rowContainer,c=a.colContainer,d=null,g=null,h=s.renderContainers[e.containerId];t.addClass("ui-grid-render-container-"+e.containerId),n.on.mousewheel(t,(function(e){var t=new i(s,u,c,i.Sources.RenderContainerMouseWheel);if(0!==e.deltaY){var r=-1*e.deltaY*e.deltaFactor;d=a.viewport[0].scrollTop,t.verticalScrollLength=u.getVerticalScrollLength();var o=(d+r)/t.verticalScrollLength;o>=1&&d<t.verticalScrollLength&&(a.viewport[0].scrollTop=t.verticalScrollLength),o<0?o=0:o>1&&(o=1),t.y={percentage:o,pixels:r}}if(0!==e.deltaX){var l=e.deltaX*e.deltaFactor;g=n.normalizeScrollLeft(a.viewport,s),t.horizontalScrollLength=c.getCanvasWidth()-c.getViewportWidth();var h=(g+l)/t.horizontalScrollLength;h<0?h=0:h>1&&(h=1),t.x={percentage:h,pixels:l}}0!==e.deltaY&&(t.atTop(d)||t.atBottom(d))||0!==e.deltaX&&(t.atLeft(g)||t.atRight(g))||(e.preventDefault(),e.stopPropagation(),t.fireThrottledScrollingEvent("",t))})),t.bind("$destroy",(function(){t.unbind("keydown"),["touchstart","touchmove","touchend","keydown","wheel","mousewheel","DomMouseScroll","MozMousePixelScroll"].forEach((function(e){t.unbind(e)}))})),l.grid.registerStyleComputation({priority:6,func:function(){var t,r,n="",i=c.canvasWidth,o=c.getViewportWidth(),a=u.getCanvasHeight(),d=u.getViewportHeight();if(c.needsHScrollbarPlaceholder()&&(d-=s.scrollbarHeight),t=r=c.getHeaderViewportWidth(),n+="\n .grid"+l.grid.id+" .ui-grid-render-container-"+e.containerId+" .ui-grid-canvas { width: "+i+"px; height: "+a+"px; }",n+="\n .grid"+l.grid.id+" .ui-grid-render-container-"+e.containerId+" .ui-grid-header-canvas { width: "+(i+s.scrollbarWidth)+"px; }",h.explicitHeaderCanvasHeight){var g=document.querySelector(".grid"+l.grid.id+" .ui-grid-render-container-body .ui-grid-header-canvas");g&&(h.explicitHeaderCanvasHeight=g.offsetHeight),n+="\n .grid"+l.grid.id+" .ui-grid-render-container-"+e.containerId+" .ui-grid-header-canvas { height: "+h.explicitHeaderCanvasHeight+"px; }"}else n+="\n .grid"+l.grid.id+" .ui-grid-render-container-"+e.containerId+" .ui-grid-header-canvas { height: inherit; }";return n+="\n .grid"+l.grid.id+" .ui-grid-render-container-"+e.containerId+" .ui-grid-viewport { width: "+o+"px; height: "+d+"px; }",n+="\n .grid"+l.grid.id+" .ui-grid-render-container-"+e.containerId+" .ui-grid-header-viewport { width: "+t+"px; }",n+="\n .grid"+l.grid.id+" .ui-grid-render-container-"+e.containerId+" .ui-grid-footer-canvas { width: "+(i+s.scrollbarWidth)+"px; }",n+="\n .grid"+l.grid.id+" .ui-grid-render-container-"+e.containerId+" .ui-grid-footer-viewport { width: "+r+"px; }"}})}}}}}]),e.controller("uiGridRenderContainer",["$scope","gridUtil",function(e,t){}])}()},3573:()=>{!function(){"use strict";angular.module("ui.grid").directive("uiGridRow",(function(){return{replace:!0,require:["^uiGrid","^uiGridRenderContainer"],scope:{row:"=uiGridRow",rowRenderIndex:"="},compile:function(){return{pre:function(e,t,r,n){var i,o,l=n[0],a=n[1];function s(){e.row.getRowTemplateFn.then((function(r){var n=e.$new();r(n,(function(e,r){i&&(i.remove(),o.$destroy()),t.empty().append(e),i=e,o=n}))})).catch(angular.noop)}e.grid=l.grid,e.colContainer=a.colContainer,s(),e.$watch("row.getRowTemplateFn",(function(e,t){e!==t&&s()}))},post:function(e,t){e.row.element=t}}}}}))}()},8037:()=>{angular.module("ui.grid").directive("uiGridStyle",["gridUtil","$interpolate",function(e,t){return{link:function(e,r){var n=t(r.text(),!0);n&&e.$watch(n,(function(e){for(var t=0;t<r.length;t++)r[t].textContent=e}))}}}])},9957:()=>{!function(){"use strict";angular.module("ui.grid").directive("uiGridViewport",["gridUtil","ScrollEvent",function(e,t){return{replace:!0,scope:{},controllerAs:"Viewport",templateUrl:"ui-grid/uiGridViewport",require:["^uiGrid","^uiGridRenderContainer"],link:function(r,n,i,o){var l=o[0],a=o[1];r.containerCtrl=a;var s=a.rowContainer,u=a.colContainer,c=l.grid;r.grid=l.grid,r.rowContainer=a.rowContainer,r.colContainer=a.colContainer,a.viewport=n,c&&c.options&&c.options.customScroller?c.options.customScroller(n,d):n.on("scroll",d);function d(){var i=n[0].scrollTop,o=e.normalizeScrollLeft(n,c),l=s.scrollVertical(i),a=u.scrollHorizontal(o),d=new t(c,s,u,t.Sources.ViewPortScroll);d.newScrollLeft=o,d.newScrollTop=i,a>-1&&(d.x={percentage:a}),l>-1&&(d.y={percentage:l}),c.scrollContainers(r.$parent.containerId,d)}r.$parent.bindScrollVertical&&c.addVerticalScrollSync(r.$parent.containerId,(function(e){a.prevScrollArgs=e,n[0].scrollTop=e.getNewScrollTop(s,a.viewport)})),r.$parent.bindScrollHorizontal&&(c.addHorizontalScrollSync(r.$parent.containerId,(function(t){a.prevScrollArgs=t;var r=t.getNewScrollLeft(u,a.viewport);n[0].scrollLeft=e.denormalizeScrollLeft(a.viewport,r,c)})),c.addHorizontalScrollSync(r.$parent.containerId+"header",(function(t){var r=t.getNewScrollLeft(u,a.viewport);a.headerViewport&&(a.headerViewport.scrollLeft=e.denormalizeScrollLeft(a.viewport,r,c))})),c.addHorizontalScrollSync(r.$parent.containerId+"footer",(function(t){var r=t.getNewScrollLeft(u,a.viewport);a.footerViewport&&(a.footerViewport.scrollLeft=e.denormalizeScrollLeft(a.viewport,r,c))}))),r.$on("$destroy",(function(){n.off()}))},controller:["$scope",function(e){this.rowStyle=function(){var t=e.rowContainer,r=e.colContainer,n={};if(0!==t.currentTopRow){var i="translateY("+t.currentTopRow*t.grid.options.rowHeight+"px)";n.transform=i,n["-webkit-transform"]=i,n["-ms-transform"]=i}return 0!==r.currentFirstColumn&&(r.grid.isRTL()?n["margin-right"]=r.columnOffset+"px":n["margin-left"]=r.columnOffset+"px"),n}}]}}])}()},6087:()=>{angular.module("ui.grid").directive("uiGridVisible",(function(){return function(e,t,r){e.$watch(r.uiGridVisible,(function(e){t[e?"removeClass":"addClass"]("ui-grid-invisible")}))}}))},7071:()=>{!function(){"use strict";function e(e,t,r){return{templateUrl:"ui-grid/ui-grid",scope:{uiGrid:"="},replace:!0,transclude:!0,controller:"uiGridController",compile:function(){return{po