diff --git a/bower.json b/bower.json index e08ab48..916f50c 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-table-bundle", "description": "Simple table with sorting and filtering on AngularJS", - "version": "3.0.1", + "version": "4.0.0", "main": [ "ng-table.js", "ng-table.css" diff --git a/ng-table.js b/ng-table.js index bc2b6e7..73b3aae 100644 --- a/ng-table.js +++ b/ng-table.js @@ -43,10 +43,10 @@ return /******/ (function(modules) { // webpackBootstrap /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ -/******/ // identity function for calling harmory imports with the correct context +/******/ // identity function for calling harmony imports with the correct context /******/ __webpack_require__.i = function(value) { return value; }; /******/ -/******/ // define getter function for harmory exports +/******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { @@ -73,7 +73,7 @@ return /******/ (function(modules) { // webpackBootstrap /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 51); +/******/ return __webpack_require__(__webpack_require__.s = 44); /******/ }) /************************************************************************/ /******/ ([ @@ -89,2563 +89,2719 @@ module.exports = __WEBPACK_EXTERNAL_MODULE_0__; /***/ }, /* 1 */ -/* unknown exports provided */ -/* all exports used */ +/* exports provided: ngTableCoreModule, Settings, NgTableEventsChannel, ParamValues, NgTableParams, DataSettings, NgTableDefaultGetDataProvider, FilterSettings, GroupSettings */ +/* exports used: NgTableParams, ngTableCoreModule, Settings, NgTableEventsChannel, ParamValues, DataSettings, NgTableDefaultGetDataProvider, FilterSettings, GroupSettings */ /*!***************************!*\ !*** ./src/core/index.ts ***! \***************************/ /***/ function(module, exports, __webpack_require__) { "use strict"; -"use strict"; -function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} -var angular = __webpack_require__(/*! angular */ 0); -var data_1 = __webpack_require__(/*! ./data */ 3); -var grouping_1 = __webpack_require__(/*! ./grouping */ 37); -var ngTableDefaults_1 = __webpack_require__(/*! ./ngTableDefaults */ 7); -var ngTableSettings_1 = __webpack_require__(/*! ./ngTableSettings */ 10); -var ngTableParams_1 = __webpack_require__(/*! ./ngTableParams */ 9); -var ngTableEventsChannel_1 = __webpack_require__(/*! ./ngTableEventsChannel */ 8); -var ngTableCoreModule = angular.module('ngTable-core', []) - .provider('ngTableDefaultGetData', data_1.NgTableDefaultGetDataProvider) - .factory('ngTableDefaultGetGroups', grouping_1.ngTableDefaultGetGroups) - .value('ngTableDefaults', ngTableDefaults_1.ngTableDefaults) - .service('ngTableEventsChannel', ngTableEventsChannel_1.NgTableEventsChannel) - .service('ngTableSettings', ngTableSettings_1.NgTableSettings) - .run(ngTableParams_1.NgTableParams.init); -exports.ngTableCoreModule = ngTableCoreModule; -// note: if you are using ES6 or typescript prefer: -// import { NgTableParams } from 'ng-table'; -ngTableCoreModule.value('NgTableParams', ngTableParams_1.NgTableParams); -var ngTableDefaults_2 = __webpack_require__(/*! ./ngTableDefaults */ 7); -exports.IDefaults = ngTableDefaults_2.IDefaults; -__export(__webpack_require__(/*! ./ngTableEventsChannel */ 8)); -var ngTableSettings_2 = __webpack_require__(/*! ./ngTableSettings */ 10); -exports.ISettings = ngTableSettings_2.ISettings; -__export(__webpack_require__(/*! ./ngTableParams */ 9)); -__export(__webpack_require__(/*! ./data */ 3)); -__export(__webpack_require__(/*! ./filtering */ 36)); -__export(__webpack_require__(/*! ./grouping/publicExports */ 39)); -__export(__webpack_require__(/*! ./paging */ 40)); -__export(__webpack_require__(/*! ./sorting */ 41)); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(/*! angular */ 0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__data__ = __webpack_require__(/*! ./data */ 3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__grouping__ = __webpack_require__(/*! ./grouping */ 8); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__ngTableDefaults__ = __webpack_require__(/*! ./ngTableDefaults */ 32); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__ngTableSettings__ = __webpack_require__(/*! ./ngTableSettings */ 11); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__ngTableParams__ = __webpack_require__(/*! ./ngTableParams */ 10); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__ngTableEventsChannel__ = __webpack_require__(/*! ./ngTableEventsChannel */ 9); +/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, "d", function() { return __WEBPACK_IMPORTED_MODULE_6__ngTableEventsChannel__["a"]; }); +/* harmony reexport (binding) */ __webpack_require__.d(exports, "c", function() { return __WEBPACK_IMPORTED_MODULE_4__ngTableSettings__["a"]; }); +/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, "a", function() { return __WEBPACK_IMPORTED_MODULE_5__ngTableParams__["a"]; }); +/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, "e", function() { return __WEBPACK_IMPORTED_MODULE_5__ngTableParams__["b"]; }); +/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, "f", function() { return __WEBPACK_IMPORTED_MODULE_1__data__["a"]; }); +/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, "g", function() { return __WEBPACK_IMPORTED_MODULE_1__data__["b"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__filtering__ = __webpack_require__(/*! ./filtering */ 6); +/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, "h", function() { return __WEBPACK_IMPORTED_MODULE_7__filtering__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__grouping_publicExports__ = __webpack_require__(/*! ./grouping/publicExports */ 31); +/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, "i", function() { return __WEBPACK_IMPORTED_MODULE_8__grouping_publicExports__["a"]; }); +/* harmony export (binding) */ __webpack_require__.d(exports, "b", function() { return ngTableCoreModule; }); + + + + + + + +var ngTableCoreModule = __WEBPACK_IMPORTED_MODULE_0_angular__["module"]('ngTable-core', []) + .provider('ngTableDefaultGetData', __WEBPACK_IMPORTED_MODULE_1__data__["b" /* NgTableDefaultGetDataProvider */]) + .factory('ngTableDefaultGetGroups', __WEBPACK_IMPORTED_MODULE_2__grouping__["b" /* ngTableDefaultGetGroups */]) + .value('ngTableDefaults', __WEBPACK_IMPORTED_MODULE_3__ngTableDefaults__["a" /* ngTableDefaults */]) + .service('ngTableEventsChannel', __WEBPACK_IMPORTED_MODULE_6__ngTableEventsChannel__["a" /* NgTableEventsChannel */]) + .run(__WEBPACK_IMPORTED_MODULE_4__ngTableSettings__["a" /* Settings */].init) + .run(__WEBPACK_IMPORTED_MODULE_5__ngTableParams__["a" /* NgTableParams */].init); +// note: if you are using ES6 or typescript prefer: +// import { NgTableParams } from 'ng-table'; +ngTableCoreModule.value('NgTableParams', __WEBPACK_IMPORTED_MODULE_5__ngTableParams__["a" /* NgTableParams */]); + + + + + + + /***/ }, /* 2 */ -/* unknown exports provided */ -/* all exports used */ +/* exports provided: NgTableController, ngTableBrowserModule, FilterConfigValues, NgTableFilterConfigProvider, NgTableFilterConfig */ +/* exports used: ngTableBrowserModule, NgTableController, FilterConfigValues, NgTableFilterConfigProvider, NgTableFilterConfig */ /*!******************************!*\ !*** ./src/browser/index.ts ***! \******************************/ /***/ function(module, exports, __webpack_require__) { "use strict"; -"use strict"; -function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} -var angular = __webpack_require__(/*! angular */ 0); -var ngTable_directive_1 = __webpack_require__(/*! ./ngTable.directive */ 13); -var ngTableColumn_1 = __webpack_require__(/*! ./ngTableColumn */ 14); -var ngTableColumnsBinding_directive_1 = __webpack_require__(/*! ./ngTableColumnsBinding.directive */ 15); -var ngTableController_1 = __webpack_require__(/*! ./ngTableController */ 16); -exports.NgTableController = ngTableController_1.NgTableController; -var ngTableDynamic_directive_1 = __webpack_require__(/*! ./ngTableDynamic.directive */ 17); -var ngTableFilterConfig_1 = __webpack_require__(/*! ./ngTableFilterConfig */ 18); -exports.NgTableFilterConfigProvider = ngTableFilterConfig_1.NgTableFilterConfigProvider; -exports.NgTableFilterConfig = ngTableFilterConfig_1.NgTableFilterConfig; -var ngTableFilterRow_directive_1 = __webpack_require__(/*! ./ngTableFilterRow.directive */ 19); -var ngTableFilterRowController_1 = __webpack_require__(/*! ./ngTableFilterRowController */ 20); -var ngTableGroupRow_directive_1 = __webpack_require__(/*! ./ngTableGroupRow.directive */ 21); -var ngTableGroupRowController_1 = __webpack_require__(/*! ./ngTableGroupRowController */ 22); -var ngTablePagination_directive_1 = __webpack_require__(/*! ./ngTablePagination.directive */ 23); -var ngTableSelectFilterDs_directive_1 = __webpack_require__(/*! ./ngTableSelectFilterDs.directive */ 24); -var ngTableSorterRow_directive_1 = __webpack_require__(/*! ./ngTableSorterRow.directive */ 25); -var ngTableSorterRowController_1 = __webpack_require__(/*! ./ngTableSorterRowController */ 26); -__webpack_require__(/*! ./filters/number.html */ 43); -__webpack_require__(/*! ./filters/select.html */ 45); -__webpack_require__(/*! ./filters/select-multiple.html */ 44); -__webpack_require__(/*! ./filters/text.html */ 46); -__webpack_require__(/*! ./pager.html */ 49); -__webpack_require__(/*! ./header.html */ 48); -var ngTableBrowserModule = angular.module('ngTable-browser', []) - .directive('ngTable', ngTable_directive_1.ngTable) - .service('ngTableColumn', ngTableColumn_1.NgTableColumn) - .directive('ngTableColumnsBinding', ngTableColumnsBinding_directive_1.ngTableColumnsBinding) - .controller('ngTableController', ngTableController_1.NgTableController) - .directive('ngTableDynamic', ngTableDynamic_directive_1.ngTableDynamic) - .provider('ngTableFilterConfig', ngTableFilterConfig_1.NgTableFilterConfigProvider) - .directive('ngTableFilterRow', ngTableFilterRow_directive_1.ngTableFilterRow) - .controller('ngTableFilterRowController', ngTableFilterRowController_1.NgTableFilterRowController) - .directive('ngTableGroupRow', ngTableGroupRow_directive_1.ngTableGroupRow) - .controller('ngTableGroupRowController', ngTableGroupRowController_1.NgTableGroupRowController) - .directive('ngTablePagination', ngTablePagination_directive_1.ngTablePagination) - .directive('ngTableSelectFilterDs', ngTableSelectFilterDs_directive_1.ngTableSelectFilterDs) - .directive('ngTableSorterRow', ngTableSorterRow_directive_1.ngTableSorterRow) - .controller('ngTableSorterRowController', ngTableSorterRowController_1.NgTableSorterRowController); -exports.ngTableBrowserModule = ngTableBrowserModule; -__export(__webpack_require__(/*! ./public-interfaces */ 27)); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(/*! angular */ 0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__ngTable_directive__ = __webpack_require__(/*! ./ngTable.directive */ 14); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ngTableColumn__ = __webpack_require__(/*! ./ngTableColumn */ 15); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__ngTableColumnsBinding_directive__ = __webpack_require__(/*! ./ngTableColumnsBinding.directive */ 16); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__ngTableController__ = __webpack_require__(/*! ./ngTableController */ 17); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__ngTableDynamic_directive__ = __webpack_require__(/*! ./ngTableDynamic.directive */ 18); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__ngTableFilterConfig__ = __webpack_require__(/*! ./ngTableFilterConfig */ 5); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__ngTableFilterRow_directive__ = __webpack_require__(/*! ./ngTableFilterRow.directive */ 19); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__ngTableFilterRowController__ = __webpack_require__(/*! ./ngTableFilterRowController */ 20); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__ngTableGroupRow_directive__ = __webpack_require__(/*! ./ngTableGroupRow.directive */ 21); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__ngTableGroupRowController__ = __webpack_require__(/*! ./ngTableGroupRowController */ 22); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__ngTablePagination_directive__ = __webpack_require__(/*! ./ngTablePagination.directive */ 23); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__ngTableSelectFilterDs_directive__ = __webpack_require__(/*! ./ngTableSelectFilterDs.directive */ 24); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__ngTableSorterRow_directive__ = __webpack_require__(/*! ./ngTableSorterRow.directive */ 25); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__ngTableSorterRowController__ = __webpack_require__(/*! ./ngTableSorterRowController */ 26); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__filters_number_html__ = __webpack_require__(/*! ./filters/number.html */ 36); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__filters_number_html___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_15__filters_number_html__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__filters_select_html__ = __webpack_require__(/*! ./filters/select.html */ 38); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__filters_select_html___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_16__filters_select_html__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__filters_select_multiple_html__ = __webpack_require__(/*! ./filters/select-multiple.html */ 37); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__filters_select_multiple_html___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_17__filters_select_multiple_html__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__filters_text_html__ = __webpack_require__(/*! ./filters/text.html */ 39); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__filters_text_html___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_18__filters_text_html__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__pager_html__ = __webpack_require__(/*! ./pager.html */ 42); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__pager_html___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_19__pager_html__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__header_html__ = __webpack_require__(/*! ./header.html */ 41); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__header_html___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_20__header_html__); +/* harmony reexport (binding) */ __webpack_require__.d(exports, "b", function() { return __WEBPACK_IMPORTED_MODULE_4__ngTableController__["a"]; }); +/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, "c", function() { return __WEBPACK_IMPORTED_MODULE_6__ngTableFilterConfig__["b"]; }); +/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, "d", function() { return __WEBPACK_IMPORTED_MODULE_6__ngTableFilterConfig__["a"]; }); +/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, "e", function() { return __WEBPACK_IMPORTED_MODULE_6__ngTableFilterConfig__["c"]; }); +/* harmony export (binding) */ __webpack_require__.d(exports, "a", function() { return ngTableBrowserModule; }); + + + + + + + + + + + + + + + + + + + + + +var ngTableBrowserModule = __WEBPACK_IMPORTED_MODULE_0_angular__["module"]('ngTable-browser', []) + .directive('ngTable', __WEBPACK_IMPORTED_MODULE_1__ngTable_directive__["a" /* ngTable */]) + .service('ngTableColumn', __WEBPACK_IMPORTED_MODULE_2__ngTableColumn__["a" /* NgTableColumn */]) + .directive('ngTableColumnsBinding', __WEBPACK_IMPORTED_MODULE_3__ngTableColumnsBinding_directive__["a" /* ngTableColumnsBinding */]) + .controller('ngTableController', __WEBPACK_IMPORTED_MODULE_4__ngTableController__["a" /* NgTableController */]) + .directive('ngTableDynamic', __WEBPACK_IMPORTED_MODULE_5__ngTableDynamic_directive__["a" /* ngTableDynamic */]) + .provider('ngTableFilterConfig', __WEBPACK_IMPORTED_MODULE_6__ngTableFilterConfig__["a" /* NgTableFilterConfigProvider */]) + .directive('ngTableFilterRow', __WEBPACK_IMPORTED_MODULE_7__ngTableFilterRow_directive__["a" /* ngTableFilterRow */]) + .controller('ngTableFilterRowController', __WEBPACK_IMPORTED_MODULE_8__ngTableFilterRowController__["a" /* NgTableFilterRowController */]) + .directive('ngTableGroupRow', __WEBPACK_IMPORTED_MODULE_9__ngTableGroupRow_directive__["a" /* ngTableGroupRow */]) + .controller('ngTableGroupRowController', __WEBPACK_IMPORTED_MODULE_10__ngTableGroupRowController__["a" /* NgTableGroupRowController */]) + .directive('ngTablePagination', __WEBPACK_IMPORTED_MODULE_11__ngTablePagination_directive__["a" /* ngTablePagination */]) + .directive('ngTableSelectFilterDs', __WEBPACK_IMPORTED_MODULE_12__ngTableSelectFilterDs_directive__["a" /* ngTableSelectFilterDs */]) + .directive('ngTableSorterRow', __WEBPACK_IMPORTED_MODULE_13__ngTableSorterRow_directive__["a" /* ngTableSorterRow */]) + .controller('ngTableSorterRowController', __WEBPACK_IMPORTED_MODULE_14__ngTableSorterRowController__["a" /* NgTableSorterRowController */]); + + /***/ }, /* 3 */ -/* unknown exports provided */ -/* all exports used */ +/* exports provided: DataSettings, NgTableDefaultGetDataProvider */ +/* exports used: DataSettings, NgTableDefaultGetDataProvider */ /*!********************************!*\ !*** ./src/core/data/index.ts ***! \********************************/ /***/ function(module, exports, __webpack_require__) { "use strict"; -"use strict"; -function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} -__export(__webpack_require__(/*! ./dataSettings */ 28)); -__export(__webpack_require__(/*! ./getData */ 29)); -__export(__webpack_require__(/*! ./interceptor */ 30)); -__export(__webpack_require__(/*! ./ngTableDefaultGetData */ 31)); -__export(__webpack_require__(/*! ./results */ 32)); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__dataSettings__ = __webpack_require__(/*! ./dataSettings */ 27); +/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, "a", function() { return __WEBPACK_IMPORTED_MODULE_0__dataSettings__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__ngTableDefaultGetData__ = __webpack_require__(/*! ./ngTableDefaultGetData */ 28); +/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, "b", function() { return __WEBPACK_IMPORTED_MODULE_1__ngTableDefaultGetData__["a"]; }); + + /***/ }, /* 4 */ -/* unknown exports provided */ -/* all exports used */ -/*!***************************************!*\ - !*** ./src/core/grouping/getGroup.ts ***! - \***************************************/ -/***/ function(module, exports) { +/* exports provided: assignPartialDeep, checkClassInit */ +/* exports used: checkClassInit, assignPartialDeep */ +/*!*****************************!*\ + !*** ./src/shared/index.ts ***! + \*****************************/ +/***/ function(module, exports, __webpack_require__) { "use strict"; -"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__assign_partial_deep__ = __webpack_require__(/*! ./assign-partial-deep */ 33); +/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, "b", function() { return __WEBPACK_IMPORTED_MODULE_0__assign_partial_deep__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__check_class_init__ = __webpack_require__(/*! ./check-class-init */ 34); +/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, "a", function() { return __WEBPACK_IMPORTED_MODULE_1__check_class_init__["a"]; }); + + /***/ }, /* 5 */ -/* unknown exports provided */ -/* all exports used */ +/* exports provided: FilterConfigValues, NgTableFilterConfigProvider, NgTableFilterConfig */ +/* exports used: NgTableFilterConfigProvider, FilterConfigValues, NgTableFilterConfig */ /*!********************************************!*\ - !*** ./src/core/grouping/groupSettings.ts ***! + !*** ./src/browser/ngTableFilterConfig.ts ***! \********************************************/ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { "use strict"; -"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(/*! angular */ 0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__shared__ = __webpack_require__(/*! ../shared */ 4); +/* harmony export (binding) */ __webpack_require__.d(exports, "b", function() { return FilterConfigValues; }); +/* harmony export (binding) */ __webpack_require__.d(exports, "a", function() { return NgTableFilterConfigProvider; }); +/* harmony export (binding) */ __webpack_require__.d(exports, "c", function() { return NgTableFilterConfig; }); +/** + * ngTable: Table + Angular JS + * + * @author Vitalii Savchuk + * @url https://github.com/esvit/ng-table/ + * @license New BSD License + */ + + +/** + * Configuration values that determine the behaviour of the `ngTableFilterConfig` service + */ +var FilterConfigValues = (function () { + function FilterConfigValues() { + /** + * The default base url to use when deriving the url for a filter template given just an alias name + */ + this.defaultBaseUrl = 'ng-table/filters/'; + /** + * The extension to use when deriving the url of a filter template when given just an alias name + */ + this.defaultExt = '.html'; + /** + * A map of alias names and their corrosponding urls. A lookup against this map will be used + * to find the url matching an alias name. + * If no match is found then a url will be derived using the following pattern `${defaultBaseUrl}${aliasName}.${defaultExt}` + */ + this.aliasUrls = {}; + } + return FilterConfigValues; +}()); + +/** + * The angular provider used to configure the behaviour of the `NgTableFilterConfig` service. + */ +var NgTableFilterConfigProvider = (function () { + function NgTableFilterConfigProvider($injector) { + var _this = this; + this.$get = function () { + return $injector.instantiate(NgTableFilterConfig, { config: __WEBPACK_IMPORTED_MODULE_0_angular__["copy"](_this.config) }); + }; + this.$get.$inject = []; + this.resetConfigs(); + } + /** + * Reset back to factory defaults the config values that `NgTableFilterConfig` service will use + */ + NgTableFilterConfigProvider.prototype.resetConfigs = function () { + this.config = new FilterConfigValues(); + }; + /** + * Set the config values used by `NgTableFilterConfig` service + */ + NgTableFilterConfigProvider.prototype.setConfig = function (customConfig) { + this.config = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__shared__["b" /* assignPartialDeep */])(__WEBPACK_IMPORTED_MODULE_0_angular__["copy"](this.config), customConfig); + }; + return NgTableFilterConfigProvider; +}()); + +NgTableFilterConfigProvider.$inject = ['$injector']; +/** + * Exposes configuration values and methods used to return the location of the html + * templates used to render the filter row of an ng-table directive + */ +var NgTableFilterConfig = (function () { + function NgTableFilterConfig( + /** + * Readonly copy of the final values used to configure the service. + */ + config) { + this.config = config; + } + /** + * Return the url of the html filter template registered with the alias supplied + */ + NgTableFilterConfig.prototype.getUrlForAlias = function (aliasName, filterKey) { + return this.config.aliasUrls[aliasName] || this.config.defaultBaseUrl + aliasName + this.config.defaultExt; + }; + /** + * Return the url of the html filter template for the supplied definition and key. + * For more information see the documentation for {@link FilterTemplateMap} + */ + NgTableFilterConfig.prototype.getTemplateUrl = function (filterDef, filterKey) { + var filterName; + if (typeof filterDef !== 'string') { + filterName = filterDef.id; + } + else { + filterName = filterDef; + } + if (filterName.indexOf('/') !== -1) { + return filterName; + } + return this.getUrlForAlias(filterName, filterKey); + }; + return NgTableFilterConfig; +}()); + +NgTableFilterConfig.$inject = ['config']; /***/ }, /* 6 */ -/* unknown exports provided */ -/* all exports used */ -/*!*******************************************!*\ - !*** ./src/core/grouping/groupingFunc.ts ***! - \*******************************************/ -/***/ function(module, exports) { +/* exports provided: FilterSettings */ +/* exports used: FilterSettings */ +/*!*************************************!*\ + !*** ./src/core/filtering/index.ts ***! + \*************************************/ +/***/ function(module, exports, __webpack_require__) { "use strict"; -"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__filterSettings__ = __webpack_require__(/*! ./filterSettings */ 29); +/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, "a", function() { return __WEBPACK_IMPORTED_MODULE_0__filterSettings__["a"]; }); + /***/ }, /* 7 */ -/* unknown exports provided */ -/* all exports used */ -/*!*************************************!*\ - !*** ./src/core/ngTableDefaults.ts ***! - \*************************************/ -/***/ function(module, exports) { +/* exports provided: GroupSettings */ +/* exports used: GroupSettings */ +/*!********************************************!*\ + !*** ./src/core/grouping/groupSettings.ts ***! + \********************************************/ +/***/ function(module, exports, __webpack_require__) { "use strict"; -/** - * ngTable: Table + Angular JS - * - * @author Vitalii Savchuk - * @url https://github.com/esvit/ng-table/ - * @license New BSD License - */ -"use strict"; -/** - * Default values for ngTable - */ -exports.ngTableDefaults = { - params: {}, - settings: {} -}; +/* harmony export (binding) */ __webpack_require__.d(exports, "a", function() { return GroupSettings; }); +/** + * Configuration that determines the data row grouping behaviour of a table + */ +var GroupSettings = (function () { + function GroupSettings() { + /** + * The default sort direction that will be used whenever a group is supplied that + * does not define its own sort direction + */ + this.defaultSort = 'asc'; + /** + * Determines whether groups should be displayed expanded to show their items. Defaults to true + */ + this.isExpanded = true; + } + return GroupSettings; +}()); + /***/ }, /* 8 */ -/* unknown exports provided */ -/* all exports used */ +/* exports provided: GroupSettings, ngTableDefaultGetGroups */ +/* exports used: GroupSettings, ngTableDefaultGetGroups */ +/*!************************************!*\ + !*** ./src/core/grouping/index.ts ***! + \************************************/ +/***/ function(module, exports, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__groupSettings__ = __webpack_require__(/*! ./groupSettings */ 7); +/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, "a", function() { return __WEBPACK_IMPORTED_MODULE_0__groupSettings__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__ngTableDefaultGetGroups__ = __webpack_require__(/*! ./ngTableDefaultGetGroups */ 30); +/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, "b", function() { return __WEBPACK_IMPORTED_MODULE_1__ngTableDefaultGetGroups__["a"]; }); + + + + +/***/ }, +/* 9 */ +/* exports provided: NgTableEventsChannel */ +/* exports used: NgTableEventsChannel */ /*!******************************************!*\ !*** ./src/core/ngTableEventsChannel.ts ***! \******************************************/ /***/ function(module, exports, __webpack_require__) { "use strict"; -/** - * ngTable: Table + Angular JS - * - * @author Vitalii Savchuk - * @url https://github.com/esvit/ng-table/ - * @license New BSD License - */ -"use strict"; -var ng1 = __webpack_require__(/*! angular */ 0); -var NgTableEventsChannel = (function () { - function NgTableEventsChannel($rootScope) { - this.$rootScope = $rootScope; - var events = this; - events = this.addTableParamsEvent('afterCreated', events); - events = this.addTableParamsEvent('afterReloadData', events); - events = this.addTableParamsEvent('datasetChanged', events); - events = this.addTableParamsEvent('pagesChanged', events); - events = this.addTableParamsEvent('afterDataFiltered', events); - events = this.addTableParamsEvent('afterDataSorted', events); - } - NgTableEventsChannel.prototype.addTableParamsEvent = function (eventName, target) { - var fnName = eventName.charAt(0).toUpperCase() + eventName.substring(1); - var event = (_a = {}, - _a['on' + fnName] = this.createEventSubscriptionFn(eventName), - _a['publish' + fnName] = this.createPublishEventFn(eventName), - _a - ); - return ng1.extend(target, event); - var _a; - }; - NgTableEventsChannel.prototype.createPublishEventFn = function (eventName) { - var _this = this; - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i - 0] = arguments[_i]; - } - (_a = _this.$rootScope).$broadcast.apply(_a, ['ngTable:' + eventName].concat(args)); - var _a; - }; - }; - NgTableEventsChannel.prototype.createEventSubscriptionFn = function (eventName) { - var _this = this; - return function (handler, eventSelectorOrScope, eventSelector) { - var actualEvtSelector; - var scope = _this.$rootScope; - if (isScopeLike(eventSelectorOrScope)) { - scope = eventSelectorOrScope; - actualEvtSelector = createEventSelectorFn(eventSelector); - } - else { - actualEvtSelector = createEventSelectorFn(eventSelectorOrScope); - } - return scope.$on('ngTable:' + eventName, function (event, params) { - var eventArgs = []; - for (var _i = 2; _i < arguments.length; _i++) { - eventArgs[_i - 2] = arguments[_i]; - } - // don't send events published by the internal NgTableParams created by ngTableController - if (params.isNullInstance) - return; - var fnArgs = [params].concat(eventArgs); - if (actualEvtSelector.apply(this, fnArgs)) { - handler.apply(this, fnArgs); - } - }); - }; - function createEventSelectorFn(eventSelector) { - if (!eventSelector) { - return function (publisher) { return true; }; - } - else if (isEventSelectorFunc(eventSelector)) { - return eventSelector; - } - else { - // shorthand for subscriber to only receive events from a specific publisher instance - return function (publisher) { return publisher === eventSelector; }; - } - } - function isEventSelectorFunc(val) { - return typeof val === 'function'; - } - function isScopeLike(val) { - return val && typeof val.$new === 'function'; - } - }; - NgTableEventsChannel.$inject = ['$rootScope']; - return NgTableEventsChannel; -}()); -exports.NgTableEventsChannel = NgTableEventsChannel; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(/*! angular */ 0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__); +/* harmony export (binding) */ __webpack_require__.d(exports, "a", function() { return NgTableEventsChannel; }); +/** + * ngTable: Table + Angular JS + * + * @author Vitalii Savchuk + * @url https://github.com/esvit/ng-table/ + * @license New BSD License + */ + +var NgTableEventsChannel = (function () { + function NgTableEventsChannel($rootScope) { + this.$rootScope = $rootScope; + var events = this; + events = this.addTableParamsEvent('afterCreated', events); + events = this.addTableParamsEvent('afterReloadData', events); + events = this.addTableParamsEvent('datasetChanged', events); + events = this.addTableParamsEvent('pagesChanged', events); + events = this.addTableParamsEvent('afterDataFiltered', events); + events = this.addTableParamsEvent('afterDataSorted', events); + } + NgTableEventsChannel.prototype.addTableParamsEvent = function (eventName, target) { + var fnName = eventName.charAt(0).toUpperCase() + eventName.substring(1); + var event = (_a = {}, + _a['on' + fnName] = this.createEventSubscriptionFn(eventName), + _a['publish' + fnName] = this.createPublishEventFn(eventName), + _a); + return __WEBPACK_IMPORTED_MODULE_0_angular__["extend"](target, event); + var _a; + }; + NgTableEventsChannel.prototype.createPublishEventFn = function (eventName) { + var _this = this; + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + (_a = _this.$rootScope).$broadcast.apply(_a, ['ngTable:' + eventName].concat(args)); + var _a; + }; + }; + NgTableEventsChannel.prototype.createEventSubscriptionFn = function (eventName) { + var _this = this; + return function (handler, eventSelectorOrScope, eventSelector) { + var actualEvtSelector; + var scope = _this.$rootScope; + if (isScopeLike(eventSelectorOrScope)) { + scope = eventSelectorOrScope; + actualEvtSelector = createEventSelectorFn(eventSelector); + } + else { + actualEvtSelector = createEventSelectorFn(eventSelectorOrScope); + } + return scope.$on('ngTable:' + eventName, function (event, params) { + var eventArgs = []; + for (var _i = 2; _i < arguments.length; _i++) { + eventArgs[_i - 2] = arguments[_i]; + } + // don't send events published by the internal NgTableParams created by ngTableController + if (params.isNullInstance) + return; + var fnArgs = [params].concat(eventArgs); + if (actualEvtSelector.apply(this, fnArgs)) { + handler.apply(this, fnArgs); + } + }); + }; + function createEventSelectorFn(eventSelector) { + if (eventSelector === void 0) { eventSelector = function () { return true; }; } + if (isEventSelectorFunc(eventSelector)) { + return eventSelector; + } + else { + // shorthand for subscriber to only receive events from a specific publisher instance + return function (publisher) { return publisher === eventSelector; }; + } + } + function isEventSelectorFunc(val) { + return typeof val === 'function'; + } + function isScopeLike(val) { + return val && typeof val.$new === 'function'; + } + }; + return NgTableEventsChannel; +}()); + +NgTableEventsChannel.$inject = ['$rootScope']; /***/ }, -/* 9 */ -/* unknown exports provided */ -/* all exports used */ +/* 10 */ +/* exports provided: ParamValues, NgTableParams */ +/* exports used: NgTableParams, ParamValues */ /*!***********************************!*\ !*** ./src/core/ngTableParams.ts ***! \***********************************/ /***/ function(module, exports, __webpack_require__) { "use strict"; -/** - * ngTable: Table + Angular JS - * - * @author Vitalii Savchuk - * @url https://github.com/esvit/ng-table/ - * @license New BSD License - */ -"use strict"; -var ng1 = __webpack_require__(/*! angular */ 0); -var util_1 = __webpack_require__(/*! ./util */ 11); -/** - * @private - */ -function isNumber(n) { - return !isNaN(parseFloat(n)) && isFinite(n); -} -/** - * Parameters manager for an ngTable directive - */ -var NgTableParams = (function () { - function NgTableParams(baseParameters, baseSettings) { - var _this = this; - /** - * The page of data rows currently being displayed in the table - */ - this.data = []; - this.defaultSettings = NgTableParams.ngTableSettings.createDefaults(); - this.isCommittedDataset = false; - this.initialEvents = []; - this._params = { - page: 1, - count: 10, - filter: {}, - sorting: {}, - group: {} - }; - this._settings = this.defaultSettings; - // the ngTableController "needs" to create a dummy/null instance and it's important to know whether an instance - // is one of these - if (typeof baseParameters === "boolean") { - this.isNullInstance = true; - } - this.reloadPages = (function () { - var currentPages; - return function () { - var oldPages = currentPages; - var newPages = _this.generatePagesArray(_this.page(), _this.total(), _this.count()); - if (!ng1.equals(oldPages, newPages)) { - currentPages = newPages; - NgTableParams.ngTableEventsChannel.publishPagesChanged(_this, newPages, oldPages); - } - }; - })(); - ng1.extend(this._params, NgTableParams.ngTableDefaults.params); - this.settings(baseSettings); - this.parameters(baseParameters, true); - NgTableParams.ngTableEventsChannel.publishAfterCreated(this); - // run events during construction after the initial create event. That way a consumer - // can subscribe to all events for a table without "dropping" an event - ng1.forEach(this.initialEvents, function (event) { - event(); - }); - this.initialEvents = null; - } - NgTableParams.prototype.count = function (count) { - // reset to first page because can be blank page - return count !== undefined ? this.parameters({ - 'count': count, - 'page': 1 - }) : this._params.count; - }; - NgTableParams.prototype.filter = function (filter) { - if (filter != null && typeof filter === 'object') { - return this.parameters({ - 'filter': filter, - 'page': 1 - }); - } - else if (filter === true) { - var keys = Object.keys(this._params.filter); - var significantFilter = {}; - for (var i = 0; i < keys.length; i++) { - var filterValue = this._params.filter[keys[i]]; - if (filterValue != null && filterValue !== '') { - significantFilter[keys[i]] = filterValue; - } - } - return significantFilter; - } - else { - return this._params.filter; - } - }; - /** - * Generate array of pages. - * When no arguments supplied, the current parameter state of this `NgTableParams` instance will be used - * @param currentPage Which page must be active - * @param totalItems Total quantity of items - * @param pageSize Quantity of items on page - * @param maxBlocks Quantity of blocks for pagination - * @returns Array of pages - */ - NgTableParams.prototype.generatePagesArray = function (currentPage, totalItems, pageSize, maxBlocks) { - if (!arguments.length) { - currentPage = this.page(); - totalItems = this.total(); - pageSize = this.count(); - } - var maxPage, maxPivotPages, minPage, numPages; - maxBlocks = maxBlocks && maxBlocks < 6 ? 6 : maxBlocks; - var pages = []; - numPages = Math.ceil(totalItems / pageSize); - if (numPages > 1) { - pages.push({ - type: 'prev', - number: Math.max(1, currentPage - 1), - active: currentPage > 1 - }); - pages.push({ - type: 'first', - number: 1, - active: currentPage > 1, - current: currentPage === 1 - }); - maxPivotPages = Math.round((this._settings.paginationMaxBlocks - this._settings.paginationMinBlocks) / 2); - minPage = Math.max(2, currentPage - maxPivotPages); - maxPage = Math.min(numPages - 1, currentPage + maxPivotPages * 2 - (currentPage - minPage)); - minPage = Math.max(2, minPage - (maxPivotPages * 2 - (maxPage - minPage))); - var i = minPage; - while (i <= maxPage) { - if ((i === minPage && i !== 2) || (i === maxPage && i !== numPages - 1)) { - pages.push({ - type: 'more', - active: false - }); - } - else { - pages.push({ - type: 'page', - number: i, - active: currentPage !== i, - current: currentPage === i - }); - } - i++; - } - pages.push({ - type: 'last', - number: numPages, - active: currentPage !== numPages, - current: currentPage === numPages - }); - pages.push({ - type: 'next', - number: Math.min(numPages, currentPage + 1), - active: currentPage < numPages - }); - } - return pages; - }; - NgTableParams.prototype.group = function (group, sortDirection) { - if (group === undefined) { - return this._params.group; - } - var newParameters = { - page: 1 - }; - if (util_1.isGroupingFun(group) && sortDirection !== undefined) { - group.sortDirection = sortDirection; - newParameters.group = group; - } - else if (typeof group === 'string' && sortDirection !== undefined) { - newParameters.group = (_a = {}, _a[group] = sortDirection, _a); - } - else { - newParameters.group = group; - } - this.parameters(newParameters); - return this; - var _a; - }; - /** - * Returns true when an attempt to `reload` the current `parameter` values have resulted in a failure. - * This method will continue to return true until the `reload` is successfully called or when the - * `parameter` values have changed - */ - NgTableParams.prototype.hasErrorState = function () { - return !!(this.errParamsMemento && ng1.equals(this.errParamsMemento, this.createComparableParams())); - }; - /** - * Returns true if `filter` has significant filter value(s) (any value except null, undefined, or empty string), - * otherwise false - */ - NgTableParams.prototype.hasFilter = function () { - return Object.keys(this.filter(true)).length > 0; - }; - /** - * Return true when a change to `filters` require the `reload` method - * to be run so as to ensure the data presented to the user reflects these filters - */ - NgTableParams.prototype.hasFilterChanges = function () { - var previousFilter = (this.prevParamsMemento && this.prevParamsMemento.params.filter); - return !ng1.equals((this._params.filter), previousFilter) || this.hasGlobalSearchFieldChanges(); - }; - NgTableParams.prototype.hasGroup = function (group, sortDirection) { - if (group == null) { - return util_1.isGroupingFun(this._params.group) || Object.keys(this._params.group).length > 0; - } - if (util_1.isGroupingFun(group)) { - if (sortDirection == null) { - return this._params.group === group; - } - else { - return this._params.group === group && group.sortDirection === sortDirection; - } - } - else { - if (sortDirection == null) { - return Object.keys(this._params.group).indexOf(group) !== -1; - } - else { - return this._params.group[group] === sortDirection; - } - } - }; - /** - * Return true when a change to this instance should require the `reload` method - * to be run so as to ensure the data rows presented to the user reflects the current state. - * - * Note that this method will return false when the `reload` method has run but fails. In this case - * `hasErrorState` will return true. - * - * The built-in `ngTable` directives will watch for when this function returns true and will then call - * the `reload` method to load its data rows - */ - NgTableParams.prototype.isDataReloadRequired = function () { - // note: using != as want to treat null and undefined the same - return !this.isCommittedDataset || !ng1.equals(this.createComparableParams(), this.prevParamsMemento) - || this.hasGlobalSearchFieldChanges(); - }; - /** - * Returns true if sorting by the field supplied. Where direction supplied - * the field must also be sorted by that direction to return true - */ - NgTableParams.prototype.isSortBy = function (field, direction) { - if (direction !== undefined) { - return this._params.sorting[field] !== undefined && this._params.sorting[field] == direction; - } - else { - return this._params.sorting[field] !== undefined; - } - }; - /** - * Returns sorting values in a format that can be consumed by the angular `$orderBy` filter service - */ - NgTableParams.prototype.orderBy = function () { - return util_1.convertSortToOrderBy(this._params.sorting); - }; - NgTableParams.prototype.page = function (page) { - return page !== undefined ? this.parameters({ - 'page': page - }) : this._params.page; - }; - NgTableParams.prototype.parameters = function (newParameters, parseParamsFromUrl) { - parseParamsFromUrl = parseParamsFromUrl || false; - if (typeof newParameters !== undefined) { - for (var key in newParameters) { - var value = newParameters[key]; - if (parseParamsFromUrl && key.indexOf('[') >= 0) { - var keys = key.split(/\[(.*)\]/).reverse(); - var lastKey = ''; - for (var i = 0, len = keys.length; i < len; i++) { - var name = keys[i]; - if (name !== '') { - var v = value; - value = {}; - value[lastKey = name] = (isNumber(v) ? parseFloat(v) : v); - } - } - if (lastKey === 'sorting') { - this._params[lastKey] = {}; - } - this._params[lastKey] = ng1.extend(this._params[lastKey] || {}, value[lastKey]); - } - else { - if (key === 'group') { - this._params[key] = this.parseGroup(newParameters[key]); - } - else { - this._params[key] = (isNumber(newParameters[key]) ? parseFloat(newParameters[key]) : newParameters[key]); - } - } - } - this.log('ngTable: set parameters', this._params); - return this; - } - return this._params; - }; - /** - * Trigger a reload of the data rows - */ - NgTableParams.prototype.reload = function () { - var _this = this; - var pData = null; - this._settings.$loading = true; - this.prevParamsMemento = ng1.copy(this.createComparableParams()); - this.isCommittedDataset = true; - if (this.hasGroup()) { - pData = this.runInterceptorPipeline(NgTableParams.$q.when(this._settings.getGroups(this))); - } - else { - var fn = this._settings.getData; - pData = this.runInterceptorPipeline(NgTableParams.$q.when(fn(this))); - } - this.log('ngTable: reload data'); - var oldData = this.data; - return pData.then(function (data) { - _this._settings.$loading = false; - _this.errParamsMemento = null; - _this.data = data; - // note: I think it makes sense to publish this event even when data === oldData - // subscribers can always set a filter to only receive the event when data !== oldData - NgTableParams.ngTableEventsChannel.publishAfterReloadData(_this, data, oldData); - _this.reloadPages(); - return data; - }).catch(function (reason) { - _this.errParamsMemento = _this.prevParamsMemento; - // "rethrow" - return NgTableParams.$q.reject(reason); - }); - }; - NgTableParams.prototype.settings = function (newSettings) { - var _this = this; - if (ng1.isDefined(newSettings)) { - var settings = NgTableParams.ngTableSettings.merge(this._settings, newSettings); - var originalDataset_1 = this._settings.dataset; - this._settings = settings; - // note: using != as want null and undefined to be treated the same - var hasDatasetChanged = newSettings.hasOwnProperty('dataset') && (newSettings.dataset != originalDataset_1); - if (hasDatasetChanged) { - if (this.isCommittedDataset) { - this.page(1); // reset page as a new dataset has been supplied - } - this.isCommittedDataset = false; - var fireEvent = function () { - NgTableParams.ngTableEventsChannel.publishDatasetChanged(_this, newSettings.dataset, originalDataset_1); - }; - if (this.initialEvents) { - this.initialEvents.push(fireEvent); - } - else { - fireEvent(); - } - } - this.log('ngTable: set settings', this._settings); - return this; - } - return this._settings; - }; - NgTableParams.prototype.sorting = function (sorting, direction) { - if (typeof sorting === 'string') { - this.parameters({ - 'sorting': (_a = {}, _a[sorting] = direction, _a) - }); - return this; - } - return sorting !== undefined ? this.parameters({ - 'sorting': sorting - }) : this._params.sorting; - var _a; - }; - NgTableParams.prototype.total = function (total) { - return total !== undefined ? this.settings({ - 'total': total - }) : this._settings.total; - }; - /** - * Returns the current parameter values uri-encoded. Set `asString` to - * true for the parameters to be returned as an array of strings of the form 'paramName=value' - * otherwise parameters returned as a key-value object - */ - NgTableParams.prototype.url = function (asString) { - // this function is an example of Typescript gone bad!! - asString = asString || false; - var pairs = (asString ? [] : {}); - for (var key in this._params) { - if (this._params.hasOwnProperty(key)) { - var item = this._params[key], name = encodeURIComponent(key); - if (typeof item === "object") { - for (var subkey in item) { - if (isSignificantValue(item[subkey], key)) { - var pname = name + "[" + encodeURIComponent(subkey) + "]"; - collectValue(item[subkey], pname); - } - } - } - else if (!ng1.isFunction(item) && isSignificantValue(item, key)) { - collectValue(item, name); - } - } - } - return pairs; - function collectValue(value, key) { - if (isArray(pairs)) { - pairs.push(key + "=" + encodeURIComponent(value)); - } - else { - pairs[key] = encodeURIComponent(value); - } - } - function isArray(pairs) { - return asString; - } - function isSignificantValue(value, key) { - return key === "group" ? true : typeof value !== undefined && value !== ""; - } - }; - NgTableParams.prototype.createComparableParams = function () { - var group = this._params.group; - return { - params: this._params, - groupSortDirection: util_1.isGroupingFun(group) ? group.sortDirection : undefined - }; - }; - NgTableParams.prototype.hasGlobalSearchFieldChanges = function () { - var currentVal = (this._params.filter && this._params.filter['$']); - var previousVal = (this.prevParamsMemento && this.prevParamsMemento.params.filter && this.prevParamsMemento.params.filter['$']); - return !ng1.equals(currentVal, previousVal); - }; - NgTableParams.prototype.log = function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i - 0] = arguments[_i]; - } - if (this._settings.debugMode && NgTableParams.$log.debug) { - (_a = NgTableParams.$log).debug.apply(_a, args); - } - var _a; - }; - NgTableParams.prototype.parseGroup = function (group) { - var defaultSort = this._settings.groupOptions && this._settings.groupOptions.defaultSort; - if (!group) { - return group; - } - else if (util_1.isGroupingFun(group)) { - if (group.sortDirection == null) { - group.sortDirection = defaultSort; - } - return group; - } - else if (typeof group === 'object') { - for (var key in group) { - if (group[key] == null) { - group[key] = defaultSort; - } - } - return group; - } - else { - return (_a = {}, - _a[group] = defaultSort, - _a - ); - } - var _a; - }; - NgTableParams.prototype.runInterceptorPipeline = function (fetchedData) { - var _this = this; - var interceptors = this._settings.interceptors || []; - return interceptors.reduce(function (result, interceptor) { - var thenFn = (interceptor.response && interceptor.response.bind(interceptor)) || NgTableParams.$q.when; - var rejectFn = (interceptor.responseError && interceptor.responseError.bind(interceptor)) || NgTableParams.$q.reject; - return result.then(function (data) { - return thenFn(data, _this); - }, function (reason) { - return rejectFn(reason, _this); - }); - }, fetchedData); - }; - NgTableParams.init = function ($q, $log, ngTableDefaults, ngTableEventsChannel, ngTableSettings) { - NgTableParams.$q = $q; - NgTableParams.$log = $log; - NgTableParams.ngTableDefaults = ngTableDefaults; - NgTableParams.ngTableEventsChannel = ngTableEventsChannel; - NgTableParams.ngTableSettings = ngTableSettings; - }; - return NgTableParams; -}()); -exports.NgTableParams = NgTableParams; -NgTableParams.init.$inject = ['$q', '$log', 'ngTableDefaults', 'ngTableEventsChannel', 'ngTableSettings']; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(/*! angular */ 0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util__ = __webpack_require__(/*! ./util */ 12); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__shared__ = __webpack_require__(/*! ../shared */ 4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__ngTableSettings__ = __webpack_require__(/*! ./ngTableSettings */ 11); +/* harmony export (binding) */ __webpack_require__.d(exports, "b", function() { return ParamValues; }); +/* harmony export (binding) */ __webpack_require__.d(exports, "a", function() { return NgTableParams; }); +/** + * ngTable: Table + Angular JS + * + * @author Vitalii Savchuk + * @url https://github.com/esvit/ng-table/ + * @license New BSD License + */ + + + + +/** + * The runtime values for {@link NgTableParams} that determine the set of data rows and + * how they are to be displayed in a table + */ +var ParamValues = (function () { + function ParamValues() { + /** + * The index of the "slice" of data rows, starting at 1, to be displayed by the table. + */ + this.page = 1; + /** + * The number of data rows per page + */ + this.count = 10; + /** + * The filter that should be applied to restrict the set of data rows + */ + this.filter = {}; + /** + * The sort order that should be applied to the data rows. + */ + this.sorting = {}; + /** + * The grouping that should be applied to the data rows + */ + this.group = {}; + } + return ParamValues; +}()); + +/** + * @private + */ +function isNumber(n) { + return !isNaN(parseFloat(n)) && isFinite(n); +} +/** + * Parameters manager for an ngTable directive + */ +var NgTableParams = (function () { + function NgTableParams(baseParameters, baseSettings) { + if (baseParameters === void 0) { baseParameters = {}; } + if (baseSettings === void 0) { baseSettings = {}; } + var _this = this; + /** + * The page of data rows currently being displayed in the table + */ + this.data = []; + this.defaultSettings = __WEBPACK_IMPORTED_MODULE_3__ngTableSettings__["a" /* Settings */].createWithOverrides(); + this.isCommittedDataset = false; + this.initialEvents = []; + this._params = new ParamValues(); + this._settings = this.defaultSettings; + // the ngTableController "needs" to create a dummy/null instance and it's important to know whether an instance + // is one of these + if (typeof baseParameters === "boolean") { + this.isNullInstance = true; + } + this.reloadPages = (function () { + var currentPages; + return function () { + var oldPages = currentPages; + var newPages = _this.generatePagesArray(_this.page(), _this.total(), _this.count()); + if (!__WEBPACK_IMPORTED_MODULE_0_angular__["equals"](oldPages, newPages)) { + currentPages = newPages; + _this.ngTableEventsChannel.publishPagesChanged(_this, newPages, oldPages); + } + }; + })(); + __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__shared__["b" /* assignPartialDeep */])(this._params, this.ngTableDefaults.params); + this.settings(baseSettings); + this.parameters(baseParameters, true); + this.ngTableEventsChannel.publishAfterCreated(this); + // run events during construction after the initial create event. That way a consumer + // can subscribe to all events for a table without "dropping" an event + __WEBPACK_IMPORTED_MODULE_0_angular__["forEach"](this.initialEvents, function (event) { + event(); + }); + this.initialEvents = null; + } + NgTableParams.prototype.count = function (count) { + // reset to first page because can be blank page + return count !== undefined ? this.parameters({ + 'count': count, + 'page': 1 + }) : this._params.count; + }; + NgTableParams.prototype.filter = function (filter) { + if (filter != null && typeof filter === 'object') { + return this.parameters({ + 'filter': filter, + 'page': 1 + }); + } + else if (filter === true) { + var keys = Object.keys(this._params.filter); + var significantFilter = {}; + for (var i = 0; i < keys.length; i++) { + var filterValue = this._params.filter[keys[i]]; + if (filterValue != null && filterValue !== '') { + significantFilter[keys[i]] = filterValue; + } + } + return significantFilter; + } + else { + return this._params.filter; + } + }; + /** + * Generate array of pages. + * When no arguments supplied, the current parameter state of this `NgTableParams` instance will be used + * @param currentPage Which page must be active + * @param totalItems Total quantity of items + * @param pageSize Quantity of items on page + * @param maxBlocks Quantity of blocks for pagination + * @returns Array of pages + */ + NgTableParams.prototype.generatePagesArray = function (currentPage, totalItems, pageSize, maxBlocks) { + if (!arguments.length) { + currentPage = this.page(); + totalItems = this.total(); + pageSize = this.count(); + } + var maxPage, maxPivotPages, minPage, numPages; + maxBlocks = maxBlocks && maxBlocks < 6 ? 6 : maxBlocks; + var pages = []; + numPages = Math.ceil(totalItems / pageSize); + if (numPages > 1) { + pages.push({ + type: 'prev', + number: Math.max(1, currentPage - 1), + active: currentPage > 1 + }); + pages.push({ + type: 'first', + number: 1, + active: currentPage > 1, + current: currentPage === 1 + }); + maxPivotPages = Math.round((this._settings.paginationMaxBlocks - this._settings.paginationMinBlocks) / 2); + minPage = Math.max(2, currentPage - maxPivotPages); + maxPage = Math.min(numPages - 1, currentPage + maxPivotPages * 2 - (currentPage - minPage)); + minPage = Math.max(2, minPage - (maxPivotPages * 2 - (maxPage - minPage))); + var i = minPage; + while (i <= maxPage) { + if ((i === minPage && i !== 2) || (i === maxPage && i !== numPages - 1)) { + pages.push({ + type: 'more', + active: false + }); + } + else { + pages.push({ + type: 'page', + number: i, + active: currentPage !== i, + current: currentPage === i + }); + } + i++; + } + pages.push({ + type: 'last', + number: numPages, + active: currentPage !== numPages, + current: currentPage === numPages + }); + pages.push({ + type: 'next', + number: Math.min(numPages, currentPage + 1), + active: currentPage < numPages + }); + } + return pages; + }; + NgTableParams.prototype.group = function (group, sortDirection) { + if (group === undefined) { + return this._params.group; + } + var newParameters = { + page: 1 + }; + if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util__["a" /* isGroupingFun */])(group) && sortDirection !== undefined) { + group.sortDirection = sortDirection; + newParameters.group = group; + } + else if (typeof group === 'string' && sortDirection !== undefined) { + newParameters.group = (_a = {}, _a[group] = sortDirection, _a); + } + else { + newParameters.group = group; + } + this.parameters(newParameters); + return this; + var _a; + }; + /** + * Returns true when an attempt to `reload` the current `parameter` values have resulted in a failure. + * This method will continue to return true until the `reload` is successfully called or when the + * `parameter` values have changed + */ + NgTableParams.prototype.hasErrorState = function () { + return !!(this.errParamsMemento && __WEBPACK_IMPORTED_MODULE_0_angular__["equals"](this.errParamsMemento, this.createComparableParams())); + }; + /** + * Returns true if `filter` has significant filter value(s) (any value except null, undefined, or empty string), + * otherwise false + */ + NgTableParams.prototype.hasFilter = function () { + return Object.keys(this.filter(true)).length > 0; + }; + /** + * Return true when a change to `filters` require the `reload` method + * to be run so as to ensure the data presented to the user reflects these filters + */ + NgTableParams.prototype.hasFilterChanges = function () { + var previousFilter = (this.prevParamsMemento && this.prevParamsMemento.params.filter); + return !__WEBPACK_IMPORTED_MODULE_0_angular__["equals"]((this._params.filter), previousFilter) || this.hasGlobalSearchFieldChanges(); + }; + NgTableParams.prototype.hasGroup = function (group, sortDirection) { + if (group == null) { + return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util__["a" /* isGroupingFun */])(this._params.group) || Object.keys(this._params.group).length > 0; + } + if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util__["a" /* isGroupingFun */])(group)) { + if (sortDirection == null) { + return this._params.group === group; + } + else { + return this._params.group === group && group.sortDirection === sortDirection; + } + } + else { + if (sortDirection == null) { + return Object.keys(this._params.group).indexOf(group) !== -1; + } + else { + return this._params.group[group] === sortDirection; + } + } + }; + /** + * Return true when a change to this instance should require the `reload` method + * to be run so as to ensure the data rows presented to the user reflects the current state. + * + * Note that this method will return false when the `reload` method has run but fails. In this case + * `hasErrorState` will return true. + * + * The built-in `ngTable` directives will watch for when this function returns true and will then call + * the `reload` method to load its data rows + */ + NgTableParams.prototype.isDataReloadRequired = function () { + // note: using != as want to treat null and undefined the same + return !this.isCommittedDataset || !__WEBPACK_IMPORTED_MODULE_0_angular__["equals"](this.createComparableParams(), this.prevParamsMemento) + || this.hasGlobalSearchFieldChanges(); + }; + /** + * Returns true if sorting by the field supplied. Where direction supplied + * the field must also be sorted by that direction to return true + */ + NgTableParams.prototype.isSortBy = function (field, direction) { + if (direction !== undefined) { + return this._params.sorting[field] !== undefined && this._params.sorting[field] == direction; + } + else { + return this._params.sorting[field] !== undefined; + } + }; + /** + * Returns sorting values in a format that can be consumed by the angular `$orderBy` filter service + */ + NgTableParams.prototype.orderBy = function () { + return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util__["b" /* convertSortToOrderBy */])(this._params.sorting); + }; + NgTableParams.prototype.page = function (page) { + return page !== undefined ? this.parameters({ + 'page': page + }) : this._params.page; + }; + NgTableParams.prototype.parameters = function (newParameters, parseParamsFromUrl) { + if (newParameters === undefined) { + return this._params; + } + // todo: move parsing of url like parameters into a seperate method + parseParamsFromUrl = parseParamsFromUrl || false; + for (var key in newParameters) { + var value = newParameters[key]; + if (parseParamsFromUrl && key.indexOf('[') >= 0) { + var keys = key.split(/\[(.*)\]/).reverse(); + var lastKey = ''; + for (var i = 0, len = keys.length; i < len; i++) { + var name_1 = keys[i]; + if (name_1 !== '') { + var v = value; + value = {}; + value[lastKey = name_1] = (isNumber(v) ? parseFloat(v) : v); + } + } + if (lastKey === 'sorting') { + this._params[lastKey] = {}; + } + this._params[lastKey] = __WEBPACK_IMPORTED_MODULE_0_angular__["extend"](this._params[lastKey] || {}, value[lastKey]); + } + else { + if (newParameters[key] === undefined) { + } + else if (key === 'group') { + this._params[key] = this.parseGroup(newParameters[key]); + } + else { + this._params[key] = (isNumber(newParameters[key]) ? parseFloat(newParameters[key]) : newParameters[key]); + } + } + } + this.log('ngTable: set parameters', this._params); + return this; + }; + /** + * Trigger a reload of the data rows + */ + NgTableParams.prototype.reload = function () { + var _this = this; + var pData; + this._settings.$loading = true; + this.prevParamsMemento = __WEBPACK_IMPORTED_MODULE_0_angular__["copy"](this.createComparableParams()); + this.isCommittedDataset = true; + if (this.hasGroup()) { + pData = this.runInterceptorPipeline(this.$q.when(this._settings.getGroups(this))); + } + else { + var fn = this._settings.getData; + pData = this.runInterceptorPipeline(this.$q.when(fn(this))); + } + this.log('ngTable: reload data'); + var oldData = this.data; + return pData.then(function (data) { + _this._settings.$loading = false; + _this.errParamsMemento = null; + _this.data = data; + // note: I think it makes sense to publish this event even when data === oldData + // subscribers can always set a filter to only receive the event when data !== oldData + _this.ngTableEventsChannel.publishAfterReloadData(_this, data, oldData); + _this.reloadPages(); + return data; + }).catch(function (reason) { + _this.errParamsMemento = _this.prevParamsMemento; + // "rethrow" + return _this.$q.reject(reason); + }); + }; + NgTableParams.prototype.settings = function (newSettings) { + var _this = this; + if (newSettings === undefined) { + return this._settings; + } + var settings = __WEBPACK_IMPORTED_MODULE_3__ngTableSettings__["a" /* Settings */].merge(this._settings, newSettings); + var originalDataset = this._settings.dataset; + this._settings = settings; + // note: using != as want null and undefined to be treated the same + var hasDatasetChanged = newSettings.hasOwnProperty('dataset') && (newSettings.dataset != originalDataset); + if (hasDatasetChanged) { + if (this.isCommittedDataset) { + this.page(1); // reset page as a new dataset has been supplied + } + this.isCommittedDataset = false; + var fireEvent = function () { + _this.ngTableEventsChannel.publishDatasetChanged(_this, newSettings.dataset, originalDataset); + }; + if (this.initialEvents) { + this.initialEvents.push(fireEvent); + } + else { + fireEvent(); + } + } + this.log('ngTable: set settings', this._settings); + return this; + }; + NgTableParams.prototype.sorting = function (sorting, direction) { + if (typeof sorting === 'string') { + this.parameters({ + 'sorting': (_a = {}, _a[sorting] = direction || this.settings().defaultSort, _a) + }); + return this; + } + return sorting !== undefined ? this.parameters({ + 'sorting': sorting + }) : this._params.sorting; + var _a; + }; + NgTableParams.prototype.total = function (total) { + return total !== undefined ? this.settings({ + 'total': total + }) : this._settings.total; + }; + /** + * Returns the current parameter values uri-encoded. Set `asString` to + * true for the parameters to be returned as an array of strings of the form 'paramName=value' + * otherwise parameters returned as a key-value object + */ + NgTableParams.prototype.url = function (asString) { + if (asString === void 0) { asString = false; } + var pairs = (asString ? [] : {}); + for (var key in this._params) { + if (this._params.hasOwnProperty(key)) { + var item = this._params[key], name_2 = encodeURIComponent(key); + if (typeof item === "object") { + for (var subkey in item) { + if (isSignificantValue(item[subkey], key)) { + var pname = name_2 + "[" + encodeURIComponent(subkey) + "]"; + collectValue(item[subkey], pname); + } + } + } + else if (!__WEBPACK_IMPORTED_MODULE_0_angular__["isFunction"](item) && isSignificantValue(item, key)) { + collectValue(item, name_2); + } + } + } + return pairs; + function collectValue(value, key) { + if (isArray(pairs)) { + pairs.push(key + "=" + encodeURIComponent(value)); + } + else { + pairs[key] = encodeURIComponent(value); + } + } + function isArray(pairs) { + return asString; + } + function isSignificantValue(value, key) { + return key === "group" ? true : typeof value !== undefined && value !== ""; + } + }; + NgTableParams.prototype.createComparableParams = function () { + var group = this._params.group; + return { + params: this._params, + groupSortDirection: __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util__["a" /* isGroupingFun */])(group) ? group.sortDirection : undefined + }; + }; + NgTableParams.prototype.hasGlobalSearchFieldChanges = function () { + var currentVal = (this._params.filter && this._params.filter['$']); + var previousVal = (this.prevParamsMemento && this.prevParamsMemento.params.filter && this.prevParamsMemento.params.filter['$']); + return !__WEBPACK_IMPORTED_MODULE_0_angular__["equals"](currentVal, previousVal); + }; + NgTableParams.prototype.log = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + if (this._settings.debugMode && this.$log.debug) { + (_a = this.$log).debug.apply(_a, args); + } + var _a; + }; + NgTableParams.prototype.parseGroup = function (group) { + var defaultSort = this._settings.groupOptions.defaultSort; + if (!group) { + return group; + } + else if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util__["a" /* isGroupingFun */])(group)) { + if (group.sortDirection == null) { + group.sortDirection = defaultSort; + } + return group; + } + else if (typeof group === 'object') { + for (var key in group) { + if (group[key] == null) { + group[key] = defaultSort; + } + } + return group; + } + else { + return _a = {}, + _a[group] = defaultSort, + _a; + } + var _a; + }; + NgTableParams.prototype.runInterceptorPipeline = function (fetchedData) { + var _this = this; + return this._settings.interceptors.reduce(function (result, interceptor) { + var thenFn = (interceptor.response && interceptor.response.bind(interceptor)) || _this.$q.when; + var rejectFn = (interceptor.responseError && interceptor.responseError.bind(interceptor)) || _this.$q.reject; + return result.then(function (data) { + return thenFn(data, _this); + }, function (reason) { + return rejectFn(reason, _this); + }); + }, fetchedData); + }; + NgTableParams.init = function ($q, $log, ngTableDefaults, ngTableEventsChannel) { + __WEBPACK_IMPORTED_MODULE_0_angular__["extend"](NgTableParams.prototype, { + $q: $q, $log: $log, ngTableDefaults: ngTableDefaults, ngTableEventsChannel: ngTableEventsChannel + }); + }; + return NgTableParams; +}()); + +NgTableParams.init.$inject = ['$q', '$log', 'ngTableDefaults', 'ngTableEventsChannel']; /***/ }, -/* 10 */ -/* unknown exports provided */ -/* all exports used */ +/* 11 */ +/* exports provided: Settings */ +/* exports used: Settings */ /*!*************************************!*\ !*** ./src/core/ngTableSettings.ts ***! \*************************************/ /***/ function(module, exports, __webpack_require__) { "use strict"; -"use strict"; -var ng1 = __webpack_require__(/*! angular */ 0); -/** - * @private - */ -var NgTableSettings = (function () { - function NgTableSettings(ngTableDefaults, ngTableDefaultGetData, ngTableDefaultGetGroups) { - var _this = this; - this.ngTableDefaults = ngTableDefaults; - this.ngTableDefaultGetData = ngTableDefaultGetData; - this.ngTableDefaultGetGroups = ngTableDefaultGetGroups; - this.defaults = { - $loading: false, - dataset: null, - total: 0, - defaultSort: 'desc', - counts: [10, 25, 50, 100], - filterOptions: { - filterComparator: undefined, - filterDelay: 500, - filterDelayThreshold: 10000, - filterFilterName: undefined, - filterFn: undefined, - filterLayout: 'stack' - }, - getData: function (params) { - return _this.ngTableDefaultGetData(params.settings().dataset, params); - }, - getGroups: this.ngTableDefaultGetGroups, - groupOptions: { - defaultSort: 'asc', - isExpanded: true - }, - interceptors: [], - paginationMaxBlocks: 11, - paginationMinBlocks: 5, - sortingIndicator: 'span' - }; - } - NgTableSettings.prototype.createDefaults = function () { - return this.merge(this.defaults, this.ngTableDefaults.settings); - }; - NgTableSettings.prototype.merge = function (existing, newSettings) { - newSettings = ng1.extend({}, newSettings); - if (newSettings.filterOptions) { - newSettings.filterOptions = ng1.extend({}, existing.filterOptions || {}, newSettings.filterOptions); - } - if (newSettings.groupOptions) { - newSettings.groupOptions = ng1.extend({}, existing.groupOptions || {}, newSettings.groupOptions); - } - if (ng1.isArray(newSettings.dataset)) { - //auto-set the total from passed in dataset - newSettings.total = newSettings.dataset.length; - } - var results = ng1.extend({}, existing, newSettings); - if (ng1.isArray(newSettings.dataset)) { - this.optimizeFilterDelay(results); - } - return ng1.extend({}, existing, newSettings); - }; - NgTableSettings.prototype.optimizeFilterDelay = function (settings) { - // don't debounce by default filter input when working with small synchronous datasets - if (settings.filterOptions.filterDelay === this.defaults.filterOptions.filterDelay && - settings.total <= settings.filterOptions.filterDelayThreshold && - settings.getData === this.defaults.getData) { - settings.filterOptions.filterDelay = 0; - } - }; - NgTableSettings.$inject = ['ngTableDefaults', 'ngTableDefaultGetData', 'ngTableDefaultGetGroups']; - return NgTableSettings; -}()); -exports.NgTableSettings = NgTableSettings; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(/*! angular */ 0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__shared__ = __webpack_require__(/*! ../shared */ 4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__data__ = __webpack_require__(/*! ./data */ 3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__filtering__ = __webpack_require__(/*! ./filtering */ 6); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__grouping__ = __webpack_require__(/*! ./grouping */ 8); +/* harmony export (binding) */ __webpack_require__.d(exports, "a", function() { return Settings; }); + + + + + +/** + * Configuration settings for {@link NgTableParams} + */ +var Settings = (function () { + function Settings() { + /** + * Returns true whenever a call to `getData` is in progress + */ + this.$loading = false; + /** + * The page size buttons that should be displayed. Each value defined in the array + * determines the possible values that can be supplied to {@link NgTableParams} `page` + */ + this.counts = [10, 25, 50, 100]; + /** + * An array that contains all the data rows that table should manage. + * The `gateData` function will be used to manage the data rows + * that ultimately will be displayed. + */ + this.dataset = undefined; + this.dataOptions = new __WEBPACK_IMPORTED_MODULE_2__data__["a" /* DataSettings */](); + this.debugMode = false; + /** + * The total number of data rows before paging has been applied. + * Typically you will not need to supply this yourself + */ + this.total = 0; + /** + * The default sort direction that will be used whenever a sorting is supplied that + * does not define its own sort direction + */ + this.defaultSort = 'desc'; + this.filterOptions = new __WEBPACK_IMPORTED_MODULE_3__filtering__["a" /* FilterSettings */](); + /** + * The function that will be used fetch data rows. Leave undefined to let the {@link IDefaultGetData} + * service provide a default implementation that will work with the `dataset` array you supply. + * + * Typically you will supply a custom function when you need to execute filtering, paging and sorting + * on the server + */ + this.getData = Settings.defaultGetData; + /** + * The function that will be used group data rows according to the groupings returned by {@link NgTableParams} `group` + */ + this.getGroups = Settings.defaultGetGroups; + this.groupOptions = new __WEBPACK_IMPORTED_MODULE_4__grouping__["a" /* GroupSettings */](); + /** + * The collection of interceptors that should apply to the results of a call to + * the `getData` function before the data rows are displayed in the table + */ + this.interceptors = new Array(); + /** + * Configuration for the template that will display the page size buttons + */ + this.paginationMaxBlocks = 11; + /** + * Configuration for the template that will display the page size buttons + */ + this.paginationMinBlocks = 5; + /** + * The html tag that will be used to display the sorting indicator in the table header + */ + this.sortingIndicator = 'span'; + __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__shared__["a" /* checkClassInit */])(Settings); + } + Settings.createWithOverrides = function () { + __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__shared__["a" /* checkClassInit */])(Settings); + return Settings.merge(Settings.instance, Settings.ngTableDefaults.settings || {}); + }; + Settings.merge = function (existing, newSettings) { + __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__shared__["a" /* checkClassInit */])(Settings); + var optionalPropNames = ['dataset']; + var results = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__shared__["b" /* assignPartialDeep */])(__WEBPACK_IMPORTED_MODULE_0_angular__["copy"](existing), newSettings, function (key) { return optionalPropNames.indexOf(key) !== -1; }, function (destValue, srcValue, key) { + // copy *reference* to dataset + if (key === 'dataset') { + return srcValue; + } + return undefined; + }); + if (newSettings.dataset) { + results.total = newSettings.dataset.length; + Settings.optimizeFilterDelay(results); + } + return results; + }; + Settings.optimizeFilterDelay = function (settings) { + // don't debounce by default filter input when working with small synchronous datasets + if (settings.filterOptions.filterDelay === Settings.instance.filterOptions.filterDelay && + settings.total <= settings.filterOptions.filterDelayThreshold && + settings.getData === Settings.instance.getData) { + settings.filterOptions.filterDelay = 0; + } + }; + Settings.init = function (ngTableDefaultGetData, ngTableDefaultGetGroups, ngTableDefaults) { + Settings.defaultGetData = function (params) { + return ngTableDefaultGetData(params.settings().dataset, params); + }; + Settings.defaultGetGroups = ngTableDefaultGetGroups; + Settings.ngTableDefaults = ngTableDefaults; + Settings.isInitialized = true; + Settings.instance = new Settings(); + }; + return Settings; +}()); + +Settings.isInitialized = false; +Settings.init.$inject = ['ngTableDefaultGetData', 'ngTableDefaultGetGroups', 'ngTableDefaults']; /***/ }, -/* 11 */ -/* unknown exports provided */ -/* all exports used */ +/* 12 */ +/* exports provided: convertSortToOrderBy, isGroupingFun */ +/* exports used: isGroupingFun, convertSortToOrderBy */ /*!**************************!*\ !*** ./src/core/util.ts ***! \**************************/ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { "use strict"; -"use strict"; -/** - * @private - */ -function convertSortToOrderBy(sorting) { - var result = []; - for (var column in sorting) { - result.push((sorting[column] === "asc" ? "+" : "-") + column); - } - return result; -} -exports.convertSortToOrderBy = convertSortToOrderBy; -/** - * @private - */ -function isGroupingFun(val) { - return typeof val === 'function'; -} -exports.isGroupingFun = isGroupingFun; +/* harmony export (immutable) */ exports["b"] = convertSortToOrderBy; +/* harmony export (immutable) */ exports["a"] = isGroupingFun; +/** + * @private + */ +function convertSortToOrderBy(sorting) { + var result = []; + for (var column in sorting) { + result.push((sorting[column] === "asc" ? "+" : "-") + column); + } + return result; +} +/** + * @private + */ +function isGroupingFun(val) { + return typeof val === 'function'; +} /***/ }, -/* 12 */, -/* 13 */ -/* unknown exports provided */ -/* all exports used */ +/* 13 */, +/* 14 */ +/* exports provided: ngTable */ +/* exports used: ngTable */ /*!******************************************!*\ !*** ./src/browser/ngTable.directive.ts ***! \******************************************/ /***/ function(module, exports, __webpack_require__) { "use strict"; -"use strict"; -var ng1 = __webpack_require__(/*! angular */ 0); -ngTable.$inject = ['$q', '$parse']; -/** - * Directive that instantiates {@link NgTableController NgTableController}. - * @ngdoc directive - * @name ngTable - * @example - * - * ```html - * - * - * - * - * - *
- * {{user.name}} - * - * {{user.age}} - *
- * ``` - */ -function ngTable($q, $parse) { - return { - restrict: 'A', - priority: 1001, - scope: true, - controller: 'ngTableController', - compile: function (element) { - var columns = [], i = 0, dataRow, groupRow; - var rows = []; - ng1.forEach(element.find('tr'), function (tr) { - rows.push(ng1.element(tr)); - }); - dataRow = rows.filter(function (tr) { return !tr.hasClass('ng-table-group'); })[0]; - groupRow = rows.filter(function (tr) { return tr.hasClass('ng-table-group'); })[0]; - if (!dataRow) { - return undefined; - } - ng1.forEach(dataRow.find('td'), function (item) { - var el = ng1.element(item); - if (el.attr('ignore-cell') && 'true' === el.attr('ignore-cell')) { - return; - } - var getAttrValue = function (attr) { - return el.attr('x-data-' + attr) || el.attr('data-' + attr) || el.attr(attr); - }; - var setAttrValue = function (attr, value) { - if (el.attr('x-data-' + attr)) { - el.attr('x-data-' + attr, value); - } - else if (el.attr('data' + attr)) { - el.attr('data' + attr, value); - } - else { - el.attr(attr, value); - } - }; - var parsedAttribute = function (attr) { - var expr = getAttrValue(attr); - if (!expr) { - return undefined; - } - var localValue; - var getter = function (context) { - if (localValue !== undefined) { - return localValue; - } - return $parse(expr)(context); - }; - getter.assign = function ($scope, value) { - var parsedExpr = $parse(expr); - if (parsedExpr.assign) { - // we should be writing back to the parent scope as this is where the expression - // came from - parsedExpr.assign($scope.$parent, value); - } - else { - localValue = value; - } - }; - return getter; - }; - var titleExpr = getAttrValue('title-alt') || getAttrValue('title'); - if (titleExpr) { - el.attr('data-title-text', '{{' + titleExpr + '}}'); // this used in responsive table - } - // NOTE TO MAINTAINERS: if you add extra fields to a $column be sure to extend ngTableColumn with - // a corresponding "safe" default - columns.push({ - id: i++, - title: parsedAttribute('title'), - titleAlt: parsedAttribute('title-alt'), - headerTitle: parsedAttribute('header-title'), - sortable: parsedAttribute('sortable'), - 'class': parsedAttribute('header-class'), - filter: parsedAttribute('filter'), - groupable: parsedAttribute('groupable'), - headerTemplateURL: parsedAttribute('header'), - filterData: parsedAttribute('filter-data'), - show: el.attr("ng-if") ? parsedAttribute('ng-if') : undefined - }); - if (groupRow || el.attr("ng-if")) { - // change ng-if to bind to our column definition which we know will be writable - // because this will potentially increase the $watch count, only do so if we already have an - // ng-if or when we definitely need to change visibility of the columns. - // currently only ngTableGroupRow directive needs to change visibility - setAttrValue('ng-if', '$columns[' + (columns.length - 1) + '].show(this)'); - } - }); - return function (scope, element, attrs, controller) { - scope.$columns = columns = controller.buildColumns(columns); - controller.setupBindingsToInternalScope(attrs.ngTable); - controller.loadFilterData(columns); - controller.compileDirectiveTemplates(); - }; - } - }; -} -exports.ngTable = ngTable; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(/*! angular */ 0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__); +/* harmony export (immutable) */ exports["a"] = ngTable; + +ngTable.$inject = ['$q', '$parse']; +/** + * Directive that instantiates {@link NgTableController NgTableController}. + * @ngdoc directive + * @name ngTable + * @example + * + * ```html + * + * + * + * + * + *
+ * {{user.name}} + * + * {{user.age}} + *
+ * ``` + */ +function ngTable($q, $parse) { + return { + restrict: 'A', + priority: 1001, + scope: true, + controller: 'ngTableController', + compile: function (element) { + var compiledColumns = [], i = 0, dataRow, groupRow; + var rows = []; + __WEBPACK_IMPORTED_MODULE_0_angular__["forEach"](element.find('tr'), function (tr) { + rows.push(__WEBPACK_IMPORTED_MODULE_0_angular__["element"](tr)); + }); + dataRow = rows.filter(function (tr) { return !tr.hasClass('ng-table-group'); })[0]; + groupRow = rows.filter(function (tr) { return tr.hasClass('ng-table-group'); })[0]; + if (!dataRow) { + return undefined; + } + __WEBPACK_IMPORTED_MODULE_0_angular__["forEach"](dataRow.find('td'), function (item) { + var el = __WEBPACK_IMPORTED_MODULE_0_angular__["element"](item); + if (el.attr('ignore-cell') && 'true' === el.attr('ignore-cell')) { + return; + } + var getAttrValue = function (attr) { + return el.attr('x-data-' + attr) || el.attr('data-' + attr) || el.attr(attr); + }; + var setAttrValue = function (attr, value) { + if (el.attr('x-data-' + attr)) { + el.attr('x-data-' + attr, value); + } + else if (el.attr('data' + attr)) { + el.attr('data' + attr, value); + } + else { + el.attr(attr, value); + } + }; + var parsedAttribute = function (attr) { + var expr = getAttrValue(attr); + if (!expr) { + return undefined; + } + var localValue; + var getter = function (context) { + if (localValue !== undefined) { + return localValue; + } + return $parse(expr)(context); + }; + getter.assign = function ($scope, value) { + var parsedExpr = $parse(expr); + if (parsedExpr.assign) { + // we should be writing back to the parent scope as this is where the expression + // came from + parsedExpr.assign($scope.$parent, value); + } + else { + localValue = value; + } + }; + return getter; + }; + var titleExpr = getAttrValue('title-alt') || getAttrValue('title'); + if (titleExpr) { + el.attr('data-title-text', '{{' + titleExpr + '}}'); // this used in responsive table + } + // NOTE TO MAINTAINERS: if you add extra fields to a $column be sure to extend ngTableColumn with + // a corresponding "safe" default + compiledColumns.push({ + id: i++, + title: parsedAttribute('title'), + titleAlt: parsedAttribute('title-alt'), + headerTitle: parsedAttribute('header-title'), + sortable: parsedAttribute('sortable'), + 'class': parsedAttribute('header-class'), + filter: parsedAttribute('filter'), + groupable: parsedAttribute('groupable'), + headerTemplateURL: parsedAttribute('header'), + filterData: parsedAttribute('filter-data'), + show: el.attr("ng-if") ? parsedAttribute('ng-if') : undefined + }); + if (groupRow || el.attr("ng-if")) { + // change ng-if to bind to our column definition which we know will be writable + // because this will potentially increase the $watch count, only do so if we already have an + // ng-if or when we definitely need to change visibility of the columns. + // currently only ngTableGroupRow directive needs to change visibility + setAttrValue('ng-if', '$columns[' + (compiledColumns.length - 1) + '].show(this)'); + } + }); + return function (scope, element, attrs, controller) { + var columns = scope.$columns = controller.buildColumns(compiledColumns); + controller.setupBindingsToInternalScope(attrs.ngTable); + controller.loadFilterData(columns); + controller.compileDirectiveTemplates(); + }; + } + }; +} /***/ }, -/* 14 */ -/* unknown exports provided */ -/* all exports used */ +/* 15 */ +/* exports provided: NgTableColumn */ +/* exports used: NgTableColumn */ /*!**************************************!*\ !*** ./src/browser/ngTableColumn.ts ***! \**************************************/ /***/ function(module, exports, __webpack_require__) { "use strict"; -/** - * ngTable: Table + Angular JS - * - * @author Vitalii Savchuk - * @url https://github.com/esvit/ng-table/ - * @license New BSD License - */ -"use strict"; -var ng1 = __webpack_require__(/*! angular */ 0); -/** - * @private - */ -function isScopeLike(object) { - return object != null && ng1.isFunction(object.$new); -} -/** - * @private - * Service to construct a $column definition used by {@link ngTable ngTable} directive - */ -var NgTableColumn = (function () { - function NgTableColumn() { - } - /** - * Creates a $column for use within a header template - * - * @param column the initial definition for $column to build - * @param defaultScope the $scope to supply to the $column getter methods when not supplied by caller - * @param columns a reference to the $columns array to make available on the context supplied to the - * $column getter methods - */ - NgTableColumn.prototype.buildColumn = function (column, defaultScope, columns) { - // note: we're not modifying the original column object. This helps to avoid unintended side affects - var extendedCol = Object.create(column); - var defaults = this.createDefaults(); - var _loop_1 = function(prop) { - if (extendedCol[prop] === undefined) { - extendedCol[prop] = defaults[prop]; - } - if (!ng1.isFunction(extendedCol[prop])) { - // wrap raw field values with "getter" functions - // - this is to ensure consistency with how ngTable.compile builds columns - // - note that the original column object is being "proxied"; this is important - // as it ensure that any changes to the original object will be returned by the "getter" - var getterSetter = function getterSetter() { - if (arguments.length === 1 && !isScopeLike(arguments[0])) { - getterSetter.assign(null, arguments[0]); - } - else { - return column[prop]; - } - }; - getterSetter.assign = function ($scope, value) { - column[prop] = value; - }; - extendedCol[prop] = getterSetter; - } - // satisfy the arguments expected by the function returned by parsedAttribute in the ngTable directive - var getterFn = extendedCol[prop]; - extendedCol[prop] = function () { - if (arguments.length === 1 && !isScopeLike(arguments[0])) { - getterFn.assign(defaultScope, arguments[0]); - } - else { - var scope = arguments[0] || defaultScope; - var context = Object.create(scope); - ng1.extend(context, { - $column: extendedCol, - $columns: columns - }); - return getterFn.call(column, context); - } - }; - if (getterFn.assign) { - extendedCol[prop].assign = getterFn.assign; - } - else { - var wrappedGetterFn_1 = extendedCol[prop]; - var localValue_1; - var getterSetter = function getterSetter() { - if (arguments.length === 1 && !isScopeLike(arguments[0])) { - getterSetter.assign(null, arguments[0]); - } - else { - return localValue_1 != undefined ? localValue_1 : wrappedGetterFn_1.apply(extendedCol, arguments); - } - }; - getterSetter.assign = function ($scope, value) { - localValue_1 = value; - }; - extendedCol[prop] = getterSetter; - } - }; - for (var prop in defaults) { - _loop_1(prop); - } - return extendedCol; - }; - NgTableColumn.prototype.createDefaults = function () { - return { - 'class': this.createGetterSetter(''), - filter: this.createGetterSetter(false), - groupable: this.createGetterSetter(false), - filterData: ng1.noop, - headerTemplateURL: this.createGetterSetter(false), - headerTitle: this.createGetterSetter(''), - sortable: this.createGetterSetter(false), - show: this.createGetterSetter(true), - title: this.createGetterSetter(''), - titleAlt: this.createGetterSetter('') - }; - }; - NgTableColumn.prototype.createGetterSetter = function (initialValue) { - var value = initialValue; - var getterSetter = function getterSetter() { - if (arguments.length === 1 && !isScopeLike(arguments[0])) { - getterSetter.assign(null, arguments[0]); - } - else { - return value; - } - }; - getterSetter.assign = function ($scope, newValue) { - value = newValue; - }; - return getterSetter; - }; - NgTableColumn.$inject = []; - return NgTableColumn; -}()); -exports.NgTableColumn = NgTableColumn; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(/*! angular */ 0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__); +/* harmony export (binding) */ __webpack_require__.d(exports, "a", function() { return NgTableColumn; }); +/** + * ngTable: Table + Angular JS + * + * @author Vitalii Savchuk + * @url https://github.com/esvit/ng-table/ + * @license New BSD License + */ + +/** + * @private + */ +function isScopeLike(object) { + return object != null && __WEBPACK_IMPORTED_MODULE_0_angular__["isFunction"](object.$new); +} +/** + * @private + * Service to construct a $column definition used by {@link ngTable ngTable} directive + */ +var NgTableColumn = (function () { + function NgTableColumn() { + } + /** + * Creates a $column for use within a header template + * + * @param column the initial definition for $column to build + * @param defaultScope the $scope to supply to the $column getter methods when not supplied by caller + * @param columns a reference to the $columns array to make available on the context supplied to the + * $column getter methods + */ + NgTableColumn.prototype.buildColumn = function (column, defaultScope, columns) { + // note: we're not modifying the original column object. This helps to avoid unintended side affects + var extendedCol = Object.create(column); + var defaults = this.createDefaults(); + var _loop_1 = function (prop) { + if (extendedCol[prop] === undefined) { + extendedCol[prop] = defaults[prop]; + } + if (!__WEBPACK_IMPORTED_MODULE_0_angular__["isFunction"](extendedCol[prop])) { + // wrap raw field values with "getter" functions + // - this is to ensure consistency with how ngTable.compile builds columns + // - note that the original column object is being "proxied"; this is important + // as it ensure that any changes to the original object will be returned by the "getter" + var getterSetter = function getterSetter() { + if (arguments.length === 1 && !isScopeLike(arguments[0])) { + getterSetter.assign(null, arguments[0]); + } + else { + return column[prop]; + } + }; + getterSetter.assign = function ($scope, value) { + column[prop] = value; + }; + extendedCol[prop] = getterSetter; + } + // satisfy the arguments expected by the function returned by parsedAttribute in the ngTable directive + var getterFn = extendedCol[prop]; + extendedCol[prop] = function () { + if (arguments.length === 1 && !isScopeLike(arguments[0])) { + getterFn.assign(defaultScope, arguments[0]); + } + else { + var scope = arguments[0] || defaultScope; + var context = Object.create(scope); + __WEBPACK_IMPORTED_MODULE_0_angular__["extend"](context, { + $column: extendedCol, + $columns: columns + }); + return getterFn.call(column, context); + } + }; + if (getterFn.assign) { + extendedCol[prop].assign = getterFn.assign; + } + else { + var wrappedGetterFn_1 = extendedCol[prop]; + var localValue_1; + var getterSetter = function getterSetter() { + if (arguments.length === 1 && !isScopeLike(arguments[0])) { + getterSetter.assign(null, arguments[0]); + } + else { + return localValue_1 != undefined ? localValue_1 : wrappedGetterFn_1.apply(extendedCol, arguments); + } + }; + getterSetter.assign = function ($scope, value) { + localValue_1 = value; + }; + extendedCol[prop] = getterSetter; + } + }; + for (var prop in defaults) { + _loop_1(prop); + } + return extendedCol; + }; + NgTableColumn.prototype.createDefaults = function () { + return { + 'class': this.createGetterSetter(''), + filter: this.createGetterSetter(false), + groupable: this.createGetterSetter(false), + filterData: __WEBPACK_IMPORTED_MODULE_0_angular__["noop"], + headerTemplateURL: this.createGetterSetter(false), + headerTitle: this.createGetterSetter(''), + sortable: this.createGetterSetter(false), + show: this.createGetterSetter(true), + title: this.createGetterSetter(''), + titleAlt: this.createGetterSetter('') + }; + }; + NgTableColumn.prototype.createGetterSetter = function (initialValue) { + var value = initialValue; + var getterSetter = function getterSetter() { + if (arguments.length === 1 && !isScopeLike(arguments[0])) { + getterSetter.assign(null, arguments[0]); + } + else { + return value; + } + }; + getterSetter.assign = function ($scope, newValue) { + value = newValue; + }; + return getterSetter; + }; + return NgTableColumn; +}()); + +NgTableColumn.$inject = []; /***/ }, -/* 15 */ -/* unknown exports provided */ -/* all exports used */ +/* 16 */ +/* exports provided: ngTableColumnsBinding */ +/* exports used: ngTableColumnsBinding */ /*!********************************************************!*\ !*** ./src/browser/ngTableColumnsBinding.directive.ts ***! \********************************************************/ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { "use strict"; -/** - * ngTable: Table + Angular JS - * - * @author Vitalii Savchuk - * @url https://github.com/esvit/ng-table/ - * @license New BSD License - */ -"use strict"; -ngTableColumnsBinding.$inject = ["$parse"]; -/** - * One-way data binds the $columns array generated by ngTable/ngTableDynamic to the specified - * expression. - * This allows the $columns array created for the table to be accessed outside of the html table - * markup. - * - * @ngdoc directive - * - * @example - * ```html - * - * ``` - */ -function ngTableColumnsBinding($parse) { - var directive = { - restrict: 'A', - link: linkFn - }; - return directive; - function linkFn($scope, $element, $attrs) { - var setter = $parse($attrs.ngTableColumnsBinding).assign; - if (setter) { - $scope.$watch('$columns', function (newColumns) { - var shallowClone = (newColumns || []).slice(0); - setter($scope, shallowClone); - }); - } - } -} -exports.ngTableColumnsBinding = ngTableColumnsBinding; +/* harmony export (immutable) */ exports["a"] = ngTableColumnsBinding; +/** + * ngTable: Table + Angular JS + * + * @author Vitalii Savchuk + * @url https://github.com/esvit/ng-table/ + * @license New BSD License + */ +ngTableColumnsBinding.$inject = ["$parse"]; +/** + * One-way data binds the $columns array generated by ngTable/ngTableDynamic to the specified + * expression. + * This allows the $columns array created for the table to be accessed outside of the html table + * markup. + * + * @ngdoc directive + * + * @example + * ```html + *
+ * ``` + */ +function ngTableColumnsBinding($parse) { + var directive = { + restrict: 'A', + link: linkFn + }; + return directive; + function linkFn($scope, $element, $attrs) { + var setter = $parse($attrs.ngTableColumnsBinding).assign; + if (setter) { + $scope.$watch('$columns', function (newColumns) { + var shallowClone = (newColumns || []).slice(0); + setter($scope, shallowClone); + }); + } + } +} /***/ }, -/* 16 */ -/* unknown exports provided */ -/* all exports used */ +/* 17 */ +/* exports provided: NgTableController */ +/* exports used: NgTableController */ /*!******************************************!*\ !*** ./src/browser/ngTableController.ts ***! \******************************************/ /***/ function(module, exports, __webpack_require__) { "use strict"; -/** - * ngTable: Table + Angular JS - * - * @author Vitalii Savchuk - * @url https://github.com/esvit/ng-table/ - * @license New BSD License - */ -"use strict"; -var ng1 = __webpack_require__(/*! angular */ 0); -var core_1 = __webpack_require__(/*! ../core */ 1); -/** - * The controller for the {@link ngTable ngTable} and {@link ngTableDynamic ngTableDynamic} directives - */ -var NgTableController = (function () { - function NgTableController($scope, $timeout, $parse, $compile, $attrs, $element, $document, ngTableColumn, ngTableEventsChannel) { - this.$scope = $scope; - this.$parse = $parse; - this.$compile = $compile; - this.$attrs = $attrs; - this.$element = $element; - this.$document = $document; - this.ngTableColumn = ngTableColumn; - this.ngTableEventsChannel = ngTableEventsChannel; - var isFirstTimeLoad = true; - $scope.$filterRow = { disabled: false }; - $scope.$loading = false; - // until such times as the directive uses an isolated scope, we need to ensure that the check for - // the params field only consults the "own properties" of the $scope. This is to avoid seeing the params - // field on a $scope higher up in the prototype chain - if (!$scope.hasOwnProperty("params")) { - $scope.params = new core_1.NgTableParams(true); - } - this.delayFilter = (function () { - var timer; - return function (callback, ms) { - $timeout.cancel(timer); - timer = $timeout(callback, ms); - }; - })(); - // watch for when a new NgTableParams is bound to the scope - // CRITICAL: the watch must be for reference and NOT value equality; this is because NgTableParams maintains - // the current data page as a field. Checking this for value equality would be terrible for performance - // and potentially cause an error if the items in that array has circular references - this.$scope.$watch('params', function (newParams, oldParams) { - if (newParams === oldParams || !newParams) { - return; - } - newParams.reload(); - }, false); - this.subscribeToTableEvents(); - } - Object.defineProperty(NgTableController.prototype, "hasVisibleFilterColumn", { - get: function () { - var _this = this; - if (!this.$scope.$columns) - return false; - return this.some(this.$scope.$columns, function ($column) { - return $column.show(_this.$scope) && !!$column.filter(_this.$scope); - }); - }, - enumerable: true, - configurable: true - }); - NgTableController.prototype.onDataReloadStatusChange = function (newStatus /*, oldStatus*/) { - if (!newStatus || this.$scope.params.hasErrorState()) { - return; - } - var currentParams = this.$scope.params; - var filterOptions = currentParams.settings().filterOptions; - if (currentParams.hasFilterChanges()) { - var applyFilter = function () { - currentParams.page(1); - currentParams.reload(); - }; - if (filterOptions.filterDelay) { - this.delayFilter(applyFilter, filterOptions.filterDelay); - } - else { - applyFilter(); - } - } - else { - currentParams.reload(); - } - }; - NgTableController.prototype.compileDirectiveTemplates = function () { - if (!this.$element.hasClass('ng-table')) { - this.$scope.templates = { - header: (this.$attrs.templateHeader ? this.$attrs.templateHeader : 'ng-table/header.html'), - pagination: (this.$attrs.templatePagination ? this.$attrs.templatePagination : 'ng-table/pager.html') - }; - this.$element.addClass('ng-table'); - var headerTemplate = null; - // $element.find('> thead').length === 0 doesn't work on jqlite - var theadFound_1 = false; - ng1.forEach(this.$element.children(), function (e) { - if (e.tagName === 'THEAD') { - theadFound_1 = true; - } - }); - if (!theadFound_1) { - headerTemplate = ng1.element('', this.$document); - this.$element.prepend(headerTemplate); - } - var paginationTemplate = ng1.element('
', this.$document); - this.$element.after(paginationTemplate); - if (headerTemplate) { - this.$compile(headerTemplate)(this.$scope); - } - this.$compile(paginationTemplate)(this.$scope); - } - }; - NgTableController.prototype.loadFilterData = function ($columns) { - var _this = this; - ng1.forEach($columns, function ($column) { - var result = $column.filterData(_this.$scope); - if (!result) { - delete $column.filterData; - return undefined; - } - if (isPromiseLike(result)) { - delete $column.filterData; - return result.then(function (data) { - // our deferred can eventually return arrays, functions and objects - if (!ng1.isArray(data) && !ng1.isFunction(data) && !ng1.isObject(data)) { - // if none of the above was found - we just want an empty array - data = []; - } - $column.data = data; - }); - } - else { - return $column.data = result; - } - }); - function isPromiseLike(val) { - return val && typeof val === 'object' && typeof val.then === 'function'; - } - }; - NgTableController.prototype.buildColumns = function (columns) { - var _this = this; - // todo: use strictNullChecks and remove guard clause - var result = []; - (columns || []).forEach(function (col) { - result.push(_this.ngTableColumn.buildColumn(col, _this.$scope, result)); - }); - return result; - }; - NgTableController.prototype.parseNgTableDynamicExpr = function (attr) { - if (!attr || attr.indexOf(" with ") > -1) { - var parts = attr.split(/\s+with\s+/); - return { - tableParams: parts[0], - columns: parts[1] - }; - } - else { - throw new Error('Parse error (expected example: ng-table-dynamic=\'tableParams with cols\')'); - } - }; - NgTableController.prototype.setupBindingsToInternalScope = function (tableParamsExpr) { - // note: this we're setting up watches to simulate angular's isolated scope bindings - var _this = this; - // note: is REALLY important to watch for a change to the ngTableParams *reference* rather than - // $watch for value equivalence. This is because ngTableParams references the current page of data as - // a field and it's important not to watch this - this.$scope.$watch(tableParamsExpr, function (params) { - if (params === undefined) { - return; - } - _this.$scope.params = params; - }, false); - this.setupFilterRowBindingsToInternalScope(); - this.setupGroupRowBindingsToInternalScope(); - }; - NgTableController.prototype.setupFilterRowBindingsToInternalScope = function () { - var _this = this; - if (this.$attrs.showFilter) { - this.$scope.$parent.$watch(this.$attrs.showFilter, function (value) { - _this.$scope.show_filter = value; - }); - } - else { - this.$scope.$watch(function () { return _this.hasVisibleFilterColumn; }, function (value) { - _this.$scope.show_filter = value; - }); - } - if (this.$attrs.disableFilter) { - this.$scope.$parent.$watch(this.$attrs.disableFilter, function (value) { - _this.$scope.$filterRow.disabled = value; - }); - } - }; - NgTableController.prototype.setupGroupRowBindingsToInternalScope = function () { - var _this = this; - this.$scope.$groupRow = { show: false }; - if (this.$attrs.showGroup) { - var showGroupGetter_1 = this.$parse(this.$attrs.showGroup); - this.$scope.$parent.$watch(showGroupGetter_1, function (value) { - _this.$scope.$groupRow.show = value; - }); - if (showGroupGetter_1.assign) { - // setup two-way databinding thus allowing ngTableGrowRow to assign to the showGroup expression - this.$scope.$watch('$groupRow.show', function (value) { - showGroupGetter_1.assign(_this.$scope.$parent, value); - }); - } - } - else { - this.$scope.$watch('params.hasGroup()', function (newValue) { - _this.$scope.$groupRow.show = newValue; - }); - } - }; - NgTableController.prototype.getVisibleColumns = function () { - var _this = this; - return (this.$scope.$columns || []).filter(function (c) { - return c.show(_this.$scope); - }); - }; - NgTableController.prototype.subscribeToTableEvents = function () { - var _this = this; - this.$scope.$watch('params.isDataReloadRequired()', function (newStatus /*, oldStatus*/) { - _this.onDataReloadStatusChange(newStatus); - }); - this.ngTableEventsChannel.onAfterReloadData(function (params, newDatapage) { - var visibleColumns = _this.getVisibleColumns(); - if (params.hasGroup()) { - _this.$scope.$groups = (newDatapage || []); - _this.$scope.$groups.visibleColumnCount = visibleColumns.length; - } - else { - _this.$scope.$data = (newDatapage || []); - _this.$scope.$data.visibleColumnCount = visibleColumns.length; - } - }, this.$scope, function (publisher) { return _this.$scope.params === publisher; }); - this.ngTableEventsChannel.onPagesChanged(function (params, newPages) { - _this.$scope.pages = newPages; - }, this.$scope, function (publisher) { return _this.$scope.params === publisher; }); - }; - NgTableController.prototype.some = function (array, predicate) { - var found = false; - for (var i = 0; i < array.length; i++) { - var obj = array[i]; - if (predicate(obj)) { - found = true; - break; - } - } - return found; - }; - NgTableController.$inject = [ - '$scope', '$timeout', '$parse', '$compile', '$attrs', '$element', '$document', 'ngTableColumn', 'ngTableEventsChannel' - ]; - return NgTableController; -}()); -exports.NgTableController = NgTableController; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(/*! angular */ 0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__core__ = __webpack_require__(/*! ../core */ 1); +/* harmony export (binding) */ __webpack_require__.d(exports, "a", function() { return NgTableController; }); +/** + * ngTable: Table + Angular JS + * + * @author Vitalii Savchuk + * @url https://github.com/esvit/ng-table/ + * @license New BSD License + */ + + +/** + * The controller for the {@link ngTable ngTable} and {@link ngTableDynamic ngTableDynamic} directives + */ +var NgTableController = (function () { + function NgTableController($scope, $timeout, $parse, $compile, $attrs, $element, $document, ngTableColumn, ngTableEventsChannel) { + this.$scope = $scope; + this.$parse = $parse; + this.$compile = $compile; + this.$attrs = $attrs; + this.$element = $element; + this.$document = $document; + this.ngTableColumn = ngTableColumn; + this.ngTableEventsChannel = ngTableEventsChannel; + var isFirstTimeLoad = true; + $scope.$filterRow = { disabled: false }; + $scope.$loading = false; + // until such times as the directive uses an isolated scope, we need to ensure that the check for + // the params field only consults the "own properties" of the $scope. This is to avoid seeing the params + // field on a $scope higher up in the prototype chain + if (!$scope.hasOwnProperty("params")) { + $scope.params = new __WEBPACK_IMPORTED_MODULE_1__core__["a" /* NgTableParams */](true); + } + this.delayFilter = (function () { + var timer; + return function (callback, ms) { + $timeout.cancel(timer); + timer = $timeout(callback, ms); + }; + })(); + // watch for when a new NgTableParams is bound to the scope + // CRITICAL: the watch must be for reference and NOT value equality; this is because NgTableParams maintains + // the current data page as a field. Checking this for value equality would be terrible for performance + // and potentially cause an error if the items in that array has circular references + this.$scope.$watch('params', function (newParams, oldParams) { + if (newParams === oldParams || !newParams) { + return; + } + newParams.reload(); + }, false); + this.subscribeToTableEvents(); + } + Object.defineProperty(NgTableController.prototype, "hasVisibleFilterColumn", { + get: function () { + var _this = this; + if (!this.$scope.$columns) + return false; + return this.some(this.$scope.$columns, function ($column) { + return $column.show(_this.$scope) && !!$column.filter(_this.$scope); + }); + }, + enumerable: true, + configurable: true + }); + NgTableController.prototype.onDataReloadStatusChange = function (newStatus /*, oldStatus*/) { + if (!newStatus || this.$scope.params.hasErrorState()) { + return; + } + var currentParams = this.$scope.params; + var filterOptions = currentParams.settings().filterOptions; + if (currentParams.hasFilterChanges()) { + var applyFilter = function () { + currentParams.page(1); + currentParams.reload(); + }; + if (filterOptions.filterDelay) { + this.delayFilter(applyFilter, filterOptions.filterDelay); + } + else { + applyFilter(); + } + } + else { + currentParams.reload(); + } + }; + NgTableController.prototype.compileDirectiveTemplates = function () { + if (!this.$element.hasClass('ng-table')) { + this.$scope.templates = { + header: (this.$attrs.templateHeader ? this.$attrs.templateHeader : 'ng-table/header.html'), + pagination: (this.$attrs.templatePagination ? this.$attrs.templatePagination : 'ng-table/pager.html') + }; + this.$element.addClass('ng-table'); + var headerTemplate = void 0; + // $element.find('> thead').length === 0 doesn't work on jqlite + var theadFound_1 = false; + __WEBPACK_IMPORTED_MODULE_0_angular__["forEach"](this.$element.children(), function (e) { + if (e.tagName === 'THEAD') { + theadFound_1 = true; + } + }); + if (!theadFound_1) { + headerTemplate = __WEBPACK_IMPORTED_MODULE_0_angular__["element"]('', this.$document); + this.$element.prepend(headerTemplate); + } + var paginationTemplate = __WEBPACK_IMPORTED_MODULE_0_angular__["element"]('
', this.$document); + this.$element.after(paginationTemplate); + if (headerTemplate) { + this.$compile(headerTemplate)(this.$scope); + } + this.$compile(paginationTemplate)(this.$scope); + } + }; + NgTableController.prototype.loadFilterData = function ($columns) { + var _this = this; + __WEBPACK_IMPORTED_MODULE_0_angular__["forEach"]($columns, function ($column) { + var result = $column.filterData(_this.$scope); + if (!result) { + delete $column.filterData; + return undefined; + } + if (isPromiseLike(result)) { + delete $column.filterData; + return result.then(function (data) { + // our deferred can eventually return arrays, functions and objects + if (!__WEBPACK_IMPORTED_MODULE_0_angular__["isArray"](data) && !__WEBPACK_IMPORTED_MODULE_0_angular__["isFunction"](data) && !__WEBPACK_IMPORTED_MODULE_0_angular__["isObject"](data)) { + // if none of the above was found - we just want an empty array + data = []; + } + $column.data = data; + }); + } + else { + return $column.data = result; + } + }); + function isPromiseLike(val) { + return val && typeof val === 'object' && typeof val.then === 'function'; + } + }; + NgTableController.prototype.buildColumns = function (columns) { + var _this = this; + // todo: use strictNullChecks and remove guard clause + var result = []; + (columns || []).forEach(function (col) { + result.push(_this.ngTableColumn.buildColumn(col, _this.$scope, result)); + }); + return result; + }; + NgTableController.prototype.parseNgTableDynamicExpr = function (attr) { + if (!attr || attr.indexOf(" with ") > -1) { + var parts = attr.split(/\s+with\s+/); + return { + tableParams: parts[0], + columns: parts[1] + }; + } + else { + throw new Error('Parse error (expected example: ng-table-dynamic=\'tableParams with cols\')'); + } + }; + NgTableController.prototype.setupBindingsToInternalScope = function (tableParamsExpr) { + // note: this we're setting up watches to simulate angular's isolated scope bindings + var _this = this; + // note: is REALLY important to watch for a change to the ngTableParams *reference* rather than + // $watch for value equivalence. This is because ngTableParams references the current page of data as + // a field and it's important not to watch this + this.$scope.$watch(tableParamsExpr, function (params) { + if (params === undefined) { + return; + } + _this.$scope.params = params; + }, false); + this.setupFilterRowBindingsToInternalScope(); + this.setupGroupRowBindingsToInternalScope(); + }; + NgTableController.prototype.setupFilterRowBindingsToInternalScope = function () { + var _this = this; + if (this.$attrs.showFilter) { + this.$scope.$parent.$watch(this.$attrs.showFilter, function (value) { + _this.$scope.show_filter = value; + }); + } + else { + this.$scope.$watch(function () { return _this.hasVisibleFilterColumn; }, function (value) { + _this.$scope.show_filter = value; + }); + } + if (this.$attrs.disableFilter) { + this.$scope.$parent.$watch(this.$attrs.disableFilter, function (value) { + _this.$scope.$filterRow.disabled = value; + }); + } + }; + NgTableController.prototype.setupGroupRowBindingsToInternalScope = function () { + var _this = this; + this.$scope.$groupRow = { show: false }; + if (this.$attrs.showGroup) { + var showGroupGetter_1 = this.$parse(this.$attrs.showGroup); + this.$scope.$parent.$watch(showGroupGetter_1, function (value) { + _this.$scope.$groupRow.show = value; + }); + if (showGroupGetter_1.assign) { + // setup two-way databinding thus allowing ngTableGrowRow to assign to the showGroup expression + this.$scope.$watch('$groupRow.show', function (value) { + showGroupGetter_1.assign(_this.$scope.$parent, value); + }); + } + } + else { + this.$scope.$watch('params.hasGroup()', function (newValue) { + _this.$scope.$groupRow.show = newValue; + }); + } + }; + NgTableController.prototype.getVisibleColumns = function () { + var _this = this; + return (this.$scope.$columns || []).filter(function (c) { + return c.show(_this.$scope); + }); + }; + NgTableController.prototype.subscribeToTableEvents = function () { + var _this = this; + this.$scope.$watch('params.isDataReloadRequired()', function (newStatus /*, oldStatus*/) { + _this.onDataReloadStatusChange(newStatus); + }); + this.ngTableEventsChannel.onAfterReloadData(function (params, newDatapage) { + var visibleColumns = _this.getVisibleColumns(); + if (params.hasGroup()) { + _this.$scope.$groups = (newDatapage || []); + _this.$scope.$groups.visibleColumnCount = visibleColumns.length; + } + else { + _this.$scope.$data = (newDatapage || []); + _this.$scope.$data.visibleColumnCount = visibleColumns.length; + } + }, this.$scope, function (publisher) { return _this.$scope.params === publisher; }); + this.ngTableEventsChannel.onPagesChanged(function (params, newPages) { + _this.$scope.pages = newPages; + }, this.$scope, function (publisher) { return _this.$scope.params === publisher; }); + }; + NgTableController.prototype.some = function (array, predicate) { + var found = false; + for (var i = 0; i < array.length; i++) { + var obj = array[i]; + if (predicate(obj)) { + found = true; + break; + } + } + return found; + }; + return NgTableController; +}()); + +NgTableController.$inject = [ + '$scope', '$timeout', '$parse', '$compile', '$attrs', '$element', '$document', 'ngTableColumn', 'ngTableEventsChannel' +]; /***/ }, -/* 17 */ -/* unknown exports provided */ -/* all exports used */ +/* 18 */ +/* exports provided: ngTableDynamic */ +/* exports used: ngTableDynamic */ /*!*************************************************!*\ !*** ./src/browser/ngTableDynamic.directive.ts ***! \*************************************************/ /***/ function(module, exports, __webpack_require__) { "use strict"; -/** - * ngTable: Table + Angular JS - * - * @author Vitalii Savchuk - * @url https://github.com/esvit/ng-table/ - * @license New BSD License - */ -"use strict"; -var ng1 = __webpack_require__(/*! angular */ 0); -ngTableDynamic.$inject = []; -/** - * A dynamic version of the {@link ngTable ngTable} directive that accepts a dynamic list of columns - * definitions to render - * @ngdoc directive - * - * @example - * ```html - *
- * - * - * - *
{{row[col.field]}}
- * ``` - */ -function ngTableDynamic() { - return { - restrict: 'A', - priority: 1001, - scope: true, - controller: 'ngTableController', - compile: function (tElement) { - var row; - // IE 8 fix :not(.ng-table-group) selector - ng1.forEach(tElement.find('tr'), function (tr) { - tr = ng1.element(tr); - if (!tr.hasClass('ng-table-group') && !row) { - row = tr; - } - }); - if (!row) { - return undefined; - } - ng1.forEach(row.find('td'), function (item) { - var el = ng1.element(item); - var getAttrValue = function (attr) { - return el.attr('x-data-' + attr) || el.attr('data-' + attr) || el.attr(attr); - }; - // this used in responsive table - var titleExpr = getAttrValue('title'); - if (!titleExpr) { - el.attr('data-title-text', '{{$columns[$index].titleAlt(this) || $columns[$index].title(this)}}'); - } - var showExpr = el.attr('ng-if'); - if (!showExpr) { - el.attr('ng-if', '$columns[$index].show(this)'); - } - }); - return function (scope, element, attrs, controller) { - var expr = controller.parseNgTableDynamicExpr(attrs.ngTableDynamic); - controller.setupBindingsToInternalScope(expr.tableParams); - controller.compileDirectiveTemplates(); - scope.$watchCollection(expr.columns, function (newCols /*, oldCols*/) { - scope.$columns = controller.buildColumns(newCols); - controller.loadFilterData(scope.$columns); - }); - }; - } - }; -} -exports.ngTableDynamic = ngTableDynamic; - - -/***/ }, -/* 18 */ -/* unknown exports provided */ -/* all exports used */ -/*!********************************************!*\ - !*** ./src/browser/ngTableFilterConfig.ts ***! - \********************************************/ -/***/ function(module, exports, __webpack_require__) { - -"use strict"; -/** - * ngTable: Table + Angular JS - * - * @author Vitalii Savchuk - * @url https://github.com/esvit/ng-table/ - * @license New BSD License - */ -"use strict"; -var ng1 = __webpack_require__(/*! angular */ 0); -/** - * The angular provider used to configure the behaviour of the `NgTableFilterConfig` service. - */ -var NgTableFilterConfigProvider = (function () { - function NgTableFilterConfigProvider($injector) { - var _this = this; - this.defaultConfig = { - defaultBaseUrl: 'ng-table/filters/', - defaultExt: '.html', - aliasUrls: {} - }; - this.$get = function () { - return $injector.instantiate(NgTableFilterConfig, { config: ng1.copy(_this.config) }); - }; - this.$get.$inject = []; - this.resetConfigs(); - } - /** - * Reset back to factory defaults the config values that `NgTableFilterConfig` service will use - */ - NgTableFilterConfigProvider.prototype.resetConfigs = function () { - this.config = this.defaultConfig; - }; - /** - * Set the config values used by `NgTableFilterConfig` service - */ - NgTableFilterConfigProvider.prototype.setConfig = function (customConfig) { - var mergeConfig = ng1.extend({}, this.config, customConfig); - mergeConfig.aliasUrls = ng1.extend({}, this.config.aliasUrls, customConfig.aliasUrls); - this.config = mergeConfig; - }; - NgTableFilterConfigProvider.$inject = ['$injector']; - return NgTableFilterConfigProvider; -}()); -exports.NgTableFilterConfigProvider = NgTableFilterConfigProvider; -/** - * Exposes configuration values and methods used to return the location of the html - * templates used to render the filter row of an ng-table directive - */ -var NgTableFilterConfig = (function () { - function NgTableFilterConfig( - /** - * Readonly copy of the final values used to configure the service. - */ - config) { - this.config = config; - } - /** - * Return the url of the html filter template registered with the alias supplied - */ - NgTableFilterConfig.prototype.getUrlForAlias = function (aliasName, filterKey) { - return this.config.aliasUrls[aliasName] || this.config.defaultBaseUrl + aliasName + this.config.defaultExt; - }; - /** - * Return the url of the html filter template for the supplied definition and key. - * For more information see the documentation for {@link IFilterTemplateMap} - */ - NgTableFilterConfig.prototype.getTemplateUrl = function (filterDef, filterKey) { - var filterName; - if (typeof filterDef !== 'string') { - filterName = filterDef.id; - } - else { - filterName = filterDef; - } - if (filterName.indexOf('/') !== -1) { - return filterName; - } - return this.getUrlForAlias(filterName, filterKey); - }; - NgTableFilterConfig.$inject = ['config']; - return NgTableFilterConfig; -}()); -exports.NgTableFilterConfig = NgTableFilterConfig; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(/*! angular */ 0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__); +/* harmony export (immutable) */ exports["a"] = ngTableDynamic; +/** + * ngTable: Table + Angular JS + * + * @author Vitalii Savchuk + * @url https://github.com/esvit/ng-table/ + * @license New BSD License + */ + +function toArray(arr) { + return Array.prototype.slice.call(arr); +} +ngTableDynamic.$inject = []; +/** + * A dynamic version of the {@link ngTable ngTable} directive that accepts a dynamic list of columns + * definitions to render + * @ngdoc directive + * + * @example + * ```html + * + * + * + * + *
{{row[col.field]}}
+ * ``` + */ +function ngTableDynamic() { + return { + restrict: 'A', + priority: 1001, + scope: true, + controller: 'ngTableController', + compile: function (tElement) { + var tRows = toArray(tElement[0].getElementsByTagName('tr')); + var tRow = tRows.filter(function (tr) { return !__WEBPACK_IMPORTED_MODULE_0_angular__["element"](tr).hasClass('ng-table-group'); })[0]; + if (!tRow) { + return undefined; + } + toArray(tRow.getElementsByTagName('td')).forEach(function (tCell) { + var el = __WEBPACK_IMPORTED_MODULE_0_angular__["element"](tCell); + var getAttrValue = function (attr) { + return el.attr('x-data-' + attr) || el.attr('data-' + attr) || el.attr(attr); + }; + // this used in responsive table + var titleExpr = getAttrValue('title'); + if (!titleExpr) { + el.attr('data-title-text', '{{$columns[$index].titleAlt(this) || $columns[$index].title(this)}}'); + } + var showExpr = el.attr('ng-if'); + if (!showExpr) { + el.attr('ng-if', '$columns[$index].show(this)'); + } + }); + return function (scope, element, attrs, controller) { + var expr = controller.parseNgTableDynamicExpr(attrs.ngTableDynamic); + controller.setupBindingsToInternalScope(expr.tableParams); + controller.compileDirectiveTemplates(); + scope.$watchCollection(expr.columns, function (newCols /*, oldCols*/) { + scope.$columns = controller.buildColumns(newCols); + controller.loadFilterData(scope.$columns); + }); + }; + } + }; +} /***/ }, /* 19 */ -/* unknown exports provided */ -/* all exports used */ +/* exports provided: ngTableFilterRow */ +/* exports used: ngTableFilterRow */ /*!***************************************************!*\ !*** ./src/browser/ngTableFilterRow.directive.ts ***! \***************************************************/ /***/ function(module, exports, __webpack_require__) { "use strict"; -/** - * ngTable: Table + Angular JS - * - * @author Vitalii Savchuk - * @url https://github.com/esvit/ng-table/ - * @license New BSD License - */ -"use strict"; -var templateUrl = __webpack_require__(/*! ./filterRow.html */ 42); -ngTableFilterRow.$inject = []; -/** - * directive that renders the filter header row for a table - * @ngdoc directive - * @example - * ```html - * - * ``` - */ -function ngTableFilterRow() { - var directive = { - restrict: 'E', - replace: true, - templateUrl: templateUrl, - scope: true, - controller: 'ngTableFilterRowController', - controllerAs: '$ctrl' - }; - return directive; -} -exports.ngTableFilterRow = ngTableFilterRow; +/* harmony export (immutable) */ exports["a"] = ngTableFilterRow; +/** + * ngTable: Table + Angular JS + * + * @author Vitalii Savchuk + * @url https://github.com/esvit/ng-table/ + * @license New BSD License + */ +var templateUrl = __webpack_require__(/*! ./filterRow.html */ 35); +ngTableFilterRow.$inject = []; +/** + * directive that renders the filter header row for a table + * @ngdoc directive + * @example + * ```html + * + * ``` + */ +function ngTableFilterRow() { + var directive = { + restrict: 'E', + replace: true, + templateUrl: templateUrl, + scope: true, + controller: 'ngTableFilterRowController', + controllerAs: '$ctrl' + }; + return directive; +} /***/ }, /* 20 */ -/* unknown exports provided */ -/* all exports used */ +/* exports provided: NgTableFilterRowController */ +/* exports used: NgTableFilterRowController */ /*!***************************************************!*\ !*** ./src/browser/ngTableFilterRowController.ts ***! \***************************************************/ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { "use strict"; -/** - * ngTable: Table + Angular JS - * - * @author Vitalii Savchuk - * @url https://github.com/esvit/ng-table/ - * @license New BSD License - */ -"use strict"; -/** - * Controller for the {@link ngTableFilterRow ngTableFilterRow} directive - */ -var NgTableFilterRowController = (function () { - function NgTableFilterRowController($scope, ngTableFilterConfig) { - this.config = ngTableFilterConfig; - // todo: stop doing this. Why? - // * scope inheritance makes it hard to know how supplies functions - // * scope is not a concept in angular 2 - // make function available to filter templates - $scope.getFilterPlaceholderValue = this.getFilterPlaceholderValue.bind(this); - } - NgTableFilterRowController.prototype.getFilterCellCss = function (filter, layout) { - if (layout !== 'horizontal') { - return 's12'; - } - var size = Object.keys(filter).length; - var width = parseInt((12 / size).toString(), 10); - return 's' + width; - }; - NgTableFilterRowController.prototype.getFilterPlaceholderValue = function (filterDef, filterKey) { - if (typeof filterDef === 'string') { - return ''; - } - else { - return filterDef.placeholder; - } - }; - NgTableFilterRowController.$inject = ['$scope', 'ngTableFilterConfig']; - return NgTableFilterRowController; -}()); -exports.NgTableFilterRowController = NgTableFilterRowController; +/* harmony export (binding) */ __webpack_require__.d(exports, "a", function() { return NgTableFilterRowController; }); +/** + * ngTable: Table + Angular JS + * + * @author Vitalii Savchuk + * @url https://github.com/esvit/ng-table/ + * @license New BSD License + */ +/** + * Controller for the {@link ngTableFilterRow ngTableFilterRow} directive + */ +var NgTableFilterRowController = (function () { + function NgTableFilterRowController($scope, ngTableFilterConfig) { + this.config = ngTableFilterConfig; + // todo: stop doing this. Why? + // * scope inheritance makes it hard to know how supplies functions + // * scope is not a concept in angular 2 + // make function available to filter templates + $scope.getFilterPlaceholderValue = this.getFilterPlaceholderValue.bind(this); + } + NgTableFilterRowController.prototype.getFilterCellCss = function (filter, layout) { + if (layout !== 'horizontal') { + return 's12'; + } + var size = Object.keys(filter).length; + var width = parseInt((12 / size).toString(), 10); + return 's' + width; + }; + NgTableFilterRowController.prototype.getFilterPlaceholderValue = function (filterDef, filterKey) { + if (typeof filterDef === 'string') { + return ''; + } + else { + return filterDef.placeholder; + } + }; + return NgTableFilterRowController; +}()); + +NgTableFilterRowController.$inject = ['$scope', 'ngTableFilterConfig']; /***/ }, /* 21 */ -/* unknown exports provided */ -/* all exports used */ +/* exports provided: ngTableGroupRow */ +/* exports used: ngTableGroupRow */ /*!**************************************************!*\ !*** ./src/browser/ngTableGroupRow.directive.ts ***! \**************************************************/ /***/ function(module, exports, __webpack_require__) { "use strict"; -/** - * ngTable: Table + Angular JS - * - * @author Vitalii Savchuk - * @url https://github.com/esvit/ng-table/ - * @license New BSD License - */ -"use strict"; -var templateUrl = __webpack_require__(/*! ./groupRow.html */ 47); -ngTableGroupRow.$inject = []; -/** - * directive that renders the group header row for a table - * @ngdoc directive - * @example - * ```html - * - * ``` - */ -function ngTableGroupRow() { - var directive = { - restrict: 'E', - replace: true, - templateUrl: templateUrl, - scope: true, - controller: 'ngTableGroupRowController', - controllerAs: '$ctrl' - }; - return directive; -} -exports.ngTableGroupRow = ngTableGroupRow; +/* harmony export (immutable) */ exports["a"] = ngTableGroupRow; +/** + * ngTable: Table + Angular JS + * + * @author Vitalii Savchuk + * @url https://github.com/esvit/ng-table/ + * @license New BSD License + */ +var templateUrl = __webpack_require__(/*! ./groupRow.html */ 40); +ngTableGroupRow.$inject = []; +/** + * directive that renders the group header row for a table + * @ngdoc directive + * @example + * ```html + * + * ``` + */ +function ngTableGroupRow() { + var directive = { + restrict: 'E', + replace: true, + templateUrl: templateUrl, + scope: true, + controller: 'ngTableGroupRowController', + controllerAs: '$ctrl' + }; + return directive; +} /***/ }, /* 22 */ -/* unknown exports provided */ -/* all exports used */ +/* exports provided: NgTableGroupRowController */ +/* exports used: NgTableGroupRowController */ /*!**************************************************!*\ !*** ./src/browser/ngTableGroupRowController.ts ***! \**************************************************/ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { "use strict"; -/** - * ngTable: Table + Angular JS - * - * @author Vitalii Savchuk - * @url https://github.com/esvit/ng-table/ - * @license New BSD License - */ -"use strict"; -/** - * Controller for the {@link ngTableGroupRow ngTableGroupRow} directive - */ -var NgTableGroupRowController = (function () { - function NgTableGroupRowController($scope) { - var _this = this; - this.$scope = $scope; - this.groupFns = []; - $scope.$watch('params.group()', function (newGrouping) { - _this.setGroup(newGrouping); - }, true); - } - NgTableGroupRowController.prototype.getGroupables = function () { - var _this = this; - var groupableCols = this.$scope.$columns.filter(function ($column) { return !!$column.groupable(_this.$scope); }); - return this.groupFns.concat(groupableCols); - }; - NgTableGroupRowController.prototype.getGroupTitle = function (group) { - return this.isGroupingFunc(group) ? group.title : group.title(this.$scope); - }; - NgTableGroupRowController.prototype.getVisibleColumns = function () { - var _this = this; - return this.$scope.$columns.filter(function ($column) { return $column.show(_this.$scope); }); - }; - NgTableGroupRowController.prototype.groupBy = function (group) { - if (this.isSelectedGroup(group)) { - this.changeSortDirection(); - } - else { - if (this.isGroupingFunc(group)) { - this.$scope.params.group(group); - } - else { - // it's OK, we know that groupable will return a string - // this is guaranteed by getGroupables returning only - // columns that return (truthy) strings - this.$scope.params.group(group.groupable(this.$scope)); - } - } - }; - NgTableGroupRowController.prototype.isSelectedGroup = function (group) { - if (this.isGroupingFunc(group)) { - return group === this.$scope.$selGroup; - } - else { - return group.groupable(this.$scope) === this.$scope.$selGroup; - } - }; - NgTableGroupRowController.prototype.toggleDetail = function () { - this.$scope.params.settings().groupOptions.isExpanded = !this.$scope.params.settings().groupOptions.isExpanded; - return this.$scope.params.reload(); - }; - NgTableGroupRowController.prototype.changeSortDirection = function () { - var newDirection; - if (this.$scope.params.hasGroup(this.$scope.$selGroup, 'asc')) { - newDirection = 'desc'; - } - else if (this.$scope.params.hasGroup(this.$scope.$selGroup, 'desc')) { - newDirection = ''; - } - else { - newDirection = 'asc'; - } - this.$scope.params.group(this.$scope.$selGroup, newDirection); - }; - NgTableGroupRowController.prototype.findGroupColumn = function (groupKey) { - var _this = this; - return this.$scope.$columns.filter(function ($column) { return $column.groupable(_this.$scope) === groupKey; })[0]; - }; - NgTableGroupRowController.prototype.isGroupingFunc = function (val) { - return typeof val === 'function'; - }; - NgTableGroupRowController.prototype.setGroup = function (grouping) { - var existingGroupCol = this.findGroupColumn(this.$scope.$selGroup); - if (existingGroupCol && existingGroupCol.show.assign) { - existingGroupCol.show.assign(this.$scope, true); - } - if (this.isGroupingFunc(grouping)) { - this.groupFns = [grouping]; - this.$scope.$selGroup = grouping; - this.$scope.$selGroupTitle = grouping.title; - } - else { - // note: currently only one group is implemented - var groupKey = Object.keys(grouping || {})[0]; - var groupedColumn = this.findGroupColumn(groupKey); - if (groupedColumn) { - this.$scope.$selGroupTitle = groupedColumn.title(this.$scope); - this.$scope.$selGroup = groupKey; - if (groupedColumn.show.assign) { - groupedColumn.show.assign(this.$scope, false); - } - } - } - }; - NgTableGroupRowController.$inject = ['$scope']; - return NgTableGroupRowController; -}()); -exports.NgTableGroupRowController = NgTableGroupRowController; +/* harmony export (binding) */ __webpack_require__.d(exports, "a", function() { return NgTableGroupRowController; }); +/** + * ngTable: Table + Angular JS + * + * @author Vitalii Savchuk + * @url https://github.com/esvit/ng-table/ + * @license New BSD License + */ +/** + * Controller for the {@link ngTableGroupRow ngTableGroupRow} directive + */ +var NgTableGroupRowController = (function () { + function NgTableGroupRowController($scope) { + var _this = this; + this.$scope = $scope; + this.groupFns = []; + $scope.$watch('params.group()', function (newGrouping) { + _this.setGroup(newGrouping); + }, true); + } + NgTableGroupRowController.prototype.getGroupables = function () { + var _this = this; + var groupableCols = this.$scope.$columns.filter(function ($column) { return !!$column.groupable(_this.$scope); }); + return this.groupFns.concat(groupableCols); + }; + NgTableGroupRowController.prototype.getGroupTitle = function (group) { + return this.isGroupingFunc(group) ? group.title : group.title(this.$scope); + }; + NgTableGroupRowController.prototype.getVisibleColumns = function () { + var _this = this; + return this.$scope.$columns.filter(function ($column) { return $column.show(_this.$scope); }); + }; + NgTableGroupRowController.prototype.groupBy = function (group) { + if (this.isSelectedGroup(group)) { + this.changeSortDirection(); + } + else { + if (this.isGroupingFunc(group)) { + this.$scope.params.group(group); + } + else { + // it's OK, we know that groupable will return a string + // this is guaranteed by getGroupables returning only + // columns that return (truthy) strings + this.$scope.params.group(group.groupable(this.$scope)); + } + } + }; + NgTableGroupRowController.prototype.isSelectedGroup = function (group) { + if (this.isGroupingFunc(group)) { + return group === this.$scope.$selGroup; + } + else { + return group.groupable(this.$scope) === this.$scope.$selGroup; + } + }; + NgTableGroupRowController.prototype.toggleDetail = function () { + this.$scope.params.settings().groupOptions.isExpanded = !this.$scope.params.settings().groupOptions.isExpanded; + return this.$scope.params.reload(); + }; + NgTableGroupRowController.prototype.changeSortDirection = function () { + var newDirection; + if (this.$scope.params.hasGroup(this.$scope.$selGroup, 'asc')) { + newDirection = 'desc'; + } + else if (this.$scope.params.hasGroup(this.$scope.$selGroup, 'desc')) { + newDirection = ''; + } + else { + newDirection = 'asc'; + } + this.$scope.params.group(this.$scope.$selGroup, newDirection); + }; + NgTableGroupRowController.prototype.findGroupColumn = function (groupKey) { + var _this = this; + return this.$scope.$columns.filter(function ($column) { return $column.groupable(_this.$scope) === groupKey; })[0]; + }; + NgTableGroupRowController.prototype.isGroupingFunc = function (val) { + return typeof val === 'function'; + }; + NgTableGroupRowController.prototype.setGroup = function (grouping) { + var existingGroupCol = this.findGroupColumn(this.$scope.$selGroup); + if (existingGroupCol && existingGroupCol.show.assign) { + existingGroupCol.show.assign(this.$scope, true); + } + if (this.isGroupingFunc(grouping)) { + this.groupFns = [grouping]; + this.$scope.$selGroup = grouping; + this.$scope.$selGroupTitle = grouping.title || ''; + } + else { + // note: currently only one group is implemented + var groupKey = Object.keys(grouping || {})[0]; + var groupedColumn = this.findGroupColumn(groupKey); + if (groupedColumn) { + this.$scope.$selGroupTitle = groupedColumn.title(this.$scope); + this.$scope.$selGroup = groupKey; + if (groupedColumn.show.assign) { + groupedColumn.show.assign(this.$scope, false); + } + } + } + }; + return NgTableGroupRowController; +}()); + +NgTableGroupRowController.$inject = ['$scope']; /***/ }, /* 23 */ -/* unknown exports provided */ -/* all exports used */ +/* exports provided: ngTablePagination */ +/* exports used: ngTablePagination */ /*!****************************************************!*\ !*** ./src/browser/ngTablePagination.directive.ts ***! \****************************************************/ /***/ function(module, exports, __webpack_require__) { "use strict"; -/** - * ngTable: Table + Angular JS - * - * @author Vitalii Savchuk - * @url https://github.com/esvit/ng-table/ - * @license New BSD License - */ -"use strict"; -var ng1 = __webpack_require__(/*! angular */ 0); -ngTablePagination.$inject = ['$compile', '$document', 'ngTableEventsChannel']; -/** - * Directive that renders the table pagination controls - * @ngdoc directive - */ -function ngTablePagination($compile, $document, ngTableEventsChannel) { - return { - restrict: 'A', - scope: { - 'params': '=ngTablePagination', - 'templateUrl': '=' - }, - replace: false, - link: function (scope, element /*, attrs*/) { - ngTableEventsChannel.onAfterReloadData(function (pubParams) { - scope.pages = pubParams.generatePagesArray(); - }, scope, function (pubParams) { - return pubParams === scope.params; - }); - scope.$watch('templateUrl', function (templateUrl) { - if (templateUrl === undefined) { - return; - } - var template = ng1.element('
', $document); - element.append(template); - $compile(template)(scope); - }); - } - }; -} -exports.ngTablePagination = ngTablePagination; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(/*! angular */ 0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__); +/* harmony export (immutable) */ exports["a"] = ngTablePagination; +/** + * ngTable: Table + Angular JS + * + * @author Vitalii Savchuk + * @url https://github.com/esvit/ng-table/ + * @license New BSD License + */ + +ngTablePagination.$inject = ['$compile', '$document', 'ngTableEventsChannel']; +/** + * Directive that renders the table pagination controls + * @ngdoc directive + */ +function ngTablePagination($compile, $document, ngTableEventsChannel) { + return { + restrict: 'A', + scope: { + 'params': '=ngTablePagination', + 'templateUrl': '=' + }, + replace: false, + link: function (scope, element /*, attrs*/) { + ngTableEventsChannel.onAfterReloadData(function (pubParams) { + scope.pages = pubParams.generatePagesArray(); + }, scope, function (pubParams) { + return pubParams === scope.params; + }); + scope.$watch('templateUrl', function (templateUrl) { + if (templateUrl === undefined) { + return; + } + var template = __WEBPACK_IMPORTED_MODULE_0_angular__["element"]('
', $document); + element.append(template); + $compile(template)(scope); + }); + } + }; +} /***/ }, /* 24 */ -/* unknown exports provided */ -/* all exports used */ +/* exports provided: NgTableSelectFilterDsController, ngTableSelectFilterDs */ +/* exports used: ngTableSelectFilterDs */ /*!********************************************************!*\ !*** ./src/browser/ngTableSelectFilterDs.directive.ts ***! \********************************************************/ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { "use strict"; -/** - * ngTable: Table + Angular JS - * - * @author Vitalii Savchuk - * @url https://github.com/esvit/ng-table/ - * @license New BSD License - */ -"use strict"; -ngTableSelectFilterDs.$inject = []; -/** - * Takes the array returned by $column.filterData and makes it available as `$selectData` on the `$scope`. - * - * The resulting `$selectData` array will contain an extra item that is suitable to represent the user - * "deselecting" an item from a `` tag + * + * This directive is is focused on providing a datasource to an `ngOptions` directive + */ +function ngTableSelectFilterDs() { + // note: not using isolated or child scope "by design" + // this is to allow this directive to be combined with other directives that do + var directive = { + restrict: 'A', + controller: NgTableSelectFilterDsController + }; + return directive; +} +/** + * @private + */ +var NgTableSelectFilterDsController = (function () { + function NgTableSelectFilterDsController($scope, $parse, $attrs, $q) { + var _this = this; + this.$scope = $scope; + this.$attrs = $attrs; + this.$q = $q; + this.$column = $parse($attrs.ngTableSelectFilterDs)($scope); + $scope.$watch(function () { return _this.$column && _this.$column.data; }, function () { _this.bindDataSource(); }); + } + NgTableSelectFilterDsController.prototype.bindDataSource = function () { + var _this = this; + this.getSelectListData(this.$column).then(function (data) { + if (data && !_this.hasEmptyOption(data)) { + data.unshift({ id: '', title: '' }); + } + data = data || []; + _this.$scope.$selectData = data; + }); + }; + NgTableSelectFilterDsController.prototype.hasEmptyOption = function (data) { + var isMatch = false; + for (var i = 0; i < data.length; i++) { + var item = data[i]; + if (item && item.id === '') { + isMatch = true; + break; + } + } + return isMatch; + }; + NgTableSelectFilterDsController.prototype.getSelectListData = function ($column) { + var dataInput = $column.data; + var result; + if (typeof dataInput === 'function') { + result = dataInput(); + } + else { + result = dataInput; + } + return this.$q.when(result); + }; + return NgTableSelectFilterDsController; +}()); + +NgTableSelectFilterDsController.$inject = ['$scope', '$parse', '$attrs', '$q']; + /***/ }, /* 25 */ -/* unknown exports provided */ -/* all exports used */ +/* exports provided: ngTableSorterRow */ +/* exports used: ngTableSorterRow */ /*!***************************************************!*\ !*** ./src/browser/ngTableSorterRow.directive.ts ***! \***************************************************/ /***/ function(module, exports, __webpack_require__) { "use strict"; -/** - * ngTable: Table + Angular JS - * - * @author Vitalii Savchuk - * @url https://github.com/esvit/ng-table/ - * @license New BSD License - */ -"use strict"; -var templateUrl = __webpack_require__(/*! ./sorterRow.html */ 50); -ngTableSorterRow.$inject = []; -/** - * directive that renders the sorting header row for a table - * @ngdoc directive - * @example - * ```html - * - * ``` - */ -function ngTableSorterRow() { - var directive = { - restrict: 'E', - replace: true, - templateUrl: templateUrl, - scope: true, - controller: 'ngTableSorterRowController', - controllerAs: '$ctrl' - }; - return directive; -} -exports.ngTableSorterRow = ngTableSorterRow; +/* harmony export (immutable) */ exports["a"] = ngTableSorterRow; +/** + * ngTable: Table + Angular JS + * + * @author Vitalii Savchuk + * @url https://github.com/esvit/ng-table/ + * @license New BSD License + */ +var templateUrl = __webpack_require__(/*! ./sorterRow.html */ 43); +ngTableSorterRow.$inject = []; +/** + * directive that renders the sorting header row for a table + * @ngdoc directive + * @example + * ```html + * + * ``` + */ +function ngTableSorterRow() { + var directive = { + restrict: 'E', + replace: true, + templateUrl: templateUrl, + scope: true, + controller: 'ngTableSorterRowController', + controllerAs: '$ctrl' + }; + return directive; +} /***/ }, /* 26 */ -/* unknown exports provided */ -/* all exports used */ +/* exports provided: NgTableSorterRowController */ +/* exports used: NgTableSorterRowController */ /*!***************************************************!*\ !*** ./src/browser/ngTableSorterRowController.ts ***! \***************************************************/ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { "use strict"; -"use strict"; -/** - * Controller for the {@link ngTableSorterRow ngTableSorterRow} directive - */ -var NgTableSorterRowController = (function () { - function NgTableSorterRowController($scope) { - this.$scope = $scope; - } - NgTableSorterRowController.prototype.sortBy = function ($column, event) { - var parsedSortable = $column.sortable && $column.sortable(); - if (!parsedSortable || typeof parsedSortable !== 'string') { - return; - } - else { - var defaultSort = this.$scope.params.settings().defaultSort; - var inverseSort = (defaultSort === 'asc' ? 'desc' : 'asc'); - var sorting = this.$scope.params.sorting() && this.$scope.params.sorting()[parsedSortable] && (this.$scope.params.sorting()[parsedSortable] === defaultSort); - var sortingParams = (event.ctrlKey || event.metaKey) ? this.$scope.params.sorting() : {}; - sortingParams[parsedSortable] = (sorting ? inverseSort : defaultSort); - this.$scope.params.parameters({ - sorting: sortingParams - }); - } - }; - NgTableSorterRowController.$inject = ['$scope']; - return NgTableSorterRowController; -}()); -exports.NgTableSorterRowController = NgTableSorterRowController; +/* harmony export (binding) */ __webpack_require__.d(exports, "a", function() { return NgTableSorterRowController; }); +/** + * Controller for the {@link ngTableSorterRow ngTableSorterRow} directive + */ +var NgTableSorterRowController = (function () { + function NgTableSorterRowController($scope) { + this.$scope = $scope; + } + NgTableSorterRowController.prototype.sortBy = function ($column, event) { + var parsedSortable = $column.sortable && $column.sortable(); + if (!parsedSortable || typeof parsedSortable !== 'string') { + return; + } + else { + var defaultSort = this.$scope.params.settings().defaultSort; + var inverseSort = (defaultSort === 'asc' ? 'desc' : 'asc'); + var sorting = this.$scope.params.sorting() && this.$scope.params.sorting()[parsedSortable] && (this.$scope.params.sorting()[parsedSortable] === defaultSort); + var sortingParams = (event.ctrlKey || event.metaKey) ? this.$scope.params.sorting() : {}; + sortingParams[parsedSortable] = (sorting ? inverseSort : defaultSort); + this.$scope.params.parameters({ + sorting: sortingParams + }); + } + }; + return NgTableSorterRowController; +}()); + +NgTableSorterRowController.$inject = ['$scope']; /***/ }, /* 27 */ -/* unknown exports provided */ -/* all exports used */ -/*!******************************************!*\ - !*** ./src/browser/public-interfaces.ts ***! - \******************************************/ -/***/ function(module, exports) { - -"use strict"; -"use strict"; - - -/***/ }, -/* 28 */ -/* unknown exports provided */ -/* all exports used */ +/* exports provided: DataSettings */ +/* exports used: DataSettings */ /*!***************************************!*\ !*** ./src/core/data/dataSettings.ts ***! \***************************************/ -/***/ function(module, exports) { - -"use strict"; -"use strict"; - - -/***/ }, -/* 29 */ -/* unknown exports provided */ -/* all exports used */ -/*!**********************************!*\ - !*** ./src/core/data/getData.ts ***! - \**********************************/ -/***/ function(module, exports) { - -"use strict"; -"use strict"; - - -/***/ }, -/* 30 */ -/* unknown exports provided */ -/* all exports used */ -/*!**************************************!*\ - !*** ./src/core/data/interceptor.ts ***! - \**************************************/ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { "use strict"; -"use strict"; +/* harmony export (binding) */ __webpack_require__.d(exports, "a", function() { return DataSettings; }); +var DataSettings = (function () { + function DataSettings() { + this.applyFilter = true; + this.applyPaging = true; + this.applySort = true; + } + return DataSettings; +}()); + /***/ }, -/* 31 */ -/* unknown exports provided */ -/* all exports used */ +/* 28 */ +/* exports provided: NgTableDefaultGetDataProvider */ +/* exports used: NgTableDefaultGetDataProvider */ /*!************************************************!*\ !*** ./src/core/data/ngTableDefaultGetData.ts ***! \************************************************/ /***/ function(module, exports, __webpack_require__) { "use strict"; -/** - * ngTable: Table + Angular JS - * - * @author Vitalii Savchuk - * @url https://github.com/esvit/ng-table/ - * @license New BSD License - */ -"use strict"; -var ng1 = __webpack_require__(/*! angular */ 0); -/** - * Implementation of the {@link IDefaultGetDataProvider} interface - */ -var NgTableDefaultGetDataProvider = (function () { - function NgTableDefaultGetDataProvider() { - /** - * The name of a angular filter that knows how to apply the values returned by - * `NgTableParams.filter()` to restrict an array of data. - * (defaults to the angular `filter` filter service) - */ - this.filterFilterName = 'filter'; - /** - * The name of a angular filter that knows how to apply the values returned by - * `NgTableParams.orderBy()` to sort an array of data. - * (defaults to the angular `orderBy` filter service) - */ - this.sortingFilterName = 'orderBy'; - var provider = this; - this.$get = ngTableDefaultGetData; - ngTableDefaultGetData.$inject = ['$filter', 'ngTableEventsChannel']; - function ngTableDefaultGetData($filter, ngTableEventsChannel) { - var defaultDataOptions = { applyFilter: true, applySort: true, applyPaging: true }; - getData.applyPaging = applyPaging; - getData.getFilterFn = getFilterFn; - getData.getOrderByFn = getOrderByFn; - return getData; - function getFilterFn(params) { - var filterOptions = params.settings().filterOptions; - if (ng1.isFunction(filterOptions.filterFn)) { - return filterOptions.filterFn; - } - else { - return $filter(filterOptions.filterFilterName || provider.filterFilterName); - } - } - function getOrderByFn(params) { - return $filter(provider.sortingFilterName); - } - function applyFilter(data, params) { - if (!params.hasFilter()) { - return data; - } - var filter = params.filter(true); - var filterKeys = Object.keys(filter); - var parsedFilter = filterKeys.reduce(function (result, key) { - result = setPath(result, filter[key], key); - return result; - }, {}); - var filterFn = getFilterFn(params); - return filterFn.call(params, data, parsedFilter, params.settings().filterOptions.filterComparator); - } - function applyPaging(data, params) { - var pagedData = data.slice((params.page() - 1) * params.count(), params.page() * params.count()); - params.total(data.length); // set total for recalc pagination - return pagedData; - } - function applySort(data, params) { - var orderBy = params.orderBy(); - var orderByFn = getOrderByFn(params); - return orderBy.length ? orderByFn(data, orderBy) : data; - } - function getData(data, params) { - if (data == null) { - return []; - } - var options = ng1.extend({}, defaultDataOptions, params.settings().dataOptions); - var fData = options.applyFilter ? applyFilter(data, params) : data; - ngTableEventsChannel.publishAfterDataFiltered(params, fData); - var orderedData = options.applySort ? applySort(fData, params) : fData; - ngTableEventsChannel.publishAfterDataSorted(params, orderedData); - return options.applyPaging ? applyPaging(orderedData, params) : orderedData; - } - // Sets the value at any depth in a nested object based on the path - // note: adapted from: underscore-contrib#setPath - function setPath(obj, value, path) { - var keys = path.split('.'); - var ret = obj; - var lastKey = keys[keys.length - 1]; - var target = ret; - var parentPathKeys = keys.slice(0, keys.length - 1); - parentPathKeys.forEach(function (key) { - if (!target.hasOwnProperty(key)) { - target[key] = {}; - } - target = target[key]; - }); - target[lastKey] = value; - return ret; - } - } - } - return NgTableDefaultGetDataProvider; -}()); -exports.NgTableDefaultGetDataProvider = NgTableDefaultGetDataProvider; - - -/***/ }, -/* 32 */ -/* unknown exports provided */ -/* all exports used */ -/*!**********************************!*\ - !*** ./src/core/data/results.ts ***! - \**********************************/ -/***/ function(module, exports) { - -"use strict"; -"use strict"; - - -/***/ }, -/* 33 */ -/* unknown exports provided */ -/* all exports used */ -/*!************************************************!*\ - !*** ./src/core/filtering/filterComparator.ts ***! - \************************************************/ -/***/ function(module, exports) { - -"use strict"; -"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(/*! angular */ 0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__); +/* harmony export (binding) */ __webpack_require__.d(exports, "a", function() { return NgTableDefaultGetDataProvider; }); +/** + * ngTable: Table + Angular JS + * + * @author Vitalii Savchuk + * @url https://github.com/esvit/ng-table/ + * @license New BSD License + */ + +/** + * Implementation of the {@link DefaultGetDataProvider} interface + */ +var NgTableDefaultGetDataProvider = (function () { + function NgTableDefaultGetDataProvider() { + /** + * The name of a angular filter that knows how to apply the values returned by + * `NgTableParams.filter()` to restrict an array of data. + * (defaults to the angular `filter` filter service) + */ + this.filterFilterName = 'filter'; + /** + * The name of a angular filter that knows how to apply the values returned by + * `NgTableParams.orderBy()` to sort an array of data. + * (defaults to the angular `orderBy` filter service) + */ + this.sortingFilterName = 'orderBy'; + var provider = this; + this.$get = ngTableDefaultGetData; + ngTableDefaultGetData.$inject = ['$filter', 'ngTableEventsChannel']; + function ngTableDefaultGetData($filter, ngTableEventsChannel) { + getData.applyPaging = applyPaging; + getData.getFilterFn = getFilterFn; + getData.getOrderByFn = getOrderByFn; + return getData; + function getFilterFn(params) { + var filterOptions = params.settings().filterOptions; + if (__WEBPACK_IMPORTED_MODULE_0_angular__["isFunction"](filterOptions.filterFn)) { + return filterOptions.filterFn; + } + else { + return $filter(filterOptions.filterFilterName || provider.filterFilterName); + } + } + function getOrderByFn(params) { + return $filter(provider.sortingFilterName); + } + function applyFilter(data, params) { + if (!params.hasFilter()) { + return data; + } + var filter = params.filter(true); + var filterKeys = Object.keys(filter); + var parsedFilter = filterKeys.reduce(function (result, key) { + result = setPath(result, filter[key], key); + return result; + }, {}); + var filterFn = getFilterFn(params); + return filterFn.call(params, data, parsedFilter, params.settings().filterOptions.filterComparator); + } + function applyPaging(data, params) { + var pagedData = data.slice((params.page() - 1) * params.count(), params.page() * params.count()); + params.total(data.length); // set total for recalc pagination + return pagedData; + } + function applySort(data, params) { + var orderBy = params.orderBy(); + var orderByFn = getOrderByFn(params); + return orderBy.length ? orderByFn(data, orderBy) : data; + } + function getData(data, params) { + if (data == null) { + return []; + } + var options = params.settings().dataOptions; + var fData = options.applyFilter ? applyFilter(data, params) : data; + ngTableEventsChannel.publishAfterDataFiltered(params, fData); + var orderedData = options.applySort ? applySort(fData, params) : fData; + ngTableEventsChannel.publishAfterDataSorted(params, orderedData); + return options.applyPaging ? applyPaging(orderedData, params) : orderedData; + } + // Sets the value at any depth in a nested object based on the path + // note: adapted from: underscore-contrib#setPath + function setPath(obj, value, path) { + var keys = path.split('.'); + var ret = obj; + var lastKey = keys[keys.length - 1]; + var target = ret; + var parentPathKeys = keys.slice(0, keys.length - 1); + parentPathKeys.forEach(function (key) { + if (!target.hasOwnProperty(key)) { + target[key] = {}; + } + target = target[key]; + }); + target[lastKey] = value; + return ret; + } + } + } + return NgTableDefaultGetDataProvider; +}()); + /***/ }, -/* 34 */ -/* unknown exports provided */ -/* all exports used */ -/*!******************************************!*\ - !*** ./src/core/filtering/filterFunc.ts ***! - \******************************************/ -/***/ function(module, exports) { - -"use strict"; -"use strict"; - - -/***/ }, -/* 35 */ -/* unknown exports provided */ -/* all exports used */ +/* 29 */ +/* exports provided: FilterSettings */ +/* exports used: FilterSettings */ /*!**********************************************!*\ !*** ./src/core/filtering/filterSettings.ts ***! \**********************************************/ -/***/ function(module, exports) { - -"use strict"; -"use strict"; - - -/***/ }, -/* 36 */ -/* unknown exports provided */ -/* all exports used */ -/*!*************************************!*\ - !*** ./src/core/filtering/index.ts ***! - \*************************************/ /***/ function(module, exports, __webpack_require__) { "use strict"; -"use strict"; -function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} -__export(__webpack_require__(/*! ./filterComparator */ 33)); -__export(__webpack_require__(/*! ./filterFunc */ 34)); -__export(__webpack_require__(/*! ./filterSettings */ 35)); +/* harmony export (binding) */ __webpack_require__.d(exports, "a", function() { return FilterSettings; }); +var FilterSettings = (function () { + function FilterSettings() { + /** + * Use this to determine how items are matched against the filter values. + * This setting is identical to the `comparator` parameter supported by the angular + * `$filter` filter service + * + * Defaults to `undefined` which will result in a case insensitive susbstring match when + * `DefaultGetData` service is supplying the implementation for the + * `Settings.getData` function + */ + this.filterComparator = undefined; // look for a substring match in case insensitive way + /** + * A duration to wait for the user to stop typing before applying the filter. + * Note: this delay will NOT be applied when *small* managed inmemory arrays are supplied as a + * `SettingsPartial.dataset` argument to `NgTableParams.settings`. + */ + this.filterDelay = 500; + /** + * The number of elements up to which a managed inmemory array is considered small + */ + this.filterDelayThreshold = 10000; + /** + * Overrides `DefaultGetDataProvider.filterFilterName`. + * The value supplied should be the name of the angular `$filter` service that will be selected to perform + * the actual filter logic. + */ + this.filterFilterName = undefined; + /** + * Tells `DefaultGetData` to use this function supplied to perform the filtering instead of selecting an angular $filter. + */ + this.filterFn = undefined; + /** + * The layout to use when multiple html templates are to rendered in a single table header column. + */ + this.filterLayout = 'stack'; + } + return FilterSettings; +}()); + /***/ }, -/* 37 */ -/* unknown exports provided */ -/* all exports used */ -/*!************************************!*\ - !*** ./src/core/grouping/index.ts ***! - \************************************/ -/***/ function(module, exports, __webpack_require__) { - -"use strict"; -"use strict"; -function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} -__export(__webpack_require__(/*! ./getGroup */ 4)); -__export(__webpack_require__(/*! ./groupingFunc */ 6)); -__export(__webpack_require__(/*! ./groupSettings */ 5)); -__export(__webpack_require__(/*! ./ngTableDefaultGetGroups */ 38)); - - -/***/ }, -/* 38 */ -/* unknown exports provided */ -/* all exports used */ +/* 30 */ +/* exports provided: ngTableDefaultGetGroups */ +/* exports used: ngTableDefaultGetGroups */ /*!******************************************************!*\ !*** ./src/core/grouping/ngTableDefaultGetGroups.ts ***! \******************************************************/ /***/ function(module, exports, __webpack_require__) { "use strict"; -"use strict"; -var ng1 = __webpack_require__(/*! angular */ 0); -var util_1 = __webpack_require__(/*! ../util */ 11); -ngTableDefaultGetGroups.$inject = ['$q', 'ngTableDefaultGetData']; -/** - * Implementation of the {@link IDefaultGetData IDefaultGetData} interface - * - * @ngdoc service - */ -function ngTableDefaultGetGroups($q, ngTableDefaultGetData) { - return getGroups; - function getGroups(params) { - var group = params.group(); - var groupFn; - var sortDirection = undefined; - if (util_1.isGroupingFun(group)) { - groupFn = group; - sortDirection = group.sortDirection; - } - else { - // currently support for only one group implemented - var groupField_1 = Object.keys(group)[0]; - sortDirection = group[groupField_1]; - groupFn = function (item) { - return getPath(item, groupField_1); - }; - } - var settings = params.settings(); - var originalDataOptions = settings.dataOptions; - settings.dataOptions = { applyPaging: false }; - var getData = settings.getData; - var gotData = $q.when(getData(params)); - return gotData.then(function (data) { - var groups = {}; - ng1.forEach(data, function (item) { - var groupName = groupFn(item); - groups[groupName] = groups[groupName] || { - data: [], - $hideRows: !settings.groupOptions.isExpanded, - value: groupName - }; - groups[groupName].data.push(item); - }); - var result = []; - for (var i in groups) { - result.push(groups[i]); - } - if (sortDirection) { - var orderByFn = ngTableDefaultGetData.getOrderByFn(); - var orderBy = util_1.convertSortToOrderBy({ - value: sortDirection - }); - result = orderByFn(result, orderBy); - } - return ngTableDefaultGetData.applyPaging(result, params); - }).finally(function () { - // restore the real options - settings.dataOptions = originalDataOptions; - }); - } -} -exports.ngTableDefaultGetGroups = ngTableDefaultGetGroups; -/** - * @private - */ -function getPath(obj, ks) { - // origianl source https://github.com/documentcloud/underscore-contrib - var keys; - if (typeof ks === "string") { - keys = ks.split("."); - } - else { - keys = ks; - } - // If we have reached an undefined property - // then stop executing and return undefined - if (obj === undefined) - return void 0; - // If the path array has no more elements, we've reached - // the intended property and return its value - if (keys.length === 0) - return obj; - // If we still have elements in the path array and the current - // value is null, stop executing and return undefined - if (obj === null) - return void 0; - return getPath(obj[keys[0]], keys.slice(1)); -} +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(/*! angular */ 0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util__ = __webpack_require__(/*! ../util */ 12); +/* harmony export (immutable) */ exports["a"] = ngTableDefaultGetGroups; + + +ngTableDefaultGetGroups.$inject = ['$q', 'ngTableDefaultGetData']; +/** + * Implementation of the {@link DefaultGetData} interface + * + * @ngdoc service + */ +function ngTableDefaultGetGroups($q, ngTableDefaultGetData) { + return getGroups; + function getGroups(params) { + var group = params.group(); + var groupFn; + var sortDirection; + if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util__["a" /* isGroupingFun */])(group)) { + groupFn = group; + sortDirection = group.sortDirection; + } + else { + // currently support for only one group implemented + var groupField_1 = Object.keys(group)[0]; + sortDirection = group[groupField_1]; + groupFn = function (item) { + return getPath(item, groupField_1); + }; + } + var settings = params.settings(); + var originalDataOptions = settings.dataOptions; + settings.dataOptions = __WEBPACK_IMPORTED_MODULE_0_angular__["extend"]({}, originalDataOptions, { applyPaging: false }); + var getData = settings.getData; + var gotData = $q.when(getData(params)); + return gotData.then(function (data) { + var groups = {}; + __WEBPACK_IMPORTED_MODULE_0_angular__["forEach"](data, function (item) { + var groupName = groupFn(item); + groups[groupName] = groups[groupName] || { + data: [], + $hideRows: !settings.groupOptions.isExpanded, + value: groupName + }; + groups[groupName].data.push(item); + }); + var result = []; + for (var i in groups) { + result.push(groups[i]); + } + if (sortDirection) { + var orderByFn = ngTableDefaultGetData.getOrderByFn(); + var orderBy = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util__["b" /* convertSortToOrderBy */])({ + value: sortDirection + }); + result = orderByFn(result, orderBy); + } + return ngTableDefaultGetData.applyPaging(result, params); + }).finally(function () { + // restore the real options + settings.dataOptions = originalDataOptions; + }); + } +} +/** + * @private + */ +function getPath(obj, ks) { + // origianl source https://github.com/documentcloud/underscore-contrib + var keys; + if (typeof ks === "string") { + keys = ks.split("."); + } + else { + keys = ks; + } + // If we have reached an undefined property + // then stop executing and return undefined + if (obj === undefined) + return void 0; + // If the path array has no more elements, we've reached + // the intended property and return its value + if (keys.length === 0) + return obj; + // If we still have elements in the path array and the current + // value is null, stop executing and return undefined + if (obj === null) + return void 0; + return getPath(obj[keys[0]], keys.slice(1)); +} /***/ }, -/* 39 */ -/* unknown exports provided */ -/* all exports used */ +/* 31 */ +/* exports provided: GroupSettings */ +/* exports used: GroupSettings */ /*!********************************************!*\ !*** ./src/core/grouping/publicExports.ts ***! \********************************************/ /***/ function(module, exports, __webpack_require__) { "use strict"; -"use strict"; -function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} -__export(__webpack_require__(/*! ./getGroup */ 4)); -__export(__webpack_require__(/*! ./groupingFunc */ 6)); -__export(__webpack_require__(/*! ./groupSettings */ 5)); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__groupSettings__ = __webpack_require__(/*! ./groupSettings */ 7); +/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, "a", function() { return __WEBPACK_IMPORTED_MODULE_0__groupSettings__["a"]; }); + /***/ }, -/* 40 */ -/* unknown exports provided */ -/* all exports used */ -/*!**********************************!*\ - !*** ./src/core/paging/index.ts ***! - \**********************************/ -/***/ function(module, exports) { +/* 32 */ +/* exports provided: ngTableDefaults */ +/* exports used: ngTableDefaults */ +/*!*************************************!*\ + !*** ./src/core/ngTableDefaults.ts ***! + \*************************************/ +/***/ function(module, exports, __webpack_require__) { "use strict"; -"use strict"; +/* harmony export (binding) */ __webpack_require__.d(exports, "a", function() { return ngTableDefaults; }); +/** + * ngTable: Table + Angular JS + * + * @author Vitalii Savchuk + * @url https://github.com/esvit/ng-table/ + * @license New BSD License + */ +/** + * Default values for ngTable + */ +var ngTableDefaults = { + params: {}, + settings: {} +}; /***/ }, -/* 41 */ -/* unknown exports provided */ -/* all exports used */ -/*!***********************************!*\ - !*** ./src/core/sorting/index.ts ***! - \***********************************/ -/***/ function(module, exports) { +/* 33 */ +/* exports provided: assignPartialDeep */ +/* exports used: assignPartialDeep */ +/*!*******************************************!*\ + !*** ./src/shared/assign-partial-deep.ts ***! + \*******************************************/ +/***/ function(module, exports, __webpack_require__) { "use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(/*! angular */ 0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__); +/* harmony export (immutable) */ exports["a"] = assignPartialDeep; + +/** + * @private + */ +function assignPartialDeep(destination, partial, optionalPropSelector, customizer) { + if (optionalPropSelector === void 0) { optionalPropSelector = function () { return false; }; } + if (customizer === void 0) { customizer = function () { return undefined; }; } + var keys = Object.keys(partial); + for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) { + var key = keys_1[_i]; + var srcVal = partial[key]; + if (srcVal === undefined) { + if (optionalPropSelector(key, destination)) { + destination[key] = srcVal; + } + else { + } + continue; + } + var destVal = destination[key]; + var customVal = customizer(destVal, srcVal, key); + if (customVal !== undefined) { + destination[key] = customVal; + } + else if (__WEBPACK_IMPORTED_MODULE_0_angular__["isArray"](srcVal)) { + destination[key] = srcVal.slice(); + } + else if (!__WEBPACK_IMPORTED_MODULE_0_angular__["isObject"](srcVal)) { + destination[key] = srcVal; + } + else { + destination[key] = assignPartialDeep(destVal, srcVal); + } + } + return destination; +} + + +/***/ }, +/* 34 */ +/* exports provided: checkClassInit */ +/* exports used: checkClassInit */ +/*!****************************************!*\ + !*** ./src/shared/check-class-init.ts ***! + \****************************************/ +/***/ function(module, exports, __webpack_require__) { + "use strict"; +/* harmony export (immutable) */ exports["a"] = checkClassInit; +/** + * @private + */ +function checkClassInit(clazz) { + if (!clazz.isInitialized) { + throw new Error('Class used before initialized. Hint: it is only safe to use this class after all run blocks (ng 1) / app initializers (ng 2) have executed.'); + } +} /***/ }, -/* 42 */ +/* 35 */ /* unknown exports provided */ /* all exports used */ /*!************************************!*\ @@ -2660,9 +2816,8 @@ angular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]); module.exports = path; /***/ }, -/* 43 */ +/* 36 */ /* unknown exports provided */ -/* all exports used */ /*!*****************************************!*\ !*** ./src/browser/filters/number.html ***! \*****************************************/ @@ -2675,9 +2830,8 @@ angular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]); module.exports = path; /***/ }, -/* 44 */ +/* 37 */ /* unknown exports provided */ -/* all exports used */ /*!**************************************************!*\ !*** ./src/browser/filters/select-multiple.html ***! \**************************************************/ @@ -2690,9 +2844,8 @@ angular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]); module.exports = path; /***/ }, -/* 45 */ +/* 38 */ /* unknown exports provided */ -/* all exports used */ /*!*****************************************!*\ !*** ./src/browser/filters/select.html ***! \*****************************************/ @@ -2705,9 +2858,8 @@ angular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]); module.exports = path; /***/ }, -/* 46 */ +/* 39 */ /* unknown exports provided */ -/* all exports used */ /*!***************************************!*\ !*** ./src/browser/filters/text.html ***! \***************************************/ @@ -2720,7 +2872,7 @@ angular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]); module.exports = path; /***/ }, -/* 47 */ +/* 40 */ /* unknown exports provided */ /* all exports used */ /*!***********************************!*\ @@ -2735,9 +2887,8 @@ angular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]); module.exports = path; /***/ }, -/* 48 */ +/* 41 */ /* unknown exports provided */ -/* all exports used */ /*!*********************************!*\ !*** ./src/browser/header.html ***! \*********************************/ @@ -2750,9 +2901,8 @@ angular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]); module.exports = path; /***/ }, -/* 49 */ +/* 42 */ /* unknown exports provided */ -/* all exports used */ /*!********************************!*\ !*** ./src/browser/pager.html ***! \********************************/ @@ -2765,7 +2915,7 @@ angular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]); module.exports = path; /***/ }, -/* 50 */ +/* 43 */ /* unknown exports provided */ /* all exports used */ /*!************************************!*\ @@ -2780,8 +2930,8 @@ angular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]); module.exports = path; /***/ }, -/* 51 */ -/* unknown exports provided */ +/* 44 */ +/* exports provided: ngTableModule, ngTableCoreModule, Settings, NgTableController, ngTableBrowserModule, NgTableEventsChannel, ParamValues, NgTableParams, FilterConfigValues, NgTableFilterConfigProvider, NgTableFilterConfig, DataSettings, NgTableDefaultGetDataProvider, FilterSettings, GroupSettings */ /* all exports used */ /*!******************!*\ !*** ./index.ts ***! @@ -2789,17 +2939,33 @@ module.exports = path; /***/ function(module, exports, __webpack_require__) { "use strict"; -"use strict"; -function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} -var ng1 = __webpack_require__(/*! angular */ 0); -var core_1 = __webpack_require__(/*! ./src/core */ 1); -var browser_1 = __webpack_require__(/*! ./src/browser */ 2); -var ngTableModule = ng1.module('ngTable', [core_1.ngTableCoreModule.name, browser_1.ngTableBrowserModule.name]); -exports.ngTableModule = ngTableModule; -__export(__webpack_require__(/*! ./src/core */ 1)); -__export(__webpack_require__(/*! ./src/browser */ 2)); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(/*! angular */ 0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_core__ = __webpack_require__(/*! ./src/core */ 1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_browser__ = __webpack_require__(/*! ./src/browser */ 2); +Object.defineProperty(exports, "__esModule", { value: true }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(exports, "ngTableCoreModule", function() { return __WEBPACK_IMPORTED_MODULE_1__src_core__["b"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(exports, "Settings", function() { return __WEBPACK_IMPORTED_MODULE_1__src_core__["c"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(exports, "NgTableEventsChannel", function() { return __WEBPACK_IMPORTED_MODULE_1__src_core__["d"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(exports, "ParamValues", function() { return __WEBPACK_IMPORTED_MODULE_1__src_core__["e"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(exports, "NgTableParams", function() { return __WEBPACK_IMPORTED_MODULE_1__src_core__["a"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(exports, "DataSettings", function() { return __WEBPACK_IMPORTED_MODULE_1__src_core__["f"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(exports, "NgTableDefaultGetDataProvider", function() { return __WEBPACK_IMPORTED_MODULE_1__src_core__["g"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(exports, "FilterSettings", function() { return __WEBPACK_IMPORTED_MODULE_1__src_core__["h"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(exports, "GroupSettings", function() { return __WEBPACK_IMPORTED_MODULE_1__src_core__["i"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(exports, "NgTableController", function() { return __WEBPACK_IMPORTED_MODULE_2__src_browser__["b"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(exports, "ngTableBrowserModule", function() { return __WEBPACK_IMPORTED_MODULE_2__src_browser__["a"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(exports, "FilterConfigValues", function() { return __WEBPACK_IMPORTED_MODULE_2__src_browser__["c"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(exports, "NgTableFilterConfigProvider", function() { return __WEBPACK_IMPORTED_MODULE_2__src_browser__["d"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(exports, "NgTableFilterConfig", function() { return __WEBPACK_IMPORTED_MODULE_2__src_browser__["e"]; }); +/* harmony export (binding) */ __webpack_require__.d(exports, "ngTableModule", function() { return ngTableModule; }); + + + +var ngTableModule = __WEBPACK_IMPORTED_MODULE_0_angular__["module"]('ngTable', [__WEBPACK_IMPORTED_MODULE_1__src_core__["b" /* ngTableCoreModule */].name, __WEBPACK_IMPORTED_MODULE_2__src_browser__["a" /* ngTableBrowserModule */].name]); + + + /***/ } diff --git a/ng-table.js.map b/ng-table.js.map index f928747..f77dcb2 100644 --- a/ng-table.js.map +++ b/ng-table.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap f774e40ea176f23445d6","webpack:///external \"angular\"","webpack:///./src/core/index.ts","webpack:///./src/browser/index.ts","webpack:///./src/core/data/index.ts","webpack:///./src/core/ngTableDefaults.ts","webpack:///./src/core/ngTableEventsChannel.ts","webpack:///./src/core/ngTableParams.ts","webpack:///./src/core/ngTableSettings.ts","webpack:///./src/core/util.ts","webpack:///./src/browser/ngTable.directive.ts","webpack:///./src/browser/ngTableColumn.ts","webpack:///./src/browser/ngTableColumnsBinding.directive.ts","webpack:///./src/browser/ngTableController.ts","webpack:///./src/browser/ngTableDynamic.directive.ts","webpack:///./src/browser/ngTableFilterConfig.ts","webpack:///./src/browser/ngTableFilterRow.directive.ts","webpack:///./src/browser/ngTableFilterRowController.ts","webpack:///./src/browser/ngTableGroupRow.directive.ts","webpack:///./src/browser/ngTableGroupRowController.ts","webpack:///./src/browser/ngTablePagination.directive.ts","webpack:///./src/browser/ngTableSelectFilterDs.directive.ts","webpack:///./src/browser/ngTableSorterRow.directive.ts","webpack:///./src/browser/ngTableSorterRowController.ts","webpack:///./src/core/data/ngTableDefaultGetData.ts","webpack:///./src/core/filtering/index.ts","webpack:///./src/core/grouping/index.ts","webpack:///./src/core/grouping/ngTableDefaultGetGroups.ts","webpack:///./src/core/grouping/publicExports.ts","webpack:///./src/browser/filterRow.html","webpack:///./src/browser/filters/number.html","webpack:///./src/browser/filters/select-multiple.html","webpack:///./src/browser/filters/select.html","webpack:///./src/browser/filters/text.html","webpack:///./src/browser/groupRow.html","webpack:///./src/browser/header.html","webpack:///./src/browser/pager.html","webpack:///./src/browser/sorterRow.html","webpack:///./index.ts"],"names":[],"mappings":"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","file":"ng-table.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-table\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-table\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_0__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \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\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// identity function for calling harmory imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmory 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 = 51);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap f774e40ea176f23445d6","module.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"angular\"\n// module id = 0\n// module chunks = 0","import * as angular from 'angular';\nimport { NgTableDefaultGetDataProvider, IDefaultGetData } from './data';\nimport { IGroupSettings, ngTableDefaultGetGroups } from './grouping';\nimport { ngTableDefaults, IDefaults } from './ngTableDefaults';\nimport { NgTableSettings, ISettings } from './ngTableSettings';\nimport { NgTableParams } from './ngTableParams';\nimport { NgTableEventsChannel } from './ngTableEventsChannel';\n\nconst ngTableCoreModule = angular.module('ngTable-core', [])\n .provider('ngTableDefaultGetData', NgTableDefaultGetDataProvider)\n .factory('ngTableDefaultGetGroups', ngTableDefaultGetGroups)\n .value('ngTableDefaults',ngTableDefaults)\n .service('ngTableEventsChannel', NgTableEventsChannel)\n .service('ngTableSettings', NgTableSettings)\n .run(NgTableParams.init);\n\n// note: if you are using ES6 or typescript prefer:\n// import { NgTableParams } from 'ng-table';\nngTableCoreModule.value('NgTableParams', NgTableParams)\n\nexport { ngTableCoreModule };\n\nexport { IDefaults } from './ngTableDefaults';\nexport * from './ngTableEventsChannel';\nexport { ISettings } from './ngTableSettings';\nexport * from './ngTableParams';\nexport * from './data';\nexport * from './filtering';\nexport * from './grouping/publicExports';\nexport * from './paging';\nexport * from './sorting';\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/index.ts","import * as angular from 'angular';\nimport { ngTable } from './ngTable.directive';\nimport { NgTableColumn } from './ngTableColumn';\nimport { ngTableColumnsBinding } from './ngTableColumnsBinding.directive';\nimport { NgTableController } from './ngTableController';\nimport { ngTableDynamic } from './ngTableDynamic.directive';\nimport { NgTableFilterConfigProvider, NgTableFilterConfig } from './ngTableFilterConfig';\nimport { ngTableFilterRow } from './ngTableFilterRow.directive';\nimport { NgTableFilterRowController } from './ngTableFilterRowController';\nimport { ngTableGroupRow } from './ngTableGroupRow.directive';\nimport { NgTableGroupRowController } from './ngTableGroupRowController';\nimport { ngTablePagination } from './ngTablePagination.directive';\nimport { ngTableSelectFilterDs } from './ngTableSelectFilterDs.directive';\nimport { ngTableSorterRow } from './ngTableSorterRow.directive';\nimport { NgTableSorterRowController } from './ngTableSorterRowController';\nimport './filters/number.html';\nimport './filters/select.html';\nimport './filters/select-multiple.html';\nimport './filters/text.html';\nimport './pager.html';\nimport './header.html';\n\nconst ngTableBrowserModule = angular.module('ngTable-browser', [])\n .directive('ngTable', ngTable)\n .service('ngTableColumn', NgTableColumn)\n .directive('ngTableColumnsBinding', ngTableColumnsBinding)\n .controller('ngTableController', NgTableController)\n .directive('ngTableDynamic', ngTableDynamic)\n .provider('ngTableFilterConfig', NgTableFilterConfigProvider)\n .directive('ngTableFilterRow', ngTableFilterRow)\n .controller('ngTableFilterRowController', NgTableFilterRowController)\n .directive('ngTableGroupRow', ngTableGroupRow)\n .controller('ngTableGroupRowController', NgTableGroupRowController)\n .directive('ngTablePagination', ngTablePagination)\n .directive('ngTableSelectFilterDs', ngTableSelectFilterDs)\n .directive('ngTableSorterRow', ngTableSorterRow)\n .controller('ngTableSorterRowController', NgTableSorterRowController);\n\nexport * from './public-interfaces';\nexport { NgTableController, NgTableFilterConfigProvider, NgTableFilterConfig, ngTableBrowserModule };\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/index.ts","export * from './dataSettings';\nexport * from './getData';\nexport * from './interceptor';\nexport * from './ngTableDefaultGetData';\nexport * from './results';\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/data/index.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IParamValues } from './ngTableParams';\nimport { ISettings } from './ngTableSettings';\n\n\n/**\n * An angular value object that allow for overriding of the initial default values used when constructing\n * an instance of `NgTableParams`\n */\nexport interface IDefaults {\n params?: IParamValues;\n settings?: ISettings\n}\n\n/**\n * Default values for ngTable\n */\nexport let ngTableDefaults : IDefaults = {\n params: {},\n settings: {}\n};\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/ngTableDefaults.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport * as ng1 from 'angular';\nimport { IScope } from 'angular';\nimport { DataResult, IDefaultGetData } from './data';\nimport { IPageButton } from './paging';\nimport { InternalTableParams, NgTableParams } from './ngTableParams';\n\n\n/**\n * Alias for the types that can be used to filter events\n */\nexport type EventSelector = NgTableParams | IEventSelectorFunc\n\n/**\n * Signature of the event hander that is registered to receive the *afterCreated* event\n */\nexport interface IAfterCreatedListener {\n (publisher: NgTableParams): any\n}\n/**\n * Signature of the event hander that is registered to receive the *afterReloadData* event\n */\nexport interface IAfterReloadDataListener {\n (publisher: NgTableParams, newData: DataResult[], oldData: DataResult[]): any\n}\n/**\n * Signature of the event hander that is registered to receive the *datasetChanged* event\n */\nexport interface IDatasetChangedListener {\n (publisher: NgTableParams, newDataset: T[], oldDataset: T[]): any\n}\n/**\n * Signature of the function used to filter the events to only specific instances of \n * {@link NgTableParams}\n */\nexport interface IEventSelectorFunc {\n (publisher: NgTableParams): boolean\n}\n/**\n * Signature of the event hander that is registered to receive the *pagesChanged* event\n */\nexport interface IPagesChangedListener {\n (publisher: NgTableParams, newPages: IPageButton[], oldPages: IPageButton[]): any\n}\n/**\n* Signature of the event hander that is registered to receive the *afterDataFiltered* event\n*/\nexport interface IAfterDataFilteredListener {\n (publisher: NgTableParams, newData: DataResult[] ): any\n}\n/**\n* Signature of the event hander that is registered to receive the *afterDataSorted* event\n*/\nexport interface IAfterDataSortedListener {\n (publisher: NgTableParams, newData: DataResult[] ): any\n}\n\n/**\n * Signature of the function used to explicitly unregister an event handler so that it stops\n * receiving notifications\n */\nexport interface IUnregistrationFunc {\n (): void\n}\n\n/**\n * Strongly typed pub/sub for {@link NgTableParams}\n *\n * Supported events:\n *\n * * afterCreated - raised when a new instance of {@link NgTableParams} has finished being constructed\n * * afterReloadData - raised when the {@link NgTableParams} `reload` method has finished loading new data\n * * datasetChanged - raised when {@link ISettings} `dataset` receives a new data array\n * * pagesChanged - raised when a new pages array has been generated\n */\nexport interface NgTableEventsChannel {\n /**\n * Subscribe to receive notification whenever a new `NgTableParams` instance has finished being constructed.\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called. Supply a\n * `scope` to have angular automatically unregister the listener when the `scope` is destroyed.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterCreated(listener: IAfterCreatedListener, scope: IScope, eventFilter?: IEventSelectorFunc): IUnregistrationFunc;\n /**\n * Subscribe to receive notification whenever a new `NgTableParams` instance has finished being constructed.\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterCreated(listener: IAfterCreatedListener, eventFilter?: IEventSelectorFunc): IUnregistrationFunc;\n /**\n * Subscribe to receive notification whenever the `reload` method of an `NgTableParams` instance has successfully executed\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called. Supply a\n * `scope` to have angular automatically unregister the listener when the `scope` is destroyed.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter either the specific `NgTableParams` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterReloadData(listener: IAfterReloadDataListener, scope: IScope, eventFilter?: EventSelector): IUnregistrationFunc;\n /**\n * Subscribe to receive notification whenever the `reload` method of an `NgTableParams` instance has successfully executed\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterReloadData(listener: IAfterReloadDataListener, eventFilter?: EventSelector): IUnregistrationFunc;\n\n /**\n * Subscribe to receive notification whenever a new data rows *array* is supplied as a `settings` value to a `NgTableParams` instance.\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called. Supply a\n * `scope` to have angular automatically unregister the listener when the `scope` is destroyed.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter either the specific `NgTableParams` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onDatasetChanged(listener: IDatasetChangedListener, scope: IScope, eventFilter?: EventSelector): IUnregistrationFunc;\n /**\n * Subscribe to receive notification whenever a new data rows *array* is supplied as a `settings` value to a `NgTableParams` instance.\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter either the specific `NgTableParams` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onDatasetChanged(listener: IDatasetChangedListener, eventFilter?: EventSelector): IUnregistrationFunc;\n\n /**\n * Subscribe to receive notification whenever the paging buttons for an `NgTableParams` instance change\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called. Supply a\n * `scope` to have angular automatically unregister the listener when the `scope` is destroyed.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter either the specific `NgTableParams` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onPagesChanged(listener: IPagesChangedListener, scope: IScope, eventFilter?: EventSelector): IUnregistrationFunc;\n /**\n * Subscribe to receive notification whenever the paging buttons for an `NgTableParams` instance change\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter either the specific `NgTableParams` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onPagesChanged(listener: IPagesChangedListener, eventFilter?: EventSelector): IUnregistrationFunc;\n /**\n * Subscribe to receive notification whenever a `ngTableDefaultGetData` instance filters data\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter either the specific `IDefaultGetData` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterDataFiltered(listener: IAfterDataFilteredListener, scope: IScope, eventFilter?: EventSelector ): IUnregistrationFunc;\n /**\n * Subscribe to receive notification whenever a `ngTableDefaultGetData` instance filters data\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter either the specific `IDefaultGetData` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterDataFiltered(listener: IAfterDataFilteredListener, eventFilter?: EventSelector ): IUnregistrationFunc; \n /**\n * Subscribe to receive notification whenever a `ngTableDefaultGetData` instance orders data\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter either the specific `IDefaultGetData` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterDataSorted(listener: IAfterDataSortedListener, scope: IScope, eventFilter?: EventSelector ): IUnregistrationFunc;\n /**\n * Subscribe to receive notification whenever a `ngTableDefaultGetData` instance orders data\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter either the specific `IDefaultGetData` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterDataSorted(listener: IAfterDataSortedListener, eventFilter?: EventSelector ): IUnregistrationFunc;\n\n\n publishAfterCreated(publisher: NgTableParams): void;\n publishAfterReloadData(publisher: NgTableParams, newData: T[], oldData: T[]): void;\n publishDatasetChanged(publisher: NgTableParams, newDataset: T[], oldDataset: T[]): void;\n publishPagesChanged(publisher: NgTableParams, newPages: IPageButton[], oldPages: IPageButton[]): void;\n publishAfterDataFiltered(publisher: NgTableParams, newData: T[]): void;\n publishAfterDataSorted(params: NgTableParams, newData: T[]): void;\n}\n\nexport class NgTableEventsChannel {\n static $inject = ['$rootScope'];\n constructor(private $rootScope: ng1.IRootScopeService) {\n let events = this;\n events = this.addTableParamsEvent('afterCreated', events);\n events = this.addTableParamsEvent('afterReloadData', events);\n events = this.addTableParamsEvent('datasetChanged', events);\n events = this.addTableParamsEvent('pagesChanged', events);\n events = this.addTableParamsEvent('afterDataFiltered', events);\n events = this.addTableParamsEvent('afterDataSorted', events);\n }\n private addTableParamsEvent(eventName: string, target: {}) {\n const fnName = eventName.charAt(0).toUpperCase() + eventName.substring(1);\n const event = {\n ['on' + fnName]: this.createEventSubscriptionFn(eventName),\n ['publish' + fnName]: this.createPublishEventFn(eventName)\n };\n return ng1.extend(target, event);\n }\n private createPublishEventFn(eventName: string) {\n return (...args: any[]) => {\n this.$rootScope.$broadcast('ngTable:' + eventName, ...args);\n }\n }\n private createEventSubscriptionFn(eventName: string) {\n\n return (\n handler: (...args: any[]) => void,\n eventSelectorOrScope: EventSelector | ng1.IScope,\n eventSelector?: EventSelector) => {\n\n let actualEvtSelector: (publisher: NgTableParams) => boolean;\n let scope: ng1.IScope = this.$rootScope;\n\n if (isScopeLike(eventSelectorOrScope)) {\n scope = eventSelectorOrScope;\n actualEvtSelector = createEventSelectorFn(eventSelector);\n } else {\n actualEvtSelector = createEventSelectorFn(eventSelectorOrScope);\n }\n\n return scope.$on('ngTable:' + eventName, function (event: ng1.IAngularEvent, params: InternalTableParams, ...eventArgs: any[]) {\n // don't send events published by the internal NgTableParams created by ngTableController\n if (params.isNullInstance) return;\n\n const fnArgs = [params].concat(eventArgs);\n if (actualEvtSelector.apply(this, fnArgs)) {\n handler.apply(this, fnArgs);\n }\n });\n }\n\n function createEventSelectorFn(eventSelector: EventSelector): (publisher: NgTableParams) => boolean {\n if (!eventSelector) {\n return (publisher: NgTableParams) => true;\n } else if (isEventSelectorFunc(eventSelector)) {\n return eventSelector\n } else {\n // shorthand for subscriber to only receive events from a specific publisher instance\n return (publisher: NgTableParams) => publisher === eventSelector;\n }\n }\n\n function isEventSelectorFunc(val: EventSelector): val is (publisher: NgTableParams) => boolean {\n return typeof val === 'function';\n }\n\n function isScopeLike(val: any): val is ng1.IScope {\n return val && typeof val.$new === 'function';\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/ngTableEventsChannel.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport * as ng1 from 'angular';\nimport { IPromise } from 'angular';\nimport { convertSortToOrderBy, isGroupingFun } from './util';\nimport { IDefaults } from './ngTableDefaults'\nimport { NgTableEventsChannel } from './ngTableEventsChannel'\nimport { NgTableSettings, ISettings } from './ngTableSettings'\nimport { DataResult, IDataRowGroup, IGetDataFunc } from './data';\nimport { IFilterValues } from './filtering';\nimport { IGetGroupFunc, Grouping, IGroupingFunc, GroupSort, IGroupValues } from './grouping';\nimport { SortDirection, ISortingValues } from './sorting';\nimport { IPageButton } from './paging';\n\n/**\n * @private\n */\nexport interface InternalTableParams extends NgTableParams {\n isNullInstance: boolean\n}\n\n/**\n * The runtime values for {@link NgTableParams} that determine the set of data rows and\n * how they are to be displayed in a table\n */\nexport interface IParamValues {\n /**\n * The index of the \"slice\" of data rows, starting at 1, to be displayed by the table.\n */\n page?: number;\n /**\n * The number of data rows per page\n */\n count?: number;\n /**\n * The filter that should be applied to restrict the set of data rows\n */\n filter?: IFilterValues;\n /**\n * The sort order that should be applied to the data rows.\n */\n sorting?: ISortingValues;\n /**\n * The grouping that should be applied to the data rows\n */\n group?: string | Grouping;\n}\n\n\n/**\n * @private\n */\nfunction isNumber(n: any) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * @private\n */\ntype Memento = {\n params: IParamValues;\n groupSortDirection?: string;\n};\n\n/**\n * Parameters manager for an ngTable directive\n */\nexport class NgTableParams {\n /**\n * The page of data rows currently being displayed in the table\n */\n data: T[] = [];\n reloadPages: () => void;\n private defaultSettings = NgTableParams.ngTableSettings.createDefaults();\n private errParamsMemento: Memento;\n private isCommittedDataset = false;\n isNullInstance: boolean;\n private initialEvents: Function[] = [];\n private prevParamsMemento: Memento;\n private _params: IParamValues = {\n page: 1,\n count: 10,\n filter: {},\n sorting: {},\n group: {}\n };\n private _settings = this.defaultSettings;\n constructor(baseParameters?: IParamValues | boolean, baseSettings?: ISettings) {\n\n // the ngTableController \"needs\" to create a dummy/null instance and it's important to know whether an instance\n // is one of these\n if (typeof baseParameters === \"boolean\") {\n this.isNullInstance = true;\n }\n\n this.reloadPages = (() => {\n let currentPages: IPageButton[];\n return () => {\n const oldPages = currentPages;\n const newPages = this.generatePagesArray(this.page(), this.total(), this.count());\n if (!ng1.equals(oldPages, newPages)) {\n currentPages = newPages;\n NgTableParams.ngTableEventsChannel.publishPagesChanged(this, newPages, oldPages);\n }\n }\n })();\n\n ng1.extend(this._params, NgTableParams.ngTableDefaults.params);\n\n this.settings(baseSettings);\n this.parameters(baseParameters, true);\n\n NgTableParams.ngTableEventsChannel.publishAfterCreated(this);\n // run events during construction after the initial create event. That way a consumer\n // can subscribe to all events for a table without \"dropping\" an event\n ng1.forEach(this.initialEvents, event => {\n event();\n });\n this.initialEvents = null;\n }\n /**\n * Returns the number of data rows per page\n */\n count(): number\n /**\n * Sets the number of data rows per page.\n * Changes to count will cause `isDataReloadRequired` to return true\n */\n count(count: number): this\n count(count?: number) {\n // reset to first page because can be blank page\n return count !== undefined ? this.parameters({\n 'count': count,\n 'page': 1\n }) : this._params.count;\n }\n /**\n * Returns the current filter values used to restrict the set of data rows.\n * @param trim supply true to return the current filter minus any insignificant values\n * (null, undefined and empty string)\n */\n filter(trim?: boolean): IFilterValues\n /**\n * Sets filter values to the `filter` supplied; any existing filter will be removed\n * Changes to filter will cause `isDataReloadRequired` to return true and the current `page` to be set to 1\n */\n filter(filter: IFilterValues): this\n filter(filter?: IFilterValues | boolean) {\n if (filter != null && typeof filter === 'object') {\n return this.parameters({\n 'filter': filter,\n 'page': 1\n });\n } else if (filter === true) {\n const keys = Object.keys(this._params.filter);\n const significantFilter: IFilterValues = {};\n for (let i = 0; i < keys.length; i++) {\n const filterValue = this._params.filter[keys[i]];\n if (filterValue != null && filterValue !== '') {\n significantFilter[keys[i]] = filterValue;\n }\n }\n return significantFilter;\n } else {\n return this._params.filter;\n }\n }\n /**\n * Generate array of pages.\n * When no arguments supplied, the current parameter state of this `NgTableParams` instance will be used\n * @param currentPage Which page must be active\n * @param totalItems Total quantity of items\n * @param pageSize Quantity of items on page\n * @param maxBlocks Quantity of blocks for pagination\n * @returns Array of pages\n */\n generatePagesArray(currentPage?: number, totalItems?: number, pageSize?: number, maxBlocks?: number) {\n if (!arguments.length) {\n currentPage = this.page();\n totalItems = this.total();\n pageSize = this.count();\n }\n\n let maxPage: number, maxPivotPages: number, minPage: number, numPages: number;\n maxBlocks = maxBlocks && maxBlocks < 6 ? 6 : maxBlocks;\n\n const pages: IPageButton[] = [];\n numPages = Math.ceil(totalItems / pageSize);\n if (numPages > 1) {\n pages.push({\n type: 'prev',\n number: Math.max(1, currentPage - 1),\n active: currentPage > 1\n });\n pages.push({\n type: 'first',\n number: 1,\n active: currentPage > 1,\n current: currentPage === 1\n });\n maxPivotPages = Math.round((this._settings.paginationMaxBlocks - this._settings.paginationMinBlocks) / 2);\n minPage = Math.max(2, currentPage - maxPivotPages);\n maxPage = Math.min(numPages - 1, currentPage + maxPivotPages * 2 - (currentPage - minPage));\n minPage = Math.max(2, minPage - (maxPivotPages * 2 - (maxPage - minPage)));\n let i = minPage;\n while (i <= maxPage) {\n if ((i === minPage && i !== 2) || (i === maxPage && i !== numPages - 1)) {\n pages.push({\n type: 'more',\n active: false\n });\n } else {\n pages.push({\n type: 'page',\n number: i,\n active: currentPage !== i,\n current: currentPage === i\n });\n }\n i++;\n }\n pages.push({\n type: 'last',\n number: numPages,\n active: currentPage !== numPages,\n current: currentPage === numPages\n });\n pages.push({\n type: 'next',\n number: Math.min(numPages, currentPage + 1),\n active: currentPage < numPages\n });\n }\n return pages;\n }\n /**\n * Returns the current grouping used to group the data rows\n */\n group(): Grouping\n /**\n * Sets grouping to the `group` supplied; any existing grouping will be removed.\n * Changes to group will cause `isDataReloadRequired` to return true and the current `page` to be set to 1\n */\n group(group: IGroupValues): this\n /**\n * Sets grouping to the `field` and `sortDirection` supplied; any existing grouping will be removed\n * Changes to group will cause `isDataReloadRequired` to return true and the current `page` to be set to 1\n */\n group(field: string, sortDirection?: GroupSort): this\n /**\n * Sets grouping to the `group` supplied; any existing grouping will be removed.\n * If `sortDirection` is supplied, this will be assigned to the sortDirection property of `group`\n * Changes to group will cause `isDataReloadRequired` to return true and the current `page` to be set to 1\n */\n group(group: IGroupingFunc | string, sortDirection?: GroupSort): this\n group(group?: Grouping | string, sortDirection?: GroupSort): string | Grouping | this {\n if (group === undefined) {\n return this._params.group;\n }\n\n const newParameters: IParamValues = {\n page: 1\n };\n if (isGroupingFun(group) && sortDirection !== undefined) {\n group.sortDirection = sortDirection;\n newParameters.group = group;\n } else if (typeof group === 'string' && sortDirection !== undefined) {\n newParameters.group = { [group]: sortDirection };\n } else {\n newParameters.group = group;\n }\n this.parameters(newParameters);\n return this;\n }\n /**\n * Returns true when an attempt to `reload` the current `parameter` values have resulted in a failure.\n * This method will continue to return true until the `reload` is successfully called or when the\n * `parameter` values have changed\n */\n hasErrorState() {\n return !!(this.errParamsMemento && ng1.equals(this.errParamsMemento, this.createComparableParams()));\n }\n /**\n * Returns true if `filter` has significant filter value(s) (any value except null, undefined, or empty string),\n * otherwise false\n */\n hasFilter() {\n return Object.keys(this.filter(true)).length > 0;\n }\n /**\n * Return true when a change to `filters` require the `reload` method\n * to be run so as to ensure the data presented to the user reflects these filters\n */\n hasFilterChanges() {\n const previousFilter = (this.prevParamsMemento && this.prevParamsMemento.params.filter);\n return !ng1.equals((this._params.filter), previousFilter) || this.hasGlobalSearchFieldChanges();\n }\n /**\n * Returns true when at least one group has been set\n */\n hasGroup(): boolean\n /**\n * Returns true when the `group` and when supplied, the `sortDirection` matches an existing group\n */\n hasGroup(group: string | IGroupingFunc, sortDirection?: string): boolean\n hasGroup(group?: string | IGroupingFunc, sortDirection?: string) {\n if (group == null) {\n return isGroupingFun(this._params.group) || Object.keys(this._params.group).length > 0\n }\n\n if (isGroupingFun(group)) {\n if (sortDirection == null) {\n return this._params.group === group;\n } else {\n return this._params.group === group && group.sortDirection === sortDirection;\n }\n } else {\n if (sortDirection == null) {\n return Object.keys(this._params.group).indexOf(group) !== -1;\n } else {\n return (this._params.group as IGroupValues)[group] === sortDirection;\n }\n }\n }\n /**\n * Return true when a change to this instance should require the `reload` method\n * to be run so as to ensure the data rows presented to the user reflects the current state.\n *\n * Note that this method will return false when the `reload` method has run but fails. In this case\n * `hasErrorState` will return true.\n *\n * The built-in `ngTable` directives will watch for when this function returns true and will then call\n * the `reload` method to load its data rows\n */\n isDataReloadRequired() {\n // note: using != as want to treat null and undefined the same\n return !this.isCommittedDataset || !ng1.equals(this.createComparableParams(), this.prevParamsMemento)\n || this.hasGlobalSearchFieldChanges();\n }\n /**\n * Returns true if sorting by the field supplied. Where direction supplied\n * the field must also be sorted by that direction to return true\n */\n isSortBy(field: string, direction?: string) {\n if (direction !== undefined) {\n return this._params.sorting[field] !== undefined && this._params.sorting[field] == direction;\n } else {\n return this._params.sorting[field] !== undefined;\n }\n }\n /**\n * Returns sorting values in a format that can be consumed by the angular `$orderBy` filter service\n */\n orderBy() {\n return convertSortToOrderBy(this._params.sorting);\n }\n /**\n * Returns the index of the current \"slice\" of data rows\n */\n page(): number\n /**\n * Sets the index of the current \"slice\" of data rows. The index starts at 1.\n * Changing the page number will cause `isDataReloadRequired` to return true\n */\n page(page: number): this\n page(page?: number) {\n return page !== undefined ? this.parameters({\n 'page': page\n }) : this._params.page;\n }\n parameters(): IParamValues\n /**\n * Set new parameters\n */\n parameters(newParameters?: IParamValues | { [name: string]: string }, parseParamsFromUrl?: boolean): this\n parameters(newParameters?: IParamValues | { [name: string]: string }, parseParamsFromUrl?: boolean): IParamValues | this {\n parseParamsFromUrl = parseParamsFromUrl || false;\n if (typeof newParameters !== undefined) {\n for (const key in newParameters) {\n let value = newParameters[key];\n if (parseParamsFromUrl && key.indexOf('[') >= 0) {\n const keys = key.split(/\\[(.*)\\]/).reverse()\n let lastKey = '';\n for (let i = 0, len = keys.length; i < len; i++) {\n const name = keys[i];\n if (name !== '') {\n const v = value;\n value = {};\n value[lastKey = name] = (isNumber(v) ? parseFloat(v) : v);\n }\n }\n if (lastKey === 'sorting') {\n this._params[lastKey] = {};\n }\n this._params[lastKey] = ng1.extend(this._params[lastKey] || {}, value[lastKey]);\n } else {\n if (key === 'group') {\n this._params[key] = this.parseGroup(newParameters[key]);\n } else {\n this._params[key] = (isNumber(newParameters[key]) ? parseFloat(newParameters[key]) : newParameters[key]);\n }\n }\n }\n this.log('ngTable: set parameters', this._params);\n return this;\n }\n return this._params;\n }\n /**\n * Trigger a reload of the data rows\n */\n reload>(): IPromise {\n let pData: ng1.IPromise = null;\n\n this._settings.$loading = true;\n\n this.prevParamsMemento = ng1.copy(this.createComparableParams());\n this.isCommittedDataset = true;\n\n if (this.hasGroup()) {\n pData = this.runInterceptorPipeline(NgTableParams.$q.when(this._settings.getGroups(this)));\n } else {\n const fn = this._settings.getData as IGetDataFunc;\n pData = this.runInterceptorPipeline(NgTableParams.$q.when(fn(this)));\n }\n\n this.log('ngTable: reload data');\n\n const oldData = this.data;\n return pData.then(data => {\n this._settings.$loading = false;\n this.errParamsMemento = null;\n\n this.data = data;\n // note: I think it makes sense to publish this event even when data === oldData\n // subscribers can always set a filter to only receive the event when data !== oldData\n NgTableParams.ngTableEventsChannel.publishAfterReloadData(this, data, oldData);\n this.reloadPages();\n\n return data;\n }).catch(reason => {\n this.errParamsMemento = this.prevParamsMemento;\n // \"rethrow\"\n return NgTableParams.$q.reject(reason);\n });\n }\n /**\n * Returns the settings for the table.\n */\n settings(): ISettings\n /**\n * Sets the settings for the table; new setting values will be merged with the existing settings.\n * Supplying a new `dataset` will cause `isDataReloadRequired` to return true and the `ngTableEventsChannel`\n * to fire its `datasetChanged` event\n */\n settings(newSettings: ISettings): this\n settings(newSettings?: ISettings): this | ISettings {\n if (ng1.isDefined(newSettings)) {\n\n const settings = NgTableParams.ngTableSettings.merge(this._settings, newSettings);\n\n const originalDataset = this._settings.dataset;\n this._settings = settings;\n\n // note: using != as want null and undefined to be treated the same\n const hasDatasetChanged = newSettings.hasOwnProperty('dataset') && (newSettings.dataset != originalDataset);\n if (hasDatasetChanged) {\n if (this.isCommittedDataset) {\n this.page(1); // reset page as a new dataset has been supplied\n }\n this.isCommittedDataset = false;\n\n const fireEvent = () => {\n NgTableParams.ngTableEventsChannel.publishDatasetChanged(this, newSettings.dataset, originalDataset);\n };\n\n if (this.initialEvents) {\n this.initialEvents.push(fireEvent);\n } else {\n fireEvent();\n }\n }\n this.log('ngTable: set settings', this._settings);\n return this;\n }\n return this._settings;\n }\n /**\n * Returns the current sorting used to order the data rows.\n * Changes to sorting will cause `isDataReloadRequired` to return true\n */\n sorting(): ISortingValues\n /**\n * Sets sorting values to the `sorting` supplied; any existing sorting will be removed.\n * Changes to sorting will cause `isDataReloadRequired` to return true\n */\n sorting(sorting: ISortingValues): this\n /**\n * Sets sorting to the `field` and `direction` supplied; any existing sorting will be removed\n */\n sorting(field: string, direction: string): this\n sorting(sorting?: ISortingValues | string, direction?: SortDirection) {\n if (typeof sorting === 'string') {\n this.parameters({\n 'sorting': { [sorting]: direction }\n });\n return this;\n }\n return sorting !== undefined ? this.parameters({\n 'sorting': sorting\n }) : this._params.sorting;\n }\n /**\n * Returns the count of the data rows that match the current `filter`\n */\n total(): number\n /**\n * Sets `settings().total` to the value supplied.\n * Typically you will need to set a `total` in the body of any custom `getData` function\n * you supply as a setting value to this instance.\n * @example\n * ```js\n * const tp = new NgTableParams({}, { getData: customGetData })\n * function customGetData(params) {\n * const queryResult = // code to fetch current data rows and total //\n * params.total(queryResult.total);\n * return queryResult.dataRowsPage;\n * }\n * ```\n */\n total(total: number): this\n total(total?: number) {\n return total !== undefined ? this.settings({\n 'total': total\n }) : this._settings.total;\n }\n /**\n * Returns the current parameter values uri-encoded. Set `asString` to\n * true for the parameters to be returned as an array of strings of the form 'paramName=value'\n * otherwise parameters returned as a key-value object\n */\n url(asString?: boolean) {\n // this function is an example of Typescript gone bad!!\n asString = asString || false;\n const pairs: any[] | { [name: string]: string } = (asString ? [] : {});\n for (const key in this._params) {\n if (this._params.hasOwnProperty(key)) {\n const item = (this._params as { [name: string]: any })[key],\n name = encodeURIComponent(key);\n if (typeof item === \"object\") {\n for (const subkey in item) {\n if (isSignificantValue(item[subkey], key)) {\n const pname = name + \"[\" + encodeURIComponent(subkey) + \"]\";\n collectValue(item[subkey], pname);\n }\n }\n } else if (!ng1.isFunction(item) && isSignificantValue(item, key)) {\n collectValue(item, name);\n }\n }\n }\n return pairs;\n\n function collectValue(value: any, key: string) {\n if (isArray(pairs)) {\n pairs.push(key + \"=\" + encodeURIComponent(value));\n } else {\n pairs[key] = encodeURIComponent(value);\n }\n }\n\n function isArray(pairs: any[] | {}): pairs is Array {\n return asString;\n }\n\n function isSignificantValue(value: any, key: string) {\n return key === \"group\" ? true : typeof value !== undefined && value !== \"\";\n }\n }\n private createComparableParams(): Memento {\n const group = this._params.group;\n return {\n params: this._params,\n groupSortDirection: isGroupingFun(group) ? group.sortDirection : undefined\n };\n }\n private hasGlobalSearchFieldChanges() {\n const currentVal = (this._params.filter && this._params.filter['$']);\n const previousVal =\n (this.prevParamsMemento && this.prevParamsMemento.params.filter && this.prevParamsMemento.params.filter['$']);\n return !ng1.equals(currentVal, previousVal);\n }\n private log(...args: any[]) {\n if (this._settings.debugMode && NgTableParams.$log.debug) {\n NgTableParams.$log.debug(...args);\n }\n }\n private parseGroup(group: string | Grouping) {\n const defaultSort = this._settings.groupOptions && this._settings.groupOptions.defaultSort;\n if (!group) {\n return group;\n } else if (isGroupingFun(group)) {\n if (group.sortDirection == null) {\n group.sortDirection = defaultSort;\n }\n return group;\n } else if (typeof group === 'object') {\n for (const key in group) {\n if (group[key] == null) {\n group[key] = defaultSort;\n }\n }\n return group;\n } else {\n return {\n [group]: defaultSort\n };\n }\n }\n private runInterceptorPipeline(fetchedData: ng1.IPromise) {\n const interceptors = this._settings.interceptors || [];\n\n return interceptors.reduce((result, interceptor) => {\n const thenFn = (interceptor.response && interceptor.response.bind(interceptor)) || NgTableParams.$q.when;\n const rejectFn = (interceptor.responseError && interceptor.responseError.bind(interceptor)) || NgTableParams.$q.reject;\n return result.then(data => {\n return thenFn(data, this);\n }, reason => {\n return rejectFn(reason, this);\n });\n }, fetchedData);\n }\n\n private static $q: ng1.IQService;\n private static $log: ng1.ILogService;\n private static ngTableDefaults: IDefaults;\n private static ngTableEventsChannel: NgTableEventsChannel;\n private static ngTableSettings: NgTableSettings;\n static init(\n $q: ng1.IQService,\n $log: ng1.ILogService,\n ngTableDefaults: IDefaults,\n ngTableEventsChannel: NgTableEventsChannel,\n ngTableSettings: NgTableSettings) {\n NgTableParams.$q = $q;\n NgTableParams.$log = $log;\n NgTableParams.ngTableDefaults = ngTableDefaults;\n NgTableParams.ngTableEventsChannel = ngTableEventsChannel;\n NgTableParams.ngTableSettings = ngTableSettings;\n }\n}\n\nNgTableParams.init.$inject = ['$q', '$log', 'ngTableDefaults', 'ngTableEventsChannel', 'ngTableSettings'];\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/ngTableParams.ts","import * as ng1 from 'angular';\nimport { IPromise } from 'angular';\nimport { IDefaults } from './ngTableDefaults';\nimport { IDataRowGroup, IDataSettings, IDefaultGetData, IGetDataFunc, IInterceptor, IInterceptableGetDataFunc } from './data';\nimport { IFilterValues, IFilterSettings } from './filtering';\nimport { IGetGroupFunc, IGroupSettings } from './grouping';\nimport { SortDirection } from './sorting';\nimport { NgTableParams } from './ngTableParams';\n\n/**\n * Configuration settings for {@link NgTableParams}\n */\nexport interface ISettings {\n /**\n * Returns true whenever a call to `getData` is in progress\n */\n $loading?: boolean;\n /**\n * An array that contains all the data rows that table should manage.\n * The `gateData` function will be used to manage the data rows\n * that ultimately will be displayed.\n */\n dataset?: T[];\n dataOptions?: IDataSettings;\n debugMode?: boolean;\n /**\n * The total number of data rows before paging has been applied.\n * Typically you will not need to supply this yourself\n */\n total?: number;\n /**\n * The default sort direction that will be used whenever a sorting is supplied that\n * does not define its own sort direction\n */\n defaultSort?: SortDirection;\n filterOptions?: IFilterSettings;\n groupOptions?: IGroupSettings;\n /**\n * The page size buttons that should be displayed. Each value defined in the array\n * determines the possible values that can be supplied to {@link NgTableParams} `page`\n */\n counts?: number[];\n /**\n * The collection of interceptors that should apply to the results of a call to\n * the `getData` function before the data rows are displayed in the table\n */\n interceptors?: IInterceptor[];\n /**\n * Configuration for the template that will display the page size buttons\n */\n paginationMaxBlocks?: number;\n /**\n * Configuration for the template that will display the page size buttons\n */\n paginationMinBlocks?: number;\n /**\n * The html tag that will be used to display the sorting indicator in the table header\n */\n sortingIndicator?: string;\n /**\n * The function that will be used fetch data rows. Leave undefined to let the {@link IDefaultGetData}\n * service provide a default implementation that will work with the `dataset` array you supply.\n *\n * Typically you will supply a custom function when you need to execute filtering, paging and sorting\n * on the server\n */\n getData?: IGetDataFunc | IInterceptableGetDataFunc;\n /**\n * The function that will be used group data rows according to the groupings returned by {@link NgTableParams} `group`\n */\n getGroups?: IGetGroupFunc;\n}\n\n/**\n * @private\n */\nexport class NgTableSettings {\n static $inject = ['ngTableDefaults', 'ngTableDefaultGetData', 'ngTableDefaultGetGroups'];\n private defaults: ISettings;\n constructor(\n private ngTableDefaults: IDefaults,\n private ngTableDefaultGetData: IDefaultGetData,\n private ngTableDefaultGetGroups: IGetGroupFunc) {\n\n this.defaults = {\n $loading: false,\n dataset: null, //allows data to be set when table is initialized\n total: 0,\n defaultSort: 'desc',\n counts: [10, 25, 50, 100],\n filterOptions: {\n filterComparator: undefined, // look for a substring match in case insensitive way\n filterDelay: 500,\n filterDelayThreshold: 10000, // size of dataset array that will trigger the filterDelay being applied\n filterFilterName: undefined, // when defined overrides ngTableDefaultGetDataProvider.filterFilterName\n filterFn: undefined, // when defined overrides the filter function that ngTableDefaultGetData uses\n filterLayout: 'stack'\n },\n getData: (params: NgTableParams) => {\n return this.ngTableDefaultGetData(params.settings().dataset, params);\n },\n getGroups: this.ngTableDefaultGetGroups,\n groupOptions: {\n defaultSort: 'asc', // set to 'asc' or 'desc' to apply sorting to groups\n isExpanded: true\n },\n interceptors: [],\n paginationMaxBlocks: 11,\n paginationMinBlocks: 5,\n sortingIndicator: 'span'\n };\n }\n createDefaults(): ISettings {\n return this.merge(this.defaults, this.ngTableDefaults.settings);\n }\n merge(existing: ISettings, newSettings: ISettings): ISettings {\n\n newSettings = ng1.extend({}, newSettings);\n\n if (newSettings.filterOptions) {\n newSettings.filterOptions = ng1.extend({}, existing.filterOptions || {}, newSettings.filterOptions);\n }\n if (newSettings.groupOptions) {\n newSettings.groupOptions = ng1.extend({}, existing.groupOptions || {}, newSettings.groupOptions);\n }\n\n if (ng1.isArray(newSettings.dataset)) {\n //auto-set the total from passed in dataset\n newSettings.total = newSettings.dataset.length;\n }\n const results = ng1.extend({}, existing, newSettings);\n if (ng1.isArray(newSettings.dataset)) {\n this.optimizeFilterDelay(results);\n }\n return ng1.extend({}, existing, newSettings);\n }\n private optimizeFilterDelay(settings: ISettings) {\n // don't debounce by default filter input when working with small synchronous datasets\n if (settings.filterOptions.filterDelay === this.defaults.filterOptions.filterDelay &&\n settings.total <= settings.filterOptions.filterDelayThreshold &&\n settings.getData === this.defaults.getData) {\n settings.filterOptions.filterDelay = 0;\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/ngTableSettings.ts","import { Grouping, IGroupingFunc } from './grouping';\nimport { ISortingValues } from './sorting';\n\n/**\n * @private\n */\nexport function convertSortToOrderBy(sorting: ISortingValues) {\n const result: string[] = [];\n for (let column in sorting) {\n result.push((sorting[column] === \"asc\" ? \"+\" : \"-\") + column);\n }\n return result;\n}\n\n/**\n * @private\n */\nexport function isGroupingFun(val: string | Grouping): val is IGroupingFunc {\n return typeof val === 'function'\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/util.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\nimport { IAugmentedJQuery, IDirective, IQService, IParseService, IPromise, IScope } from 'angular';\nimport * as ng1 from 'angular';\nimport { \n IColumnDef, ColumnFieldContext, IColumnField, IFilterTemplateDefMap, SelectData, ITableInputAttributes \n} from './public-interfaces';\nimport { NgTableController } from './ngTableController';\n\ninterface IScopeExtensions {\n $columns: IColumnDef[]\n}\n\nngTable.$inject = ['$q', '$parse'];\n\n/**\n * Directive that instantiates {@link NgTableController NgTableController}.\n * @ngdoc directive\n * @name ngTable\n * @example\n * \n * ```html\n * \n * \n * \n * \n * \n *
\n * {{user.name}}\n * \n * {{user.age}}\n *
\n * ```\n */\nexport function ngTable($q: IQService, $parse: IParseService) : IDirective {\n\n return {\n restrict: 'A',\n priority: 1001,\n scope: true,\n controller: 'ngTableController',\n compile: function(element: IAugmentedJQuery) {\n let columns: IColumnDef[] = [],\n i = 0,\n dataRow: JQuery,\n groupRow: JQuery\n const rows: JQuery[] = [];\n\n ng1.forEach(element.find('tr'), (tr: JQuery) => {\n rows.push(ng1.element(tr))\n });\n dataRow = rows.filter(tr => !tr.hasClass('ng-table-group'))[0];\n groupRow = rows.filter(tr => tr.hasClass('ng-table-group'))[0];\n\n if (!dataRow) {\n return undefined;\n }\n ng1.forEach(dataRow.find('td'), (item: JQuery) => {\n const el = ng1.element(item);\n if (el.attr('ignore-cell') && 'true' === el.attr('ignore-cell')) {\n return;\n }\n\n const getAttrValue = function(attr: string){\n return el.attr('x-data-' + attr) || el.attr('data-' + attr) || el.attr(attr);\n };\n const setAttrValue = function(attr: string, value: string){\n if (el.attr('x-data-' + attr)){\n el.attr('x-data-' + attr, value)\n } else if (el.attr('data' + attr)){\n el.attr('data' + attr, value)\n } else {\n el.attr(attr, value)\n }\n };\n\n const parsedAttribute = function(attr: string): IColumnField {\n const expr = getAttrValue(attr);\n if (!expr){\n return undefined;\n }\n\n let localValue: any;\n const getter = (context: ColumnFieldContext) => {\n if (localValue !== undefined){\n return localValue as T;\n }\n return $parse(expr)(context) as T;\n };\n (getter as any).assign = ($scope: ColumnFieldContext, value: any) => {\n const parsedExpr = $parse(expr);\n if (parsedExpr.assign) {\n // we should be writing back to the parent scope as this is where the expression\n // came from\n parsedExpr.assign($scope.$parent, value);\n } else {\n localValue = value;\n }\n };\n return getter as IColumnField;\n };\n const titleExpr = getAttrValue('title-alt') || getAttrValue('title');\n if (titleExpr){\n el.attr('data-title-text', '{{' + titleExpr + '}}'); // this used in responsive table\n }\n // NOTE TO MAINTAINERS: if you add extra fields to a $column be sure to extend ngTableColumn with\n // a corresponding \"safe\" default\n columns.push({\n id: i++,\n title: parsedAttribute('title'),\n titleAlt: parsedAttribute('title-alt'),\n headerTitle: parsedAttribute('header-title'),\n sortable: parsedAttribute('sortable'),\n 'class': parsedAttribute('header-class'),\n filter: parsedAttribute('filter'),\n groupable: parsedAttribute('groupable'),\n headerTemplateURL: parsedAttribute('header'),\n filterData: parsedAttribute | SelectData>('filter-data'),\n show: el.attr(\"ng-if\") ? parsedAttribute('ng-if') : undefined\n });\n\n if (groupRow || el.attr(\"ng-if\")){\n // change ng-if to bind to our column definition which we know will be writable\n // because this will potentially increase the $watch count, only do so if we already have an\n // ng-if or when we definitely need to change visibility of the columns.\n // currently only ngTableGroupRow directive needs to change visibility\n setAttrValue('ng-if', '$columns[' + (columns.length - 1) + '].show(this)');\n }\n });\n return function(scope: IScope & IScopeExtensions, element: IAugmentedJQuery, attrs: ITableInputAttributes, controller: NgTableController) {\n scope.$columns = columns = controller.buildColumns(columns);\n\n controller.setupBindingsToInternalScope(attrs.ngTable);\n controller.loadFilterData(columns);\n controller.compileDirectiveTemplates();\n };\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTable.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IScope } from 'angular';\nimport * as ng1 from 'angular';\nimport { IColumnDef, IDynamicTableColDef } from './public-interfaces';\n\n/**\n * @private\n */\nfunction isScopeLike(object: any) {\n return object != null && ng1.isFunction(object.$new);\n}\n\n/**\n * @private\n * Service to construct a $column definition used by {@link ngTable ngTable} directive\n */\nexport class NgTableColumn {\n static $inject: string[] = [];\n\n /**\n * Creates a $column for use within a header template\n *\n * @param column the initial definition for $column to build\n * @param defaultScope the $scope to supply to the $column getter methods when not supplied by caller\n * @param columns a reference to the $columns array to make available on the context supplied to the\n * $column getter methods\n */\n buildColumn(column: TCol, defaultScope: IScope, columns: IColumnDef[]): IColumnDef {\n // note: we're not modifying the original column object. This helps to avoid unintended side affects\n const extendedCol = Object.create(column);\n const defaults = this.createDefaults();\n for (const prop in defaults) {\n if (extendedCol[prop] === undefined) {\n extendedCol[prop] = defaults[prop];\n }\n if (!ng1.isFunction(extendedCol[prop])) {\n // wrap raw field values with \"getter\" functions\n // - this is to ensure consistency with how ngTable.compile builds columns\n // - note that the original column object is being \"proxied\"; this is important\n // as it ensure that any changes to the original object will be returned by the \"getter\"\n const getterSetter = function getterSetter(/*[value] || [$scope, locals]*/) {\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\n (getterSetter as any).assign(null, arguments[0]);\n } else {\n return column[prop];\n }\n };\n (getterSetter as any).assign = function ($scope: IScope, value: any) {\n column[prop] = value;\n };\n extendedCol[prop] = getterSetter;\n }\n // satisfy the arguments expected by the function returned by parsedAttribute in the ngTable directive\n const getterFn = extendedCol[prop];\n extendedCol[prop] = function () {\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\n getterFn.assign(defaultScope, arguments[0]);\n } else {\n const scope = arguments[0] || defaultScope;\n const context = Object.create(scope);\n ng1.extend(context, {\n $column: extendedCol,\n $columns: columns\n });\n return getterFn.call(column, context);\n }\n };\n if (getterFn.assign) {\n extendedCol[prop].assign = getterFn.assign;\n } else {\n const wrappedGetterFn = extendedCol[prop];\n let localValue: any;\n const getterSetter = function getterSetter(/*[value] || [$scope, locals]*/) {\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\n (getterSetter as any).assign(null, arguments[0]);\n } else {\n return localValue != undefined ? localValue : wrappedGetterFn.apply(extendedCol, arguments);\n }\n };\n (getterSetter as any).assign = function ($scope: IScope, value: any) {\n localValue = value;\n };\n extendedCol[prop] = getterSetter;\n }\n }\n return extendedCol as IColumnDef;\n }\n\n private createDefaults() {\n return {\n 'class': this.createGetterSetter(''),\n filter: this.createGetterSetter(false),\n groupable: this.createGetterSetter(false),\n filterData: ng1.noop,\n headerTemplateURL: this.createGetterSetter(false),\n headerTitle: this.createGetterSetter(''),\n sortable: this.createGetterSetter(false),\n show: this.createGetterSetter(true),\n title: this.createGetterSetter(''),\n titleAlt: this.createGetterSetter('')\n };\n }\n\n private createGetterSetter(initialValue: any) {\n let value = initialValue;\n const getterSetter = function getterSetter(/*[value] || [$scope, locals]*/) {\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\n (getterSetter as any).assign(null, arguments[0]);\n } else {\n return value;\n }\n };\n (getterSetter as any).assign = function ($scope: IScope, newValue: any) {\n value = newValue;\n };\n return getterSetter;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableColumn.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IAugmentedJQuery, IAttributes, IDirective, IParseService } from 'angular';\nimport { ITableScope } from './ngTableController';\nimport { IColumnDef } from './public-interfaces';\n\n/**\n * @private\n */\ninterface IInputAttributes extends IAttributes {\n ngTableColumnsBinding: string;\n}\n\nngTableColumnsBinding.$inject = [\"$parse\"];\n\n/**\n * One-way data binds the $columns array generated by ngTable/ngTableDynamic to the specified\n * expression.\n * This allows the $columns array created for the table to be accessed outside of the html table\n * markup.\n * \n * @ngdoc directive\n * \n * @example\n * ```html\n * \n * ```\n */\nexport function ngTableColumnsBinding($parse: IParseService) : IDirective {\n const directive = {\n restrict: 'A',\n link: linkFn\n };\n return directive;\n\n function linkFn($scope: ITableScope, $element: IAugmentedJQuery, $attrs: IInputAttributes){\n const setter = $parse($attrs.ngTableColumnsBinding).assign;\n if (setter){\n $scope.$watch('$columns', newColumns => {\n const shallowClone = (newColumns || []).slice(0);\n setter($scope, shallowClone);\n });\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableColumnsBinding.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport {\n IAttributes, IAugmentedJQuery, ICompileService, IDocumentService, IParseService, IPromise, IScope,\n ITimeoutService\n} from 'angular';\nimport * as ng1 from 'angular';\nimport {\n DataResult, DataResults, IDataRowGroup, GroupedDataResults, NgTableParams, NgTableEventsChannel,\n IPageButton\n} from '../core';\nimport { IColumnDef, IDynamicTableColDef, SelectData, ITableInputAttributes } from './public-interfaces';\nimport { NgTableColumn } from './ngTableColumn';\n\n/**\n * @private\n */\nexport interface ITableScope extends IScope {\n $columns: IColumnDef[];\n $loading: boolean;\n $filterRow: {\n disabled: boolean;\n };\n $data?: DataResults;\n $groups?: GroupedDataResults;\n $groupRow: {\n show: boolean;\n };\n show_filter: boolean;\n pages: IPageButton[];\n templates: {\n header: string;\n pagination: string;\n },\n params: NgTableParams\n}\n\n/**\n * The controller for the {@link ngTable ngTable} and {@link ngTableDynamic ngTableDynamic} directives\n */\nexport class NgTableController {\n static $inject = [\n '$scope', '$timeout', '$parse', '$compile', '$attrs', '$element', '$document', 'ngTableColumn', 'ngTableEventsChannel'\n ];\n private delayFilter: (callback: () => void, ms: number) => void;\n private get hasVisibleFilterColumn() {\n if (!this.$scope.$columns) return false;\n\n return this.some(this.$scope.$columns, ($column) => {\n return $column.show(this.$scope) && !!$column.filter(this.$scope);\n });\n }\n constructor(\n private $scope: ITableScope,\n $timeout: ITimeoutService,\n private $parse: IParseService,\n private $compile: ICompileService,\n private $attrs: IAttributes & ITableInputAttributes,\n private $element: IAugmentedJQuery,\n private $document: IDocumentService,\n private ngTableColumn: NgTableColumn,\n private ngTableEventsChannel: NgTableEventsChannel) {\n\n const isFirstTimeLoad = true;\n $scope.$filterRow = { disabled: false };\n $scope.$loading = false;\n\n // until such times as the directive uses an isolated scope, we need to ensure that the check for\n // the params field only consults the \"own properties\" of the $scope. This is to avoid seeing the params\n // field on a $scope higher up in the prototype chain\n if (!$scope.hasOwnProperty(\"params\")) {\n $scope.params = new NgTableParams(true);\n }\n\n this.delayFilter = (function () {\n let timer: IPromise;\n return (callback: () => void, ms: number) => {\n $timeout.cancel(timer);\n timer = $timeout(callback, ms);\n };\n })();\n\n // watch for when a new NgTableParams is bound to the scope\n // CRITICAL: the watch must be for reference and NOT value equality; this is because NgTableParams maintains\n // the current data page as a field. Checking this for value equality would be terrible for performance\n // and potentially cause an error if the items in that array has circular references\n this.$scope.$watch>('params', (newParams, oldParams) => {\n if (newParams === oldParams || !newParams) {\n return;\n }\n\n newParams.reload();\n }, false);\n\n this.subscribeToTableEvents();\n }\n\n private onDataReloadStatusChange(newStatus: boolean/*, oldStatus*/) {\n if (!newStatus || this.$scope.params.hasErrorState()) {\n return;\n }\n\n const currentParams = this.$scope.params;\n const filterOptions = currentParams.settings().filterOptions;\n\n if (currentParams.hasFilterChanges()) {\n const applyFilter = () => {\n currentParams.page(1);\n currentParams.reload();\n };\n if (filterOptions.filterDelay) {\n this.delayFilter(applyFilter, filterOptions.filterDelay);\n } else {\n applyFilter();\n }\n } else {\n currentParams.reload();\n }\n }\n\n compileDirectiveTemplates() {\n if (!this.$element.hasClass('ng-table')) {\n this.$scope.templates = {\n header: (this.$attrs.templateHeader ? this.$attrs.templateHeader : 'ng-table/header.html'),\n pagination: (this.$attrs.templatePagination ? this.$attrs.templatePagination : 'ng-table/pager.html')\n };\n this.$element.addClass('ng-table');\n let headerTemplate: IAugmentedJQuery = null;\n\n // $element.find('> thead').length === 0 doesn't work on jqlite\n let theadFound = false;\n ng1.forEach(this.$element.children(), (e) => {\n if (e.tagName === 'THEAD') {\n theadFound = true;\n }\n });\n if (!theadFound) {\n headerTemplate = ng1.element('', this.$document);\n this.$element.prepend(headerTemplate);\n }\n const paginationTemplate = ng1.element(\n '
',\n this.$document\n );\n this.$element.after(paginationTemplate);\n if (headerTemplate) {\n this.$compile(headerTemplate)(this.$scope);\n }\n this.$compile(paginationTemplate)(this.$scope);\n }\n }\n\n loadFilterData($columns: IColumnDef[]) {\n ng1.forEach($columns, ($column) => {\n const result = $column.filterData(this.$scope);\n if (!result) {\n delete $column.filterData;\n return undefined;\n }\n\n if (isPromiseLike(result)) {\n delete $column.filterData;\n return result.then(data => {\n // our deferred can eventually return arrays, functions and objects\n if (!ng1.isArray(data) && !ng1.isFunction(data) && !ng1.isObject(data)) {\n // if none of the above was found - we just want an empty array\n data = [];\n }\n $column.data = data;\n });\n }\n // otherwise, we just return what the user gave us. It could be a function, array, object, whatever\n else {\n return $column.data = result;\n }\n });\n\n function isPromiseLike(val: any): val is IPromise {\n return val && typeof val === 'object' && typeof val.then === 'function';\n }\n }\n\n buildColumns(columns: TCol[]): IColumnDef[] {\n // todo: use strictNullChecks and remove guard clause\n const result: IColumnDef[] = [];\n (columns || []).forEach(col => {\n result.push(this.ngTableColumn.buildColumn(col, this.$scope, result));\n });\n return result\n }\n\n parseNgTableDynamicExpr(attr: string) {\n if (!attr || attr.indexOf(\" with \") > -1) {\n const parts = attr.split(/\\s+with\\s+/);\n return {\n tableParams: parts[0],\n columns: parts[1]\n };\n } else {\n throw new Error('Parse error (expected example: ng-table-dynamic=\\'tableParams with cols\\')');\n }\n }\n\n setupBindingsToInternalScope(tableParamsExpr: string) {\n\n // note: this we're setting up watches to simulate angular's isolated scope bindings\n\n // note: is REALLY important to watch for a change to the ngTableParams *reference* rather than\n // $watch for value equivalence. This is because ngTableParams references the current page of data as\n // a field and it's important not to watch this\n this.$scope.$watch>(tableParamsExpr, (params) => {\n if (params === undefined) {\n return;\n }\n this.$scope.params = params;\n }, false);\n\n this.setupFilterRowBindingsToInternalScope();\n this.setupGroupRowBindingsToInternalScope();\n }\n\n private setupFilterRowBindingsToInternalScope() {\n if (this.$attrs.showFilter) {\n this.$scope.$parent.$watch(this.$attrs.showFilter, (value) => {\n this.$scope.show_filter = value;\n });\n } else {\n this.$scope.$watch(() => this.hasVisibleFilterColumn, (value) => {\n this.$scope.show_filter = value;\n })\n }\n\n if (this.$attrs.disableFilter) {\n this.$scope.$parent.$watch(this.$attrs.disableFilter, (value) => {\n this.$scope.$filterRow.disabled = value;\n });\n }\n }\n\n private setupGroupRowBindingsToInternalScope() {\n this.$scope.$groupRow = { show: false };\n if (this.$attrs.showGroup) {\n const showGroupGetter = this.$parse(this.$attrs.showGroup);\n this.$scope.$parent.$watch(showGroupGetter, (value) => {\n this.$scope.$groupRow.show = value;\n });\n if (showGroupGetter.assign) {\n // setup two-way databinding thus allowing ngTableGrowRow to assign to the showGroup expression\n this.$scope.$watch('$groupRow.show', (value) => {\n showGroupGetter.assign(this.$scope.$parent, value);\n });\n }\n } else {\n this.$scope.$watch('params.hasGroup()', (newValue) => {\n this.$scope.$groupRow.show = newValue;\n });\n }\n }\n\n private getVisibleColumns() {\n return (this.$scope.$columns || []).filter((c) => {\n return c.show(this.$scope);\n });\n }\n\n private subscribeToTableEvents() {\n\n this.$scope.$watch('params.isDataReloadRequired()', (newStatus: boolean/*, oldStatus*/) => {\n this.onDataReloadStatusChange(newStatus);\n });\n\n this.ngTableEventsChannel.onAfterReloadData(\n (params, newDatapage) => {\n const visibleColumns = this.getVisibleColumns();\n if (params.hasGroup()) {\n this.$scope.$groups = (newDatapage || []) as GroupedDataResults;\n this.$scope.$groups.visibleColumnCount = visibleColumns.length;\n } else {\n this.$scope.$data = (newDatapage || []) as DataResults;\n this.$scope.$data.visibleColumnCount = visibleColumns.length;\n }\n },\n this.$scope,\n (publisher) => this.$scope.params === publisher\n );\n\n this.ngTableEventsChannel.onPagesChanged(\n (params, newPages) => {\n this.$scope.pages = newPages;\n },\n this.$scope,\n (publisher) => this.$scope.params === publisher\n );\n }\n\n private some(array: T[], predicate: (item: T) => boolean) {\n let found = false;\n for (let i = 0; i < array.length; i++) {\n const obj = array[i];\n if (predicate(obj)) {\n found = true;\n break;\n }\n }\n return found;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableController.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IAugmentedJQuery, IDirective, IScope } from 'angular';\nimport * as ng1 from 'angular';\nimport { IColumnDef, IDynamicTableColDef, ITableInputAttributes } from './public-interfaces';\nimport { NgTableController } from './ngTableController';\n\ninterface IScopeExtensions {\n $columns: IColumnDef[]\n}\n\nngTableDynamic.$inject = [];\n\n/**\n * A dynamic version of the {@link ngTable ngTable} directive that accepts a dynamic list of columns\n * definitions to render\n * @ngdoc directive\n *\n * @example\n * ```html\n *
\n * \n * \n * \n *
{{row[col.field]}}
\n * ```\n */\nexport function ngTableDynamic () : IDirective{\n\n return {\n restrict: 'A',\n priority: 1001,\n scope: true,\n controller: 'ngTableController',\n compile: function(tElement: IAugmentedJQuery) {\n let row: IAugmentedJQuery;\n\n // IE 8 fix :not(.ng-table-group) selector\n ng1.forEach(tElement.find('tr'), (tr: JQuery) => {\n tr = ng1.element(tr);\n if (!tr.hasClass('ng-table-group') && !row) {\n row = tr;\n }\n });\n if (!row) {\n return undefined;\n }\n\n ng1.forEach(row.find('td'), (item: JQuery) => {\n const el = ng1.element(item);\n const getAttrValue = (attr: string) => {\n return el.attr('x-data-' + attr) || el.attr('data-' + attr) || el.attr(attr);\n };\n\n // this used in responsive table\n const titleExpr = getAttrValue('title');\n if (!titleExpr){\n el.attr('data-title-text', '{{$columns[$index].titleAlt(this) || $columns[$index].title(this)}}');\n }\n const showExpr = el.attr('ng-if');\n if (!showExpr){\n el.attr('ng-if', '$columns[$index].show(this)');\n }\n });\n return function (scope: IScope & IScopeExtensions, element: IAugmentedJQuery, attrs: ITableInputAttributes, controller: NgTableController) {\n const expr = controller.parseNgTableDynamicExpr(attrs.ngTableDynamic);\n\n controller.setupBindingsToInternalScope(expr.tableParams);\n controller.compileDirectiveTemplates();\n\n scope.$watchCollection(expr.columns, (newCols/*, oldCols*/) => {\n scope.$columns = controller.buildColumns(newCols);\n controller.loadFilterData(scope.$columns);\n });\n };\n }\n };\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableDynamic.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport * as ng1 from 'angular';\nimport { IServiceProvider, auto } from 'angular';\nimport { IFilterConfigValues, IFilterTemplateDef } from './public-interfaces';\n\n/**\n * The angular provider used to configure the behaviour of the `NgTableFilterConfig` service.\n */\nexport class NgTableFilterConfigProvider implements IServiceProvider {\n static $inject = ['$injector'];\n $get: () => NgTableFilterConfig;\n private config: IFilterConfigValues;\n private defaultConfig: IFilterConfigValues = {\n defaultBaseUrl: 'ng-table/filters/',\n defaultExt: '.html',\n aliasUrls: {}\n };\n constructor($injector: auto.IInjectorService) {\n this.$get = () => {\n return $injector.instantiate(NgTableFilterConfig, { config: ng1.copy(this.config) });\n }\n this.$get.$inject = [];\n this.resetConfigs();\n }\n\n /**\n * Reset back to factory defaults the config values that `NgTableFilterConfig` service will use\n */\n resetConfigs() {\n this.config = this.defaultConfig;\n }\n\n /**\n * Set the config values used by `NgTableFilterConfig` service\n */\n setConfig(customConfig: IFilterConfigValues) {\n const mergeConfig = ng1.extend({}, this.config, customConfig);\n mergeConfig.aliasUrls = ng1.extend({}, this.config.aliasUrls, customConfig.aliasUrls);\n this.config = mergeConfig;\n }\n}\n\n/**\n * Exposes configuration values and methods used to return the location of the html\n * templates used to render the filter row of an ng-table directive\n */\nexport class NgTableFilterConfig {\n static $inject = ['config'];\n constructor(\n /**\n * Readonly copy of the final values used to configure the service.\n */\n public readonly config: IFilterConfigValues\n ) { }\n\n /**\n * Return the url of the html filter template registered with the alias supplied\n */\n getUrlForAlias(aliasName: string, filterKey?: string) {\n return this.config.aliasUrls[aliasName] || this.config.defaultBaseUrl + aliasName + this.config.defaultExt;\n }\n \n /**\n * Return the url of the html filter template for the supplied definition and key.\n * For more information see the documentation for {@link IFilterTemplateMap}\n */\n getTemplateUrl(filterDef: string | IFilterTemplateDef, filterKey?: string) {\n let filterName: string;\n if (typeof filterDef !== 'string') {\n filterName = filterDef.id;\n } else {\n filterName = filterDef;\n }\n if (filterName.indexOf('/') !== -1) {\n return filterName;\n }\n\n return this.getUrlForAlias(filterName, filterKey);\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableFilterConfig.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nconst templateUrl = require('./filterRow.html');\n\nngTableFilterRow.$inject = [];\n\n/**\n * directive that renders the filter header row for a table \n * @ngdoc directive\n * @example\n * ```html\n * \n * ```\n */\nexport function ngTableFilterRow(){\n const directive = {\n restrict: 'E',\n replace: true,\n templateUrl: templateUrl,\n scope: true,\n controller: 'ngTableFilterRowController',\n controllerAs: '$ctrl'\n };\n return directive;\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableFilterRow.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IScope } from 'angular';\nimport { IFilterTemplateDef, IFilterTemplateDefMap } from './public-interfaces';\nimport { NgTableFilterConfig } from './ngTableFilterConfig';\n\n/**\n * @private\n */\nexport interface IScopeExtensions {\n getFilterPlaceholderValue(filterDef: string | IFilterTemplateDef, filterKey?: string): string;\n}\n\n/**\n * Controller for the {@link ngTableFilterRow ngTableFilterRow} directive\n */\nexport class NgTableFilterRowController {\n static $inject = ['$scope', 'ngTableFilterConfig'];\n config: NgTableFilterConfig;\n constructor($scope: IScope & IScopeExtensions, ngTableFilterConfig: NgTableFilterConfig) {\n this.config = ngTableFilterConfig;\n\n // todo: stop doing this. Why?\n // * scope inheritance makes it hard to know how supplies functions\n // * scope is not a concept in angular 2\n // make function available to filter templates\n $scope.getFilterPlaceholderValue = this.getFilterPlaceholderValue.bind(this);\n }\n\n getFilterCellCss(filter: IFilterTemplateDefMap, layout: string) {\n if (layout !== 'horizontal') {\n return 's12';\n }\n\n const size = Object.keys(filter).length;\n const width = parseInt((12 / size).toString(), 10);\n return 's' + width;\n }\n\n getFilterPlaceholderValue(filterDef: string | IFilterTemplateDef, filterKey?: string) {\n if (typeof filterDef === 'string') {\n return '';\n } else {\n return filterDef.placeholder;\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableFilterRowController.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nconst templateUrl = require('./groupRow.html');\n\nngTableGroupRow.$inject = [];\n\n/**\n * directive that renders the group header row for a table \n * @ngdoc directive\n * @example\n * ```html\n * \n * ```\n */\nexport function ngTableGroupRow(){\n const directive = {\n restrict: 'E',\n replace: true,\n templateUrl: templateUrl,\n scope: true,\n controller: 'ngTableGroupRowController',\n controllerAs: '$ctrl'\n };\n return directive;\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableGroupRow.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IPromise } from 'angular';\nimport { DataResult, IGroupingFunc, Grouping, GroupSort } from '../core';\nimport { IColumnDef } from './public-interfaces';\nimport { ITableScope } from './ngTableController';\n\n/**\n * @private\n */\nexport interface IScopeExtensions {\n $selGroup: IGroupingFunc | string;\n $selGroupTitle: string;\n}\n\n\n/**\n * Controller for the {@link ngTableGroupRow ngTableGroupRow} directive\n */\nexport class NgTableGroupRowController {\n static $inject = ['$scope'];\n private groupFns: Array | IColumnDef> = [];\n constructor(private $scope: ITableScope & IScopeExtensions) {\n $scope.$watch>('params.group()', (newGrouping) => {\n this.setGroup(newGrouping);\n }, true);\n }\n\n getGroupables() {\n const groupableCols = this.$scope.$columns.filter($column => !!$column.groupable(this.$scope));\n return this.groupFns.concat(groupableCols);\n }\n\n getGroupTitle(group: IGroupingFunc | IColumnDef) {\n return this.isGroupingFunc(group) ? group.title : group.title(this.$scope);\n }\n\n\n getVisibleColumns() {\n return this.$scope.$columns.filter($column => $column.show(this.$scope))\n }\n\n groupBy(group: IGroupingFunc | IColumnDef) {\n if (this.isSelectedGroup(group)) {\n this.changeSortDirection();\n } else {\n if (this.isGroupingFunc(group)) {\n this.$scope.params.group(group);\n } else {\n // it's OK, we know that groupable will return a string\n // this is guaranteed by getGroupables returning only\n // columns that return (truthy) strings\n this.$scope.params.group(group.groupable(this.$scope) as string);\n }\n }\n }\n\n isSelectedGroup(group: IGroupingFunc | IColumnDef) {\n if (this.isGroupingFunc(group)) {\n return group === this.$scope.$selGroup;\n } else {\n return group.groupable(this.$scope) === this.$scope.$selGroup;\n }\n }\n\n toggleDetail() {\n this.$scope.params.settings().groupOptions.isExpanded = !this.$scope.params.settings().groupOptions.isExpanded;\n return this.$scope.params.reload();\n }\n\n private changeSortDirection() {\n let newDirection: GroupSort;\n if (this.$scope.params.hasGroup(this.$scope.$selGroup, 'asc')) {\n newDirection = 'desc';\n } else if (this.$scope.params.hasGroup(this.$scope.$selGroup, 'desc')) {\n newDirection = '';\n } else {\n newDirection = 'asc';\n }\n this.$scope.params.group(this.$scope.$selGroup, newDirection);\n }\n\n private findGroupColumn(groupKey: IGroupingFunc | string) {\n return this.$scope.$columns.filter($column => $column.groupable(this.$scope) === groupKey)[0];\n }\n\n private isGroupingFunc(val: IColumnDef | Grouping): val is IGroupingFunc {\n return typeof val === 'function';\n }\n\n private setGroup(grouping: Grouping) {\n const existingGroupCol = this.findGroupColumn(this.$scope.$selGroup);\n if (existingGroupCol && existingGroupCol.show.assign) {\n existingGroupCol.show.assign(this.$scope, true);\n }\n if (this.isGroupingFunc(grouping)) {\n this.groupFns = [grouping];\n this.$scope.$selGroup = grouping;\n this.$scope.$selGroupTitle = grouping.title;\n } else {\n // note: currently only one group is implemented\n const groupKey = Object.keys(grouping || {})[0];\n const groupedColumn = this.findGroupColumn(groupKey);\n if (groupedColumn) {\n this.$scope.$selGroupTitle = groupedColumn.title(this.$scope);\n this.$scope.$selGroup = groupKey;\n if (groupedColumn.show.assign) {\n groupedColumn.show.assign(this.$scope, false);\n }\n }\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableGroupRowController.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport * as ng1 from 'angular';\nimport { NgTableEventsChannel, IPageButton } from '../core'\nimport { ITableScope } from './ngTableController';\n\ninterface IScopeExtensions {\n pages: IPageButton[]\n}\n\nngTablePagination.$inject = ['$compile', '$document', 'ngTableEventsChannel'];\n\n/**\n * Directive that renders the table pagination controls\n * @ngdoc directive\n */\nexport function ngTablePagination($compile: ng1.ICompileService, $document: ng1.IDocumentService, ngTableEventsChannel: NgTableEventsChannel): ng1.IDirective {\n\n return {\n restrict: 'A',\n scope: {\n 'params': '=ngTablePagination',\n 'templateUrl': '='\n },\n replace: false,\n link: function(scope: ITableScope & IScopeExtensions, element: ng1.IAugmentedJQuery/*, attrs*/) {\n\n ngTableEventsChannel.onAfterReloadData(function(pubParams) {\n scope.pages = pubParams.generatePagesArray();\n }, scope, function(pubParams){\n return pubParams === scope.params;\n });\n\n scope.$watch('templateUrl', function(templateUrl) {\n if (templateUrl === undefined) {\n return;\n }\n const template = ng1.element('
', $document);\n element.append(template);\n $compile(template)(scope);\n });\n }\n };\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTablePagination.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport * as ng1 from 'angular';\nimport { IColumnDef, SelectData, ISelectDataFunc, ISelectOption } from './public-interfaces';\n\n/**\n * @private\n */\nexport interface IInputAttributes extends ng1.IAttributes {\n ngTableSelectFilterDs: string;\n}\n\n/**\n * @private\n */\nexport interface IScopeExtensions {\n $selectData: ISelectOption[]\n}\n\nngTableSelectFilterDs.$inject = [];\n\n/**\n * Takes the array returned by $column.filterData and makes it available as `$selectData` on the `$scope`.\n *\n * The resulting `$selectData` array will contain an extra item that is suitable to represent the user\n * \"deselecting\" an item from a `\\n\";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/filters/number.html\n// module id = 43\n// module chunks = 0","var path = 'ng-table/filters/select-multiple.html';\nvar html = \"\\n\";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/filters/select-multiple.html\n// module id = 44\n// module chunks = 0","var path = 'ng-table/filters/select.html';\nvar html = \"\\n\";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/filters/select.html\n// module id = 45\n// module chunks = 0","var path = 'ng-table/filters/text.html';\nvar html = \"\\n\";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/filters/text.html\n// module id = 46\n// module chunks = 0","var path = 'ng-table/groupRow.html';\nvar html = \"\\n \\n \\n {{$selGroupTitle}}\\n \\n \\n \\n \\n \\n\\n\";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/groupRow.html\n// module id = 47\n// module chunks = 0","var path = 'ng-table/header.html';\nvar html = \"\\n\\n\\n\";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/header.html\n// module id = 48\n// module chunks = 0","var path = 'ng-table/pager.html';\nvar html = \"
\\n
\\n \\n
\\n
    \\n
  • \\n «\\n \\n \\n \\n \\n »\\n
  • \\n
\\n
\\n\";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/pager.html\n// module id = 49\n// module chunks = 0","var path = 'ng-table/sorterRow.html';\nvar html = \"\\n \\n
\\n \\n
\\n
\\n \\n\\n\";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/sorterRow.html\n// module id = 50\n// module chunks = 0","import * as ng1 from 'angular';\nimport { ngTableCoreModule } from './src/core';\nimport { ngTableBrowserModule } from './src/browser';\n\nconst ngTableModule = ng1.module('ngTable', [ngTableCoreModule.name, ngTableBrowserModule.name]);\n\nexport { ngTableModule };\nexport * from './src/core';\nexport * from './src/browser';\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./index.ts"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 4dca3ba5c010a00a13d2","webpack:///external \"angular\"","webpack:///./src/core/index.ts","webpack:///./src/browser/index.ts","webpack:///./src/core/data/index.ts","webpack:///./src/shared/index.ts","webpack:///./src/browser/ngTableFilterConfig.ts","webpack:///./src/core/filtering/index.ts","webpack:///./src/core/grouping/groupSettings.ts","webpack:///./src/core/grouping/index.ts","webpack:///./src/core/ngTableEventsChannel.ts","webpack:///./src/core/ngTableParams.ts","webpack:///./src/core/ngTableSettings.ts","webpack:///./src/core/util.ts","webpack:///./src/browser/ngTable.directive.ts","webpack:///./src/browser/ngTableColumn.ts","webpack:///./src/browser/ngTableColumnsBinding.directive.ts","webpack:///./src/browser/ngTableController.ts","webpack:///./src/browser/ngTableDynamic.directive.ts","webpack:///./src/browser/ngTableFilterRow.directive.ts","webpack:///./src/browser/ngTableFilterRowController.ts","webpack:///./src/browser/ngTableGroupRow.directive.ts","webpack:///./src/browser/ngTableGroupRowController.ts","webpack:///./src/browser/ngTablePagination.directive.ts","webpack:///./src/browser/ngTableSelectFilterDs.directive.ts","webpack:///./src/browser/ngTableSorterRow.directive.ts","webpack:///./src/browser/ngTableSorterRowController.ts","webpack:///./src/core/data/dataSettings.ts","webpack:///./src/core/data/ngTableDefaultGetData.ts","webpack:///./src/core/filtering/filterSettings.ts","webpack:///./src/core/grouping/ngTableDefaultGetGroups.ts","webpack:///./src/core/grouping/publicExports.ts","webpack:///./src/core/ngTableDefaults.ts","webpack:///./src/shared/assign-partial-deep.ts","webpack:///./src/shared/check-class-init.ts","webpack:///./src/browser/filterRow.html","webpack:///./src/browser/filters/number.html","webpack:///./src/browser/filters/select-multiple.html","webpack:///./src/browser/filters/select.html","webpack:///./src/browser/filters/text.html","webpack:///./src/browser/groupRow.html","webpack:///./src/browser/header.html","webpack:///./src/browser/pager.html","webpack:///./src/browser/sorterRow.html","webpack:///./index.ts"],"names":[],"mappings":"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","file":"ng-table.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-table\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-table\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_0__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \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\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// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\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 = 44);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 4dca3ba5c010a00a13d2","module.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"angular\"\n// module id = 0\n// module chunks = 0","import * as angular from 'angular';\nimport { NgTableDefaultGetDataProvider, DefaultGetData } from './data';\nimport { GroupSettingsPartial, ngTableDefaultGetGroups } from './grouping';\nimport { ngTableDefaults, Defaults } from './ngTableDefaults';\nimport { SettingsPartial, Settings } from './ngTableSettings';\nimport { NgTableParams } from './ngTableParams';\nimport { NgTableEventsChannel } from './ngTableEventsChannel';\n\nconst ngTableCoreModule = angular.module('ngTable-core', [])\n .provider('ngTableDefaultGetData', NgTableDefaultGetDataProvider)\n .factory('ngTableDefaultGetGroups', ngTableDefaultGetGroups)\n .value('ngTableDefaults',ngTableDefaults)\n .service('ngTableEventsChannel', NgTableEventsChannel)\n .run(Settings.init)\n .run(NgTableParams.init);\n\n// note: if you are using ES6 or typescript prefer:\n// import { NgTableParams } from 'ng-table';\nngTableCoreModule.value('NgTableParams', NgTableParams)\n\nexport { ngTableCoreModule };\n\nexport { Defaults } from './ngTableDefaults';\nexport * from './ngTableEventsChannel';\nexport { SettingsPartial, Settings };\nexport * from './ngTableParams';\nexport * from './data';\nexport * from './filtering';\nexport * from './grouping/publicExports';\nexport * from './paging';\nexport * from './sorting';\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/index.ts","import * as angular from 'angular';\nimport { ngTable } from './ngTable.directive';\nimport { NgTableColumn } from './ngTableColumn';\nimport { ngTableColumnsBinding } from './ngTableColumnsBinding.directive';\nimport { NgTableController } from './ngTableController';\nimport { ngTableDynamic } from './ngTableDynamic.directive';\nimport { NgTableFilterConfigProvider, NgTableFilterConfig } from './ngTableFilterConfig';\nimport { ngTableFilterRow } from './ngTableFilterRow.directive';\nimport { NgTableFilterRowController } from './ngTableFilterRowController';\nimport { ngTableGroupRow } from './ngTableGroupRow.directive';\nimport { NgTableGroupRowController } from './ngTableGroupRowController';\nimport { ngTablePagination } from './ngTablePagination.directive';\nimport { ngTableSelectFilterDs } from './ngTableSelectFilterDs.directive';\nimport { ngTableSorterRow } from './ngTableSorterRow.directive';\nimport { NgTableSorterRowController } from './ngTableSorterRowController';\nimport './filters/number.html';\nimport './filters/select.html';\nimport './filters/select-multiple.html';\nimport './filters/text.html';\nimport './pager.html';\nimport './header.html';\n\nconst ngTableBrowserModule = angular.module('ngTable-browser', [])\n .directive('ngTable', ngTable)\n .service('ngTableColumn', NgTableColumn)\n .directive('ngTableColumnsBinding', ngTableColumnsBinding)\n .controller('ngTableController', NgTableController)\n .directive('ngTableDynamic', ngTableDynamic)\n .provider('ngTableFilterConfig', NgTableFilterConfigProvider)\n .directive('ngTableFilterRow', ngTableFilterRow)\n .controller('ngTableFilterRowController', NgTableFilterRowController)\n .directive('ngTableGroupRow', ngTableGroupRow)\n .controller('ngTableGroupRowController', NgTableGroupRowController)\n .directive('ngTablePagination', ngTablePagination)\n .directive('ngTableSelectFilterDs', ngTableSelectFilterDs)\n .directive('ngTableSorterRow', ngTableSorterRow)\n .controller('ngTableSorterRowController', NgTableSorterRowController);\n\nexport * from './public-interfaces';\nexport { NgTableController, ngTableBrowserModule };\nexport * from './ngTableFilterConfig';\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/index.ts","export * from './dataSettings';\nexport * from './getData';\nexport * from './interceptor';\nexport * from './ngTableDefaultGetData';\nexport * from './results';\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/data/index.ts","export * from './assign-partial-deep';\nexport * from './check-class-init';\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/shared/index.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport * as ng1 from 'angular';\nimport { IServiceProvider, auto } from 'angular';\nimport { assignPartialDeep } from '../shared';\nimport { FilterTemplateDef } from './public-interfaces';\n\n/**\n * Configuration values that determine the behaviour of the `ngTableFilterConfig` service\n */\nexport class FilterConfigValues {\n /**\n * The default base url to use when deriving the url for a filter template given just an alias name\n */\n defaultBaseUrl = 'ng-table/filters/';\n /**\n * The extension to use when deriving the url of a filter template when given just an alias name\n */\n defaultExt = '.html';\n /**\n * A map of alias names and their corrosponding urls. A lookup against this map will be used\n * to find the url matching an alias name.\n * If no match is found then a url will be derived using the following pattern `${defaultBaseUrl}${aliasName}.${defaultExt}`\n */\n aliasUrls: { [name: string]: string } = {};\n}\n\nexport type FilterConfigValuesPartial = Partial\n\n/**\n * The angular provider used to configure the behaviour of the `NgTableFilterConfig` service.\n */\nexport class NgTableFilterConfigProvider implements IServiceProvider {\n static $inject = ['$injector'];\n $get: () => NgTableFilterConfig;\n private config: FilterConfigValues;\n constructor($injector: auto.IInjectorService) {\n this.$get = () => {\n return $injector.instantiate(NgTableFilterConfig, { config: ng1.copy(this.config) });\n }\n this.$get.$inject = [];\n this.resetConfigs();\n }\n\n /**\n * Reset back to factory defaults the config values that `NgTableFilterConfig` service will use\n */\n resetConfigs() {\n this.config = new FilterConfigValues();\n }\n\n /**\n * Set the config values used by `NgTableFilterConfig` service\n */\n setConfig(customConfig: FilterConfigValuesPartial) {\n this.config = assignPartialDeep(ng1.copy(this.config), customConfig);\n }\n}\n\n/**\n * Exposes configuration values and methods used to return the location of the html\n * templates used to render the filter row of an ng-table directive\n */\nexport class NgTableFilterConfig {\n static $inject = ['config'];\n constructor(\n /**\n * Readonly copy of the final values used to configure the service.\n */\n public readonly config: FilterConfigValues\n ) { }\n\n /**\n * Return the url of the html filter template registered with the alias supplied\n */\n getUrlForAlias(aliasName: string, filterKey?: string) {\n return this.config.aliasUrls[aliasName] || this.config.defaultBaseUrl + aliasName + this.config.defaultExt;\n }\n \n /**\n * Return the url of the html filter template for the supplied definition and key.\n * For more information see the documentation for {@link FilterTemplateMap}\n */\n getTemplateUrl(filterDef: string | FilterTemplateDef, filterKey?: string) {\n let filterName: string;\n if (typeof filterDef !== 'string') {\n filterName = filterDef.id;\n } else {\n filterName = filterDef;\n }\n if (filterName.indexOf('/') !== -1) {\n return filterName;\n }\n\n return this.getUrlForAlias(filterName, filterKey);\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableFilterConfig.ts","export * from './filterComparator';\nexport * from './filterFunc';\nexport * from './filterSettings';\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/filtering/index.ts","import { SortDirection } from '../sorting';\n\nexport type GroupSort = SortDirection | '';\n\nexport type GroupSettingsPartial = Partial\n\n/**\n * Configuration that determines the data row grouping behaviour of a table\n */\nexport class GroupSettings {\n /**\n * The default sort direction that will be used whenever a group is supplied that\n * does not define its own sort direction\n */\n defaultSort: SortDirection = 'asc';\n /**\n * Determines whether groups should be displayed expanded to show their items. Defaults to true\n */\n isExpanded = true;\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/grouping/groupSettings.ts","export * from './getGroup';\nexport * from './groupingFunc';\nexport * from './groupSettings';\nexport * from './ngTableDefaultGetGroups';\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/grouping/index.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport * as ng1 from 'angular';\nimport { IScope } from 'angular';\nimport { DataResult, DefaultGetData } from './data';\nimport { PageButton } from './paging';\nimport { InternalTableParams, NgTableParams } from './ngTableParams';\n\n\n/**\n * Alias for the types that can be used to filter events\n */\nexport type EventSelector = NgTableParams | EventSelectorFunc\n\n/**\n * Signature of the event hander that is registered to receive the *afterCreated* event\n */\nexport interface AfterCreatedListener {\n (publisher: NgTableParams): any\n}\n/**\n * Signature of the event hander that is registered to receive the *afterReloadData* event\n */\nexport interface AfterReloadDataListener {\n (publisher: NgTableParams, newData: DataResult[], oldData: DataResult[]): any\n}\n/**\n * Signature of the event hander that is registered to receive the *datasetChanged* event\n */\nexport interface DatasetChangedListener {\n (publisher: NgTableParams, newDataset: T[], oldDataset: T[]): any\n}\n/**\n * Signature of the function used to filter the events to only specific instances of \n * {@link NgTableParams}\n */\nexport interface EventSelectorFunc {\n (publisher: NgTableParams): boolean\n}\n/**\n * Signature of the event hander that is registered to receive the *pagesChanged* event\n */\nexport interface PagesChangedListener {\n (publisher: NgTableParams, newPages: PageButton[], oldPages: PageButton[]): any\n}\n/**\n* Signature of the event hander that is registered to receive the *afterDataFiltered* event\n*/\nexport interface AfterDataFilteredListener {\n (publisher: NgTableParams, newData: DataResult[] ): any\n}\n/**\n* Signature of the event hander that is registered to receive the *afterDataSorted* event\n*/\nexport interface AfterDataSortedListener {\n (publisher: NgTableParams, newData: DataResult[] ): any\n}\n\n/**\n * Signature of the function used to explicitly unregister an event handler so that it stops\n * receiving notifications\n */\nexport interface UnregistrationFunc {\n (): void\n}\n\n/**\n * Strongly typed pub/sub for {@link NgTableParams}\n *\n * Supported events:\n *\n * * afterCreated - raised when a new instance of {@link NgTableParams} has finished being constructed\n * * afterReloadData - raised when the {@link NgTableParams} `reload` method has finished loading new data\n * * datasetChanged - raised when {@link Settings} `dataset` receives a new data array\n * * pagesChanged - raised when a new pages array has been generated\n */\nexport interface NgTableEventsChannel {\n /**\n * Subscribe to receive notification whenever a new `NgTableParams` instance has finished being constructed.\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called. Supply a\n * `scope` to have angular automatically unregister the listener when the `scope` is destroyed.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterCreated(listener: AfterCreatedListener, scope: IScope, eventFilter?: EventSelectorFunc): UnregistrationFunc;\n /**\n * Subscribe to receive notification whenever a new `NgTableParams` instance has finished being constructed.\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterCreated(listener: AfterCreatedListener, eventFilter?: EventSelectorFunc): UnregistrationFunc;\n /**\n * Subscribe to receive notification whenever the `reload` method of an `NgTableParams` instance has successfully executed\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called. Supply a\n * `scope` to have angular automatically unregister the listener when the `scope` is destroyed.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter either the specific `NgTableParams` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterReloadData(listener: AfterReloadDataListener, scope: IScope, eventFilter?: EventSelector): UnregistrationFunc;\n /**\n * Subscribe to receive notification whenever the `reload` method of an `NgTableParams` instance has successfully executed\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterReloadData(listener: AfterReloadDataListener, eventFilter?: EventSelector): UnregistrationFunc;\n\n /**\n * Subscribe to receive notification whenever a new data rows *array* is supplied as a `settings` value to a `NgTableParams` instance.\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called. Supply a\n * `scope` to have angular automatically unregister the listener when the `scope` is destroyed.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter either the specific `NgTableParams` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onDatasetChanged(listener: DatasetChangedListener, scope: IScope, eventFilter?: EventSelector): UnregistrationFunc;\n /**\n * Subscribe to receive notification whenever a new data rows *array* is supplied as a `settings` value to a `NgTableParams` instance.\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter either the specific `NgTableParams` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onDatasetChanged(listener: DatasetChangedListener, eventFilter?: EventSelector): UnregistrationFunc;\n\n /**\n * Subscribe to receive notification whenever the paging buttons for an `NgTableParams` instance change\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called. Supply a\n * `scope` to have angular automatically unregister the listener when the `scope` is destroyed.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter either the specific `NgTableParams` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onPagesChanged(listener: PagesChangedListener, scope: IScope, eventFilter?: EventSelector): UnregistrationFunc;\n /**\n * Subscribe to receive notification whenever the paging buttons for an `NgTableParams` instance change\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter either the specific `NgTableParams` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onPagesChanged(listener: PagesChangedListener, eventFilter?: EventSelector): UnregistrationFunc;\n /**\n * Subscribe to receive notification whenever a `ngTableDefaultGetData` instance filters data\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter either the specific `DefaultGetData` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterDataFiltered(listener: AfterDataFilteredListener, scope: IScope, eventFilter?: EventSelector ): UnregistrationFunc;\n /**\n * Subscribe to receive notification whenever a `ngTableDefaultGetData` instance filters data\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter either the specific `DefaultGetData` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterDataFiltered(listener: AfterDataFilteredListener, eventFilter?: EventSelector ): UnregistrationFunc; \n /**\n * Subscribe to receive notification whenever a `ngTableDefaultGetData` instance orders data\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter either the specific `DefaultGetData` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterDataSorted(listener: AfterDataSortedListener, scope: IScope, eventFilter?: EventSelector ): UnregistrationFunc;\n /**\n * Subscribe to receive notification whenever a `ngTableDefaultGetData` instance orders data\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter either the specific `DefaultGetData` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterDataSorted(listener: AfterDataSortedListener, eventFilter?: EventSelector ): UnregistrationFunc;\n\n\n publishAfterCreated(publisher: NgTableParams): void;\n publishAfterReloadData(publisher: NgTableParams, newData: T[], oldData: T[]): void;\n publishDatasetChanged(publisher: NgTableParams, newDataset: T[] | undefined, oldDataset: T[] | undefined): void;\n publishPagesChanged(publisher: NgTableParams, newPages: PageButton[], oldPages: PageButton[]): void;\n publishAfterDataFiltered(publisher: NgTableParams, newData: T[]): void;\n publishAfterDataSorted(params: NgTableParams, newData: T[]): void;\n}\n\nexport class NgTableEventsChannel {\n static $inject = ['$rootScope'];\n constructor(private $rootScope: ng1.IRootScopeService) {\n let events = this;\n events = this.addTableParamsEvent('afterCreated', events);\n events = this.addTableParamsEvent('afterReloadData', events);\n events = this.addTableParamsEvent('datasetChanged', events);\n events = this.addTableParamsEvent('pagesChanged', events);\n events = this.addTableParamsEvent('afterDataFiltered', events);\n events = this.addTableParamsEvent('afterDataSorted', events);\n }\n private addTableParamsEvent(eventName: string, target: {}) {\n const fnName = eventName.charAt(0).toUpperCase() + eventName.substring(1);\n const event = {\n ['on' + fnName]: this.createEventSubscriptionFn(eventName),\n ['publish' + fnName]: this.createPublishEventFn(eventName)\n };\n return ng1.extend(target, event);\n }\n private createPublishEventFn(eventName: string) {\n return (...args: any[]) => {\n this.$rootScope.$broadcast('ngTable:' + eventName, ...args);\n }\n }\n private createEventSubscriptionFn(eventName: string) {\n\n return (\n handler: (...args: any[]) => void,\n eventSelectorOrScope: EventSelector | ng1.IScope,\n eventSelector?: EventSelector) => {\n\n let actualEvtSelector: (publisher: NgTableParams) => boolean;\n let scope: ng1.IScope = this.$rootScope;\n\n if (isScopeLike(eventSelectorOrScope)) {\n scope = eventSelectorOrScope;\n actualEvtSelector = createEventSelectorFn(eventSelector);\n } else {\n actualEvtSelector = createEventSelectorFn(eventSelectorOrScope);\n }\n\n return scope.$on('ngTable:' + eventName, function (event: ng1.IAngularEvent, params: InternalTableParams, ...eventArgs: any[]) {\n // don't send events published by the internal NgTableParams created by ngTableController\n if (params.isNullInstance) return;\n\n const fnArgs = [params].concat(eventArgs);\n if (actualEvtSelector.apply(this, fnArgs)) {\n handler.apply(this, fnArgs);\n }\n });\n }\n\n function createEventSelectorFn(eventSelector: EventSelector = () => true): EventSelectorFunc {\n if (isEventSelectorFunc(eventSelector)) {\n return eventSelector\n } else {\n // shorthand for subscriber to only receive events from a specific publisher instance\n return (publisher: NgTableParams) => publisher === eventSelector;\n }\n }\n\n function isEventSelectorFunc(val: EventSelector): val is (publisher: NgTableParams) => boolean {\n return typeof val === 'function';\n }\n\n function isScopeLike(val: any): val is ng1.IScope {\n return val && typeof val.$new === 'function';\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/ngTableEventsChannel.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport * as ng1 from 'angular';\nimport { ILogService, IPromise, IQService } from 'angular';\nimport { convertSortToOrderBy, isGroupingFun } from './util';\nimport { assignPartialDeep } from '../shared';\nimport { Defaults } from './ngTableDefaults'\nimport { NgTableEventsChannel } from './ngTableEventsChannel'\nimport { SettingsPartial, Settings } from './ngTableSettings'\nimport { DataResult, DataRowGroup, GetDataFunc } from './data';\nimport { FilterValues } from './filtering';\nimport { GetGroupFunc, Grouping, GroupingPartial, GroupValuesPartial, GroupingFunc, GroupSort, GroupValues } from './grouping';\nimport { SortDirection, SortingValues } from './sorting';\nimport { PageButton } from './paging';\n\n/**\n * @private\n */\nexport interface InternalTableParams extends NgTableParams {\n isNullInstance: boolean\n}\n\n\nexport type ParamValuesPartial =\n Partial, 'page' | 'count' | 'filter' | 'sorting'>>\n & {\n group?: string | GroupingPartial\n };\n\n/**\n * The runtime values for {@link NgTableParams} that determine the set of data rows and\n * how they are to be displayed in a table\n */\nexport class ParamValues {\n /**\n * The index of the \"slice\" of data rows, starting at 1, to be displayed by the table.\n */\n page = 1;\n /**\n * The number of data rows per page\n */\n count = 10;\n /**\n * The filter that should be applied to restrict the set of data rows\n */\n filter: FilterValues = {};\n /**\n * The sort order that should be applied to the data rows.\n */\n sorting: SortingValues = {};\n /**\n * The grouping that should be applied to the data rows\n */\n group: string | Grouping = {};\n}\n\n\n/**\n * @private\n */\nfunction isNumber(n: any) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * @private\n */\ntype Memento = {\n params: ParamValues;\n groupSortDirection?: string;\n};\n\n/**\n * Parameters manager for an ngTable directive\n */\nexport class NgTableParams {\n /**\n * The page of data rows currently being displayed in the table\n */\n data: T[] = [];\n reloadPages: () => void;\n private defaultSettings = Settings.createWithOverrides();\n private errParamsMemento: Memento | null;\n private isCommittedDataset = false;\n isNullInstance: boolean;\n private initialEvents: Function[] | null = [];\n private ngTableDefaults: Defaults\n private ngTableEventsChannel: NgTableEventsChannel;\n private prevParamsMemento: Memento;\n private _params = new ParamValues();\n private _settings = this.defaultSettings;\n private $q: IQService;\n private $log: ILogService\n constructor(baseParameters: ParamValuesPartial | boolean = {}, baseSettings: SettingsPartial = {}) {\n\n // the ngTableController \"needs\" to create a dummy/null instance and it's important to know whether an instance\n // is one of these\n if (typeof baseParameters === \"boolean\") {\n this.isNullInstance = true;\n }\n\n this.reloadPages = (() => {\n let currentPages: PageButton[];\n return () => {\n const oldPages = currentPages;\n const newPages = this.generatePagesArray(this.page(), this.total(), this.count());\n if (!ng1.equals(oldPages, newPages)) {\n currentPages = newPages;\n this.ngTableEventsChannel.publishPagesChanged(this, newPages, oldPages);\n }\n }\n })();\n\n assignPartialDeep(this._params, this.ngTableDefaults.params);\n\n this.settings(baseSettings);\n this.parameters(baseParameters, true);\n\n this.ngTableEventsChannel.publishAfterCreated(this);\n // run events during construction after the initial create event. That way a consumer\n // can subscribe to all events for a table without \"dropping\" an event\n ng1.forEach(this.initialEvents, event => {\n event();\n });\n this.initialEvents = null;\n }\n /**\n * Returns the number of data rows per page\n */\n count(): number\n /**\n * Sets the number of data rows per page.\n * Changes to count will cause `isDataReloadRequired` to return true\n */\n count(count: number): this\n count(count?: number) {\n // reset to first page because can be blank page\n return count !== undefined ? this.parameters({\n 'count': count,\n 'page': 1\n }) : this._params.count;\n }\n /**\n * Returns the current filter values used to restrict the set of data rows.\n * @param trim supply true to return the current filter minus any insignificant values\n * (null, undefined and empty string)\n */\n filter(trim?: boolean): FilterValues\n /**\n * Sets filter values to the `filter` supplied; any existing filter will be removed\n * Changes to filter will cause `isDataReloadRequired` to return true and the current `page` to be set to 1\n */\n filter(filter: FilterValues): this\n filter(filter?: FilterValues | boolean) {\n if (filter != null && typeof filter === 'object') {\n return this.parameters({\n 'filter': filter,\n 'page': 1\n });\n } else if (filter === true) {\n const keys = Object.keys(this._params.filter);\n const significantFilter: FilterValues = {};\n for (let i = 0; i < keys.length; i++) {\n const filterValue = this._params.filter[keys[i]];\n if (filterValue != null && filterValue !== '') {\n significantFilter[keys[i]] = filterValue;\n }\n }\n return significantFilter;\n } else {\n return this._params.filter;\n }\n }\n /**\n * Generate array of pages.\n * When no arguments supplied, the current parameter state of this `NgTableParams` instance will be used\n * @param currentPage Which page must be active\n * @param totalItems Total quantity of items\n * @param pageSize Quantity of items on page\n * @param maxBlocks Quantity of blocks for pagination\n * @returns Array of pages\n */\n generatePagesArray(currentPage?: number, totalItems?: number, pageSize?: number, maxBlocks?: number) {\n if (!arguments.length) {\n currentPage = this.page();\n totalItems = this.total();\n pageSize = this.count();\n }\n\n let maxPage: number, maxPivotPages: number, minPage: number, numPages: number;\n maxBlocks = maxBlocks && maxBlocks < 6 ? 6 : maxBlocks;\n\n const pages: PageButton[] = [];\n numPages = Math.ceil(totalItems / pageSize);\n if (numPages > 1) {\n pages.push({\n type: 'prev',\n number: Math.max(1, currentPage - 1),\n active: currentPage > 1\n });\n pages.push({\n type: 'first',\n number: 1,\n active: currentPage > 1,\n current: currentPage === 1\n });\n maxPivotPages = Math.round((this._settings.paginationMaxBlocks - this._settings.paginationMinBlocks) / 2);\n minPage = Math.max(2, currentPage - maxPivotPages);\n maxPage = Math.min(numPages - 1, currentPage + maxPivotPages * 2 - (currentPage - minPage));\n minPage = Math.max(2, minPage - (maxPivotPages * 2 - (maxPage - minPage)));\n let i = minPage;\n while (i <= maxPage) {\n if ((i === minPage && i !== 2) || (i === maxPage && i !== numPages - 1)) {\n pages.push({\n type: 'more',\n active: false\n });\n } else {\n pages.push({\n type: 'page',\n number: i,\n active: currentPage !== i,\n current: currentPage === i\n });\n }\n i++;\n }\n pages.push({\n type: 'last',\n number: numPages,\n active: currentPage !== numPages,\n current: currentPage === numPages\n });\n pages.push({\n type: 'next',\n number: Math.min(numPages, currentPage + 1),\n active: currentPage < numPages\n });\n }\n return pages;\n }\n /**\n * Returns the current grouping used to group the data rows\n */\n group(): Grouping\n /**\n * Sets grouping to the `group` supplied; any existing grouping will be removed.\n * Changes to group will cause `isDataReloadRequired` to return true and the current `page` to be set to 1\n */\n group(group: GroupValuesPartial): this\n /**\n * Sets grouping to the `field` and `sortDirection` supplied; any existing grouping will be removed\n * Changes to group will cause `isDataReloadRequired` to return true and the current `page` to be set to 1\n */\n group(field: string, sortDirection?: GroupSort): this\n /**\n * Sets grouping to the `group` supplied; any existing grouping will be removed.\n * If `sortDirection` is supplied, this will be assigned to the sortDirection property of `group`\n * Changes to group will cause `isDataReloadRequired` to return true and the current `page` to be set to 1\n */\n group(group: GroupingFunc | string, sortDirection?: GroupSort): this\n group(group?: GroupingPartial | string, sortDirection?: GroupSort): string | Grouping | this {\n if (group === undefined) {\n return this._params.group;\n }\n\n const newParameters: ParamValuesPartial = {\n page: 1\n };\n if (isGroupingFun(group) && sortDirection !== undefined) {\n group.sortDirection = sortDirection;\n newParameters.group = group;\n } else if (typeof group === 'string' && sortDirection !== undefined) {\n newParameters.group = { [group]: sortDirection };\n } else {\n newParameters.group = group;\n }\n this.parameters(newParameters);\n return this;\n }\n /**\n * Returns true when an attempt to `reload` the current `parameter` values have resulted in a failure.\n * This method will continue to return true until the `reload` is successfully called or when the\n * `parameter` values have changed\n */\n hasErrorState() {\n return !!(this.errParamsMemento && ng1.equals(this.errParamsMemento, this.createComparableParams()));\n }\n /**\n * Returns true if `filter` has significant filter value(s) (any value except null, undefined, or empty string),\n * otherwise false\n */\n hasFilter() {\n return Object.keys(this.filter(true)).length > 0;\n }\n /**\n * Return true when a change to `filters` require the `reload` method\n * to be run so as to ensure the data presented to the user reflects these filters\n */\n hasFilterChanges() {\n const previousFilter = (this.prevParamsMemento && this.prevParamsMemento.params.filter);\n return !ng1.equals((this._params.filter), previousFilter) || this.hasGlobalSearchFieldChanges();\n }\n /**\n * Returns true when at least one group has been set\n */\n hasGroup(): boolean\n /**\n * Returns true when the `group` and when supplied, the `sortDirection` matches an existing group\n */\n hasGroup(group: string | GroupingFunc, sortDirection?: string): boolean\n hasGroup(group?: string | GroupingFunc, sortDirection?: string) {\n if (group == null) {\n return isGroupingFun(this._params.group) || Object.keys(this._params.group).length > 0\n }\n\n if (isGroupingFun(group)) {\n if (sortDirection == null) {\n return this._params.group === group;\n } else {\n return this._params.group === group && group.sortDirection === sortDirection;\n }\n } else {\n if (sortDirection == null) {\n return Object.keys(this._params.group).indexOf(group) !== -1;\n } else {\n return (this._params.group as GroupValues)[group] === sortDirection;\n }\n }\n }\n /**\n * Return true when a change to this instance should require the `reload` method\n * to be run so as to ensure the data rows presented to the user reflects the current state.\n *\n * Note that this method will return false when the `reload` method has run but fails. In this case\n * `hasErrorState` will return true.\n *\n * The built-in `ngTable` directives will watch for when this function returns true and will then call\n * the `reload` method to load its data rows\n */\n isDataReloadRequired() {\n // note: using != as want to treat null and undefined the same\n return !this.isCommittedDataset || !ng1.equals(this.createComparableParams(), this.prevParamsMemento)\n || this.hasGlobalSearchFieldChanges();\n }\n /**\n * Returns true if sorting by the field supplied. Where direction supplied\n * the field must also be sorted by that direction to return true\n */\n isSortBy(field: string, direction?: string) {\n if (direction !== undefined) {\n return this._params.sorting[field] !== undefined && this._params.sorting[field] == direction;\n } else {\n return this._params.sorting[field] !== undefined;\n }\n }\n /**\n * Returns sorting values in a format that can be consumed by the angular `$orderBy` filter service\n */\n orderBy() {\n return convertSortToOrderBy(this._params.sorting);\n }\n /**\n * Returns the index of the current \"slice\" of data rows\n */\n page(): number\n /**\n * Sets the index of the current \"slice\" of data rows. The index starts at 1.\n * Changing the page number will cause `isDataReloadRequired` to return true\n */\n page(page: number): this\n page(page?: number) {\n return page !== undefined ? this.parameters({\n 'page': page\n }) : this._params.page;\n }\n parameters(): ParamValues\n /**\n * Set new parameters\n */\n parameters(newParameters?: ParamValuesPartial | { [name: string]: string }, parseParamsFromUrl?: boolean): this\n parameters(newParameters?: ParamValuesPartial | { [name: string]: string }, parseParamsFromUrl?: boolean): ParamValues | this {\n if (newParameters === undefined) {\n return this._params;\n }\n\n // todo: move parsing of url like parameters into a seperate method\n\n parseParamsFromUrl = parseParamsFromUrl || false;\n for (const key in newParameters) {\n let value = newParameters[key];\n if (parseParamsFromUrl && key.indexOf('[') >= 0) {\n const keys = key.split(/\\[(.*)\\]/).reverse()\n let lastKey = '';\n for (let i = 0, len = keys.length; i < len; i++) {\n const name = keys[i];\n if (name !== '') {\n const v = value;\n value = {};\n value[lastKey = name] = (isNumber(v) ? parseFloat(v) : v);\n }\n }\n if (lastKey === 'sorting') {\n this._params[lastKey] = {};\n }\n this._params[lastKey] = ng1.extend(this._params[lastKey] || {}, value[lastKey]);\n } else {\n if (newParameters[key] === undefined) {\n // skip\n }\n else if (key === 'group') {\n this._params[key] = this.parseGroup(newParameters[key]);\n } else {\n this._params[key] = (isNumber(newParameters[key]) ? parseFloat(newParameters[key]) : newParameters[key]);\n }\n }\n }\n this.log('ngTable: set parameters', this._params);\n return this;\n }\n /**\n * Trigger a reload of the data rows\n */\n reload>(): IPromise {\n let pData: ng1.IPromise;\n\n this._settings.$loading = true;\n\n this.prevParamsMemento = ng1.copy(this.createComparableParams());\n this.isCommittedDataset = true;\n\n if (this.hasGroup()) {\n pData = this.runInterceptorPipeline(this.$q.when(this._settings.getGroups(this)));\n } else {\n const fn = this._settings.getData as GetDataFunc;\n pData = this.runInterceptorPipeline(this.$q.when(fn(this)));\n }\n\n this.log('ngTable: reload data');\n\n const oldData = this.data;\n return pData.then(data => {\n this._settings.$loading = false;\n this.errParamsMemento = null;\n\n this.data = data;\n // note: I think it makes sense to publish this event even when data === oldData\n // subscribers can always set a filter to only receive the event when data !== oldData\n this.ngTableEventsChannel.publishAfterReloadData(this, data, oldData);\n this.reloadPages();\n\n return data;\n }).catch(reason => {\n this.errParamsMemento = this.prevParamsMemento;\n // \"rethrow\"\n return this.$q.reject(reason);\n });\n }\n /**\n * Returns the settings for the table.\n */\n settings(): Settings\n /**\n * Sets the settings for the table; new setting values will be merged with the existing settings.\n * Supplying a new `dataset` will cause `isDataReloadRequired` to return true and the `ngTableEventsChannel`\n * to fire its `datasetChanged` event\n */\n settings(newSettings: SettingsPartial): this\n settings(newSettings?: SettingsPartial): this | Settings {\n if (newSettings === undefined) {\n return this._settings;\n }\n\n const settings = Settings.merge(this._settings, newSettings);\n\n const originalDataset = this._settings.dataset;\n this._settings = settings;\n\n // note: using != as want null and undefined to be treated the same\n const hasDatasetChanged = newSettings.hasOwnProperty('dataset') && (newSettings.dataset != originalDataset);\n if (hasDatasetChanged) {\n if (this.isCommittedDataset) {\n this.page(1); // reset page as a new dataset has been supplied\n }\n this.isCommittedDataset = false;\n\n const fireEvent = () => {\n this.ngTableEventsChannel.publishDatasetChanged(this, newSettings.dataset, originalDataset);\n };\n\n if (this.initialEvents) {\n this.initialEvents.push(fireEvent);\n } else {\n fireEvent();\n }\n }\n this.log('ngTable: set settings', this._settings);\n return this;\n }\n /**\n * Returns the current sorting used to order the data rows.\n * Changes to sorting will cause `isDataReloadRequired` to return true\n */\n sorting(): SortingValues\n /**\n * Sets sorting values to the `sorting` supplied; any existing sorting will be removed.\n * Changes to sorting will cause `isDataReloadRequired` to return true\n */\n sorting(sorting: SortingValues): this\n /**\n * Sets sorting to the `field` and `direction` supplied; any existing sorting will be removed\n */\n sorting(field: string, direction?: string): this\n sorting(sorting?: SortingValues | string, direction?: SortDirection) {\n if (typeof sorting === 'string') {\n this.parameters({\n 'sorting': { [sorting]: direction || this.settings().defaultSort }\n });\n return this;\n }\n return sorting !== undefined ? this.parameters({\n 'sorting': sorting\n }) : this._params.sorting;\n }\n /**\n * Returns the count of the data rows that match the current `filter`\n */\n total(): number\n /**\n * Sets `settings().total` to the value supplied.\n * Typically you will need to set a `total` in the body of any custom `getData` function\n * you supply as a setting value to this instance.\n * @example\n * ```js\n * const tp = new NgTableParams({}, { getData: customGetData })\n * function customGetData(params) {\n * const queryResult = // code to fetch current data rows and total //\n * params.total(queryResult.total);\n * return queryResult.dataRowsPage;\n * }\n * ```\n */\n total(total: number): this\n total(total?: number) {\n return total !== undefined ? this.settings({\n 'total': total\n }) : this._settings.total;\n }\n /**\n * Returns the current parameter values uri-encoded. Set `asString` to\n * true for the parameters to be returned as an array of strings of the form 'paramName=value'\n * otherwise parameters returned as a key-value object\n */\n url(asString = false) {\n const pairs: any[] | { [name: string]: string } = (asString ? [] : {});\n for (const key in this._params) {\n if (this._params.hasOwnProperty(key)) {\n const item = (this._params as { [name: string]: any })[key],\n name = encodeURIComponent(key);\n if (typeof item === \"object\") {\n for (const subkey in item) {\n if (isSignificantValue(item[subkey], key)) {\n const pname = name + \"[\" + encodeURIComponent(subkey) + \"]\";\n collectValue(item[subkey], pname);\n }\n }\n } else if (!ng1.isFunction(item) && isSignificantValue(item, key)) {\n collectValue(item, name);\n }\n }\n }\n return pairs;\n\n function collectValue(value: any, key: string) {\n if (isArray(pairs)) {\n pairs.push(key + \"=\" + encodeURIComponent(value));\n } else {\n pairs[key] = encodeURIComponent(value);\n }\n }\n\n function isArray(pairs: any[] | {}): pairs is Array {\n return asString;\n }\n\n function isSignificantValue(value: any, key: string) {\n return key === \"group\" ? true : typeof value !== undefined && value !== \"\";\n }\n }\n private createComparableParams(): Memento {\n const group = this._params.group;\n return {\n params: this._params,\n groupSortDirection: isGroupingFun(group) ? group.sortDirection : undefined\n };\n }\n private hasGlobalSearchFieldChanges() {\n const currentVal = (this._params.filter && this._params.filter['$']);\n const previousVal =\n (this.prevParamsMemento && this.prevParamsMemento.params.filter && this.prevParamsMemento.params.filter['$']);\n return !ng1.equals(currentVal, previousVal);\n }\n private log(...args: any[]) {\n if (this._settings.debugMode && this.$log.debug) {\n this.$log.debug(...args);\n }\n }\n private parseGroup(group: string | Grouping) {\n const defaultSort = this._settings.groupOptions.defaultSort;\n if (!group) {\n return group;\n } else if (isGroupingFun(group)) {\n if (group.sortDirection == null) {\n group.sortDirection = defaultSort;\n }\n return group;\n } else if (typeof group === 'object') {\n for (const key in group) {\n if (group[key] == null) {\n group[key] = defaultSort;\n }\n }\n return group;\n } else {\n return {\n [group]: defaultSort\n };\n }\n }\n private runInterceptorPipeline(fetchedData: IPromise) {\n return this._settings.interceptors.reduce((result, interceptor) => {\n const thenFn = (interceptor.response && interceptor.response.bind(interceptor)) || this.$q.when;\n const rejectFn = (interceptor.responseError && interceptor.responseError.bind(interceptor)) || this.$q.reject;\n return result.then(data => {\n return thenFn(data, this);\n }, reason => {\n return rejectFn(reason, this);\n });\n }, fetchedData);\n }\n\n static init(\n $q: IQService,\n $log: ILogService,\n ngTableDefaults: Defaults,\n ngTableEventsChannel: NgTableEventsChannel) {\n ng1.extend(NgTableParams.prototype, {\n $q, $log, ngTableDefaults, ngTableEventsChannel\n });\n }\n}\n\nNgTableParams.init.$inject = ['$q', '$log', 'ngTableDefaults', 'ngTableEventsChannel'];\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/ngTableParams.ts","import * as ng1 from 'angular';\nimport { assignPartialDeep, checkClassInit } from '../shared';\nimport { IPromise } from 'angular';\nimport { Defaults } from './ngTableDefaults';\nimport { DataRowGroup, DataSettingsPartial, DataSettings, DefaultGetData, GetDataFunc, Interceptor, InterceptableGetDataFunc } from './data';\nimport { FilterValues, FilterSettingsPartial, FilterSettings } from './filtering';\nimport { GetGroupFunc, GroupSettingsPartial, GroupSettings } from './grouping';\nimport { SortDirection } from './sorting';\nimport { NgTableParams } from './ngTableParams';\n\n/**\n * Configuration settings for {@link NgTableParams}\n */\nexport class Settings {\n constructor() {\n checkClassInit(Settings);\n }\n /**\n * Returns true whenever a call to `getData` is in progress\n */\n $loading = false;\n /**\n * The page size buttons that should be displayed. Each value defined in the array\n * determines the possible values that can be supplied to {@link NgTableParams} `page`\n */\n counts = [10, 25, 50, 100];\n /**\n * An array that contains all the data rows that table should manage.\n * The `gateData` function will be used to manage the data rows\n * that ultimately will be displayed.\n */\n dataset?: T[] = undefined;\n dataOptions = new DataSettings();\n debugMode = false;\n /**\n * The total number of data rows before paging has been applied.\n * Typically you will not need to supply this yourself\n */\n total = 0;\n /**\n * The default sort direction that will be used whenever a sorting is supplied that\n * does not define its own sort direction\n */\n defaultSort: SortDirection = 'desc';\n filterOptions = new FilterSettings();\n /**\n * The function that will be used fetch data rows. Leave undefined to let the {@link IDefaultGetData}\n * service provide a default implementation that will work with the `dataset` array you supply.\n *\n * Typically you will supply a custom function when you need to execute filtering, paging and sorting\n * on the server\n */\n getData: GetDataFunc | InterceptableGetDataFunc = Settings.defaultGetData;\n /**\n * The function that will be used group data rows according to the groupings returned by {@link NgTableParams} `group`\n */\n getGroups: GetGroupFunc = Settings.defaultGetGroups;\n groupOptions = new GroupSettings();\n /**\n * The collection of interceptors that should apply to the results of a call to\n * the `getData` function before the data rows are displayed in the table\n */\n interceptors = new Array>();\n /**\n * Configuration for the template that will display the page size buttons\n */\n paginationMaxBlocks = 11;\n /**\n * Configuration for the template that will display the page size buttons\n */\n paginationMinBlocks = 5;\n /**\n * The html tag that will be used to display the sorting indicator in the table header\n */\n sortingIndicator = 'span'\n static isInitialized = false;\n private static defaultGetData: GetDataFunc;\n private static defaultGetGroups: GetGroupFunc;\n private static ngTableDefaults: Defaults\n private static instance: Settings;\n static createWithOverrides(): Settings {\n checkClassInit(Settings);\n return Settings.merge(Settings.instance, Settings.ngTableDefaults.settings || {});\n }\n static merge(existing: Settings, newSettings: SettingsPartial): Settings {\n checkClassInit(Settings);\n\n const optionalPropNames: (keyof Settings)[] = ['dataset'];\n const results = assignPartialDeep(\n ng1.copy(existing),\n newSettings,\n (key: keyof Settings) => optionalPropNames.indexOf(key) !== -1,\n (destValue: any, srcValue: any, key: keyof Settings) => {\n // copy *reference* to dataset\n if (key === 'dataset') {\n return srcValue;\n }\n return undefined;\n });\n\n if (newSettings.dataset) {\n results.total = newSettings.dataset.length;\n Settings.optimizeFilterDelay(results);\n }\n return results;\n }\n private static optimizeFilterDelay(settings: Settings) {\n // don't debounce by default filter input when working with small synchronous datasets\n if (settings.filterOptions.filterDelay === Settings.instance.filterOptions.filterDelay &&\n settings.total <= settings.filterOptions.filterDelayThreshold &&\n settings.getData === Settings.instance.getData) {\n settings.filterOptions.filterDelay = 0;\n }\n }\n static init(ngTableDefaultGetData: DefaultGetData,\n ngTableDefaultGetGroups: GetGroupFunc,\n ngTableDefaults: Defaults) {\n Settings.defaultGetData = (params: NgTableParams) => {\n return ngTableDefaultGetData(params.settings().dataset, params) as any[];\n };\n Settings.defaultGetGroups = ngTableDefaultGetGroups;\n Settings.ngTableDefaults = ngTableDefaults;\n Settings.isInitialized = true;\n Settings.instance = new Settings();\n }\n}\n\nSettings.init.$inject = ['ngTableDefaultGetData', 'ngTableDefaultGetGroups', 'ngTableDefaults'];\n\nexport type SettingsPartial =\n Partial,\n '$loading' |\n 'counts' |\n 'dataset' |\n 'debugMode' |\n 'total' |\n 'defaultSort' |\n 'getData' |\n 'getGroups' |\n 'interceptors' |\n 'paginationMaxBlocks' |\n 'paginationMinBlocks' |\n 'sortingIndicator'>>\n & {\n dataOptions?: DataSettingsPartial;\n filterOptions?: FilterSettingsPartial;\n groupOptions?: GroupSettingsPartial;\n }\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/ngTableSettings.ts","import { GroupingPartial, GroupingFunc } from './grouping';\nimport { SortingValues } from './sorting';\n\n/**\n * @private\n */\nexport function convertSortToOrderBy(sorting: SortingValues) {\n const result: string[] = [];\n for (let column in sorting) {\n result.push((sorting[column] === \"asc\" ? \"+\" : \"-\") + column);\n }\n return result;\n}\n\n/**\n * @private\n */\nexport function isGroupingFun(val: string | GroupingPartial): val is GroupingFunc {\n return typeof val === 'function'\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/util.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\nimport { IAugmentedJQuery, IDirective, IQService, IParseService, IPromise, IScope } from 'angular';\nimport * as ng1 from 'angular';\nimport { \n ColumnDef, ColumnDefPartial, ColumnFieldContext, ColumnField, DeclarativeTableHtmlAttributes, \n FilterTemplateDefMap, SelectData \n} from './public-interfaces';\nimport { NgTableController } from './ngTableController';\n\ninterface ScopeExtensions {\n $columns: ColumnDef[]\n}\n\nngTable.$inject = ['$q', '$parse'];\n\n/**\n * Directive that instantiates {@link NgTableController NgTableController}.\n * @ngdoc directive\n * @name ngTable\n * @example\n * \n * ```html\n * \n * \n * \n * \n * \n *
\n * {{user.name}}\n * \n * {{user.age}}\n *
\n * ```\n */\nexport function ngTable($q: IQService, $parse: IParseService) : IDirective {\n\n return {\n restrict: 'A',\n priority: 1001,\n scope: true,\n controller: 'ngTableController',\n compile: function(element: IAugmentedJQuery) {\n let compiledColumns: ColumnDefPartial[] = [],\n i = 0,\n dataRow: JQuery,\n groupRow: JQuery\n const rows: JQuery[] = [];\n\n ng1.forEach(element.find('tr'), (tr: JQuery) => {\n rows.push(ng1.element(tr))\n });\n dataRow = rows.filter(tr => !tr.hasClass('ng-table-group'))[0];\n groupRow = rows.filter(tr => tr.hasClass('ng-table-group'))[0];\n\n if (!dataRow) {\n return undefined;\n }\n ng1.forEach(dataRow.find('td'), (item: JQuery) => {\n const el = ng1.element(item);\n if (el.attr('ignore-cell') && 'true' === el.attr('ignore-cell')) {\n return;\n }\n\n const getAttrValue = function(attr: string){\n return el.attr('x-data-' + attr) || el.attr('data-' + attr) || el.attr(attr);\n };\n const setAttrValue = function(attr: string, value: string){\n if (el.attr('x-data-' + attr)){\n el.attr('x-data-' + attr, value)\n } else if (el.attr('data' + attr)){\n el.attr('data' + attr, value)\n } else {\n el.attr(attr, value)\n }\n };\n\n const parsedAttribute = function(attr: string): ColumnField | undefined {\n const expr = getAttrValue(attr);\n if (!expr){\n return undefined;\n }\n\n let localValue: any;\n const getter = (context: ColumnFieldContext) => {\n if (localValue !== undefined){\n return localValue as T;\n }\n return $parse(expr)(context) as T;\n };\n (getter as any).assign = ($scope: ColumnFieldContext, value: any) => {\n const parsedExpr = $parse(expr);\n if (parsedExpr.assign) {\n // we should be writing back to the parent scope as this is where the expression\n // came from\n parsedExpr.assign($scope.$parent, value);\n } else {\n localValue = value;\n }\n };\n return getter as ColumnField;\n };\n const titleExpr = getAttrValue('title-alt') || getAttrValue('title');\n if (titleExpr){\n el.attr('data-title-text', '{{' + titleExpr + '}}'); // this used in responsive table\n }\n // NOTE TO MAINTAINERS: if you add extra fields to a $column be sure to extend ngTableColumn with\n // a corresponding \"safe\" default\n compiledColumns.push({\n id: i++,\n title: parsedAttribute('title'),\n titleAlt: parsedAttribute('title-alt'),\n headerTitle: parsedAttribute('header-title'),\n sortable: parsedAttribute('sortable'),\n 'class': parsedAttribute('header-class'),\n filter: parsedAttribute('filter'),\n groupable: parsedAttribute('groupable'),\n headerTemplateURL: parsedAttribute('header'),\n filterData: parsedAttribute | SelectData>('filter-data'),\n show: el.attr(\"ng-if\") ? parsedAttribute('ng-if') : undefined\n });\n\n if (groupRow || el.attr(\"ng-if\")){\n // change ng-if to bind to our column definition which we know will be writable\n // because this will potentially increase the $watch count, only do so if we already have an\n // ng-if or when we definitely need to change visibility of the columns.\n // currently only ngTableGroupRow directive needs to change visibility\n setAttrValue('ng-if', '$columns[' + (compiledColumns.length - 1) + '].show(this)');\n }\n });\n return function(scope: IScope & ScopeExtensions, element: IAugmentedJQuery, attrs: DeclarativeTableHtmlAttributes, controller: NgTableController) {\n const columns = scope.$columns = controller.buildColumns(compiledColumns);\n\n controller.setupBindingsToInternalScope(attrs.ngTable);\n controller.loadFilterData(columns);\n controller.compileDirectiveTemplates();\n };\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTable.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IScope } from 'angular';\nimport * as ng1 from 'angular';\nimport { ColumnDef, ColumnDefPartial, DynamicTableColDef } from './public-interfaces';\n\n/**\n * @private\n */\nfunction isScopeLike(object: any) {\n return object != null && ng1.isFunction(object.$new);\n}\n\n/**\n * @private\n * Service to construct a $column definition used by {@link ngTable ngTable} directive\n */\nexport class NgTableColumn {\n static $inject: string[] = [];\n\n /**\n * Creates a $column for use within a header template\n *\n * @param column the initial definition for $column to build\n * @param defaultScope the $scope to supply to the $column getter methods when not supplied by caller\n * @param columns a reference to the $columns array to make available on the context supplied to the\n * $column getter methods\n */\n buildColumn(column: TCol, defaultScope: IScope, columns: ColumnDef[]): ColumnDef {\n // note: we're not modifying the original column object. This helps to avoid unintended side affects\n const extendedCol = Object.create(column);\n const defaults = this.createDefaults();\n for (const prop in defaults) {\n if (extendedCol[prop] === undefined) {\n extendedCol[prop] = defaults[prop];\n }\n if (!ng1.isFunction(extendedCol[prop])) {\n // wrap raw field values with \"getter\" functions\n // - this is to ensure consistency with how ngTable.compile builds columns\n // - note that the original column object is being \"proxied\"; this is important\n // as it ensure that any changes to the original object will be returned by the \"getter\"\n const getterSetter = function getterSetter(/*[value] || [$scope, locals]*/) {\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\n (getterSetter as any).assign(null, arguments[0]);\n } else {\n return column[prop];\n }\n };\n (getterSetter as any).assign = function ($scope: IScope, value: any) {\n column[prop] = value;\n };\n extendedCol[prop] = getterSetter;\n }\n // satisfy the arguments expected by the function returned by parsedAttribute in the ngTable directive\n const getterFn = extendedCol[prop];\n extendedCol[prop] = function () {\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\n getterFn.assign(defaultScope, arguments[0]);\n } else {\n const scope = arguments[0] || defaultScope;\n const context = Object.create(scope);\n ng1.extend(context, {\n $column: extendedCol,\n $columns: columns\n });\n return getterFn.call(column, context);\n }\n };\n if (getterFn.assign) {\n extendedCol[prop].assign = getterFn.assign;\n } else {\n const wrappedGetterFn = extendedCol[prop];\n let localValue: any;\n const getterSetter = function getterSetter(/*[value] || [$scope, locals]*/) {\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\n (getterSetter as any).assign(null, arguments[0]);\n } else {\n return localValue != undefined ? localValue : wrappedGetterFn.apply(extendedCol, arguments);\n }\n };\n (getterSetter as any).assign = function ($scope: IScope, value: any) {\n localValue = value;\n };\n extendedCol[prop] = getterSetter;\n }\n }\n return extendedCol as ColumnDef;\n }\n\n private createDefaults() {\n return {\n 'class': this.createGetterSetter(''),\n filter: this.createGetterSetter(false),\n groupable: this.createGetterSetter(false),\n filterData: ng1.noop,\n headerTemplateURL: this.createGetterSetter(false),\n headerTitle: this.createGetterSetter(''),\n sortable: this.createGetterSetter(false),\n show: this.createGetterSetter(true),\n title: this.createGetterSetter(''),\n titleAlt: this.createGetterSetter('')\n };\n }\n\n private createGetterSetter(initialValue: any) {\n let value = initialValue;\n const getterSetter = function getterSetter(/*[value] || [$scope, locals]*/) {\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\n (getterSetter as any).assign(null, arguments[0]);\n } else {\n return value;\n }\n };\n (getterSetter as any).assign = function ($scope: IScope, newValue: any) {\n value = newValue;\n };\n return getterSetter;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableColumn.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IAugmentedJQuery, IAttributes, IDirective, IParseService } from 'angular';\nimport { TableScope } from './ngTableController';\nimport { ColumnDef } from './public-interfaces';\n\n/**\n * @private\n */\ninterface InputAttributes extends IAttributes {\n ngTableColumnsBinding: string;\n}\n\nngTableColumnsBinding.$inject = [\"$parse\"];\n\n/**\n * One-way data binds the $columns array generated by ngTable/ngTableDynamic to the specified\n * expression.\n * This allows the $columns array created for the table to be accessed outside of the html table\n * markup.\n * \n * @ngdoc directive\n * \n * @example\n * ```html\n * \n * ```\n */\nexport function ngTableColumnsBinding($parse: IParseService) : IDirective {\n const directive = {\n restrict: 'A',\n link: linkFn\n };\n return directive;\n\n function linkFn($scope: TableScope, $element: IAugmentedJQuery, $attrs: InputAttributes){\n const setter = $parse($attrs.ngTableColumnsBinding).assign;\n if (setter){\n $scope.$watch('$columns', newColumns => {\n const shallowClone = (newColumns || []).slice(0);\n setter($scope, shallowClone);\n });\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableColumnsBinding.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport {\n IAttributes, IAugmentedJQuery, ICompileService, IDocumentService, IParseService, IPromise, IScope,\n ITimeoutService\n} from 'angular';\nimport * as ng1 from 'angular';\nimport {\n DataResult, DataResults, DataRowGroup, GroupedDataResults, NgTableParams, NgTableEventsChannel,\n PageButton\n} from '../core';\nimport { ColumnDef, ColumnDefPartial, DynamicTableColDef, SelectData, TableHtmlAttributes } from './public-interfaces';\nimport { NgTableColumn } from './ngTableColumn';\n\n/**\n * @private\n */\nexport interface TableScope extends IScope {\n $columns: ColumnDef[];\n $loading: boolean;\n $filterRow: {\n disabled: boolean;\n };\n $data?: DataResults;\n $groups?: GroupedDataResults;\n $groupRow: {\n show: boolean;\n };\n show_filter: boolean;\n pages: PageButton[];\n templates: {\n header: string;\n pagination: string;\n },\n params: NgTableParams\n}\n\n/**\n * The controller for the {@link ngTable ngTable} and {@link ngTableDynamic ngTableDynamic} directives\n */\nexport class NgTableController {\n static $inject = [\n '$scope', '$timeout', '$parse', '$compile', '$attrs', '$element', '$document', 'ngTableColumn', 'ngTableEventsChannel'\n ];\n private delayFilter: (callback: () => void, ms: number) => void;\n private get hasVisibleFilterColumn() {\n if (!this.$scope.$columns) return false;\n\n return this.some(this.$scope.$columns, ($column) => {\n return $column.show(this.$scope) && !!$column.filter(this.$scope);\n });\n }\n constructor(\n private $scope: TableScope,\n $timeout: ITimeoutService,\n private $parse: IParseService,\n private $compile: ICompileService,\n private $attrs: IAttributes & TableHtmlAttributes,\n private $element: IAugmentedJQuery,\n private $document: IDocumentService,\n private ngTableColumn: NgTableColumn,\n private ngTableEventsChannel: NgTableEventsChannel) {\n\n const isFirstTimeLoad = true;\n $scope.$filterRow = { disabled: false };\n $scope.$loading = false;\n\n // until such times as the directive uses an isolated scope, we need to ensure that the check for\n // the params field only consults the \"own properties\" of the $scope. This is to avoid seeing the params\n // field on a $scope higher up in the prototype chain\n if (!$scope.hasOwnProperty(\"params\")) {\n $scope.params = new NgTableParams(true);\n }\n\n this.delayFilter = (function () {\n let timer: IPromise;\n return (callback: () => void, ms: number) => {\n $timeout.cancel(timer);\n timer = $timeout(callback, ms);\n };\n })();\n\n // watch for when a new NgTableParams is bound to the scope\n // CRITICAL: the watch must be for reference and NOT value equality; this is because NgTableParams maintains\n // the current data page as a field. Checking this for value equality would be terrible for performance\n // and potentially cause an error if the items in that array has circular references\n this.$scope.$watch>('params', (newParams, oldParams) => {\n if (newParams === oldParams || !newParams) {\n return;\n }\n\n newParams.reload();\n }, false);\n\n this.subscribeToTableEvents();\n }\n\n private onDataReloadStatusChange(newStatus: boolean/*, oldStatus*/) {\n if (!newStatus || this.$scope.params.hasErrorState()) {\n return;\n }\n\n const currentParams = this.$scope.params;\n const filterOptions = currentParams.settings().filterOptions;\n\n if (currentParams.hasFilterChanges()) {\n const applyFilter = () => {\n currentParams.page(1);\n currentParams.reload();\n };\n if (filterOptions.filterDelay) {\n this.delayFilter(applyFilter, filterOptions.filterDelay);\n } else {\n applyFilter();\n }\n } else {\n currentParams.reload();\n }\n }\n\n compileDirectiveTemplates() {\n if (!this.$element.hasClass('ng-table')) {\n this.$scope.templates = {\n header: (this.$attrs.templateHeader ? this.$attrs.templateHeader : 'ng-table/header.html'),\n pagination: (this.$attrs.templatePagination ? this.$attrs.templatePagination : 'ng-table/pager.html')\n };\n this.$element.addClass('ng-table');\n let headerTemplate: IAugmentedJQuery | undefined;\n\n // $element.find('> thead').length === 0 doesn't work on jqlite\n let theadFound = false;\n ng1.forEach(this.$element.children(), (e) => {\n if (e.tagName === 'THEAD') {\n theadFound = true;\n }\n });\n if (!theadFound) {\n headerTemplate = ng1.element('', this.$document);\n this.$element.prepend(headerTemplate);\n }\n const paginationTemplate = ng1.element(\n '
',\n this.$document\n );\n this.$element.after(paginationTemplate);\n if (headerTemplate) {\n this.$compile(headerTemplate)(this.$scope);\n }\n this.$compile(paginationTemplate)(this.$scope);\n }\n }\n\n loadFilterData($columns: ColumnDef[]) {\n ng1.forEach($columns, ($column) => {\n const result = $column.filterData(this.$scope);\n if (!result) {\n delete $column.filterData;\n return undefined;\n }\n\n if (isPromiseLike(result)) {\n delete $column.filterData;\n return result.then(data => {\n // our deferred can eventually return arrays, functions and objects\n if (!ng1.isArray(data) && !ng1.isFunction(data) && !ng1.isObject(data)) {\n // if none of the above was found - we just want an empty array\n data = [];\n }\n $column.data = data;\n });\n }\n // otherwise, we just return what the user gave us. It could be a function, array, object, whatever\n else {\n return $column.data = result;\n }\n });\n\n function isPromiseLike(val: any): val is IPromise {\n return val && typeof val === 'object' && typeof val.then === 'function';\n }\n }\n\n buildColumns(columns: TCol[]): ColumnDef[] {\n // todo: use strictNullChecks and remove guard clause\n const result: ColumnDef[] = [];\n (columns || []).forEach(col => {\n result.push(this.ngTableColumn.buildColumn(col, this.$scope, result));\n });\n return result\n }\n\n parseNgTableDynamicExpr(attr: string) {\n if (!attr || attr.indexOf(\" with \") > -1) {\n const parts = attr.split(/\\s+with\\s+/);\n return {\n tableParams: parts[0],\n columns: parts[1]\n };\n } else {\n throw new Error('Parse error (expected example: ng-table-dynamic=\\'tableParams with cols\\')');\n }\n }\n\n setupBindingsToInternalScope(tableParamsExpr: string) {\n\n // note: this we're setting up watches to simulate angular's isolated scope bindings\n\n // note: is REALLY important to watch for a change to the ngTableParams *reference* rather than\n // $watch for value equivalence. This is because ngTableParams references the current page of data as\n // a field and it's important not to watch this\n this.$scope.$watch>(tableParamsExpr, (params) => {\n if (params === undefined) {\n return;\n }\n this.$scope.params = params;\n }, false);\n\n this.setupFilterRowBindingsToInternalScope();\n this.setupGroupRowBindingsToInternalScope();\n }\n\n private setupFilterRowBindingsToInternalScope() {\n if (this.$attrs.showFilter) {\n this.$scope.$parent.$watch(this.$attrs.showFilter, (value) => {\n this.$scope.show_filter = value;\n });\n } else {\n this.$scope.$watch(() => this.hasVisibleFilterColumn, (value) => {\n this.$scope.show_filter = value;\n })\n }\n\n if (this.$attrs.disableFilter) {\n this.$scope.$parent.$watch(this.$attrs.disableFilter, (value) => {\n this.$scope.$filterRow.disabled = value;\n });\n }\n }\n\n private setupGroupRowBindingsToInternalScope() {\n this.$scope.$groupRow = { show: false };\n if (this.$attrs.showGroup) {\n const showGroupGetter = this.$parse(this.$attrs.showGroup);\n this.$scope.$parent.$watch(showGroupGetter, (value) => {\n this.$scope.$groupRow.show = value;\n });\n if (showGroupGetter.assign) {\n // setup two-way databinding thus allowing ngTableGrowRow to assign to the showGroup expression\n this.$scope.$watch('$groupRow.show', (value) => {\n showGroupGetter.assign(this.$scope.$parent, value);\n });\n }\n } else {\n this.$scope.$watch('params.hasGroup()', (newValue) => {\n this.$scope.$groupRow.show = newValue;\n });\n }\n }\n\n private getVisibleColumns() {\n return (this.$scope.$columns || []).filter((c) => {\n return c.show(this.$scope);\n });\n }\n\n private subscribeToTableEvents() {\n\n this.$scope.$watch('params.isDataReloadRequired()', (newStatus: boolean/*, oldStatus*/) => {\n this.onDataReloadStatusChange(newStatus);\n });\n\n this.ngTableEventsChannel.onAfterReloadData(\n (params, newDatapage) => {\n const visibleColumns = this.getVisibleColumns();\n if (params.hasGroup()) {\n this.$scope.$groups = (newDatapage || []) as GroupedDataResults;\n this.$scope.$groups.visibleColumnCount = visibleColumns.length;\n } else {\n this.$scope.$data = (newDatapage || []) as DataResults;\n this.$scope.$data.visibleColumnCount = visibleColumns.length;\n }\n },\n this.$scope,\n (publisher) => this.$scope.params === publisher\n );\n\n this.ngTableEventsChannel.onPagesChanged(\n (params, newPages) => {\n this.$scope.pages = newPages;\n },\n this.$scope,\n (publisher) => this.$scope.params === publisher\n );\n }\n\n private some(array: T[], predicate: (item: T) => boolean) {\n let found = false;\n for (let i = 0; i < array.length; i++) {\n const obj = array[i];\n if (predicate(obj)) {\n found = true;\n break;\n }\n }\n return found;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableController.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IAugmentedJQuery, IDirective, IScope } from 'angular';\nimport * as ng1 from 'angular';\nimport { ColumnDef, DynamicTableColDef, DynamicTableHtmlAttributes } from './public-interfaces';\nimport { NgTableController } from './ngTableController';\n\ninterface ScopeExtensions {\n $columns: ColumnDef[]\n}\n\nfunction toArray(arr: ArrayLike) {\n return Array.prototype.slice.call(arr) as T[];\n}\n\nngTableDynamic.$inject = [];\n\n/**\n * A dynamic version of the {@link ngTable ngTable} directive that accepts a dynamic list of columns\n * definitions to render\n * @ngdoc directive\n *\n * @example\n * ```html\n *
\n * \n * \n * \n *
{{row[col.field]}}
\n * ```\n */\nexport function ngTableDynamic(): IDirective {\n\n return {\n restrict: 'A',\n priority: 1001,\n scope: true,\n controller: 'ngTableController',\n compile: function (tElement: IAugmentedJQuery) {\n\n const tRows = toArray(tElement[0].getElementsByTagName('tr'));\n const tRow = tRows.filter(tr => !ng1.element(tr).hasClass('ng-table-group'))[0];\n\n if (!tRow) {\n return undefined;\n }\n\n toArray(tRow.getElementsByTagName('td')).forEach(tCell => {\n const el = ng1.element(tCell);\n const getAttrValue = (attr: string) => {\n return el.attr('x-data-' + attr) || el.attr('data-' + attr) || el.attr(attr);\n };\n\n // this used in responsive table\n const titleExpr = getAttrValue('title');\n if (!titleExpr) {\n el.attr('data-title-text', '{{$columns[$index].titleAlt(this) || $columns[$index].title(this)}}');\n }\n const showExpr = el.attr('ng-if');\n if (!showExpr) {\n el.attr('ng-if', '$columns[$index].show(this)');\n }\n });\n return function (scope: IScope & ScopeExtensions, element: IAugmentedJQuery, attrs: DynamicTableHtmlAttributes, controller: NgTableController) {\n const expr = controller.parseNgTableDynamicExpr(attrs.ngTableDynamic);\n\n controller.setupBindingsToInternalScope(expr.tableParams);\n controller.compileDirectiveTemplates();\n\n scope.$watchCollection(expr.columns, (newCols/*, oldCols*/) => {\n scope.$columns = controller.buildColumns(newCols);\n controller.loadFilterData(scope.$columns);\n });\n };\n }\n };\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableDynamic.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nconst templateUrl = require('./filterRow.html');\n\nngTableFilterRow.$inject = [];\n\n/**\n * directive that renders the filter header row for a table \n * @ngdoc directive\n * @example\n * ```html\n * \n * ```\n */\nexport function ngTableFilterRow(){\n const directive = {\n restrict: 'E',\n replace: true,\n templateUrl: templateUrl,\n scope: true,\n controller: 'ngTableFilterRowController',\n controllerAs: '$ctrl'\n };\n return directive;\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableFilterRow.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IScope } from 'angular';\nimport { FilterTemplateDef, FilterTemplateDefMap } from './public-interfaces';\nimport { NgTableFilterConfig } from './ngTableFilterConfig';\n\n/**\n * @private\n */\nexport interface ScopeExtensions {\n getFilterPlaceholderValue(filterDef: string | FilterTemplateDef, filterKey?: string): string;\n}\n\n/**\n * Controller for the {@link ngTableFilterRow ngTableFilterRow} directive\n */\nexport class NgTableFilterRowController {\n static $inject = ['$scope', 'ngTableFilterConfig'];\n config: NgTableFilterConfig;\n constructor($scope: IScope & ScopeExtensions, ngTableFilterConfig: NgTableFilterConfig) {\n this.config = ngTableFilterConfig;\n\n // todo: stop doing this. Why?\n // * scope inheritance makes it hard to know how supplies functions\n // * scope is not a concept in angular 2\n // make function available to filter templates\n $scope.getFilterPlaceholderValue = this.getFilterPlaceholderValue.bind(this);\n }\n\n getFilterCellCss(filter: FilterTemplateDefMap, layout: string) {\n if (layout !== 'horizontal') {\n return 's12';\n }\n\n const size = Object.keys(filter).length;\n const width = parseInt((12 / size).toString(), 10);\n return 's' + width;\n }\n\n getFilterPlaceholderValue(filterDef: string | FilterTemplateDef, filterKey?: string) {\n if (typeof filterDef === 'string') {\n return '';\n } else {\n return filterDef.placeholder;\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableFilterRowController.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nconst templateUrl = require('./groupRow.html');\n\nngTableGroupRow.$inject = [];\n\n/**\n * directive that renders the group header row for a table \n * @ngdoc directive\n * @example\n * ```html\n * \n * ```\n */\nexport function ngTableGroupRow(){\n const directive = {\n restrict: 'E',\n replace: true,\n templateUrl: templateUrl,\n scope: true,\n controller: 'ngTableGroupRowController',\n controllerAs: '$ctrl'\n };\n return directive;\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableGroupRow.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IPromise } from 'angular';\nimport { DataResult, GroupingFunc, Grouping, GroupSort } from '../core';\nimport { ColumnDef } from './public-interfaces';\nimport { TableScope } from './ngTableController';\n\n/**\n * @private\n */\nexport interface ScopeExtensions {\n $selGroup: GroupingFunc | string;\n $selGroupTitle: string;\n}\n\n\n/**\n * Controller for the {@link ngTableGroupRow ngTableGroupRow} directive\n */\nexport class NgTableGroupRowController {\n static $inject = ['$scope'];\n private groupFns: Array | ColumnDef> = [];\n constructor(private $scope: TableScope & ScopeExtensions) {\n $scope.$watch>('params.group()', (newGrouping) => {\n this.setGroup(newGrouping);\n }, true);\n }\n\n getGroupables() {\n const groupableCols = this.$scope.$columns.filter($column => !!$column.groupable(this.$scope));\n return this.groupFns.concat(groupableCols);\n }\n\n getGroupTitle(group: GroupingFunc | ColumnDef) {\n return this.isGroupingFunc(group) ? group.title : group.title(this.$scope);\n }\n\n\n getVisibleColumns() {\n return this.$scope.$columns.filter($column => $column.show(this.$scope))\n }\n\n groupBy(group: GroupingFunc | ColumnDef) {\n if (this.isSelectedGroup(group)) {\n this.changeSortDirection();\n } else {\n if (this.isGroupingFunc(group)) {\n this.$scope.params.group(group);\n } else {\n // it's OK, we know that groupable will return a string\n // this is guaranteed by getGroupables returning only\n // columns that return (truthy) strings\n this.$scope.params.group(group.groupable(this.$scope) as string);\n }\n }\n }\n\n isSelectedGroup(group: GroupingFunc | ColumnDef) {\n if (this.isGroupingFunc(group)) {\n return group === this.$scope.$selGroup;\n } else {\n return group.groupable(this.$scope) === this.$scope.$selGroup;\n }\n }\n\n toggleDetail() {\n this.$scope.params.settings().groupOptions.isExpanded = !this.$scope.params.settings().groupOptions.isExpanded;\n return this.$scope.params.reload();\n }\n\n private changeSortDirection() {\n let newDirection: GroupSort;\n if (this.$scope.params.hasGroup(this.$scope.$selGroup, 'asc')) {\n newDirection = 'desc';\n } else if (this.$scope.params.hasGroup(this.$scope.$selGroup, 'desc')) {\n newDirection = '';\n } else {\n newDirection = 'asc';\n }\n this.$scope.params.group(this.$scope.$selGroup, newDirection);\n }\n\n private findGroupColumn(groupKey: GroupingFunc | string) {\n return this.$scope.$columns.filter($column => $column.groupable(this.$scope) === groupKey)[0];\n }\n\n private isGroupingFunc(val: ColumnDef | Grouping): val is GroupingFunc {\n return typeof val === 'function';\n }\n\n private setGroup(grouping: Grouping) {\n const existingGroupCol = this.findGroupColumn(this.$scope.$selGroup);\n if (existingGroupCol && existingGroupCol.show.assign) {\n existingGroupCol.show.assign(this.$scope, true);\n }\n if (this.isGroupingFunc(grouping)) {\n this.groupFns = [grouping];\n this.$scope.$selGroup = grouping;\n this.$scope.$selGroupTitle = grouping.title || '';\n } else {\n // note: currently only one group is implemented\n const groupKey = Object.keys(grouping || {})[0];\n const groupedColumn = this.findGroupColumn(groupKey);\n if (groupedColumn) {\n this.$scope.$selGroupTitle = groupedColumn.title(this.$scope);\n this.$scope.$selGroup = groupKey;\n if (groupedColumn.show.assign) {\n groupedColumn.show.assign(this.$scope, false);\n }\n }\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableGroupRowController.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport * as ng1 from 'angular';\nimport { NgTableEventsChannel, PageButton } from '../core'\nimport { TableScope } from './ngTableController';\n\ninterface ScopeExtensions {\n pages: PageButton[]\n}\n\nngTablePagination.$inject = ['$compile', '$document', 'ngTableEventsChannel'];\n\n/**\n * Directive that renders the table pagination controls\n * @ngdoc directive\n */\nexport function ngTablePagination($compile: ng1.ICompileService, $document: ng1.IDocumentService, ngTableEventsChannel: NgTableEventsChannel): ng1.IDirective {\n\n return {\n restrict: 'A',\n scope: {\n 'params': '=ngTablePagination',\n 'templateUrl': '='\n },\n replace: false,\n link: function(scope: TableScope & ScopeExtensions, element: ng1.IAugmentedJQuery/*, attrs*/) {\n\n ngTableEventsChannel.onAfterReloadData(function(pubParams) {\n scope.pages = pubParams.generatePagesArray();\n }, scope, function(pubParams){\n return pubParams === scope.params;\n });\n\n scope.$watch('templateUrl', function(templateUrl) {\n if (templateUrl === undefined) {\n return;\n }\n const template = ng1.element('
', $document);\n element.append(template);\n $compile(template)(scope);\n });\n }\n };\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTablePagination.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IAttributes, IDirective, IParseService, IQService, IPromise, IScope } from 'angular';\nimport { ColumnDef, SelectData, SelectDataFunc, SelectOption } from './public-interfaces';\n\n/**\n * @private\n */\nexport interface InputAttributes extends IAttributes {\n ngTableSelectFilterDs: string;\n}\n\n/**\n * @private\n */\nexport interface ScopeExtensions {\n $selectData: SelectOption[]\n}\n\nngTableSelectFilterDs.$inject = [];\n\n/**\n * Takes the array returned by $column.filterData and makes it available as `$selectData` on the `$scope`.\n *\n * The resulting `$selectData` array will contain an extra item that is suitable to represent the user\n * \"deselecting\" an item from a `\\n\";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/filters/number.html\n// module id = 36\n// module chunks = 0","var path = 'ng-table/filters/select-multiple.html';\nvar html = \"\\n\";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/filters/select-multiple.html\n// module id = 37\n// module chunks = 0","var path = 'ng-table/filters/select.html';\nvar html = \"\\n\";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/filters/select.html\n// module id = 38\n// module chunks = 0","var path = 'ng-table/filters/text.html';\nvar html = \"\\n\";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/filters/text.html\n// module id = 39\n// module chunks = 0","var path = 'ng-table/groupRow.html';\nvar html = \"\\n \\n \\n {{$selGroupTitle}}\\n \\n \\n \\n \\n \\n\\n\";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/groupRow.html\n// module id = 40\n// module chunks = 0","var path = 'ng-table/header.html';\nvar html = \"\\n\\n\\n\";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/header.html\n// module id = 41\n// module chunks = 0","var path = 'ng-table/pager.html';\nvar html = \"
\\n
\\n \\n
\\n
    \\n
  • \\n «\\n \\n \\n \\n \\n »\\n
  • \\n
\\n
\\n\";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/pager.html\n// module id = 42\n// module chunks = 0","var path = 'ng-table/sorterRow.html';\nvar html = \"\\n \\n
\\n \\n
\\n
\\n \\n\\n\";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/sorterRow.html\n// module id = 43\n// module chunks = 0","import * as ng1 from 'angular';\nimport { ngTableCoreModule } from './src/core';\nimport { ngTableBrowserModule } from './src/browser';\n\nconst ngTableModule = ng1.module('ngTable', [ngTableCoreModule.name, ngTableBrowserModule.name]);\n\nexport { ngTableModule };\nexport * from './src/core';\nexport * from './src/browser';\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./index.ts"],"sourceRoot":""} \ No newline at end of file diff --git a/ng-table.min.js b/ng-table.min.js index ddb19b5..344f514 100644 --- a/ng-table.min.js +++ b/ng-table.min.js @@ -1,3 +1,3 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("angular")):"function"==typeof define&&define.amd?define(["angular"],e):"object"==typeof exports?exports["ng-table"]=e(require("angular")):t["ng-table"]=e(t.angular)}(this,function(t){return function(t){function e(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return t[r].call(a.exports,a,a.exports,e),a.l=!0,a.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=51)}([function(e,n){e.exports=t},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}var a=n(0),i=n(3),s=n(37),o=n(7),l=n(10),u=n(9),c=n(8),p=a.module("ngTable-core",[]).provider("ngTableDefaultGetData",i.NgTableDefaultGetDataProvider).factory("ngTableDefaultGetGroups",s.ngTableDefaultGetGroups).value("ngTableDefaults",o.ngTableDefaults).service("ngTableEventsChannel",c.NgTableEventsChannel).service("ngTableSettings",l.NgTableSettings).run(u.NgTableParams.init);e.ngTableCoreModule=p,p.value("NgTableParams",u.NgTableParams);var g=n(7);e.IDefaults=g.IDefaults,r(n(8));var f=n(10);e.ISettings=f.ISettings,r(n(9)),r(n(3)),r(n(36)),r(n(39)),r(n(40)),r(n(41))},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}var a=n(0),i=n(13),s=n(14),o=n(15),l=n(16);e.NgTableController=l.NgTableController;var u=n(17),c=n(18);e.NgTableFilterConfigProvider=c.NgTableFilterConfigProvider,e.NgTableFilterConfig=c.NgTableFilterConfig;var p=n(19),g=n(20),f=n(21),h=n(22),m=n(23),d=n(24),b=n(25),v=n(26);n(43),n(45),n(44),n(46),n(49),n(48);var $=a.module("ngTable-browser",[]).directive("ngTable",i.ngTable).service("ngTableColumn",s.NgTableColumn).directive("ngTableColumnsBinding",o.ngTableColumnsBinding).controller("ngTableController",l.NgTableController).directive("ngTableDynamic",u.ngTableDynamic).provider("ngTableFilterConfig",c.NgTableFilterConfigProvider).directive("ngTableFilterRow",p.ngTableFilterRow).controller("ngTableFilterRowController",g.NgTableFilterRowController).directive("ngTableGroupRow",f.ngTableGroupRow).controller("ngTableGroupRowController",h.NgTableGroupRowController).directive("ngTablePagination",m.ngTablePagination).directive("ngTableSelectFilterDs",d.ngTableSelectFilterDs).directive("ngTableSorterRow",b.ngTableSorterRow).controller("ngTableSorterRowController",v.NgTableSorterRowController);e.ngTableBrowserModule=$,r(n(27))},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(28)),r(n(29)),r(n(30)),r(n(31)),r(n(32))},function(t,e){"use strict"},function(t,e){"use strict"},function(t,e){"use strict"},function(t,e){"use strict";e.ngTableDefaults={params:{},settings:{}}},function(t,e,n){"use strict";var r=n(0),a=function(){function t(t){this.$rootScope=t;var e=this;e=this.addTableParamsEvent("afterCreated",e),e=this.addTableParamsEvent("afterReloadData",e),e=this.addTableParamsEvent("datasetChanged",e),e=this.addTableParamsEvent("pagesChanged",e),e=this.addTableParamsEvent("afterDataFiltered",e),e=this.addTableParamsEvent("afterDataSorted",e)}return t.prototype.addTableParamsEvent=function(t,e){var n=t.charAt(0).toUpperCase()+t.substring(1),a=(i={},i["on"+n]=this.createEventSubscriptionFn(t),i["publish"+n]=this.createPublishEventFn(t),i);return r.extend(e,a);var i},t.prototype.createPublishEventFn=function(t){var e=this;return function(){for(var n=[],r=0;r1){l.push({type:"prev",number:Math.max(1,t-1),active:t>1}),l.push({type:"first",number:1,active:t>1,current:1===t}),i=Math.round((this._settings.paginationMaxBlocks-this._settings.paginationMinBlocks)/2),s=Math.max(2,t-i),a=Math.min(o-1,t+2*i-(t-s)),s=Math.max(2,s-(2*i-(a-s)));for(var u=s;u<=a;)u===s&&2!==u||u===a&&u!==o-1?l.push({type:"more",active:!1}):l.push({type:"page",number:u,active:t!==u,current:t===u}),u++;l.push({type:"last",number:o,active:t!==o,current:t===o}),l.push({type:"next",number:Math.min(o,t+1),active:t0},t.prototype.hasFilterChanges=function(){var t=this.prevParamsMemento&&this.prevParamsMemento.params.filter;return!a.equals(this._params.filter,t)||this.hasGlobalSearchFieldChanges()},t.prototype.hasGroup=function(t,e){return null==t?i.isGroupingFun(this._params.group)||Object.keys(this._params.group).length>0:i.isGroupingFun(t)?null==e?this._params.group===t:this._params.group===t&&t.sortDirection===e:null==e?Object.keys(this._params.group).indexOf(t)!==-1:this._params.group[t]===e},t.prototype.isDataReloadRequired=function(){return!this.isCommittedDataset||!a.equals(this.createComparableParams(),this.prevParamsMemento)||this.hasGlobalSearchFieldChanges()},t.prototype.isSortBy=function(t,e){return void 0!==e?void 0!==this._params.sorting[t]&&this._params.sorting[t]==e:void 0!==this._params.sorting[t]},t.prototype.orderBy=function(){return i.convertSortToOrderBy(this._params.sorting)},t.prototype.page=function(t){return void 0!==t?this.parameters({page:t}):this._params.page},t.prototype.parameters=function(t,e){if(e=e||!1,void 0!==typeof t){for(var n in t){var i=t[n];if(e&&n.indexOf("[")>=0){for(var s=n.split(/\[(.*)\]/).reverse(),o="",l=0,u=s.length;l',this.$document),this.$element.prepend(t));var n=r.element('
',this.$document);this.$element.after(n),t&&this.$compile(t)(this.$scope),this.$compile(n)(this.$scope)}},t.prototype.loadFilterData=function(t){function e(t){return t&&"object"==typeof t&&"function"==typeof t.then}var n=this;r.forEach(t,function(t){var a=t.filterData(n.$scope);return a?e(a)?(delete t.filterData,a.then(function(e){r.isArray(e)||r.isFunction(e)||r.isObject(e)||(e=[]),t.data=e})):t.data=a:void delete t.filterData})},t.prototype.buildColumns=function(t){var e=this,n=[];return(t||[]).forEach(function(t){n.push(e.ngTableColumn.buildColumn(t,e.$scope,n))}),n},t.prototype.parseNgTableDynamicExpr=function(t){if(!t||t.indexOf(" with ")>-1){var e=t.split(/\s+with\s+/);return{tableParams:e[0],columns:e[1]}}throw new Error("Parse error (expected example: ng-table-dynamic='tableParams with cols')")},t.prototype.setupBindingsToInternalScope=function(t){var e=this;this.$scope.$watch(t,function(t){void 0!==t&&(e.$scope.params=t)},!1),this.setupFilterRowBindingsToInternalScope(),this.setupGroupRowBindingsToInternalScope()},t.prototype.setupFilterRowBindingsToInternalScope=function(){var t=this;this.$attrs.showFilter?this.$scope.$parent.$watch(this.$attrs.showFilter,function(e){t.$scope.show_filter=e}):this.$scope.$watch(function(){return t.hasVisibleFilterColumn},function(e){t.$scope.show_filter=e}),this.$attrs.disableFilter&&this.$scope.$parent.$watch(this.$attrs.disableFilter,function(e){t.$scope.$filterRow.disabled=e})},t.prototype.setupGroupRowBindingsToInternalScope=function(){var t=this;if(this.$scope.$groupRow={show:!1},this.$attrs.showGroup){var e=this.$parse(this.$attrs.showGroup);this.$scope.$parent.$watch(e,function(e){t.$scope.$groupRow.show=e}),e.assign&&this.$scope.$watch("$groupRow.show",function(n){e.assign(t.$scope.$parent,n)})}else this.$scope.$watch("params.hasGroup()",function(e){t.$scope.$groupRow.show=e})},t.prototype.getVisibleColumns=function(){var t=this;return(this.$scope.$columns||[]).filter(function(e){return e.show(t.$scope)})},t.prototype.subscribeToTableEvents=function(){var t=this;this.$scope.$watch("params.isDataReloadRequired()",function(e){t.onDataReloadStatusChange(e)}),this.ngTableEventsChannel.onAfterReloadData(function(e,n){var r=t.getVisibleColumns();e.hasGroup()?(t.$scope.$groups=n||[],t.$scope.$groups.visibleColumnCount=r.length):(t.$scope.$data=n||[],t.$scope.$data.visibleColumnCount=r.length)},this.$scope,function(e){return t.$scope.params===e}),this.ngTableEventsChannel.onPagesChanged(function(e,n){t.$scope.pages=n},this.$scope,function(e){return t.$scope.params===e})},t.prototype.some=function(t,e){for(var n=!1,r=0;r',e);i.append(s),t(s)(r)}})}}}var a=n(0);r.$inject=["$compile","$document","ngTableEventsChannel"],e.ngTablePagination=r},function(t,e){"use strict";function n(){var t={restrict:"A",controller:r};return t}n.$inject=[],e.ngTableSelectFilterDs=n;var r=function(){function t(t,e,n,r){var a=this;this.$scope=t,this.$attrs=n,this.$q=r,this.$column=e(n.ngTableSelectFilterDs)(t),t.$watch(function(){return a.$column&&a.$column.data},function(){a.bindDataSource()})}return t.prototype.bindDataSource=function(){var t=this;this.getSelectListData(this.$column).then(function(e){e&&!t.hasEmptyOption(e)&&e.unshift({id:"",title:""}),e=e||[],t.$scope.$selectData=e})},t.prototype.hasEmptyOption=function(t){for(var e,n=0;n
',i=n(0);i.module("ng").run(["$templateCache",function(t){t.put(r,a)}]),t.exports=r},function(t,e,n){var r="ng-table/filters/number.html",a=' ',i=n(0);i.module("ng").run(["$templateCache",function(t){t.put(r,a)}]),t.exports=r},function(t,e,n){var r="ng-table/filters/select-multiple.html",a=' ',i=n(0);i.module("ng").run(["$templateCache",function(t){t.put(r,a)}]),t.exports=r},function(t,e,n){var r="ng-table/filters/select.html",a=' ',i=n(0);i.module("ng").run(["$templateCache",function(t){ -t.put(r,a)}]),t.exports=r},function(t,e,n){var r="ng-table/filters/text.html",a=' ',i=n(0);i.module("ng").run(["$templateCache",function(t){t.put(r,a)}]),t.exports=r},function(t,e,n){var r="ng-table/groupRow.html",a=' {{$selGroupTitle}} ',i=n(0);i.module("ng").run(["$templateCache",function(t){t.put(r,a)}]),t.exports=r},function(t,e,n){var r="ng-table/header.html",a=" ",i=n(0);i.module("ng").run(["$templateCache",function(t){t.put(r,a)}]),t.exports=r},function(t,e,n){var r="ng-table/pager.html",a=' ',i=n(0);i.module("ng").run(["$templateCache",function(t){t.put(r,a)}]),t.exports=r},function(t,e,n){var r="ng-table/sorterRow.html",a="
",i=n(0);i.module("ng").run(["$templateCache",function(t){t.put(r,a)}]),t.exports=r},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}var a=n(0),i=n(1),s=n(2),o=a.module("ngTable",[i.ngTableCoreModule.name,s.ngTableBrowserModule.name]);e.ngTableModule=o,r(n(1)),r(n(2))}])}); +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("angular")):"function"==typeof define&&define.amd?define(["angular"],e):"object"==typeof exports?exports["ng-table"]=e(require("angular")):t["ng-table"]=e(t.angular)}(this,function(t){return function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=44)}([function(e,n){e.exports=t},function(t,e,n){"use strict";var r=n(0),i=(n.n(r),n(3)),a=n(8),s=n(32),o=n(11),l=n(10),u=n(9);n.d(e,"d",function(){return u.a}),n.d(e,"c",function(){return o.a}),n.d(e,"a",function(){return l.a}),n.d(e,"e",function(){return l.b}),n.d(e,"f",function(){return i.a}),n.d(e,"g",function(){return i.b});var c=n(6);n.d(e,"h",function(){return c.a});var p=n(31);n.d(e,"i",function(){return p.a}),n.d(e,"b",function(){return f});var f=r.module("ngTable-core",[]).provider("ngTableDefaultGetData",i.b).factory("ngTableDefaultGetGroups",a.b).value("ngTableDefaults",s.a).service("ngTableEventsChannel",u.a).run(o.a.init).run(l.a.init);f.value("NgTableParams",l.a)},function(t,e,n){"use strict";var r=n(0),i=(n.n(r),n(14)),a=n(15),s=n(16),o=n(17),l=n(18),u=n(5),c=n(19),p=n(20),f=n(21),h=n(22),g=n(23),d=n(24),m=n(25),v=n(26),$=n(36),b=(n.n($),n(38)),y=(n.n(b),n(37)),w=(n.n(y),n(39)),T=(n.n(w),n(42)),C=(n.n(T),n(41));n.n(C);n.d(e,"b",function(){return o.a}),n.d(e,"c",function(){return u.b}),n.d(e,"d",function(){return u.a}),n.d(e,"e",function(){return u.c}),n.d(e,"a",function(){return D});var D=r.module("ngTable-browser",[]).directive("ngTable",i.a).service("ngTableColumn",a.a).directive("ngTableColumnsBinding",s.a).controller("ngTableController",o.a).directive("ngTableDynamic",l.a).provider("ngTableFilterConfig",u.a).directive("ngTableFilterRow",c.a).controller("ngTableFilterRowController",p.a).directive("ngTableGroupRow",f.a).controller("ngTableGroupRowController",h.a).directive("ngTablePagination",g.a).directive("ngTableSelectFilterDs",d.a).directive("ngTableSorterRow",m.a).controller("ngTableSorterRowController",v.a)},function(t,e,n){"use strict";var r=n(27);n.d(e,"a",function(){return r.a});var i=n(28);n.d(e,"b",function(){return i.a})},function(t,e,n){"use strict";var r=n(33);n.d(e,"b",function(){return r.a});var i=n(34);n.d(e,"a",function(){return i.a})},function(t,e,n){"use strict";var r=n(0),i=(n.n(r),n(4));n.d(e,"b",function(){return a}),n.d(e,"a",function(){return s}),n.d(e,"c",function(){return o});var a=function(){function t(){this.defaultBaseUrl="ng-table/filters/",this.defaultExt=".html",this.aliasUrls={}}return t}(),s=function(){function t(t){var e=this;this.$get=function(){return t.instantiate(o,{config:r.copy(e.config)})},this.$get.$inject=[],this.resetConfigs()}return t.prototype.resetConfigs=function(){this.config=new a},t.prototype.setConfig=function(t){this.config=n.i(i.b)(r.copy(this.config),t)},t}();s.$inject=["$injector"];var o=function(){function t(t){this.config=t}return t.prototype.getUrlForAlias=function(t,e){return this.config.aliasUrls[t]||this.config.defaultBaseUrl+t+this.config.defaultExt},t.prototype.getTemplateUrl=function(t,e){var n;return n="string"!=typeof t?t.id:t,n.indexOf("/")!==-1?n:this.getUrlForAlias(n,e)},t}();o.$inject=["config"]},function(t,e,n){"use strict";var r=n(29);n.d(e,"a",function(){return r.a})},function(t,e,n){"use strict";n.d(e,"a",function(){return r});var r=function(){function t(){this.defaultSort="asc",this.isExpanded=!0}return t}()},function(t,e,n){"use strict";var r=n(7);n.d(e,"a",function(){return r.a});var i=n(30);n.d(e,"b",function(){return i.a})},function(t,e,n){"use strict";var r=n(0);n.n(r);n.d(e,"a",function(){return i});var i=function(){function t(t){this.$rootScope=t;var e=this;e=this.addTableParamsEvent("afterCreated",e),e=this.addTableParamsEvent("afterReloadData",e),e=this.addTableParamsEvent("datasetChanged",e),e=this.addTableParamsEvent("pagesChanged",e),e=this.addTableParamsEvent("afterDataFiltered",e),e=this.addTableParamsEvent("afterDataSorted",e)}return t.prototype.addTableParamsEvent=function(t,e){var n=t.charAt(0).toUpperCase()+t.substring(1),i=(a={},a["on"+n]=this.createEventSubscriptionFn(t),a["publish"+n]=this.createPublishEventFn(t),a);return r.extend(e,i);var a},t.prototype.createPublishEventFn=function(t){var e=this;return function(){for(var n=[],r=0;r1){l.push({type:"prev",number:Math.max(1,t-1),active:t>1}),l.push({type:"first",number:1,active:t>1,current:1===t}),a=Math.round((this._settings.paginationMaxBlocks-this._settings.paginationMinBlocks)/2),s=Math.max(2,t-a),i=Math.min(o-1,t+2*a-(t-s)),s=Math.max(2,s-(2*a-(i-s)));for(var u=s;u<=i;)u===s&&2!==u||u===i&&u!==o-1?l.push({type:"more",active:!1}):l.push({type:"page",number:u,active:t!==u,current:t===u}),u++;l.push({type:"last",number:o,active:t!==o,current:t===o}),l.push({type:"next",number:Math.min(o,t+1),active:t0},t.prototype.hasFilterChanges=function(){var t=this.prevParamsMemento&&this.prevParamsMemento.params.filter;return!i.equals(this._params.filter,t)||this.hasGlobalSearchFieldChanges()},t.prototype.hasGroup=function(t,e){return null==t?n.i(a.a)(this._params.group)||Object.keys(this._params.group).length>0:n.i(a.a)(t)?null==e?this._params.group===t:this._params.group===t&&t.sortDirection===e:null==e?Object.keys(this._params.group).indexOf(t)!==-1:this._params.group[t]===e},t.prototype.isDataReloadRequired=function(){return!this.isCommittedDataset||!i.equals(this.createComparableParams(),this.prevParamsMemento)||this.hasGlobalSearchFieldChanges()},t.prototype.isSortBy=function(t,e){return void 0!==e?void 0!==this._params.sorting[t]&&this._params.sorting[t]==e:void 0!==this._params.sorting[t]},t.prototype.orderBy=function(){return n.i(a.b)(this._params.sorting)},t.prototype.page=function(t){return void 0!==t?this.parameters({page:t}):this._params.page},t.prototype.parameters=function(t,e){if(void 0===t)return this._params;e=e||!1;for(var n in t){var a=t[n];if(e&&n.indexOf("[")>=0){for(var s=n.split(/\[(.*)\]/).reverse(),o="",l=0,u=s.length;l',this.$document),this.$element.prepend(t));var n=r.element('
',this.$document);this.$element.after(n),t&&this.$compile(t)(this.$scope),this.$compile(n)(this.$scope)}},t.prototype.loadFilterData=function(t){function e(t){return t&&"object"==typeof t&&"function"==typeof t.then}var n=this;r.forEach(t,function(t){var i=t.filterData(n.$scope);return i?e(i)?(delete t.filterData,i.then(function(e){r.isArray(e)||r.isFunction(e)||r.isObject(e)||(e=[]),t.data=e})):t.data=i:void delete t.filterData})},t.prototype.buildColumns=function(t){var e=this,n=[];return(t||[]).forEach(function(t){n.push(e.ngTableColumn.buildColumn(t,e.$scope,n))}),n},t.prototype.parseNgTableDynamicExpr=function(t){if(!t||t.indexOf(" with ")>-1){var e=t.split(/\s+with\s+/);return{tableParams:e[0],columns:e[1]}}throw new Error("Parse error (expected example: ng-table-dynamic='tableParams with cols')")},t.prototype.setupBindingsToInternalScope=function(t){var e=this;this.$scope.$watch(t,function(t){void 0!==t&&(e.$scope.params=t)},!1),this.setupFilterRowBindingsToInternalScope(),this.setupGroupRowBindingsToInternalScope()},t.prototype.setupFilterRowBindingsToInternalScope=function(){var t=this;this.$attrs.showFilter?this.$scope.$parent.$watch(this.$attrs.showFilter,function(e){t.$scope.show_filter=e}):this.$scope.$watch(function(){return t.hasVisibleFilterColumn},function(e){t.$scope.show_filter=e}),this.$attrs.disableFilter&&this.$scope.$parent.$watch(this.$attrs.disableFilter,function(e){t.$scope.$filterRow.disabled=e})},t.prototype.setupGroupRowBindingsToInternalScope=function(){var t=this;if(this.$scope.$groupRow={show:!1},this.$attrs.showGroup){var e=this.$parse(this.$attrs.showGroup);this.$scope.$parent.$watch(e,function(e){t.$scope.$groupRow.show=e}),e.assign&&this.$scope.$watch("$groupRow.show",function(n){e.assign(t.$scope.$parent,n)})}else this.$scope.$watch("params.hasGroup()",function(e){t.$scope.$groupRow.show=e})},t.prototype.getVisibleColumns=function(){var t=this;return(this.$scope.$columns||[]).filter(function(e){return e.show(t.$scope)})},t.prototype.subscribeToTableEvents=function(){var t=this;this.$scope.$watch("params.isDataReloadRequired()",function(e){t.onDataReloadStatusChange(e)}),this.ngTableEventsChannel.onAfterReloadData(function(e,n){var r=t.getVisibleColumns();e.hasGroup()?(t.$scope.$groups=n||[],t.$scope.$groups.visibleColumnCount=r.length):(t.$scope.$data=n||[],t.$scope.$data.visibleColumnCount=r.length)},this.$scope,function(e){return t.$scope.params===e}),this.ngTableEventsChannel.onPagesChanged(function(e,n){t.$scope.pages=n},this.$scope,function(e){return t.$scope.params===e})},t.prototype.some=function(t,e){for(var n=!1,r=0;r',e);a.append(s),t(s)(r)}})}}}var i=n(0);n.n(i);e.a=r,r.$inject=["$compile","$document","ngTableEventsChannel"]},function(t,e,n){"use strict";function r(){var t={restrict:"A",controller:i};return t}n.d(e,"a",function(){return r}),r.$inject=[];var i=function(){function t(t,e,n,r){var i=this;this.$scope=t,this.$attrs=n,this.$q=r,this.$column=e(n.ngTableSelectFilterDs)(t),t.$watch(function(){return i.$column&&i.$column.data},function(){i.bindDataSource()})}return t.prototype.bindDataSource=function(){var t=this;this.getSelectListData(this.$column).then(function(e){e&&!t.hasEmptyOption(e)&&e.unshift({id:"",title:""}),e=e||[],t.$scope.$selectData=e})},t.prototype.hasEmptyOption=function(t){for(var e=!1,n=0;n
',a=n(0);a.module("ng").run(["$templateCache",function(t){t.put(r,i)}]),t.exports=r},function(t,e,n){var r="ng-table/filters/number.html",i=' ',a=n(0);a.module("ng").run(["$templateCache",function(t){t.put(r,i)}]),t.exports=r},function(t,e,n){var r="ng-table/filters/select-multiple.html",i=' ',a=n(0); +a.module("ng").run(["$templateCache",function(t){t.put(r,i)}]),t.exports=r},function(t,e,n){var r="ng-table/filters/select.html",i=' ',a=n(0);a.module("ng").run(["$templateCache",function(t){t.put(r,i)}]),t.exports=r},function(t,e,n){var r="ng-table/filters/text.html",i=' ',a=n(0);a.module("ng").run(["$templateCache",function(t){t.put(r,i)}]),t.exports=r},function(t,e,n){var r="ng-table/groupRow.html",i=' {{$selGroupTitle}} ',a=n(0);a.module("ng").run(["$templateCache",function(t){t.put(r,i)}]),t.exports=r},function(t,e,n){var r="ng-table/header.html",i=" ",a=n(0);a.module("ng").run(["$templateCache",function(t){t.put(r,i)}]),t.exports=r},function(t,e,n){var r="ng-table/pager.html",i=' ',a=n(0);a.module("ng").run(["$templateCache",function(t){t.put(r,i)}]),t.exports=r},function(t,e,n){var r="ng-table/sorterRow.html",i="
",a=n(0);a.module("ng").run(["$templateCache",function(t){t.put(r,i)}]),t.exports=r},function(t,e,n){"use strict";var r=n(0),i=(n.n(r),n(1)),a=n(2);Object.defineProperty(e,"__esModule",{value:!0}),n.d(e,"ngTableCoreModule",function(){return i.b}),n.d(e,"Settings",function(){return i.c}),n.d(e,"NgTableEventsChannel",function(){return i.d}),n.d(e,"ParamValues",function(){return i.e}),n.d(e,"NgTableParams",function(){return i.a}),n.d(e,"DataSettings",function(){return i.f}),n.d(e,"NgTableDefaultGetDataProvider",function(){return i.g}),n.d(e,"FilterSettings",function(){return i.h}),n.d(e,"GroupSettings",function(){return i.i}),n.d(e,"NgTableController",function(){return a.b}),n.d(e,"ngTableBrowserModule",function(){return a.a}),n.d(e,"FilterConfigValues",function(){return a.c}),n.d(e,"NgTableFilterConfigProvider",function(){return a.d}),n.d(e,"NgTableFilterConfig",function(){return a.e}),n.d(e,"ngTableModule",function(){return s});var s=r.module("ngTable",[i.b.name,a.a.name])}])}); //# sourceMappingURL=ng-table.min.js.map \ No newline at end of file diff --git a/ng-table.min.js.map b/ng-table.min.js.map index 9bf7f37..c5e3912 100644 --- a/ng-table.min.js.map +++ b/ng-table.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-table.min.js","webpack:///webpack/bootstrap f72b9990c4e9da3f352c","webpack:///external \"angular\"","webpack:///./src/core/index.ts","webpack:///./src/browser/index.ts","webpack:///./src/core/data/index.ts","webpack:///./src/core/ngTableDefaults.ts","webpack:///./src/core/ngTableEventsChannel.ts","webpack:///./src/core/ngTableParams.ts","webpack:///./src/core/ngTableSettings.ts","webpack:///./src/core/util.ts","webpack:///./src/browser/ngTable.directive.ts","webpack:///./src/browser/ngTableColumn.ts","webpack:///./src/browser/ngTableColumnsBinding.directive.ts","webpack:///./src/browser/ngTableController.ts","webpack:///./src/browser/ngTableDynamic.directive.ts","webpack:///./src/browser/ngTableFilterConfig.ts","webpack:///./src/browser/ngTableFilterRow.directive.ts","webpack:///./src/browser/ngTableFilterRowController.ts","webpack:///./src/browser/ngTableGroupRow.directive.ts","webpack:///./src/browser/ngTableGroupRowController.ts","webpack:///./src/browser/ngTablePagination.directive.ts","webpack:///./src/browser/ngTableSelectFilterDs.directive.ts","webpack:///./src/browser/ngTableSorterRow.directive.ts","webpack:///./src/browser/ngTableSorterRowController.ts","webpack:///./src/core/data/ngTableDefaultGetData.ts","webpack:///./src/core/filtering/index.ts","webpack:///./src/core/grouping/index.ts","webpack:///./src/core/grouping/ngTableDefaultGetGroups.ts","webpack:///./src/core/grouping/publicExports.ts","webpack:///./src/browser/filterRow.html","webpack:///./src/browser/filters/number.html","webpack:///./src/browser/filters/select-multiple.html","webpack:///./src/browser/filters/select.html","webpack:///./src/browser/filters/text.html","webpack:///./src/browser/groupRow.html","webpack:///./src/browser/header.html","webpack:///./src/browser/pager.html","webpack:///./src/browser/sorterRow.html","webpack:///./index.ts"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_0__","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","value","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","__export","angular","data_1","grouping_1","ngTableDefaults_1","ngTableSettings_1","ngTableParams_1","ngTableEventsChannel_1","ngTableCoreModule","provider","NgTableDefaultGetDataProvider","ngTableDefaultGetGroups","ngTableDefaults","service","NgTableEventsChannel","NgTableSettings","run","NgTableParams","init","ngTableDefaults_2","IDefaults","ngTableSettings_2","ISettings","ngTable_directive_1","ngTableColumn_1","ngTableColumnsBinding_directive_1","ngTableController_1","NgTableController","ngTableDynamic_directive_1","ngTableFilterConfig_1","NgTableFilterConfigProvider","NgTableFilterConfig","ngTableFilterRow_directive_1","ngTableFilterRowController_1","ngTableGroupRow_directive_1","ngTableGroupRowController_1","ngTablePagination_directive_1","ngTableSelectFilterDs_directive_1","ngTableSorterRow_directive_1","ngTableSorterRowController_1","ngTableBrowserModule","directive","ngTable","NgTableColumn","ngTableColumnsBinding","controller","ngTableDynamic","ngTableFilterRow","NgTableFilterRowController","ngTableGroupRow","NgTableGroupRowController","ngTablePagination","ngTableSelectFilterDs","ngTableSorterRow","NgTableSorterRowController","params","settings","ng1","$rootScope","events","addTableParamsEvent","eventName","target","fnName","charAt","toUpperCase","substring","event","_a","createEventSubscriptionFn","createPublishEventFn","extend","_this","args","_i","arguments","length","$broadcast","apply","concat","createEventSelectorFn","eventSelector","isEventSelectorFunc","publisher","val","isScopeLike","$new","handler","eventSelectorOrScope","actualEvtSelector","scope","$on","eventArgs","isNullInstance","fnArgs","$inject","isNumber","isNaN","parseFloat","isFinite","util_1","baseParameters","baseSettings","data","defaultSettings","ngTableSettings","createDefaults","isCommittedDataset","initialEvents","_params","page","count","filter","sorting","group","_settings","reloadPages","currentPages","oldPages","newPages","generatePagesArray","total","equals","ngTableEventsChannel","publishPagesChanged","parameters","publishAfterCreated","forEach","undefined","keys","significantFilter","filterValue","currentPage","totalItems","pageSize","maxBlocks","maxPage","maxPivotPages","minPage","numPages","pages","Math","ceil","push","type","number","max","active","current","round","paginationMaxBlocks","paginationMinBlocks","min","sortDirection","newParameters","isGroupingFun","hasErrorState","errParamsMemento","createComparableParams","hasFilter","hasFilterChanges","previousFilter","prevParamsMemento","hasGlobalSearchFieldChanges","hasGroup","indexOf","isDataReloadRequired","isSortBy","field","direction","orderBy","convertSortToOrderBy","parseParamsFromUrl","key","split","reverse","lastKey","len","v","parseGroup","log","reload","pData","$loading","copy","runInterceptorPipeline","$q","when","getGroups","fn","getData","oldData","then","publishAfterReloadData","catch","reason","reject","newSettings","isDefined","merge","originalDataset_1","dataset","hasDatasetChanged","fireEvent","publishDatasetChanged","url","asString","collectValue","isArray","pairs","encodeURIComponent","isSignificantValue","item","subkey","pname","isFunction","groupSortDirection","currentVal","previousVal","debugMode","$log","debug","defaultSort","groupOptions","fetchedData","interceptors","reduce","result","interceptor","thenFn","response","bind","rejectFn","responseError","ngTableDefaultGetData","defaults","counts","filterOptions","filterComparator","filterDelay","filterDelayThreshold","filterFilterName","filterFn","filterLayout","isExpanded","sortingIndicator","existing","results","optimizeFilterDelay","column","$parse","restrict","priority","compile","element","dataRow","groupRow","columns","rows","find","tr","hasClass","el","attr","getAttrValue","setAttrValue","parsedAttribute","expr","localValue","context","assign","$scope","parsedExpr","$parent","titleExpr","id","title","titleAlt","headerTitle","sortable","class","groupable","headerTemplateURL","filterData","show","attrs","$columns","buildColumns","setupBindingsToInternalScope","loadFilterData","compileDirectiveTemplates","buildColumn","defaultScope","extendedCol","create","_loop_1","prop","getterSetter","getterFn","$column","localValue_1","wrappedGetterFn_1","createGetterSetter","noop","initialValue","newValue","linkFn","$element","$attrs","setter","$watch","newColumns","shallowClone","slice","link","core_1","$timeout","$compile","$document","ngTableColumn","$filterRow","disabled","delayFilter","timer","callback","ms","cancel","newParams","oldParams","subscribeToTableEvents","some","onDataReloadStatusChange","newStatus","currentParams","applyFilter","templates","header","templateHeader","pagination","templatePagination","addClass","headerTemplate","theadFound_1","children","e","tagName","prepend","paginationTemplate","after","isPromiseLike","isObject","col","parseNgTableDynamicExpr","parts","tableParams","Error","tableParamsExpr","setupFilterRowBindingsToInternalScope","setupGroupRowBindingsToInternalScope","showFilter","show_filter","hasVisibleFilterColumn","disableFilter","$groupRow","showGroup","showGroupGetter_1","getVisibleColumns","onAfterReloadData","newDatapage","visibleColumns","$groups","visibleColumnCount","$data","onPagesChanged","array","predicate","found","obj","tElement","row","showExpr","$watchCollection","newCols","$injector","defaultConfig","defaultBaseUrl","defaultExt","aliasUrls","$get","instantiate","config","resetConfigs","setConfig","customConfig","mergeConfig","getUrlForAlias","aliasName","filterKey","getTemplateUrl","filterDef","filterName","replace","templateUrl","controllerAs","ngTableFilterConfig","getFilterPlaceholderValue","getFilterCellCss","layout","size","width","parseInt","toString","placeholder","groupFns","newGrouping","setGroup","getGroupables","groupableCols","getGroupTitle","isGroupingFunc","groupBy","isSelectedGroup","changeSortDirection","$selGroup","toggleDetail","newDirection","findGroupColumn","groupKey","grouping","existingGroupCol","$selGroupTitle","groupedColumn","pubParams","template","append","NgTableSelectFilterDsController","bindDataSource","getSelectListData","hasEmptyOption","unshift","$selectData","isMatch","dataInput","Array","sortBy","parsedSortable","inverseSort","sortingParams","ctrlKey","metaKey","$filter","getFilterFn","getOrderByFn","sortingFilterName","filterKeys","parsedFilter","setPath","applyPaging","pagedData","applySort","orderByFn","options","defaultDataOptions","dataOptions","fData","publishAfterDataFiltered","orderedData","publishAfterDataSorted","path","ret","parentPathKeys","groupFn","groupField_1","getPath","originalDataOptions","gotData","groups","groupName","$hideRows","finally","ks","html","put","browser_1","ngTableModule"],"mappings":"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","file":"ng-table.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-table\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-table\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_0__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-table\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-table\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_0__) {\nreturn /******/ (function(modules) { // webpackBootstrap\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/******/\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// identity function for calling harmory imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmory 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 = 51);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nvar angular = __webpack_require__(0);\nvar data_1 = __webpack_require__(3);\nvar grouping_1 = __webpack_require__(37);\nvar ngTableDefaults_1 = __webpack_require__(7);\nvar ngTableSettings_1 = __webpack_require__(10);\nvar ngTableParams_1 = __webpack_require__(9);\nvar ngTableEventsChannel_1 = __webpack_require__(8);\nvar ngTableCoreModule = angular.module('ngTable-core', [])\n .provider('ngTableDefaultGetData', data_1.NgTableDefaultGetDataProvider)\n .factory('ngTableDefaultGetGroups', grouping_1.ngTableDefaultGetGroups)\n .value('ngTableDefaults', ngTableDefaults_1.ngTableDefaults)\n .service('ngTableEventsChannel', ngTableEventsChannel_1.NgTableEventsChannel)\n .service('ngTableSettings', ngTableSettings_1.NgTableSettings)\n .run(ngTableParams_1.NgTableParams.init);\nexports.ngTableCoreModule = ngTableCoreModule;\n// note: if you are using ES6 or typescript prefer:\n// import { NgTableParams } from 'ng-table';\nngTableCoreModule.value('NgTableParams', ngTableParams_1.NgTableParams);\nvar ngTableDefaults_2 = __webpack_require__(7);\nexports.IDefaults = ngTableDefaults_2.IDefaults;\n__export(__webpack_require__(8));\nvar ngTableSettings_2 = __webpack_require__(10);\nexports.ISettings = ngTableSettings_2.ISettings;\n__export(__webpack_require__(9));\n__export(__webpack_require__(3));\n__export(__webpack_require__(36));\n__export(__webpack_require__(39));\n__export(__webpack_require__(40));\n__export(__webpack_require__(41));\n\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nvar angular = __webpack_require__(0);\nvar ngTable_directive_1 = __webpack_require__(13);\nvar ngTableColumn_1 = __webpack_require__(14);\nvar ngTableColumnsBinding_directive_1 = __webpack_require__(15);\nvar ngTableController_1 = __webpack_require__(16);\nexports.NgTableController = ngTableController_1.NgTableController;\nvar ngTableDynamic_directive_1 = __webpack_require__(17);\nvar ngTableFilterConfig_1 = __webpack_require__(18);\nexports.NgTableFilterConfigProvider = ngTableFilterConfig_1.NgTableFilterConfigProvider;\nexports.NgTableFilterConfig = ngTableFilterConfig_1.NgTableFilterConfig;\nvar ngTableFilterRow_directive_1 = __webpack_require__(19);\nvar ngTableFilterRowController_1 = __webpack_require__(20);\nvar ngTableGroupRow_directive_1 = __webpack_require__(21);\nvar ngTableGroupRowController_1 = __webpack_require__(22);\nvar ngTablePagination_directive_1 = __webpack_require__(23);\nvar ngTableSelectFilterDs_directive_1 = __webpack_require__(24);\nvar ngTableSorterRow_directive_1 = __webpack_require__(25);\nvar ngTableSorterRowController_1 = __webpack_require__(26);\n__webpack_require__(43);\n__webpack_require__(45);\n__webpack_require__(44);\n__webpack_require__(46);\n__webpack_require__(49);\n__webpack_require__(48);\nvar ngTableBrowserModule = angular.module('ngTable-browser', [])\n .directive('ngTable', ngTable_directive_1.ngTable)\n .service('ngTableColumn', ngTableColumn_1.NgTableColumn)\n .directive('ngTableColumnsBinding', ngTableColumnsBinding_directive_1.ngTableColumnsBinding)\n .controller('ngTableController', ngTableController_1.NgTableController)\n .directive('ngTableDynamic', ngTableDynamic_directive_1.ngTableDynamic)\n .provider('ngTableFilterConfig', ngTableFilterConfig_1.NgTableFilterConfigProvider)\n .directive('ngTableFilterRow', ngTableFilterRow_directive_1.ngTableFilterRow)\n .controller('ngTableFilterRowController', ngTableFilterRowController_1.NgTableFilterRowController)\n .directive('ngTableGroupRow', ngTableGroupRow_directive_1.ngTableGroupRow)\n .controller('ngTableGroupRowController', ngTableGroupRowController_1.NgTableGroupRowController)\n .directive('ngTablePagination', ngTablePagination_directive_1.ngTablePagination)\n .directive('ngTableSelectFilterDs', ngTableSelectFilterDs_directive_1.ngTableSelectFilterDs)\n .directive('ngTableSorterRow', ngTableSorterRow_directive_1.ngTableSorterRow)\n .controller('ngTableSorterRowController', ngTableSorterRowController_1.NgTableSorterRowController);\nexports.ngTableBrowserModule = ngTableBrowserModule;\n__export(__webpack_require__(27));\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\n__export(__webpack_require__(28));\n__export(__webpack_require__(29));\n__export(__webpack_require__(30));\n__export(__webpack_require__(31));\n__export(__webpack_require__(32));\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\"use strict\";\n\"use strict\";\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports) {\n\n\"use strict\";\n\"use strict\";\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports) {\n\n\"use strict\";\n\"use strict\";\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports) {\n\n\"use strict\";\n/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\"use strict\";\n/**\n * Default values for ngTable\n */\nexports.ngTableDefaults = {\n params: {},\n settings: {}\n};\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\"use strict\";\nvar ng1 = __webpack_require__(0);\nvar NgTableEventsChannel = (function () {\n function NgTableEventsChannel($rootScope) {\n this.$rootScope = $rootScope;\n var events = this;\n events = this.addTableParamsEvent('afterCreated', events);\n events = this.addTableParamsEvent('afterReloadData', events);\n events = this.addTableParamsEvent('datasetChanged', events);\n events = this.addTableParamsEvent('pagesChanged', events);\n events = this.addTableParamsEvent('afterDataFiltered', events);\n events = this.addTableParamsEvent('afterDataSorted', events);\n }\n NgTableEventsChannel.prototype.addTableParamsEvent = function (eventName, target) {\n var fnName = eventName.charAt(0).toUpperCase() + eventName.substring(1);\n var event = (_a = {},\n _a['on' + fnName] = this.createEventSubscriptionFn(eventName),\n _a['publish' + fnName] = this.createPublishEventFn(eventName),\n _a\n );\n return ng1.extend(target, event);\n var _a;\n };\n NgTableEventsChannel.prototype.createPublishEventFn = function (eventName) {\n var _this = this;\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i - 0] = arguments[_i];\n }\n (_a = _this.$rootScope).$broadcast.apply(_a, ['ngTable:' + eventName].concat(args));\n var _a;\n };\n };\n NgTableEventsChannel.prototype.createEventSubscriptionFn = function (eventName) {\n var _this = this;\n return function (handler, eventSelectorOrScope, eventSelector) {\n var actualEvtSelector;\n var scope = _this.$rootScope;\n if (isScopeLike(eventSelectorOrScope)) {\n scope = eventSelectorOrScope;\n actualEvtSelector = createEventSelectorFn(eventSelector);\n }\n else {\n actualEvtSelector = createEventSelectorFn(eventSelectorOrScope);\n }\n return scope.$on('ngTable:' + eventName, function (event, params) {\n var eventArgs = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n eventArgs[_i - 2] = arguments[_i];\n }\n // don't send events published by the internal NgTableParams created by ngTableController\n if (params.isNullInstance)\n return;\n var fnArgs = [params].concat(eventArgs);\n if (actualEvtSelector.apply(this, fnArgs)) {\n handler.apply(this, fnArgs);\n }\n });\n };\n function createEventSelectorFn(eventSelector) {\n if (!eventSelector) {\n return function (publisher) { return true; };\n }\n else if (isEventSelectorFunc(eventSelector)) {\n return eventSelector;\n }\n else {\n // shorthand for subscriber to only receive events from a specific publisher instance\n return function (publisher) { return publisher === eventSelector; };\n }\n }\n function isEventSelectorFunc(val) {\n return typeof val === 'function';\n }\n function isScopeLike(val) {\n return val && typeof val.$new === 'function';\n }\n };\n NgTableEventsChannel.$inject = ['$rootScope'];\n return NgTableEventsChannel;\n}());\nexports.NgTableEventsChannel = NgTableEventsChannel;\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\"use strict\";\nvar ng1 = __webpack_require__(0);\nvar util_1 = __webpack_require__(11);\n/**\n * @private\n */\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\n/**\n * Parameters manager for an ngTable directive\n */\nvar NgTableParams = (function () {\n function NgTableParams(baseParameters, baseSettings) {\n var _this = this;\n /**\n * The page of data rows currently being displayed in the table\n */\n this.data = [];\n this.defaultSettings = NgTableParams.ngTableSettings.createDefaults();\n this.isCommittedDataset = false;\n this.initialEvents = [];\n this._params = {\n page: 1,\n count: 10,\n filter: {},\n sorting: {},\n group: {}\n };\n this._settings = this.defaultSettings;\n // the ngTableController \"needs\" to create a dummy/null instance and it's important to know whether an instance\n // is one of these\n if (typeof baseParameters === \"boolean\") {\n this.isNullInstance = true;\n }\n this.reloadPages = (function () {\n var currentPages;\n return function () {\n var oldPages = currentPages;\n var newPages = _this.generatePagesArray(_this.page(), _this.total(), _this.count());\n if (!ng1.equals(oldPages, newPages)) {\n currentPages = newPages;\n NgTableParams.ngTableEventsChannel.publishPagesChanged(_this, newPages, oldPages);\n }\n };\n })();\n ng1.extend(this._params, NgTableParams.ngTableDefaults.params);\n this.settings(baseSettings);\n this.parameters(baseParameters, true);\n NgTableParams.ngTableEventsChannel.publishAfterCreated(this);\n // run events during construction after the initial create event. That way a consumer\n // can subscribe to all events for a table without \"dropping\" an event\n ng1.forEach(this.initialEvents, function (event) {\n event();\n });\n this.initialEvents = null;\n }\n NgTableParams.prototype.count = function (count) {\n // reset to first page because can be blank page\n return count !== undefined ? this.parameters({\n 'count': count,\n 'page': 1\n }) : this._params.count;\n };\n NgTableParams.prototype.filter = function (filter) {\n if (filter != null && typeof filter === 'object') {\n return this.parameters({\n 'filter': filter,\n 'page': 1\n });\n }\n else if (filter === true) {\n var keys = Object.keys(this._params.filter);\n var significantFilter = {};\n for (var i = 0; i < keys.length; i++) {\n var filterValue = this._params.filter[keys[i]];\n if (filterValue != null && filterValue !== '') {\n significantFilter[keys[i]] = filterValue;\n }\n }\n return significantFilter;\n }\n else {\n return this._params.filter;\n }\n };\n /**\n * Generate array of pages.\n * When no arguments supplied, the current parameter state of this `NgTableParams` instance will be used\n * @param currentPage Which page must be active\n * @param totalItems Total quantity of items\n * @param pageSize Quantity of items on page\n * @param maxBlocks Quantity of blocks for pagination\n * @returns Array of pages\n */\n NgTableParams.prototype.generatePagesArray = function (currentPage, totalItems, pageSize, maxBlocks) {\n if (!arguments.length) {\n currentPage = this.page();\n totalItems = this.total();\n pageSize = this.count();\n }\n var maxPage, maxPivotPages, minPage, numPages;\n maxBlocks = maxBlocks && maxBlocks < 6 ? 6 : maxBlocks;\n var pages = [];\n numPages = Math.ceil(totalItems / pageSize);\n if (numPages > 1) {\n pages.push({\n type: 'prev',\n number: Math.max(1, currentPage - 1),\n active: currentPage > 1\n });\n pages.push({\n type: 'first',\n number: 1,\n active: currentPage > 1,\n current: currentPage === 1\n });\n maxPivotPages = Math.round((this._settings.paginationMaxBlocks - this._settings.paginationMinBlocks) / 2);\n minPage = Math.max(2, currentPage - maxPivotPages);\n maxPage = Math.min(numPages - 1, currentPage + maxPivotPages * 2 - (currentPage - minPage));\n minPage = Math.max(2, minPage - (maxPivotPages * 2 - (maxPage - minPage)));\n var i = minPage;\n while (i <= maxPage) {\n if ((i === minPage && i !== 2) || (i === maxPage && i !== numPages - 1)) {\n pages.push({\n type: 'more',\n active: false\n });\n }\n else {\n pages.push({\n type: 'page',\n number: i,\n active: currentPage !== i,\n current: currentPage === i\n });\n }\n i++;\n }\n pages.push({\n type: 'last',\n number: numPages,\n active: currentPage !== numPages,\n current: currentPage === numPages\n });\n pages.push({\n type: 'next',\n number: Math.min(numPages, currentPage + 1),\n active: currentPage < numPages\n });\n }\n return pages;\n };\n NgTableParams.prototype.group = function (group, sortDirection) {\n if (group === undefined) {\n return this._params.group;\n }\n var newParameters = {\n page: 1\n };\n if (util_1.isGroupingFun(group) && sortDirection !== undefined) {\n group.sortDirection = sortDirection;\n newParameters.group = group;\n }\n else if (typeof group === 'string' && sortDirection !== undefined) {\n newParameters.group = (_a = {}, _a[group] = sortDirection, _a);\n }\n else {\n newParameters.group = group;\n }\n this.parameters(newParameters);\n return this;\n var _a;\n };\n /**\n * Returns true when an attempt to `reload` the current `parameter` values have resulted in a failure.\n * This method will continue to return true until the `reload` is successfully called or when the\n * `parameter` values have changed\n */\n NgTableParams.prototype.hasErrorState = function () {\n return !!(this.errParamsMemento && ng1.equals(this.errParamsMemento, this.createComparableParams()));\n };\n /**\n * Returns true if `filter` has significant filter value(s) (any value except null, undefined, or empty string),\n * otherwise false\n */\n NgTableParams.prototype.hasFilter = function () {\n return Object.keys(this.filter(true)).length > 0;\n };\n /**\n * Return true when a change to `filters` require the `reload` method\n * to be run so as to ensure the data presented to the user reflects these filters\n */\n NgTableParams.prototype.hasFilterChanges = function () {\n var previousFilter = (this.prevParamsMemento && this.prevParamsMemento.params.filter);\n return !ng1.equals((this._params.filter), previousFilter) || this.hasGlobalSearchFieldChanges();\n };\n NgTableParams.prototype.hasGroup = function (group, sortDirection) {\n if (group == null) {\n return util_1.isGroupingFun(this._params.group) || Object.keys(this._params.group).length > 0;\n }\n if (util_1.isGroupingFun(group)) {\n if (sortDirection == null) {\n return this._params.group === group;\n }\n else {\n return this._params.group === group && group.sortDirection === sortDirection;\n }\n }\n else {\n if (sortDirection == null) {\n return Object.keys(this._params.group).indexOf(group) !== -1;\n }\n else {\n return this._params.group[group] === sortDirection;\n }\n }\n };\n /**\n * Return true when a change to this instance should require the `reload` method\n * to be run so as to ensure the data rows presented to the user reflects the current state.\n *\n * Note that this method will return false when the `reload` method has run but fails. In this case\n * `hasErrorState` will return true.\n *\n * The built-in `ngTable` directives will watch for when this function returns true and will then call\n * the `reload` method to load its data rows\n */\n NgTableParams.prototype.isDataReloadRequired = function () {\n // note: using != as want to treat null and undefined the same\n return !this.isCommittedDataset || !ng1.equals(this.createComparableParams(), this.prevParamsMemento)\n || this.hasGlobalSearchFieldChanges();\n };\n /**\n * Returns true if sorting by the field supplied. Where direction supplied\n * the field must also be sorted by that direction to return true\n */\n NgTableParams.prototype.isSortBy = function (field, direction) {\n if (direction !== undefined) {\n return this._params.sorting[field] !== undefined && this._params.sorting[field] == direction;\n }\n else {\n return this._params.sorting[field] !== undefined;\n }\n };\n /**\n * Returns sorting values in a format that can be consumed by the angular `$orderBy` filter service\n */\n NgTableParams.prototype.orderBy = function () {\n return util_1.convertSortToOrderBy(this._params.sorting);\n };\n NgTableParams.prototype.page = function (page) {\n return page !== undefined ? this.parameters({\n 'page': page\n }) : this._params.page;\n };\n NgTableParams.prototype.parameters = function (newParameters, parseParamsFromUrl) {\n parseParamsFromUrl = parseParamsFromUrl || false;\n if (typeof newParameters !== undefined) {\n for (var key in newParameters) {\n var value = newParameters[key];\n if (parseParamsFromUrl && key.indexOf('[') >= 0) {\n var keys = key.split(/\\[(.*)\\]/).reverse();\n var lastKey = '';\n for (var i = 0, len = keys.length; i < len; i++) {\n var name = keys[i];\n if (name !== '') {\n var v = value;\n value = {};\n value[lastKey = name] = (isNumber(v) ? parseFloat(v) : v);\n }\n }\n if (lastKey === 'sorting') {\n this._params[lastKey] = {};\n }\n this._params[lastKey] = ng1.extend(this._params[lastKey] || {}, value[lastKey]);\n }\n else {\n if (key === 'group') {\n this._params[key] = this.parseGroup(newParameters[key]);\n }\n else {\n this._params[key] = (isNumber(newParameters[key]) ? parseFloat(newParameters[key]) : newParameters[key]);\n }\n }\n }\n this.log('ngTable: set parameters', this._params);\n return this;\n }\n return this._params;\n };\n /**\n * Trigger a reload of the data rows\n */\n NgTableParams.prototype.reload = function () {\n var _this = this;\n var pData = null;\n this._settings.$loading = true;\n this.prevParamsMemento = ng1.copy(this.createComparableParams());\n this.isCommittedDataset = true;\n if (this.hasGroup()) {\n pData = this.runInterceptorPipeline(NgTableParams.$q.when(this._settings.getGroups(this)));\n }\n else {\n var fn = this._settings.getData;\n pData = this.runInterceptorPipeline(NgTableParams.$q.when(fn(this)));\n }\n this.log('ngTable: reload data');\n var oldData = this.data;\n return pData.then(function (data) {\n _this._settings.$loading = false;\n _this.errParamsMemento = null;\n _this.data = data;\n // note: I think it makes sense to publish this event even when data === oldData\n // subscribers can always set a filter to only receive the event when data !== oldData\n NgTableParams.ngTableEventsChannel.publishAfterReloadData(_this, data, oldData);\n _this.reloadPages();\n return data;\n }).catch(function (reason) {\n _this.errParamsMemento = _this.prevParamsMemento;\n // \"rethrow\"\n return NgTableParams.$q.reject(reason);\n });\n };\n NgTableParams.prototype.settings = function (newSettings) {\n var _this = this;\n if (ng1.isDefined(newSettings)) {\n var settings = NgTableParams.ngTableSettings.merge(this._settings, newSettings);\n var originalDataset_1 = this._settings.dataset;\n this._settings = settings;\n // note: using != as want null and undefined to be treated the same\n var hasDatasetChanged = newSettings.hasOwnProperty('dataset') && (newSettings.dataset != originalDataset_1);\n if (hasDatasetChanged) {\n if (this.isCommittedDataset) {\n this.page(1); // reset page as a new dataset has been supplied\n }\n this.isCommittedDataset = false;\n var fireEvent = function () {\n NgTableParams.ngTableEventsChannel.publishDatasetChanged(_this, newSettings.dataset, originalDataset_1);\n };\n if (this.initialEvents) {\n this.initialEvents.push(fireEvent);\n }\n else {\n fireEvent();\n }\n }\n this.log('ngTable: set settings', this._settings);\n return this;\n }\n return this._settings;\n };\n NgTableParams.prototype.sorting = function (sorting, direction) {\n if (typeof sorting === 'string') {\n this.parameters({\n 'sorting': (_a = {}, _a[sorting] = direction, _a)\n });\n return this;\n }\n return sorting !== undefined ? this.parameters({\n 'sorting': sorting\n }) : this._params.sorting;\n var _a;\n };\n NgTableParams.prototype.total = function (total) {\n return total !== undefined ? this.settings({\n 'total': total\n }) : this._settings.total;\n };\n /**\n * Returns the current parameter values uri-encoded. Set `asString` to\n * true for the parameters to be returned as an array of strings of the form 'paramName=value'\n * otherwise parameters returned as a key-value object\n */\n NgTableParams.prototype.url = function (asString) {\n // this function is an example of Typescript gone bad!!\n asString = asString || false;\n var pairs = (asString ? [] : {});\n for (var key in this._params) {\n if (this._params.hasOwnProperty(key)) {\n var item = this._params[key], name = encodeURIComponent(key);\n if (typeof item === \"object\") {\n for (var subkey in item) {\n if (isSignificantValue(item[subkey], key)) {\n var pname = name + \"[\" + encodeURIComponent(subkey) + \"]\";\n collectValue(item[subkey], pname);\n }\n }\n }\n else if (!ng1.isFunction(item) && isSignificantValue(item, key)) {\n collectValue(item, name);\n }\n }\n }\n return pairs;\n function collectValue(value, key) {\n if (isArray(pairs)) {\n pairs.push(key + \"=\" + encodeURIComponent(value));\n }\n else {\n pairs[key] = encodeURIComponent(value);\n }\n }\n function isArray(pairs) {\n return asString;\n }\n function isSignificantValue(value, key) {\n return key === \"group\" ? true : typeof value !== undefined && value !== \"\";\n }\n };\n NgTableParams.prototype.createComparableParams = function () {\n var group = this._params.group;\n return {\n params: this._params,\n groupSortDirection: util_1.isGroupingFun(group) ? group.sortDirection : undefined\n };\n };\n NgTableParams.prototype.hasGlobalSearchFieldChanges = function () {\n var currentVal = (this._params.filter && this._params.filter['$']);\n var previousVal = (this.prevParamsMemento && this.prevParamsMemento.params.filter && this.prevParamsMemento.params.filter['$']);\n return !ng1.equals(currentVal, previousVal);\n };\n NgTableParams.prototype.log = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i - 0] = arguments[_i];\n }\n if (this._settings.debugMode && NgTableParams.$log.debug) {\n (_a = NgTableParams.$log).debug.apply(_a, args);\n }\n var _a;\n };\n NgTableParams.prototype.parseGroup = function (group) {\n var defaultSort = this._settings.groupOptions && this._settings.groupOptions.defaultSort;\n if (!group) {\n return group;\n }\n else if (util_1.isGroupingFun(group)) {\n if (group.sortDirection == null) {\n group.sortDirection = defaultSort;\n }\n return group;\n }\n else if (typeof group === 'object') {\n for (var key in group) {\n if (group[key] == null) {\n group[key] = defaultSort;\n }\n }\n return group;\n }\n else {\n return (_a = {},\n _a[group] = defaultSort,\n _a\n );\n }\n var _a;\n };\n NgTableParams.prototype.runInterceptorPipeline = function (fetchedData) {\n var _this = this;\n var interceptors = this._settings.interceptors || [];\n return interceptors.reduce(function (result, interceptor) {\n var thenFn = (interceptor.response && interceptor.response.bind(interceptor)) || NgTableParams.$q.when;\n var rejectFn = (interceptor.responseError && interceptor.responseError.bind(interceptor)) || NgTableParams.$q.reject;\n return result.then(function (data) {\n return thenFn(data, _this);\n }, function (reason) {\n return rejectFn(reason, _this);\n });\n }, fetchedData);\n };\n NgTableParams.init = function ($q, $log, ngTableDefaults, ngTableEventsChannel, ngTableSettings) {\n NgTableParams.$q = $q;\n NgTableParams.$log = $log;\n NgTableParams.ngTableDefaults = ngTableDefaults;\n NgTableParams.ngTableEventsChannel = ngTableEventsChannel;\n NgTableParams.ngTableSettings = ngTableSettings;\n };\n return NgTableParams;\n}());\nexports.NgTableParams = NgTableParams;\nNgTableParams.init.$inject = ['$q', '$log', 'ngTableDefaults', 'ngTableEventsChannel', 'ngTableSettings'];\n\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\"use strict\";\nvar ng1 = __webpack_require__(0);\n/**\n * @private\n */\nvar NgTableSettings = (function () {\n function NgTableSettings(ngTableDefaults, ngTableDefaultGetData, ngTableDefaultGetGroups) {\n var _this = this;\n this.ngTableDefaults = ngTableDefaults;\n this.ngTableDefaultGetData = ngTableDefaultGetData;\n this.ngTableDefaultGetGroups = ngTableDefaultGetGroups;\n this.defaults = {\n $loading: false,\n dataset: null,\n total: 0,\n defaultSort: 'desc',\n counts: [10, 25, 50, 100],\n filterOptions: {\n filterComparator: undefined,\n filterDelay: 500,\n filterDelayThreshold: 10000,\n filterFilterName: undefined,\n filterFn: undefined,\n filterLayout: 'stack'\n },\n getData: function (params) {\n return _this.ngTableDefaultGetData(params.settings().dataset, params);\n },\n getGroups: this.ngTableDefaultGetGroups,\n groupOptions: {\n defaultSort: 'asc',\n isExpanded: true\n },\n interceptors: [],\n paginationMaxBlocks: 11,\n paginationMinBlocks: 5,\n sortingIndicator: 'span'\n };\n }\n NgTableSettings.prototype.createDefaults = function () {\n return this.merge(this.defaults, this.ngTableDefaults.settings);\n };\n NgTableSettings.prototype.merge = function (existing, newSettings) {\n newSettings = ng1.extend({}, newSettings);\n if (newSettings.filterOptions) {\n newSettings.filterOptions = ng1.extend({}, existing.filterOptions || {}, newSettings.filterOptions);\n }\n if (newSettings.groupOptions) {\n newSettings.groupOptions = ng1.extend({}, existing.groupOptions || {}, newSettings.groupOptions);\n }\n if (ng1.isArray(newSettings.dataset)) {\n //auto-set the total from passed in dataset\n newSettings.total = newSettings.dataset.length;\n }\n var results = ng1.extend({}, existing, newSettings);\n if (ng1.isArray(newSettings.dataset)) {\n this.optimizeFilterDelay(results);\n }\n return ng1.extend({}, existing, newSettings);\n };\n NgTableSettings.prototype.optimizeFilterDelay = function (settings) {\n // don't debounce by default filter input when working with small synchronous datasets\n if (settings.filterOptions.filterDelay === this.defaults.filterOptions.filterDelay &&\n settings.total <= settings.filterOptions.filterDelayThreshold &&\n settings.getData === this.defaults.getData) {\n settings.filterOptions.filterDelay = 0;\n }\n };\n NgTableSettings.$inject = ['ngTableDefaults', 'ngTableDefaultGetData', 'ngTableDefaultGetGroups'];\n return NgTableSettings;\n}());\nexports.NgTableSettings = NgTableSettings;\n\n\n/***/ },\n/* 11 */\n/***/ function(module, exports) {\n\n\"use strict\";\n\"use strict\";\n/**\n * @private\n */\nfunction convertSortToOrderBy(sorting) {\n var result = [];\n for (var column in sorting) {\n result.push((sorting[column] === \"asc\" ? \"+\" : \"-\") + column);\n }\n return result;\n}\nexports.convertSortToOrderBy = convertSortToOrderBy;\n/**\n * @private\n */\nfunction isGroupingFun(val) {\n return typeof val === 'function';\n}\nexports.isGroupingFun = isGroupingFun;\n\n\n/***/ },\n/* 12 */,\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\"use strict\";\nvar ng1 = __webpack_require__(0);\nngTable.$inject = ['$q', '$parse'];\n/**\n * Directive that instantiates {@link NgTableController NgTableController}.\n * @ngdoc directive\n * @name ngTable\n * @example\n *\n * ```html\n * \n * \n * \n * \n * \n *
\n * {{user.name}}\n * \n * {{user.age}}\n *
\n * ```\n */\nfunction ngTable($q, $parse) {\n return {\n restrict: 'A',\n priority: 1001,\n scope: true,\n controller: 'ngTableController',\n compile: function (element) {\n var columns = [], i = 0, dataRow, groupRow;\n var rows = [];\n ng1.forEach(element.find('tr'), function (tr) {\n rows.push(ng1.element(tr));\n });\n dataRow = rows.filter(function (tr) { return !tr.hasClass('ng-table-group'); })[0];\n groupRow = rows.filter(function (tr) { return tr.hasClass('ng-table-group'); })[0];\n if (!dataRow) {\n return undefined;\n }\n ng1.forEach(dataRow.find('td'), function (item) {\n var el = ng1.element(item);\n if (el.attr('ignore-cell') && 'true' === el.attr('ignore-cell')) {\n return;\n }\n var getAttrValue = function (attr) {\n return el.attr('x-data-' + attr) || el.attr('data-' + attr) || el.attr(attr);\n };\n var setAttrValue = function (attr, value) {\n if (el.attr('x-data-' + attr)) {\n el.attr('x-data-' + attr, value);\n }\n else if (el.attr('data' + attr)) {\n el.attr('data' + attr, value);\n }\n else {\n el.attr(attr, value);\n }\n };\n var parsedAttribute = function (attr) {\n var expr = getAttrValue(attr);\n if (!expr) {\n return undefined;\n }\n var localValue;\n var getter = function (context) {\n if (localValue !== undefined) {\n return localValue;\n }\n return $parse(expr)(context);\n };\n getter.assign = function ($scope, value) {\n var parsedExpr = $parse(expr);\n if (parsedExpr.assign) {\n // we should be writing back to the parent scope as this is where the expression\n // came from\n parsedExpr.assign($scope.$parent, value);\n }\n else {\n localValue = value;\n }\n };\n return getter;\n };\n var titleExpr = getAttrValue('title-alt') || getAttrValue('title');\n if (titleExpr) {\n el.attr('data-title-text', '{{' + titleExpr + '}}'); // this used in responsive table\n }\n // NOTE TO MAINTAINERS: if you add extra fields to a $column be sure to extend ngTableColumn with\n // a corresponding \"safe\" default\n columns.push({\n id: i++,\n title: parsedAttribute('title'),\n titleAlt: parsedAttribute('title-alt'),\n headerTitle: parsedAttribute('header-title'),\n sortable: parsedAttribute('sortable'),\n 'class': parsedAttribute('header-class'),\n filter: parsedAttribute('filter'),\n groupable: parsedAttribute('groupable'),\n headerTemplateURL: parsedAttribute('header'),\n filterData: parsedAttribute('filter-data'),\n show: el.attr(\"ng-if\") ? parsedAttribute('ng-if') : undefined\n });\n if (groupRow || el.attr(\"ng-if\")) {\n // change ng-if to bind to our column definition which we know will be writable\n // because this will potentially increase the $watch count, only do so if we already have an\n // ng-if or when we definitely need to change visibility of the columns.\n // currently only ngTableGroupRow directive needs to change visibility\n setAttrValue('ng-if', '$columns[' + (columns.length - 1) + '].show(this)');\n }\n });\n return function (scope, element, attrs, controller) {\n scope.$columns = columns = controller.buildColumns(columns);\n controller.setupBindingsToInternalScope(attrs.ngTable);\n controller.loadFilterData(columns);\n controller.compileDirectiveTemplates();\n };\n }\n };\n}\nexports.ngTable = ngTable;\n\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\"use strict\";\nvar ng1 = __webpack_require__(0);\n/**\n * @private\n */\nfunction isScopeLike(object) {\n return object != null && ng1.isFunction(object.$new);\n}\n/**\n * @private\n * Service to construct a $column definition used by {@link ngTable ngTable} directive\n */\nvar NgTableColumn = (function () {\n function NgTableColumn() {\n }\n /**\n * Creates a $column for use within a header template\n *\n * @param column the initial definition for $column to build\n * @param defaultScope the $scope to supply to the $column getter methods when not supplied by caller\n * @param columns a reference to the $columns array to make available on the context supplied to the\n * $column getter methods\n */\n NgTableColumn.prototype.buildColumn = function (column, defaultScope, columns) {\n // note: we're not modifying the original column object. This helps to avoid unintended side affects\n var extendedCol = Object.create(column);\n var defaults = this.createDefaults();\n var _loop_1 = function(prop) {\n if (extendedCol[prop] === undefined) {\n extendedCol[prop] = defaults[prop];\n }\n if (!ng1.isFunction(extendedCol[prop])) {\n // wrap raw field values with \"getter\" functions\n // - this is to ensure consistency with how ngTable.compile builds columns\n // - note that the original column object is being \"proxied\"; this is important\n // as it ensure that any changes to the original object will be returned by the \"getter\"\n var getterSetter = function getterSetter() {\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\n getterSetter.assign(null, arguments[0]);\n }\n else {\n return column[prop];\n }\n };\n getterSetter.assign = function ($scope, value) {\n column[prop] = value;\n };\n extendedCol[prop] = getterSetter;\n }\n // satisfy the arguments expected by the function returned by parsedAttribute in the ngTable directive\n var getterFn = extendedCol[prop];\n extendedCol[prop] = function () {\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\n getterFn.assign(defaultScope, arguments[0]);\n }\n else {\n var scope = arguments[0] || defaultScope;\n var context = Object.create(scope);\n ng1.extend(context, {\n $column: extendedCol,\n $columns: columns\n });\n return getterFn.call(column, context);\n }\n };\n if (getterFn.assign) {\n extendedCol[prop].assign = getterFn.assign;\n }\n else {\n var wrappedGetterFn_1 = extendedCol[prop];\n var localValue_1;\n var getterSetter = function getterSetter() {\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\n getterSetter.assign(null, arguments[0]);\n }\n else {\n return localValue_1 != undefined ? localValue_1 : wrappedGetterFn_1.apply(extendedCol, arguments);\n }\n };\n getterSetter.assign = function ($scope, value) {\n localValue_1 = value;\n };\n extendedCol[prop] = getterSetter;\n }\n };\n for (var prop in defaults) {\n _loop_1(prop);\n }\n return extendedCol;\n };\n NgTableColumn.prototype.createDefaults = function () {\n return {\n 'class': this.createGetterSetter(''),\n filter: this.createGetterSetter(false),\n groupable: this.createGetterSetter(false),\n filterData: ng1.noop,\n headerTemplateURL: this.createGetterSetter(false),\n headerTitle: this.createGetterSetter(''),\n sortable: this.createGetterSetter(false),\n show: this.createGetterSetter(true),\n title: this.createGetterSetter(''),\n titleAlt: this.createGetterSetter('')\n };\n };\n NgTableColumn.prototype.createGetterSetter = function (initialValue) {\n var value = initialValue;\n var getterSetter = function getterSetter() {\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\n getterSetter.assign(null, arguments[0]);\n }\n else {\n return value;\n }\n };\n getterSetter.assign = function ($scope, newValue) {\n value = newValue;\n };\n return getterSetter;\n };\n NgTableColumn.$inject = [];\n return NgTableColumn;\n}());\nexports.NgTableColumn = NgTableColumn;\n\n\n/***/ },\n/* 15 */\n/***/ function(module, exports) {\n\n\"use strict\";\n/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\"use strict\";\nngTableColumnsBinding.$inject = [\"$parse\"];\n/**\n * One-way data binds the $columns array generated by ngTable/ngTableDynamic to the specified\n * expression.\n * This allows the $columns array created for the table to be accessed outside of the html table\n * markup.\n *\n * @ngdoc directive\n *\n * @example\n * ```html\n * \n * ```\n */\nfunction ngTableColumnsBinding($parse) {\n var directive = {\n restrict: 'A',\n link: linkFn\n };\n return directive;\n function linkFn($scope, $element, $attrs) {\n var setter = $parse($attrs.ngTableColumnsBinding).assign;\n if (setter) {\n $scope.$watch('$columns', function (newColumns) {\n var shallowClone = (newColumns || []).slice(0);\n setter($scope, shallowClone);\n });\n }\n }\n}\nexports.ngTableColumnsBinding = ngTableColumnsBinding;\n\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\"use strict\";\nvar ng1 = __webpack_require__(0);\nvar core_1 = __webpack_require__(1);\n/**\n * The controller for the {@link ngTable ngTable} and {@link ngTableDynamic ngTableDynamic} directives\n */\nvar NgTableController = (function () {\n function NgTableController($scope, $timeout, $parse, $compile, $attrs, $element, $document, ngTableColumn, ngTableEventsChannel) {\n this.$scope = $scope;\n this.$parse = $parse;\n this.$compile = $compile;\n this.$attrs = $attrs;\n this.$element = $element;\n this.$document = $document;\n this.ngTableColumn = ngTableColumn;\n this.ngTableEventsChannel = ngTableEventsChannel;\n var isFirstTimeLoad = true;\n $scope.$filterRow = { disabled: false };\n $scope.$loading = false;\n // until such times as the directive uses an isolated scope, we need to ensure that the check for\n // the params field only consults the \"own properties\" of the $scope. This is to avoid seeing the params\n // field on a $scope higher up in the prototype chain\n if (!$scope.hasOwnProperty(\"params\")) {\n $scope.params = new core_1.NgTableParams(true);\n }\n this.delayFilter = (function () {\n var timer;\n return function (callback, ms) {\n $timeout.cancel(timer);\n timer = $timeout(callback, ms);\n };\n })();\n // watch for when a new NgTableParams is bound to the scope\n // CRITICAL: the watch must be for reference and NOT value equality; this is because NgTableParams maintains\n // the current data page as a field. Checking this for value equality would be terrible for performance\n // and potentially cause an error if the items in that array has circular references\n this.$scope.$watch('params', function (newParams, oldParams) {\n if (newParams === oldParams || !newParams) {\n return;\n }\n newParams.reload();\n }, false);\n this.subscribeToTableEvents();\n }\n Object.defineProperty(NgTableController.prototype, \"hasVisibleFilterColumn\", {\n get: function () {\n var _this = this;\n if (!this.$scope.$columns)\n return false;\n return this.some(this.$scope.$columns, function ($column) {\n return $column.show(_this.$scope) && !!$column.filter(_this.$scope);\n });\n },\n enumerable: true,\n configurable: true\n });\n NgTableController.prototype.onDataReloadStatusChange = function (newStatus /*, oldStatus*/) {\n if (!newStatus || this.$scope.params.hasErrorState()) {\n return;\n }\n var currentParams = this.$scope.params;\n var filterOptions = currentParams.settings().filterOptions;\n if (currentParams.hasFilterChanges()) {\n var applyFilter = function () {\n currentParams.page(1);\n currentParams.reload();\n };\n if (filterOptions.filterDelay) {\n this.delayFilter(applyFilter, filterOptions.filterDelay);\n }\n else {\n applyFilter();\n }\n }\n else {\n currentParams.reload();\n }\n };\n NgTableController.prototype.compileDirectiveTemplates = function () {\n if (!this.$element.hasClass('ng-table')) {\n this.$scope.templates = {\n header: (this.$attrs.templateHeader ? this.$attrs.templateHeader : 'ng-table/header.html'),\n pagination: (this.$attrs.templatePagination ? this.$attrs.templatePagination : 'ng-table/pager.html')\n };\n this.$element.addClass('ng-table');\n var headerTemplate = null;\n // $element.find('> thead').length === 0 doesn't work on jqlite\n var theadFound_1 = false;\n ng1.forEach(this.$element.children(), function (e) {\n if (e.tagName === 'THEAD') {\n theadFound_1 = true;\n }\n });\n if (!theadFound_1) {\n headerTemplate = ng1.element('', this.$document);\n this.$element.prepend(headerTemplate);\n }\n var paginationTemplate = ng1.element('
', this.$document);\n this.$element.after(paginationTemplate);\n if (headerTemplate) {\n this.$compile(headerTemplate)(this.$scope);\n }\n this.$compile(paginationTemplate)(this.$scope);\n }\n };\n NgTableController.prototype.loadFilterData = function ($columns) {\n var _this = this;\n ng1.forEach($columns, function ($column) {\n var result = $column.filterData(_this.$scope);\n if (!result) {\n delete $column.filterData;\n return undefined;\n }\n if (isPromiseLike(result)) {\n delete $column.filterData;\n return result.then(function (data) {\n // our deferred can eventually return arrays, functions and objects\n if (!ng1.isArray(data) && !ng1.isFunction(data) && !ng1.isObject(data)) {\n // if none of the above was found - we just want an empty array\n data = [];\n }\n $column.data = data;\n });\n }\n else {\n return $column.data = result;\n }\n });\n function isPromiseLike(val) {\n return val && typeof val === 'object' && typeof val.then === 'function';\n }\n };\n NgTableController.prototype.buildColumns = function (columns) {\n var _this = this;\n // todo: use strictNullChecks and remove guard clause\n var result = [];\n (columns || []).forEach(function (col) {\n result.push(_this.ngTableColumn.buildColumn(col, _this.$scope, result));\n });\n return result;\n };\n NgTableController.prototype.parseNgTableDynamicExpr = function (attr) {\n if (!attr || attr.indexOf(\" with \") > -1) {\n var parts = attr.split(/\\s+with\\s+/);\n return {\n tableParams: parts[0],\n columns: parts[1]\n };\n }\n else {\n throw new Error('Parse error (expected example: ng-table-dynamic=\\'tableParams with cols\\')');\n }\n };\n NgTableController.prototype.setupBindingsToInternalScope = function (tableParamsExpr) {\n // note: this we're setting up watches to simulate angular's isolated scope bindings\n var _this = this;\n // note: is REALLY important to watch for a change to the ngTableParams *reference* rather than\n // $watch for value equivalence. This is because ngTableParams references the current page of data as\n // a field and it's important not to watch this\n this.$scope.$watch(tableParamsExpr, function (params) {\n if (params === undefined) {\n return;\n }\n _this.$scope.params = params;\n }, false);\n this.setupFilterRowBindingsToInternalScope();\n this.setupGroupRowBindingsToInternalScope();\n };\n NgTableController.prototype.setupFilterRowBindingsToInternalScope = function () {\n var _this = this;\n if (this.$attrs.showFilter) {\n this.$scope.$parent.$watch(this.$attrs.showFilter, function (value) {\n _this.$scope.show_filter = value;\n });\n }\n else {\n this.$scope.$watch(function () { return _this.hasVisibleFilterColumn; }, function (value) {\n _this.$scope.show_filter = value;\n });\n }\n if (this.$attrs.disableFilter) {\n this.$scope.$parent.$watch(this.$attrs.disableFilter, function (value) {\n _this.$scope.$filterRow.disabled = value;\n });\n }\n };\n NgTableController.prototype.setupGroupRowBindingsToInternalScope = function () {\n var _this = this;\n this.$scope.$groupRow = { show: false };\n if (this.$attrs.showGroup) {\n var showGroupGetter_1 = this.$parse(this.$attrs.showGroup);\n this.$scope.$parent.$watch(showGroupGetter_1, function (value) {\n _this.$scope.$groupRow.show = value;\n });\n if (showGroupGetter_1.assign) {\n // setup two-way databinding thus allowing ngTableGrowRow to assign to the showGroup expression\n this.$scope.$watch('$groupRow.show', function (value) {\n showGroupGetter_1.assign(_this.$scope.$parent, value);\n });\n }\n }\n else {\n this.$scope.$watch('params.hasGroup()', function (newValue) {\n _this.$scope.$groupRow.show = newValue;\n });\n }\n };\n NgTableController.prototype.getVisibleColumns = function () {\n var _this = this;\n return (this.$scope.$columns || []).filter(function (c) {\n return c.show(_this.$scope);\n });\n };\n NgTableController.prototype.subscribeToTableEvents = function () {\n var _this = this;\n this.$scope.$watch('params.isDataReloadRequired()', function (newStatus /*, oldStatus*/) {\n _this.onDataReloadStatusChange(newStatus);\n });\n this.ngTableEventsChannel.onAfterReloadData(function (params, newDatapage) {\n var visibleColumns = _this.getVisibleColumns();\n if (params.hasGroup()) {\n _this.$scope.$groups = (newDatapage || []);\n _this.$scope.$groups.visibleColumnCount = visibleColumns.length;\n }\n else {\n _this.$scope.$data = (newDatapage || []);\n _this.$scope.$data.visibleColumnCount = visibleColumns.length;\n }\n }, this.$scope, function (publisher) { return _this.$scope.params === publisher; });\n this.ngTableEventsChannel.onPagesChanged(function (params, newPages) {\n _this.$scope.pages = newPages;\n }, this.$scope, function (publisher) { return _this.$scope.params === publisher; });\n };\n NgTableController.prototype.some = function (array, predicate) {\n var found = false;\n for (var i = 0; i < array.length; i++) {\n var obj = array[i];\n if (predicate(obj)) {\n found = true;\n break;\n }\n }\n return found;\n };\n NgTableController.$inject = [\n '$scope', '$timeout', '$parse', '$compile', '$attrs', '$element', '$document', 'ngTableColumn', 'ngTableEventsChannel'\n ];\n return NgTableController;\n}());\nexports.NgTableController = NgTableController;\n\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\"use strict\";\nvar ng1 = __webpack_require__(0);\nngTableDynamic.$inject = [];\n/**\n * A dynamic version of the {@link ngTable ngTable} directive that accepts a dynamic list of columns\n * definitions to render\n * @ngdoc directive\n *\n * @example\n * ```html\n *
\n * \n * \n * \n *
{{row[col.field]}}
\n * ```\n */\nfunction ngTableDynamic() {\n return {\n restrict: 'A',\n priority: 1001,\n scope: true,\n controller: 'ngTableController',\n compile: function (tElement) {\n var row;\n // IE 8 fix :not(.ng-table-group) selector\n ng1.forEach(tElement.find('tr'), function (tr) {\n tr = ng1.element(tr);\n if (!tr.hasClass('ng-table-group') && !row) {\n row = tr;\n }\n });\n if (!row) {\n return undefined;\n }\n ng1.forEach(row.find('td'), function (item) {\n var el = ng1.element(item);\n var getAttrValue = function (attr) {\n return el.attr('x-data-' + attr) || el.attr('data-' + attr) || el.attr(attr);\n };\n // this used in responsive table\n var titleExpr = getAttrValue('title');\n if (!titleExpr) {\n el.attr('data-title-text', '{{$columns[$index].titleAlt(this) || $columns[$index].title(this)}}');\n }\n var showExpr = el.attr('ng-if');\n if (!showExpr) {\n el.attr('ng-if', '$columns[$index].show(this)');\n }\n });\n return function (scope, element, attrs, controller) {\n var expr = controller.parseNgTableDynamicExpr(attrs.ngTableDynamic);\n controller.setupBindingsToInternalScope(expr.tableParams);\n controller.compileDirectiveTemplates();\n scope.$watchCollection(expr.columns, function (newCols /*, oldCols*/) {\n scope.$columns = controller.buildColumns(newCols);\n controller.loadFilterData(scope.$columns);\n });\n };\n }\n };\n}\nexports.ngTableDynamic = ngTableDynamic;\n\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\"use strict\";\nvar ng1 = __webpack_require__(0);\n/**\n * The angular provider used to configure the behaviour of the `NgTableFilterConfig` service.\n */\nvar NgTableFilterConfigProvider = (function () {\n function NgTableFilterConfigProvider($injector) {\n var _this = this;\n this.defaultConfig = {\n defaultBaseUrl: 'ng-table/filters/',\n defaultExt: '.html',\n aliasUrls: {}\n };\n this.$get = function () {\n return $injector.instantiate(NgTableFilterConfig, { config: ng1.copy(_this.config) });\n };\n this.$get.$inject = [];\n this.resetConfigs();\n }\n /**\n * Reset back to factory defaults the config values that `NgTableFilterConfig` service will use\n */\n NgTableFilterConfigProvider.prototype.resetConfigs = function () {\n this.config = this.defaultConfig;\n };\n /**\n * Set the config values used by `NgTableFilterConfig` service\n */\n NgTableFilterConfigProvider.prototype.setConfig = function (customConfig) {\n var mergeConfig = ng1.extend({}, this.config, customConfig);\n mergeConfig.aliasUrls = ng1.extend({}, this.config.aliasUrls, customConfig.aliasUrls);\n this.config = mergeConfig;\n };\n NgTableFilterConfigProvider.$inject = ['$injector'];\n return NgTableFilterConfigProvider;\n}());\nexports.NgTableFilterConfigProvider = NgTableFilterConfigProvider;\n/**\n * Exposes configuration values and methods used to return the location of the html\n * templates used to render the filter row of an ng-table directive\n */\nvar NgTableFilterConfig = (function () {\n function NgTableFilterConfig(\n /**\n * Readonly copy of the final values used to configure the service.\n */\n config) {\n this.config = config;\n }\n /**\n * Return the url of the html filter template registered with the alias supplied\n */\n NgTableFilterConfig.prototype.getUrlForAlias = function (aliasName, filterKey) {\n return this.config.aliasUrls[aliasName] || this.config.defaultBaseUrl + aliasName + this.config.defaultExt;\n };\n /**\n * Return the url of the html filter template for the supplied definition and key.\n * For more information see the documentation for {@link IFilterTemplateMap}\n */\n NgTableFilterConfig.prototype.getTemplateUrl = function (filterDef, filterKey) {\n var filterName;\n if (typeof filterDef !== 'string') {\n filterName = filterDef.id;\n }\n else {\n filterName = filterDef;\n }\n if (filterName.indexOf('/') !== -1) {\n return filterName;\n }\n return this.getUrlForAlias(filterName, filterKey);\n };\n NgTableFilterConfig.$inject = ['config'];\n return NgTableFilterConfig;\n}());\nexports.NgTableFilterConfig = NgTableFilterConfig;\n\n\n/***/ },\n/* 19 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\"use strict\";\nvar templateUrl = __webpack_require__(42);\nngTableFilterRow.$inject = [];\n/**\n * directive that renders the filter header row for a table\n * @ngdoc directive\n * @example\n * ```html\n * \n * ```\n */\nfunction ngTableFilterRow() {\n var directive = {\n restrict: 'E',\n replace: true,\n templateUrl: templateUrl,\n scope: true,\n controller: 'ngTableFilterRowController',\n controllerAs: '$ctrl'\n };\n return directive;\n}\nexports.ngTableFilterRow = ngTableFilterRow;\n\n\n/***/ },\n/* 20 */\n/***/ function(module, exports) {\n\n\"use strict\";\n/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\"use strict\";\n/**\n * Controller for the {@link ngTableFilterRow ngTableFilterRow} directive\n */\nvar NgTableFilterRowController = (function () {\n function NgTableFilterRowController($scope, ngTableFilterConfig) {\n this.config = ngTableFilterConfig;\n // todo: stop doing this. Why?\n // * scope inheritance makes it hard to know how supplies functions\n // * scope is not a concept in angular 2\n // make function available to filter templates\n $scope.getFilterPlaceholderValue = this.getFilterPlaceholderValue.bind(this);\n }\n NgTableFilterRowController.prototype.getFilterCellCss = function (filter, layout) {\n if (layout !== 'horizontal') {\n return 's12';\n }\n var size = Object.keys(filter).length;\n var width = parseInt((12 / size).toString(), 10);\n return 's' + width;\n };\n NgTableFilterRowController.prototype.getFilterPlaceholderValue = function (filterDef, filterKey) {\n if (typeof filterDef === 'string') {\n return '';\n }\n else {\n return filterDef.placeholder;\n }\n };\n NgTableFilterRowController.$inject = ['$scope', 'ngTableFilterConfig'];\n return NgTableFilterRowController;\n}());\nexports.NgTableFilterRowController = NgTableFilterRowController;\n\n\n/***/ },\n/* 21 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\"use strict\";\nvar templateUrl = __webpack_require__(47);\nngTableGroupRow.$inject = [];\n/**\n * directive that renders the group header row for a table\n * @ngdoc directive\n * @example\n * ```html\n * \n * ```\n */\nfunction ngTableGroupRow() {\n var directive = {\n restrict: 'E',\n replace: true,\n templateUrl: templateUrl,\n scope: true,\n controller: 'ngTableGroupRowController',\n controllerAs: '$ctrl'\n };\n return directive;\n}\nexports.ngTableGroupRow = ngTableGroupRow;\n\n\n/***/ },\n/* 22 */\n/***/ function(module, exports) {\n\n\"use strict\";\n/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\"use strict\";\n/**\n * Controller for the {@link ngTableGroupRow ngTableGroupRow} directive\n */\nvar NgTableGroupRowController = (function () {\n function NgTableGroupRowController($scope) {\n var _this = this;\n this.$scope = $scope;\n this.groupFns = [];\n $scope.$watch('params.group()', function (newGrouping) {\n _this.setGroup(newGrouping);\n }, true);\n }\n NgTableGroupRowController.prototype.getGroupables = function () {\n var _this = this;\n var groupableCols = this.$scope.$columns.filter(function ($column) { return !!$column.groupable(_this.$scope); });\n return this.groupFns.concat(groupableCols);\n };\n NgTableGroupRowController.prototype.getGroupTitle = function (group) {\n return this.isGroupingFunc(group) ? group.title : group.title(this.$scope);\n };\n NgTableGroupRowController.prototype.getVisibleColumns = function () {\n var _this = this;\n return this.$scope.$columns.filter(function ($column) { return $column.show(_this.$scope); });\n };\n NgTableGroupRowController.prototype.groupBy = function (group) {\n if (this.isSelectedGroup(group)) {\n this.changeSortDirection();\n }\n else {\n if (this.isGroupingFunc(group)) {\n this.$scope.params.group(group);\n }\n else {\n // it's OK, we know that groupable will return a string\n // this is guaranteed by getGroupables returning only\n // columns that return (truthy) strings\n this.$scope.params.group(group.groupable(this.$scope));\n }\n }\n };\n NgTableGroupRowController.prototype.isSelectedGroup = function (group) {\n if (this.isGroupingFunc(group)) {\n return group === this.$scope.$selGroup;\n }\n else {\n return group.groupable(this.$scope) === this.$scope.$selGroup;\n }\n };\n NgTableGroupRowController.prototype.toggleDetail = function () {\n this.$scope.params.settings().groupOptions.isExpanded = !this.$scope.params.settings().groupOptions.isExpanded;\n return this.$scope.params.reload();\n };\n NgTableGroupRowController.prototype.changeSortDirection = function () {\n var newDirection;\n if (this.$scope.params.hasGroup(this.$scope.$selGroup, 'asc')) {\n newDirection = 'desc';\n }\n else if (this.$scope.params.hasGroup(this.$scope.$selGroup, 'desc')) {\n newDirection = '';\n }\n else {\n newDirection = 'asc';\n }\n this.$scope.params.group(this.$scope.$selGroup, newDirection);\n };\n NgTableGroupRowController.prototype.findGroupColumn = function (groupKey) {\n var _this = this;\n return this.$scope.$columns.filter(function ($column) { return $column.groupable(_this.$scope) === groupKey; })[0];\n };\n NgTableGroupRowController.prototype.isGroupingFunc = function (val) {\n return typeof val === 'function';\n };\n NgTableGroupRowController.prototype.setGroup = function (grouping) {\n var existingGroupCol = this.findGroupColumn(this.$scope.$selGroup);\n if (existingGroupCol && existingGroupCol.show.assign) {\n existingGroupCol.show.assign(this.$scope, true);\n }\n if (this.isGroupingFunc(grouping)) {\n this.groupFns = [grouping];\n this.$scope.$selGroup = grouping;\n this.$scope.$selGroupTitle = grouping.title;\n }\n else {\n // note: currently only one group is implemented\n var groupKey = Object.keys(grouping || {})[0];\n var groupedColumn = this.findGroupColumn(groupKey);\n if (groupedColumn) {\n this.$scope.$selGroupTitle = groupedColumn.title(this.$scope);\n this.$scope.$selGroup = groupKey;\n if (groupedColumn.show.assign) {\n groupedColumn.show.assign(this.$scope, false);\n }\n }\n }\n };\n NgTableGroupRowController.$inject = ['$scope'];\n return NgTableGroupRowController;\n}());\nexports.NgTableGroupRowController = NgTableGroupRowController;\n\n\n/***/ },\n/* 23 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\"use strict\";\nvar ng1 = __webpack_require__(0);\nngTablePagination.$inject = ['$compile', '$document', 'ngTableEventsChannel'];\n/**\n * Directive that renders the table pagination controls\n * @ngdoc directive\n */\nfunction ngTablePagination($compile, $document, ngTableEventsChannel) {\n return {\n restrict: 'A',\n scope: {\n 'params': '=ngTablePagination',\n 'templateUrl': '='\n },\n replace: false,\n link: function (scope, element /*, attrs*/) {\n ngTableEventsChannel.onAfterReloadData(function (pubParams) {\n scope.pages = pubParams.generatePagesArray();\n }, scope, function (pubParams) {\n return pubParams === scope.params;\n });\n scope.$watch('templateUrl', function (templateUrl) {\n if (templateUrl === undefined) {\n return;\n }\n var template = ng1.element('
', $document);\n element.append(template);\n $compile(template)(scope);\n });\n }\n };\n}\nexports.ngTablePagination = ngTablePagination;\n\n\n/***/ },\n/* 24 */\n/***/ function(module, exports) {\n\n\"use strict\";\n/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\"use strict\";\nngTableSelectFilterDs.$inject = [];\n/**\n * Takes the array returned by $column.filterData and makes it available as `$selectData` on the `$scope`.\n *\n * The resulting `$selectData` array will contain an extra item that is suitable to represent the user\n * \"deselecting\" an item from a ` \";\nvar angular = __webpack_require__(0);\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n/***/ },\n/* 44 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar path = 'ng-table/filters/select-multiple.html';\nvar html = \" \";\nvar angular = __webpack_require__(0);\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n/***/ },\n/* 45 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar path = 'ng-table/filters/select.html';\nvar html = \" \";\nvar angular = __webpack_require__(0);\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n/***/ },\n/* 46 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar path = 'ng-table/filters/text.html';\nvar html = \" \";\nvar angular = __webpack_require__(0);\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n/***/ },\n/* 47 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar path = 'ng-table/groupRow.html';\nvar html = \" {{$selGroupTitle}} \";\nvar angular = __webpack_require__(0);\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n/***/ },\n/* 48 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar path = 'ng-table/header.html';\nvar html = \" \";\nvar angular = __webpack_require__(0);\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n/***/ },\n/* 49 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar path = 'ng-table/pager.html';\nvar html = \" \";\nvar angular = __webpack_require__(0);\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n/***/ },\n/* 50 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar path = 'ng-table/sorterRow.html';\nvar html = \"
\";\nvar angular = __webpack_require__(0);\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n/***/ },\n/* 51 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nvar ng1 = __webpack_require__(0);\nvar core_1 = __webpack_require__(1);\nvar browser_1 = __webpack_require__(2);\nvar ngTableModule = ng1.module('ngTable', [core_1.ngTableCoreModule.name, browser_1.ngTableBrowserModule.name]);\nexports.ngTableModule = ngTableModule;\n__export(__webpack_require__(1));\n__export(__webpack_require__(2));\n\n\n/***/ }\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// ng-table.min.js"," \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\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// identity function for calling harmory imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmory 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 = 51);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap f72b9990c4e9da3f352c","module.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"angular\"\n// module id = 0\n// module chunks = 0","import * as angular from 'angular';\nimport { NgTableDefaultGetDataProvider, IDefaultGetData } from './data';\nimport { IGroupSettings, ngTableDefaultGetGroups } from './grouping';\nimport { ngTableDefaults, IDefaults } from './ngTableDefaults';\nimport { NgTableSettings, ISettings } from './ngTableSettings';\nimport { NgTableParams } from './ngTableParams';\nimport { NgTableEventsChannel } from './ngTableEventsChannel';\n\nconst ngTableCoreModule = angular.module('ngTable-core', [])\n .provider('ngTableDefaultGetData', NgTableDefaultGetDataProvider)\n .factory('ngTableDefaultGetGroups', ngTableDefaultGetGroups)\n .value('ngTableDefaults',ngTableDefaults)\n .service('ngTableEventsChannel', NgTableEventsChannel)\n .service('ngTableSettings', NgTableSettings)\n .run(NgTableParams.init);\n\n// note: if you are using ES6 or typescript prefer:\n// import { NgTableParams } from 'ng-table';\nngTableCoreModule.value('NgTableParams', NgTableParams)\n\nexport { ngTableCoreModule };\n\nexport { IDefaults } from './ngTableDefaults';\nexport * from './ngTableEventsChannel';\nexport { ISettings } from './ngTableSettings';\nexport * from './ngTableParams';\nexport * from './data';\nexport * from './filtering';\nexport * from './grouping/publicExports';\nexport * from './paging';\nexport * from './sorting';\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/index.ts","import * as angular from 'angular';\nimport { ngTable } from './ngTable.directive';\nimport { NgTableColumn } from './ngTableColumn';\nimport { ngTableColumnsBinding } from './ngTableColumnsBinding.directive';\nimport { NgTableController } from './ngTableController';\nimport { ngTableDynamic } from './ngTableDynamic.directive';\nimport { NgTableFilterConfigProvider, NgTableFilterConfig } from './ngTableFilterConfig';\nimport { ngTableFilterRow } from './ngTableFilterRow.directive';\nimport { NgTableFilterRowController } from './ngTableFilterRowController';\nimport { ngTableGroupRow } from './ngTableGroupRow.directive';\nimport { NgTableGroupRowController } from './ngTableGroupRowController';\nimport { ngTablePagination } from './ngTablePagination.directive';\nimport { ngTableSelectFilterDs } from './ngTableSelectFilterDs.directive';\nimport { ngTableSorterRow } from './ngTableSorterRow.directive';\nimport { NgTableSorterRowController } from './ngTableSorterRowController';\nimport './filters/number.html';\nimport './filters/select.html';\nimport './filters/select-multiple.html';\nimport './filters/text.html';\nimport './pager.html';\nimport './header.html';\n\nconst ngTableBrowserModule = angular.module('ngTable-browser', [])\n .directive('ngTable', ngTable)\n .service('ngTableColumn', NgTableColumn)\n .directive('ngTableColumnsBinding', ngTableColumnsBinding)\n .controller('ngTableController', NgTableController)\n .directive('ngTableDynamic', ngTableDynamic)\n .provider('ngTableFilterConfig', NgTableFilterConfigProvider)\n .directive('ngTableFilterRow', ngTableFilterRow)\n .controller('ngTableFilterRowController', NgTableFilterRowController)\n .directive('ngTableGroupRow', ngTableGroupRow)\n .controller('ngTableGroupRowController', NgTableGroupRowController)\n .directive('ngTablePagination', ngTablePagination)\n .directive('ngTableSelectFilterDs', ngTableSelectFilterDs)\n .directive('ngTableSorterRow', ngTableSorterRow)\n .controller('ngTableSorterRowController', NgTableSorterRowController);\n\nexport * from './public-interfaces';\nexport { NgTableController, NgTableFilterConfigProvider, NgTableFilterConfig, ngTableBrowserModule };\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/index.ts","export * from './dataSettings';\nexport * from './getData';\nexport * from './interceptor';\nexport * from './ngTableDefaultGetData';\nexport * from './results';\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/data/index.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IParamValues } from './ngTableParams';\nimport { ISettings } from './ngTableSettings';\n\n\n/**\n * An angular value object that allow for overriding of the initial default values used when constructing\n * an instance of `NgTableParams`\n */\nexport interface IDefaults {\n params?: IParamValues;\n settings?: ISettings\n}\n\n/**\n * Default values for ngTable\n */\nexport let ngTableDefaults : IDefaults = {\n params: {},\n settings: {}\n};\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/ngTableDefaults.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport * as ng1 from 'angular';\nimport { IScope } from 'angular';\nimport { DataResult, IDefaultGetData } from './data';\nimport { IPageButton } from './paging';\nimport { InternalTableParams, NgTableParams } from './ngTableParams';\n\n\n/**\n * Alias for the types that can be used to filter events\n */\nexport type EventSelector = NgTableParams | IEventSelectorFunc\n\n/**\n * Signature of the event hander that is registered to receive the *afterCreated* event\n */\nexport interface IAfterCreatedListener {\n (publisher: NgTableParams): any\n}\n/**\n * Signature of the event hander that is registered to receive the *afterReloadData* event\n */\nexport interface IAfterReloadDataListener {\n (publisher: NgTableParams, newData: DataResult[], oldData: DataResult[]): any\n}\n/**\n * Signature of the event hander that is registered to receive the *datasetChanged* event\n */\nexport interface IDatasetChangedListener {\n (publisher: NgTableParams, newDataset: T[], oldDataset: T[]): any\n}\n/**\n * Signature of the function used to filter the events to only specific instances of \n * {@link NgTableParams}\n */\nexport interface IEventSelectorFunc {\n (publisher: NgTableParams): boolean\n}\n/**\n * Signature of the event hander that is registered to receive the *pagesChanged* event\n */\nexport interface IPagesChangedListener {\n (publisher: NgTableParams, newPages: IPageButton[], oldPages: IPageButton[]): any\n}\n/**\n* Signature of the event hander that is registered to receive the *afterDataFiltered* event\n*/\nexport interface IAfterDataFilteredListener {\n (publisher: NgTableParams, newData: DataResult[] ): any\n}\n/**\n* Signature of the event hander that is registered to receive the *afterDataSorted* event\n*/\nexport interface IAfterDataSortedListener {\n (publisher: NgTableParams, newData: DataResult[] ): any\n}\n\n/**\n * Signature of the function used to explicitly unregister an event handler so that it stops\n * receiving notifications\n */\nexport interface IUnregistrationFunc {\n (): void\n}\n\n/**\n * Strongly typed pub/sub for {@link NgTableParams}\n *\n * Supported events:\n *\n * * afterCreated - raised when a new instance of {@link NgTableParams} has finished being constructed\n * * afterReloadData - raised when the {@link NgTableParams} `reload` method has finished loading new data\n * * datasetChanged - raised when {@link ISettings} `dataset` receives a new data array\n * * pagesChanged - raised when a new pages array has been generated\n */\nexport interface NgTableEventsChannel {\n /**\n * Subscribe to receive notification whenever a new `NgTableParams` instance has finished being constructed.\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called. Supply a\n * `scope` to have angular automatically unregister the listener when the `scope` is destroyed.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterCreated(listener: IAfterCreatedListener, scope: IScope, eventFilter?: IEventSelectorFunc): IUnregistrationFunc;\n /**\n * Subscribe to receive notification whenever a new `NgTableParams` instance has finished being constructed.\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterCreated(listener: IAfterCreatedListener, eventFilter?: IEventSelectorFunc): IUnregistrationFunc;\n /**\n * Subscribe to receive notification whenever the `reload` method of an `NgTableParams` instance has successfully executed\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called. Supply a\n * `scope` to have angular automatically unregister the listener when the `scope` is destroyed.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter either the specific `NgTableParams` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterReloadData(listener: IAfterReloadDataListener, scope: IScope, eventFilter?: EventSelector): IUnregistrationFunc;\n /**\n * Subscribe to receive notification whenever the `reload` method of an `NgTableParams` instance has successfully executed\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterReloadData(listener: IAfterReloadDataListener, eventFilter?: EventSelector): IUnregistrationFunc;\n\n /**\n * Subscribe to receive notification whenever a new data rows *array* is supplied as a `settings` value to a `NgTableParams` instance.\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called. Supply a\n * `scope` to have angular automatically unregister the listener when the `scope` is destroyed.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter either the specific `NgTableParams` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onDatasetChanged(listener: IDatasetChangedListener, scope: IScope, eventFilter?: EventSelector): IUnregistrationFunc;\n /**\n * Subscribe to receive notification whenever a new data rows *array* is supplied as a `settings` value to a `NgTableParams` instance.\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter either the specific `NgTableParams` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onDatasetChanged(listener: IDatasetChangedListener, eventFilter?: EventSelector): IUnregistrationFunc;\n\n /**\n * Subscribe to receive notification whenever the paging buttons for an `NgTableParams` instance change\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called. Supply a\n * `scope` to have angular automatically unregister the listener when the `scope` is destroyed.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter either the specific `NgTableParams` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onPagesChanged(listener: IPagesChangedListener, scope: IScope, eventFilter?: EventSelector): IUnregistrationFunc;\n /**\n * Subscribe to receive notification whenever the paging buttons for an `NgTableParams` instance change\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter either the specific `NgTableParams` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onPagesChanged(listener: IPagesChangedListener, eventFilter?: EventSelector): IUnregistrationFunc;\n /**\n * Subscribe to receive notification whenever a `ngTableDefaultGetData` instance filters data\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter either the specific `IDefaultGetData` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterDataFiltered(listener: IAfterDataFilteredListener, scope: IScope, eventFilter?: EventSelector ): IUnregistrationFunc;\n /**\n * Subscribe to receive notification whenever a `ngTableDefaultGetData` instance filters data\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter either the specific `IDefaultGetData` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterDataFiltered(listener: IAfterDataFilteredListener, eventFilter?: EventSelector ): IUnregistrationFunc; \n /**\n * Subscribe to receive notification whenever a `ngTableDefaultGetData` instance orders data\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter either the specific `IDefaultGetData` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterDataSorted(listener: IAfterDataSortedListener, scope: IScope, eventFilter?: EventSelector ): IUnregistrationFunc;\n /**\n * Subscribe to receive notification whenever a `ngTableDefaultGetData` instance orders data\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter either the specific `IDefaultGetData` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterDataSorted(listener: IAfterDataSortedListener, eventFilter?: EventSelector ): IUnregistrationFunc;\n\n\n publishAfterCreated(publisher: NgTableParams): void;\n publishAfterReloadData(publisher: NgTableParams, newData: T[], oldData: T[]): void;\n publishDatasetChanged(publisher: NgTableParams, newDataset: T[], oldDataset: T[]): void;\n publishPagesChanged(publisher: NgTableParams, newPages: IPageButton[], oldPages: IPageButton[]): void;\n publishAfterDataFiltered(publisher: NgTableParams, newData: T[]): void;\n publishAfterDataSorted(params: NgTableParams, newData: T[]): void;\n}\n\nexport class NgTableEventsChannel {\n static $inject = ['$rootScope'];\n constructor(private $rootScope: ng1.IRootScopeService) {\n let events = this;\n events = this.addTableParamsEvent('afterCreated', events);\n events = this.addTableParamsEvent('afterReloadData', events);\n events = this.addTableParamsEvent('datasetChanged', events);\n events = this.addTableParamsEvent('pagesChanged', events);\n events = this.addTableParamsEvent('afterDataFiltered', events);\n events = this.addTableParamsEvent('afterDataSorted', events);\n }\n private addTableParamsEvent(eventName: string, target: {}) {\n const fnName = eventName.charAt(0).toUpperCase() + eventName.substring(1);\n const event = {\n ['on' + fnName]: this.createEventSubscriptionFn(eventName),\n ['publish' + fnName]: this.createPublishEventFn(eventName)\n };\n return ng1.extend(target, event);\n }\n private createPublishEventFn(eventName: string) {\n return (...args: any[]) => {\n this.$rootScope.$broadcast('ngTable:' + eventName, ...args);\n }\n }\n private createEventSubscriptionFn(eventName: string) {\n\n return (\n handler: (...args: any[]) => void,\n eventSelectorOrScope: EventSelector | ng1.IScope,\n eventSelector?: EventSelector) => {\n\n let actualEvtSelector: (publisher: NgTableParams) => boolean;\n let scope: ng1.IScope = this.$rootScope;\n\n if (isScopeLike(eventSelectorOrScope)) {\n scope = eventSelectorOrScope;\n actualEvtSelector = createEventSelectorFn(eventSelector);\n } else {\n actualEvtSelector = createEventSelectorFn(eventSelectorOrScope);\n }\n\n return scope.$on('ngTable:' + eventName, function (event: ng1.IAngularEvent, params: InternalTableParams, ...eventArgs: any[]) {\n // don't send events published by the internal NgTableParams created by ngTableController\n if (params.isNullInstance) return;\n\n const fnArgs = [params].concat(eventArgs);\n if (actualEvtSelector.apply(this, fnArgs)) {\n handler.apply(this, fnArgs);\n }\n });\n }\n\n function createEventSelectorFn(eventSelector: EventSelector): (publisher: NgTableParams) => boolean {\n if (!eventSelector) {\n return (publisher: NgTableParams) => true;\n } else if (isEventSelectorFunc(eventSelector)) {\n return eventSelector\n } else {\n // shorthand for subscriber to only receive events from a specific publisher instance\n return (publisher: NgTableParams) => publisher === eventSelector;\n }\n }\n\n function isEventSelectorFunc(val: EventSelector): val is (publisher: NgTableParams) => boolean {\n return typeof val === 'function';\n }\n\n function isScopeLike(val: any): val is ng1.IScope {\n return val && typeof val.$new === 'function';\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/ngTableEventsChannel.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport * as ng1 from 'angular';\nimport { IPromise } from 'angular';\nimport { convertSortToOrderBy, isGroupingFun } from './util';\nimport { IDefaults } from './ngTableDefaults'\nimport { NgTableEventsChannel } from './ngTableEventsChannel'\nimport { NgTableSettings, ISettings } from './ngTableSettings'\nimport { DataResult, IDataRowGroup, IGetDataFunc } from './data';\nimport { IFilterValues } from './filtering';\nimport { IGetGroupFunc, Grouping, IGroupingFunc, GroupSort, IGroupValues } from './grouping';\nimport { SortDirection, ISortingValues } from './sorting';\nimport { IPageButton } from './paging';\n\n/**\n * @private\n */\nexport interface InternalTableParams extends NgTableParams {\n isNullInstance: boolean\n}\n\n/**\n * The runtime values for {@link NgTableParams} that determine the set of data rows and\n * how they are to be displayed in a table\n */\nexport interface IParamValues {\n /**\n * The index of the \"slice\" of data rows, starting at 1, to be displayed by the table.\n */\n page?: number;\n /**\n * The number of data rows per page\n */\n count?: number;\n /**\n * The filter that should be applied to restrict the set of data rows\n */\n filter?: IFilterValues;\n /**\n * The sort order that should be applied to the data rows.\n */\n sorting?: ISortingValues;\n /**\n * The grouping that should be applied to the data rows\n */\n group?: string | Grouping;\n}\n\n\n/**\n * @private\n */\nfunction isNumber(n: any) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * @private\n */\ntype Memento = {\n params: IParamValues;\n groupSortDirection?: string;\n};\n\n/**\n * Parameters manager for an ngTable directive\n */\nexport class NgTableParams {\n /**\n * The page of data rows currently being displayed in the table\n */\n data: T[] = [];\n reloadPages: () => void;\n private defaultSettings = NgTableParams.ngTableSettings.createDefaults();\n private errParamsMemento: Memento;\n private isCommittedDataset = false;\n isNullInstance: boolean;\n private initialEvents: Function[] = [];\n private prevParamsMemento: Memento;\n private _params: IParamValues = {\n page: 1,\n count: 10,\n filter: {},\n sorting: {},\n group: {}\n };\n private _settings = this.defaultSettings;\n constructor(baseParameters?: IParamValues | boolean, baseSettings?: ISettings) {\n\n // the ngTableController \"needs\" to create a dummy/null instance and it's important to know whether an instance\n // is one of these\n if (typeof baseParameters === \"boolean\") {\n this.isNullInstance = true;\n }\n\n this.reloadPages = (() => {\n let currentPages: IPageButton[];\n return () => {\n const oldPages = currentPages;\n const newPages = this.generatePagesArray(this.page(), this.total(), this.count());\n if (!ng1.equals(oldPages, newPages)) {\n currentPages = newPages;\n NgTableParams.ngTableEventsChannel.publishPagesChanged(this, newPages, oldPages);\n }\n }\n })();\n\n ng1.extend(this._params, NgTableParams.ngTableDefaults.params);\n\n this.settings(baseSettings);\n this.parameters(baseParameters, true);\n\n NgTableParams.ngTableEventsChannel.publishAfterCreated(this);\n // run events during construction after the initial create event. That way a consumer\n // can subscribe to all events for a table without \"dropping\" an event\n ng1.forEach(this.initialEvents, event => {\n event();\n });\n this.initialEvents = null;\n }\n /**\n * Returns the number of data rows per page\n */\n count(): number\n /**\n * Sets the number of data rows per page.\n * Changes to count will cause `isDataReloadRequired` to return true\n */\n count(count: number): this\n count(count?: number) {\n // reset to first page because can be blank page\n return count !== undefined ? this.parameters({\n 'count': count,\n 'page': 1\n }) : this._params.count;\n }\n /**\n * Returns the current filter values used to restrict the set of data rows.\n * @param trim supply true to return the current filter minus any insignificant values\n * (null, undefined and empty string)\n */\n filter(trim?: boolean): IFilterValues\n /**\n * Sets filter values to the `filter` supplied; any existing filter will be removed\n * Changes to filter will cause `isDataReloadRequired` to return true and the current `page` to be set to 1\n */\n filter(filter: IFilterValues): this\n filter(filter?: IFilterValues | boolean) {\n if (filter != null && typeof filter === 'object') {\n return this.parameters({\n 'filter': filter,\n 'page': 1\n });\n } else if (filter === true) {\n const keys = Object.keys(this._params.filter);\n const significantFilter: IFilterValues = {};\n for (let i = 0; i < keys.length; i++) {\n const filterValue = this._params.filter[keys[i]];\n if (filterValue != null && filterValue !== '') {\n significantFilter[keys[i]] = filterValue;\n }\n }\n return significantFilter;\n } else {\n return this._params.filter;\n }\n }\n /**\n * Generate array of pages.\n * When no arguments supplied, the current parameter state of this `NgTableParams` instance will be used\n * @param currentPage Which page must be active\n * @param totalItems Total quantity of items\n * @param pageSize Quantity of items on page\n * @param maxBlocks Quantity of blocks for pagination\n * @returns Array of pages\n */\n generatePagesArray(currentPage?: number, totalItems?: number, pageSize?: number, maxBlocks?: number) {\n if (!arguments.length) {\n currentPage = this.page();\n totalItems = this.total();\n pageSize = this.count();\n }\n\n let maxPage: number, maxPivotPages: number, minPage: number, numPages: number;\n maxBlocks = maxBlocks && maxBlocks < 6 ? 6 : maxBlocks;\n\n const pages: IPageButton[] = [];\n numPages = Math.ceil(totalItems / pageSize);\n if (numPages > 1) {\n pages.push({\n type: 'prev',\n number: Math.max(1, currentPage - 1),\n active: currentPage > 1\n });\n pages.push({\n type: 'first',\n number: 1,\n active: currentPage > 1,\n current: currentPage === 1\n });\n maxPivotPages = Math.round((this._settings.paginationMaxBlocks - this._settings.paginationMinBlocks) / 2);\n minPage = Math.max(2, currentPage - maxPivotPages);\n maxPage = Math.min(numPages - 1, currentPage + maxPivotPages * 2 - (currentPage - minPage));\n minPage = Math.max(2, minPage - (maxPivotPages * 2 - (maxPage - minPage)));\n let i = minPage;\n while (i <= maxPage) {\n if ((i === minPage && i !== 2) || (i === maxPage && i !== numPages - 1)) {\n pages.push({\n type: 'more',\n active: false\n });\n } else {\n pages.push({\n type: 'page',\n number: i,\n active: currentPage !== i,\n current: currentPage === i\n });\n }\n i++;\n }\n pages.push({\n type: 'last',\n number: numPages,\n active: currentPage !== numPages,\n current: currentPage === numPages\n });\n pages.push({\n type: 'next',\n number: Math.min(numPages, currentPage + 1),\n active: currentPage < numPages\n });\n }\n return pages;\n }\n /**\n * Returns the current grouping used to group the data rows\n */\n group(): Grouping\n /**\n * Sets grouping to the `group` supplied; any existing grouping will be removed.\n * Changes to group will cause `isDataReloadRequired` to return true and the current `page` to be set to 1\n */\n group(group: IGroupValues): this\n /**\n * Sets grouping to the `field` and `sortDirection` supplied; any existing grouping will be removed\n * Changes to group will cause `isDataReloadRequired` to return true and the current `page` to be set to 1\n */\n group(field: string, sortDirection?: GroupSort): this\n /**\n * Sets grouping to the `group` supplied; any existing grouping will be removed.\n * If `sortDirection` is supplied, this will be assigned to the sortDirection property of `group`\n * Changes to group will cause `isDataReloadRequired` to return true and the current `page` to be set to 1\n */\n group(group: IGroupingFunc | string, sortDirection?: GroupSort): this\n group(group?: Grouping | string, sortDirection?: GroupSort): string | Grouping | this {\n if (group === undefined) {\n return this._params.group;\n }\n\n const newParameters: IParamValues = {\n page: 1\n };\n if (isGroupingFun(group) && sortDirection !== undefined) {\n group.sortDirection = sortDirection;\n newParameters.group = group;\n } else if (typeof group === 'string' && sortDirection !== undefined) {\n newParameters.group = { [group]: sortDirection };\n } else {\n newParameters.group = group;\n }\n this.parameters(newParameters);\n return this;\n }\n /**\n * Returns true when an attempt to `reload` the current `parameter` values have resulted in a failure.\n * This method will continue to return true until the `reload` is successfully called or when the\n * `parameter` values have changed\n */\n hasErrorState() {\n return !!(this.errParamsMemento && ng1.equals(this.errParamsMemento, this.createComparableParams()));\n }\n /**\n * Returns true if `filter` has significant filter value(s) (any value except null, undefined, or empty string),\n * otherwise false\n */\n hasFilter() {\n return Object.keys(this.filter(true)).length > 0;\n }\n /**\n * Return true when a change to `filters` require the `reload` method\n * to be run so as to ensure the data presented to the user reflects these filters\n */\n hasFilterChanges() {\n const previousFilter = (this.prevParamsMemento && this.prevParamsMemento.params.filter);\n return !ng1.equals((this._params.filter), previousFilter) || this.hasGlobalSearchFieldChanges();\n }\n /**\n * Returns true when at least one group has been set\n */\n hasGroup(): boolean\n /**\n * Returns true when the `group` and when supplied, the `sortDirection` matches an existing group\n */\n hasGroup(group: string | IGroupingFunc, sortDirection?: string): boolean\n hasGroup(group?: string | IGroupingFunc, sortDirection?: string) {\n if (group == null) {\n return isGroupingFun(this._params.group) || Object.keys(this._params.group).length > 0\n }\n\n if (isGroupingFun(group)) {\n if (sortDirection == null) {\n return this._params.group === group;\n } else {\n return this._params.group === group && group.sortDirection === sortDirection;\n }\n } else {\n if (sortDirection == null) {\n return Object.keys(this._params.group).indexOf(group) !== -1;\n } else {\n return (this._params.group as IGroupValues)[group] === sortDirection;\n }\n }\n }\n /**\n * Return true when a change to this instance should require the `reload` method\n * to be run so as to ensure the data rows presented to the user reflects the current state.\n *\n * Note that this method will return false when the `reload` method has run but fails. In this case\n * `hasErrorState` will return true.\n *\n * The built-in `ngTable` directives will watch for when this function returns true and will then call\n * the `reload` method to load its data rows\n */\n isDataReloadRequired() {\n // note: using != as want to treat null and undefined the same\n return !this.isCommittedDataset || !ng1.equals(this.createComparableParams(), this.prevParamsMemento)\n || this.hasGlobalSearchFieldChanges();\n }\n /**\n * Returns true if sorting by the field supplied. Where direction supplied\n * the field must also be sorted by that direction to return true\n */\n isSortBy(field: string, direction?: string) {\n if (direction !== undefined) {\n return this._params.sorting[field] !== undefined && this._params.sorting[field] == direction;\n } else {\n return this._params.sorting[field] !== undefined;\n }\n }\n /**\n * Returns sorting values in a format that can be consumed by the angular `$orderBy` filter service\n */\n orderBy() {\n return convertSortToOrderBy(this._params.sorting);\n }\n /**\n * Returns the index of the current \"slice\" of data rows\n */\n page(): number\n /**\n * Sets the index of the current \"slice\" of data rows. The index starts at 1.\n * Changing the page number will cause `isDataReloadRequired` to return true\n */\n page(page: number): this\n page(page?: number) {\n return page !== undefined ? this.parameters({\n 'page': page\n }) : this._params.page;\n }\n parameters(): IParamValues\n /**\n * Set new parameters\n */\n parameters(newParameters?: IParamValues | { [name: string]: string }, parseParamsFromUrl?: boolean): this\n parameters(newParameters?: IParamValues | { [name: string]: string }, parseParamsFromUrl?: boolean): IParamValues | this {\n parseParamsFromUrl = parseParamsFromUrl || false;\n if (typeof newParameters !== undefined) {\n for (const key in newParameters) {\n let value = newParameters[key];\n if (parseParamsFromUrl && key.indexOf('[') >= 0) {\n const keys = key.split(/\\[(.*)\\]/).reverse()\n let lastKey = '';\n for (let i = 0, len = keys.length; i < len; i++) {\n const name = keys[i];\n if (name !== '') {\n const v = value;\n value = {};\n value[lastKey = name] = (isNumber(v) ? parseFloat(v) : v);\n }\n }\n if (lastKey === 'sorting') {\n this._params[lastKey] = {};\n }\n this._params[lastKey] = ng1.extend(this._params[lastKey] || {}, value[lastKey]);\n } else {\n if (key === 'group') {\n this._params[key] = this.parseGroup(newParameters[key]);\n } else {\n this._params[key] = (isNumber(newParameters[key]) ? parseFloat(newParameters[key]) : newParameters[key]);\n }\n }\n }\n this.log('ngTable: set parameters', this._params);\n return this;\n }\n return this._params;\n }\n /**\n * Trigger a reload of the data rows\n */\n reload>(): IPromise {\n let pData: ng1.IPromise = null;\n\n this._settings.$loading = true;\n\n this.prevParamsMemento = ng1.copy(this.createComparableParams());\n this.isCommittedDataset = true;\n\n if (this.hasGroup()) {\n pData = this.runInterceptorPipeline(NgTableParams.$q.when(this._settings.getGroups(this)));\n } else {\n const fn = this._settings.getData as IGetDataFunc;\n pData = this.runInterceptorPipeline(NgTableParams.$q.when(fn(this)));\n }\n\n this.log('ngTable: reload data');\n\n const oldData = this.data;\n return pData.then(data => {\n this._settings.$loading = false;\n this.errParamsMemento = null;\n\n this.data = data;\n // note: I think it makes sense to publish this event even when data === oldData\n // subscribers can always set a filter to only receive the event when data !== oldData\n NgTableParams.ngTableEventsChannel.publishAfterReloadData(this, data, oldData);\n this.reloadPages();\n\n return data;\n }).catch(reason => {\n this.errParamsMemento = this.prevParamsMemento;\n // \"rethrow\"\n return NgTableParams.$q.reject(reason);\n });\n }\n /**\n * Returns the settings for the table.\n */\n settings(): ISettings\n /**\n * Sets the settings for the table; new setting values will be merged with the existing settings.\n * Supplying a new `dataset` will cause `isDataReloadRequired` to return true and the `ngTableEventsChannel`\n * to fire its `datasetChanged` event\n */\n settings(newSettings: ISettings): this\n settings(newSettings?: ISettings): this | ISettings {\n if (ng1.isDefined(newSettings)) {\n\n const settings = NgTableParams.ngTableSettings.merge(this._settings, newSettings);\n\n const originalDataset = this._settings.dataset;\n this._settings = settings;\n\n // note: using != as want null and undefined to be treated the same\n const hasDatasetChanged = newSettings.hasOwnProperty('dataset') && (newSettings.dataset != originalDataset);\n if (hasDatasetChanged) {\n if (this.isCommittedDataset) {\n this.page(1); // reset page as a new dataset has been supplied\n }\n this.isCommittedDataset = false;\n\n const fireEvent = () => {\n NgTableParams.ngTableEventsChannel.publishDatasetChanged(this, newSettings.dataset, originalDataset);\n };\n\n if (this.initialEvents) {\n this.initialEvents.push(fireEvent);\n } else {\n fireEvent();\n }\n }\n this.log('ngTable: set settings', this._settings);\n return this;\n }\n return this._settings;\n }\n /**\n * Returns the current sorting used to order the data rows.\n * Changes to sorting will cause `isDataReloadRequired` to return true\n */\n sorting(): ISortingValues\n /**\n * Sets sorting values to the `sorting` supplied; any existing sorting will be removed.\n * Changes to sorting will cause `isDataReloadRequired` to return true\n */\n sorting(sorting: ISortingValues): this\n /**\n * Sets sorting to the `field` and `direction` supplied; any existing sorting will be removed\n */\n sorting(field: string, direction: string): this\n sorting(sorting?: ISortingValues | string, direction?: SortDirection) {\n if (typeof sorting === 'string') {\n this.parameters({\n 'sorting': { [sorting]: direction }\n });\n return this;\n }\n return sorting !== undefined ? this.parameters({\n 'sorting': sorting\n }) : this._params.sorting;\n }\n /**\n * Returns the count of the data rows that match the current `filter`\n */\n total(): number\n /**\n * Sets `settings().total` to the value supplied.\n * Typically you will need to set a `total` in the body of any custom `getData` function\n * you supply as a setting value to this instance.\n * @example\n * ```js\n * const tp = new NgTableParams({}, { getData: customGetData })\n * function customGetData(params) {\n * const queryResult = // code to fetch current data rows and total //\n * params.total(queryResult.total);\n * return queryResult.dataRowsPage;\n * }\n * ```\n */\n total(total: number): this\n total(total?: number) {\n return total !== undefined ? this.settings({\n 'total': total\n }) : this._settings.total;\n }\n /**\n * Returns the current parameter values uri-encoded. Set `asString` to\n * true for the parameters to be returned as an array of strings of the form 'paramName=value'\n * otherwise parameters returned as a key-value object\n */\n url(asString?: boolean) {\n // this function is an example of Typescript gone bad!!\n asString = asString || false;\n const pairs: any[] | { [name: string]: string } = (asString ? [] : {});\n for (const key in this._params) {\n if (this._params.hasOwnProperty(key)) {\n const item = (this._params as { [name: string]: any })[key],\n name = encodeURIComponent(key);\n if (typeof item === \"object\") {\n for (const subkey in item) {\n if (isSignificantValue(item[subkey], key)) {\n const pname = name + \"[\" + encodeURIComponent(subkey) + \"]\";\n collectValue(item[subkey], pname);\n }\n }\n } else if (!ng1.isFunction(item) && isSignificantValue(item, key)) {\n collectValue(item, name);\n }\n }\n }\n return pairs;\n\n function collectValue(value: any, key: string) {\n if (isArray(pairs)) {\n pairs.push(key + \"=\" + encodeURIComponent(value));\n } else {\n pairs[key] = encodeURIComponent(value);\n }\n }\n\n function isArray(pairs: any[] | {}): pairs is Array {\n return asString;\n }\n\n function isSignificantValue(value: any, key: string) {\n return key === \"group\" ? true : typeof value !== undefined && value !== \"\";\n }\n }\n private createComparableParams(): Memento {\n const group = this._params.group;\n return {\n params: this._params,\n groupSortDirection: isGroupingFun(group) ? group.sortDirection : undefined\n };\n }\n private hasGlobalSearchFieldChanges() {\n const currentVal = (this._params.filter && this._params.filter['$']);\n const previousVal =\n (this.prevParamsMemento && this.prevParamsMemento.params.filter && this.prevParamsMemento.params.filter['$']);\n return !ng1.equals(currentVal, previousVal);\n }\n private log(...args: any[]) {\n if (this._settings.debugMode && NgTableParams.$log.debug) {\n NgTableParams.$log.debug(...args);\n }\n }\n private parseGroup(group: string | Grouping) {\n const defaultSort = this._settings.groupOptions && this._settings.groupOptions.defaultSort;\n if (!group) {\n return group;\n } else if (isGroupingFun(group)) {\n if (group.sortDirection == null) {\n group.sortDirection = defaultSort;\n }\n return group;\n } else if (typeof group === 'object') {\n for (const key in group) {\n if (group[key] == null) {\n group[key] = defaultSort;\n }\n }\n return group;\n } else {\n return {\n [group]: defaultSort\n };\n }\n }\n private runInterceptorPipeline(fetchedData: ng1.IPromise) {\n const interceptors = this._settings.interceptors || [];\n\n return interceptors.reduce((result, interceptor) => {\n const thenFn = (interceptor.response && interceptor.response.bind(interceptor)) || NgTableParams.$q.when;\n const rejectFn = (interceptor.responseError && interceptor.responseError.bind(interceptor)) || NgTableParams.$q.reject;\n return result.then(data => {\n return thenFn(data, this);\n }, reason => {\n return rejectFn(reason, this);\n });\n }, fetchedData);\n }\n\n private static $q: ng1.IQService;\n private static $log: ng1.ILogService;\n private static ngTableDefaults: IDefaults;\n private static ngTableEventsChannel: NgTableEventsChannel;\n private static ngTableSettings: NgTableSettings;\n static init(\n $q: ng1.IQService,\n $log: ng1.ILogService,\n ngTableDefaults: IDefaults,\n ngTableEventsChannel: NgTableEventsChannel,\n ngTableSettings: NgTableSettings) {\n NgTableParams.$q = $q;\n NgTableParams.$log = $log;\n NgTableParams.ngTableDefaults = ngTableDefaults;\n NgTableParams.ngTableEventsChannel = ngTableEventsChannel;\n NgTableParams.ngTableSettings = ngTableSettings;\n }\n}\n\nNgTableParams.init.$inject = ['$q', '$log', 'ngTableDefaults', 'ngTableEventsChannel', 'ngTableSettings'];\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/ngTableParams.ts","import * as ng1 from 'angular';\nimport { IPromise } from 'angular';\nimport { IDefaults } from './ngTableDefaults';\nimport { IDataRowGroup, IDataSettings, IDefaultGetData, IGetDataFunc, IInterceptor, IInterceptableGetDataFunc } from './data';\nimport { IFilterValues, IFilterSettings } from './filtering';\nimport { IGetGroupFunc, IGroupSettings } from './grouping';\nimport { SortDirection } from './sorting';\nimport { NgTableParams } from './ngTableParams';\n\n/**\n * Configuration settings for {@link NgTableParams}\n */\nexport interface ISettings {\n /**\n * Returns true whenever a call to `getData` is in progress\n */\n $loading?: boolean;\n /**\n * An array that contains all the data rows that table should manage.\n * The `gateData` function will be used to manage the data rows\n * that ultimately will be displayed.\n */\n dataset?: T[];\n dataOptions?: IDataSettings;\n debugMode?: boolean;\n /**\n * The total number of data rows before paging has been applied.\n * Typically you will not need to supply this yourself\n */\n total?: number;\n /**\n * The default sort direction that will be used whenever a sorting is supplied that\n * does not define its own sort direction\n */\n defaultSort?: SortDirection;\n filterOptions?: IFilterSettings;\n groupOptions?: IGroupSettings;\n /**\n * The page size buttons that should be displayed. Each value defined in the array\n * determines the possible values that can be supplied to {@link NgTableParams} `page`\n */\n counts?: number[];\n /**\n * The collection of interceptors that should apply to the results of a call to\n * the `getData` function before the data rows are displayed in the table\n */\n interceptors?: IInterceptor[];\n /**\n * Configuration for the template that will display the page size buttons\n */\n paginationMaxBlocks?: number;\n /**\n * Configuration for the template that will display the page size buttons\n */\n paginationMinBlocks?: number;\n /**\n * The html tag that will be used to display the sorting indicator in the table header\n */\n sortingIndicator?: string;\n /**\n * The function that will be used fetch data rows. Leave undefined to let the {@link IDefaultGetData}\n * service provide a default implementation that will work with the `dataset` array you supply.\n *\n * Typically you will supply a custom function when you need to execute filtering, paging and sorting\n * on the server\n */\n getData?: IGetDataFunc | IInterceptableGetDataFunc;\n /**\n * The function that will be used group data rows according to the groupings returned by {@link NgTableParams} `group`\n */\n getGroups?: IGetGroupFunc;\n}\n\n/**\n * @private\n */\nexport class NgTableSettings {\n static $inject = ['ngTableDefaults', 'ngTableDefaultGetData', 'ngTableDefaultGetGroups'];\n private defaults: ISettings;\n constructor(\n private ngTableDefaults: IDefaults,\n private ngTableDefaultGetData: IDefaultGetData,\n private ngTableDefaultGetGroups: IGetGroupFunc) {\n\n this.defaults = {\n $loading: false,\n dataset: null, //allows data to be set when table is initialized\n total: 0,\n defaultSort: 'desc',\n counts: [10, 25, 50, 100],\n filterOptions: {\n filterComparator: undefined, // look for a substring match in case insensitive way\n filterDelay: 500,\n filterDelayThreshold: 10000, // size of dataset array that will trigger the filterDelay being applied\n filterFilterName: undefined, // when defined overrides ngTableDefaultGetDataProvider.filterFilterName\n filterFn: undefined, // when defined overrides the filter function that ngTableDefaultGetData uses\n filterLayout: 'stack'\n },\n getData: (params: NgTableParams) => {\n return this.ngTableDefaultGetData(params.settings().dataset, params);\n },\n getGroups: this.ngTableDefaultGetGroups,\n groupOptions: {\n defaultSort: 'asc', // set to 'asc' or 'desc' to apply sorting to groups\n isExpanded: true\n },\n interceptors: [],\n paginationMaxBlocks: 11,\n paginationMinBlocks: 5,\n sortingIndicator: 'span'\n };\n }\n createDefaults(): ISettings {\n return this.merge(this.defaults, this.ngTableDefaults.settings);\n }\n merge(existing: ISettings, newSettings: ISettings): ISettings {\n\n newSettings = ng1.extend({}, newSettings);\n\n if (newSettings.filterOptions) {\n newSettings.filterOptions = ng1.extend({}, existing.filterOptions || {}, newSettings.filterOptions);\n }\n if (newSettings.groupOptions) {\n newSettings.groupOptions = ng1.extend({}, existing.groupOptions || {}, newSettings.groupOptions);\n }\n\n if (ng1.isArray(newSettings.dataset)) {\n //auto-set the total from passed in dataset\n newSettings.total = newSettings.dataset.length;\n }\n const results = ng1.extend({}, existing, newSettings);\n if (ng1.isArray(newSettings.dataset)) {\n this.optimizeFilterDelay(results);\n }\n return ng1.extend({}, existing, newSettings);\n }\n private optimizeFilterDelay(settings: ISettings) {\n // don't debounce by default filter input when working with small synchronous datasets\n if (settings.filterOptions.filterDelay === this.defaults.filterOptions.filterDelay &&\n settings.total <= settings.filterOptions.filterDelayThreshold &&\n settings.getData === this.defaults.getData) {\n settings.filterOptions.filterDelay = 0;\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/ngTableSettings.ts","import { Grouping, IGroupingFunc } from './grouping';\nimport { ISortingValues } from './sorting';\n\n/**\n * @private\n */\nexport function convertSortToOrderBy(sorting: ISortingValues) {\n const result: string[] = [];\n for (let column in sorting) {\n result.push((sorting[column] === \"asc\" ? \"+\" : \"-\") + column);\n }\n return result;\n}\n\n/**\n * @private\n */\nexport function isGroupingFun(val: string | Grouping): val is IGroupingFunc {\n return typeof val === 'function'\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/util.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\nimport { IAugmentedJQuery, IDirective, IQService, IParseService, IPromise, IScope } from 'angular';\nimport * as ng1 from 'angular';\nimport { \n IColumnDef, ColumnFieldContext, IColumnField, IFilterTemplateDefMap, SelectData, ITableInputAttributes \n} from './public-interfaces';\nimport { NgTableController } from './ngTableController';\n\ninterface IScopeExtensions {\n $columns: IColumnDef[]\n}\n\nngTable.$inject = ['$q', '$parse'];\n\n/**\n * Directive that instantiates {@link NgTableController NgTableController}.\n * @ngdoc directive\n * @name ngTable\n * @example\n * \n * ```html\n * \n * \n * \n * \n * \n *
\n * {{user.name}}\n * \n * {{user.age}}\n *
\n * ```\n */\nexport function ngTable($q: IQService, $parse: IParseService) : IDirective {\n\n return {\n restrict: 'A',\n priority: 1001,\n scope: true,\n controller: 'ngTableController',\n compile: function(element: IAugmentedJQuery) {\n let columns: IColumnDef[] = [],\n i = 0,\n dataRow: JQuery,\n groupRow: JQuery\n const rows: JQuery[] = [];\n\n ng1.forEach(element.find('tr'), (tr: JQuery) => {\n rows.push(ng1.element(tr))\n });\n dataRow = rows.filter(tr => !tr.hasClass('ng-table-group'))[0];\n groupRow = rows.filter(tr => tr.hasClass('ng-table-group'))[0];\n\n if (!dataRow) {\n return undefined;\n }\n ng1.forEach(dataRow.find('td'), (item: JQuery) => {\n const el = ng1.element(item);\n if (el.attr('ignore-cell') && 'true' === el.attr('ignore-cell')) {\n return;\n }\n\n const getAttrValue = function(attr: string){\n return el.attr('x-data-' + attr) || el.attr('data-' + attr) || el.attr(attr);\n };\n const setAttrValue = function(attr: string, value: string){\n if (el.attr('x-data-' + attr)){\n el.attr('x-data-' + attr, value)\n } else if (el.attr('data' + attr)){\n el.attr('data' + attr, value)\n } else {\n el.attr(attr, value)\n }\n };\n\n const parsedAttribute = function(attr: string): IColumnField {\n const expr = getAttrValue(attr);\n if (!expr){\n return undefined;\n }\n\n let localValue: any;\n const getter = (context: ColumnFieldContext) => {\n if (localValue !== undefined){\n return localValue as T;\n }\n return $parse(expr)(context) as T;\n };\n (getter as any).assign = ($scope: ColumnFieldContext, value: any) => {\n const parsedExpr = $parse(expr);\n if (parsedExpr.assign) {\n // we should be writing back to the parent scope as this is where the expression\n // came from\n parsedExpr.assign($scope.$parent, value);\n } else {\n localValue = value;\n }\n };\n return getter as IColumnField;\n };\n const titleExpr = getAttrValue('title-alt') || getAttrValue('title');\n if (titleExpr){\n el.attr('data-title-text', '{{' + titleExpr + '}}'); // this used in responsive table\n }\n // NOTE TO MAINTAINERS: if you add extra fields to a $column be sure to extend ngTableColumn with\n // a corresponding \"safe\" default\n columns.push({\n id: i++,\n title: parsedAttribute('title'),\n titleAlt: parsedAttribute('title-alt'),\n headerTitle: parsedAttribute('header-title'),\n sortable: parsedAttribute('sortable'),\n 'class': parsedAttribute('header-class'),\n filter: parsedAttribute('filter'),\n groupable: parsedAttribute('groupable'),\n headerTemplateURL: parsedAttribute('header'),\n filterData: parsedAttribute | SelectData>('filter-data'),\n show: el.attr(\"ng-if\") ? parsedAttribute('ng-if') : undefined\n });\n\n if (groupRow || el.attr(\"ng-if\")){\n // change ng-if to bind to our column definition which we know will be writable\n // because this will potentially increase the $watch count, only do so if we already have an\n // ng-if or when we definitely need to change visibility of the columns.\n // currently only ngTableGroupRow directive needs to change visibility\n setAttrValue('ng-if', '$columns[' + (columns.length - 1) + '].show(this)');\n }\n });\n return function(scope: IScope & IScopeExtensions, element: IAugmentedJQuery, attrs: ITableInputAttributes, controller: NgTableController) {\n scope.$columns = columns = controller.buildColumns(columns);\n\n controller.setupBindingsToInternalScope(attrs.ngTable);\n controller.loadFilterData(columns);\n controller.compileDirectiveTemplates();\n };\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTable.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IScope } from 'angular';\nimport * as ng1 from 'angular';\nimport { IColumnDef, IDynamicTableColDef } from './public-interfaces';\n\n/**\n * @private\n */\nfunction isScopeLike(object: any) {\n return object != null && ng1.isFunction(object.$new);\n}\n\n/**\n * @private\n * Service to construct a $column definition used by {@link ngTable ngTable} directive\n */\nexport class NgTableColumn {\n static $inject: string[] = [];\n\n /**\n * Creates a $column for use within a header template\n *\n * @param column the initial definition for $column to build\n * @param defaultScope the $scope to supply to the $column getter methods when not supplied by caller\n * @param columns a reference to the $columns array to make available on the context supplied to the\n * $column getter methods\n */\n buildColumn(column: TCol, defaultScope: IScope, columns: IColumnDef[]): IColumnDef {\n // note: we're not modifying the original column object. This helps to avoid unintended side affects\n const extendedCol = Object.create(column);\n const defaults = this.createDefaults();\n for (const prop in defaults) {\n if (extendedCol[prop] === undefined) {\n extendedCol[prop] = defaults[prop];\n }\n if (!ng1.isFunction(extendedCol[prop])) {\n // wrap raw field values with \"getter\" functions\n // - this is to ensure consistency with how ngTable.compile builds columns\n // - note that the original column object is being \"proxied\"; this is important\n // as it ensure that any changes to the original object will be returned by the \"getter\"\n const getterSetter = function getterSetter(/*[value] || [$scope, locals]*/) {\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\n (getterSetter as any).assign(null, arguments[0]);\n } else {\n return column[prop];\n }\n };\n (getterSetter as any).assign = function ($scope: IScope, value: any) {\n column[prop] = value;\n };\n extendedCol[prop] = getterSetter;\n }\n // satisfy the arguments expected by the function returned by parsedAttribute in the ngTable directive\n const getterFn = extendedCol[prop];\n extendedCol[prop] = function () {\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\n getterFn.assign(defaultScope, arguments[0]);\n } else {\n const scope = arguments[0] || defaultScope;\n const context = Object.create(scope);\n ng1.extend(context, {\n $column: extendedCol,\n $columns: columns\n });\n return getterFn.call(column, context);\n }\n };\n if (getterFn.assign) {\n extendedCol[prop].assign = getterFn.assign;\n } else {\n const wrappedGetterFn = extendedCol[prop];\n let localValue: any;\n const getterSetter = function getterSetter(/*[value] || [$scope, locals]*/) {\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\n (getterSetter as any).assign(null, arguments[0]);\n } else {\n return localValue != undefined ? localValue : wrappedGetterFn.apply(extendedCol, arguments);\n }\n };\n (getterSetter as any).assign = function ($scope: IScope, value: any) {\n localValue = value;\n };\n extendedCol[prop] = getterSetter;\n }\n }\n return extendedCol as IColumnDef;\n }\n\n private createDefaults() {\n return {\n 'class': this.createGetterSetter(''),\n filter: this.createGetterSetter(false),\n groupable: this.createGetterSetter(false),\n filterData: ng1.noop,\n headerTemplateURL: this.createGetterSetter(false),\n headerTitle: this.createGetterSetter(''),\n sortable: this.createGetterSetter(false),\n show: this.createGetterSetter(true),\n title: this.createGetterSetter(''),\n titleAlt: this.createGetterSetter('')\n };\n }\n\n private createGetterSetter(initialValue: any) {\n let value = initialValue;\n const getterSetter = function getterSetter(/*[value] || [$scope, locals]*/) {\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\n (getterSetter as any).assign(null, arguments[0]);\n } else {\n return value;\n }\n };\n (getterSetter as any).assign = function ($scope: IScope, newValue: any) {\n value = newValue;\n };\n return getterSetter;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableColumn.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IAugmentedJQuery, IAttributes, IDirective, IParseService } from 'angular';\nimport { ITableScope } from './ngTableController';\nimport { IColumnDef } from './public-interfaces';\n\n/**\n * @private\n */\ninterface IInputAttributes extends IAttributes {\n ngTableColumnsBinding: string;\n}\n\nngTableColumnsBinding.$inject = [\"$parse\"];\n\n/**\n * One-way data binds the $columns array generated by ngTable/ngTableDynamic to the specified\n * expression.\n * This allows the $columns array created for the table to be accessed outside of the html table\n * markup.\n * \n * @ngdoc directive\n * \n * @example\n * ```html\n * \n * ```\n */\nexport function ngTableColumnsBinding($parse: IParseService) : IDirective {\n const directive = {\n restrict: 'A',\n link: linkFn\n };\n return directive;\n\n function linkFn($scope: ITableScope, $element: IAugmentedJQuery, $attrs: IInputAttributes){\n const setter = $parse($attrs.ngTableColumnsBinding).assign;\n if (setter){\n $scope.$watch('$columns', newColumns => {\n const shallowClone = (newColumns || []).slice(0);\n setter($scope, shallowClone);\n });\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableColumnsBinding.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport {\n IAttributes, IAugmentedJQuery, ICompileService, IDocumentService, IParseService, IPromise, IScope,\n ITimeoutService\n} from 'angular';\nimport * as ng1 from 'angular';\nimport {\n DataResult, DataResults, IDataRowGroup, GroupedDataResults, NgTableParams, NgTableEventsChannel,\n IPageButton\n} from '../core';\nimport { IColumnDef, IDynamicTableColDef, SelectData, ITableInputAttributes } from './public-interfaces';\nimport { NgTableColumn } from './ngTableColumn';\n\n/**\n * @private\n */\nexport interface ITableScope extends IScope {\n $columns: IColumnDef[];\n $loading: boolean;\n $filterRow: {\n disabled: boolean;\n };\n $data?: DataResults;\n $groups?: GroupedDataResults;\n $groupRow: {\n show: boolean;\n };\n show_filter: boolean;\n pages: IPageButton[];\n templates: {\n header: string;\n pagination: string;\n },\n params: NgTableParams\n}\n\n/**\n * The controller for the {@link ngTable ngTable} and {@link ngTableDynamic ngTableDynamic} directives\n */\nexport class NgTableController {\n static $inject = [\n '$scope', '$timeout', '$parse', '$compile', '$attrs', '$element', '$document', 'ngTableColumn', 'ngTableEventsChannel'\n ];\n private delayFilter: (callback: () => void, ms: number) => void;\n private get hasVisibleFilterColumn() {\n if (!this.$scope.$columns) return false;\n\n return this.some(this.$scope.$columns, ($column) => {\n return $column.show(this.$scope) && !!$column.filter(this.$scope);\n });\n }\n constructor(\n private $scope: ITableScope,\n $timeout: ITimeoutService,\n private $parse: IParseService,\n private $compile: ICompileService,\n private $attrs: IAttributes & ITableInputAttributes,\n private $element: IAugmentedJQuery,\n private $document: IDocumentService,\n private ngTableColumn: NgTableColumn,\n private ngTableEventsChannel: NgTableEventsChannel) {\n\n const isFirstTimeLoad = true;\n $scope.$filterRow = { disabled: false };\n $scope.$loading = false;\n\n // until such times as the directive uses an isolated scope, we need to ensure that the check for\n // the params field only consults the \"own properties\" of the $scope. This is to avoid seeing the params\n // field on a $scope higher up in the prototype chain\n if (!$scope.hasOwnProperty(\"params\")) {\n $scope.params = new NgTableParams(true);\n }\n\n this.delayFilter = (function () {\n let timer: IPromise;\n return (callback: () => void, ms: number) => {\n $timeout.cancel(timer);\n timer = $timeout(callback, ms);\n };\n })();\n\n // watch for when a new NgTableParams is bound to the scope\n // CRITICAL: the watch must be for reference and NOT value equality; this is because NgTableParams maintains\n // the current data page as a field. Checking this for value equality would be terrible for performance\n // and potentially cause an error if the items in that array has circular references\n this.$scope.$watch>('params', (newParams, oldParams) => {\n if (newParams === oldParams || !newParams) {\n return;\n }\n\n newParams.reload();\n }, false);\n\n this.subscribeToTableEvents();\n }\n\n private onDataReloadStatusChange(newStatus: boolean/*, oldStatus*/) {\n if (!newStatus || this.$scope.params.hasErrorState()) {\n return;\n }\n\n const currentParams = this.$scope.params;\n const filterOptions = currentParams.settings().filterOptions;\n\n if (currentParams.hasFilterChanges()) {\n const applyFilter = () => {\n currentParams.page(1);\n currentParams.reload();\n };\n if (filterOptions.filterDelay) {\n this.delayFilter(applyFilter, filterOptions.filterDelay);\n } else {\n applyFilter();\n }\n } else {\n currentParams.reload();\n }\n }\n\n compileDirectiveTemplates() {\n if (!this.$element.hasClass('ng-table')) {\n this.$scope.templates = {\n header: (this.$attrs.templateHeader ? this.$attrs.templateHeader : 'ng-table/header.html'),\n pagination: (this.$attrs.templatePagination ? this.$attrs.templatePagination : 'ng-table/pager.html')\n };\n this.$element.addClass('ng-table');\n let headerTemplate: IAugmentedJQuery = null;\n\n // $element.find('> thead').length === 0 doesn't work on jqlite\n let theadFound = false;\n ng1.forEach(this.$element.children(), (e) => {\n if (e.tagName === 'THEAD') {\n theadFound = true;\n }\n });\n if (!theadFound) {\n headerTemplate = ng1.element('', this.$document);\n this.$element.prepend(headerTemplate);\n }\n const paginationTemplate = ng1.element(\n '
',\n this.$document\n );\n this.$element.after(paginationTemplate);\n if (headerTemplate) {\n this.$compile(headerTemplate)(this.$scope);\n }\n this.$compile(paginationTemplate)(this.$scope);\n }\n }\n\n loadFilterData($columns: IColumnDef[]) {\n ng1.forEach($columns, ($column) => {\n const result = $column.filterData(this.$scope);\n if (!result) {\n delete $column.filterData;\n return undefined;\n }\n\n if (isPromiseLike(result)) {\n delete $column.filterData;\n return result.then(data => {\n // our deferred can eventually return arrays, functions and objects\n if (!ng1.isArray(data) && !ng1.isFunction(data) && !ng1.isObject(data)) {\n // if none of the above was found - we just want an empty array\n data = [];\n }\n $column.data = data;\n });\n }\n // otherwise, we just return what the user gave us. It could be a function, array, object, whatever\n else {\n return $column.data = result;\n }\n });\n\n function isPromiseLike(val: any): val is IPromise {\n return val && typeof val === 'object' && typeof val.then === 'function';\n }\n }\n\n buildColumns(columns: TCol[]): IColumnDef[] {\n // todo: use strictNullChecks and remove guard clause\n const result: IColumnDef[] = [];\n (columns || []).forEach(col => {\n result.push(this.ngTableColumn.buildColumn(col, this.$scope, result));\n });\n return result\n }\n\n parseNgTableDynamicExpr(attr: string) {\n if (!attr || attr.indexOf(\" with \") > -1) {\n const parts = attr.split(/\\s+with\\s+/);\n return {\n tableParams: parts[0],\n columns: parts[1]\n };\n } else {\n throw new Error('Parse error (expected example: ng-table-dynamic=\\'tableParams with cols\\')');\n }\n }\n\n setupBindingsToInternalScope(tableParamsExpr: string) {\n\n // note: this we're setting up watches to simulate angular's isolated scope bindings\n\n // note: is REALLY important to watch for a change to the ngTableParams *reference* rather than\n // $watch for value equivalence. This is because ngTableParams references the current page of data as\n // a field and it's important not to watch this\n this.$scope.$watch>(tableParamsExpr, (params) => {\n if (params === undefined) {\n return;\n }\n this.$scope.params = params;\n }, false);\n\n this.setupFilterRowBindingsToInternalScope();\n this.setupGroupRowBindingsToInternalScope();\n }\n\n private setupFilterRowBindingsToInternalScope() {\n if (this.$attrs.showFilter) {\n this.$scope.$parent.$watch(this.$attrs.showFilter, (value) => {\n this.$scope.show_filter = value;\n });\n } else {\n this.$scope.$watch(() => this.hasVisibleFilterColumn, (value) => {\n this.$scope.show_filter = value;\n })\n }\n\n if (this.$attrs.disableFilter) {\n this.$scope.$parent.$watch(this.$attrs.disableFilter, (value) => {\n this.$scope.$filterRow.disabled = value;\n });\n }\n }\n\n private setupGroupRowBindingsToInternalScope() {\n this.$scope.$groupRow = { show: false };\n if (this.$attrs.showGroup) {\n const showGroupGetter = this.$parse(this.$attrs.showGroup);\n this.$scope.$parent.$watch(showGroupGetter, (value) => {\n this.$scope.$groupRow.show = value;\n });\n if (showGroupGetter.assign) {\n // setup two-way databinding thus allowing ngTableGrowRow to assign to the showGroup expression\n this.$scope.$watch('$groupRow.show', (value) => {\n showGroupGetter.assign(this.$scope.$parent, value);\n });\n }\n } else {\n this.$scope.$watch('params.hasGroup()', (newValue) => {\n this.$scope.$groupRow.show = newValue;\n });\n }\n }\n\n private getVisibleColumns() {\n return (this.$scope.$columns || []).filter((c) => {\n return c.show(this.$scope);\n });\n }\n\n private subscribeToTableEvents() {\n\n this.$scope.$watch('params.isDataReloadRequired()', (newStatus: boolean/*, oldStatus*/) => {\n this.onDataReloadStatusChange(newStatus);\n });\n\n this.ngTableEventsChannel.onAfterReloadData(\n (params, newDatapage) => {\n const visibleColumns = this.getVisibleColumns();\n if (params.hasGroup()) {\n this.$scope.$groups = (newDatapage || []) as GroupedDataResults;\n this.$scope.$groups.visibleColumnCount = visibleColumns.length;\n } else {\n this.$scope.$data = (newDatapage || []) as DataResults;\n this.$scope.$data.visibleColumnCount = visibleColumns.length;\n }\n },\n this.$scope,\n (publisher) => this.$scope.params === publisher\n );\n\n this.ngTableEventsChannel.onPagesChanged(\n (params, newPages) => {\n this.$scope.pages = newPages;\n },\n this.$scope,\n (publisher) => this.$scope.params === publisher\n );\n }\n\n private some(array: T[], predicate: (item: T) => boolean) {\n let found = false;\n for (let i = 0; i < array.length; i++) {\n const obj = array[i];\n if (predicate(obj)) {\n found = true;\n break;\n }\n }\n return found;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableController.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IAugmentedJQuery, IDirective, IScope } from 'angular';\nimport * as ng1 from 'angular';\nimport { IColumnDef, IDynamicTableColDef, ITableInputAttributes } from './public-interfaces';\nimport { NgTableController } from './ngTableController';\n\ninterface IScopeExtensions {\n $columns: IColumnDef[]\n}\n\nngTableDynamic.$inject = [];\n\n/**\n * A dynamic version of the {@link ngTable ngTable} directive that accepts a dynamic list of columns\n * definitions to render\n * @ngdoc directive\n *\n * @example\n * ```html\n *
\n * \n * \n * \n *
{{row[col.field]}}
\n * ```\n */\nexport function ngTableDynamic () : IDirective{\n\n return {\n restrict: 'A',\n priority: 1001,\n scope: true,\n controller: 'ngTableController',\n compile: function(tElement: IAugmentedJQuery) {\n let row: IAugmentedJQuery;\n\n // IE 8 fix :not(.ng-table-group) selector\n ng1.forEach(tElement.find('tr'), (tr: JQuery) => {\n tr = ng1.element(tr);\n if (!tr.hasClass('ng-table-group') && !row) {\n row = tr;\n }\n });\n if (!row) {\n return undefined;\n }\n\n ng1.forEach(row.find('td'), (item: JQuery) => {\n const el = ng1.element(item);\n const getAttrValue = (attr: string) => {\n return el.attr('x-data-' + attr) || el.attr('data-' + attr) || el.attr(attr);\n };\n\n // this used in responsive table\n const titleExpr = getAttrValue('title');\n if (!titleExpr){\n el.attr('data-title-text', '{{$columns[$index].titleAlt(this) || $columns[$index].title(this)}}');\n }\n const showExpr = el.attr('ng-if');\n if (!showExpr){\n el.attr('ng-if', '$columns[$index].show(this)');\n }\n });\n return function (scope: IScope & IScopeExtensions, element: IAugmentedJQuery, attrs: ITableInputAttributes, controller: NgTableController) {\n const expr = controller.parseNgTableDynamicExpr(attrs.ngTableDynamic);\n\n controller.setupBindingsToInternalScope(expr.tableParams);\n controller.compileDirectiveTemplates();\n\n scope.$watchCollection(expr.columns, (newCols/*, oldCols*/) => {\n scope.$columns = controller.buildColumns(newCols);\n controller.loadFilterData(scope.$columns);\n });\n };\n }\n };\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableDynamic.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport * as ng1 from 'angular';\nimport { IServiceProvider, auto } from 'angular';\nimport { IFilterConfigValues, IFilterTemplateDef } from './public-interfaces';\n\n/**\n * The angular provider used to configure the behaviour of the `NgTableFilterConfig` service.\n */\nexport class NgTableFilterConfigProvider implements IServiceProvider {\n static $inject = ['$injector'];\n $get: () => NgTableFilterConfig;\n private config: IFilterConfigValues;\n private defaultConfig: IFilterConfigValues = {\n defaultBaseUrl: 'ng-table/filters/',\n defaultExt: '.html',\n aliasUrls: {}\n };\n constructor($injector: auto.IInjectorService) {\n this.$get = () => {\n return $injector.instantiate(NgTableFilterConfig, { config: ng1.copy(this.config) });\n }\n this.$get.$inject = [];\n this.resetConfigs();\n }\n\n /**\n * Reset back to factory defaults the config values that `NgTableFilterConfig` service will use\n */\n resetConfigs() {\n this.config = this.defaultConfig;\n }\n\n /**\n * Set the config values used by `NgTableFilterConfig` service\n */\n setConfig(customConfig: IFilterConfigValues) {\n const mergeConfig = ng1.extend({}, this.config, customConfig);\n mergeConfig.aliasUrls = ng1.extend({}, this.config.aliasUrls, customConfig.aliasUrls);\n this.config = mergeConfig;\n }\n}\n\n/**\n * Exposes configuration values and methods used to return the location of the html\n * templates used to render the filter row of an ng-table directive\n */\nexport class NgTableFilterConfig {\n static $inject = ['config'];\n constructor(\n /**\n * Readonly copy of the final values used to configure the service.\n */\n public readonly config: IFilterConfigValues\n ) { }\n\n /**\n * Return the url of the html filter template registered with the alias supplied\n */\n getUrlForAlias(aliasName: string, filterKey?: string) {\n return this.config.aliasUrls[aliasName] || this.config.defaultBaseUrl + aliasName + this.config.defaultExt;\n }\n \n /**\n * Return the url of the html filter template for the supplied definition and key.\n * For more information see the documentation for {@link IFilterTemplateMap}\n */\n getTemplateUrl(filterDef: string | IFilterTemplateDef, filterKey?: string) {\n let filterName: string;\n if (typeof filterDef !== 'string') {\n filterName = filterDef.id;\n } else {\n filterName = filterDef;\n }\n if (filterName.indexOf('/') !== -1) {\n return filterName;\n }\n\n return this.getUrlForAlias(filterName, filterKey);\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableFilterConfig.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nconst templateUrl = require('./filterRow.html');\n\nngTableFilterRow.$inject = [];\n\n/**\n * directive that renders the filter header row for a table \n * @ngdoc directive\n * @example\n * ```html\n * \n * ```\n */\nexport function ngTableFilterRow(){\n const directive = {\n restrict: 'E',\n replace: true,\n templateUrl: templateUrl,\n scope: true,\n controller: 'ngTableFilterRowController',\n controllerAs: '$ctrl'\n };\n return directive;\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableFilterRow.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IScope } from 'angular';\nimport { IFilterTemplateDef, IFilterTemplateDefMap } from './public-interfaces';\nimport { NgTableFilterConfig } from './ngTableFilterConfig';\n\n/**\n * @private\n */\nexport interface IScopeExtensions {\n getFilterPlaceholderValue(filterDef: string | IFilterTemplateDef, filterKey?: string): string;\n}\n\n/**\n * Controller for the {@link ngTableFilterRow ngTableFilterRow} directive\n */\nexport class NgTableFilterRowController {\n static $inject = ['$scope', 'ngTableFilterConfig'];\n config: NgTableFilterConfig;\n constructor($scope: IScope & IScopeExtensions, ngTableFilterConfig: NgTableFilterConfig) {\n this.config = ngTableFilterConfig;\n\n // todo: stop doing this. Why?\n // * scope inheritance makes it hard to know how supplies functions\n // * scope is not a concept in angular 2\n // make function available to filter templates\n $scope.getFilterPlaceholderValue = this.getFilterPlaceholderValue.bind(this);\n }\n\n getFilterCellCss(filter: IFilterTemplateDefMap, layout: string) {\n if (layout !== 'horizontal') {\n return 's12';\n }\n\n const size = Object.keys(filter).length;\n const width = parseInt((12 / size).toString(), 10);\n return 's' + width;\n }\n\n getFilterPlaceholderValue(filterDef: string | IFilterTemplateDef, filterKey?: string) {\n if (typeof filterDef === 'string') {\n return '';\n } else {\n return filterDef.placeholder;\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableFilterRowController.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nconst templateUrl = require('./groupRow.html');\n\nngTableGroupRow.$inject = [];\n\n/**\n * directive that renders the group header row for a table \n * @ngdoc directive\n * @example\n * ```html\n * \n * ```\n */\nexport function ngTableGroupRow(){\n const directive = {\n restrict: 'E',\n replace: true,\n templateUrl: templateUrl,\n scope: true,\n controller: 'ngTableGroupRowController',\n controllerAs: '$ctrl'\n };\n return directive;\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableGroupRow.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IPromise } from 'angular';\nimport { DataResult, IGroupingFunc, Grouping, GroupSort } from '../core';\nimport { IColumnDef } from './public-interfaces';\nimport { ITableScope } from './ngTableController';\n\n/**\n * @private\n */\nexport interface IScopeExtensions {\n $selGroup: IGroupingFunc | string;\n $selGroupTitle: string;\n}\n\n\n/**\n * Controller for the {@link ngTableGroupRow ngTableGroupRow} directive\n */\nexport class NgTableGroupRowController {\n static $inject = ['$scope'];\n private groupFns: Array | IColumnDef> = [];\n constructor(private $scope: ITableScope & IScopeExtensions) {\n $scope.$watch>('params.group()', (newGrouping) => {\n this.setGroup(newGrouping);\n }, true);\n }\n\n getGroupables() {\n const groupableCols = this.$scope.$columns.filter($column => !!$column.groupable(this.$scope));\n return this.groupFns.concat(groupableCols);\n }\n\n getGroupTitle(group: IGroupingFunc | IColumnDef) {\n return this.isGroupingFunc(group) ? group.title : group.title(this.$scope);\n }\n\n\n getVisibleColumns() {\n return this.$scope.$columns.filter($column => $column.show(this.$scope))\n }\n\n groupBy(group: IGroupingFunc | IColumnDef) {\n if (this.isSelectedGroup(group)) {\n this.changeSortDirection();\n } else {\n if (this.isGroupingFunc(group)) {\n this.$scope.params.group(group);\n } else {\n // it's OK, we know that groupable will return a string\n // this is guaranteed by getGroupables returning only\n // columns that return (truthy) strings\n this.$scope.params.group(group.groupable(this.$scope) as string);\n }\n }\n }\n\n isSelectedGroup(group: IGroupingFunc | IColumnDef) {\n if (this.isGroupingFunc(group)) {\n return group === this.$scope.$selGroup;\n } else {\n return group.groupable(this.$scope) === this.$scope.$selGroup;\n }\n }\n\n toggleDetail() {\n this.$scope.params.settings().groupOptions.isExpanded = !this.$scope.params.settings().groupOptions.isExpanded;\n return this.$scope.params.reload();\n }\n\n private changeSortDirection() {\n let newDirection: GroupSort;\n if (this.$scope.params.hasGroup(this.$scope.$selGroup, 'asc')) {\n newDirection = 'desc';\n } else if (this.$scope.params.hasGroup(this.$scope.$selGroup, 'desc')) {\n newDirection = '';\n } else {\n newDirection = 'asc';\n }\n this.$scope.params.group(this.$scope.$selGroup, newDirection);\n }\n\n private findGroupColumn(groupKey: IGroupingFunc | string) {\n return this.$scope.$columns.filter($column => $column.groupable(this.$scope) === groupKey)[0];\n }\n\n private isGroupingFunc(val: IColumnDef | Grouping): val is IGroupingFunc {\n return typeof val === 'function';\n }\n\n private setGroup(grouping: Grouping) {\n const existingGroupCol = this.findGroupColumn(this.$scope.$selGroup);\n if (existingGroupCol && existingGroupCol.show.assign) {\n existingGroupCol.show.assign(this.$scope, true);\n }\n if (this.isGroupingFunc(grouping)) {\n this.groupFns = [grouping];\n this.$scope.$selGroup = grouping;\n this.$scope.$selGroupTitle = grouping.title;\n } else {\n // note: currently only one group is implemented\n const groupKey = Object.keys(grouping || {})[0];\n const groupedColumn = this.findGroupColumn(groupKey);\n if (groupedColumn) {\n this.$scope.$selGroupTitle = groupedColumn.title(this.$scope);\n this.$scope.$selGroup = groupKey;\n if (groupedColumn.show.assign) {\n groupedColumn.show.assign(this.$scope, false);\n }\n }\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableGroupRowController.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport * as ng1 from 'angular';\nimport { NgTableEventsChannel, IPageButton } from '../core'\nimport { ITableScope } from './ngTableController';\n\ninterface IScopeExtensions {\n pages: IPageButton[]\n}\n\nngTablePagination.$inject = ['$compile', '$document', 'ngTableEventsChannel'];\n\n/**\n * Directive that renders the table pagination controls\n * @ngdoc directive\n */\nexport function ngTablePagination($compile: ng1.ICompileService, $document: ng1.IDocumentService, ngTableEventsChannel: NgTableEventsChannel): ng1.IDirective {\n\n return {\n restrict: 'A',\n scope: {\n 'params': '=ngTablePagination',\n 'templateUrl': '='\n },\n replace: false,\n link: function(scope: ITableScope & IScopeExtensions, element: ng1.IAugmentedJQuery/*, attrs*/) {\n\n ngTableEventsChannel.onAfterReloadData(function(pubParams) {\n scope.pages = pubParams.generatePagesArray();\n }, scope, function(pubParams){\n return pubParams === scope.params;\n });\n\n scope.$watch('templateUrl', function(templateUrl) {\n if (templateUrl === undefined) {\n return;\n }\n const template = ng1.element('
', $document);\n element.append(template);\n $compile(template)(scope);\n });\n }\n };\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTablePagination.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport * as ng1 from 'angular';\nimport { IColumnDef, SelectData, ISelectDataFunc, ISelectOption } from './public-interfaces';\n\n/**\n * @private\n */\nexport interface IInputAttributes extends ng1.IAttributes {\n ngTableSelectFilterDs: string;\n}\n\n/**\n * @private\n */\nexport interface IScopeExtensions {\n $selectData: ISelectOption[]\n}\n\nngTableSelectFilterDs.$inject = [];\n\n/**\n * Takes the array returned by $column.filterData and makes it available as `$selectData` on the `$scope`.\n *\n * The resulting `$selectData` array will contain an extra item that is suitable to represent the user\n * \"deselecting\" an item from a ` \";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/filters/number.html\n// module id = 43\n// module chunks = 0","var path = 'ng-table/filters/select-multiple.html';\nvar html = \" \";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/filters/select-multiple.html\n// module id = 44\n// module chunks = 0","var path = 'ng-table/filters/select.html';\nvar html = \" \";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/filters/select.html\n// module id = 45\n// module chunks = 0","var path = 'ng-table/filters/text.html';\nvar html = \" \";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/filters/text.html\n// module id = 46\n// module chunks = 0","var path = 'ng-table/groupRow.html';\nvar html = \" {{$selGroupTitle}} \";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/groupRow.html\n// module id = 47\n// module chunks = 0","var path = 'ng-table/header.html';\nvar html = \" \";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/header.html\n// module id = 48\n// module chunks = 0","var path = 'ng-table/pager.html';\nvar html = \" \";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/pager.html\n// module id = 49\n// module chunks = 0","var path = 'ng-table/sorterRow.html';\nvar html = \"
\";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/sorterRow.html\n// module id = 50\n// module chunks = 0","import * as ng1 from 'angular';\nimport { ngTableCoreModule } from './src/core';\nimport { ngTableBrowserModule } from './src/browser';\n\nconst ngTableModule = ng1.module('ngTable', [ngTableCoreModule.name, ngTableBrowserModule.name]);\n\nexport { ngTableModule };\nexport * from './src/core';\nexport * from './src/browser';\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./index.ts"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-table.min.js","webpack:///webpack/bootstrap a04a664fd136d6195bd8","webpack:///external \"angular\"","webpack:///./src/core/index.ts","webpack:///./src/browser/index.ts","webpack:///./src/browser/ngTableFilterConfig.ts","webpack:///./src/core/grouping/groupSettings.ts","webpack:///./src/core/ngTableEventsChannel.ts","webpack:///./src/core/ngTableParams.ts","webpack:///./src/core/ngTableSettings.ts","webpack:///./src/core/util.ts","webpack:///./src/browser/ngTable.directive.ts","webpack:///./src/browser/ngTableColumn.ts","webpack:///./src/browser/ngTableColumnsBinding.directive.ts","webpack:///./src/browser/ngTableController.ts","webpack:///./src/browser/ngTableDynamic.directive.ts","webpack:///./src/browser/ngTableFilterRow.directive.ts","webpack:///./src/browser/ngTableFilterRowController.ts","webpack:///./src/browser/ngTableGroupRow.directive.ts","webpack:///./src/browser/ngTableGroupRowController.ts","webpack:///./src/browser/ngTablePagination.directive.ts","webpack:///./src/browser/ngTableSelectFilterDs.directive.ts","webpack:///./src/browser/ngTableSorterRow.directive.ts","webpack:///./src/browser/ngTableSorterRowController.ts","webpack:///./src/core/data/dataSettings.ts","webpack:///./src/core/data/ngTableDefaultGetData.ts","webpack:///./src/core/filtering/filterSettings.ts","webpack:///./src/core/grouping/ngTableDefaultGetGroups.ts","webpack:///./src/core/ngTableDefaults.ts","webpack:///./src/shared/assign-partial-deep.ts","webpack:///./src/shared/check-class-init.ts","webpack:///./src/browser/filterRow.html","webpack:///./src/browser/filters/number.html","webpack:///./src/browser/filters/select-multiple.html","webpack:///./src/browser/filters/select.html","webpack:///./src/browser/filters/text.html","webpack:///./src/browser/groupRow.html","webpack:///./src/browser/header.html","webpack:///./src/browser/pager.html","webpack:///./src/browser/sorterRow.html","webpack:///./index.ts"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_0__","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","value","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","__WEBPACK_IMPORTED_MODULE_0_angular__","__WEBPACK_IMPORTED_MODULE_1__data__","__WEBPACK_IMPORTED_MODULE_2__grouping__","__WEBPACK_IMPORTED_MODULE_3__ngTableDefaults__","__WEBPACK_IMPORTED_MODULE_4__ngTableSettings__","__WEBPACK_IMPORTED_MODULE_5__ngTableParams__","__WEBPACK_IMPORTED_MODULE_6__ngTableEventsChannel__","__WEBPACK_IMPORTED_MODULE_7__filtering__","__WEBPACK_IMPORTED_MODULE_8__grouping_publicExports__","ngTableCoreModule","provider","service","run","init","__WEBPACK_IMPORTED_MODULE_1__ngTable_directive__","__WEBPACK_IMPORTED_MODULE_2__ngTableColumn__","__WEBPACK_IMPORTED_MODULE_3__ngTableColumnsBinding_directive__","__WEBPACK_IMPORTED_MODULE_4__ngTableController__","__WEBPACK_IMPORTED_MODULE_5__ngTableDynamic_directive__","__WEBPACK_IMPORTED_MODULE_6__ngTableFilterConfig__","__WEBPACK_IMPORTED_MODULE_7__ngTableFilterRow_directive__","__WEBPACK_IMPORTED_MODULE_8__ngTableFilterRowController__","__WEBPACK_IMPORTED_MODULE_9__ngTableGroupRow_directive__","__WEBPACK_IMPORTED_MODULE_10__ngTableGroupRowController__","__WEBPACK_IMPORTED_MODULE_11__ngTablePagination_directive__","__WEBPACK_IMPORTED_MODULE_12__ngTableSelectFilterDs_directive__","__WEBPACK_IMPORTED_MODULE_13__ngTableSorterRow_directive__","__WEBPACK_IMPORTED_MODULE_14__ngTableSorterRowController__","__WEBPACK_IMPORTED_MODULE_15__filters_number_html__","__WEBPACK_IMPORTED_MODULE_16__filters_select_html__","__WEBPACK_IMPORTED_MODULE_17__filters_select_multiple_html__","__WEBPACK_IMPORTED_MODULE_18__filters_text_html__","__WEBPACK_IMPORTED_MODULE_19__pager_html__","__WEBPACK_IMPORTED_MODULE_20__header_html__","ngTableBrowserModule","directive","controller","__WEBPACK_IMPORTED_MODULE_0__dataSettings__","__WEBPACK_IMPORTED_MODULE_1__ngTableDefaultGetData__","__WEBPACK_IMPORTED_MODULE_0__assign_partial_deep__","__WEBPACK_IMPORTED_MODULE_1__check_class_init__","__WEBPACK_IMPORTED_MODULE_1__shared__","FilterConfigValues","NgTableFilterConfigProvider","NgTableFilterConfig","defaultBaseUrl","defaultExt","aliasUrls","$injector","_this","$get","instantiate","config","$inject","resetConfigs","setConfig","customConfig","getUrlForAlias","aliasName","filterKey","getTemplateUrl","filterDef","filterName","id","indexOf","__WEBPACK_IMPORTED_MODULE_0__filterSettings__","GroupSettings","defaultSort","isExpanded","__WEBPACK_IMPORTED_MODULE_0__groupSettings__","__WEBPACK_IMPORTED_MODULE_1__ngTableDefaultGetGroups__","NgTableEventsChannel","$rootScope","events","addTableParamsEvent","eventName","target","fnName","charAt","toUpperCase","substring","event","_a","createEventSubscriptionFn","createPublishEventFn","args","_i","arguments","length","$broadcast","apply","concat","createEventSelectorFn","eventSelector","isEventSelectorFunc","publisher","val","isScopeLike","$new","handler","eventSelectorOrScope","actualEvtSelector","scope","$on","params","eventArgs","isNullInstance","fnArgs","isNumber","isNaN","parseFloat","isFinite","__WEBPACK_IMPORTED_MODULE_1__util__","__WEBPACK_IMPORTED_MODULE_2__shared__","__WEBPACK_IMPORTED_MODULE_3__ngTableSettings__","ParamValues","NgTableParams","page","count","filter","sorting","group","baseParameters","baseSettings","data","defaultSettings","createWithOverrides","isCommittedDataset","initialEvents","_params","_settings","reloadPages","currentPages","oldPages","newPages","generatePagesArray","total","ngTableEventsChannel","publishPagesChanged","ngTableDefaults","settings","parameters","publishAfterCreated","undefined","keys","significantFilter","filterValue","currentPage","totalItems","pageSize","maxBlocks","maxPage","maxPivotPages","minPage","numPages","pages","Math","ceil","push","type","number","max","active","current","round","paginationMaxBlocks","paginationMinBlocks","min","sortDirection","newParameters","hasErrorState","errParamsMemento","createComparableParams","hasFilter","hasFilterChanges","previousFilter","prevParamsMemento","hasGlobalSearchFieldChanges","hasGroup","isDataReloadRequired","isSortBy","field","direction","orderBy","parseParamsFromUrl","key","split","reverse","lastKey","len","name_1","v","parseGroup","log","reload","pData","$loading","runInterceptorPipeline","$q","when","getGroups","fn","getData","oldData","then","publishAfterReloadData","catch","reason","reject","newSettings","merge","originalDataset","dataset","hasDatasetChanged","fireEvent","publishDatasetChanged","url","asString","collectValue","isArray","pairs","encodeURIComponent","isSignificantValue","item","name_2","subkey","pname","groupSortDirection","currentVal","previousVal","debugMode","$log","debug","groupOptions","fetchedData","interceptors","reduce","result","interceptor","thenFn","response","bind","rejectFn","responseError","__WEBPACK_IMPORTED_MODULE_2__data__","__WEBPACK_IMPORTED_MODULE_3__filtering__","__WEBPACK_IMPORTED_MODULE_4__grouping__","Settings","counts","dataOptions","filterOptions","defaultGetData","defaultGetGroups","Array","sortingIndicator","instance","existing","optionalPropNames","results","destValue","srcValue","optimizeFilterDelay","filterDelay","filterDelayThreshold","ngTableDefaultGetData","ngTableDefaultGetGroups","isInitialized","convertSortToOrderBy","column","isGroupingFun","ngTable","$parse","restrict","priority","compile","element","dataRow","groupRow","compiledColumns","rows","find","tr","hasClass","el","attr","getAttrValue","setAttrValue","parsedAttribute","expr","localValue","context","assign","$scope","parsedExpr","$parent","titleExpr","title","titleAlt","headerTitle","sortable","class","groupable","headerTemplateURL","filterData","show","attrs","columns","$columns","buildColumns","setupBindingsToInternalScope","loadFilterData","compileDirectiveTemplates","NgTableColumn","buildColumn","defaultScope","extendedCol","create","defaults","createDefaults","_loop_1","prop","getterSetter","getterFn","$column","localValue_1","wrappedGetterFn_1","createGetterSetter","initialValue","newValue","ngTableColumnsBinding","linkFn","$element","$attrs","setter","$watch","newColumns","shallowClone","slice","link","__WEBPACK_IMPORTED_MODULE_1__core__","NgTableController","$timeout","$compile","$document","ngTableColumn","$filterRow","disabled","delayFilter","timer","callback","ms","cancel","newParams","oldParams","subscribeToTableEvents","some","onDataReloadStatusChange","newStatus","currentParams","applyFilter","templates","header","templateHeader","pagination","templatePagination","addClass","headerTemplate","theadFound_1","children","e","tagName","prepend","paginationTemplate","after","isPromiseLike","forEach","col","parseNgTableDynamicExpr","parts","tableParams","Error","tableParamsExpr","setupFilterRowBindingsToInternalScope","setupGroupRowBindingsToInternalScope","showFilter","show_filter","hasVisibleFilterColumn","disableFilter","$groupRow","showGroup","showGroupGetter_1","getVisibleColumns","onAfterReloadData","newDatapage","visibleColumns","$groups","visibleColumnCount","$data","onPagesChanged","array","predicate","found","obj","toArray","arr","ngTableDynamic","tElement","tRows","getElementsByTagName","tRow","tCell","showExpr","$watchCollection","newCols","ngTableFilterRow","replace","templateUrl","controllerAs","NgTableFilterRowController","ngTableFilterConfig","getFilterPlaceholderValue","getFilterCellCss","layout","size","width","parseInt","toString","placeholder","ngTableGroupRow","NgTableGroupRowController","groupFns","newGrouping","setGroup","getGroupables","groupableCols","getGroupTitle","isGroupingFunc","groupBy","isSelectedGroup","changeSortDirection","$selGroup","toggleDetail","newDirection","findGroupColumn","groupKey","grouping","existingGroupCol","$selGroupTitle","groupedColumn","ngTablePagination","pubParams","template","append","ngTableSelectFilterDs","NgTableSelectFilterDsController","bindDataSource","getSelectListData","hasEmptyOption","unshift","$selectData","isMatch","dataInput","ngTableSorterRow","NgTableSorterRowController","sortBy","parsedSortable","inverseSort","sortingParams","ctrlKey","metaKey","DataSettings","applyPaging","applySort","NgTableDefaultGetDataProvider","$filter","getFilterFn","filterFn","filterFilterName","getOrderByFn","sortingFilterName","filterKeys","parsedFilter","setPath","filterComparator","pagedData","orderByFn","options","fData","publishAfterDataFiltered","orderedData","publishAfterDataSorted","path","ret","parentPathKeys","FilterSettings","filterLayout","groupFn","groupField_1","getPath","originalDataOptions","gotData","groups","groupName","$hideRows","finally","ks","assignPartialDeep","destination","partial","optionalPropSelector","customizer","keys_1","srcVal","destVal","customVal","checkClassInit","clazz","html","angular","put","__WEBPACK_IMPORTED_MODULE_1__src_core__","__WEBPACK_IMPORTED_MODULE_2__src_browser__","ngTableModule"],"mappings":"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","file":"ng-table.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-table\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-table\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_0__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-table\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-table\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_0__) {\nreturn /******/ (function(modules) { // webpackBootstrap\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/******/\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// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\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 = 44);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__data__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__grouping__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__ngTableDefaults__ = __webpack_require__(32);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__ngTableSettings__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__ngTableParams__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__ngTableEventsChannel__ = __webpack_require__(9);\n/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, \"d\", function() { return __WEBPACK_IMPORTED_MODULE_6__ngTableEventsChannel__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(exports, \"c\", function() { return __WEBPACK_IMPORTED_MODULE_4__ngTableSettings__[\"a\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, \"a\", function() { return __WEBPACK_IMPORTED_MODULE_5__ngTableParams__[\"a\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, \"e\", function() { return __WEBPACK_IMPORTED_MODULE_5__ngTableParams__[\"b\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, \"f\", function() { return __WEBPACK_IMPORTED_MODULE_1__data__[\"a\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, \"g\", function() { return __WEBPACK_IMPORTED_MODULE_1__data__[\"b\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__filtering__ = __webpack_require__(6);\n/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, \"h\", function() { return __WEBPACK_IMPORTED_MODULE_7__filtering__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__grouping_publicExports__ = __webpack_require__(31);\n/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, \"i\", function() { return __WEBPACK_IMPORTED_MODULE_8__grouping_publicExports__[\"a\"]; });\n/* harmony export (binding) */ __webpack_require__.d(exports, \"b\", function() { return ngTableCoreModule; });\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nvar ngTableCoreModule = __WEBPACK_IMPORTED_MODULE_0_angular__[\"module\"]('ngTable-core', [])\r\n .provider('ngTableDefaultGetData', __WEBPACK_IMPORTED_MODULE_1__data__[\"b\" /* NgTableDefaultGetDataProvider */])\r\n .factory('ngTableDefaultGetGroups', __WEBPACK_IMPORTED_MODULE_2__grouping__[\"b\" /* ngTableDefaultGetGroups */])\r\n .value('ngTableDefaults', __WEBPACK_IMPORTED_MODULE_3__ngTableDefaults__[\"a\" /* ngTableDefaults */])\r\n .service('ngTableEventsChannel', __WEBPACK_IMPORTED_MODULE_6__ngTableEventsChannel__[\"a\" /* NgTableEventsChannel */])\r\n .run(__WEBPACK_IMPORTED_MODULE_4__ngTableSettings__[\"a\" /* Settings */].init)\r\n .run(__WEBPACK_IMPORTED_MODULE_5__ngTableParams__[\"a\" /* NgTableParams */].init);\r\n// note: if you are using ES6 or typescript prefer:\r\n// import { NgTableParams } from 'ng-table';\r\nngTableCoreModule.value('NgTableParams', __WEBPACK_IMPORTED_MODULE_5__ngTableParams__[\"a\" /* NgTableParams */]);\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__ngTable_directive__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ngTableColumn__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__ngTableColumnsBinding_directive__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__ngTableController__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__ngTableDynamic_directive__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__ngTableFilterConfig__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__ngTableFilterRow_directive__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__ngTableFilterRowController__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__ngTableGroupRow_directive__ = __webpack_require__(21);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__ngTableGroupRowController__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__ngTablePagination_directive__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__ngTableSelectFilterDs_directive__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__ngTableSorterRow_directive__ = __webpack_require__(25);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__ngTableSorterRowController__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__filters_number_html__ = __webpack_require__(36);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__filters_number_html___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_15__filters_number_html__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__filters_select_html__ = __webpack_require__(38);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__filters_select_html___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_16__filters_select_html__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__filters_select_multiple_html__ = __webpack_require__(37);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__filters_select_multiple_html___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_17__filters_select_multiple_html__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__filters_text_html__ = __webpack_require__(39);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__filters_text_html___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_18__filters_text_html__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__pager_html__ = __webpack_require__(42);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__pager_html___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_19__pager_html__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__header_html__ = __webpack_require__(41);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__header_html___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_20__header_html__);\n/* harmony reexport (binding) */ __webpack_require__.d(exports, \"b\", function() { return __WEBPACK_IMPORTED_MODULE_4__ngTableController__[\"a\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, \"c\", function() { return __WEBPACK_IMPORTED_MODULE_6__ngTableFilterConfig__[\"b\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, \"d\", function() { return __WEBPACK_IMPORTED_MODULE_6__ngTableFilterConfig__[\"a\"]; });\n/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, \"e\", function() { return __WEBPACK_IMPORTED_MODULE_6__ngTableFilterConfig__[\"c\"]; });\n/* harmony export (binding) */ __webpack_require__.d(exports, \"a\", function() { return ngTableBrowserModule; });\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nvar ngTableBrowserModule = __WEBPACK_IMPORTED_MODULE_0_angular__[\"module\"]('ngTable-browser', [])\r\n .directive('ngTable', __WEBPACK_IMPORTED_MODULE_1__ngTable_directive__[\"a\" /* ngTable */])\r\n .service('ngTableColumn', __WEBPACK_IMPORTED_MODULE_2__ngTableColumn__[\"a\" /* NgTableColumn */])\r\n .directive('ngTableColumnsBinding', __WEBPACK_IMPORTED_MODULE_3__ngTableColumnsBinding_directive__[\"a\" /* ngTableColumnsBinding */])\r\n .controller('ngTableController', __WEBPACK_IMPORTED_MODULE_4__ngTableController__[\"a\" /* NgTableController */])\r\n .directive('ngTableDynamic', __WEBPACK_IMPORTED_MODULE_5__ngTableDynamic_directive__[\"a\" /* ngTableDynamic */])\r\n .provider('ngTableFilterConfig', __WEBPACK_IMPORTED_MODULE_6__ngTableFilterConfig__[\"a\" /* NgTableFilterConfigProvider */])\r\n .directive('ngTableFilterRow', __WEBPACK_IMPORTED_MODULE_7__ngTableFilterRow_directive__[\"a\" /* ngTableFilterRow */])\r\n .controller('ngTableFilterRowController', __WEBPACK_IMPORTED_MODULE_8__ngTableFilterRowController__[\"a\" /* NgTableFilterRowController */])\r\n .directive('ngTableGroupRow', __WEBPACK_IMPORTED_MODULE_9__ngTableGroupRow_directive__[\"a\" /* ngTableGroupRow */])\r\n .controller('ngTableGroupRowController', __WEBPACK_IMPORTED_MODULE_10__ngTableGroupRowController__[\"a\" /* NgTableGroupRowController */])\r\n .directive('ngTablePagination', __WEBPACK_IMPORTED_MODULE_11__ngTablePagination_directive__[\"a\" /* ngTablePagination */])\r\n .directive('ngTableSelectFilterDs', __WEBPACK_IMPORTED_MODULE_12__ngTableSelectFilterDs_directive__[\"a\" /* ngTableSelectFilterDs */])\r\n .directive('ngTableSorterRow', __WEBPACK_IMPORTED_MODULE_13__ngTableSorterRow_directive__[\"a\" /* ngTableSorterRow */])\r\n .controller('ngTableSorterRowController', __WEBPACK_IMPORTED_MODULE_14__ngTableSorterRowController__[\"a\" /* NgTableSorterRowController */]);\r\n\r\n\r\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__dataSettings__ = __webpack_require__(27);\n/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, \"a\", function() { return __WEBPACK_IMPORTED_MODULE_0__dataSettings__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__ngTableDefaultGetData__ = __webpack_require__(28);\n/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, \"b\", function() { return __WEBPACK_IMPORTED_MODULE_1__ngTableDefaultGetData__[\"a\"]; });\n\r\n\r\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__assign_partial_deep__ = __webpack_require__(33);\n/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, \"b\", function() { return __WEBPACK_IMPORTED_MODULE_0__assign_partial_deep__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__check_class_init__ = __webpack_require__(34);\n/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, \"a\", function() { return __WEBPACK_IMPORTED_MODULE_1__check_class_init__[\"a\"]; });\n\r\n\r\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__shared__ = __webpack_require__(4);\n/* harmony export (binding) */ __webpack_require__.d(exports, \"b\", function() { return FilterConfigValues; });\n/* harmony export (binding) */ __webpack_require__.d(exports, \"a\", function() { return NgTableFilterConfigProvider; });\n/* harmony export (binding) */ __webpack_require__.d(exports, \"c\", function() { return NgTableFilterConfig; });\n/**\r\n * ngTable: Table + Angular JS\r\n *\r\n * @author Vitalii Savchuk \r\n * @url https://github.com/esvit/ng-table/\r\n * @license New BSD License \r\n */\r\n\r\n\r\n/**\r\n * Configuration values that determine the behaviour of the `ngTableFilterConfig` service\r\n */\r\nvar FilterConfigValues = (function () {\r\n function FilterConfigValues() {\r\n /**\r\n * The default base url to use when deriving the url for a filter template given just an alias name\r\n */\r\n this.defaultBaseUrl = 'ng-table/filters/';\r\n /**\r\n * The extension to use when deriving the url of a filter template when given just an alias name\r\n */\r\n this.defaultExt = '.html';\r\n /**\r\n * A map of alias names and their corrosponding urls. A lookup against this map will be used\r\n * to find the url matching an alias name.\r\n * If no match is found then a url will be derived using the following pattern `${defaultBaseUrl}${aliasName}.${defaultExt}`\r\n */\r\n this.aliasUrls = {};\r\n }\r\n return FilterConfigValues;\r\n}());\r\n\r\n/**\r\n * The angular provider used to configure the behaviour of the `NgTableFilterConfig` service.\r\n */\r\nvar NgTableFilterConfigProvider = (function () {\r\n function NgTableFilterConfigProvider($injector) {\r\n var _this = this;\r\n this.$get = function () {\r\n return $injector.instantiate(NgTableFilterConfig, { config: __WEBPACK_IMPORTED_MODULE_0_angular__[\"copy\"](_this.config) });\r\n };\r\n this.$get.$inject = [];\r\n this.resetConfigs();\r\n }\r\n /**\r\n * Reset back to factory defaults the config values that `NgTableFilterConfig` service will use\r\n */\r\n NgTableFilterConfigProvider.prototype.resetConfigs = function () {\r\n this.config = new FilterConfigValues();\r\n };\r\n /**\r\n * Set the config values used by `NgTableFilterConfig` service\r\n */\r\n NgTableFilterConfigProvider.prototype.setConfig = function (customConfig) {\r\n this.config = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__shared__[\"b\" /* assignPartialDeep */])(__WEBPACK_IMPORTED_MODULE_0_angular__[\"copy\"](this.config), customConfig);\r\n };\r\n return NgTableFilterConfigProvider;\r\n}());\r\n\r\nNgTableFilterConfigProvider.$inject = ['$injector'];\r\n/**\r\n * Exposes configuration values and methods used to return the location of the html\r\n * templates used to render the filter row of an ng-table directive\r\n */\r\nvar NgTableFilterConfig = (function () {\r\n function NgTableFilterConfig(\r\n /**\r\n * Readonly copy of the final values used to configure the service.\r\n */\r\n config) {\r\n this.config = config;\r\n }\r\n /**\r\n * Return the url of the html filter template registered with the alias supplied\r\n */\r\n NgTableFilterConfig.prototype.getUrlForAlias = function (aliasName, filterKey) {\r\n return this.config.aliasUrls[aliasName] || this.config.defaultBaseUrl + aliasName + this.config.defaultExt;\r\n };\r\n /**\r\n * Return the url of the html filter template for the supplied definition and key.\r\n * For more information see the documentation for {@link FilterTemplateMap}\r\n */\r\n NgTableFilterConfig.prototype.getTemplateUrl = function (filterDef, filterKey) {\r\n var filterName;\r\n if (typeof filterDef !== 'string') {\r\n filterName = filterDef.id;\r\n }\r\n else {\r\n filterName = filterDef;\r\n }\r\n if (filterName.indexOf('/') !== -1) {\r\n return filterName;\r\n }\r\n return this.getUrlForAlias(filterName, filterKey);\r\n };\r\n return NgTableFilterConfig;\r\n}());\r\n\r\nNgTableFilterConfig.$inject = ['config'];\r\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__filterSettings__ = __webpack_require__(29);\n/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, \"a\", function() { return __WEBPACK_IMPORTED_MODULE_0__filterSettings__[\"a\"]; });\n\r\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(exports, \"a\", function() { return GroupSettings; });\n/**\r\n * Configuration that determines the data row grouping behaviour of a table\r\n */\r\nvar GroupSettings = (function () {\r\n function GroupSettings() {\r\n /**\r\n * The default sort direction that will be used whenever a group is supplied that\r\n * does not define its own sort direction\r\n */\r\n this.defaultSort = 'asc';\r\n /**\r\n * Determines whether groups should be displayed expanded to show their items. Defaults to true\r\n */\r\n this.isExpanded = true;\r\n }\r\n return GroupSettings;\r\n}());\r\n\r\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__groupSettings__ = __webpack_require__(7);\n/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, \"a\", function() { return __WEBPACK_IMPORTED_MODULE_0__groupSettings__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__ngTableDefaultGetGroups__ = __webpack_require__(30);\n/* harmony namespace reexport (by used) */ __webpack_require__.d(exports, \"b\", function() { return __WEBPACK_IMPORTED_MODULE_1__ngTableDefaultGetGroups__[\"a\"]; });\n\r\n\r\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__);\n/* harmony export (binding) */ __webpack_require__.d(exports, \"a\", function() { return NgTableEventsChannel; });\n/**\r\n * ngTable: Table + Angular JS\r\n *\r\n * @author Vitalii Savchuk \r\n * @url https://github.com/esvit/ng-table/\r\n * @license New BSD License \r\n */\r\n\r\nvar NgTableEventsChannel = (function () {\r\n function NgTableEventsChannel($rootScope) {\r\n this.$rootScope = $rootScope;\r\n var events = this;\r\n events = this.addTableParamsEvent('afterCreated', events);\r\n events = this.addTableParamsEvent('afterReloadData', events);\r\n events = this.addTableParamsEvent('datasetChanged', events);\r\n events = this.addTableParamsEvent('pagesChanged', events);\r\n events = this.addTableParamsEvent('afterDataFiltered', events);\r\n events = this.addTableParamsEvent('afterDataSorted', events);\r\n }\r\n NgTableEventsChannel.prototype.addTableParamsEvent = function (eventName, target) {\r\n var fnName = eventName.charAt(0).toUpperCase() + eventName.substring(1);\r\n var event = (_a = {},\r\n _a['on' + fnName] = this.createEventSubscriptionFn(eventName),\r\n _a['publish' + fnName] = this.createPublishEventFn(eventName),\r\n _a);\r\n return __WEBPACK_IMPORTED_MODULE_0_angular__[\"extend\"](target, event);\r\n var _a;\r\n };\r\n NgTableEventsChannel.prototype.createPublishEventFn = function (eventName) {\r\n var _this = this;\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n (_a = _this.$rootScope).$broadcast.apply(_a, ['ngTable:' + eventName].concat(args));\r\n var _a;\r\n };\r\n };\r\n NgTableEventsChannel.prototype.createEventSubscriptionFn = function (eventName) {\r\n var _this = this;\r\n return function (handler, eventSelectorOrScope, eventSelector) {\r\n var actualEvtSelector;\r\n var scope = _this.$rootScope;\r\n if (isScopeLike(eventSelectorOrScope)) {\r\n scope = eventSelectorOrScope;\r\n actualEvtSelector = createEventSelectorFn(eventSelector);\r\n }\r\n else {\r\n actualEvtSelector = createEventSelectorFn(eventSelectorOrScope);\r\n }\r\n return scope.$on('ngTable:' + eventName, function (event, params) {\r\n var eventArgs = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n eventArgs[_i - 2] = arguments[_i];\r\n }\r\n // don't send events published by the internal NgTableParams created by ngTableController\r\n if (params.isNullInstance)\r\n return;\r\n var fnArgs = [params].concat(eventArgs);\r\n if (actualEvtSelector.apply(this, fnArgs)) {\r\n handler.apply(this, fnArgs);\r\n }\r\n });\r\n };\r\n function createEventSelectorFn(eventSelector) {\r\n if (eventSelector === void 0) { eventSelector = function () { return true; }; }\r\n if (isEventSelectorFunc(eventSelector)) {\r\n return eventSelector;\r\n }\r\n else {\r\n // shorthand for subscriber to only receive events from a specific publisher instance\r\n return function (publisher) { return publisher === eventSelector; };\r\n }\r\n }\r\n function isEventSelectorFunc(val) {\r\n return typeof val === 'function';\r\n }\r\n function isScopeLike(val) {\r\n return val && typeof val.$new === 'function';\r\n }\r\n };\r\n return NgTableEventsChannel;\r\n}());\r\n\r\nNgTableEventsChannel.$inject = ['$rootScope'];\r\n\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__shared__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__ngTableSettings__ = __webpack_require__(11);\n/* harmony export (binding) */ __webpack_require__.d(exports, \"b\", function() { return ParamValues; });\n/* harmony export (binding) */ __webpack_require__.d(exports, \"a\", function() { return NgTableParams; });\n/**\r\n * ngTable: Table + Angular JS\r\n *\r\n * @author Vitalii Savchuk \r\n * @url https://github.com/esvit/ng-table/\r\n * @license New BSD License \r\n */\r\n\r\n\r\n\r\n\r\n/**\r\n * The runtime values for {@link NgTableParams} that determine the set of data rows and\r\n * how they are to be displayed in a table\r\n */\r\nvar ParamValues = (function () {\r\n function ParamValues() {\r\n /**\r\n * The index of the \"slice\" of data rows, starting at 1, to be displayed by the table.\r\n */\r\n this.page = 1;\r\n /**\r\n * The number of data rows per page\r\n */\r\n this.count = 10;\r\n /**\r\n * The filter that should be applied to restrict the set of data rows\r\n */\r\n this.filter = {};\r\n /**\r\n * The sort order that should be applied to the data rows.\r\n */\r\n this.sorting = {};\r\n /**\r\n * The grouping that should be applied to the data rows\r\n */\r\n this.group = {};\r\n }\r\n return ParamValues;\r\n}());\r\n\r\n/**\r\n * @private\r\n */\r\nfunction isNumber(n) {\r\n return !isNaN(parseFloat(n)) && isFinite(n);\r\n}\r\n/**\r\n * Parameters manager for an ngTable directive\r\n */\r\nvar NgTableParams = (function () {\r\n function NgTableParams(baseParameters, baseSettings) {\r\n if (baseParameters === void 0) { baseParameters = {}; }\r\n if (baseSettings === void 0) { baseSettings = {}; }\r\n var _this = this;\r\n /**\r\n * The page of data rows currently being displayed in the table\r\n */\r\n this.data = [];\r\n this.defaultSettings = __WEBPACK_IMPORTED_MODULE_3__ngTableSettings__[\"a\" /* Settings */].createWithOverrides();\r\n this.isCommittedDataset = false;\r\n this.initialEvents = [];\r\n this._params = new ParamValues();\r\n this._settings = this.defaultSettings;\r\n // the ngTableController \"needs\" to create a dummy/null instance and it's important to know whether an instance\r\n // is one of these\r\n if (typeof baseParameters === \"boolean\") {\r\n this.isNullInstance = true;\r\n }\r\n this.reloadPages = (function () {\r\n var currentPages;\r\n return function () {\r\n var oldPages = currentPages;\r\n var newPages = _this.generatePagesArray(_this.page(), _this.total(), _this.count());\r\n if (!__WEBPACK_IMPORTED_MODULE_0_angular__[\"equals\"](oldPages, newPages)) {\r\n currentPages = newPages;\r\n _this.ngTableEventsChannel.publishPagesChanged(_this, newPages, oldPages);\r\n }\r\n };\r\n })();\r\n __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__shared__[\"b\" /* assignPartialDeep */])(this._params, this.ngTableDefaults.params);\r\n this.settings(baseSettings);\r\n this.parameters(baseParameters, true);\r\n this.ngTableEventsChannel.publishAfterCreated(this);\r\n // run events during construction after the initial create event. That way a consumer\r\n // can subscribe to all events for a table without \"dropping\" an event\r\n __WEBPACK_IMPORTED_MODULE_0_angular__[\"forEach\"](this.initialEvents, function (event) {\r\n event();\r\n });\r\n this.initialEvents = null;\r\n }\r\n NgTableParams.prototype.count = function (count) {\r\n // reset to first page because can be blank page\r\n return count !== undefined ? this.parameters({\r\n 'count': count,\r\n 'page': 1\r\n }) : this._params.count;\r\n };\r\n NgTableParams.prototype.filter = function (filter) {\r\n if (filter != null && typeof filter === 'object') {\r\n return this.parameters({\r\n 'filter': filter,\r\n 'page': 1\r\n });\r\n }\r\n else if (filter === true) {\r\n var keys = Object.keys(this._params.filter);\r\n var significantFilter = {};\r\n for (var i = 0; i < keys.length; i++) {\r\n var filterValue = this._params.filter[keys[i]];\r\n if (filterValue != null && filterValue !== '') {\r\n significantFilter[keys[i]] = filterValue;\r\n }\r\n }\r\n return significantFilter;\r\n }\r\n else {\r\n return this._params.filter;\r\n }\r\n };\r\n /**\r\n * Generate array of pages.\r\n * When no arguments supplied, the current parameter state of this `NgTableParams` instance will be used\r\n * @param currentPage Which page must be active\r\n * @param totalItems Total quantity of items\r\n * @param pageSize Quantity of items on page\r\n * @param maxBlocks Quantity of blocks for pagination\r\n * @returns Array of pages\r\n */\r\n NgTableParams.prototype.generatePagesArray = function (currentPage, totalItems, pageSize, maxBlocks) {\r\n if (!arguments.length) {\r\n currentPage = this.page();\r\n totalItems = this.total();\r\n pageSize = this.count();\r\n }\r\n var maxPage, maxPivotPages, minPage, numPages;\r\n maxBlocks = maxBlocks && maxBlocks < 6 ? 6 : maxBlocks;\r\n var pages = [];\r\n numPages = Math.ceil(totalItems / pageSize);\r\n if (numPages > 1) {\r\n pages.push({\r\n type: 'prev',\r\n number: Math.max(1, currentPage - 1),\r\n active: currentPage > 1\r\n });\r\n pages.push({\r\n type: 'first',\r\n number: 1,\r\n active: currentPage > 1,\r\n current: currentPage === 1\r\n });\r\n maxPivotPages = Math.round((this._settings.paginationMaxBlocks - this._settings.paginationMinBlocks) / 2);\r\n minPage = Math.max(2, currentPage - maxPivotPages);\r\n maxPage = Math.min(numPages - 1, currentPage + maxPivotPages * 2 - (currentPage - minPage));\r\n minPage = Math.max(2, minPage - (maxPivotPages * 2 - (maxPage - minPage)));\r\n var i = minPage;\r\n while (i <= maxPage) {\r\n if ((i === minPage && i !== 2) || (i === maxPage && i !== numPages - 1)) {\r\n pages.push({\r\n type: 'more',\r\n active: false\r\n });\r\n }\r\n else {\r\n pages.push({\r\n type: 'page',\r\n number: i,\r\n active: currentPage !== i,\r\n current: currentPage === i\r\n });\r\n }\r\n i++;\r\n }\r\n pages.push({\r\n type: 'last',\r\n number: numPages,\r\n active: currentPage !== numPages,\r\n current: currentPage === numPages\r\n });\r\n pages.push({\r\n type: 'next',\r\n number: Math.min(numPages, currentPage + 1),\r\n active: currentPage < numPages\r\n });\r\n }\r\n return pages;\r\n };\r\n NgTableParams.prototype.group = function (group, sortDirection) {\r\n if (group === undefined) {\r\n return this._params.group;\r\n }\r\n var newParameters = {\r\n page: 1\r\n };\r\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util__[\"a\" /* isGroupingFun */])(group) && sortDirection !== undefined) {\r\n group.sortDirection = sortDirection;\r\n newParameters.group = group;\r\n }\r\n else if (typeof group === 'string' && sortDirection !== undefined) {\r\n newParameters.group = (_a = {}, _a[group] = sortDirection, _a);\r\n }\r\n else {\r\n newParameters.group = group;\r\n }\r\n this.parameters(newParameters);\r\n return this;\r\n var _a;\r\n };\r\n /**\r\n * Returns true when an attempt to `reload` the current `parameter` values have resulted in a failure.\r\n * This method will continue to return true until the `reload` is successfully called or when the\r\n * `parameter` values have changed\r\n */\r\n NgTableParams.prototype.hasErrorState = function () {\r\n return !!(this.errParamsMemento && __WEBPACK_IMPORTED_MODULE_0_angular__[\"equals\"](this.errParamsMemento, this.createComparableParams()));\r\n };\r\n /**\r\n * Returns true if `filter` has significant filter value(s) (any value except null, undefined, or empty string),\r\n * otherwise false\r\n */\r\n NgTableParams.prototype.hasFilter = function () {\r\n return Object.keys(this.filter(true)).length > 0;\r\n };\r\n /**\r\n * Return true when a change to `filters` require the `reload` method\r\n * to be run so as to ensure the data presented to the user reflects these filters\r\n */\r\n NgTableParams.prototype.hasFilterChanges = function () {\r\n var previousFilter = (this.prevParamsMemento && this.prevParamsMemento.params.filter);\r\n return !__WEBPACK_IMPORTED_MODULE_0_angular__[\"equals\"]((this._params.filter), previousFilter) || this.hasGlobalSearchFieldChanges();\r\n };\r\n NgTableParams.prototype.hasGroup = function (group, sortDirection) {\r\n if (group == null) {\r\n return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util__[\"a\" /* isGroupingFun */])(this._params.group) || Object.keys(this._params.group).length > 0;\r\n }\r\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util__[\"a\" /* isGroupingFun */])(group)) {\r\n if (sortDirection == null) {\r\n return this._params.group === group;\r\n }\r\n else {\r\n return this._params.group === group && group.sortDirection === sortDirection;\r\n }\r\n }\r\n else {\r\n if (sortDirection == null) {\r\n return Object.keys(this._params.group).indexOf(group) !== -1;\r\n }\r\n else {\r\n return this._params.group[group] === sortDirection;\r\n }\r\n }\r\n };\r\n /**\r\n * Return true when a change to this instance should require the `reload` method\r\n * to be run so as to ensure the data rows presented to the user reflects the current state.\r\n *\r\n * Note that this method will return false when the `reload` method has run but fails. In this case\r\n * `hasErrorState` will return true.\r\n *\r\n * The built-in `ngTable` directives will watch for when this function returns true and will then call\r\n * the `reload` method to load its data rows\r\n */\r\n NgTableParams.prototype.isDataReloadRequired = function () {\r\n // note: using != as want to treat null and undefined the same\r\n return !this.isCommittedDataset || !__WEBPACK_IMPORTED_MODULE_0_angular__[\"equals\"](this.createComparableParams(), this.prevParamsMemento)\r\n || this.hasGlobalSearchFieldChanges();\r\n };\r\n /**\r\n * Returns true if sorting by the field supplied. Where direction supplied\r\n * the field must also be sorted by that direction to return true\r\n */\r\n NgTableParams.prototype.isSortBy = function (field, direction) {\r\n if (direction !== undefined) {\r\n return this._params.sorting[field] !== undefined && this._params.sorting[field] == direction;\r\n }\r\n else {\r\n return this._params.sorting[field] !== undefined;\r\n }\r\n };\r\n /**\r\n * Returns sorting values in a format that can be consumed by the angular `$orderBy` filter service\r\n */\r\n NgTableParams.prototype.orderBy = function () {\r\n return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util__[\"b\" /* convertSortToOrderBy */])(this._params.sorting);\r\n };\r\n NgTableParams.prototype.page = function (page) {\r\n return page !== undefined ? this.parameters({\r\n 'page': page\r\n }) : this._params.page;\r\n };\r\n NgTableParams.prototype.parameters = function (newParameters, parseParamsFromUrl) {\r\n if (newParameters === undefined) {\r\n return this._params;\r\n }\r\n // todo: move parsing of url like parameters into a seperate method\r\n parseParamsFromUrl = parseParamsFromUrl || false;\r\n for (var key in newParameters) {\r\n var value = newParameters[key];\r\n if (parseParamsFromUrl && key.indexOf('[') >= 0) {\r\n var keys = key.split(/\\[(.*)\\]/).reverse();\r\n var lastKey = '';\r\n for (var i = 0, len = keys.length; i < len; i++) {\r\n var name_1 = keys[i];\r\n if (name_1 !== '') {\r\n var v = value;\r\n value = {};\r\n value[lastKey = name_1] = (isNumber(v) ? parseFloat(v) : v);\r\n }\r\n }\r\n if (lastKey === 'sorting') {\r\n this._params[lastKey] = {};\r\n }\r\n this._params[lastKey] = __WEBPACK_IMPORTED_MODULE_0_angular__[\"extend\"](this._params[lastKey] || {}, value[lastKey]);\r\n }\r\n else {\r\n if (newParameters[key] === undefined) {\r\n }\r\n else if (key === 'group') {\r\n this._params[key] = this.parseGroup(newParameters[key]);\r\n }\r\n else {\r\n this._params[key] = (isNumber(newParameters[key]) ? parseFloat(newParameters[key]) : newParameters[key]);\r\n }\r\n }\r\n }\r\n this.log('ngTable: set parameters', this._params);\r\n return this;\r\n };\r\n /**\r\n * Trigger a reload of the data rows\r\n */\r\n NgTableParams.prototype.reload = function () {\r\n var _this = this;\r\n var pData;\r\n this._settings.$loading = true;\r\n this.prevParamsMemento = __WEBPACK_IMPORTED_MODULE_0_angular__[\"copy\"](this.createComparableParams());\r\n this.isCommittedDataset = true;\r\n if (this.hasGroup()) {\r\n pData = this.runInterceptorPipeline(this.$q.when(this._settings.getGroups(this)));\r\n }\r\n else {\r\n var fn = this._settings.getData;\r\n pData = this.runInterceptorPipeline(this.$q.when(fn(this)));\r\n }\r\n this.log('ngTable: reload data');\r\n var oldData = this.data;\r\n return pData.then(function (data) {\r\n _this._settings.$loading = false;\r\n _this.errParamsMemento = null;\r\n _this.data = data;\r\n // note: I think it makes sense to publish this event even when data === oldData\r\n // subscribers can always set a filter to only receive the event when data !== oldData\r\n _this.ngTableEventsChannel.publishAfterReloadData(_this, data, oldData);\r\n _this.reloadPages();\r\n return data;\r\n }).catch(function (reason) {\r\n _this.errParamsMemento = _this.prevParamsMemento;\r\n // \"rethrow\"\r\n return _this.$q.reject(reason);\r\n });\r\n };\r\n NgTableParams.prototype.settings = function (newSettings) {\r\n var _this = this;\r\n if (newSettings === undefined) {\r\n return this._settings;\r\n }\r\n var settings = __WEBPACK_IMPORTED_MODULE_3__ngTableSettings__[\"a\" /* Settings */].merge(this._settings, newSettings);\r\n var originalDataset = this._settings.dataset;\r\n this._settings = settings;\r\n // note: using != as want null and undefined to be treated the same\r\n var hasDatasetChanged = newSettings.hasOwnProperty('dataset') && (newSettings.dataset != originalDataset);\r\n if (hasDatasetChanged) {\r\n if (this.isCommittedDataset) {\r\n this.page(1); // reset page as a new dataset has been supplied\r\n }\r\n this.isCommittedDataset = false;\r\n var fireEvent = function () {\r\n _this.ngTableEventsChannel.publishDatasetChanged(_this, newSettings.dataset, originalDataset);\r\n };\r\n if (this.initialEvents) {\r\n this.initialEvents.push(fireEvent);\r\n }\r\n else {\r\n fireEvent();\r\n }\r\n }\r\n this.log('ngTable: set settings', this._settings);\r\n return this;\r\n };\r\n NgTableParams.prototype.sorting = function (sorting, direction) {\r\n if (typeof sorting === 'string') {\r\n this.parameters({\r\n 'sorting': (_a = {}, _a[sorting] = direction || this.settings().defaultSort, _a)\r\n });\r\n return this;\r\n }\r\n return sorting !== undefined ? this.parameters({\r\n 'sorting': sorting\r\n }) : this._params.sorting;\r\n var _a;\r\n };\r\n NgTableParams.prototype.total = function (total) {\r\n return total !== undefined ? this.settings({\r\n 'total': total\r\n }) : this._settings.total;\r\n };\r\n /**\r\n * Returns the current parameter values uri-encoded. Set `asString` to\r\n * true for the parameters to be returned as an array of strings of the form 'paramName=value'\r\n * otherwise parameters returned as a key-value object\r\n */\r\n NgTableParams.prototype.url = function (asString) {\r\n if (asString === void 0) { asString = false; }\r\n var pairs = (asString ? [] : {});\r\n for (var key in this._params) {\r\n if (this._params.hasOwnProperty(key)) {\r\n var item = this._params[key], name_2 = encodeURIComponent(key);\r\n if (typeof item === \"object\") {\r\n for (var subkey in item) {\r\n if (isSignificantValue(item[subkey], key)) {\r\n var pname = name_2 + \"[\" + encodeURIComponent(subkey) + \"]\";\r\n collectValue(item[subkey], pname);\r\n }\r\n }\r\n }\r\n else if (!__WEBPACK_IMPORTED_MODULE_0_angular__[\"isFunction\"](item) && isSignificantValue(item, key)) {\r\n collectValue(item, name_2);\r\n }\r\n }\r\n }\r\n return pairs;\r\n function collectValue(value, key) {\r\n if (isArray(pairs)) {\r\n pairs.push(key + \"=\" + encodeURIComponent(value));\r\n }\r\n else {\r\n pairs[key] = encodeURIComponent(value);\r\n }\r\n }\r\n function isArray(pairs) {\r\n return asString;\r\n }\r\n function isSignificantValue(value, key) {\r\n return key === \"group\" ? true : typeof value !== undefined && value !== \"\";\r\n }\r\n };\r\n NgTableParams.prototype.createComparableParams = function () {\r\n var group = this._params.group;\r\n return {\r\n params: this._params,\r\n groupSortDirection: __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util__[\"a\" /* isGroupingFun */])(group) ? group.sortDirection : undefined\r\n };\r\n };\r\n NgTableParams.prototype.hasGlobalSearchFieldChanges = function () {\r\n var currentVal = (this._params.filter && this._params.filter['$']);\r\n var previousVal = (this.prevParamsMemento && this.prevParamsMemento.params.filter && this.prevParamsMemento.params.filter['$']);\r\n return !__WEBPACK_IMPORTED_MODULE_0_angular__[\"equals\"](currentVal, previousVal);\r\n };\r\n NgTableParams.prototype.log = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (this._settings.debugMode && this.$log.debug) {\r\n (_a = this.$log).debug.apply(_a, args);\r\n }\r\n var _a;\r\n };\r\n NgTableParams.prototype.parseGroup = function (group) {\r\n var defaultSort = this._settings.groupOptions.defaultSort;\r\n if (!group) {\r\n return group;\r\n }\r\n else if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util__[\"a\" /* isGroupingFun */])(group)) {\r\n if (group.sortDirection == null) {\r\n group.sortDirection = defaultSort;\r\n }\r\n return group;\r\n }\r\n else if (typeof group === 'object') {\r\n for (var key in group) {\r\n if (group[key] == null) {\r\n group[key] = defaultSort;\r\n }\r\n }\r\n return group;\r\n }\r\n else {\r\n return _a = {},\r\n _a[group] = defaultSort,\r\n _a;\r\n }\r\n var _a;\r\n };\r\n NgTableParams.prototype.runInterceptorPipeline = function (fetchedData) {\r\n var _this = this;\r\n return this._settings.interceptors.reduce(function (result, interceptor) {\r\n var thenFn = (interceptor.response && interceptor.response.bind(interceptor)) || _this.$q.when;\r\n var rejectFn = (interceptor.responseError && interceptor.responseError.bind(interceptor)) || _this.$q.reject;\r\n return result.then(function (data) {\r\n return thenFn(data, _this);\r\n }, function (reason) {\r\n return rejectFn(reason, _this);\r\n });\r\n }, fetchedData);\r\n };\r\n NgTableParams.init = function ($q, $log, ngTableDefaults, ngTableEventsChannel) {\r\n __WEBPACK_IMPORTED_MODULE_0_angular__[\"extend\"](NgTableParams.prototype, {\r\n $q: $q, $log: $log, ngTableDefaults: ngTableDefaults, ngTableEventsChannel: ngTableEventsChannel\r\n });\r\n };\r\n return NgTableParams;\r\n}());\r\n\r\nNgTableParams.init.$inject = ['$q', '$log', 'ngTableDefaults', 'ngTableEventsChannel'];\r\n\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__shared__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__data__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__filtering__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__grouping__ = __webpack_require__(8);\n/* harmony export (binding) */ __webpack_require__.d(exports, \"a\", function() { return Settings; });\n\r\n\r\n\r\n\r\n\r\n/**\r\n * Configuration settings for {@link NgTableParams}\r\n */\r\nvar Settings = (function () {\r\n function Settings() {\r\n /**\r\n * Returns true whenever a call to `getData` is in progress\r\n */\r\n this.$loading = false;\r\n /**\r\n * The page size buttons that should be displayed. Each value defined in the array\r\n * determines the possible values that can be supplied to {@link NgTableParams} `page`\r\n */\r\n this.counts = [10, 25, 50, 100];\r\n /**\r\n * An array that contains all the data rows that table should manage.\r\n * The `gateData` function will be used to manage the data rows\r\n * that ultimately will be displayed.\r\n */\r\n this.dataset = undefined;\r\n this.dataOptions = new __WEBPACK_IMPORTED_MODULE_2__data__[\"a\" /* DataSettings */]();\r\n this.debugMode = false;\r\n /**\r\n * The total number of data rows before paging has been applied.\r\n * Typically you will not need to supply this yourself\r\n */\r\n this.total = 0;\r\n /**\r\n * The default sort direction that will be used whenever a sorting is supplied that\r\n * does not define its own sort direction\r\n */\r\n this.defaultSort = 'desc';\r\n this.filterOptions = new __WEBPACK_IMPORTED_MODULE_3__filtering__[\"a\" /* FilterSettings */]();\r\n /**\r\n * The function that will be used fetch data rows. Leave undefined to let the {@link IDefaultGetData}\r\n * service provide a default implementation that will work with the `dataset` array you supply.\r\n *\r\n * Typically you will supply a custom function when you need to execute filtering, paging and sorting\r\n * on the server\r\n */\r\n this.getData = Settings.defaultGetData;\r\n /**\r\n * The function that will be used group data rows according to the groupings returned by {@link NgTableParams} `group`\r\n */\r\n this.getGroups = Settings.defaultGetGroups;\r\n this.groupOptions = new __WEBPACK_IMPORTED_MODULE_4__grouping__[\"a\" /* GroupSettings */]();\r\n /**\r\n * The collection of interceptors that should apply to the results of a call to\r\n * the `getData` function before the data rows are displayed in the table\r\n */\r\n this.interceptors = new Array();\r\n /**\r\n * Configuration for the template that will display the page size buttons\r\n */\r\n this.paginationMaxBlocks = 11;\r\n /**\r\n * Configuration for the template that will display the page size buttons\r\n */\r\n this.paginationMinBlocks = 5;\r\n /**\r\n * The html tag that will be used to display the sorting indicator in the table header\r\n */\r\n this.sortingIndicator = 'span';\r\n __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__shared__[\"a\" /* checkClassInit */])(Settings);\r\n }\r\n Settings.createWithOverrides = function () {\r\n __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__shared__[\"a\" /* checkClassInit */])(Settings);\r\n return Settings.merge(Settings.instance, Settings.ngTableDefaults.settings || {});\r\n };\r\n Settings.merge = function (existing, newSettings) {\r\n __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__shared__[\"a\" /* checkClassInit */])(Settings);\r\n var optionalPropNames = ['dataset'];\r\n var results = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__shared__[\"b\" /* assignPartialDeep */])(__WEBPACK_IMPORTED_MODULE_0_angular__[\"copy\"](existing), newSettings, function (key) { return optionalPropNames.indexOf(key) !== -1; }, function (destValue, srcValue, key) {\r\n // copy *reference* to dataset\r\n if (key === 'dataset') {\r\n return srcValue;\r\n }\r\n return undefined;\r\n });\r\n if (newSettings.dataset) {\r\n results.total = newSettings.dataset.length;\r\n Settings.optimizeFilterDelay(results);\r\n }\r\n return results;\r\n };\r\n Settings.optimizeFilterDelay = function (settings) {\r\n // don't debounce by default filter input when working with small synchronous datasets\r\n if (settings.filterOptions.filterDelay === Settings.instance.filterOptions.filterDelay &&\r\n settings.total <= settings.filterOptions.filterDelayThreshold &&\r\n settings.getData === Settings.instance.getData) {\r\n settings.filterOptions.filterDelay = 0;\r\n }\r\n };\r\n Settings.init = function (ngTableDefaultGetData, ngTableDefaultGetGroups, ngTableDefaults) {\r\n Settings.defaultGetData = function (params) {\r\n return ngTableDefaultGetData(params.settings().dataset, params);\r\n };\r\n Settings.defaultGetGroups = ngTableDefaultGetGroups;\r\n Settings.ngTableDefaults = ngTableDefaults;\r\n Settings.isInitialized = true;\r\n Settings.instance = new Settings();\r\n };\r\n return Settings;\r\n}());\r\n\r\nSettings.isInitialized = false;\r\nSettings.init.$inject = ['ngTableDefaultGetData', 'ngTableDefaultGetGroups', 'ngTableDefaults'];\r\n\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ exports[\"b\"] = convertSortToOrderBy;\n/* harmony export (immutable) */ exports[\"a\"] = isGroupingFun;\n/**\r\n * @private\r\n */\r\nfunction convertSortToOrderBy(sorting) {\r\n var result = [];\r\n for (var column in sorting) {\r\n result.push((sorting[column] === \"asc\" ? \"+\" : \"-\") + column);\r\n }\r\n return result;\r\n}\r\n/**\r\n * @private\r\n */\r\nfunction isGroupingFun(val) {\r\n return typeof val === 'function';\r\n}\r\n\n\n/***/ },\n/* 13 */,\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__);\n/* harmony export (immutable) */ exports[\"a\"] = ngTable;\n\r\nngTable.$inject = ['$q', '$parse'];\r\n/**\r\n * Directive that instantiates {@link NgTableController NgTableController}.\r\n * @ngdoc directive\r\n * @name ngTable\r\n * @example\r\n *\r\n * ```html\r\n * \r\n * \r\n * \r\n * \r\n * \r\n *
\r\n * {{user.name}}\r\n * \r\n * {{user.age}}\r\n *
\r\n * ```\r\n */\r\nfunction ngTable($q, $parse) {\r\n return {\r\n restrict: 'A',\r\n priority: 1001,\r\n scope: true,\r\n controller: 'ngTableController',\r\n compile: function (element) {\r\n var compiledColumns = [], i = 0, dataRow, groupRow;\r\n var rows = [];\r\n __WEBPACK_IMPORTED_MODULE_0_angular__[\"forEach\"](element.find('tr'), function (tr) {\r\n rows.push(__WEBPACK_IMPORTED_MODULE_0_angular__[\"element\"](tr));\r\n });\r\n dataRow = rows.filter(function (tr) { return !tr.hasClass('ng-table-group'); })[0];\r\n groupRow = rows.filter(function (tr) { return tr.hasClass('ng-table-group'); })[0];\r\n if (!dataRow) {\r\n return undefined;\r\n }\r\n __WEBPACK_IMPORTED_MODULE_0_angular__[\"forEach\"](dataRow.find('td'), function (item) {\r\n var el = __WEBPACK_IMPORTED_MODULE_0_angular__[\"element\"](item);\r\n if (el.attr('ignore-cell') && 'true' === el.attr('ignore-cell')) {\r\n return;\r\n }\r\n var getAttrValue = function (attr) {\r\n return el.attr('x-data-' + attr) || el.attr('data-' + attr) || el.attr(attr);\r\n };\r\n var setAttrValue = function (attr, value) {\r\n if (el.attr('x-data-' + attr)) {\r\n el.attr('x-data-' + attr, value);\r\n }\r\n else if (el.attr('data' + attr)) {\r\n el.attr('data' + attr, value);\r\n }\r\n else {\r\n el.attr(attr, value);\r\n }\r\n };\r\n var parsedAttribute = function (attr) {\r\n var expr = getAttrValue(attr);\r\n if (!expr) {\r\n return undefined;\r\n }\r\n var localValue;\r\n var getter = function (context) {\r\n if (localValue !== undefined) {\r\n return localValue;\r\n }\r\n return $parse(expr)(context);\r\n };\r\n getter.assign = function ($scope, value) {\r\n var parsedExpr = $parse(expr);\r\n if (parsedExpr.assign) {\r\n // we should be writing back to the parent scope as this is where the expression\r\n // came from\r\n parsedExpr.assign($scope.$parent, value);\r\n }\r\n else {\r\n localValue = value;\r\n }\r\n };\r\n return getter;\r\n };\r\n var titleExpr = getAttrValue('title-alt') || getAttrValue('title');\r\n if (titleExpr) {\r\n el.attr('data-title-text', '{{' + titleExpr + '}}'); // this used in responsive table\r\n }\r\n // NOTE TO MAINTAINERS: if you add extra fields to a $column be sure to extend ngTableColumn with\r\n // a corresponding \"safe\" default\r\n compiledColumns.push({\r\n id: i++,\r\n title: parsedAttribute('title'),\r\n titleAlt: parsedAttribute('title-alt'),\r\n headerTitle: parsedAttribute('header-title'),\r\n sortable: parsedAttribute('sortable'),\r\n 'class': parsedAttribute('header-class'),\r\n filter: parsedAttribute('filter'),\r\n groupable: parsedAttribute('groupable'),\r\n headerTemplateURL: parsedAttribute('header'),\r\n filterData: parsedAttribute('filter-data'),\r\n show: el.attr(\"ng-if\") ? parsedAttribute('ng-if') : undefined\r\n });\r\n if (groupRow || el.attr(\"ng-if\")) {\r\n // change ng-if to bind to our column definition which we know will be writable\r\n // because this will potentially increase the $watch count, only do so if we already have an\r\n // ng-if or when we definitely need to change visibility of the columns.\r\n // currently only ngTableGroupRow directive needs to change visibility\r\n setAttrValue('ng-if', '$columns[' + (compiledColumns.length - 1) + '].show(this)');\r\n }\r\n });\r\n return function (scope, element, attrs, controller) {\r\n var columns = scope.$columns = controller.buildColumns(compiledColumns);\r\n controller.setupBindingsToInternalScope(attrs.ngTable);\r\n controller.loadFilterData(columns);\r\n controller.compileDirectiveTemplates();\r\n };\r\n }\r\n };\r\n}\r\n\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__);\n/* harmony export (binding) */ __webpack_require__.d(exports, \"a\", function() { return NgTableColumn; });\n/**\r\n * ngTable: Table + Angular JS\r\n *\r\n * @author Vitalii Savchuk \r\n * @url https://github.com/esvit/ng-table/\r\n * @license New BSD License \r\n */\r\n\r\n/**\r\n * @private\r\n */\r\nfunction isScopeLike(object) {\r\n return object != null && __WEBPACK_IMPORTED_MODULE_0_angular__[\"isFunction\"](object.$new);\r\n}\r\n/**\r\n * @private\r\n * Service to construct a $column definition used by {@link ngTable ngTable} directive\r\n */\r\nvar NgTableColumn = (function () {\r\n function NgTableColumn() {\r\n }\r\n /**\r\n * Creates a $column for use within a header template\r\n *\r\n * @param column the initial definition for $column to build\r\n * @param defaultScope the $scope to supply to the $column getter methods when not supplied by caller\r\n * @param columns a reference to the $columns array to make available on the context supplied to the\r\n * $column getter methods\r\n */\r\n NgTableColumn.prototype.buildColumn = function (column, defaultScope, columns) {\r\n // note: we're not modifying the original column object. This helps to avoid unintended side affects\r\n var extendedCol = Object.create(column);\r\n var defaults = this.createDefaults();\r\n var _loop_1 = function (prop) {\r\n if (extendedCol[prop] === undefined) {\r\n extendedCol[prop] = defaults[prop];\r\n }\r\n if (!__WEBPACK_IMPORTED_MODULE_0_angular__[\"isFunction\"](extendedCol[prop])) {\r\n // wrap raw field values with \"getter\" functions\r\n // - this is to ensure consistency with how ngTable.compile builds columns\r\n // - note that the original column object is being \"proxied\"; this is important\r\n // as it ensure that any changes to the original object will be returned by the \"getter\"\r\n var getterSetter = function getterSetter() {\r\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\r\n getterSetter.assign(null, arguments[0]);\r\n }\r\n else {\r\n return column[prop];\r\n }\r\n };\r\n getterSetter.assign = function ($scope, value) {\r\n column[prop] = value;\r\n };\r\n extendedCol[prop] = getterSetter;\r\n }\r\n // satisfy the arguments expected by the function returned by parsedAttribute in the ngTable directive\r\n var getterFn = extendedCol[prop];\r\n extendedCol[prop] = function () {\r\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\r\n getterFn.assign(defaultScope, arguments[0]);\r\n }\r\n else {\r\n var scope = arguments[0] || defaultScope;\r\n var context = Object.create(scope);\r\n __WEBPACK_IMPORTED_MODULE_0_angular__[\"extend\"](context, {\r\n $column: extendedCol,\r\n $columns: columns\r\n });\r\n return getterFn.call(column, context);\r\n }\r\n };\r\n if (getterFn.assign) {\r\n extendedCol[prop].assign = getterFn.assign;\r\n }\r\n else {\r\n var wrappedGetterFn_1 = extendedCol[prop];\r\n var localValue_1;\r\n var getterSetter = function getterSetter() {\r\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\r\n getterSetter.assign(null, arguments[0]);\r\n }\r\n else {\r\n return localValue_1 != undefined ? localValue_1 : wrappedGetterFn_1.apply(extendedCol, arguments);\r\n }\r\n };\r\n getterSetter.assign = function ($scope, value) {\r\n localValue_1 = value;\r\n };\r\n extendedCol[prop] = getterSetter;\r\n }\r\n };\r\n for (var prop in defaults) {\r\n _loop_1(prop);\r\n }\r\n return extendedCol;\r\n };\r\n NgTableColumn.prototype.createDefaults = function () {\r\n return {\r\n 'class': this.createGetterSetter(''),\r\n filter: this.createGetterSetter(false),\r\n groupable: this.createGetterSetter(false),\r\n filterData: __WEBPACK_IMPORTED_MODULE_0_angular__[\"noop\"],\r\n headerTemplateURL: this.createGetterSetter(false),\r\n headerTitle: this.createGetterSetter(''),\r\n sortable: this.createGetterSetter(false),\r\n show: this.createGetterSetter(true),\r\n title: this.createGetterSetter(''),\r\n titleAlt: this.createGetterSetter('')\r\n };\r\n };\r\n NgTableColumn.prototype.createGetterSetter = function (initialValue) {\r\n var value = initialValue;\r\n var getterSetter = function getterSetter() {\r\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\r\n getterSetter.assign(null, arguments[0]);\r\n }\r\n else {\r\n return value;\r\n }\r\n };\r\n getterSetter.assign = function ($scope, newValue) {\r\n value = newValue;\r\n };\r\n return getterSetter;\r\n };\r\n return NgTableColumn;\r\n}());\r\n\r\nNgTableColumn.$inject = [];\r\n\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ exports[\"a\"] = ngTableColumnsBinding;\n/**\r\n * ngTable: Table + Angular JS\r\n *\r\n * @author Vitalii Savchuk \r\n * @url https://github.com/esvit/ng-table/\r\n * @license New BSD License \r\n */\r\nngTableColumnsBinding.$inject = [\"$parse\"];\r\n/**\r\n * One-way data binds the $columns array generated by ngTable/ngTableDynamic to the specified\r\n * expression.\r\n * This allows the $columns array created for the table to be accessed outside of the html table\r\n * markup.\r\n *\r\n * @ngdoc directive\r\n *\r\n * @example\r\n * ```html\r\n * \r\n * ```\r\n */\r\nfunction ngTableColumnsBinding($parse) {\r\n var directive = {\r\n restrict: 'A',\r\n link: linkFn\r\n };\r\n return directive;\r\n function linkFn($scope, $element, $attrs) {\r\n var setter = $parse($attrs.ngTableColumnsBinding).assign;\r\n if (setter) {\r\n $scope.$watch('$columns', function (newColumns) {\r\n var shallowClone = (newColumns || []).slice(0);\r\n setter($scope, shallowClone);\r\n });\r\n }\r\n }\r\n}\r\n\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__core__ = __webpack_require__(1);\n/* harmony export (binding) */ __webpack_require__.d(exports, \"a\", function() { return NgTableController; });\n/**\r\n * ngTable: Table + Angular JS\r\n *\r\n * @author Vitalii Savchuk \r\n * @url https://github.com/esvit/ng-table/\r\n * @license New BSD License \r\n */\r\n\r\n\r\n/**\r\n * The controller for the {@link ngTable ngTable} and {@link ngTableDynamic ngTableDynamic} directives\r\n */\r\nvar NgTableController = (function () {\r\n function NgTableController($scope, $timeout, $parse, $compile, $attrs, $element, $document, ngTableColumn, ngTableEventsChannel) {\r\n this.$scope = $scope;\r\n this.$parse = $parse;\r\n this.$compile = $compile;\r\n this.$attrs = $attrs;\r\n this.$element = $element;\r\n this.$document = $document;\r\n this.ngTableColumn = ngTableColumn;\r\n this.ngTableEventsChannel = ngTableEventsChannel;\r\n var isFirstTimeLoad = true;\r\n $scope.$filterRow = { disabled: false };\r\n $scope.$loading = false;\r\n // until such times as the directive uses an isolated scope, we need to ensure that the check for\r\n // the params field only consults the \"own properties\" of the $scope. This is to avoid seeing the params\r\n // field on a $scope higher up in the prototype chain\r\n if (!$scope.hasOwnProperty(\"params\")) {\r\n $scope.params = new __WEBPACK_IMPORTED_MODULE_1__core__[\"a\" /* NgTableParams */](true);\r\n }\r\n this.delayFilter = (function () {\r\n var timer;\r\n return function (callback, ms) {\r\n $timeout.cancel(timer);\r\n timer = $timeout(callback, ms);\r\n };\r\n })();\r\n // watch for when a new NgTableParams is bound to the scope\r\n // CRITICAL: the watch must be for reference and NOT value equality; this is because NgTableParams maintains\r\n // the current data page as a field. Checking this for value equality would be terrible for performance\r\n // and potentially cause an error if the items in that array has circular references\r\n this.$scope.$watch('params', function (newParams, oldParams) {\r\n if (newParams === oldParams || !newParams) {\r\n return;\r\n }\r\n newParams.reload();\r\n }, false);\r\n this.subscribeToTableEvents();\r\n }\r\n Object.defineProperty(NgTableController.prototype, \"hasVisibleFilterColumn\", {\r\n get: function () {\r\n var _this = this;\r\n if (!this.$scope.$columns)\r\n return false;\r\n return this.some(this.$scope.$columns, function ($column) {\r\n return $column.show(_this.$scope) && !!$column.filter(_this.$scope);\r\n });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NgTableController.prototype.onDataReloadStatusChange = function (newStatus /*, oldStatus*/) {\r\n if (!newStatus || this.$scope.params.hasErrorState()) {\r\n return;\r\n }\r\n var currentParams = this.$scope.params;\r\n var filterOptions = currentParams.settings().filterOptions;\r\n if (currentParams.hasFilterChanges()) {\r\n var applyFilter = function () {\r\n currentParams.page(1);\r\n currentParams.reload();\r\n };\r\n if (filterOptions.filterDelay) {\r\n this.delayFilter(applyFilter, filterOptions.filterDelay);\r\n }\r\n else {\r\n applyFilter();\r\n }\r\n }\r\n else {\r\n currentParams.reload();\r\n }\r\n };\r\n NgTableController.prototype.compileDirectiveTemplates = function () {\r\n if (!this.$element.hasClass('ng-table')) {\r\n this.$scope.templates = {\r\n header: (this.$attrs.templateHeader ? this.$attrs.templateHeader : 'ng-table/header.html'),\r\n pagination: (this.$attrs.templatePagination ? this.$attrs.templatePagination : 'ng-table/pager.html')\r\n };\r\n this.$element.addClass('ng-table');\r\n var headerTemplate = void 0;\r\n // $element.find('> thead').length === 0 doesn't work on jqlite\r\n var theadFound_1 = false;\r\n __WEBPACK_IMPORTED_MODULE_0_angular__[\"forEach\"](this.$element.children(), function (e) {\r\n if (e.tagName === 'THEAD') {\r\n theadFound_1 = true;\r\n }\r\n });\r\n if (!theadFound_1) {\r\n headerTemplate = __WEBPACK_IMPORTED_MODULE_0_angular__[\"element\"]('', this.$document);\r\n this.$element.prepend(headerTemplate);\r\n }\r\n var paginationTemplate = __WEBPACK_IMPORTED_MODULE_0_angular__[\"element\"]('
', this.$document);\r\n this.$element.after(paginationTemplate);\r\n if (headerTemplate) {\r\n this.$compile(headerTemplate)(this.$scope);\r\n }\r\n this.$compile(paginationTemplate)(this.$scope);\r\n }\r\n };\r\n NgTableController.prototype.loadFilterData = function ($columns) {\r\n var _this = this;\r\n __WEBPACK_IMPORTED_MODULE_0_angular__[\"forEach\"]($columns, function ($column) {\r\n var result = $column.filterData(_this.$scope);\r\n if (!result) {\r\n delete $column.filterData;\r\n return undefined;\r\n }\r\n if (isPromiseLike(result)) {\r\n delete $column.filterData;\r\n return result.then(function (data) {\r\n // our deferred can eventually return arrays, functions and objects\r\n if (!__WEBPACK_IMPORTED_MODULE_0_angular__[\"isArray\"](data) && !__WEBPACK_IMPORTED_MODULE_0_angular__[\"isFunction\"](data) && !__WEBPACK_IMPORTED_MODULE_0_angular__[\"isObject\"](data)) {\r\n // if none of the above was found - we just want an empty array\r\n data = [];\r\n }\r\n $column.data = data;\r\n });\r\n }\r\n else {\r\n return $column.data = result;\r\n }\r\n });\r\n function isPromiseLike(val) {\r\n return val && typeof val === 'object' && typeof val.then === 'function';\r\n }\r\n };\r\n NgTableController.prototype.buildColumns = function (columns) {\r\n var _this = this;\r\n // todo: use strictNullChecks and remove guard clause\r\n var result = [];\r\n (columns || []).forEach(function (col) {\r\n result.push(_this.ngTableColumn.buildColumn(col, _this.$scope, result));\r\n });\r\n return result;\r\n };\r\n NgTableController.prototype.parseNgTableDynamicExpr = function (attr) {\r\n if (!attr || attr.indexOf(\" with \") > -1) {\r\n var parts = attr.split(/\\s+with\\s+/);\r\n return {\r\n tableParams: parts[0],\r\n columns: parts[1]\r\n };\r\n }\r\n else {\r\n throw new Error('Parse error (expected example: ng-table-dynamic=\\'tableParams with cols\\')');\r\n }\r\n };\r\n NgTableController.prototype.setupBindingsToInternalScope = function (tableParamsExpr) {\r\n // note: this we're setting up watches to simulate angular's isolated scope bindings\r\n var _this = this;\r\n // note: is REALLY important to watch for a change to the ngTableParams *reference* rather than\r\n // $watch for value equivalence. This is because ngTableParams references the current page of data as\r\n // a field and it's important not to watch this\r\n this.$scope.$watch(tableParamsExpr, function (params) {\r\n if (params === undefined) {\r\n return;\r\n }\r\n _this.$scope.params = params;\r\n }, false);\r\n this.setupFilterRowBindingsToInternalScope();\r\n this.setupGroupRowBindingsToInternalScope();\r\n };\r\n NgTableController.prototype.setupFilterRowBindingsToInternalScope = function () {\r\n var _this = this;\r\n if (this.$attrs.showFilter) {\r\n this.$scope.$parent.$watch(this.$attrs.showFilter, function (value) {\r\n _this.$scope.show_filter = value;\r\n });\r\n }\r\n else {\r\n this.$scope.$watch(function () { return _this.hasVisibleFilterColumn; }, function (value) {\r\n _this.$scope.show_filter = value;\r\n });\r\n }\r\n if (this.$attrs.disableFilter) {\r\n this.$scope.$parent.$watch(this.$attrs.disableFilter, function (value) {\r\n _this.$scope.$filterRow.disabled = value;\r\n });\r\n }\r\n };\r\n NgTableController.prototype.setupGroupRowBindingsToInternalScope = function () {\r\n var _this = this;\r\n this.$scope.$groupRow = { show: false };\r\n if (this.$attrs.showGroup) {\r\n var showGroupGetter_1 = this.$parse(this.$attrs.showGroup);\r\n this.$scope.$parent.$watch(showGroupGetter_1, function (value) {\r\n _this.$scope.$groupRow.show = value;\r\n });\r\n if (showGroupGetter_1.assign) {\r\n // setup two-way databinding thus allowing ngTableGrowRow to assign to the showGroup expression\r\n this.$scope.$watch('$groupRow.show', function (value) {\r\n showGroupGetter_1.assign(_this.$scope.$parent, value);\r\n });\r\n }\r\n }\r\n else {\r\n this.$scope.$watch('params.hasGroup()', function (newValue) {\r\n _this.$scope.$groupRow.show = newValue;\r\n });\r\n }\r\n };\r\n NgTableController.prototype.getVisibleColumns = function () {\r\n var _this = this;\r\n return (this.$scope.$columns || []).filter(function (c) {\r\n return c.show(_this.$scope);\r\n });\r\n };\r\n NgTableController.prototype.subscribeToTableEvents = function () {\r\n var _this = this;\r\n this.$scope.$watch('params.isDataReloadRequired()', function (newStatus /*, oldStatus*/) {\r\n _this.onDataReloadStatusChange(newStatus);\r\n });\r\n this.ngTableEventsChannel.onAfterReloadData(function (params, newDatapage) {\r\n var visibleColumns = _this.getVisibleColumns();\r\n if (params.hasGroup()) {\r\n _this.$scope.$groups = (newDatapage || []);\r\n _this.$scope.$groups.visibleColumnCount = visibleColumns.length;\r\n }\r\n else {\r\n _this.$scope.$data = (newDatapage || []);\r\n _this.$scope.$data.visibleColumnCount = visibleColumns.length;\r\n }\r\n }, this.$scope, function (publisher) { return _this.$scope.params === publisher; });\r\n this.ngTableEventsChannel.onPagesChanged(function (params, newPages) {\r\n _this.$scope.pages = newPages;\r\n }, this.$scope, function (publisher) { return _this.$scope.params === publisher; });\r\n };\r\n NgTableController.prototype.some = function (array, predicate) {\r\n var found = false;\r\n for (var i = 0; i < array.length; i++) {\r\n var obj = array[i];\r\n if (predicate(obj)) {\r\n found = true;\r\n break;\r\n }\r\n }\r\n return found;\r\n };\r\n return NgTableController;\r\n}());\r\n\r\nNgTableController.$inject = [\r\n '$scope', '$timeout', '$parse', '$compile', '$attrs', '$element', '$document', 'ngTableColumn', 'ngTableEventsChannel'\r\n];\r\n\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__);\n/* harmony export (immutable) */ exports[\"a\"] = ngTableDynamic;\n/**\r\n * ngTable: Table + Angular JS\r\n *\r\n * @author Vitalii Savchuk \r\n * @url https://github.com/esvit/ng-table/\r\n * @license New BSD License \r\n */\r\n\r\nfunction toArray(arr) {\r\n return Array.prototype.slice.call(arr);\r\n}\r\nngTableDynamic.$inject = [];\r\n/**\r\n * A dynamic version of the {@link ngTable ngTable} directive that accepts a dynamic list of columns\r\n * definitions to render\r\n * @ngdoc directive\r\n *\r\n * @example\r\n * ```html\r\n *
\r\n * \r\n * \r\n * \r\n *
{{row[col.field]}}
\r\n * ```\r\n */\r\nfunction ngTableDynamic() {\r\n return {\r\n restrict: 'A',\r\n priority: 1001,\r\n scope: true,\r\n controller: 'ngTableController',\r\n compile: function (tElement) {\r\n var tRows = toArray(tElement[0].getElementsByTagName('tr'));\r\n var tRow = tRows.filter(function (tr) { return !__WEBPACK_IMPORTED_MODULE_0_angular__[\"element\"](tr).hasClass('ng-table-group'); })[0];\r\n if (!tRow) {\r\n return undefined;\r\n }\r\n toArray(tRow.getElementsByTagName('td')).forEach(function (tCell) {\r\n var el = __WEBPACK_IMPORTED_MODULE_0_angular__[\"element\"](tCell);\r\n var getAttrValue = function (attr) {\r\n return el.attr('x-data-' + attr) || el.attr('data-' + attr) || el.attr(attr);\r\n };\r\n // this used in responsive table\r\n var titleExpr = getAttrValue('title');\r\n if (!titleExpr) {\r\n el.attr('data-title-text', '{{$columns[$index].titleAlt(this) || $columns[$index].title(this)}}');\r\n }\r\n var showExpr = el.attr('ng-if');\r\n if (!showExpr) {\r\n el.attr('ng-if', '$columns[$index].show(this)');\r\n }\r\n });\r\n return function (scope, element, attrs, controller) {\r\n var expr = controller.parseNgTableDynamicExpr(attrs.ngTableDynamic);\r\n controller.setupBindingsToInternalScope(expr.tableParams);\r\n controller.compileDirectiveTemplates();\r\n scope.$watchCollection(expr.columns, function (newCols /*, oldCols*/) {\r\n scope.$columns = controller.buildColumns(newCols);\r\n controller.loadFilterData(scope.$columns);\r\n });\r\n };\r\n }\r\n };\r\n}\r\n\n\n/***/ },\n/* 19 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ exports[\"a\"] = ngTableFilterRow;\n/**\r\n * ngTable: Table + Angular JS\r\n *\r\n * @author Vitalii Savchuk \r\n * @url https://github.com/esvit/ng-table/\r\n * @license New BSD License \r\n */\r\nvar templateUrl = __webpack_require__(35);\r\nngTableFilterRow.$inject = [];\r\n/**\r\n * directive that renders the filter header row for a table\r\n * @ngdoc directive\r\n * @example\r\n * ```html\r\n * \r\n * ```\r\n */\r\nfunction ngTableFilterRow() {\r\n var directive = {\r\n restrict: 'E',\r\n replace: true,\r\n templateUrl: templateUrl,\r\n scope: true,\r\n controller: 'ngTableFilterRowController',\r\n controllerAs: '$ctrl'\r\n };\r\n return directive;\r\n}\r\n\n\n/***/ },\n/* 20 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(exports, \"a\", function() { return NgTableFilterRowController; });\n/**\r\n * ngTable: Table + Angular JS\r\n *\r\n * @author Vitalii Savchuk \r\n * @url https://github.com/esvit/ng-table/\r\n * @license New BSD License \r\n */\r\n/**\r\n * Controller for the {@link ngTableFilterRow ngTableFilterRow} directive\r\n */\r\nvar NgTableFilterRowController = (function () {\r\n function NgTableFilterRowController($scope, ngTableFilterConfig) {\r\n this.config = ngTableFilterConfig;\r\n // todo: stop doing this. Why?\r\n // * scope inheritance makes it hard to know how supplies functions\r\n // * scope is not a concept in angular 2\r\n // make function available to filter templates\r\n $scope.getFilterPlaceholderValue = this.getFilterPlaceholderValue.bind(this);\r\n }\r\n NgTableFilterRowController.prototype.getFilterCellCss = function (filter, layout) {\r\n if (layout !== 'horizontal') {\r\n return 's12';\r\n }\r\n var size = Object.keys(filter).length;\r\n var width = parseInt((12 / size).toString(), 10);\r\n return 's' + width;\r\n };\r\n NgTableFilterRowController.prototype.getFilterPlaceholderValue = function (filterDef, filterKey) {\r\n if (typeof filterDef === 'string') {\r\n return '';\r\n }\r\n else {\r\n return filterDef.placeholder;\r\n }\r\n };\r\n return NgTableFilterRowController;\r\n}());\r\n\r\nNgTableFilterRowController.$inject = ['$scope', 'ngTableFilterConfig'];\r\n\n\n/***/ },\n/* 21 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ exports[\"a\"] = ngTableGroupRow;\n/**\r\n * ngTable: Table + Angular JS\r\n *\r\n * @author Vitalii Savchuk \r\n * @url https://github.com/esvit/ng-table/\r\n * @license New BSD License \r\n */\r\nvar templateUrl = __webpack_require__(40);\r\nngTableGroupRow.$inject = [];\r\n/**\r\n * directive that renders the group header row for a table\r\n * @ngdoc directive\r\n * @example\r\n * ```html\r\n * \r\n * ```\r\n */\r\nfunction ngTableGroupRow() {\r\n var directive = {\r\n restrict: 'E',\r\n replace: true,\r\n templateUrl: templateUrl,\r\n scope: true,\r\n controller: 'ngTableGroupRowController',\r\n controllerAs: '$ctrl'\r\n };\r\n return directive;\r\n}\r\n\n\n/***/ },\n/* 22 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(exports, \"a\", function() { return NgTableGroupRowController; });\n/**\r\n * ngTable: Table + Angular JS\r\n *\r\n * @author Vitalii Savchuk \r\n * @url https://github.com/esvit/ng-table/\r\n * @license New BSD License \r\n */\r\n/**\r\n * Controller for the {@link ngTableGroupRow ngTableGroupRow} directive\r\n */\r\nvar NgTableGroupRowController = (function () {\r\n function NgTableGroupRowController($scope) {\r\n var _this = this;\r\n this.$scope = $scope;\r\n this.groupFns = [];\r\n $scope.$watch('params.group()', function (newGrouping) {\r\n _this.setGroup(newGrouping);\r\n }, true);\r\n }\r\n NgTableGroupRowController.prototype.getGroupables = function () {\r\n var _this = this;\r\n var groupableCols = this.$scope.$columns.filter(function ($column) { return !!$column.groupable(_this.$scope); });\r\n return this.groupFns.concat(groupableCols);\r\n };\r\n NgTableGroupRowController.prototype.getGroupTitle = function (group) {\r\n return this.isGroupingFunc(group) ? group.title : group.title(this.$scope);\r\n };\r\n NgTableGroupRowController.prototype.getVisibleColumns = function () {\r\n var _this = this;\r\n return this.$scope.$columns.filter(function ($column) { return $column.show(_this.$scope); });\r\n };\r\n NgTableGroupRowController.prototype.groupBy = function (group) {\r\n if (this.isSelectedGroup(group)) {\r\n this.changeSortDirection();\r\n }\r\n else {\r\n if (this.isGroupingFunc(group)) {\r\n this.$scope.params.group(group);\r\n }\r\n else {\r\n // it's OK, we know that groupable will return a string\r\n // this is guaranteed by getGroupables returning only\r\n // columns that return (truthy) strings\r\n this.$scope.params.group(group.groupable(this.$scope));\r\n }\r\n }\r\n };\r\n NgTableGroupRowController.prototype.isSelectedGroup = function (group) {\r\n if (this.isGroupingFunc(group)) {\r\n return group === this.$scope.$selGroup;\r\n }\r\n else {\r\n return group.groupable(this.$scope) === this.$scope.$selGroup;\r\n }\r\n };\r\n NgTableGroupRowController.prototype.toggleDetail = function () {\r\n this.$scope.params.settings().groupOptions.isExpanded = !this.$scope.params.settings().groupOptions.isExpanded;\r\n return this.$scope.params.reload();\r\n };\r\n NgTableGroupRowController.prototype.changeSortDirection = function () {\r\n var newDirection;\r\n if (this.$scope.params.hasGroup(this.$scope.$selGroup, 'asc')) {\r\n newDirection = 'desc';\r\n }\r\n else if (this.$scope.params.hasGroup(this.$scope.$selGroup, 'desc')) {\r\n newDirection = '';\r\n }\r\n else {\r\n newDirection = 'asc';\r\n }\r\n this.$scope.params.group(this.$scope.$selGroup, newDirection);\r\n };\r\n NgTableGroupRowController.prototype.findGroupColumn = function (groupKey) {\r\n var _this = this;\r\n return this.$scope.$columns.filter(function ($column) { return $column.groupable(_this.$scope) === groupKey; })[0];\r\n };\r\n NgTableGroupRowController.prototype.isGroupingFunc = function (val) {\r\n return typeof val === 'function';\r\n };\r\n NgTableGroupRowController.prototype.setGroup = function (grouping) {\r\n var existingGroupCol = this.findGroupColumn(this.$scope.$selGroup);\r\n if (existingGroupCol && existingGroupCol.show.assign) {\r\n existingGroupCol.show.assign(this.$scope, true);\r\n }\r\n if (this.isGroupingFunc(grouping)) {\r\n this.groupFns = [grouping];\r\n this.$scope.$selGroup = grouping;\r\n this.$scope.$selGroupTitle = grouping.title || '';\r\n }\r\n else {\r\n // note: currently only one group is implemented\r\n var groupKey = Object.keys(grouping || {})[0];\r\n var groupedColumn = this.findGroupColumn(groupKey);\r\n if (groupedColumn) {\r\n this.$scope.$selGroupTitle = groupedColumn.title(this.$scope);\r\n this.$scope.$selGroup = groupKey;\r\n if (groupedColumn.show.assign) {\r\n groupedColumn.show.assign(this.$scope, false);\r\n }\r\n }\r\n }\r\n };\r\n return NgTableGroupRowController;\r\n}());\r\n\r\nNgTableGroupRowController.$inject = ['$scope'];\r\n\n\n/***/ },\n/* 23 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__);\n/* harmony export (immutable) */ exports[\"a\"] = ngTablePagination;\n/**\r\n * ngTable: Table + Angular JS\r\n *\r\n * @author Vitalii Savchuk \r\n * @url https://github.com/esvit/ng-table/\r\n * @license New BSD License \r\n */\r\n\r\nngTablePagination.$inject = ['$compile', '$document', 'ngTableEventsChannel'];\r\n/**\r\n * Directive that renders the table pagination controls\r\n * @ngdoc directive\r\n */\r\nfunction ngTablePagination($compile, $document, ngTableEventsChannel) {\r\n return {\r\n restrict: 'A',\r\n scope: {\r\n 'params': '=ngTablePagination',\r\n 'templateUrl': '='\r\n },\r\n replace: false,\r\n link: function (scope, element /*, attrs*/) {\r\n ngTableEventsChannel.onAfterReloadData(function (pubParams) {\r\n scope.pages = pubParams.generatePagesArray();\r\n }, scope, function (pubParams) {\r\n return pubParams === scope.params;\r\n });\r\n scope.$watch('templateUrl', function (templateUrl) {\r\n if (templateUrl === undefined) {\r\n return;\r\n }\r\n var template = __WEBPACK_IMPORTED_MODULE_0_angular__[\"element\"]('
', $document);\r\n element.append(template);\r\n $compile(template)(scope);\r\n });\r\n }\r\n };\r\n}\r\n\n\n/***/ },\n/* 24 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export NgTableSelectFilterDsController */\n/* harmony export (binding) */ __webpack_require__.d(exports, \"a\", function() { return ngTableSelectFilterDs; });\n/**\r\n * ngTable: Table + Angular JS\r\n *\r\n * @author Vitalii Savchuk \r\n * @url https://github.com/esvit/ng-table/\r\n * @license New BSD License \r\n */\r\nngTableSelectFilterDs.$inject = [];\r\n/**\r\n * Takes the array returned by $column.filterData and makes it available as `$selectData` on the `$scope`.\r\n *\r\n * The resulting `$selectData` array will contain an extra item that is suitable to represent the user\r\n * \"deselecting\" an item from a ` \";\nvar angular = __webpack_require__(0);\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n/***/ },\n/* 37 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar path = 'ng-table/filters/select-multiple.html';\nvar html = \" \";\nvar angular = __webpack_require__(0);\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n/***/ },\n/* 38 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar path = 'ng-table/filters/select.html';\nvar html = \" \";\nvar angular = __webpack_require__(0);\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n/***/ },\n/* 39 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar path = 'ng-table/filters/text.html';\nvar html = \" \";\nvar angular = __webpack_require__(0);\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n/***/ },\n/* 40 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar path = 'ng-table/groupRow.html';\nvar html = \" {{$selGroupTitle}} \";\nvar angular = __webpack_require__(0);\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n/***/ },\n/* 41 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar path = 'ng-table/header.html';\nvar html = \" \";\nvar angular = __webpack_require__(0);\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n/***/ },\n/* 42 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar path = 'ng-table/pager.html';\nvar html = \" \";\nvar angular = __webpack_require__(0);\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n/***/ },\n/* 43 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar path = 'ng-table/sorterRow.html';\nvar html = \"
\";\nvar angular = __webpack_require__(0);\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n/***/ },\n/* 44 */\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_core__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_browser__ = __webpack_require__(2);\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(exports, \"ngTableCoreModule\", function() { return __WEBPACK_IMPORTED_MODULE_1__src_core__[\"b\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(exports, \"Settings\", function() { return __WEBPACK_IMPORTED_MODULE_1__src_core__[\"c\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(exports, \"NgTableEventsChannel\", function() { return __WEBPACK_IMPORTED_MODULE_1__src_core__[\"d\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(exports, \"ParamValues\", function() { return __WEBPACK_IMPORTED_MODULE_1__src_core__[\"e\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(exports, \"NgTableParams\", function() { return __WEBPACK_IMPORTED_MODULE_1__src_core__[\"a\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(exports, \"DataSettings\", function() { return __WEBPACK_IMPORTED_MODULE_1__src_core__[\"f\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(exports, \"NgTableDefaultGetDataProvider\", function() { return __WEBPACK_IMPORTED_MODULE_1__src_core__[\"g\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(exports, \"FilterSettings\", function() { return __WEBPACK_IMPORTED_MODULE_1__src_core__[\"h\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(exports, \"GroupSettings\", function() { return __WEBPACK_IMPORTED_MODULE_1__src_core__[\"i\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(exports, \"NgTableController\", function() { return __WEBPACK_IMPORTED_MODULE_2__src_browser__[\"b\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(exports, \"ngTableBrowserModule\", function() { return __WEBPACK_IMPORTED_MODULE_2__src_browser__[\"a\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(exports, \"FilterConfigValues\", function() { return __WEBPACK_IMPORTED_MODULE_2__src_browser__[\"c\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(exports, \"NgTableFilterConfigProvider\", function() { return __WEBPACK_IMPORTED_MODULE_2__src_browser__[\"d\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(exports, \"NgTableFilterConfig\", function() { return __WEBPACK_IMPORTED_MODULE_2__src_browser__[\"e\"]; });\n/* harmony export (binding) */ __webpack_require__.d(exports, \"ngTableModule\", function() { return ngTableModule; });\n\r\n\r\n\r\nvar ngTableModule = __WEBPACK_IMPORTED_MODULE_0_angular__[\"module\"]('ngTable', [__WEBPACK_IMPORTED_MODULE_1__src_core__[\"b\" /* ngTableCoreModule */].name, __WEBPACK_IMPORTED_MODULE_2__src_browser__[\"a\" /* ngTableBrowserModule */].name]);\r\n\r\n\r\n\r\n\n\n/***/ }\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// ng-table.min.js"," \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\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// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\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 = 44);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap a04a664fd136d6195bd8","module.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"angular\"\n// module id = 0\n// module chunks = 0","import * as angular from 'angular';\nimport { NgTableDefaultGetDataProvider, DefaultGetData } from './data';\nimport { GroupSettingsPartial, ngTableDefaultGetGroups } from './grouping';\nimport { ngTableDefaults, Defaults } from './ngTableDefaults';\nimport { SettingsPartial, Settings } from './ngTableSettings';\nimport { NgTableParams } from './ngTableParams';\nimport { NgTableEventsChannel } from './ngTableEventsChannel';\n\nconst ngTableCoreModule = angular.module('ngTable-core', [])\n .provider('ngTableDefaultGetData', NgTableDefaultGetDataProvider)\n .factory('ngTableDefaultGetGroups', ngTableDefaultGetGroups)\n .value('ngTableDefaults',ngTableDefaults)\n .service('ngTableEventsChannel', NgTableEventsChannel)\n .run(Settings.init)\n .run(NgTableParams.init);\n\n// note: if you are using ES6 or typescript prefer:\n// import { NgTableParams } from 'ng-table';\nngTableCoreModule.value('NgTableParams', NgTableParams)\n\nexport { ngTableCoreModule };\n\nexport { Defaults } from './ngTableDefaults';\nexport * from './ngTableEventsChannel';\nexport { SettingsPartial, Settings };\nexport * from './ngTableParams';\nexport * from './data';\nexport * from './filtering';\nexport * from './grouping/publicExports';\nexport * from './paging';\nexport * from './sorting';\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/index.ts","import * as angular from 'angular';\nimport { ngTable } from './ngTable.directive';\nimport { NgTableColumn } from './ngTableColumn';\nimport { ngTableColumnsBinding } from './ngTableColumnsBinding.directive';\nimport { NgTableController } from './ngTableController';\nimport { ngTableDynamic } from './ngTableDynamic.directive';\nimport { NgTableFilterConfigProvider, NgTableFilterConfig } from './ngTableFilterConfig';\nimport { ngTableFilterRow } from './ngTableFilterRow.directive';\nimport { NgTableFilterRowController } from './ngTableFilterRowController';\nimport { ngTableGroupRow } from './ngTableGroupRow.directive';\nimport { NgTableGroupRowController } from './ngTableGroupRowController';\nimport { ngTablePagination } from './ngTablePagination.directive';\nimport { ngTableSelectFilterDs } from './ngTableSelectFilterDs.directive';\nimport { ngTableSorterRow } from './ngTableSorterRow.directive';\nimport { NgTableSorterRowController } from './ngTableSorterRowController';\nimport './filters/number.html';\nimport './filters/select.html';\nimport './filters/select-multiple.html';\nimport './filters/text.html';\nimport './pager.html';\nimport './header.html';\n\nconst ngTableBrowserModule = angular.module('ngTable-browser', [])\n .directive('ngTable', ngTable)\n .service('ngTableColumn', NgTableColumn)\n .directive('ngTableColumnsBinding', ngTableColumnsBinding)\n .controller('ngTableController', NgTableController)\n .directive('ngTableDynamic', ngTableDynamic)\n .provider('ngTableFilterConfig', NgTableFilterConfigProvider)\n .directive('ngTableFilterRow', ngTableFilterRow)\n .controller('ngTableFilterRowController', NgTableFilterRowController)\n .directive('ngTableGroupRow', ngTableGroupRow)\n .controller('ngTableGroupRowController', NgTableGroupRowController)\n .directive('ngTablePagination', ngTablePagination)\n .directive('ngTableSelectFilterDs', ngTableSelectFilterDs)\n .directive('ngTableSorterRow', ngTableSorterRow)\n .controller('ngTableSorterRowController', NgTableSorterRowController);\n\nexport * from './public-interfaces';\nexport { NgTableController, ngTableBrowserModule };\nexport * from './ngTableFilterConfig';\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/index.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport * as ng1 from 'angular';\nimport { IServiceProvider, auto } from 'angular';\nimport { assignPartialDeep } from '../shared';\nimport { FilterTemplateDef } from './public-interfaces';\n\n/**\n * Configuration values that determine the behaviour of the `ngTableFilterConfig` service\n */\nexport class FilterConfigValues {\n /**\n * The default base url to use when deriving the url for a filter template given just an alias name\n */\n defaultBaseUrl = 'ng-table/filters/';\n /**\n * The extension to use when deriving the url of a filter template when given just an alias name\n */\n defaultExt = '.html';\n /**\n * A map of alias names and their corrosponding urls. A lookup against this map will be used\n * to find the url matching an alias name.\n * If no match is found then a url will be derived using the following pattern `${defaultBaseUrl}${aliasName}.${defaultExt}`\n */\n aliasUrls: { [name: string]: string } = {};\n}\n\nexport type FilterConfigValuesPartial = Partial\n\n/**\n * The angular provider used to configure the behaviour of the `NgTableFilterConfig` service.\n */\nexport class NgTableFilterConfigProvider implements IServiceProvider {\n static $inject = ['$injector'];\n $get: () => NgTableFilterConfig;\n private config: FilterConfigValues;\n constructor($injector: auto.IInjectorService) {\n this.$get = () => {\n return $injector.instantiate(NgTableFilterConfig, { config: ng1.copy(this.config) });\n }\n this.$get.$inject = [];\n this.resetConfigs();\n }\n\n /**\n * Reset back to factory defaults the config values that `NgTableFilterConfig` service will use\n */\n resetConfigs() {\n this.config = new FilterConfigValues();\n }\n\n /**\n * Set the config values used by `NgTableFilterConfig` service\n */\n setConfig(customConfig: FilterConfigValuesPartial) {\n this.config = assignPartialDeep(ng1.copy(this.config), customConfig);\n }\n}\n\n/**\n * Exposes configuration values and methods used to return the location of the html\n * templates used to render the filter row of an ng-table directive\n */\nexport class NgTableFilterConfig {\n static $inject = ['config'];\n constructor(\n /**\n * Readonly copy of the final values used to configure the service.\n */\n public readonly config: FilterConfigValues\n ) { }\n\n /**\n * Return the url of the html filter template registered with the alias supplied\n */\n getUrlForAlias(aliasName: string, filterKey?: string) {\n return this.config.aliasUrls[aliasName] || this.config.defaultBaseUrl + aliasName + this.config.defaultExt;\n }\n \n /**\n * Return the url of the html filter template for the supplied definition and key.\n * For more information see the documentation for {@link FilterTemplateMap}\n */\n getTemplateUrl(filterDef: string | FilterTemplateDef, filterKey?: string) {\n let filterName: string;\n if (typeof filterDef !== 'string') {\n filterName = filterDef.id;\n } else {\n filterName = filterDef;\n }\n if (filterName.indexOf('/') !== -1) {\n return filterName;\n }\n\n return this.getUrlForAlias(filterName, filterKey);\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableFilterConfig.ts","import { SortDirection } from '../sorting';\n\nexport type GroupSort = SortDirection | '';\n\nexport type GroupSettingsPartial = Partial\n\n/**\n * Configuration that determines the data row grouping behaviour of a table\n */\nexport class GroupSettings {\n /**\n * The default sort direction that will be used whenever a group is supplied that\n * does not define its own sort direction\n */\n defaultSort: SortDirection = 'asc';\n /**\n * Determines whether groups should be displayed expanded to show their items. Defaults to true\n */\n isExpanded = true;\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/grouping/groupSettings.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport * as ng1 from 'angular';\nimport { IScope } from 'angular';\nimport { DataResult, DefaultGetData } from './data';\nimport { PageButton } from './paging';\nimport { InternalTableParams, NgTableParams } from './ngTableParams';\n\n\n/**\n * Alias for the types that can be used to filter events\n */\nexport type EventSelector = NgTableParams | EventSelectorFunc\n\n/**\n * Signature of the event hander that is registered to receive the *afterCreated* event\n */\nexport interface AfterCreatedListener {\n (publisher: NgTableParams): any\n}\n/**\n * Signature of the event hander that is registered to receive the *afterReloadData* event\n */\nexport interface AfterReloadDataListener {\n (publisher: NgTableParams, newData: DataResult[], oldData: DataResult[]): any\n}\n/**\n * Signature of the event hander that is registered to receive the *datasetChanged* event\n */\nexport interface DatasetChangedListener {\n (publisher: NgTableParams, newDataset: T[], oldDataset: T[]): any\n}\n/**\n * Signature of the function used to filter the events to only specific instances of \n * {@link NgTableParams}\n */\nexport interface EventSelectorFunc {\n (publisher: NgTableParams): boolean\n}\n/**\n * Signature of the event hander that is registered to receive the *pagesChanged* event\n */\nexport interface PagesChangedListener {\n (publisher: NgTableParams, newPages: PageButton[], oldPages: PageButton[]): any\n}\n/**\n* Signature of the event hander that is registered to receive the *afterDataFiltered* event\n*/\nexport interface AfterDataFilteredListener {\n (publisher: NgTableParams, newData: DataResult[] ): any\n}\n/**\n* Signature of the event hander that is registered to receive the *afterDataSorted* event\n*/\nexport interface AfterDataSortedListener {\n (publisher: NgTableParams, newData: DataResult[] ): any\n}\n\n/**\n * Signature of the function used to explicitly unregister an event handler so that it stops\n * receiving notifications\n */\nexport interface UnregistrationFunc {\n (): void\n}\n\n/**\n * Strongly typed pub/sub for {@link NgTableParams}\n *\n * Supported events:\n *\n * * afterCreated - raised when a new instance of {@link NgTableParams} has finished being constructed\n * * afterReloadData - raised when the {@link NgTableParams} `reload` method has finished loading new data\n * * datasetChanged - raised when {@link Settings} `dataset` receives a new data array\n * * pagesChanged - raised when a new pages array has been generated\n */\nexport interface NgTableEventsChannel {\n /**\n * Subscribe to receive notification whenever a new `NgTableParams` instance has finished being constructed.\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called. Supply a\n * `scope` to have angular automatically unregister the listener when the `scope` is destroyed.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterCreated(listener: AfterCreatedListener, scope: IScope, eventFilter?: EventSelectorFunc): UnregistrationFunc;\n /**\n * Subscribe to receive notification whenever a new `NgTableParams` instance has finished being constructed.\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterCreated(listener: AfterCreatedListener, eventFilter?: EventSelectorFunc): UnregistrationFunc;\n /**\n * Subscribe to receive notification whenever the `reload` method of an `NgTableParams` instance has successfully executed\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called. Supply a\n * `scope` to have angular automatically unregister the listener when the `scope` is destroyed.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter either the specific `NgTableParams` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterReloadData(listener: AfterReloadDataListener, scope: IScope, eventFilter?: EventSelector): UnregistrationFunc;\n /**\n * Subscribe to receive notification whenever the `reload` method of an `NgTableParams` instance has successfully executed\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterReloadData(listener: AfterReloadDataListener, eventFilter?: EventSelector): UnregistrationFunc;\n\n /**\n * Subscribe to receive notification whenever a new data rows *array* is supplied as a `settings` value to a `NgTableParams` instance.\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called. Supply a\n * `scope` to have angular automatically unregister the listener when the `scope` is destroyed.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter either the specific `NgTableParams` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onDatasetChanged(listener: DatasetChangedListener, scope: IScope, eventFilter?: EventSelector): UnregistrationFunc;\n /**\n * Subscribe to receive notification whenever a new data rows *array* is supplied as a `settings` value to a `NgTableParams` instance.\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter either the specific `NgTableParams` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onDatasetChanged(listener: DatasetChangedListener, eventFilter?: EventSelector): UnregistrationFunc;\n\n /**\n * Subscribe to receive notification whenever the paging buttons for an `NgTableParams` instance change\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called. Supply a\n * `scope` to have angular automatically unregister the listener when the `scope` is destroyed.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter either the specific `NgTableParams` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onPagesChanged(listener: PagesChangedListener, scope: IScope, eventFilter?: EventSelector): UnregistrationFunc;\n /**\n * Subscribe to receive notification whenever the paging buttons for an `NgTableParams` instance change\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter either the specific `NgTableParams` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onPagesChanged(listener: PagesChangedListener, eventFilter?: EventSelector): UnregistrationFunc;\n /**\n * Subscribe to receive notification whenever a `ngTableDefaultGetData` instance filters data\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter either the specific `DefaultGetData` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterDataFiltered(listener: AfterDataFilteredListener, scope: IScope, eventFilter?: EventSelector ): UnregistrationFunc;\n /**\n * Subscribe to receive notification whenever a `ngTableDefaultGetData` instance filters data\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter either the specific `DefaultGetData` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterDataFiltered(listener: AfterDataFilteredListener, eventFilter?: EventSelector ): UnregistrationFunc; \n /**\n * Subscribe to receive notification whenever a `ngTableDefaultGetData` instance orders data\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter either the specific `DefaultGetData` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterDataSorted(listener: AfterDataSortedListener, scope: IScope, eventFilter?: EventSelector ): UnregistrationFunc;\n /**\n * Subscribe to receive notification whenever a `ngTableDefaultGetData` instance orders data\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter either the specific `DefaultGetData` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterDataSorted(listener: AfterDataSortedListener, eventFilter?: EventSelector ): UnregistrationFunc;\n\n\n publishAfterCreated(publisher: NgTableParams): void;\n publishAfterReloadData(publisher: NgTableParams, newData: T[], oldData: T[]): void;\n publishDatasetChanged(publisher: NgTableParams, newDataset: T[] | undefined, oldDataset: T[] | undefined): void;\n publishPagesChanged(publisher: NgTableParams, newPages: PageButton[], oldPages: PageButton[]): void;\n publishAfterDataFiltered(publisher: NgTableParams, newData: T[]): void;\n publishAfterDataSorted(params: NgTableParams, newData: T[]): void;\n}\n\nexport class NgTableEventsChannel {\n static $inject = ['$rootScope'];\n constructor(private $rootScope: ng1.IRootScopeService) {\n let events = this;\n events = this.addTableParamsEvent('afterCreated', events);\n events = this.addTableParamsEvent('afterReloadData', events);\n events = this.addTableParamsEvent('datasetChanged', events);\n events = this.addTableParamsEvent('pagesChanged', events);\n events = this.addTableParamsEvent('afterDataFiltered', events);\n events = this.addTableParamsEvent('afterDataSorted', events);\n }\n private addTableParamsEvent(eventName: string, target: {}) {\n const fnName = eventName.charAt(0).toUpperCase() + eventName.substring(1);\n const event = {\n ['on' + fnName]: this.createEventSubscriptionFn(eventName),\n ['publish' + fnName]: this.createPublishEventFn(eventName)\n };\n return ng1.extend(target, event);\n }\n private createPublishEventFn(eventName: string) {\n return (...args: any[]) => {\n this.$rootScope.$broadcast('ngTable:' + eventName, ...args);\n }\n }\n private createEventSubscriptionFn(eventName: string) {\n\n return (\n handler: (...args: any[]) => void,\n eventSelectorOrScope: EventSelector | ng1.IScope,\n eventSelector?: EventSelector) => {\n\n let actualEvtSelector: (publisher: NgTableParams) => boolean;\n let scope: ng1.IScope = this.$rootScope;\n\n if (isScopeLike(eventSelectorOrScope)) {\n scope = eventSelectorOrScope;\n actualEvtSelector = createEventSelectorFn(eventSelector);\n } else {\n actualEvtSelector = createEventSelectorFn(eventSelectorOrScope);\n }\n\n return scope.$on('ngTable:' + eventName, function (event: ng1.IAngularEvent, params: InternalTableParams, ...eventArgs: any[]) {\n // don't send events published by the internal NgTableParams created by ngTableController\n if (params.isNullInstance) return;\n\n const fnArgs = [params].concat(eventArgs);\n if (actualEvtSelector.apply(this, fnArgs)) {\n handler.apply(this, fnArgs);\n }\n });\n }\n\n function createEventSelectorFn(eventSelector: EventSelector = () => true): EventSelectorFunc {\n if (isEventSelectorFunc(eventSelector)) {\n return eventSelector\n } else {\n // shorthand for subscriber to only receive events from a specific publisher instance\n return (publisher: NgTableParams) => publisher === eventSelector;\n }\n }\n\n function isEventSelectorFunc(val: EventSelector): val is (publisher: NgTableParams) => boolean {\n return typeof val === 'function';\n }\n\n function isScopeLike(val: any): val is ng1.IScope {\n return val && typeof val.$new === 'function';\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/ngTableEventsChannel.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport * as ng1 from 'angular';\nimport { ILogService, IPromise, IQService } from 'angular';\nimport { convertSortToOrderBy, isGroupingFun } from './util';\nimport { assignPartialDeep } from '../shared';\nimport { Defaults } from './ngTableDefaults'\nimport { NgTableEventsChannel } from './ngTableEventsChannel'\nimport { SettingsPartial, Settings } from './ngTableSettings'\nimport { DataResult, DataRowGroup, GetDataFunc } from './data';\nimport { FilterValues } from './filtering';\nimport { GetGroupFunc, Grouping, GroupingPartial, GroupValuesPartial, GroupingFunc, GroupSort, GroupValues } from './grouping';\nimport { SortDirection, SortingValues } from './sorting';\nimport { PageButton } from './paging';\n\n/**\n * @private\n */\nexport interface InternalTableParams extends NgTableParams {\n isNullInstance: boolean\n}\n\n\nexport type ParamValuesPartial =\n Partial, 'page' | 'count' | 'filter' | 'sorting'>>\n & {\n group?: string | GroupingPartial\n };\n\n/**\n * The runtime values for {@link NgTableParams} that determine the set of data rows and\n * how they are to be displayed in a table\n */\nexport class ParamValues {\n /**\n * The index of the \"slice\" of data rows, starting at 1, to be displayed by the table.\n */\n page = 1;\n /**\n * The number of data rows per page\n */\n count = 10;\n /**\n * The filter that should be applied to restrict the set of data rows\n */\n filter: FilterValues = {};\n /**\n * The sort order that should be applied to the data rows.\n */\n sorting: SortingValues = {};\n /**\n * The grouping that should be applied to the data rows\n */\n group: string | Grouping = {};\n}\n\n\n/**\n * @private\n */\nfunction isNumber(n: any) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * @private\n */\ntype Memento = {\n params: ParamValues;\n groupSortDirection?: string;\n};\n\n/**\n * Parameters manager for an ngTable directive\n */\nexport class NgTableParams {\n /**\n * The page of data rows currently being displayed in the table\n */\n data: T[] = [];\n reloadPages: () => void;\n private defaultSettings = Settings.createWithOverrides();\n private errParamsMemento: Memento | null;\n private isCommittedDataset = false;\n isNullInstance: boolean;\n private initialEvents: Function[] | null = [];\n private ngTableDefaults: Defaults\n private ngTableEventsChannel: NgTableEventsChannel;\n private prevParamsMemento: Memento;\n private _params = new ParamValues();\n private _settings = this.defaultSettings;\n private $q: IQService;\n private $log: ILogService\n constructor(baseParameters: ParamValuesPartial | boolean = {}, baseSettings: SettingsPartial = {}) {\n\n // the ngTableController \"needs\" to create a dummy/null instance and it's important to know whether an instance\n // is one of these\n if (typeof baseParameters === \"boolean\") {\n this.isNullInstance = true;\n }\n\n this.reloadPages = (() => {\n let currentPages: PageButton[];\n return () => {\n const oldPages = currentPages;\n const newPages = this.generatePagesArray(this.page(), this.total(), this.count());\n if (!ng1.equals(oldPages, newPages)) {\n currentPages = newPages;\n this.ngTableEventsChannel.publishPagesChanged(this, newPages, oldPages);\n }\n }\n })();\n\n assignPartialDeep(this._params, this.ngTableDefaults.params);\n\n this.settings(baseSettings);\n this.parameters(baseParameters, true);\n\n this.ngTableEventsChannel.publishAfterCreated(this);\n // run events during construction after the initial create event. That way a consumer\n // can subscribe to all events for a table without \"dropping\" an event\n ng1.forEach(this.initialEvents, event => {\n event();\n });\n this.initialEvents = null;\n }\n /**\n * Returns the number of data rows per page\n */\n count(): number\n /**\n * Sets the number of data rows per page.\n * Changes to count will cause `isDataReloadRequired` to return true\n */\n count(count: number): this\n count(count?: number) {\n // reset to first page because can be blank page\n return count !== undefined ? this.parameters({\n 'count': count,\n 'page': 1\n }) : this._params.count;\n }\n /**\n * Returns the current filter values used to restrict the set of data rows.\n * @param trim supply true to return the current filter minus any insignificant values\n * (null, undefined and empty string)\n */\n filter(trim?: boolean): FilterValues\n /**\n * Sets filter values to the `filter` supplied; any existing filter will be removed\n * Changes to filter will cause `isDataReloadRequired` to return true and the current `page` to be set to 1\n */\n filter(filter: FilterValues): this\n filter(filter?: FilterValues | boolean) {\n if (filter != null && typeof filter === 'object') {\n return this.parameters({\n 'filter': filter,\n 'page': 1\n });\n } else if (filter === true) {\n const keys = Object.keys(this._params.filter);\n const significantFilter: FilterValues = {};\n for (let i = 0; i < keys.length; i++) {\n const filterValue = this._params.filter[keys[i]];\n if (filterValue != null && filterValue !== '') {\n significantFilter[keys[i]] = filterValue;\n }\n }\n return significantFilter;\n } else {\n return this._params.filter;\n }\n }\n /**\n * Generate array of pages.\n * When no arguments supplied, the current parameter state of this `NgTableParams` instance will be used\n * @param currentPage Which page must be active\n * @param totalItems Total quantity of items\n * @param pageSize Quantity of items on page\n * @param maxBlocks Quantity of blocks for pagination\n * @returns Array of pages\n */\n generatePagesArray(currentPage?: number, totalItems?: number, pageSize?: number, maxBlocks?: number) {\n if (!arguments.length) {\n currentPage = this.page();\n totalItems = this.total();\n pageSize = this.count();\n }\n\n let maxPage: number, maxPivotPages: number, minPage: number, numPages: number;\n maxBlocks = maxBlocks && maxBlocks < 6 ? 6 : maxBlocks;\n\n const pages: PageButton[] = [];\n numPages = Math.ceil(totalItems / pageSize);\n if (numPages > 1) {\n pages.push({\n type: 'prev',\n number: Math.max(1, currentPage - 1),\n active: currentPage > 1\n });\n pages.push({\n type: 'first',\n number: 1,\n active: currentPage > 1,\n current: currentPage === 1\n });\n maxPivotPages = Math.round((this._settings.paginationMaxBlocks - this._settings.paginationMinBlocks) / 2);\n minPage = Math.max(2, currentPage - maxPivotPages);\n maxPage = Math.min(numPages - 1, currentPage + maxPivotPages * 2 - (currentPage - minPage));\n minPage = Math.max(2, minPage - (maxPivotPages * 2 - (maxPage - minPage)));\n let i = minPage;\n while (i <= maxPage) {\n if ((i === minPage && i !== 2) || (i === maxPage && i !== numPages - 1)) {\n pages.push({\n type: 'more',\n active: false\n });\n } else {\n pages.push({\n type: 'page',\n number: i,\n active: currentPage !== i,\n current: currentPage === i\n });\n }\n i++;\n }\n pages.push({\n type: 'last',\n number: numPages,\n active: currentPage !== numPages,\n current: currentPage === numPages\n });\n pages.push({\n type: 'next',\n number: Math.min(numPages, currentPage + 1),\n active: currentPage < numPages\n });\n }\n return pages;\n }\n /**\n * Returns the current grouping used to group the data rows\n */\n group(): Grouping\n /**\n * Sets grouping to the `group` supplied; any existing grouping will be removed.\n * Changes to group will cause `isDataReloadRequired` to return true and the current `page` to be set to 1\n */\n group(group: GroupValuesPartial): this\n /**\n * Sets grouping to the `field` and `sortDirection` supplied; any existing grouping will be removed\n * Changes to group will cause `isDataReloadRequired` to return true and the current `page` to be set to 1\n */\n group(field: string, sortDirection?: GroupSort): this\n /**\n * Sets grouping to the `group` supplied; any existing grouping will be removed.\n * If `sortDirection` is supplied, this will be assigned to the sortDirection property of `group`\n * Changes to group will cause `isDataReloadRequired` to return true and the current `page` to be set to 1\n */\n group(group: GroupingFunc | string, sortDirection?: GroupSort): this\n group(group?: GroupingPartial | string, sortDirection?: GroupSort): string | Grouping | this {\n if (group === undefined) {\n return this._params.group;\n }\n\n const newParameters: ParamValuesPartial = {\n page: 1\n };\n if (isGroupingFun(group) && sortDirection !== undefined) {\n group.sortDirection = sortDirection;\n newParameters.group = group;\n } else if (typeof group === 'string' && sortDirection !== undefined) {\n newParameters.group = { [group]: sortDirection };\n } else {\n newParameters.group = group;\n }\n this.parameters(newParameters);\n return this;\n }\n /**\n * Returns true when an attempt to `reload` the current `parameter` values have resulted in a failure.\n * This method will continue to return true until the `reload` is successfully called or when the\n * `parameter` values have changed\n */\n hasErrorState() {\n return !!(this.errParamsMemento && ng1.equals(this.errParamsMemento, this.createComparableParams()));\n }\n /**\n * Returns true if `filter` has significant filter value(s) (any value except null, undefined, or empty string),\n * otherwise false\n */\n hasFilter() {\n return Object.keys(this.filter(true)).length > 0;\n }\n /**\n * Return true when a change to `filters` require the `reload` method\n * to be run so as to ensure the data presented to the user reflects these filters\n */\n hasFilterChanges() {\n const previousFilter = (this.prevParamsMemento && this.prevParamsMemento.params.filter);\n return !ng1.equals((this._params.filter), previousFilter) || this.hasGlobalSearchFieldChanges();\n }\n /**\n * Returns true when at least one group has been set\n */\n hasGroup(): boolean\n /**\n * Returns true when the `group` and when supplied, the `sortDirection` matches an existing group\n */\n hasGroup(group: string | GroupingFunc, sortDirection?: string): boolean\n hasGroup(group?: string | GroupingFunc, sortDirection?: string) {\n if (group == null) {\n return isGroupingFun(this._params.group) || Object.keys(this._params.group).length > 0\n }\n\n if (isGroupingFun(group)) {\n if (sortDirection == null) {\n return this._params.group === group;\n } else {\n return this._params.group === group && group.sortDirection === sortDirection;\n }\n } else {\n if (sortDirection == null) {\n return Object.keys(this._params.group).indexOf(group) !== -1;\n } else {\n return (this._params.group as GroupValues)[group] === sortDirection;\n }\n }\n }\n /**\n * Return true when a change to this instance should require the `reload` method\n * to be run so as to ensure the data rows presented to the user reflects the current state.\n *\n * Note that this method will return false when the `reload` method has run but fails. In this case\n * `hasErrorState` will return true.\n *\n * The built-in `ngTable` directives will watch for when this function returns true and will then call\n * the `reload` method to load its data rows\n */\n isDataReloadRequired() {\n // note: using != as want to treat null and undefined the same\n return !this.isCommittedDataset || !ng1.equals(this.createComparableParams(), this.prevParamsMemento)\n || this.hasGlobalSearchFieldChanges();\n }\n /**\n * Returns true if sorting by the field supplied. Where direction supplied\n * the field must also be sorted by that direction to return true\n */\n isSortBy(field: string, direction?: string) {\n if (direction !== undefined) {\n return this._params.sorting[field] !== undefined && this._params.sorting[field] == direction;\n } else {\n return this._params.sorting[field] !== undefined;\n }\n }\n /**\n * Returns sorting values in a format that can be consumed by the angular `$orderBy` filter service\n */\n orderBy() {\n return convertSortToOrderBy(this._params.sorting);\n }\n /**\n * Returns the index of the current \"slice\" of data rows\n */\n page(): number\n /**\n * Sets the index of the current \"slice\" of data rows. The index starts at 1.\n * Changing the page number will cause `isDataReloadRequired` to return true\n */\n page(page: number): this\n page(page?: number) {\n return page !== undefined ? this.parameters({\n 'page': page\n }) : this._params.page;\n }\n parameters(): ParamValues\n /**\n * Set new parameters\n */\n parameters(newParameters?: ParamValuesPartial | { [name: string]: string }, parseParamsFromUrl?: boolean): this\n parameters(newParameters?: ParamValuesPartial | { [name: string]: string }, parseParamsFromUrl?: boolean): ParamValues | this {\n if (newParameters === undefined) {\n return this._params;\n }\n\n // todo: move parsing of url like parameters into a seperate method\n\n parseParamsFromUrl = parseParamsFromUrl || false;\n for (const key in newParameters) {\n let value = newParameters[key];\n if (parseParamsFromUrl && key.indexOf('[') >= 0) {\n const keys = key.split(/\\[(.*)\\]/).reverse()\n let lastKey = '';\n for (let i = 0, len = keys.length; i < len; i++) {\n const name = keys[i];\n if (name !== '') {\n const v = value;\n value = {};\n value[lastKey = name] = (isNumber(v) ? parseFloat(v) : v);\n }\n }\n if (lastKey === 'sorting') {\n this._params[lastKey] = {};\n }\n this._params[lastKey] = ng1.extend(this._params[lastKey] || {}, value[lastKey]);\n } else {\n if (newParameters[key] === undefined) {\n // skip\n }\n else if (key === 'group') {\n this._params[key] = this.parseGroup(newParameters[key]);\n } else {\n this._params[key] = (isNumber(newParameters[key]) ? parseFloat(newParameters[key]) : newParameters[key]);\n }\n }\n }\n this.log('ngTable: set parameters', this._params);\n return this;\n }\n /**\n * Trigger a reload of the data rows\n */\n reload>(): IPromise {\n let pData: ng1.IPromise;\n\n this._settings.$loading = true;\n\n this.prevParamsMemento = ng1.copy(this.createComparableParams());\n this.isCommittedDataset = true;\n\n if (this.hasGroup()) {\n pData = this.runInterceptorPipeline(this.$q.when(this._settings.getGroups(this)));\n } else {\n const fn = this._settings.getData as GetDataFunc;\n pData = this.runInterceptorPipeline(this.$q.when(fn(this)));\n }\n\n this.log('ngTable: reload data');\n\n const oldData = this.data;\n return pData.then(data => {\n this._settings.$loading = false;\n this.errParamsMemento = null;\n\n this.data = data;\n // note: I think it makes sense to publish this event even when data === oldData\n // subscribers can always set a filter to only receive the event when data !== oldData\n this.ngTableEventsChannel.publishAfterReloadData(this, data, oldData);\n this.reloadPages();\n\n return data;\n }).catch(reason => {\n this.errParamsMemento = this.prevParamsMemento;\n // \"rethrow\"\n return this.$q.reject(reason);\n });\n }\n /**\n * Returns the settings for the table.\n */\n settings(): Settings\n /**\n * Sets the settings for the table; new setting values will be merged with the existing settings.\n * Supplying a new `dataset` will cause `isDataReloadRequired` to return true and the `ngTableEventsChannel`\n * to fire its `datasetChanged` event\n */\n settings(newSettings: SettingsPartial): this\n settings(newSettings?: SettingsPartial): this | Settings {\n if (newSettings === undefined) {\n return this._settings;\n }\n\n const settings = Settings.merge(this._settings, newSettings);\n\n const originalDataset = this._settings.dataset;\n this._settings = settings;\n\n // note: using != as want null and undefined to be treated the same\n const hasDatasetChanged = newSettings.hasOwnProperty('dataset') && (newSettings.dataset != originalDataset);\n if (hasDatasetChanged) {\n if (this.isCommittedDataset) {\n this.page(1); // reset page as a new dataset has been supplied\n }\n this.isCommittedDataset = false;\n\n const fireEvent = () => {\n this.ngTableEventsChannel.publishDatasetChanged(this, newSettings.dataset, originalDataset);\n };\n\n if (this.initialEvents) {\n this.initialEvents.push(fireEvent);\n } else {\n fireEvent();\n }\n }\n this.log('ngTable: set settings', this._settings);\n return this;\n }\n /**\n * Returns the current sorting used to order the data rows.\n * Changes to sorting will cause `isDataReloadRequired` to return true\n */\n sorting(): SortingValues\n /**\n * Sets sorting values to the `sorting` supplied; any existing sorting will be removed.\n * Changes to sorting will cause `isDataReloadRequired` to return true\n */\n sorting(sorting: SortingValues): this\n /**\n * Sets sorting to the `field` and `direction` supplied; any existing sorting will be removed\n */\n sorting(field: string, direction?: string): this\n sorting(sorting?: SortingValues | string, direction?: SortDirection) {\n if (typeof sorting === 'string') {\n this.parameters({\n 'sorting': { [sorting]: direction || this.settings().defaultSort }\n });\n return this;\n }\n return sorting !== undefined ? this.parameters({\n 'sorting': sorting\n }) : this._params.sorting;\n }\n /**\n * Returns the count of the data rows that match the current `filter`\n */\n total(): number\n /**\n * Sets `settings().total` to the value supplied.\n * Typically you will need to set a `total` in the body of any custom `getData` function\n * you supply as a setting value to this instance.\n * @example\n * ```js\n * const tp = new NgTableParams({}, { getData: customGetData })\n * function customGetData(params) {\n * const queryResult = // code to fetch current data rows and total //\n * params.total(queryResult.total);\n * return queryResult.dataRowsPage;\n * }\n * ```\n */\n total(total: number): this\n total(total?: number) {\n return total !== undefined ? this.settings({\n 'total': total\n }) : this._settings.total;\n }\n /**\n * Returns the current parameter values uri-encoded. Set `asString` to\n * true for the parameters to be returned as an array of strings of the form 'paramName=value'\n * otherwise parameters returned as a key-value object\n */\n url(asString = false) {\n const pairs: any[] | { [name: string]: string } = (asString ? [] : {});\n for (const key in this._params) {\n if (this._params.hasOwnProperty(key)) {\n const item = (this._params as { [name: string]: any })[key],\n name = encodeURIComponent(key);\n if (typeof item === \"object\") {\n for (const subkey in item) {\n if (isSignificantValue(item[subkey], key)) {\n const pname = name + \"[\" + encodeURIComponent(subkey) + \"]\";\n collectValue(item[subkey], pname);\n }\n }\n } else if (!ng1.isFunction(item) && isSignificantValue(item, key)) {\n collectValue(item, name);\n }\n }\n }\n return pairs;\n\n function collectValue(value: any, key: string) {\n if (isArray(pairs)) {\n pairs.push(key + \"=\" + encodeURIComponent(value));\n } else {\n pairs[key] = encodeURIComponent(value);\n }\n }\n\n function isArray(pairs: any[] | {}): pairs is Array {\n return asString;\n }\n\n function isSignificantValue(value: any, key: string) {\n return key === \"group\" ? true : typeof value !== undefined && value !== \"\";\n }\n }\n private createComparableParams(): Memento {\n const group = this._params.group;\n return {\n params: this._params,\n groupSortDirection: isGroupingFun(group) ? group.sortDirection : undefined\n };\n }\n private hasGlobalSearchFieldChanges() {\n const currentVal = (this._params.filter && this._params.filter['$']);\n const previousVal =\n (this.prevParamsMemento && this.prevParamsMemento.params.filter && this.prevParamsMemento.params.filter['$']);\n return !ng1.equals(currentVal, previousVal);\n }\n private log(...args: any[]) {\n if (this._settings.debugMode && this.$log.debug) {\n this.$log.debug(...args);\n }\n }\n private parseGroup(group: string | Grouping) {\n const defaultSort = this._settings.groupOptions.defaultSort;\n if (!group) {\n return group;\n } else if (isGroupingFun(group)) {\n if (group.sortDirection == null) {\n group.sortDirection = defaultSort;\n }\n return group;\n } else if (typeof group === 'object') {\n for (const key in group) {\n if (group[key] == null) {\n group[key] = defaultSort;\n }\n }\n return group;\n } else {\n return {\n [group]: defaultSort\n };\n }\n }\n private runInterceptorPipeline(fetchedData: IPromise) {\n return this._settings.interceptors.reduce((result, interceptor) => {\n const thenFn = (interceptor.response && interceptor.response.bind(interceptor)) || this.$q.when;\n const rejectFn = (interceptor.responseError && interceptor.responseError.bind(interceptor)) || this.$q.reject;\n return result.then(data => {\n return thenFn(data, this);\n }, reason => {\n return rejectFn(reason, this);\n });\n }, fetchedData);\n }\n\n static init(\n $q: IQService,\n $log: ILogService,\n ngTableDefaults: Defaults,\n ngTableEventsChannel: NgTableEventsChannel) {\n ng1.extend(NgTableParams.prototype, {\n $q, $log, ngTableDefaults, ngTableEventsChannel\n });\n }\n}\n\nNgTableParams.init.$inject = ['$q', '$log', 'ngTableDefaults', 'ngTableEventsChannel'];\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/ngTableParams.ts","import * as ng1 from 'angular';\nimport { assignPartialDeep, checkClassInit } from '../shared';\nimport { IPromise } from 'angular';\nimport { Defaults } from './ngTableDefaults';\nimport { DataRowGroup, DataSettingsPartial, DataSettings, DefaultGetData, GetDataFunc, Interceptor, InterceptableGetDataFunc } from './data';\nimport { FilterValues, FilterSettingsPartial, FilterSettings } from './filtering';\nimport { GetGroupFunc, GroupSettingsPartial, GroupSettings } from './grouping';\nimport { SortDirection } from './sorting';\nimport { NgTableParams } from './ngTableParams';\n\n/**\n * Configuration settings for {@link NgTableParams}\n */\nexport class Settings {\n constructor() {\n checkClassInit(Settings);\n }\n /**\n * Returns true whenever a call to `getData` is in progress\n */\n $loading = false;\n /**\n * The page size buttons that should be displayed. Each value defined in the array\n * determines the possible values that can be supplied to {@link NgTableParams} `page`\n */\n counts = [10, 25, 50, 100];\n /**\n * An array that contains all the data rows that table should manage.\n * The `gateData` function will be used to manage the data rows\n * that ultimately will be displayed.\n */\n dataset?: T[] = undefined;\n dataOptions = new DataSettings();\n debugMode = false;\n /**\n * The total number of data rows before paging has been applied.\n * Typically you will not need to supply this yourself\n */\n total = 0;\n /**\n * The default sort direction that will be used whenever a sorting is supplied that\n * does not define its own sort direction\n */\n defaultSort: SortDirection = 'desc';\n filterOptions = new FilterSettings();\n /**\n * The function that will be used fetch data rows. Leave undefined to let the {@link IDefaultGetData}\n * service provide a default implementation that will work with the `dataset` array you supply.\n *\n * Typically you will supply a custom function when you need to execute filtering, paging and sorting\n * on the server\n */\n getData: GetDataFunc | InterceptableGetDataFunc = Settings.defaultGetData;\n /**\n * The function that will be used group data rows according to the groupings returned by {@link NgTableParams} `group`\n */\n getGroups: GetGroupFunc = Settings.defaultGetGroups;\n groupOptions = new GroupSettings();\n /**\n * The collection of interceptors that should apply to the results of a call to\n * the `getData` function before the data rows are displayed in the table\n */\n interceptors = new Array>();\n /**\n * Configuration for the template that will display the page size buttons\n */\n paginationMaxBlocks = 11;\n /**\n * Configuration for the template that will display the page size buttons\n */\n paginationMinBlocks = 5;\n /**\n * The html tag that will be used to display the sorting indicator in the table header\n */\n sortingIndicator = 'span'\n static isInitialized = false;\n private static defaultGetData: GetDataFunc;\n private static defaultGetGroups: GetGroupFunc;\n private static ngTableDefaults: Defaults\n private static instance: Settings;\n static createWithOverrides(): Settings {\n checkClassInit(Settings);\n return Settings.merge(Settings.instance, Settings.ngTableDefaults.settings || {});\n }\n static merge(existing: Settings, newSettings: SettingsPartial): Settings {\n checkClassInit(Settings);\n\n const optionalPropNames: (keyof Settings)[] = ['dataset'];\n const results = assignPartialDeep(\n ng1.copy(existing),\n newSettings,\n (key: keyof Settings) => optionalPropNames.indexOf(key) !== -1,\n (destValue: any, srcValue: any, key: keyof Settings) => {\n // copy *reference* to dataset\n if (key === 'dataset') {\n return srcValue;\n }\n return undefined;\n });\n\n if (newSettings.dataset) {\n results.total = newSettings.dataset.length;\n Settings.optimizeFilterDelay(results);\n }\n return results;\n }\n private static optimizeFilterDelay(settings: Settings) {\n // don't debounce by default filter input when working with small synchronous datasets\n if (settings.filterOptions.filterDelay === Settings.instance.filterOptions.filterDelay &&\n settings.total <= settings.filterOptions.filterDelayThreshold &&\n settings.getData === Settings.instance.getData) {\n settings.filterOptions.filterDelay = 0;\n }\n }\n static init(ngTableDefaultGetData: DefaultGetData,\n ngTableDefaultGetGroups: GetGroupFunc,\n ngTableDefaults: Defaults) {\n Settings.defaultGetData = (params: NgTableParams) => {\n return ngTableDefaultGetData(params.settings().dataset, params) as any[];\n };\n Settings.defaultGetGroups = ngTableDefaultGetGroups;\n Settings.ngTableDefaults = ngTableDefaults;\n Settings.isInitialized = true;\n Settings.instance = new Settings();\n }\n}\n\nSettings.init.$inject = ['ngTableDefaultGetData', 'ngTableDefaultGetGroups', 'ngTableDefaults'];\n\nexport type SettingsPartial =\n Partial,\n '$loading' |\n 'counts' |\n 'dataset' |\n 'debugMode' |\n 'total' |\n 'defaultSort' |\n 'getData' |\n 'getGroups' |\n 'interceptors' |\n 'paginationMaxBlocks' |\n 'paginationMinBlocks' |\n 'sortingIndicator'>>\n & {\n dataOptions?: DataSettingsPartial;\n filterOptions?: FilterSettingsPartial;\n groupOptions?: GroupSettingsPartial;\n }\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/ngTableSettings.ts","import { GroupingPartial, GroupingFunc } from './grouping';\nimport { SortingValues } from './sorting';\n\n/**\n * @private\n */\nexport function convertSortToOrderBy(sorting: SortingValues) {\n const result: string[] = [];\n for (let column in sorting) {\n result.push((sorting[column] === \"asc\" ? \"+\" : \"-\") + column);\n }\n return result;\n}\n\n/**\n * @private\n */\nexport function isGroupingFun(val: string | GroupingPartial): val is GroupingFunc {\n return typeof val === 'function'\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/util.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\nimport { IAugmentedJQuery, IDirective, IQService, IParseService, IPromise, IScope } from 'angular';\nimport * as ng1 from 'angular';\nimport { \n ColumnDef, ColumnDefPartial, ColumnFieldContext, ColumnField, DeclarativeTableHtmlAttributes, \n FilterTemplateDefMap, SelectData \n} from './public-interfaces';\nimport { NgTableController } from './ngTableController';\n\ninterface ScopeExtensions {\n $columns: ColumnDef[]\n}\n\nngTable.$inject = ['$q', '$parse'];\n\n/**\n * Directive that instantiates {@link NgTableController NgTableController}.\n * @ngdoc directive\n * @name ngTable\n * @example\n * \n * ```html\n * \n * \n * \n * \n * \n *
\n * {{user.name}}\n * \n * {{user.age}}\n *
\n * ```\n */\nexport function ngTable($q: IQService, $parse: IParseService) : IDirective {\n\n return {\n restrict: 'A',\n priority: 1001,\n scope: true,\n controller: 'ngTableController',\n compile: function(element: IAugmentedJQuery) {\n let compiledColumns: ColumnDefPartial[] = [],\n i = 0,\n dataRow: JQuery,\n groupRow: JQuery\n const rows: JQuery[] = [];\n\n ng1.forEach(element.find('tr'), (tr: JQuery) => {\n rows.push(ng1.element(tr))\n });\n dataRow = rows.filter(tr => !tr.hasClass('ng-table-group'))[0];\n groupRow = rows.filter(tr => tr.hasClass('ng-table-group'))[0];\n\n if (!dataRow) {\n return undefined;\n }\n ng1.forEach(dataRow.find('td'), (item: JQuery) => {\n const el = ng1.element(item);\n if (el.attr('ignore-cell') && 'true' === el.attr('ignore-cell')) {\n return;\n }\n\n const getAttrValue = function(attr: string){\n return el.attr('x-data-' + attr) || el.attr('data-' + attr) || el.attr(attr);\n };\n const setAttrValue = function(attr: string, value: string){\n if (el.attr('x-data-' + attr)){\n el.attr('x-data-' + attr, value)\n } else if (el.attr('data' + attr)){\n el.attr('data' + attr, value)\n } else {\n el.attr(attr, value)\n }\n };\n\n const parsedAttribute = function(attr: string): ColumnField | undefined {\n const expr = getAttrValue(attr);\n if (!expr){\n return undefined;\n }\n\n let localValue: any;\n const getter = (context: ColumnFieldContext) => {\n if (localValue !== undefined){\n return localValue as T;\n }\n return $parse(expr)(context) as T;\n };\n (getter as any).assign = ($scope: ColumnFieldContext, value: any) => {\n const parsedExpr = $parse(expr);\n if (parsedExpr.assign) {\n // we should be writing back to the parent scope as this is where the expression\n // came from\n parsedExpr.assign($scope.$parent, value);\n } else {\n localValue = value;\n }\n };\n return getter as ColumnField;\n };\n const titleExpr = getAttrValue('title-alt') || getAttrValue('title');\n if (titleExpr){\n el.attr('data-title-text', '{{' + titleExpr + '}}'); // this used in responsive table\n }\n // NOTE TO MAINTAINERS: if you add extra fields to a $column be sure to extend ngTableColumn with\n // a corresponding \"safe\" default\n compiledColumns.push({\n id: i++,\n title: parsedAttribute('title'),\n titleAlt: parsedAttribute('title-alt'),\n headerTitle: parsedAttribute('header-title'),\n sortable: parsedAttribute('sortable'),\n 'class': parsedAttribute('header-class'),\n filter: parsedAttribute('filter'),\n groupable: parsedAttribute('groupable'),\n headerTemplateURL: parsedAttribute('header'),\n filterData: parsedAttribute | SelectData>('filter-data'),\n show: el.attr(\"ng-if\") ? parsedAttribute('ng-if') : undefined\n });\n\n if (groupRow || el.attr(\"ng-if\")){\n // change ng-if to bind to our column definition which we know will be writable\n // because this will potentially increase the $watch count, only do so if we already have an\n // ng-if or when we definitely need to change visibility of the columns.\n // currently only ngTableGroupRow directive needs to change visibility\n setAttrValue('ng-if', '$columns[' + (compiledColumns.length - 1) + '].show(this)');\n }\n });\n return function(scope: IScope & ScopeExtensions, element: IAugmentedJQuery, attrs: DeclarativeTableHtmlAttributes, controller: NgTableController) {\n const columns = scope.$columns = controller.buildColumns(compiledColumns);\n\n controller.setupBindingsToInternalScope(attrs.ngTable);\n controller.loadFilterData(columns);\n controller.compileDirectiveTemplates();\n };\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTable.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IScope } from 'angular';\nimport * as ng1 from 'angular';\nimport { ColumnDef, ColumnDefPartial, DynamicTableColDef } from './public-interfaces';\n\n/**\n * @private\n */\nfunction isScopeLike(object: any) {\n return object != null && ng1.isFunction(object.$new);\n}\n\n/**\n * @private\n * Service to construct a $column definition used by {@link ngTable ngTable} directive\n */\nexport class NgTableColumn {\n static $inject: string[] = [];\n\n /**\n * Creates a $column for use within a header template\n *\n * @param column the initial definition for $column to build\n * @param defaultScope the $scope to supply to the $column getter methods when not supplied by caller\n * @param columns a reference to the $columns array to make available on the context supplied to the\n * $column getter methods\n */\n buildColumn(column: TCol, defaultScope: IScope, columns: ColumnDef[]): ColumnDef {\n // note: we're not modifying the original column object. This helps to avoid unintended side affects\n const extendedCol = Object.create(column);\n const defaults = this.createDefaults();\n for (const prop in defaults) {\n if (extendedCol[prop] === undefined) {\n extendedCol[prop] = defaults[prop];\n }\n if (!ng1.isFunction(extendedCol[prop])) {\n // wrap raw field values with \"getter\" functions\n // - this is to ensure consistency with how ngTable.compile builds columns\n // - note that the original column object is being \"proxied\"; this is important\n // as it ensure that any changes to the original object will be returned by the \"getter\"\n const getterSetter = function getterSetter(/*[value] || [$scope, locals]*/) {\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\n (getterSetter as any).assign(null, arguments[0]);\n } else {\n return column[prop];\n }\n };\n (getterSetter as any).assign = function ($scope: IScope, value: any) {\n column[prop] = value;\n };\n extendedCol[prop] = getterSetter;\n }\n // satisfy the arguments expected by the function returned by parsedAttribute in the ngTable directive\n const getterFn = extendedCol[prop];\n extendedCol[prop] = function () {\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\n getterFn.assign(defaultScope, arguments[0]);\n } else {\n const scope = arguments[0] || defaultScope;\n const context = Object.create(scope);\n ng1.extend(context, {\n $column: extendedCol,\n $columns: columns\n });\n return getterFn.call(column, context);\n }\n };\n if (getterFn.assign) {\n extendedCol[prop].assign = getterFn.assign;\n } else {\n const wrappedGetterFn = extendedCol[prop];\n let localValue: any;\n const getterSetter = function getterSetter(/*[value] || [$scope, locals]*/) {\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\n (getterSetter as any).assign(null, arguments[0]);\n } else {\n return localValue != undefined ? localValue : wrappedGetterFn.apply(extendedCol, arguments);\n }\n };\n (getterSetter as any).assign = function ($scope: IScope, value: any) {\n localValue = value;\n };\n extendedCol[prop] = getterSetter;\n }\n }\n return extendedCol as ColumnDef;\n }\n\n private createDefaults() {\n return {\n 'class': this.createGetterSetter(''),\n filter: this.createGetterSetter(false),\n groupable: this.createGetterSetter(false),\n filterData: ng1.noop,\n headerTemplateURL: this.createGetterSetter(false),\n headerTitle: this.createGetterSetter(''),\n sortable: this.createGetterSetter(false),\n show: this.createGetterSetter(true),\n title: this.createGetterSetter(''),\n titleAlt: this.createGetterSetter('')\n };\n }\n\n private createGetterSetter(initialValue: any) {\n let value = initialValue;\n const getterSetter = function getterSetter(/*[value] || [$scope, locals]*/) {\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\n (getterSetter as any).assign(null, arguments[0]);\n } else {\n return value;\n }\n };\n (getterSetter as any).assign = function ($scope: IScope, newValue: any) {\n value = newValue;\n };\n return getterSetter;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableColumn.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IAugmentedJQuery, IAttributes, IDirective, IParseService } from 'angular';\nimport { TableScope } from './ngTableController';\nimport { ColumnDef } from './public-interfaces';\n\n/**\n * @private\n */\ninterface InputAttributes extends IAttributes {\n ngTableColumnsBinding: string;\n}\n\nngTableColumnsBinding.$inject = [\"$parse\"];\n\n/**\n * One-way data binds the $columns array generated by ngTable/ngTableDynamic to the specified\n * expression.\n * This allows the $columns array created for the table to be accessed outside of the html table\n * markup.\n * \n * @ngdoc directive\n * \n * @example\n * ```html\n * \n * ```\n */\nexport function ngTableColumnsBinding($parse: IParseService) : IDirective {\n const directive = {\n restrict: 'A',\n link: linkFn\n };\n return directive;\n\n function linkFn($scope: TableScope, $element: IAugmentedJQuery, $attrs: InputAttributes){\n const setter = $parse($attrs.ngTableColumnsBinding).assign;\n if (setter){\n $scope.$watch('$columns', newColumns => {\n const shallowClone = (newColumns || []).slice(0);\n setter($scope, shallowClone);\n });\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableColumnsBinding.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport {\n IAttributes, IAugmentedJQuery, ICompileService, IDocumentService, IParseService, IPromise, IScope,\n ITimeoutService\n} from 'angular';\nimport * as ng1 from 'angular';\nimport {\n DataResult, DataResults, DataRowGroup, GroupedDataResults, NgTableParams, NgTableEventsChannel,\n PageButton\n} from '../core';\nimport { ColumnDef, ColumnDefPartial, DynamicTableColDef, SelectData, TableHtmlAttributes } from './public-interfaces';\nimport { NgTableColumn } from './ngTableColumn';\n\n/**\n * @private\n */\nexport interface TableScope extends IScope {\n $columns: ColumnDef[];\n $loading: boolean;\n $filterRow: {\n disabled: boolean;\n };\n $data?: DataResults;\n $groups?: GroupedDataResults;\n $groupRow: {\n show: boolean;\n };\n show_filter: boolean;\n pages: PageButton[];\n templates: {\n header: string;\n pagination: string;\n },\n params: NgTableParams\n}\n\n/**\n * The controller for the {@link ngTable ngTable} and {@link ngTableDynamic ngTableDynamic} directives\n */\nexport class NgTableController {\n static $inject = [\n '$scope', '$timeout', '$parse', '$compile', '$attrs', '$element', '$document', 'ngTableColumn', 'ngTableEventsChannel'\n ];\n private delayFilter: (callback: () => void, ms: number) => void;\n private get hasVisibleFilterColumn() {\n if (!this.$scope.$columns) return false;\n\n return this.some(this.$scope.$columns, ($column) => {\n return $column.show(this.$scope) && !!$column.filter(this.$scope);\n });\n }\n constructor(\n private $scope: TableScope,\n $timeout: ITimeoutService,\n private $parse: IParseService,\n private $compile: ICompileService,\n private $attrs: IAttributes & TableHtmlAttributes,\n private $element: IAugmentedJQuery,\n private $document: IDocumentService,\n private ngTableColumn: NgTableColumn,\n private ngTableEventsChannel: NgTableEventsChannel) {\n\n const isFirstTimeLoad = true;\n $scope.$filterRow = { disabled: false };\n $scope.$loading = false;\n\n // until such times as the directive uses an isolated scope, we need to ensure that the check for\n // the params field only consults the \"own properties\" of the $scope. This is to avoid seeing the params\n // field on a $scope higher up in the prototype chain\n if (!$scope.hasOwnProperty(\"params\")) {\n $scope.params = new NgTableParams(true);\n }\n\n this.delayFilter = (function () {\n let timer: IPromise;\n return (callback: () => void, ms: number) => {\n $timeout.cancel(timer);\n timer = $timeout(callback, ms);\n };\n })();\n\n // watch for when a new NgTableParams is bound to the scope\n // CRITICAL: the watch must be for reference and NOT value equality; this is because NgTableParams maintains\n // the current data page as a field. Checking this for value equality would be terrible for performance\n // and potentially cause an error if the items in that array has circular references\n this.$scope.$watch>('params', (newParams, oldParams) => {\n if (newParams === oldParams || !newParams) {\n return;\n }\n\n newParams.reload();\n }, false);\n\n this.subscribeToTableEvents();\n }\n\n private onDataReloadStatusChange(newStatus: boolean/*, oldStatus*/) {\n if (!newStatus || this.$scope.params.hasErrorState()) {\n return;\n }\n\n const currentParams = this.$scope.params;\n const filterOptions = currentParams.settings().filterOptions;\n\n if (currentParams.hasFilterChanges()) {\n const applyFilter = () => {\n currentParams.page(1);\n currentParams.reload();\n };\n if (filterOptions.filterDelay) {\n this.delayFilter(applyFilter, filterOptions.filterDelay);\n } else {\n applyFilter();\n }\n } else {\n currentParams.reload();\n }\n }\n\n compileDirectiveTemplates() {\n if (!this.$element.hasClass('ng-table')) {\n this.$scope.templates = {\n header: (this.$attrs.templateHeader ? this.$attrs.templateHeader : 'ng-table/header.html'),\n pagination: (this.$attrs.templatePagination ? this.$attrs.templatePagination : 'ng-table/pager.html')\n };\n this.$element.addClass('ng-table');\n let headerTemplate: IAugmentedJQuery | undefined;\n\n // $element.find('> thead').length === 0 doesn't work on jqlite\n let theadFound = false;\n ng1.forEach(this.$element.children(), (e) => {\n if (e.tagName === 'THEAD') {\n theadFound = true;\n }\n });\n if (!theadFound) {\n headerTemplate = ng1.element('', this.$document);\n this.$element.prepend(headerTemplate);\n }\n const paginationTemplate = ng1.element(\n '
',\n this.$document\n );\n this.$element.after(paginationTemplate);\n if (headerTemplate) {\n this.$compile(headerTemplate)(this.$scope);\n }\n this.$compile(paginationTemplate)(this.$scope);\n }\n }\n\n loadFilterData($columns: ColumnDef[]) {\n ng1.forEach($columns, ($column) => {\n const result = $column.filterData(this.$scope);\n if (!result) {\n delete $column.filterData;\n return undefined;\n }\n\n if (isPromiseLike(result)) {\n delete $column.filterData;\n return result.then(data => {\n // our deferred can eventually return arrays, functions and objects\n if (!ng1.isArray(data) && !ng1.isFunction(data) && !ng1.isObject(data)) {\n // if none of the above was found - we just want an empty array\n data = [];\n }\n $column.data = data;\n });\n }\n // otherwise, we just return what the user gave us. It could be a function, array, object, whatever\n else {\n return $column.data = result;\n }\n });\n\n function isPromiseLike(val: any): val is IPromise {\n return val && typeof val === 'object' && typeof val.then === 'function';\n }\n }\n\n buildColumns(columns: TCol[]): ColumnDef[] {\n // todo: use strictNullChecks and remove guard clause\n const result: ColumnDef[] = [];\n (columns || []).forEach(col => {\n result.push(this.ngTableColumn.buildColumn(col, this.$scope, result));\n });\n return result\n }\n\n parseNgTableDynamicExpr(attr: string) {\n if (!attr || attr.indexOf(\" with \") > -1) {\n const parts = attr.split(/\\s+with\\s+/);\n return {\n tableParams: parts[0],\n columns: parts[1]\n };\n } else {\n throw new Error('Parse error (expected example: ng-table-dynamic=\\'tableParams with cols\\')');\n }\n }\n\n setupBindingsToInternalScope(tableParamsExpr: string) {\n\n // note: this we're setting up watches to simulate angular's isolated scope bindings\n\n // note: is REALLY important to watch for a change to the ngTableParams *reference* rather than\n // $watch for value equivalence. This is because ngTableParams references the current page of data as\n // a field and it's important not to watch this\n this.$scope.$watch>(tableParamsExpr, (params) => {\n if (params === undefined) {\n return;\n }\n this.$scope.params = params;\n }, false);\n\n this.setupFilterRowBindingsToInternalScope();\n this.setupGroupRowBindingsToInternalScope();\n }\n\n private setupFilterRowBindingsToInternalScope() {\n if (this.$attrs.showFilter) {\n this.$scope.$parent.$watch(this.$attrs.showFilter, (value) => {\n this.$scope.show_filter = value;\n });\n } else {\n this.$scope.$watch(() => this.hasVisibleFilterColumn, (value) => {\n this.$scope.show_filter = value;\n })\n }\n\n if (this.$attrs.disableFilter) {\n this.$scope.$parent.$watch(this.$attrs.disableFilter, (value) => {\n this.$scope.$filterRow.disabled = value;\n });\n }\n }\n\n private setupGroupRowBindingsToInternalScope() {\n this.$scope.$groupRow = { show: false };\n if (this.$attrs.showGroup) {\n const showGroupGetter = this.$parse(this.$attrs.showGroup);\n this.$scope.$parent.$watch(showGroupGetter, (value) => {\n this.$scope.$groupRow.show = value;\n });\n if (showGroupGetter.assign) {\n // setup two-way databinding thus allowing ngTableGrowRow to assign to the showGroup expression\n this.$scope.$watch('$groupRow.show', (value) => {\n showGroupGetter.assign(this.$scope.$parent, value);\n });\n }\n } else {\n this.$scope.$watch('params.hasGroup()', (newValue) => {\n this.$scope.$groupRow.show = newValue;\n });\n }\n }\n\n private getVisibleColumns() {\n return (this.$scope.$columns || []).filter((c) => {\n return c.show(this.$scope);\n });\n }\n\n private subscribeToTableEvents() {\n\n this.$scope.$watch('params.isDataReloadRequired()', (newStatus: boolean/*, oldStatus*/) => {\n this.onDataReloadStatusChange(newStatus);\n });\n\n this.ngTableEventsChannel.onAfterReloadData(\n (params, newDatapage) => {\n const visibleColumns = this.getVisibleColumns();\n if (params.hasGroup()) {\n this.$scope.$groups = (newDatapage || []) as GroupedDataResults;\n this.$scope.$groups.visibleColumnCount = visibleColumns.length;\n } else {\n this.$scope.$data = (newDatapage || []) as DataResults;\n this.$scope.$data.visibleColumnCount = visibleColumns.length;\n }\n },\n this.$scope,\n (publisher) => this.$scope.params === publisher\n );\n\n this.ngTableEventsChannel.onPagesChanged(\n (params, newPages) => {\n this.$scope.pages = newPages;\n },\n this.$scope,\n (publisher) => this.$scope.params === publisher\n );\n }\n\n private some(array: T[], predicate: (item: T) => boolean) {\n let found = false;\n for (let i = 0; i < array.length; i++) {\n const obj = array[i];\n if (predicate(obj)) {\n found = true;\n break;\n }\n }\n return found;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableController.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IAugmentedJQuery, IDirective, IScope } from 'angular';\nimport * as ng1 from 'angular';\nimport { ColumnDef, DynamicTableColDef, DynamicTableHtmlAttributes } from './public-interfaces';\nimport { NgTableController } from './ngTableController';\n\ninterface ScopeExtensions {\n $columns: ColumnDef[]\n}\n\nfunction toArray(arr: ArrayLike) {\n return Array.prototype.slice.call(arr) as T[];\n}\n\nngTableDynamic.$inject = [];\n\n/**\n * A dynamic version of the {@link ngTable ngTable} directive that accepts a dynamic list of columns\n * definitions to render\n * @ngdoc directive\n *\n * @example\n * ```html\n *
\n * \n * \n * \n *
{{row[col.field]}}
\n * ```\n */\nexport function ngTableDynamic(): IDirective {\n\n return {\n restrict: 'A',\n priority: 1001,\n scope: true,\n controller: 'ngTableController',\n compile: function (tElement: IAugmentedJQuery) {\n\n const tRows = toArray(tElement[0].getElementsByTagName('tr'));\n const tRow = tRows.filter(tr => !ng1.element(tr).hasClass('ng-table-group'))[0];\n\n if (!tRow) {\n return undefined;\n }\n\n toArray(tRow.getElementsByTagName('td')).forEach(tCell => {\n const el = ng1.element(tCell);\n const getAttrValue = (attr: string) => {\n return el.attr('x-data-' + attr) || el.attr('data-' + attr) || el.attr(attr);\n };\n\n // this used in responsive table\n const titleExpr = getAttrValue('title');\n if (!titleExpr) {\n el.attr('data-title-text', '{{$columns[$index].titleAlt(this) || $columns[$index].title(this)}}');\n }\n const showExpr = el.attr('ng-if');\n if (!showExpr) {\n el.attr('ng-if', '$columns[$index].show(this)');\n }\n });\n return function (scope: IScope & ScopeExtensions, element: IAugmentedJQuery, attrs: DynamicTableHtmlAttributes, controller: NgTableController) {\n const expr = controller.parseNgTableDynamicExpr(attrs.ngTableDynamic);\n\n controller.setupBindingsToInternalScope(expr.tableParams);\n controller.compileDirectiveTemplates();\n\n scope.$watchCollection(expr.columns, (newCols/*, oldCols*/) => {\n scope.$columns = controller.buildColumns(newCols);\n controller.loadFilterData(scope.$columns);\n });\n };\n }\n };\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableDynamic.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nconst templateUrl = require('./filterRow.html');\n\nngTableFilterRow.$inject = [];\n\n/**\n * directive that renders the filter header row for a table \n * @ngdoc directive\n * @example\n * ```html\n * \n * ```\n */\nexport function ngTableFilterRow(){\n const directive = {\n restrict: 'E',\n replace: true,\n templateUrl: templateUrl,\n scope: true,\n controller: 'ngTableFilterRowController',\n controllerAs: '$ctrl'\n };\n return directive;\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableFilterRow.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IScope } from 'angular';\nimport { FilterTemplateDef, FilterTemplateDefMap } from './public-interfaces';\nimport { NgTableFilterConfig } from './ngTableFilterConfig';\n\n/**\n * @private\n */\nexport interface ScopeExtensions {\n getFilterPlaceholderValue(filterDef: string | FilterTemplateDef, filterKey?: string): string;\n}\n\n/**\n * Controller for the {@link ngTableFilterRow ngTableFilterRow} directive\n */\nexport class NgTableFilterRowController {\n static $inject = ['$scope', 'ngTableFilterConfig'];\n config: NgTableFilterConfig;\n constructor($scope: IScope & ScopeExtensions, ngTableFilterConfig: NgTableFilterConfig) {\n this.config = ngTableFilterConfig;\n\n // todo: stop doing this. Why?\n // * scope inheritance makes it hard to know how supplies functions\n // * scope is not a concept in angular 2\n // make function available to filter templates\n $scope.getFilterPlaceholderValue = this.getFilterPlaceholderValue.bind(this);\n }\n\n getFilterCellCss(filter: FilterTemplateDefMap, layout: string) {\n if (layout !== 'horizontal') {\n return 's12';\n }\n\n const size = Object.keys(filter).length;\n const width = parseInt((12 / size).toString(), 10);\n return 's' + width;\n }\n\n getFilterPlaceholderValue(filterDef: string | FilterTemplateDef, filterKey?: string) {\n if (typeof filterDef === 'string') {\n return '';\n } else {\n return filterDef.placeholder;\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableFilterRowController.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nconst templateUrl = require('./groupRow.html');\n\nngTableGroupRow.$inject = [];\n\n/**\n * directive that renders the group header row for a table \n * @ngdoc directive\n * @example\n * ```html\n * \n * ```\n */\nexport function ngTableGroupRow(){\n const directive = {\n restrict: 'E',\n replace: true,\n templateUrl: templateUrl,\n scope: true,\n controller: 'ngTableGroupRowController',\n controllerAs: '$ctrl'\n };\n return directive;\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableGroupRow.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IPromise } from 'angular';\nimport { DataResult, GroupingFunc, Grouping, GroupSort } from '../core';\nimport { ColumnDef } from './public-interfaces';\nimport { TableScope } from './ngTableController';\n\n/**\n * @private\n */\nexport interface ScopeExtensions {\n $selGroup: GroupingFunc | string;\n $selGroupTitle: string;\n}\n\n\n/**\n * Controller for the {@link ngTableGroupRow ngTableGroupRow} directive\n */\nexport class NgTableGroupRowController {\n static $inject = ['$scope'];\n private groupFns: Array | ColumnDef> = [];\n constructor(private $scope: TableScope & ScopeExtensions) {\n $scope.$watch>('params.group()', (newGrouping) => {\n this.setGroup(newGrouping);\n }, true);\n }\n\n getGroupables() {\n const groupableCols = this.$scope.$columns.filter($column => !!$column.groupable(this.$scope));\n return this.groupFns.concat(groupableCols);\n }\n\n getGroupTitle(group: GroupingFunc | ColumnDef) {\n return this.isGroupingFunc(group) ? group.title : group.title(this.$scope);\n }\n\n\n getVisibleColumns() {\n return this.$scope.$columns.filter($column => $column.show(this.$scope))\n }\n\n groupBy(group: GroupingFunc | ColumnDef) {\n if (this.isSelectedGroup(group)) {\n this.changeSortDirection();\n } else {\n if (this.isGroupingFunc(group)) {\n this.$scope.params.group(group);\n } else {\n // it's OK, we know that groupable will return a string\n // this is guaranteed by getGroupables returning only\n // columns that return (truthy) strings\n this.$scope.params.group(group.groupable(this.$scope) as string);\n }\n }\n }\n\n isSelectedGroup(group: GroupingFunc | ColumnDef) {\n if (this.isGroupingFunc(group)) {\n return group === this.$scope.$selGroup;\n } else {\n return group.groupable(this.$scope) === this.$scope.$selGroup;\n }\n }\n\n toggleDetail() {\n this.$scope.params.settings().groupOptions.isExpanded = !this.$scope.params.settings().groupOptions.isExpanded;\n return this.$scope.params.reload();\n }\n\n private changeSortDirection() {\n let newDirection: GroupSort;\n if (this.$scope.params.hasGroup(this.$scope.$selGroup, 'asc')) {\n newDirection = 'desc';\n } else if (this.$scope.params.hasGroup(this.$scope.$selGroup, 'desc')) {\n newDirection = '';\n } else {\n newDirection = 'asc';\n }\n this.$scope.params.group(this.$scope.$selGroup, newDirection);\n }\n\n private findGroupColumn(groupKey: GroupingFunc | string) {\n return this.$scope.$columns.filter($column => $column.groupable(this.$scope) === groupKey)[0];\n }\n\n private isGroupingFunc(val: ColumnDef | Grouping): val is GroupingFunc {\n return typeof val === 'function';\n }\n\n private setGroup(grouping: Grouping) {\n const existingGroupCol = this.findGroupColumn(this.$scope.$selGroup);\n if (existingGroupCol && existingGroupCol.show.assign) {\n existingGroupCol.show.assign(this.$scope, true);\n }\n if (this.isGroupingFunc(grouping)) {\n this.groupFns = [grouping];\n this.$scope.$selGroup = grouping;\n this.$scope.$selGroupTitle = grouping.title || '';\n } else {\n // note: currently only one group is implemented\n const groupKey = Object.keys(grouping || {})[0];\n const groupedColumn = this.findGroupColumn(groupKey);\n if (groupedColumn) {\n this.$scope.$selGroupTitle = groupedColumn.title(this.$scope);\n this.$scope.$selGroup = groupKey;\n if (groupedColumn.show.assign) {\n groupedColumn.show.assign(this.$scope, false);\n }\n }\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableGroupRowController.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport * as ng1 from 'angular';\nimport { NgTableEventsChannel, PageButton } from '../core'\nimport { TableScope } from './ngTableController';\n\ninterface ScopeExtensions {\n pages: PageButton[]\n}\n\nngTablePagination.$inject = ['$compile', '$document', 'ngTableEventsChannel'];\n\n/**\n * Directive that renders the table pagination controls\n * @ngdoc directive\n */\nexport function ngTablePagination($compile: ng1.ICompileService, $document: ng1.IDocumentService, ngTableEventsChannel: NgTableEventsChannel): ng1.IDirective {\n\n return {\n restrict: 'A',\n scope: {\n 'params': '=ngTablePagination',\n 'templateUrl': '='\n },\n replace: false,\n link: function(scope: TableScope & ScopeExtensions, element: ng1.IAugmentedJQuery/*, attrs*/) {\n\n ngTableEventsChannel.onAfterReloadData(function(pubParams) {\n scope.pages = pubParams.generatePagesArray();\n }, scope, function(pubParams){\n return pubParams === scope.params;\n });\n\n scope.$watch('templateUrl', function(templateUrl) {\n if (templateUrl === undefined) {\n return;\n }\n const template = ng1.element('
', $document);\n element.append(template);\n $compile(template)(scope);\n });\n }\n };\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTablePagination.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IAttributes, IDirective, IParseService, IQService, IPromise, IScope } from 'angular';\nimport { ColumnDef, SelectData, SelectDataFunc, SelectOption } from './public-interfaces';\n\n/**\n * @private\n */\nexport interface InputAttributes extends IAttributes {\n ngTableSelectFilterDs: string;\n}\n\n/**\n * @private\n */\nexport interface ScopeExtensions {\n $selectData: SelectOption[]\n}\n\nngTableSelectFilterDs.$inject = [];\n\n/**\n * Takes the array returned by $column.filterData and makes it available as `$selectData` on the `$scope`.\n *\n * The resulting `$selectData` array will contain an extra item that is suitable to represent the user\n * \"deselecting\" an item from a ` \";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/filters/number.html\n// module id = 36\n// module chunks = 0","var path = 'ng-table/filters/select-multiple.html';\nvar html = \" \";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/filters/select-multiple.html\n// module id = 37\n// module chunks = 0","var path = 'ng-table/filters/select.html';\nvar html = \" \";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/filters/select.html\n// module id = 38\n// module chunks = 0","var path = 'ng-table/filters/text.html';\nvar html = \" \";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/filters/text.html\n// module id = 39\n// module chunks = 0","var path = 'ng-table/groupRow.html';\nvar html = \" {{$selGroupTitle}} \";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/groupRow.html\n// module id = 40\n// module chunks = 0","var path = 'ng-table/header.html';\nvar html = \" \";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/header.html\n// module id = 41\n// module chunks = 0","var path = 'ng-table/pager.html';\nvar html = \" \";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/pager.html\n// module id = 42\n// module chunks = 0","var path = 'ng-table/sorterRow.html';\nvar html = \"
\";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/sorterRow.html\n// module id = 43\n// module chunks = 0","import * as ng1 from 'angular';\nimport { ngTableCoreModule } from './src/core';\nimport { ngTableBrowserModule } from './src/browser';\n\nconst ngTableModule = ng1.module('ngTable', [ngTableCoreModule.name, ngTableBrowserModule.name]);\n\nexport { ngTableModule };\nexport * from './src/core';\nexport * from './src/browser';\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./index.ts"],"sourceRoot":""} \ No newline at end of file